diff options
-rw-r--r-- | engines/igor/detection.cpp | 33 | ||||
-rw-r--r-- | engines/igor/igor.cpp | 31 | ||||
-rw-r--r-- | engines/igor/igor.h | 6 | ||||
-rw-r--r-- | engines/igor/staticres.cpp | 6 | ||||
-rw-r--r-- | tools/create_igortbl/create_igortbl.c | 131 | ||||
-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.h | 333 |
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 }, |