are even used by the game scripts. This is in preparation for a
restructuring of the volume model.
Also removed unused get_music_volume() member.
svn-id: r10872
Manual scaling of pitchbends to account for the fact that the
MT32 doesn't respond to RPN-based pitchbend range adjustments.
Also tweaked the MT32 partial reserve settings per Bug [812740].
svn-id: r10521
logicdeluxe's patch to set MT-32 partial reserves
equally for all channels, to ensure that entire
notes don't get cut off. The patch as committed is
slightly modified to reorder the MT-32 initialization
sequence. The mods (1) ensure a brief delay between
SysEx transmissions to give the MT-32 time to process
each request, and (2) hopefully sequence the delays
such that the ScummVM welcome message is actually
readable and doesn't just flash for a split-second
(as was the reported behavior in the past).
svn-id: r10498
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
Implemented a parser for Euphony music. No
FM instrument support yet, as the FM chip used
by FM Towns is not being emulated yet. In the
meantime, a stock FM-emulated GM instrument is
being used instead.
This at least makes the Zak Towns kazoo tune
and the Loom Towns distaff audible. Emulation
of the FM Towns synth chip, or suitable
emulation using the OPL2 synth, is still
under investigation.
svn-id: r10265
performance by omitting redundancies
Removed the use of the _bank member for iMuse Parts.
The member is still being saved/loaded, and a
warning will display if a non-zero _bank value is
set. If it turns out some musical passage is actually
using the _bank, we'll need to reinstate it.
Otherwise, after sufficient testing we can obsolete
it in the savegames.
svn-id: r10261
Implemented _cmd_queue save/load. In addition to requiring
_cmd_queue information, this bug arises from a rare assumption
that sound resources are loaded in memory even though they
aren't currently playing. Therefore, a list of sound resources
loaded in memory is included in the savegame, so that all
relevant sound resources are reloaded when the savegame is
loaded. This also fixes an unreported music bug in S&M when
saving a game while outside the Bumpusville mansion.
As a result of savegame format modifications, we are now at
savegame version 23.
svn-id: r10254
a simple number. So that it's still obvious
that the number refers to version, a VER()
macro does nothing to the number but makes
it obvious what the number is for. This
has the exact same effect as the enum that
was going to get more and more lengthy
as the savegame version evolved.
svn-id: r9901
RO streams have built-in timer markers (the
unknown 0xA0 mentioned in FR [742249]) that
override automated methods of updating
VAR_MUSIC_TIMER. Since these timer markers
do not seem to be present in AD resources, the
old mechanism is used if MD_ADLIB is the current
MidiDriver.
svn-id: r9720
in monkeyvga/ega. Tested in monkeyvga, but
not in monkeyega yet. There are still wrinkles
to work out, but the parser for the new format
is in and hooked up.
svn-id: r9684
Included the ImDeferredCommand list when checking for
sounds that have been queued to play. Also added
sound queue processing between execution of exit script
and entry script. In the case of this bug, the entry
script required that the iMuse state be fully up to
date, including last-moment changes from the previous
exit script.
svn-id: r9622
V6 scripts can specify up to 16 parameters to be passed to
doCommand(). In most cases 8 or fewer parameters were used,
but occasional uses of 9 or 10 parameters resulted in
incorrect iMuse behavior due to lost doCommand() data.
ImTrigger was also upgraded to support 8 parameters instead
of 4, since the incorrect behavior that was observed involved
the use of triggered commands that required more than 4
parameters. Since ImTrigger data is not currently being saved
(which is bad), we do not at this time have to go to another
savegame format to support the additional ImTrigger data
(which is good).
This fix corrects a problem in the Tunnel of Love. When the
"execution scene" music finishes and the hidden door opens,
the Tunnel of Love music is supposed to start up again. In
ScummVM, it never would, do to the loss of parameters for a
trigger-based "Parameter Fade" command.
A bit of miscellaneous cleanup has also been made.
svn-id: r9579
Tweaked handling of ImSetTrigger when the triggered
command starts a new song. If the song to be started
is already playing, we stop it (in preparation for
a restart) ONLY if the song containing the command
trigger is actually playing. Otherwise the restart
is likely to never occur (as is the case with the
Bumpusville mansion interior music).
svn-id: r9576
Revision to the handle_maker() fix for bug #733401, since that
didn't seem to take care of the problem. This fix chomps marker
queue entries if it finds a matching marker not at the head of
the queue. This might cause inappropriate behavior elsewhere;
regression testing is advised.
svn-id: r8831