Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
trs:savegame:tr2 [2024/12/04 12:45] – [TR2] stohrendorf | trs:savegame:tr2 [2024/12/05 12:18] (current) – [TR2] stohrendorf | ||
---|---|---|---|
Line 6: | Line 6: | ||
uint8_t saveName[75]; | uint8_t saveName[75]; | ||
int32_t saveNumber; | int32_t saveNumber; | ||
- | 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 | ||
{ | { | ||
Line 32: | Line 32: | ||
* 7 Harpoon gun | * 7 Harpoon gun | ||
*/ | */ | ||
- | uint8_t weapon; // current held weapon | + | uint8_t weapon; // equipped |
/* 00000001 Level unlocked | /* 00000001 Level unlocked | ||
* 00000010 Pistols | * 00000010 Pistols | ||
Line 51: | Line 51: | ||
uint8_t secretBits; | uint8_t secretBits; | ||
uint8_t healthPacksUsed; | uint8_t healthPacksUsed; | ||
- | } levelInitData[23]; | + | } levelInitData[24]; |
uint32_t elapsedTime; | uint32_t elapsedTime; | ||
uint32_t ammoUsed; | uint32_t ammoUsed; | ||
Line 63: | Line 63: | ||
uint8_t secrets; | uint8_t secrets; | ||
uint8_t healthPacksUsed; | uint8_t healthPacksUsed; | ||
- | | + | |
- | uint8_t unknown5a; | + | |
uint8_t unlimitedAmmo; | uint8_t unlimitedAmmo; | ||
- | uint8_t | + | uint8_t |
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 | + | |
- | uint8_t | + | uint8_t flipStates[10]; |
- | uint16_t | + | uint16_t trackFlags[64]; |
- | uint8_t | + | uint8_t cameraFlags[]; |
- | uint16_t | + | uint8_t itemData[]; |
+ | uint16_t laraObjectNumber; | ||
+ | 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 readToEOF[]; | uint8_t readToEOF[]; | ||
}; | }; |