Customizable Track Based Character+Vehicle Selection -Online- [Vega]
Code allows you to set the character+vehicle combo to play as for every course (including Battle courses). So for example if you set Daisy Mach Bike for rDKJP, every time rDKJP is selected, your character+vehicle will be updated to that specific combo. Do NOT use on Wiimmfi Public WWs, will get you banned.
The values in YELLOW are the char+vechicle combos that YOU need to fill in. Each halfword (4 digits) is a character THEN vechicle value. The first 2 digits of the 4 is the character value. The second 2 digits of the 4 is the vehicle value.
So for example MCMC is the character + vehicle values for MC (Mario Circuit). The first "MC" is the Character value. The second "MC" is the Vehicle value.
Another example is rPBB is the character + vehicle value for rPB (GCN Peach Beach). The "rP" is the Character value. The "BB" is the Vehicle value.
It will take you awhile to fill in all the values. Note that the values AFTER "rBC3rSGB" are the Battle Courses. If unsure, just fill these all with 1602 (FK, Heavy Kart).
Here's a list of all the applicable Character + Vehicle values that you can use to complete the code. Obviously, if you use an invalid combo, the Game will freeze (black screen).
NTSC-U
C2612EF4 00000010
8063D930 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
PAL
C2644314 00000010
80632100 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
NTSC-J
C2643980 00000010
80631160 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
NTSC-K
C263262C 00000010
80630740 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
Code creator: Vega
Source:
Code allows you to set the character+vehicle combo to play as for every course (including Battle courses). So for example if you set Daisy Mach Bike for rDKJP, every time rDKJP is selected, your character+vehicle will be updated to that specific combo. Do NOT use on Wiimmfi Public WWs, will get you banned.
The values in YELLOW are the char+vechicle combos that YOU need to fill in. Each halfword (4 digits) is a character THEN vechicle value. The first 2 digits of the 4 is the character value. The second 2 digits of the 4 is the vehicle value.
So for example MCMC is the character + vehicle values for MC (Mario Circuit). The first "MC" is the Character value. The second "MC" is the Vehicle value.
Another example is rPBB is the character + vehicle value for rPB (GCN Peach Beach). The "rP" is the Character value. The "BB" is the Vehicle value.
It will take you awhile to fill in all the values. Note that the values AFTER "rBC3rSGB" are the Battle Courses. If unsure, just fill these all with 1602 (FK, Heavy Kart).
Here's a list of all the applicable Character + Vehicle values that you can use to complete the code. Obviously, if you use an invalid combo, the Game will freeze (black screen).
Code:
Character Values:
00 = Mario
01 = Baby Peach
02 = Waluigi
03 = Bowser
04 = Baby Daisy
05 = Dry Bones
06 = Baby Mario
07 = Luigi
08 = Toad
09 = Donkey Kong
0A = Yoshi
0B = Wario
0C = Baby Luigi
0D = Toadette
0E = Koopa
0F = Daisy
10 = Peach
11 = Birdo
12 = Diddy Kong
13 = King Boo
14 = Bowser Jr.
15 = Dry Bowser
16 = Funky Kong
17 = Rosalina
18 = S Mii AM
19 = S Mii AF
1A = S Mii BM
1B = S Mii BF
1C = S Mii CM
1D = S Mii CF
1E = M Mii AM
1F = M Mii AF
20 = M Mii BM
21 = M Mii BF
22 = M Mii CM
23 = M Mii CF
24 = L Mii AM
25 = L Mii AF
26 = L Mii BM
27 = L Mii BF
28 = L Mii CM
29 = L Mii CF
2A = M Mii
2B = S Mii
2C = L Mii
Vehicle Values:
00 = Standard Kart S
01 = Standard Kart M
02 = Standard Kart L
03 = Booster Seat
04 = Classic Dragster
05 = Offroader
06 = Mini Beast
07 = Wild Wing
08 = Flame Flyer
09 = Cheep Charger
0A = Super Blooper
0B = Piranha Prowler
0C = Tiny Titan
0D = Daytripper
0E = Jetsetter
0F = Blue Falcon
10 = Sprinter
11 = Honeycoupe
12 = Standard Bike S
13 = Standard Bike M
14 = Standard Bike L
15 = Bullet Bike
16 = Mach Bike
17 = Flame Runner
18 = Bit Bike
19 = Sugarscoot
1A = Wario Bike
1B = Quacker
1C = Zip Zip
1D = Shooting Star
1E = Magikruiser
1F = Sneakster
20 = Spear
21 = Jet Bubble
22 = Dolphin Dasher
23 = Phantom
NTSC-U
C2612EF4 00000010
8063D930 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
PAL
C2644314 00000010
80632100 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
NTSC-J
C2643980 00000010
80631160 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
NTSC-K
C263262C 00000010
80630740 8963003C
2C0B00FF 4182006C
48000059 MCMCMMMM
MGMGGVGV TFTFCMCM
DKSCWGMM LCLCDCDC
MHMHMTMT BCBCRRRR
DDRRKCKC rPBBrMCC
rWSSrDKM rYFFrDHH
rPGGrDSS rMC3rGV2
rMRRrSLL rBCCDKJP
rBC3rSGB brDPbBPP
bCCRbFSS bTDDbrCL
brTHbBC4 bBC3brSS
7D8802A6 556B083C
7D4B622E B143001C
60000000 00000000
Code creator: Vega
Source:
Code:
#C2 Hook Addresses
#NTSC-U 80612EF4
#PAL 80644314
#NTSC-J 80643980
#NTSC-K 8063262C
#Region Set
.set region, '' #Use e,p,j, or k
#Symbols
.set toadette, 0xD
.set daisy, 0xF
.set funky, 0x16
.set skartlarge, 0x2
.set mach, 0x16
.set flamerunner, 0x17
.set magi, 0x1E
.set spear, 0x20
#Register Notes
#LR NOT safe!, r0 and r4 thru r12 safe
#r3 is SELECT Packet Ptr
#Hook Address Notes
#Code hooked at first parent that calls SELECT_Get_Winning_Track
#SELECT Packet Notes
#0x1C Your Character
#0x1D Your Vehicle
#0x1E Your Track Pick
#0x1F Your Star Ranking
#0x24 Your Guests Char
#0x25 Your Guests Vechicle
#0x26 Your Guests Track Pick (is yours ofc)
#0x27 Reserved/null byte
#0x28 Select ID word (unique)
#0x2C Battle Type
#0x2E Team Bits
#0x3C Selected Track
#0x3D Selection/Lottery Phase
#0x3E Who Won Track Pick
#0x3F CC
#Original Instruction; grab SELECT ptr
.if (region == 'E' || region == 'e') #NTSC-U
lwz r3, -0x26D0 (r3)
.elseif (region == 'P' || region == 'p') #PAL
lwz r3, 0x2100 (r3)
.elseif (region == 'J' || region == 'j') #NTSC-J
lwz r3, 0x1160 (r3)
.elseif (region == 'K' || region == 'k') #NTSC-K
lwz r3, 0x0740 (r3)
.else #Invalid Region
.err #Region match not detected. Tell the Assembler to halt and throw an error.
.endif
#Just incase SOMEHOW the track hasn't been determined yet...
lbz r11, 0x3C (r3)
cmpwi r11, 0xFF
beq- the_end
#Create Lookup Table and its ptr
#NOTE: "Perfect Combo" used as example, adjust this before assembling and don't forget to add in more symbols
bl table
.byte funky, spear #MC
.byte funky, flamerunner #MMM
.byte funky, flamerunner #MG
.byte funky, flamerunner #GV
.byte funky, flamerunner #TF
.byte funky, flamerunner #CM
.byte funky, flamerunner #DKSC
.byte funky, flamerunner #WGM
.byte funky, spear #LC
.byte funky, flamerunner #DC
.byte funky, flamerunner #MH
.byte funky, flamerunner #MT
.byte funky, flamerunner #BC
.byte funky, flamerunner #RR
.byte funky, flamerunner #DDR
.byte funky, flamerunner #KC
.byte funky, spear #rPB
.byte funky, flamerunner #rMC
.byte funky, flamerunner #rWS
.byte daisy, mach #rDKM
.byte funky, spear #rYF
.byte funky, flamerunner #rDH
.byte funky, flamerunner #rPG
.byte funky, flamerunner #rDS
.byte funky, flamerunner #rMC3
.byte funky, flamerunner #rGV2
.byte funky, flamerunner #rMR
.byte toadette, magi #rSL
.byte funky, flamerunner #rBC
.byte daisy, mach #rDKJP
.byte funky, flamerunner #rBC3
.byte toadette, magi #rSGB
.byte funky, skartlarge #bDP
.byte funky, skartlarge #bBP
.byte funky, skartlarge #bCCR
.byte funky, skartlarge #bFS
.byte funky, skartlarge #bTD
.byte funky, skartlarge #brCL
.byte funky, skartlarge #brTH
.byte funky, skartlarge #brBC4
.byte funky, skartlarge #brBC3
.byte funky, skartlarge #brS
.align 2
table:
mflr r12
#Mulli Track value by 2, and use that as index to grab char+vehicle combo from table
slwi r11, r11, 1
lhzx r10, r11, r12
#Write Char+Vehicle to SELECT packet
sth r10, 0x1C (r3)
#End
the_end: