Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
trs:savegame:tr3 [2017/01/31 11:23]
zdimension
trs:savegame:tr3 [2017/03/25 20:13]
zdimension
Line 2: Line 2:
  
 <code cpp> <code cpp>
-struct ​tr3_savegame+struct ​TR3Savegame
 { {
-    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 ​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 
-    uint8_t Unknown1[42];​ +    int32_t ​saveNumber
-    int32_t ​SaveNumber+    uint8_t ​unknown2[135];
-    uint8_t ​Unknown2[135];+
     // First level use block 0, second use block 1... so that at the end of the game,      // 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     // it sums up everything and/or checks if you found all secrets, etc
     struct     struct
     {     {
-        uint16_t ​Header; // Always 0x3E8 +        uint16_t ​header; // Always 0x3E8 
-        uint16_t ​Ammo_DesertEagle; // 65,535 means unlimited +        uint16_t ​ammoDesertEagle; // 65,535 means unlimited 
-        uint16_t ​Ammo_Uzis+        uint16_t ​ammoUzis
-        uint16_t ​Ammo_Shotgun+        uint16_t ​ammoShotgun
-        uint16_t ​Ammo_MP5+        uint16_t ​ammoMP5
-        uint16_t ​Ammo_Rocket+        uint16_t ​ammoRocket
-        uint16_t ​Ammo_Harpoon+        uint16_t ​ammoHarpoon
-        uint16_t ​Ammo_Grenade+        uint16_t ​ammoGrenade
-        uint8_t ​SmallMedipacks; // 255 means unlimited +        uint8_t ​smallMedipacks; // 255 means unlimited 
-        uint8_t ​LargeMedipacks+        uint8_t ​largeMedipacks
-        uint8_t ​Unknown+        uint8_t ​unknown
-        uint8_t ​Flares+        uint8_t ​flares
-        uint8_t ​Unknown2[3]; +        uint8_t ​unknown2[2]; 
-        /* 00000000 00000001 ​Always set+        /* 0 None 
 +         * 1 Pistols 
 +         * 2 Desert Eagle 
 +         * 3 Uzis 
 +         * 4 Shotgun 
 +         * 5 MP5 
 +         * 6 Rocket launcher 
 +         * 7 Grenade launcher 
 +         * 8 Harpoon gun 
 +         */ 
 +        uint8_t weapon; // current held weapon 
 +        /* 00000000 00000001 ​Level unlocked
          * 00000000 00000010 Pistols          * 00000000 00000010 Pistols
          * 00000000 00000100 Desert Eagle          * 00000000 00000100 Desert Eagle
Line 35: Line 45:
          * 00000001 00000000 Harpoon gun // The presence of the new rocket launcher requires a 2-bytes field          * 00000001 00000000 Harpoon gun // The presence of the new rocket launcher requires a 2-bytes field
          */          */
-        uint16_t ​Weapons+        uint16_t ​weapons
-        uint8_t ​Unknown3a[2]; +        uint8_t ​unknown3a[2]; 
-        uint8_t ​InfadaStone+        uint8_t ​infadaStone
-        uint8_t ​Element115+        uint8_t ​element115
-        uint8_t ​IsisEye+        uint8_t ​isisEye
-        uint8_t ​DaggerOfOra+        uint8_t ​daggerOfOra
-        uint8_t ​Unknown3[20]; +        uint8_t ​unknown3[20]; 
-    } Blocks[24];  +    } levelInitData[24];  
-    uint32_t ​ElapsedTime; // in game ticks (1/30th of a second), so divide by 30 for time in seconds +    uint32_t ​elapsedTime; // in game ticks (1/30th of a second), so divide by 30 for time in seconds 
-    uint32_t ​AmmoUsed+    uint32_t ​ammoUsed
-    uint32_t ​Hits+    uint32_t ​hits
-    uint32_t ​DistanceTraveled; // Divide by 448.18 for value in meters +    uint32_t ​distanceTraveled; // Divide by 448.18 for value in meters 
-    uint32_t ​Kills+    uint32_t ​kills
-    uint8_t ​Secrets; // TODO: study TR3's secrets system +    uint8_t ​secrets; // TODO: study TR3's secrets system 
-    uint8_t ​HealthPacksUsed; // Divide by 2 for value. Large medipack = 1; Small = 0.5 +    uint8_t ​healthPacksUsed; // Divide by 2 for value. Large medipack = 1; Small = 0.5 
-    uint8_t ​LevelNumber; // First level = 1 +    uint8_t ​levelNumber; // First level = 1 
-    uint8_t ​Unknown5a[2]; +    uint8_t ​unknown5a[2]; 
-    uint8_t ​UnlimitedAmmo; // Enabled = 1 +    uint8_t ​unlimitedAmmo; // Enabled = 1 
-    uint8_t ​Unknown5b[17]; +    uint8_t ​unknown5b[17]; 
-    uint8_t ​LevelNumber+    uint8_t ​levelNumber
-    uint8_t ​Unknown5c[4]; +    uint8_t ​unknown5c[4]; 
-    uint8_t ​Puzzle[4]; // Corresponds to TOMBPC.DAT Puzzle & Keys entries +    uint8_t ​puzzle[4]; // Corresponds to TOMBPC.DAT Puzzle & Keys entries 
-    uint8_t ​Keys[4];+    uint8_t ​keys[4];
     // This part needs to be studied     // This part needs to be studied
-    uint8_t ​Unknown6[744]; +    uint8_t ​unknown6[744]; 
-    uint16_t ​Health; // Divide by 10 for floating point value between 0 and 100; 32767 (0x7FFF) means unlimited +    uint16_t ​health; // Divide by 10 for floating point value between 0 and 100; 32767 (0x7FFF) means unlimited 
-    uint8_t ​Unknown7[1952]; +    uint8_t ​unknown7[1952]; 
-    uint16_t ​Air+    uint16_t ​air
-    uint8_t ​ReadToEOF[];+    uint8_t ​readToEOF[];
 }; };
 </​code>​ </​code>​
Line 69: Line 79:
 ===== Identifications ===== ===== Identifications =====
  
-The ''​LevelNumber''​ field is used for determining what level the game should load when opening the savegame. Although in TR3 you can choose in what order you go to Nevada, South Pacific and London, the order of levels here seems to be constant:+The ''​levelNumber''​ field is used for determining what level the game should load when opening the savegame. Although in TR3 you can choose in what order you go to Nevada, South Pacific and London, the order of levels here seems to be constant:
  
 ^ ID ^ Level ^ Puzzle ^^^^ Key ^^^^ ^ ID ^ Level ^ Puzzle ^^^^ Key ^^^^
Line 93: Line 103:
 |  19 |  Meteorite Cavern ​ |  |  |  |  |  |  |  |  | |  19 |  Meteorite Cavern ​ |  |  |  |  |  |  |  |  |
 |  20 |  All Hallows ​ |  |  |  |  |  Vault Key  |  |  |  | |  20 |  All Hallows ​ |  |  |  |  |  Vault Key  |  |  |  |
 +^ The Lost Artifact levels ||||||||||
 +|  1 |  Highland Fling  |  Crowbar ​ |  Thistle Stone  |  |  |  |  |  |  |
 +|  2 |  Willard'​s Lair  |  Crowbar ​ |  |  |  |  Cairn Key  |  |  |  |
 +|  3 |  Shakespeare Cliff  |  Pump Access Disk  |  |  |  |  Drill Activator Key  |  |  |  |
 +|  4 |  Sleeping with the Fishes ​ |  Circuit Bulb  |  Mutant Sample ​ |  Mutant Sample ​ |  Circuit Bulb  |  |  |  |  |
 +|  5 |  It's a Madhouse! ​ |  The Hand Of Rathmore ​ |  |  |  |  Zoo Key  |  |  |  Aviary Key  |
 +|  6 |  Reunion ​ |  The Hand Of Rathmore ​ |  |  |  |  |  |  |  |
trs/savegame/tr3.txt · Last modified: 2017/03/25 20:13 (external edit)
Back to top
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0