Saves (GTA 4)
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
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 | dword | savegame version number |
0x04 | dword | savegame size in bytes |
0x08 | dword | global variables size (?) |
0x0C | char[4] | "SAVE" |
0x10 | wchar_t[128] | Name of last mission passed |
0x110 | end |
Notes:
- Savegame version number value is set under the [SAVEGAME_VERSION_NUMBER] section in the GTA IV/common/data/version.txt file
- Last mission name is prefixed with either "TLAD - " or "TBoGT - " for Episodes From Liberty City saves
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 (See discussion).
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 |