scummvm/engines/cryo/staticdata.cpp
2017-01-25 22:42:00 +01:00

691 lines
26 KiB
C++

/* 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.
*
*/
#include "cryo/defs.h"
#include "cryo/cryolib.h"
namespace Cryo {
Follower followerList[] = {
// 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 }
};
/*
Labyrinth of Mo
| | | | | | | |
*/
byte kLabyrinthPath[] = {
// 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[] = { //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[] = {
// 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_t gotos[] = {
// 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 },
};
#define SUB_LINE(start, end) \
(start), (end) | 0x8000
int16 tab_2D24C[] = {
SUB_LINE( 68, 120),
SUB_LINE( 123, 196),
SUB_LINE( 199, 274),
SUB_LINE( 276, 370),
SUB_LINE( 799, 885),
SUB_LINE( 888, 940),
SUB_LINE( 947, 1000),
SUB_LINE(1319, 1378),
SUB_LINE(1380, 1440),
SUB_LINE(1854, 1898),
SUB_LINE(1900, 1960),
SUB_LINE(2116, 2184),
SUB_LINE(2186, 2252),
SUB_LINE(2254, 2320),
SUB_LINE(3038, 3094),
SUB_LINE(3096, 3160),
-1
};
int16 tab_2D28E[] = {
SUB_LINE(99, 155),
SUB_LINE(157, 256),
-1
};
int16 tab_2D298[] = {
SUB_LINE(106, 173),
SUB_LINE(175, 244),
SUB_LINE(246, 350),
SUB_LINE(352, 467),
-1
};
int16 tab_2D2AA[] = {
SUB_LINE(126, 176),
SUB_LINE(178, 267),
SUB_LINE(269, 342),
SUB_LINE(344, 398),
SUB_LINE(400, 458),
SUB_LINE(460, 558),
-1
};
int16 tab_2D2C4[] = {
SUB_LINE(101, 213),
SUB_LINE(215, 353),
SUB_LINE(355, 455),
SUB_LINE(457, 518),
SUB_LINE(520, 660),
SUB_LINE(662, 768),
-1
};
#undef SUB_LINE
object_t objects[] = {
//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)
};
int16 kObjectLocations[100] = {
0x112, -1,
0x202, -1,
0x120, -1,
0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, -1,
0x340, 0x44B, 0x548, 0x640, 0x717, 0x830, -1,
0, -1,
0x344, 0x53A, 0x831, -1,
0x331, 0x420, 0x54B, 0x637, 0x716, 0x840, -1,
0x834A, 0x8430, 0x8531, 0x644, 0x745, 0x838, -1,
0x510, -1,
0xC04, -1,
-1
};
perso_t kPersons[] = {
// 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 }
};
cita_t cita_list[] = {
{
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
}
}
};
int16 tab_2CB16[] = { 2075, 2080, 2119, -1};
char tab_2CB1E[8][4] = {
{ 0x10, 0x81, 1, 0x90},
{ 0x90, 1, 0x81, 0x10},
{ 1, 0x90, 0x10, 0x81},
{ 1, 0x10, 0x90, 0x81},
{ 1, 0x90, 0x10, 0x81},
{ 0x81, 0x10, 0x90, 1},
{ 0x81, 0x10, 0x90, 1},
{ 0x81, 0x90, 1, 0x10}
};
prect_t perso_rects[] = { //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 tab_persxx[][5] = { //TODO: struc?
{ 8, 15, 23, 25, 0xFF},
{ 0, 9, 0xFF },
{ 0, 9, 0xFF },
{ 0, 9, 0xFF },
{ 0, 13, 0xFF },
{ 16, 21, 0xFF },
{ 11, 20, 0xFF },
{ 0, 12, 0xFF },
{ 0, 9, 0xFF },
{ 0, 9, 0xFF },
{ 5, 13, 0xFF },
{ 0xFF },
{ 0, 8, 0xFF },
{ 0xFF },
{ 0, 7, 0xFF },
{ 0, 8, 0xFF },
{ 8, 12, 0xFF },
{ 0, 5, 0xFF },
{ 0, 4, 0xFF },
{ 0xFF }
};
area_t kAreasTable[] = {
{ 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,
};
int16 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
};
float flt_2DF7C = -3400;
float flt_2DF80 = -3400;
float flt_2DF84 = 200;
// Cube faces to texture coords mapping
// each entry is num_polys(6) * num_faces_per_poly(2) * vertex_per_face(3) * uv(2)
int16 cube_texcoords[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
}
};
char tab_2E138[4 * 3] = {
0, 0, 1, 1,
0, 0, 0, 1,
0, 0, 2, 0
};
} // End of namespace Cryo