Mario Kart Wii Gecko Codes, Cheats, & Hacks
Data Save (rksys.dat) Map - Printable Version

+- Mario Kart Wii Gecko Codes, Cheats, & Hacks (https://mariokartwii.com)
+-- Forum: Hacks/Modding (https://mariokartwii.com/forumdisplay.php?fid=14)
+--- Forum: Resources and References (https://mariokartwii.com/forumdisplay.php?fid=18)
+--- Thread: Data Save (rksys.dat) Map (/showthread.php?tid=1513)



Data Save (rksys.dat) Map - Vega - 04-07-2020

Data Save (rksys.dat) Mapping

EDIT: 1/22/2021

Looks like all the data was copy pasted (by Atlas) to the Wiki Tockdom

http://wiki.tockdom.com/wiki/Rksys.dat


Here is a very incomplete crude mapping of the Data Save.

Credits:
Atlas
Cross1955
Guru
NinARM
Vega
Volderbeek

File Size + Location
Size = 0x2BC000
Wii File System Location = /title/00010004/524d43xx/data/rksys.dat
xx values:
4a = Japan / RMCJ
4b = Korea / RMCK
45 = USA / RMCE
50 = PAL / RMCP

Loading Pointer of Data Save into a Register (for ASM Coders/Devs)
Using r3...Obviously this can only be done after the game has loaded the contents of the Data Save into memory

NTSC-U
lis r3, 0x809C
lwz r3, -0x7078 (r3)
lwz r3, 0x0014 (r3)

PAL
lis r3, 0x809C
lwz r3, -0x28B8 (r3)
lwz r3, 0x0014 (r3)

NTSC-J
lis r3, 0x809C
lwz r3, -0x3858 (r3)
lwz r3, 0x0014 (r3)
   
NTSC-K
lis r3, 0x809B
lwz r3, -0x4278 (r3)
lwz r3, 0x0014 (r3)

Header

0x0000 (double word) =  RKSD0006 Magic ASCII; RKSD stands for Revolution Kart System Data????? (please check)



#Specific Mapping for License 1 (Top Left)
For other Licenses, simply increment the address by the following values...
0x8CC0 for License 2 (Top Right)
0x11980 for License 3 (Bottom Left)
0x1A640 for License 4 (Bottom Right)


RKPD Magic and basic Mii info

0x0008 (word) = RKPD Magic ASCII; RKPD stands for Revolution Kart Player Data????? (please check)
0x001C (5 words) = Mii Name
0x0030 (word) = Mii's Avatar ID
0x0034 (word) =  Mii's Client ID

DWC User Data

0x0048 (word) = ???
0x004C (word) = ???
0x0054 (word) = ???
0x0058 (word) = ???
0x005C (word = ???
0x0060 (word) = Seems to just be a copy of 0x0054
0x0064 (word) = WiFi Profile ID (pid), just the lower 32 bits of your FC (in Hex)
0x006C (word) = ASCII for RMCJ, used in the MD5 Checksum Algo thingy to get your FC from your Profile ID
0x0084 (word) = ???

Various Unlocking and Stat Stuff

Fyi: It appears no bits get flipped for completing the following cups..
50cc Special Cup
50cc Shell Cup
100cc Mushroom Cup
100cc Special Cup
100cc Shell Cup
100cc Lightning Cup
150cc Mushroom Cup
150cc Special Cup
150cc Shell Cup
150cc Lightning Cup
Mirror Mode Mushroom Cup
Mirror Mode Special Cup
Mirror Mode Shell Cup
Mirror Mode Lightning Cup

0x0038 (byte) = Cup completions (bit flipped high if completed)
Bit Breakdown:
Bit 0 = 50cc Mushroom Cup
Bit 1 = 50cc Lightning Cup
Bit 2 = Mirror Mode Leaf Cup
Bit 3 = 150cc Leaf Cup
Bit 4 = 100cc Leaf Cup
Bit 5 = 50cc Leaf Cup
Bit 6 = Mirror Mode Banana Cup
Bit 7 = 150cc Banana Cup

0x0039 (byte) = Cup completions
Bit Breakdown:
Bit 0 = 100cc Banana Cup
Bit 1 = 50cc Banana Cup
Bit 2 = MIrror Mode Star Cup
Bit 3 = 150cc Star Cup
Bit 4 = 100cc Star Cup
Bit 5 = 50cc Star Cup
Bit 6 = Mirror Mode Flower Cup
Bit 7 = 150cc Flower Cup

0x003A (byte) = Cup completions and character unlocks
Bit Breakdown:
Bit 0 = 100cc Flower Cup
Bit 1 = 50cc Flower Cup
Bit 2 = Mii Outfit B
Bit 3 = Mii Outfit A
Bit 4 = Rosalina
Bit 5 = Funky Kong
Bit 6 = King Boo
Bit 7 = Dry Bowser

0x003B (byte) = Character unlocks
Bit Breakdown:
Bit 0 = Birdo
Bit 1 = Daisy
Bit 2 = Bowser Jr.
Bit 3 = Diddy Kong
Bit 4 = Baby Luigi
Bit 5 = Baby Daisy
Bit 6 = Toadette
Bit 7 = Dry Bones

0x003C (byte) = When GP CC's get completed (flipped high)
Bit Breakdown:
Bit 0 = Unused
Bit 1 = Unused
Bit 2 = Unused
Bit 3 = Unused
Bit 4 = Unused
Bit 5 = Unused
Bit 6 = 50cc is fully completed (this is for when the game prompts you that you can now race with both karts and bikes in 50cc Grand Prix, but when you go back to 50cc GP, you still are unable to use bikes, lmao looks like nin devs messed this one up)
Bit 7 = All CC's fully completed.

0x003D (byte) = Mirror Mode CC + Vehicle Unlocks
Bit Breakdown:
Bit 0 = Unused
Bit 1 = Unused
Bit 2 = Unused
Bit 3 = Mirror Mode
Bit 4 = Phantom
Bit 5 = Spear
Bit 6 = Shooting Star
Bit 7 = Dolphin Dasher

0x003E (byte) = Vehicle Unlocks
Bit Breakdown:
Bit 0 = Sneakster
Bit 1 = Zip Zip
Bit 2 = Jet Bubble
Bit 3 = Magickruiser
Bit 4 = Quacker
Bit 5 = Honeycoupe
Bit 6 = Jetsetter
Bit 7 = Piranha Prowler

0x003F (byte) = Vehicle Unlocks
Bit Breakdown:
Bit 0 = Sprinter
Bit 1 = Daytripper
Bit 2 = Super Blooper
Bit 3 = Blue Falcon
Bit 4 = Tiny Titan
Bit 5 = Cheep Charger
Bit 6 = Unused
Bit 7 = Unused

NOTE: To unlock literally everything, set a double word value of 0xFFFFFFFF031FFFFC at 0x0038.

0x0088 (word) = ??? Value is 0x50081000 on new Data Save
0x008C (word) = ??? Value is 0x50081000 on new Data Save
0x0092 (halfword) = ??? Value is 0x00 on new Data Save, but it appears to increase over time when you finish first
0x0096 (halfword) = ??? Value is 0x00 on new Data Save, but it appears to increase over time when you finish second

The following are various license stats
NOTE: All word values have a max of 0x0001869F (99999 in game)
0x00A0 (word) = Nintendo WFC Races Wins
0x00A4 (word) = Nintendo WFC Races Losses
0x00A8 (word) = Nintendo WFC Battle Wins
0x00AC (word) = Nintendo WFC Battle Losses
0x00B0 (word) Ghost Races Wins
0x00B4 (word) = Ghost Races Losses
0x00B8 (halfword) = VR
0x00BA (halfword) = BR
0x00BC (word) = Total Race Count
0x00C0 (word) = Total Battle Count
0x00C4 (word) = Unused? Doesn't effect any of the license stats.
0x00C8 (word) = Total Race+Battle Count Done w/ Wii Wheel. This number divided by (0x00BC+0x00C0) must be at 99.9% or greater to have 100% Wii Wheel. Simply set this value to the max (0x0001869F) to always have 100% Wii Wheel forever.
0x00CC (float) = Total Distance Traveled (rounded down after decimal conversion)
0x00D0 (word) = Challenge Ghosts Sent
0x00D4 (word) = Challenge Ghosts Received
0x00D8 (word) = Item Hits Delivered
0x00DC (word) = Item Hits Received
0x00E0 (word) = Trick Count
0x00E4 (word) = First-Place Appearances
0x00E8 (float) = Total Distance While in First Place for Races
0x00EC (float) = Total Distance Traveled For Races Only
The game takes the first float value and divides it with the following float. Then that float is converted to a decimal and rounded down which is what you see on the License stats screen for '% in First Place'.
0x00F0 (halfword) = Tournaments Played

0x00F2 (halfword) = ??? Value is 0x8000 on new Data Save

The following used to determine Favorite Character
0x00F4 (halfword) = Total Races Done w/ Mario
0x00F6 = Baby Peach
0x00F8 = Waluigi
0x00FA = Bowser
0x00FC = Baby Daisy
0x00FE = Dry Bones
0x0100 = Baby Mario
0x0102 = Luigi
0x0104 = Toad
0x0106 = Donkey Kong
0x0108 = Yoshi
0x010A = Wario
0x010C = Baby Luigi
0x010E = Toadette
0x0110 = Koopa
0x0112 = Daisy
0x0114 = Peach
0x0116 = Birdo
0x0118 = Diddy Kong
0x011A = King Boo
0x011C = Bowser Jr.
0x011E = Dry Bowser
0x0120 = Funky Kong
0x0122 = Rosalina
0x0124 = Mii

The following used to determine Favorite Vehicle
0x0126 (halfword) = Total Races Done w/ Small Standard Kart
0x0128 = Medium Standard Kart
0x012A = Large Standard Kart
0x012C = Booster Seat
0x012E = Classic Dragster
0x0130 = Offroader
0x0132 = Mini Beast
0x0134 = Wild Wing
0x0136 = Flame Flyer
0x0138 = Cheep Charger
0x013A = Super Blooper
0x013C = Piranha Prowler
0x013E = Tiny Titan
0x0140 = Daytripper
0x0142 = Jetsetter
0x0144 = Blue Falcon
0x0146 = Sprinter
0x0148 = Honeycoupe
0x014A = Small Standard Bike
0x014C = Medium Standard Bike
0x014E = Large Standard Bike
0x0150 = Bullet Bike
0x0152 = Mach Bike
0x0154 = Flame Runner
0x0156 = Bit Bike
0x0158 = Sugarscoot
0x015A = Wario Bike
0x015C = Quacker
0x015E = Zip Zip
0x0160 = Shooting Star
0x0162 = Magikruiser
0x0164 = Sneakster
0x0166 = Spear
0x0168 = Jet Bubble
0x016A = Dolphin Dasher
0x016C = Phantom

The following used to determine Favorite Course
0x016E (halfword) = Total Races Done on Mario Circuit
0x0170 = Moo Moo Meadows
0x0172 = Mushroom Gorge
0x0174 = Grumble Volcano
0x0176 = Toads Factory
0x0178 = Coconut Mall
0x017A = DK´s Snowboard Cross
0x017C = Wario´s Gold Mine
0x017E = Luigi Circuit
0x0180 = Daisy Circuit
0x0182 = Moonview Highway
0x0184 = Maple Treeway
0x0186 = Bowser´s Castle
0x0188 = Rainbow Road
0x018A = Dry Dry Ruins
0x018C = Koopa Cape
0x018E = GCN Peach Beach
0x0190 = GCN Mario Circuit
0x0192 = GCN Waluigi Stadium
0x0194 = GCN DK Mountain
0x0196 = DS Yoshi Falls
0x0198 = DS Desert Hills
0x019A = DS Peach Gardens
0x019C = DS Delphino Square
0x019E = SNES Mario Circuit 3
0x01A0 = SNES Ghost Valley 2
0x01A2 = N64 Mario Raceway
0x01A4 = N64 Sherbet Land
0x01A6 = N64 Bowser´s Castle
0x01A8 = N64 DK´s Jungle Parkway
0x01AA = GBA Bowser Castle 3
0x01AC = GBA Shy Guy Beach

The following is used to determine Favorite Stage
0x01AE (halfword) = Total Battles Done on Defino Pier
0x01B0 = Block Plaza
0x01B2 = Chain Chomp Roulette
0x01B4 = Funky Stadium
0x01B6 = Thwomp Desert
0x01B8 = GCN Cookie Land
0x01BA = DS Twilight House
0x01BC = SNES Battle Course 4
0x01BE = GBA Battle Course 3
0x01C0 = N64 Skyscraper

The following is some trophy ascii path crap, a shit ton of binary flips (im guessing to check if you get blued, fall off track, etc), plus star rank binary bit flip crap...
0x01C8 thru 0x021A = 50cc Mushroom Cup
0x0228 thru 0x027A = 50cc Flower Cup
0x0288 thru 0x02DA = 50cc Star Cup
0x02E8 thru 0x033A = 50cc Special Cup
0x0348 thru 0x039A = 50cc Shell Cup
0x03A8 thru 0x03FA = 50cc Banana Cup
0x0408 thru 0x045A = 50cc Leaf Cup
0x0468 thru 0x04BA = 50cc Lightning Cup
0x04C8 thru 0x051A = 100cc Mushroom Cup
0x0528 thru 0x057A = 100cc Flower Cup
0x0588 thru 0x05DA = 100cc Star Cup
0x05E8 thru 0x063A = 100cc Special Cup
0x0648 thru 0x069A = 100cc Shell Cup
0x06A8 thru 0x06FA = 100cc Banana Cup
0x0708 thru 0x075A = 100cc Leaf Cup
0x0768 thru 0x07BA = 100cc Lightning Cup
0x07C8 thru 0x081A = 150cc Mushroom Cup
0x0828 thru 0x087A = 150cc Flower Cup
0x0888 thru 0x08DA = 150cc Star Cup
0x08E8 thru 0x093A = 150cc Special Cup
0x0948 thru 0x099A = 150cc Shell Cup
0x09A8 thru 0x09FA = 150cc Banana Cup
0x0A08 thru 0x0A5A = 150cc Leaf Cup
0x0A68 thru 0x0ABA= 150cc Lightning Cup
0x0AC8 thru 0x0B1A = Mirror Mode Mushroom Cup
0x0B28 thru 0x0B7A = Mirror Mode Flower Cup
0x0B88 thru 0x0BDA = Mirror Mode Star Cup
0x0BE8 thru 0x0C3A = Mirror Mode Special Cup
0x0C48 thru 0x0C9A = Mirror Mode Shell Cup
0x0CA8 thru 0x0CFA = Mirror Mode Banana Cup
0x0D08 thru 0x0D5A =  Mirror Mode Leaf Cup
0x0D68 thru 0x0DBA =  Mirror Mode Lightning Cup

Star Bit Flip Location is -1 from end address of Cup (ex: 50cc Mushroom Cup = 0x0219)
0x0219 (Byte)
Bit 0 = ??? (gets flipped high when you get gold trophy)
Bit 1 = ???
Bit 2 = ??? (gets flipped high when you get gold trophy)
Bit 3 = ??? (gets flipped high when you get gold trophy)
Bit 4 = F rank
Bit 5 = B Rank
Bit 6 = 1 Star Rank
Bit 7 = 2 Star Rank
Note: Flip Bits 6 and 7 to low (0) for 3 Star Rank
Note: Flip Bits 6 and 7 to high (1) for A Rank

0x021A (byte)
Bit 0 = Flipped high for Golden Trophy; bit must be flipped high to have a star rank
Bit 1 = ??? Sometimes this is flipped high, sometimes not
Bit 2 = ???
Bit 3 = ???
Bit 4 = ???
Bit 5 = ???
Bit 6 = ???
Bit 7 = ???

Region ID Stuff

0x26B0A (byte) = Region ID

Region ID Values:
0x00 = Japan
0x10 = Americas
0x20 = Europe
0x30 = Aus/NZ
0x40 = Taiwan
0x50 = Korea
0x60 = China

Checksum Stuff

0x27FFC (word) = CRC-32 Checksum of first 0x27FFC bytes

TT Stuff

Fyi each Ghost file has its own individual CRC-16 Halfword checksum. Hence why this section of the rksys.dat is not part of the CRC-32 checksumming.

#Specific Mapping for License 1
0x28000 LC Ghost
0x2A800 MMM Ghost
0x2D000 MG Ghost
0x2F800 TF Ghost
0x32000 MC Ghost
0x34800 CM Ghost
0x37000 DKSC Ghost
0x39800 WGM Ghost
0x3C000 DC Ghost
0x3E800 KC Ghost
0x41000 MT Ghost
0x43800 GV Ghost
0x46000 DDR Ghost
0x48800 MH Ghost
0x4B000 BC Ghost
0x4D800 RR Ghost
0x50000 rPB Ghost
0x52800 rYF Ghost
0x55000 rGV2 Ghost
0x57800 rMR Ghost
0x5A000 rSL Ghost
0x5C800 rSGB Ghost
0x5F000 rDS Ghost
0x61800 rWS Ghost
0x64000 rDH Ghost
0x66800 rBC3 Ghost
0x69000 rDKJP Ghost
0x6B800 rMC Ghost
0x6E000 rMC3 Ghost
0x70800 rPG Ghost
0x73000 rDKM Ghost
0x75800 rBC Ghost

Add 0xA5000 to values for License 2
Add 0x14A000 to values for License 3
Add 0x1EF000 to values for License 4


RE: Data Save (rksys.dat) Map - Vega - 01-22-2021

Looks like all the data was copy pasted (by Atlas) to the Wiki Tockdom

http://wiki.tockdom.com/wiki/Rksys.dat