summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--classic_controller.yaml20
-rw-r--r--kamek_ntsc.x2
-rw-r--r--kamek_ntsc2.x2
-rw-r--r--kamek_pal2.x2
-rw-r--r--src/classic_controller.S39
-rw-r--r--tools/hooks.pycbin5873 -> 6006 bytes
6 files changed, 52 insertions, 13 deletions
diff --git a/classic_controller.yaml b/classic_controller.yaml
index eb02398..08354c2 100644
--- a/classic_controller.yaml
+++ b/classic_controller.yaml
@@ -4,31 +4,37 @@ hooks:
- name: AddClassicController
type: branch_insn
branch_type: bl
- src_addr_ntsc: 0xdeadbeef
+ src_addr_pal: 0x801eb6f8
+ #src_addr_ntsc: 0x801eb5b8
target_func: '_switch_buttons'
- name: Patch1
type: patch
- addr_ntsc: 0x801EAE30
+ addr_pal: 0x801EAF70
+ #addr_ntsc: 0x801EAE30
data: '39800000 91840000'
- name: PatchExtensionScall
type: patch
- addr_ntsc: 0x80019EE0
+ addr_pal: 0x80019EE0
+ #addr_ntsc: 0x80019EE0
data: '38000000'
- name: Patch3
type: patch
- addr_ntsc: 0x800B3B30
+ addr_pal: 0x800B3B30
+ #addr_ntsc: 0x800B3B30
data: '38000000'
- name: Patch4
type: patch
- addr_ntsc: 0x8076DBA8
- data: '38000000'
+ addr_pal: 0x8076DB98
+ #addr_ntsc: 0x8076DBA8
+ data: '38000004'
- name: Patch5
type: patch
- addr_ntsc: 0x8076DBE8
+ addr_pal: 0x8076DBd8
+ #addr_ntsc: 0x8076DBE8
data: '38000000'
diff --git a/kamek_ntsc.x b/kamek_ntsc.x
index f8c9a41..802aba3 100644
--- a/kamek_ntsc.x
+++ b/kamek_ntsc.x
@@ -29,7 +29,7 @@ SECTIONS {
HandleYSpeed = 0x8006CDE0;
UpdateObjectPosBasedOnSpeedValues_real = 0x8006CD40;
dSprite_c__getXDirectionOfFurthestPlayerRelativeToVEC3 = 0x80096240;
-
+ CalculateDistanceFromActorsNextPosToFurthestPlayer = 0x80064740;
diff --git a/kamek_ntsc2.x b/kamek_ntsc2.x
index 42d9898..730ff74 100644
--- a/kamek_ntsc2.x
+++ b/kamek_ntsc2.x
@@ -29,7 +29,7 @@ SECTIONS {
HandleYSpeed = 0x8006CDE0;
UpdateObjectPosBasedOnSpeedValues_real = 0x8006CD40;
dSprite_c__getXDirectionOfFurthestPlayerRelativeToVEC3 = 0x80096240;
-
+ CalculateDistanceFromActorsNextPosToFurthestPlayer = 0x80064740;
diff --git a/kamek_pal2.x b/kamek_pal2.x
index 6e3d6fa..1c25357 100644
--- a/kamek_pal2.x
+++ b/kamek_pal2.x
@@ -29,7 +29,7 @@ SECTIONS {
HandleYSpeed = 0xDEADBEEF;
UpdateObjectPosBasedOnSpeedValues_real = 0xDEADBEEF;
dSprite_c__getXDirectionOfFurthestPlayerRelativeToVEC3 = 0xDEADBEEF;
-
+ CalculateDistanceFromActorsNextPosToFurthestPlayer = 0xDEADBEEF;
diff --git a/src/classic_controller.S b/src/classic_controller.S
index 2ae5ed7..86be34f 100644
--- a/src/classic_controller.S
+++ b/src/classic_controller.S
@@ -1,14 +1,18 @@
#ifndef __MWERKS__
-.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4
+.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 f2,2; .set f3,3
-.set f1,1; .set f30,30; .set f31,31
+.set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3
+.set f1,1; .set f8,8; .set f9,9; .set f10,10; .set f11,11;
+.set f30,30; .set f31,31
#endif
+.text
+.align 4
+
.global _switch_buttons
_switch_buttons:
addi r1,r1,0x50 # replaced instruction
@@ -79,6 +83,35 @@ skip_plus:
beq- skip_minus
ori r6,r6,0x1000 // WPAD_BUTTON_MINUS
skip_minus:
+ lfs f8,0x6c(r26) // left analog x
+ lfs f9,0x70(r26) // left analog y
+ 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:
mr r5,r6
blr
+.data
+
+float_one:
+.float 1.0
+float_neg_one:
+.float -1.0
+float_zero:
+.float 0.0
diff --git a/tools/hooks.pyc b/tools/hooks.pyc
index 84b5c26..a8c227c 100644
--- a/tools/hooks.pyc
+++ b/tools/hooks.pyc
Binary files differ