Saves (GTA LCS)
Jump to navigation
Jump to search
This article aims to document the save file format of GTA LCS.
Data Blocks
- A save file consists of 5 blocks
- The first 4 bytes of the block contain a string describing the block ("SIMP", "SCRT", "GRGE", "PLYR" and "STAT")
- The next 4 bytes contain the size of the block
- Byte order is little endian. For example, the number 3452 (0x0D7C) is represented as 0x7C 0x0D in little endian.
Block 0: SIMP (Simple Variables)
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | +0 | +0 | +0 | char[4] | block magic number ("SIMP") |
+4 | +4 | +4 | +0 | uint32 | block size |
+8 | +8 | +8 | +0 | - | start of block, data below |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+12 | char[120] | last mission passed name | |||
+132 | uint32 | current level | |||
+136 | uint32 | current area | |||
+140 | uint32 | language | |||
+144 | uint32 | milliseconds per game minute | |||
+148 | uint32 | last clock tick | |||
+152 | uint8 | game clock hours | |||
+153 | uint8 | game clock minutes | |||
+154 | uint16 | game clock seconds | |||
+156 | uint32 | total time played in milliseconds | |||
+160 | float | time scale | |||
+164 | float | time step | |||
+168 | float | time step non clipped | |||
+172 | float | frames per update | |||
+176 | uint32 | frame counter | |||
+180 | uint16 | old weather type | |||
+182 | uint16 | new weather type | |||
+184 | uint16 | forced weather type | |||
+188 | uint32 | weather type in list | |||
+192 | uint32 | interpolation value | |||
+196 | uint32 | (unknown) | |||
+200 | uint32 | (unknown) | |||
+204 | uint32 | (unknown) | |||
+208 | uint32 | (unknown) | |||
+212 | uint32 | (unknown) | |||
+216 | uint32 | (unknown) | |||
+220 | uint32 | (unknown) | |||
+224 | uint32 | (unknown) | |||
+228 | uint32 | brightness | |||
+232 | uint8 | display hud | |||
+233 | uint8 | show subtitles | |||
+236 | uint32 | radar mode | |||
+240 | uint8 | blur on | |||
+244 | uint32 | music volume | |||
+248 | uint32 | sfx volume | |||
+252 | uint8 | radio station | |||
+253 | uint8 | output | |||
+254 | uint8 | (unknown) (always 0) | |||
+300 | uint16 | pad status | |||
+302 | uint8 | invert look | |||
+303 | uint8 | swap stick and d-pad | |||
+304 | uint8 | has player cheated | |||
+305 | uint8 | do all taxis have nitro (unused) | |||
+306 | uint8 | target is on (unused) | |||
+308 | float | target pos (unused) | |||
+312 | uint32 | (unknown) |
Block 1: SCRT (Scripts)
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | +0 | +0 | +0 | char[4] | block magic number ("SCRT") |
+4 | +4 | +4 | +0 | uint32 | block size |
+8 | +8 | +8 | +0 | - | start of block, data below |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | char[4] | "SCR\0" | |||
+4 | uint32 | size of block following this variable | |||
+8 | uint32 | total size of script space (n) | |||
+12 | uint32[n/4] | script space content (global variables) | |||
+12+n | - | the content in the following table is offset by 12+n |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | (unknown) (constant 1720) | |||
+4 | uint32 | on mission flag location | |||
+8 | uint32 | last mission passed time | |||
+12 | uint32[64] | Collective array | |||
+268 | uint32 | next free collective index | |||
+272 | BuildingSwap[?] | BuildingSwap array (unknown structure as of now) | |||
+1552 | InvisibilitySettings[52] | invisible objects array | |||
+1968 | uint8 | is using a multiple script file | |||
+1969 | uint8 | has player met Debbie Harry | |||
+1970 | uint16 | (unknown) (constant 0) | |||
+1972 | uint32 | main script size | |||
+1976 | uint32 | largest mission script size | |||
+1980 | uint16 | number of mission scripts | |||
+1982 | uint16 | number of exclusive mission scripts | |||
+1984 | uint32 | number of active scripts | |||
+1988 | RunningScript[ ] | threads |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | type | |||
+4 | uint32 | handle |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | next script | |||
+4 | uint32 | previous script | |||
+8 | uint32 | id | |||
+12 | uint32 | (unknown) | |||
+16 | char* | script name | |||
+24 | uint32 | instruction pointer | |||
+28 | uint32[16] | stack | |||
+92 | uint16 | number of stack pointers | |||
+94 | uint16 | (unknown) | |||
+96 | uint32[104] | local variables | |||
+512 | uint32[2] | timers | |||
+520 | uint8[5] | unknown | |||
+525 | uint8 | condition result | |||
+526 | uint8 | use mission cleanup | |||
+527 | uint8 | is active | |||
+528 | uint32 | wake time | |||
+532 | uint16 | logical operation | |||
+534 | uint8 | not flag | |||
+535 | uint8 | wasted or busted check enabled | |||
+536 | uint8 | wasted or busted check result | |||
+537 | uint8 | is a mission | |||
+538 | uint8[2] | (unknown) (pad?) |
Block 2: GRGE (Garages)
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | +0 | +0 | +0 | char[4] | block magic number ("GRGE") |
+4 | +4 | +4 | +0 | uint32 | block size |
+8 | +8 | +8 | +0 | - | start of block, data below |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | garage count | |||
+4 | uint32 | are bombs free | |||
+8 | uint32 | are resprays free | |||
+12 | uint32 | cars collected (unused) | |||
+16 | uint32 | bank vans collected (unused) | |||
+20 | uint32 | police cars collected (unused) | |||
+24 | uint32 | love media cars collected | |||
+28 | uint32 | unused I/E cars collected | |||
+32 | uint32 | unused I/E cars collected | |||
+36 | uint32 | unused I/E cars collected | |||
+40 | uint32 | help message last displayed (timestamp) | |||
+44 | StoredCar[48] | cars stored in garages | |||
+2156 | Garage[32] | defined garages |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | model id | |||
+4 | float[3] | position | |||
+16 | float[3] | rotation | |||
+28 | uint32 | handling multiplier | |||
+32 | uint32 | immunities | |||
+36 | uint8 | primary colour | |||
+37 | uint8 | secondary colour | |||
+38 | uint8 | radio station | |||
+39 | uint8 | extra 1 | |||
+40 | uint8 | extra 2 | |||
+41 | uint8[3] | (unknown) |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint8[144] | (unknown) | |||
+144 | float[6] | position (x1,x2, y1,y2, z1,z2) | |||
+168 | uint8[32] | (unknown) | |||
+200 | uint8 | garage type | |||
+201 | uint8 | garage state | |||
+202 | uint8[22] | (unknown) |
Love Media Cars - Bitfield
- 0b000000000000001 = Hearse
- 0b000000000000010 = Faggio
- 0b000000000000100 = Freeway
- 0b000000000001000 = Deimos SP
- 0b000000000010000 = Manana
- 0b000000000100000 = Hellenbach GT
- 0b000000001000000 = Phobos Vt
- 0b000000010000000 = V8 Ghost
- 0b000000100000000 = Thunder-Rodd
- 0b000001000000000 = PCJ-600
- 0b000010000000000 = Infernus
- 0b000100000000000 = Banshee
- 0b001000000000000 = Patriot
- 0b010000000000000 = Injection
- 0b100000000000000 = Landstalker
Immunities - Bitfield
- 0b000001 = Bullet proof
- 0b000010 = Fire proof
- 0b000100 = Explosion proof
- 0b001000 = Collision proof
- 0b010000 = Melee proof
Radio Stations
- 0 = Head Radio
- 1 = Double Cleff FM
- 2 = K-Jah
- 3 = Rise FM
- 4 = Lips 106
- 5 = Radio Del Mundo
- 6 = MSX 98
- 7 = Flashback FM
- 8 = The Liberty Jam
- 9 = LCFR
- 10 = Mix Tape
Block 3: PLYR (Player)
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | +0 | +0 | +0 | char[4] | block magic number ("PLYR") |
+4 | +4 | +4 | +0 | uint32 | block size |
+8 | +8 | +8 | +0 | - | start of block, data below |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | char[128] | blank | |||
+128 | uint32 | player money | |||
+132 | uint32 | (unknown) | |||
+136 | uint32 | (player money on display) | |||
+140 | uint32 | (unknown) | |||
+144 | uint32 | total packages | |||
+148 | uint32 | (unknown) | |||
+152 | uint16 | (unknown) | |||
+154 | uint16 | (unknown) | |||
+156 | uint8 | max health | |||
+157 | uint8 | max armour | |||
+158 | uint8 | (unknown) | |||
+159 | uint8 | (unknown) | |||
+160 | uint8 | never tired | |||
+161 | uint8 | fast reload | |||
+162 | uint8 | fireproof | |||
+163 | uint8 | get out of jail free | |||
+164 | uint8 | can do drive by | |||
+165 | char[3] | blank |
Block 4: STAT (Statistics)
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | +0 | +0 | +0 | char[4] | block magic number ("STAT") |
+4 | +4 | +4 | +0 | uint32 | block size |
+8 | +8 | +8 | +0 | - | start of block, data below |
APK | IOS | PSP | PS2 | TYPE | DESCRIPTION |
---|---|---|---|---|---|
+0 | uint32 | people killed by player | |||
+4 | uint32 | people killed by others | |||
+8 | uint32 | cars exploded | |||
+12 | uint32 | boats exploded | |||
+16 | uint32 | tyres popped | |||
+20 | uint32 | rounds fired by player | |||
+24 | uint32[14] | peds killed of type | |||
+116 | uint32 | helis destroyed | |||
+120 | float | progress made | |||
+124 | uint32 | total progress in game | |||
+128 | float | kgs of explosives used | |||
+132 | uint32 | bullets that hit | |||
+136 | uint32 | cars crushed | |||
+140 | uint32 | heads popped | |||
+144 | uint32 | wanted stars attained | |||
+148 | uint32 | wanted stars evaded | |||
+152 | uint32 | times arrested | |||
+156 | uint32 | times died | |||
+160 | uint32 | days passed | |||
+164 | uint32 | safe house visits | |||
+168 | uint32 | sprayings | |||
+172 | float | maximum jump distance | |||
+176 | float | maximum jump height | |||
+180 | uint32 | maximum jump flips | |||
+184 | uint32 | maximum jump spins | |||
+188 | uint32 | best stunt jump | |||
+192 | uint32 | number of unique jumps found | |||
+196 | uint32 | total number of unique jumps | |||
+200 | uint32 | missions given | |||
+204 | uint32 | passengers dropped off with taxi | |||
+208 | uint32 | money made with taxi | |||
+212 | uint32 | industrial passed (portland) | |||
+216 | uint32 | commercial passed (staunton) | |||
+220 | uint32 | suburban passed (shoreside vale) | |||
+224 | uint32 | pamphlet mission passed (VC leftover) | |||
+228 | uint32 | no more hurricanes | |||
+232 | float | distance travelled on foot | |||
+236 | float | distance travelled by car | |||
+240 | float | distance travelled by bike | |||
+244 | float | distance travelled by boat | |||
+248 | float | distance travelled by plane | |||
+252 | uint32 | lives saved with ambulance | |||
+256 | uint32 | criminals caught | |||
+260 | uint32 | fires extinguished | |||
+264 | uint32 | highest level vigilante mission | |||
+268 | uint32 | highest level ambulance mission | |||
+272 | uint32 | highest level fire mission | |||
+276 | uint32 | photos taken | |||
+280 | uint32 | number kill frenzies passed | |||
+284 | uint32 | max seconds on karmageddon left | |||
+288 | uint32 | max kills on rc triad | |||
+292 | uint32 | total number kill frenzies | |||
+296 | uint32 | total number missions | |||
+300 | uint32 | times drowned | |||
+304 | uint32 | seagulls killed | |||
+308 | uint32 | weapon budget | |||
+312 | uint32 | loan sharks (unused) | |||
+316 | uint32 | movie stunts (unused) | |||
+320 | uint32 | pizzas delivered | |||
+324 | uint32 | noodles delivered | |||
+328 | uint32 | money made from tourist | |||
+332 | uint32 | tourists taken to spots | |||
+336 | uint32 | garbage pickups | |||
+340 | uint32 | ice cream sold | |||
+344 | uint32 | top shooting range score | |||
+348 | uint32 | shooting rank | |||
+352 | uint32 | top scrapyard challenge score | |||
+356 | uint32 | top 9mm mayhem score | |||
+360 | uint32 | top scooter shooter score | |||
+364 | uint32 | top wichita wipeout score | |||
+368 | uint32 | longest wheelie | |||
+372 | uint32 | longest stoppie | |||
+376 | uint32 | longest 2 wheel | |||
+380 | float | longest wheelie distance | |||
+384 | float | longest stoppie distance | |||
+388 | float | longest 2 wheel distance | |||
+392 | float | longest face plant distance | |||
+396 | uint32 | auto painting budget | |||
+400 | uint32 | property destroyed | |||
+404 | uint32 | num property owned | |||
+408 | uint16 | unlocked costumes | |||
+410 | uint32 | blood ring kills | |||
+414 | uint32 | blood ring time | |||
+418 | uint8[14] | properties owned (unused) | |||
+433 | uint32 | highest chase value | |||
+437 | uint32[23] | fastest times | |||
+529 | uint32[5] | highest scores | |||
+561 | char[8] | last mission passed name | |||
+569 | uint32 | cheated count | |||
+573 | uint32 | cars sold | |||
+577 | uint32 | money made with car sales | |||
+581 | uint32 | bikes sold | |||
+585 | uint32 | money made with bike sales | |||
+589 | uint32 | number of exported cars | |||
+593 | uint32 | total number of car export | |||
+597 | uint32 | highest level slash tv | |||
+601 | uint32 | money made with slash tv | |||
+605 | uint32 | total kills on slash tv | |||
+609 | uint32 | packages smuggled | |||
+613 | uint32 | smugglers wasted | |||
+617 | uint32 | fastest smuggling time | |||
+621 | uint32 | money made in coach | |||
+625 | uint32 | money made collecting trash | |||
+629 | uint32 | hitmen killed | |||
+633 | uint32 | highest avenging angel justice dished | |||
+637 | uint32 | avenging angel missions passed | |||
+641 | uint32 | avenging angel highest level portland | |||
+645 | uint32 | avenging angel highest level staunton | |||
+649 | uint32 | avenging angel highest level shoreside vale | |||
+653 | uint32 | most time left train race | |||
+657 | uint32 | best time go go faggio | |||
+661 | uint32 | highest train cash earned | |||
+665 | uint32 | dirt bike most air | |||
+669 | uint32 | fastest heli race time | |||
+673 | uint32 | best heli race position | |||
+677 | uint32 | number outfit changes | |||
+681 | uint32[3] | fastest rc bandit lap times | |||
+693 | uint32[3] | best rc bandit positions | |||
+705 | uint32[6] | best street race positions | |||
+753 | uint32[6] | fastest street race times | |||
+777 | uint32[10] | fastest dirt bike lap times | |||
+817 | uint32[10] | fastest dirt bike times | |||
+857 | uint32[11] | radio station listen times |
Tools
- GTAForums: GTA LCS Save File Editor – by thehambone
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: Liberty City Stories | |
---|---|
File Formats | .cfg • .chk • .dat • .dtz • .gxt • .ide • .img • .ipl • .mdl • .pss • .scm • .vb |
Documentation | Leeds Engine • Opcodes • Radio Stations • Saves • Scrollbar • Vehicles |
Tools | Sanny Builder |
Useful Links | Community Portal • Discussion Forum • Modding Topic • Mobile Modding |