GTA 1 Savegame Format

Back to main page

Description

The savegame file contains scores, players, level complete etc.

File Location

GTADATA\PLAYER_A.DAT (for GTA1)

GTADATA\UK\PLAYER_A.DAT (for London 1969)

GTADATA\UK\PLAYER_E.DAT (for London 1961)

Notes

Player_a.dat of GTA Classics/Steam and GTA Retail are incompatible, since they have a different structure!

GTA Classics will crash if the fifth byte is not equal to 6.

GTA Classics can therefore not correctly load the previously selected resolution.

All Together

// London 1969:   0x2FF bytes (gtadata\uk\player_a.dat)
// London 1961:   0x194 bytes (gtadata\uk\player_e.dat)
// GTA1 Retail:   0x3F1 bytes (gtadata\player_a.dat)
// GTA1 Classics: 0x414 bytes (gtadata\player_a.dat)
PlayerA {
    // London 1969:   0x12 bytes
    // London 1961:   0x12 bytes
    // GTA1 Retail:   0x12 bytes
    // GTA1 Classics: 0x18 bytes
    Options {
        byte soundVolume;            // 0 = off, 1..7
        byte musicVolume;            // 0 = off, 1..7
        byte textSpeed;              // 1..3
        byte radioMode;              // 0=radio, 1=constant
        byte resolution;             // In Retail: Dependent on the system.
                                     // In Rockstar Classics:
                                     // 00 = 640x480x16
                                     // 01 = 800x600x16
                                     // 02 = 1024x768x16
                                     // 03 = 640x480x32
                                     // 04 = 800x600x32
                                     // 05 = 1024x768x32
        byte resolution_default;     // will be initialized with the same value as "resolution", but will then never be read or written for any purpose
        byte reserved;               // will not be read or written by the code for any purpose
        byte transparencyEffects;    // 0=off, 1=on
        [BYTE|DWORD] deathmatch_mode; // 0=score, 1=kills; in Retail: BYTE, in Rockstar Classics: DWORD
        DWORD deathmatch_score;      // default = 100000
        DWORD deathmatch_kills;      // default = 10
        [BYTE|DWORD] language;       // in Retail: BYTE, in Rockstar Classics: DWORD
                                     // 0 = English
                                     // 1 = French
                                     // 2 = German
                                     // 3 = Italian
                                     // 4 = Japanese
                                     // 99 = English with swear words (special.fxt)
                                     // 255 (default) = Take value from registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DMA Design\Grand Theft Auto), default
    }
    
    // London 1969:   12 sets á 0x13 bytes
    // London 1961:    3 sets á 0x13 bytes
    // GTA1 Retail:   18 sets á 0x13 bytes
    // GTA1 Classics: 18 sets á 0x14 bytes
    Top3HighScores[...] {
        DWORD score;
        szString[...] playerName;  // in Retail: szString[0xF], in Rockstar Classics: szString[0x10]
    }
    
    // London 1969:   8 sets á 0x4F bytes
    // London 1961:   8 sets á 0x4F bytes
    // GTA1 Retail:   8 sets á 0x4F bytes
    // GTA1 Classics: 8 sets á 0x50 bytes
    Player[...] {
        szString[...] playerName;  // in Retail: szString[0xF], in Rockstar Classics: szString[0x10]
        int32[6] levelHighscore.   // -1 = level not unlocked
        DWORD unknown1
        DWORD multiplayer_selected_area; // e.g. 0=LC, 1=SA, 2=VC
        DWORD unknown2
        DWORD multiplayer_selected_game; // 0=deathmatch, 1..3=canonball 1..3
        longbool[6] videoUnlocked; // 0=not unlocked, 1=unlocked
    }
    
    // London 1969:   0x11 bytes
    // London 1961:   0x11 bytes
    // GTA1 Retail:   0x11 bytes
    // GTA1 Classics: 0x14 bytes
    Footer {
        byte selectedPlayerID;   // values = 1..8
        szString[...] multiplayer_host_title; // default = "GTA Game"; in Retail: szString[0x10], in Rockstar Classics: szString[0x13]
    }
}

GTA 1 Retail Only

// GTA1 Retail:   0x3F1 bytes (gtadata\player_a.dat)
PlayerA {
    // GTA1 Retail:   0x12 bytes
    Options {
        byte soundVolume;          // 0 = off, 1..7
        byte musicVolume;          // 0 = off, 1..7
        byte textSpeed;            // 1..3
        byte radioMode;            // 0=radio, 1=constant
        byte resolution;           // Dependent on the system.
        byte resolution_default;   // will be initialized with the same value as "resolution", but will then never be read or written for any purpose
        byte reserved;             // will not be read or written by the code for any purpose
        byte transparencyEffects;  // 0=off, 1=on
        byte deathmatch_mode;      // 0=score, 1=kills
        DWORD deathmatch_score;    // default = 100000
        DWORD deathmatch_kills;    // default = 10
        byte language;             // Values:
                                   // 0 = English
                                   // 1 = French
                                   // 2 = German
                                   // 3 = Italian
                                   // 4 = Japanese
                                   // 99 = English with swear words (special.fxt)
                                   // 255 (default) = Take value from registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DMA Design\Grand Theft Auto), default
    }
    
    // GTA1 Retail:   18 sets á 0x13 bytes
    Top3HighScores[18] {
        DWORD score;
        szString[0xF] playerName;
    }
    
    // GTA1 Retail:   8 sets á 0x4F bytes
    Player[8] {
        szString[0xF] playerName;
        int32[6] levelHighscore.   // -1 = level not unlocked
        DWORD unknown1
        DWORD multiplayer_selected_area; // 0=LC, 1=SA, 2=VC
        DWORD unknown2
        DWORD multiplayer_selected_game; // 0=deathmatch, 1..3=canonball 1..3
        longbool[6] videoUnlocked; // 0=not unlocked, 1=unlocked
    }
    
    // GTA1 Retail:   0x11 bytes
    Footer {
        byte selectedPlayerID;   // values = 1..8
        szString[0x10] multiplayer_host_title; // default = "GTA Game"
    }
}

London 1969 Only

// London 1969:   0x2FF bytes (gtadata\uk\player_a.dat)
PlayerA {
    // London 1969:   0x12 bytes
    Options {
        byte soundVolume;          // 0 = off, 1..7
        byte musicVolume;          // 0 = off, 1..7
        byte textSpeed;            // 1..3
        byte radioMode;            // 0=radio, 1=constant
        byte resolution;           // Dependent on the system.
        byte resolution_default;   // will be initialized with the same value as "resolution", but will then never be read or written for any purpose
        byte reserved;             // will not be read or written by the code for any purpose
        byte transparencyEffects;  // 0=off, 1=on
        byte deathmatch_mode;      // 0=score, 1=kills
        DWORD deathmatch_score;    // default = 100000
        DWORD deathmatch_kills;    // default = 10
        byte language;             // Values:
                                   // 0 = English
                                   // 1 = French
                                   // 2 = German
                                   // 3 = Italian
                                   // 4 = Japanese
                                   // 99 = English with swear words (special.fxt)
                                   // 255 (default) = Take value from registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DMA Design\Grand Theft Auto), default
    }
    
    // London 1969:   12 sets á 0x13 bytes
    Top3HighScores[12] {
        DWORD score;
        szString[0xF] playerName;
    }
    
    // London 1969:   8 sets á 0x4F bytes
    Player[8] {
        szString[0xF] playerName;
        int32[6] levelHighscore.   // -1 = level not unlocked
        DWORD unknown1
        DWORD multiplayer_selected_area;
        DWORD unknown2
        DWORD multiplayer_selected_game; // 0=deathmatch, 1..3=canonball 1..3
        longbool[6] videoUnlocked; // 0=not unlocked, 1=unlocked
    }
    
    // London 1969:   0x11 bytes
    Footer {
        byte selectedPlayerID;   // values = 1..8
        szString[0x10] multiplayer_host_title; // default = "GTA Game"
    }
}

London 1961 Only

// London 1961:   0x194 bytes (gtadata\uk\player_e.dat)
PlayerA {
    // London 1961:   0x12 bytes
    Options {
        byte soundVolume;          // 0 = off, 1..7
        byte musicVolume;          // 0 = off, 1..7
        byte textSpeed;            // 1..3
        byte radioMode;            // 0=radio, 1=constant
        byte resolution;           // Dependent on the system.
        byte resolution_default;   // will be initialized with the same value as "resolution", but will then never be read or written for any purpose
        byte reserved;             // will not be read or written by the code for any purpose
        byte transparencyEffects;  // 0=off, 1=on
        byte deathmatch_mode;      // 0=score, 1=kills
        DWORD deathmatch_score;    // default = 100000
        DWORD deathmatch_kills;    // default = 10
        byte language;             // Values:
                                   // 0 = English
                                   // 1 = French
                                   // 2 = German
                                   // 3 = Italian
                                   // 4 = Japanese
                                   // 99 = English with swear words (special.fxt)
                                   // 255 (default) = Take value from registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DMA Design\Grand Theft Auto), default
    }
    
    // London 1961:    3 sets á 0x13 bytes
    Top3HighScores[3] {
        DWORD score;
        szString[0xF] playerName;
    }
    
    // London 1961:   8 sets á 0x4F bytes
    Player[8] {
        szString[0xF] playerName;
        int32[6] levelHighscore.   // -1 = level not unlocked
        DWORD unknown1
        DWORD multiplayer_selected_area;
        DWORD unknown2
        DWORD multiplayer_selected_game; // 0=deathmatch, 1..3=canonball 1..3
        longbool[6] videoUnlocked; // 0=not unlocked, 1=unlocked
    }
    
    // London 1961:   0x11 bytes
    Footer {
        byte selectedPlayerID;   // values = 1..8
        szString[0x10] multiplayer_host_title; // default = "GTA Game"
    }
}

GTA1 Classics Only

// GTA1 Classics: 0x414 bytes (gtadata\player_a.dat)
PlayerA {
    // GTA1 Classics: 0x18 bytes
    Options {
        byte soundVolume;          // 0 = off, 1..7
        byte musicVolume;          // 0 = off, 1..7
        byte textSpeed;            // 1..3
        byte radioMode;            // 0=radio, 1=constant
        byte resolution;           // Dependent on the system.
                                   // Values:
                                   // 00 = 640x480x16
                                   // 01 = 800x600x16
                                   // 02 = 1024x768x16
                                   // 03 = 640x480x32
                                   // 04 = 800x600x32
                                   // 05 = 1024x768x32
        byte resolution_default;   // will be initialized with the same value as "resolution", but will then never be read or written for any purpose
        byte reserved;             // will not be read or written by the code for any purpose
        byte transparencyEffects;  // 0=off, 1=on
        DWORD deathmatch_mode;     // 0=score, 1=kills
        DWORD deathmatch_score;    // default = 100000
        DWORD deathmatch_kills;    // default = 10
        DWORD language;            // Values:
                                   // 0 = English
                                   // 1 = French
                                   // 2 = German
                                   // 3 = Italian
                                   // 4 = Japanese
                                   // 99 = English with swear words (special.fxt)
                                   // 255 (default) = Take value from registry (HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DMA Design\Grand Theft Auto), default
    }
    
    // GTA1 Classics: 18 sets á 0x14 bytes
    Top3HighScores[18] {
        DWORD score;
        szString[0x10] playerName;
    }
    
    // GTA1 Classics: 8 sets á 0x50 bytes
    Player[8] {
        szString[0x10] playerName;
        int32[6] levelHighscore.   // -1 = level not unlocked
        DWORD unknown1
        DWORD multiplayer_selected_area; // 0=LC, 1=SA, 2=VC
        DWORD unknown2
        DWORD multiplayer_selected_game; // 0=deathmatch, 1..3=canonball 1..3
        longbool[6] videoUnlocked; // 0=not unlocked, 1=unlocked
    }
    
    // GTA1 Classics: 0x14 bytes
    Footer {
        byte selectedPlayerID;   // values = 1..8
        szString[0x13] multiplayer_host_title; // default = "GTA Game"
    }
}