aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v8.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v8.cpp')
-rw-r--r--scumm/script_v8.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 40d4ae1aed..bff070757f 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -169,7 +169,7 @@ void Scumm_v8::setupOpcodes()
OPCODE(o6_jump),
OPCODE(o6_breakHere),
/* 68 */
- OPCODE(o6_invalid),
+ OPCODE(o8_breakHereVar),
OPCODE(o8_wait),
OPCODE(o6_delay), // FIXME - is the delay period right?
OPCODE(o6_delayLonger), // FIXME - is the delay period right?
@@ -202,7 +202,7 @@ void Scumm_v8::setupOpcodes()
OPCODE(o6_stopObjectScript), // FIXME - is this right?
OPCODE(o6_cutscene),
OPCODE(o6_endCutscene),
- OPCODE(o6_invalid),
+ OPCODE(o6_freezeUnfreeze),
/* 84 */
OPCODE(o6_beginOverride),
OPCODE(o6_endOverride),
@@ -211,8 +211,8 @@ void Scumm_v8::setupOpcodes()
/* 88 */
OPCODE(o6_invalid),
OPCODE(o6_setClass),
- OPCODE(o6_invalid),
- OPCODE(o6_invalid),
+ OPCODE(o6_setState),
+ OPCODE(o6_setOwner),
/* 8C */
OPCODE(o6_invalid),
OPCODE(o6_invalid),
@@ -257,9 +257,9 @@ void Scumm_v8::setupOpcodes()
OPCODE(o8_actorOps),
OPCODE(o8_cameraOps),
OPCODE(o8_verbOps),
- OPCODE(o6_invalid),
+ OPCODE(o6_startSound),
/* B0 */
- OPCODE(o6_invalid),
+ OPCODE(o6_startMusic),
OPCODE(o6_stopSound),
OPCODE(o8_soundKludge),
OPCODE(o8_system),
@@ -528,6 +528,12 @@ void Scumm_v8::o8_mod()
push(pop() % a);
}
+void Scumm_v8::o8_breakHereVar()
+{
+ warning("o8_breakHereVar NYI");
+ o6_breakHere();
+}
+
void Scumm_v8::o8_wait()
{
// TODO
@@ -821,8 +827,14 @@ void Scumm_v8::o8_roomOps()
case 0x5A: // SO_ROOM_CYCLE_SPEED Set palette cycling speed
case 0x5B: // SO_ROOM_COPY_PALETTE Copy palette
case 0x5C: // SO_ROOM_NEW_PALETTE Create new palette
+ error("o8_roomOps: default case %d", subOp);
+ break;
case 0x5D: // SO_ROOM_SAVE_GAME Save game
+ warning("V8 Save game opcode not implemented");
+ break;
case 0x5E: // SO_ROOM_LOAD_GAME Load game
+ warning("V8 Load game opcode not implemented");
+ break;
case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
default:
error("o8_roomOps: default case %d", subOp);
@@ -1078,9 +1090,11 @@ void Scumm_v8::o8_verbOps()
void Scumm_v8::o8_soundKludge()
{
- // TODO
- int16 args[30];
+ int16 args[16];
getStackList(args, sizeof(args) / sizeof(args[0]));
+
+ // FIXME - is this right?
+ _sound->soundKludge(args);
}
void Scumm_v8::o8_system()
@@ -1108,13 +1122,13 @@ void Scumm_v8::o8_kludge()
// not used
break;
case 22:
- warning("o8_kludge: BannerSetBannerColor(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
+// warning("o8_kludge: BannerSetBannerColor(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
break;
case 29:
warning("o8_kludge: opcode 29 (%d, %d)", args[1], args[2]);
break;
case 108:
- warning("o8_kludge: PaletteBuildRedirection(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
+// warning("o8_kludge: PaletteBuildRedirection(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
break;
case 12:
case 13: