aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2006-10-22 13:20:11 +0000
committerTravis Howell2006-10-22 13:20:11 +0000
commit2e5210a18c798d611d340e581a51b5a96a5354c7 (patch)
tree270e6ea7fd87474dd1fcef07f7ef30b04e7c9932
parent25c38db499c34807f6b277b8f9a8f1b3d32dbc6d (diff)
downloadscummvm-rg350-2e5210a18c798d611d340e581a51b5a96a5354c7.tar.gz
scummvm-rg350-2e5210a18c798d611d340e581a51b5a96a5354c7.tar.bz2
scummvm-rg350-2e5210a18c798d611d340e581a51b5a96a5354c7.zip
Add extra opcode for Elvira 2
svn-id: r24438
-rw-r--r--engines/agos/agos.h1
-rw-r--r--engines/agos/debug.h4
-rw-r--r--engines/agos/script_e2.cpp12
-rw-r--r--engines/agos/script_ww.cpp1
-rw-r--r--engines/agos/vga.cpp1
5 files changed, 17 insertions, 2 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index 363a72242b..cc5c695b90 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -1138,6 +1138,7 @@ public:
void oe2_moveDirn();
void oe2_pObj();
void oe2_loadUserGame();
+ void oe2_drawItem();
void oe2_setDoorOpen();
void oe2_setDoorClosed();
void oe2_setDoorLocked();
diff --git a/engines/agos/debug.h b/engines/agos/debug.h
index d070e5515d..6daeb74304 100644
--- a/engines/agos/debug.h
+++ b/engines/agos/debug.h
@@ -527,7 +527,7 @@ static const char *const elvira2_opcodeNameTable[256] = {
"WWW|MOVE_BOX",
/* 112 */
NULL,
- NULL,
+ "IBWW|DRAW_ITEM",
"IB|DO_ICONS",
"IBJ|IS_CLASS",
/* 116 */
@@ -760,7 +760,7 @@ static const char *const waxworks_opcodeNameTable[256] = {
"WWW|MOVE_BOX",
/* 112 */
NULL,
- NULL,
+ "IBWW|DRAW_ITEM",
"IB|DO_ICONS",
"IBJ|IS_CLASS",
/* 116 */
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index 67805423d2..a5ae01dff2 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -51,6 +51,7 @@ void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
op[95] = &AGOSEngine::oe1_nextMaster;
op[98] = &AGOSEngine::o1_animate;
op[99] = &AGOSEngine::o1_stopAnimate;
+ op[113] = &AGOSEngine::oe2_drawItem;
op[123] = &AGOSEngine::oe1_setTime;
op[127] = &AGOSEngine::o1_playTune;
op[144] = &AGOSEngine::oe2_setDoorOpen;
@@ -95,6 +96,17 @@ void AGOSEngine::oe2_loadUserGame() {
getStringPtrByID(getNextStringID());
}
+void AGOSEngine::oe2_drawItem() {
+ // 113: draw item
+ Item *i = getNextItemPtr();
+ int a = getVarOrByte();
+ int x = getVarOrWord();
+ int y = getVarOrWord();
+ mouseOff();
+ draw_icon_c(_windowArray[a % 8], itemGetIconNumber(i), x, y);
+ mouseOn();
+}
+
void AGOSEngine::oe2_setDoorOpen() {
// 144: set door open
Item *i = getNextItemPtr();
diff --git a/engines/agos/script_ww.cpp b/engines/agos/script_ww.cpp
index 662afb3297..fcd73de34a 100644
--- a/engines/agos/script_ww.cpp
+++ b/engines/agos/script_ww.cpp
@@ -61,6 +61,7 @@ void AGOSEngine::setupWaxworksOpcodes(OpcodeProc *op) {
op[99] = &AGOSEngine::o1_stopAnimate;
op[105] = &AGOSEngine::oww_menu;
op[106] = &AGOSEngine::oww_textMenu;
+ op[113] = &AGOSEngine::oe2_drawItem;
op[123] = &AGOSEngine::oe1_setTime;
op[127] = &AGOSEngine::o1_playTune;
op[144] = &AGOSEngine::oe2_setDoorOpen;
diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
index fa66b41c8c..04f1903a66 100644
--- a/engines/agos/vga.cpp
+++ b/engines/agos/vga.cpp
@@ -146,6 +146,7 @@ void AGOSEngine::setupElvira2VideoOpcodes(VgaOpcodeProc *op) {
op[54] = &AGOSEngine::vc54_dissolveOut;
op[57] = &AGOSEngine::vc57_blackPalette;
op[56] = &AGOSEngine::vc56_fullScreen;
+ op[58] = &AGOSEngine::vc58_checkCodeWheel;
op[59] = &AGOSEngine::vc59_skipIfNotEGA;
}