Saves (GTA 3)

From GTAMods Wiki
Revision as of 15:43, 6 January 2015 by Seemann (talk | contribs) (Block 1: Miscellaneous)
Jump to navigation Jump to search

This article deals with the format of a save game file for the PC version of GTA 3.

Location

By default, the game places its save game files into the folder "GTA3 User Files" which is located in the current user's Documents folder. The location of this folder varies depending upon the version of Windows installed.

The save files themselves are named in the format GTA3sfX.b where X represents the in-game slot number. There are 8 slots available in the game (1-8).

Format Details

  • Save files are ALWAYS 0x3145C (201820) bytes long.
  • Byte order is little endian. For example, the number 3452 is represented as as 0x7C 0x0D.
  • File is divided into 22 blocks, followed by a 4-byte checksum (more info on the checksum below).

Data Blocks

There is a DWORD value preceding any block of data which is equal to the size of the block.

Block 1: Miscellaneous

Game "meta-information" giving the overall state of things. Also includes 'thescripts' sub-block.

OFFSET TYPE DESCRIPTION
0x0000 dword block size
0x0004 wchar_t[24] save name (long names are truncated on the save/load screen)
0x0034 word SYSTEMTIME wYear
0x0036 word SYSTEMTIME wMonth
0x0038 word SYSTEMTIME wDayOfWeek
0x003A word SYSTEMTIME wDay
0x003C word SYSTEMTIME wHour
0x003E word SYSTEMTIME wMinute
0x0040 word SYSTEMTIME wSecond
0x0042 word SYSTEMTIME wMilliseconds
0x0044 dword unknown
0x0048 enum current island) (1=Portland; 2=Staunton; 3=Shoreside Vale)
0x004C float[3] camera coordinates (x,y,z)
0x0058 dword length (ms) of in-game minute
0x005C dword weather timer
0x0060 byte game hour
0x0061 byte[3] (align)
0x0064 byte game minute
0x0065 byte[3] (align)
0x0068 word (unknown) current pad
0x006A byte[2] (align)
0x006C dword global timer
0x0070 float game speed
0x0074 float (unknown) frame delta time
0x0078 float (unknown) tick time (time of an iteration of the major game loop)
0x007C dword number of the frames processed from the beginning of the game
0x0080 float (unknown)
0x0084 float (unknown)
0x0088 float (unknown)
0x008C word (unknown)
0x008E byte[2] (align)
0x0090 word (unknown)
0x0092 byte[2] (align)
0x0094 word (unknown)
0x0096 byte[2] (align)
0x0098 float (unknown)
0x009C dword (unknown)
0x00A0 dword (unknown)
0x00A4 dword (unknown)
0x00A8 dword (unknown)
0x00AC dword (unknown)
0x00B0 dword (unknown)
0x00B4 dword (unknown)
0x00B8 float (unknown)
0x00BC float (unknown)
0x00C0 TheScripts scripts info
TheScripts structure:
OFFSET TYPE DESCRIPTION
0x0000 dword block size
0x0004 char[4] 'SCR\0' signature
0x0008 ScriptData data dumped from the main.scm
ScriptData structure:
OFFSET TYPE DESCRIPTION
0x0000 dword block size
0x0004 dword script global variables amount (n)
0x0008 dword[n] script global variables dump
0x0000 ScriptInfo various info from scripts
0x03CC dword threads amount (n2)
0x03D0 CRunningScript[n2] script threads dump
ScriptInfo structure:
OFFSET TYPE DESCRIPTION
0x0000 dword block size (always 0x3C8)
0x0004 dword $onmission var offset
0x0008 ContactInfo[16] contacts info (opcodes 0181,0182)
0x0088 Unknown[4] (unknown)
0x0188 dword (unknown)
0x018C StaticReplacement[25] static replacements
0x031C InvisibleObjects[20] invisible objects
0x03BC byte (unknown) unused, always 1
0x03BD byte[3] (align)
0x03C0 dword size of the MAIN section in the main.scm
0x03C4 dword biggest mission size
0x03C8 word missions count
0x03CA byte[2] (align)

Block 2: Peds pool

Block 3: Garages

Block 4: Vehicles pool

Block 5: Objects pool

Block 6: Path find

Block 7: Cranes

Block 8: Pickups

Block 9: Phone info

Block 10: Restarts

Block 11: Radar

Block 12: Zones

Block 13: Gangs

Block 14: Car Generators

Block 15: Particle objects

Block 16: Audio script objects

Block 17: Player info

Block 18: Stats

Block 19: Streaming

Block 20: Ped types

See also

External links