This version is outdated by a newer approved version.DiffThis version (2017/01/31 21:51) was approved by zdimension.

This is an old revision of the document!


struct tr2_savegame
    uint8_t SaveName[33]; // ASCII C string; null-terminated (rdata after \0 is ignored); for accents see String Array section of TOMBPC.DAT page
    uint8_t Unknown1[42];
    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
        uint16_t Header; // Always 0x3E8
        uint16_t Ammo_AutoPistols; // 65,535 means unlimited
        uint16_t Ammo_Uzis;
        uint16_t Ammo_Shotgun;
        uint16_t Ammo_M16;
        uint16_t Ammo_Grenade;
        uint16_t Ammo_Harpoon;
        uint8_t SmallMedipacks; // 255 means unlimited
        uint8_t LargeMedipacks;
        uint8_t Unknown;
        uint8_t Flares;
        uint8_t Unknown2[2];
        /* 00000001 Always set
         * 00000010 Pistols
         * 00000100 Automatic pistols
         * 00001000 Uzis
         * 00010000 Shotgun
         * 00100000 M16
         * 01000000 Grenade launcher
         * 10000000 Harpoon gun
        uint8_t Weapons;
        uint8_t Unknown3[23];
    } Blocks[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
trs/savegame/tr2.1485858250.txt.gz · Last modified: 2017/01/31 11:24 by zdimension
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0