GRAND THEFT AUTO 1 - FORMAT OF PLAYER_A.DAT Analysis by Daniel Marschall, 11 Feb 2019 Current release: https://misc.daniel-marschall.de/spiele/gta1/player_a_format.txt // 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; // 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 deathmatch_mode; // 0=score, 1=kills; in Rockstar Classics: DWORD DWORD deathmatch_score; // default = 100000 DWORD deathmatch_kills; // default = 10 byte language; // 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[18] { DWORD score; szString[0xF] playerName; // 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[8] { szString[0xF] playerName; // in Rockstar Classics: szString[0x10] 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 } // London 1969: 0x11 bytes // London 1961: 0x11 bytes // GTA1 Retail: 0x11 bytes // GTA1 Classics: 0x14 bytes Footer { byte selectedPlayerID; // values = 1..8 szString[0x10] multiplayer_host_title; // default = "GTA Game"; in Rockstar Classics: szString[0x13] } } Some notes about PLAYER_A.DAT (contains scores, players, level complete etc) - Player_a.dat of GTA Classics/Steam and GTA Retail are incompatible! - GTA Classics will crash if the fifth byte is not equal to 6. GTA Classics can therefore not correctly load the previous selected resolution.