Choose Character+Vehicle For All Opponents [Vega]
This code will allow you to choose every character+vehicle combo for every opponent in the race. Remember to choose valid combos for all opponents!
Value Explanation:
KKKK = CPU 1's Character then Vehicle Values
NNNN = CPU 2's Character then Vehicle Values
PPPP = CPU 3's Character then Vehicle Values
RRRR = CPU 4's Character then Vehicle Values
SSSS = CPU 5's Character then Vehicle Values
TTTT = CPU 6's Character then Vehicle Values
UUUU = CPU 7's Character then Vehicle Values
VVVV = CPU 8's Character then Vehicle Values
XXXX = CPU 9's Character then Vehicle Values
YYYY = CPU 10's Character then Vehicle Values
ZZZZ = CPU 11's Character then Vehicle Values
List of Character & Vehicle Values
Example Value Usage:
First combo is Mario+Mach. Second combo is Baby Peach+Bullet Bike, etc etc..
00160115 02170317
04150515 06150716
08150917 0A16
NTSC-U
C252B7F8 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08052 60E7B7EC
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
PAL
C2530340 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08053 60E70334
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
NTSC-J
C252FCC0 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08052 60E7FCB4
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
NTSC-K
C251E398 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08051 60E7E38C
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
Code creator: Vega
Code credits: Bully (Force Character/Vehicle On Everyone)
Source:
#Address Ports
#NTSC-U 8052B7F8
#PAL 80530340
#NTSC-J 8052FCC0
#NTSC-K 8051E398
.set region, '' #Plug in e,p,j,k for compilation region
stw r6, 0x000C (r4) #Default Instruction, Player 1's Character and Vehicle already complete
bl table #Character + Vehicle Table
.llong 0x1111111111111111 #CPU's 1 thru 4 #Random non-working values used just to allow quick compilation
.llong 0x2222222222222222 #CPU's 5 thru 8
.llong 0x3333333333330000 #CPU's 9 thru 11, final halfword left null since there's only 11 CPUs
table:
mflr r6
addi r6, r6, -1 #Adjust for first loading address in upcoming loop
addi r7, r4, 0x8 #To allow upcoming 0xF0 increments in stwu instruction within loop
li r12, 11 #Amount of Opponents to Modify
mtctr r12
loop:
lbzu r12, 0x1 (r6) #After loading, update address so next byte can be loaded
stw r12, 0xF4 (r7) #Character Byte is loaded first, store it to its spot for the current opponent
lbzu r12, 0x1 (r6) #Load next byte, update address
stwu r12, 0xF0 (r7) #Vehicle Byte is loaded next, store it, update address to next CPU
bdnz+ loop
lis r6, 0x4800 #Compiled instruction for Unconditional Branch w/ jump amount of 0x10, so code only executes once
ori r6, r6, 0x0010
#Set Address of where new instruction will be written (to branch over all 4 character+vehicle related instructions, so this code only executes once)
.if (region == 'E' || region == 'e')
lis r7, 0x8052
ori r7, r7, 0xB7EC
.elseif (region == 'P' || region == 'p')
lis r7, 0x8053
ori r7, r7, 0x0334
.elseif (region == 'J' || region == 'j')
lis r7, 0x8052
ori r7, r7, 0xFCB4
.elseif (region == 'K' || region == 'k')
lis r7, 0x8051
ori r7, r7, 0xE38C
.else # Invalid Region
.err
.endif
stw r6, 0 (r7) #Write new instruction to memory. Have to use zero offset for upcoming cache clear
dcbst 0, r7 #Clear cache so new instruction updates instantly, this is needed
sync
icbi 0, r7
isync
This code will allow you to choose every character+vehicle combo for every opponent in the race. Remember to choose valid combos for all opponents!
Value Explanation:
KKKK = CPU 1's Character then Vehicle Values
NNNN = CPU 2's Character then Vehicle Values
PPPP = CPU 3's Character then Vehicle Values
RRRR = CPU 4's Character then Vehicle Values
SSSS = CPU 5's Character then Vehicle Values
TTTT = CPU 6's Character then Vehicle Values
UUUU = CPU 7's Character then Vehicle Values
VVVV = CPU 8's Character then Vehicle Values
XXXX = CPU 9's Character then Vehicle Values
YYYY = CPU 10's Character then Vehicle Values
ZZZZ = CPU 11's Character then Vehicle Values
List of Character & Vehicle Values
Code:
Characters
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
Vehicles
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
Example Value Usage:
First combo is Mario+Mach. Second combo is Baby Peach+Bullet Bike, etc etc..
00160115 02170317
04150515 06150716
08150917 0A16
NTSC-U
C252B7F8 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08052 60E7B7EC
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
PAL
C2530340 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08053 60E70334
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
NTSC-J
C252FCC0 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08052 60E7FCB4
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
NTSC-K
C251E398 0000000E
90C4000C 4800001D
KKKKNNNN PPPPRRRR
SSSSTTTT UUUUVVVV
XXXXYYYY ZZZZ0000
7CC802A6 38C6FFFF
38E40008 3980000B
7D8903A6 8D860001
918700F4 8D860001
958700F0 4200FFF0
3CC04800 60C60010
3CE08051 60E7E38C
90C70000 7C00386C
7C0004AC 7C003FAC
4C00012C 00000000
Code creator: Vega
Code credits: Bully (Force Character/Vehicle On Everyone)
Source:
#Address Ports
#NTSC-U 8052B7F8
#PAL 80530340
#NTSC-J 8052FCC0
#NTSC-K 8051E398
.set region, '' #Plug in e,p,j,k for compilation region
stw r6, 0x000C (r4) #Default Instruction, Player 1's Character and Vehicle already complete
bl table #Character + Vehicle Table
.llong 0x1111111111111111 #CPU's 1 thru 4 #Random non-working values used just to allow quick compilation
.llong 0x2222222222222222 #CPU's 5 thru 8
.llong 0x3333333333330000 #CPU's 9 thru 11, final halfword left null since there's only 11 CPUs
table:
mflr r6
addi r6, r6, -1 #Adjust for first loading address in upcoming loop
addi r7, r4, 0x8 #To allow upcoming 0xF0 increments in stwu instruction within loop
li r12, 11 #Amount of Opponents to Modify
mtctr r12
loop:
lbzu r12, 0x1 (r6) #After loading, update address so next byte can be loaded
stw r12, 0xF4 (r7) #Character Byte is loaded first, store it to its spot for the current opponent
lbzu r12, 0x1 (r6) #Load next byte, update address
stwu r12, 0xF0 (r7) #Vehicle Byte is loaded next, store it, update address to next CPU
bdnz+ loop
lis r6, 0x4800 #Compiled instruction for Unconditional Branch w/ jump amount of 0x10, so code only executes once
ori r6, r6, 0x0010
#Set Address of where new instruction will be written (to branch over all 4 character+vehicle related instructions, so this code only executes once)
.if (region == 'E' || region == 'e')
lis r7, 0x8052
ori r7, r7, 0xB7EC
.elseif (region == 'P' || region == 'p')
lis r7, 0x8053
ori r7, r7, 0x0334
.elseif (region == 'J' || region == 'j')
lis r7, 0x8052
ori r7, r7, 0xFCB4
.elseif (region == 'K' || region == 'k')
lis r7, 0x8051
ori r7, r7, 0xE38C
.else # Invalid Region
.err
.endif
stw r6, 0 (r7) #Write new instruction to memory. Have to use zero offset for upcoming cache clear
dcbst 0, r7 #Clear cache so new instruction updates instantly, this is needed
sync
icbi 0, r7
isync