aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-09-11 00:49:22 +0000
committerTravis Howell2004-09-11 00:49:22 +0000
commit5e8ccb315f0f0144cbfa691c36a7fd0f86240e56 (patch)
tree92fb586044aeb3630e820c685cb96f73bfa900d3
parent28c0ea02a33c1fc91f9b17c60c004d155194a6a7 (diff)
downloadscummvm-rg350-5e8ccb315f0f0144cbfa691c36a7fd0f86240e56.tar.gz
scummvm-rg350-5e8ccb315f0f0144cbfa691c36a7fd0f86240e56.tar.bz2
scummvm-rg350-5e8ccb315f0f0144cbfa691c36a7fd0f86240e56.zip
Add stub
svn-id: r15000
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v7he.cpp3
-rw-r--r--scumm/script_v80he.cpp46
-rw-r--r--scumm/script_v90he.cpp2
4 files changed, 46 insertions, 6 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index e2253e3af7..81c3c3f885 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -788,6 +788,7 @@ protected:
/* HE version 80 script opcodes */
+ void o80_unknown45();
void o80_unknown49();
void o80_unknown4D();
void o80_cursorCommand();
diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp
index 53a9050c8b..3f6a993ae4 100644
--- a/scumm/script_v7he.cpp
+++ b/scumm/script_v7he.cpp
@@ -506,6 +506,9 @@ void ScummEngine_v7he::o7_startSound() {
case 23:
debug(1,"o7_startSound: case 29 (%d, %d, %d)", pop(), pop(), pop());
break;
+ case 56:
+ _heSndLoop |= 2;
+ break;
case 164:
_heSndLoop |= 2;
break;
diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp
index 98d2cb8b65..99de3ed62f 100644
--- a/scumm/script_v80he.cpp
+++ b/scumm/script_v80he.cpp
@@ -131,7 +131,7 @@ void ScummEngine_v80he::setupOpcodes() {
OPCODE(o6_writeWordVar),
/* 44 */
OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o80_unknown45),
OPCODE(o6_invalid),
OPCODE(o72_wordArrayWrite),
/* 48 */
@@ -378,12 +378,48 @@ const char *ScummEngine_v80he::getOpcodeDesc(byte i) {
return _opcodesV80he[i].desc;
}
+void ScummEngine_v80he::o80_unknown45() {
+ // Sound related
+ byte subOp = fetchScriptByte();
+
+ switch (subOp) {
+ case 27:
+ pop();
+ break;
+ case 217:
+ break;
+ case 232:
+ _heSndSoundId = pop();
+ break;
+ case 255:
+ //Case doesn't match disasm.
+ _sound->addSoundToQueue(_heSndSoundId);
+ break;
+ default:
+ warning("o80_unknown45: default type %d", subOp);
+ }
+ debug(1,"o80_unknown45 stub (%d)",subOp);
+}
+
void ScummEngine_v80he::o80_unknown49() {
- int a = pop();
- int b = pop();
+ // Sound related
+ int result = 0;
+ int subOp = 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 (0);
- debug(1,"o80_unknown49 stub (%d, %d)", b, a);
+ push (result);
+ debug(1,"o80_unknown49 stub (%d, %d)", subOp, snd);
}
void ScummEngine_v80he::o80_unknown4D() {
diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp
index 6f67d2ea29..f2f623c432 100644
--- a/scumm/script_v90he.cpp
+++ b/scumm/script_v90he.cpp
@@ -131,7 +131,7 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(o6_writeWordVar),
/* 44 */
OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o80_unknown45),
OPCODE(o6_invalid),
OPCODE(o72_wordArrayWrite),
/* 48 */