aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agos/agos.cpp29
-rw-r--r--engines/agos/agos.h107
-rw-r--r--engines/agos/cursor.cpp7
-rw-r--r--engines/agos/draw.cpp2
-rw-r--r--engines/agos/game.cpp49
-rw-r--r--engines/agos/icons.cpp10
-rw-r--r--engines/agos/script.cpp16
-rw-r--r--engines/agos/script_e1.cpp2
-rw-r--r--engines/agos/script_e2.cpp4
-rw-r--r--engines/agos/script_ff.cpp4
-rw-r--r--engines/agos/script_pp.cpp4
-rw-r--r--engines/agos/script_s1.cpp4
-rw-r--r--engines/agos/script_s2.cpp4
-rw-r--r--engines/agos/script_ww.cpp4
-rw-r--r--engines/agos/vga.cpp16
-rw-r--r--engines/agos/vga_e2.cpp4
-rw-r--r--engines/agos/vga_ff.cpp4
-rw-r--r--engines/agos/vga_s1.cpp4
-rw-r--r--engines/agos/vga_s2.cpp4
-rw-r--r--engines/agos/vga_ww.cpp4
20 files changed, 192 insertions, 90 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index 90e7e8aa78..ce22b3c424 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -72,6 +72,35 @@ static const GameSpecificSettings puzzlepack_settings = {
};
#endif
+
+AGOSEngine_PuzzlePack::AGOSEngine_PuzzlePack(OSystem *system)
+ : AGOSEngine_Feeble(system) {
+}
+
+AGOSEngine_Feeble::AGOSEngine_Feeble(OSystem *system)
+ : AGOSEngine_Simon2(system) {
+}
+
+AGOSEngine_Simon2::AGOSEngine_Simon2(OSystem *system)
+ : AGOSEngine_Simon1(system) {
+}
+
+AGOSEngine_Simon1::AGOSEngine_Simon1(OSystem *system)
+ : AGOSEngine_Waxworks(system) {
+}
+
+AGOSEngine_Waxworks::AGOSEngine_Waxworks(OSystem *system)
+ : AGOSEngine_Elvira2(system) {
+}
+
+AGOSEngine_Elvira2::AGOSEngine_Elvira2(OSystem *system)
+ : AGOSEngine_Elvira1(system) {
+}
+
+AGOSEngine_Elvira1::AGOSEngine_Elvira1(OSystem *system)
+ : AGOSEngine(system) {
+}
+
AGOSEngine::AGOSEngine(OSystem *syst)
: Engine(syst) {
_vcPtr = 0;
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index f8c602de1a..6d32474f4b 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -130,17 +130,10 @@ class AGOSEngine : public Engine {
GUI::Debugger *getDebugger();
+public:
typedef void (AGOSEngine::*OpcodeProc) ();
- void setupCommonOpcodes(OpcodeProc *op);
-
- void setupElvira1Opcodes(OpcodeProc *op);
- void setupElvira2Opcodes(OpcodeProc *op);
- void setupWaxworksOpcodes(OpcodeProc *op);
- void setupSimon1Opcodes(OpcodeProc *op);
- void setupSimon2Opcodes(OpcodeProc *op);
- void setupFeebleOpcodes(OpcodeProc *op);
- void setupPuzzleOpcodes(OpcodeProc *op);
+ virtual void setupOpcodes(OpcodeProc *op);
void setupOpcodes();
OpcodeProc _opcode_table[300];
@@ -152,16 +145,8 @@ class AGOSEngine : public Engine {
VgaOpcodeProc _vga_opcode_table[100];
uint _numVideoOpcodes;
- void setupCommonVideoOpcodes(VgaOpcodeProc *op);
-
- void setupElvira1VideoOpcodes(VgaOpcodeProc *op);
- void setupElvira2VideoOpcodes(VgaOpcodeProc *op);
- void setupWaxworksVideoOpcodes(VgaOpcodeProc *op);
- void setupSimon1VideoOpcodes(VgaOpcodeProc *op);
- void setupSimon2VideoOpcodes(VgaOpcodeProc *op);
- void setupFeebleVideoOpcodes(VgaOpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
-public:
const AGOSGameDescription *_gameDescription;
bool initGame(void);
@@ -777,8 +762,7 @@ protected:
void handleMouseMoved();
void initMouse();
void loadMouseImage();
- void drawMousePointer();
- void drawMousePointer_FF();
+ virtual void drawMousePointer();
void drawMousePart(int image, byte x, byte y);
void addArrows(WindowBlock *window);
@@ -788,9 +772,10 @@ protected:
bool hasIcon(Item *item);
uint itemGetIconNumber(Item *item);
uint setupIconHitArea(WindowBlock *window, uint num, uint x, uint y, Item *item_ptr);
- void drawIconArray(uint i, Item *item_ptr, int line, int classMask);
- void drawIconArray_FF(uint i, Item *item_ptr, int line, int classMask);
- void drawIconArray_Simon(uint i, Item *item_ptr, int line, int classMask);
+
+ virtual void drawIconArray(uint i, Item *item_ptr, int line, int classMask);
+
+
void removeIconArray(uint num);
void loadIconData();
@@ -1425,6 +1410,82 @@ protected:
char *genSaveName(int slot);
};
+class AGOSEngine_Elvira1 : public AGOSEngine {
+public:
+ AGOSEngine_Elvira1(OSystem *system);
+ //~AGOSEngine_Elvira1();
+
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+private:
+};
+
+class AGOSEngine_Elvira2 : public AGOSEngine_Elvira1 {
+public:
+ AGOSEngine_Elvira2(OSystem *system);
+ //~AGOSEngine_Elvira2();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+private:
+};
+
+class AGOSEngine_Waxworks : public AGOSEngine_Elvira2 {
+public:
+ AGOSEngine_Waxworks(OSystem *system);
+ //~AGOSEngine_Waxworks();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+private:
+};
+
+class AGOSEngine_Simon1 : public AGOSEngine_Waxworks {
+public:
+ AGOSEngine_Simon1(OSystem *system);
+ //~AGOSEngine_Simon1();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+private:
+};
+
+class AGOSEngine_Simon2 : public AGOSEngine_Simon1 {
+public:
+ AGOSEngine_Simon2(OSystem *system);
+ //~AGOSEngine_Simon2();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+private:
+};
+
+class AGOSEngine_Feeble : public AGOSEngine_Simon2 {
+public:
+ AGOSEngine_Feeble(OSystem *system);
+ //~AGOSEngine_Feeble();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+ virtual void setupVideoOpcodes(VgaOpcodeProc *op);
+
+ virtual void drawMousePointer();
+protected:
+ virtual void drawIconArray(uint i, Item *item_ptr, int line, int classMask);
+
+private:
+};
+
+class AGOSEngine_PuzzlePack : public AGOSEngine_Feeble {
+public:
+ AGOSEngine_PuzzlePack(OSystem *system);
+ //~AGOSEngine_PuzzlePack();
+
+ virtual void setupOpcodes(OpcodeProc *op);
+
+private:
+};
+
} // End of namespace AGOS
#endif
diff --git a/engines/agos/cursor.cpp b/engines/agos/cursor.cpp
index 33471f2e43..8575d17de0 100644
--- a/engines/agos/cursor.cpp
+++ b/engines/agos/cursor.cpp
@@ -436,10 +436,7 @@ boxstuff:
_lastHitArea3 = (HitArea *) -1;
get_out:
- if (getGameType() == GType_FF)
- drawMousePointer_FF();
- else
- drawMousePointer();
+ drawMousePointer();
_needHitAreaRecalc = 0;
_litBoxFlag = 0;
@@ -545,7 +542,7 @@ void AGOSEngine::drawMousePointer() {
}
}
-void AGOSEngine::drawMousePointer_FF() {
+void AGOSEngine_Feeble::drawMousePointer() {
uint cursor;
int image, offs;
diff --git a/engines/agos/draw.cpp b/engines/agos/draw.cpp
index c48db940ee..48d275bea7 100644
--- a/engines/agos/draw.cpp
+++ b/engines/agos/draw.cpp
@@ -96,7 +96,6 @@ void AGOSEngine::animateSprites() {
void AGOSEngine::animateSpritesDebug() {
VgaSprite *vsp;
VgaPointersEntry *vpe;
- VC10_state state;
if (_paletteFlag == 2)
_paletteFlag = 1;
@@ -127,7 +126,6 @@ void AGOSEngine::animateSpritesDebug() {
void AGOSEngine::animateSpritesByY() {
VgaSprite *vsp;
VgaPointersEntry *vpe;
- VC10_state state;
int16 spriteTable[180][2];
byte *src;
diff --git a/engines/agos/game.cpp b/engines/agos/game.cpp
index e0e60c43a2..e1be6d88f1 100644
--- a/engines/agos/game.cpp
+++ b/engines/agos/game.cpp
@@ -26,6 +26,7 @@
#include "base/plugins.h"
#include "common/advancedDetector.h"
+#include "common/config-manager.h"
#include "agos/agos.h"
@@ -102,8 +103,54 @@ static const Common::ADParams detectionParams = {
Common::kADFlagAugmentPreferredTarget
};
-ADVANCED_DETECTOR_DEFINE_PLUGIN(AGOS, AGOS::AGOSEngine, detectionParams);
+GameList Engine_AGOS_gameIDList() {
+ return GameList(simonGames);
+}
+
+GameDescriptor Engine_AGOS_findGameID(const char *gameid) {
+ return Common::AdvancedDetector::findGameID(gameid, detectionParams);
+}
+
+GameList Engine_AGOS_detectGames(const FSList &fslist) {
+ return Common::AdvancedDetector::detectAllGames(fslist, detectionParams);
+}
+PluginError Engine_AGOS_create(OSystem *syst, Engine **engine) {
+ assert(engine);
+ const char *gameid = ConfMan.get("gameid").c_str();
+
+ //const AGOSGameDescription gd = (const AGOSGameDescription *)Common::AdvancedDetector::detectBestMatchingGame(detectionParams);
+ //if (gd == 0) {
+ // return kNoGameDataFoundError;
+ //}
+
+ if (!scumm_stricmp("elvira1", gameid)) {
+ *engine = new AGOS::AGOSEngine_Elvira1(syst);
+ } else if (!scumm_stricmp("elvira2", gameid)) {
+ *engine = new AGOS::AGOSEngine_Elvira2(syst);
+ } else if (!scumm_stricmp("waxworks", gameid)) {
+ *engine = new AGOS::AGOSEngine_Waxworks(syst);
+ } else if (!scumm_stricmp("simon1", gameid)) {
+ *engine = new AGOS::AGOSEngine_Simon1(syst);
+ } else if (!scumm_stricmp("simon2", gameid)) {
+ *engine = new AGOS::AGOSEngine_Simon2(syst);
+ } else if (!scumm_stricmp("feeble", gameid)) {
+ *engine = new AGOS::AGOSEngine_Feeble(syst);
+
+ } else if (!scumm_stricmp("jumble", gameid)) {
+ *engine = new AGOS::AGOSEngine_PuzzlePack(syst);
+ } else if (!scumm_stricmp("puzzle", gameid)) {
+ *engine = new AGOS::AGOSEngine_PuzzlePack(syst);
+ } else if (!scumm_stricmp("swampy", gameid)) {
+ *engine = new AGOS::AGOSEngine_PuzzlePack(syst);
+
+ } else {
+ error("AGOS engine created with invalid gameid");
+ }
+
+ return kNoError;
+}
+
REGISTER_PLUGIN(AGOS, "AGOS", "AGOS (C) Adventure Soft");
namespace AGOS {
diff --git a/engines/agos/icons.cpp b/engines/agos/icons.cpp
index 4a67a914d8..3c3810163f 100644
--- a/engines/agos/icons.cpp
+++ b/engines/agos/icons.cpp
@@ -243,14 +243,6 @@ void AGOSEngine::drawIcon(WindowBlock *window, uint icon, uint x, uint y) {
}
void AGOSEngine::drawIconArray(uint num, Item *itemRef, int line, int classMask) {
- if (getGameType() == GType_FF) {
- drawIconArray_FF(num, itemRef, line, classMask);
- } else {
- drawIconArray_Simon(num, itemRef, line, classMask);
- }
-}
-
-void AGOSEngine::drawIconArray_Simon(uint num, Item *itemRef, int line, int classMask) {
Item *item_ptr_org = itemRef;
WindowBlock *window;
uint width, height;
@@ -350,7 +342,7 @@ void AGOSEngine::drawIconArray_Simon(uint num, Item *itemRef, int line, int clas
}
}
-void AGOSEngine::drawIconArray_FF(uint num, Item *itemRef, int line, int classMask) {
+void AGOSEngine_Feeble::drawIconArray(uint num, Item *itemRef, int line, int classMask) {
Item *item_ptr_org = itemRef;
WindowBlock *window;
uint16 flagnumber = 201;
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index 99f639474d..57cd96350b 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -36,7 +36,7 @@ extern bool isSmartphone(void);
namespace AGOS {
-void AGOSEngine::setupCommonOpcodes(OpcodeProc *op) {
+void AGOSEngine::setupOpcodes(OpcodeProc *op) {
// A common set of opcodes for Elvira 2 and later.
op[1] = &AGOSEngine::o_at;
@@ -147,25 +147,13 @@ void AGOSEngine::setupOpcodes() {
switch (getGameType()) {
case GType_ELVIRA1:
- setupElvira1Opcodes(_opcode_table);
- break;
case GType_ELVIRA2:
- setupElvira2Opcodes(_opcode_table);
- break;
case GType_WW:
- setupWaxworksOpcodes(_opcode_table);
- break;
case GType_SIMON1:
- setupSimon1Opcodes(_opcode_table);
- break;
case GType_SIMON2:
- setupSimon2Opcodes(_opcode_table);
- break;
case GType_FF:
- setupFeebleOpcodes(_opcode_table);
- break;
case GType_PP:
- setupPuzzleOpcodes(_opcode_table);
+ setupOpcodes(_opcode_table);
break;
default:
error("setupOpcodes: Unknown game");
diff --git a/engines/agos/script_e1.cpp b/engines/agos/script_e1.cpp
index a8006b4627..3c17d67f2f 100644
--- a/engines/agos/script_e1.cpp
+++ b/engines/agos/script_e1.cpp
@@ -28,7 +28,7 @@
namespace AGOS {
-void AGOSEngine::setupElvira1Opcodes(OpcodeProc *op) {
+void AGOSEngine_Elvira1::setupOpcodes(OpcodeProc *op) {
op[0] = &AGOSEngine::o_at;
op[1] = &AGOSEngine::o_notAt;
op[2] = &AGOSEngine::oe1_present;
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index 0da38a31c2..ac4d40a446 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -27,8 +27,8 @@
namespace AGOS {
-void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_Elvira2::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[8] = &AGOSEngine::oe1_isNotAt;
op[9] = &AGOSEngine::oe1_sibling;
diff --git a/engines/agos/script_ff.cpp b/engines/agos/script_ff.cpp
index 59c42c94ed..912110bb9d 100644
--- a/engines/agos/script_ff.cpp
+++ b/engines/agos/script_ff.cpp
@@ -30,8 +30,8 @@
namespace AGOS {
-void AGOSEngine::setupFeebleOpcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_Feeble::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[23] = &AGOSEngine::off_chance;
op[37] = &AGOSEngine::off_jumpOut;
diff --git a/engines/agos/script_pp.cpp b/engines/agos/script_pp.cpp
index ef865a58ad..02660e2c8d 100644
--- a/engines/agos/script_pp.cpp
+++ b/engines/agos/script_pp.cpp
@@ -29,8 +29,8 @@
namespace AGOS {
-void AGOSEngine::setupPuzzleOpcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_PuzzlePack::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[23] = &AGOSEngine::off_chance;
op[30] = &AGOSEngine::opp_iconifyWindow;
diff --git a/engines/agos/script_s1.cpp b/engines/agos/script_s1.cpp
index eeb17515f6..d464833431 100644
--- a/engines/agos/script_s1.cpp
+++ b/engines/agos/script_s1.cpp
@@ -33,8 +33,8 @@ extern bool isSmartphone(void);
namespace AGOS {
-void AGOSEngine::setupSimon1Opcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_Simon1::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[65] = &AGOSEngine::oww_addTextBox;
op[66] = &AGOSEngine::oww_setShortText;
diff --git a/engines/agos/script_s2.cpp b/engines/agos/script_s2.cpp
index 27ab3d2af2..ea2ef5d1bb 100644
--- a/engines/agos/script_s2.cpp
+++ b/engines/agos/script_s2.cpp
@@ -27,8 +27,8 @@
namespace AGOS {
-void AGOSEngine::setupSimon2Opcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_Simon2::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[65] = &AGOSEngine::oww_addTextBox;
op[66] = &AGOSEngine::oww_setShortText;
diff --git a/engines/agos/script_ww.cpp b/engines/agos/script_ww.cpp
index 5b192a4199..398530cd47 100644
--- a/engines/agos/script_ww.cpp
+++ b/engines/agos/script_ww.cpp
@@ -29,8 +29,8 @@
namespace AGOS {
-void AGOSEngine::setupWaxworksOpcodes(OpcodeProc *op) {
- setupCommonOpcodes(op);
+void AGOSEngine_Waxworks::setupOpcodes(OpcodeProc *op) {
+ AGOSEngine::setupOpcodes(op);
op[8] = &AGOSEngine::oe1_isNotAt;
op[9] = &AGOSEngine::oe1_sibling;
diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
index 96b9551fa6..e0bd4f2e13 100644
--- a/engines/agos/vga.cpp
+++ b/engines/agos/vga.cpp
@@ -33,7 +33,7 @@
namespace AGOS {
// Opcode tables
-void AGOSEngine::setupCommonVideoOpcodes(VgaOpcodeProc *op) {
+void AGOSEngine::setupVideoOpcodes(VgaOpcodeProc *op) {
op[1] = &AGOSEngine::vc1_fadeOut;
op[2] = &AGOSEngine::vc2_call;
op[3] = &AGOSEngine::vc3_loadSprite;
@@ -81,7 +81,7 @@ void AGOSEngine::setupCommonVideoOpcodes(VgaOpcodeProc *op) {
op[55] = &AGOSEngine::vc55_moveBox;
}
-void AGOSEngine::setupElvira1VideoOpcodes(VgaOpcodeProc *op) {
+void AGOSEngine_Elvira1::setupVideoOpcodes(VgaOpcodeProc *op) {
op[1] = &AGOSEngine::vc1_fadeOut;
op[2] = &AGOSEngine::vc2_call;
op[3] = &AGOSEngine::vc3_loadSprite;
@@ -130,23 +130,13 @@ void AGOSEngine::setupVgaOpcodes() {
switch (getGameType()) {
case GType_ELVIRA1:
- setupElvira1VideoOpcodes(_vga_opcode_table);
- break;
case GType_ELVIRA2:
- setupElvira2VideoOpcodes(_vga_opcode_table);
- break;
case GType_WW:
- setupWaxworksVideoOpcodes(_vga_opcode_table);
- break;
case GType_SIMON1:
- setupSimon1VideoOpcodes(_vga_opcode_table);
- break;
case GType_SIMON2:
- setupSimon2VideoOpcodes(_vga_opcode_table);
- break;
case GType_FF:
case GType_PP:
- setupFeebleVideoOpcodes(_vga_opcode_table);
+ setupVideoOpcodes(_vga_opcode_table);
break;
default:
error("setupVgaOpcodes: Unknown game");
diff --git a/engines/agos/vga_e2.cpp b/engines/agos/vga_e2.cpp
index fa454db4d9..5342d4c0d4 100644
--- a/engines/agos/vga_e2.cpp
+++ b/engines/agos/vga_e2.cpp
@@ -31,8 +31,8 @@
namespace AGOS {
-void AGOSEngine::setupElvira2VideoOpcodes(VgaOpcodeProc *op) {
- setupCommonVideoOpcodes(op);
+void AGOSEngine_Elvira2::setupVideoOpcodes(VgaOpcodeProc *op) {
+ AGOSEngine::setupVideoOpcodes(op);
op[17] = &AGOSEngine::vc17_waitEnd;
op[19] = &AGOSEngine::vc19_loop;
diff --git a/engines/agos/vga_ff.cpp b/engines/agos/vga_ff.cpp
index 3097bc1eef..e5d85743e5 100644
--- a/engines/agos/vga_ff.cpp
+++ b/engines/agos/vga_ff.cpp
@@ -28,8 +28,8 @@
namespace AGOS {
-void AGOSEngine::setupFeebleVideoOpcodes(VgaOpcodeProc *op) {
- setupSimon2VideoOpcodes(op);
+void AGOSEngine_Feeble::setupVideoOpcodes(VgaOpcodeProc *op) {
+ AGOSEngine_Simon2::setupVideoOpcodes(op);
op[75] = &AGOSEngine::vc75_setScale;
op[76] = &AGOSEngine::vc76_setScaleXOffs;
diff --git a/engines/agos/vga_s1.cpp b/engines/agos/vga_s1.cpp
index b878699038..9ddc3becf3 100644
--- a/engines/agos/vga_s1.cpp
+++ b/engines/agos/vga_s1.cpp
@@ -29,8 +29,8 @@
namespace AGOS {
-void AGOSEngine::setupSimon1VideoOpcodes(VgaOpcodeProc *op) {
- setupCommonVideoOpcodes(op);
+void AGOSEngine_Simon1::setupVideoOpcodes(VgaOpcodeProc *op) {
+ AGOSEngine::setupVideoOpcodes(op);
op[11] = &AGOSEngine::vc11_clearPathFinder;
op[17] = &AGOSEngine::vc17_setPathfinderItem;
diff --git a/engines/agos/vga_s2.cpp b/engines/agos/vga_s2.cpp
index d251604181..a273b26e51 100644
--- a/engines/agos/vga_s2.cpp
+++ b/engines/agos/vga_s2.cpp
@@ -28,8 +28,8 @@
namespace AGOS {
-void AGOSEngine::setupSimon2VideoOpcodes(VgaOpcodeProc *op) {
- setupSimon1VideoOpcodes(op);
+void AGOSEngine_Simon2::setupVideoOpcodes(VgaOpcodeProc *op) {
+ AGOSEngine_Simon1::setupVideoOpcodes(op);
op[56] = &AGOSEngine::vc56_delayLong;
op[58] = &AGOSEngine::vc58_changePriority;
diff --git a/engines/agos/vga_ww.cpp b/engines/agos/vga_ww.cpp
index 5209b91b46..f73476c5cb 100644
--- a/engines/agos/vga_ww.cpp
+++ b/engines/agos/vga_ww.cpp
@@ -31,8 +31,8 @@
namespace AGOS {
-void AGOSEngine::setupWaxworksVideoOpcodes(VgaOpcodeProc *op) {
- setupElvira2VideoOpcodes(op);
+void AGOSEngine_Waxworks::setupVideoOpcodes(VgaOpcodeProc *op) {
+ AGOSEngine_Elvira2::setupVideoOpcodes(op);
op[58] = &AGOSEngine::vc58_checkCodeWheel;
op[60] = &AGOSEngine::vc60_stopAnimation;