/* ScummVM - Graphic Adventure Engine * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #pragma once #include "eden.h" Follower followerList[15] = { // char, X, sx, sy, ex, ey,bank, { PersonId::pidGregor, 5, 211, 9, 320, 176, 228, 0, 0 }, { PersonId::pidEloi, 4, 162, 47, 223, 176, 228, 112, 78 }, { PersonId::pidDina, 3, 55, 0, 172, 176, 228, 90, 16 }, { PersonId::pidChongOfChamaar, 4, 0, 5, 114, 176, 229, 0, 16 }, { PersonId::pidKommalaOfKoto, 3, 0, 15, 102, 176, 229, 0, 16 }, { PersonId::pidUlanOfUlele, 1, 0, 0, 129, 176, 230, 0, 16 }, { PersonId::pidCabukaOfCantura, 2, 0, 0, 142, 176, 230, 0, 16 }, { PersonId::pidFuggOfTamara, 0, 0, 17, 102, 176, 230, 0, 16 }, { PersonId::pidJabber, 2, 0, 6, 134, 176, 228, 0, 16 }, { PersonId::pidShazia, 1, 90, 17, 170, 176, 228, 50, 22 }, { PersonId::pidThugg, 0, 489, 8, 640, 176, 228, 160, 24 }, { PersonId::pidMungo, 5, 361, 0, 517, 176, 229, 0, 16 }, { PersonId::pidMonk, 0, 419, 22, 569, 176, 229, 100, 30 }, { PersonId::pidEve, 1, 300, 28, 428, 176, 229, 0, 38 }, { -1, -1, -1, -1, -1, -1, -1, -1, -1 } }; byte kLabyrinthPath[70] = { // each nibble tells which direction to choose to exit the labyrinth 0x11, 0x11, 0x11, 0x22, 0x33, 0x55, 0x25, 0x44, 0x25, 0x11, 0x11, 0x11, 0x11, 0x35, 0x55, 0x45, 0x45, 0x44, 0x44, 0x34, 0x44, 0x34, 0x32, 0x52, 0x33, 0x23, 0x24, 0x44, 0x24, 0x22, 0x54, 0x22, 0x54, 0x54, 0x44, 0x22, 0x22, 0x42, 0x45, 0x22, 0x42, 0x45, 0x35, 0x11, 0x44, 0x34, 0x52, 0x11, 0x44, 0x32, 0x55, 0x11, 0x11, 0x33, 0x11, 0x11, 0x53, 0x11, 0x11, 0x53, 0x54, 0x24, 0x11, 0x22, 0x25, 0x33, 0x53, 0x54, 0x23, 0x44 }; char kDinoSpeedForCitaLevel[16] = { 1, 2, 3, 4, 4, 5, 6, 7, 8, 9 }; char kTabletView[12] = { //TODO: make as struct? // opposite tablet id, video id Objects::obUnused10, 83, Objects::obUnused10, 84, Objects::obTablet4, 85, Objects::obTablet3, 86, Objects::obTablet6, 87, Objects::obTablet5, 85 }; // special character backgrounds for specific rooms char kPersoRoomBankTable[84] = { // first entry is default bank, then pairs of [roomNum, bankNum], terminated by -1 0, 3, 33, -1, 21, 17, 35, -1, 0, 2, 36, -1, 22, 9, 38, 3, 39, -1, 23, 8, 40, -1, 0, 3, 41, 7, 42, -1, 25, -1, 27, 17, 45, -1, 28, 26, 46, -1, 29, 51, 48, -1, 30, 53, 49, -1, 0, 27, 50, -1, 32, 17, 51, -1, 52, 2, 52, -1, -3, 3, -3, -1, 31, -1, 24, 6, 43, -1, 47, -1, 0, 2, 64, -1, 54, 3, 54, -1, 27, -1, 26, 17, 45, -1 }; // area transition descriptors Goto gotos[130] = { // area, oldarea, vid, time, valleyVid { 0, 1, 0, 2, 20 }, { 0, 1, 162, 3, 168 }, { 0, 2, 0, 2, 21 }, { 0, 6, 0, 3, 108 }, { 0, 9, 151, 3, 0 }, { 0, 7, 106, 2, 101 }, { 0, 10, 79, 3, 102 }, { 0, 12, 0, 3, 0 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 1, 3, 58, 2, 104 }, { 1, 4, 100, 4, 104 }, { 1, 5, 107, 6, 104 }, { 1, 6, 155, 8, 104 }, { 1, 7, 165, 6, 104 }, { 1, 8, 169, 6, 104 }, { 1, 10, 111, 2, 104 }, { 1, 11, 164, 4, 104 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 1, 3, 161, 3, 102 }, { 1, 4, 163, 6, 102 }, { 1, 5, 157, 9, 102 }, { 1, 9, 160, 9, 102 }, { 1, 10, 79, 3, 102 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 1, 3, 0, 3, 153 }, // 24 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 3, 1, 154, 2, 103 }, { 3, 4, 100, 2, 103 }, { 3, 5, 107, 4, 103 }, { 3, 6, 155, 6, 103 }, { 3, 7, 165, 8, 103 }, { 3, 8, 169, 6, 103 }, { 3, 10, 111, 4, 103 }, { 3, 11, 164, 6, 103 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 3, 1, 162, 3, 22 }, { 3, 4, 163, 6, 22 }, { 3, 5, 157, 9, 22 }, { 3, 9, 160, 9, 22 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 3, 1, 0, 3, 166 }, // 40 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 4, 1, 154, 4, 51 }, { 4, 3, 58, 2, 51 }, { 4, 5, 107, 2, 51 }, { 4, 6, 155, 4, 51 }, { 4, 7, 165, 6, 51 }, { 4, 8, 169, 8, 51 }, { 4, 10, 111, 6, 51 }, { 4, 11, 164, 8, 51 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 4, 1, 162, 3, 109 }, // 51 { 4, 3, 161, 6, 109 }, { 4, 5, 157, 9, 109 }, { 4, 9, 160, 9, 109 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 5, 1, 154, 6, 33 }, { 5, 3, 58, 4, 33 }, { 5, 4, 100, 2, 33 }, { 5, 6, 155, 2, 33 }, { 5, 7, 165, 4, 33 }, { 5, 8, 169, 8, 33 }, { 5, 10, 111, 8, 33 }, { 5, 11, 164, 8, 33 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 5, 1, 162, 3, 99 }, // 65 { 5, 3, 161, 6, 99 }, { 5, 4, 163, 9, 99 }, { 5, 9, 160, 9, 99 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 9, 1, 162, 3, 167 }, // 70 { 9, 3, 161, 6, 167 }, { 9, 4, 163, 9, 167 }, { 9, 5, 157, 9, 167 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 6, 1, 154, 8, 105 }, // 75 { 6, 3, 58, 6, 105 }, { 6, 4, 100, 4, 105 }, { 6, 5, 107, 2, 105 }, { 6, 7, 165, 2, 105 }, { 6, 8, 169, 10, 105 }, { 6, 10, 111, 6, 105 }, { 6, 11, 164, 8, 105 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 7, 1, 154, 4, 158 }, // 84 { 7, 3, 58, 6, 158 }, { 7, 4, 100, 6, 158 }, { 7, 5, 107, 4, 158 }, { 7, 6, 155, 2, 158 }, { 7, 8, 169, 8, 158 }, { 7, 10, 111, 4, 158 }, { 7, 11, 164, 6, 158 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 8, 1, 154, 2, 159 }, // 93 { 8, 3, 58, 4, 159 }, { 8, 4, 100, 6, 159 }, { 8, 5, 107, 8, 159 }, { 8, 6, 155, 10, 159 }, { 8, 7, 165, 8, 159 }, { 8, 10, 111, 6, 159 }, { 8, 11, 164, 4, 159 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 10, 1, 154, 2, 77 }, // 102 { 10, 3, 58, 4, 77 }, { 10, 4, 100, 6, 77 }, { 10, 5, 107, 8, 77 }, { 10, 6, 155, 6, 77 }, { 10, 7, 165, 4, 77 }, { 10, 8, 169, 6, 77 }, { 10, 11, 164, 4, 77 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 11, 1, 154, 2, 80 }, // 111 { 11, 3, 58, 4, 80 }, { 11, 4, 100, 6, 80 }, { 11, 5, 107, 8, 80 }, { 11, 6, 155, 8, 80 }, { 11, 7, 165, 6, 80 }, { 11, 8, 169, 2, 80 }, { 11, 10, 111, 4, 80 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, { 12, 1, 154, 8, 56 }, // 120 { 12, 3, 58, 4, 56 }, { 12, 4, 100, 4, 56 }, { 12, 5, 107, 6, 56 }, { 12, 6, 155, 8, 56 }, { 12, 7, 165, 10, 56 }, { 12, 8, 169, 4, 56 }, { 12, 10, 111, 10, 56 }, { 12, 11, 164, 6, 56 }, { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, }; object_t _objects[42] = { //id,fl,loc,masklow,maskhi,ct { 1, 0, 3, 1, 0, 0}, // Eve's Way Stone { 2, 0, 3, 2, 0, 0}, // Thau's Seashell { 3, 0, 3, 4, 0, 0}, // Talisman of bravery { 4, 0, 3, 8, 0, 0}, // An old tooth. Very old! Whoever lost it most certainly has no further use for it! { 5, 0, 0, 0x10, 0, 0}, // Prism { 6, 0, 3, 0, 0, 0}, // Flute { 7, 0, 3, 0x4000, 0, 0}, // Apple { 8, 0, 4, 0x1000, 0, 0}, // Egg of Destiny { 9, 0, 3, 0x800, 0, 0}, // Root { 10, 0, 3, 0, 0, 0}, // ??? { 11, 0, 6, 0, 0, 0}, // Mushroom { 12, 0, 13, 0, 0, 0}, // Poisonous Mushroom { 13, 0, 2, 0x400, 0, 0}, // Graa's Knife { 14, 0, 22, 0, 0, 0}, // Empty Nest { 15, 0, 26, 0, 0, 0}, // Full Nest { 16, 0, 33, 0x20, 0, 0}, // Gold { 17, 0, 3, 0, 0, 0}, // Sign of Shadow Mistress (moon stone) { 18, 0, 3, 0, 0, 0}, // Sign of Mother of all (bag of soil) { 19, 0, 40, 0, 0, 0}, // Sign of the life-giving (sun star) { 20, 0, 20, 0x200, 0, 0}, // King's Horn { 21, 0, 3, 0, 0, 0}, // Golden Sword of Mashaar // Masks { 22, 0, 3, 0x40, 0, 0}, // Mask of Death { 23, 0, 3, 0x80, 0, 0}, // Mask of Bonding { 24, 0, 3, 0x100, 0, 0}, // Mask of Birth // Objects of power { 25, 0, 3, 0, 1, 0}, // Eye in the Storm { 26, 0, 3, 0, 2, 0}, // Sky Hammer { 27, 0, 3, 0, 4, 0}, // Fire in the Clouds { 28, 0, 3, 0, 8, 0}, // Within and Without { 29, 0, 3, 0, 0x10, 0}, // Eye in the Cyclone { 30, 0, 3, 0, 0x20, 0}, // River that Winds // Musical instruments { 31, 0, 3, 0, 0x40, 0}, // Trumpet { 32, 0, 3, 0, 0x80, 0}, // -- unused (but still has a dialog line) { 33, 0, 3, 0, 0x100, 0}, // Drum { 34, 0, 3, 0, 0x200, 0}, // -- unused (but still has a dialog line) { 35, 0, 3, 0, 0x400, 0}, // -- unused (but still has a dialog line) { 36, 0, 3, 0, 0x800, 0}, // Ring // Tablets { 37, 0, 3, 0, 0, 0}, // Tablet #1 (Mo) { 38, 0, 42, 0x2000, 0, 0}, // Tablet #2 (Morkus' Lair) { 39, 0, 3, 0, 0, 0}, // Tablet #3 (White Arch?) { 40, 0, 3, 0, 0, 0}, // Tablet #4 { 41, 0, 3, 0, 0, 0}, // Tablet #5 { 42, 0, 3, 0x8000, 0, 0} // Tablet #6 (Castra) }; uint16 kObjectLocations[45] = { 0x112, 0xFFFF, 0x202, 0xFFFF, 0x120, 0xFFFF, 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF, 0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, 0xFFFF, 0, 0xFFFF, 0x344, 0x53A, 0x831, 0xFFFF, 0x331, 0x420, 0x54B, 0x637, 0x716, 0x840, 0xFFFF, 0x834A, 0x8430, 0x8531, 0x644, 0x745, 0x838, 0xFFFF, 0x510, 0xFFFF, 0xC04, 0xFFFF, 0xFFFF }; perso_t kPersons[58] = { // room, aid, party mask, id, flags, X,bank,X, X,sprId,sprX,speed, X { 0x103, 230, PersonMask::pmGregor, PersonId::pidGregor , 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0x116, 231, PersonMask::pmDina , PersonId::pidDina , 0, 4, 2, 0, 0, 3, 9, 0, 0 }, { 0x202, 232, PersonMask::pmTau , PersonId::pidTau , 0, 8, 3, 0, 0, 0, 0, 0, 0 }, { 0x109, 233, PersonMask::pmMonk , PersonId::pidMonk , 0, 12, 4, 0, 0, 6, 52, 0, 0 }, { 0x108, 234, PersonMask::pmJabber, PersonId::pidJabber , 0, 18, 5, 0, 0, 2, 0, 0, 0 }, { 0x103, 235, PersonMask::pmEloi , PersonId::pidEloi , 0, 22, 6, 0, 0, 4, 20, 0, 0 }, { 0x301, 236, PersonMask::pmMungo , PersonId::pidMungo , 0, 28, 8, 0, 0, 11, 45, 0, 0 }, { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 30, 10, 0, 0, 7, 35, 0, 0 }, { 0x81A, 238, PersonMask::pmShazia, PersonId::pidShazia , 0, 34, 11, 0, 0, 1, 11, 0, 0 }, { 0x330, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 }, { 0x41B, 239, PersonMask::pmLeader, PersonId::pidUlanOfUlele , 0, 46, 15, 0, 0, 13, 0, 0, 0 }, { 0x53B, 239, PersonMask::pmLeader, PersonId::pidKommalaOfKoto , 0, 42, 14, 0, 0, 9, 0, 0, 0 }, { 0x711, 239, PersonMask::pmLeader, PersonId::pidCabukaOfCantura , 0, 50, 16, 0, 0, 14, 0, 0, 0 }, { 0xA02, 239, PersonMask::pmLeader, PersonId::pidMarindaOfEmbalmers, 0, 54, 17, 0, 0, 0, 0, 0, 0 }, { 0x628, 239, PersonMask::pmLeader, PersonId::pidFuggOfTamara , 0, 62, 18, 0, 0, 12, 0, 0, 0 }, { 0x801, 239, PersonMask::pmLeader, PersonId::pidChongOfChamaar , 0, 38, 13, 0, 0, 10, 0, 0, 0 }, { 0x41B, 10, PersonMask::pmQuest , PersonId::pidUlanOfUlele , PersonFlags::pfType2 , 46, 15, 0, 0, 13, 0, 0, 0 }, { 0x711, 11, PersonMask::pmQuest , PersonId::pidCabukaOfCantura , PersonFlags::pfType2 , 50, 16, 0, 0, 14, 0, 0, 0 }, { 0x106, 240, PersonMask::pmThugg , PersonId::pidThugg , 0, 64, 7, 0, 0, 0, 61, 0, 0 }, { 0, 13, 0, PersonId::pidNarrator , 0, 68, 12, 0, 0, 0, 0, 0, 0 }, { 0x902, 241, PersonMask::pmQuest , PersonId::pidNarrim , 0, 70, 19, 0, 0, 0, 0, 0, 0 }, { 0xC03, 244, PersonMask::pmMorkus, PersonId::pidMorkus , 0, 74, 20, 0, 0, 0, 0, 0, 0 }, // dinos in each valley { 0x332, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x329, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x33B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x317, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x320, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType12 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x349, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x429, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x43B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x422, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x432, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x522, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x534, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x515, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x533, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x622, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x630, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x643, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x63A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x737, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x739, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x74A, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftVelociraptor, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x726, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x842, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pfType8 , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x822, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftTriceraptor , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x828, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pftVelociraptor , 0, 0, 0, 0, 0, 0, 1, 0 }, { 0x84B, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pf80 | PersonFlags::pftMosasaurus , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0xB03, 242, PersonMask::pmDino , PersonId::pidDinosaur , PersonFlags::pfType8 , 58, 252, 0, 0, 0, 0, 0, 0 }, // enemy dinos { 0x311, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x410, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x51B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x618, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x71B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0x81B, 243, PersonMask::pmEnemy , PersonId::pidEnemy , PersonFlags::pf80 | PersonFlags::pftTyrann , 0, 0, 0, 0, 0, 0, 0, 0 }, { 0xFFFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFFFF, 0xFFFF, 0xFF, 0xFF, 0xFF, 0xFF}, { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 80, 9, 0, 0, 8, 35, 0, 0 }, { 0x628, 237, PersonMask::pmEve , PersonId::pidEve , 0, 78, 10, 0, 0, 7, 35, 0, 0 } }; Citadel _citadelList[7] = { { 1, { 163, 182, 0, 0, 124, 147, 193, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } }, { 48, { 285, 286, 0, 0, 287, 288, 284, 0 }, { 114, 115, 0, 0, 116, 117, 113, 0 } }, { 63, { 290, 291, 0, 0, 292, 293, 289, 0 }, { 119, 120, 0, 0, 121, 122, 118, 0 } }, { 95, { 295, 296, 0, 0, 297, 298, 294, 0 }, { 124, 125, 0, 0, 126, 127, 123, 0 } }, { 127, { 300, 301, 0, 0, 302, 303, 299, 0 }, { 129, 130, 0, 0, 131, 132, 128, 0 } }, { 159, { 305, 306, 0, 0, 307, 308, 304, 0 }, { 134, 135, 0, 0, 136, 137, 133, 0 } }, { 255, { 310, 311, 0, 0, 312, 313, 309, 0 }, { 139, 140, 0, 0, 141, 142, 138, 0 } } }; Rect _characterRects[19] = { // TODO: just an array of int16s? { 93, 69, 223, 176}, { 102, 86, 162, 126}, { 88, 103, 168, 163}, { 116, 66, 192, 176}, { 129, 92, 202, 153}, { 60, 95, 160, 176}, { 155, 97, 230, 145}, { 100, 77, 156, 145}, { 110, 78, 170, 156}, { 84, 76, 166, 162}, { 57, 77, 125, 114}, { 93, 69, 223, 175}, { 93, 69, 223, 176}, { 93, 69, 223, 176}, { 154, 54, 245, 138}, { 200, 50, 261, 116}, { 70, 84, 162, 176}, { 125, 101, 222, 172}, { 188, 83, 251, 158} }; byte _characterArray[20][5] = { // TODO: struc? { 8, 15, 23, 25, 0xFF }, { 0, 9, 0xFF, 0, 0 }, { 0, 9, 0xFF, 0, 0 }, { 0, 9, 0xFF, 0, 0 }, { 0, 13, 0xFF, 0, 0 }, { 16, 21, 0xFF, 0, 0 }, { 11, 20, 0xFF, 0, 0 }, { 0, 12, 0xFF, 0, 0 }, { 0, 9, 0xFF, 0, 0 }, { 0, 9, 0xFF, 0, 0 }, { 5, 13, 0xFF, 0, 0 }, { 0xFF, 0, 0, 0, 0 }, { 0, 8, 0xFF, 0, 0 }, { 0xFF, 0, 0, 0, 0 }, { 0, 7, 0xFF, 0, 0 }, { 0, 8, 0xFF, 0, 0 }, { 8, 12, 0xFF, 0, 0 }, { 0, 5, 0xFF, 0, 0 }, { 0, 4, 0xFF, 0, 0 }, { 0xFF, 0, 0, 0, 0 } }; Area kAreasTable[12] = { { Areas::arMo , AreaType::atCitadel, 0, 0, 0, 1, 0, 0}, { Areas::arTausCave , AreaType::atCave , 0, 112, 0, 2, 0, 0}, { Areas::arChamaar , AreaType::atValley , 0, 133, 0, 3, 0, 0}, { Areas::arUluru , AreaType::atValley , 0, 187, 0, 4, 0, 0}, { Areas::arKoto , AreaType::atValley , AreaFlags::HasVelociraptors, 236, 0, 5, 0, 0}, { Areas::arTamara , AreaType::atValley , 0, 288, 0, 6, 0, 0}, { Areas::arCantura , AreaType::atValley , 0, 334, 0, 7, 0, 0}, { Areas::arShandovra , AreaType::atValley , 0, 371, 0, 8, 0, 0}, { Areas::arNarimsCave , AreaType::atCave , 0, 115, 0, 9, 0, 0}, { Areas::arEmbalmersCave, AreaType::atCave , 0, 118, 0, 10, 0, 0}, { Areas::arWhiteArch , AreaType::atCave , 0, 122, 0, 11, 0, 0}, { Areas::arMoorkusLair , AreaType::atCave , 0, 127, 0, 12, 0, 0} }; int16 tab_2CEF0[64] = { 25, 257, 0, 0, 37, 258, 38, 259, 0, 0, 24, 260, 0, 0, 0, 0, 0, 0, 53, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 261, 0, 0, 40, 262, 62, 263, 0, 0, 63, 264, 0, 0, 0, 0, 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0 }; int16 tab_2CF70[64] = { 65, 266, 0, 0, 66, 267, 67, 268, 0, 0, 68, 269, 0, 0, 0, 0, 0, 0, 73, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 270, 0, 0, 70, 271, 71, 272, 0, 0, 72, 273, 0, 0, 0, 0, 18, 275, 0, 0, 35, 254, 36, 255, 19, 318, 23, 256, 0, 0, 0, 0, }; byte kActionCursors[299] = { 3, 1, 2, 4, 5, 5, 5, 0, 5, 5, 5, 5, 5, 3, 2, 5, 5, 5, 3, 2, 4, 5, 7, 7, 4, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 5, 6, 6, 1, 6, 6, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 6, 6, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; byte mapMode[12] = { 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 2, 0 }; // Cube faces to texture coords mapping // each entry is num_polys(6) * num_faces_per_poly(2) * vertex_per_face(3) * uv(2) byte cubeTextureCoords[3][6 * 2 * 3 * 2] = { { 32, 32, 0, 32, 0, 0, 32, 32, 0, 0, 32, 0, 0, 32, 0, 0, 32, 0, 0, 32, 32, 0, 32, 32, 32, 32, 0, 32, 0, 0, 32, 32, 0, 0, 32, 0, 32, 0, 32, 32, 0, 32, 32, 0, 0, 32, 0, 0, 0, 0, 32, 0, 32, 32, 0, 0, 32, 32, 0, 32, 0, 32, 0, 0, 32, 0, 0, 32, 32, 0, 32, 32 }, { 32, 32, 0, 32, 0, 0, 32, 32, 0, 0, 32, 0, 32, 0, 32, 32, 0, 32, 32, 0, 0, 32, 0, 0, 32, 0, 32, 32, 0, 32, 32, 0, 0, 32, 0, 0, 0, 32, 0, 0, 32, 0, 0, 32, 32, 0, 32, 32, 32, 0, 32, 32, 0, 32, 32, 0, 0, 32, 0, 0, 32, 0, 32, 32, 0, 32, 32, 0, 0, 32, 0, 0 }, { 30, 30, 2, 30, 2, 2, 30, 30, 2, 2, 30, 2, 2, 30, 2, 2, 30, 2, 2, 30, 30, 2, 30, 30, 30, 30, 2, 30, 2, 2, 30, 30, 2, 2, 30, 2, 30, 2, 30, 30, 2, 30, 30, 2, 2, 30, 2, 2, 2, 2, 30, 2, 30, 30, 2, 2, 30, 30, 2, 30, 2, 30, 2, 2, 30, 2, 2, 30, 30, 2, 30, 30 } };