Leaving the panel in scene 1105 only worked if the panel was open.
If the panel was closed, nothing would happen on the first click,
and on the second it would crash. If I understood this correctly,
it was because trying to leave while the panel was closed would
(incorrectly) mark it as open, and then it would crash when trying
to remove the objects behind the panel from the scene.
It seems pretty clear to me that these fallthroughs were not
intentional, seeing how one of them could cause ITE to fall through
to IHNM-specific code.
CID 1003744, 1003745
The effect of the removed code was to bypass the potion-mixing
puzzle while shrunken. The puzzle works fine for me, so there's
no reason to keep this bypass. Also, it caused a dead code
warning, CID 1022345.
Wrapped the code in the SetUpdateHandler(), SetMessageHandler(),
SetSpriteUpdate(), SetFilterX(), SetFilterY() and NextState()
macros in "do { ... } while (0)". Otherwise you may fool yourself
because in "if (condition) macro();" the "if" will only cover the
first statement of the macro.
CID 1022340, 1022341, 1022342, 1022343
When a new Smacker is opened, the old Smacker surface is deleted
and a new one is created. Therefore, it has to be removed from the
scene and the new one has to be added.
Formerly the frequency was at 10000Hz. This resulted in 3,4 or even only 1
sample to be generated between callbacks on my system. All the other MIDI
drivers use a much lower frequency here. The MidiDriver_Emulated subclasses
use a frequency of 250Hz (by default) and the MidiDriver_MPU401 subclasses
(which are for example the ALSA output) use 100Hz. With the new frequency
of 250Hz 128 samples are generated between callbacks. This will hopefully
reduce the overhead of the MT-32 emulator (the engine's code was run 10000
times a second too) a bit.
I talked with KingGuppy and it seems the value was increased in the past
(still with the very old MT-32 emulator code) because there were accuracy
issues. However, I gave the lower frequency a quick test with the MI1, MI2
and ITE intro and didn't spot any obvious differences. As a result, KingGuppy
and I agreed to lower it back to 250Hz. If there are any problems coming up
we can still slightly increase the frequency to 1000Hz for example.
Thanks to waltervn for noticing this. Thanks to KingGuppy for discussion.