go back to main here

.sav file introduction

there are 3 different file types seen
profile (contains all save data)
ghost (a ghost replay file)
PMR (unknown)

interestingly the hall of fame records have default letters that are never seen
JEN = Time Trials
WTH = Letter Hunt
CKJ = clockbuster

file structure

the profile structure is relatively the same across each version except for an 8 byte language section

bytes section
0012 file header
0040 settings 1
0008 language settings
European version only
0064 controller? section
0160 padding
0008 settings 2
0064 padding
0320 hall of fame circuit records
0064 padding
1280 hall of fame time trials
1088 hall of fame letter hunt
1408 hall of fame clockbuster
0224 unlockables
4736 bytes

File Header

Offset Type Description
00 u32 file checksum
CRC32
Init = 0
polynomial = 0x04C11DB7
04 u32 always 4
08 u32 amount of bytes in file

settings 1

Offset Type Description
00 u32 0
04 u32 0
08 u32 0
12 u32 year
16 u32 month
20 u32 day
24 u32 hour / 24
28 u32 minute
32 u32 last selected difficulty
* 0 = easy
* 1 = mid
* 2 = hard
* 3 = nightmare
36 u32 auto save
* 0 = off
* 1 = on
40 u8 sfx volume
41 u8 music volume
42 u8 unknown
43 u8 Widescreen Mode
* 0 = off
* 1 = on

language setting

if European version: append table:

Offset Type Description
00 u32 language
* 0 = english
* 1 = french
* 2 = spanish
* 3 = italian
* 4 = german
04 u32 padding?

controller section

Offset Type Description
00 u8 rumble settings
* 0 = off
* 1 = on
01 u8 0
02 u8 1
03 u8 0
04 u32 100
repeat 8 times
64 bytes

+160 bytes padding / check if psp version changes


settings 2

Offset Type Description
00 u8 default time trial letter 1
* 0 to 25 are letters
* 26 is space
01 u8 default time trial letter 2
02 u8 default time trial letter 3
03 u8 pac mobile camera
* 0 = on
* 1 = off
04 u32 always 1
8 bytes

+64 bytes padding


hall of fame records

circuit records: organized like:

cherry cup

easy

mid

hard

nightmare

grape cup

ect...

Offset Type Description
00 u8 trophy
* 00 = no trophy
* 01 = bronze
* 02 = silver
* 03 = gold
01 u8 completed ?
02 u8 character
* 01 = pacman
* 02 = blinky
* 03 = pooka
* 04 = toc man
* 05 = inky
* 06 = clyde
* 07 = ms pac man
* 08 = pinky
* 09 = jr pac man
* 10 = spooky
* 11 = pac devil
* 12 = erwin
* 13 = flygar
* 14 = mr driller
* 15 = prince
* 16 = mappy
03 u8 always 0 padding maybe
04 u32 points | max = 1000000
08 u32 time | max = 333:20:00
12 u32 show cup in hall of fame
* 00 = show
* 01 = don't show
16 bytes
+64 bytes padding

time trials

each track is 80 bytes each

time trial fast lap:

Offset Type Description
00 u32 show cup in hall of fame
* 00 = show
* 01 = don't show
04 u32 padding?
08 u8 0 ?
09 u8 if last run was a fast lap
* 0 = no fast lap
* 1 = fast lap
10 u8 last runs placement
* 0 = didn't place
* 1 = 1st
* 2 = 2nd
* 3 = 3rd
* 4 = 4th
* 5 = 5th
11 u8 letter 1
12 u8 letter 2
13 u8 letter 3
14 u8 character
15 u8 0
16 u32 time
20 bytes

time trial lap:

Offset Type Description
00 u32 padding?
04 u8 letter 1
05 u8 letter 2
06 u8 letter 3
07 u8 character
08 u32 time
12 bytes
repeat 5 times

letter hunt

Offset Type Description
00 u32 padding?
04 u32 lock?
8 bytes
Offset Type Description
00 u8 trophy
* 01 = bronze
* 02 = silver
* 03 = gold
there is always a trophy
01 u8 character
02 u8 letter 1
03 u8 letter 2
04 u8 letter 3
05 u8 0
06 u8 0
07 u8 0
08 u32 time
12 bytes
5 times

clockbuster

Offset Type Description
00 u32 padding?
04 u32 lock?
8 bytes
Offset Type Description
00 u8 trophy
* 00 = no trophy
* 01 = bronze
* 02 = silver
* 03 = gold
01 u8 character
02 u8 letter 1
03 u8 letter 2
04 u8 letter 3
05 u8 0
06 u8 0
07 u8 0
08 u32 pac dots | max = 2000000000
12 u32 0
16 bytes
5 times

unlockables

unlocking the psp exclusive content doesn't work (sad)

Offset Type Description
000 u32 molten mountain arena
004 u32 ghost mansion arena
008 u32 canyon crusade arena
012 u32 arctic iceberg arena (psp)
016 u32 spooky castle (psp)
020 u32 space arena
024 u32 unknown
028 u32 pac man
032 u32 blinky
036 u32 pooka
040 u32 toc man
044 u32 inky
048 u32 clyde
052 u32 ms pac man
056 u32 pinky
060 u32 jr pac man
064 u32 spooky
068 u32 pac devil
072 u32 erwin
076 u32 flygar
080 u32 mr driller (psp)
084 u32 prince
088 u32 mappy (psp)
092 u32 unknown
096 u32 unknown
100 u32 unknown
104 u32 unknown
108 u32 unknown
112 u32 unknown
116 u32 unknown
120 u32 unknown
124 u32 unknown
128 u32 unknown
132 u32 unknown
136 u32 unknown
140 u32 unknown
144 u32 unknown
148 u32 unknown
152 u32 unknown
156 u32 unknown
160 u32 unknown
164 u32 unknown
168 u32 nightmare
172 u32 unknown
176 u32 unknown
180 u32 unknown
184 u32 unknown
188 u32 unknown
192 u32 unknown
196 u32 unknown
200 u32 sir pac a lot
204 u32 unknown
208 u32 unknown
212 u32 sira ice dragon
216 u32 black bomb
220 u32 galaga ship
224 bytes

ghost file structure

bytes section
0012 file header
0004 Ghost character
9608 compressed ghost position data?
9624 bytes

PMR

bytes section
0012 file header
0004 Always 1
16 bytes