About Region ID's
#1
About Region ID's

In Mario Kart Wii, the game uses what are called Region ID's to designate separate regions based on continental residence. The Region ID determines what regional/continental VS/Battle Online rooms that a user can join. It will also determine what regional/continental Top 10 leader board that a user's TT's will be uploaded to. Before MKWii was released, Nintendo pre-made/configured the first 8 Region ID's. Some Region ID's were give a certain color so players online could tell other people's region ID's. 

The Region ID is a hexadecimal number (byte) determined by a small amount of PowerPC instructions (within the main.dol), and that number is stored on the MKW data save file. These small amount of PowerPC instructions are done every time MKW is booted. When you create a data save for the first time, the resulting byte for the Region ID is written to the newly made data save file.

For every time you boot MKW with a data save already present, another different set of PowerPC instructions (within the StaticR.rel) is executed. These instructions load the Region ID byte from the data save file and compares it to what the result is from the main.dol's sequence of instructions. If there isn't a match, this triggers a game function that notifies you on your screen that you must make a new data save file or return to the Wii Menu.

Each version of MKWii has its own unique set of said PowerPC instructions in the main.dol that generates the Region ID value. For example the instructions to output the Region ID in the NTSC-U game is different that the PAL game.

In order to see what Region ID a player has in an online race you look at the color of the line that is underneath their Mii name during a live race. Nintendo pre-configured Region ID values 0 thru 7.

RED = Japan (0)
BLUE = Americas (1)
GREEN = Europe (2)
YELLOW = Australia & New Zealand (3)
WHITE = Taiwan (4)
PURPLE = South Korea (5)
WHITE = China (6)
WHITE = Region ID #7 (For more info on this, scroll down to 'About Region ID 7')

Everything for value 8 thru 255 (0x08 thru 0xFF in hex) has the color white.

There were 4 MKW Discs made and released to the public by Nintendo. They are...
NTSC-U/RMCE01 = American MKW
PAL/RMCP01 = European / Australian MKW
NTSC-J/RMCJ01 = Japanese MKW (Disc that the Taiwan Wii also uses, no Taiwanese specific disc was ever made)
NTSC-K/RMCK01 = Korean MKW

There was also a 5th disc (never released) that is most likely labeled as NTSC-C/RMCC01 = Chinese MKW. For more about this, scroll down to 'About China Region ID'.

As you can see there isn't as many discs as there are region IDs (not including region ID's above 6). Nintendo did some fancy tricks to compensate for this.

About the American & Korean Region ID's

For both the American and Korean MKW Discs, the Region ID is written with just one PowerPC instruction. 

li r0, X

X is 1 in the American game, and is 5 in the Korean game.

This instruction resides at memory address 0x8000AE70 for the American game and at address 0x8000AEAC for the Korean game. Once that instruction has executed, the Region ID value is later stored in a spot in memory where the game will use it multiple times for various online functions.

About the Japanese & Taiwan Region IDs

Nintendo has never made a Taiwanese MKW Disc. They did however make a Taiwan Wii, the Taiwan Wii is almost 100% identical to the Japanese Wii. The Taiwan Wii uses the Japanese Wii System Menu. Thus, it can play any Japanese Wii game. Nintendo did make some Taiwanese games, but only 8 of them. All of these Taiwanese games have a 'disc-region' of 0 (Japan), so the Taiwan Wii's Japanese Wii System Menu can launch the disc(s).  Please note that 'disc-region' is NOT the Region ID. Every Wii System Menu loads the disc-region from the disc's data, if the disc-region byte doesn't match with the Wii System Menu (i.e. running a Japanese game on an American Wii), the Menu will refuse to boot the disc.

Going back to Region ID's, Nintendo added in extra PowerPC instructions to the Japanese MKW game that would determine to set the Region ID as 0 (Japan) or 4 (Taiwan). Here's a non-technical summary of how the Japanese MKW game does that...

1. The game dumps the country code (plus state ID code) into memory (read from the SYSCONF file)
2. The game sets the Taiwan Region ID Value (4)
3. The game compares the country code value to 128 (0x80 in hex)
4. If there is a match, the Region ID value is stored to memory. If there is not a match, the Region ID value is changed to Japan (0), then it gets stored to memory. Thus any country code value other than 128 will force the user to have the Japan Region ID.

Japanese Wiis have the country code value of 0 in its SYSCONF file. While Taiwan Wiis have the country code value of 128 (0x80) in its SYSCONF file. Other than serial number and some outside manufacturing stickers, the only difference between a Japanese Wii and a Taiwan Wii is the country code value that's in SYSCONF. Since both type of Wiis use the Japanese Wii System Menu, a user cannot change the country code value since the option in the Wii settings simply doesn't exist. Thus, the only legit way for someone to have the Taiwan Region ID in MKWii, is buy a Taiwan Wii and buy a Japanese MKW Disc.

About the Europe and AUS/NZ Region IDs

Nintendo made two different types of PAL Wiis. One meant for Europeans, the other meant for those residing in Australia or New Zealand (we will simply call this AUS/NZ). They both use the exact same Wii system Menu (PAL menu) and the same MKW PAL Disc. The only difference between these European and Australian Wiis is the serial number 'prefix' plus outside manufacturing stickers. Nintendo coded in a nifty 'trick' to the PAL Wii System Menu so it could force AUS/NZ to have AUS/NZ Region ID and force European players to have European Region ID.

First let's go over a summary of how the PAL Disc determines whether to choose the European Region ID or the AUS/NZ Region ID.

1. The game dumps the country code (plus state ID code) into memory (read from the SYSCONF file)
2. The game sets the AUS/NZ Region ID (3)
3. The game checks for country code value 65, if there is a match, the Aus/NZ Region ID (3) is stored to memory
4. The game does a second check for country code value 95. If there is a match, the Aus/NZ Region ID (3) is stored to memory
5. If neither of those two values were matched, the Region ID value is changed to Europe (2), then it gets stored to memory.

Regarding the 'nifty' trick I mentioned about earlier, a user is limited on what countries they can choose from on the PAL Menu in the Wii settings. For example a European Wii owner, normally can only choose a European country in the Wii settings. While a AUS/NZ Wii owner, can normally only choose Australia or New Zealand. There's a simple way around this.

Whenever you reformat any PAL Wii, during the initial user configuration when prompted to select Country, you have the full list of both European countries plus the two options of Australia, and New Zealand. If a user chooses a European country during this process, he/she then can ONLY choose European countries afterwards unless they reformat again. If a user chooses AUS/NZD, then he/she can ONLY choose AUS or NZ afterwards unless of course they reformat again. That's the 'trick' Nintendo implemented. Thus, without any sort of cheats/codes/hacks/mods, any PAL Wii owner can setup their Wii to get European Region ID or AUS/NZ Region ID.

About the China Region ID

The China Region ID is the same color as the Taiwan Region, so the only way to tell if someone has China vs Taiwan online is to see their Globe location. Without any sort of cheats/codes/hacks/mods, the only way a player can have the China Region ID is thru the unreleased Chinese MKW Disc. The Disc has a game ID most likely of RMCC01. Sometime during the early ages of MKW, Nintendo contracted out a Chinese company called iQue to build some Chinese Wiis + MKW targeted for the Chinese people. iQue is the company that manufactured the 3DS's for Nintendo. It's assumed that these Chinese Wiis were given to iQue devs for testing, and during these tests various iQue devs set some TT ghosts and these TT ghosts were sent to the WiFi charts. In fact, in a few of old Chinese Top 10 Wifi Charts, there were some players with the name of 'iQue'. Obviously, the 'charts' are referring to the old Nintendo WFC Wifi charts that are no longer available (Nintendo WFC shutdown in May 2014).

In the Chinese Luigi Circuit Top 10 Wifi Chart, the 9th rank player had a Mii name in Simplified Chinese. This Mii name cannot be read in the Korean Mii channel nor a normal Mii channel, so its assumed that only the unreleased Chinese Wiis came with their own unique Chinese Wii Menu and they also came with their own unique Mii Channel that can read/write Simplified Chinese Mii characters. Also every ghost file on every Chinese Top 10 had a country code value of 160 (0xA0). So it's safe to assume that the unreleased Chinese Wiis had a set SYSCONF country code value of 160 that cannot be changed in it's System Menu settings.

The Chinese MKW Disc most likely sets the Region ID value with a singular PowerPC instruction like the American and Korean Discs.

li rX, 6 #X = w/e register is used in the CPU set by the compiler

Hey Vega! I have the RMCC01 ISO! It's the real Taiwan ISO! (or... I have the RMCC01 ISO!, I have the super rare Chinese ISO!)

This is flat out wrong. In June 2011, a Taiwan Player (A9-Star, not the Star here on the forums), took a Japanese ISO and made BRFNT edits to make a new font file to display Traditional Chinese Characters (for Taiwan people). It's important to note that the country of China uses Simplified Chinese language, not Traditional. A9-Star would do a slight game ID edit on the Japanese ISO to RMCC01. The correct game ID he should have used (for imitating a MKW Taiwan ISO) is RMCW01. Nintendo uses the letter W in the game ID's to designate Traditional Chinese (Taiwanese) games. For reference, Nintendo made 8 Taiwanese games.

List of Trad. Chinese (Taiwan) games.
SB4W01 - Trad Chinese Super Mario Galaxy 2
SMNW01 - Trad Chinese New Super Mario Bros
SSQW01 - Trad Chinese Mario Party 9
RSPW01 - Trad Chinese Wii Sports
RZTW01 - Trad Chinese Wii Sports Resort
RHAW01 - Trad Chinese Wii Play
RFNW01 - Trad Chinese Wii Fit
RFPW01 - Trad Chinese Wii Fit Plus

If Nintendo was going to make a Taiwanese MKW Disc, they would have used the Game ID of RMCW01. In conclusion, that custom RMCC01 ISO is not the 'real' Chinese ISO or the 'real' Taiwan ISO.

About Region ID 7

Region ID 7 is an odd ball. It uses a White Line, but it has a quirk. Every Region ID has a default globe location (Hex 32 bit value). All default globe location values are stored in every main.dol file of all MKW Discs.

List of Region ID's 0 - 6 default globe location:
Japan - Tokyo, Japan
Americas - D.C., USA
Europe - Berlin, Germany
AUS/NZ - Sydney, Australia
Taiwan - Taipei, Taiwan
S.Korea - Seoul, South Korea
China - Beijing, China

If a user hasn't set their flag (location/state within country) then your globe location online is set to a default value. For Region ID 7, that default globe location will vary per MKW Disc

Default globe locations of Region 7 by Disc:
- NTSC-J Disc - Tokyo, Japan
- NTSC-U Disc - D.C., USA
- PAL Disc - Berlin, Germany
- NTSC-K Disc - Seoul, South Korea
- NTSC-C (Chinese/Unreleased) Disc - Beijing, China

Pictures of Default Globe Locations of Region IDs 0 - 6; Other Helpful Links

Here are pictures for every region ID default globe location (except region 7 which as I mentioned before, varies per disc)
Japan - http://mkwii.com/pics/regionid/region0.png
Americas - http://mkwii.com/pics/regionid/region1.png
Europe - http://mkwii.com/pics/regionid/region2.png
Australia / New Zealand - http://mkwii.com/pics/regionid/region3.png
Taiwan - http://mkwii.com/pics/regionid/region4.png
Korea - http://mkwii.com/pics/regionid/region5.png
China - http://mkwii.com/pics/regionid/region6.png

Every region ID (except China) is setup to be as if they were done legitimately. Obviously, since nobody has the Chinese MKW disc, i just used PAL in honor of XeR who was the first to get on China via hacks (done on PAL disc).

To better understand the variety and differences of all the Consoles & MKW Discs, visit this html page - HERE
Pictures of Taiwan and Korean Wiis - HERE

Technical Details

NOTE: For those who can read PowerPC Assembly

Here is how the Japan Disc determines the Region ID:

Code:
8000ADFC lwz r4, 0x00F8 (r31) #Load the Country Code Byte, 'State' ID byte, and City ID halfword
8000AE00 li r3, 0 #Set japan region ID (value of 0)
8000AE04 stw r3, 0x0084 (r31) #place the region ID into memory

8000AE08 addis r0, r4, 1
8000AE0C cmplwi r0, 65535 #The game does a check here. To where if your country + state ID = 0xFFFF and your city id is set to 0xFFFF, then the game forces you to have japan region ID, this check is useless.

8000AE10 bne- => 0x8000AE18
8000AE14 b => 0x8000AE28

8000AE18 rlwinm r3, r4, 8, 24, 31 #Shift the bits so the country code byte is the last byte of the register

8000AE1C subi r0, r3, 128
8000AE20 cntlzw r0, r0
8000AE24 rlwinm r3, r0, 27, 5, 31
8000AE28 cmpwi r3, 0
8000AE2C beq- => 0x8000AE38 #If 0, then Taiwan country code is not set, skip over Taiwan instructions

#the above does an unnecessary complex equation of subtracting, leading bit count, and rotation to see if the country code is 0x80.

8000AE30 li r0, 4 #Set Taiwan region ID value
8000AE34 stw r0, 0x0084 (r31) #place the region ID into memory

A better way to do this would be something like...

Code:
lbz r4, 0x00F8 (r31)
li r3, 0 #Set Japan Region ID

#Don't do any city ID checking

cmpwi r4, 0x80
beq- store_regionid

li r3, 4

store_regionid:
stw r3, 0x0084 (r31)

Here's how the PAL Disc determines the Region ID:

Code:
8000AEA8 lwz r4, 0x00F8 (r31) #Load country code, state ID, city ID
8000AEAC li r0, 2 #Set Europe Region ID
8000AEB0 stw r0, 0x0084 (r31) #Place Region ID into memory

8000AEB4 addis r0, r4, 1 #City ID check...
8000AEB8 cmplwi r0, 65535
8000AEBC bne- => 0x8000AEC8
8000AEC0 li r0, 0 #Reset r0 to 0
8000AEC4 b => 0x8000AED8

8000AEC8 rlwinm r3, r4, 8, 24, 31
8000AECC subi r0, r3, 65 #Time to check for country code 65
8000AED0 cntlzw r0, r0
8000AED4 rlwinm r0, r0, 27, 5, 31

8000AED8 cmpwi r0, 0
8000AEDC bne- 0x8000AF0C #If r0 is not 0 then country code is 65, set Australia/NZ region ID

8000AEE0 addis r0, r4, 1 #City ID check a second time (lol)
8000AEE4 cmplwi r0, 65535
8000AEE8 bne- 0x8000AEF4

8000AEEC li r0, 0 #Reset r0, to 0
8000AEF0 b => 0x8000AF04

8000AEF4 rlwinm r3, 4, 8, 24, 31
8000AEF8 subi r0, r3, 95 #Time to check for country code 95
8000AEFC cntlzw r0, r0
8000AF00 rlwinm r0, r0, 27, 5, 31

8000AF04 cmpwi r0, 0
8000AF08 beq- 0x8000AF14 #If not equal, skip over Aus/NZ instructions

8000AF0C li r0, 3 #Set AUS/NZ Region ID
8000AF10 stw r0, 0x0084 (r31) Place AUS/NZ Region ID into memory

Here's a better way....

Code:
lbz r4, 0x00F8 (r31)

li r3, 3 #Set AUS/NZ Region ID

cmpwi r4, 65
beq- store_regionid
cmpwi r4, 95
beq- store_regionid

li r3, 2 #If country code wasn't 65 or 95, then set Europe Region ID

store_regionid:
stw r3, 0x0084 (r31)
Reply
#2
NEW DISCOVERY

Last night I was bored and doing some ascii searches on the game's memory. 

At Base Address 8028AF09 (NTSC-K/RMCK01 version of MKW), starts the ascii string 'CN'. This is next to US, ER, JP, and KR. Those abbreviations are for the 4 disc regions. If you had read the original post above, you will know that each system menu has a corresponding disc region it reads.

0 (Japan disc region for Japanese system menu)
1 (American disc region for American system menu)
2 (Euro/PAL disc region for PAL system menu)
4 (Korean disc region for Korean system menu)

I speculated in the past that due to deductive logic, there was a S.Chinese MKW Disc, Wii Console, Mii Channel for the Console, and a 'China' disc region number for the S.Chinese MKW Disc so that the S.Chinese Wii System Menu could read the disc. 

And my predictions are correct. The CN comes right after the 4 other disc region abbreviations (which the disc region abbreviations come after the Console Area abbreviations). Obviously this shows that there was a 5th Disc Region for China. Thus, this proves there was a S.Chinese Wii System Menu which proves there was a S.Chinese Wii Console. And since the 9th ranked LC China player had a S.Chinese name which the symbols can't be read by the normal or Korean Mii Channel, we know 100% there was a unique S.Chinese Mii Channel created for the Console.

Probably why nobody knew about this China disc region because Region Changer applications and other setting.txt modifer programs only allowed you to choose between the 4 standard disc regions. 

Well anyway, now we have proof. Most likely the disc region number for China is 5 (1 above Korea since it's mkw region ID is also 1 above Korea's).

Discovered by me on Aug 8, 2018. Keep in mind, this was super easy to find. Somebody else probably already discovered this Base Address info. Please let me know if this is the case.
Reply
#3
Big Grin Big Grin Big Grin Big Grin Big Grin
Reply
#4
BUMP! I completely overhauled the thread. Much cleaner, and I added technical details at the bottom for the ASM nerds.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)