Perfect Character/Vehicle Selection [Vega]
#1
Perfect Character/Vehicle Selection [Vega]

This code will select the 'best' character/vehicle combination for whatever track is chosen in the lottery for the race plus what CC the race will be in. Everything is done automatically. Whatever character you choose to start the WW/Room with is what will be shown during every track vote. Be sure to choose Manual when starting the WW/Room.

If you pick Battle with this code on, you will be given Funky Kong w/ Standard Kart.

NOTE about using this in Wiimmfi WW's: This code will get you banned on Wiimmfi.

Tracks that use Daisy w/ Mach:
rDKJP (150cc / Mirror Only)
rDKM (150cc / Mirror Only)
BC (150cc / Mirror Only)

Tracks that use Toadette w/ Magi:
rSL
rSGB

Tracks that use Funky w/ Spear:
LC
MG (100cc Only)
MC
rPB (100cc Only)
rYF

All other track+CC combos will use Funky w/ Flame Runner.

NTSC-U
C2659954 00000016
2C1F0002 40A200A0
8878003F 88B8003C
28050020 41A0000C
38A01602 48000084
2C050000 41820068
2C050002 41820058
2C050008 41820058
2C05000C 41820038
2C050010 41820040
2C050013 41820028
2C050014 41820038
2C05001B 41820038
2C05001D 41820010
2C05001F 41820028
4800002C 2C030001
41820024 38A00F16
48000020 2C030001
40A20014 38A01620
48000010 38A00D1E
48000008 38A01617
B0B8001C 807DD918
60000000 00000000

PAL
C2661890 00000016
2C1F0002 40A200A0
8878003F 88B8003C
28050020 41A0000C
38A01602 48000084
2C050000 41820068
2C050002 41820058
2C050008 41820058
2C05000C 41820038
2C050010 41820040
2C050013 41820028
2C050014 41820038
2C05001B 41820038
2C05001D 41820010
2C05001F 41820028
4800002C 2C030001
41820024 38A00F16
48000020 2C030001
40A20014 38A01620
48000010 38A00D1E
48000008 38A01617
B0B8001C 807D20D8
60000000 00000000

NTSC-J
C2660EFC 00000016
2C1F0002 40A200A0
8878003F 88B8003C
28050020 41A0000C
38A01602 48000084
2C050000 41820068
2C050002 41820058
2C050008 41820058
2C05000C 41820038
2C050010 41820040
2C050013 41820028
2C050014 41820038
2C05001B 41820038
2C05001D 41820010
2C05001F 41820028
4800002C 2C030001
41820024 38A00F16
48000020 2C030001
40A20014 38A01620
48000010 38A00D1E
48000008 38A01617
B0B8001C 807D1138
60000000 00000000

NTSC-K
C264FBA8 00000016
2C1F0002 40A200A0
8878003F 88B8003C
28050020 41A0000C
38A01602 48000084
2C050000 41820068
2C050002 41820058
2C050008 41820058
2C05000C 41820038
2C050010 41820040
2C050013 41820028
2C050014 41820038
2C05001B 41820038
2C05001D 41820010
2C05001F 41820028
4800002C 2C030001
41820024 38A00F16
48000020 2C030001
40A20014 38A01620
48000010 38A00D1E
48000008 38A01617
B0B8001C 807D0718
60000000 00000000



Code creator: Vega



Source:

#~~~~~~~~~~~~~~~~#
# START ASSEMBLY #
#~~~~~~~~~~~~~~~~#

#

.set region, '' #Fill in E, P, J, or K within the quotes for your region when Compiling! Lowercase letters can also be used.

#~~~~~~~~~~~~~~~~~~~~~~#
#     Register Notes   #
# r3, r5 safe for use. #
# r24 = Memory Pointer #
#~~~~~~~~~~~~~~~~~~~~~~#

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#            r24 Offset Notes           #
#            0x1C = Character           #
#             0x1D = Vehicle            #
#         0x3C = Track Selected         #
#         0x3D = Lottery Status         #
# 0x3E = Player Slot Who Won Track Pick #
#       0x3F = CC of Race/Room-GP       #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# 

#~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Lottery Byte (r31) Check #
#       1 = Waiting        #
#       2 = Occuring       #
#~~~~~~~~~~~~~~~~~~~~~~~~~~#

cmpwi r31, 0x2 #Address gets called a lot, we only want to do checks when lottery is occurring
bne+ default_instruction

#~~~~~~~~~~~~~~~#
# Load CC Value #
#    1 = 100    #
#    2= 150     #
#   3 = Mirror  #
#~~~~~~~~~~~~~~~#

lbz r3, 0x003F (r24)

#~~~~~~~~~~~~~~~~~~~~~#
# Load Selected Track #
#~~~~~~~~~~~~~~~~~~~~~#

lbz r5, 0x003C (r24)

#~~~~~~~~~~~~~~~~~~~~~~~#
# Check If Battle Track #
#~~~~~~~~~~~~~~~~~~~~~~~#

cmplwi r5, 0x20 #Battle Track Values range from 0x20 thru 0x29
blt+ vs_tracks #If less than 20, we know we have a VS Track

li r5, 0x1602 #Set Funky w/ Standard Kart L for all Battle Tracks
b the_end

#~~~~~~~~~~~~~~~~~~~~~~~#
# Check VS Track Values #
#~~~~~~~~~~~~~~~~~~~~~~~#

vs_tracks:
cmpwi r5, 0x00 #Mario Circuit
beq- fk_spear
cmpwi r5, 0x02 #Mushroom Gorge
beq- check100_150f
cmpwi r5, 0x08 #Luigi Circuit
beq- fk_spear
cmpwi r5, 0x0C #Bowser's Castle
beq- check100_150d
cmpwi r5, 0x10 #GCN Peach Beach
beq- check100_150f
cmpwi r5, 0x13 #GCN DK Mountain
beq- check100_150d
cmpwi r5, 0x14 #DS Yoshi Falls
beq- fk_spear
cmpwi r5, 0x1B #N64 Sherbet Land
beq- toadette_magi
cmpwi r5, 0x1D #N64 DK's Jungle Parkway
beq- check100_150d
cmpwi r5, 0x1F #GBA Shy Guy Beach
beq- toadette_magi

b fk_flame #All other Track+CC combos will use FK w/ Flame Runner

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Check 100 or 150/Mirror for Daisy Label #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

check100_150d:
cmpwi r3, 0x1
beq- fk_flame #If 100cc, branch to fk_flame label

li r5, 0x0F16 #This will set Daisy w/ Mach Bike.
b the_end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Check 100 or 150/Mirror for Funky Label #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

check100_150f:
cmpwi r3, 0x1
bne+ fk_flame #If 150/Mirror, branch to fk_flame label

#~~~~~~~~~~~~~~~~~~~~~~~~#
# Funky Kong Spear Label #
#~~~~~~~~~~~~~~~~~~~~~~~~#

fk_spear:
li r5, 0x1620 #This will set Funky w/ Spear.
b the_end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Toadette Magikruiser Label #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

toadette_magi:
li r5, 0x0D1E #This will set Toadette w/ Magi.
b the_end

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# Funky Kong Flame Runner Label #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

fk_flame:
li r5, 0x1617 #This will set FK w/ Flame Runner

#~~~~~~~~~~~~~~~#
# The_End Label #
#~~~~~~~~~~~~~~~#

the_end:
sth r5, 0x001C (r24) #Store the character/vehicle halfword value to spot in memory

#~~~~~~~~~~~~~~~~~~~~~#
# Default Instruction #
#~~~~~~~~~~~~~~~~~~~~~#

default_instruction:
.if     (region == 'E' || region == 'e')
        lwz r3, 0xFFFFD918 (r29)
.elseif (region == 'P' || region == 'p')
        lwz r3, 0x20D8 (r29)
.elseif (region == 'J' || region == 'j')
        lwz r3, 0x1138 (r29)
.elseif (region == 'K' || region == 'k')
        lwz r3, 0x0718 (r29)
.endif

#

#~~~~~~~~~~~~~~#
# END ASSEMBLY #
#~~~~~~~~~~~~~~#


Reply
#2
Was waiting for this one! Great code, I use this.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)