replaced constans with names

svn-id: r11312
This commit is contained in:
Paweł Kołodziejski 2003-11-16 18:34:33 +00:00
parent bef4496b7e
commit 501c77fc7a
2 changed files with 346 additions and 332 deletions

View file

@ -362,6 +362,10 @@ void ScummEngine_v2::setupOpcodes() {
#define SENTENCE_SCRIPT 2
#define PARAM_1 0x80
#define PARAM_2 0x40
#define PARAM_3 0x20
void ScummEngine_v2::executeOpcode(byte i) {
OpcodeProcV2 op = _opcodesV2[i].proc;
(this->*op) ();
@ -452,24 +456,24 @@ void ScummEngine_v2::getResultPos() {
}
void ScummEngine_v2::setStateCommon(byte type) {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
putState(obj, getState(obj) | type);
}
void ScummEngine_v2::clearStateCommon(byte type) {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
putState(obj, getState(obj) & ~type);
}
void ScummEngine_v2::o2_setState08() {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
putState(obj, getState(obj) | 0x08);
removeObjectFromRoom(obj);
clearDrawObjectQueue();
}
void ScummEngine_v2::o2_clearState08() {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
putState(obj, getState(obj) & ~0x08);
removeObjectFromRoom(obj);
clearDrawObjectQueue();
@ -501,7 +505,7 @@ void ScummEngine_v2::o2_clearState01() {
void ScummEngine_v2::o2_assignVarWordIndirect() {
getResultPosIndirect();
setResult(getVarOrDirectWord(0x80));
setResult(getVarOrDirectWord(PARAM_1));
}
void ScummEngine_v2::o2_assignVarByte() {
@ -510,7 +514,7 @@ void ScummEngine_v2::o2_assignVarByte() {
}
void ScummEngine_v2::o2_setObjPreposition() {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
int unk = fetchScriptByte();
if (whereIsObject(obj) != WIO_NOT_FOUND) {
@ -523,7 +527,7 @@ void ScummEngine_v2::o2_setObjPreposition() {
void ScummEngine_v2::o2_getObjPreposition() {
getResultPos();
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
if (whereIsObject(obj) != WIO_NOT_FOUND) {
byte *ptr = getOBCDFromObject(obj) + 12;
@ -535,13 +539,13 @@ void ScummEngine_v2::o2_getObjPreposition() {
void ScummEngine_v2::o2_setBitVar() {
int var = fetchScriptWord();
byte a = getVarOrDirectByte(0x80);
byte a = getVarOrDirectByte(PARAM_1);
int bit_var = var + a;
int bit_offset = bit_var & 0x0f;
bit_var >>= 4;
if (getVarOrDirectByte(0x40))
if (getVarOrDirectByte(PARAM_2))
_scummVars[bit_var] |= (1 << bit_offset);
else
_scummVars[bit_var] &= ~(1 << bit_offset);
@ -555,7 +559,7 @@ void ScummEngine_v2::o2_setBitVar() {
void ScummEngine_v2::o2_getBitVar() {
getResultPos();
int var = fetchScriptWord();
byte a = getVarOrDirectByte(0x80);
byte a = getVarOrDirectByte(PARAM_1);
int bit_var = var + a;
int bit_offset = bit_var & 0x0f;
@ -573,7 +577,7 @@ void ScummEngine_v2::o2_getBitVar() {
}
void ScummEngine_v2::ifStateCommon(byte type) {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
if ((getState(obj) & type) == 0)
o5_jumpRelative();
@ -582,7 +586,7 @@ void ScummEngine_v2::ifStateCommon(byte type) {
}
void ScummEngine_v2::ifNotStateCommon(byte type) {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
if ((getState(obj) & type) != 0)
o5_jumpRelative();
@ -625,33 +629,33 @@ void ScummEngine_v2::o2_ifNotState01() {
void ScummEngine_v2::o2_addIndirect() {
int a;
getResultPosIndirect();
a = getVarOrDirectWord(0x80);
a = getVarOrDirectWord(PARAM_1);
_scummVars[_resultVarNumber] += a;
}
void ScummEngine_v2::o2_subIndirect() {
int a;
getResultPosIndirect();
a = getVarOrDirectWord(0x80);
a = getVarOrDirectWord(PARAM_1);
_scummVars[_resultVarNumber] -= a;
}
void ScummEngine_v2::o2_add() {
int a;
getResultPos();
a = getVarOrDirectWord(0x80);
a = getVarOrDirectWord(PARAM_1);
_scummVars[_resultVarNumber] += a;
}
void ScummEngine_v2::o2_subtract() {
int a;
getResultPos();
a = getVarOrDirectWord(0x80);
a = getVarOrDirectWord(PARAM_1);
_scummVars[_resultVarNumber] -= a;
}
void ScummEngine_v2::o2_waitForActor() {
Actor *a = derefActor(getVarOrDirectByte(0x80), "o2_waitForActor");
Actor *a = derefActor(getVarOrDirectByte(PARAM_1), "o2_waitForActor");
if (a->moving) {
_scriptPointer -= 2;
o5_breakHere();
@ -675,8 +679,8 @@ void ScummEngine_v2::o2_waitForSentence() {
}
void ScummEngine_v2::o2_actorOps() {
int act = getVarOrDirectByte(0x80);
int arg = getVarOrDirectByte(0x40);
int act = getVarOrDirectByte(PARAM_1);
int arg = getVarOrDirectByte(PARAM_2);
Actor *a;
int i;
@ -729,9 +733,9 @@ void ScummEngine_v2::o2_drawObject() {
uint16 x, y, w, h;
int xpos, ypos;
obj = getVarOrDirectWord(0x80);
xpos = getVarOrDirectByte(0x40);
ypos = getVarOrDirectByte(0x20);
obj = getVarOrDirectWord(PARAM_1);
xpos = getVarOrDirectByte(PARAM_2);
ypos = getVarOrDirectByte(PARAM_3);
idx = getObjectIndex(obj);
if (idx == -1)
@ -762,15 +766,15 @@ void ScummEngine_v2::o2_drawObject() {
void ScummEngine_v2::o2_resourceRoutines() {
const ResTypes resTypes[] = {
rtNumTypes, // Invalid
rtNumTypes, // Invalid
rtCostume,
rtRoom,
rtNumTypes, // Invalid
rtScript,
rtSound
};
int resid = getVarOrDirectByte(0x80);
rtNumTypes, // Invalid
rtNumTypes, // Invalid
rtCostume,
rtRoom,
rtNumTypes, // Invalid
rtScript,
rtSound
};
int resid = getVarOrDirectByte(PARAM_1);
int opcode = fetchScriptByte();
ResTypes type = rtNumTypes;
@ -796,7 +800,7 @@ void ScummEngine_v2::o2_verbOps() {
switch (verb) {
case 0: // SO_DELETE_VERBS
slot = getVarOrDirectByte(0x80) + 1;
slot = getVarOrDirectByte(PARAM_1) + 1;
assert(0 < slot && slot < _maxVerbs);
//printf("o2_verbOps delete slot = %d\n", slot);
@ -817,7 +821,7 @@ void ScummEngine_v2::o2_verbOps() {
default: { // New Verb
int x = fetchScriptByte() << 3;
int y = fetchScriptByte() << 3;
slot = getVarOrDirectByte(0x80) + 1;
slot = getVarOrDirectByte(PARAM_1) + 1;
int prep = fetchScriptByte(); // Only used in V1?
// V1 Maniac verbs are relative to the 'verb area' - under the sentence
if ((_gameId == GID_MANIAC) && (_version == 1))
@ -882,7 +886,7 @@ void ScummEngine_v2::o2_doSentence() {
int a;
SentenceTab *st;
a = getVarOrDirectByte(0x80);
a = getVarOrDirectByte(PARAM_1);
if (a == 0xFC) {
_sentenceNum = 0;
stopScript(SENTENCE_SCRIPT);
@ -896,8 +900,8 @@ void ScummEngine_v2::o2_doSentence() {
st = &_sentence[_sentenceNum++];
st->verb = a;
st->objectA = getVarOrDirectWord(0x40);
st->objectB = getVarOrDirectWord(0x20);
st->objectA = getVarOrDirectWord(PARAM_2);
st->objectB = getVarOrDirectWord(PARAM_3);
st->preposition = (st->objectB != 0);
st->freezeCount = 0;
@ -1064,8 +1068,8 @@ void ScummEngine_v2::o2_drawSentence() {
}
void ScummEngine_v2::o2_ifClassOfIs() {
int obj = getVarOrDirectWord(0x80);
int clsop = getVarOrDirectByte(0x40);
int obj = getVarOrDirectWord(PARAM_1);
int clsop = getVarOrDirectByte(PARAM_2);
byte *obcd = getOBCDFromObject(obj);
if (obcd == 0) {
@ -1084,42 +1088,42 @@ void ScummEngine_v2::o2_ifClassOfIs() {
void ScummEngine_v2::o2_walkActorTo() {
int x, y;
Actor *a;
a = derefActor(getVarOrDirectByte(0x80), "o2_walkActorTo");
a = derefActor(getVarOrDirectByte(PARAM_1), "o2_walkActorTo");
x = getVarOrDirectByte(0x40) * 8;
y = getVarOrDirectByte(0x20) * 2;
x = getVarOrDirectByte(PARAM_2) * 8;
y = getVarOrDirectByte(PARAM_1) * 2;
a->startWalkActor(x, y, -1);
}
void ScummEngine_v2::o2_putActor() {
int act = getVarOrDirectByte(0x80);
int act = getVarOrDirectByte(PARAM_1);
int x, y;
Actor *a;
a = derefActor(act, "o2_putActor");
x = getVarOrDirectByte(0x40) * 8;
y = getVarOrDirectByte(0x20) * 2;
x = getVarOrDirectByte(PARAM_2) * 8;
y = getVarOrDirectByte(PARAM_1) * 2;
a->putActor(x, y, a->room);
}
void ScummEngine_v2::o2_startScript() {
int script = getVarOrDirectByte(0x80);
int script = getVarOrDirectByte(PARAM_1);
runScript(script, 0, 0, 0);
}
void ScummEngine_v2::o2_panCameraTo() {
panCameraTo(getVarOrDirectByte(0x80) * 8, 0);
panCameraTo(getVarOrDirectByte(PARAM_1) * 8, 0);
}
void ScummEngine_v2::o2_walkActorToObject() {
int obj;
Actor *a;
a = derefActor(getVarOrDirectByte(0x80), "o2_walkActorToObject");
obj = getVarOrDirectWord(0x40);
a = derefActor(getVarOrDirectByte(PARAM_1), "o2_walkActorToObject");
obj = getVarOrDirectWord(PARAM_2);
if (whereIsObject(obj) != WIO_NOT_FOUND) {
int x, y, dir;
getObjectXYPos(obj, x, y, dir);
@ -1131,9 +1135,9 @@ void ScummEngine_v2::o2_putActorAtObject() {
int obj, x, y;
Actor *a;
a = derefActor(getVarOrDirectByte(0x80), "o2_putActorAtObject");
a = derefActor(getVarOrDirectByte(PARAM_1), "o2_putActorAtObject");
obj = getVarOrDirectWord(0x40);
obj = getVarOrDirectWord(PARAM_2);
if (whereIsObject(obj) != WIO_NOT_FOUND)
getObjectXYPos(obj, x, y);
else {
@ -1146,22 +1150,22 @@ void ScummEngine_v2::o2_putActorAtObject() {
void ScummEngine_v2::o2_getActorElevation() {
getResultPos();
int act = getVarOrDirectByte(0x80);
int act = getVarOrDirectByte(PARAM_1);
Actor *a = derefActor(act, "o2_getActorElevation");
setResult(a->elevation / 2);
}
void ScummEngine_v2::o2_setActorElevation() {
int act = getVarOrDirectByte(0x80);
int elevation = (int8)getVarOrDirectByte(0x40);
int act = getVarOrDirectByte(PARAM_1);
int elevation = (int8)getVarOrDirectByte(PARAM_2);
Actor *a = derefActor(act, "o2_setActorElevation");
a->elevation = elevation * 2;
}
void ScummEngine_v2::o2_animateActor() {
int act = getVarOrDirectByte(0x80);
int anim = getVarOrDirectByte(0x40);
int act = getVarOrDirectByte(PARAM_1);
int anim = getVarOrDirectByte(PARAM_2);
Actor *a = derefActor(act, "o2_animateActor");
a->animateActor(anim);
@ -1170,15 +1174,15 @@ void ScummEngine_v2::o2_animateActor() {
void ScummEngine_v2::o2_actorFromPos() {
int x, y;
getResultPos();
x = getVarOrDirectByte(0x80) * 8;
y = getVarOrDirectByte(0x40) * 2;
x = getVarOrDirectByte(PARAM_1) * 8;
y = getVarOrDirectByte(PARAM_2) * 2;
setResult(getActorFromPos(x, y));
}
void ScummEngine_v2::o2_findObject() {
getResultPos();
int x = getVarOrDirectByte(0x80) * 8;
int y = getVarOrDirectByte(0x40) * 2;
int x = getVarOrDirectByte(PARAM_1) * 8;
int y = getVarOrDirectByte(PARAM_2) * 2;
setResult(findObject(x, y));
}
@ -1186,7 +1190,7 @@ void ScummEngine_v2::o2_getActorX() {
int a;
getResultPos();
a = getVarOrDirectByte(0x80);
a = getVarOrDirectByte(PARAM_1);
setResult(getObjX(a) / 8);
}
@ -1194,13 +1198,13 @@ void ScummEngine_v2::o2_getActorY() {
int a;
getResultPos();
a = getVarOrDirectByte(0x80);
a = getVarOrDirectByte(PARAM_1);
setResult(getObjY(a) / 2);
}
void ScummEngine_v2::o2_isGreater() {
uint16 a = getVar();
uint16 b = getVarOrDirectWord(0x80);
uint16 b = getVarOrDirectWord(PARAM_1);
if (b > a)
ignoreScriptWord();
else
@ -1209,7 +1213,7 @@ void ScummEngine_v2::o2_isGreater() {
void ScummEngine_v2::o2_isGreaterEqual() {
uint16 a = getVar();
uint16 b = getVarOrDirectWord(0x80);
uint16 b = getVarOrDirectWord(PARAM_1);
if (b >= a)
ignoreScriptWord();
else
@ -1218,7 +1222,7 @@ void ScummEngine_v2::o2_isGreaterEqual() {
void ScummEngine_v2::o2_isLess() {
uint16 a = getVar();
uint16 b = getVarOrDirectWord(0x80);
uint16 b = getVarOrDirectWord(PARAM_1);
if (b < a)
ignoreScriptWord();
@ -1228,7 +1232,7 @@ void ScummEngine_v2::o2_isLess() {
void ScummEngine_v2::o2_isLessEqual() {
uint16 a = getVar();
uint16 b = getVarOrDirectWord(0x80);
uint16 b = getVarOrDirectWord(PARAM_1);
if (b <= a)
ignoreScriptWord();
else
@ -1238,7 +1242,7 @@ void ScummEngine_v2::o2_isLessEqual() {
void ScummEngine_v2::o2_lights() {
int a, b, c;
a = getVarOrDirectByte(0x80);
a = getVarOrDirectByte(PARAM_1);
b = fetchScriptByte();
c = fetchScriptByte();
@ -1268,8 +1272,8 @@ void ScummEngine_v2::o2_loadRoomWithEgo() {
Actor *a;
int obj, room, x, y, x2, y2, dir;
obj = getVarOrDirectWord(0x80);
room = getVarOrDirectByte(0x40);
obj = getVarOrDirectWord(PARAM_1);
room = getVarOrDirectByte(PARAM_2);
a = derefActor(VAR(VAR_EGO), "o2_loadRoomWithEgo");
@ -1302,8 +1306,8 @@ void ScummEngine_v2::o2_loadRoomWithEgo() {
void ScummEngine_v2::o2_setOwnerOf() {
int obj, owner;
obj = getVarOrDirectWord(0x80);
owner = getVarOrDirectByte(0x40);
obj = getVarOrDirectWord(PARAM_1);
owner = getVarOrDirectByte(PARAM_2);
setOwnerOf(obj, owner);
}
@ -1322,18 +1326,18 @@ void ScummEngine_v2::o2_delay() {
void ScummEngine_v2::o2_setBoxFlags() {
int a, b;
a = getVarOrDirectByte(0x80);
a = getVarOrDirectByte(PARAM_1);
b = fetchScriptByte();
setBoxFlags(a, b);
}
void ScummEngine_v2::o2_setCameraAt() {
setCameraAtEx(getVarOrDirectByte(0x80) * 8);
setCameraAtEx(getVarOrDirectByte(PARAM_1) * 8);
}
void ScummEngine_v2::o2_roomOps() {
int a = getVarOrDirectByte(0x80);
int b = getVarOrDirectByte(0x40);
int a = getVarOrDirectByte(PARAM_1);
int b = getVarOrDirectByte(PARAM_2);
_opcode = fetchScriptByte();
switch (_opcode & 0x1F) {
@ -1432,7 +1436,7 @@ void ScummEngine_v2::o2_chainScript() {
}
void ScummEngine_v2::o2_pickupObject() {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
if (obj < 1) {
error("pickupObject received invalid index %d (script %d)", obj, vm.slot[_currentScript].number);
@ -1454,7 +1458,7 @@ void ScummEngine_v2::o2_pickupObject() {
}
void ScummEngine_v2::o2_setObjectName() {
int obj = getVarOrDirectWord(0x80);
int obj = getVarOrDirectWord(PARAM_1);
int size = 0;
int a;
int i = 0;
@ -1502,7 +1506,7 @@ void ScummEngine_v2::o2_setObjectName() {
}
void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
uint16 cmd = getVarOrDirectWord(0x80);
uint16 cmd = getVarOrDirectWord(PARAM_1);
byte state = cmd >> 8;
if (cmd & 0xFF) {
@ -1537,7 +1541,7 @@ void ScummEngine_v2::setUserState(byte state) {
// Hide all verbs and inventory
Common::Rect rect;
rect.top = virtscr[2].topline;
rect.bottom = virtscr[2].topline + 8*88;
rect.bottom = virtscr[2].topline + 8 * 88;
rect.left = 0;
rect.right = 319;
restoreBG(rect);
@ -1550,7 +1554,7 @@ void ScummEngine_v2::setUserState(byte state) {
void ScummEngine_v2::o2_getActorWalkBox() {
Actor *a;
getResultPos();
a = derefActor(getVarOrDirectByte(0x80), "o2_getActorWalkbox");
a = derefActor(getVarOrDirectByte(PARAM_1), "o2_getActorWalkbox");
setResult(a->walkbox);
}
@ -1577,4 +1581,8 @@ void ScummEngine_v2::resetSentence() {
VAR(VAR_SENTENCE_PREPOSITION) = 0;
}
#undef PARAM_1
#undef PARAM_2
#undef PARAM_3
} // End of namespace Scumm