From 4d482b80241de4512b68bc160dfc29b7e521134d Mon Sep 17 00:00:00 2001 From: Treeki Date: Sun, 14 Aug 2011 14:44:23 +0200 Subject: fixed powerup sound --- kamek_ntsc.x | 2 ++ kamek_ntsc2.x | 2 ++ kamek_pal.x | 2 ++ kamek_pal2.x | 2 ++ poweruphax.yaml | 2 +- src/poweruphax.S | 38 ++++++++++++++++++++++++++++---------- 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/kamek_ntsc.x b/kamek_ntsc.x index 9ccb893..ab702c3 100644 --- a/kamek_ntsc.x +++ b/kamek_ntsc.x @@ -988,6 +988,8 @@ SECTIONS { continuePlumberSetPowerupTextureDebug = 0x800CA5C4; + returnFromPowerupSoundChange = 0x801412FC; + ExitFromTileGodHack = 0x807E1684; SomeTable_802F5440 = 0x802F5140; diff --git a/kamek_ntsc2.x b/kamek_ntsc2.x index 619f4c3..f803db3 100644 --- a/kamek_ntsc2.x +++ b/kamek_ntsc2.x @@ -988,6 +988,8 @@ SECTIONS { continuePlumberSetPowerupTextureDebug = 0x800CA5C4; + returnFromPowerupSoundChange = 0x801412FC; + ExitFromTileGodHack = 0x807E1694; SomeTable_802F5440 = 0x802F5140; diff --git a/kamek_pal.x b/kamek_pal.x index 84d6005..81be80c 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -988,6 +988,8 @@ SECTIONS { continuePlumberSetPowerupTextureDebug = 0x800CA6B4; + returnFromPowerupSoundChange = 0x8014143C; + ExitFromTileGodHack = 0x807E1684; SomeTable_802F5440 = 0x802F5440; diff --git a/kamek_pal2.x b/kamek_pal2.x index 86a067a..f9f8a9a 100644 --- a/kamek_pal2.x +++ b/kamek_pal2.x @@ -988,6 +988,8 @@ SECTIONS { continuePlumberSetPowerupTextureDebug = 0xDEADBEEF; + returnFromPowerupSoundChange = 0xDEADBEEF; + ExitFromTileGodHack = 0xDEADBEEF; SomeTable_802F5440 = 0xDEADBEEF; diff --git a/poweruphax.yaml b/poweruphax.yaml index 1eb53af..191c31d 100644 --- a/poweruphax.yaml +++ b/poweruphax.yaml @@ -186,7 +186,7 @@ hooks: - name: FixPowerupSound type: branch_insn - branch_type: bl + branch_type: b src_addr_pal: 0x80141334 target_func: 'FixPowerupSound' diff --git a/src/poweruphax.S b/src/poweruphax.S index 9274b78..e028eb9 100644 --- a/src/poweruphax.S +++ b/src/poweruphax.S @@ -16,6 +16,7 @@ .extern continuePlumberSetPowerupTexture .extern doneSettingThePowerupTexture .extern doneSettingThePowerupTexture2 +.extern returnFromPowerupSoundChange #ifndef __MWERKS__ .set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4 @@ -391,16 +392,30 @@ _not19: .global FixPowerupSound FixPowerupSound: - # WARNING! This is a bad, bad, bad hack. - # I was too lazy to add anything to the linker script, so... - - # We branch at 80141334, so our LR is 80141338 - # We need to jump to 80141384 - mflr r3 - addi r3, r3, 0x4C - mtlr r3 + #lis r3, DBString@h + #ori r3, r3, DBString@l + #lwz r4, 0x1090(r29) + #crclr 4*cr1+eq + #bl OSReport + + lwz r5, 0x14DC(r29) # Original powerup + lwz r0, 0x1090(r29) # New powerup + # if NEW is 1 (big) and OLD is not 0 or 3, then play 273 (powerdown) + cmpwi r0, 1 + bne dontConsiderPowerdown + + cmpwi r5, 0 + beq dontConsiderPowerdown + cmpwi r5, 3 + beq dontConsiderPowerdown + # If the player is here, he was downgraded from a higher powerup to Big Mario + # So play the powerdown sound + mr r3, r29 + li r4, 273 + li r5, 0 + b returnFromPowerupSoundChange - lwz r0, 0x1090(r29) +dontConsiderPowerdown: lis r3, PowerupSounds@h ori r3, r3, PowerupSounds@l slwi r4, r0, 2 @@ -408,7 +423,7 @@ FixPowerupSound: mr r3, r29 li r5, 0 - blr + b returnFromPowerupSoundChange .global WeirdAnimLoadHack @@ -719,6 +734,9 @@ I_hammerModelName: PowerupTexDebugStr: .string "Plumber::SetPowerupTexture() called on class %p with texnum %d lr=%p\n" +DBString: + .string "PW:%d\n" + #.global BrosModelFilename #BrosModelFilename: # .string "g3d/bros.brres" -- cgit v1.2.3