summaryrefslogtreecommitdiff
path: root/arm7/lib/src
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-07-06 16:26:39 -0400
committerGitHub <noreply@github.com>2020-07-06 16:26:39 -0400
commit6b4bf8b5a0fe88dfe6adc769ea82bc2aeb527752 (patch)
tree873500ec67f14572021e773b87f1590b0cc428eb /arm7/lib/src
parent8ae925315e82abdb9f07442d200f4a7bcae97559 (diff)
parent85c37c87a3c79f97c9603129701f91785abd0ddc (diff)
Merge pull request #223 from Cleverking2003/master
Decompile PAD_xyButton
Diffstat (limited to 'arm7/lib/src')
-rw-r--r--arm7/lib/src/PAD_xyButton.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/arm7/lib/src/PAD_xyButton.c b/arm7/lib/src/PAD_xyButton.c
new file mode 100644
index 00000000..7c3eeac8
--- /dev/null
+++ b/arm7/lib/src/PAD_xyButton.c
@@ -0,0 +1,33 @@
+#include "function_target.h"
+#include "OS_alarm.h"
+#include "OS_tick.h"
+#include "PAD_xyButton.h"
+#include "registers.h"
+
+static BOOL PADi_XYButtonAvailable;
+static OSAlarm PADi_Alarm;
+
+void EXIi_SelectRcnt(u16);
+
+ARM_FUNC BOOL PAD_InitXYButton(void) {
+ OSTick tick;
+ if (!OS_IsTickAvailable() || !OS_IsAlarmAvailable())
+ return FALSE;
+ else if (PADi_XYButtonAvailable)
+ return FALSE;
+ else {
+ OS_CreateAlarm(&PADi_Alarm);
+ tick = OS_GetTick();
+ OS_SetPeriodicAlarm(&PADi_Alarm, tick + 0x82e, 0x82e, (OSAlarmHandler)PADi_xyButtonAlarmHandler, NULL);
+ PADi_XYButtonAvailable = TRUE;
+ return TRUE;
+ }
+}
+
+void PADi_xyButtonAlarmHandler(void) {
+ u16 r4 = 0, r1;
+ EXIi_SelectRcnt(0x8000);
+ r1 = reg_EXTKEYIN;
+ if(r1 & EXTKEYIN_HINGE) r4 = 0x8000;
+ BUTTON_XY_BUF = (u16)(r4 | ((r1 & (EXTKEYIN_X | EXTKEYIN_Y | EXTKEYIN_DEBUG)) << 10));
+}