Age | Commit message (Collapse) | Author |
|
malcolm and kallak.
Also corrects callback50() which seem to improve the sound a bit in the kallak writing scene.
svn-id: r21238
|
|
timer inaccuracies can cause that kind of problems, or we'd have noticed it in
the other game engines as well", guess what? The other game engines do not
necessary use a timer for their Adlib music. So now Kyra doesn't either.
Fortunately for my dignity, the music is still a bit uneven at times, but the
situation does seem to have improved a bit, and the sound effects sound better
to me now.
svn-id: r21237
|
|
Cleaned up the sound code a bit (removed some unneeded functions).
svn-id: r21234
|
|
svn-id: r21233
|
|
update1() -> setupDuration()
updateAndOutput1() -> setupNote()
setInstrument() -> setupInstrument() (just for the symmetry)
updateAndOutput3() -> noteOn()
That made the following two renamings seem natural:
updateCallback10() -> update_playRest()
updateCallback27() -> update_playNote()
I decided to number the secondary effects, even though there's only one:
update_setupSecondaryEffect() -> update_setupSecondaryEffect1()
update_removeSecondaryEffect() -> update_removeSecondaryEffect1()
And finally, I renamed the effects callbacks:
stateCallback1_1() -> primaryEffect1()
stateCallback1_2() -> primaryEffect2()
stateCallback2_1() -> secondaryEffect1()
svn-id: r21232
|
|
of use in tracking down the tempo bugs.
svn-id: r21230
|
|
updateCallback18() -> update_setupPrimaryEffect1()
updateCallback19() -> update_removePrimaryEffect1()
updateCallback21() -> update_setupPrimaryEffect2()
updateCallback40() -> update_removePrimaryEffect2()
updateCallback14() -> update_setupSecondaryEffect()
updateCallback30() -> update_removeSecondaryEffect()
updateCallback37() -> update_changeExtraLevel1()
updateCallback34() -> update_changeExtraLevel2()
svn-id: r21217
|
|
svn-id: r21208
|
|
variables in OutputState.
svn-id: r21207
|
|
callbackOutput() and updateCallback3() functions won't change the channel data
pointer unless the new sound has a higher unk2 and the current one.
Since it's set to 0 when the data pointer is nulled, I've changed the priority
to be unsigned.
The updateCallback22() function is now update_setPriority().
svn-id: r21206
|
|
svn-id: r21205
|
|
_curTable channel, but it probably does so whenever both of them are used
together.
svn-id: r21204
|
|
variables, and cleaned it up slightly. (Some of its variables are now signed.)
svn-id: r21203
|
|
variables.
svn-id: r21202
|
|
svn-id: r21201
|
|
and variables.
svn-id: r21200
|
|
level", which I believe is the individual channel volume. (The functions also
return the "scaling level" bits, but they are preserved, not calculated.) I
have renamed these functions calculateOpLevel1() and 2().
The unk25 and unk26 variables have been renamed opLevel1 and opLevel2. These
are called oplvl_1 and oplvl_2 in our MidiDriver_ADLIB class.
The unk26, unk27 and unk28 variables are potentially added to both operator
levels, and have been renamed opExtraLevel1, opExtralevel2 and opExtraLevel3.
The updateCallback25() function has been remamed update_setExtraLevel1().
The updateCallback33() function has been renamed update_setExtraLevel2().
The updateCallback32() function has been renamed update_setExtraLevel3().
Note that these callbacks aren't quite as similar as their names would seem to
indicate: They differ in whether or not the volume is updated and/or how the
parameters are passed.
svn-id: r21199
|
|
class, where the corresponding variable is called _twochan.
svn-id: r21198
|
|
stuff, it pretty much has to be our "set instrument" function. Also, while I'm
not entirely sure of the implications, "unk23" is the Algorithm bit for the
Feedback / Algorithm register, so I've renamed it "algorithm".
svn-id: r21197
|
|
svn-id: r21196
|
|
- Adds sound fading support to the adlib player
- Adds support for stopping running tracks
- Changes baseFreq type back to uint8
- corrects octave handling in updateAndOutput1
(Thanks to eriktorbjorn for doing that)
svn-id: r21185
|
|
all: it adjusts the frequency even when state.unk16 is zero. Fixed that, and
added some comments to hopefully explain the differences between the cleaned up
code and the original disassembly.
svn-id: r21184
|
|
* Rewrote updateCallback41() in terms of updateAndOutput1(), since they were
almost identical to begin with.
* Rewrote updateAndOutput1() for better readability.
* Made unk10 signed, and renamed it baseOctave.
* Made unk14 signed, and renamed it baseNote.
* Made unk15 signed, and renamed it baseFreq.
* Renamed unk17 regAx. It appears to be a cache for that register.
* Renamed unkOutputValue1 regBx. It appears to be a cache for that register.
* Renamed updateCallback8() update_setBaseOctave().
* Renamed updateCallback13() update_setBaseNote().
* Renamed updateCallback20() update_setBaseFreq().
Which still leaves the mystery of unk16 and _unkTables[]. Perhaps *this* is the
pitch bend?
svn-id: r21183
|
|
_unkTable[]. Investigating the latter further might help unravelling several of
the "unk" variables. (Right now, I'm suspecting that unk15 is the pitch bend.)
svn-id: r21164
|
|
the octave bits.
The unkOuput1() function always turns off the note, so I've renamed it
noteOff(). I've added some comments to unkOuput2() as well, but I'm still not
quite sure what its purpose is. It seems unlikely that it's simply a "note on"
function, given the many things it will clear for the channel. It does end by
turning the note on, though. Strange.
svn-id: r21162
|
|
several errors where the format string didn't match the number of arguments to the call)
svn-id: r21141
|
|
system delay, which was causing concurrency problems.
svn-id: r21136
|
|
fast now though, but seems to be another problem).
Also changed some unsigned values to signed.
svn-id: r21111
|
|
setTempo().
svn-id: r21110
|
|
svn-id: r21109
|
|
svn-id: r21105
|
|
svn-id: r21103
|
|
have renamed it getRandomNr(). The _unk6 variable has been renamed _rnd. (Our
MidiDriver_ADLIB class also has its own random number generator, so it's not
such a far-fetched guess as it may seem.)
svn-id: r21102
|
|
volume is modified (it depends on several still unknown variables), but that's
all it does as far as I can tell.
svn-id: r21101
|
|
more easy to read.
svn-id: r21081
|
|
Also changed the callback interval.
svn-id: r21012
|
|
svn-id: r20993
|
|
Fixed a bug in updateCallback41.
svn-id: r20992
|
|
update_writeAdlib(). (The "update_" prefix will probably be changed later, but
for now I want it to remain obvious that the functions belong to the other
updateCallback*() functions.)
svn-id: r20990
|
|
done that in the previous commit.)
svn-id: r20987
|
|
forward and backward. This seems to fix the looping of the Black forest music
(and probably others as well), and might fix the invalid pointer crashes and
wrong music that would sometimes play after a song had finished. Changed the
names of the jump opcode functions, and added "update_" prefixes to the
previously cleaned-up opcode functions.
svn-id: r20986
|
|
svn-id: r20985
|
|
_unkOutputByte2 variable is there to keep track of the current value of the
BD register (AM Depth / Vibrato Depth / Rhythm)
svn-id: r20984
|
|
svn-id: r20983
|
|
Implemented stateCallback1_1.
Fix some small bugs here and there (can't say what the fixed but it should be correct now)
Also set's the correct timer call value (with the other the music was too fast)
svn-id: r20973
|
|
svn-id: r20972
|
|
svn-id: r20971
|
|
evaluation when there are multiple side-effects on the same variable (in this
case the internal state modified by va_arg()) in the same expression. So let's
just humor me and do the va_arg() calls one at a time.
svn-id: r20970
|
|
svn-id: r20964
|
|
It needs some checks since it doesn't work correctly in every case at the moment.
svn-id: r20960
|