mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 05:38:56 +00:00
1615278ecc
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
82 lines
2.1 KiB
C++
82 lines
2.1 KiB
C++
/* ScummVM - Scumm Interpreter
|
|
* Copyright (C) 2001 Ludvig Strigeus
|
|
* Copyright (C) 2001-2003 The ScummVM project
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* $Header$
|
|
*
|
|
*/
|
|
|
|
#ifndef IMUSE_H
|
|
#define IMUSE_H
|
|
|
|
#include "common/scummsys.h"
|
|
#include "common/system.h"
|
|
|
|
class IMuseInternal;
|
|
class MidiDriver;
|
|
class OSystem;
|
|
class Scumm;
|
|
class Serializer;
|
|
class SoundMixer;
|
|
|
|
class IMuse {
|
|
private:
|
|
OSystem *_system;
|
|
IMuseInternal *_target;
|
|
OSystem::MutexRef _mutex;
|
|
|
|
IMuse(OSystem *system, IMuseInternal *target);
|
|
void in();
|
|
void out();
|
|
|
|
public:
|
|
~IMuse();
|
|
|
|
enum {
|
|
PROP_TEMPO_BASE = 1,
|
|
PROP_NATIVE_MT32 = 2,
|
|
PROP_MULTI_MIDI = 3,
|
|
PROP_OLD_ADLIB_INSTRUMENTS = 4,
|
|
PROP_LIMIT_PLAYERS = 5,
|
|
PROP_RECYCLE_PLAYERS = 6
|
|
};
|
|
|
|
void on_timer(MidiDriver *midi);
|
|
void pause(bool paused);
|
|
int save_or_load(Serializer *ser, Scumm *scumm);
|
|
int set_music_volume(uint vol);
|
|
int get_music_volume();
|
|
int set_master_volume(uint vol);
|
|
int get_master_volume();
|
|
bool startSound(int sound);
|
|
int stopSound(int sound);
|
|
int stop_all_sounds();
|
|
int getSoundStatus(int sound);
|
|
bool get_sound_active(int sound);
|
|
int32 doCommand (int a, int b, int c, int d, int e, int f, int g, int h);
|
|
int32 doCommand (int numargs, int args[]);
|
|
int clear_queue();
|
|
void setBase(byte **base);
|
|
uint32 property(int prop, uint32 value);
|
|
MidiDriver *getMidiDriver();
|
|
|
|
// Factory methods
|
|
static IMuse *create(OSystem *syst, SoundMixer *mixer, MidiDriver *midi);
|
|
};
|
|
|
|
#endif
|