[Scummvm-cvs-logs] CVS: tools descumm3.cpp,1.4,1.5
Max Horn
fingolfin at users.sourceforge.net
Sun Jul 28 03:18:04 CEST 2002
Update of /cvsroot/scummvm/tools
In directory usw-pr-cvs1:/tmp/cvs-serv20342
Modified Files:
descumm3.cpp
Log Message:
Changes some opcode names to match ScummVM/descumm5; renamed do_33 to do_room_ops (this is not yet implemented correctly!); fixed do_matrix_ops; added various missing opcodes; fixed decoding on big endian systems (hopefully I didn't break LE doing so :-)
Index: descumm3.cpp
===================================================================
RCS file: /cvsroot/scummvm/tools/descumm3.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- descumm3.cpp 7 Jul 2002 17:50:46 -0000 1.4
+++ descumm3.cpp 28 Jul 2002 10:17:37 -0000 1.5
@@ -123,6 +123,11 @@
return ((a >> 8) & 0xFF) + ((a << 8) & 0xFF00);
}
+#else
+
+#define TO_LE_16(x) (x)
+#define TO_LE_32(x) (x)
+
#endif
int get_byte()
@@ -132,11 +137,7 @@
int get_word()
{
-#if defined(SCUMM_BIG_ENDIAN)
int i = TO_LE_16(*((short *)cur_pos));
-#else
- int i = *((short *)cur_pos);
-#endif
cur_pos += 2;
return i;
}
@@ -886,8 +887,13 @@
strcpy(buf, ")");
}
-void do_33(char *buf)
+void do_room_ops(char *buf, byte master_opcode)
{
+/*
+ FIXME - this is not correct - but how do we pass this data on to do_tok? hm
+ int a = ((master_opcode & 0x80) ? get_var(buf) : get_word());
+ int b = ((master_opcode & 0x80) ? get_var(buf) : get_word());
+*/
int opcode = get_byte();
//buf+=sprintf(buf, "SubCode33%.2X", opcode);
@@ -958,10 +964,10 @@
break;
case 0x0D:
- do_tok(buf, "roomops:13", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
+ do_tok(buf, "save-string", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
break;
case 0x0E:
- do_tok(buf, "roomops:14", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
+ do_tok(buf, "load-string", ((opcode & 0x80) ? A1V : A1B) | A2ASCII);
break;
case 0x0F:
@@ -1354,25 +1360,7 @@
void do_matrix_ops(char *buf, byte opcode)
{
- opcode = get_byte();
-
- switch (opcode & 0x1F) {
- case 0x1:
- do_tok(buf, "SetBoxTo", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
- break;
- case 0x2:
- do_tok(buf, "SetBoxScale", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
- break;
- case 0x3:
- do_tok(buf, "SetBoxSlot", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
- break;
- case 0x4:
- do_tok(buf, "SetBoxPath", 0);
- break;
- default:
- sprintf(buf, "SetBoxUnknown%.2X", opcode);
- }
-
+ do_tok(buf, "setBoxFlags", ((opcode & 0x80) ? A1V : A1B) | A2B);
}
void get_tok(char *buf)
@@ -1382,10 +1370,10 @@
switch (opcode) {
case 0x00:
- do_tok(buf, "StopObjectScript", 0);
+ do_tok(buf, "stopObjectScript", 0);
break;
case 0xA0:
- do_tok(buf, "StopScript", 0);
+ do_tok(buf, "stopScript", 0);
break;
case 0x01:
@@ -1396,7 +1384,7 @@
case 0xA1:
case 0xC1:
case 0xE1:
- do_tok(buf, "PutActor",
+ do_tok(buf, "putActor",
((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W) |
((opcode & 0x20) ? A3V : A3W));
break;
@@ -1405,7 +1393,7 @@
case 0x55:
case 0x95:
case 0xD5:
- do_tok(buf, "GetActorFromPos",
+ do_tok(buf, "actorFromPos",
((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | AVARSTORE);
break;
@@ -1433,9 +1421,13 @@
break;
case 0x05:
- case 0x85:{
+ case 0x25:
+ case 0x65:
+ case 0x85:
+ case 0xA5:
+ case 0xE5:{
- buf = do_tok(buf, "DrawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN);
+ buf = do_tok(buf, "drawObject", ((opcode & 0x80) ? A1V : A1W) | ANOLASTPAREN);
opcode = get_byte();
switch (opcode & 0x1F) {
case 1:
@@ -1454,21 +1446,21 @@
case 0x06:
case 0x86:
- do_tok(buf, "GetActorElevation", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorElevation", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x07:
case 0x47:
case 0x87:
case 0xC7:
- do_tok(buf, "SetState", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
+ do_tok(buf, "setState", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x09:
case 0x49:
case 0x89:
case 0xC9:
- do_tok(buf, "FaceActor", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+ do_tok(buf, "faceActor", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x0A:
@@ -1506,7 +1498,7 @@
case 0x4D:
case 0x8D:
case 0xCD:
- do_tok(buf, "WalkActorToActor",
+ do_tok(buf, "walkActorToActor",
((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B) | A3B);
break; /* arg1=actor, arg2=actor */
@@ -1564,7 +1556,7 @@
case 0xBE:
case 0xDE:
case 0xFE:
- do_tok(buf, "WalkTo",
+ do_tok(buf, "walkActorTo",
((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W) |
((opcode & 0x20) ? A3V : A3W));
break;
@@ -1579,19 +1571,12 @@
do_tok(buf, NULL, A1W | A2W | ANOFIRSTPAREN | ASTARTCOMMA);
break;
- case 0x25:
- case 0x65:
- case 0xA5:
- case 0xE5:
- do_tok(buf, "PickUp", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
- break;
-
case 0x2C:
do_cursor_command(buf);
break;
case 0x40:
- do_tok(buf, "runCutscene", A1VARUNTIL0xFF);
+ do_tok(buf, "cutscene", A1VARUNTIL0xFF);
break;
case 0x42:
@@ -1610,17 +1595,17 @@
case 0x63:
case 0xE3:
- do_tok(buf, "GetActorFacing", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorFacing", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x6C:
case 0xEC:
- do_tok(buf, "GetActorWidth", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorWidth", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x71:
case 0xF1:
- do_tok(buf, "GetActorCostume", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorCostume", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0xAE:{
@@ -1649,7 +1634,7 @@
case 0x74:
case 0xB4:
case 0xF4:
- do_tok(buf, "GetDistActorToObject",
+ do_tok(buf, "getDist",
AVARSTORE | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
break;
@@ -1658,14 +1643,14 @@
case 0x76:
case 0xB6:
case 0xF6:
- do_tok(buf, "WalkActorToObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
+ do_tok(buf, "walkActorToObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
break;
case 0x37:
case 0x77:
case 0xB7:
case 0xF7:
- do_tok(buf, "StartObject",
+ do_tok(buf, "startObject",
((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B) | A3VARUNTIL0xFF);
break;
@@ -1677,7 +1662,7 @@
case 0xB9:
case 0xD9:
case 0xF9:{
- buf = strecpy(buf, "DoSentence(");
+ buf = strecpy(buf, "doSentence(");
if (!(opcode & 0x80) && (*cur_pos == 254)) {
strcpy(buf, "STOP)");
cur_pos++;
@@ -1692,7 +1677,7 @@
case 0x62:
case 0xE2:
- do_tok(buf, "StopScript", ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "stopScript", ((opcode & 0x80) ? A1V : A1B));
break;
case 0xAc:
@@ -1703,15 +1688,15 @@
case 0x51:
case 0x91:
case 0xD1:
- do_tok(buf, "ActorAnimate", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+ do_tok(buf, "actorAnimate", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x80:
- do_tok(buf, "Break", 0);
+ do_tok(buf, "breakHere", 0);
break;
case 0xc0:
- do_tok(buf, "EndCutscene", 0);
+ do_tok(buf, "endCutscene", 0);
break;
case 0x27:{ /* String management subcode */
@@ -1748,7 +1733,7 @@
break;
case 0x20:
- do_tok(buf, "StopMusic", 0);
+ do_tok(buf, "stopMusic", 0);
break;
case 0x70:
byte opcode2;
@@ -1764,7 +1749,7 @@
case 0xBF:
case 0xFF:
buf =
- do_tok(buf, "DrawBox",
+ do_tok(buf, "drawBox",
((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W) | ANOLASTPAREN);
opcode = get_byte();
do_tok(buf, NULL,
@@ -1775,7 +1760,7 @@
case 0x02:
case 0x82:
- do_tok(buf, "StartMusic", ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "startMusic", ((opcode & 0x80) ? A1V : A1B));
break;
case 0xCC:
@@ -1783,12 +1768,15 @@
break;
case 0x33:
- do_33(buf);
+ case 0x73:
+ case 0xB3:
+ case 0xF3:
+ do_room_ops(buf, opcode);
break;
case 0x68:
case 0xE8:
- do_tok(buf, "GetScriptRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getScriptRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x2E:{
@@ -1804,7 +1792,7 @@
case 0x69:
case 0xA9:
case 0xE9:
- do_tok(buf, "SetOwnerOf", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
+ do_tok(buf, "setOwnerOf", ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x52:
@@ -1821,35 +1809,35 @@
case 0x1C:
case 0x9C:
- do_tok(buf, "StartSound", ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "startSound", ((opcode & 0x80) ? A1V : A1B));
break;
case 0x4C:
- do_tok(buf, "SoundKludge", A1VARUNTIL0xFF);
+ do_tok(buf, "soundKludge", A1VARUNTIL0xFF);
break;
case 0x3C:
case 0xBC:
- do_tok(buf, "StopSound", ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "stopSound", ((opcode & 0x80) ? A1V : A1B));
break;
case 0x98:
- do_tok(buf, "QuitPauseRestart", A1B);
+ do_tok(buf, "quitPauseRestart", A1B);
break;
case 0x7B:
case 0xFB:
- do_tok(buf, "GetActorBox", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorWalkBox", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x43:
case 0xc3:
- do_tok(buf, "GetActorX", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorX", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x23:
case 0xA3:
- do_tok(buf, "GetActorY", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getActorY", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x7A:
@@ -1861,24 +1849,24 @@
case 0x6D:
case 0xAD:
case 0xED:
- do_tok(buf, "PutActorInRoom", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
+ do_tok(buf, "putActorInRoom", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x54:
case 0xD4:
- do_tok(buf, "SetObjectName", ((opcode & 0x80) ? A1V : A1W) | A2ASCII);
+ do_tok(buf, "setObjectName", ((opcode & 0x80) ? A1V : A1W) | A2ASCII);
break;
case 0x5D:
case 0xDD:
- do_tok(buf, "SetClass", ((opcode & 0x80) ? A1V : A1W) | A2VARUNTIL0xFF);
+ do_tok(buf, "setClass", ((opcode & 0x80) ? A1V : A1W) | A2VARUNTIL0xFF);
break;
case 0x35:
case 0x75:
case 0xB5:
case 0xF5:
- do_tok(buf, "FindObject",
+ do_tok(buf, "findObject",
AVARSTORE | ((opcode & 0x80) ? A1V : A1W) | ((opcode & 0x40) ? A2V : A2W));
break;
@@ -1887,7 +1875,7 @@
int i;
char first = 1;
- buf = do_tok(buf, "SetVarRange", A1V | ANOLASTPAREN);
+ buf = do_tok(buf, "setVarRange", A1V | ANOLASTPAREN);
i = get_byte();
buf += sprintf(buf, ",%d,[", i);
@@ -1908,7 +1896,7 @@
case 0x16:
case 0x96:
- do_tok(buf, "GetRandomNr", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getRandomNr", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x2B:
@@ -1919,24 +1907,25 @@
case 0x4E:
case 0x8E:
case 0xCE:
- do_tok(buf, "PutActorAtObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
+ do_tok(buf, "putActorAtObject", ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2W));
break;
case 0x12:
case 0x92:
- do_tok(buf, "PanCameraTo", ((opcode & 0x80) ? A1V : A1W));
+ do_tok(buf, "panCameraTo", ((opcode & 0x80) ? A1V : A1W));
break;
case 0x32:
- do_tok(buf, "SetCameraAt", ((opcode & 0x80) ? A1V : A1W));
+ do_tok(buf, "setCameraAt", ((opcode & 0x80) ? A1V : A1W));
break;
case 0x30:
+ case 0xB0:
do_matrix_ops(buf, opcode);
break;
case 0x7C:
- do_tok(buf, "IsSoundRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "isSoundRunning", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x31:
@@ -1948,13 +1937,13 @@
case 0x5f:
case 0x9f:
case 0xdf:
- do_tok(buf, "IsActorInBox",
+ do_tok(buf, "isActorInBox",
ATO | ((opcode & 0x80) ? A1V : A1B) | ((opcode & 0x40) ? A2V : A2B));
break;
case 0x22:
case 0xA2:
- do_tok(buf, "GetAnimCounter", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "getAnimCounter", AVARSTORE | ((opcode & 0x80) ? A1V : A1B));
break;
case 0x3d:
@@ -2005,19 +1994,23 @@
if ((d & 0x1F) == 3)
do_tok(buf, "oldRoomEffect", ((opcode & 0x80) ? A1V : A1B));
else
- do_tok(buf, "oldRoomEffect", ((opcode & 0x80) ? A1V : A1B));
+ do_tok(buf, "oldRoomEffect?", ((opcode & 0x80) ? A1V : A1B));
break;
}
+
+ case 0x50:
+ case 0xD0:
+ do_tok(buf, "pickupObject", ((opcode & 0x80) ? A1V : A1W));
+ break;
+
case 0x2f:
case 0x45:
case 0x4F:
- case 0x50:
// case 0x5C:
case 0x6F:
case 0xAF:
case 0xC5:
case 0xCF:
- case 0xD0:
case 0xDC:
case 0xEF:
if (HaltOnError) {
@@ -2139,11 +2132,7 @@
size_of_code = len;
buf = (char *)malloc(4096);
-#if defined(SCUMM_BIG_ENDIAN)
- switch (TO_LE_16(*((long *)mem + 1) & 0xFFFF)) {
-#else
- switch (*((long *)mem + 1) & 0xFFFF) {
-#endif
+ switch (TO_LE_16(*((unsigned short *)mem + 2))) {
case MKID('LS'):
printf("Script# %d\n", (unsigned char)mem[8]);
mem += 7;
More information about the Scummvm-git-logs
mailing list