Difference between revisions of "Saves (GTA 4)"
(Initial post of my research) |
|||
Line 534: | Line 534: | ||
|} | |} | ||
− | + | {{Savegame-navi}} | |
− | |||
− | |||
− | |||
− | |||
{{GTA4-navi}} | {{GTA4-navi}} | ||
− |
Revision as of 21:18, 8 March 2015
This article deals with the format of a save game file for the PC version of GTA 4.
Location
By default, the game places its save game files into the "%LocalAppData%\Rockstar Games\GTA IV\savegames\user_XXXXXXXXXXXXXXXX\" folder where XXXXXXXXXXXXXXXX is a 16-character string tied to the user's Games for Windows Live account.
The save files themselves are named in the format SGTA4XX where XX represents the in-game slot number. There are 12 slots available in the game (1-12) plus an additional auto-save slot (SGTA400).
Format Details
- Save file size varies but is typically just under 2 megabytes.
- Byte order is little endian. For example, the number 3452 (0x0D7C) is represented as as 0x7C 0x0D.
Data Blocks
With the exception of Block 0 and Block 33, each data block consists of the 5 characters BLOCK followed by a variable amount of data; in general, each block has its own unique internal format. Following the BLOCK character is always a dword specifying the size of the block, starting at the beginning of BLOCK characters.
Block 0: SAVE/Miscellaneous
This block has a constant length of 0x110 bytes and does not start with the characters BLOCK like blocks 1 through 32.
OFFSET | TYPE | DESCRIPTION |
---|---|---|
0x00 | byte[12] | unknown |
0x0C | chr[4] | "SAVE" |
0x10 | chr[256] | Name of last mission passed |
0x110 | end |
Last mission passed notes:
- Each character is separated by a 0x00 byte.
- After removing the separating bytes the mission name is terminated by a 0x00 byte. With the separating bytes intact, it is terminated by 3 0x00 bytes.
- This name is prefixed with either "TLAD - " or "TBoGT - " for Episodes From Liberty City saves.
- When saving the game, the game overwrites the previous mission name, but does not write the entire 256 characters if the name is shorter than 256. This means if the new name is shorter than the previous, some characters of the end of the previous name will remain.
For example if the loaded save contained the name "TBoGT - Chinese Takeout" and the new save needs to write "TBoGT - Corner Kids", the resulting name in the save will be "TBoGT - Corner Kids(0x00)out".
Block 2
This block has a constant length of 0xD4 bytes.
OFFSET | TYPE | DESCRIPTION |
---|---|---|
0x00 | dword | Size of block |
0x04 | byte[18] | unknown |
0x1C | dword | Player money |
0x20 | byte[4] | unknown |
0x24 | dword | Player money (Again. Perhaps one is amount shown on screen.) |
0x28 | byte[172] | unknown |
0xD4 | end |
Block 14: Stats
This block has a constant length of 0x1724 bytes and stores various statistics; most of which can be viewed the game's Stats menu.
OFFSET | TYPE | DESCRIPTION |
---|---|---|
0x00 | dword | Size of block |
0x04 | byte[80] | unknown stats |
0x54 | float | game_progress (GTA IV main story only. TLAD and TBoGT variables are below.) |
0x58 | float | roman_like |
0x5C | float | roman_respect |
0x60 | float | roman_mission_progress |
0x64 | float | vlad_mission_progress |
0x65 | float | jacob_like |
0x6C | float | jacob_respect |
0x70 | float | jacob_mission_progress |
0x74 | float | faustin_mission_progress |
0x78 | float | manny_mission_progress |
0x7C | float | elizabeta_mission_progress |
0x80 | float | dwayne_like |
0x84 | float | dwayne_respect |
0x88 | float | dwayne_mission_progress |
0x8C | float | brucie_like |
0x90 | float | brucie_respect |
0x94 | float | brucie_mission_progress |
0x98 | float | playboy_mission_progress |
0x9C | float | francis_mission_progress |
0xA0 | float | ulpc_mission_progress |
0xA4 | float | packie_like |
0xA8 | float | packie_respect |
0xAC | float | packie_mission_progress |
0xB0 | float | ray_mission_progress |
0xB4 | float | gerry_mission_progress |
0xB8 | float | derrick_mission_progress |
0xBC | float | bernie_mission_progress |
0xC0 | float | bell_mission_progress |
0xC4 | float | gambetti_mission_progress |
0xC8 | float | jimmy_mission_progress |
0xCC | float | carmen_ortiz_fondness |
0xD0 | float | carmen_trust |
0xD4 | float | alex_chilton_fondness |
0xD8 | float | alex_trust |
0xDC | float | kiki_jenkins_fondness |
0xE0 | float | kiki_trust |
0xE4 | float | michelle_fondness |
0xE8 | float | michelle_trust |
0xEC | float | kate_fondness |
0xF0 | float | kate_trust |
0xF4 | byte[93] | unknown stats |
0x268 | float | tlad_game_progress |
0x26C | byte[53] | unknown stats |
0x340 | float | tbogt_game_progress |
0x344 | byte[65] | unknown stats |
0x448 | dword | DWORD missions_passed |
0x44C | dword | missions_failed |
0x450 | dword | missions_attempted |
0x454 | dword | replays_used |
0x458 | dword | people_killed |
0x45C | dword | taxi_fares_completed |
0x460 | dword | times_cheated |
0x464 | dword | days_passed |
0x468 | dword | times_died |
0x46C | dword | people_run_down |
0x470 | dword | vehicles_exploded |
0x474 | dword | flips_done_in_vehicle |
0x478 | dword | most_vehicle_air_spins |
0x47C | dword | air_launches |
0x480 | dword | helicopter_tours_taken |
0x484 | dword | taxis_hailed |
0x488 | dword | stunt_jumps_found |
0x48C | dword | stunt_jumps_completed |
0x490 | dword | kills_since_last_save |
0x494 | dword | fires_started |
0x498 | dword | criminals_killed |
0x49C | dword | cars_stolen |
0x4A0 | dword | bikes_stolen |
0x4A4 | dword | boats_stolen |
0x4A8 | dword | helicopters_stolen |
0x4AC | dword | stars_attained |
0x4B0 | dword | stars_evaded |
0x4B4 | dword | vehicles_exported |
0x4B8 | dword | bridges_flown_under |
0x4BC | dword | paynspray_visits |
0x4C0 | dword | times_got_drunk |
0x4C4 | dword | drug_packages_delivered |
0x4C8 | dword | cars_sold_to_stevie |
0x4CC | dword | random_characters_met |
0x4D0 | dword | bullets_fired |
0x4D4 | dword | bullets_hit |
0x4D8 | dword | kills_by_headshot |
0x4DC | dword | melee_kills |
0x4E0 | dword | armed_kills |
0x4E4 | dword | __stat |
0x4E8 | dword | __stat |
0x4EC | dword | cars_exploded |
0x4F0 | dword | bikes_exploded |
0x4F4 | dword | boats_exploded |
0x4F8 | dword | helicopters_exploded |
0x4FC | dword | tires_popped_by_gunshot |
0x500 | dword | weapons_pickedup |
0x504 | dword | texts_received |
0x508 | dword | calls_made_on_phone |
0x50C | dword | calls_received_on_phone |
0x510 | dword | prostitute_visits |
0x514 | dword | tramps_given_money_to |
0x518 | dword | emails_sent |
0x51C | dword | meals_eaten |
0x520 | dword | hotdogs_eaten |
0x524 | dword | burgers_eaten |
0x528 | dword | nuts_eaten |
0x52C | dword | binoculars_used |
0x530 | dword | player_died_by_melee |
0x534 | dword | player_shot_to_death |
0x538 | dword | player_was_blown_up |
0x53C | dword | player_was_roadkill |
0x540 | dword | scored_with_girl |
0x544 | dword | pool_wins |
0x548 | dword | pool_defeats |
0x54C | dword | pool_clearances_from_break |
0x550 | dword | darts_wins |
0x554 | dword | darts_defeats |
0x558 | dword | darts_180s_hit |
0x55C | dword | darts_bullseyes |
0x560 | dword | darts_shortest_checkout |
0x564 | dword | bowling_high_score |
0x568 | dword | bowling_wins |
0x56C | dword | bowling_draws |
0x570 | dword | bowling_defeats |
0x574 | dword | bowling_spares |
0x578 | dword | bowling_perfects |
0x57C | dword | bowling_strikes |
0x580 | dword | total_races_lost |
0x584 | dword | total_races_won |
0x588 | dword | south_broken_wins |
0x58C | dword | south_broker_races |
0x590 | dword | airport_run_wins |
0x594 | dword | airport_run_races |
0x598 | dword | dukes_blvd_wins |
0x59C | dword | dukes_blvd_races |
0x5A0 | dword | south_algonquin_wins |
0x5A4 | dword | south_algonquin_races |
0x5A8 | dword | star_junction_wins |
0x5AC | dword | star_junction_races |
0x5B0 | dword | road_to_bohan_wins |
0x5B4 | dword | road_to_bohan_races |
0x5B8 | dword | north_alderny_wins |
0x5BC | dword | north_alderny_races |
0x5C0 | dword | elevated_wins |
0x5C4 | dword | elevated_races |
0x5C8 | dword | south_alderny_wins |
0x5CC | dword | south_alderny_races |
0x5D0 | dword | qub3d_high_score |
0x5D4 | dword | boating_destinations |
0x5D8 | dword | heli_ride_destinations |
0x5DC | dword | activities_with_roman |
0x5E0 | dword | activities_with_jacob |
0x5E4 | dword | activities_with_brucie |
0x5E8 | dword | activities_with_dwayne |
0x5EC | dword | activities_with_packie |
0x5F0 | dword | vigilante_levels_done |
0x5F4 | dword | most_wanted_completed |
0x5F8 | dword | pigeons_exterminated |
0x5FC | dword | first_aid_collected |
0x600 | dword | islands_unlocked |
0x604 | dword | total_dates |
0x608 | dword | successful_dates |
0x60C | dword | bad_dates |
0x610 | dword | girls_dumped |
0x614 | dword | emails_received |
0x618 | dword | photos_taken |
0x61C | dword | mocap_cutscenes_skipped |
0x620 | dword | mocap_cutscenes_watched |
0x624 | dword | cutscenes_skipped |
0x628 | dword | cutscenes_watched |
0x62C | dword | sodas_drunk |
0x630 | dword | kills_with_unarmed |
0x634 | dword | kills_with_baseball_bat |
0x638 | dword | kills_with_poolcue |
0x63C | dword | kills_with_knife |
0x640 | dword | kills_with_grenade |
0x644 | dword | kills_with_molotov |
0x648 | dword | kills_with_rocket |
0x64C | dword | kills_with_pistol |
0x650 | dword | kills_with_combat_pistol |
0x654 | dword | kills_with_pump_shotgun |
0x658 | dword | kills_with_combat_shotgun |
0x65C | dword | kills_with_micro_smg |
0x660 | dword | kills_with_smg |
0x664 | dword | kills_with_assault_rifle |
0x668 | dword | kills_with_carbine_rifle |
0x66C | dword | kills_with_combat_sniper |
0x670 | dword | kills_with_sniper_rifle |
0x674 | dword | kills_with_rpg |
0x678 | dword | kills_with_flame_thrower |
0x67C | dword | kills_with_minigun |
0x680 | dword | kills_with_episodic_1 |
0x684 | dword | kills_with_episodic_2 |
0x688 | dword | kills_with_episodic_3 |
0x68C | dword | kills_with_episodic_4 |
0x690 | dword | kills_with_episodic_5 |
0x694 | dword | kills_with_episodic_6 |
0x698 | dword | kills_with_episodic_7 |
0x69C | dword | kills_with_episodic_8 |
0x6A0 | dword | kills_with_episodic_9 |
0x6A4 | dword | kills_with_episodic_10 |
0x6A8 | dword | kills_with_episodic_11 |
0x6AC | dword | kills_with_episodic_12 |
0x6B0 | dword | kills_with_episodic_13 |
0x6B4 | dword | kills_with_episodic_14 |
0x6B8 | dword | kills_with_episodic_15 |
0x6BC | dword | kills_with_episodic_16 |
0x6C0 | dword | kills_with_episodic_17 |
0x6C4 | dword | kills_with_episodic_18 |
0x6C8 | dword | kills_with_episodic_19 |
0x6CC | dword | kills_with_episodic_20 |
0x6D0 | dword | kills_with_episodic_21 |
0x6D4 | dword | kills_with_episodic_22 |
0x6D8 | dword | kills_with_episodic_23 |
0x6DC | dword | kills_with_episodic_24 |
0x6E0 | dword | times_busted |
0x6E4 | dword | saves_made |
0x6E8 | byte[4156] | unknown stats |
0x1724 | end |
Block 32: Checksum
This block has a constant length of 0x08 bytes. The checksum appears to be the sum of most of the bytes preceding it, however, which bytes exactly is unknown.
OFFSET | TYPE | DESCRIPTION |
---|---|---|
0x00 | dword | Size of block |
0x04 | dword | Checksum |
0x08 | end |
Block 33: END
This block has a constant length of 0x16C bytes and does not begin with BLOCK like blocks 1 through 32. Data in this block appears to relate to Games For Windows Live data.
OFFSET | TYPE | DESCRIPTION |
---|---|---|
0x00 | char[4] | END\0 |
0x04 | dword | Unknown, appears to always be 0x128 |
0x08 | byte[292] | Unknown, appears to always be a mix of 0x0, 0x1, 0x2 and 0x3 bytes |
0x12C | byte[64] | Unknown |
0x16C | end |
Savegame | |
---|---|
Formats | Saves (GTA 3) • Saves (GTA VC) • Saves (GTA SA) • Saves (GTA LCS) • Saves (GTA 4) |
Tools | GTASnP - Save File Sharing • GTAForums: GTASum Gamesave Checksum Calculator |
Resources | GTAForums: GTA III Save File Documentation • GTAForums: Vice City Save File Format • Savegames Formats Description |
Grand Theft Auto IV | |
---|---|
File Formats | .dat • .gxt • .ide • .img • .ipl • .nod • .sco • .rpf • .rrr • .wad • .wbd/.wbn • .wdd • .wdr • .wft • .whm • .wpl • .wtd |
Documentation | Audio • Bink Video • Cryptography • Cutscenes • GXT Text • Image listing • Keycodes • Map Listing • Native functions • Paths • Radar Blips • Radio Stations • Saves • Scenarios • VTable • Weapons |
Tools | ASI Loader • ENBSeries • G-Texture • GIMS IV • Ingame WPL Editor • IV Needle • OpenIV • SparkIV • XLiveLess • WPL Manager • X Mod Installer Alice • C++ Script Hook • .NET Script Hook • Scocl |
Tutorials | Importing Textures with OpenIV • Importing Textures with SparkIV |
Modifications | GTA Connected • Gostown IV • Four Multiplayer • IV Multiplayer • CitizenMP:IV Reloaded |
Useful links | Community portal • Discussion forums • Modding forums • Mods on GTAGarage.com |