diff options
-rw-r--r-- | scumm/debugger.cpp | 68 | ||||
-rw-r--r-- | scumm/debugger.h | 3 | ||||
-rw-r--r-- | scumm/scumm.h | 3 |
3 files changed, 56 insertions, 18 deletions
diff --git a/scumm/debugger.cpp b/scumm/debugger.cpp index b19aae44d4..055c8d0936 100644 --- a/scumm/debugger.cpp +++ b/scumm/debugger.cpp @@ -111,8 +111,7 @@ void ScummDebugger::attach(Scumm *s, char *entry) { DCmd_Register("show", &ScummDebugger::Cmd_Show); DCmd_Register("hide", &ScummDebugger::Cmd_Hide); - DCmd_Register("imuse_multimidi", &ScummDebugger::Cmd_ImuseMultiMidi); - DCmd_Register("imuse_panic", &ScummDebugger::Cmd_ImusePanic); + DCmd_Register("imuse", &ScummDebugger::Cmd_IMuse); } } @@ -364,22 +363,61 @@ bool ScummDebugger::Cmd_Restart(int argc, const char **argv) { return false; } -bool ScummDebugger::Cmd_ImuseMultiMidi (int argc, const char **argv) { - if (argc > 1) { - if (_s->_imuse) - _s->_imuse->property (IMuse::PROP_MULTI_MIDI, !strcmp (argv[1], "1") || !strcmp (argv[1], "on") || !strcmp (argv[1], "true")); - return false; - } else { - Debug_Printf("Use 'imuse_multimidi on|off' to switch\n"); +bool ScummDebugger::Cmd_IMuse (int argc, const char **argv) { + if (!_s->_imuse) { + Debug_Printf ("No iMuse engine is active.\n"); return true; } -} -bool ScummDebugger::Cmd_ImusePanic (int argc, const char **argv) { - Debug_Printf ("AAAIIIEEEEEE!\n"); - Debug_Printf ("Shutting down all music tracks\n"); - if (_s->_imuse) - _s->_imuse->stop_all_sounds(); + if (argc > 1) { + if (!strcmp (argv[1], "panic")) { + _s->_imuse->stop_all_sounds(); + Debug_Printf ("AAAIIIEEEEEE!\n"); + Debug_Printf ("Shutting down all music tracks\n"); + return true; + } else if (!strcmp (argv[1], "multimidi")) { + if (argc > 2 && (!strcmp (argv[2], "on") || !strcmp (argv[2], "off"))) { + _s->_imuse->property (IMuse::PROP_MULTI_MIDI, !strcmp (argv[2], "on")); + Debug_Printf ("MultiMidi mode switched %s.\n", argv[2]); + } else { + Debug_Printf ("Specify \"on\" or \"off\" to switch.\n"); + } + return true; + } else if (!strcmp (argv[1], "play")) { + if (argc > 2 && (!strcmp (argv[2], "random") || atoi (argv[2]) != 0)) { + int sound = atoi (argv[2]); + if (!strcmp (argv[2], "random")) { + Debug_Printf ("Selecting from %d songs...\n", _s->getNumSounds()); + sound = _s->_rnd.getRandomNumber (_s->getNumSounds()); + } + _s->ensureResourceLoaded (rtSound, sound); + _s->_imuse->startSound (sound); + Debug_Printf ("Attempted to start music %d.\n", sound); + } else { + Debug_Printf ("Specify a music resource # from 1-255.\n"); + } + return true; + } else if (!strcmp (argv[1], "stop")) { + if (argc > 2 && (!strcmp (argv[2], "all") || atoi (argv[2]) != 0)) { + if (!strcmp (argv[2], "all")) { + _s->_imuse->stop_all_sounds(); + Debug_Printf ("Shutting down all music tracks.\n"); + } else { + _s->_imuse->stopSound (atoi (argv[2])); + Debug_Printf ("Attempted to stop music %d.\n", atoi (argv[2])); + } + } else { + Debug_Printf ("Specify a music resource # or \"all\".\n"); + } + return true; + } + } + + Debug_Printf ("Available iMuse commands:\n"); + Debug_Printf (" panic - Stop all music tracks\n"); + Debug_Printf (" multimidi on/off - Toggle dual MIDI drivers\n"); + Debug_Printf (" play # - Play a music resource\n"); + Debug_Printf (" stop # - Stop a music resource\n"); return true; } diff --git a/scumm/debugger.h b/scumm/debugger.h index 834a69b19d..078db8a383 100644 --- a/scumm/debugger.h +++ b/scumm/debugger.h @@ -94,8 +94,7 @@ protected: bool Cmd_Show(int argc, const char **argv); bool Cmd_Hide(int argc, const char **argv); - bool Cmd_ImuseMultiMidi (int argc, const char **argv); - bool Cmd_ImusePanic (int argc, const char **argv); + bool Cmd_IMuse (int argc, const char **argv); void printBox(int box); void drawBox(int box); diff --git a/scumm/scumm.h b/scumm/scumm.h index c53713fc64..2d6c1c5b4d 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -407,10 +407,10 @@ protected: protected: byte _fastMode; +public: /* Random number generation */ RandomSource _rnd; -public: /* Core variable definitions */ byte _gameId; @@ -453,6 +453,7 @@ protected: public: int _numCostumes; // FIXME - should be protected, used by Actor::remapActorPalette + int getNumSounds() const { return _numSounds; } BaseCostumeRenderer* _costumeRenderer; char *_audioNames; |