the iMuse implementation. This allows the termination
sequence to be done BEFORE object destruction, so
that the destructor is not making calls that may not
be appropriate during object destruction. (Virtual
functions were the concern, although I'm not sure any
of that was happening anyway. Oh well, better to be
safe than sorry.)
I implemented an empty terminate() in the base class,
but the other MusicEngine derivatives may have stuff
in their destructors that should be moved to this
method. I didn't check.
svn-id: r10452
video mode that isn't supported (such as going
to fullscreen under COMI with a 3x scaler and
a video card that doesn't like 1920x1440 LOL).
The program still terminates when this happens,
due to the suboptimal way we make the switch to
another video mode. (By the time we find out
that we can't make the switch, it's too late to
revert back). But at least it doesn't crash.
svn-id: r10449
Apparently MSVC6 does not like overloading of template
functions when the template arguments vary between
versions of the overloaded function. I replaced
interpolate16 with functions that have two different
names, so MSVC6 won't see them as being the same
function with [it insists] the same number of template
arguments.
svn-id: r10446
Since this was the only place where we were using
create_thread, that method should be removable now.
I also removed the midi_driver_thread overrides
for the MorphOS and YPA1 (Palm) backends. These need
to be tested by their respective porters.
svn-id: r10414
The initial sample is, indeed, two bytes, just like the rest of them, but
it really, really helps if you read it from the correct position in the
file.
After fixing that, it turned out that my changing of signedness of the
sample was also wrong. Funny how those two bugs almost cancelled each other
out. Almost.
I've made a few other changes as well, but they're just to clean things up
a bit. The credits music works for me, and I've played the game up to
arriving in Quaramonte, with no obvious music-related problems.
svn-id: r10412
As defined in Patch [811623] MT-32 patch for Bug 810564
Added a channel mask to MPU-401 devices so that --native-mt32
may force the device to use only the subset of MIDI channels
actually supported by the MT-32. Also added a best-guess
interpretation of iMuse Part priority in the SysEx 0x00 msg,
since part priorities become more of an issue when the
channel count is cramped.
svn-id: r10409
speculating that the timer didn't always fill the buffer quite fast enough
and that this is what caused the occasional popping noises.
Of course, I may have introduced all kinds of regressions - particularly
since I don't have any big-endian computer to test on - but we're all
friends here, right? :-)
svn-id: r10404