struct TR2Savegame { uint8_t saveName[75]; // ASCII C string; null-terminated (there is always random data after \0, it is ignored); for accents see String Array section of TOMBPC.DAT page int32_t saveNumber; uint8_t unknown2[44]; // First level use block 0, second use block 1... so that at the end of the game, // it sums up everything and/or checks if you found all secrets, etc struct { uint16_t header; // Always 0x3E8 (100) uint16_t ammoAutoPistols; // 65,535 means unlimited uint16_t ammoUzis; uint16_t ammoShotgun; uint16_t ammoM16; uint16_t ammoGrenade; uint16_t ammoHarpoon; uint8_t smallMedipacks; // 255 means unlimited uint8_t largeMedipacks; uint8_t unknown; uint8_t flares; uint8_t unknown2[1]; /* 0 None * 1 Pistols * 2 Automatic pistols * 3 Uzis * 4 Shotgun * 5 M16 * 6 Grenade launcher * 7 Harpoon gun */ uint8_t weapon; // current held weapon /* 00000001 Level unlocked * 00000010 Pistols * 00000100 Automatic pistols * 00001000 Uzis * 00010000 Shotgun * 00100000 M16 * 01000000 Grenade launcher * 10000000 Harpoon gun */ uint8_t weapons; uint8_t unknown3[23]; } levelInitData[23]; uint32_t elapsedTime; // in game ticks (1/30th of a second), so divide by 30 for time in seconds uint32_t ammoUsed; uint32_t hits; uint32_t distanceTraveled; // Divide by 445.023 for value in meters uint32_t kills; /* 00000001 Bronze * 00000010 Jade * 00000100 Gold */ uint8_t secrets; uint8_t healthPacksUsed; // Divide by 2 for value. Large medipack = 1; Small = 0.5 uint8_t levelNumber; // First level = 1 uint8_t unknown5a; uint8_t unlimitedAmmo; // Enabled = 1 uint8_t unknown5b[2]; uint8_t puzzle[4]; // Corresponds to TOMBPC.DAT Puzzle & Keys entries uint8_t keys[4]; // This part needs to be studied uint8_t unknown6[744]; uint16_t health; // Divide by 10 for floating point value between 0 and 100; 32767 (0x7FFF) means unlimited uint8_t unknown7[1952]; uint16_t air; uint8_t readToEOF[]; };
The levelNumber
field is used for determining what level the game should load when opening the savegame.
ID | Level | Puzzle | Key | ||||||
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | ||
1 | The Great Wall | Guardhouse Key | Rusty Key | ||||||
2 | Venice | Boathouse Key | Steel Key | Iron Key | |||||
3 | Bartoli's Hideout | Library Key | Detonator Key | ||||||
4 | Opera House | Relay Box | Circuit Board | Ornate Key | |||||
5 | Offshore Rig | Red Pass Card | Yellow Pass Card | Green Pass Card | |||||
6 | Diving Area | Machine Chip | Red Pass Card | Blue Pass Card | |||||
7 | 40 Fathoms | ||||||||
8 | Wreck of the Maria Doria | Circuit Breaker | Rest Room Key | Rusty Key | Cabin Key | ||||
9 | Living Quarters | Theatre Key | Rusty Key | ||||||
10 | The Deck | The Seraph | Stern Key | Storage Key | Cabin Key | ||||
11 | Tibetan Foothills | The Seraph | Drawbridge Key | Hut Key | |||||
12 | Barkhang Monastery | Prayer Wheels | Gemstones | The Seraph | Strongroom Key | Trapdoor Key | Rooftops Key | Main Hall Key | |
13 | Catacombs of the Talion | Tibetan Mask | |||||||
14 | Ice Palace | Tibetan Mask | Gong Hammer | ||||||
15 | Temple of Xian | The Dragon Seal | Gold Key | Silver Key | Main Chamber Key | ||||
16 | Floating Islands | Mystic Plaque | Mystic Plaque | ||||||
17 | The Dragon's Lair | Mystic Plaque | Dagger of Xian | ||||||
18 | Home Sweet Home | Dagger of Xian | Gun Cupboard Key | ||||||
19 | Venice (demo) | Boathouse Key | Steel Key | Iron Key | |||||
20 | Wreck of the Maria Doria (demo) | Circuit Breaker | Rest Room Key | Rusty Key | Cabin Key | ||||
21 | Tibetan Foothills (demo) | The Seraph | Drawbridge Key | Hut Key | |||||
Golden Mask levels | |||||||||
1 | The Cold War | Guardroom Key | Shaft 'B' Key | ||||||
2 | Fool's Gold | Circuit Board | CardKey 1 | CardKey 2 | |||||
3 | Furnace of the Gods | Mask Of Tornarsuk | Gold Nugget | ||||||
4 | Kingdom | Mask Of Tornarsuk | |||||||
5 | Nightmare In Vegas | Elevator Junction | Door Circuit | Hotel Key |