TEENAGENT: Symbolise most of remaining addresses in TeenAgent engine.

Also, change address 0 usage to 0x0000 for readability.
This commit is contained in:
D G Turner 2012-07-28 09:05:16 +01:00
parent b0b99cead0
commit 7032dd5a1d
3 changed files with 30 additions and 21 deletions

View File

@ -124,7 +124,7 @@ void TeenAgentEngine::fnPoleClimbFail() {
}
void TeenAgentEngine::fnGotAnchor() {
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
setTimerCallback(0, 0);
scene->getActorAnimation()->free();
playSound(64, 7);
@ -148,7 +148,7 @@ void TeenAgentEngine::fnGetOutOfLake() {
}
void TeenAgentEngine::fnGuardDrinking() {
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
setTimerCallback(0, 0);
scene->getAnimation(0)->free();
SET_FLAG(0xdb9c, 1);
@ -225,7 +225,7 @@ void TeenAgentEngine::fnPutRockInHole() {
playActorAnimation(638);
inventory->remove(48);
setTimerCallback(0x8d79, 100);
SET_FLAG(0, 1);
SET_FLAG(0x0000, 1);
} else if (CHECK_FLAG(0, 1)) {
playSound(5, 2);
playSound(52, 13);
@ -233,7 +233,7 @@ void TeenAgentEngine::fnPutRockInHole() {
setOns(1, 46);
inventory->remove(49);
setTimerCallback(0x8d79, 100);
SET_FLAG(0, 2);
SET_FLAG(0x0000, 2);
} else if (CHECK_FLAG(0, 2)) {
playActorAnimation(649);
setOns(1, 47);
@ -245,7 +245,7 @@ void TeenAgentEngine::fnPutRockInHole() {
enableObject(6);
disableObject(5);
SET_FLAG(0xdbab, 1);
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
setTimerCallback(0, 0);
}
}
@ -1144,14 +1144,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
loadScene(11, 319, 198, 4);
if (!CHECK_FLAG(0xdb9c, 1)) {
// guard is drinking
SET_FLAG(0, 3);
SET_FLAG(0x0000, 3);
setTimerCallback(0x516d, 40);
playAnimation(544, 0, true, true); // ignore busy flag for this animation
}
break;
case 0x516d: // too late to scare guard, resetting
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
break;
case csAddr_guardDrinking:
@ -3140,7 +3140,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
enableObject(4, 27);
SET_FLAG(0xdba9, 0);
}
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
break;
case csAddr_putRockInHole:
@ -4133,7 +4133,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playSound(20, 26);
playActorAnimation(615);
loadScene(17, 156, 180, 3);
SET_FLAG(0, 4);
SET_FLAG(0x0000, 4);
playSound(64, 7);
playSound(64, 21);
playSound(64, 42);
@ -4145,7 +4145,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
break;
case 0x9a1d: // no anchor, timeout
SET_FLAG(0, 0);
SET_FLAG(0x0000, 0);
fnGetOutOfLake();
INC_FLAG(0xdba6);
switch (GET_FLAG(0xdba6)) {

View File

@ -663,9 +663,18 @@ const uint16 dsAddr_currentScene = 0xb4f3; // 1 byte
// Ons Animation Table (2 byte address * ??) : 0xb4f5 to 0x????
const uint16 dsAddr_onsAnimationTablePtr = 0xb4f5;
// Examine Object Callback Table (2 byte LE address * ??) : 0xb5ce to 0x????
const uint16 dsAddr_objExamineCallbackTablePtr = 0xb5ce;
// Use Object Callback Table (2 byte LE address * ??) : 0xb89c to 0x????
const uint16 dsAddr_objUseCallbackTablePtr = 0xb89c;
// Inventory Object Callback Table (3 byte (id, callbackAddr) * 7) : 0xbb72 to 0xbb86
const uint16 dsAddr_objCallbackTablePtr = 0xbb72;
// Scene Hotspots Table (2 byte LE address * ??) : 0xbb87 to 0x????
const uint16 dsAddr_sceneHotspotsPtr = 0xbb87;
// Inventory Object Combining Table (5 byte (id, id, new object id, msgAddr) * 34) : 0xc335 to 0xc3de
const uint16 dsAddr_objCombiningTablePtr = 0xc335;
// 3 byte null terminator for Combining table 0xc3df to 0xc3e1

View File

@ -100,8 +100,8 @@ bool TeenAgentEngine::trySelectedObject() {
debugC(0, kDebugObject, "checking active object %u on %u", inv->id, _dstObject->id);
//mouse time challenge hack:
if ((res->dseg.get_byte(0) == 1 && inv->id == 49 && _dstObject->id == 5) ||
(res->dseg.get_byte(0) == 2 && inv->id == 29 && _dstObject->id == 5)) {
if ((res->dseg.get_byte(0x0000) == 1 && inv->id == 49 && _dstObject->id == 5) ||
(res->dseg.get_byte(0x0000) == 2 && inv->id == 29 && _dstObject->id == 5)) {
//putting rock into hole or superglue on rock
fnPutRockInHole();
return true;
@ -137,7 +137,7 @@ void TeenAgentEngine::processObject() {
if (trySelectedObject())
break;
byte *dcall = res->dseg.ptr(0xb5ce);
byte *dcall = res->dseg.ptr(dsAddr_objExamineCallbackTablePtr);
dcall = res->dseg.ptr(READ_LE_UINT16(dcall + scene->getId() * 2 - 2));
dcall += 2 * _dstObject->id - 2;
uint16 callback = READ_LE_UINT16(dcall);
@ -149,7 +149,7 @@ void TeenAgentEngine::processObject() {
if (trySelectedObject())
break;
byte *dcall = res->dseg.ptr(0xb89c);
byte *dcall = res->dseg.ptr(dsAddr_objUseCallbackTablePtr);
dcall = res->dseg.ptr(READ_LE_UINT16(dcall + scene->getId() * 2 - 2));
dcall += 2 * _dstObject->id - 2;
uint16 callback = READ_LE_UINT16(dcall);
@ -203,14 +203,14 @@ void TeenAgentEngine::init() {
_gameDelay = 110;
_useHotspots.resize(42);
byte *scene_hotspots = res->dseg.ptr(0xbb87);
byte *sceneHotspots = res->dseg.ptr(dsAddr_sceneHotspotsPtr);
for (byte i = 0; i < 42; ++i) {
Common::Array<UseHotspot> & hotspots = _useHotspots[i];
byte *hotspots_ptr = res->dseg.ptr(READ_LE_UINT16(scene_hotspots + i * 2));
while (*hotspots_ptr) {
byte *hotspotsPtr = res->dseg.ptr(READ_LE_UINT16(sceneHotspots + i * 2));
while (*hotspotsPtr) {
UseHotspot h;
h.load(hotspots_ptr);
hotspots_ptr += 9;
h.load(hotspotsPtr);
hotspotsPtr += 9;
hotspots.push_back(h);
}
}
@ -609,11 +609,11 @@ Common::Error TeenAgentEngine::run() {
if (current_object == NULL)
break;
if (res->dseg.get_byte(0) == 3 && current_object->id == 1) {
if (res->dseg.get_byte(0x0000) == 3 && current_object->id == 1) {
fnGuardDrinking();
break;
}
if (res->dseg.get_byte(0) == 4 && current_object->id == 5) {
if (res->dseg.get_byte(0x0000) == 4 && current_object->id == 5) {
fnGotAnchor();
break;
}