Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 546
» Latest member: Fishyyyy
» Forum threads: 1,666
» Forum posts: 12,026

Full Statistics

Online Users
There are currently 109 online users.
» 0 Member(s) | 107 Guest(s)
Bing, Google

Latest Threads
Make it to 10,000
Forum: General Discussion
Last Post: Fifty
1 hour ago
» Replies: 5,759
» Views: 4,229,570
Connect to AltWFC again
Forum: Incomplete & Outdated Codes
Last Post: marito_yo
05-03-2024, 06:27 AM
» Replies: 0
» Views: 80
Request: Mission Mode - P...
Forum: Code Support / Help / Requests
Last Post: Wingcapman
05-02-2024, 08:54 PM
» Replies: 0
» Views: 86
Custom Kart Working on Do...
Forum: Code Support / Help / Requests
Last Post: CorvoPSY
04-27-2024, 01:14 PM
» Replies: 1
» Views: 153
Boot into TT cup selectio...
Forum: Misc/Other
Last Post: Vega
04-26-2024, 08:27 PM
» Replies: 3
» Views: 2,957
Request: Custom brsars pe...
Forum: Code Support / Help / Requests
Last Post: lschlick
04-25-2024, 05:45 PM
» Replies: 0
» Views: 67
E-mails not working on th...
Forum: General Discussion
Last Post: Fifty
04-19-2024, 04:56 AM
» Replies: 3
» Views: 444
More missing info from Br...
Forum: Coding & Hacking General Discussion
Last Post: Vega
04-15-2024, 10:04 PM
» Replies: 0
» Views: 272
Request: Custom music vol...
Forum: Code Support / Help / Requests
Last Post: lschlick
04-15-2024, 06:13 PM
» Replies: 0
» Views: 233
Request: Additional sound...
Forum: Code Support / Help / Requests
Last Post: _Ro
04-15-2024, 01:50 AM
» Replies: 6
» Views: 283

 
  Fix Custom Region Joining Via Friend Rooster [Kazuki]
Posted by: Kazuki - 01-15-2024, 04:57 AM - Forum: Online Non-Item - No Replies

Fix Custom Region Joining Via Friend Rooster [Kazuki]

Fix the problem of not being able to join via friend rooster, which is occurring in about half of all custom regions.


(PAL)
0465a01c 60000000
0465a020 2C0000FF
0465a068 60000000
0465a06c 2C0000FF


(NTSC-U)
04655b94 60000000
04655b98 2C0000FF
04655be0 60000000
04655be4 2C0000FF


(NTSC-J)
04659688 60000000
0465968C 2C0000FF
046596D4 60000000
046596D8 2C0000FF


(NTSC-K)
04648334 60000000
04648338 2C0000FF
04648380 60000000
04648384 2C0000FF

Print this item

  Pretty In Game Item Spy plus Item Warning Online [Unnamed]
Posted by: Unnamed - 01-12-2024, 12:05 PM - Forum: Online; Item - Replies (1)

Pretty In Game Item Spy plus Item Warning Online [Unnamed]

online only


I was tired if using Item Spy codes that only display a certain hex value to me and I need to think about it first what Item this is. So I decided to use stebler's speedometer source to create a HUD to display the items as real UNICODE strings - and now I want to present you the outcome.

This code will do the following for you:
1. It shows the Item in Inventory of every player as word, as part of a new HUD element.
2. It shows you specific Items (more on this later) in specific colors. So this code can act as an Item Warning code too.
3. The player slots are shown as numbers of the timer version. In addition, your (local) slot is shown as normal number, so you know your slot immediately.

To use this code, choose the BODY of your region and combine it with one of the TAILs (region free). The default TAIL has the following symbols and colors:

" Unused      " white (means the slot is not active)
" Green      " yellow
" Red        " yellow
" Banana      " yellow
" Fake Box    " yellow
" Shroom      " yellow
" 3 Shrooms  " yellow
" Bomb        " yellow
" Blue        " dark blue (Item warning color)
" Shock      " red (Item warning color)
" Star        " yellow
" Golden      " yellow
" Mega        " yellow
" Blooper    " yellow
" POW        " yellow
" Cloud      " yellow
" Bullet      " green (Item warning color)
" 3 Greens    " yellow
" 3 Reds      " yellow
" 3 Nanas    " yellow
" Nothing    " yellow


If I have enough time, I will prepare a customizable TAIL where you can put in your own colors and your own UNICODE symbols (even japanese symbols are possible).

NOTE: For the dump of the string and the TAIL I chose a memory region of ExRAM (0x91000000). So far I had no problems with confilcting adresses. If you ever notice weird symbols, please tell me here and we need to find another region for the TAIL.
Another NOTE: Please make sure that no other code are using the adresses 0x91000000 to 0x9100042B.
And finally one last NOTE: Only PAL is tested, I would appreciate if you test the other regions for me. Thank you already in advance.


This is the ultimate Item Spy/Item Warning code. Have fun.


BODY - NTSC-U (untested):
C25DDB7C 00000008
80A30004 2C05000C
41820028 2C05000E
41820020 2C050012
41820018 2C050040
41820010 2C050042
41820008 48000008
38840001 7C852378
60000000 00000000
C2836A48 00000007
560004E7 40820030
806F0004 2C03000C
41820020 2C03000E
41820018 2C030012
41820010 2C030040
41820008 2C030042
4C421042 00000000
C25C1214 00000009
2C040000 4082003C
3D004330 91010070
91010078 7C721B78
3A600000 3F008089
3B18EED0 90A10020
38A00001 90A10010
3CA0805C 60A512E8
7CA803A6 4E800020
80040000 00000000
C2575B44 0000001D
807D0000 80630000
88630010 3C80809C
80848F68 88840B84
7C032000 40820120
3C60809C 8063D508
80630000 83830038
2C1C0000 40820044
8383003C 2C1C0000
40820038 83830040
2C1C0000 4082002C
83830050 2C1C0000
40820020 83830108
2C1C0000 40820014
83830110 2C1C0000
40820008 4800006C
3CA09100 807C005C
3C804220 3CC08038
80C61C80 80C60058
2C060001 41820008
3C804220 9083004C
3C80C240 90830050
3C803F60 90830058
3C804020 9083005C
38800000 98830080
38C00000 80630114
80E30000 98C70100
3D80805C 618C11E0
7D8903A6 4E800421
83E1007C 00000000
C2658828 00000014
9421FFEC BFA10008
3BE00000 1D9F0028
3D8C9100 3FA0001A
63BD0800 93AC0000
3D609100 616B01DE
A7AB0002 3FBD0001
93AC0004 2C1F000A
3BBF2460 3FBD2460
4180000C 3BBF2456
3FBD2461 93AC0008
398C000A 3BC00000
A7AB0002 B7AC0002
3BDE0001 2C1E000D
4180FFF0 2C1F000B
3BA00000 41820008
3BA0000A B3AC0002
3BFF0001 2C1F000C
4180FF84 BBA10008
38210014 9903001F
60000000 00000000
C265EE14 00000010
88030001 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
2C16000A 3BB60030
3FBD0030 41A0000C
3BB60026 3FBD0031
93AC0008 398C000A
3BE00000 A7AB0002
B7AC0002 3BFF0001
2C1F000D 4180FFF0
BBA10008 38210014
60000000 00000000
C265EE30 0000000C
88100011 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
398C000A 3BE00000
A7AB0002 B7AC0002
3BFF0001 2C1F000D
4180FFF0 BBA10008
38210014 00000000


BODY - PAL:
C260245C 00000008
80A30004 2C05000C
41820028 2C05000E
41820020 2C050012
41820018 2C050040
41820010 2C050042
41820008 48000008
38840001 7C852378
60000000 00000000
C28584D8 00000007
560004E7 40820030
806F0004 2C03000C
41820020 2C03000E
41820018 2C030012
41820010 2C030040
41820008 2C030042
4C421042 00000000
C25CDD34 00000009
2C040000 4082003C
3D004330 91010070
91010078 7C721B78
3A600000 3F008089
3B183E70 90A10020
38A00001 90A10010
3CA0805C 60A5DE08
7CA803A6 4E800020
80040000 00000000
C257C3A8 0000001D
807D0000 80630000
88630010 3C80809C
8084D728 88840B84
7C032000 408200C4
3C60809C 80631E38
80630000 83830038
2C1C0000 40820044
8383003C 2C1C0000
40820038 83830040
2C1C0000 4082002C
83830050 2C1C0000
40820020 83830108
2C1C0000 40820014
83830110 2C1C0000
40820008 4800006C
3CA09100 807C005C
3C804220 3CC08038
80C66000 80C60058
2C060001 41820008
3C804220 9083004C
3C80C240 90830050
3C803F60 90830058
3C804020 9083005C
38800000 98830080
38C00000 80630114
80E30000 98C70100
3D80805C 618CDD00
7D8903A6 4E800421
83E1007C 00000000
C2660764 00000014
9421FFEC BFA10008
3BE00000 1D9F0028
3D8C9100 3FA0001A
63BD0800 93AC0000
3D609100 616B01DE
A7AB0002 3FBD0001
93AC0004 2C1F000A
3BBF2460 3FBD2460
4180000C 3BBF2456
3FBD2461 93AC0008
398C000A 3BC00000
A7AB0002 B7AC0002
3BDE0001 2C1E000D
4180FFF0 2C1F000B
3BA00000 41820008
3BA0000A B3AC0002
3BFF0001 2C1F000C
4180FF84 BBA10008
38210014 9903001F
60000000 00000000
C265E18C 00000010
88030001 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
2C16000A 3BB60030
3FBD0030 41A0000C
3BB60026 3FBD0031
93AC0008 398C000A
3BE00000 A7AB0002
B7AC0002 3BFF0001
2C1F000D 4180FFF0
BBA10008 38210014
60000000 00000000
C265E1A8 0000000C
88100011 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
398C000A 3BE00000
A7AB0002 B7AC0002
3BFF0001 2C1F000D
4180FFF0 BBA10008
38210014 00000000


BODY - NTSC-J (untested) :
C2601BD0 00000008
80A30004 2C05000C
41820028 2C05000E
41820020 2C050012
41820018 2C050040
41820010 2C050042
41820008 48000008
38840001 7C852378
60000000 00000000
C2857B44 00000007
560004E7 40820030
806F0004 2C03000C
41820020 2C03000E
41820018 2C030012
41820010 2C030040
41820008 2C030042
4C421042 00000000
C25CD610 00000009
2C040000 4082003C
3D004330 91010070
91010078 7C721B78
3A600000 3F008089
3B1834C0 90A10020
38A00001 90A10010
3CA0805C 60A5D6E4
7CA803A6 4E800020
80040000 00000000
C257BD28 0000001D
807D0000 80630000
88630010 3C80809C
8084C788 88840B84
7C032000 40820120
3C60809C 80630E98
80630000 83830038
2C1C0000 40820044
8383003C 2C1C0000
40820038 83830040
2C1C0000 4082002C
83830050 2C1C0000
40820020 83830108
2C1C0000 40820014
83830110 2C1C0000
40820008 4800006C
3CA09100 807C005C
3C804220 3CC08038
80C65980 80C60058
2C060001 41820008
3C804220 9083004C
3C80C240 90830050
3C803F60 90830058
3C804020 9083005C
38800000 98830080
38C00000 80630114
80E30000 98C70100
3D80805C 618CD5DC
7D8903A6 4E800421
83E1007C 00000000
C265FDD0 00000014
9421FFEC BFA10008
3BE00000 1D9F0028
3D8C9100 3FA0001A
63BD0800 93AC0000
3D609100 616B01DE
A7AB0002 3FBD0001
93AC0004 2C1F000A
3BBF2460 3FBD2460
4180000C 3BBF2456
3FBD2461 93AC0008
398C000A 3BC00000
A7AB0002 B7AC0002
3BDE0001 2C1E000D
4180FFF0 2C1F000B
3BA00000 41820008
3BA0000A B3AC0002
3BFF0001 2C1F000C
4180FF84 BBA10008
38210014 9903001F
60000000 00000000
C265D7F8 00000010
88030001 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
2C16000A 3BB60030
3FBD0030 41A0000C
3BB60026 3FBD0031
93AC0008 398C000A
3BE00000 A7AB0002
B7AC0002 3BFF0001
2C1F000D 4180FFF0
BBA10008 38210014
60000000 00000000
C265D814 0000000C
88100011 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
398C000A 3BE00000
A7AB0002 B7AC0002
3BFF0001 2C1F000D
4180FFF0 BBA10008
38210014 00000000


BODY - NTSC-K (untested):
C25F087C 00000008
80A30004 2C05000C
41820028 2C05000E
41820020 2C050012
41820018 2C050040
41820010 2C050042
41820008 48000008
38840001 7C852378
60000000 00000000
C2846898 00000007
560004E7 40820030
806F0004 2C03000C
41820020 2C03000E
41820018 2C030012
41820010 2C030040
41820008 2C030042
4C421042 00000000
C25BBCF4 00000009
2C040000 4082003C
3D004330 91010070
91010078 7C721B78
3A600000 3F008088
3B182280 90A10020
38A00001 90A10010
3CA0805B 60A5BDC8
7CA803A6 4E800020
80040000 00000000
C256A400 0000001D
807D0000 80630000
88630010 3C80809B
8084BD68 88840B84
7C032000 40820120
3C60809B 80630478
80630000 83830038
2C1C0000 40820044
8383003C 2C1C0000
40820038 83830040
2C1C0000 4082002C
83830050 2C1C0000
40820020 83830108
2C1C0000 40820014
83830110 2C1C0000
40820008 4800006C
3CA09100 807C005C
3C804220 3CC08037
80C64020 80C60058
2C060001 41820008
3C804220 9083004C
3C80C240 90830050
3C803F60 90830058
3C804020 9083005C
38800000 98830080
38C00000 80630114
80E30000 98C70100
3D80805B 618CBCC0
7D8903A6 4E800421
83E1007C 00000000
C264EA7C 00000014
9421FFEC BFA10008
3BE00000 1D9F0028
3D8C9100 3FA0001A
63BD0800 93AC0000
3D609100 616B01DE
A7AB0002 3FBD0001
93AC0004 2C1F000A
3BBF2460 3FBD2460
4180000C 3BBF2456
3FBD2461 93AC0008
398C000A 3BC00000
A7AB0002 B7AC0002
3BDE0001 2C1E000D
4180FFF0 2C1F000B
3BA00000 41820008
3BA0000A B3AC0002
3BFF0001 2C1F000C
4180FF84 BBA10008
38210014 9903001F
60000000 00000000
C264C4A4 00000010
88030001 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
2C16000A 3BB60030
3FBD0030 41A0000C
3BB60026 3FBD0031
93AC0008 398C000A
3BE00000 A7AB0002
B7AC0002 3BFF0001
2C1F000D 4180FFF0
BBA10008 38210014
60000000 00000000
C264C4C0 0000000C
88100011 9421FFEC
BFA10008 2C000013
7C0B0378 41800008
39600013 1D6B001C
1D960028 3D6B9100
396B01FA 3D8C9100
A7AB0002 B3AC0006
398C000A 3BE00000
A7AB0002 B7AC0002
3BFF0001 2C1F000D
4180FFF0 BBA10008
38210014 00000000


TAIL (Default):
4A000000 91000000
160001E0 0000024C
00020020 0055006E
00750073 00650064
00200020 00200020
00200020 00300020
00470072 00650065
006E0020 00200020
00200020 00200020
00300020 00520065
00640020 00200020
00200020 00200020
00200020 00300020
00420061 006E0061
006E0061 00200020
00200020 00200020
00300020 00460061
006B0065 00200042
006F0078 00200020
00200020 00300020
00530068 0072006F
006F006D 00200020
00200020 00200020
00300020 00330020
00530068 0072006F
006F006D 00730020
00200020 00300020
0042006F 006D0062
00200020 00200020
00200020 00200020
00310020 0042006C
00750065 00200020
00200020 00200020
00200020 00320020
00530068 006F0063
006B0020 00200020
00200020 00200020
00300020 00530074
00610072 00200020
00200020 00200020
00200020 00300020
0047006F 006C0064
0065006E 00200020
00200020 00200020
00300020 004D0065
00670061 00200020
00200020 00200020
00200020 00300020
0042006C 006F006F
00700065 00720020
00200020 00200020
00300020 0050004F
00570020 00200020
00200020 00200020
00200020 00300020
0043006C 006F0075
00640020 00200020
00200020 00200020
00330020 00420075
006C006C 00650074
00200020 00200020
00200020 00300020
00330020 00470072
00650065 006E0073
00200020 00200020
00300020 00330020
00520065 00640073
00200020 00200020
00200020 00300020
00330020 004E0061
006E0061 00730020
00200020 00200020
00300020 004E006F
00740068 0069006E
00670020 00200020
00200020 00000000
E0000000 80008000


Source:


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
############################
### Adress Map: ###
### 0x91000000 to 0x910001DF: Formatted player strings for output
### 0x910001E0 to 0x:9100042B: UNICODE-Symbols for the Items, including unused slot
############################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
############################
### Format of the individual player strings ###
### Length: 20 Halfwords (40 Bytes), including ###
### Bytes 0x00 - 0x07 (4 Halfwords): BMG Escape Sequence (001A 0800 0001 XXXX), XXXX is the Color
### Bytes 0x08 - 0x0B (2 Halfwords): Player Slots
### Bytes 0x0C - 0x25 (13 Halfwords): Symbols
### Bytes 0x26 - 0x27 (1 Halfword): Newline (0x0A) or if last player slot null byte (0x00)
############################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
############################
### Format of the Tail (individual item UNICODE symbols plus color) ###
### Length: 14 Halfwords (28 Bytes), including ###
### Bytes 0x00 - 0x01 (1 Halfword): Color of the item
### Bytes 0x02 - 0x1B (13 Halfwords): Symbols
############################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#



Code:
############################################################
############ Child count increment #########################
###### inject at 8060245c (PAL)
###### inject at 805ddb7c (NTSC-U)
######  inject at 80601bd0 (NTSC-J)
######  inject at 805f087c (NTSC-K)
lwz r5, 0x4 (r3)
cmpwi r5, 0xc # grand prix
beq increment
cmpwi r5, 0xe # 1 player offline vs
beq increment
cmpwi r5, 0x12 # 1 player battle
beq increment
cmpwi r5, 0x40 # 1 player ww/regional vs
beq increment
cmpwi r5, 0x42 # 1 player friend room vs
beq increment
b end
increment:
addi r4, r4, 0x1
end:
mr r5, r4 # original instruction


#############################################################
### Add the "GHOST DATA CANNOT BE SAVED" element  ###########
#####  inject at 808584d8 (PAL)
##### inject at 80836a48 (NTSC-U)
##### inject at 80857b44 (NTSC-J)
##### inject at 80846898 (NTSC-K)
rlwinm. r0, r16, 0x0, 19, 19 # original instruction
bne end
lwz r3, 0x4 (r15)
cmpwi r3, 0xc # grand prix
beq invert
cmpwi r3, 0xe # 1 player offline vs
beq invert
cmpwi r3, 0x12 # 1 player battle
beq invert
cmpwi r3, 0x40 # 1 player ww/regional vs
beq invert
cmpwi r3, 0x42 # 1 player friend room vs
invert:
crnot 4 * cr0 + eq, 4 * cr0 + eq
end:


#############################################################
############## Extend setTextSrc method  ####################
###### inject at 805cdd34 (PAL)
###### inject at 805c1214 (NTSC-U)
###### inject at 805cd610 (NTSC-J)
###### inject at 805bbcf4 (NTSC-K)
.set region, ''
.if (region == 'P')
        .set ptr_consts, 0x80893e70
        .set target, 0x805cde08
.elseif (region == 'E')
        .set ptr_consts, 0x8088eed0
        .set target, 0x805c12e8
.elseif (region == 'J')
        .set ptr_consts, 0x808934c0
        .set target, 0x805cd6e4
.elseif (region == 'K')
        .set ptr_consts, 0x80882280
        .set target, 0x805bbdc8
.else
        .err
.endif
# check if custom text is enabled
cmpwi r4, 0x0
bne end
# some registers are initialized in the middle of the bmg loading stuff we are skipping, so we have
# to do it here instead
lis r8, 0x4330
stw r8, 0x70 (r1)
stw r8, 0x78 (r1)
mr r18, r3
li r19, 0x0
lis r24, ptr_consts@ha
addi r24, r24, ptr_consts@l
# load the custom string
stw r5, 0x20 (r1)
li r5, 0x1
stw r5, 0x10 (r1)
# jump to the end of the bmg loading stuff
lis r5, target@h
ori r5, r5, target@l
mtlr r5
blr
end:
lwz r0, 0x0 (r4) # original instruction


#############################################################
############ Set adress, make text visible ##################
###### inject at 8057c3a8 (PAL)
###### inject at 80575b44 (NTSC-U)
###### inject at 8057bd28 (NTSC-J)
###### inject at 8056a400 (NTSC-K)
.set region, ''
.if (region == 'P')
        .set ptr_raceData, 0x809bd728
        .set ptr_menuData, 0x809c1e38
        .set ptr_unk, 0x80386000
        .set ScreenElement_setTextSrc, 0x805cdd00
.elseif (region == 'E')
        .set ptr_raceData, 0x809b8f68
        .set ptr_menuData, 0x809bd508
        .set ptr_unk, 0x80381c80
        .set ScreenElement_setTextSrc, 0x805c11e0
.elseif (region == 'J')
        .set ptr_raceData, 0x809bc788
        .set ptr_menuData, 0x809c0e98
        .set ptr_unk, 0x80385980
        .set ScreenElement_setTextSrc, 0x805cd5dc
.elseif (region == 'K')
        .set ptr_raceData, 0x809abd68
        .set ptr_menuData, 0x809b0478
        .set ptr_unk, 0x80374020
        .set ScreenElement_setTextSrc, 0x805bbcc0
.else
        .err
.endif
# get the player index of the player on which the hooked function is working
lwz r3, 0x0 (r29)
lwz r3, 0x0 (r3)
lbz r3, 0x10 (r3)
# get the player index from the first hud slot
lis r4, ptr_raceData@ha
lwz r4, ptr_raceData@l (r4)
lbz r4, 0xb84 (r4)
# if they don't match, don't update
cmpw r3, r4
bne end
# check if a single player gameplay screen is active
lis r3, ptr_menuData@ha
lwz r3, ptr_menuData@l (r3)
lwz r3, 0x0 (r3)
lwz r28, 0x38 (r3) # grand prix
cmpwi r28, 0x0
bne found
lwz r28, 0x3c (r3) # time trial
cmpwi r28, 0x0
bne found
lwz r28, 0x40 (r3) # 1 player offline vs
cmpwi r28, 0x0
bne found
lwz r28, 0x50 (r3) # 1 player battle
cmpwi r28, 0x0
bne found
lwz r28, 0x108 (r3) # 1 player ww/regional vs
cmpwi r28, 0x0
bne found
lwz r28, 0x110 (r3) # 1 player friend room vs
cmpwi r28, 0x0
bne found
b end
found:
lis r5, 0x9100 # prepare adress for displaying the string
lwz r3, 0x5c (r28)
# set the position of the hud element
lis r4, 0x4220
lis r6, ptr_unk@ha
lwz r6, ptr_unk@l (r6)
lwz r6, 0x58 (r6)
cmpwi r6, 0x1
beq widescreen
lis r4, 0x4220
widescreen:
stw r4, 0x4c (r3)
# y-position and scales
lis r4, 0xC240 # y position
stw r4, 0x50 (r3)
lis r4, 0x3f60 # x scale
stw r4, 0x58 (r3)
lis r4, 0x4020 # y scale
stw r4, 0x5c (r3)
# make the element visible
li r4, 0x0
stb r4, 0x80 (r3)
# align the text to the left
li r6, 0x0
lwz r3, 0x114 (r3)
lwz r7, 0x0 (r3)
stb r6, 0x100 (r7)
lis r12, ScreenElement_setTextSrc@h
ori r12, r12, ScreenElement_setTextSrc@l
mtctr r12
bctrl
end:
lwz r31, 0x7c (r1) # original instruction


#############################################################
############################
### inject at 80658828 #####
### inject at 80660764 #####
### inject at 8065FDD0 #####
### inject at 8064EA7C #####
############################
############################
### This adress is called right after you voted your track in online race. ##############
### We want to setup the formatted string that is called in race. All strings will be set to "unused" #############
### If a player slot is then active in race, it will be overwritten ###########
############################
stwu r1, -0x14(r1)                  ##### make small stack frame
stmw r29, 8(r1)
li r31, 0                         ####### initialize player index
player_index_loop:
mulli r12, r31, 0x28               ####### multiply player index by 40. Each player has a total amount of 20 halfwords string length
addis r12, r12, 0x9100             ####### add offset where the strings will be dumped to (0x91000000)
lis r29, 0x1a
ori r29, r29, 0x800                ###### prepare BMG escape sequence for each player
stw r29, 0(r12)                      ###### store first word of BMG escape sequence
lis r11, 0x9100
ori r11, r11, 0x1de
lhzu r29, 2(r11)                  ###### second word contains the color (XXXX). We want to load our color from the "unused" configuration of our Tail.
addis r29, r29, 1                 ###### add the upper 0001 from the escape sequence to the color
stw r29, 4(r12)                   ###### store second word, the BMG escape sequence is now done for the player
cmpwi r31, 0xa                   ###### Now we need to setup the player slot strings, so compare the player index to 10
addi r29, r31, 0x2460
addis r29, r29, 0x2460             ###### Add the UNICODE prefix of the timer versions
blt store_player_slot             ###### If smaller than 10, we are done
addi r29, r31, 0x2456             ###### If 10 or higher, add the prefix - 10 to the index...
addis r29, r29, 0x2461            ###### ... and set the tens digit to one
store_player_slot:
stw r29, 8(r12)                  ###### store the player slot string
addi r12, r12, 0xa                ###### now prepare store adress for the UNICODE store loop
li r30, 0                        ###### initialize UNICODE_index
UNICODE_index_loop:
lhzu r29, 2(r11)                  ##### load UNICODE halfword of "unused" configuration and update adress to next halfword
sthu r29, 2(r12)                  ##### store UNICODE halfword to player slot and update adress to next halfword
addi r30, r30, 1                 ##### increment UNICODE_index
cmpwi r30, 0xd                   ###### after 13 symbols, we are done
blt UNICODE_index_loop
cmpwi r31, 0xB                   ###### one halfword left: the Newline or Null Byte, so compare player slot to 11
li r29, 0                         ##### prepare null byte
beq store_final_player_slot_halfword
li r29, 0xA                      ##### if not equal, replace with newline
store_final_player_slot_halfword:
sth r29, 2(r12)                  ##### store it to last spot of player string, now we are finished for one player
addi r31, r31, 1                 ##### increment player_index
cmpwi r31, 0xC
blt player_index_loop            ##### do this for 12 players, after this we are done with setup
lmw r29, 8(r1)
addi r1, r1, 0x14
stb r8, 0x1f(r3)                 ##### default instruction


############################
### inject at 8065EE14 #####
### inject at 8065E18C #####
### inject at 8065D7F8 #####
### inject at 8064C4A4 #####
############################
############################
### Local Item Spy ASM, here we want to load the UNICODE-symbols of the items depending ############################
### on the item in inventory (NOTE: we don't need a player index here, because this subroutine is ############################
### called for each player slot (Combining local and away item spy) #########################
############################
lbz r0, 1(r3)             ##### default instruction, load the item in r0
stwu r1, -0x14(r1)        ##### make small stack frame
stmw r29, 8(r1)
cmpwi r0, 0x13
mr r11, r0                ##### copy the item to r11
blt skip_replace_nothing
li r11, 0x13              ##### if we have a 0x14 (no Item) we have to replace it with 0x13 because we want to have a fixed offset.
skip_replace_nothing:
mulli r11, r11, 0x1c      ##### multiply item by 28 to prepare the adress for the UNICODE symbols
mulli r12, r22, 0x28      ##### r22 helds player slot, so multiply player slot by 40 to prepare the store adress for the player strings
addis r11, r11, 0x9100
addi r11, r11, 0x1fa      ##### add offset of the color and the UNICODE symbols from our Tail of the current read item
addis r12, r12, 0x9100    ##### add offset of the player strings of the current player
lhzu r29, 2(r11)          ##### load the color of the current read item from our Tail...
sth r29, 6(r12)           ##### ... and store it to the correct spot of the player string
cmpwi r22, 0xa            ##### this part is for changing the timer number of your slot to normal number, what makes it easier to detect your slot in race
addi r29, r22, 0x30       ###### Add the UNICODE prefix of the normal number versions
addis r29, r29, 0x30      ###### If smaller than 10, we are done
blt store_player_slot
addi r29, r22, 0x26       ###### If 10 or higher, add the prefix - 10 to the index...
addis r29, r29, 0x31      ###### ... and set the tens digit to 1 (normal version)
store_player_slot
stw r29, 8(r12)           ###### store the player slot string, it will overwrite the timer number for your slot
addi r12, r12, 0xa        ###### now prepare store adress for the UNICODE store loop
li r31, 0                 ###### initialize UNICODE_index
UNICODE_index_loop:
lhzu r29, 2(r11)           ##### load UNICODE halfword of read item and update adress to next halfword
sthu r29, 2(r12)           ##### store UNICODE halfword to player slot and update adress to next halfword
addi r31, r31, 1           ##### increment UNICODE_index
cmpwi r31, 0xd
blt UNICODE_index_loop     ###### after 13 symbols, we are done
lmw r29, 8(r1)
addi r1, r1, 0x14


############################
### inject at 8065EE30 #####
### inject at 8065E1A8 #####
### inject at 8065D814 #####
### inject at 8064C4C0 #####
############################
############################
### Away Item Spy ASM, here we want to load the UNICODE-symbols of the items depending ############################
### on the item in inventory, NOTE: we don't need a player index here, because this subroutine is ############################
### called for each player slot (Combining local and away item spy) #########################
############################
lbz r0, 0x11(r16)              ##### default instruction, load the item in r0
stwu r1, -0x14(r1)             ##### make small stack frame
stmw r29, 8(r1)
cmpwi r0, 0x13
mr r11, r0                     ##### copy the item to r11
blt skip_replace_nothing
li r11, 0x13                   ##### if we have a 0x14 (no Item) we have to replace it with 0x13 because we want to have a fixed offset.
skip_replace_nothing:
mulli r11, r11, 0x1c           ##### multiply item by 28 to prepare the adress for the UNICODE symbols
mulli r12, r22, 0x28           ##### r22 helds player slot, so multiply player slot by 40 to prepare the store adress for the player strings
addis r11, r11, 0x9100
addi r11, r11, 0x1fa           ##### add offset of the color and the UNICODE symbols from our Tail of the current read item
addis r12, r12, 0x9100         ##### add offset of the player strings of the current player
lhzu r29, 2(r11)               ##### load the color of the current read item from our Tail...
sth r29, 6(r12)                ##### ... and store it to the correct spot of the player string
addi r12, r12, 0xa             ###### now prepare store adress for the UNICODE store loop
li r31, 0                      ###### initialize UNICODE_index
UNICODE_index_loop:
lhzu r29, 2(r11)               ##### load UNICODE halfword of read item and update adress to next halfword
sthu r29, 2(r12)               ##### store UNICODE halfword to player slot and update adress to next halfword
addi r31, r31, 1               ##### increment UNICODE_index
cmpwi r31, 0xd
blt UNICODE_index_loop         ###### after 13 symbols, we are done
lmw r29, 8(r1)
addi r1, r1, 0x14


Code Creator: Unnamed
Code Credits: stebler (pretty speedometer source), Bully (Item-Spy ASMs), Vega (adress that is called in between races)

Print this item

  new member
Posted by: iteyawning - 01-11-2024, 04:06 AM - Forum: Introductions - Replies (1)

Hi everyone, my name is iteyawning. I'm new here. Hope to have the best time together!

Print this item

  Automatic BRSAR Patching [Elias_]
Posted by: Vega - 11-22-2023, 12:33 AM - Forum: Visual & Sound Effects - No Replies

Automatic BRSAR Patching [Elias_]

Vid link - https://www.youtube.com/watch?v=y2tOmsdoBjw

PAL
C2091350 00000002
3FE07FFF 63FFFFFF
93FD0074 00000000

NTSC-U
C20912B0 00000002
3FE07FFF 63FFFFFF
93FD0074 00000000

NTSC-J
C2091270 00000002
3FE07FFF 63FFFFFF
93FD0074 00000000

NTSC-K
C20913B0 00000002
3FE07FFF 63FFFFFF
93FD0074 00000000

Code creator: Elias_

Print this item

  How To BYPASS MKW Lounge's Security Measures
Posted by: Dorian - 10-29-2023, 11:39 AM - Forum: Other - No Replies

Hi all, to start this thread, I would like to explain to you how Lounge operates, and how they go about banning people.

A couple of important things:
- Staff reserve the right to ignore, or straight up ban you without explanation most of the time.
- Staff may become invasive, requesting unorthodox information. (e.g. - location information, past history online, etc.)
- Staff finding ANY reason to believe you're an alt, you will usually be questioned, or just straight up banned.
- Staff are very aware of these methods, and the bypass that is commonly used (sorry, my fault).


Anyways, with all of that being said, here is a comprehensive guide on bypassing Lounge and FriendBot's security measures.


Requirements:
- Access to changing your router's IPv4, or a mobile hotspot.
- Capable of running codes. (Ocarina, USB GX Loader, Riivolution)
- Aged socials (e.g, - Discord, Twitch, Twitter, YouTube)


Step 1 - Cleaning up old info after a ban

You just got banned from Lounge, and it's a very long one. Many people in the community know of your ban, and you want to start playing again. Unfortunately, erasing your history on the game isn't as easy as it should be, so here are the steps you should take to ensure you can delete MOST of what you know could be used against you in the case of showing old habits on your new account.
Attempt to do the following:
- Erase your MKW save data (FC's)
- Remove any Mii's from your console that may link to you
- Delete information from your socials! (very important) such as YouTube, Twitch, and Twitter.
- Cut contacts from the community, or minimally contact with community users.
- Change Wii information (crucial, follow next steps)


To understand why it's so important to follow steps such as this, think about how the community is so close to each other and usually knows every player, that is what you're trying to break away from, and acting like you understand anything of that sort once joining on a new account, will immediately put you on a suspicion list in the entire community (especially if you're a high tier player).


Step 2 - Bypassing with New Information

In order to even get PAST the security checks, you will need to change some information to stay safe from the prying eyes of the Lounge staff members. 
The only staff who can view FriendBot information are Bosses & Arbitrators (LT, HT, RT, CT).

In order to bypass FriendBot's checks, these are what you need to change:
- MAC Address
- Wii ID
- IP Address
- Discord Account


This is ALL you need to bypass FriendBot's checks, and it's fairly simple to do as well.

1. Changing your MAC address is very simple. You can do it in 2 ways, you can either:
- Use a LAN Adapter (Wired connection)
- Use the Wireless MAC Address (A new Wii is required for MAC address to change if connecting wirelessly)

Personally I recommend using a LAN adapter, they're fairly cheap and easily replaceable, if you really care about consistently ban evading this will be your best alternative.

NOTE: YOU WILL NEED A NEW LAN ADAPTER AFTER EVERY BAN, DIFFERENT LAN ADAPTER = DIFFERENT MAC ADDRESS

2. Changing your Wii ID is even more simple. 
- Follow Vega's Wii ID NAND Modifier - https://mariokartwii.com/showthread.php?tid=1173
- If you also have access to the NWC24 developer tool, you can generate it from there as well.
Apply new Wii ID, and you're done.

3. Changing your IP address is not so easy, here's why:
Your internet provider may provide STATIC IP addresses, meaning you'll have to ask for a new router. Call your ISP, and claim you need a replacement router for the purpose of your IP being logged on an unwanted service. If done successfully, your IP should change, and you're good to go.

For all the dynamic routers, it is usually very easy to change your IP. Simply unplugging your router for 30 minutes - 1 hour, and plugging it back in will usually do the trick. Some routers may require that you go on the admin panel, and "Release" and "Renew" the IP(DHCP Lease).

Not able to do either of those? Well, simply use your phones hotspot. The only downside to this is you cannot use a LAN adapter, so if you don't have a MAC address that hasn't been used on a Wii, then you're out of luck. Restart your phone, and turn on your hotspot. Most hotspots usually change to different states, so be careful when logging in, it may look very suspicious.

Personally, if you plan to do this long term, or want an easy way to change your IP in general, I recommend you use the TP-Link AC1200 router if your ISP allows 3rd party routers, and is dynamic.

Once you've verified your IPv4 is changed via WhatIsMyIP, you can move onto the final step.

4. Discord Accounts
This is a bit tricky, considering staff usually believe: "New Discord account = suspicious/probably alt". However, there is a way to circumvent this.

Currently, the best way to get a Discord account that looks aged and legit would be to find one, or buy one. Personally, I buy my Discord accounts, and they're usually great quality. Something that's at least 2 years of age will do the trick, so don't worry too much about going all out on some 2016 account. Tongue
(I recommend you research markets on your own, or try to find a friend that is willing to give you their alt account.)


Step 3 - Joining Lounge


You've finally done everything and you're ready to join Lounge, but there are some important things you need to do, and remember before going in.


- Join the Discord from a PUBLIC link!
Joining the Discord from a YouTube link, rather than the permanent link in their Discord, or from one of your friends, will prove helpful in the long run. If staff ever ask you how you joined, you immediately know how to answer.

- Get some activity on your license first!
Staff will sometimes check your playtime on Wiimmfi if they deem you suspicious, and may use it against you when looking into your account, have at least 10 hours of playtime on WW's before joining if you really want to make sure you get in with no issues! The more time spent making your alt looking like a new person, the better chance they'll believe you.

- Connect some aged socials!
Notoriously, staff will do a LOT of background checking on you before letting you in. If you connect older socials that align with your Discord's join date, or are even older, then you have a higher chance of being let in. Find an old YouTube, Twitch, or Twitter to connect that has history on it! The more socials, the better, and faster you'll be given your roles.

- Stay low profile!
Even if you may have previously enjoyed interacting with the community, or being toxic, you CANNOT afford to show that you're acting like your original account. People will consider you suspicious if you act like you know how everything normally runs, and you may be targeted for a potential further investigation on your account.

- Good players, stop playing good.
This goes without saying, but if you're a good player (platinum or above) I suggest you lay low for a season (6 months~) before showing your epic skillz. Unfortunately in the community, if you're a good player and no one knows who you are, you are IMMEDIATELY known as an alt, and in some cases, you will get your roles removed, and be pending investigation.


After noting and being ready to follow these steps, you are now ready to join the server. Once you join, verify your FC in the designated channel, and wait for a staff member to give you your roles. If you haven't received your roles within a few days, I recommend typing in "#waiting-room" and asking why you can't see any channels yet, sometimes staff are just lazy and haven't bothered going thru the process of verification.




Conclusion & Whitty banter

Hope the guide works out for you, and stay safe in the competitive community. I love this side of the community where people are looking to learn and innovate, rather than kill the chances of the community ever growing (example, world cup when ludwig was streaming...) and people just ruin it for everyone.

That is how the competitive side of this community will ever be, and will always be. Guess it's good that Lounge is pretty much dead in a year, right?


Credits:
- Vega [Wii ID NAND Modifier Code]

Print this item

  Allow All Vehicles in Battle Mode [Nameless / Scruffy]
Posted by: Vega - 10-27-2023, 11:36 PM - Forum: Time Trials & Battle - Replies (2)

Allow All Vehicles in Battle Mode [Nameless / Scruffy]

NTSC-U
0462ECD0 38000000
0454DF78 3880000A
048308DC 48000044
0483BE44 38600000

PAL
045DE7B4 38000000
04553F98 3880000A
0484FEF0 48000044
04860A90 38600000

NTSC-J
045DE090 38000000
04553918 3880000A
0484F55C 48000044
048600FC 38600000

NTSC-K
045CC950 38000000
04541FF0 3880000A
0483E2B0 48000044
0484EE50 38600000

Code creators: Nameless, Scruffy

Print this item

  Countdown Beta8 Mod [MrBean35000vr, Kazuki]
Posted by: Kazuki - 10-12-2023, 09:45 PM - Forum: Incomplete & Outdated Codes - Replies (1)

Countdown Beta8 Mod [MrBean35000vr, Kazuki]

Countdown Beta8 mod is a modification by Kazuki of Countdown Mode beta8 created by MrBean35000vr.

The main purpose of the modification is to set different time limits for each custom track using course.lex, which is a subfile of the track szs file.

If there is no course.lex or the time limit is not set, then 2:30 = 150seconds is used as the time limit.

Detailed instructions for setting time limits can be found here.

Note that this code currently ignores engine classes above 200cc.

In addition, the following modifications have been made to make the behavior of the code as similar as possible to the latest CTGP Revolution.

Changed lap count from 8 to 9.
Fixed a bug that bgm did not accelerate in some scenes.
If you attack an enemy and score but time cannot be increased any further, your score will not increas.


This code uses 0x800011D4 ~ 0x800011D7 in addition to the Eexception Vector Area used by the original CountDown beta8 code.

NTSC-K port was not created because the original code did not have NTSC-K port.

v1.1:

Code:
(PAL)
04000EF0 00000001
C253f3bc 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2535904 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
388436A0 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 388410D8
90040000 48000030
3C003F8E 3C80808A
388410D8 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C25918d8 0000000E
3CC08000 80C60EF0
2C060001 40A20058
2C00000A 41810050
3CE08000 80E70EFC
2C070000 41820020
81070048 2C0800B4
41A1000C 7C601B78
4800002C 3908FF4C
91070048 C002802C
3CE08000 80E70EF8
2C070000 41820010
C0270000 EC20082A
D0270000 90040008
60000000 00000000
C25328B0 00000005
3CA0809C 80A5D6E8
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
045336B8 60000000
04534350 60000000
04534BBC 60000000
04723D10 281D0009
04723D40 3BA00009
C2723D50 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26f9d1c 00000010
3D80809C 398C1E38
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27EF7A4 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
04798004 48000040
048A5D44 00000014
048A56E8 00000016
048A56EC 00000016
048A5A3C 00000018
048A5488 00000012
048A548C 00000014
048B5CAC 42DC0000
0453FC10 60000000
0453F644 4800006C
0453F6C0 48000030
045349EC 60000000
047F4DB8 38000001
C256FFDC 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
806318F8 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 80843618
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398C0388 7D8903A6
4E800420 3C60809C
806318F8 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 80843618
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398C01EC 7D8903A6
4E800420 2C190000
60000000 00000000
C279864C 00000002
9421FFF0 38000001
980300A7 00000000
c2540910 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 6063d728
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 6129d738
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208054 612911fc
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000
047f35f8 3860000e

(NTSC-U)
04000EF0 00000001
C2539E80 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2530dbc 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
3884EE98 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 3884C9D0
90040000 48000030
3C003F8E 3C80808A
3884C9D0 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C258B0B4 0000000E
3CC08000 80C60EF0
2C060001 40A20058
2C00000A 41810050
3CE08000 80E70EFC
2C070000 41820020
81070048 2C0800B4
41A1000C 7C601B78
4800002C 3908FF4C
91070048 C002802C
3CE08000 80E70EF8
2C070000 41820010
C0270000 EC20082A
D0270000 90040008
60000000 00000000
C252DD68 00000005
3CA0809C 80A58F28
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
0452EB70 60000000
0452F808 60000000
04530074 60000000
0471F8E0 281D0009
0471F910 3BA00009
C271F920 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26F4D60 00000010
3D80809C 398CD508
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27E5494 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
0478EFF8 48000040
048A126C 00000014
048A0D28 00000016
048A0D2C 00000016
048A0F64 00000018
048A0AC8 00000012
048A0ACC 00000014
048B13EC 42DC0000
0453A6D4 60000000
0453A108 4800006C
0453A184 48000030
0452FEA4 60000000
047EA790 38000001
C256B18C 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
8063D110 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 8084EE20
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CB538 7D8903A6
4E800420 3C60809C
8063D110 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 8084EE20
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CB39C 7D8903A6
4E800420 2C190000
60000000 00000000
C278F640 00000002
9421FFF0 38000001
980300A7 00000000
c253b3d4 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 60638f68
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 61298f78
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208053 6129bcc0
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000
047e8fd0 3860000e

(NTSC-J)
04000EF0 00000001
C253ed3c 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2535284 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
38842700 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 38840238
90040000 48000030
3C003F8E 3C80808A
38840238 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C2591258 0000000E
3CC08000 80C60EF0
2C060001 40A20058
2C00000A 41810050
3CE08000 80E70EFC
2C070000 41820020
81070048 2C0800B4
41A1000C 7C601B78
4800002C 3908FF4C
91070048 C002802C
3CE08000 80E70EF8
2C070000 41820010
C0270000 EC20082A
D0270000 90040008
60000000 00000000
C2532230 00000005
3CA0809C 80A5C748
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
04533038 60000000
04533CD0 60000000
0453453C 60000000
0472337C 281D0009
047233AC 3BA00009
C27233BC 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26f9388 00000010
3D80809C 398C0E98
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27EEE10 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
04797670 48000040
048A4EA4 00000014
048A4848 00000016
048A484C 00000016
048A4B9C 00000018
048A45E8 00000012
048A45EC 00000014
048B4E0C 42DC0000
0453F590 60000000
0453EFC4 4800006C
0453F040 48000030
0453436C 60000000
047F4424 38000001
C256F95C 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
80630958 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 80842678
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CFD08 7D8903A6
4E800420 3C60809C
80630958 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 80842678
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CFB6C 7D8903A6
4E800420 2C190000
60000000 00000000
C2797CB8 00000002
9421FFF0 38000001
980300A7 00000000
c2540290 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 6063c788
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 6129c798
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208054 61290b7c
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000
047f2c64 3860000e

v1.0:
Code:
(PAL)
04000EF0 00000001
C253f3bc 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2535904 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
388436A0 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 388410D8
90040000 48000030
3C003F8E 3C80808A
388410D8 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C25918d8 0000000F
3CC08000 80C60EF0
2C060001 40A20064
2C00000A 4181005C
3CE08000 80E70EFC
2C070000 4182002C
81070048 2C0800B4
41A10018 7C080378
3808FFFF 39000000
91070048 4800000C
3908FF4C 91070048
C002802C 3CE08000
80E70EF8 2C070000
41820010 C0270000
EC20082A D0270000
90040008 00000000
C25328B0 00000005
3CA0809C 80A5D6E8
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
045336B8 60000000
04534350 60000000
04534BBC 60000000
04723D10 281D0009
04723D40 3BA00009
C2723D50 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26f9d1c 00000010
3D80809C 398C1E38
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27EF7A4 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
04798004 48000040
048A5D44 00000014
048A56E8 00000016
048A56EC 00000016
048A5A3C 00000018
048A5488 00000012
048A548C 00000014
048B5CAC 42DC0000
0453FC10 60000000
0453F644 4800006C
0453F6C0 48000030
045349EC 60000000
047F4DB8 38000001
C256FFDC 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
806318F8 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 80843618
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398C0388 7D8903A6
4E800420 3C60809C
806318F8 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 80843618
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398C01EC 7D8903A6
4E800420 2C190000
60000000 00000000
C279864C 00000002
9421FFF0 38000001
980300A7 00000000
c2540910 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 6063d728
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 6129d738
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208054 612911fc
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000

(NTSC-U)
04000EF0 00000001
C2539E80 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2530dbc 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
3884EE98 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 3884C9D0
90040000 48000030
3C003F8E 3C80808A
3884C9D0 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C258B0B4 0000000F
3CC08000 80C60EF0
2C060001 40A20064
2C00000A 4181005C
3CE08000 80E70EFC
2C070000 4182002C
81070048 2C0800B4
41A10018 7C080378
3808FFFF 39000000
91070048 4800000C
3908FF4C 91070048
C002802C 3CE08000
80E70EF8 2C070000
41820010 C0270000
EC20082A D0270000
90040008 00000000
C252DD68 00000005
3CA0809C 80A58F28
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
0452EB70 60000000
0452F808 60000000
04530074 60000000
0471F8E0 281D0009
0471F910 3BA00009
C271F920 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26F4D60 00000010
3D80809C 398CD508
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27E5494 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
0478EFF8 48000040
048A126C 00000014
048A0D28 00000016
048A0D2C 00000016
048A0F64 00000018
048A0AC8 00000012
048A0ACC 00000014
048B13EC 42DC0000
0453A6D4 60000000
0453A108 4800006C
0453A184 48000030
0452FEA4 60000000
047EA790 38000001
C256B18C 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
8063D110 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 8084EE20
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CB538 7D8903A6
4E800420 3C60809C
8063D110 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 8084EE20
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CB39C 7D8903A6
4E800420 2C190000
60000000 00000000
C278F640 00000002
9421FFF0 38000001
980300A7 00000000
c253b3d4 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 60638f68
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 61298f78
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208053 6129bcc0
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000

(NTSC-J)
04000EF0 00000001
C253ed3c 00000006
3C608000 80630EF0
2C030001 40A20014
3C808000 808411D4
1C8403E8 4800000C
3C600005 388393E0
60000000 00000000
C2535284 00000027
3C808000 90640EFC
80840EF0 60000000
2C040001 40A20118
88830042 2C040000
40A200A8 38800001
98830042 3960003C
3D808000 818C11D4
7C8C5B96 98830015
98830021 1C84003C
7C846050 98830016
98830022 3C80809C
38842700 8004014C
900401A0 38000000
90040074 900400A4
900401E0 38000001
90040084 90040090
90040140 90040148
900401E8 38000002
90040098 90040194
900401CC 38000003
900400A0 38000007
900401C4 38000008
9004018C 38000009
90040138 80040088
9004014C 48000068
80830048 3D808000
818C11D4 1D8C003C
396CF574 7C045800
41A0004C 7C046000
41800018 3C003F80
3C80808A 38840238
90040000 48000030
3C003F8E 3C80808A
38840238 81840000
7C0C0000 41A20018
398C03FB 7C0C0000
41A00008 3D803F8E
91840000 9421FFC0
60000000 00000000
C2591258 0000000F
3CC08000 80C60EF0
2C060001 40A20064
2C00000A 4181005C
3CE08000 80E70EFC
2C070000 4182002C
81070048 2C0800B4
41A10018 7C080378
3808FFFF 39000000
91070048 4800000C
3908FF4C 91070048
C002802C 3CE08000
80E70EF8 2C070000
41820010 C0270000
EC20082A D0270000
90040008 00000000
C2532230 00000005
3CA0809C 80A5C748
80A5003C 80A50000
80A50000 80A50000
38000009 98040B8D
60000000 00000000
04533038 60000000
04533CD0 60000000
0453453C 60000000
0472337C 281D0009
047233AC 3BA00009
C27233BC 00000007
4800002D 00000000
00000000 00000000
3F800000 40000000
40400000 40800000
40A00000 40C00000
40E00000 7CA802A6
38800003 00000000
C26f9388 00000010
3D80809C 398C0E98
800C0000 2C000000
4182005C 7C0C0378
800C0000 2C000000
4182004C 7C0C0378
800C0000 2C00001E
4180003C 2C000028
4180003C 2C000068
4180002C 2C00006A
4180002C 2C000070
4180001C 2C000072
4180001C 2C000074
4180000C 2C000076
4180000C 3D803F80
919F0208 C3FF0208
60000000 00000000
C27EEE10 00000005
80BC0098 80A50044
80A50000 38600000
94650010 3C608000
90A30EF8 7F83E378
60000000 00000000
04797670 48000040
048A4EA4 00000014
048A4848 00000016
048A484C 00000016
048A4B9C 00000018
048A45E8 00000012
048A45EC 00000014
048B4E0C 42DC0000
0453F590 60000000
0453EFC4 4800006C
0453F040 48000030
0453436C 60000000
047F4424 38000001
C256F95C 0000002B
3C608000 80630EF0
2C030000 41A20140
2C190000 40820138
7C17C000 40820130
7C13A000 40820128
807E0004 809F0000
80630004 80840004
80630004 80840004
546337FE 548437FE
7C032000 41A20100
41800084 3C60809C
80630958 80630020
3980FFFF 398C0001
2C0C000C 418200E0
1C8C0004 7C83202E
80840000 80840030
7C1E2000 4082FFE0
3C80809C 80842678
80840014 1C6C0248
7C832214 886400A7
2C030001 40A200A8
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CFD08 7D8903A6
4E800420 3C60809C
80630958 80630020
3980FFFF 398C0001
2C0C000C 41820060
1C8C0004 7C83202E
7C1F2000 4082FFE8
3C80809C 80842678
80840014 1C6C0248
7C832214 886400A7
2C030001 40A20030
38600000 986400A7
806400A8 2C030000
41A2000C 38600001
906400A8 3D808057
398CFB6C 7D8903A6
4E800420 2C190000
60000000 00000000
C2797CB8 00000002
9421FFF0 38000001
980300A7 00000000
c2540290 00000037
9421ff80 7c0802a6
90010084 bc610008
48000139 b8610008
80010084 7c0803a6
38210080 48000188
7d8802a6 48000011
636f7572 73652e6c
65780000 7c6802a6
7d8803a6 4e800020
80630000 2c030000
4d820020 80630b6c
4e800020 2c030000
418200b8 81430000
3d204c45 61292d58
7c0a4800 408200ac
81430004 3d200001
7c0a4800 408200a4
9421fff0 93e1000c
8123000c 7fe34a14
48000054 813f0004
2809000b 4081008c
7c0802a6 90010014
3c60809b 6063c788
4bffff91 28030002
41810078 3bff0008
38630001 5463083c
7c7f1a2e 80010014
7c0803a6 48000030
813f0004 39290008
7fff4a14 813f0000
3d404354 614a444e
7c095000 41a2ffa0
2c090000 4082ffdc
38600096 83e1000c
38210010 4e800020
38600096 4e800020
38600096 4e800020
38600096 4e800020
38600096 4bffffd8
38600096 80010014
7c0803a6 4bffffc8
9421fff0 7c0802a6
90010014 93e1000c
3d20809b 6129c798
83e90000 4bfffec5
7c651b78 38c00000
38800001 7fe3fb78
3d208054 61290b7c
7d2903a6 4e800421
4bfffed5 3d208000
612911d4 90690000
80010014 7c0803a6
83e1000c 38210010
4e800020 382100a0
60000000 00000000

Credits:
MrBean35000vr for original code
Wiimm for lex file implementation
mkw (Decompilation of Mario Kart Wii) contributors for System::ResourceManager class
JoshuaMK for CC Tracker

v1.1 update:
Fixed a problem that sometimes allowed scores of 11 or more to be obtained.
Fixed an issue where sometimes the actual score earned did not match the displayed score.
Fixed warning icon for megamushroom.

source code (v1.1):
source code (v1.0):

Print this item

  Extend Waiting For Others [dirtyfrikandel]
Posted by: dirtyfrikandel - 10-12-2023, 10:02 AM - Forum: Online Non-Item - No Replies

Extend Waiting For Others [dirtyfrikandel]

This code fixes the following problem when you use the Freeze Selection Timer code by bully ( https://mariokartwii.com/showthread.php?tid=154): If friends in a friend room select a character / vehicle combo, they will see a "Please wait a moment" screen while they wait for you to choose. After around 3,5 minutes, they will get disconnected. The same holds true for voting for a track.  This code prevents that. 

I used this code in during a LAN party. This makes it possible to have a small break between races to get beers / use the toilet etc.


NTSC-U
C25DD37C 00000002
38000001 90030020
60000000 00000000

PAL
C2601C5C 00000002
38000001 90030020
60000000 00000000

NTSC-J
C26013D0 00000002
38000001 90030020
60000000 00000000

NTSC-K
C25F007C 00000002
38000001 90030020
60000000 00000000

Print this item

  Bug found in Codewrite Assembler
Posted by: Vega - 10-06-2023, 04:40 PM - Forum: Coding & Hacking General Discussion - No Replies

Some months ago I had to upgrade my Debian machine which no longer allows me to run Legacy PyiiASMH for cheat code assembling. PyiiASMH3 won't work on my machine at all so I'm left with power-eabi-as (barebones engine you can get from Devkit or GCC), WiiRDGUI, or CodeWrite. Thus I use Codewrite on my machine.

Codewrite does this odd thing of adding arbitrary data to the end of a code if said code contains paired single instructions. For example, let's say we have a code with this 1 instruction in its source

Code:
ps_res f0, f0

Codewrite will assemble this as...

Code:
C2000000 00000004
1000001A 00000008
00000004 00000002
41505569 6E666F00
00420001 00000000

As you can see there's a bunch of appended junk after "1000001A".

However this is *NOT* the bug I am talking about. Yes the junk data being appended is a bug too, but we can simply remove it and alter the byte amount at the top right word (C2 line count) and the code will work fine. In fact, I knew about this junk data issue a long time ago, just never cared to report it because it's so obvious.

The bug here is the assembled word for the ps_res instruction.

ps_res uses a mask of 0x10000030. Thus, regardless of what FPRs you use in the instruction, it's impossible for the result to end in 1A or 1-anything.

This bug also effects ps_res(.). The record dot is enclosed in parenthesis for easy visual notice. 

Open up Codewrite and assemble the following source.

Code:
ps_res f0, f0
ps_res. f0, f0

These 2 instructions should assemble as 0x10000030 and 0x10000031 respectively. However, they don't. 

What's causing this? Here are the possible reasons (1 or both are true)
  • Codewrite uses an outdated/bugged version of the powerpc-eabi-as engine thats included with it
  • Codewrite application itself is modifying the assembled instruction sometime after the engine was executed for whatever reason

Will this bug effect you?
Simply no, afaik there are zero Wii Gecko Codes (in ANY game) that use the ps_res instruction. 

Does Codewrite botch any other instructions?
Nope, I've tested all other (yes all...) Broadway PPC instructions. Zero issues.

Print this item

  Mii Icon Override [Kazuki]
Posted by: Kazuki - 09-30-2023, 03:07 AM - Forum: Visual & Sound Effects - No Replies

Mii Icon Override [Kazuki]

This code replaces a specific Mii specified by Mii ID with a specific icon.
The Mii ID and the icon to be replaced can be specified by modifying brlyt.
Some UIs also require brctr modification. (No further brctr modification is required for the distributed szs)
Only ghost records cannot be replaced due to code specifications.


Code:
(PAL)
c263e3dc 00000027
9421ff80 7c0802a6
90010084 bc610008
48000049 9061fffc
b8610008 80010084
7c0803a6 38210080
8181ff7c 2c0c0000
40820100 4e800020
7c6802a6 7d8803a6
4e800020 7d8802a6
4bfffff1 6d69695f
25303878 00000000
9421ffc8 93a1002c
81250004 54c6103a
7fa9302e 2c1d0000
418200b8 7c0802a6
9001003c 93c10030
93e10034 7c7f1b78
7c9e2378 4bffffb9
7c641b78 80bd0094
38610008 3d208001
61291a2c 7d2903a6
4cc63182 4e800421
38810008 7fe3fb78
3d208063 6129e328
7d2903a6 4e800421
2c030000 40820028
38600001 83c10030
83e10034 8001003c
7c0803a6 546307fe
83a1002c 38210038
4e800020 38a10008
7fc4f378 7fe3fb78
3d208063 6129e0f0
7d2903a6 4e800421
38600000 83c10030
83e10034 8001003c
7c0803a6 4bffffc0
38600001 4bffffb8
9421ffc0 00000000

(NTSC-U)
c260cfbc 00000027
9421ff80 7c0802a6
90010084 bc610008
48000049 9061fffc
b8610008 80010084
7c0803a6 38210080
8181ff7c 2c0c0000
40820100 4e800020
7c6802a6 7d8803a6
4e800020 7d8802a6
4bfffff1 6d69695f
25303878 00000000
9421ffc8 93a1002c
81250004 54c6103a
7fa9302e 2c1d0000
418200b8 7c0802a6
9001003c 93c10030
93e10034 7c7f1b78
7c9e2378 4bffffb9
7c641b78 80bd0094
38610008 3d208001
61290ecc 7d2903a6
4cc63182 4e800421
38810008 7fe3fb78
3d208060 6129cf08
7d2903a6 4e800421
2c030000 40820028
38600001 83c10030
83e10034 8001003c
7c0803a6 546307fe
83a1002c 38210038
4e800020 38a10008
7fc4f378 7fe3fb78
3d208060 6129ccd0
7d2903a6 4e800421
38600000 83c10030
83e10034 8001003c
7c0803a6 4bffffc0
38600001 4bffffb8
9421ffc0 00000000

(NTSC-J)
c263da48 00000027
9421ff80 7c0802a6
90010084 bc610008
48000049 9061fffc
b8610008 80010084
7c0803a6 38210080
8181ff7c 2c0c0000
40820100 4e800020
7c6802a6 7d8803a6
4e800020 7d8802a6
4bfffff1 6d69695f
25303878 00000000
9421ffc8 93a1002c
81250004 54c6103a
7fa9302e 2c1d0000
418200b8 7c0802a6
9001003c 93c10030
93e10034 7c7f1b78
7c9e2378 4bffffb9
7c641b78 80bd0094
38610008 3d208001
61291950 7d2903a6
4cc63182 4e800421
38810008 7fe3fb78
3d208063 6129d994
7d2903a6 4e800421
2c030000 40820028
38600001 83c10030
83e10034 8001003c
7c0803a6 546307fe
83a1002c 38210038
4e800020 38a10008
7fc4f378 7fe3fb78
3d208063 6129d75c
7d2903a6 4e800421
38600000 83c10030
83e10034 8001003c
7c0803a6 4bffffc0
38600001 4bffffb8
9421ffc0 00000000

(NTSC-K) (untested)
c262c6f4 00000027
9421ff80 7c0802a6
90010084 bc610008
48000049 9061fffc
b8610008 80010084
7c0803a6 38210080
8181ff7c 2c0c0000
40820100 4e800020
7c6802a6 7d8803a6
4e800020 7d8802a6
4bfffff1 6d69695f
25303878 00000000
9421ffc8 93a1002c
81250004 54c6103a
7fa9302e 2c1d0000
418200b8 7c0802a6
9001003c 93c10030
93e10034 7c7f1b78
7c9e2378 4bffffb9
7c641b78 80bd0094
38610008 3d208001
61291a94 7d2903a6
4cc63182 4e800421
38810008 7fe3fb78
3d208062 6129c640
7d2903a6 4e800421
2c030000 40820028
38600001 83c10030
83e10034 8001003c
7c0803a6 546307fe
83a1002c 38210038
4e800020 38a10008
7fc4f378 7fe3fb78
3d208062 6129c408
7d2903a6 4e800421
38600000 83c10030
83e10034 8001003c
7c0803a6 4bffffc0
38600001 4bffffb8
9421ffc0 00000000


source and SZSs:
https://dl.dropboxusercontent.com/scl/fi...8z6pa8ixmp

credit:
mkw-sp contributors for UI::MiiGroup class and UI::LayoutUIControl class
https://github.com/mkw-sp/mkw-sp

Print this item