Vehicle Stats Modifier [JoshuaMK]
#1
Vehicle Stats Modifier [JoshuaMK]

This code edits MOST  of the stats for all vehicles. Doesn't include turning sharpness while in certain types of road since that would double the length of this code. Also, this code hooks right after the values are initially set, meaning with this code, all vehicles are the same and viable, no matter what character you choose.

This code uses 0x80001100 through 0x80001198 of the Exception Vector Area. Please ensure no other codes utilize this area.



(NTSC-U)
06001100 00000098
WWWWWWWW SSSSSSSS
STSTSTST A0A0A0A0
A1A1A1A1 A2A2A2A2
A3A3A3A3 AEAEAEAE
A0DRFTA0 A1DRFTA1
A2DRFTA2 A3DRFTA3
AEDRFTAE MHTITEMH
AHTITEAH HRHRHRHR
MDTITEMD ADTITEAD
DRDRDRDR DSDSDSDS
DENDDEND MINITRBO
ROADROAD SLIPROAD
WEAKROAD OFFFROAD
HEAVROAD SLIPOFFR
BOOSTPAD BOOSTRMP
JUMPPADD ITEMROAD
SOLIDFAL MOVEROAD
MOVROAD2 STIKROAD
ROADROAD MOVROAD3
C258BBC8 0000000A
D005010C BDC1FF80
7EA902A6 28150001
41A10038 3DC08000
B9EE1100 61CE1100
91E30010 92030018
9223001C BE430024
B9EE0044 BDE30050
BBAE0088 BFA30144
83EE0094 93EE0164
B9C1FF80 00000000

(PAL)
06001100 00000098
WWWWWWWW SSSSSSSS
STSTSTST A0A0A0A0
A1A1A1A1 A2A2A2A2
A3A3A3A3 AEAEAEAE
A0DRFTA0 A1DRFTA1
A2DRFTA2 A3DRFTA3
AEDRFTAE MHTITEMH
AHTITEAH HRHRHRHR
MDTITEMD ADTITEAD
DRDRDRDR DSDSDSDS
DENDDEND MINITRBO
ROADROAD SLIPROAD
WEAKROAD OFFFROAD
HEAVROAD SLIPOFFR
BOOSTPAD BOOSTRMP
JUMPPADD ITEMROAD
SOLIDFAL MOVEROAD
MOVROAD2 STIKROAD
ROADROAD MOVROAD3
C25923EC 0000000A
D005010C BDC1FF80
7EA902A6 28150001
41A10038 3DC08000
B9EE1100 61CE1100
91E30010 92030018
9223001C BE430024
B9EE0044 BDE30050
BBAE0088 BFA30144
83EE0094 93EE0164
B9C1FF80 00000000

(NTSC-J)
06001100 00000098
WWWWWWWW SSSSSSSS
STSTSTST A0A0A0A0
A1A1A1A1 A2A2A2A2
A3A3A3A3 AEAEAEAE
A0DRFTA0 A1DRFTA1
A2DRFTA2 A3DRFTA3
AEDRFTAE MHTITEMH
AHTITEAH HRHRHRHR
MDTITEMD ADTITEAD
DRDRDRDR DSDSDSDS
DENDDEND MINITRBO
ROADROAD SLIPROAD
WEAKROAD OFFFROAD
HEAVROAD SLIPOFFR
BOOSTPAD BOOSTRMP
JUMPPADD ITEMROAD
SOLIDFAL MOVEROAD
MOVROAD2 STIKROAD
ROADROAD MOVROAD3
C2591D6C 0000000A
D005010C BDC1FF80
7EA902A6 28150001
41A10038 3DC08000
B9EE1100 61CE1100
91E30010 92030018
9223001C BE430024
B9EE0044 BDE30050
BBAE0088 BFA30144
83EE0094 93EE0164
B9C1FF80 00000000

(NTSC-K)
06001100 00000098
WWWWWWWW SSSSSSSS
STSTSTST A0A0A0A0
A1A1A1A1 A2A2A2A2
A3A3A3A3 AEAEAEAE
A0DRFTA0 A1DRFTA1
A2DRFTA2 A3DRFTA3
AEDRFTAE MHTITEMH
AHTITEAH HRHRHRHR
MDTITEMD ADTITEAD
DRDRDRDR DSDSDSDS
DENDDEND MINITRBO
ROADROAD SLIPROAD
WEAKROAD OFFFROAD
HEAVROAD SLIPOFFR
BOOSTPAD BOOSTRMP
JUMPPADD ITEMROAD
SOLIDFAL MOVEROAD
MOVROAD2 STIKROAD
ROADROAD MOVROAD3
C2580444 0000000A
D005010C BDC1FF80
7EA902A6 28150001
41A10038 3DC08000
B9EE1100 61CE1100
91E30010 92030018
9223001C BE430024
B9EE0044 BDE30050
BBAE0088 BFA30144
83EE0094 93EE0164
B9C1FF80 00000000



GUIDE

I would firstly suggest using Atlas's kartparam.bin editor, to get an idea of what values to use, and I would finally suggest using a floating point calculator to convert wanted values like (0.5) into hex (3F000000) to put into this code.

WWWW = Weight
SSSSSS = Speed
STSTST = Speed While Turning Multiplier
A0A0A0 = Acceleration Stage 0
A1A1A1 = Acceleration Stage 1
A2A2A2 = Acceleration Stage 2
A3A3A3 = Acceleration Stage 3
AEAEAE = Acceleration Exponent
A0DRFTA0 = Acceleration While Drifting Stage 0
A1DRFTA1 = Acceleration While Drifting Stage 1
A2DRFTA2 = Acceleration While Drifting Stage 2
A3DRFTA3 = Acceleration While Drifting Stage 3
AEDRFTAE = Acceleration Exponent While Drifting
MHTITEMH = Manual Handling Tightness
AHTITEAH = Automatic Handling Tightness
HRHRHR = Handling Range
MDTITEMD = Manual Drifting Tightness
ADTITEAD = Automatic Drifting Tightness
DRDRDR = Drifting Range
DSDSDS = Drift Start
DENDDEND = Drift End Correction
MINITRBO = Miniturbo Duration (00000009 = 9 frame duration)
ROADROAD = Normal Road Speed Multiplier
SLIPROAD = Slippery Road Speed Multiplier
WEAKROAD = Weak Offroad Speed Multiplier
OFFFROAD = Normal Offroad Speed Multiplier
HEAVROAD = Heavy Offroad Speed Multiplier
SLIPOFFR = Slippery Offroad Speed Multiplier
BOOSTPAD = Boost Pad Speed Multiplier
BOOSTRMP = Boost Ramp Speed Multipler
JUMPPADD = Jump Pad Speed Multiplier
ITEMROAD = Item Road Speed Multiplier
SOLIDFAL = Solid Fall Speed Multiplier
MOVEROAD = Moving Road Speed Multiplier
MOVROAD2 = Moving Road 2 Speed Multiplier
STIKROAD = Sticky Road Speed Multiplier
ROADROAD = Normal Road 2 Speed Multiplier
MOVROAD3 = Moving Road 3 Speed Multiplier



#ASM

#~~~~~~~~~~~~#
#Inject > 8058BBC8#
#~~~~~~~~~~~#

stfs f0, 0x010C (r5) #Default instruction
stmw r14, -0x80 (r1)
mfctr r21
cmplwi r21, 1
bgt+ dont_modify
lis r14, 0x8000
lmw r15, 0x1100 (r14)
ori r14, r14, 0x1100
stw r15, 0x10 (r3)
stw r16, 0x18 (r3)
stw r17, 0x1C (r3)
stmw r18, 0x24 (r3)
lmw r15, 0x44 (r14)
stmw r15, 0x5C (r3)
lmw r29, 0x88 (r14)
stmw r29, 0x144 (r3)
lwz r31, 0x94 (r14)
stw r31, 0x164 (r14)
dont_modify:
lmw r14, -0x80 (r1)



Code Creator: JoshuaMK  Heart
Super Mario Eclipse, what Super Mario Sunshine could've been.
Reply
#2
Wow. This is impressive. I always wanted a code like this.

Any way you could make a simplified version that only changes the 'main' categories? You would have to implement some median formula to compensate for all the sub categories? , or is there a way around that?

Once again, impressive code.
Reply
#3
I can look into it, but it might not be worth it since chances are I would have to do extra load/store instructions due to the butchering of the addresses
Super Mario Eclipse, what Super Mario Sunshine could've been.
Reply
#4
The way to make the “simplified” version of this would be to use a look-up table; the old Wiird forums have more information: https://gamehacking.org/wiird/forum/inde...977.0.html

I’d check out what dcx2 did with the surface roller code for SMG2.
Reply
#5
I was going to do a method like that to make my License Unlock code region-free but never bothered with it due to increase in code length.
Reply
#6
(11-02-2019, 07:51 PM)salmon01 Wrote: The way to make the “simplified” version of this would be to use a look-up table; the old Wiird forums have more information: https://gamehacking.org/wiird/forum/inde...977.0.html

I’d check out what dcx2 did with the surface roller code for SMG2.
After reading through that I both do and don't get LUTs. Specifically, how would it apply here?

It generally seemed to be along the lines of:

stfs f0, 0x010C (r5) #Default instruction
stmw r14, -0x80 (r1)
mfctr r21
cmplwi r21, 1
bgt+ dont_modify
bl table
.llong 0001020304050607
.llong 08090A0B0C0D0E0F
.llong 1011121314151617
.llong 18191A1B1C1D1E1F
...
table:
mflr r21
mr r31, r0
lbzx r31, r21, r31
....
dont_modify:
lmw r14, -0x80 (r1)

I only get some of it. i need help understanding it more, and especially how it could be used here.
Super Mario Eclipse, what Super Mario Sunshine could've been.
Reply
#7
Do you have good base stats I could use for reference. Im a noob btw
Reply
#8
I can't turn while drifting and something create off-road on normal road (maybe on all types of roads) in dolphin emulator.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)