aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorTravis Howell2004-10-17 06:32:58 +0000
committerTravis Howell2004-10-17 06:32:58 +0000
commitcb12a2a0a1022f79ca9c4946b2bd37a8262bfb44 (patch)
tree617c3ff9a543ac90b2fd973e35f3940658ed4795 /scumm
parenteaa65d57dd9d45eb7eef7bd8e7f5fdd4fd54f993 (diff)
downloadscummvm-rg350-cb12a2a0a1022f79ca9c4946b2bd37a8262bfb44.tar.gz
scummvm-rg350-cb12a2a0a1022f79ca9c4946b2bd37a8262bfb44.tar.bz2
scummvm-rg350-cb12a2a0a1022f79ca9c4946b2bd37a8262bfb44.zip
Rename opcode
svn-id: r15581
Diffstat (limited to 'scumm')
-rw-r--r--scumm/intern.h2
-rw-r--r--scumm/script_v100he.cpp2
-rw-r--r--scumm/script_v7he.cpp7
-rw-r--r--scumm/script_v80he.cpp37
-rw-r--r--scumm/script_v90he.cpp2
-rw-r--r--scumm/sound.cpp6
6 files changed, 27 insertions, 29 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 2d9d6dbd11..6f61d91981 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -802,7 +802,7 @@ protected:
/* HE version 80 script opcodes */
void o80_unknown45();
void o80_unknown48();
- void o80_unknown49();
+ void o80_getSoundVar();
void o80_localizeArrayToRoom();
void o80_readConfigFile();
void o80_writeConfigFile();
diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp
index 2f92d3d121..50dd62c672 100644
--- a/scumm/script_v100he.cpp
+++ b/scumm/script_v100he.cpp
@@ -316,7 +316,7 @@ void ScummEngine_v100he::setupOpcodes() {
/* D8 */
OPCODE(o72_unknown5A),
OPCODE(o6_isSoundRunning),
- OPCODE(o80_unknown49),
+ OPCODE(o80_getSoundVar),
OPCODE(o100_unknown25),
/* DC */
OPCODE(o90_sqrt),
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 34795e5c3a..242624575c 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -412,7 +412,12 @@ void ScummEngine_v70he::o70_startSound() {
_heSndFlags |= 4;
break;
case 23:
- debug(1,"o70_startSound: case 29 (%d, %d, %d)", pop(), pop(), pop());
+ {
+ 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 56:
_heSndFlags |= 2;
diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp
index a51fe9718f..466feabb3d 100644
--- a/scumm/script_v80he.cpp
+++ b/scumm/script_v80he.cpp
@@ -135,7 +135,7 @@ void ScummEngine_v80he::setupOpcodes() {
OPCODE(o6_wordArrayWrite),
/* 48 */
OPCODE(o80_unknown48),
- OPCODE(o80_unknown49),
+ OPCODE(o80_getSoundVar),
OPCODE(o80_localizeArrayToRoom),
OPCODE(o6_wordArrayIndexedWrite),
/* 4C */
@@ -378,24 +378,22 @@ const char *ScummEngine_v80he::getOpcodeDesc(byte i) {
}
void ScummEngine_v80he::o80_unknown45() {
- // Sound related
+ // Loads SBNG sound resource
byte subOp = fetchScriptByte();
switch (subOp) {
case 27:
pop();
+ //loadSBNG(_heSBNGId, pop();
break;
case 217:
+ //loadSBNG(_heSBNGId, -1);
break;
case 232:
- _heSndSoundId = pop();
- break;
- case 255:
- //Case doesn't match disasm.
- _sound->addSoundToQueue(_heSndSoundId);
+ //_heSBNGId = pop();
break;
default:
- warning("o80_unknown45: default type %d", subOp);
+ warning("o80_unknown45: default case %d", subOp);
}
debug(1,"o80_unknown45 stub (%d)",subOp);
}
@@ -417,25 +415,14 @@ void ScummEngine_v80he::o80_unknown48() {
push(val);
}
-void ScummEngine_v80he::o80_unknown49() {
- // Sound related
- int result = 0;
- int subOp = pop();
+void ScummEngine_v80he::o80_getSoundVar() {
+ // Checks sound variable
+ int var = pop();
int snd = pop();
- switch (subOp) {
- case 0:
- result = !_sound->isSoundRunning(snd);
- break;
- case 1:
- result = _sound->isSoundRunning(snd);
- break;
- default:
- warning("o80_unknown49: default type %d", subOp);
- }
-
- push (result);
- debug(1,"o80_unknown49 stub (%d, %d)", subOp, snd);
+ checkRange(27, 0, var, "Illegal sound variable %d");
+ push (_rnd.getRandomNumber(3));
+ debug(1,"o80_getSoundVar stub (snd %d, var %d)", snd, var);
}
void ScummEngine_v80he::o80_localizeArrayToRoom() {
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 7a84fc7a81..1470f5e09b 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -135,7 +135,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o6_wordArrayWrite),
/* 48 */
OPCODE(o80_unknown48),
- OPCODE(o80_unknown49),
+ OPCODE(o80_getSoundVar),
OPCODE(o80_localizeArrayToRoom),
OPCODE(o6_wordArrayIndexedWrite),
/* 4C */
diff --git a/scumm/sound.cpp b/scumm/sound.cpp
index afc1eaabd7..aba75c1465 100644
--- a/scumm/sound.cpp
+++ b/scumm/sound.cpp
@@ -270,6 +270,11 @@ void Sound::playSound(int soundID, int heOffset, int heChannel, int heFlags) {
ptr += 8 + READ_BE_UINT32(ptr + 12);
}
+ if (READ_UINT32(ptr) == MKID('SBNG')) {
+ ptr += READ_BE_UINT32(ptr + 4);
+ warning("playSound: Skipped SBNG block");
+ }
+
if (READ_UINT32(ptr) != MKID('SDAT')) {
warning("playSound: Invalid sound %d", soundID);
return; // abort
@@ -663,6 +668,7 @@ void Sound::startTalkSound(uint32 offset, uint32 b, int mode, PlayingSoundHandle
_sfxFile->seek(offset + 32, SEEK_SET);
if (_sfxFile->readUint32LE() == TO_LE_32(MKID('SBNG'))) {
+ warning("startTalkSound: Skipped SBNG block");
// Skip the SBNG, so we end up at the SDAT chunk
extra = _sfxFile->readUint32BE();
_sfxFile->seek(extra - 4, SEEK_CUR);