aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorD G Turner2012-07-28 05:45:24 +0100
committerD G Turner2012-07-28 05:45:24 +0100
commitd038a796b38d78d055e3d65bdf00af8a154d13aa (patch)
tree686060152f7cd15f4cf34172c5dd18185500ec68
parentde59b3c25a3f9a32d93b87664179c40ca998ae49 (diff)
downloadscummvm-rg350-d038a796b38d78d055e3d65bdf00af8a154d13aa.tar.gz
scummvm-rg350-d038a796b38d78d055e3d65bdf00af8a154d13aa.tar.bz2
scummvm-rg350-d038a796b38d78d055e3d65bdf00af8a154d13aa.zip
TEENAGENT: Add symbols for data tables used in Scene class.
-rw-r--r--engines/teenagent/resources.h28
-rw-r--r--engines/teenagent/scene.cpp28
2 files changed, 42 insertions, 14 deletions
diff --git a/engines/teenagent/resources.h b/engines/teenagent/resources.h
index 6e1407cdb5..c3561fcd79 100644
--- a/engines/teenagent/resources.h
+++ b/engines/teenagent/resources.h
@@ -642,9 +642,27 @@ const uint16 dsAddr_egoY = 0x64b1; // 2 bytes
// Idle Animation List Table : 0x6540 to 0x????
const uint16 dsAddr_idleAnimationListPtr = 0x6540;
+// Palette Effect Data : 0x6609 to 0x????
+const uint16 dsAddr_paletteEffectData = 0x6609;
+
+// Scene Fade Table (2 byte address * 42): 0x663e to 0x6691
+const uint16 dsAddr_sceneFadeTablePtr = 0x663e;
+
+// Scene Walkbox Table (2 byte LE address * 42) : 0x6746 to 0x6799
+const uint16 dsAddr_sceneWalkboxTablePtr = 0x6746;
+
+// Scene Zoom Table (2 byte address * 42) : 0x70f4 to 0x7147
+const uint16 dsAddr_sceneZoomTablePtr = 0x70f4;
+
+// Scene Object Table (2 byte address * 42) : 0x7254 to 0x72a7
+const uint16 dsAddr_sceneObjectTablePtr = 0x7254;
+
// Current Scene Id : 0xb4f3
const uint16 dsAddr_currentScene = 0xb4f3; // 1 byte
+// Ons Animation Table (2 byte address * ??) : 0xb4f5 to 0x????
+const uint16 dsAddr_onsAnimationTablePtr = 0xb4f5;
+
// Inventory Object Callback Table (3 byte (id, callbackAddr) * 7) : 0xbb72 to 0xbb86
const uint16 dsAddr_objCallbackTablePtr = 0xbb72;
@@ -661,8 +679,18 @@ const uint16 dsAddr_inventory = 0xc48d;
// Inventory item data address table (2 bytes * 92) : 0xc4a6 to 0xc55d
const uint16 dsAddr_inventoryItemDataPtrTable = 0xc4a6;
+// Lans Animation Table (4 byte * ??) : 0xd89e to 0x????
+const uint16 dsAddr_lansAnimationTablePtr = 0xd89e;
+
// Current Music Id Playing : 0xdb90
const uint16 dsAddr_currentMusic = 0xdb90; // 1 byte
+
+// Light On Flag : 0xdba4
+const uint16 dsAddr_lightOnFlag = 0xdba4; // 1 byte
+
+// Captain Drawer State : 0xdbe6
+const uint16 dsAddr_captainDrawerState = 0xdbe6; // 1 byte
+
// Counter for Mansion Intrusion Attempts : 0xdbea
const uint16 dsAddr_mansionEntryCount = 0xdbea;// 1 byte
diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp
index 6bcc606df5..94b0b8abb1 100644
--- a/engines/teenagent/scene.cpp
+++ b/engines/teenagent/scene.cpp
@@ -246,7 +246,7 @@ void Scene::loadObjectData() {
Common::Array<Object> &scene_objects = objects[i];
scene_objects.clear();
- uint16 scene_table = _vm->res->dseg.get_word(0x7254 + i * 2);
+ uint16 scene_table = _vm->res->dseg.get_word(dsAddr_sceneObjectTablePtr + (i * 2));
uint16 object_addr;
while ((object_addr = _vm->res->dseg.get_word(scene_table)) != 0) {
Object obj;
@@ -257,7 +257,7 @@ void Scene::loadObjectData() {
}
debugC(0, kDebugScene, "scene[%u] has %u object(s)", i + 1, scene_objects.size());
- byte *walkboxes_base = _vm->res->dseg.ptr(READ_LE_UINT16(_vm->res->dseg.ptr(0x6746 + i * 2)));
+ byte *walkboxes_base = _vm->res->dseg.ptr(READ_LE_UINT16(_vm->res->dseg.ptr(dsAddr_sceneWalkboxTablePtr + i * 2)));
byte walkboxes_n = *walkboxes_base++;
debugC(0, kDebugScene, "scene[%u] has %u walkboxes", i + 1, walkboxes_n);
@@ -275,7 +275,7 @@ void Scene::loadObjectData() {
scene_walkboxes.push_back(w);
}
- byte *fade_table = _vm->res->dseg.ptr(_vm->res->dseg.get_word(0x663e + i * 2));
+ byte *fade_table = _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_sceneFadeTablePtr + i * 2));
Common::Array<FadeType> &scene_fades = fades[i];
while (READ_LE_UINT16(fade_table) != 0xffff) {
FadeType fade;
@@ -302,17 +302,17 @@ Object *Scene::findObject(const Common::Point &point) {
}
byte *Scene::getOns(int id) {
- return _vm->res->dseg.ptr(_vm->res->dseg.get_word(0xb4f5 + (id - 1) * 2));
+ return _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_onsAnimationTablePtr + (id - 1) * 2));
}
byte *Scene::getLans(int id) {
- return _vm->res->dseg.ptr(0xd89e + (id - 1) * 4);
+ return _vm->res->dseg.ptr(dsAddr_lansAnimationTablePtr + (id - 1) * 4);
}
void Scene::loadOns() {
debugC(0, kDebugScene, "loading ons animation");
- uint16 addr = _vm->res->dseg.get_word(0xb4f5 + (_id - 1) * 2);
+ uint16 addr = _vm->res->dseg.get_word(dsAddr_onsAnimationTablePtr + (_id - 1) * 2);
debugC(0, kDebugScene, "ons index: %04x", addr);
ons_count = 0;
@@ -348,7 +348,7 @@ void Scene::loadLans() {
for (byte i = 0; i < 4; ++i) {
animation[i].free();
- uint16 bx = 0xd89e + (_id - 1) * 4 + i;
+ uint16 bx = dsAddr_lansAnimationTablePtr + (_id - 1) * 4 + i;
byte bxv = _vm->res->dseg.get_byte(bx);
uint16 res_id = 4 * (_id - 1) + i + 1;
debugC(0, kDebugScene, "lan[%u]@%04x = %02x, resource id: %u", i, bx, bxv, res_id);
@@ -379,8 +379,8 @@ void Scene::init(int id, const Common::Point &pos) {
_vm->res->loadOff(background, palette, id);
if (id == 24) {
- // ark scene
- if (_vm->res->dseg.get_byte(0xdba4) != 1) {
+ // dark scene
+ if (_vm->res->dseg.get_byte(dsAddr_lightOnFlag) != 1) {
// dim down palette
uint i;
for (i = 0; i < 624; ++i) {
@@ -395,7 +395,7 @@ void Scene::init(int id, const Common::Point &pos) {
Common::ScopedPtr<Common::SeekableReadStream> stream(_vm->res->on.getStream(id));
int sub_hack = 0;
if (id == 7) { // something patched in the captains room
- switch (_vm->res->dseg.get_byte(0xdbe6)) {
+ switch (_vm->res->dseg.get_byte(dsAddr_captainDrawerState)) {
case 2:
break;
case 1:
@@ -550,7 +550,7 @@ struct ZOrderCmp {
int Scene::lookupZoom(uint y) const {
debugC(2, kDebugScene, "lookupZoom(%d)", y);
- for (byte *zoom_table = _vm->res->dseg.ptr(_vm->res->dseg.get_word(0x70f4 + (_id - 1) * 2));
+ for (byte *zoom_table = _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_sceneZoomTablePtr + (_id - 1) * 2));
zoom_table[0] != 0xff && zoom_table[1] != 0xff;
zoom_table += 2) {
debugC(2, kDebugScene, "\t%d %d->%d", y, zoom_table[0], zoom_table[1]);
@@ -562,9 +562,9 @@ int Scene::lookupZoom(uint y) const {
}
void Scene::paletteEffect(byte step) {
- byte *src = _vm->res->dseg.ptr(0x6609);
- byte *dst = palette + 3 * 0xf2;
- for (byte i = 0; i < 0xd; ++i) {
+ byte *src = _vm->res->dseg.ptr(dsAddr_paletteEffectData);
+ byte *dst = palette + (3 * 242);
+ for (byte i = 0; i < 13; ++i) {
for (byte c = 0; c < 3; ++c, ++src)
*dst++ = *src > step ? *src - step : 0;
}