diff options
author | Egor Ananyin <ananinegor@gmail.com> | 2020-07-06 09:34:14 +0300 |
---|---|---|
committer | Egor Ananyin <ananinegor@gmail.com> | 2020-07-06 09:34:14 +0300 |
commit | 07400e92d04dfd4d565ba707094e26c794936be6 (patch) | |
tree | 40a43bb2f9f5cab04bb76d3bc0da2a45f19622cd | |
parent | 1652a54452896b0b377c3811721ae4a7dcac1315 (diff) |
Decompile pad
-rw-r--r-- | arm7/asm/PAD_xyButton.s | 60 | ||||
-rw-r--r-- | arm7/lib/include/OS_alarm.h | 3 | ||||
-rw-r--r-- | arm7/lib/include/pad.h | 8 | ||||
-rw-r--r-- | arm7/lib/src/PAD_xyButton.c | 24 |
4 files changed, 35 insertions, 60 deletions
diff --git a/arm7/asm/PAD_xyButton.s b/arm7/asm/PAD_xyButton.s deleted file mode 100644 index 66dc0a61..00000000 --- a/arm7/asm/PAD_xyButton.s +++ /dev/null @@ -1,60 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global PADi_XYButtonAvailable -PADi_XYButtonAvailable: ;0x038079DC - .space 0x038079E0 - 0x038079DC - - .global _038079E0 -_038079E0: ;0x038079E0 - .space 0x03807A0C - 0x038079E0 - - .section .text - - arm_func_start PAD_InitXYButton -PAD_InitXYButton: ; 0x037FB96C - stmfd sp!, {lr} - sub sp, sp, #12 - bl OS_IsTickAvailable - cmp r0, #0 - beq _037FB98C - bl OS_IsAlarmAvailable - cmp r0, #0 - bne _037FB994 -_037FB98C: - mov r0, #0 - b _037FB9F0 -_037FB994: - ldr r0, _037FB9FC ; =PADi_XYButtonAvailable - ldr r0, [r0] - cmp r0, #0 - movne r0, #0 - bne _037FB9F0 - ldr r0, _037FBA00 ; =_038079E0 - bl OS_CreateAlarm - bl OS_GetTick - mov r2, r0 - ldr r0, _037FBA04 ; =FUN_037FB92C - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r3, _037FBA08 ; =0x0000082E - str r0, [sp] - ldr r0, _037FBA00 ; =_038079E0 - adds ip, r2, r3 - adc r2, r1, #0 - mov r1, ip - bl OS_SetPeriodicAlarm - mov r0, #1 - ldr r1, _037FB9FC ; =PADi_XYButtonAvailable - str r0, [r1] -_037FB9F0: - add sp, sp, #12 - ldmia sp!, {lr} - bx lr -_037FB9FC: .word PADi_XYButtonAvailable -_037FBA00: .word _038079E0 -_037FBA04: .word FUN_037FB92C -_037FBA08: .word 0x0000082E diff --git a/arm7/lib/include/OS_alarm.h b/arm7/lib/include/OS_alarm.h index 8ae89e97..a4566348 100644 --- a/arm7/lib/include/OS_alarm.h +++ b/arm7/lib/include/OS_alarm.h @@ -1,9 +1,12 @@ #ifndef POKEDIAMOND_ARM7_OS_ALARM_H #define POKEDIAMOND_ARM7_OS_ALARM_H +#include "OS_thread.h" #include "nitro/OS_alarm_shared.h" void OS_CreateAlarm(OSAlarm *alarm); +BOOL OS_IsAlarmAvailable(void); void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg); +void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg); #endif //POKEDIAMOND_ARM7_OS_ALARM_H diff --git a/arm7/lib/include/pad.h b/arm7/lib/include/pad.h new file mode 100644 index 00000000..8591bf7b --- /dev/null +++ b/arm7/lib/include/pad.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_PAD_H +#define POKEDIAMOND_PAD_H + +#include "nitro/types.h" + +BOOL PAD_InitXYButton(void); + +#endif diff --git a/arm7/lib/src/PAD_xyButton.c b/arm7/lib/src/PAD_xyButton.c new file mode 100644 index 00000000..ed4e7c05 --- /dev/null +++ b/arm7/lib/src/PAD_xyButton.c @@ -0,0 +1,24 @@ +#include "function_target.h" +#include "OS_alarm.h" +#include "OS_tick.h" +#include "pad.h" + +static BOOL PADi_XYButtonAvailable; +static OSAlarm PADi_Alarm; + +extern void FUN_037FB92C(void); + +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)FUN_037FB92C, NULL); + PADi_XYButtonAvailable = TRUE; + return TRUE; + } +} |