diff options
Diffstat (limited to 'arm7/lib/src')
-rw-r--r-- | arm7/lib/src/PAD_xyButton.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/arm7/lib/src/PAD_xyButton.c b/arm7/lib/src/PAD_xyButton.c index d224d6a5..fa344f04 100644 --- a/arm7/lib/src/PAD_xyButton.c +++ b/arm7/lib/src/PAD_xyButton.c @@ -2,11 +2,12 @@ #include "OS_alarm.h" #include "OS_tick.h" #include "PAD_xyButton.h" +#include "registers.h" static BOOL PADi_XYButtonAvailable; static OSAlarm PADi_Alarm; -extern void FUN_037FB92C(void); +void EXIi_SelectRcnt(u16); ARM_FUNC BOOL PAD_InitXYButton(void) { OSTick tick; @@ -17,8 +18,16 @@ ARM_FUNC BOOL PAD_InitXYButton(void) { else { OS_CreateAlarm(&PADi_Alarm); tick = OS_GetTick(); - OS_SetPeriodicAlarm(&PADi_Alarm, tick + 0x82e, 0x82e, (OSAlarmHandler)FUN_037FB92C, NULL); + 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 = r4 | ((r1 & (EXTKEYIN_X | EXTKEYIN_Y | EXTKEYIN_DEBUG)) << 10); +} |