aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/igor/detection.cpp33
-rw-r--r--engines/igor/igor.cpp31
-rw-r--r--engines/igor/igor.h6
-rw-r--r--engines/igor/staticres.cpp6
-rw-r--r--tools/create_igortbl/create_igortbl.c131
-rw-r--r--tools/create_igortbl/resource_en_demo100.h (renamed from engines/igor/resource_tbl.h)0
-rw-r--r--tools/create_igortbl/resource_en_demo110.h333
7 files changed, 523 insertions, 17 deletions
diff --git a/engines/igor/detection.cpp b/engines/igor/detection.cpp
index 05f5f9a3f9..7d73c53f74 100644
--- a/engines/igor/detection.cpp
+++ b/engines/igor/detection.cpp
@@ -31,12 +31,22 @@
#include "igor/igor.h"
-static const PlainGameDescriptor igorGameDescriptor = {
- "igor", "Igor: Objective Uikokahonia"
+struct GameDetectVersion {
+ uint32 borlandOverlaySize;
+ const char *versionString;
+};
+
+static const GameDetectVersion igorDetectVersionsTable[] = {
+ { 4086790, " 1.00s" },
+ { 4094103, " 1.10s" },
+ { 0, 0 }
};
static const char *igorDetectFileName = "IGOR.DAT";
-static uint32 igorDetectFileSize = 4086790;
+
+static const PlainGameDescriptor igorGameDescriptor = {
+ "igor", "Igor: Objective Uikokahonia"
+};
GameList Engine_IGOR_gameIDList() {
GameList games;
@@ -63,11 +73,18 @@ GameList Engine_IGOR_detectGames(const FSList &fslist) {
continue;
}
const uint32 sig = f.readUint32BE();
- if (sig == MKID_BE('FBOV') && f.size() == igorDetectFileSize) {
- GameDescriptor gd(igorGameDescriptor.gameid, igorGameDescriptor.description, Common::EN_ANY, Common::kPlatformPC);
- gd.updateDesc("Demo");
- detectedGames.push_back(gd);
- break;
+ if (sig == MKID_BE('FBOV')) {
+ const uint32 fileSize = f.size();
+ for (int i = 0; igorDetectVersionsTable[i].borlandOverlaySize; ++i) {
+ if (igorDetectVersionsTable[i].borlandOverlaySize != fileSize) {
+ continue;
+ }
+ GameDescriptor gd(igorGameDescriptor.gameid, igorGameDescriptor.description, Common::EN_ANY, Common::kPlatformPC);
+ gd.description() += igorDetectVersionsTable[i].versionString;
+ gd.updateDesc("Demo");
+ detectedGames.push_back(gd);
+ break;
+ }
}
}
}
diff --git a/engines/igor/igor.cpp b/engines/igor/igor.cpp
index 68e6eb2002..580f8f6bd8 100644
--- a/engines/igor/igor.cpp
+++ b/engines/igor/igor.cpp
@@ -160,6 +160,7 @@ int IgorEngine::go() {
if (!_sndFile.open("IGOR.FSD")) {
error("Unable to open 'IGOR.FSD'");
}
+ readResourceEntriesTable();
loadMainTexts();
loadIgorFrames();
_gameState.talkMode = kTalkModeTextOnly;
@@ -169,9 +170,39 @@ int IgorEngine::go() {
PART_MAIN();
_ovlFile.close();
_sndFile.close();
+ delete[] _resourceEntriesTable;
return 0;
}
+void IgorEngine::readResourceEntriesTable() {
+ Common::File f;
+ if (f.open("IGOR.TBL") && f.readUint32BE() == MKID_BE('ITBL') && f.readUint32BE() == 1) {
+ bool foundVersion = false;
+ uint32 borlandOverlaySize = _ovlFile.size();
+ int gameVersionsCount = f.readByte();
+ for (int i = 0; i < gameVersionsCount; ++i) {
+ uint32 size = f.readUint32BE();
+ uint32 offs = f.readUint32BE();
+ if (size == borlandOverlaySize) {
+ f.seek(offs);
+ foundVersion = true;
+ break;
+ }
+ }
+ assert(foundVersion);
+ _resourceEntriesCount = f.readUint16BE();
+ _resourceEntriesTable = new ResourceEntry[_resourceEntriesCount];
+ for (int i = 0; i < _resourceEntriesCount; ++i) {
+ ResourceEntry *re = &_resourceEntriesTable[i];
+ re->id = f.readUint16BE();
+ re->offs = f.readUint32BE();
+ re->size = f.readUint32BE();
+ }
+ } else {
+ error("Unable to open 'IGOR.TBL'");
+ }
+}
+
void IgorEngine::waitForTimer(int ticks) {
_system->copyRectToScreen(_screenVGA, 320, 0, _screenVGAVOffset, 320, 200 - _screenVGAVOffset);
_system->updateScreen();
diff --git a/engines/igor/igor.h b/engines/igor/igor.h
index 06ae4856a8..af2dd1c7c7 100644
--- a/engines/igor/igor.h
+++ b/engines/igor/igor.h
@@ -273,6 +273,7 @@ public:
virtual int init();
virtual int go();
+ void readResourceEntriesTable();
void restart();
void waitForTimer(int ticks = -1);
@@ -460,8 +461,9 @@ protected:
UpdateDialogueProc _updateDialogue;
UpdateRoomBackgroundProc _updateRoomBackground;
int _gameTicks;
-
char _saveStateDescriptions[10][100];
+ ResourceEntry *_resourceEntriesTable;
+ int _resourceEntriesCount;
static const uint8 _dialogueColor[];
static const uint8 _sentenceColorIndex[];
@@ -478,8 +480,6 @@ protected:
static const uint8 _mouseCursorMask[];
static const uint8 _mouseCursorData[];
static const uint32 _fdsOffsetsTable[];
- static const ResourceEntry _resourceEntriesTable[];
- static const int _resourceEntriesCount;
//
diff --git a/engines/igor/staticres.cpp b/engines/igor/staticres.cpp
index aeb0cfb88f..31761ebccf 100644
--- a/engines/igor/staticres.cpp
+++ b/engines/igor/staticres.cpp
@@ -915,12 +915,6 @@ const uint32 IgorEngine::_fdsOffsetsTable[] = {
0x06202C, 0x06202D, 0x06202E, 0x06202F, 0x062030, 0x062031, 0x070CB2
};
-const ResourceEntry IgorEngine::_resourceEntriesTable[] = {
-#include "resource_tbl.h"
-};
-
-const int IgorEngine::_resourceEntriesCount = ARRAYSIZE(_resourceEntriesTable);
-
const uint8 IgorEngine::PAL_48_1[] = {
0x2D, 0x16, 0x00, 0x3D, 0x26, 0x01, 0x32, 0x32, 0x24, 0x16, 0x1D, 0x16, 0x12, 0x19, 0x12, 0x0B,
0x12, 0x0B, 0x32, 0x32, 0x24, 0x16, 0x1D, 0x16, 0x12, 0x19, 0x12, 0x0B, 0x12, 0x0B, 0x3D, 0x3D,
diff --git a/tools/create_igortbl/create_igortbl.c b/tools/create_igortbl/create_igortbl.c
new file mode 100644
index 0000000000..41bcaa5661
--- /dev/null
+++ b/tools/create_igortbl/create_igortbl.c
@@ -0,0 +1,131 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "../../engines/igor/resource_ids.h"
+
+/*
+ uint32 : 'ITBL'
+ uint32 : version/tag
+ uint8 : number of game versions
+ repeat (number of game versions) {
+ uint32 : borland overlay size
+ uint32 : offset to resource table
+ }
+ repeat (number of game versions) {
+ repeat (number of resources tables) {
+ uint16 : number of entries
+ repeat (number of entries) {
+ uint16 : id
+ uint32 : offset
+ uint32 : length
+ }
+ }
+ }
+*/
+
+#define MAX_VERSIONS 2
+
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+typedef unsigned int uint32;
+
+struct ResourceEntry {
+ int id;
+ uint32 offs;
+ uint32 size;
+};
+
+static const int _sizeOfResourceEntry = 10;
+
+static const struct ResourceEntry _resourceEntriesEngDemo100[] = {
+#include "resource_en_demo100.h"
+ { 0, 0, 0 }
+};
+
+static const struct ResourceEntry _resourceEntriesEngDemo110[] = {
+#include "resource_en_demo110.h"
+ { 0, 0, 0 }
+};
+
+struct GameVersion {
+ uint32 borlandOverlaySize;
+ const struct ResourceEntry *resourceEntries;
+};
+
+static const struct GameVersion _gameVersions[] = {
+ { 4086790, &_resourceEntriesEngDemo100[0] },
+ { 4094103, &_resourceEntriesEngDemo110[0] },
+ { 0, 0 }
+};
+
+static void writeByte(FILE *fp, uint8 b) {
+ fwrite(&b, 1, 1, fp);
+}
+
+static void writeUint16BE(FILE *fp, uint16 value) {
+ writeByte(fp, (uint8)(value >> 8));
+ writeByte(fp, (uint8)(value & 0xFF));
+}
+
+static void writeUint32BE(FILE *fp, uint32 value) {
+ writeUint16BE(fp, (uint16)(value >> 16));
+ writeUint16BE(fp, (uint16)(value & 0xFFFF));
+}
+
+static void writeResourceEntry(FILE *fp, const struct ResourceEntry *re) {
+ writeUint16BE(fp, re->id);
+ writeUint32BE(fp, re->offs);
+ writeUint32BE(fp, re->size);
+}
+
+static const uint32 ITBL_TAG = 0x4954424C;
+static const uint32 CURRENT_VERSION = 1;
+
+static void createTableFile(FILE *fp) {
+ int i, j, gameVersionsCount;
+ uint32 resourceEntriesTableSize[MAX_VERSIONS];
+ uint32 resourceEntriesTableOffs[MAX_VERSIONS];
+
+ /* get resource entries tables size */
+ for (i = 0; _gameVersions[i].resourceEntries; ++i) {
+ assert(i <= MAX_VERSIONS);
+ resourceEntriesTableSize[i] = 0;
+ for (j = 0; _gameVersions[i].resourceEntries[j].id != 0; ++j) {
+ ++resourceEntriesTableSize[i];
+ }
+ }
+ gameVersionsCount = i;
+
+ /* header */
+ writeUint32BE(fp, ITBL_TAG);
+ writeUint32BE(fp, CURRENT_VERSION);
+
+ /* game versions header */
+ writeByte(fp, gameVersionsCount);
+ resourceEntriesTableOffs[0] = 9 + gameVersionsCount * 8;
+ for (i = 1; i < gameVersionsCount; ++i) {
+ resourceEntriesTableOffs[i] = resourceEntriesTableOffs[i - 1] + 2 + resourceEntriesTableSize[i - 1] * _sizeOfResourceEntry;
+ }
+ for (i = 0; i < gameVersionsCount; ++i) {
+ writeUint32BE(fp, _gameVersions[i].borlandOverlaySize);
+ writeUint32BE(fp, resourceEntriesTableOffs[i]);
+ }
+
+ /* resource entries tables */
+ for (i = 0; _gameVersions[i].resourceEntries; ++i) {
+ writeUint16BE(fp, resourceEntriesTableSize[i]);
+ for (j = 0; _gameVersions[i].resourceEntries[j].id != 0; ++j) {
+ writeResourceEntry(fp, &_gameVersions[i].resourceEntries[j]);
+ }
+ }
+}
+
+int main(int argc, char *argv[]) {
+ FILE *fp = fopen("IGOR.TBL", "wb");
+ if (fp) {
+ createTableFile(fp);
+ fclose(fp);
+ }
+ return 0;
+}
diff --git a/engines/igor/resource_tbl.h b/tools/create_igortbl/resource_en_demo100.h
index b94036c9c8..b94036c9c8 100644
--- a/engines/igor/resource_tbl.h
+++ b/tools/create_igortbl/resource_en_demo100.h
diff --git a/tools/create_igortbl/resource_en_demo110.h b/tools/create_igortbl/resource_en_demo110.h
new file mode 100644
index 0000000000..78c1a14592
--- /dev/null
+++ b/tools/create_igortbl/resource_en_demo110.h
@@ -0,0 +1,333 @@
+{ FNT_Dialogue, 0xb09, 9405 },
+{ ANM_PhilipVodka, 0x3070, 24175 },
+{ AOF_PhilipVodka, 0x8edf, 80 },
+{ TXT_PhilipRoom, 0x95e3, 1164 },
+{ IMG_PhilipRoom, 0x9a6f, 46080 },
+{ PAL_PhilipRoom, 0x14e6f, 768 },
+{ MSK_PhilipRoom, 0x1516f, 3 },
+{ BOX_PhilipRoom, 0x15172, 1280 },
+{ DAT_PhysicsClassroom, 0x18db5, 6017 },
+{ FRM_PhysicsClassroom1, 0x1a782, 3100 },
+{ TXT_PhysicsClassroom, 0x1ba7d, 1145 },
+{ IMG_PhysicsClassroom, 0x1bef6, 46080 },
+{ PAL_PhysicsClassroom, 0x272f6, 624 },
+{ MSK_PhysicsClassroom, 0x27566, 1557 },
+{ BOX_PhysicsClassroom, 0x27b7b, 1280 },
+{ DAT_ChemistryClassroom, 0x2ba0b, 6345 },
+{ FRM_ChemistryClassroom1, 0x2d568, 14 },
+{ FRM_ChemistryClassroom2, 0x2d576, 3332 },
+{ TXT_ChemistryClassroom, 0x2e95d, 1226 },
+{ IMG_ChemistryClassroom, 0x2ee27, 46080 },
+{ PAL_ChemistryClassroom, 0x3a227, 624 },
+{ MSK_ChemistryClassroom, 0x3a497, 1980 },
+{ BOX_ChemistryClassroom, 0x3ac53, 1280 },
+{ DAT_CollegeStairsSecondFloor, 0x3f551, 6393 },
+{ FRM_CollegeStairsSecondFloor1, 0x4114e, 2756 },
+{ FRM_CollegeStairsSecondFloor2, 0x41c12, 11136 },
+{ FRM_CollegeStairsSecondFloor3, 0x44792, 6665 },
+{ TXT_CollegeStairsSecondFloor, 0x46895, 1559 },
+{ IMG_CollegeStairsSecondFloor, 0x46eac, 46080 },
+{ PAL_CollegeStairsSecondFloor, 0x522ac, 624 },
+{ MSK_CollegeStairsSecondFloor, 0x5251c, 4128 },
+{ BOX_CollegeStairsSecondFloor, 0x5353c, 1280 },
+{ DAT_CollegeStairsFirstFloor, 0x57a45, 6017 },
+{ DLG_CollegeStairsFirstFloor, 0x5a48c, 2713 },
+{ FRM_CollegeStairsFirstFloor1, 0x5b039, 48790 },
+{ FRM_CollegeStairsFirstFloor2, 0x66ecf, 140 },
+{ TXT_CollegeStairsFirstFloor, 0x67651, 1228 },
+{ IMG_CollegeStairsFirstFloor, 0x67b1d, 46080 },
+{ PAL_CollegeStairsFirstFloor, 0x72f1d, 624 },
+{ MSK_CollegeStairsFirstFloor, 0x7318d, 2934 },
+{ BOX_CollegeStairsFirstFloor, 0x73d03, 1280 },
+{ DAT_CollegeCorridorMissBarrymore, 0x78051, 6137 },
+{ FRM_CollegeCorridorMissBarrymore1, 0x79b3a, 3250 },
+{ FRM_CollegeCorridorMissBarrymore2, 0x7a7ec, 5280 },
+{ FRM_CollegeCorridorMissBarrymore3, 0x7bc8c, 10824 },
+{ TXT_CollegeCorridorMissBarrymore, 0x7edbb, 1412 },
+{ IMG_CollegeCorridorMissBarrymore, 0x7f33f, 46080 },
+{ PAL_CollegeCorridorMissBarrymore, 0x8a73f, 624 },
+{ MSK_CollegeCorridorMissBarrymore, 0x8a9af, 2484 },
+{ BOX_CollegeCorridorMissBarrymore, 0x8b363, 1280 },
+{ DAT_CollegeCorridorAnnouncementBoard, 0x8f40b, 5973 },
+{ FRM_CollegeCorridorAnnouncementBoard1, 0x90e04, 2392 },
+{ FRM_CollegeCorridorAnnouncementBoard2, 0x9175c, 6944 },
+{ TXT_CollegeCorridorAnnouncementBoard, 0x9395f, 1238 },
+{ IMG_CollegeCorridorAnnouncementBoard, 0x93e35, 46080 },
+{ PAL_CollegeCorridorAnnouncementBoard, 0x9f235, 624 },
+{ MSK_CollegeCorridorAnnouncementBoard, 0x9f4a5, 3117 },
+{ BOX_CollegeCorridorAnnouncementBoard, 0xa00d2, 1280 },
+{ DAT_CollegeCorridorSharonMichael, 0xa360e, 5993 },
+{ FRM_CollegeCorridorSharonMichael1, 0xa501b, 3630 },
+{ FRM_CollegeCorridorSharonMichael2, 0xa5e49, 7752 },
+{ FRM_CollegeCorridorSharonMichael3, 0xa7c91, 5676 },
+{ FRM_CollegeCorridorSharonMichael4, 0xa92bd, 6762 },
+{ TXT_CollegeCorridorSharonMichael, 0xab412, 1387 },
+{ IMG_CollegeCorridorSharonMichael, 0xab97d, 46080 },
+{ PAL_CollegeCorridorSharonMichael, 0xb6d7d, 624 },
+{ MSK_CollegeCorridorSharonMichael, 0xb6fed, 3144 },
+{ BOX_CollegeCorridorSharonMichael, 0xb7c35, 1280 },
+{ DAT_CollegeCorridorCaroline, 0xbc575, 6509 },
+{ FRM_CollegeCorridorCaroline1, 0xbe216, 25080 },
+{ FRM_CollegeCorridorCaroline3, 0xc440e, 7595 },
+{ FRM_CollegeCorridorCaroline2, 0xc61b9, 270 },
+{ TXT_CollegeCorridorCaroline, 0xc69c1, 2037 },
+{ IMG_CollegeCorridorCaroline, 0xc71b6, 46080 },
+{ PAL_CollegeCorridorCaroline, 0xd25b6, 624 },
+{ MSK_CollegeCorridorCaroline, 0xd2826, 2151 },
+{ BOX_CollegeCorridorCaroline, 0xd308d, 1280 },
+{ DAT_CollegeCorridorLucas, 0xd6468, 6109 },
+{ FRM_CollegeCorridorLucas1, 0xd7edf, 2592 },
+{ FRM_CollegeCorridorLucas2, 0xd88ff, 1225 },
+{ FRM_CollegeCorridorLucas3, 0xd8dc8, 6480 },
+{ FRM_CollegeCorridorLucas4, 0xda718, 1140 },
+{ TXT_CollegeCorridorLucas, 0xdb277, 1387 },
+{ IMG_CollegeCorridorLucas, 0xdb7e2, 46080 },
+{ PAL_CollegeCorridorLucas, 0xe6be2, 624 },
+{ MSK_CollegeCorridorLucas, 0xe6e52, 3297 },
+{ BOX_CollegeCorridorLucas, 0xe7b33, 1280 },
+{ DAT_CollegeCorridorMargaret, 0xeb848, 6273 },
+{ DLG_CollegeCorridorMargaret, 0xee422, 6860 },
+{ FRM_CollegeCorridorMargaret1, 0xf0076, 5346 },
+{ FRM_CollegeCorridorMargaret2, 0xf1558, 44247 },
+{ FRM_CollegeCorridorMargaret3, 0xfc22f, 7800 },
+{ FRM_CollegeCorridorMargaret4, 0xfe0a7, 3564 },
+{ TXT_CollegeCorridorMargaret, 0xff591, 1642 },
+{ IMG_CollegeCorridorMargaret, 0xffbfb, 46080 },
+{ PAL_CollegeCorridorMargaret, 0x10affb, 624 },
+{ MSK_CollegeCorridorMargaret, 0x10b26b, 3690 },
+{ BOX_CollegeCorridorMargaret, 0x10c0d5, 1280 },
+{ DAT_CollegeLockers, 0x10f33f, 6437 },
+{ FRM_CollegeLockers1, 0x110ede, 2496 },
+{ FRM_CollegeLockers2, 0x11189e, 4704 },
+{ FRM_CollegeLockers3, 0x112afe, 1260 },
+{ TXT_CollegeLockers, 0x1136d1, 1812 },
+{ IMG_CollegeLockers, 0x113de5, 46080 },
+{ PAL_CollegeLockers, 0x11f1e5, 624 },
+{ MSK_CollegeLockers, 0x11f455, 2235 },
+{ BOX_CollegeLockers, 0x11fd10, 1280 },
+{ DAT_MenToilets, 0x123df4, 6465 },
+{ DAT_WomenToilets, 0x129df2, 6385 },
+{ FRM_WomenToilets1, 0x12ba8b, 854 },
+{ FRM_WomenToilets2, 0x12bde1, 12 },
+{ FRM_WomenToilets3, 0x12bded, 2744 },
+{ FRM_WomenToilets4, 0x12c8a5, 12855 },
+{ FRM_WomenToilets5, 0x12fadc, 102 },
+{ TXT_WomenToilets, 0x130231, 1637 },
+{ IMG_WomenToilets, 0x130896, 46080 },
+{ PAL_WomenToilets, 0x13bc96, 624 },
+{ MSK_WomenToilets, 0x13bf06, 2022 },
+{ BOX_WomenToilets, 0x13c6ec, 1280 },
+{ FRM_MenToilets1, 0x13cc9a, 3038 },
+{ FRM_MenToilets2, 0x13d878, 1624 },
+{ TXT_MenToilets, 0x13e5b3, 1322 },
+{ IMG_MenToilets, 0x13eadd, 46080 },
+{ PAL_MenToilets, 0x149edd, 624 },
+{ MSK_MenToilets, 0x14a14d, 1980 },
+{ BOX_MenToilets, 0x14a909, 1280 },
+{ DAT_OutsideCollege, 0x14ff37, 6777 },
+{ DLG_OutsideCollege, 0x1527aa, 953 },
+{ FRM_OutsideCollege1, 0x152ceb, 2156 },
+{ FRM_OutsideCollege2, 0x153557, 4347 },
+{ FRM_OutsideCollege3, 0x154652, 693 },
+{ FRM_OutsideCollege4, 0x154907, 594 },
+{ FRM_OutsideCollege5, 0x154b59, 10080 },
+{ TXT_OutsideCollege, 0x1579a8, 1741 },
+{ IMG_OutsideCollege, 0x158075, 46080 },
+{ PAL_OutsideCollege, 0x163475, 624 },
+{ MSK_OutsideCollege, 0x1636e5, 4974 },
+{ BOX_OutsideCollege, 0x164a53, 1280 },
+{ DAT_Laboratory, 0x168ece, 5645 },
+{ FRM_Laboratory1, 0x16a7e7, 2254 },
+{ FRM_Laboratory2, 0x16b0b5, 26218 },
+{ FRM_Laboratory3, 0x17171f, 128 },
+{ TXT_Laboratory, 0x171e86, 1527 },
+{ IMG_Laboratory, 0x17247d, 46080 },
+{ PAL_Laboratory, 0x17d87d, 624 },
+{ MSK_Laboratory, 0x17daed, 2130 },
+{ BOX_Laboratory, 0x17e33f, 1280 },
+{ FRM_MargaretRoom1, 0x181a0c, 10853 },
+{ FRM_MargaretRoom2, 0x184471, 16 },
+{ FRM_MargaretRoom3, 0x184481, 44564 },
+{ FRM_MargaretRoom4, 0x18f295, 80 },
+{ TXT_MargaretRoom, 0x18f9a1, 1707 },
+{ IMG_MargaretRoom, 0x19004c, 46080 },
+{ PAL_MargaretRoom, 0x19b44c, 768 },
+{ MSK_MargaretRoom, 0x19b74c, 3 },
+{ BOX_MargaretRoom, 0x19b74f, 1280 },
+{ DAT_Map, 0x19e26b, 6273 },
+{ TXT_Map, 0x1a033b, 1023 },
+{ IMG_Map, 0x1a073a, 46080 },
+{ PAL_Map, 0x1abb3a, 624 },
+{ MSK_Map, 0x1abdaa, 1809 },
+{ BOX_Map, 0x1ac4bb, 1280 },
+{ DAT_TobiasOffice, 0x1b0233, 5945 },
+{ DLG_TobiasOffice, 0x1b2c76, 10590 },
+{ ANM_TobiasOffice1, 0x1b575a, 2392 },
+{ AOF_TobiasOffice1, 0x1b60b2, 910 },
+{ ANM_TobiasOffice2, 0x1b6440, 16992 },
+{ AOF_TobiasOffice2, 0x1ba6a0, 6678 },
+{ TXT_TobiasOffice, 0x1bc7a1, 2086 },
+{ IMG_TobiasOffice, 0x1bcfc7, 46080 },
+{ PAL_TobiasOffice, 0x1c83c7, 624 },
+{ MSK_TobiasOffice, 0x1c8637, 1455 },
+{ BOX_TobiasOffice, 0x1c8be6, 1280 },
+{ DAT_BellChurch, 0x1cb92d, 5617 },
+{ FRM_BellChurch1, 0x1cd114, 40960 },
+{ FRM_BellChurch2, 0x1d7114, 2100 },
+{ TXT_BellChurch, 0x1d802b, 1158 },
+{ IMG_BellChurch, 0x1d84b1, 46080 },
+{ PAL_BellChurch, 0x1e38b1, 624 },
+{ MSK_BellChurch, 0x1e3b21, 861 },
+{ BOX_BellChurch, 0x1e3e7e, 1280 },
+{ DAT_ChurchPuzzle, 0x1e8e94, 6137 },
+{ IMG_ChurchMosaic, 0x1eb6f2, 46080 },
+{ PAL_ChurchMosaic, 0x1f6af2, 720 },
+{ MSK_ChurchMosaic, 0x1f6dc2, 2445 },
+{ FRM_ChurchPuzzle1, 0x1f7a41, 980 },
+{ FRM_ChurchPuzzle2, 0x1f7e15, 945 },
+{ FRM_ChurchPuzzle3, 0x1f81c6, 1794 },
+{ FRM_ChurchPuzzle13, 0x1f88c8, 2240 },
+{ FRM_ChurchPuzzle4, 0x1f9188, 2106 },
+{ FRM_ChurchPuzzle5, 0x1f99c2, 1260 },
+{ FRM_ChurchPuzzle6, 0x1f9eae, 1036 },
+{ FRM_ChurchPuzzle7, 0x1fa2ba, 1053 },
+{ FRM_ChurchPuzzle8, 0x1fa6d7, 6 },
+{ FRM_ChurchPuzzle9, 0x1fa6dd, 26980 },
+{ FRM_ChurchPuzzle10, 0x201041, 120 },
+{ FRM_ChurchPuzzle11, 0x2010b9, 11607 },
+{ FRM_ChurchPuzzle12, 0x203e10, 20 },
+{ FRM_ChurchPuzzle14, 0x203e24, 2904 },
+{ TXT_ChurchPuzzle, 0x20508f, 1587 },
+{ IMG_ChurchPuzzle, 0x2056c2, 46080 },
+{ PAL_ChurchPuzzle, 0x210ac2, 624 },
+{ MSK_ChurchPuzzle, 0x210d32, 1992 },
+{ BOX_ChurchPuzzle, 0x2114fa, 1280 },
+{ DAT_InsideChurch, 0x2153e6, 5973 },
+{ TXT_InsideChurch, 0x21741e, 1070 },
+{ IMG_InsideChurch, 0x21784c, 46080 },
+{ PAL_InsideChurch, 0x222c4c, 624 },
+{ MSK_InsideChurch, 0x222ebc, 2352 },
+{ BOX_InsideChurch, 0x2237ec, 1280 },
+{ DAT_OutsideChurch, 0x228d4d, 6017 },
+{ DLG_OutsideChurch, 0x22b963, 5130 },
+{ FRM_OutsideChurch8, 0x22d0ad, 27365 },
+{ FRM_OutsideChurch9, 0x233b92, 58 },
+{ FRM_OutsideChurch1, 0x233bcc, 1869 },
+{ FRM_OutsideChurch2, 0x234319, 20 },
+{ FRM_OutsideChurch3, 0x23432d, 2472 },
+{ FRM_OutsideChurch4, 0x234cd5, 16 },
+{ FRM_OutsideChurch5, 0x234ce5, 5147 },
+{ FRM_OutsideChurch6, 0x236100, 14 },
+{ FRM_OutsideChurch7, 0x23610e, 5145 },
+{ FRM_OutsideChurch10, 0x237527, 6805 },
+{ FRM_OutsideChurch11, 0x238fbc, 14 },
+{ FRM_OutsideChurch12, 0x238fca, 5145 },
+{ TXT_OutsideChurch, 0x23aab7, 1427 },
+{ IMG_OutsideChurch, 0x23b04a, 46080 },
+{ PAL_OutsideChurch, 0x24644a, 624 },
+{ MSK_OutsideChurch, 0x2466ba, 3264 },
+{ BOX_OutsideChurch, 0x24737a, 1280 },
+{ DAT_SpringBridge, 0x24bfba, 6017 },
+{ WLK_Bridge1, 0x24d73b, 134 },
+{ WLK_Bridge2, 0x24d7c1, 2546 },
+{ DLG_SpringPhotographer, 0x24fa9c, 15460 },
+{ DAT_SpringRock, 0x2577aa, 6195 },
+{ WLK_Bridge3, 0x258fdd, 134 },
+{ WLK_Bridge4, 0x259063, 2546 },
+{ FRM_SpringRock1, 0x259dd9, 84 },
+{ FRM_SpringRock2, 0x259e2d, 759 },
+{ FRM_SpringRock3, 0x25a124, 5145 },
+{ FRM_SpringRock4, 0x25b53d, 4508 },
+{ FRM_SpringRock5, 0x25c6d9, 13364 },
+{ FRM_SpringRock6, 0x25fb0d, 54 },
+{ FRM_SpringBridge1, 0x25fbd1, 24 },
+{ FRM_SpringBridge2, 0x25fbe9, 4410 },
+{ TXT_SpringBridge, 0x261406, 1071 },
+{ IMG_SpringBridge, 0x261835, 46080 },
+{ PAL_SpringBridge, 0x26cc35, 720 },
+{ MSK_SpringBridge, 0x26cf05, 3936 },
+{ BOX_SpringBridge, 0x26de65, 1280 },
+{ DAT_Library, 0x272ca5, 7325 },
+{ DLG_Library, 0x275e7f, 3573 },
+{ FRM_Library1, 0x276e32, 2254 },
+{ FRM_Library2, 0x277700, 18823 },
+{ FRM_Library3, 0x27c087, 50 },
+{ FRM_Library4, 0x27c0b9, 1440 },
+{ FRM_Library5, 0x27c659, 14616 },
+{ TXT_Library2, 0x2801d7, 237 },
+{ TXT_Library, 0x2809be, 2024 },
+{ IMG_Library, 0x2811a6, 46080 },
+{ PAL_Library, 0x28c5a6, 624 },
+{ MSK_Library, 0x28c816, 2217 },
+{ BOX_Library, 0x28d0bf, 1280 },
+{ ANM_PhilipLauraIntro, 0x28e7d6, 29824 },
+{ AOF_PhilipLauraIntro, 0x295c56, 74 },
+{ ANM_LauraIntro, 0x295ca0, 12793 },
+{ AOF_LauraIntro, 0x298e99, 48 },
+{ TXT_SpringBridgeIntro, 0x299473, 1846 },
+{ IMG_SpringBridgeIntro, 0x299ba9, 46080 },
+{ PAL_SpringBridgeIntro, 0x2a4fa9, 720 },
+{ TXT_SpringRock, 0x2a5980, 1374 },
+{ IMG_SpringRock, 0x2a5ede, 46080 },
+{ PAL_SpringRock, 0x2b12de, 720 },
+{ MSK_SpringRock, 0x2b15ae, 3117 },
+{ BOX_SpringRock, 0x2b21db, 1280 },
+{ PAL_Shareware7, 0x2b2cb1, 768 },
+{ IMG_Shareware7, 0x2b2fb1, 46080 },
+{ PAL_Shareware6, 0x2be7f6, 768 },
+{ IMG_Shareware6, 0x2beaf6, 46080 },
+{ PAL_Shareware5, 0x2ca27c, 768 },
+{ IMG_Shareware5, 0x2ca57c, 46080 },
+{ PAL_Shareware4, 0x2d5e8f, 768 },
+{ IMG_Shareware4, 0x2d618f, 46080 },
+{ PAL_Shareware3, 0x2e1981, 768 },
+{ IMG_Shareware3, 0x2e1c81, 46080 },
+{ PAL_Shareware2, 0x2ed5d7, 768 },
+{ IMG_Shareware2, 0x2ed8d7, 46080 },
+{ PAL_Shareware1, 0x2f9069, 768 },
+{ IMG_Shareware1, 0x2f9369, 46080 },
+{ PAL_TitleScreen, 0x304b59, 768 },
+{ IMG_TitleScreen, 0x304e59, 64000 },
+{ PAL_PenduloStudios, 0x3148d1, 768 },
+{ IMG_PenduloStudios, 0x314bd1, 64000 },
+{ PAL_GraphicAdventure, 0x324649, 768 },
+{ IMG_GraphicAdventure, 0x324949, 64000 },
+{ PAL_Presents, 0x3343c1, 768 },
+{ IMG_Presents, 0x3346c1, 64000 },
+{ PAL_OptikSoftware, 0x344139, 768 },
+{ IMG_OptikSoftware, 0x344439, 64000 },
+{ IMG_Meanwhile, 0x353f0a, 46080 },
+{ IMG_OptionsButton, 0x36cda2, 2106 },
+{ IMG_OptionsMenu, 0x36d5dc, 36800 },
+{ CMF_8, 0x37698d, 4926 },
+{ CMF_9, 0x377ccb, 6249 },
+{ CMF_10, 0x379534, 5982 },
+{ CMF_11, 0x37ac92, 12793 },
+{ CMF_12, 0x37de8b, 22275 },
+{ CMF_2_1, 0x383808, 4111 },
+{ CMF_2_2, 0x384817, 4303 },
+{ CMF_2_3, 0x3858e6, 4343 },
+{ CMF_2_4, 0x3869dd, 5943 },
+{ CMF_3, 0x388114, 5898 },
+{ CMF_4, 0x38981e, 3133 },
+{ CMF_7_1, 0x38a45b, 4671 },
+{ CMF_7_2, 0x38b69a, 646 },
+{ CMF_7_3, 0x38b920, 2014 },
+{ CMF_7_4, 0x38c0fe, 1369 },
+{ FRM_IgorDirBack, 0x38c849, 10500 },
+{ FRM_IgorDirRight, 0x38f14d, 13500 },
+{ FRM_IgorDirFront, 0x392609, 10500 },
+{ FRM_IgorDirLeft, 0x394f0d, 13500 },
+{ FRM_IgorHead, 0x3983c9, 3696 },
+{ IMG_VerbsPanel, 0x3a19e1, 3840 },
+{ TXT_MainTable, 0x3a28e1, 28028 },
+{ IMG_RomanNumbersPaper, 0x3a9aa5, 46080 },
+{ PAL_RomanNumbersPaper, 0x3b4ea5, 624 },
+{ FRM_NumbersPaper1, 0x3b533f, 51163 },
+{ FRM_NumbersPaper2, 0x3c1b1a, 40 },
+{ IMG_NewsPaper, 0x3c1e10, 46080 },
+{ PAL_NewsPaper, 0x3cd210, 624 },
+{ IMG_PhotoHarrisonMargaret, 0x3cd98a, 46080 },
+{ PAL_PhotoHarrisonMargaret, 0x3d8d8a, 624 },
+{ IMG_InventoryPanel, 0x3d9707, 9600 },
+{ IMG_Objects, 0x3dbc87, 48000 },