Original dumper-companion.pl script encoded \x81 to \x81\x79\x81.
- added test to check for correct behavior
- refactored escape string to handle this special case
Adds the `str` subcommand:
./dumper-companion.py str STRING
punyencode the string STRING
./dumper-companion.py str --stdin
punyencode stdin
The HFS iso dumper is moved into it's own subcommand:
./dumper-companion.py iso -e encoding input_iso output_dir
When showing the ScummVM menu using Ctrl-F5, gameplay in Ultima 8 would pause,
but MIDI music would continue to play (AdLib would pause) and sound effects
would finish playing as well. This commit pauses all music and digital audio
when the ScummVM menu is shown.
In the Ultima 8 intro, the last music track fades out in the original
interpreter, but in ScummVM it stopped abruptly. This seems to be because the
SKF_SlowStopMusic action was not fully implemented. This commit adds an
implementation to this action, which restores the fade-out in the intro.
This adds a timer proc to the null multisource MIDI driver to drive the fading
process. The null driver does not have any audio to fade, but without this the
fades will just hang and isFading will remain true. The fades are now
effectively timers so game behavior will remain consistent whether MIDI is
turned on or off.
The SFX and speech user volume controls for Ultima 8 did not work because
digital audio was played using the plain sound type instead of SFX or speech.
To distinguish between the two, a flag was added to the AudioChannel::playSample
function to indicate if the sample is a sound effect or speech.
Miles version 3 introduced support for the MIDI pitch bend range RPN using the
data entry MSB controller. The ScummVM implementation would also process this
controller for Miles version 2 games. This caused a problem in Ultima 8, which
used Miles 2 and which had MIDI data that contained some (probably leftover)
data entry MSB events. These had no effect in the original interpreter, but in
ScummVM they caused the pitch bend range to change, resulting in incorrect
playback.
This is fixed by only processing the data entry MSB controller events when
Miles version is set to 3.
Ultima 8 uses MIDI, but the MIDI configuration tabs were disabled. This commit
enables the MIDI configuration by removing the GUIO_NOMIDI flag from the
detection entries.
To make the Ultima 8 AdLib music sound like the original interpreter, the
MidiPlayer class has been updated to use the Miles MIDI drivers. This allows
the game's AdLib instruments to be used. Because the Audio::MidiPlayer does not
work well with the Miles drivers, I've removed the dependency on this class and
implemented the necessary functionality in the Ultima 8 MidiPlayer.
Renamed rince.* files to movers to be more game independent.
Added elementary support for Noir movers which can use different logic.
Allows game to boot to the first interactive scene, but there is no 3D model rendered (that is WIP).