aboutsummaryrefslogtreecommitdiff
path: root/engines/agos
diff options
context:
space:
mode:
authorTravis Howell2006-10-16 09:44:47 +0000
committerTravis Howell2006-10-16 09:44:47 +0000
commita965e8140c166940f691b85d62c69272a6efefe2 (patch)
treeedd30dc4dcedea8371a34de7ba1fe3bf0014d7c8 /engines/agos
parent45400860f0d7cc54a6dd36e533f74951dc617a77 (diff)
downloadscummvm-rg350-a965e8140c166940f691b85d62c69272a6efefe2.tar.gz
scummvm-rg350-a965e8140c166940f691b85d62c69272a6efefe2.tar.bz2
scummvm-rg350-a965e8140c166940f691b85d62c69272a6efefe2.zip
Add more opcode differences for WW
svn-id: r24348
Diffstat (limited to 'engines/agos')
-rw-r--r--engines/agos/agos.cpp4
-rw-r--r--engines/agos/agos.h4
-rw-r--r--engines/agos/debug.h8
-rw-r--r--engines/agos/script.cpp24
4 files changed, 22 insertions, 18 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp
index 46ff3e21cd..855eed5af2 100644
--- a/engines/agos/agos.cpp
+++ b/engines/agos/agos.cpp
@@ -1984,7 +1984,7 @@ Item *AGOSEngine::findInByClass(Item *i, int16 m) {
return NULL;
}
-Item *AGOSEngine::findMaster(int16 pe, int16 a, int16 n) {
+Item *AGOSEngine::findMaster(int16 a, int16 n) {
uint j;
for (j = 1; j < _itemArraySize; j++) {
@@ -1996,7 +1996,7 @@ Item *AGOSEngine::findMaster(int16 pe, int16 a, int16 n) {
return NULL;
}
-Item *AGOSEngine::nextMaster(int16 pe, Item *i, int16 a, int16 n) {
+Item *AGOSEngine::nextMaster(Item *i, int16 a, int16 n) {
uint j;
uint first = itemPtrToID(i) + 1;
diff --git a/engines/agos/agos.h b/engines/agos/agos.h
index ca35d71e26..7433324465 100644
--- a/engines/agos/agos.h
+++ b/engines/agos/agos.h
@@ -1046,8 +1046,8 @@ public:
void o_unfreezeZones();
Item *findInByClass(Item *i, int16 m);
- Item *findMaster(int16 pe, int16 a, int16 n);
- Item *nextMaster(int16 pe, Item *item, int16 a, int16 n);
+ Item *findMaster(int16 a, int16 n);
+ Item *nextMaster(Item *item, int16 a, int16 n);
int16 levelOf(Item *item);
int wordMatch(Item *item, int16 a, int16 n);
diff --git a/engines/agos/debug.h b/engines/agos/debug.h
index ae54b57771..d98d507afd 100644
--- a/engines/agos/debug.h
+++ b/engines/agos/debug.h
@@ -503,8 +503,8 @@ static const char *const elvira2_opcodeNameTable[256] = {
/* 92 */
"IB|GET_CHILDREN",
NULL,
- NULL,
- NULL,
+ "BB|FIND_MASTER",
+ "IBB|NEXT_MASTER",
/* 96 */
"WB|PICTURE",
"W|LOAD_ZONE",
@@ -736,8 +736,8 @@ static const char *const waxworks_opcodeNameTable[256] = {
/* 92 */
"IB|GET_CHILDREN",
NULL,
- NULL,
- NULL,
+ "BB|FIND_MASTER",
+ "IBB|NEXT_MASTER",
/* 96 */
"WB|PICTURE",
"W|LOAD_ZONE",
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index b7c05cd0e5..361bca01e9 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -360,6 +360,8 @@ void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
op[75] = &AGOSEngine::oe1_pcName;
op[83] = &AGOSEngine::o1_rescan;
op[89] = &AGOSEngine::oe2_loadUserGame;
+ op[94] = &AGOSEngine::oe1_findMaster;
+ op[95] = &AGOSEngine::oe1_nextMaster;
op[98] = &AGOSEngine::o1_animate;
op[99] = &AGOSEngine::o1_stopAnimate;
op[123] = &AGOSEngine::oe1_setTime;
@@ -424,6 +426,8 @@ void AGOSEngine::setupWaxworksOpcodes(OpcodeProc *op) {
op[83] = &AGOSEngine::o1_rescan;
op[85] = &AGOSEngine::oww_whereTo;
op[89] = &AGOSEngine::oe2_loadUserGame;
+ op[94] = &AGOSEngine::oe1_findMaster;
+ op[95] = &AGOSEngine::oe1_nextMaster;
op[98] = &AGOSEngine::o1_animate;
op[99] = &AGOSEngine::o1_stopAnimate;
op[105] = &AGOSEngine::oww_menu;
@@ -1884,9 +1888,9 @@ void AGOSEngine::oe1_whatO() {
int a = getVarOrWord();
if (a == 1)
- _subjectItem = findMaster(levelOf(me()), _scriptAdj1,_scriptNoun1);
+ _subjectItem = findMaster(_scriptAdj1,_scriptNoun1);
else
- _objectItem = findMaster(levelOf(me()), _scriptAdj2, _scriptNoun2);
+ _objectItem = findMaster(_scriptAdj2, _scriptNoun2);
}
void AGOSEngine::oe1_weigh() {
@@ -2047,32 +2051,32 @@ void AGOSEngine::oe1_clearUserItem() {
void AGOSEngine::oe1_findMaster() {
// 219: find master
int16 ad, no;
- int16 d = getVarOrWord();
+ int16 d = getVarOrByte();
ad = (d == 1) ? _scriptAdj1 : _scriptAdj2;
no = (d == 1) ? _scriptNoun1 : _scriptNoun2;
- d = getVarOrWord();
+ d = getVarOrByte();
if (d == 1)
- _subjectItem = findMaster(levelOf(me()), ad, no);
+ _subjectItem = findMaster(ad, no);
else
- _objectItem = findMaster(levelOf(me()), ad, no);
+ _objectItem = findMaster(ad, no);
}
void AGOSEngine::oe1_nextMaster() {
// 220: next master
int16 ad, no;
Item *item = getNextItemPtr();
- int16 d = getVarOrWord();
+ int16 d = getVarOrByte();
ad = (d == 1) ? _scriptAdj1 : _scriptAdj2;
no = (d == 1) ? _scriptNoun1 : _scriptNoun2;
- d = getVarOrWord();
+ d = getVarOrByte();
if (d == 1)
- _subjectItem = nextMaster(levelOf(me()), item, ad, no);
+ _subjectItem = nextMaster(item, ad, no);
else
- _objectItem = nextMaster(levelOf(me()), item, ad, no);
+ _objectItem = nextMaster(item, ad, no);
}
void AGOSEngine::oe1_menu() {