diff options
-rw-r--r-- | src/growup.s | 92 |
1 files changed, 67 insertions, 25 deletions
diff --git a/src/growup.s b/src/growup.s index 91576f9..f0c513c 100644 --- a/src/growup.s +++ b/src/growup.s @@ -19,10 +19,52 @@ -LoadFromSettings: +LoadFromSettingsS: # 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) + srwi r10, r10, 20 # get the highest nybble as r10 (maps to Nyb7 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 + blr + + +LoadFromSettingsSF: + # 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, 28 # 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 + blr + + +LoadFromSettingsC: + # 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 Nyb7 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 + blr + + +LoadFromSettingsCF: + # 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, 28 # get the highest nybble as r10 (maps to Nyb5 in Reggie) andi. r10, r10, 0xF
# first off, get the value from the lookup table @@ -33,6 +75,7 @@ LoadFromSettings: blr + ModelNoChanges: lwz r4, 0x47C(r3) lfs f0, 0xDC(r4) @@ -57,20 +100,21 @@ ModifyGlobalSizes: cmpwi r10, 0 beq ModelNoChanges - # Load 1 - lis r10, One@h - ori r10, r10, One@l - lfs f7, 0(r10) - - # Load Global + # Else, use Global lis r11, GlobalSpriteSize@h ori r11, r11, GlobalSpriteSize@l lfs f8, 0(r11) - - # If Global == 1.0, - fcmpu cr0, f7, f8 + mflr r9 - beql cr0, LoadFromSettings + + # Load from Nyb5 Settings if SizerOn is 1 + cmpwi r10, 1 + beql LoadFromSettingsSF + + # Load from Nyb7 Settings if SizerOn is 2 + cmpwi r10, 2 + beql LoadFromSettingsS + mtlr r9 # Modify the actor @@ -161,20 +205,21 @@ ModifyCollision: cmpwi r10, 0 beq CollisionNoChanges - # Load 1 - lis r10, One@h - ori r10, r10, One@l - lfs f7, 0(r10) - - # Load Global + # Else, use Global lis r11, GlobalSpriteSize@h ori r11, r11, GlobalSpriteSize@l lfs f8, 0(r11) - - # If Global == 1.0, - fcmpu cr0, f7, f8 + mflr r9 - beql cr0, LoadFromSettings + + # Load from Nyb5 Settings if SizerOn is 1 + cmpwi r10, 1 + beql LoadFromSettingsCF + + # Load from Nyb7 Settings if SizerOn is 2 + cmpwi r10, 2 + beql LoadFromSettingsC + mtlr r9 #This is the old ActivePhysics_InitWithStruct function. @@ -593,9 +638,6 @@ LakituBomb: .data -One: - .float 1.0 - .global GlobalSpriteSize GlobalSpriteSize: .float 1.0 |