diff options
author | Sven Hesse | 2007-04-05 15:38:30 +0000 |
---|---|---|
committer | Sven Hesse | 2007-04-05 15:38:30 +0000 |
commit | f2c1600c3d68c57faa0d7607fe52420b233e34f1 (patch) | |
tree | d8b2140a6e6e59357032088dd4ee91c1320e46ce /engines/gob | |
parent | cebf8e98c30c89abe28bbacbf1b331489fbe12f2 (diff) | |
download | scummvm-rg350-f2c1600c3d68c57faa0d7607fe52420b233e34f1.tar.gz scummvm-rg350-f2c1600c3d68c57faa0d7607fe52420b233e34f1.tar.bz2 scummvm-rg350-f2c1600c3d68c57faa0d7607fe52420b233e34f1.zip |
Added GobOpcodes 1 and 2 (start and stop Infogrames music)
svn-id: r26385
Diffstat (limited to 'engines/gob')
-rw-r--r-- | engines/gob/inter.h | 2 | ||||
-rw-r--r-- | engines/gob/inter_v2.cpp | 31 | ||||
-rw-r--r-- | engines/gob/inter_v3.cpp | 8 |
3 files changed, 32 insertions, 9 deletions
diff --git a/engines/gob/inter.h b/engines/gob/inter.h index be7ed9fe21..d0f07d96da 100644 --- a/engines/gob/inter.h +++ b/engines/gob/inter.h @@ -386,6 +386,8 @@ protected: bool o2_writeData(OpFuncParams ¶ms); void o2_loadInfogramesIns(OpGobParams ¶ms); void o2_playInfogrames(OpGobParams ¶ms); + void o2_startInfogrames(OpGobParams ¶ms); + void o2_stopInfogrames(OpGobParams ¶ms); void o2_handleGoblins(OpGobParams ¶ms); }; diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index 58986d894c..a297d88891 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -50,8 +50,8 @@ namespace Gob { const int Inter_v2::_goblinFuncLookUp[][2] = { {0, 0}, - {2, 1}, - {3, 2}, + {1, 1}, + {2, 2}, {4, 3}, {5, 4}, {6, 5}, @@ -556,8 +556,8 @@ void Inter_v2::setupOpcodes() { static const OpcodeGoblinEntryV2 opcodesGoblin[71] = { /* 00 */ OPCODE(o2_loadInfogramesIns), - {NULL, ""}, - {NULL, ""}, + OPCODE(o2_startInfogrames), + OPCODE(o2_stopInfogrames), {NULL, ""}, /* 04 */ {NULL, ""}, @@ -1937,6 +1937,7 @@ void Inter_v2::o2_loadInfogramesIns(OpGobParams ¶ms) { if (_vm->_game->_infogrames) { _vm->_mixer->stopHandle(_vm->_game->_infHandle); + delete _vm->_game->_infogrames; _vm->_game->_infogrames = 0; } @@ -1976,6 +1977,7 @@ void Inter_v2::o2_playInfogrames(OpGobParams ¶ms) { if (_vm->_game->_infIns) { _vm->_mixer->stopHandle(_vm->_game->_infHandle); + delete _vm->_game->_infogrames; _vm->_game->_infogrames = new Audio::Infogrames(*_vm->_game->_infIns, true, _vm->_mixer->getOutputRate(), @@ -1987,10 +1989,29 @@ void Inter_v2::o2_playInfogrames(OpGobParams ¶ms) { _vm->_game->_infogrames = 0; } else _vm->_mixer->playInputStream(Audio::Mixer::kMusicSoundType, - &_vm->_game->_infHandle, _vm->_game->_infogrames); + &_vm->_game->_infHandle, _vm->_game->_infogrames, + -1, 255, 0, false); } } +void Inter_v2::o2_startInfogrames(OpGobParams ¶ms) { + load16(); + + if (_vm->_game->_infogrames && + !_vm->_mixer->isSoundHandleActive(_vm->_game->_infHandle)) { + _vm->_game->_infogrames->restart(); + _vm->_mixer->playInputStream(Audio::Mixer::kMusicSoundType, + &_vm->_game->_infHandle, _vm->_game->_infogrames, + -1, 255, 0, false); + } +} + +void Inter_v2::o2_stopInfogrames(OpGobParams ¶ms) { + load16(); + + _vm->_mixer->stopHandle(_vm->_game->_infHandle); +} + void Inter_v2::o2_handleGoblins(OpGobParams ¶ms) { _vm->_goblin->_gob1NoTurn = (bool) VAR(load16()); _vm->_goblin->_gob2NoTurn = (bool) VAR(load16()); diff --git a/engines/gob/inter_v3.cpp b/engines/gob/inter_v3.cpp index 2d1dd46708..e78f5df4dd 100644 --- a/engines/gob/inter_v3.cpp +++ b/engines/gob/inter_v3.cpp @@ -36,8 +36,8 @@ namespace Gob { const int Inter_v3::_goblinFuncLookUp[][2] = { {0, 0}, - {2, 1}, - {3, 2}, + {1, 1}, + {2, 2}, {4, 3}, {5, 4}, {6, 5}, @@ -542,8 +542,8 @@ void Inter_v3::setupOpcodes() { static const OpcodeGoblinEntryV3 opcodesGoblin[71] = { /* 00 */ OPCODE(o2_loadInfogramesIns), - {NULL, ""}, - {NULL, ""}, + OPCODE(o2_startInfogrames), + OPCODE(o2_stopInfogrames), {NULL, ""}, /* 04 */ {NULL, ""}, |