This article deals with the format of a save game file for the PC version of GTA Vice City.
Format Details
Block 0: Miscellaneous and Script
Offset
|
Type
|
Description
|
0x30
|
word
|
Year
|
0x32
|
word
|
Month
|
0x34
|
word
|
Day of week
|
0x36
|
word
|
Day
|
0x38
|
word
|
Hour
|
0x3A
|
word
|
Minutes
|
0x3C
|
word
|
Seconds
|
0x3E
|
word
|
Milliseconds
|
0x48
|
float[3]
|
camera coordinates (x,y,z)
|
0x54
|
dword
|
length (ms) of in-game minute (1000=normal)
|
0x5C
|
dword
|
game hour
|
0x60
|
dword
|
game minute
|
0x6C
|
float
|
game speed (015D)
|
0x90
|
dword
|
current weather
|
0x98
|
dword
|
current weather table offset (between 0 and 63)
|
0x9C
|
float
|
current vehicle camera view (between 0.0 and 5.0)
|
0xA0
|
float
|
current on foot camera view (classic controls only)
|
0xA4
|
dword
|
current interior (04BB)
|
0xA8
|
dword
|
taxi boost jump (0572)
|
0xB0
|
dword
|
sky color (04F9)
|
0xB4
|
dword
|
sky atmosphere (0=normal,1=interior)
|
0xB8
|
float
|
sky atmosphere blue overlay (between 0.0 and 1.0)
|
0xE4
|
dword
|
size of script block
|
0xE8
|
-
|
start of script block, see below
|
Script and subblock A:
Offset
|
Type
|
Description
|
0x00
|
string
|
SCR
|
0x04
|
dword
|
size of subblock A
|
0x08
|
-
|
start of subblock A: global variables - each variable is 4 bytes long
|
Subblock B:
Offset
|
Type
|
Description
|
0x00
|
dword
|
size of subblock B
|
0x238
|
-
|
misc., see below
|
Offset
|
Type
|
Description
|
0x01
|
byte
|
kaufman cabs radio (0551)
|
0x04
|
dword
|
size of main
|
0x08
|
dword
|
size of largest mission
|
0x0C
|
dword
|
number of missions
|
Subblock C:
Block 1: Ped Pool
Ped structure:
Offset
|
Type
|
Description
|
0x0A
|
-
|
ped structure, see below
|
0x6E2
|
dword
|
max wanted level
|
0x6E6
|
dword
|
max criminal points, in tandem with max wanted level
|
Ped structure:
Offset
|
Type
|
Description
|
0x34
|
float[3]
|
x,y,z coordinates
|
0xB8
|
float
|
weight
|
0x354
|
float
|
health
|
0x358
|
float
|
armor
|
Block 2: Garages
Offset
|
Type
|
Description
|
0x00
|
dword
|
number of garages (0219)
|
0x04
|
dword
|
free bombs (0=not,1=yes)
|
0x08
|
dword
|
free respray (0335)
|
0x18
|
dword
|
garage type 8 status, see below
|
0x1C
|
dword
|
garage type 9 status
|
0x20
|
dword
|
garage type 10 status
|
0x24
|
dword
|
garage type 22 status
|
0x2C
|
[48]
|
40 bytes each, garage car structures (see below)
|
0x7AC
|
[32]
|
168 bytes each, garage structures (see below)
|
Export garage status (binary format):
- 0b000001=car 1 collected
- 0b000010=car 2 collected
- 0b000100=car 3 collected
- 0b001000=car 4 collected
- 0b010000=car 5 collected
- 0b100000=car 6 collected
Add them up to set the garage as car already collected:
0b000011, cars 1 and 2 collected
0b100011, cars 1, 2, and 6 are collected
Garage car structure:
Offset
|
Type
|
Description
|
0x00
|
dword
|
model ID
|
0x04
|
float[3]
|
x,y,z position
|
0x10
|
float[3]
|
x,y,z vector rotation
|
0x1C
|
dword
|
immunities
|
0x20
|
byte
|
primary color
|
0x21
|
byte
|
secondary color
|
0x22
|
byte
|
current radio station
|
0x23
|
byte
|
variation 1
|
0x24
|
byte
|
variation 2
|
0x25
|
byte
|
bomb type
|
Garage structure:
Offset
|
Type
|
Description
|
0x00
|
byte
|
type
|
0x01
|
byte
|
door status (0=closed,1=opened,2=closing,3=opening)
|
0x02
|
byte
|
max number of cars to store (4=default)
|
0x19
|
byte
|
swing door (03BB)
|
0x1A
|
byte
|
camera follow player (03DA)
|
0x1C
|
float[3]
|
entrance bottom left x,y,z coordinates
|
0x28
|
float[4]
|
rx,ry,rz,rw quaternion rotation
|
0x38
|
float
|
ceiling z coordinate
|
Block 3: Game Logic
Offset
|
Type
|
Description
|
0x00
|
dword
|
number of restart taxis (058D)
|
0x04
|
[16]
|
16 bytes each, restart taxi structures (see below)
|
Restart taxi structure:
Offset
|
Type
|
Description
|
0x0
|
float[3]
|
x,y,z coordinates
|
0xC
|
float
|
z angle rotation
|
Block 7: Cranes
Offset
|
Type
|
Description
|
0x00
|
dword
|
number of cranes
|
0x08
|
[8]
|
124 bytes each, crane structures (see below)
|
Crane structure:
Offset
|
Type
|
Description
|
0x40
|
float
|
current z rotation
|
Block 8: Pickups
Pickup structure, each is 0x34 in size:
Offset
|
Type
|
Description
|
0x0
|
float[3]
|
x,y,z coordinates
|
0x18
|
dword
|
ammo or asset revenue
|
0x2E
|
byte
|
type
|
0x2F
|
byte
|
has been picked up
|
Block 9: Phone Info
Offset
|
Type
|
Description
|
0x04
|
dword
|
number of phones
|
0x08
|
[50]
|
52 bytes each, phone structures (see below)
|
Phone structure:
Offset
|
Type
|
Description
|
0x0
|
float[3]
|
x,y,z coordinates
|
0x2C
|
dword
|
phone status (3=idle,9=ringing,others=leftover GTA III stuff)
|
Block 10: Restart Points Buffer
Offset
|
Type
|
Description
|
0x00
|
string
|
RST
|
0x8
|
float[3]
|
hospital x,y,z coordinates (016C)
|
0x14
|
float
|
hospital z angle
|
Each point is 0x8 in size
|
0x88
|
float[3]
|
police x,y,z coordinates (016D)
|
0x94
|
float
|
police z angle
|
Each point is 0x8 in size
|
0x110
|
float[3]
|
override x,y,z coordinates (016E)
|
0x11C
|
float
|
override z angle
|
Block 11: Radar Blips Buffer
Offset
|
Type
|
Description
|
0x00
|
string
|
RDR
|
0x08
|
[75]
|
48 bytes each, blip structures (see below)
|
Blip structure:
Offset
|
Type
|
Description
|
0x00
|
dword
|
color
|
0x10
|
float[2]
|
x,y coordinates
|
0x18
|
float[3]
|
x,y,z coordinates
|
0x26
|
byte
|
brightness (0166)
|
0x2A
|
word
|
size (0168)
|
0x2C
|
word
|
show (018B)
|
0x2E
|
word
|
type
|
Block 13: All Gang Data
Offset
|
Type
|
Description
|
0x00
|
string
|
GNG
|
0x04
|
[9]
|
24 bytes each, gang structures (see below)
|
Gang structure:
Offset
|
Type
|
Description
|
0x00
|
dword
|
car model (0236)
|
0x04
|
dword
|
ped model 1
|
0x08
|
dword
|
ped model 2
|
0x10
|
dword
|
weapon number 1 (0237)
|
0x14
|
dword
|
weapon number 2
|
Block 14: All Car Generators
Offset
|
Type
|
Description
|
0x00
|
string
|
CGN
|
0x1C
|
[185]
|
44 bytes each, car generator structures (see below)
|
Car generator structure:
Offset
|
Type
|
Description
|
0x00
|
dword
|
model ID
|
0x04
|
float[3]
|
x,y,z coordinates
|
0x10
|
float
|
z angle rotation
|
0x14
|
word
|
primary color
|
0x16
|
word
|
secondary color
|
0x18
|
byte
|
force spawn
|
0x19
|
byte
|
alarm
|
0x1A
|
byte
|
lock
|
0x28
|
word
|
014C
|
0x2A
|
byte
|
has recently been stolen
|
Block 16: All Audio Script Objects
Offset
|
Type
|
Description
|
0x00
|
string
|
AUD
|
0x12
|
-
|
24 bytes each, audio structures (see below)
|
Audio structure:
Offset
|
Type
|
Description
|
0x04
|
word
|
ID number
|
0x08
|
float[3]
|
x,y,z coordinates
|
Block 17: Script Paths
Offset
|
Type
|
Description
|
0x00
|
dword
|
total number of paths
|
0x0C
|
float
|
speed (049E)
|
0x10
|
float
|
distance along path (049F)
|
0x14
|
float
|
some sort of offset
|
0x1C
|
-
|
object handle, up to 6 supported
|
Block 18: Player Info
Offset
|
Type
|
Description
|
0x00
|
dword
|
current money
|
0x0F
|
dword
|
currently displayed money
|
0x13
|
dword
|
number of packages picked up
|
0x17
|
dword
|
total number of packages (02ED)
|
0x1B
|
byte
|
infinite run (0330)
|
0x1C
|
byte
|
fast reload (0331)
|
0x1D
|
byte
|
fireproof (055D)
|
0x1E
|
byte
|
max health
|
0x1F
|
byte
|
max armor
|
0x20
|
byte
|
free busted once
|
0x21
|
byte
|
free wasted once (0414)
|
0x22
|
byte
|
driveby enabled (0501)
|
See also
External links