diff options
Diffstat (limited to 'src/more_input.c')
-rw-r--r-- | src/more_input.c | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/more_input.c b/src/more_input.c new file mode 100644 index 0000000..9ab4c97 --- /dev/null +++ b/src/more_input.c @@ -0,0 +1,132 @@ +#include "global.h" +#include "input.h" + +struct UnkInputStruct +{ + /* 0x0 */ u8 unk0; + /* 0x1 */ u8 unk1; + /* 0x2 */ u8 unk2; + /* 0x3 */ u8 unk3; + /* 0x4 */ u8 unk4; + /* 0x5 */ u32 unk5; + /* 0x9 */ u32 unk9; + /* 0xD */ u32 unkD; + /* 0x12 */ u32 unk11; + /* 0x16 */ u32 unk15; + /* 0x1A */ u32 unk19; + /* 0x1E */ u32 unk1D; + /* 0x24 */ u32 unk24; + /* 0x28 */ u8 unk28; + /* 0x29 */ u8 a_button; + /* 0x2A */ u8 b_button; + /* 0x2B */ u8 dpad_right; + /* 0x2C */ u8 dpad_left; +}; + + +extern void nullsub_34(struct UnkInputStruct *r0); +extern struct Inputs gRealInputs; +u32 sub_8012AE8(void); + +u32 sub_8012A64(struct UnkInputStruct *r0, u32 r1) +{ + if(r0 == NULL) + { + return sub_8012AE8(); + } + if(r1 != -1) + { + nullsub_34(r0); + } + if(r0->unk1 != 0) + { + r0->unk1 = 0; + return 1; + } + if(r0->unk2 == 0) + { + return sub_8012AE8(); + } + r0->unk2 = r0->unk1; + return 2; +} + +u32 GetKeyPress(struct UnkInputStruct *r0) +{ + if(r0 != NULL) + { + if(r0->a_button != 0) + { + return 1; + } + if(r0->b_button != 0) + { + return 2; + } + if(r0->dpad_left != 0) + { + return 9; + } + if(r0->dpad_right != 0) + { + return 10; + } + } + return sub_8012AE8(); +} + +u32 sub_8012AE8(void) +{ + if ((gRealInputs.held & R_BUTTON) != 0) { + if ((gRealInputs.pressed & A_BUTTON) != 0) { + return 11; + } + if ((gRealInputs.repeated & DPAD_UP) != 0) { + return 12; + } + if ((gRealInputs.repeated & DPAD_DOWN) != 0) { + return 13; + } + if ((gRealInputs.repeated & DPAD_LEFT) != 0) { + return 14; + } + if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { + return 15; + } + if ((gRealInputs.repeated & R_BUTTON) != 0) { + return 6; + } + } + else + { + if ((gRealInputs.pressed & A_BUTTON) != 0) { + return 1; + } + if ((gRealInputs.pressed & B_BUTTON) != 0) { + return 2; + } + if ((gRealInputs.pressed & SELECT_BUTTON) != 0) { + return 3; + } + if ((gRealInputs.pressed & START_BUTTON) != 0) { + return 4; + } + if ((gRealInputs.repeated & DPAD_UP) != 0) { + return 7; + } + if ((gRealInputs.repeated & DPAD_DOWN) != 0) { + return 8; + } + if ((gRealInputs.repeated & DPAD_LEFT) != 0) { + return 9; + } + if ((gRealInputs.repeated & DPAD_RIGHT) != 0) { + return 10; + } + if ((gRealInputs.repeated & L_BUTTON) != 0) { + return 5; + } + } + return 0; +} + |