diff options
Diffstat (limited to '')
-rw-r--r-- | src/growup.s | 536 |
1 files changed, 536 insertions, 0 deletions
diff --git a/src/growup.s b/src/growup.s new file mode 100644 index 0000000..903b766 --- /dev/null +++ b/src/growup.s @@ -0,0 +1,536 @@ +#ifndef __MWERKS__
+.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4
+.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
+.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14
+.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
+.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
+.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
+.set r30,30; .set r31,31; .set f0,0; .set f1,1; .set f2,2 +.set f3,3; .set f4,4; .set f5,5; .set f8,8;
+#endif
+ + +.text + +.extern OSReport + + +.align 4 + + +.global ModifyGlobalSizes +ModifyGlobalSizes: + +# lhz r10, 8(r3) +# cmpwi r10, 60 +# beq dontDoAnything + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r3) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, LookupTable@h + ori r11, r11, LookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f5, r11, r10 # get it from the array + + # Modify the actor + lwz r4, 0x47C(r3) + + lfs f0, 0xDC(r4) + fmuls f0, f0, f5 + stfs f0, 0xDC(r3) + stfs f0, 0x464(r4) + + lfs f0, 0xE0(r4) + fmuls f0, f0, f5 + stfs f0, 0xE0(r3) + stfs f0, 0x468(r4) + + lfs f0, 0xE4(r4) + fmuls f0, f0, f5 + stfs f0, 0xE4(r3) + stfs f0, 0x46C(r4) + + # Modify the initial actor speeds +# lfs f0, 0xD0(r3) +# fmuls f0, f0, f5 +# stfs f0, 0xD0(r3) +# +# lfs f0, 0xE8(r3) +# fmuls f0, f0, f5 +# stfs f0, 0xE8(r3) +# +# lfs f0, 0xC4(r3) +# fmuls f0, f0, f5 +# stfs f0, 0xC4(r3) +# +# lfs f0, 0x110(r3) +# fmuls f0, f0, f5 +# stfs f0, 0x110(r3) +# +# lfs f0, 0xF4(r3) +# fmuls f0, f0, f5 +# stfs f0, 0xF4(r3) +# +# lfs f0, 0x11C(r3) +# fmuls f0, f0, f5 +# stfs f0, 0x11C(r3) +# +# lfs f0, 0x108(r3) +# fmuls f0, f0, f5 +# stfs f0, 0x108(r3) + + blr + + + + +#dontDoAnything: +# blr + + + +.global ModifyCollision +ModifyCollision: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, LookupTable@h + ori r11, r11, LookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + #This is the old ActivePhysics_InitWithStruct function. + stw r4, 4(r3) + li r0, 0 + + # x_dist_to_center + lfs f0, 0(r5) #Load it +# fmuls f0, f0, f8 #Multiply it by the setting + stfs f0, 0x1C(r3) #Store it + + # y_dist_to_center Time to do all the other ones + lfs f0, 4(r5) + fmuls f0, f0, f8 + stfs f0, 0x20(r3) + + # x_dist_to_edge + lfs f0, 8(r5) + fmuls f0, f0, f8 + stfs f0, 0x24(r3) + + # y_dist_to_edge + lfs f0, 0xC(r5) + fmuls f0, f0, f8 + stfs f0, 0x28(r3) + + # Rest of the function + lbz r4, 0x10(r5) + stb r4, 0x2C(r3) + lbz r4, 0x11(r5) + stb r4, 0x2D(r3) + lwz r4, 0x14(r5) + stw r4, 0x30(r3) + lwz r4, 0x18(r5) + stw r4, 0x34(r3) + lhz r4, 0x1C(r5) + sth r4, 0x38(r3) + lwz r4, 0x20(r5) + stw r4, 0x3C(r3) + stb r0, 0xA1(r3) + + blr # Off we go! + + +.global ModifyStandOnTopInitA +ModifyStandOnTopInitA: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, LookupTable@h + ori r11, r11, LookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + fmuls f1, f1, f8 + fmuls f2, f2, f8 + fmuls f3, f3, f8 + fmuls f4, f4, f8 + fmuls f5, f5, f8 + + #This is the old function. + stfs f1, 0x4C(r3) + stfs f2, 0x50(r3) + stfs f3, 0x54(r3) + stfs f4, 0x58(r3) + stfs f5, 0x5C(r3) + + blr # Off we go! + + +.global ModifyStandOnTopInitB +ModifyStandOnTopInitB: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, LookupTable@h + ori r11, r11, LookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + fmuls f1, f1, f8 + fmuls f2, f2, f8 + fmuls f3, f3, f8 + fmuls f4, f4, f8 + fmuls f5, f5, f8 + + + #This is the old function. I optimized it a tad. A big tad. + lfs f0, 0(r7) + fmuls f1, f1, f0 + fmuls f4, f4, f0 + fmuls f5, f5, f0 + + lfs f0, 4(r7) + fmuls f2, f2, f0 + fmuls f3, f3, f0 + + + stfs f1, 0x4C(r3) + stfs f2, 0x50(r3) + stfs f3, 0x54(r3) + stfs f4, 0x58(r3) + stfs f5, 0x5C(r3) + + blr # Off we go! + + + +.global ModifyStandOnTopInitC +ModifyStandOnTopInitC: + + fmr f5, f3 + fmr f4, f2 + fmr f3, f1 + lfs f1, 0(r5) + lfs f2, 4(r5) + + b ModifyStandOnTopInitA + + +.global ModifyStandOnTopInitD +ModifyStandOnTopInitD: + + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, LookupTable@h + ori r11, r11, LookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + fmr f5, f3 + fmr f4, f2 + fmr f3, f1 + lfs f1, 0(r5) + lfs f2, 4(r5) + + fmuls f1, f1, f8 + fmuls f2, f2, f8 + fmuls f3, f3, f8 + fmuls f4, f4, f8 + fmuls f5, f5, f8 + + lfs f0, 0(r8) + fmuls f1, f1, f0 + fmuls f4, f4, f0 + fmuls f5, f5, f0 + + lfs f0, 4(r8) + fmuls f2, f2, f0 + fmuls f3, f3, f0 + + stfs f1, 0x4C(r3) + stfs f2, 0x50(r3) + stfs f3, 0x54(r3) + stfs f4, 0x58(r3) + stfs f5, 0x5C(r3) + + blr # Off we go! + + + +.global ModifyRiderInitA +ModifyRiderInitA: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, RiderLookupTable@h + ori r11, r11, RiderLookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + lfs f0, 0(r4) + fmuls f0, f0, f8 + stfs f0, 0x4C(r3) + + lfs f0, 4(r4) + fmuls f0, f0, f8 + stfs f0, 0x50(r3) + + lfs f0, 0(r5) + fmuls f0, f0, f8 + stfs f0, 0x54(r3) + + lfs f0, 4(r5) + fmuls f0, f0, f8 + stfs f0, 0x58(r3) + + blr # Off we go! + + +.global ModifyRiderInitB +ModifyRiderInitB: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, RiderLookupTable@h + ori r11, r11, RiderLookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + lfs f0, 0(r5) + fmuls f0, f0, f8 + stfs f0, 0x4C(r3) + + lfs f0, 4(r5) + fmuls f0, f0, f8 + stfs f0, 0x50(r3) + + lfs f0, 0(r4) + fmuls f0, f0, f8 + stfs f0, 0x54(r3) + + lfs f0, 4(r4) + fmuls f0, f0, f8 + stfs f0, 0x58(r3) + + blr # Off we go! + + + +.global ModifyRiderInitC +ModifyRiderInitC: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, RiderLookupTable@h + ori r11, r11, RiderLookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + fmuls f1, f1, f8 + fmuls f2, f2, f8 + fmuls f3, f3, f8 + fmuls f4, f4, f8 + + stfs f1, 0x4C(r3) + stfs f2, 0x50(r3) + stfs f3, 0x54(r3) + stfs f4, 0x58(r3) + + blr # Off we go! + + +.global ModifyRiderInitD +ModifyRiderInitD: + + # we can trash r10 for now, it's not supposed to be guaranteed anyway + lwz r10, 4(r4) # get the sprite settings + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb5 in Reggie) + andi. r10, r10, 0xF
+ + # first off, get the value from the lookup table + lis r11, RiderLookupTable@h + ori r11, r11, RiderLookupTable@l + slwi r10, r10, 2 # size *= 4 (size of float) + lfsx f8, r11, r10 # get it from the array + + fmuls f1, f1, f8 + fmuls f2, f2, f8 + fmuls f3, f3, f8 + fmuls f4, f4, f8 + + stfs f3, 0x4C(r3) + stfs f4, 0x50(r3) + stfs f1, 0x54(r3) + stfs f2, 0x58(r3) + + blr # Off we go! + + + +.global InheritSettings_A +InheritSettings_A: + + li r4, 0 + blr + + lwz r4, 4(r0) + + li r10, 0 + stw r10, 8(r4) + + blr + + +.global InheritSettings_B +InheritSettings_B: + + li r4, 0 + blr + + or r4, r31, r0 + lwz r10, 4(r28) + or r4, r10, r4 + + blr + + +.global InheritSettings_C +InheritSettings_C: + + li r4, 0 + blr + + or r4, r8, r18 + lwz r10, 4(r27) + or r4, r10, r4 + + blr + + +.global InheritSettings_D +InheritSettings_D: + + li r4, 0 + blr + + lwz r4, 4(r3) + li r10, 0 + stw r10, 8(r4) + mr r11, r4 + + blr + +.global InheritSettings_E +InheritSettings_E: + + li r4, 0 + blr + + mr r4, r11 + + blr + + + + + + + + + + + + +.global PiranhaFireType +PiranhaFireType: + + li r3, 0x76 + blr + + +.global PiranhaFirePos +PiranhaFirePos: + lis r11, PiranhaPosF@h + ori r11, r11, PiranhaPosF@l + lfs f8, 0(r11) + + fadds f1, f1, f8 + fadds f2, f2, f8 + fadds f0, f0, f8 + + stfs f0, 0x8(r1) + stfs f1, 0xC(r1) + stfs f2, 0x10(r1) + + blr + + + +.global PipeGeneratorSpawn +PipeGeneratorSpawn: + + li r3, 0x87 + li r4, 0 + blr + +.global LakituBomb +LakituBomb: + + li r3, 0x85 + li r4, 0x3000 + slwi r4, r4, 16 + blr + + + + + +.data +LookupTable: + .float 1, 1, 1, 1, 0.25, 0.5, 0.75, 1.25, 1.5, 2, 2.5, 3, 4, 5, 8, 10 + +RiderLookupTable: + .float 1, 1, 1, 1, 0.6, 0.7, 0.85, 1, 1, 1.1, 1.25, 1.5, 2, 2.5, 4, 5 + +PiranhaPosF: + .float 4.0 + + +Stupid: .string "Fucking Sprite was enlarged by %f times\n" +.align 4 + + |