Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
trs:savegame:tr2 [2017/02/23 00:59] – zdimension | trs:savegame:tr2 [2024/12/05 12:18] (current) – [TR2] stohrendorf | ||
---|---|---|---|
Line 2: | Line 2: | ||
<code cpp> | <code cpp> | ||
- | struct | + | struct |
{ | { | ||
- | uint8_t | + | uint8_t |
- | int32_t | + | int32_t |
- | uint8_t Unknown2[44]; | + | |
// 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. |
+ | // For simplicity, this includes the tile menu as a level. | ||
struct | struct | ||
{ | { | ||
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint16_t | + | uint16_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | /* 00000001 | + | /* 0 None |
+ | * 1 Pistols | ||
+ | * 2 Automatic pistols | ||
+ | * 3 Uzis | ||
+ | * 4 Shotgun | ||
+ | * 5 M16 | ||
+ | * 6 Grenade launcher | ||
+ | * 7 Harpoon gun | ||
+ | */ | ||
+ | uint8_t weapon; // equipped weapon | ||
+ | /* 00000001 | ||
* 00000010 Pistols | * 00000010 Pistols | ||
* 00000100 Automatic pistols | * 00000100 Automatic pistols | ||
Line 32: | Line 42: | ||
* 10000000 Harpoon gun | * 10000000 Harpoon gun | ||
*/ | */ | ||
- | | + | |
- | uint8_t | + | uint8_t |
- | } Blocks[23]; | + | uint32_t levelTime; // in game ticks |
- | uint32_t | + | uint32_t weaponHits; |
- | uint32_t | + | uint32_t weaponShots; |
- | uint32_t | + | uint32_t travelledDistance; |
- | uint32_t | + | uint16_t kills; |
- | uint32_t | + | uint8_t secretBits; |
+ | uint8_t healthPacksUsed; | ||
+ | } levelInitData[24]; | ||
+ | uint32_t | ||
+ | uint32_t | ||
+ | uint32_t | ||
+ | uint32_t | ||
+ | uint32_t | ||
/* 00000001 Bronze | /* 00000001 Bronze | ||
* 00000010 Jade | * 00000010 Jade | ||
* 00000100 Gold | * 00000100 Gold | ||
*/ | */ | ||
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | | + | |
- | uint8_t | + | uint8_t |
- | uint8_t UnlimitedAmmo; // Enabled = 1 | + | uint8_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | uint8_t |
- | uint8_t | + | |
- | // This part needs to be studied | + | uint8_t flipStates[10]; |
- | uint8_t | + | uint16_t trackFlags[64]; |
- | uint16_t | + | uint8_t cameraFlags[]; |
- | uint8_t | + | uint8_t itemData[]; // item-specific savegame data, needs to be studied |
- | uint16_t | + | uint16_t laraObjectNumber; |
- | uint8_t | + | uint16_t laraHandStatus; |
+ | uint16_t laraWeapon1; | ||
+ | uint16_t laraWeapon2; | ||
+ | uint16_t laraWeapon3; | ||
+ | uint16_t laraFallspeedOverride; | ||
+ | uint16_t laraWaterState; | ||
+ | uint8_t | ||
+ | uint16_t | ||
+ | uint16_t laraStumbleDir; | ||
+ | uint16_t laraAirTime; // in game ticks | ||
+ | uint8_t unknown8[4]; | ||
+ | uint16_t laraUnderwaterSpeed; | ||
+ | uint16_t stumbleTimeout; | ||
+ | uint16_t flareTimer; | ||
+ | uint16_t currentVehicleId; | ||
+ | uint16_t currentWeaponItemId; | ||
+ | uint16_t weaponObjectNumberLeftHand; | ||
+ | uint16_t weaponFrame; | ||
+ | uint16_t weaponFlags; | ||
+ | uint32_t distanceToWaterSurface; | ||
+ | Vector3_32 travelDistancePrevPos; | ||
+ | uint8_t | ||
+ | uint32_t laraMeshPtrs[15]; | ||
+ | uint32_t firingAtEnemy; | ||
+ | Vector2_16 aimAngles; | ||
+ | uint16_t | ||
+ | uint16_t moveAngle; | ||
+ | VectorYXZ_16 headRot; | ||
+ | VectorYXZ_16 torsoRot | ||
+ | |||
+ | struct WeaponAnimData { | ||
+ | uint32_t animFrame; // pointer to anim frame data | ||
+ | uint16_t frame; | ||
+ | uint16_t animId; | ||
+ | uint16_t canShoot; | ||
+ | VectorXY_16 aimAngles; | ||
+ | uint8_t unknown[2]; | ||
+ | uint16_t shooting; | ||
+ | }; | ||
+ | WeaponAnimData weaponAnimRight; | ||
+ | WeaponAnimData weaponAnimLeft; | ||
+ | uint32_t pistolsAmmo; | ||
+ | uint32_t magnumsAmmo; | ||
+ | uint32_t uziAmmo; | ||
+ | uint32_t shotgunAmmo; | ||
+ | uint32_t harpoonAmmo; | ||
+ | uint32_t grenadeLauncherAmmo; | ||
+ | uint32_t m16Ammo; | ||
+ | uint32_t unknown11; | ||
+ | uint32_t laraItemPtr; | ||
+ | uint32_t gameEffectsPtr; | ||
+ | uint16_t firstFreeEffect; | ||
+ | uint16_t firstFreeItem; | ||
+ | uint16_t firstActiveItem; | ||
+ | uint16_t lastEffect; | ||
+ | uint16_t bodyListHead; | ||
+ | |||
+ | if(weapon1 != -1) { | ||
+ | // data about this weapon | ||
+ | uint16_t weaponObjectId; | ||
+ | uint16_t weaponAnimNumber; | ||
+ | uint16_t weaponFrame; | ||
+ | uint16_t weaponAnimState; | ||
+ | uint16_t goalAnimState; | ||
+ | } | ||
+ | |||
+ | uint32_t currentFlipEffect; | ||
+ | uint32_t flipEffectDuration; | ||
+ | uint32_t unknown12; | ||
+ | uint32_t activeFlares; | ||
+ | |||
+ | struct FlareInfo { | ||
+ | int32_t x, y, z; | ||
+ | int16_t rotX, rotY, rotZ; | ||
+ | uint16_t room; | ||
+ | uint16_t speed; | ||
+ | uint16_t fallspeed; | ||
+ | uint32_t unknown; | ||
+ | }; | ||
+ | |||
+ | FlareInfo flareInfos[numFlares]; | ||
+ | |||
+ | // remainder is unused | ||
+ | uint8_t | ||
}; | }; | ||
</ | </ | ||
Line 63: | Line 163: | ||
===== Identifications ===== | ===== Identifications ===== | ||
- | The '' | + | The '' |
^ ID ^ Level ^ Puzzle ^^^^ Key ^^^^ | ^ ID ^ Level ^ Puzzle ^^^^ Key ^^^^ | ||
Line 88: | Line 188: | ||
| 20 | Wreck of the Maria Doria (// | | 20 | Wreck of the Maria Doria (// | ||
| 21 | Tibetan Foothills (// | | 21 | Tibetan Foothills (// | ||
+ | ^ Golden Mask levels |||||||||| | ||
+ | | 1 | The Cold War | | | | | Guardroom Key | Shaft ' | ||
+ | | 2 | Fool's Gold | Circuit Board | | | | CardKey 1 | | | CardKey 2 | | ||
+ | | 3 | Furnace of the Gods | Mask Of Tornarsuk | ||
+ | | 4 | Kingdom | ||
+ | | 5 | Nightmare In Vegas | Elevator Junction | ||