aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/adl_v4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/adl/adl_v4.cpp')
-rw-r--r--engines/adl/adl_v4.cpp43
1 files changed, 29 insertions, 14 deletions
diff --git a/engines/adl/adl_v4.cpp b/engines/adl/adl_v4.cpp
index c06099b98d..dabee63e1a 100644
--- a/engines/adl/adl_v4.cpp
+++ b/engines/adl/adl_v4.cpp
@@ -420,7 +420,22 @@ void AdlEngine_v4::switchRoom(byte roomNr) {
restoreRoomState(_state.room);
}
-int AdlEngine_v4::o4_isItemInRoom(ScriptEnv &e) {
+void AdlEngine_v4::setupOpcodeTables() {
+ AdlEngine_v3::setupOpcodeTables();
+
+ _condOpcodes[0x08] = opcode(&AdlEngine_v4::o_isVarGT);
+ _condOpcodes[0x0a].reset();
+
+ _actOpcodes[0x0a] = opcode(&AdlEngine_v4::o_setRegionToPrev);
+ _actOpcodes[0x0b].reset();
+ _actOpcodes[0x0e] = opcode(&AdlEngine_v4::o_setRegion);
+ _actOpcodes[0x12] = opcode(&AdlEngine_v4::o_setRegionRoom);
+ _actOpcodes[0x13].reset();
+ _actOpcodes[0x1e].reset();
+ _actOpcodes[0x1f].reset();
+}
+
+int AdlEngine_v4::o_isItemInRoom(ScriptEnv &e) {
OP_DEBUG_2("\t&& GET_ITEM_ROOM(%s) == %s", itemStr(e.arg(1)).c_str(), itemRoomStr(e.arg(2)).c_str());
const Item &item = getItem(e.arg(1));
@@ -434,7 +449,7 @@ int AdlEngine_v4::o4_isItemInRoom(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_isVarGT(ScriptEnv &e) {
+int AdlEngine_v4::o_isVarGT(ScriptEnv &e) {
OP_DEBUG_2("\t&& VARS[%d] > %d", e.arg(1), e.arg(2));
if (getVar(e.arg(1)) > e.arg(2))
@@ -443,13 +458,13 @@ int AdlEngine_v4::o4_isVarGT(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_moveItem(ScriptEnv &e) {
- o2_moveItem(e);
+int AdlEngine_v4::o_moveItem(ScriptEnv &e) {
+ AdlEngine_v3::o_moveItem(e);
getItem(e.arg(1)).region = _state.region;
return 2;
}
-int AdlEngine_v4::o4_setRegionToPrev(ScriptEnv &e) {
+int AdlEngine_v4::o_setRegionToPrev(ScriptEnv &e) {
OP_DEBUG_0("\tREGION = PREV_REGION");
switchRegion(_state.prevRegion);
@@ -458,7 +473,7 @@ int AdlEngine_v4::o4_setRegionToPrev(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_moveAllItems(ScriptEnv &e) {
+int AdlEngine_v4::o_moveAllItems(ScriptEnv &e) {
OP_DEBUG_2("\tMOVE_ALL_ITEMS(%s, %s)", itemRoomStr(e.arg(1)).c_str(), itemRoomStr(e.arg(2)).c_str());
byte room1 = roomArg(e.arg(1));
@@ -495,7 +510,7 @@ int AdlEngine_v4::o4_moveAllItems(ScriptEnv &e) {
return 2;
}
-int AdlEngine_v4::o4_setRegion(ScriptEnv &e) {
+int AdlEngine_v4::o_setRegion(ScriptEnv &e) {
OP_DEBUG_1("\tREGION = %d", e.arg(1));
switchRegion(e.arg(1));
@@ -504,7 +519,7 @@ int AdlEngine_v4::o4_setRegion(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_save(ScriptEnv &e) {
+int AdlEngine_v4::o_save(ScriptEnv &e) {
OP_DEBUG_0("\tSAVE_GAME()");
_display->printString(_strings_v2.saveReplace);
@@ -525,7 +540,7 @@ int AdlEngine_v4::o4_save(ScriptEnv &e) {
return 0;
}
-int AdlEngine_v4::o4_restore(ScriptEnv &e) {
+int AdlEngine_v4::o_restore(ScriptEnv &e) {
OP_DEBUG_0("\tRESTORE_GAME()");
const int slot = askForSlot(_strings_v2.restoreInsert);
@@ -544,7 +559,7 @@ int AdlEngine_v4::o4_restore(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_restart(ScriptEnv &e) {
+int AdlEngine_v4::o_restart(ScriptEnv &e) {
OP_DEBUG_0("\tRESTART_GAME()");
while (true) {
@@ -555,7 +570,7 @@ int AdlEngine_v4::o4_restart(ScriptEnv &e) {
return -1;
if (input.firstChar() == APPLECHAR('N')) {
- return o1_quit(e);
+ return o_quit(e);
} else if (input.firstChar() == APPLECHAR('Y')) {
// The original game loads a special save game from volume 3
initState();
@@ -566,7 +581,7 @@ int AdlEngine_v4::o4_restart(ScriptEnv &e) {
}
}
-int AdlEngine_v4::o4_setRegionRoom(ScriptEnv &e) {
+int AdlEngine_v4::o_setRegionRoom(ScriptEnv &e) {
OP_DEBUG_2("\tSET_REGION_ROOM(%d, %d)", e.arg(1), e.arg(2));
switchRegion(e.arg(1));
@@ -576,8 +591,8 @@ int AdlEngine_v4::o4_setRegionRoom(ScriptEnv &e) {
return -1;
}
-int AdlEngine_v4::o4_setRoomPic(ScriptEnv &e) {
- o1_setRoomPic(e);
+int AdlEngine_v4::o_setRoomPic(ScriptEnv &e) {
+ AdlEngine_v3::o_setRoomPic(e);
backupRoomState(e.arg(1));
return 2;
}