summaryrefslogtreecommitdiff
path: root/src/growup.s
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/growup.s536
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
+
+