aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Brown2002-12-30 17:05:38 +0000
committerJames Brown2002-12-30 17:05:38 +0000
commit6038bb85be8fb7e3e96c939aa0aa853d04106852 (patch)
treedf74682932ab6d015ad37a69354b33e8ad78b8a9
parent7db414b203bba1b6d9ed9564022b71a12b105957 (diff)
downloadscummvm-rg350-6038bb85be8fb7e3e96c939aa0aa853d04106852.tar.gz
scummvm-rg350-6038bb85be8fb7e3e96c939aa0aa853d04106852.tar.bz2
scummvm-rg350-6038bb85be8fb7e3e96c939aa0aa853d04106852.zip
More CMI opcode work. The Murray scene outside the Voodoo ladys house (-d1 -b201) and the Map (-d1 -b226) now mostly work
svn-id: r6281
-rw-r--r--scumm/intern.h5
-rw-r--r--scumm/script_v8.cpp70
2 files changed, 42 insertions, 33 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 0cb818c2e7..27ae5a3393 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -429,8 +429,9 @@ protected:
void o8_soundKludge();
void o8_system();
void o8_startVideo();
- void o6_kernelSetFunctions();
- void o6_kernelGetFunctions();
+ void o8_kernelSetFunctions();
+ void o8_kernelGetFunctions();
+ void o8_getDateTime();
void o8_getObjectImageX();
void o8_getObjectImageY();
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 9f7e51f8f0..f56a642101 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -270,12 +270,12 @@ void Scumm_v8::setupOpcodes()
/* B4 */
OPCODE(o6_saveRestoreVerbs),
OPCODE(o6_setObjectName),
- OPCODE(o6_invalid),
+ OPCODE(o8_getDateTime),
OPCODE(o6_drawBox),
/* B8 */
OPCODE(o6_invalid),
OPCODE(o8_startVideo),
- OPCODE(o6_kernelSetFunctions),
+ OPCODE(o8_kernelSetFunctions),
OPCODE(o6_invalid),
/* BC */
OPCODE(o6_invalid),
@@ -313,7 +313,7 @@ void Scumm_v8::setupOpcodes()
OPCODE(o6_abs),
OPCODE(o6_invalid),
/* D8 */
- OPCODE(o6_kernelGetFunctions),
+ OPCODE(o8_kernelGetFunctions),
OPCODE(o6_isActorInBox),
OPCODE(o6_getVerbEntrypoint),
OPCODE(o6_getActorFromXY),
@@ -509,6 +509,7 @@ void Scumm_v8::decodeParseString(int m, int n)
_string[m].overhead = true;
_string[m].no_talk_anim = false;
break;
+ case 0xD2:
case 0xD0: // SO_PRINT_MUMBLE
_string[m].no_talk_anim = true;
break;
@@ -568,9 +569,9 @@ void Scumm_v8::decodeParseString(int m, int n)
return;
}
break;
- case 0xD2: // SO_PRINT_WRAP Set print wordwrap
- error("decodeParseString: SO_PRINT_MUMBLE");
- break;
+// case 0xD2: // SO_PRINT_WRAP Set print wordwrap
+// error("decodeParseString: SO_PRINT_MUMBLE");
+// break;
default:
error("decodeParseString: default case %d", b);
}
@@ -959,6 +960,8 @@ void Scumm_v8::o8_roomOps()
warning("V8 Load game opcode not implemented");
break;
case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
+ warning("o8_roomOps: SO_ROOM_SATURATION(%d, %d, %d, %d, %d)", pop(), pop(), pop(), pop(), pop());
+ break;
default:
error("o8_roomOps: default case %d", subOp);
}
@@ -1286,6 +1289,11 @@ void Scumm_v8::o8_system()
}
}
+void Scumm_v8::o8_getDateTime()
+{
+ warning("o8_getDateTime()");
+}
+
void Scumm_v8::o8_startVideo()
{
int len = resStrLen(_scriptPointer);
@@ -1299,7 +1307,7 @@ void Scumm_v8::o8_startVideo()
_scriptPointer += len + 1;
}
-void Scumm_v8::o6_kernelSetFunctions()
+void Scumm_v8::o8_kernelSetFunctions()
{
// TODO
int args[30];
@@ -1307,7 +1315,7 @@ void Scumm_v8::o6_kernelSetFunctions()
switch (args[0]) {
case 11: // lockObject
-// warning("o6_kernelSetFunctions: lockObject(%d)", args[1]);
+// warning("o8_kernelSetFunctions: lockObject(%d)", args[1]);
lock(rtFlObject, args[1]); // FIXME - no idea if this is right?
// getObjectIndex(args[1]);
// if (ObjData.field28 != 0) {
@@ -1315,7 +1323,7 @@ void Scumm_v8::o6_kernelSetFunctions()
// }
break;
case 12: // unlockObject
- warning("o6_kernelSetFunctions: unlockObject(%d)", args[1]);
+ warning("o8_kernelSetFunctions: unlockObject(%d)", args[1]);
unlock(rtFlObject, args[1]); // FIXME - no idea if this is right?
// getObjectIndex(args[1]);
// if (ObjData.field28 != 0) {
@@ -1323,61 +1331,61 @@ void Scumm_v8::o6_kernelSetFunctions()
// }
break;
case 13: // remapCostume
- derefActorSafe(args[1], "o6_kernelSetFunctions:remapCostume")->remapActorPalette(args[2], args[3], args[4], -1);
+ derefActorSafe(args[1], "o8_kernelSetFunctions:remapCostume")->remapActorPalette(args[2], args[3], args[4], -1);
break;
case 14: // remapCostumeInsert
- derefActorSafe(args[1], "o6_kernelSetFunctions:remapCostumeInsert")->remapActorPalette(args[2], args[3], args[4], args[5]);
+ derefActorSafe(args[1], "o8_kernelSetFunctions:remapCostumeInsert")->remapActorPalette(args[2], args[3], args[4], args[5]);
break;
case 15: // setVideoFrameRate
// not used anymore (was smush frame rate)
break;
case 20: // setBoxSlot
- warning("o6_kernelSetFunctions: setBoxSlot(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: setBoxSlot(%d, %d)", args[1], args[2]);
// FIXME - really setBoxScale ?!?
// setBoxScale(args[1], args[2]);
break;
case 21: // setScaleSlot
- warning("o6_kernelSetFunctions: setScaleSlot(%d, %d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
+ warning("o8_kernelSetFunctions: setScaleSlot(%d, %d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
break;
case 22: // setBannerColors
-// warning("o6_kernelSetFunctions: setBannerColors(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
+// warning("o8_kernelSetFunctions: setBannerColors(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
break;
case 23: // setActorChoreLimbFrame
-// warning("o6_kernelSetFunctions: setActorChoreLimbFrame(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
+// warning("o8_kernelSetFunctions: setActorChoreLimbFrame(%d, %d, %d, %d)", args[1], args[2], args[3], args[4]);
break;
case 24: // clearTextQueue
- warning("o6_kernelSetFunctions: clearTextQueue()");
+ warning("o8_kernelSetFunctions: clearTextQueue()");
break;
case 25: // saveGameWrite
- warning("o6_kernelSetFunctions: saveGameWrite(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: saveGameWrite(%d, %d)", args[1], args[2]);
break;
case 26: // saveGameRead
- warning("o6_kernelSetFunctions: saveGameRead(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: saveGameRead(%d, %d)", args[1], args[2]);
break;
case 27: // saveGameReadName
- warning("o6_kernelSetFunctions: saveGameReadName(%d)", args[1]);
+ warning("o8_kernelSetFunctions: saveGameReadName(%d)", args[1]);
break;
case 28: // saveGameStampScreenshot
- warning("o6_kernelSetFunctions: saveGameStampScreenshot(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
+ warning("o8_kernelSetFunctions: saveGameStampScreenshot(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);
break;
case 29: // setKeyScript
- warning("o6_kernelSetFunctions: setKeyScript(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: setKeyScript(%d, %d)", args[1], args[2]);
break;
case 30: // killAllScriptsButMe
- warning("o6_kernelSetFunctions: killAllScriptsButMe()");
+ warning("o8_kernelSetFunctions: killAllScriptsButMe()");
killAllScriptsExceptCurrent();
break;
case 31: // stopAllVideo
- warning("o6_kernelSetFunctions: stopAllVideo()");
+ warning("o8_kernelSetFunctions: stopAllVideo()");
break;
case 32: // writeRegistryValue
- warning("o6_kernelSetFunctions: writeRegistryValue(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: writeRegistryValue(%d, %d)", args[1], args[2]);
break;
case 33: // paletteSetIntensity
- warning("o6_kernelSetFunctions: paletteSetIntensity(%d, %d)", args[1], args[2]);
+ warning("o8_kernelSetFunctions: paletteSetIntensity(%d, %d)", args[1], args[2]);
break;
case 34: // queryQuit
- warning("o6_kernelSetFunctions: queryQuit()");
+ warning("o8_kernelSetFunctions: queryQuit()");
break;
case 108: // buildPaletteShadow
setupShadowPalette(args[1], args[2], args[3], args[4], args[5], args[6]);
@@ -1393,11 +1401,11 @@ void Scumm_v8::o6_kernelSetFunctions()
break;
default:
- warning("o6_kernelSetFunctions: default case %d (len = %d)", args[0], len);
+ warning("o8_kernelSetFunctions: default case %d (len = %d)", args[0], len);
}
}
-void Scumm_v8::o6_kernelGetFunctions()
+void Scumm_v8::o8_kernelGetFunctions()
{
// TODO
int args[30];
@@ -1414,7 +1422,7 @@ void Scumm_v8::o6_kernelGetFunctions()
case 0xD3: // getKeyState
case 0xD7: // getBox
push(0);
- warning("o6_kernelGetFunctions: default case %d (len = %d)", args[0], len);
+ warning("o8_kernelGetFunctions: default case %d (len = %d)", args[0], len);
break;
case 0xD8: { // findBlastObject
BlastObject *eo;
@@ -1434,7 +1442,7 @@ void Scumm_v8::o6_kernelGetFunctions()
}
case 0xD9: // actorHit
push(0);
- warning("o6_kernelGetFunctions: default case %d (len = %d)", args[0], len);
+ warning("o8_kernelGetFunctions: default case %d (len = %d)", args[0], len);
break;
case 0xDA: // lipSyncWidth
case 0xDB: // lipSyncHeight
@@ -1465,7 +1473,7 @@ void Scumm_v8::o6_kernelGetFunctions()
}
break;
default:
- error("o6_kernelGetFunctions: default case %d (len = %d)", args[0], len);
+ error("o8_kernelGetFunctions: default case %d (len = %d)", args[0], len);
}
}