diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/classic_controller.S | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/src/classic_controller.S b/src/classic_controller.S index 86be34f..2ba7a9e 100644 --- a/src/classic_controller.S +++ b/src/classic_controller.S @@ -10,6 +10,16 @@ .set f30,30; .set f31,31 #endif +.set stackSize,0x30; +.set r4Place,0x10; +.set r5Place,0x14; +.set r6Place,0x18; +.set r26Place,0x1c; +.set f8Place,0x20; +.set f9Place,0x24; +.set f10Place,0x28; +.set f11Place,0x2c; + .text .align 4 @@ -17,7 +27,17 @@ _switch_buttons: addi r1,r1,0x50 # replaced instruction + stwu r1,-stackSize(r1) # provide new stack for saving regs mflr r0 + stw r4,r4Place(r1) + stw r5,r5Place(r1) + stw r6,r6Place(r1) + stw r26,r26Place(r1) + stfs f8,f8Place(r1) + stfs f9,f9Place(r1) + stfs f10,f10Place(r1) + stfs f11,f11Place(r1) + lwz r5,0x60(r26) # wiimote cc data bl map_buttons lwz r4,0(r26) @@ -33,7 +53,17 @@ _switch_buttons: lwz r4,8(r26) or r5,r5,r4 stw r5,8(r26) + + lwz r4,r4Place(r1) + lwz r5,r5Place(r1) + lwz r6,r6Place(r1) + lwz r26,r26Place(r1) + lfs f8,f8Place(r1) + lfs f9,f9Place(r1) + lfs f10,f10Place(r1) + lfs f11,f11Place(r1) mtlr r0 + addi r1,r1,stackSize blr map_buttons: @@ -88,22 +118,22 @@ skip_minus: lis r5,float_one@h lfs f10,float_one@l(r5) lfs f11,float_neg_one@l(r5) - fcmpu cr1,f8,f10 - bne cr1,skip_right_analog - ori r6,r6,4 // WPAD_BUTTON_DOWN -skip_right_analog: - fcmpu cr1,f9,f10 - bne cr1,skip_right_analog - ori r6,r6,2 // WPAD_BUTTON_RIGHT -skip_up_analog: - fcmpu cr1,f9,f11 - bne cr1,skip_right_analog - ori r6,r6,1 // WPAD_BUTTON_LEFT -skip_down_analog: - fcmpu cr1,f8,f11 - bne cr1,skip_right_analog - ori r6,r6,8 // WPAD_BUTTON_UP -skip_left_analog: +# fcmpu cr0,f8,f10 +# bne skip_right_analog +# ori r6,r6,4 // WPAD_BUTTON_DOWN +#skip_right_analog: +# fcmpu cr0,f9,f10 +# bne skip_right_analog +# ori r6,r6,2 // WPAD_BUTTON_RIGHT +#skip_up_analog: +# fcmpu cr0,f9,f11 +# bne skip_right_analog +# ori r6,r6,1 // WPAD_BUTTON_LEFT +#skip_down_analog: +# fcmpu cr0,f8,f11 +# bne skip_right_analog +# ori r6,r6,8 // WPAD_BUTTON_UP +#skip_left_analog: mr r5,r6 blr |