diff options
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v100he.cpp | 34 |
2 files changed, 34 insertions, 1 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 95590992aa..ccaeb86e67 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -933,6 +933,7 @@ protected: void o100_unknown28(); void o100_resourceRoutines(); void o100_wizImageOps(); + void o100_loadSBNG(); void o100_dim2dim2Array(); void o100_paletteOps(); void o100_redimArray(); diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index f294d6dd51..ea4bbe2ec9 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -69,7 +69,7 @@ void ScummEngine_v100he::setupOpcodes() { OPCODE(o6_loadRoomWithEgo), OPCODE(o6_invalid), OPCODE(o72_setFilePath), - OPCODE(o6_invalid), + OPCODE(o100_loadSBNG), /* 18 */ OPCODE(o6_cutscene), OPCODE(o6_pop), @@ -701,6 +701,27 @@ void ScummEngine_v100he::o100_arrayOps() { } } +void ScummEngine_v100he::o100_loadSBNG() { + // Loads SBNG sound resource + byte subOp = fetchScriptByte(); + + switch (subOp) { + case 0: + //_heSBNGId = pop(); + break; + case 53: + //loadSBNG(_heSBNGId, -1); + break; + case 128: + pop(); + //loadSBNG(_heSBNGId, pop(); + break; + default: + warning("o100_loadSBNG: default case %d", subOp); + } + debug(1,"o100_loadSBNG stub (%d)",subOp); +} + void ScummEngine_v100he::o100_dim2dimArray() { int a, b, data; int type = fetchScriptByte(); @@ -1396,6 +1417,17 @@ void ScummEngine_v100he::o100_startSound() { _heSndFlags |= 16; pop(); break; + case 55: + _heSndFlags |= 8; + break; + case 83: + { + int value = pop(); + int var = pop(); + int snd = pop(); + debug(1,"o70_startSound: case 29 (snd %d, var %d, value %d)", snd, var, value); + } + break; case 92: debug(0, "o100_startSound (ID %d, Offset %d, Channel %d, Flags %d)", _heSndSoundId, _heSndOffset, _heSndChannel, _heSndFlags); _sound->addSoundToQueue(_heSndSoundId, _heSndOffset, _heSndChannel, _heSndFlags); |