Difference between revisions of "RKG (File Format)"

From Custom Mario Kart
Jump to navigation Jump to search
(New information about format written up.)
Line 13: Line 13:
 
| 0x04
 
| 0x04
 
| char[3]
 
| char[3]
| time
+
| time (7 bits minutes, 7 bits seconds, 10 bits milliseconds)
 
|-
 
|-
 
| 0x07
 
| 0x07
 
| char[1]
 
| char[1]
| track (important - determines on which slot it loads.)
+
| track (important - determines on which slot it loads. Non-standard.)
 
|-
 
|-
 
| 0x08
 
| 0x08
Line 33: Line 33:
 
| 0x0C
 
| 0x0C
 
| char[2]
 
| char[2]
| 00 04 for normal/your own ghost, 08 94 for staff ghost and 08 98 for expert ghost.
+
| A bitfield indicating ghost properties. 08 00 indicates compression. 00 04 for normal/your own ghost, 08 94 for staff ghost and 08 98 for expert ghost.  
 
|-
 
|-
 
| 0x0E
 
| 0x0E
 
| char[2]
 
| char[2]
| Unknown
+
| Decompressed input data length (from 0x88 onwards)
 
|-
 
|-
 
| 0x10
 
| 0x10
Line 93: Line 93:
 
| 0x88
 
| 0x88
 
| int
 
| int
| Length of the Yaz1 data in bytes.
+
| Length of the Yaz1 data in bytes, if data is compressed. Start of input data if not.
 
|-
 
|-
 
| 0x8C
 
| 0x8C

Revision as of 23:29, 20 December 2015

RKG is the format of ghost data. In a savefile all ghosts are saved in the rksys file. Staff ghosts are saved each in a rkg file on the disc.

Offset Type Description
0x00 char[4] 'RKGD' in ASCII; File identifier
0x04 char[3] time (7 bits minutes, 7 bits seconds, 10 bits milliseconds)
0x07 char[1] track (important - determines on which slot it loads. Non-standard.)
0x08 char[1] vehicle
0x09 char[1] character
0x0A char[2] Unknown / Used controller?
0x0C char[2] A bitfield indicating ghost properties. 08 00 indicates compression. 00 04 for normal/your own ghost, 08 94 for staff ghost and 08 98 for expert ghost.
0x0E char[2] Decompressed input data length (from 0x88 onwards)
0x10 char[1] Lap count (tested with lap modifier)
0x11 char[3] 1st lap time
0x14 char[3] 2nd lap time
0x17 char[3] 3rd lap time
0x1A char[3] 4th lap time
0x1D char[3] 5th lap time
0x20 char[20] padding / NOT 6th lap and so on.
0x34 char country (see http://wiibrew.org/wiki/Country_Codes)
0x35 char state (see MKWii_Network_Protocol/USER/State_codes)
0x36 char[2] Unused - always 0x00
0x38 char[2] Padding (00 00)
0x3C char[4B] Driver's Mii Data
0x52 char[1] country
0x88 int Length of the Yaz1 data in bytes, if data is compressed. Start of input data if not.
0x8C char The actual ghost controller input data. outside of the savegame it is compressed in Yaz0 with Yaz1 as an file identifier.
int A CRC-32 Checksum of the whole file (excluding the last 4 bytes of course).

The bytes 0x34 to 0x37 are set to 0xFFFFFFFF if the user who created that ghost data disabled sharing his country / location information.