From 945241d45eb302775eaa656a73e21072081a4f57 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 21 Oct 2020 18:36:06 +0100 Subject: arm9 pxi_fifo --- arm9/asm/PXI_fifo.s | 269 ---------------------------------------- arm9/lib/include/CARD_common.h | 2 - arm9/lib/include/OS_interrupt.h | 1 + arm9/lib/include/PXI_fifo.h | 20 +++ arm9/lib/include/consts.h | 9 +- arm9/lib/include/registers.h | 1 + arm9/lib/src/CARD_common.c | 2 - arm9/lib/src/CARD_pullOut.c | 3 - arm9/lib/src/CARD_request.c | 2 - arm9/lib/src/CARD_spi.c | 1 + arm9/lib/src/OS_reset.c | 5 +- arm9/lib/src/PXI_fifo.c | 185 +++++++++++++++++++++++++++ arm9/lib/src/PXI_init.c | 3 +- arm9/lib/src/SND_command.c | 17 +-- 14 files changed, 223 insertions(+), 297 deletions(-) delete mode 100644 arm9/asm/PXI_fifo.s create mode 100644 arm9/lib/src/PXI_fifo.c (limited to 'arm9') diff --git a/arm9/asm/PXI_fifo.s b/arm9/asm/PXI_fifo.s deleted file mode 100644 index c1980dea..00000000 --- a/arm9/asm/PXI_fifo.s +++ /dev/null @@ -1,269 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .bss - - .global UNK_021D5364 -UNK_021D5364: ; 0x021D5364 - .space 0x4 - - .global UNK_021D5368 -UNK_021D5368: ; 0x021D5368 - .space 0x80 - - .text - - arm_func_start PXIi_HandlerRecvFifoNotEmpty -PXIi_HandlerRecvFifoNotEmpty: ; 0x020CFBBC - stmdb sp!, {r4-r10,lr} - sub sp, sp, #0x8 - ldr sl, _020CFCD4 ; =0x04000184 - ldr r5, _020CFCD8 ; =UNK_021D5368 - ldr r4, _020CFCDC ; =0x04000188 - mov r7, #0x4100000 - mov r6, #0x0 - mvn r8, #0x3 - mvn r9, #0x2 -_020CFBE0: - ldrh r0, [r10, #0x0] - ands r0, r0, #0x4000 - ldrneh r0, [r10, #0x0] - movne r1, r9 - orrne r0, r0, #0xc000 - strneh r0, [r10, #0x0] - bne _020CFC28 - bl OS_DisableInterrupts - ldrh r1, [r10, #0x0] - ands r1, r1, #0x100 - beq _020CFC18 - bl OS_RestoreInterrupts - mov r1, r8 - b _020CFC28 -_020CFC18: - ldr r1, [r7, #0x0] - str r1, [sp, #0x0] - bl OS_RestoreInterrupts - mov r1, r6 -_020CFC28: - cmp r1, r8 - addeq sp, sp, #0x8 - ldmeqia sp!, {r4-r10,lr} - bxeq lr - mvn r0, #0x2 - cmp r1, r0 - beq _020CFBE0 - ldr r1, [sp, #0x0] - mov r0, r1, lsl #0x1b - movs r0, r0, lsr #0x1b - beq _020CFBE0 - ldr r3, [r5, r0, lsl #0x2] - cmp r3, #0x0 - beq _020CFC74 - mov r2, r1, lsl #0x1a - mov r1, r1, lsr #0x6 - mov r2, r2, lsr #0x1f - blx r3 - b _020CFBE0 -_020CFC74: - mov r0, r1, lsl #0x1a - movs r0, r0, lsr #0x1f - bne _020CFBE0 - orr r0, r1, #0x20 - str r0, [sp, #0x0] - ldrh r0, [r10, #0x0] - ands r0, r0, #0x4000 - ldrneh r0, [r10, #0x0] - orrne r0, r0, #0xc000 - strneh r0, [r10, #0x0] - bne _020CFBE0 - bl OS_DisableInterrupts - ldrh r1, [r10, #0x0] - ands r1, r1, #0x2 - beq _020CFCB8 - bl OS_RestoreInterrupts - b _020CFBE0 -_020CFCB8: - ldr r1, [sp, #0x0] - str r1, [r4, #0x0] - bl OS_RestoreInterrupts - b _020CFBE0 -_020CFCC8: - add sp, sp, #0x8 - ldmia sp!, {r4-r10, lr} - bx lr -_020CFCD4: .word 0x04000184 -_020CFCD8: .word UNK_021D5368 -_020CFCDC: .word 0x04000188 - - arm_func_start PXI_SendWordByFifo -PXI_SendWordByFifo: - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r3, [sp, #0x0] - and r0, r0, #0x1f - bic r3, r3, #0x1f - orr r12, r3, r0 - bic r3, r12, #0x20 - and r0, r2, #0x1 - orr r3, r3, r0, lsl #0x5 - str r12, [sp, #0x0] - and r2, r3, #0x3f - bic r0, r1, #0xfc000000 - orr r0, r2, r0, lsl #0x6 - str r3, [sp, #0x0] - ldr r2, _020CFD8C ; =0x04000184 - str r0, [sp, #0x0] - ldrh r0, [r2, #0x0] - ands r0, r0, #0x4000 - ldrneh r1, [r2, #0x0] - addne sp, sp, #0x4 - mvnne r0, #0x0 - orrne r1, r1, #0xc000 - strneh r1, [r2, #0x0] - ldmneia sp!, {lr} - bxne lr - bl OS_DisableInterrupts - ldr r1, _020CFD8C ; =0x04000184 - ldrh r1, [r1, #0x0] - ands r1, r1, #0x2 - beq _020CFD6C - bl OS_RestoreInterrupts - add sp, sp, #0x4 - mvn r0, #0x1 - ldmia sp!, {lr} - bx lr -_020CFD6C: - ldr r2, [sp, #0x0] - ldr r1, _020CFD90 ; =0x04000188 - str r2, [r1, #0x0] - bl OS_RestoreInterrupts -_020CFD7C: - mov r0, #0x0 - add sp, sp, #0x4 - ldmfd sp!, {lr} - bx lr -_020CFD8C: .word 0x04000184 -_020CFD90: .word 0x04000188 - - arm_func_start PXI_IsCallbackReady -PXI_IsCallbackReady: - ldr r2, _020CFDB8 ; =0x027FFC00 - mov r3, #0x1 - add r1, r2, r1, lsl #0x2 - mov r2, r3, lsl r0 - ldr r0, [r1, #0x388] - ands r0, r2, r0 - moveq r3, #0x0 - mov r0, r3 - bx lr - .balign 4 -_020CFDB8: .word 0x027FFC00 - - arm_func_start PXI_SetFifoRecvCallback -PXI_SetFifoRecvCallback: ; 0x020CFDBC - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r4, r0 - mov r5, r1 - bl OS_DisableInterrupts - ldr r1, _020CFE20 ; =UNK_021D5368 - cmp r5, #0x0 - str r5, [r1, r4, lsl #0x2] - beq _020CFDF8 - ldr r3, _020CFE24 ; =0x027FFC00 - mov r1, #0x1 - ldr r2, [r3, #0x388] - orr r1, r2, r1, lsl r4 - str r1, [r3, #0x388] - b _020CFE10 -_020CFDF8: - ldr r3, _020CFE24 ; =0x027FFC00 - mov r1, #0x1 - mvn r1, r1, lsl r4 - ldr r2, [r3, #0x388] - and r1, r2, r1 - str r1, [r3, #0x388] -_020CFE10: - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020CFE20: .word UNK_021D5368 -_020CFE24: .word 0x027FFC00 - - arm_func_start PXI_InitFifo -PXI_InitFifo: ; 0x020CFE28 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - bl OS_DisableInterrupts - ldr r1, _020CFF18 ; =UNK_021D5364 - mov r4, r0 - ldrh r0, [r1, #0x0] - cmp r0, #0x0 - bne _020CFF04 - mov r2, #0x1 - ldr r0, _020CFF1C ; =0x027FFC00 - strh r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r0, #0x388] - ldr r0, _020CFF20 ; =UNK_021D5368 - mov r1, r2 -_020CFE64: - str r1, [r0, r2, lsl #0x2] - add r2, r2, #0x1 - cmp r2, #0x20 - blt _020CFE64 - ldr r2, _020CFF24 ; =0x0000C408 - ldr r1, _020CFF28 ; =0x04000184 - mov r0, #0x40000 - strh r2, [r1, #0x0] - bl OS_ResetRequestIrqMask - ldr r1, _020CFF2C ; =PXIi_HandlerRecvFifoNotEmpty - mov r0, #0x40000 - bl OS_SetIrqFunction - mov r0, #0x40000 - bl OS_EnableIrqMask - mov r12, #0x0 - ldr r3, _020CFF30 ; =0x04000180 - mov r1, r12 - mov r2, #0x3e8 -_020CFEAC: - ldrh r0, [r3, #0x0] - ands lr, r0, #0xf - mov r0, lr, lsl #0x8 - strh r0, [r3, #0x0] - bne _020CFEC8 - cmp r12, #0x4 - bgt _020CFF04 -_020CFEC8: - ldrh r0, [r3, #0x0] - mov r5, r2 - and r0, r0, #0xf - cmp r0, lr - bne _020CFEFC -_020CFEDC: - cmp r5, #0x0 - movle r12, r1 - ble _020CFEFC - ldrh r0, [r3, #0x0] - sub r5, r5, #0x1 - and r0, r0, #0xf - cmp r0, lr - beq _020CFEDC -_020CFEFC: - add r12, r12, #0x1 - b _020CFEAC -_020CFF04: - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020CFF18: .word UNK_021D5364 -_020CFF1C: .word 0x027FFC00 -_020CFF20: .word UNK_021D5368 -_020CFF24: .word 0x0000C408 -_020CFF28: .word 0x04000184 -_020CFF2C: .word PXIi_HandlerRecvFifoNotEmpty -_020CFF30: .word 0x04000180 diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/include/CARD_common.h index c8a247ee..1ae31b7a 100644 --- a/arm9/lib/include/CARD_common.h +++ b/arm9/lib/include/CARD_common.h @@ -224,8 +224,6 @@ void CARD_UnlockBackup(u16 lock_id); #define CARD_RETRY_COUNT_MAX 10 -extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); - static inline void CARDi_SendPxi(u32 data) { while (PXI_SendWordByFifo(PXI_FIFO_TAG_FS, data, TRUE) < 0) diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index 3d139079..c3812128 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -12,6 +12,7 @@ #define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT) #define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) #define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT) +#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT) #define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT) extern OSIrqFunction OS_IRQTable[]; diff --git a/arm9/lib/include/PXI_fifo.h b/arm9/lib/include/PXI_fifo.h index becba32e..b1ca33f3 100644 --- a/arm9/lib/include/PXI_fifo.h +++ b/arm9/lib/include/PXI_fifo.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_ARM9_PXI_FIFO_H #include "nitro/PXI_fifo_shared.h" +#include "nitro/types.h" typedef enum { @@ -13,4 +14,23 @@ typedef enum PXI_FIFO_NO_CALLBACK_ENTRY = -5 } PXIFifoStatus; +typedef void (*PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err); + +typedef union +{ + struct + { + u32 tag:5; + u32 err:1; + u32 data:26; + } e; + u32 raw; +} PXIFifoMessage; + +void PXI_InitFifo(void); +void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback); +BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc); +s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err); +void PXIi_HandlerRecvFifoNotEmpty(void); + #endif //POKEDIAMOND_ARM9_PXI_FIFO_H diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h index 7c56a9a3..095a15df 100644 --- a/arm9/lib/include/consts.h +++ b/arm9/lib/include/consts.h @@ -35,8 +35,6 @@ #define HW_CACHE_LINE_SIZE 32 -#define PXI_PROC_ARM7 0x01 - #define OSi_CONSOLE_NOT_DETECT 0xffffffff #define OS_CONSOLE_NITRO 0x80000000 @@ -50,4 +48,11 @@ #define HW_CPU_CLOCK_ARM9 67027964 +#define REG_PXI_SUBP_FIFO_CNT_E_MASK 0x8000 +#define REG_PXI_SUBP_FIFO_CNT_ERR_MASK 0x4000 +#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK 0x0400 +#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK 0x0100 +#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK 0x0008 +#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK 0x0002 + #endif //POKEDIAMOND_ARM9_CONSTS_H diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 44a21bf0..d55347d5 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -350,6 +350,7 @@ #define REG_OS_IE_VE_SHIFT 2 #define REG_OS_IE_T0_SHIFT 3 #define REG_OS_IE_T1_SHIFT 4 +#define REG_OS_IE_IFN_SHIFT 18 #define REG_OS_IE_MC_SHIFT 19 #define REG_OS_TM0CNT_H_I_MASK 0x0040 diff --git a/arm9/lib/src/CARD_common.c b/arm9/lib/src/CARD_common.c index 65d92377..f820027e 100644 --- a/arm9/lib/src/CARD_common.c +++ b/arm9/lib/src/CARD_common.c @@ -14,8 +14,6 @@ static CARDiCommandArg cardi_arg ALIGN(32); u8 cardi_thread_stack[0x400] ALIGN(4); -extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); - static void CARDi_LockResource(CARDiOwner owner, CARDTargetMode target); static void CARDi_UnlockResource(CARDiOwner owner, CARDTargetMode target); diff --git a/arm9/lib/src/CARD_pullOut.c b/arm9/lib/src/CARD_pullOut.c index 27293d60..3456df48 100644 --- a/arm9/lib/src/CARD_pullOut.c +++ b/arm9/lib/src/CARD_pullOut.c @@ -12,9 +12,6 @@ static CARDPulledOutCallback CARD_UserCallback; static BOOL CARDi_IsPulledOutFlag = FALSE; -extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); -extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); - static void CARDi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err); static void CARDi_SendtoPxi(u32 data, u32 wait); diff --git a/arm9/lib/src/CARD_request.c b/arm9/lib/src/CARD_request.c index 2d728d14..098fe7a5 100644 --- a/arm9/lib/src/CARD_request.c +++ b/arm9/lib/src/CARD_request.c @@ -6,8 +6,6 @@ extern CARDiCommon cardi_common; -extern u32 PXI_IsCallbackReady(u32 param1, u32 param2); - ARM_FUNC void CARDi_OnFifoRecv(PXIFifoTag tag, u32 data, BOOL err) { #pragma unused (data) diff --git a/arm9/lib/src/CARD_spi.c b/arm9/lib/src/CARD_spi.c index 3a911333..5f02b276 100644 --- a/arm9/lib/src/CARD_spi.c +++ b/arm9/lib/src/CARD_spi.c @@ -1,6 +1,7 @@ #include "function_target.h" #include "nitro/types.h" #include "CARD_common.h" +#include "CARD_spi.h" #include "MI_memory.h" extern CARDiCommon cardi_common; diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index 8be8fb33..45d2bb13 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -10,14 +10,11 @@ #include "MI_dma.h" #include "CARD_common.h" #include "PXI_init.h" +#include "PXI_fifo.h" static u16 OSi_IsInitReset = 0; vu16 OSi_IsResetOccurred = 0; -extern u32 PXI_IsCallbackReady(u32 param1, u32 param2); -extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); -extern BOOL PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); - static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); static void OSi_SendToPxi(u16 data); static void OSi_DoResetSystem(void); diff --git a/arm9/lib/src/PXI_fifo.c b/arm9/lib/src/PXI_fifo.c new file mode 100644 index 00000000..35db1c7f --- /dev/null +++ b/arm9/lib/src/PXI_fifo.c @@ -0,0 +1,185 @@ +#include "function_target.h" +#include "consts.h" +#include "OS_interrupt.h" +#include "OS_system.h" +#include "PXI_fifo.h" +#include "systemWork.h" + +static u16 FifoCtrlInit = 0; +static PXIFifoCallback FifoRecvCallbackTable[PXI_MAX_FIFO_TAG]; + +static inline PXIFifoStatus PXIi_SetToFifo(u32 data); + +ARM_FUNC void PXI_InitFifo(void) +{ + OSSystemWork *p = OS_GetSystemWork(); + OSIntrMode enabled = OS_DisableInterrupts(); + s32 i; + + if (!FifoCtrlInit) + { + FifoCtrlInit = TRUE; + + p->pxiHandleChecker[PXI_PROC_ARM9] = 0UL; + + for (i = 0; i < PXI_MAX_FIFO_TAG; i++) + { + FifoRecvCallbackTable[i] = NULL; + } + + reg_PXI_SUBP_FIFO_CNT = (REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK + | REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK | REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK); + + (void)OS_ResetRequestIrqMask(OS_IE_SPFIFO_RECV); + (void)OS_SetIrqFunction(OS_IE_SPFIFO_RECV, PXIi_HandlerRecvFifoNotEmpty); + (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); + + { + s32 timeout; + s32 c; + + for (i = 0; ; i++) + { + c = reg_PXI_SUBPINTF & 15; + reg_PXI_SUBPINTF = (u16)(c << 8); + + if (c == 0 && i > 4) + { + break; + } + + for (timeout = 1000; (reg_PXI_SUBPINTF & 15) == c; timeout--) + { + if (timeout == 0) + { + i = 0; + break; + } + } + } + } + } + (void)OS_RestoreInterrupts(enabled); +} + +ARM_FUNC void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback) +{ + OSSystemWork *p = OS_GetSystemWork(); + OSIntrMode enabled = OS_DisableInterrupts(); + + FifoRecvCallbackTable[fifotag] = callback; + if (callback) + { + p->pxiHandleChecker[PXI_PROC_ARM9] |= (1UL << fifotag); + } + else + { + p->pxiHandleChecker[PXI_PROC_ARM9] &= ~(1UL << fifotag); + } + (void)OS_RestoreInterrupts(enabled); +} + +ARM_FUNC BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc) +{ + OSSystemWork *p = OS_GetSystemWork(); + + return (p->pxiHandleChecker[proc] & (1UL << fifotag)) ? TRUE : FALSE; +} + +ARM_FUNC s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err) +{ + PXIFifoMessage fifomsg; + + fifomsg.e.tag = (PXIFifoTag)fifotag; + fifomsg.e.err = (u32)err; + fifomsg.e.data = data; + + return PXIi_SetToFifo(fifomsg.raw); +} + +static inline PXIFifoStatus PXIi_SetToFifo(u32 data) +{ + if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_ERR_MASK) + { + reg_PXI_SUBP_FIFO_CNT |= (REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK); + return PXI_FIFO_FAIL_SEND_ERR; + } + + OSIntrMode enabled = OS_DisableInterrupts(); + if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK) + { + (void)OS_RestoreInterrupts(enabled); + return PXI_FIFO_FAIL_SEND_FULL; + } + + reg_PXI_SEND_FIFO = data; + (void)OS_RestoreInterrupts(enabled); + return PXI_FIFO_SUCCESS; +} + +static inline PXIFifoStatus PXIi_GetFromFifo(u32 *data_buf) +{ + if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_ERR_MASK) + { + reg_PXI_SUBP_FIFO_CNT |= (REG_PXI_SUBP_FIFO_CNT_E_MASK | REG_PXI_SUBP_FIFO_CNT_ERR_MASK); + return PXI_FIFO_FAIL_RECV_ERR; + } + + OSIntrMode enabled = OS_DisableInterrupts(); + if (reg_PXI_SUBP_FIFO_CNT & REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK) + { + (void)OS_RestoreInterrupts(enabled); + return PXI_FIFO_FAIL_RECV_EMPTY; + } + + + *data_buf = reg_PXI_RECV_FIFO; + (void)OS_RestoreInterrupts(enabled); + + return PXI_FIFO_SUCCESS; +} + +ARM_FUNC void PXIi_HandlerRecvFifoNotEmpty(void) +{ + PXIFifoMessage fifomsg; + PXIFifoStatus ret_code; + PXIFifoTag tag; + + while (TRUE) + { + ret_code = PXIi_GetFromFifo(&fifomsg.raw); + + if (ret_code == PXI_FIFO_FAIL_RECV_EMPTY) + { + break; + } + if (ret_code == PXI_FIFO_FAIL_RECV_ERR) + { + continue; + } + + tag = (PXIFifoTag)fifomsg.e.tag; + + if (tag) + { + if (FifoRecvCallbackTable[tag]) + { + (FifoRecvCallbackTable[tag])(tag, fifomsg.e.data, (BOOL)fifomsg.e.err); + } + else + { + if (fifomsg.e.err) + { + } + else + { + fifomsg.e.err = TRUE; + (void)PXIi_SetToFifo(fifomsg.raw); + } + } + } + else + { + } + } +} diff --git a/arm9/lib/src/PXI_init.c b/arm9/lib/src/PXI_init.c index f079ca3d..d70ca3b0 100644 --- a/arm9/lib/src/PXI_init.c +++ b/arm9/lib/src/PXI_init.c @@ -1,8 +1,7 @@ #include "PXI_init.h" +#include "PXI_fifo.h" #include "function_target.h" -extern void PXI_InitFifo(void); - ARM_FUNC void PXI_Init(void) { PXI_InitFifo(); diff --git a/arm9/lib/src/SND_command.c b/arm9/lib/src/SND_command.c index 130a4ebc..4ad80be5 100644 --- a/arm9/lib/src/SND_command.c +++ b/arm9/lib/src/SND_command.c @@ -18,11 +18,6 @@ static u32 sCurrentTag; static u32 sFinishedTag; static struct SNDCommand *sFreeList; -// TODO remove these function declarations once they are in the headers -extern s32 PXI_SendWordByFifo(u32, u32, u32); -extern void PXI_SetFifoRecvCallback(u32, void (*)(s32, s32)); -extern BOOL PXI_IsCallbackReady(u32, u32); - static void InitPXI(void); static void RequestCommandProc(void); static struct SNDCommand *AllocCommand(void); @@ -280,25 +275,25 @@ ARM_FUNC s32 SND_CountWaitingCommand(void) { return SND_CMD_COUNT - SND_CountFreeCommand() - SND_CountReservedCommand(); } -ARM_FUNC static void PxiFifoCallback(s32 a, s32 b) { -#pragma unused (a) +ARM_FUNC static void PxiFifoCallback(PXIFifoTag tag, u32 data, BOOL) { +#pragma unused (tag) OSIntrMode oldirq = OS_DisableInterrupts(); - SNDi_CallAlarmHandler(b); + SNDi_CallAlarmHandler((s32)data); (void)OS_RestoreInterrupts(oldirq); } ARM_FUNC static void InitPXI(void) { - PXI_SetFifoRecvCallback(7, PxiFifoCallback); + PXI_SetFifoRecvCallback(PXI_FIFO_TAG_SOUND, PxiFifoCallback); if (!IsCommandAvailable()) return; - if (PXI_IsCallbackReady(7, 1)) + if (PXI_IsCallbackReady(PXI_FIFO_TAG_SOUND, PXI_PROC_ARM7)) return; do { OS_SpinWait(100); - } while (!PXI_IsCallbackReady(7, 1)); + } while (!PXI_IsCallbackReady(PXI_FIFO_TAG_SOUND, PXI_PROC_ARM7)); } ARM_FUNC static void RequestCommandProc(void) { -- cgit v1.2.3 From 0e73b7e2a559a2235ae4aa9543a9b2d573e23f96 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 30 Oct 2020 19:52:47 +0000 Subject: split module 59 --- arm9/arm9.lsf | 3 +- arm9/global.inc | 3 + arm9/modules/59/asm/mod59_021D74E0.s | 4545 +++++++++++++++++++++++++++++ arm9/modules/59/asm/mod59_021D9868.s | 666 +++++ arm9/modules/59/asm/module_59.s | 5207 ---------------------------------- 5 files changed, 5216 insertions(+), 5208 deletions(-) create mode 100644 arm9/modules/59/asm/mod59_021D74E0.s create mode 100644 arm9/modules/59/asm/mod59_021D9868.s delete mode 100644 arm9/modules/59/asm/module_59.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 57fbde66..12784096 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -937,7 +937,8 @@ Overlay MODULE_59 { ##Rowan's intro## After arm9 - Object module_59.o + Object mod59_021D74E0.o + Object mod59_021D9868.o } Overlay MODULE_60 diff --git a/arm9/global.inc b/arm9/global.inc index 0af44f98..60f00ea2 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7469,6 +7469,9 @@ .extern MOD59_021D74E0 .extern MOD59_021D7564 .extern MOD59_021D76C0 +.extern MOD59_021D9868 +.extern MOD59_021D9898 +.extern MOD59_021D99F8 .extern MOD60_021D74E0 .extern MOD60_021D76B8 .extern MOD60_021D75B0 diff --git a/arm9/modules/59/asm/mod59_021D74E0.s b/arm9/modules/59/asm/mod59_021D74E0.s new file mode 100644 index 00000000..abc37879 --- /dev/null +++ b/arm9/modules/59/asm/mod59_021D74E0.s @@ -0,0 +1,4545 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD59_021D74E0 +MOD59_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x52 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xb4 + mov r2, #0x52 + bl OverlayManager_CreateAndGetData + mov r1, #0 + mov r2, #0xb4 + add r4, r0, #0 + bl memset + mov r0, #0x52 + str r0, [r4] + add r0, r5, #0 + bl OverlayManager_GetField18 + ldr r0, [r0, #8] + str r0, [r4, #4] + bl Sav2_PlayerData_GetOptionsAddr + mov r1, #0 + str r0, [r4, #8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + str r1, [r4, #0x14] + ldr r0, [r4, #8] + add r2, r1, #0 + str r0, [sp] + mov r0, #0x52 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x70] + ldr r0, [r4, #8] + mov r1, #3 + str r0, [sp] + mov r0, #0x52 + mov r2, #0 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x74] + add r0, r4, #0 + mov r1, #0 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8b + strb r1, [r0] + add r4, #0x90 + str r1, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD59_021D74E0 + + thumb_func_start MOD59_021D7564 +MOD59_021D7564: ; 0x021D7564 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl OverlayManager_GetData + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D757A + b _021D76AC +_021D757A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7586: ; jump table + .short _021D7592 - _021D7586 - 2 ; case 0 + .short _021D75FA - _021D7586 - 2 ; case 1 + .short _021D7642 - _021D7586 - 2 ; case 2 + .short _021D7668 - _021D7586 - 2 ; case 3 + .short _021D7690 - _021D7586 - 2 ; case 4 + .short _021D76AA - _021D7586 - 2 ; case 5 +_021D7592: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76B4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76B8 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D778C + add r0, r4, #0 + bl MOD59_021D79F8 + add r0, r4, #0 + bl MOD59_021D7A4C + ldr r0, _021D76BC ; =MOD59_021D7724 + add r1, r4, #0 + bl Main_SetVBlankIntrCB + bl FUN_0201E788 + mov r0, #1 + str r0, [r5] + b _021D76AC +_021D75FA: + bl MOD59_021D8920 + cmp r0, #1 + bne _021D761E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] +_021D761E: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D76AC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D76AC +_021D7642: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + mov r6, #1 + b _021D76AC +_021D7668: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + mov r0, #4 + str r0, [r5] + b _021D76AC +_021D7690: + ldr r0, [r4, #0x14] + bl OverlayManager_Run + cmp r0, #1 + bne _021D76AC + ldr r0, [r4, #0x14] + bl OverlayManager_delete + add r0, r6, #0 + str r0, [r4, #0x14] + mov r0, #5 + str r0, [r5] + b _021D76AC +_021D76AA: + str r6, [r5] +_021D76AC: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D76B4: .word 0xFFFFE0FF +_021D76B8: .word 0x04001000 +_021D76BC: .word MOD59_021D7724 + thumb_func_end MOD59_021D7564 + + thumb_func_start MOD59_021D76C0 +MOD59_021D76C0: ; 0x021D76C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl OverlayManager_GetData + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + bl Sav2_PlayerData_GetProfileAddr + ldr r1, [r4, #0x70] + ldr r1, [r1, #0x18] + bl PlayerName_StringToFlat + ldr r0, [r4, #4] + bl Sav2_PlayerData_GetProfileAddr + ldr r1, [r4, #0x70] + ldr r1, [r1, #4] + bl PlayerProfile_SetTrainerGender + ldr r0, [r4, #4] + bl FUN_02024EB4 + ldr r1, [r4, #0x74] + ldr r1, [r1, #0x18] + bl FUN_02024EF4 + ldr r0, [r4, #0x70] + bl FUN_02077AC4 + ldr r0, [r4, #0x74] + bl FUN_02077AC4 + add r0, r6, #0 + bl OverlayManager_FreeData + add r0, r5, #0 + bl FUN_020168D0 + ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID + ldr r1, _021D7720 ; =MOD52_021D76D8 + bl RegisterMainOverlay + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D771C: .word SDK_OVERLAY_MODULE_52_ID +_021D7720: .word MOD52_021D76D8 + thumb_func_end MOD59_021D76C0 + + thumb_func_start MOD59_021D7724 +MOD59_021D7724: ; 0x021D7724 + ldr r3, _021D772C ; =FUN_0201AB60 + ldr r0, [r0, #0x18] + bx r3 + nop +_021D772C: .word FUN_0201AB60 + thumb_func_end MOD59_021D7724 + + thumb_func_start MOD59_021D7730 +MOD59_021D7730: ; 0x021D7730 + push {r3, r4} + ldr r2, _021D7788 ; =gMain + 0x40 + mov r0, #0 + ldrh r1, [r2, #0x20] + cmp r1, #0 + beq _021D7784 + ldrh r3, [r2, #0x1c] + mov r1, #1 + lsl r1, r1, #8 + cmp r3, r1 + bhs _021D7784 + ldrh r2, [r2, #0x1e] + cmp r2, #0xc0 + bhs _021D7784 + cmp r3, #0x80 + bhs _021D7758 + mov r1, #0x80 + sub r1, r1, r3 + lsl r1, r1, #0x10 + b _021D775C +_021D7758: + sub r3, #0x80 + lsl r1, r3, #0x10 +_021D775C: + lsr r3, r1, #0x10 + cmp r2, #0x64 + bhs _021D776A + mov r1, #0x64 + sub r1, r1, r2 + lsl r1, r1, #0x10 + b _021D776E +_021D776A: + sub r2, #0x64 + lsl r1, r2, #0x10 +_021D776E: + lsr r4, r1, #0x10 + add r2, r3, #0 + add r1, r4, #0 + mul r2, r3 + mul r1, r4 + add r2, r2, r1 + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + bgt _021D7784 + mov r0, #1 +_021D7784: + pop {r3, r4} + bx lr + .align 2, 0 +_021D7788: .word gMain + 0x40 + thumb_func_end MOD59_021D7730 + + thumb_func_start MOD59_021D778C +MOD59_021D778C: ; 0x021D778C + push {r3, r4, r5, lr} + sub sp, #0x78 + ldr r5, _021D7954 ; =0x021D9F18 + add r4, r0, #0 + add r3, sp, #0x50 + mov r2, #5 +_021D7798: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7798 + add r0, sp, #0x50 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x40 + ldr r5, _021D7958 ; =0x021D9DCC + str r0, [r4, #0x18] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D795C ; =0x021D9EA0 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + mov r0, #0xf + strb r0, [r2, #0x12] + mov r0, #6 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0xe + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #5 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + mov r0, #0xd + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #4 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + mov r0, #0xc + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r1, #3 + strb r1, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7960 ; =0x000003E2 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #4 + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7964 ; =0x000003D9 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #3 + bl FUN_0200CB00 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xa0 + bl FUN_02002ED0 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xc0 + bl FUN_02002EEC + ldr r5, _021D7968 ; =0x021D9EBC + add r3, sp, #8 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0xf + str r0, [r3] + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #6 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r1, #0xe + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #5 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02018744 + mov r1, #0xd + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #4 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #6 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_02018744 + mov r1, #0xc + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #3 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #7 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + add r0, r4, #0 + bl MOD59_021D8058 + mov r0, #0 + str r0, [r4, #0x78] + add sp, #0x78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7954: .word MOD59_021D9F18 +_021D7958: .word MOD59_021D9DCC +_021D795C: .word MOD59_021D9EA0 +_021D7960: .word 0x000003E2 +_021D7964: .word 0x000003D9 +_021D7968: .word MOD59_021D9EBC + thumb_func_end MOD59_021D778C + + thumb_func_start MOD59_021D796C +MOD59_021D796C: ; 0x021D796C + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD59_021D796C + + thumb_func_start MOD59_021D79F8 +MOD59_021D79F8: ; 0x021D79F8 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D7A30 ; =0x00000155 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl NewMsgDataFromNarc + str r0, [r4, #0x4c] + bl FUN_0201BD5C + mov r0, #0 + ldr r3, [r4] + add r1, r0, #0 + mov r2, #6 + bl FUN_020142EC + str r0, [r4, #0x60] + ldr r0, [r4] + bl ScrStrBufs_new + str r0, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #0x54] + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021D7A30: .word 0x00000155 + thumb_func_end MOD59_021D79F8 + + thumb_func_start MOD59_021D7A34 +MOD59_021D7A34: ; 0x021D7A34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + bl ScrStrBufs_delete + ldr r0, [r4, #0x60] + bl FUN_020143D0 + ldr r0, [r4, #0x4c] + bl DestroyMsgData + pop {r4, pc} + thumb_func_end MOD59_021D7A34 + + thumb_func_start MOD59_021D7A4C +MOD59_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02014590 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D7A4C + + thumb_func_start MOD59_021D7A5C +MOD59_021D7A5C: ; 0x021D7A5C + ldr r3, _021D7A64 ; =FUN_020145A8 + ldr r0, [r0, #0x68] + bx r3 + nop +_021D7A64: .word FUN_020145A8 + thumb_func_end MOD59_021D7A5C + + thumb_func_start MOD59_021D7A68 +MOD59_021D7A68: ; 0x021D7A68 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r3, r0, #0 + add r6, r2, #0 + mov r5, #0 + cmp r4, #6 + bhi _021D7A92 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7A84: ; jump table + .short _021D7A92 - _021D7A84 - 2 ; case 0 + .short _021D7A98 - _021D7A84 - 2 ; case 1 + .short _021D7A9E - _021D7A84 - 2 ; case 2 + .short _021D7A92 - _021D7A84 - 2 ; case 3 + .short _021D7AA4 - _021D7A84 - 2 ; case 4 + .short _021D7AAA - _021D7A84 - 2 ; case 5 + .short _021D7AB0 - _021D7A84 - 2 ; case 6 +_021D7A92: + mov r1, #1 + mov r0, #0 + b _021D7AB4 +_021D7A98: + mov r1, #2 + add r0, r5, #0 + b _021D7AB4 +_021D7A9E: + mov r1, #4 + add r0, r5, #0 + b _021D7AB4 +_021D7AA4: + mov r1, #1 + add r0, r1, #0 + b _021D7AB4 +_021D7AAA: + mov r1, #2 + mov r0, #1 + b _021D7AB4 +_021D7AB0: + mov r1, #4 + mov r0, #1 +_021D7AB4: + ldr r2, [r3, #0x78] + cmp r2, #3 + bls _021D7ABC + b _021D7BDE +_021D7ABC: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D7AC8: ; jump table + .short _021D7AD0 - _021D7AC8 - 2 ; case 0 + .short _021D7B2C - _021D7AC8 - 2 ; case 1 + .short _021D7B7C - _021D7AC8 - 2 ; case 2 + .short _021D7BD0 - _021D7AC8 - 2 ; case 3 +_021D7AD0: + cmp r6, #0 + bne _021D7B1A + mov r2, #0 + str r2, [r3, #0x7c] + add r2, r3, #0 + mov r6, #0x10 + add r2, #0x80 + str r6, [r2] + mov r2, #1 + str r2, [r3, #0x78] + cmp r0, #0 + bne _021D7AFC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7B0E +_021D7AFC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ +_021D7B0E: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C + b _021D7BDE +_021D7B1A: + mov r0, #0x10 + str r0, [r3, #0x7c] + add r0, r3, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B2C: + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + cmp r2, #0 + beq _021D7B76 + ldr r2, [r3, #0x7c] + add r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + sub r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7B62 + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B62: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B76: + mov r0, #3 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B7C: + ldr r2, [r3, #0x7c] + cmp r2, #0 + beq _021D7BC0 + sub r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + add r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7BAC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BAC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BC0: + mov r0, #3 + str r0, [r3, #0x78] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + b _021D7BDE +_021D7BD0: + ldr r0, _021D7BE4 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7BE8 ; =0x04001050 + mov r5, #1 + strh r1, [r0] + str r1, [r3, #0x78] +_021D7BDE: + add r0, r5, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D7BE4: .word 0x04000050 +_021D7BE8: .word 0x04001050 + thumb_func_end MOD59_021D7A68 + + thumb_func_start MOD59_021D7BEC +MOD59_021D7BEC: ; 0x021D7BEC + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, r1 + bge _021D7C06 + add r1, r0, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, #0x90 + add r1, r1, #1 + str r1, [r0] + mov r0, #0 + bx lr +_021D7C06: + mov r1, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #1 + bx lr + thumb_func_end MOD59_021D7BEC + + thumb_func_start MOD59_021D7C10 +MOD59_021D7C10: ; 0x021D7C10 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x18 + add r4, r1, #0 + lsr r0, r0, #0x18 + str r0, [sp, #8] + lsl r1, r4, #0x18 + mov r2, #0 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020186B4 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D7C10 + + thumb_func_start MOD59_021D7C44 +MOD59_021D7C44: ; 0x021D7C44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + beq _021D7C5E + cmp r0, #1 + beq _021D7D1C + cmp r0, #2 + beq _021D7D36 + b _021D7D54 +_021D7C5E: + add r1, r5, #0 + ldr r0, [r5, #0x18] + ldr r2, _021D7D5C ; =0x021D9DB8 + add r1, #0x1c + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + add r0, #0x1c + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + add r0, r5, #0 + ldr r2, _021D7D60 ; =0x000003E2 + add r0, #0x1c + add r1, r4, #0 + mov r3, #4 + bl FUN_0200D0BC + mov r0, #1 + bl FUN_02002B60 + add r0, r4, #0 + bl FUN_02002B7C + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl String_ctor + add r6, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl String_ctor + str r0, [r5, #0x5c] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + add r2, r6, #0 + bl ReadMsgDataIntoString + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x70] + add r3, r5, #0 + add r3, #0x84 + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + ldr r3, [r3] + add r1, r4, #0 + bl BufferString + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x74] + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + add r3, r4, #0 + bl BufferString + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x5c] + add r2, r6, #0 + bl StringExpandPlaceholders + add r0, r6, #0 + bl String_dtor + ldr r0, [r5, #8] + bl FUN_02024FF4 + add r3, r4, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x5c] + add r0, #0x1c + mov r1, #1 + bl AddTextPrinterParameterized + str r0, [r5, #0x58] + mov r0, #1 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D1C: + ldr r0, [r5, #0x58] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D7D54 + ldr r0, [r5, #0x5c] + bl String_dtor + mov r0, #2 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D36: + cmp r2, #0 + bne _021D7D46 + ldr r0, _021D7D64 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + bne _021D7D54 +_021D7D46: + add r0, r5, #0 + add r0, #0x1c + bl FUN_02019178 + mov r0, #0 + str r0, [r5, #0x50] + mov r4, #1 +_021D7D54: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021D7D5C: .word MOD59_021D9DB8 +_021D7D60: .word 0x000003E2 +_021D7D64: .word gMain + thumb_func_end MOD59_021D7C44 + + thumb_func_start MOD59_021D7D68 +MOD59_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r2, #0 + bne _021D7D74 + ldr r0, _021D7D78 ; =0x000005DC + bl FUN_020054C8 +_021D7D74: + pop {r3, pc} + nop +_021D7D78: .word 0x000005DC + thumb_func_end MOD59_021D7D68 + + thumb_func_start MOD59_021D7D7C +MOD59_021D7D7C: ; 0x021D7D7C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + add r4, r2, #0 + cmp r0, #0 + beq _021D7D94 + cmp r0, #1 + beq _021D7E4C + b _021D7E96 +_021D7D94: + cmp r1, #0 + beq _021D7DA0 + cmp r1, #1 + beq _021D7DA8 + cmp r1, #2 + beq _021D7DB0 +_021D7DA0: + ldr r2, _021D7E9C ; =0x021D9DA8 + ldr r4, _021D7EA0 ; =0x021D9E0C + mov r6, #2 + b _021D7DC4 +_021D7DA8: + ldr r2, _021D7EA4 ; =0x021D9DB0 + ldr r4, _021D7EA8 ; =0x021D9E58 + mov r6, #3 + b _021D7DC4 +_021D7DB0: + ldr r0, _021D7EAC ; =gGameVersion + ldr r2, _021D7EB0 ; =0x021D9DA0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7DC0 + ldr r4, _021D7EB4 ; =0x021D9F40 + mov r6, #5 + b _021D7DC4 +_021D7DC0: + ldr r4, _021D7EB8 ; =0x021D9F68 + mov r6, #5 +_021D7DC4: + add r1, r5, #0 + ldr r0, [r5, #0x18] + add r1, #0x30 + bl FUN_02019150 + ldr r1, [r5] + add r0, r6, #0 + bl ListMenu_ctor + mov r7, #0 + str r0, [r5, #0x44] + cmp r6, #0 + ble _021D7DF2 +_021D7DDE: + ldr r0, [r5, #0x44] + ldr r1, [r5, #0x4c] + ldr r2, [r4] + ldr r3, [r4, #4] + bl ListMenu_ItemFromMsgData + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _021D7DDE +_021D7DF2: + ldr r4, _021D7EBC ; =0x021D9EF8 + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x44] + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #4 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _021D7EC0 ; =MOD59_021D7D68 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x30 + str r0, [sp, #0x10] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + str r0, [r5, #0x40] + ldr r0, [sp, #0x10] + ldr r2, _021D7EC4 ; =0x000003D9 + mov r1, #1 + mov r3, #3 + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + str r0, [r5, #0x2c] + b _021D7E96 +_021D7E4C: + ldr r0, [r5, #0x40] + bl FUN_02001204 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #0x48] + cmp r0, r1 + beq _021D7E96 + sub r1, r1, #1 + cmp r0, r1 + bne _021D7E66 + cmp r4, #1 + beq _021D7E96 +_021D7E66: + add r0, r5, #0 + add r0, #0x30 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x30 + bl FUN_02019178 + mov r1, #0 + ldr r0, [r5, #0x40] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x44] + bl ListMenu_dtor + ldr r0, _021D7EC8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + mov r0, #1 + str r0, [sp] +_021D7E96: + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E9C: .word MOD59_021D9DA8 +_021D7EA0: .word MOD59_021D9E0C +_021D7EA4: .word MOD59_021D9DB0 +_021D7EA8: .word MOD59_021D9E58 +_021D7EAC: .word gGameVersion +_021D7EB0: .word MOD59_021D9DA0 +_021D7EB4: .word MOD59_021D9F40 +_021D7EB8: .word MOD59_021D9F68 +_021D7EBC: .word MOD59_021D9EF8 +_021D7EC0: .word MOD59_021D7D68 +_021D7EC4: .word 0x000003D9 +_021D7EC8: .word 0x000005DC + thumb_func_end MOD59_021D7D7C + + thumb_func_start MOD59_021D7ECC +MOD59_021D7ECC: ; 0x021D7ECC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r4, #0x54] + add r6, r2, #0 + add r7, r3, #0 + mov r5, #0 + cmp r1, #5 + bls _021D7EE2 + b _021D803C +_021D7EE2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7EEE: ; jump table + .short _021D7EFA - _021D7EEE - 2 ; case 0 + .short _021D7FD8 - _021D7EEE - 2 ; case 1 + .short _021D7FE4 - _021D7EEE - 2 ; case 2 + .short _021D7FF6 - _021D7EEE - 2 ; case 3 + .short _021D8016 - _021D7EEE - 2 ; case 4 + .short _021D8028 - _021D7EEE - 2 ; case 5 +_021D7EFA: + add r0, r5, #0 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl String_ctor + str r0, [r4, #0x5c] + ldr r0, [r4, #0x4c] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x5c] + bl ReadMsgDataIntoString + cmp r6, #1 + add r0, sp, #0x14 + bne _021D7F7C + ldr r1, _021D8044 ; =0x021D9D90 + ldrh r2, [r1, #8] + strh r2, [r0] + ldrh r2, [r1, #0xa] + strh r2, [r0, #2] + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #0x5c] + bl FUN_02002F90 + mov r1, #0xc + sub r2, r1, r0 + add r1, sp, #0x14 + strb r2, [r1, #2] + lsl r0, r0, #1 + strb r0, [r1, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + add r2, sp, #0x14 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D8048 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl AddTextPrinterParameterized2 + b _021D7FCC +_021D7F7C: + ldr r1, _021D8044 ; =0x021D9D90 + add r2, sp, #0x14 + ldrh r3, [r1] + strh r3, [r0] + ldrh r3, [r1, #2] + strh r3, [r0, #2] + ldrh r3, [r1, #4] + ldrh r1, [r1, #6] + strh r3, [r0, #4] + strh r1, [r0, #6] + ldr r1, [sp, #0x30] + strb r7, [r0, #2] + strb r1, [r0, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D804C ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl AddTextPrinterParameterized2 +_021D7FCC: + ldr r0, [r4, #0x5c] + bl String_dtor + mov r0, #1 + str r0, [r4, #0x54] + b _021D803C +_021D7FD8: + add r0, #0x1c + bl FUN_020191D0 + mov r0, #2 + str r0, [r4, #0x54] + b _021D803C +_021D7FE4: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #3 + str r0, [r4, #0x54] + b _021D803C +_021D7FF6: + ldr r0, _021D8050 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D800A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D803C +_021D800A: + ldr r0, _021D8054 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r4, #0x54] + b _021D803C +_021D8016: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #5 + str r0, [r4, #0x54] + b _021D803C +_021D8028: + add r0, #0x1c + bl FUN_02019178 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0x54] + mov r5, #1 +_021D803C: + add r0, r5, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D8044: .word MOD59_021D9D90 +_021D8048: .word 0x00010200 +_021D804C: .word 0x000F0200 +_021D8050: .word gMain +_021D8054: .word 0x000005DC + thumb_func_end MOD59_021D7ECC + + thumb_func_start MOD59_021D8058 +MOD59_021D8058: ; 0x021D8058 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r5, r0, #0 + str r1, [sp, #8] + ldr r0, [r5] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + bl FUN_0200687C + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_0200687C + ldr r0, _021D80F8 ; =gGameVersion + ldrb r0, [r0] + cmp r0, #0xa + bne _021D80A6 + mov r1, #1 + mov r4, #0x18 + b _021D80AA +_021D80A6: + mov r1, #2 + mov r4, #0x19 +_021D80AA: + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7d + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0xa0 + str r0, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r5, #0 + bl MOD59_021D80FC + add r0, r5, #0 + bl MOD59_021D8140 + add r0, r5, #0 + bl MOD59_021D8234 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word gGameVersion + thumb_func_end MOD59_021D8058 + + thumb_func_start MOD59_021D80FC +MOD59_021D80FC: ; 0x021D80FC + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D813C ; =0x021D9E1C + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #0x10 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r3, #0 + add r0, #0x88 + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8138 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #3 + bl FUN_020068C8 +_021D8138: + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_021D813C: .word MOD59_021D9E1C + thumb_func_end MOD59_021D80FC + + thumb_func_start MOD59_021D8140 +MOD59_021D8140: ; 0x021D8140 + push {r3, r4, r5, lr} + sub sp, #0x68 + ldr r5, _021D8230 ; =0x021D9F90 + add r4, r0, #0 + add r3, sp, #0x10 + mov r2, #0xb +_021D814C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D814C + add r0, r4, #0 + add r0, #0x89 + ldrb r1, [r0] + cmp r1, #0 + beq _021D81BE + cmp r1, #0xc + bhs _021D81BE + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x89 + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #0xe0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #1 + mov r2, #7 + bl MOD59_021D7C10 +_021D81BE: + add r0, r4, #0 + add r0, #0x8a + ldrb r1, [r0] + cmp r1, #0 + beq _021D822A + cmp r1, #0xc + bhs _021D822A + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x8a + ldrb r1, [r1] + mov r0, #0x7d + add r3, r0, #0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + add r3, #0x83 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 +_021D822A: + add sp, #0x68 + pop {r3, r4, r5, pc} + nop +_021D8230: .word MOD59_021D9F90 + thumb_func_end MOD59_021D8140 + + thumb_func_start MOD59_021D8234 +MOD59_021D8234: ; 0x021D8234 + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D829C ; =0x021D9E30 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x10 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + add r0, #0x8b + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8296 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_020068C8 + add r0, r4, #0 + add r0, #0x8b + ldrb r0, [r0] + cmp r0, #1 + bne _021D8288 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + bl MOD59_021D7C10 + add sp, #0x24 + pop {r4, r5, pc} +_021D8288: + cmp r0, #2 + bne _021D8296 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl MOD59_021D7C10 +_021D8296: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D829C: .word MOD59_021D9E30 + thumb_func_end MOD59_021D8234 + + thumb_func_start MOD59_021D82A0 +MOD59_021D82A0: ; 0x021D82A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + add r5, r0, #0 + ldr r1, _021D83EC ; =0x000001BE + str r2, [sp, #8] + add r0, sp, #0x10 + mov r3, #2 + bl FUN_02068C00 + ldr r0, [r5] + mov r1, #0xc8 + bl AllocFromHeap + add r7, r0, #0 + ldr r2, _021D83F0 ; =0x021D9FE8 + mov r1, #0 + add r3, r7, #0 +_021D82C8: + ldrb r0, [r2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r0, #1 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0x64 + blt _021D82C8 + add r1, sp, #0x10 + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r2, [r5] + bl FUN_0201244C + add r1, sp, #0x10 + add r4, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #4] + ldr r2, [r5] + bl FUN_02012470 + mov r2, #0 + add r6, r0, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + mov r3, #0xb + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r7, #0 + bl FUN_02018148 + add r0, r5, #0 + mov r1, #2 + mov r2, #9 + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r3, #0x20 + add r2, r3, #0 + mov r0, #2 + add r1, r6, #0 + add r3, #0xe0 + bl FUN_02017FB4 + mov r3, #0x12 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r0, #2 + mov r2, #0x20 + lsl r3, r3, #4 + bl FUN_02017FB4 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #7 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r7, #0 + mov r3, #0xb + bl FUN_02018148 + add r0, r5, #0 + mov r1, #5 + mov r2, #0xa + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r0, #5 + add r1, r6, #0 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + mov r0, #5 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + add r0, r6, #0 + bl FreeToHeap + add r0, r4, #0 + bl FreeToHeap + add r0, r7, #0 + bl FreeToHeap + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D83EC: .word 0x000001BE +_021D83F0: .word MOD59_021D9FE8 +_021D83F4: .word MOD59_021D9ED8 + thumb_func_end MOD59_021D82A0 + + thumb_func_start MOD59_021D83F8 +MOD59_021D83F8: ; 0x021D83F8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x26 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #6 + mov r2, #9 + bl MOD59_021D7C10 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4] + mov r1, #0x27 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0xe0 + bl FUN_02006930 + ldr r3, [r4] + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0x20 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x1e + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D83F8 + + thumb_func_start MOD59_021D8460 +MOD59_021D8460: ; 0x021D8460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + cmp r2, #0 + bne _021D849C + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D8498 + cmp r0, #0 + ldr r0, [r5, #0x18] + ble _021D848A + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D848A: + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D8498: + mov r6, #1 + b _021D84E2 +_021D849C: + cmp r2, #1 + bne _021D84C2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + add r1, r6, #0 + sub r1, #0x30 + cmp r0, r1 + beq _021D84BE + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84BE: + mov r6, #1 + b _021D84E2 +_021D84C2: + cmp r2, #2 + bne _021D84E2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D84E0 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84E0: + mov r6, #1 +_021D84E2: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD59_021D8460 + + thumb_func_start MOD59_021D84E8 +MOD59_021D84E8: ; 0x021D84E8 + add r1, r0, #0 + mov r2, #0 + add r1, #0x8c + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8d + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8e + strb r2, [r1] + add r0, #0x8f + strb r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D84E8 + + thumb_func_start MOD59_021D8504 +MOD59_021D8504: ; 0x021D8504 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r0, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D858E + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + cmp r0, #0 + beq _021D8526 + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + sub r1, r0, #1 + b _021D8546 +_021D8526: + add r0, r4, #0 + add r0, #0x8c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8c + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + mov r1, #4 +_021D8546: + add r0, r4, #0 + add r0, #0x8d + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8610 ; =0x021D9DEC + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8c + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #1 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} +_021D858E: + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + cmp r0, #0 + beq _021D85A2 + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + sub r1, r0, #1 + b _021D85C2 +_021D85A2: + add r0, r4, #0 + add r0, #0x8e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8e + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + mov r1, #4 +_021D85C2: + add r0, r4, #0 + add r0, #0x8f + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8614 ; =0x021D9DFC + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8e + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #2 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_021D860C: .word 0x04000050 +_021D8610: .word MOD59_021D9DEC +_021D8614: .word MOD59_021D9DFC + thumb_func_end MOD59_021D8504 + + thumb_func_start MOD59_021D8618 +MOD59_021D8618: ; 0x021D8618 + ldr r0, _021D8620 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_021D8620: .word 0x04000050 + thumb_func_end MOD59_021D8618 + + thumb_func_start MOD59_021D8624 +MOD59_021D8624: ; 0x021D8624 + add r1, r0, #0 + mov r2, #0 + add r1, #0x94 + str r2, [r1] + add r0, #0x98 + str r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D8624 + + thumb_func_start MOD59_021D8634 +MOD59_021D8634: ; 0x021D8634 + push {r4, r5, r6, lr} + sub sp, #0x40 + add r3, r0, #0 + add r0, #0x98 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _021D864E + add r0, r3, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + b _021D865E +_021D864E: + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r3, #0 + add r0, #0x94 + str r1, [r0] + mov r1, #8 +_021D865E: + add r0, r3, #0 + add r0, #0x98 + str r1, [r0] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D8674 + ldr r6, _021D86B4 ; =0x021D9E88 + add r5, sp, #0x28 + b _021D8678 +_021D8674: + ldr r6, _021D86B8 ; =0x021D9E70 + add r5, sp, #0x10 +_021D8678: + add r2, r5, #0 + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0xff + bne _021D8698 + mov r4, #1 + b _021D86AE +_021D8698: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + str r0, [sp, #0xc] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C +_021D86AE: + add r0, r4, #0 + add sp, #0x40 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D86B4: .word MOD59_021D9E88 +_021D86B8: .word MOD59_021D9E70 + thumb_func_end MOD59_021D8634 + + thumb_func_start MOD59_021D86BC +MOD59_021D86BC: ; 0x021D86BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + mov r7, #0 + cmp r0, #5 + bls _021D86CC + b _021D890A +_021D86CC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D86D8: ; jump table + .short _021D86E4 - _021D86D8 - 2 ; case 0 + .short _021D8728 - _021D86D8 - 2 ; case 1 + .short _021D87A6 - _021D86D8 - 2 ; case 2 + .short _021D87E0 - _021D86D8 - 2 ; case 3 + .short _021D887C - _021D86D8 - 2 ; case 4 + .short _021D88F8 - _021D86D8 - 2 ; case 5 +_021D86E4: + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r7, #0 + add r3, r7, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + sub r3, #0x6b + bl FUN_020179E0 + mov r0, #2 + add r1, r7, #0 + bl FUN_020178BC + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #1 + str r0, [r6] + b _021D890A +_021D8728: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02017B54 + add r1, r4, #0 + add r1, #0xb0 + ldr r3, [r1] + add r1, r4, #0 + add r1, #0xac + ldr r2, [r1] + lsl r1, r2, #3 + add r1, r2, r1 + add r2, r3, #0 + mul r2, r1 + lsl r1, r3, #3 + add r1, r3, r1 + mul r1, r3 + lsr r3, r1, #0x1f + add r3, r1, r3 + asr r1, r3, #1 + sub r5, r2, r1 + cmp r0, #0x58 + bge _021D8792 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #1 + mov r3, #2 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D8792: + mov r0, #5 + add r1, r7, #0 + bl FUN_0201797C + mov r0, #0x1e + add r4, #0xb0 + str r0, [r4] + mov r0, #2 + str r0, [r6] + b _021D890A +_021D87A6: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D87BE + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + add r4, #0xb0 + sub r0, r0, #1 + str r0, [r4] + b _021D890A +_021D87BE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #9 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #3 + str r0, [r6] + b _021D890A +_021D87E0: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r0, r1 + mul r2, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + sub r0, #0x68 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D8846 + cmp r5, #0 + bgt _021D8846 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #4 + str r0, [r6] + b _021D890A +_021D8846: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r5, [r0] + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + asr r5, r5, #1 + cmp r5, #0x90 + ble _021D886E + mov r5, #0x90 +_021D886E: + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D887C: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r2, r1 + mul r0, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D88CC + cmp r5, #0 + bgt _021D88CC + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + mov r0, #5 + str r0, [r6] + b _021D890A +_021D88CC: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + add r4, #0xa8 + str r5, [r4] + b _021D890A +_021D88F8: + ldr r0, _021D8910 ; =0x000001BE + bl FUN_02005578 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 + mov r7, #1 +_021D890A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8910: .word 0x000001BE + thumb_func_end MOD59_021D86BC + + thumb_func_start MOD59_021D8914 +MOD59_021D8914: ; 0x021D8914 + ldr r3, _021D891C ; =FUN_020178BC + mov r0, #2 + mov r1, #1 + bx r3 + .align 2, 0 +_021D891C: .word FUN_020178BC + thumb_func_end MOD59_021D8914 + + thumb_func_start MOD59_021D8920 +MOD59_021D8920: ; 0x021D8920 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r5, #0 + cmp r1, #0x6d + bls _021D8932 + bl _021D985C +_021D8932: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D893E: ; jump table + .short _021D8A1A - _021D893E - 2 ; case 0 + .short _021D8A5A - _021D893E - 2 ; case 1 + .short _021D8A76 - _021D893E - 2 ; case 2 + .short _021D8A92 - _021D893E - 2 ; case 3 + .short _021D8ADE - _021D893E - 2 ; case 4 + .short _021D8AEE - _021D893E - 2 ; case 5 + .short _021D8B02 - _021D893E - 2 ; case 6 + .short _021D8B16 - _021D893E - 2 ; case 7 + .short _021D8B60 - _021D893E - 2 ; case 8 + .short _021D8B80 - _021D893E - 2 ; case 9 + .short _021D8BA0 - _021D893E - 2 ; case 10 + .short _021D8BD8 - _021D893E - 2 ; case 11 + .short _021D8BE8 - _021D893E - 2 ; case 12 + .short _021D8C02 - _021D893E - 2 ; case 13 + .short _021D8C16 - _021D893E - 2 ; case 14 + .short _021D8C30 - _021D893E - 2 ; case 15 + .short _021D8C44 - _021D893E - 2 ; case 16 + .short _021D8C5E - _021D893E - 2 ; case 17 + .short _021D8C72 - _021D893E - 2 ; case 18 + .short _021D8C98 - _021D893E - 2 ; case 19 + .short _021D8CA8 - _021D893E - 2 ; case 20 + .short _021D8CBC - _021D893E - 2 ; case 21 + .short _021D8CF8 - _021D893E - 2 ; case 22 + .short _021D8D1C - _021D893E - 2 ; case 23 + .short _021D8D3E - _021D893E - 2 ; case 24 + .short _021D8D7C - _021D893E - 2 ; case 25 + .short _021D8D94 - _021D893E - 2 ; case 26 + .short _021D8DD6 - _021D893E - 2 ; case 27 + .short _021D8DEA - _021D893E - 2 ; case 28 + .short _021D8E34 - _021D893E - 2 ; case 29 + .short _021D8E44 - _021D893E - 2 ; case 30 + .short _021D8E58 - _021D893E - 2 ; case 31 + .short _021D8E90 - _021D893E - 2 ; case 32 + .short _021D8EA0 - _021D893E - 2 ; case 33 + .short _021D8EBE - _021D893E - 2 ; case 34 + .short _021D8ED6 - _021D893E - 2 ; case 35 + .short _021D8EF0 - _021D893E - 2 ; case 36 + .short _021D8F0A - _021D893E - 2 ; case 37 + .short _021D8F24 - _021D893E - 2 ; case 38 + .short _021D8F3E - _021D893E - 2 ; case 39 + .short _021D8F5E - _021D893E - 2 ; case 40 + .short _021D8F7E - _021D893E - 2 ; case 41 + .short _021D8F92 - _021D893E - 2 ; case 42 + .short _021D8FA6 - _021D893E - 2 ; case 43 + .short _021D8FC6 - _021D893E - 2 ; case 44 + .short _021D900C - _021D893E - 2 ; case 45 + .short _021D901C - _021D893E - 2 ; case 46 + .short _021D9030 - _021D893E - 2 ; case 47 + .short _021D9062 - _021D893E - 2 ; case 48 + .short _021D90CE - _021D893E - 2 ; case 49 + .short _021D90E2 - _021D893E - 2 ; case 50 + .short _021D9106 - _021D893E - 2 ; case 51 + .short _021D913E - _021D893E - 2 ; case 52 + .short _021D9178 - _021D893E - 2 ; case 53 + .short _021D9192 - _021D893E - 2 ; case 54 + .short _021D91E4 - _021D893E - 2 ; case 55 + .short _021D9208 - _021D893E - 2 ; case 56 + .short _021D921A - _021D893E - 2 ; case 57 + .short _021D922A - _021D893E - 2 ; case 58 + .short _021D9244 - _021D893E - 2 ; case 59 + .short _021D925C - _021D893E - 2 ; case 60 + .short _021D926C - _021D893E - 2 ; case 61 + .short _021D927E - _021D893E - 2 ; case 62 + .short _021D9290 - _021D893E - 2 ; case 63 + .short _021D92CA - _021D893E - 2 ; case 64 + .short _021D92DC - _021D893E - 2 ; case 65 + .short _021D92EE - _021D893E - 2 ; case 66 + .short _021D930A - _021D893E - 2 ; case 67 + .short _021D9384 - _021D893E - 2 ; case 68 + .short _021D9396 - _021D893E - 2 ; case 69 + .short _021D93AE - _021D893E - 2 ; case 70 + .short _021D93C0 - _021D893E - 2 ; case 71 + .short _021D93D8 - _021D893E - 2 ; case 72 + .short _021D93F8 - _021D893E - 2 ; case 73 + .short _021D942A - _021D893E - 2 ; case 74 + .short _021D944A - _021D893E - 2 ; case 75 + .short _021D945C - _021D893E - 2 ; case 76 + .short _021D9476 - _021D893E - 2 ; case 77 + .short _021D94DE - _021D893E - 2 ; case 78 + .short _021D94EC - _021D893E - 2 ; case 79 + .short _021D950C - _021D893E - 2 ; case 80 + .short _021D954E - _021D893E - 2 ; case 81 + .short _021D956E - _021D893E - 2 ; case 82 + .short _021D9586 - _021D893E - 2 ; case 83 + .short _021D9598 - _021D893E - 2 ; case 84 + .short _021D95AA - _021D893E - 2 ; case 85 + .short _021D95BC - _021D893E - 2 ; case 86 + .short _021D95D4 - _021D893E - 2 ; case 87 + .short _021D95E6 - _021D893E - 2 ; case 88 + .short _021D95F8 - _021D893E - 2 ; case 89 + .short _021D960A - _021D893E - 2 ; case 90 + .short _021D9672 - _021D893E - 2 ; case 91 + .short _021D9684 - _021D893E - 2 ; case 92 + .short _021D9696 - _021D893E - 2 ; case 93 + .short _021D96DE - _021D893E - 2 ; case 94 + .short _021D96EC - _021D893E - 2 ; case 95 + .short _021D96FE - _021D893E - 2 ; case 96 + .short _021D9738 - _021D893E - 2 ; case 97 + .short _021D974C - _021D893E - 2 ; case 98 + .short _021D9764 - _021D893E - 2 ; case 99 + .short _021D9788 - _021D893E - 2 ; case 100 + .short _021D9798 - _021D893E - 2 ; case 101 + .short _021D97B2 - _021D893E - 2 ; case 102 + .short _021D97CC - _021D893E - 2 ; case 103 + .short _021D97DC - _021D893E - 2 ; case 104 + .short _021D9812 - _021D893E - 2 ; case 105 + .short _021D982A - _021D893E - 2 ; case 106 + .short _021D983A - _021D893E - 2 ; case 107 + .short _021D9848 - _021D893E - 2 ; case 108 + .short _021D985A - _021D893E - 2 ; case 109 +_021D8A1A: + ldr r1, _021D8D70 ; =0x00000405 + mov r0, #2 + mov r2, #1 + bl FUN_0200433C + ldr r0, _021D8D70 ; =0x00000405 + add r1, r5, #0 + bl FUN_02005350 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0xc] + bl _021D985C +_021D8A5A: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + add r0, r4, #0 + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D8B22 + mov r0, #2 + str r0, [r4, #0xc] + bl _021D985C +_021D8A76: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #3 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8A92: + ldr r0, _021D8D70 ; =0x00000405 + bl FUN_0200521C + add r0, r4, #0 + mov r1, #1 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #0x10 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r4, #0xc] + bl _021D985C +_021D8ADE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + mov r0, #5 + str r0, [r4, #0xc] + bl _021D985C +_021D8AEE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8B02: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8B22 + mov r0, #7 + str r0, [r4, #0xc] + bl _021D985C +_021D8B16: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D8B26 +_021D8B22: + bl _021D985C +_021D8B26: + ldr r0, [r4, #0x48] + cmp r0, #1 + beq _021D8B38 + cmp r0, #2 + beq _021D8B44 + cmp r0, #3 + beq _021D8B58 + bl _021D985C +_021D8B38: + mov r0, #0xa + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + bl _021D985C +_021D8B44: + mov r0, #0x1f + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8B58: + mov r0, #0x29 + str r0, [r4, #0xc] + bl _021D985C +_021D8B60: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #9 + str r0, [r4, #0xc] + bl _021D985C +_021D8B80: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #1 + add r1, r5, #0 + bl FUN_0201797C + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + bl _021D985C +_021D8BA0: + add r1, r4, #0 + mov r2, #1 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xb + str r0, [r4, #0xc] + bl _021D985C +_021D8BD8: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8BE8: + mov r1, #0x12 + str r1, [sp] + mov r1, #2 + add r2, r5, #0 + mov r3, #3 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xd + str r0, [r4, #0xc] + bl _021D985C +_021D8C02: + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0xe + str r0, [r4, #0xc] + bl _021D985C +_021D8C16: + mov r1, #0xc + str r1, [sp] + mov r1, #3 + add r2, r5, #0 + mov r3, #7 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xf + str r0, [r4, #0xc] + bl _021D985C +_021D8C30: + add r1, r4, #0 + mov r2, #3 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0x10 + str r0, [r4, #0xc] + bl _021D985C +_021D8C44: + mov r1, #0xc + str r1, [sp] + mov r1, #4 + add r2, r5, #0 + add r3, r1, #0 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0x11 + str r0, [r4, #0xc] + bl _021D985C +_021D8C5E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8C84 + mov r0, #0x12 + str r0, [r4, #0xc] + bl _021D985C +_021D8C72: + mov r1, #0xa + str r1, [sp] + mov r1, #5 + add r2, r5, #0 + mov r3, #4 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8C88 +_021D8C84: + bl _021D985C +_021D8C88: + mov r0, #0x13 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8C98: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x14 + str r0, [r4, #0xc] + bl _021D985C +_021D8CA8: + mov r1, #7 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8DA0 + mov r0, #0x15 + str r0, [r4, #0xc] + bl _021D985C +_021D8CBC: + ldr r6, _021D8D74 ; =0x021D9E44 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x68] + bl FUN_020145C8 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + mov r1, #3 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8CF8: + ldr r0, _021D8D78 ; =gMain + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D8D08 + mov r0, #0x1b + str r0, [r4, #0xc] + bl _021D985C +_021D8D08: + ldr r0, [r4, #0x68] + bl FUN_02014630 + sub r0, r0, #3 + cmp r0, #1 + bhi _021D8DA0 + mov r0, #0x17 + str r0, [r4, #0xc] + bl _021D985C +_021D8D1C: + ldr r0, [r4, #0x68] + bl FUN_02014630 + cmp r0, #1 + beq _021D8D2E + cmp r0, #2 + beq _021D8D36 + bl _021D985C +_021D8D2E: + mov r0, #0x18 + str r0, [r4, #0xc] + bl _021D985C +_021D8D36: + mov r0, #0x1a + str r0, [r4, #0xc] + bl _021D985C +_021D8D3E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x19 + str r0, [r4, #0xc] + bl _021D985C + .align 2, 0 +_021D8D70: .word 0x00000405 +_021D8D74: .word MOD59_021D9E44 +_021D8D78: .word gMain +_021D8D7C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8D94: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D8DA4 +_021D8DA0: + bl _021D985C +_021D8DA4: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8DD6: + mov r1, #8 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8DEA: + add r1, r4, #0 + add r1, #0x88 + strb r5, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x1d + str r0, [r4, #0xc] + bl _021D985C +_021D8E34: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x1e + str r0, [r4, #0xc] + bl _021D985C +_021D8E44: + mov r1, #9 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8E58: + add r1, r4, #0 + mov r2, #4 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #2 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x20 + str r0, [r4, #0xc] + bl _021D985C +_021D8E90: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x21 + str r0, [r4, #0xc] + bl _021D985C +_021D8EA0: + mov r1, #6 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8EB6 +_021D8EB2: + bl _021D985C +_021D8EB6: + mov r0, #0x22 + str r0, [r4, #0xc] + bl _021D985C +_021D8EBE: + mov r3, #8 + mov r1, #0xb + mov r2, #1 + str r3, [sp] + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x23 + str r0, [r4, #0xc] + bl _021D985C +_021D8ED6: + mov r1, #6 + str r1, [sp] + mov r1, #0xc + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x24 + str r0, [r4, #0xc] + bl _021D985C +_021D8EF0: + mov r1, #0xe + str r1, [sp] + mov r1, #0xd + mov r2, #1 + mov r3, #5 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x25 + str r0, [r4, #0xc] + bl _021D985C +_021D8F0A: + mov r1, #4 + str r1, [sp] + mov r1, #0xe + mov r2, #1 + mov r3, #0xa + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x26 + str r0, [r4, #0xc] + bl _021D985C +_021D8F24: + mov r1, #0xc + str r1, [sp] + mov r1, #0xf + mov r2, #1 + mov r3, #6 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x27 + str r0, [r4, #0xc] + bl _021D985C +_021D8F3E: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x28 + str r0, [r4, #0xc] + bl _021D985C +_021D8F5E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8FCE + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8F7E: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2a + str r0, [r4, #0xc] + bl _021D985C +_021D8F92: + mov r1, #0x10 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2b + str r0, [r4, #0xc] + bl _021D985C +_021D8FA6: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #4 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2c + str r0, [r4, #0xc] + bl _021D985C +_021D8FC6: + bl FUN_0200E308 + cmp r0, #1 + beq _021D8FD2 +_021D8FCE: + bl _021D985C +_021D8FD2: + add r0, r4, #0 + bl MOD59_021D83F8 + add r0, r4, #0 + mov r1, #4 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #4 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2d + str r0, [r4, #0xc] + bl _021D985C +_021D900C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2e + str r0, [r4, #0xc] + bl _021D985C +_021D901C: + mov r1, #0x11 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2f + str r0, [r4, #0xc] + bl _021D985C +_021D9030: + bl MOD59_021D7730 + cmp r0, #1 + bne _021D9054 + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4, #0x18] + bl FUN_02018744 + mov r0, #0x30 + str r0, [r4, #0xc] + bl _021D985C +_021D9054: + ldr r0, _021D9370 ; =gMain + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D90DA + mov r0, #0x31 + str r0, [r4, #0xc] + b _021D985C +_021D9062: + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021D9078 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r4, #0x98 + sub r0, r0, #1 + str r0, [r4] + b _021D985C +_021D9078: + ldr r6, _021D9374 ; =0x021D9DC0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + ldr r0, _021D9378 ; =0x0000FFFF + cmp r1, r0 + bne _021D90A2 + ldr r0, _021D937C ; =0x00000706 + bl FUN_020054C8 + mov r0, #0x32 + str r0, [r4, #0xc] + b _021D985C +_021D90A2: + mov r0, #0x20 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [r4] + mov r3, #6 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + bl FUN_0200687C + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + mov r0, #4 + add r4, #0x98 + str r0, [r4] + b _021D985C +_021D90CE: + mov r1, #0x12 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D90DC +_021D90DA: + b _021D985C +_021D90DC: + mov r0, #0x2f + str r0, [r4, #0xc] + b _021D985C +_021D90E2: + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x33 + str r0, [r4, #0xc] + b _021D985C +_021D9106: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x34 + str r0, [r4, #0xc] + b _021D985C +_021D913E: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x35 + str r0, [r4, #0xc] + b _021D985C +_021D9178: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #0x36 + str r0, [r4, #0xc] + b _021D985C +_021D9192: + bl MOD59_021D82A0 + mov r0, #6 + add r1, r5, #0 + bl FUN_0201797C + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x37 + str r0, [r4, #0xc] + b _021D985C +_021D91E4: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + beq _021D91F8 +_021D91F6: + b _021D985C +_021D91F8: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D92FA + mov r0, #0x38 + str r0, [r4, #0xc] + b _021D985C +_021D9208: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + cmp r0, #1 + bne _021D92FA + mov r0, #0x39 + str r0, [r4, #0xc] + b _021D985C +_021D921A: + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3a + str r0, [r4, #0xc] + b _021D985C +_021D922A: + mov r1, #0x13 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x3b + str r0, [r4, #0xc] + b _021D985C +_021D9244: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + add r0, r4, #0 + bl MOD59_021D8914 + mov r0, #0x3c + str r0, [r4, #0xc] + b _021D985C +_021D925C: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3d + str r0, [r4, #0xc] + b _021D985C +_021D926C: + mov r1, #0x14 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3e + str r0, [r4, #0xc] + b _021D985C +_021D927E: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D9290: + bl MOD59_021D84E8 + add r0, r4, #0 + mov r1, #2 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + add r2, r5, #0 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + mov r3, #0x30 + bl FUN_020179E0 + mov r0, #0x40 + str r0, [r4, #0xc] + b _021D985C +_021D92CA: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x41 + str r0, [r4, #0xc] + b _021D985C +_021D92DC: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x42 + str r0, [r4, #0xc] + b _021D985C +_021D92EE: + mov r1, #0x15 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D92FC +_021D92FA: + b _021D985C +_021D92FC: + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0x43 + str r0, [r4, #0xc] + b _021D985C +_021D930A: + ldr r0, _021D9370 ; =gMain + mov r1, #1 + ldr r0, [r0, #0x48] + and r1, r0 + cmp r1, #1 + bne _021D933C + mov r0, #6 + str r0, [r4, #0x7c] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r4, #0x78] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9336 + mov r0, #0x44 + str r0, [r4, #0xc] + b _021D985C +_021D9336: + mov r0, #0x46 + str r0, [r4, #0xc] + b _021D985C +_021D933C: + mov r1, #0x20 + and r1, r0 + cmp r1, #0x20 + beq _021D934C + mov r1, #0x10 + and r0, r1 + cmp r0, #0x10 + bne _021D9368 +_021D934C: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D935A + mov r1, #1 + b _021D935C +_021D935A: + mov r1, #0 +_021D935C: + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, _021D9380 ; =0x000005DC + bl FUN_020054C8 +_021D9368: + add r0, r4, #0 + bl MOD59_021D8504 + b _021D985C + .align 2, 0 +_021D9370: .word gMain +_021D9374: .word MOD59_021D9DC0 +_021D9378: .word 0x0000FFFF +_021D937C: .word 0x00000706 +_021D9380: .word 0x000005DC +_021D9384: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x45 + str r0, [r4, #0xc] + b _021D985C +_021D9396: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93AE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x47 + str r0, [r4, #0xc] + b _021D985C +_021D93C0: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93D8: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D93E4 + mov r1, #0x16 + b _021D93E6 +_021D93E4: + mov r1, #0x17 +_021D93E6: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9414 + mov r0, #0x49 + str r0, [r4, #0xc] + b _021D985C +_021D93F8: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9414 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D941C + cmp r1, #1 + beq _021D9416 + cmp r1, #2 + beq _021D941C +_021D9414: + b _021D985C +_021D9416: + mov r0, #0x4b + str r0, [r4, #0xc] + b _021D985C +_021D941C: + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0x4a + str r0, [r4, #0xc] + b _021D985C +_021D942A: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9436 + mov r1, #1 + b _021D9438 +_021D9436: + mov r1, #2 +_021D9438: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9530 + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D944A: + mov r1, #0x18 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4c + str r0, [r4, #0xc] + b _021D985C +_021D945C: + add r0, #0x84 + ldr r1, [r0] + ldr r0, [r4, #0x70] + str r1, [r0, #4] + ldr r0, _021D9778 ; =UNK_020FA5FC + ldr r1, [r4, #0x70] + ldr r2, [r4] + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x4d + str r0, [r4, #0xc] + b _021D985C +_021D9476: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94AE + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + b _021D94C2 +_021D94AE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 +_021D94C2: + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x4e + str r0, [r4, #0xc] + b _021D985C +_021D94DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4f + str r0, [r4, #0xc] + b _021D985C +_021D94EC: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94F8 + mov r1, #0x19 + b _021D94FA +_021D94F8: + mov r1, #0x1a +_021D94FA: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x50 + str r0, [r4, #0xc] + b _021D985C +_021D950C: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9530 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D953C + cmp r1, #1 + beq _021D9532 + cmp r1, #2 + beq _021D953C +_021D9530: + b _021D985C +_021D9532: + mov r0, #0x52 + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D953C: + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x18] + bl StringSetEmpty + mov r0, #0x3f + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D954E: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D955A + mov r1, #1 + b _021D955C +_021D955A: + mov r1, #2 +_021D955C: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + b _021D985C +_021D956E: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x53 + str r0, [r4, #0xc] + b _021D985C +_021D9586: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x54 + str r0, [r4, #0xc] + b _021D985C +_021D9598: + mov r1, #0x1b + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x55 + str r0, [r4, #0xc] + b _021D985C +_021D95AA: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x56 + str r0, [r4, #0xc] + b _021D985C +_021D95BC: + add r1, r4, #0 + mov r2, #0xa + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x57 + str r0, [r4, #0xc] + b _021D985C +_021D95D4: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D95E6: + mov r1, #0x1c + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x59 + str r0, [r4, #0xc] + b _021D985C +_021D95F8: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9616 + mov r0, #0x5a + str r0, [r4, #0xc] + b _021D985C +_021D960A: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D9618 +_021D9616: + b _021D985C +_021D9618: + ldr r0, [r4, #0x48] + cmp r0, #5 + bhi _021D971A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D962A: ; jump table + .short _021D985C - _021D962A - 2 ; case 0 + .short _021D9636 - _021D962A - 2 ; case 1 + .short _021D963C - _021D962A - 2 ; case 2 + .short _021D963C - _021D962A - 2 ; case 3 + .short _021D963C - _021D962A - 2 ; case 4 + .short _021D963C - _021D962A - 2 ; case 5 +_021D9636: + mov r0, #0x5c + str r0, [r4, #0xc] + b _021D985C +_021D963C: + ldr r1, _021D977C ; =gGameVersion + ldrb r1, [r1] + cmp r1, #0xa + bne _021D964C + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9780 ; =0x021D9F40 + b _021D9652 +_021D964C: + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9784 ; =0x021D9F68 +_021D9652: + ldr r1, [r0, r1] + ldr r0, [r4, #0x4c] + bl NewString_ReadMsgData + add r6, r0, #0 + ldr r0, [r4, #0x74] + add r1, r6, #0 + ldr r0, [r0, #0x18] + bl StringCopy + add r0, r6, #0 + bl String_dtor + mov r0, #0x5b + str r0, [r4, #0xc] + b _021D985C +_021D9672: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D9684: + ldr r0, _021D9778 ; =UNK_020FA5FC + ldr r1, [r4, #0x74] + ldr r2, [r4] + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x5d + str r0, [r4, #0xc] + b _021D985C +_021D9696: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x5e + str r0, [r4, #0xc] + b _021D985C +_021D96DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D96EC: + mov r1, #0x1d + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D971A + mov r0, #0x60 + str r0, [r4, #0xc] + b _021D985C +_021D96FE: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D971A + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D972A + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D972A +_021D971A: + b _021D985C +_021D971C: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x61 + str r0, [r4, #0xc] + b _021D985C +_021D972A: + ldr r0, [r4, #0x74] + ldr r0, [r0, #0x18] + bl StringSetEmpty + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D9738: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D9746 + b _021D985C +_021D9746: + mov r0, #0x62 + str r0, [r4, #0xc] + b _021D985C +_021D974C: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x63 + str r0, [r4, #0xc] + b _021D985C +_021D9764: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + mov r0, #0x64 + str r0, [r4, #0xc] + b _021D985C + nop +_021D9778: .word UNK_020FA5FC +_021D977C: .word gGameVersion +_021D9780: .word MOD59_021D9F40 +_021D9784: .word MOD59_021D9F68 +_021D9788: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x65 + str r0, [r4, #0xc] + b _021D985C +_021D9798: + mov r1, #0x1e + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D985C + add r0, r5, #0 + mov r1, #0x32 + bl FUN_020053CC + mov r0, #0x66 + str r0, [r4, #0xc] + b _021D985C +_021D97B2: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x67 + str r0, [r4, #0xc] + b _021D985C +_021D97CC: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x68 + str r0, [r4, #0xc] + b _021D985C +_021D97DC: + add r1, r4, #0 + add r1, #0x84 + ldr r1, [r1] + cmp r1, #0 + bne _021D97FA + add r1, r4, #0 + mov r2, #2 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + b _021D980C +_021D97FA: + add r1, r4, #0 + mov r2, #6 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 +_021D980C: + mov r0, #0x69 + str r0, [r4, #0xc] + b _021D985C +_021D9812: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + add r0, r4, #0 + bl MOD59_021D8624 + mov r0, #0x6a + str r0, [r4, #0xc] + b _021D985C +_021D982A: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x6b + str r0, [r4, #0xc] + b _021D985C +_021D983A: + bl MOD59_021D8634 + cmp r0, #1 + bne _021D985C + mov r0, #0x6c + str r0, [r4, #0xc] + b _021D985C +_021D9848: + ldr r0, _021D9864 ; =0x021D9DDC + ldr r2, [r4] + add r1, r5, #0 + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x6d + str r0, [r4, #0xc] + b _021D985C +_021D985A: + mov r5, #1 +_021D985C: + add r0, r5, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_021D9864: .word MOD59_021D9DDC + thumb_func_end MOD59_021D8920 + + .rodata + + .global MOD59_021D9D90 +MOD59_021D9D90: ; 0x021D9D90 + .byte 0x00, 0x08, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01, 0x00, 0x04, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01 + + .global MOD59_021D9DA0 +MOD59_021D9DA0: ; 0x021D9DA0 + .byte 0x00, 0x02, 0x03, 0x0E, 0x0A, 0x05, 0xE1, 0x02 + + .global MOD59_021D9DA8 +MOD59_021D9DA8: ; 0x021D9DA8 + .byte 0x00, 0x02, 0x03, 0x06, 0x04, 0x05, 0x55, 0x03 + + .global MOD59_021D9DB0 +MOD59_021D9DB0: ; 0x021D9DB0 + .byte 0x00, 0x01, 0x03, 0x10, 0x06, 0x05, 0x0D, 0x03 + + .global MOD59_021D9DB8 +MOD59_021D9DB8: ; 0x021D9DB8 + .byte 0x00, 0x02, 0x13, 0x1B, 0x04, 0x06, 0x6D, 0x03 + + .global MOD59_021D9DC0 +MOD59_021D9DC0: ; 0x021D9DC0 + .byte 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 + + .global MOD59_021D9DCC +MOD59_021D9DCC: ; 0x021D9DCC + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9DDC +MOD59_021D9DDC: ; 0x021D9DDC + .word MOD59_021D9868, MOD59_021D9898, MOD59_021D99F8, 0xFFFFFFFF + + .global MOD59_021D9DEC +MOD59_021D9DEC: ; 0x021D9DEC + .byte 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + + .global MOD59_021D9DFC +MOD59_021D9DFC: ; 0x021D9DFC + .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + + .global MOD59_021D9E0C +MOD59_021D9E0C: ; 0x021D9E0C + .byte 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global MOD59_021D9E1C +MOD59_021D9E1C: ; 0x021D9E1C + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00 + + .global MOD59_021D9E30 +MOD59_021D9E30: ; 0x021D9E30 + .byte 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 + .byte 0x1D, 0x00, 0x00, 0x00 + + .global MOD59_021D9E44 +MOD59_021D9E44: ; 0x021D9E44 + .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0C, 0x08, 0x00, 0x00 + + .global MOD59_021D9E58 +MOD59_021D9E58: ; 0x021D9E58 + .byte 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global MOD59_021D9E70 +MOD59_021D9E70: ; 0x021D9E70 + .byte 0x0D, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00 + .byte 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 + + .global MOD59_021D9E88 +MOD59_021D9E88: ; 0x021D9E88 + .byte 0x08, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 + .byte 0x2B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 + + .global MOD59_021D9EA0 +MOD59_021D9EA0: ; 0x021D9EA0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9EBC +MOD59_021D9EBC: ; 0x021D9EBC + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9ED8 +MOD59_021D9ED8: ; 0x021D9ED8 + .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A + .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A + + .global MOD59_021D9EF8 +MOD59_021D9EF8: ; 0x021D9EF8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9F18 +MOD59_021D9F18: ; 0x021D9F18 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9F40 +MOD59_021D9F40: ; 0x021D9F40 + .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x28, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + + .global MOD59_021D9F68 +MOD59_021D9F68: ; 0x021D9F68 + .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x2C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + + .global MOD59_021D9F90 +MOD59_021D9F90: ; 0x021D9F90 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 + .byte 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 + + .global MOD59_021D9FE8 +MOD59_021D9FE8: ; 0x021D9FE8 + .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x40, 0x41, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D + .byte 0x0E, 0x0F, 0x42, 0x43, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x44, 0x45, 0x18, 0x19 + .byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x46, 0x47, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 + .byte 0x48, 0x49, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x4A, 0x4B, 0x30, 0x31, 0x32, 0x33 + .byte 0x34, 0x35, 0x36, 0x37, 0x4C, 0x4D, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x4E, 0x4F + .byte 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5A, 0x5B, 0x60, 0x61, 0x54, 0x55, 0x56, 0x57, 0x5C, 0x5D + .byte 0x5E, 0x5F, 0x62, 0x63 diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s new file mode 100644 index 00000000..4e03cbe3 --- /dev/null +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -0,0 +1,666 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD59_021D9868 +MOD59_021D9868: ; 0x021D9868 + push {r4, lr} + mov r2, #1 + add r4, r0, #0 + mov r0, #3 + mov r1, #0x53 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r4, #0 + mov r1, #0x28 + mov r2, #0x53 + bl OverlayManager_CreateAndGetData + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl memset + mov r0, #0x53 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD59_021D9868 + + thumb_func_start MOD59_021D9898 +MOD59_021D9898: ; 0x021D9898 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl OverlayManager_GetData + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D98AE + b _021D99E2 +_021D98AE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D98BA: ; jump table + .short _021D98C6 - _021D98BA - 2 ; case 0 + .short _021D992C - _021D98BA - 2 ; case 1 + .short _021D9952 - _021D98BA - 2 ; case 2 + .short _021D997C - _021D98BA - 2 ; case 3 + .short _021D998E - _021D98BA - 2 ; case 4 + .short _021D99C0 - _021D98BA - 2 ; case 5 +_021D98C6: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D99E8 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D99EC ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D9A20 + add r0, r4, #0 + bl MOD59_021D9C48 + ldr r0, _021D99F0 ; =MOD59_021D9A14 + add r1, r4, #0 + bl Main_SetVBlankIntrCB + bl FUN_0201E788 + mov r0, #0x3c + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r5] + b _021D99E2 +_021D992C: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9938 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D9938: + ldr r0, _021D99F4 ; =0x00000406 + bl FUN_0200414C + ldr r1, _021D99F4 ; =0x00000406 + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + mov r0, #0x5a + str r0, [r4, #0x24] + mov r0, #2 + str r0, [r5] + b _021D99E2 +_021D9952: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D995E + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D995E: + str r6, [r4, #0x24] + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D99E2 +_021D997C: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + mov r0, #4 + str r0, [r5] + b _021D99E2 +_021D998E: + bl MOD59_021D9D78 + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x28 + mov r3, #0x30 + bl MOD59_021D9C74 + cmp r0, #1 + bne _021D99E2 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _021D99E2 +_021D99C0: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + add r0, r4, #0 + bl MOD59_021D9C68 + add r0, r4, #0 + bl MOD59_021D9BD0 + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + mov r6, #1 +_021D99E2: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D99E8: .word 0xFFFFE0FF +_021D99EC: .word 0x04001000 +_021D99F0: .word MOD59_021D9A14 +_021D99F4: .word 0x00000406 + thumb_func_end MOD59_021D9898 + + thumb_func_start MOD59_021D99F8 +MOD59_021D99F8: ; 0x021D99F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl OverlayManager_GetData + ldr r4, [r0] + add r0, r5, #0 + bl OverlayManager_FreeData + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D99F8 + + thumb_func_start MOD59_021D9A14 +MOD59_021D9A14: ; 0x021D9A14 + ldr r3, _021D9A1C ; =FUN_0201AB60 + ldr r0, [r0, #4] + bx r3 + nop +_021D9A1C: .word FUN_0201AB60 + thumb_func_end MOD59_021D9A14 + + thumb_func_start MOD59_021D9A20 +MOD59_021D9A20: ; 0x021D9A20 + push {r3, r4, r5, lr} + sub sp, #0xb8 + ldr r5, _021D9BB4 ; =0x021DA0D4 + add r4, r0, #0 + add r3, sp, #0x90 + mov r2, #5 +_021D9A2C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D9A2C + add r0, sp, #0x90 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x80 + ldr r5, _021D9BB8 ; =0x021DA054 + str r0, [r4, #4] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D9BBC ; =0x021DA080 + add r3, sp, #0x64 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r3, [r4] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D9BC0 ; =0x021DA09C + add r3, sp, #0x48 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #4] + add r3, r1, #0 + bl FUN_02016C18 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_020068C8 + ldr r5, _021D9BC4 ; =0x021DA064 + add r3, sp, #0x2c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #2 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #5 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_020068C8 + ldr r5, _021D9BC8 ; =0x021DA0B8 + add r3, sp, #0x10 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + add r3, r1, #0 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4] + mov r1, #6 + str r0, [sp, #4] + mov r0, #0x88 + add r3, r2, #0 + bl FUN_02006930 + ldr r2, [r4] + mov r0, #0 + mov r1, #0x20 + bl FUN_02002ED0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r2, #0xc + ldr r0, _021D9BCC ; =0x04000050 + mov r1, #2 + mov r3, #4 + str r2, [sp] + bl G2x_SetBlendAlpha_ + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D9BB4: .word MOD59_021DA0D4 +_021D9BB8: .word MOD59_021DA054 +_021D9BBC: .word MOD59_021DA080 +_021D9BC0: .word MOD59_021DA09C +_021D9BC4: .word MOD59_021DA064 +_021D9BC8: .word MOD59_021DA0B8 +_021D9BCC: .word 0x04000050 + thumb_func_end MOD59_021D9A20 + + thumb_func_start MOD59_021D9BD0 +MOD59_021D9BD0: ; 0x021D9BD0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, _021D9C44 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FreeToHeap + pop {r4, pc} + nop +_021D9C44: .word 0x04000050 + thumb_func_end MOD59_021D9BD0 + + thumb_func_start MOD59_021D9C48 +MOD59_021D9C48: ; 0x021D9C48 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D9C64 ; =0x00000225 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl NewMsgDataFromNarc + str r0, [r4, #8] + bl FUN_0201BD5C + mov r0, #0 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 +_021D9C64: .word 0x00000225 + thumb_func_end MOD59_021D9C48 + + thumb_func_start MOD59_021D9C68 +MOD59_021D9C68: ; 0x021D9C68 + ldr r3, _021D9C70 ; =DestroyMsgData + ldr r0, [r0, #8] + bx r3 + nop +_021D9C70: .word DestroyMsgData + thumb_func_end MOD59_021D9C68 + + thumb_func_start MOD59_021D9C74 +MOD59_021D9C74: ; 0x021D9C74 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0xc] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r5, #0 + cmp r0, #3 + bhi _021D9D66 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9C92: ; jump table + .short _021D9C9A - _021D9C92 - 2 ; case 0 + .short _021D9D24 - _021D9C92 - 2 ; case 1 + .short _021D9D36 - _021D9C92 - 2 ; case 2 + .short _021D9D50 - _021D9C92 - 2 ; case 3 +_021D9C9A: + mov r0, #2 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl String_ctor + add r6, r0, #0 + ldr r0, [r4, #8] + ldr r1, [sp, #0x10] + add r2, r6, #0 + bl ReadMsgDataIntoString + add r1, r4, #0 + ldr r0, [r4, #4] + ldr r2, _021D9D6C ; =0x021DA04C + add r1, #0x10 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + add r1, r5, #0 + ldr r0, _021D9D70 ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + add r2, r6, #0 + str r1, [sp, #0xc] + bl AddTextPrinterParameterized2 + add r0, r6, #0 + bl String_dtor + add r0, r4, #0 + add r0, #0x10 + bl FUN_020191D0 + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + mov r0, #0xf0 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D24: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9D30 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D9D66 +_021D9D30: + mov r0, #2 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D36: + ldr r0, _021D9D74 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D9D4A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D9D66 +_021D9D4A: + mov r0, #3 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D50: + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0xc] + mov r5, #1 +_021D9D66: + add r0, r5, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9D6C: .word MOD59_021DA04C +_021D9D70: .word 0x000F0200 +_021D9D74: .word gMain + thumb_func_end MOD59_021D9C74 + + thumb_func_start MOD59_021D9D78 +MOD59_021D9D78: ; 0x021D9D78 + push {r3, lr} + ldr r1, [r0, #0x20] + mov r2, #3 + add r3, r1, #4 + str r3, [r0, #0x20] + ldr r0, [r0, #4] + mov r1, #1 + asr r3, r3, #4 + bl FUN_020179E0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD59_021D9D78 + + .rodata + + .global MOD59_021DA04C +MOD59_021DA04C: ; 0x021DA04C + .byte 0x02, 0x00, 0x00, 0x20, 0x18, 0x01, 0x01, 0x00 + + .global MOD59_021DA054 +MOD59_021DA054: ; 0x021DA054 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021DA064 +MOD59_021DA064: ; 0x021DA064 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021DA080 +MOD59_021DA080: ; 0x021DA080 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021DA09C +MOD59_021DA09C: ; 0x021DA09C + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021DA0B8 +MOD59_021DA0B8: ; 0x021DA0B8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x01, 0x03, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021DA0D4 +MOD59_021DA0D4: ; 0x021DA0D4 + .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/module_59.s deleted file mode 100644 index 9182c632..00000000 --- a/arm9/modules/59/asm/module_59.s +++ /dev/null @@ -1,5207 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD59_021D74E0 -MOD59_021D74E0: ; 0x021D74E0 - push {r3, r4, r5, lr} - mov r2, #1 - add r5, r0, #0 - mov r0, #3 - mov r1, #0x52 - lsl r2, r2, #0x12 - bl FUN_0201681C - add r0, r5, #0 - mov r1, #0xb4 - mov r2, #0x52 - bl OverlayManager_CreateAndGetData - mov r1, #0 - mov r2, #0xb4 - add r4, r0, #0 - bl memset - mov r0, #0x52 - str r0, [r4] - add r0, r5, #0 - bl OverlayManager_GetField18 - ldr r0, [r0, #8] - str r0, [r4, #4] - bl Sav2_PlayerData_GetOptionsAddr - mov r1, #0 - str r0, [r4, #8] - str r1, [r4, #0xc] - str r1, [r4, #0x10] - str r1, [r4, #0x14] - ldr r0, [r4, #8] - add r2, r1, #0 - str r0, [sp] - mov r0, #0x52 - mov r3, #7 - bl FUN_02077A84 - str r0, [r4, #0x70] - ldr r0, [r4, #8] - mov r1, #3 - str r0, [sp] - mov r0, #0x52 - mov r2, #0 - mov r3, #7 - bl FUN_02077A84 - str r0, [r4, #0x74] - add r0, r4, #0 - mov r1, #0 - add r0, #0x88 - strb r1, [r0] - add r0, r4, #0 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8b - strb r1, [r0] - add r4, #0x90 - str r1, [r4] - mov r0, #1 - pop {r3, r4, r5, pc} - thumb_func_end MOD59_021D74E0 - - thumb_func_start MOD59_021D7564 -MOD59_021D7564: ; 0x021D7564 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - bl OverlayManager_GetData - ldr r1, [r5] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bls _021D757A - b _021D76AC -_021D757A: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D7586: ; jump table - .short _021D7592 - _021D7586 - 2 ; case 0 - .short _021D75FA - _021D7586 - 2 ; case 1 - .short _021D7642 - _021D7586 - 2 ; case 2 - .short _021D7668 - _021D7586 - 2 ; case 3 - .short _021D7690 - _021D7586 - 2 ; case 4 - .short _021D76AA - _021D7586 - 2 ; case 5 -_021D7592: - add r0, r6, #0 - add r1, r6, #0 - bl FUN_0200E3A0 - mov r0, #1 - add r1, r6, #0 - bl FUN_0200E3A0 - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - add r0, r6, #0 - add r1, r0, #0 - bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021D76B4 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2] - ldr r2, _021D76B8 ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - mov r0, #4 - mov r1, #8 - bl FUN_0201669C - add r0, r4, #0 - bl MOD59_021D778C - add r0, r4, #0 - bl MOD59_021D79F8 - add r0, r4, #0 - bl MOD59_021D7A4C - ldr r0, _021D76BC ; =MOD59_021D7724 - add r1, r4, #0 - bl Main_SetVBlankIntrCB - bl FUN_0201E788 - mov r0, #1 - str r0, [r5] - b _021D76AC -_021D75FA: - bl MOD59_021D8920 - cmp r0, #1 - bne _021D761E - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #2 - str r0, [r5] -_021D761E: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _021D76AC - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #3 - str r0, [r5] - b _021D76AC -_021D7642: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r6, #1 - b _021D76AC -_021D7668: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r0, #4 - str r0, [r5] - b _021D76AC -_021D7690: - ldr r0, [r4, #0x14] - bl OverlayManager_Run - cmp r0, #1 - bne _021D76AC - ldr r0, [r4, #0x14] - bl OverlayManager_delete - add r0, r6, #0 - str r0, [r4, #0x14] - mov r0, #5 - str r0, [r5] - b _021D76AC -_021D76AA: - str r6, [r5] -_021D76AC: - add r0, r6, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D76B4: .word 0xFFFFE0FF -_021D76B8: .word 0x04001000 -_021D76BC: .word MOD59_021D7724 - thumb_func_end MOD59_021D7564 - - thumb_func_start MOD59_021D76C0 -MOD59_021D76C0: ; 0x021D76C0 - push {r4, r5, r6, lr} - add r6, r0, #0 - bl OverlayManager_GetData - add r4, r0, #0 - ldr r0, [r4, #4] - ldr r5, [r4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #0x18] - bl PlayerName_StringToFlat - ldr r0, [r4, #4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #4] - bl PlayerProfile_SetTrainerGender - ldr r0, [r4, #4] - bl FUN_02024EB4 - ldr r1, [r4, #0x74] - ldr r1, [r1, #0x18] - bl FUN_02024EF4 - ldr r0, [r4, #0x70] - bl FUN_02077AC4 - ldr r0, [r4, #0x74] - bl FUN_02077AC4 - add r0, r6, #0 - bl OverlayManager_FreeData - add r0, r5, #0 - bl FUN_020168D0 - ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID - ldr r1, _021D7720 ; =MOD52_021D76D8 - bl RegisterMainOverlay - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D771C: .word SDK_OVERLAY_MODULE_52_ID -_021D7720: .word MOD52_021D76D8 - thumb_func_end MOD59_021D76C0 - - thumb_func_start MOD59_021D7724 -MOD59_021D7724: ; 0x021D7724 - ldr r3, _021D772C ; =FUN_0201AB60 - ldr r0, [r0, #0x18] - bx r3 - nop -_021D772C: .word FUN_0201AB60 - thumb_func_end MOD59_021D7724 - - thumb_func_start MOD59_021D7730 -MOD59_021D7730: ; 0x021D7730 - push {r3, r4} - ldr r2, _021D7788 ; =gMain + 0x40 - mov r0, #0 - ldrh r1, [r2, #0x20] - cmp r1, #0 - beq _021D7784 - ldrh r3, [r2, #0x1c] - mov r1, #1 - lsl r1, r1, #8 - cmp r3, r1 - bhs _021D7784 - ldrh r2, [r2, #0x1e] - cmp r2, #0xc0 - bhs _021D7784 - cmp r3, #0x80 - bhs _021D7758 - mov r1, #0x80 - sub r1, r1, r3 - lsl r1, r1, #0x10 - b _021D775C -_021D7758: - sub r3, #0x80 - lsl r1, r3, #0x10 -_021D775C: - lsr r3, r1, #0x10 - cmp r2, #0x64 - bhs _021D776A - mov r1, #0x64 - sub r1, r1, r2 - lsl r1, r1, #0x10 - b _021D776E -_021D776A: - sub r2, #0x64 - lsl r1, r2, #0x10 -_021D776E: - lsr r4, r1, #0x10 - add r2, r3, #0 - add r1, r4, #0 - mul r2, r3 - mul r1, r4 - add r2, r2, r1 - mov r1, #1 - lsl r1, r1, #8 - cmp r2, r1 - bgt _021D7784 - mov r0, #1 -_021D7784: - pop {r3, r4} - bx lr - .align 2, 0 -_021D7788: .word gMain + 0x40 - thumb_func_end MOD59_021D7730 - - thumb_func_start MOD59_021D778C -MOD59_021D778C: ; 0x021D778C - push {r3, r4, r5, lr} - sub sp, #0x78 - ldr r5, _021D7954 ; =0x021D9F18 - add r4, r0, #0 - add r3, sp, #0x50 - mov r2, #5 -_021D7798: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D7798 - add r0, sp, #0x50 - bl FUN_0201E66C - ldr r0, [r4] - bl FUN_02016B94 - add r3, sp, #0x40 - ldr r5, _021D7958 ; =0x021D9DCC - str r0, [r4, #0x18] - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl FUN_02016BBC - ldr r5, _021D795C ; =0x021D9EA0 - add r3, sp, #0x24 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0 - str r0, [r3] - mov r0, #0xf - strb r0, [r2, #0x12] - mov r0, #6 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_02018744 - mov r0, #0xe - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r0, #5 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r1, #1 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_02018744 - mov r0, #0xd - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r0, #4 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r1, #2 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02018744 - mov r0, #0xc - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r1, #3 - strb r1, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #3 - bl FUN_02018744 - mov r1, #0 - str r1, [sp] - ldr r0, [r4] - ldr r2, _021D7960 ; =0x000003E2 - str r0, [sp, #4] - ldr r0, [r4, #0x18] - mov r3, #4 - bl FUN_0200CD68 - mov r1, #0 - str r1, [sp] - ldr r0, [r4] - ldr r2, _021D7964 ; =0x000003D9 - str r0, [sp, #4] - ldr r0, [r4, #0x18] - mov r3, #3 - bl FUN_0200CB00 - ldr r2, [r4] - mov r0, #0 - mov r1, #0xa0 - bl FUN_02002ED0 - ldr r2, [r4] - mov r0, #0 - mov r1, #0xc0 - bl FUN_02002EEC - ldr r5, _021D7968 ; =0x021D9EBC - add r3, sp, #8 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0xf - str r0, [r3] - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #6 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #4 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #4 - bl FUN_02018744 - mov r1, #0xe - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #5 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_02018744 - mov r1, #0xd - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #4 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #6 - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #6 - bl FUN_02018744 - mov r1, #0xc - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #3 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #7 - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #7 - bl FUN_02018744 - mov r0, #0 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #1 - mov r1, #0 - bl FUN_0201797C - mov r0, #2 - mov r1, #0 - bl FUN_0201797C - mov r0, #3 - mov r1, #0 - bl FUN_0201797C - mov r0, #4 - mov r1, #0 - bl FUN_0201797C - mov r0, #5 - mov r1, #0 - bl FUN_0201797C - mov r0, #6 - mov r1, #0 - bl FUN_0201797C - mov r0, #7 - mov r1, #0 - bl FUN_0201797C - add r0, r4, #0 - bl MOD59_021D8058 - mov r0, #0 - str r0, [r4, #0x78] - add sp, #0x78 - pop {r3, r4, r5, pc} - .align 2, 0 -_021D7954: .word MOD59_021D9F18 -_021D7958: .word MOD59_021D9DCC -_021D795C: .word MOD59_021D9EA0 -_021D7960: .word 0x000003E2 -_021D7964: .word 0x000003D9 -_021D7968: .word MOD59_021D9EBC - thumb_func_end MOD59_021D778C - - thumb_func_start MOD59_021D796C -MOD59_021D796C: ; 0x021D796C - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #1 - mov r1, #0 - bl FUN_0201797C - mov r0, #2 - mov r1, #0 - bl FUN_0201797C - mov r0, #3 - mov r1, #0 - bl FUN_0201797C - mov r0, #4 - mov r1, #0 - bl FUN_0201797C - mov r0, #5 - mov r1, #0 - bl FUN_0201797C - mov r0, #6 - mov r1, #0 - bl FUN_0201797C - mov r0, #7 - mov r1, #0 - bl FUN_0201797C - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #3 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #4 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #6 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #7 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD59_021D796C - - thumb_func_start MOD59_021D79F8 -MOD59_021D79F8: ; 0x021D79F8 - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D7A30 ; =0x00000155 - ldr r3, [r4] - mov r0, #1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [r4, #0x4c] - bl FUN_0201BD5C - mov r0, #0 - ldr r3, [r4] - add r1, r0, #0 - mov r2, #6 - bl FUN_020142EC - str r0, [r4, #0x60] - ldr r0, [r4] - bl ScrStrBufs_new - str r0, [r4, #0x64] - mov r0, #0 - str r0, [r4, #0x50] - str r0, [r4, #0x54] - str r0, [r4, #0x2c] - pop {r4, pc} - nop -_021D7A30: .word 0x00000155 - thumb_func_end MOD59_021D79F8 - - thumb_func_start MOD59_021D7A34 -MOD59_021D7A34: ; 0x021D7A34 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x64] - bl ScrStrBufs_delete - ldr r0, [r4, #0x60] - bl FUN_020143D0 - ldr r0, [r4, #0x4c] - bl DestroyMsgData - pop {r4, pc} - thumb_func_end MOD59_021D7A34 - - thumb_func_start MOD59_021D7A4C -MOD59_021D7A4C: ; 0x021D7A4C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - bl FUN_02014590 - str r0, [r4, #0x68] - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD59_021D7A4C - - thumb_func_start MOD59_021D7A5C -MOD59_021D7A5C: ; 0x021D7A5C - ldr r3, _021D7A64 ; =FUN_020145A8 - ldr r0, [r0, #0x68] - bx r3 - nop -_021D7A64: .word FUN_020145A8 - thumb_func_end MOD59_021D7A5C - - thumb_func_start MOD59_021D7A68 -MOD59_021D7A68: ; 0x021D7A68 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r4, r1, #0 - add r3, r0, #0 - add r6, r2, #0 - mov r5, #0 - cmp r4, #6 - bhi _021D7A92 - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7A84: ; jump table - .short _021D7A92 - _021D7A84 - 2 ; case 0 - .short _021D7A98 - _021D7A84 - 2 ; case 1 - .short _021D7A9E - _021D7A84 - 2 ; case 2 - .short _021D7A92 - _021D7A84 - 2 ; case 3 - .short _021D7AA4 - _021D7A84 - 2 ; case 4 - .short _021D7AAA - _021D7A84 - 2 ; case 5 - .short _021D7AB0 - _021D7A84 - 2 ; case 6 -_021D7A92: - mov r1, #1 - mov r0, #0 - b _021D7AB4 -_021D7A98: - mov r1, #2 - add r0, r5, #0 - b _021D7AB4 -_021D7A9E: - mov r1, #4 - add r0, r5, #0 - b _021D7AB4 -_021D7AA4: - mov r1, #1 - add r0, r1, #0 - b _021D7AB4 -_021D7AAA: - mov r1, #2 - mov r0, #1 - b _021D7AB4 -_021D7AB0: - mov r1, #4 - mov r0, #1 -_021D7AB4: - ldr r2, [r3, #0x78] - cmp r2, #3 - bls _021D7ABC - b _021D7BDE -_021D7ABC: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021D7AC8: ; jump table - .short _021D7AD0 - _021D7AC8 - 2 ; case 0 - .short _021D7B2C - _021D7AC8 - 2 ; case 1 - .short _021D7B7C - _021D7AC8 - 2 ; case 2 - .short _021D7BD0 - _021D7AC8 - 2 ; case 3 -_021D7AD0: - cmp r6, #0 - bne _021D7B1A - mov r2, #0 - str r2, [r3, #0x7c] - add r2, r3, #0 - mov r6, #0x10 - add r2, #0x80 - str r6, [r2] - mov r2, #1 - str r2, [r3, #0x78] - cmp r0, #0 - bne _021D7AFC - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7B0E -_021D7AFC: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ -_021D7B0E: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r1, #1 - bl FUN_0201797C - b _021D7BDE -_021D7B1A: - mov r0, #0x10 - str r0, [r3, #0x7c] - add r0, r3, #0 - mov r1, #0 - add r0, #0x80 - str r1, [r0] - mov r0, #2 - str r0, [r3, #0x78] - b _021D7BDE -_021D7B2C: - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - cmp r2, #0 - beq _021D7B76 - ldr r2, [r3, #0x7c] - add r2, r2, #1 - str r2, [r3, #0x7c] - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - sub r4, r2, #1 - add r2, r3, #0 - add r2, #0x80 - str r4, [r2] - cmp r0, #0 - bne _021D7B62 - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7B62: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7B76: - mov r0, #3 - str r0, [r3, #0x78] - b _021D7BDE -_021D7B7C: - ldr r2, [r3, #0x7c] - cmp r2, #0 - beq _021D7BC0 - sub r2, r2, #1 - str r2, [r3, #0x7c] - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - add r4, r2, #1 - add r2, r3, #0 - add r2, #0x80 - str r4, [r2] - cmp r0, #0 - bne _021D7BAC - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7BAC: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7BC0: - mov r0, #3 - str r0, [r3, #0x78] - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r1, #0 - bl FUN_0201797C - b _021D7BDE -_021D7BD0: - ldr r0, _021D7BE4 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r0, _021D7BE8 ; =0x04001050 - mov r5, #1 - strh r1, [r0] - str r1, [r3, #0x78] -_021D7BDE: - add r0, r5, #0 - add sp, #4 - pop {r3, r4, r5, r6, pc} - .align 2, 0 -_021D7BE4: .word 0x04000050 -_021D7BE8: .word 0x04001050 - thumb_func_end MOD59_021D7A68 - - thumb_func_start MOD59_021D7BEC -MOD59_021D7BEC: ; 0x021D7BEC - add r2, r0, #0 - add r2, #0x90 - ldr r2, [r2] - cmp r2, r1 - bge _021D7C06 - add r1, r0, #0 - add r1, #0x90 - ldr r1, [r1] - add r0, #0x90 - add r1, r1, #1 - str r1, [r0] - mov r0, #0 - bx lr -_021D7C06: - mov r1, #0 - add r0, #0x90 - str r1, [r0] - mov r0, #1 - bx lr - thumb_func_end MOD59_021D7BEC - - thumb_func_start MOD59_021D7C10 -MOD59_021D7C10: ; 0x021D7C10 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - lsl r0, r2, #0x18 - add r4, r1, #0 - lsr r0, r0, #0x18 - str r0, [sp, #8] - lsl r1, r4, #0x18 - mov r2, #0 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - add r3, r2, #0 - bl FUN_020186B4 - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - bl FUN_02017CD0 - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end MOD59_021D7C10 - - thumb_func_start MOD59_021D7C44 -MOD59_021D7C44: ; 0x021D7C44 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - mov r4, #0 - cmp r0, #0 - beq _021D7C5E - cmp r0, #1 - beq _021D7D1C - cmp r0, #2 - beq _021D7D36 - b _021D7D54 -_021D7C5E: - add r1, r5, #0 - ldr r0, [r5, #0x18] - ldr r2, _021D7D5C ; =0x021D9DB8 - add r1, #0x1c - bl FUN_02019150 - mov r0, #0xd8 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - add r0, r5, #0 - add r2, r4, #0 - add r0, #0x1c - mov r1, #0xf - add r3, r2, #0 - bl FUN_020196F4 - add r0, r5, #0 - ldr r2, _021D7D60 ; =0x000003E2 - add r0, #0x1c - add r1, r4, #0 - mov r3, #4 - bl FUN_0200D0BC - mov r0, #1 - bl FUN_02002B60 - add r0, r4, #0 - bl FUN_02002B7C - mov r0, #1 - ldr r1, [r5] - lsl r0, r0, #0xa - bl String_ctor - add r6, r0, #0 - mov r0, #1 - ldr r1, [r5] - lsl r0, r0, #0xa - bl String_ctor - str r0, [r5, #0x5c] - ldr r0, [r5, #0x4c] - add r1, r7, #0 - add r2, r6, #0 - bl ReadMsgDataIntoString - mov r0, #1 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r2, [r5, #0x70] - add r3, r5, #0 - add r3, #0x84 - ldr r0, [r5, #0x64] - ldr r2, [r2, #0x18] - ldr r3, [r3] - add r1, r4, #0 - bl BufferString - mov r1, #1 - str r1, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r2, [r5, #0x74] - ldr r0, [r5, #0x64] - ldr r2, [r2, #0x18] - add r3, r4, #0 - bl BufferString - ldr r0, [r5, #0x64] - ldr r1, [r5, #0x5c] - add r2, r6, #0 - bl StringExpandPlaceholders - add r0, r6, #0 - bl String_dtor - ldr r0, [r5, #8] - bl FUN_02024FF4 - add r3, r4, #0 - str r3, [sp] - str r0, [sp, #4] - str r3, [sp, #8] - add r0, r5, #0 - ldr r2, [r5, #0x5c] - add r0, #0x1c - mov r1, #1 - bl AddTextPrinterParameterized - str r0, [r5, #0x58] - mov r0, #1 - str r0, [r5, #0x50] - b _021D7D54 -_021D7D1C: - ldr r0, [r5, #0x58] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021D7D54 - ldr r0, [r5, #0x5c] - bl String_dtor - mov r0, #2 - str r0, [r5, #0x50] - b _021D7D54 -_021D7D36: - cmp r2, #0 - bne _021D7D46 - ldr r0, _021D7D64 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - bne _021D7D54 -_021D7D46: - add r0, r5, #0 - add r0, #0x1c - bl FUN_02019178 - mov r0, #0 - str r0, [r5, #0x50] - mov r4, #1 -_021D7D54: - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021D7D5C: .word MOD59_021D9DB8 -_021D7D60: .word 0x000003E2 -_021D7D64: .word gMain - thumb_func_end MOD59_021D7C44 - - thumb_func_start MOD59_021D7D68 -MOD59_021D7D68: ; 0x021D7D68 - push {r3, lr} - cmp r2, #0 - bne _021D7D74 - ldr r0, _021D7D78 ; =0x000005DC - bl FUN_020054C8 -_021D7D74: - pop {r3, pc} - nop -_021D7D78: .word 0x000005DC - thumb_func_end MOD59_021D7D68 - - thumb_func_start MOD59_021D7D7C -MOD59_021D7D7C: ; 0x021D7D7C - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - mov r0, #0 - str r0, [sp] - ldr r0, [r5, #0x2c] - add r4, r2, #0 - cmp r0, #0 - beq _021D7D94 - cmp r0, #1 - beq _021D7E4C - b _021D7E96 -_021D7D94: - cmp r1, #0 - beq _021D7DA0 - cmp r1, #1 - beq _021D7DA8 - cmp r1, #2 - beq _021D7DB0 -_021D7DA0: - ldr r2, _021D7E9C ; =0x021D9DA8 - ldr r4, _021D7EA0 ; =0x021D9E0C - mov r6, #2 - b _021D7DC4 -_021D7DA8: - ldr r2, _021D7EA4 ; =0x021D9DB0 - ldr r4, _021D7EA8 ; =0x021D9E58 - mov r6, #3 - b _021D7DC4 -_021D7DB0: - ldr r0, _021D7EAC ; =gGameVersion - ldr r2, _021D7EB0 ; =0x021D9DA0 - ldrb r0, [r0] - cmp r0, #0xa - bne _021D7DC0 - ldr r4, _021D7EB4 ; =0x021D9F40 - mov r6, #5 - b _021D7DC4 -_021D7DC0: - ldr r4, _021D7EB8 ; =0x021D9F68 - mov r6, #5 -_021D7DC4: - add r1, r5, #0 - ldr r0, [r5, #0x18] - add r1, #0x30 - bl FUN_02019150 - ldr r1, [r5] - add r0, r6, #0 - bl ListMenu_ctor - mov r7, #0 - str r0, [r5, #0x44] - cmp r6, #0 - ble _021D7DF2 -_021D7DDE: - ldr r0, [r5, #0x44] - ldr r1, [r5, #0x4c] - ldr r2, [r4] - ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData - add r7, r7, #1 - add r4, #8 - cmp r7, r6 - blt _021D7DDE -_021D7DF2: - ldr r4, _021D7EBC ; =0x021D9EF8 - add r3, sp, #4 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0x44] - str r0, [sp, #4] - lsl r0, r6, #0x10 - lsr r1, r0, #0x10 - add r0, sp, #4 - strh r1, [r0, #0x10] - strh r1, [r0, #0x12] - ldr r0, _021D7EC0 ; =MOD59_021D7D68 - mov r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x30 - str r0, [sp, #0x10] - ldr r3, [r5] - add r0, r2, #0 - lsl r3, r3, #0x18 - add r2, r1, #0 - lsr r3, r3, #0x18 - bl FUN_020010A8 - str r0, [r5, #0x40] - ldr r0, [sp, #0x10] - ldr r2, _021D7EC4 ; =0x000003D9 - mov r1, #1 - mov r3, #3 - bl FUN_0200CCA4 - add r0, r5, #0 - add r0, #0x30 - bl FUN_020191D0 - mov r0, #1 - str r0, [r5, #0x2c] - b _021D7E96 -_021D7E4C: - ldr r0, [r5, #0x40] - bl FUN_02001204 - mov r1, #0 - mvn r1, r1 - str r0, [r5, #0x48] - cmp r0, r1 - beq _021D7E96 - sub r1, r1, #1 - cmp r0, r1 - bne _021D7E66 - cmp r4, #1 - beq _021D7E96 -_021D7E66: - add r0, r5, #0 - add r0, #0x30 - mov r1, #0 - bl FUN_0200CCF8 - add r0, r5, #0 - add r0, #0x30 - bl FUN_02019178 - mov r1, #0 - ldr r0, [r5, #0x40] - add r2, r1, #0 - bl FUN_02001300 - ldr r0, [r5, #0x44] - bl ListMenu_dtor - ldr r0, _021D7EC8 ; =0x000005DC - bl FUN_020054C8 - mov r0, #0 - str r0, [r5, #0x2c] - mov r0, #1 - str r0, [sp] -_021D7E96: - ldr r0, [sp] - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_021D7E9C: .word MOD59_021D9DA8 -_021D7EA0: .word MOD59_021D9E0C -_021D7EA4: .word MOD59_021D9DB0 -_021D7EA8: .word MOD59_021D9E58 -_021D7EAC: .word gGameVersion -_021D7EB0: .word MOD59_021D9DA0 -_021D7EB4: .word MOD59_021D9F40 -_021D7EB8: .word MOD59_021D9F68 -_021D7EBC: .word MOD59_021D9EF8 -_021D7EC0: .word MOD59_021D7D68 -_021D7EC4: .word 0x000003D9 -_021D7EC8: .word 0x000005DC - thumb_func_end MOD59_021D7D7C - - thumb_func_start MOD59_021D7ECC -MOD59_021D7ECC: ; 0x021D7ECC - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r4, r0, #0 - str r1, [sp, #0x10] - ldr r1, [r4, #0x54] - add r6, r2, #0 - add r7, r3, #0 - mov r5, #0 - cmp r1, #5 - bls _021D7EE2 - b _021D803C -_021D7EE2: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D7EEE: ; jump table - .short _021D7EFA - _021D7EEE - 2 ; case 0 - .short _021D7FD8 - _021D7EEE - 2 ; case 1 - .short _021D7FE4 - _021D7EEE - 2 ; case 2 - .short _021D7FF6 - _021D7EEE - 2 ; case 3 - .short _021D8016 - _021D7EEE - 2 ; case 4 - .short _021D8028 - _021D7EEE - 2 ; case 5 -_021D7EFA: - add r0, r5, #0 - add r1, r5, #0 - bl FUN_0201797C - mov r0, #1 - ldr r1, [r4] - lsl r0, r0, #0xa - bl String_ctor - str r0, [r4, #0x5c] - ldr r0, [r4, #0x4c] - ldr r1, [sp, #0x10] - ldr r2, [r4, #0x5c] - bl ReadMsgDataIntoString - cmp r6, #1 - add r0, sp, #0x14 - bne _021D7F7C - ldr r1, _021D8044 ; =0x021D9D90 - ldrh r2, [r1, #8] - strh r2, [r0] - ldrh r2, [r1, #0xa] - strh r2, [r0, #2] - ldrh r2, [r1, #0xc] - ldrh r1, [r1, #0xe] - strh r2, [r0, #4] - strh r1, [r0, #6] - ldr r0, [r4, #0x5c] - bl FUN_02002F90 - mov r1, #0xc - sub r2, r1, r0 - add r1, sp, #0x14 - strb r2, [r1, #2] - lsl r0, r0, #1 - strb r0, [r1, #4] - add r1, r4, #0 - ldr r0, [r4, #0x18] - add r1, #0x1c - add r2, sp, #0x14 - bl FUN_02019150 - add r1, r5, #0 - mov r0, #0xc0 - str r0, [sp] - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x1c - add r2, r1, #0 - add r3, r1, #0 - bl FUN_020196F4 - add r1, r5, #0 - str r1, [sp] - ldr r0, _021D8048 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, r4, #0 - ldr r2, [r4, #0x5c] - add r0, #0x1c - add r3, r1, #0 - bl AddTextPrinterParameterized2 - b _021D7FCC -_021D7F7C: - ldr r1, _021D8044 ; =0x021D9D90 - add r2, sp, #0x14 - ldrh r3, [r1] - strh r3, [r0] - ldrh r3, [r1, #2] - strh r3, [r0, #2] - ldrh r3, [r1, #4] - ldrh r1, [r1, #6] - strh r3, [r0, #4] - strh r1, [r0, #6] - ldr r1, [sp, #0x30] - strb r7, [r0, #2] - strb r1, [r0, #4] - add r1, r4, #0 - ldr r0, [r4, #0x18] - add r1, #0x1c - bl FUN_02019150 - add r1, r5, #0 - mov r0, #0xc0 - str r0, [sp] - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x1c - add r2, r1, #0 - add r3, r1, #0 - bl FUN_020196F4 - add r1, r5, #0 - str r1, [sp] - ldr r0, _021D804C ; =0x000F0200 - str r1, [sp, #4] - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, r4, #0 - ldr r2, [r4, #0x5c] - add r0, #0x1c - add r3, r1, #0 - bl AddTextPrinterParameterized2 -_021D7FCC: - ldr r0, [r4, #0x5c] - bl String_dtor - mov r0, #1 - str r0, [r4, #0x54] - b _021D803C -_021D7FD8: - add r0, #0x1c - bl FUN_020191D0 - mov r0, #2 - str r0, [r4, #0x54] - b _021D803C -_021D7FE4: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D803C - mov r0, #3 - str r0, [r4, #0x54] - b _021D803C -_021D7FF6: - ldr r0, _021D8050 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D800A - mov r0, #2 - and r0, r1 - cmp r0, #2 - bne _021D803C -_021D800A: - ldr r0, _021D8054 ; =0x000005DC - bl FUN_020054C8 - mov r0, #4 - str r0, [r4, #0x54] - b _021D803C -_021D8016: - add r1, r5, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D803C - mov r0, #5 - str r0, [r4, #0x54] - b _021D803C -_021D8028: - add r0, #0x1c - bl FUN_02019178 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - add r0, r5, #0 - str r0, [r4, #0x54] - mov r5, #1 -_021D803C: - add r0, r5, #0 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_021D8044: .word MOD59_021D9D90 -_021D8048: .word 0x00010200 -_021D804C: .word 0x000F0200 -_021D8050: .word gMain -_021D8054: .word 0x000005DC - thumb_func_end MOD59_021D7ECC - - thumb_func_start MOD59_021D8058 -MOD59_021D8058: ; 0x021D8058 - push {r3, r4, r5, lr} - sub sp, #0x10 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - add r5, r0, #0 - str r1, [sp, #8] - ldr r0, [r5] - mov r3, #3 - str r0, [sp, #0xc] - ldr r2, [r5, #0x18] - mov r0, #0x7d - bl FUN_0200687C - mov r0, #0 - ldr r3, [r5] - mov r1, #0x20 - add r2, r0, #0 - bl FUN_02017F18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5] - mov r1, #0x17 - str r0, [sp, #0xc] - ldr r2, [r5, #0x18] - mov r0, #0x7d - mov r3, #7 - bl FUN_0200687C - ldr r0, _021D80F8 ; =gGameVersion - ldrb r0, [r0] - cmp r0, #0xa - bne _021D80A6 - mov r1, #1 - mov r4, #0x18 - b _021D80AA -_021D80A6: - mov r1, #2 - mov r4, #0x19 -_021D80AA: - mov r0, #0x60 - str r0, [sp] - ldr r0, [r5] - mov r2, #0 - str r0, [sp, #4] - mov r0, #0x7d - add r3, r2, #0 - bl FUN_02006930 - mov r0, #0xa0 - str r0, [sp] - ldr r0, [r5] - add r1, r4, #0 - str r0, [sp, #4] - mov r0, #0x7d - mov r2, #4 - mov r3, #0 - bl FUN_02006930 - add r0, r5, #0 - bl MOD59_021D80FC - add r0, r5, #0 - bl MOD59_021D8140 - add r0, r5, #0 - bl MOD59_021D8234 - mov r0, #0 - add r1, r0, #0 - bl FUN_02017FE4 - mov r0, #4 - mov r1, #0 - bl FUN_02017FE4 - add sp, #0x10 - pop {r3, r4, r5, pc} - nop -_021D80F8: .word gGameVersion - thumb_func_end MOD59_021D8058 - - thumb_func_start MOD59_021D80FC -MOD59_021D80FC: ; 0x021D80FC - push {r4, r5, lr} - sub sp, #0x24 - ldr r5, _021D813C ; =0x021D9E1C - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #0x10 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - add r0, r3, #0 - add r0, #0x88 - ldrb r1, [r0] - cmp r1, #5 - bhs _021D8138 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r3] - lsl r1, r1, #2 - str r0, [sp, #0xc] - ldr r1, [r2, r1] - ldr r2, [r3, #0x18] - mov r0, #0x7d - mov r3, #3 - bl FUN_020068C8 -_021D8138: - add sp, #0x24 - pop {r4, r5, pc} - .align 2, 0 -_021D813C: .word MOD59_021D9E1C - thumb_func_end MOD59_021D80FC - - thumb_func_start MOD59_021D8140 -MOD59_021D8140: ; 0x021D8140 - push {r3, r4, r5, lr} - sub sp, #0x68 - ldr r5, _021D8230 ; =0x021D9F90 - add r4, r0, #0 - add r3, sp, #0x10 - mov r2, #0xb -_021D814C: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D814C - add r0, r4, #0 - add r0, #0x89 - ldrb r1, [r0] - cmp r1, #0 - beq _021D81BE - cmp r1, #0xc - bhs _021D81BE - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r2, r1, #3 - str r0, [sp, #0xc] - add r1, sp, #0x10 - ldr r1, [r1, r2] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_0200687C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x89 - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #0xe0 - lsl r2, r1, #3 - add r1, sp, #0x14 - ldr r1, [r1, r2] - mov r2, #0 - bl FUN_02006930 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x16 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #1 - mov r2, #7 - bl MOD59_021D7C10 -_021D81BE: - add r0, r4, #0 - add r0, #0x8a - ldrb r1, [r0] - cmp r1, #0 - beq _021D822A - cmp r1, #0xc - bhs _021D822A - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r2, r1, #3 - str r0, [sp, #0xc] - add r1, sp, #0x10 - ldr r1, [r1, r2] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #2 - bl FUN_0200687C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x8a - ldrb r1, [r1] - mov r0, #0x7d - add r3, r0, #0 - lsl r2, r1, #3 - add r1, sp, #0x14 - ldr r1, [r1, r2] - mov r2, #0 - add r3, #0x83 - bl FUN_02006930 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x16 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #2 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #2 - mov r2, #8 - bl MOD59_021D7C10 -_021D822A: - add sp, #0x68 - pop {r3, r4, r5, pc} - nop -_021D8230: .word MOD59_021D9F90 - thumb_func_end MOD59_021D8140 - - thumb_func_start MOD59_021D8234 -MOD59_021D8234: ; 0x021D8234 - push {r4, r5, lr} - sub sp, #0x24 - ldr r5, _021D829C ; =0x021D9E30 - add r4, r0, #0 - ldmia r5!, {r0, r1} - add r3, sp, #0x10 - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - str r0, [r3] - add r0, r4, #0 - add r0, #0x8b - ldrb r1, [r0] - cmp r1, #5 - bhs _021D8296 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r1, r1, #2 - str r0, [sp, #0xc] - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #7 - bl FUN_020068C8 - add r0, r4, #0 - add r0, #0x8b - ldrb r0, [r0] - cmp r0, #1 - bne _021D8288 - add r0, r4, #0 - mov r1, #7 - mov r2, #3 - bl MOD59_021D7C10 - add sp, #0x24 - pop {r4, r5, pc} -_021D8288: - cmp r0, #2 - bne _021D8296 - add r0, r4, #0 - mov r1, #7 - mov r2, #2 - bl MOD59_021D7C10 -_021D8296: - add sp, #0x24 - pop {r4, r5, pc} - nop -_021D829C: .word MOD59_021D9E30 - thumb_func_end MOD59_021D8234 - - thumb_func_start MOD59_021D82A0 -MOD59_021D82A0: ; 0x021D82A0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - mov r2, #0 - str r2, [sp] - str r2, [sp, #4] - add r5, r0, #0 - ldr r1, _021D83EC ; =0x000001BE - str r2, [sp, #8] - add r0, sp, #0x10 - mov r3, #2 - bl FUN_02068C00 - ldr r0, [r5] - mov r1, #0xc8 - bl AllocFromHeap - add r7, r0, #0 - ldr r2, _021D83F0 ; =0x021D9FE8 - mov r1, #0 - add r3, r7, #0 -_021D82C8: - ldrb r0, [r2] - add r1, r1, #1 - add r2, r2, #1 - add r0, r0, #1 - strh r0, [r3] - add r3, r3, #2 - cmp r1, #0x64 - blt _021D82C8 - add r1, sp, #0x10 - ldrh r0, [r1] - ldrh r1, [r1, #2] - ldr r2, [r5] - bl FUN_0201244C - add r1, sp, #0x10 - add r4, r0, #0 - ldrh r0, [r1] - ldrh r1, [r1, #4] - ldr r2, [r5] - bl FUN_02012470 - mov r2, #0 - add r6, r0, #0 - str r2, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x18 - str r0, [sp, #8] - mov r0, #9 - str r0, [sp, #0xc] - ldr r0, [r5, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_02018540 - mov r3, #0xb - str r3, [sp] - mov r0, #0xa - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0x18] - mov r1, #2 - add r2, r7, #0 - bl FUN_02018148 - add r0, r5, #0 - mov r1, #2 - mov r2, #9 - bl MOD59_021D7C10 - ldr r3, [r5] - mov r0, #2 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #1 - str r0, [sp] - mov r3, #0x32 - ldr r0, [r5, #0x18] - mov r1, #2 - add r2, r4, #0 - lsl r3, r3, #6 - bl FUN_02017E14 - mov r3, #0x20 - add r2, r3, #0 - mov r0, #2 - add r1, r6, #0 - add r3, #0xe0 - bl FUN_02017FB4 - mov r3, #0x12 - ldr r1, _021D83F4 ; =0x021D9ED8 - mov r0, #2 - mov r2, #0x20 - lsl r3, r3, #4 - bl FUN_02017FB4 - mov r2, #0 - str r2, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x18 - str r0, [sp, #8] - mov r0, #0xa - str r0, [sp, #0xc] - ldr r0, [r5, #0x18] - mov r1, #5 - add r3, r2, #0 - bl FUN_02018540 - mov r0, #7 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0x18] - mov r1, #5 - add r2, r7, #0 - mov r3, #0xb - bl FUN_02018148 - add r0, r5, #0 - mov r1, #5 - mov r2, #0xa - bl MOD59_021D7C10 - ldr r3, [r5] - mov r0, #5 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #1 - str r0, [sp] - mov r3, #0x32 - ldr r0, [r5, #0x18] - mov r1, #5 - add r2, r4, #0 - lsl r3, r3, #6 - bl FUN_02017E14 - mov r0, #5 - add r1, r6, #0 - mov r2, #0x20 - lsl r3, r0, #6 - bl FUN_02017FB4 - mov r0, #5 - ldr r1, _021D83F4 ; =0x021D9ED8 - mov r2, #0x20 - lsl r3, r0, #6 - bl FUN_02017FB4 - add r0, r6, #0 - bl FreeToHeap - add r0, r4, #0 - bl FreeToHeap - add r0, r7, #0 - bl FreeToHeap - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D83EC: .word 0x000001BE -_021D83F0: .word MOD59_021D9FE8 -_021D83F4: .word MOD59_021D9ED8 - thumb_func_end MOD59_021D82A0 - - thumb_func_start MOD59_021D83F8 -MOD59_021D83F8: ; 0x021D83F8 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x26 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #6 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #6 - mov r2, #9 - bl MOD59_021D7C10 - mov r0, #0x60 - str r0, [sp] - ldr r0, [r4] - mov r1, #0x27 - str r0, [sp, #4] - mov r0, #0x7d - mov r2, #4 - mov r3, #0xe0 - bl FUN_02006930 - ldr r3, [r4] - mov r0, #6 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #0x20 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x1e - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #6 - bl FUN_0200687C - add sp, #0x10 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD59_021D83F8 - - thumb_func_start MOD59_021D8460 -MOD59_021D8460: ; 0x021D8460 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r6, #0 - cmp r2, #0 - bne _021D849C - ldr r0, [r5, #0x18] - bl FUN_02017B48 - cmp r0, #0 - beq _021D8498 - cmp r0, #0 - ldr r0, [r5, #0x18] - ble _021D848A - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - mov r2, #2 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D848A: - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - mov r2, #1 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D8498: - mov r6, #1 - b _021D84E2 -_021D849C: - cmp r2, #1 - bne _021D84C2 - ldr r0, [r5, #0x18] - bl FUN_02017B48 - add r1, r6, #0 - sub r1, #0x30 - cmp r0, r1 - beq _021D84BE - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - mov r2, #2 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D84BE: - mov r6, #1 - b _021D84E2 -_021D84C2: - cmp r2, #2 - bne _021D84E2 - ldr r0, [r5, #0x18] - bl FUN_02017B48 - cmp r0, #0 - beq _021D84E0 - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - mov r2, #1 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D84E0: - mov r6, #1 -_021D84E2: - add r0, r6, #0 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD59_021D8460 - - thumb_func_start MOD59_021D84E8 -MOD59_021D84E8: ; 0x021D84E8 - add r1, r0, #0 - mov r2, #0 - add r1, #0x8c - strb r2, [r1] - add r1, r0, #0 - add r1, #0x8d - strb r2, [r1] - add r1, r0, #0 - add r1, #0x8e - strb r2, [r1] - add r0, #0x8f - strb r2, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD59_021D84E8 - - thumb_func_start MOD59_021D8504 -MOD59_021D8504: ; 0x021D8504 - push {r3, r4, r5, lr} - sub sp, #0x30 - add r4, r0, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D858E - add r0, r4, #0 - add r0, #0x8d - ldrb r0, [r0] - cmp r0, #0 - beq _021D8526 - add r0, r4, #0 - add r0, #0x8d - ldrb r0, [r0] - sub r1, r0, #1 - b _021D8546 -_021D8526: - add r0, r4, #0 - add r0, #0x8c - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x8c - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8c - ldrb r1, [r0] - mov r0, #3 - and r1, r0 - add r0, r4, #0 - add r0, #0x8c - strb r1, [r0] - mov r1, #4 -_021D8546: - add r0, r4, #0 - add r0, #0x8d - strb r1, [r0] - mov r0, #0xa - str r0, [sp] - ldr r0, _021D860C ; =0x04000050 - mov r1, #4 - mov r2, #8 - mov r3, #6 - bl G2x_SetBlendAlpha_ - ldr r5, _021D8610 ; =0x021D9DEC - add r3, sp, #0x20 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #0xc] - add r1, #0x8c - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #1 - lsl r1, r1, #2 - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - bl FUN_0200687C - add sp, #0x30 - pop {r3, r4, r5, pc} -_021D858E: - add r0, r4, #0 - add r0, #0x8f - ldrb r0, [r0] - cmp r0, #0 - beq _021D85A2 - add r0, r4, #0 - add r0, #0x8f - ldrb r0, [r0] - sub r1, r0, #1 - b _021D85C2 -_021D85A2: - add r0, r4, #0 - add r0, #0x8e - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x8e - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8e - ldrb r1, [r0] - mov r0, #3 - and r1, r0 - add r0, r4, #0 - add r0, #0x8e - strb r1, [r0] - mov r1, #4 -_021D85C2: - add r0, r4, #0 - add r0, #0x8f - strb r1, [r0] - mov r0, #0xa - str r0, [sp] - ldr r0, _021D860C ; =0x04000050 - mov r1, #2 - mov r2, #8 - mov r3, #6 - bl G2x_SetBlendAlpha_ - ldr r5, _021D8614 ; =0x021D9DFC - add r3, sp, #0x10 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #0xc] - add r1, #0x8e - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #2 - lsl r1, r1, #2 - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - bl FUN_0200687C - add sp, #0x30 - pop {r3, r4, r5, pc} - nop -_021D860C: .word 0x04000050 -_021D8610: .word MOD59_021D9DEC -_021D8614: .word MOD59_021D9DFC - thumb_func_end MOD59_021D8504 - - thumb_func_start MOD59_021D8618 -MOD59_021D8618: ; 0x021D8618 - ldr r0, _021D8620 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - bx lr - .align 2, 0 -_021D8620: .word 0x04000050 - thumb_func_end MOD59_021D8618 - - thumb_func_start MOD59_021D8624 -MOD59_021D8624: ; 0x021D8624 - add r1, r0, #0 - mov r2, #0 - add r1, #0x94 - str r2, [r1] - add r0, #0x98 - str r2, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD59_021D8624 - - thumb_func_start MOD59_021D8634 -MOD59_021D8634: ; 0x021D8634 - push {r4, r5, r6, lr} - sub sp, #0x40 - add r3, r0, #0 - add r0, #0x98 - ldr r0, [r0] - mov r4, #0 - cmp r0, #0 - beq _021D864E - add r0, r3, #0 - add r0, #0x98 - ldr r0, [r0] - sub r1, r0, #1 - b _021D865E -_021D864E: - add r0, r3, #0 - add r0, #0x94 - ldr r0, [r0] - add r1, r0, #1 - add r0, r3, #0 - add r0, #0x94 - str r1, [r0] - mov r1, #8 -_021D865E: - add r0, r3, #0 - add r0, #0x98 - str r1, [r0] - add r0, r3, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D8674 - ldr r6, _021D86B4 ; =0x021D9E88 - add r5, sp, #0x28 - b _021D8678 -_021D8674: - ldr r6, _021D86B8 ; =0x021D9E70 - add r5, sp, #0x10 -_021D8678: - add r2, r5, #0 - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - add r0, r3, #0 - add r0, #0x94 - ldr r0, [r0] - lsl r0, r0, #2 - ldr r1, [r2, r0] - cmp r1, #0xff - bne _021D8698 - mov r4, #1 - b _021D86AE -_021D8698: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r3] - str r0, [sp, #0xc] - ldr r2, [r3, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_0200687C -_021D86AE: - add r0, r4, #0 - add sp, #0x40 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D86B4: .word MOD59_021D9E88 -_021D86B8: .word MOD59_021D9E70 - thumb_func_end MOD59_021D8634 - - thumb_func_start MOD59_021D86BC -MOD59_021D86BC: ; 0x021D86BC - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r4, r0, #0 - ldr r0, [r6] - mov r7, #0 - cmp r0, #5 - bls _021D86CC - b _021D890A -_021D86CC: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D86D8: ; jump table - .short _021D86E4 - _021D86D8 - 2 ; case 0 - .short _021D8728 - _021D86D8 - 2 ; case 1 - .short _021D87A6 - _021D86D8 - 2 ; case 2 - .short _021D87E0 - _021D86D8 - 2 ; case 3 - .short _021D887C - _021D86D8 - 2 ; case 4 - .short _021D88F8 - _021D86D8 - 2 ; case 5 -_021D86E4: - ldr r0, [r4, #0x18] - mov r1, #2 - add r2, r7, #0 - add r3, r7, #0 - bl FUN_020179E0 - mov r2, #3 - add r3, r2, #0 - ldr r0, [r4, #0x18] - mov r1, #2 - sub r3, #0x6b - bl FUN_020179E0 - mov r0, #2 - add r1, r7, #0 - bl FUN_020178BC - mov r0, #5 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #8 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #1 - str r0, [r6] - b _021D890A -_021D8728: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_02017B54 - add r1, r4, #0 - add r1, #0xb0 - ldr r3, [r1] - add r1, r4, #0 - add r1, #0xac - ldr r2, [r1] - lsl r1, r2, #3 - add r1, r2, r1 - add r2, r3, #0 - mul r2, r1 - lsl r1, r3, #3 - add r1, r3, r1 - mul r1, r3 - lsr r3, r1, #0x1f - add r3, r1, r3 - asr r1, r3, #1 - sub r5, r2, r1 - cmp r0, #0x58 - bge _021D8792 - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - mov r1, #2 - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #5 - mov r2, #1 - mov r3, #2 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #5 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - b _021D890A -_021D8792: - mov r0, #5 - add r1, r7, #0 - bl FUN_0201797C - mov r0, #0x1e - add r4, #0xb0 - str r0, [r4] - mov r0, #2 - str r0, [r6] - b _021D890A -_021D87A6: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - cmp r0, #0 - beq _021D87BE - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - add r4, #0xb0 - sub r0, r0, #1 - str r0, [r4] - b _021D890A -_021D87BE: - mov r0, #2 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #9 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #3 - str r0, [r6] - b _021D890A -_021D87E0: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B54 - add r0, r4, #0 - add r0, #0xb0 - ldr r1, [r0] - add r0, r4, #0 - add r0, #0xac - ldr r2, [r0] - lsl r0, r2, #3 - add r0, r2, r0 - lsl r2, r1, #3 - add r2, r1, r2 - mul r0, r1 - mul r2, r1 - lsr r1, r2, #0x1f - add r1, r2, r1 - sub r0, #0x68 - asr r1, r1, #1 - sub r5, r0, r1 - add r0, r4, #0 - add r0, #0xa8 - ldr r0, [r0] - cmp r0, #0 - ble _021D8846 - cmp r5, #0 - bgt _021D8846 - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r7, #0 - bl FUN_020179E0 - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #1 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #4 - str r0, [r6] - b _021D890A -_021D8846: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - add r0, r4, #0 - add r0, #0xa8 - str r5, [r0] - ldr r0, [r4, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_020179E0 - asr r5, r5, #1 - cmp r5, #0x90 - ble _021D886E - mov r5, #0x90 -_021D886E: - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - b _021D890A -_021D887C: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B54 - add r0, r4, #0 - add r0, #0xb0 - ldr r1, [r0] - add r0, r4, #0 - add r0, #0xac - ldr r2, [r0] - lsl r0, r2, #3 - add r0, r2, r0 - lsl r2, r1, #3 - add r2, r1, r2 - mul r2, r1 - mul r0, r1 - lsr r1, r2, #0x1f - add r1, r2, r1 - asr r1, r1, #1 - sub r5, r0, r1 - add r0, r4, #0 - add r0, #0xa8 - ldr r0, [r0] - cmp r0, #0 - ble _021D88CC - cmp r5, #0 - bgt _021D88CC - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r7, #0 - bl FUN_020179E0 - mov r0, #5 - str r0, [r6] - b _021D890A -_021D88CC: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - mov r1, #2 - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - add r4, #0xa8 - str r5, [r4] - b _021D890A -_021D88F8: - ldr r0, _021D8910 ; =0x000001BE - bl FUN_02005578 - add r0, r4, #0 - mov r1, #2 - mov r2, #8 - bl MOD59_021D7C10 - mov r7, #1 -_021D890A: - add r0, r7, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D8910: .word 0x000001BE - thumb_func_end MOD59_021D86BC - - thumb_func_start MOD59_021D8914 -MOD59_021D8914: ; 0x021D8914 - ldr r3, _021D891C ; =FUN_020178BC - mov r0, #2 - mov r1, #1 - bx r3 - .align 2, 0 -_021D891C: .word FUN_020178BC - thumb_func_end MOD59_021D8914 - - thumb_func_start MOD59_021D8920 -MOD59_021D8920: ; 0x021D8920 - push {r4, r5, r6, lr} - sub sp, #0x30 - add r4, r0, #0 - ldr r1, [r4, #0xc] - mov r5, #0 - cmp r1, #0x6d - bls _021D8932 - bl _021D985C -_021D8932: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D893E: ; jump table - .short _021D8A1A - _021D893E - 2 ; case 0 - .short _021D8A5A - _021D893E - 2 ; case 1 - .short _021D8A76 - _021D893E - 2 ; case 2 - .short _021D8A92 - _021D893E - 2 ; case 3 - .short _021D8ADE - _021D893E - 2 ; case 4 - .short _021D8AEE - _021D893E - 2 ; case 5 - .short _021D8B02 - _021D893E - 2 ; case 6 - .short _021D8B16 - _021D893E - 2 ; case 7 - .short _021D8B60 - _021D893E - 2 ; case 8 - .short _021D8B80 - _021D893E - 2 ; case 9 - .short _021D8BA0 - _021D893E - 2 ; case 10 - .short _021D8BD8 - _021D893E - 2 ; case 11 - .short _021D8BE8 - _021D893E - 2 ; case 12 - .short _021D8C02 - _021D893E - 2 ; case 13 - .short _021D8C16 - _021D893E - 2 ; case 14 - .short _021D8C30 - _021D893E - 2 ; case 15 - .short _021D8C44 - _021D893E - 2 ; case 16 - .short _021D8C5E - _021D893E - 2 ; case 17 - .short _021D8C72 - _021D893E - 2 ; case 18 - .short _021D8C98 - _021D893E - 2 ; case 19 - .short _021D8CA8 - _021D893E - 2 ; case 20 - .short _021D8CBC - _021D893E - 2 ; case 21 - .short _021D8CF8 - _021D893E - 2 ; case 22 - .short _021D8D1C - _021D893E - 2 ; case 23 - .short _021D8D3E - _021D893E - 2 ; case 24 - .short _021D8D7C - _021D893E - 2 ; case 25 - .short _021D8D94 - _021D893E - 2 ; case 26 - .short _021D8DD6 - _021D893E - 2 ; case 27 - .short _021D8DEA - _021D893E - 2 ; case 28 - .short _021D8E34 - _021D893E - 2 ; case 29 - .short _021D8E44 - _021D893E - 2 ; case 30 - .short _021D8E58 - _021D893E - 2 ; case 31 - .short _021D8E90 - _021D893E - 2 ; case 32 - .short _021D8EA0 - _021D893E - 2 ; case 33 - .short _021D8EBE - _021D893E - 2 ; case 34 - .short _021D8ED6 - _021D893E - 2 ; case 35 - .short _021D8EF0 - _021D893E - 2 ; case 36 - .short _021D8F0A - _021D893E - 2 ; case 37 - .short _021D8F24 - _021D893E - 2 ; case 38 - .short _021D8F3E - _021D893E - 2 ; case 39 - .short _021D8F5E - _021D893E - 2 ; case 40 - .short _021D8F7E - _021D893E - 2 ; case 41 - .short _021D8F92 - _021D893E - 2 ; case 42 - .short _021D8FA6 - _021D893E - 2 ; case 43 - .short _021D8FC6 - _021D893E - 2 ; case 44 - .short _021D900C - _021D893E - 2 ; case 45 - .short _021D901C - _021D893E - 2 ; case 46 - .short _021D9030 - _021D893E - 2 ; case 47 - .short _021D9062 - _021D893E - 2 ; case 48 - .short _021D90CE - _021D893E - 2 ; case 49 - .short _021D90E2 - _021D893E - 2 ; case 50 - .short _021D9106 - _021D893E - 2 ; case 51 - .short _021D913E - _021D893E - 2 ; case 52 - .short _021D9178 - _021D893E - 2 ; case 53 - .short _021D9192 - _021D893E - 2 ; case 54 - .short _021D91E4 - _021D893E - 2 ; case 55 - .short _021D9208 - _021D893E - 2 ; case 56 - .short _021D921A - _021D893E - 2 ; case 57 - .short _021D922A - _021D893E - 2 ; case 58 - .short _021D9244 - _021D893E - 2 ; case 59 - .short _021D925C - _021D893E - 2 ; case 60 - .short _021D926C - _021D893E - 2 ; case 61 - .short _021D927E - _021D893E - 2 ; case 62 - .short _021D9290 - _021D893E - 2 ; case 63 - .short _021D92CA - _021D893E - 2 ; case 64 - .short _021D92DC - _021D893E - 2 ; case 65 - .short _021D92EE - _021D893E - 2 ; case 66 - .short _021D930A - _021D893E - 2 ; case 67 - .short _021D9384 - _021D893E - 2 ; case 68 - .short _021D9396 - _021D893E - 2 ; case 69 - .short _021D93AE - _021D893E - 2 ; case 70 - .short _021D93C0 - _021D893E - 2 ; case 71 - .short _021D93D8 - _021D893E - 2 ; case 72 - .short _021D93F8 - _021D893E - 2 ; case 73 - .short _021D942A - _021D893E - 2 ; case 74 - .short _021D944A - _021D893E - 2 ; case 75 - .short _021D945C - _021D893E - 2 ; case 76 - .short _021D9476 - _021D893E - 2 ; case 77 - .short _021D94DE - _021D893E - 2 ; case 78 - .short _021D94EC - _021D893E - 2 ; case 79 - .short _021D950C - _021D893E - 2 ; case 80 - .short _021D954E - _021D893E - 2 ; case 81 - .short _021D956E - _021D893E - 2 ; case 82 - .short _021D9586 - _021D893E - 2 ; case 83 - .short _021D9598 - _021D893E - 2 ; case 84 - .short _021D95AA - _021D893E - 2 ; case 85 - .short _021D95BC - _021D893E - 2 ; case 86 - .short _021D95D4 - _021D893E - 2 ; case 87 - .short _021D95E6 - _021D893E - 2 ; case 88 - .short _021D95F8 - _021D893E - 2 ; case 89 - .short _021D960A - _021D893E - 2 ; case 90 - .short _021D9672 - _021D893E - 2 ; case 91 - .short _021D9684 - _021D893E - 2 ; case 92 - .short _021D9696 - _021D893E - 2 ; case 93 - .short _021D96DE - _021D893E - 2 ; case 94 - .short _021D96EC - _021D893E - 2 ; case 95 - .short _021D96FE - _021D893E - 2 ; case 96 - .short _021D9738 - _021D893E - 2 ; case 97 - .short _021D974C - _021D893E - 2 ; case 98 - .short _021D9764 - _021D893E - 2 ; case 99 - .short _021D9788 - _021D893E - 2 ; case 100 - .short _021D9798 - _021D893E - 2 ; case 101 - .short _021D97B2 - _021D893E - 2 ; case 102 - .short _021D97CC - _021D893E - 2 ; case 103 - .short _021D97DC - _021D893E - 2 ; case 104 - .short _021D9812 - _021D893E - 2 ; case 105 - .short _021D982A - _021D893E - 2 ; case 106 - .short _021D983A - _021D893E - 2 ; case 107 - .short _021D9848 - _021D893E - 2 ; case 108 - .short _021D985A - _021D893E - 2 ; case 109 -_021D8A1A: - ldr r1, _021D8D70 ; =0x00000405 - mov r0, #2 - mov r2, #1 - bl FUN_0200433C - ldr r0, _021D8D70 ; =0x00000405 - add r1, r5, #0 - bl FUN_02005350 - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #0xc] - bl _021D985C -_021D8A5A: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - add r0, r4, #0 - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D8B22 - mov r0, #2 - str r0, [r4, #0xc] - bl _021D985C -_021D8A76: - add r1, r5, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #3 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8A92: - ldr r0, _021D8D70 ; =0x00000405 - bl FUN_0200521C - add r0, r4, #0 - mov r1, #1 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #0x10 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4] - mov r1, #1 - str r0, [sp, #8] - mov r0, #3 - add r2, r1, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #4 - str r0, [r4, #0xc] - bl _021D985C -_021D8ADE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - mov r0, #5 - str r0, [r4, #0xc] - bl _021D985C -_021D8AEE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8B02: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8B22 - mov r0, #7 - str r0, [r4, #0xc] - bl _021D985C -_021D8B16: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D8B26 -_021D8B22: - bl _021D985C -_021D8B26: - ldr r0, [r4, #0x48] - cmp r0, #1 - beq _021D8B38 - cmp r0, #2 - beq _021D8B44 - cmp r0, #3 - beq _021D8B58 - bl _021D985C -_021D8B38: - mov r0, #0xa - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - bl _021D985C -_021D8B44: - mov r0, #0x1f - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8B58: - mov r0, #0x29 - str r0, [r4, #0xc] - bl _021D985C -_021D8B60: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #9 - str r0, [r4, #0xc] - bl _021D985C -_021D8B80: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #1 - add r1, r5, #0 - bl FUN_0201797C - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - bl _021D985C -_021D8BA0: - add r1, r4, #0 - mov r2, #1 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0xb - str r0, [r4, #0xc] - bl _021D985C -_021D8BD8: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8BE8: - mov r1, #0x12 - str r1, [sp] - mov r1, #2 - add r2, r5, #0 - mov r3, #3 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xd - str r0, [r4, #0xc] - bl _021D985C -_021D8C02: - add r1, r4, #0 - mov r2, #2 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0xe - str r0, [r4, #0xc] - bl _021D985C -_021D8C16: - mov r1, #0xc - str r1, [sp] - mov r1, #3 - add r2, r5, #0 - mov r3, #7 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xf - str r0, [r4, #0xc] - bl _021D985C -_021D8C30: - add r1, r4, #0 - mov r2, #3 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0x10 - str r0, [r4, #0xc] - bl _021D985C -_021D8C44: - mov r1, #0xc - str r1, [sp] - mov r1, #4 - add r2, r5, #0 - add r3, r1, #0 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0x11 - str r0, [r4, #0xc] - bl _021D985C -_021D8C5E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8C84 - mov r0, #0x12 - str r0, [r4, #0xc] - bl _021D985C -_021D8C72: - mov r1, #0xa - str r1, [sp] - mov r1, #5 - add r2, r5, #0 - mov r3, #4 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8C88 -_021D8C84: - bl _021D985C -_021D8C88: - mov r0, #0x13 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8C98: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #0x14 - str r0, [r4, #0xc] - bl _021D985C -_021D8CA8: - mov r1, #7 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8DA0 - mov r0, #0x15 - str r0, [r4, #0xc] - bl _021D985C -_021D8CBC: - ldr r6, _021D8D74 ; =0x021D9E44 - add r3, sp, #0x1c - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r2, #0 - str r0, [r3] - ldr r0, [r4, #0x18] - str r0, [sp, #0x1c] - ldr r0, [r4, #0x68] - bl FUN_020145C8 - mov r0, #6 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - mov r1, #3 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8CF8: - ldr r0, _021D8D78 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D8D08 - mov r0, #0x1b - str r0, [r4, #0xc] - bl _021D985C -_021D8D08: - ldr r0, [r4, #0x68] - bl FUN_02014630 - sub r0, r0, #3 - cmp r0, #1 - bhi _021D8DA0 - mov r0, #0x17 - str r0, [r4, #0xc] - bl _021D985C -_021D8D1C: - ldr r0, [r4, #0x68] - bl FUN_02014630 - cmp r0, #1 - beq _021D8D2E - cmp r0, #2 - beq _021D8D36 - bl _021D985C -_021D8D2E: - mov r0, #0x18 - str r0, [r4, #0xc] - bl _021D985C -_021D8D36: - mov r0, #0x1a - str r0, [r4, #0xc] - bl _021D985C -_021D8D3E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x68] - bl FUN_020146C4 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r5, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x19 - str r0, [r4, #0xc] - bl _021D985C - .align 2, 0 -_021D8D70: .word 0x00000405 -_021D8D74: .word MOD59_021D9E44 -_021D8D78: .word gMain -_021D8D7C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8D94: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D8DA4 -_021D8DA0: - bl _021D985C -_021D8DA4: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - ldr r0, [r4, #0x68] - bl FUN_020146C4 - add r0, r4, #0 - mov r1, #1 - add r0, #0x88 - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8DD6: - mov r1, #8 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8DEA: - add r1, r4, #0 - add r1, #0x88 - strb r5, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x1d - str r0, [r4, #0xc] - bl _021D985C -_021D8E34: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x1e - str r0, [r4, #0xc] - bl _021D985C -_021D8E44: - mov r1, #9 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8E58: - add r1, r4, #0 - mov r2, #4 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #2 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x20 - str r0, [r4, #0xc] - bl _021D985C -_021D8E90: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x21 - str r0, [r4, #0xc] - bl _021D985C -_021D8EA0: - mov r1, #6 - str r1, [sp] - mov r1, #0xa - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8EB6 -_021D8EB2: - bl _021D985C -_021D8EB6: - mov r0, #0x22 - str r0, [r4, #0xc] - bl _021D985C -_021D8EBE: - mov r3, #8 - mov r1, #0xb - mov r2, #1 - str r3, [sp] - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x23 - str r0, [r4, #0xc] - bl _021D985C -_021D8ED6: - mov r1, #6 - str r1, [sp] - mov r1, #0xc - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x24 - str r0, [r4, #0xc] - bl _021D985C -_021D8EF0: - mov r1, #0xe - str r1, [sp] - mov r1, #0xd - mov r2, #1 - mov r3, #5 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x25 - str r0, [r4, #0xc] - bl _021D985C -_021D8F0A: - mov r1, #4 - str r1, [sp] - mov r1, #0xe - mov r2, #1 - mov r3, #0xa - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x26 - str r0, [r4, #0xc] - bl _021D985C -_021D8F24: - mov r1, #0xc - str r1, [sp] - mov r1, #0xf - mov r2, #1 - mov r3, #6 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x27 - str r0, [r4, #0xc] - bl _021D985C -_021D8F3E: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x28 - str r0, [r4, #0xc] - bl _021D985C -_021D8F5E: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8FCE - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8F7E: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2a - str r0, [r4, #0xc] - bl _021D985C -_021D8F92: - mov r1, #0x10 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2b - str r0, [r4, #0xc] - bl _021D985C -_021D8FA6: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - mov r0, #4 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2c - str r0, [r4, #0xc] - bl _021D985C -_021D8FC6: - bl FUN_0200E308 - cmp r0, #1 - beq _021D8FD2 -_021D8FCE: - bl _021D985C -_021D8FD2: - add r0, r4, #0 - bl MOD59_021D83F8 - add r0, r4, #0 - mov r1, #4 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - bl FUN_0201797C - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #4 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2d - str r0, [r4, #0xc] - bl _021D985C -_021D900C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2e - str r0, [r4, #0xc] - bl _021D985C -_021D901C: - mov r1, #0x11 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2f - str r0, [r4, #0xc] - bl _021D985C -_021D9030: - bl MOD59_021D7730 - cmp r0, #1 - bne _021D9054 - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r0, r4, #0 - add r0, #0x98 - str r1, [r0] - ldr r0, [r4, #0x18] - bl FUN_02018744 - mov r0, #0x30 - str r0, [r4, #0xc] - bl _021D985C -_021D9054: - ldr r0, _021D9370 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D90DA - mov r0, #0x31 - str r0, [r4, #0xc] - b _021D985C -_021D9062: - add r0, #0x98 - ldr r0, [r0] - cmp r0, #0 - beq _021D9078 - add r0, r4, #0 - add r0, #0x98 - ldr r0, [r0] - add r4, #0x98 - sub r0, r0, #1 - str r0, [r4] - b _021D985C -_021D9078: - ldr r6, _021D9374 ; =0x021D9DC0 - add r3, sp, #0x10 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r6] - str r0, [r3] - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - lsl r0, r0, #2 - ldr r1, [r2, r0] - ldr r0, _021D9378 ; =0x0000FFFF - cmp r1, r0 - bne _021D90A2 - ldr r0, _021D937C ; =0x00000706 - bl FUN_020054C8 - mov r0, #0x32 - str r0, [r4, #0xc] - b _021D985C -_021D90A2: - mov r0, #0x20 - str r0, [sp] - str r5, [sp, #4] - str r5, [sp, #8] - ldr r0, [r4] - mov r3, #6 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - bl FUN_0200687C - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x94 - str r1, [r0] - mov r0, #4 - add r4, #0x98 - str r0, [r4] - b _021D985C -_021D90CE: - mov r1, #0x12 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D90DC -_021D90DA: - b _021D985C -_021D90DC: - mov r0, #0x2f - str r0, [r4, #0xc] - b _021D985C -_021D90E2: - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - str r0, [sp] - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x33 - str r0, [r4, #0xc] - b _021D985C -_021D9106: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xb - str r0, [sp] - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x34 - str r0, [r4, #0xc] - b _021D985C -_021D913E: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x35 - str r0, [r4, #0xc] - b _021D985C -_021D9178: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #0x36 - str r0, [r4, #0xc] - b _021D985C -_021D9192: - bl MOD59_021D82A0 - mov r0, #6 - add r1, r5, #0 - bl FUN_0201797C - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r1, r4, #0 - add r0, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xb - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x37 - str r0, [r4, #0xc] - b _021D985C -_021D91E4: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - beq _021D91F8 -_021D91F6: - b _021D985C -_021D91F8: - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D92FA - mov r0, #0x38 - str r0, [r4, #0xc] - b _021D985C -_021D9208: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - cmp r0, #1 - bne _021D92FA - mov r0, #0x39 - str r0, [r4, #0xc] - b _021D985C -_021D921A: - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3a - str r0, [r4, #0xc] - b _021D985C -_021D922A: - mov r1, #0x13 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x3b - str r0, [r4, #0xc] - b _021D985C -_021D9244: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - add r0, r4, #0 - bl MOD59_021D8914 - mov r0, #0x3c - str r0, [r4, #0xc] - b _021D985C -_021D925C: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3d - str r0, [r4, #0xc] - b _021D985C -_021D926C: - mov r1, #0x14 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3e - str r0, [r4, #0xc] - b _021D985C -_021D927E: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D9290: - bl MOD59_021D84E8 - add r0, r4, #0 - mov r1, #2 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - mov r1, #6 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - add r2, r5, #0 - add r3, r2, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - sub r3, #0x30 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #2 - add r2, r5, #0 - mov r3, #0x30 - bl FUN_020179E0 - mov r0, #0x40 - str r0, [r4, #0xc] - b _021D985C -_021D92CA: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x41 - str r0, [r4, #0xc] - b _021D985C -_021D92DC: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x42 - str r0, [r4, #0xc] - b _021D985C -_021D92EE: - mov r1, #0x15 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D92FC -_021D92FA: - b _021D985C -_021D92FC: - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x84 - str r1, [r0] - mov r0, #0x43 - str r0, [r4, #0xc] - b _021D985C -_021D930A: - ldr r0, _021D9370 ; =gMain - mov r1, #1 - ldr r0, [r0, #0x48] - and r1, r0 - cmp r1, #1 - bne _021D933C - mov r0, #6 - str r0, [r4, #0x7c] - add r0, r4, #0 - mov r1, #0xa - add r0, #0x80 - str r1, [r0] - mov r0, #2 - str r0, [r4, #0x78] - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9336 - mov r0, #0x44 - str r0, [r4, #0xc] - b _021D985C -_021D9336: - mov r0, #0x46 - str r0, [r4, #0xc] - b _021D985C -_021D933C: - mov r1, #0x20 - and r1, r0 - cmp r1, #0x20 - beq _021D934C - mov r1, #0x10 - and r0, r1 - cmp r0, #0x10 - bne _021D9368 -_021D934C: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D935A - mov r1, #1 - b _021D935C -_021D935A: - mov r1, #0 -_021D935C: - add r0, r4, #0 - add r0, #0x84 - str r1, [r0] - ldr r0, _021D9380 ; =0x000005DC - bl FUN_020054C8 -_021D9368: - add r0, r4, #0 - bl MOD59_021D8504 - b _021D985C - .align 2, 0 -_021D9370: .word gMain -_021D9374: .word MOD59_021D9DC0 -_021D9378: .word 0x0000FFFF -_021D937C: .word 0x00000706 -_021D9380: .word 0x000005DC -_021D9384: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x45 - str r0, [r4, #0xc] - b _021D985C -_021D9396: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_021D8618 - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93AE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x47 - str r0, [r4, #0xc] - b _021D985C -_021D93C0: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_021D8618 - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93D8: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D93E4 - mov r1, #0x16 - b _021D93E6 -_021D93E4: - mov r1, #0x17 -_021D93E6: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9414 - mov r0, #0x49 - str r0, [r4, #0xc] - b _021D985C -_021D93F8: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9414 - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D941C - cmp r1, #1 - beq _021D9416 - cmp r1, #2 - beq _021D941C -_021D9414: - b _021D985C -_021D9416: - mov r0, #0x4b - str r0, [r4, #0xc] - b _021D985C -_021D941C: - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_02018744 - mov r0, #0x4a - str r0, [r4, #0xc] - b _021D985C -_021D942A: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9436 - mov r1, #1 - b _021D9438 -_021D9436: - mov r1, #2 -_021D9438: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9530 - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D944A: - mov r1, #0x18 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4c - str r0, [r4, #0xc] - b _021D985C -_021D945C: - add r0, #0x84 - ldr r1, [r0] - ldr r0, [r4, #0x70] - str r1, [r0, #4] - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x70] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x4d - str r0, [r4, #0xc] - b _021D985C -_021D9476: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94AE - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - b _021D94C2 -_021D94AE: - mov r0, #2 - mov r1, #1 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_020179E0 -_021D94C2: - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x4e - str r0, [r4, #0xc] - b _021D985C -_021D94DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4f - str r0, [r4, #0xc] - b _021D985C -_021D94EC: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94F8 - mov r1, #0x19 - b _021D94FA -_021D94F8: - mov r1, #0x1a -_021D94FA: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x50 - str r0, [r4, #0xc] - b _021D985C -_021D950C: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9530 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D953C - cmp r1, #1 - beq _021D9532 - cmp r1, #2 - beq _021D953C -_021D9530: - b _021D985C -_021D9532: - mov r0, #0x52 - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D953C: - ldr r0, [r4, #0x70] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x3f - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D954E: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D955A - mov r1, #1 - b _021D955C -_021D955A: - mov r1, #2 -_021D955C: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - b _021D985C -_021D956E: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x53 - str r0, [r4, #0xc] - b _021D985C -_021D9586: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x54 - str r0, [r4, #0xc] - b _021D985C -_021D9598: - mov r1, #0x1b - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x55 - str r0, [r4, #0xc] - b _021D985C -_021D95AA: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x56 - str r0, [r4, #0xc] - b _021D985C -_021D95BC: - add r1, r4, #0 - mov r2, #0xa - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x57 - str r0, [r4, #0xc] - b _021D985C -_021D95D4: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D95E6: - mov r1, #0x1c - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x59 - str r0, [r4, #0xc] - b _021D985C -_021D95F8: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9616 - mov r0, #0x5a - str r0, [r4, #0xc] - b _021D985C -_021D960A: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D9618 -_021D9616: - b _021D985C -_021D9618: - ldr r0, [r4, #0x48] - cmp r0, #5 - bhi _021D971A - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D962A: ; jump table - .short _021D985C - _021D962A - 2 ; case 0 - .short _021D9636 - _021D962A - 2 ; case 1 - .short _021D963C - _021D962A - 2 ; case 2 - .short _021D963C - _021D962A - 2 ; case 3 - .short _021D963C - _021D962A - 2 ; case 4 - .short _021D963C - _021D962A - 2 ; case 5 -_021D9636: - mov r0, #0x5c - str r0, [r4, #0xc] - b _021D985C -_021D963C: - ldr r1, _021D977C ; =gGameVersion - ldrb r1, [r1] - cmp r1, #0xa - bne _021D964C - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9780 ; =0x021D9F40 - b _021D9652 -_021D964C: - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9784 ; =0x021D9F68 -_021D9652: - ldr r1, [r0, r1] - ldr r0, [r4, #0x4c] - bl NewString_ReadMsgData - add r6, r0, #0 - ldr r0, [r4, #0x74] - add r1, r6, #0 - ldr r0, [r0, #0x18] - bl StringCopy - add r0, r6, #0 - bl String_dtor - mov r0, #0x5b - str r0, [r4, #0xc] - b _021D985C -_021D9672: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D9684: - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x74] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x5d - str r0, [r4, #0xc] - b _021D985C -_021D9696: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x5e - str r0, [r4, #0xc] - b _021D985C -_021D96DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D96EC: - mov r1, #0x1d - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D971A - mov r0, #0x60 - str r0, [r4, #0xc] - b _021D985C -_021D96FE: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D971A - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D972A - cmp r1, #1 - beq _021D971C - cmp r1, #2 - beq _021D972A -_021D971A: - b _021D985C -_021D971C: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x61 - str r0, [r4, #0xc] - b _021D985C -_021D972A: - ldr r0, [r4, #0x74] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D9738: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D9746 - b _021D985C -_021D9746: - mov r0, #0x62 - str r0, [r4, #0xc] - b _021D985C -_021D974C: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x63 - str r0, [r4, #0xc] - b _021D985C -_021D9764: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - mov r0, #0x64 - str r0, [r4, #0xc] - b _021D985C - nop -_021D9778: .word UNK_020FA5FC -_021D977C: .word gGameVersion -_021D9780: .word MOD59_021D9F40 -_021D9784: .word MOD59_021D9F68 -_021D9788: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x65 - str r0, [r4, #0xc] - b _021D985C -_021D9798: - mov r1, #0x1e - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D985C - add r0, r5, #0 - mov r1, #0x32 - bl FUN_020053CC - mov r0, #0x66 - str r0, [r4, #0xc] - b _021D985C -_021D97B2: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x67 - str r0, [r4, #0xc] - b _021D985C -_021D97CC: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x68 - str r0, [r4, #0xc] - b _021D985C -_021D97DC: - add r1, r4, #0 - add r1, #0x84 - ldr r1, [r1] - cmp r1, #0 - bne _021D97FA - add r1, r4, #0 - mov r2, #2 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - b _021D980C -_021D97FA: - add r1, r4, #0 - mov r2, #6 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 -_021D980C: - mov r0, #0x69 - str r0, [r4, #0xc] - b _021D985C -_021D9812: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - add r0, r4, #0 - bl MOD59_021D8624 - mov r0, #0x6a - str r0, [r4, #0xc] - b _021D985C -_021D982A: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x6b - str r0, [r4, #0xc] - b _021D985C -_021D983A: - bl MOD59_021D8634 - cmp r0, #1 - bne _021D985C - mov r0, #0x6c - str r0, [r4, #0xc] - b _021D985C -_021D9848: - ldr r0, _021D9864 ; =0x021D9DDC - ldr r2, [r4] - add r1, r5, #0 - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x6d - str r0, [r4, #0xc] - b _021D985C -_021D985A: - mov r5, #1 -_021D985C: - add r0, r5, #0 - add sp, #0x30 - pop {r4, r5, r6, pc} - nop -_021D9864: .word MOD59_021D9DDC - thumb_func_end MOD59_021D8920 - - thumb_func_start MOD59_021D9868 -MOD59_021D9868: ; 0x021D9868 - push {r4, lr} - mov r2, #1 - add r4, r0, #0 - mov r0, #3 - mov r1, #0x53 - lsl r2, r2, #0x12 - bl FUN_0201681C - add r0, r4, #0 - mov r1, #0x28 - mov r2, #0x53 - bl OverlayManager_CreateAndGetData - mov r1, #0 - mov r2, #0x28 - add r4, r0, #0 - bl memset - mov r0, #0x53 - str r0, [r4] - mov r0, #0 - str r0, [r4, #0x24] - mov r0, #1 - pop {r4, pc} - thumb_func_end MOD59_021D9868 - - thumb_func_start MOD59_021D9898 -MOD59_021D9898: ; 0x021D9898 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - bl OverlayManager_GetData - ldr r1, [r5] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bls _021D98AE - b _021D99E2 -_021D98AE: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D98BA: ; jump table - .short _021D98C6 - _021D98BA - 2 ; case 0 - .short _021D992C - _021D98BA - 2 ; case 1 - .short _021D9952 - _021D98BA - 2 ; case 2 - .short _021D997C - _021D98BA - 2 ; case 3 - .short _021D998E - _021D98BA - 2 ; case 4 - .short _021D99C0 - _021D98BA - 2 ; case 5 -_021D98C6: - add r0, r6, #0 - add r1, r6, #0 - bl FUN_0200E3A0 - mov r0, #1 - add r1, r6, #0 - bl FUN_0200E3A0 - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - add r0, r6, #0 - add r1, r0, #0 - bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021D99E8 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2] - ldr r2, _021D99EC ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - mov r0, #4 - mov r1, #8 - bl FUN_0201669C - add r0, r4, #0 - bl MOD59_021D9A20 - add r0, r4, #0 - bl MOD59_021D9C48 - ldr r0, _021D99F0 ; =MOD59_021D9A14 - add r1, r4, #0 - bl Main_SetVBlankIntrCB - bl FUN_0201E788 - mov r0, #0x3c - str r0, [r4, #0x24] - mov r0, #1 - str r0, [r5] - b _021D99E2 -_021D992C: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D9938 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D99E2 -_021D9938: - ldr r0, _021D99F4 ; =0x00000406 - bl FUN_0200414C - ldr r1, _021D99F4 ; =0x00000406 - mov r0, #4 - mov r2, #1 - bl FUN_0200433C - mov r0, #0x5a - str r0, [r4, #0x24] - mov r0, #2 - str r0, [r5] - b _021D99E2 -_021D9952: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D995E - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D99E2 -_021D995E: - str r6, [r4, #0x24] - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r6, #0 - add r3, r6, #0 - bl FUN_0200E1D0 - mov r0, #3 - str r0, [r5] - b _021D99E2 -_021D997C: - bl MOD59_021D9D78 - bl FUN_0200E308 - cmp r0, #1 - bne _021D99E2 - mov r0, #4 - str r0, [r5] - b _021D99E2 -_021D998E: - bl MOD59_021D9D78 - add r0, r4, #0 - add r1, r6, #0 - mov r2, #0x28 - mov r3, #0x30 - bl MOD59_021D9C74 - cmp r0, #1 - bne _021D99E2 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #5 - str r0, [r5] - b _021D99E2 -_021D99C0: - bl MOD59_021D9D78 - bl FUN_0200E308 - cmp r0, #1 - bne _021D99E2 - add r0, r4, #0 - bl MOD59_021D9C68 - add r0, r4, #0 - bl MOD59_021D9BD0 - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r6, #1 -_021D99E2: - add r0, r6, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .align 2, 0 -_021D99E8: .word 0xFFFFE0FF -_021D99EC: .word 0x04001000 -_021D99F0: .word MOD59_021D9A14 -_021D99F4: .word 0x00000406 - thumb_func_end MOD59_021D9898 - - thumb_func_start MOD59_021D99F8 -MOD59_021D99F8: ; 0x021D99F8 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl OverlayManager_GetData - ldr r4, [r0] - add r0, r5, #0 - bl OverlayManager_FreeData - add r0, r4, #0 - bl FUN_020168D0 - mov r0, #1 - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD59_021D99F8 - - thumb_func_start MOD59_021D9A14 -MOD59_021D9A14: ; 0x021D9A14 - ldr r3, _021D9A1C ; =FUN_0201AB60 - ldr r0, [r0, #4] - bx r3 - nop -_021D9A1C: .word FUN_0201AB60 - thumb_func_end MOD59_021D9A14 - - thumb_func_start MOD59_021D9A20 -MOD59_021D9A20: ; 0x021D9A20 - push {r3, r4, r5, lr} - sub sp, #0xb8 - ldr r5, _021D9BB4 ; =0x021DA0D4 - add r4, r0, #0 - add r3, sp, #0x90 - mov r2, #5 -_021D9A2C: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D9A2C - add r0, sp, #0x90 - bl FUN_0201E66C - ldr r0, [r4] - bl FUN_02016B94 - add r3, sp, #0x80 - ldr r5, _021D9BB8 ; =0x021DA054 - str r0, [r4, #4] - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl FUN_02016BBC - ldr r5, _021D9BBC ; =0x021DA080 - add r3, sp, #0x64 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #2 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl FUN_02016C18 - ldr r3, [r4] - mov r0, #2 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - ldr r0, [r4, #4] - mov r1, #2 - bl FUN_02018744 - ldr r5, _021D9BC0 ; =0x021DA09C - add r3, sp, #0x48 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0 - str r0, [r3] - ldr r0, [r4, #4] - add r3, r1, #0 - bl FUN_02016C18 - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4] - mov r1, #1 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl FUN_0200687C - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4] - mov r1, #4 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl FUN_020068C8 - ldr r5, _021D9BC4 ; =0x021DA064 - add r3, sp, #0x2c - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #1 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl FUN_02016C18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #2 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #5 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl FUN_020068C8 - ldr r5, _021D9BC8 ; =0x021DA0B8 - add r3, sp, #0x10 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #3 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl FUN_02016C18 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4] - mov r3, #3 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #3 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - add r3, r1, #0 - bl FUN_020068C8 - mov r2, #0 - str r2, [sp] - ldr r0, [r4] - mov r1, #6 - str r0, [sp, #4] - mov r0, #0x88 - add r3, r2, #0 - bl FUN_02006930 - ldr r2, [r4] - mov r0, #0 - mov r1, #0x20 - bl FUN_02002ED0 - mov r0, #0 - add r1, r0, #0 - bl FUN_02017FE4 - mov r0, #4 - mov r1, #0 - bl FUN_02017FE4 - mov r2, #0xc - ldr r0, _021D9BCC ; =0x04000050 - mov r1, #2 - mov r3, #4 - str r2, [sp] - bl G2x_SetBlendAlpha_ - add sp, #0xb8 - pop {r3, r4, r5, pc} - nop -_021D9BB4: .word MOD59_021DA0D4 -_021D9BB8: .word MOD59_021DA054 -_021D9BBC: .word MOD59_021DA080 -_021D9BC0: .word MOD59_021DA09C -_021D9BC4: .word MOD59_021DA064 -_021D9BC8: .word MOD59_021DA0B8 -_021D9BCC: .word 0x04000050 - thumb_func_end MOD59_021D9A20 - - thumb_func_start MOD59_021D9BD0 -MOD59_021D9BD0: ; 0x021D9BD0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #1 - mov r1, #0 - bl FUN_0201797C - mov r0, #2 - mov r1, #0 - bl FUN_0201797C - mov r0, #3 - mov r1, #0 - bl FUN_0201797C - mov r0, #4 - mov r1, #0 - bl FUN_0201797C - mov r0, #5 - mov r1, #0 - bl FUN_0201797C - mov r0, #6 - mov r1, #0 - bl FUN_0201797C - mov r0, #7 - mov r1, #0 - bl FUN_0201797C - ldr r0, _021D9C44 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r0, [r4, #4] - mov r1, #3 - bl FUN_020178A0 - ldr r0, [r4, #4] - mov r1, #1 - bl FUN_020178A0 - ldr r0, [r4, #4] - mov r1, #0 - bl FUN_020178A0 - ldr r0, [r4, #4] - mov r1, #2 - bl FUN_020178A0 - ldr r0, [r4, #4] - bl FreeToHeap - pop {r4, pc} - nop -_021D9C44: .word 0x04000050 - thumb_func_end MOD59_021D9BD0 - - thumb_func_start MOD59_021D9C48 -MOD59_021D9C48: ; 0x021D9C48 - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D9C64 ; =0x00000225 - ldr r3, [r4] - mov r0, #1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [r4, #8] - bl FUN_0201BD5C - mov r0, #0 - str r0, [r4, #0xc] - pop {r4, pc} - .align 2, 0 -_021D9C64: .word 0x00000225 - thumb_func_end MOD59_021D9C48 - - thumb_func_start MOD59_021D9C68 -MOD59_021D9C68: ; 0x021D9C68 - ldr r3, _021D9C70 ; =DestroyMsgData - ldr r0, [r0, #8] - bx r3 - nop -_021D9C70: .word DestroyMsgData - thumb_func_end MOD59_021D9C68 - - thumb_func_start MOD59_021D9C74 -MOD59_021D9C74: ; 0x021D9C74 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r0, #0 - ldr r0, [r4, #0xc] - str r1, [sp, #0x10] - add r7, r3, #0 - mov r5, #0 - cmp r0, #3 - bhi _021D9D66 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D9C92: ; jump table - .short _021D9C9A - _021D9C92 - 2 ; case 0 - .short _021D9D24 - _021D9C92 - 2 ; case 1 - .short _021D9D36 - _021D9C92 - 2 ; case 2 - .short _021D9D50 - _021D9C92 - 2 ; case 3 -_021D9C9A: - mov r0, #2 - add r1, r5, #0 - bl FUN_0201797C - mov r0, #1 - ldr r1, [r4] - lsl r0, r0, #0xa - bl String_ctor - add r6, r0, #0 - ldr r0, [r4, #8] - ldr r1, [sp, #0x10] - add r2, r6, #0 - bl ReadMsgDataIntoString - add r1, r4, #0 - ldr r0, [r4, #4] - ldr r2, _021D9D6C ; =0x021DA04C - add r1, #0x10 - bl FUN_02019150 - add r1, r5, #0 - mov r0, #1 - lsl r0, r0, #8 - str r0, [sp] - mov r0, #0xc0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl FUN_020196F4 - add r0, r5, #0 - add r1, r6, #0 - add r2, r0, #0 - bl FUN_02002F08 - mov r1, #1 - lsl r1, r1, #8 - sub r0, r1, r0 - lsr r3, r0, #1 - str r7, [sp] - add r1, r5, #0 - ldr r0, _021D9D70 ; =0x000F0200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r4, #0 - add r0, #0x10 - add r2, r6, #0 - str r1, [sp, #0xc] - bl AddTextPrinterParameterized2 - add r0, r6, #0 - bl String_dtor - add r0, r4, #0 - add r0, #0x10 - bl FUN_020191D0 - mov r0, #2 - mov r1, #1 - bl FUN_0201797C - mov r0, #0xf0 - str r0, [r4, #0x24] - mov r0, #1 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D24: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D9D30 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D9D66 -_021D9D30: - mov r0, #2 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D36: - ldr r0, _021D9D74 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D9D4A - mov r0, #2 - and r0, r1 - cmp r0, #2 - bne _021D9D66 -_021D9D4A: - mov r0, #3 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D50: - add r0, r4, #0 - add r0, #0x10 - bl FUN_02019178 - ldr r0, [r4, #4] - mov r1, #2 - bl FUN_02018744 - add r0, r5, #0 - str r0, [r4, #0xc] - mov r5, #1 -_021D9D66: - add r0, r5, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_021D9D6C: .word MOD59_021DA04C -_021D9D70: .word 0x000F0200 -_021D9D74: .word gMain - thumb_func_end MOD59_021D9C74 - - thumb_func_start MOD59_021D9D78 -MOD59_021D9D78: ; 0x021D9D78 - push {r3, lr} - ldr r1, [r0, #0x20] - mov r2, #3 - add r3, r1, #4 - str r3, [r0, #0x20] - ldr r0, [r0, #4] - mov r1, #1 - asr r3, r3, #4 - bl FUN_020179E0 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD59_021D9D78 - - .rodata - .global MOD59_021D9D90 -MOD59_021D9D90: ; 0x021D9D90 - .byte 0x00, 0x08, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01, 0x00, 0x04, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01 - - .global MOD59_021D9DA0 -MOD59_021D9DA0: ; 0x021D9DA0 - .byte 0x00, 0x02, 0x03, 0x0E, 0x0A, 0x05, 0xE1, 0x02 - - .global MOD59_021D9DA8 -MOD59_021D9DA8: ; 0x021D9DA8 - .byte 0x00, 0x02, 0x03, 0x06, 0x04, 0x05, 0x55, 0x03 - - .global MOD59_021D9DB0 -MOD59_021D9DB0: ; 0x021D9DB0 - .byte 0x00, 0x01, 0x03, 0x10, 0x06, 0x05, 0x0D, 0x03 - - .global MOD59_021D9DB8 -MOD59_021D9DB8: ; 0x021D9DB8 - .byte 0x00, 0x02, 0x13, 0x1B, 0x04, 0x06, 0x6D, 0x03 - - .global MOD59_021D9DC0 -MOD59_021D9DC0: ; 0x021D9DC0 - .byte 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 - - .global MOD59_021D9DCC -MOD59_021D9DCC: ; 0x021D9DCC - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9DDC -MOD59_021D9DDC: ; 0x021D9DDC - .word MOD59_021D9868, MOD59_021D9898, MOD59_021D99F8, 0xFFFFFFFF - - .global MOD59_021D9DEC -MOD59_021D9DEC: ; 0x021D9DEC - .byte 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - - .global MOD59_021D9DFC -MOD59_021D9DFC: ; 0x021D9DFC - .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - - .global MOD59_021D9E0C -MOD59_021D9E0C: ; 0x021D9E0C - .byte 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global MOD59_021D9E1C -MOD59_021D9E1C: ; 0x021D9E1C - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00 - - .global MOD59_021D9E30 -MOD59_021D9E30: ; 0x021D9E30 - .byte 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 - .byte 0x1D, 0x00, 0x00, 0x00 - - .global MOD59_021D9E44 -MOD59_021D9E44: ; 0x021D9E44 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0C, 0x08, 0x00, 0x00 - - .global MOD59_021D9E58 -MOD59_021D9E58: ; 0x021D9E58 - .byte 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global MOD59_021D9E70 -MOD59_021D9E70: ; 0x021D9E70 - .byte 0x0D, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00 - .byte 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 - - .global MOD59_021D9E88 -MOD59_021D9E88: ; 0x021D9E88 - .byte 0x08, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 - .byte 0x2B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 - - .global MOD59_021D9EA0 -MOD59_021D9EA0: ; 0x021D9EA0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9EBC -MOD59_021D9EBC: ; 0x021D9EBC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9ED8 -MOD59_021D9ED8: ; 0x021D9ED8 - .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A - .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A - - .global MOD59_021D9EF8 -MOD59_021D9EF8: ; 0x021D9EF8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9F18 -MOD59_021D9F18: ; 0x021D9F18 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9F40 -MOD59_021D9F40: ; 0x021D9F40 - .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x28, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global MOD59_021D9F68 -MOD59_021D9F68: ; 0x021D9F68 - .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x2C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global MOD59_021D9F90 -MOD59_021D9F90: ; 0x021D9F90 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 - - .global MOD59_021D9FE8 -MOD59_021D9FE8: ; 0x021D9FE8 - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x40, 0x41, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D - .byte 0x0E, 0x0F, 0x42, 0x43, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x44, 0x45, 0x18, 0x19 - .byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x46, 0x47, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 - .byte 0x48, 0x49, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x4A, 0x4B, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x4C, 0x4D, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x4E, 0x4F - .byte 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5A, 0x5B, 0x60, 0x61, 0x54, 0x55, 0x56, 0x57, 0x5C, 0x5D - .byte 0x5E, 0x5F, 0x62, 0x63 - - .global MOD59_021DA04C -MOD59_021DA04C: ; 0x021DA04C - .byte 0x02, 0x00, 0x00, 0x20, 0x18, 0x01, 0x01, 0x00 - - .global MOD59_021DA054 -MOD59_021DA054: ; 0x021DA054 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA064 -MOD59_021DA064: ; 0x021DA064 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA080 -MOD59_021DA080: ; 0x021DA080 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA09C -MOD59_021DA09C: ; 0x021DA09C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA0B8 -MOD59_021DA0B8: ; 0x021DA0B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x01, 0x03, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA0D4 -MOD59_021DA0D4: ; 0x021DA0D4 - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .data - .bss -- cgit v1.2.3 From a3d3445857aef18c6132eedd1fbbb215ae88a4f5 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 30 Oct 2020 20:44:22 +0000 Subject: split some more of mod 5 and decomp a func in it --- arm9/arm9.lsf | 5 + arm9/modules/05/asm/mod05_021E72FC_asm1.s | 78 ++++ arm9/modules/05/asm/mod05_021E72FC_asm2.s | 172 +++++++++ arm9/modules/05/asm/mod05_021E7504.s | 316 ++++++++++++++++ arm9/modules/05/asm/module_05.s | 578 ------------------------------ arm9/modules/05/include/mod05_021E72FC.h | 8 + arm9/modules/05/src/mod05_021E72FC_src.c | 18 + 7 files changed, 597 insertions(+), 578 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm1.s create mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm2.s create mode 100644 arm9/modules/05/asm/mod05_021E7504.s create mode 100644 arm9/modules/05/include/mod05_021E72FC.h create mode 100644 arm9/modules/05/src/mod05_021E72FC_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 12784096..eb4e1fa1 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -554,6 +554,11 @@ Overlay MODULE_05 Object mod05_021E5C8C.o Object mod05_021E5E10.o Object mod05_021E5FD8.o + #kinda awkward split, sorry + Object mod05_021E72FC_asm1.o + Object mod05_021E72FC_src.o + Object mod05_021E72FC_asm2.o + Object mod05_021E7504.o Object module_05.o } diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm1.s b/arm9/modules/05/asm/mod05_021E72FC_asm1.s new file mode 100644 index 00000000..2bc62fca --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E72FC_asm1.s @@ -0,0 +1,78 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + #in asm2 + .extern MOD05_021E73B4 + .extern MOD05_021E74D4 + + thumb_func_start MOD05_021E72FC +MOD05_021E72FC: ; 0x021E72FC + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_020553A0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r4, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E731E + mov r2, #3 + b _021E734C +_021E731E: + add r0, r4, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E732C + mov r2, #2 + b _021E734C +_021E732C: + add r0, r4, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E733A + mov r2, #0 + b _021E734C +_021E733A: + add r0, r4, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7348 + mov r2, #1 + b _021E734C +_021E7348: + mov r0, #0 + pop {r4, r5, r6, pc} +_021E734C: + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021E7358 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E7358 +MOD05_021E7358: ; 0x021E7358 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x18 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021E74D4 + add r4, r0, #0 + str r5, [r4, #0xc] + str r6, [r4, #0x10] + ldr r0, _021E7380 ; =0x00000658 + str r7, [r4] + bl FUN_020054C8 + ldr r1, _021E7384 ; =MOD05_021E73B4 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7380: .word 0x00000658 +_021E7384: .word MOD05_021E73B4 diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm2.s b/arm9/modules/05/asm/mod05_021E72FC_asm2.s new file mode 100644 index 00000000..2bfcbe12 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E72FC_asm2.s @@ -0,0 +1,172 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + #in c file + .extern MOD05_021E7388 + + thumb_func_start MOD05_021E73B4 +MOD05_021E73B4: ; 0x021E73B4 + push {r4, r5, r6, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E73DC + cmp r0, #1 + beq _021E73EE + cmp r0, #2 + beq _021E741C + b _021E74CA +_021E73DC: + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058410 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E73EE: + ldr r0, [r4, #0x10] + bl FUN_02057254 + cmp r0, #0 + beq _021E74CA + ldr r0, [r4] + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02057260 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #7 + str r0, [r4, #4] + b _021E74CA +_021E741C: + ldr r0, [r4, #4] + cmp r0, #2 + beq _021E742A + cmp r0, #4 + beq _021E742A + cmp r0, #6 + bne _021E743A +_021E742A: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 +_021E743A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _021E74CA + add r0, r5, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E7452 + mov r0, #3 + str r0, [r4] + b _021E748A +_021E7452: + add r0, r5, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E7462 + mov r0, #2 + str r0, [r4] + b _021E748A +_021E7462: + add r0, r5, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E7472 + mov r0, #0 + str r0, [r4] + b _021E748A +_021E7472: + add r0, r5, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7482 + mov r0, #1 + str r0, [r4] + b _021E748A +_021E7482: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] +_021E748A: + ldr r0, [r4, #0x10] + ldr r2, [r4] + add r1, r6, #0 + bl FUN_02056B74 + cmp r0, #0 + bne _021E749E + mov r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E749E: + add r0, r6, #0 + mov r1, #0x80 + bl FUN_02058418 + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058418 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + add r0, r4, #0 + bl MOD05_021E74F8 + ldr r0, _021E74D0 ; =0x00000658 + mov r1, #0 + bl FUN_020054F0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E74CA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E74D0: .word 0x00000658 + + thumb_func_start MOD05_021E74D4 +MOD05_021E74D4: ; 0x021E74D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + bne _021E74E8 + bl ErrorHandling +_021E74E8: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E74F8 +MOD05_021E74F8: ; 0x021E74F8 + ldr r3, _021E7500 ; =FUN_02016A8C + add r1, r0, #0 + mov r0, #4 + bx r3 + .balign 4, 0 +_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/asm/mod05_021E7504.s b/arm9/modules/05/asm/mod05_021E7504.s new file mode 100644 index 00000000..d7f960b2 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E7504.s @@ -0,0 +1,316 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E7504 +MOD05_021E7504: ; 0x021E7504 + add r1, r0, #0 + ldr r0, [r1, #0x10] + cmp r0, #3 + bhi _021E7536 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7518: ; jump table + .short _021E7520 - _021E7518 - 2 ; case 0 + .short _021E752C - _021E7518 - 2 ; case 1 + .short _021E7526 - _021E7518 - 2 ; case 2 + .short _021E7532 - _021E7518 - 2 ; case 3 +_021E7520: + mov r0, #2 + str r0, [r1, #0x10] + b _021E7536 +_021E7526: + mov r0, #1 + str r0, [r1, #0x10] + b _021E7536 +_021E752C: + mov r0, #3 + str r0, [r1, #0x10] + b _021E7536 +_021E7532: + mov r0, #0 + str r0, [r1, #0x10] +_021E7536: + ldr r0, [r1] + ldr r3, _021E7540 ; =FUN_02055304 + ldr r0, [r0, #0x38] + ldr r1, [r1, #0x10] + bx r3 + .balign 4, 0 +_021E7540: .word FUN_02055304 + + thumb_func_start MOD05_021E7544 +MOD05_021E7544: ; 0x021E7544 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E7564 + cmp r0, #1 + beq _021E756E + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E7564: + mov r0, #1 + str r0, [r5, #8] + ldr r0, _021E760C ; =0x0000064F + bl FUN_020054C8 +_021E756E: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E7584 + add r0, r5, #0 + bl MOD05_021E7504 +_021E7584: + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BA4 + ldr r4, [r5, #0xc] + add r0, r4, #0 + bl _dflt + str r0, [sp, #0x14] + lsl r0, r4, #0xb + str r1, [sp, #0x10] + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7610 ; =0x9999999A + ldr r1, _021E7614 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + bl _dmul + bl _dfix + str r0, [sp, #0x1c] + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0x14 + bne _021E75EA + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E75EA: + ble _021E7606 + bl FUN_0200E308 + cmp r0, #0 + beq _021E7606 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FreeToHeap + add r0, r7, #0 + bl FUN_0200CAB4 +_021E7606: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021E760C: .word 0x0000064F +_021E7610: .word 0x9999999A +_021E7614: .word 0x40C19999 + + thumb_func_start MOD05_021E7618 +MOD05_021E7618: ; 0x021E7618 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + ldr r1, [r5, #8] + add r4, r0, #0 + cmp r1, #0 + beq _021E763C + cmp r1, #1 + beq _021E7694 + cmp r1, #2 + beq _021E771C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E763C: + bl FUN_02058914 + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0xc] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0xc] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + add r0, r4, #0 + bl MOD05_021F1D8C + ldr r0, _021E774C ; =0x0000064F + bl FUN_020054C8 + mov r0, #1 + str r0, [r5, #8] +_021E7694: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E76AA + add r0, r5, #0 + bl MOD05_021E7504 +_021E76AA: + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0x10] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x10] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #2 + bne _021E770E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + add r1, r0, #0 + add r2, r0, #0 + mov r3, #0 + bl FUN_0200E1D0 +_021E770E: + ldr r0, [r5, #0xc] + cmp r0, #0x14 + ble _021E7740 + mov r0, #2 + add sp, #0x20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_021E771C: + bl FUN_0200E308 + cmp r0, #0 + beq _021E7740 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0, #0x38] + bl FUN_02055304 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FreeToHeap + add r0, r6, #0 + bl FUN_0200CAB4 +_021E7740: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7744: .word 0x9999999A +_021E7748: .word 0x40C19999 +_021E774C: .word 0x0000064F + + thumb_func_start MOD05_021E7750 +MOD05_021E7750: ; 0x021E7750 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x14 + add r7, r2, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x10] + cmp r6, #0 + beq _021E7786 + ldr r0, _021E7794 ; =MOD05_021E7544 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_021E7786: + ldr r0, _021E7798 ; =MOD05_021E7618 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7794: .word MOD05_021E7544 +_021E7798: .word MOD05_021E7618 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index d8ed3656..b7232407 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,584 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021E72FC -MOD05_021E72FC: ; 0x021E72FC - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - bl FUN_020553A0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r4, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E731E - mov r2, #3 - b _021E734C -_021E731E: - add r0, r4, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E732C - mov r2, #2 - b _021E734C -_021E732C: - add r0, r4, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E733A - mov r2, #0 - b _021E734C -_021E733A: - add r0, r4, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7348 - mov r2, #1 - b _021E734C -_021E7348: - mov r0, #0 - pop {r4, r5, r6, pc} -_021E734C: - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021E7358 - mov r0, #1 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021E7358 -MOD05_021E7358: ; 0x021E7358 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0x18 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021E74D4 - add r4, r0, #0 - str r5, [r4, #0xc] - str r6, [r4, #0x10] - ldr r0, _021E7380 ; =0x00000658 - str r7, [r4] - bl FUN_020054C8 - ldr r1, _021E7384 ; =MOD05_021E73B4 - add r0, r5, #0 - add r2, r4, #0 - bl FUN_020463CC - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7380: .word 0x00000658 -_021E7384: .word MOD05_021E73B4 - - thumb_func_start MOD05_021E7388 -MOD05_021E7388: ; 0x021E7388 - cmp r0, #3 - bhi _021E73B0 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E7398: ; jump table - .short _021E73A0 - _021E7398 - 2 ; case 0 - .short _021E73A8 - _021E7398 - 2 ; case 1 - .short _021E73A4 - _021E7398 - 2 ; case 2 - .short _021E73AC - _021E7398 - 2 ; case 3 -_021E73A0: - mov r0, #2 - bx lr -_021E73A4: - mov r0, #1 - bx lr -_021E73A8: - mov r0, #3 - bx lr -_021E73AC: - mov r0, #0 - bx lr -_021E73B0: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021E73B4 -MOD05_021E73B4: ; 0x021E73B4 - push {r4, r5, r6, lr} - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021E73DC - cmp r0, #1 - beq _021E73EE - cmp r0, #2 - beq _021E741C - b _021E74CA -_021E73DC: - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058410 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E73EE: - ldr r0, [r4, #0x10] - bl FUN_02057254 - cmp r0, #0 - beq _021E74CA - ldr r0, [r4] - mov r1, #0xc - bl FUN_0205AFDC - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02057260 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #7 - str r0, [r4, #4] - b _021E74CA -_021E741C: - ldr r0, [r4, #4] - cmp r0, #2 - beq _021E742A - cmp r0, #4 - beq _021E742A - cmp r0, #6 - bne _021E743A -_021E742A: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 -_021E743A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - bne _021E74CA - add r0, r5, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E7452 - mov r0, #3 - str r0, [r4] - b _021E748A -_021E7452: - add r0, r5, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E7462 - mov r0, #2 - str r0, [r4] - b _021E748A -_021E7462: - add r0, r5, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E7472 - mov r0, #0 - str r0, [r4] - b _021E748A -_021E7472: - add r0, r5, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7482 - mov r0, #1 - str r0, [r4] - b _021E748A -_021E7482: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] -_021E748A: - ldr r0, [r4, #0x10] - ldr r2, [r4] - add r1, r6, #0 - bl FUN_02056B74 - cmp r0, #0 - bne _021E749E - mov r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E749E: - add r0, r6, #0 - mov r1, #0x80 - bl FUN_02058418 - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058418 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - add r0, r4, #0 - bl MOD05_021E74F8 - ldr r0, _021E74D0 ; =0x00000658 - mov r1, #0 - bl FUN_020054F0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021E74CA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021E74D0: .word 0x00000658 - - thumb_func_start MOD05_021E74D4 -MOD05_021E74D4: ; 0x021E74D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021E74E8 - bl ErrorHandling -_021E74E8: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E74F8 -MOD05_021E74F8: ; 0x021E74F8 - ldr r3, _021E7500 ; =FUN_02016A8C - add r1, r0, #0 - mov r0, #4 - bx r3 - .balign 4, 0 -_021E7500: .word FUN_02016A8C - - thumb_func_start MOD05_021E7504 -MOD05_021E7504: ; 0x021E7504 - add r1, r0, #0 - ldr r0, [r1, #0x10] - cmp r0, #3 - bhi _021E7536 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021E7518: ; jump table - .short _021E7520 - _021E7518 - 2 ; case 0 - .short _021E752C - _021E7518 - 2 ; case 1 - .short _021E7526 - _021E7518 - 2 ; case 2 - .short _021E7532 - _021E7518 - 2 ; case 3 -_021E7520: - mov r0, #2 - str r0, [r1, #0x10] - b _021E7536 -_021E7526: - mov r0, #1 - str r0, [r1, #0x10] - b _021E7536 -_021E752C: - mov r0, #3 - str r0, [r1, #0x10] - b _021E7536 -_021E7532: - mov r0, #0 - str r0, [r1, #0x10] -_021E7536: - ldr r0, [r1] - ldr r3, _021E7540 ; =FUN_02055304 - ldr r0, [r0, #0x38] - ldr r1, [r1, #0x10] - bx r3 - .balign 4, 0 -_021E7540: .word FUN_02055304 - - thumb_func_start MOD05_021E7544 -MOD05_021E7544: ; 0x021E7544 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r1, #0 - add r7, r0, #0 - ldr r0, [r5] - ldr r0, [r0, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - ldr r0, [r5, #8] - cmp r0, #0 - beq _021E7564 - cmp r0, #1 - beq _021E756E - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021E7564: - mov r0, #1 - str r0, [r5, #8] - ldr r0, _021E760C ; =0x0000064F - bl FUN_020054C8 -_021E756E: - ldr r0, [r5, #0xc] - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - beq _021E7584 - add r0, r5, #0 - bl MOD05_021E7504 -_021E7584: - add r0, r6, #0 - add r1, sp, #0x18 - bl FUN_02058BA4 - ldr r4, [r5, #0xc] - add r0, r4, #0 - bl _dflt - str r0, [sp, #0x14] - lsl r0, r4, #0xb - str r1, [sp, #0x10] - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7610 ; =0x9999999A - ldr r1, _021E7614 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x10] - bl _dmul - bl _dfix - str r0, [sp, #0x1c] - add r0, r6, #0 - add r1, sp, #0x18 - bl FUN_02058BB4 - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #0x14 - bne _021E75EA - mov r0, #6 - str r0, [sp] - mov r1, #0 - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - add r3, r1, #0 - bl FUN_0200E1D0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021E75EA: - ble _021E7606 - bl FUN_0200E308 - cmp r0, #0 - beq _021E7606 - ldr r0, [r5, #4] - mov r1, #1 - str r1, [r0] - add r0, r5, #0 - bl FreeToHeap - add r0, r7, #0 - bl FUN_0200CAB4 -_021E7606: - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - nop -_021E760C: .word 0x0000064F -_021E7610: .word 0x9999999A -_021E7614: .word 0x40C19999 - - thumb_func_start MOD05_021E7618 -MOD05_021E7618: ; 0x021E7618 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5] - ldr r0, [r0, #0x38] - bl FUN_020553A0 - ldr r1, [r5, #8] - add r4, r0, #0 - cmp r1, #0 - beq _021E763C - cmp r1, #1 - beq _021E7694 - cmp r1, #2 - beq _021E771C - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} -_021E763C: - bl FUN_02058914 - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BA4 - ldr r1, [r5, #0xc] - mov r0, #0x14 - sub r6, r0, r1 - add r0, r6, #0 - bl _dflt - str r0, [sp, #0xc] - lsl r0, r6, #0xb - add r7, r1, #0 - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7744 ; =0x9999999A - ldr r1, _021E7748 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0xc] - add r1, r7, #0 - bl _dmul - bl _dfix - str r0, [sp, #0x18] - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BB4 - add r0, r4, #0 - bl MOD05_021F1D8C - ldr r0, _021E774C ; =0x0000064F - bl FUN_020054C8 - mov r0, #1 - str r0, [r5, #8] -_021E7694: - ldr r0, [r5, #0xc] - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - beq _021E76AA - add r0, r5, #0 - bl MOD05_021E7504 -_021E76AA: - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BA4 - ldr r1, [r5, #0xc] - mov r0, #0x14 - sub r6, r0, r1 - add r0, r6, #0 - bl _dflt - str r0, [sp, #0x10] - lsl r0, r6, #0xb - add r7, r1, #0 - bl _dflt - add r2, r0, #0 - add r3, r1, #0 - ldr r0, _021E7744 ; =0x9999999A - ldr r1, _021E7748 ; =0x40C19999 - bl _dadd - add r2, r0, #0 - add r3, r1, #0 - ldr r0, [sp, #0x10] - add r1, r7, #0 - bl _dmul - bl _dfix - str r0, [sp, #0x18] - add r0, r4, #0 - add r1, sp, #0x14 - bl FUN_02058BB4 - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #2 - bne _021E770E - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - add r1, r0, #0 - add r2, r0, #0 - mov r3, #0 - bl FUN_0200E1D0 -_021E770E: - ldr r0, [r5, #0xc] - cmp r0, #0x14 - ble _021E7740 - mov r0, #2 - add sp, #0x20 - str r0, [r5, #8] - pop {r3, r4, r5, r6, r7, pc} -_021E771C: - bl FUN_0200E308 - cmp r0, #0 - beq _021E7740 - ldr r0, [r5] - mov r1, #1 - ldr r0, [r0, #0x38] - bl FUN_02055304 - ldr r0, [r5, #4] - mov r1, #1 - str r1, [r0] - add r0, r5, #0 - bl FreeToHeap - add r0, r6, #0 - bl FUN_0200CAB4 -_021E7740: - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7744: .word 0x9999999A -_021E7748: .word 0x40C19999 -_021E774C: .word 0x0000064F - - thumb_func_start MOD05_021E7750 -MOD05_021E7750: ; 0x021E7750 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #4 - mov r1, #0x14 - add r7, r2, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - str r5, [r4] - str r7, [r4, #4] - ldr r0, [r5, #0x38] - bl FUN_020552F8 - str r0, [r4, #0x10] - cmp r6, #0 - beq _021E7786 - ldr r0, _021E7794 ; =MOD05_021E7544 - add r1, r4, #0 - mov r2, #0x64 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} -_021E7786: - ldr r0, _021E7798 ; =MOD05_021E7618 - add r1, r4, #0 - mov r2, #0x64 - bl FUN_0200CA44 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7794: .word MOD05_021E7544 -_021E7798: .word MOD05_021E7618 - thumb_func_start MOD05_021E779C MOD05_021E779C: ; 0x021E779C push {r4, lr} diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h new file mode 100644 index 00000000..82f56cb2 --- /dev/null +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_MOD05_021E72FC_H +#define POKEDIAMOND_MOD05_021E72FC_H + +#include "nitro/types.h" + +u32 MOD05_021E7388(u32 param0); + +#endif //POKEDIAMOND_MOD05_021E72FC_H diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c new file mode 100644 index 00000000..9ab08746 --- /dev/null +++ b/arm9/modules/05/src/mod05_021E72FC_src.c @@ -0,0 +1,18 @@ +#include "global.h" +#include "mod05_021E72FC.h" + +THUMB_FUNC u32 MOD05_021E7388(u32 param0) +{ + switch (param0) + { + case 0: + return 2; + case 2: + return 1; + case 1: + return 3; + case 3: + return 0; + } + return 0; +} -- cgit v1.2.3 From a0406f6ceb255646f9276cc4e61ddd76f6b0a28f Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 31 Oct 2020 11:04:33 +0000 Subject: decompile MOD05_021E7358 --- arm9/global.inc | 1 + arm9/modules/05/asm/mod05_021E72FC_asm1.s | 23 ----------------------- arm9/modules/05/include/mod05_021E72FC.h | 10 ++++++++++ arm9/modules/05/src/mod05_021E72FC_src.c | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 23 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 60f00ea2..83745bec 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6509,6 +6509,7 @@ .extern MOD05_021E7184 .extern MOD05_021E71E8 .extern MOD05_021E72FC +.extern MOD05_021E7358 .extern MOD05_021E7750 .extern MOD05_021E799C .extern MOD05_021E7AC0 diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm1.s b/arm9/modules/05/asm/mod05_021E72FC_asm1.s index 2bc62fca..84999c30 100644 --- a/arm9/modules/05/asm/mod05_021E72FC_asm1.s +++ b/arm9/modules/05/asm/mod05_021E72FC_asm1.s @@ -53,26 +53,3 @@ _021E734C: bl MOD05_021E7358 mov r0, #1 pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021E7358 -MOD05_021E7358: ; 0x021E7358 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0x18 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021E74D4 - add r4, r0, #0 - str r5, [r4, #0xc] - str r6, [r4, #0x10] - ldr r0, _021E7380 ; =0x00000658 - str r7, [r4] - bl FUN_020054C8 - ldr r1, _021E7384 ; =MOD05_021E73B4 - add r0, r5, #0 - add r2, r4, #0 - bl FUN_020463CC - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7380: .word 0x00000658 -_021E7384: .word MOD05_021E73B4 diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h index 82f56cb2..406d6f6e 100644 --- a/arm9/modules/05/include/mod05_021E72FC.h +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -3,6 +3,16 @@ #include "nitro/types.h" +typedef struct UnkStruct021E7358 +{ + u32 Unk00; + u8 dummy[8]; + u32 Unk0C; + u32 Unk10; + +} UnkStruct021E7358; + +void MOD05_021E7358(u32 param0, u32 param1, u32 param2); u32 MOD05_021E7388(u32 param0); #endif //POKEDIAMOND_MOD05_021E72FC_H diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c index 9ab08746..90b05ce2 100644 --- a/arm9/modules/05/src/mod05_021E72FC_src.c +++ b/arm9/modules/05/src/mod05_021E72FC_src.c @@ -1,6 +1,21 @@ #include "global.h" #include "mod05_021E72FC.h" +extern UnkStruct021E7358 *MOD05_021E74D4(u32 param0); +extern void FUN_020054C8(u32 param0); +extern MOD05_021E73B4(); +extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); + +THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) +{ + UnkStruct021E7358 *res = MOD05_021E74D4(24); + res->Unk0C = param0; + res->Unk10 = param1; + res->Unk00 = param2; + FUN_020054C8(1624); + FUN_020463CC(param0, MOD05_021E73B4, res); +} + THUMB_FUNC u32 MOD05_021E7388(u32 param0) { switch (param0) -- cgit v1.2.3 From ce3a633c5af004dc2d7101d223c95d2a5e1e1471 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 1 Nov 2020 20:11:23 +0000 Subject: decompile MOD05_021E72FC --- arm9/arm9.lsf | 4 +- arm9/modules/05/asm/mod05_021E72FC_asm.s | 172 ++++++++++++++++++++++++++++++ arm9/modules/05/asm/mod05_021E72FC_asm1.s | 55 ---------- arm9/modules/05/asm/mod05_021E72FC_asm2.s | 172 ------------------------------ arm9/modules/05/include/mod05_021E72FC.h | 1 + arm9/modules/05/src/mod05_021E72FC_src.c | 37 +++++++ 6 files changed, 211 insertions(+), 230 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm.s delete mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm1.s delete mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm2.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index eb4e1fa1..d3eb80a0 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -554,10 +554,8 @@ Overlay MODULE_05 Object mod05_021E5C8C.o Object mod05_021E5E10.o Object mod05_021E5FD8.o - #kinda awkward split, sorry - Object mod05_021E72FC_asm1.o Object mod05_021E72FC_src.o - Object mod05_021E72FC_asm2.o + Object mod05_021E72FC_asm.o Object mod05_021E7504.o Object module_05.o } diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm.s b/arm9/modules/05/asm/mod05_021E72FC_asm.s new file mode 100644 index 00000000..2bfcbe12 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E72FC_asm.s @@ -0,0 +1,172 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + #in c file + .extern MOD05_021E7388 + + thumb_func_start MOD05_021E73B4 +MOD05_021E73B4: ; 0x021E73B4 + push {r4, r5, r6, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E73DC + cmp r0, #1 + beq _021E73EE + cmp r0, #2 + beq _021E741C + b _021E74CA +_021E73DC: + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058410 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E73EE: + ldr r0, [r4, #0x10] + bl FUN_02057254 + cmp r0, #0 + beq _021E74CA + ldr r0, [r4] + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02057260 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #7 + str r0, [r4, #4] + b _021E74CA +_021E741C: + ldr r0, [r4, #4] + cmp r0, #2 + beq _021E742A + cmp r0, #4 + beq _021E742A + cmp r0, #6 + bne _021E743A +_021E742A: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 +_021E743A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _021E74CA + add r0, r5, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E7452 + mov r0, #3 + str r0, [r4] + b _021E748A +_021E7452: + add r0, r5, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E7462 + mov r0, #2 + str r0, [r4] + b _021E748A +_021E7462: + add r0, r5, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E7472 + mov r0, #0 + str r0, [r4] + b _021E748A +_021E7472: + add r0, r5, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7482 + mov r0, #1 + str r0, [r4] + b _021E748A +_021E7482: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] +_021E748A: + ldr r0, [r4, #0x10] + ldr r2, [r4] + add r1, r6, #0 + bl FUN_02056B74 + cmp r0, #0 + bne _021E749E + mov r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E749E: + add r0, r6, #0 + mov r1, #0x80 + bl FUN_02058418 + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058418 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + add r0, r4, #0 + bl MOD05_021E74F8 + ldr r0, _021E74D0 ; =0x00000658 + mov r1, #0 + bl FUN_020054F0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E74CA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E74D0: .word 0x00000658 + + thumb_func_start MOD05_021E74D4 +MOD05_021E74D4: ; 0x021E74D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl AllocFromHeapAtEnd + add r4, r0, #0 + bne _021E74E8 + bl ErrorHandling +_021E74E8: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl memset + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E74F8 +MOD05_021E74F8: ; 0x021E74F8 + ldr r3, _021E7500 ; =FUN_02016A8C + add r1, r0, #0 + mov r0, #4 + bx r3 + .balign 4, 0 +_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm1.s b/arm9/modules/05/asm/mod05_021E72FC_asm1.s deleted file mode 100644 index 84999c30..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm1.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - #in asm2 - .extern MOD05_021E73B4 - .extern MOD05_021E74D4 - - thumb_func_start MOD05_021E72FC -MOD05_021E72FC: ; 0x021E72FC - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - add r0, r6, #0 - bl FUN_020553A0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r4, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E731E - mov r2, #3 - b _021E734C -_021E731E: - add r0, r4, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E732C - mov r2, #2 - b _021E734C -_021E732C: - add r0, r4, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E733A - mov r2, #0 - b _021E734C -_021E733A: - add r0, r4, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7348 - mov r2, #1 - b _021E734C -_021E7348: - mov r0, #0 - pop {r4, r5, r6, pc} -_021E734C: - add r0, r5, #0 - add r1, r6, #0 - bl MOD05_021E7358 - mov r0, #1 - pop {r4, r5, r6, pc} diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm2.s b/arm9/modules/05/asm/mod05_021E72FC_asm2.s deleted file mode 100644 index 2bfcbe12..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm2.s +++ /dev/null @@ -1,172 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - #in c file - .extern MOD05_021E7388 - - thumb_func_start MOD05_021E73B4 -MOD05_021E73B4: ; 0x021E73B4 - push {r4, r5, r6, lr} - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021E73DC - cmp r0, #1 - beq _021E73EE - cmp r0, #2 - beq _021E741C - b _021E74CA -_021E73DC: - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058410 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E73EE: - ldr r0, [r4, #0x10] - bl FUN_02057254 - cmp r0, #0 - beq _021E74CA - ldr r0, [r4] - mov r1, #0xc - bl FUN_0205AFDC - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02057260 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #7 - str r0, [r4, #4] - b _021E74CA -_021E741C: - ldr r0, [r4, #4] - cmp r0, #2 - beq _021E742A - cmp r0, #4 - beq _021E742A - cmp r0, #6 - bne _021E743A -_021E742A: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 -_021E743A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - bne _021E74CA - add r0, r5, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E7452 - mov r0, #3 - str r0, [r4] - b _021E748A -_021E7452: - add r0, r5, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E7462 - mov r0, #2 - str r0, [r4] - b _021E748A -_021E7462: - add r0, r5, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E7472 - mov r0, #0 - str r0, [r4] - b _021E748A -_021E7472: - add r0, r5, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7482 - mov r0, #1 - str r0, [r4] - b _021E748A -_021E7482: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] -_021E748A: - ldr r0, [r4, #0x10] - ldr r2, [r4] - add r1, r6, #0 - bl FUN_02056B74 - cmp r0, #0 - bne _021E749E - mov r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E749E: - add r0, r6, #0 - mov r1, #0x80 - bl FUN_02058418 - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058418 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - add r0, r4, #0 - bl MOD05_021E74F8 - ldr r0, _021E74D0 ; =0x00000658 - mov r1, #0 - bl FUN_020054F0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021E74CA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021E74D0: .word 0x00000658 - - thumb_func_start MOD05_021E74D4 -MOD05_021E74D4: ; 0x021E74D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021E74E8 - bl ErrorHandling -_021E74E8: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E74F8 -MOD05_021E74F8: ; 0x021E74F8 - ldr r3, _021E7500 ; =FUN_02016A8C - add r1, r0, #0 - mov r0, #4 - bx r3 - .balign 4, 0 -_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h index 406d6f6e..3aba6c4d 100644 --- a/arm9/modules/05/include/mod05_021E72FC.h +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -12,6 +12,7 @@ typedef struct UnkStruct021E7358 } UnkStruct021E7358; +BOOL MOD05_021E72FC(u32 param0, u32 param1); void MOD05_021E7358(u32 param0, u32 param1, u32 param2); u32 MOD05_021E7388(u32 param0); diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c index 90b05ce2..63dc6a7c 100644 --- a/arm9/modules/05/src/mod05_021E72FC_src.c +++ b/arm9/modules/05/src/mod05_021E72FC_src.c @@ -5,6 +5,43 @@ extern UnkStruct021E7358 *MOD05_021E74D4(u32 param0); extern void FUN_020054C8(u32 param0); extern MOD05_021E73B4(); extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); +extern void FUN_020553A0(u32 param0); +extern u32 FUN_02058720(void); +extern BOOL FUN_02054B30(u8 param0); +extern BOOL FUN_02054B3C(u8 param0); +extern BOOL FUN_02054B48(u8 param0); +extern BOOL FUN_02054B54(u8 param0); + +THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) +{ + FUN_020553A0(param1); + u8 res = (u8)FUN_02058720(); + u32 r2; + if (FUN_02054B30(res) == TRUE) + { + r2 = 3; + goto label; + } + else if (FUN_02054B3C(res) == TRUE) + { + r2 = 2; + goto label; + } + else if (FUN_02054B48(res) == TRUE) + { + r2 = 0; + goto label; + } + else if (FUN_02054B54(res) == TRUE) + { + r2 = 1; + goto label; + } + return FALSE; +label: + MOD05_021E7358(param0, param1, r2); + return TRUE; +} THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) { -- cgit v1.2.3 From 87a52afbb4b9a2cb8c29bde3078e9800198df084 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 1 Nov 2020 21:53:36 +0000 Subject: decompile MOD59_Init --- arm9/arm9.lsf | 5 +- arm9/asm/unk_02087A6C.s | 2 +- arm9/global.inc | 2 +- arm9/modules/59/asm/mod59_021D74E0.s | 4545 ------------------------------ arm9/modules/59/asm/mod59_021D74E0_asm.s | 4482 +++++++++++++++++++++++++++++ arm9/modules/59/include/mod59_021D74E0.h | 32 + arm9/modules/59/src/mod59_021D74E0_src.c | 29 + arm9/src/overlay_manager.c | 79 + arm9/src/unk_02006234.c | 86 - 9 files changed, 4627 insertions(+), 4635 deletions(-) delete mode 100644 arm9/modules/59/asm/mod59_021D74E0.s create mode 100644 arm9/modules/59/asm/mod59_021D74E0_asm.s create mode 100644 arm9/modules/59/include/mod59_021D74E0.h create mode 100644 arm9/modules/59/src/mod59_021D74E0_src.c create mode 100644 arm9/src/overlay_manager.c delete mode 100644 arm9/src/unk_02006234.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d3eb80a0..fd44aa0d 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -19,7 +19,7 @@ Static arm9 Object unk_02005CFC.o Object poke_overlay.o Object unk_020061E8.o - Object unk_02006234.o + Object overlay_manager.o Object filesystem.o Object unk_02006864.o Object unk_02006D98.o @@ -940,7 +940,8 @@ Overlay MODULE_59 { ##Rowan's intro## After arm9 - Object mod59_021D74E0.o + Object mod59_021D74E0_src.o + Object mod59_021D74E0_asm.o Object mod59_021D9868.o } diff --git a/arm9/asm/unk_02087A6C.s b/arm9/asm/unk_02087A6C.s index d51eab43..b343ac2c 100644 --- a/arm9/asm/unk_02087A6C.s +++ b/arm9/asm/unk_02087A6C.s @@ -5,7 +5,7 @@ .global UNK_020FD144 UNK_020FD144: ; 0x020FD144 - .word MOD59_021D74E0, MOD59_021D7564, MOD59_021D76C0, SDK_OVERLAY_MODULE_59_ID + .word MOD59_Init, MOD59_021D7564, MOD59_021D76C0, SDK_OVERLAY_MODULE_59_ID .text diff --git a/arm9/global.inc b/arm9/global.inc index 83745bec..ba5cc7bf 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7467,7 +7467,7 @@ .extern MOD58_021D9A20 .extern MOD58_021D9B8C .extern MOD58_021D9BF0 -.extern MOD59_021D74E0 +.extern MOD59_Init .extern MOD59_021D7564 .extern MOD59_021D76C0 .extern MOD59_021D9868 diff --git a/arm9/modules/59/asm/mod59_021D74E0.s b/arm9/modules/59/asm/mod59_021D74E0.s deleted file mode 100644 index abc37879..00000000 --- a/arm9/modules/59/asm/mod59_021D74E0.s +++ /dev/null @@ -1,4545 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD59_021D74E0 -MOD59_021D74E0: ; 0x021D74E0 - push {r3, r4, r5, lr} - mov r2, #1 - add r5, r0, #0 - mov r0, #3 - mov r1, #0x52 - lsl r2, r2, #0x12 - bl FUN_0201681C - add r0, r5, #0 - mov r1, #0xb4 - mov r2, #0x52 - bl OverlayManager_CreateAndGetData - mov r1, #0 - mov r2, #0xb4 - add r4, r0, #0 - bl memset - mov r0, #0x52 - str r0, [r4] - add r0, r5, #0 - bl OverlayManager_GetField18 - ldr r0, [r0, #8] - str r0, [r4, #4] - bl Sav2_PlayerData_GetOptionsAddr - mov r1, #0 - str r0, [r4, #8] - str r1, [r4, #0xc] - str r1, [r4, #0x10] - str r1, [r4, #0x14] - ldr r0, [r4, #8] - add r2, r1, #0 - str r0, [sp] - mov r0, #0x52 - mov r3, #7 - bl FUN_02077A84 - str r0, [r4, #0x70] - ldr r0, [r4, #8] - mov r1, #3 - str r0, [sp] - mov r0, #0x52 - mov r2, #0 - mov r3, #7 - bl FUN_02077A84 - str r0, [r4, #0x74] - add r0, r4, #0 - mov r1, #0 - add r0, #0x88 - strb r1, [r0] - add r0, r4, #0 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8b - strb r1, [r0] - add r4, #0x90 - str r1, [r4] - mov r0, #1 - pop {r3, r4, r5, pc} - thumb_func_end MOD59_021D74E0 - - thumb_func_start MOD59_021D7564 -MOD59_021D7564: ; 0x021D7564 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - bl OverlayManager_GetData - ldr r1, [r5] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bls _021D757A - b _021D76AC -_021D757A: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D7586: ; jump table - .short _021D7592 - _021D7586 - 2 ; case 0 - .short _021D75FA - _021D7586 - 2 ; case 1 - .short _021D7642 - _021D7586 - 2 ; case 2 - .short _021D7668 - _021D7586 - 2 ; case 3 - .short _021D7690 - _021D7586 - 2 ; case 4 - .short _021D76AA - _021D7586 - 2 ; case 5 -_021D7592: - add r0, r6, #0 - add r1, r6, #0 - bl FUN_0200E3A0 - mov r0, #1 - add r1, r6, #0 - bl FUN_0200E3A0 - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - add r0, r6, #0 - add r1, r0, #0 - bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021D76B4 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2] - ldr r2, _021D76B8 ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - mov r0, #4 - mov r1, #8 - bl FUN_0201669C - add r0, r4, #0 - bl MOD59_021D778C - add r0, r4, #0 - bl MOD59_021D79F8 - add r0, r4, #0 - bl MOD59_021D7A4C - ldr r0, _021D76BC ; =MOD59_021D7724 - add r1, r4, #0 - bl Main_SetVBlankIntrCB - bl FUN_0201E788 - mov r0, #1 - str r0, [r5] - b _021D76AC -_021D75FA: - bl MOD59_021D8920 - cmp r0, #1 - bne _021D761E - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #2 - str r0, [r5] -_021D761E: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _021D76AC - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #3 - str r0, [r5] - b _021D76AC -_021D7642: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r6, #1 - b _021D76AC -_021D7668: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r0, #4 - str r0, [r5] - b _021D76AC -_021D7690: - ldr r0, [r4, #0x14] - bl OverlayManager_Run - cmp r0, #1 - bne _021D76AC - ldr r0, [r4, #0x14] - bl OverlayManager_delete - add r0, r6, #0 - str r0, [r4, #0x14] - mov r0, #5 - str r0, [r5] - b _021D76AC -_021D76AA: - str r6, [r5] -_021D76AC: - add r0, r6, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D76B4: .word 0xFFFFE0FF -_021D76B8: .word 0x04001000 -_021D76BC: .word MOD59_021D7724 - thumb_func_end MOD59_021D7564 - - thumb_func_start MOD59_021D76C0 -MOD59_021D76C0: ; 0x021D76C0 - push {r4, r5, r6, lr} - add r6, r0, #0 - bl OverlayManager_GetData - add r4, r0, #0 - ldr r0, [r4, #4] - ldr r5, [r4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #0x18] - bl PlayerName_StringToFlat - ldr r0, [r4, #4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #4] - bl PlayerProfile_SetTrainerGender - ldr r0, [r4, #4] - bl FUN_02024EB4 - ldr r1, [r4, #0x74] - ldr r1, [r1, #0x18] - bl FUN_02024EF4 - ldr r0, [r4, #0x70] - bl FUN_02077AC4 - ldr r0, [r4, #0x74] - bl FUN_02077AC4 - add r0, r6, #0 - bl OverlayManager_FreeData - add r0, r5, #0 - bl FUN_020168D0 - ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID - ldr r1, _021D7720 ; =MOD52_021D76D8 - bl RegisterMainOverlay - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D771C: .word SDK_OVERLAY_MODULE_52_ID -_021D7720: .word MOD52_021D76D8 - thumb_func_end MOD59_021D76C0 - - thumb_func_start MOD59_021D7724 -MOD59_021D7724: ; 0x021D7724 - ldr r3, _021D772C ; =FUN_0201AB60 - ldr r0, [r0, #0x18] - bx r3 - nop -_021D772C: .word FUN_0201AB60 - thumb_func_end MOD59_021D7724 - - thumb_func_start MOD59_021D7730 -MOD59_021D7730: ; 0x021D7730 - push {r3, r4} - ldr r2, _021D7788 ; =gMain + 0x40 - mov r0, #0 - ldrh r1, [r2, #0x20] - cmp r1, #0 - beq _021D7784 - ldrh r3, [r2, #0x1c] - mov r1, #1 - lsl r1, r1, #8 - cmp r3, r1 - bhs _021D7784 - ldrh r2, [r2, #0x1e] - cmp r2, #0xc0 - bhs _021D7784 - cmp r3, #0x80 - bhs _021D7758 - mov r1, #0x80 - sub r1, r1, r3 - lsl r1, r1, #0x10 - b _021D775C -_021D7758: - sub r3, #0x80 - lsl r1, r3, #0x10 -_021D775C: - lsr r3, r1, #0x10 - cmp r2, #0x64 - bhs _021D776A - mov r1, #0x64 - sub r1, r1, r2 - lsl r1, r1, #0x10 - b _021D776E -_021D776A: - sub r2, #0x64 - lsl r1, r2, #0x10 -_021D776E: - lsr r4, r1, #0x10 - add r2, r3, #0 - add r1, r4, #0 - mul r2, r3 - mul r1, r4 - add r2, r2, r1 - mov r1, #1 - lsl r1, r1, #8 - cmp r2, r1 - bgt _021D7784 - mov r0, #1 -_021D7784: - pop {r3, r4} - bx lr - .align 2, 0 -_021D7788: .word gMain + 0x40 - thumb_func_end MOD59_021D7730 - - thumb_func_start MOD59_021D778C -MOD59_021D778C: ; 0x021D778C - push {r3, r4, r5, lr} - sub sp, #0x78 - ldr r5, _021D7954 ; =0x021D9F18 - add r4, r0, #0 - add r3, sp, #0x50 - mov r2, #5 -_021D7798: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D7798 - add r0, sp, #0x50 - bl FUN_0201E66C - ldr r0, [r4] - bl FUN_02016B94 - add r3, sp, #0x40 - ldr r5, _021D7958 ; =0x021D9DCC - str r0, [r4, #0x18] - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl FUN_02016BBC - ldr r5, _021D795C ; =0x021D9EA0 - add r3, sp, #0x24 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0 - str r0, [r3] - mov r0, #0xf - strb r0, [r2, #0x12] - mov r0, #6 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_02018744 - mov r0, #0xe - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r0, #5 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r1, #1 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_02018744 - mov r0, #0xd - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r0, #4 - strb r0, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r1, #2 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02018744 - mov r0, #0xc - add r2, sp, #0x24 - strb r0, [r2, #0x12] - mov r1, #3 - strb r1, [r2, #0x13] - ldr r0, [r4, #0x18] - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #3 - bl FUN_02018744 - mov r1, #0 - str r1, [sp] - ldr r0, [r4] - ldr r2, _021D7960 ; =0x000003E2 - str r0, [sp, #4] - ldr r0, [r4, #0x18] - mov r3, #4 - bl FUN_0200CD68 - mov r1, #0 - str r1, [sp] - ldr r0, [r4] - ldr r2, _021D7964 ; =0x000003D9 - str r0, [sp, #4] - ldr r0, [r4, #0x18] - mov r3, #3 - bl FUN_0200CB00 - ldr r2, [r4] - mov r0, #0 - mov r1, #0xa0 - bl FUN_02002ED0 - ldr r2, [r4] - mov r0, #0 - mov r1, #0xc0 - bl FUN_02002EEC - ldr r5, _021D7968 ; =0x021D9EBC - add r3, sp, #8 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0xf - str r0, [r3] - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #6 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #4 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #4 - bl FUN_02018744 - mov r1, #0xe - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #5 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_02018744 - mov r1, #0xd - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #4 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #6 - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #6 - bl FUN_02018744 - mov r1, #0xc - add r0, sp, #8 - strb r1, [r0, #0x12] - mov r1, #3 - strb r1, [r0, #0x13] - ldr r0, [r4, #0x18] - mov r1, #7 - add r2, sp, #8 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #0x18] - mov r1, #7 - bl FUN_02018744 - mov r0, #0 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #1 - mov r1, #0 - bl FUN_0201797C - mov r0, #2 - mov r1, #0 - bl FUN_0201797C - mov r0, #3 - mov r1, #0 - bl FUN_0201797C - mov r0, #4 - mov r1, #0 - bl FUN_0201797C - mov r0, #5 - mov r1, #0 - bl FUN_0201797C - mov r0, #6 - mov r1, #0 - bl FUN_0201797C - mov r0, #7 - mov r1, #0 - bl FUN_0201797C - add r0, r4, #0 - bl MOD59_021D8058 - mov r0, #0 - str r0, [r4, #0x78] - add sp, #0x78 - pop {r3, r4, r5, pc} - .align 2, 0 -_021D7954: .word MOD59_021D9F18 -_021D7958: .word MOD59_021D9DCC -_021D795C: .word MOD59_021D9EA0 -_021D7960: .word 0x000003E2 -_021D7964: .word 0x000003D9 -_021D7968: .word MOD59_021D9EBC - thumb_func_end MOD59_021D778C - - thumb_func_start MOD59_021D796C -MOD59_021D796C: ; 0x021D796C - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #1 - mov r1, #0 - bl FUN_0201797C - mov r0, #2 - mov r1, #0 - bl FUN_0201797C - mov r0, #3 - mov r1, #0 - bl FUN_0201797C - mov r0, #4 - mov r1, #0 - bl FUN_0201797C - mov r0, #5 - mov r1, #0 - bl FUN_0201797C - mov r0, #6 - mov r1, #0 - bl FUN_0201797C - mov r0, #7 - mov r1, #0 - bl FUN_0201797C - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #3 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #4 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #6 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - mov r1, #7 - bl FUN_020178A0 - ldr r0, [r4, #0x18] - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD59_021D796C - - thumb_func_start MOD59_021D79F8 -MOD59_021D79F8: ; 0x021D79F8 - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D7A30 ; =0x00000155 - ldr r3, [r4] - mov r0, #1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [r4, #0x4c] - bl FUN_0201BD5C - mov r0, #0 - ldr r3, [r4] - add r1, r0, #0 - mov r2, #6 - bl FUN_020142EC - str r0, [r4, #0x60] - ldr r0, [r4] - bl ScrStrBufs_new - str r0, [r4, #0x64] - mov r0, #0 - str r0, [r4, #0x50] - str r0, [r4, #0x54] - str r0, [r4, #0x2c] - pop {r4, pc} - nop -_021D7A30: .word 0x00000155 - thumb_func_end MOD59_021D79F8 - - thumb_func_start MOD59_021D7A34 -MOD59_021D7A34: ; 0x021D7A34 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x64] - bl ScrStrBufs_delete - ldr r0, [r4, #0x60] - bl FUN_020143D0 - ldr r0, [r4, #0x4c] - bl DestroyMsgData - pop {r4, pc} - thumb_func_end MOD59_021D7A34 - - thumb_func_start MOD59_021D7A4C -MOD59_021D7A4C: ; 0x021D7A4C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - bl FUN_02014590 - str r0, [r4, #0x68] - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD59_021D7A4C - - thumb_func_start MOD59_021D7A5C -MOD59_021D7A5C: ; 0x021D7A5C - ldr r3, _021D7A64 ; =FUN_020145A8 - ldr r0, [r0, #0x68] - bx r3 - nop -_021D7A64: .word FUN_020145A8 - thumb_func_end MOD59_021D7A5C - - thumb_func_start MOD59_021D7A68 -MOD59_021D7A68: ; 0x021D7A68 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r4, r1, #0 - add r3, r0, #0 - add r6, r2, #0 - mov r5, #0 - cmp r4, #6 - bhi _021D7A92 - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7A84: ; jump table - .short _021D7A92 - _021D7A84 - 2 ; case 0 - .short _021D7A98 - _021D7A84 - 2 ; case 1 - .short _021D7A9E - _021D7A84 - 2 ; case 2 - .short _021D7A92 - _021D7A84 - 2 ; case 3 - .short _021D7AA4 - _021D7A84 - 2 ; case 4 - .short _021D7AAA - _021D7A84 - 2 ; case 5 - .short _021D7AB0 - _021D7A84 - 2 ; case 6 -_021D7A92: - mov r1, #1 - mov r0, #0 - b _021D7AB4 -_021D7A98: - mov r1, #2 - add r0, r5, #0 - b _021D7AB4 -_021D7A9E: - mov r1, #4 - add r0, r5, #0 - b _021D7AB4 -_021D7AA4: - mov r1, #1 - add r0, r1, #0 - b _021D7AB4 -_021D7AAA: - mov r1, #2 - mov r0, #1 - b _021D7AB4 -_021D7AB0: - mov r1, #4 - mov r0, #1 -_021D7AB4: - ldr r2, [r3, #0x78] - cmp r2, #3 - bls _021D7ABC - b _021D7BDE -_021D7ABC: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021D7AC8: ; jump table - .short _021D7AD0 - _021D7AC8 - 2 ; case 0 - .short _021D7B2C - _021D7AC8 - 2 ; case 1 - .short _021D7B7C - _021D7AC8 - 2 ; case 2 - .short _021D7BD0 - _021D7AC8 - 2 ; case 3 -_021D7AD0: - cmp r6, #0 - bne _021D7B1A - mov r2, #0 - str r2, [r3, #0x7c] - add r2, r3, #0 - mov r6, #0x10 - add r2, #0x80 - str r6, [r2] - mov r2, #1 - str r2, [r3, #0x78] - cmp r0, #0 - bne _021D7AFC - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7B0E -_021D7AFC: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ -_021D7B0E: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r1, #1 - bl FUN_0201797C - b _021D7BDE -_021D7B1A: - mov r0, #0x10 - str r0, [r3, #0x7c] - add r0, r3, #0 - mov r1, #0 - add r0, #0x80 - str r1, [r0] - mov r0, #2 - str r0, [r3, #0x78] - b _021D7BDE -_021D7B2C: - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - cmp r2, #0 - beq _021D7B76 - ldr r2, [r3, #0x7c] - add r2, r2, #1 - str r2, [r3, #0x7c] - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - sub r4, r2, #1 - add r2, r3, #0 - add r2, #0x80 - str r4, [r2] - cmp r0, #0 - bne _021D7B62 - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7B62: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7B76: - mov r0, #3 - str r0, [r3, #0x78] - b _021D7BDE -_021D7B7C: - ldr r2, [r3, #0x7c] - cmp r2, #0 - beq _021D7BC0 - sub r2, r2, #1 - str r2, [r3, #0x7c] - add r2, r3, #0 - add r2, #0x80 - ldr r2, [r2] - add r4, r2, #1 - add r2, r3, #0 - add r2, #0x80 - str r4, [r2] - cmp r0, #0 - bne _021D7BAC - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE4 ; =0x04000050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7BAC: - add r0, r3, #0 - add r0, #0x80 - ldr r0, [r0] - mov r2, #0xe - str r0, [sp] - ldr r0, _021D7BE8 ; =0x04001050 - ldr r3, [r3, #0x7c] - bl G2x_SetBlendAlpha_ - b _021D7BDE -_021D7BC0: - mov r0, #3 - str r0, [r3, #0x78] - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r1, #0 - bl FUN_0201797C - b _021D7BDE -_021D7BD0: - ldr r0, _021D7BE4 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r0, _021D7BE8 ; =0x04001050 - mov r5, #1 - strh r1, [r0] - str r1, [r3, #0x78] -_021D7BDE: - add r0, r5, #0 - add sp, #4 - pop {r3, r4, r5, r6, pc} - .align 2, 0 -_021D7BE4: .word 0x04000050 -_021D7BE8: .word 0x04001050 - thumb_func_end MOD59_021D7A68 - - thumb_func_start MOD59_021D7BEC -MOD59_021D7BEC: ; 0x021D7BEC - add r2, r0, #0 - add r2, #0x90 - ldr r2, [r2] - cmp r2, r1 - bge _021D7C06 - add r1, r0, #0 - add r1, #0x90 - ldr r1, [r1] - add r0, #0x90 - add r1, r1, #1 - str r1, [r0] - mov r0, #0 - bx lr -_021D7C06: - mov r1, #0 - add r0, #0x90 - str r1, [r0] - mov r0, #1 - bx lr - thumb_func_end MOD59_021D7BEC - - thumb_func_start MOD59_021D7C10 -MOD59_021D7C10: ; 0x021D7C10 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - lsl r0, r2, #0x18 - add r4, r1, #0 - lsr r0, r0, #0x18 - str r0, [sp, #8] - lsl r1, r4, #0x18 - mov r2, #0 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - add r3, r2, #0 - bl FUN_020186B4 - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - bl FUN_02017CD0 - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end MOD59_021D7C10 - - thumb_func_start MOD59_021D7C44 -MOD59_021D7C44: ; 0x021D7C44 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - mov r4, #0 - cmp r0, #0 - beq _021D7C5E - cmp r0, #1 - beq _021D7D1C - cmp r0, #2 - beq _021D7D36 - b _021D7D54 -_021D7C5E: - add r1, r5, #0 - ldr r0, [r5, #0x18] - ldr r2, _021D7D5C ; =0x021D9DB8 - add r1, #0x1c - bl FUN_02019150 - mov r0, #0xd8 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - add r0, r5, #0 - add r2, r4, #0 - add r0, #0x1c - mov r1, #0xf - add r3, r2, #0 - bl FUN_020196F4 - add r0, r5, #0 - ldr r2, _021D7D60 ; =0x000003E2 - add r0, #0x1c - add r1, r4, #0 - mov r3, #4 - bl FUN_0200D0BC - mov r0, #1 - bl FUN_02002B60 - add r0, r4, #0 - bl FUN_02002B7C - mov r0, #1 - ldr r1, [r5] - lsl r0, r0, #0xa - bl String_ctor - add r6, r0, #0 - mov r0, #1 - ldr r1, [r5] - lsl r0, r0, #0xa - bl String_ctor - str r0, [r5, #0x5c] - ldr r0, [r5, #0x4c] - add r1, r7, #0 - add r2, r6, #0 - bl ReadMsgDataIntoString - mov r0, #1 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r2, [r5, #0x70] - add r3, r5, #0 - add r3, #0x84 - ldr r0, [r5, #0x64] - ldr r2, [r2, #0x18] - ldr r3, [r3] - add r1, r4, #0 - bl BufferString - mov r1, #1 - str r1, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r2, [r5, #0x74] - ldr r0, [r5, #0x64] - ldr r2, [r2, #0x18] - add r3, r4, #0 - bl BufferString - ldr r0, [r5, #0x64] - ldr r1, [r5, #0x5c] - add r2, r6, #0 - bl StringExpandPlaceholders - add r0, r6, #0 - bl String_dtor - ldr r0, [r5, #8] - bl FUN_02024FF4 - add r3, r4, #0 - str r3, [sp] - str r0, [sp, #4] - str r3, [sp, #8] - add r0, r5, #0 - ldr r2, [r5, #0x5c] - add r0, #0x1c - mov r1, #1 - bl AddTextPrinterParameterized - str r0, [r5, #0x58] - mov r0, #1 - str r0, [r5, #0x50] - b _021D7D54 -_021D7D1C: - ldr r0, [r5, #0x58] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_0201BD70 - cmp r0, #0 - bne _021D7D54 - ldr r0, [r5, #0x5c] - bl String_dtor - mov r0, #2 - str r0, [r5, #0x50] - b _021D7D54 -_021D7D36: - cmp r2, #0 - bne _021D7D46 - ldr r0, _021D7D64 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - bne _021D7D54 -_021D7D46: - add r0, r5, #0 - add r0, #0x1c - bl FUN_02019178 - mov r0, #0 - str r0, [r5, #0x50] - mov r4, #1 -_021D7D54: - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021D7D5C: .word MOD59_021D9DB8 -_021D7D60: .word 0x000003E2 -_021D7D64: .word gMain - thumb_func_end MOD59_021D7C44 - - thumb_func_start MOD59_021D7D68 -MOD59_021D7D68: ; 0x021D7D68 - push {r3, lr} - cmp r2, #0 - bne _021D7D74 - ldr r0, _021D7D78 ; =0x000005DC - bl FUN_020054C8 -_021D7D74: - pop {r3, pc} - nop -_021D7D78: .word 0x000005DC - thumb_func_end MOD59_021D7D68 - - thumb_func_start MOD59_021D7D7C -MOD59_021D7D7C: ; 0x021D7D7C - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - mov r0, #0 - str r0, [sp] - ldr r0, [r5, #0x2c] - add r4, r2, #0 - cmp r0, #0 - beq _021D7D94 - cmp r0, #1 - beq _021D7E4C - b _021D7E96 -_021D7D94: - cmp r1, #0 - beq _021D7DA0 - cmp r1, #1 - beq _021D7DA8 - cmp r1, #2 - beq _021D7DB0 -_021D7DA0: - ldr r2, _021D7E9C ; =0x021D9DA8 - ldr r4, _021D7EA0 ; =0x021D9E0C - mov r6, #2 - b _021D7DC4 -_021D7DA8: - ldr r2, _021D7EA4 ; =0x021D9DB0 - ldr r4, _021D7EA8 ; =0x021D9E58 - mov r6, #3 - b _021D7DC4 -_021D7DB0: - ldr r0, _021D7EAC ; =gGameVersion - ldr r2, _021D7EB0 ; =0x021D9DA0 - ldrb r0, [r0] - cmp r0, #0xa - bne _021D7DC0 - ldr r4, _021D7EB4 ; =0x021D9F40 - mov r6, #5 - b _021D7DC4 -_021D7DC0: - ldr r4, _021D7EB8 ; =0x021D9F68 - mov r6, #5 -_021D7DC4: - add r1, r5, #0 - ldr r0, [r5, #0x18] - add r1, #0x30 - bl FUN_02019150 - ldr r1, [r5] - add r0, r6, #0 - bl ListMenu_ctor - mov r7, #0 - str r0, [r5, #0x44] - cmp r6, #0 - ble _021D7DF2 -_021D7DDE: - ldr r0, [r5, #0x44] - ldr r1, [r5, #0x4c] - ldr r2, [r4] - ldr r3, [r4, #4] - bl ListMenu_ItemFromMsgData - add r7, r7, #1 - add r4, #8 - cmp r7, r6 - blt _021D7DDE -_021D7DF2: - ldr r4, _021D7EBC ; =0x021D9EF8 - add r3, sp, #4 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0x44] - str r0, [sp, #4] - lsl r0, r6, #0x10 - lsr r1, r0, #0x10 - add r0, sp, #4 - strh r1, [r0, #0x10] - strh r1, [r0, #0x12] - ldr r0, _021D7EC0 ; =MOD59_021D7D68 - mov r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x30 - str r0, [sp, #0x10] - ldr r3, [r5] - add r0, r2, #0 - lsl r3, r3, #0x18 - add r2, r1, #0 - lsr r3, r3, #0x18 - bl FUN_020010A8 - str r0, [r5, #0x40] - ldr r0, [sp, #0x10] - ldr r2, _021D7EC4 ; =0x000003D9 - mov r1, #1 - mov r3, #3 - bl FUN_0200CCA4 - add r0, r5, #0 - add r0, #0x30 - bl FUN_020191D0 - mov r0, #1 - str r0, [r5, #0x2c] - b _021D7E96 -_021D7E4C: - ldr r0, [r5, #0x40] - bl FUN_02001204 - mov r1, #0 - mvn r1, r1 - str r0, [r5, #0x48] - cmp r0, r1 - beq _021D7E96 - sub r1, r1, #1 - cmp r0, r1 - bne _021D7E66 - cmp r4, #1 - beq _021D7E96 -_021D7E66: - add r0, r5, #0 - add r0, #0x30 - mov r1, #0 - bl FUN_0200CCF8 - add r0, r5, #0 - add r0, #0x30 - bl FUN_02019178 - mov r1, #0 - ldr r0, [r5, #0x40] - add r2, r1, #0 - bl FUN_02001300 - ldr r0, [r5, #0x44] - bl ListMenu_dtor - ldr r0, _021D7EC8 ; =0x000005DC - bl FUN_020054C8 - mov r0, #0 - str r0, [r5, #0x2c] - mov r0, #1 - str r0, [sp] -_021D7E96: - ldr r0, [sp] - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_021D7E9C: .word MOD59_021D9DA8 -_021D7EA0: .word MOD59_021D9E0C -_021D7EA4: .word MOD59_021D9DB0 -_021D7EA8: .word MOD59_021D9E58 -_021D7EAC: .word gGameVersion -_021D7EB0: .word MOD59_021D9DA0 -_021D7EB4: .word MOD59_021D9F40 -_021D7EB8: .word MOD59_021D9F68 -_021D7EBC: .word MOD59_021D9EF8 -_021D7EC0: .word MOD59_021D7D68 -_021D7EC4: .word 0x000003D9 -_021D7EC8: .word 0x000005DC - thumb_func_end MOD59_021D7D7C - - thumb_func_start MOD59_021D7ECC -MOD59_021D7ECC: ; 0x021D7ECC - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r4, r0, #0 - str r1, [sp, #0x10] - ldr r1, [r4, #0x54] - add r6, r2, #0 - add r7, r3, #0 - mov r5, #0 - cmp r1, #5 - bls _021D7EE2 - b _021D803C -_021D7EE2: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D7EEE: ; jump table - .short _021D7EFA - _021D7EEE - 2 ; case 0 - .short _021D7FD8 - _021D7EEE - 2 ; case 1 - .short _021D7FE4 - _021D7EEE - 2 ; case 2 - .short _021D7FF6 - _021D7EEE - 2 ; case 3 - .short _021D8016 - _021D7EEE - 2 ; case 4 - .short _021D8028 - _021D7EEE - 2 ; case 5 -_021D7EFA: - add r0, r5, #0 - add r1, r5, #0 - bl FUN_0201797C - mov r0, #1 - ldr r1, [r4] - lsl r0, r0, #0xa - bl String_ctor - str r0, [r4, #0x5c] - ldr r0, [r4, #0x4c] - ldr r1, [sp, #0x10] - ldr r2, [r4, #0x5c] - bl ReadMsgDataIntoString - cmp r6, #1 - add r0, sp, #0x14 - bne _021D7F7C - ldr r1, _021D8044 ; =0x021D9D90 - ldrh r2, [r1, #8] - strh r2, [r0] - ldrh r2, [r1, #0xa] - strh r2, [r0, #2] - ldrh r2, [r1, #0xc] - ldrh r1, [r1, #0xe] - strh r2, [r0, #4] - strh r1, [r0, #6] - ldr r0, [r4, #0x5c] - bl FUN_02002F90 - mov r1, #0xc - sub r2, r1, r0 - add r1, sp, #0x14 - strb r2, [r1, #2] - lsl r0, r0, #1 - strb r0, [r1, #4] - add r1, r4, #0 - ldr r0, [r4, #0x18] - add r1, #0x1c - add r2, sp, #0x14 - bl FUN_02019150 - add r1, r5, #0 - mov r0, #0xc0 - str r0, [sp] - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x1c - add r2, r1, #0 - add r3, r1, #0 - bl FUN_020196F4 - add r1, r5, #0 - str r1, [sp] - ldr r0, _021D8048 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, r4, #0 - ldr r2, [r4, #0x5c] - add r0, #0x1c - add r3, r1, #0 - bl AddTextPrinterParameterized2 - b _021D7FCC -_021D7F7C: - ldr r1, _021D8044 ; =0x021D9D90 - add r2, sp, #0x14 - ldrh r3, [r1] - strh r3, [r0] - ldrh r3, [r1, #2] - strh r3, [r0, #2] - ldrh r3, [r1, #4] - ldrh r1, [r1, #6] - strh r3, [r0, #4] - strh r1, [r0, #6] - ldr r1, [sp, #0x30] - strb r7, [r0, #2] - strb r1, [r0, #4] - add r1, r4, #0 - ldr r0, [r4, #0x18] - add r1, #0x1c - bl FUN_02019150 - add r1, r5, #0 - mov r0, #0xc0 - str r0, [sp] - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x1c - add r2, r1, #0 - add r3, r1, #0 - bl FUN_020196F4 - add r1, r5, #0 - str r1, [sp] - ldr r0, _021D804C ; =0x000F0200 - str r1, [sp, #4] - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, r4, #0 - ldr r2, [r4, #0x5c] - add r0, #0x1c - add r3, r1, #0 - bl AddTextPrinterParameterized2 -_021D7FCC: - ldr r0, [r4, #0x5c] - bl String_dtor - mov r0, #1 - str r0, [r4, #0x54] - b _021D803C -_021D7FD8: - add r0, #0x1c - bl FUN_020191D0 - mov r0, #2 - str r0, [r4, #0x54] - b _021D803C -_021D7FE4: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D803C - mov r0, #3 - str r0, [r4, #0x54] - b _021D803C -_021D7FF6: - ldr r0, _021D8050 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D800A - mov r0, #2 - and r0, r1 - cmp r0, #2 - bne _021D803C -_021D800A: - ldr r0, _021D8054 ; =0x000005DC - bl FUN_020054C8 - mov r0, #4 - str r0, [r4, #0x54] - b _021D803C -_021D8016: - add r1, r5, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D803C - mov r0, #5 - str r0, [r4, #0x54] - b _021D803C -_021D8028: - add r0, #0x1c - bl FUN_02019178 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - add r0, r5, #0 - str r0, [r4, #0x54] - mov r5, #1 -_021D803C: - add r0, r5, #0 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_021D8044: .word MOD59_021D9D90 -_021D8048: .word 0x00010200 -_021D804C: .word 0x000F0200 -_021D8050: .word gMain -_021D8054: .word 0x000005DC - thumb_func_end MOD59_021D7ECC - - thumb_func_start MOD59_021D8058 -MOD59_021D8058: ; 0x021D8058 - push {r3, r4, r5, lr} - sub sp, #0x10 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - add r5, r0, #0 - str r1, [sp, #8] - ldr r0, [r5] - mov r3, #3 - str r0, [sp, #0xc] - ldr r2, [r5, #0x18] - mov r0, #0x7d - bl FUN_0200687C - mov r0, #0 - ldr r3, [r5] - mov r1, #0x20 - add r2, r0, #0 - bl FUN_02017F18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5] - mov r1, #0x17 - str r0, [sp, #0xc] - ldr r2, [r5, #0x18] - mov r0, #0x7d - mov r3, #7 - bl FUN_0200687C - ldr r0, _021D80F8 ; =gGameVersion - ldrb r0, [r0] - cmp r0, #0xa - bne _021D80A6 - mov r1, #1 - mov r4, #0x18 - b _021D80AA -_021D80A6: - mov r1, #2 - mov r4, #0x19 -_021D80AA: - mov r0, #0x60 - str r0, [sp] - ldr r0, [r5] - mov r2, #0 - str r0, [sp, #4] - mov r0, #0x7d - add r3, r2, #0 - bl FUN_02006930 - mov r0, #0xa0 - str r0, [sp] - ldr r0, [r5] - add r1, r4, #0 - str r0, [sp, #4] - mov r0, #0x7d - mov r2, #4 - mov r3, #0 - bl FUN_02006930 - add r0, r5, #0 - bl MOD59_021D80FC - add r0, r5, #0 - bl MOD59_021D8140 - add r0, r5, #0 - bl MOD59_021D8234 - mov r0, #0 - add r1, r0, #0 - bl FUN_02017FE4 - mov r0, #4 - mov r1, #0 - bl FUN_02017FE4 - add sp, #0x10 - pop {r3, r4, r5, pc} - nop -_021D80F8: .word gGameVersion - thumb_func_end MOD59_021D8058 - - thumb_func_start MOD59_021D80FC -MOD59_021D80FC: ; 0x021D80FC - push {r4, r5, lr} - sub sp, #0x24 - ldr r5, _021D813C ; =0x021D9E1C - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #0x10 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - add r0, r3, #0 - add r0, #0x88 - ldrb r1, [r0] - cmp r1, #5 - bhs _021D8138 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r3] - lsl r1, r1, #2 - str r0, [sp, #0xc] - ldr r1, [r2, r1] - ldr r2, [r3, #0x18] - mov r0, #0x7d - mov r3, #3 - bl FUN_020068C8 -_021D8138: - add sp, #0x24 - pop {r4, r5, pc} - .align 2, 0 -_021D813C: .word MOD59_021D9E1C - thumb_func_end MOD59_021D80FC - - thumb_func_start MOD59_021D8140 -MOD59_021D8140: ; 0x021D8140 - push {r3, r4, r5, lr} - sub sp, #0x68 - ldr r5, _021D8230 ; =0x021D9F90 - add r4, r0, #0 - add r3, sp, #0x10 - mov r2, #0xb -_021D814C: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D814C - add r0, r4, #0 - add r0, #0x89 - ldrb r1, [r0] - cmp r1, #0 - beq _021D81BE - cmp r1, #0xc - bhs _021D81BE - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r2, r1, #3 - str r0, [sp, #0xc] - add r1, sp, #0x10 - ldr r1, [r1, r2] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_0200687C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x89 - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #0xe0 - lsl r2, r1, #3 - add r1, sp, #0x14 - ldr r1, [r1, r2] - mov r2, #0 - bl FUN_02006930 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x16 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #1 - mov r2, #7 - bl MOD59_021D7C10 -_021D81BE: - add r0, r4, #0 - add r0, #0x8a - ldrb r1, [r0] - cmp r1, #0 - beq _021D822A - cmp r1, #0xc - bhs _021D822A - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r2, r1, #3 - str r0, [sp, #0xc] - add r1, sp, #0x10 - ldr r1, [r1, r2] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #2 - bl FUN_0200687C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x8a - ldrb r1, [r1] - mov r0, #0x7d - add r3, r0, #0 - lsl r2, r1, #3 - add r1, sp, #0x14 - ldr r1, [r1, r2] - mov r2, #0 - add r3, #0x83 - bl FUN_02006930 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x16 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #2 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #2 - mov r2, #8 - bl MOD59_021D7C10 -_021D822A: - add sp, #0x68 - pop {r3, r4, r5, pc} - nop -_021D8230: .word MOD59_021D9F90 - thumb_func_end MOD59_021D8140 - - thumb_func_start MOD59_021D8234 -MOD59_021D8234: ; 0x021D8234 - push {r4, r5, lr} - sub sp, #0x24 - ldr r5, _021D829C ; =0x021D9E30 - add r4, r0, #0 - ldmia r5!, {r0, r1} - add r3, sp, #0x10 - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - str r0, [r3] - add r0, r4, #0 - add r0, #0x8b - ldrb r1, [r0] - cmp r1, #5 - bhs _021D8296 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - lsl r1, r1, #2 - str r0, [sp, #0xc] - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #7 - bl FUN_020068C8 - add r0, r4, #0 - add r0, #0x8b - ldrb r0, [r0] - cmp r0, #1 - bne _021D8288 - add r0, r4, #0 - mov r1, #7 - mov r2, #3 - bl MOD59_021D7C10 - add sp, #0x24 - pop {r4, r5, pc} -_021D8288: - cmp r0, #2 - bne _021D8296 - add r0, r4, #0 - mov r1, #7 - mov r2, #2 - bl MOD59_021D7C10 -_021D8296: - add sp, #0x24 - pop {r4, r5, pc} - nop -_021D829C: .word MOD59_021D9E30 - thumb_func_end MOD59_021D8234 - - thumb_func_start MOD59_021D82A0 -MOD59_021D82A0: ; 0x021D82A0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - mov r2, #0 - str r2, [sp] - str r2, [sp, #4] - add r5, r0, #0 - ldr r1, _021D83EC ; =0x000001BE - str r2, [sp, #8] - add r0, sp, #0x10 - mov r3, #2 - bl FUN_02068C00 - ldr r0, [r5] - mov r1, #0xc8 - bl AllocFromHeap - add r7, r0, #0 - ldr r2, _021D83F0 ; =0x021D9FE8 - mov r1, #0 - add r3, r7, #0 -_021D82C8: - ldrb r0, [r2] - add r1, r1, #1 - add r2, r2, #1 - add r0, r0, #1 - strh r0, [r3] - add r3, r3, #2 - cmp r1, #0x64 - blt _021D82C8 - add r1, sp, #0x10 - ldrh r0, [r1] - ldrh r1, [r1, #2] - ldr r2, [r5] - bl FUN_0201244C - add r1, sp, #0x10 - add r4, r0, #0 - ldrh r0, [r1] - ldrh r1, [r1, #4] - ldr r2, [r5] - bl FUN_02012470 - mov r2, #0 - add r6, r0, #0 - str r2, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x18 - str r0, [sp, #8] - mov r0, #9 - str r0, [sp, #0xc] - ldr r0, [r5, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_02018540 - mov r3, #0xb - str r3, [sp] - mov r0, #0xa - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0x18] - mov r1, #2 - add r2, r7, #0 - bl FUN_02018148 - add r0, r5, #0 - mov r1, #2 - mov r2, #9 - bl MOD59_021D7C10 - ldr r3, [r5] - mov r0, #2 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #1 - str r0, [sp] - mov r3, #0x32 - ldr r0, [r5, #0x18] - mov r1, #2 - add r2, r4, #0 - lsl r3, r3, #6 - bl FUN_02017E14 - mov r3, #0x20 - add r2, r3, #0 - mov r0, #2 - add r1, r6, #0 - add r3, #0xe0 - bl FUN_02017FB4 - mov r3, #0x12 - ldr r1, _021D83F4 ; =0x021D9ED8 - mov r0, #2 - mov r2, #0x20 - lsl r3, r3, #4 - bl FUN_02017FB4 - mov r2, #0 - str r2, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x18 - str r0, [sp, #8] - mov r0, #0xa - str r0, [sp, #0xc] - ldr r0, [r5, #0x18] - mov r1, #5 - add r3, r2, #0 - bl FUN_02018540 - mov r0, #7 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0x18] - mov r1, #5 - add r2, r7, #0 - mov r3, #0xb - bl FUN_02018148 - add r0, r5, #0 - mov r1, #5 - mov r2, #0xa - bl MOD59_021D7C10 - ldr r3, [r5] - mov r0, #5 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #1 - str r0, [sp] - mov r3, #0x32 - ldr r0, [r5, #0x18] - mov r1, #5 - add r2, r4, #0 - lsl r3, r3, #6 - bl FUN_02017E14 - mov r0, #5 - add r1, r6, #0 - mov r2, #0x20 - lsl r3, r0, #6 - bl FUN_02017FB4 - mov r0, #5 - ldr r1, _021D83F4 ; =0x021D9ED8 - mov r2, #0x20 - lsl r3, r0, #6 - bl FUN_02017FB4 - add r0, r6, #0 - bl FreeToHeap - add r0, r4, #0 - bl FreeToHeap - add r0, r7, #0 - bl FreeToHeap - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D83EC: .word 0x000001BE -_021D83F0: .word MOD59_021D9FE8 -_021D83F4: .word MOD59_021D9ED8 - thumb_func_end MOD59_021D82A0 - - thumb_func_start MOD59_021D83F8 -MOD59_021D83F8: ; 0x021D83F8 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x26 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #6 - bl FUN_020068C8 - add r0, r4, #0 - mov r1, #6 - mov r2, #9 - bl MOD59_021D7C10 - mov r0, #0x60 - str r0, [sp] - ldr r0, [r4] - mov r1, #0x27 - str r0, [sp, #4] - mov r0, #0x7d - mov r2, #4 - mov r3, #0xe0 - bl FUN_02006930 - ldr r3, [r4] - mov r0, #6 - mov r1, #0x20 - mov r2, #0 - bl FUN_02017F18 - mov r0, #0x20 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #0x1e - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - mov r3, #6 - bl FUN_0200687C - add sp, #0x10 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD59_021D83F8 - - thumb_func_start MOD59_021D8460 -MOD59_021D8460: ; 0x021D8460 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r6, #0 - cmp r2, #0 - bne _021D849C - ldr r0, [r5, #0x18] - bl FUN_02017B48 - cmp r0, #0 - beq _021D8498 - cmp r0, #0 - ldr r0, [r5, #0x18] - ble _021D848A - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - mov r2, #2 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D848A: - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - mov r2, #1 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D8498: - mov r6, #1 - b _021D84E2 -_021D849C: - cmp r2, #1 - bne _021D84C2 - ldr r0, [r5, #0x18] - bl FUN_02017B48 - add r1, r6, #0 - sub r1, #0x30 - cmp r0, r1 - beq _021D84BE - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - mov r2, #2 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D84BE: - mov r6, #1 - b _021D84E2 -_021D84C2: - cmp r2, #2 - bne _021D84E2 - ldr r0, [r5, #0x18] - bl FUN_02017B48 - cmp r0, #0 - beq _021D84E0 - lsl r1, r4, #0x18 - ldr r0, [r5, #0x18] - lsr r1, r1, #0x18 - mov r2, #1 - mov r3, #4 - bl FUN_020179E0 - b _021D84E2 -_021D84E0: - mov r6, #1 -_021D84E2: - add r0, r6, #0 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD59_021D8460 - - thumb_func_start MOD59_021D84E8 -MOD59_021D84E8: ; 0x021D84E8 - add r1, r0, #0 - mov r2, #0 - add r1, #0x8c - strb r2, [r1] - add r1, r0, #0 - add r1, #0x8d - strb r2, [r1] - add r1, r0, #0 - add r1, #0x8e - strb r2, [r1] - add r0, #0x8f - strb r2, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD59_021D84E8 - - thumb_func_start MOD59_021D8504 -MOD59_021D8504: ; 0x021D8504 - push {r3, r4, r5, lr} - sub sp, #0x30 - add r4, r0, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D858E - add r0, r4, #0 - add r0, #0x8d - ldrb r0, [r0] - cmp r0, #0 - beq _021D8526 - add r0, r4, #0 - add r0, #0x8d - ldrb r0, [r0] - sub r1, r0, #1 - b _021D8546 -_021D8526: - add r0, r4, #0 - add r0, #0x8c - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x8c - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8c - ldrb r1, [r0] - mov r0, #3 - and r1, r0 - add r0, r4, #0 - add r0, #0x8c - strb r1, [r0] - mov r1, #4 -_021D8546: - add r0, r4, #0 - add r0, #0x8d - strb r1, [r0] - mov r0, #0xa - str r0, [sp] - ldr r0, _021D860C ; =0x04000050 - mov r1, #4 - mov r2, #8 - mov r3, #6 - bl G2x_SetBlendAlpha_ - ldr r5, _021D8610 ; =0x021D9DEC - add r3, sp, #0x20 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #0xc] - add r1, #0x8c - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #1 - lsl r1, r1, #2 - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - bl FUN_0200687C - add sp, #0x30 - pop {r3, r4, r5, pc} -_021D858E: - add r0, r4, #0 - add r0, #0x8f - ldrb r0, [r0] - cmp r0, #0 - beq _021D85A2 - add r0, r4, #0 - add r0, #0x8f - ldrb r0, [r0] - sub r1, r0, #1 - b _021D85C2 -_021D85A2: - add r0, r4, #0 - add r0, #0x8e - ldrb r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x8e - strb r1, [r0] - add r0, r4, #0 - add r0, #0x8e - ldrb r1, [r0] - mov r0, #3 - and r1, r0 - add r0, r4, #0 - add r0, #0x8e - strb r1, [r0] - mov r1, #4 -_021D85C2: - add r0, r4, #0 - add r0, #0x8f - strb r1, [r0] - mov r0, #0xa - str r0, [sp] - ldr r0, _021D860C ; =0x04000050 - mov r1, #2 - mov r2, #8 - mov r3, #6 - bl G2x_SetBlendAlpha_ - ldr r5, _021D8614 ; =0x021D9DFC - add r3, sp, #0x10 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - add r1, r4, #0 - str r0, [sp, #0xc] - add r1, #0x8e - ldrb r1, [r1] - mov r0, #0x7d - mov r3, #2 - lsl r1, r1, #2 - ldr r1, [r2, r1] - ldr r2, [r4, #0x18] - bl FUN_0200687C - add sp, #0x30 - pop {r3, r4, r5, pc} - nop -_021D860C: .word 0x04000050 -_021D8610: .word MOD59_021D9DEC -_021D8614: .word MOD59_021D9DFC - thumb_func_end MOD59_021D8504 - - thumb_func_start MOD59_021D8618 -MOD59_021D8618: ; 0x021D8618 - ldr r0, _021D8620 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - bx lr - .align 2, 0 -_021D8620: .word 0x04000050 - thumb_func_end MOD59_021D8618 - - thumb_func_start MOD59_021D8624 -MOD59_021D8624: ; 0x021D8624 - add r1, r0, #0 - mov r2, #0 - add r1, #0x94 - str r2, [r1] - add r0, #0x98 - str r2, [r0] - bx lr - .align 2, 0 - thumb_func_end MOD59_021D8624 - - thumb_func_start MOD59_021D8634 -MOD59_021D8634: ; 0x021D8634 - push {r4, r5, r6, lr} - sub sp, #0x40 - add r3, r0, #0 - add r0, #0x98 - ldr r0, [r0] - mov r4, #0 - cmp r0, #0 - beq _021D864E - add r0, r3, #0 - add r0, #0x98 - ldr r0, [r0] - sub r1, r0, #1 - b _021D865E -_021D864E: - add r0, r3, #0 - add r0, #0x94 - ldr r0, [r0] - add r1, r0, #1 - add r0, r3, #0 - add r0, #0x94 - str r1, [r0] - mov r1, #8 -_021D865E: - add r0, r3, #0 - add r0, #0x98 - str r1, [r0] - add r0, r3, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D8674 - ldr r6, _021D86B4 ; =0x021D9E88 - add r5, sp, #0x28 - b _021D8678 -_021D8674: - ldr r6, _021D86B8 ; =0x021D9E70 - add r5, sp, #0x10 -_021D8678: - add r2, r5, #0 - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r5!, {r0, r1} - add r0, r3, #0 - add r0, #0x94 - ldr r0, [r0] - lsl r0, r0, #2 - ldr r1, [r2, r0] - cmp r1, #0xff - bne _021D8698 - mov r4, #1 - b _021D86AE -_021D8698: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r3] - str r0, [sp, #0xc] - ldr r2, [r3, #0x18] - mov r0, #0x7d - mov r3, #1 - bl FUN_0200687C -_021D86AE: - add r0, r4, #0 - add sp, #0x40 - pop {r4, r5, r6, pc} - .align 2, 0 -_021D86B4: .word MOD59_021D9E88 -_021D86B8: .word MOD59_021D9E70 - thumb_func_end MOD59_021D8634 - - thumb_func_start MOD59_021D86BC -MOD59_021D86BC: ; 0x021D86BC - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r4, r0, #0 - ldr r0, [r6] - mov r7, #0 - cmp r0, #5 - bls _021D86CC - b _021D890A -_021D86CC: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D86D8: ; jump table - .short _021D86E4 - _021D86D8 - 2 ; case 0 - .short _021D8728 - _021D86D8 - 2 ; case 1 - .short _021D87A6 - _021D86D8 - 2 ; case 2 - .short _021D87E0 - _021D86D8 - 2 ; case 3 - .short _021D887C - _021D86D8 - 2 ; case 4 - .short _021D88F8 - _021D86D8 - 2 ; case 5 -_021D86E4: - ldr r0, [r4, #0x18] - mov r1, #2 - add r2, r7, #0 - add r3, r7, #0 - bl FUN_020179E0 - mov r2, #3 - add r3, r2, #0 - ldr r0, [r4, #0x18] - mov r1, #2 - sub r3, #0x6b - bl FUN_020179E0 - mov r0, #2 - add r1, r7, #0 - bl FUN_020178BC - mov r0, #5 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #8 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #1 - str r0, [r6] - b _021D890A -_021D8728: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #5 - bl FUN_02017B54 - add r1, r4, #0 - add r1, #0xb0 - ldr r3, [r1] - add r1, r4, #0 - add r1, #0xac - ldr r2, [r1] - lsl r1, r2, #3 - add r1, r2, r1 - add r2, r3, #0 - mul r2, r1 - lsl r1, r3, #3 - add r1, r3, r1 - mul r1, r3 - lsr r3, r1, #0x1f - add r3, r1, r3 - asr r1, r3, #1 - sub r5, r2, r1 - cmp r0, #0x58 - bge _021D8792 - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - mov r1, #2 - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #5 - mov r2, #1 - mov r3, #2 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #5 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - b _021D890A -_021D8792: - mov r0, #5 - add r1, r7, #0 - bl FUN_0201797C - mov r0, #0x1e - add r4, #0xb0 - str r0, [r4] - mov r0, #2 - str r0, [r6] - b _021D890A -_021D87A6: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - cmp r0, #0 - beq _021D87BE - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - add r4, #0xb0 - sub r0, r0, #1 - str r0, [r4] - b _021D890A -_021D87BE: - mov r0, #2 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #9 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #3 - str r0, [r6] - b _021D890A -_021D87E0: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B54 - add r0, r4, #0 - add r0, #0xb0 - ldr r1, [r0] - add r0, r4, #0 - add r0, #0xac - ldr r2, [r0] - lsl r0, r2, #3 - add r0, r2, r0 - lsl r2, r1, #3 - add r2, r1, r2 - mul r0, r1 - mul r2, r1 - lsr r1, r2, #0x1f - add r1, r2, r1 - sub r0, #0x68 - asr r1, r1, #1 - sub r5, r0, r1 - add r0, r4, #0 - add r0, #0xa8 - ldr r0, [r0] - cmp r0, #0 - ble _021D8846 - cmp r5, #0 - bgt _021D8846 - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r7, #0 - bl FUN_020179E0 - add r0, r4, #0 - add r2, r7, #0 - add r0, #0xa8 - str r2, [r0] - add r0, r4, #0 - mov r1, #1 - add r0, #0xac - str r1, [r0] - add r4, #0xb0 - str r2, [r4] - mov r0, #4 - str r0, [r6] - b _021D890A -_021D8846: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - add r0, r4, #0 - add r0, #0xa8 - str r5, [r0] - ldr r0, [r4, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_020179E0 - asr r5, r5, #1 - cmp r5, #0x90 - ble _021D886E - mov r5, #0x90 -_021D886E: - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - b _021D890A -_021D887C: - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B48 - ldr r0, [r4, #0x18] - mov r1, #2 - bl FUN_02017B54 - add r0, r4, #0 - add r0, #0xb0 - ldr r1, [r0] - add r0, r4, #0 - add r0, #0xac - ldr r2, [r0] - lsl r0, r2, #3 - add r0, r2, r0 - lsl r2, r1, #3 - add r2, r1, r2 - mul r2, r1 - mul r0, r1 - lsr r1, r2, #0x1f - add r1, r2, r1 - asr r1, r1, #1 - sub r5, r0, r1 - add r0, r4, #0 - add r0, #0xa8 - ldr r0, [r0] - cmp r0, #0 - ble _021D88CC - cmp r5, #0 - bgt _021D88CC - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r7, #0 - bl FUN_020179E0 - mov r0, #5 - str r0, [r6] - b _021D890A -_021D88CC: - add r0, r4, #0 - add r0, #0xb0 - ldr r0, [r0] - mov r2, #1 - add r1, r0, #1 - add r0, r4, #0 - add r0, #0xb0 - str r1, [r0] - mov r1, #2 - ldr r0, [r4, #0x18] - add r3, r1, #0 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #2 - mov r2, #3 - add r3, r5, #0 - bl FUN_020179E0 - add r4, #0xa8 - str r5, [r4] - b _021D890A -_021D88F8: - ldr r0, _021D8910 ; =0x000001BE - bl FUN_02005578 - add r0, r4, #0 - mov r1, #2 - mov r2, #8 - bl MOD59_021D7C10 - mov r7, #1 -_021D890A: - add r0, r7, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D8910: .word 0x000001BE - thumb_func_end MOD59_021D86BC - - thumb_func_start MOD59_021D8914 -MOD59_021D8914: ; 0x021D8914 - ldr r3, _021D891C ; =FUN_020178BC - mov r0, #2 - mov r1, #1 - bx r3 - .align 2, 0 -_021D891C: .word FUN_020178BC - thumb_func_end MOD59_021D8914 - - thumb_func_start MOD59_021D8920 -MOD59_021D8920: ; 0x021D8920 - push {r4, r5, r6, lr} - sub sp, #0x30 - add r4, r0, #0 - ldr r1, [r4, #0xc] - mov r5, #0 - cmp r1, #0x6d - bls _021D8932 - bl _021D985C -_021D8932: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D893E: ; jump table - .short _021D8A1A - _021D893E - 2 ; case 0 - .short _021D8A5A - _021D893E - 2 ; case 1 - .short _021D8A76 - _021D893E - 2 ; case 2 - .short _021D8A92 - _021D893E - 2 ; case 3 - .short _021D8ADE - _021D893E - 2 ; case 4 - .short _021D8AEE - _021D893E - 2 ; case 5 - .short _021D8B02 - _021D893E - 2 ; case 6 - .short _021D8B16 - _021D893E - 2 ; case 7 - .short _021D8B60 - _021D893E - 2 ; case 8 - .short _021D8B80 - _021D893E - 2 ; case 9 - .short _021D8BA0 - _021D893E - 2 ; case 10 - .short _021D8BD8 - _021D893E - 2 ; case 11 - .short _021D8BE8 - _021D893E - 2 ; case 12 - .short _021D8C02 - _021D893E - 2 ; case 13 - .short _021D8C16 - _021D893E - 2 ; case 14 - .short _021D8C30 - _021D893E - 2 ; case 15 - .short _021D8C44 - _021D893E - 2 ; case 16 - .short _021D8C5E - _021D893E - 2 ; case 17 - .short _021D8C72 - _021D893E - 2 ; case 18 - .short _021D8C98 - _021D893E - 2 ; case 19 - .short _021D8CA8 - _021D893E - 2 ; case 20 - .short _021D8CBC - _021D893E - 2 ; case 21 - .short _021D8CF8 - _021D893E - 2 ; case 22 - .short _021D8D1C - _021D893E - 2 ; case 23 - .short _021D8D3E - _021D893E - 2 ; case 24 - .short _021D8D7C - _021D893E - 2 ; case 25 - .short _021D8D94 - _021D893E - 2 ; case 26 - .short _021D8DD6 - _021D893E - 2 ; case 27 - .short _021D8DEA - _021D893E - 2 ; case 28 - .short _021D8E34 - _021D893E - 2 ; case 29 - .short _021D8E44 - _021D893E - 2 ; case 30 - .short _021D8E58 - _021D893E - 2 ; case 31 - .short _021D8E90 - _021D893E - 2 ; case 32 - .short _021D8EA0 - _021D893E - 2 ; case 33 - .short _021D8EBE - _021D893E - 2 ; case 34 - .short _021D8ED6 - _021D893E - 2 ; case 35 - .short _021D8EF0 - _021D893E - 2 ; case 36 - .short _021D8F0A - _021D893E - 2 ; case 37 - .short _021D8F24 - _021D893E - 2 ; case 38 - .short _021D8F3E - _021D893E - 2 ; case 39 - .short _021D8F5E - _021D893E - 2 ; case 40 - .short _021D8F7E - _021D893E - 2 ; case 41 - .short _021D8F92 - _021D893E - 2 ; case 42 - .short _021D8FA6 - _021D893E - 2 ; case 43 - .short _021D8FC6 - _021D893E - 2 ; case 44 - .short _021D900C - _021D893E - 2 ; case 45 - .short _021D901C - _021D893E - 2 ; case 46 - .short _021D9030 - _021D893E - 2 ; case 47 - .short _021D9062 - _021D893E - 2 ; case 48 - .short _021D90CE - _021D893E - 2 ; case 49 - .short _021D90E2 - _021D893E - 2 ; case 50 - .short _021D9106 - _021D893E - 2 ; case 51 - .short _021D913E - _021D893E - 2 ; case 52 - .short _021D9178 - _021D893E - 2 ; case 53 - .short _021D9192 - _021D893E - 2 ; case 54 - .short _021D91E4 - _021D893E - 2 ; case 55 - .short _021D9208 - _021D893E - 2 ; case 56 - .short _021D921A - _021D893E - 2 ; case 57 - .short _021D922A - _021D893E - 2 ; case 58 - .short _021D9244 - _021D893E - 2 ; case 59 - .short _021D925C - _021D893E - 2 ; case 60 - .short _021D926C - _021D893E - 2 ; case 61 - .short _021D927E - _021D893E - 2 ; case 62 - .short _021D9290 - _021D893E - 2 ; case 63 - .short _021D92CA - _021D893E - 2 ; case 64 - .short _021D92DC - _021D893E - 2 ; case 65 - .short _021D92EE - _021D893E - 2 ; case 66 - .short _021D930A - _021D893E - 2 ; case 67 - .short _021D9384 - _021D893E - 2 ; case 68 - .short _021D9396 - _021D893E - 2 ; case 69 - .short _021D93AE - _021D893E - 2 ; case 70 - .short _021D93C0 - _021D893E - 2 ; case 71 - .short _021D93D8 - _021D893E - 2 ; case 72 - .short _021D93F8 - _021D893E - 2 ; case 73 - .short _021D942A - _021D893E - 2 ; case 74 - .short _021D944A - _021D893E - 2 ; case 75 - .short _021D945C - _021D893E - 2 ; case 76 - .short _021D9476 - _021D893E - 2 ; case 77 - .short _021D94DE - _021D893E - 2 ; case 78 - .short _021D94EC - _021D893E - 2 ; case 79 - .short _021D950C - _021D893E - 2 ; case 80 - .short _021D954E - _021D893E - 2 ; case 81 - .short _021D956E - _021D893E - 2 ; case 82 - .short _021D9586 - _021D893E - 2 ; case 83 - .short _021D9598 - _021D893E - 2 ; case 84 - .short _021D95AA - _021D893E - 2 ; case 85 - .short _021D95BC - _021D893E - 2 ; case 86 - .short _021D95D4 - _021D893E - 2 ; case 87 - .short _021D95E6 - _021D893E - 2 ; case 88 - .short _021D95F8 - _021D893E - 2 ; case 89 - .short _021D960A - _021D893E - 2 ; case 90 - .short _021D9672 - _021D893E - 2 ; case 91 - .short _021D9684 - _021D893E - 2 ; case 92 - .short _021D9696 - _021D893E - 2 ; case 93 - .short _021D96DE - _021D893E - 2 ; case 94 - .short _021D96EC - _021D893E - 2 ; case 95 - .short _021D96FE - _021D893E - 2 ; case 96 - .short _021D9738 - _021D893E - 2 ; case 97 - .short _021D974C - _021D893E - 2 ; case 98 - .short _021D9764 - _021D893E - 2 ; case 99 - .short _021D9788 - _021D893E - 2 ; case 100 - .short _021D9798 - _021D893E - 2 ; case 101 - .short _021D97B2 - _021D893E - 2 ; case 102 - .short _021D97CC - _021D893E - 2 ; case 103 - .short _021D97DC - _021D893E - 2 ; case 104 - .short _021D9812 - _021D893E - 2 ; case 105 - .short _021D982A - _021D893E - 2 ; case 106 - .short _021D983A - _021D893E - 2 ; case 107 - .short _021D9848 - _021D893E - 2 ; case 108 - .short _021D985A - _021D893E - 2 ; case 109 -_021D8A1A: - ldr r1, _021D8D70 ; =0x00000405 - mov r0, #2 - mov r2, #1 - bl FUN_0200433C - ldr r0, _021D8D70 ; =0x00000405 - add r1, r5, #0 - bl FUN_02005350 - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #0xc] - bl _021D985C -_021D8A5A: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - add r0, r4, #0 - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D8B22 - mov r0, #2 - str r0, [r4, #0xc] - bl _021D985C -_021D8A76: - add r1, r5, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #3 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8A92: - ldr r0, _021D8D70 ; =0x00000405 - bl FUN_0200521C - add r0, r4, #0 - mov r1, #1 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - mov r0, #0x10 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4] - mov r1, #1 - str r0, [sp, #8] - mov r0, #3 - add r2, r1, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #4 - str r0, [r4, #0xc] - bl _021D985C -_021D8ADE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8B22 - mov r0, #5 - str r0, [r4, #0xc] - bl _021D985C -_021D8AEE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8B22 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8B02: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8B22 - mov r0, #7 - str r0, [r4, #0xc] - bl _021D985C -_021D8B16: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D8B26 -_021D8B22: - bl _021D985C -_021D8B26: - ldr r0, [r4, #0x48] - cmp r0, #1 - beq _021D8B38 - cmp r0, #2 - beq _021D8B44 - cmp r0, #3 - beq _021D8B58 - bl _021D985C -_021D8B38: - mov r0, #0xa - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - bl _021D985C -_021D8B44: - mov r0, #0x1f - str r0, [r4, #0x10] - mov r0, #8 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8B58: - mov r0, #0x29 - str r0, [r4, #0xc] - bl _021D985C -_021D8B60: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #9 - str r0, [r4, #0xc] - bl _021D985C -_021D8B80: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #1 - add r1, r5, #0 - bl FUN_0201797C - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - bl _021D985C -_021D8BA0: - add r1, r4, #0 - mov r2, #1 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0xb - str r0, [r4, #0xc] - bl _021D985C -_021D8BD8: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8C84 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8BE8: - mov r1, #0x12 - str r1, [sp] - mov r1, #2 - add r2, r5, #0 - mov r3, #3 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xd - str r0, [r4, #0xc] - bl _021D985C -_021D8C02: - add r1, r4, #0 - mov r2, #2 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0xe - str r0, [r4, #0xc] - bl _021D985C -_021D8C16: - mov r1, #0xc - str r1, [sp] - mov r1, #3 - add r2, r5, #0 - mov r3, #7 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0xf - str r0, [r4, #0xc] - bl _021D985C -_021D8C30: - add r1, r4, #0 - mov r2, #3 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - mov r0, #0x10 - str r0, [r4, #0xc] - bl _021D985C -_021D8C44: - mov r1, #0xc - str r1, [sp] - mov r1, #4 - add r2, r5, #0 - add r3, r1, #0 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8C84 - mov r0, #0x11 - str r0, [r4, #0xc] - bl _021D985C -_021D8C5E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8C84 - mov r0, #0x12 - str r0, [r4, #0xc] - bl _021D985C -_021D8C72: - mov r1, #0xa - str r1, [sp] - mov r1, #5 - add r2, r5, #0 - mov r3, #4 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8C88 -_021D8C84: - bl _021D985C -_021D8C88: - mov r0, #0x13 - str r0, [r4, #0xc] - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - bl _021D985C -_021D8C98: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #0x14 - str r0, [r4, #0xc] - bl _021D985C -_021D8CA8: - mov r1, #7 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8DA0 - mov r0, #0x15 - str r0, [r4, #0xc] - bl _021D985C -_021D8CBC: - ldr r6, _021D8D74 ; =0x021D9E44 - add r3, sp, #0x1c - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r2, #0 - str r0, [r3] - ldr r0, [r4, #0x18] - str r0, [sp, #0x1c] - ldr r0, [r4, #0x68] - bl FUN_020145C8 - mov r0, #6 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - mov r1, #3 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8CF8: - ldr r0, _021D8D78 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D8D08 - mov r0, #0x1b - str r0, [r4, #0xc] - bl _021D985C -_021D8D08: - ldr r0, [r4, #0x68] - bl FUN_02014630 - sub r0, r0, #3 - cmp r0, #1 - bhi _021D8DA0 - mov r0, #0x17 - str r0, [r4, #0xc] - bl _021D985C -_021D8D1C: - ldr r0, [r4, #0x68] - bl FUN_02014630 - cmp r0, #1 - beq _021D8D2E - cmp r0, #2 - beq _021D8D36 - bl _021D985C -_021D8D2E: - mov r0, #0x18 - str r0, [r4, #0xc] - bl _021D985C -_021D8D36: - mov r0, #0x1a - str r0, [r4, #0xc] - bl _021D985C -_021D8D3E: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x68] - bl FUN_020146C4 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r5, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x19 - str r0, [r4, #0xc] - bl _021D985C - .align 2, 0 -_021D8D70: .word 0x00000405 -_021D8D74: .word MOD59_021D9E44 -_021D8D78: .word gMain -_021D8D7C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8DA0 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8D94: - mov r1, #6 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D8DA4 -_021D8DA0: - bl _021D985C -_021D8DA4: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - ldr r0, [r4, #0x68] - bl FUN_020146C4 - add r0, r4, #0 - mov r1, #1 - add r0, #0x88 - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #1 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #0xc - str r0, [r4, #0xc] - bl _021D985C -_021D8DD6: - mov r1, #8 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x16 - str r0, [r4, #0xc] - bl _021D985C -_021D8DEA: - add r1, r4, #0 - add r1, #0x88 - strb r5, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x1d - str r0, [r4, #0xc] - bl _021D985C -_021D8E34: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x1e - str r0, [r4, #0xc] - bl _021D985C -_021D8E44: - mov r1, #9 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8EB2 - mov r0, #6 - str r0, [r4, #0xc] - bl _021D985C -_021D8E58: - add r1, r4, #0 - mov r2, #4 - add r1, #0x88 - strb r2, [r1] - bl MOD59_021D80FC - add r0, r4, #0 - mov r1, #2 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x20 - str r0, [r4, #0xc] - bl _021D985C -_021D8E90: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8EB2 - mov r0, #0x21 - str r0, [r4, #0xc] - bl _021D985C -_021D8EA0: - mov r1, #6 - str r1, [sp] - mov r1, #0xa - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - beq _021D8EB6 -_021D8EB2: - bl _021D985C -_021D8EB6: - mov r0, #0x22 - str r0, [r4, #0xc] - bl _021D985C -_021D8EBE: - mov r3, #8 - mov r1, #0xb - mov r2, #1 - str r3, [sp] - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x23 - str r0, [r4, #0xc] - bl _021D985C -_021D8ED6: - mov r1, #6 - str r1, [sp] - mov r1, #0xc - mov r2, #1 - mov r3, #9 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x24 - str r0, [r4, #0xc] - bl _021D985C -_021D8EF0: - mov r1, #0xe - str r1, [sp] - mov r1, #0xd - mov r2, #1 - mov r3, #5 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x25 - str r0, [r4, #0xc] - bl _021D985C -_021D8F0A: - mov r1, #4 - str r1, [sp] - mov r1, #0xe - mov r2, #1 - mov r3, #0xa - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x26 - str r0, [r4, #0xc] - bl _021D985C -_021D8F24: - mov r1, #0xc - str r1, [sp] - mov r1, #0xf - mov r2, #1 - mov r3, #6 - bl MOD59_021D7ECC - cmp r0, #1 - bne _021D8FCE - mov r0, #0x27 - str r0, [r4, #0xc] - bl _021D985C -_021D8F3E: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x28 - str r0, [r4, #0xc] - bl _021D985C -_021D8F5E: - bl FUN_0200E308 - cmp r0, #1 - bne _021D8FCE - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #0x1c - str r0, [r4, #0xc] - bl _021D985C -_021D8F7E: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2a - str r0, [r4, #0xc] - bl _021D985C -_021D8F92: - mov r1, #0x10 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D8FCE - mov r0, #0x2b - str r0, [r4, #0xc] - bl _021D985C -_021D8FA6: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - add r1, r5, #0 - str r0, [sp, #8] - mov r0, #4 - add r2, r5, #0 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2c - str r0, [r4, #0xc] - bl _021D985C -_021D8FC6: - bl FUN_0200E308 - cmp r0, #1 - beq _021D8FD2 -_021D8FCE: - bl _021D985C -_021D8FD2: - add r0, r4, #0 - bl MOD59_021D83F8 - add r0, r4, #0 - mov r1, #4 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #6 - mov r1, #1 - bl FUN_0201797C - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #4 - add r3, r5, #0 - bl FUN_0200E1D0 - mov r0, #0x2d - str r0, [r4, #0xc] - bl _021D985C -_021D900C: - bl FUN_0200E308 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2e - str r0, [r4, #0xc] - bl _021D985C -_021D901C: - mov r1, #0x11 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D90DA - mov r0, #0x2f - str r0, [r4, #0xc] - bl _021D985C -_021D9030: - bl MOD59_021D7730 - cmp r0, #1 - bne _021D9054 - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r0, r4, #0 - add r0, #0x98 - str r1, [r0] - ldr r0, [r4, #0x18] - bl FUN_02018744 - mov r0, #0x30 - str r0, [r4, #0xc] - bl _021D985C -_021D9054: - ldr r0, _021D9370 ; =gMain - ldr r0, [r0, #0x48] - cmp r0, #0 - beq _021D90DA - mov r0, #0x31 - str r0, [r4, #0xc] - b _021D985C -_021D9062: - add r0, #0x98 - ldr r0, [r0] - cmp r0, #0 - beq _021D9078 - add r0, r4, #0 - add r0, #0x98 - ldr r0, [r0] - add r4, #0x98 - sub r0, r0, #1 - str r0, [r4] - b _021D985C -_021D9078: - ldr r6, _021D9374 ; =0x021D9DC0 - add r3, sp, #0x10 - ldmia r6!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r6] - str r0, [r3] - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - lsl r0, r0, #2 - ldr r1, [r2, r0] - ldr r0, _021D9378 ; =0x0000FFFF - cmp r1, r0 - bne _021D90A2 - ldr r0, _021D937C ; =0x00000706 - bl FUN_020054C8 - mov r0, #0x32 - str r0, [r4, #0xc] - b _021D985C -_021D90A2: - mov r0, #0x20 - str r0, [sp] - str r5, [sp, #4] - str r5, [sp, #8] - ldr r0, [r4] - mov r3, #6 - str r0, [sp, #0xc] - ldr r2, [r4, #0x18] - mov r0, #0x7d - bl FUN_0200687C - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0] - add r1, r0, #1 - add r0, r4, #0 - add r0, #0x94 - str r1, [r0] - mov r0, #4 - add r4, #0x98 - str r0, [r4] - b _021D985C -_021D90CE: - mov r1, #0x12 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D90DC -_021D90DA: - b _021D985C -_021D90DC: - mov r0, #0x2f - str r0, [r4, #0xc] - b _021D985C -_021D90E2: - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - str r0, [sp] - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #1 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x33 - str r0, [r4, #0xc] - b _021D985C -_021D9106: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xb - str r0, [sp] - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #1 - add r1, r5, #0 - mov r2, #0x10 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x34 - str r0, [r4, #0xc] - b _021D985C -_021D913E: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #1 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xb - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #4 - mov r1, #0x10 - add r2, r5, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x35 - str r0, [r4, #0xc] - b _021D985C -_021D9178: - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D91F6 - mov r0, #0x36 - str r0, [r4, #0xc] - b _021D985C -_021D9192: - bl MOD59_021D82A0 - mov r0, #6 - add r1, r5, #0 - bl FUN_0201797C - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x94 - str r1, [r0] - add r1, r4, #0 - add r0, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x8b - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8234 - mov r0, #1 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xb - bl FUN_0200A208 - mov r0, #2 - str r0, [sp] - mov r0, #0x10 - add r1, r5, #0 - add r2, r0, #0 - mov r3, #0xd - bl FUN_0200A208 - mov r0, #0x37 - str r0, [r4, #0xc] - b _021D985C -_021D91E4: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - mov r0, #1 - bl FUN_0200A344 - cmp r0, #1 - beq _021D91F8 -_021D91F6: - b _021D985C -_021D91F8: - mov r0, #2 - bl FUN_0200A344 - cmp r0, #1 - bne _021D92FA - mov r0, #0x38 - str r0, [r4, #0xc] - b _021D985C -_021D9208: - add r1, r4, #0 - add r1, #0x94 - bl MOD59_021D86BC - cmp r0, #1 - bne _021D92FA - mov r0, #0x39 - str r0, [r4, #0xc] - b _021D985C -_021D921A: - mov r1, #0x28 - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3a - str r0, [r4, #0xc] - b _021D985C -_021D922A: - mov r1, #0x13 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x3b - str r0, [r4, #0xc] - b _021D985C -_021D9244: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - add r0, r4, #0 - bl MOD59_021D8914 - mov r0, #0x3c - str r0, [r4, #0xc] - b _021D985C -_021D925C: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D92FA - mov r0, #0x3d - str r0, [r4, #0xc] - b _021D985C -_021D926C: - mov r1, #0x14 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3e - str r0, [r4, #0xc] - b _021D985C -_021D927E: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D9290: - bl MOD59_021D84E8 - add r0, r4, #0 - mov r1, #2 - add r0, #0x89 - strb r1, [r0] - add r0, r4, #0 - mov r1, #6 - add r0, #0x8a - strb r1, [r0] - add r0, r4, #0 - bl MOD59_021D8140 - add r2, r5, #0 - add r3, r2, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - sub r3, #0x30 - bl FUN_020179E0 - ldr r0, [r4, #0x18] - mov r1, #2 - add r2, r5, #0 - mov r3, #0x30 - bl FUN_020179E0 - mov r0, #0x40 - str r0, [r4, #0xc] - b _021D985C -_021D92CA: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x41 - str r0, [r4, #0xc] - b _021D985C -_021D92DC: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D92FA - mov r0, #0x42 - str r0, [r4, #0xc] - b _021D985C -_021D92EE: - mov r1, #0x15 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - beq _021D92FC -_021D92FA: - b _021D985C -_021D92FC: - add r0, r4, #0 - add r1, r5, #0 - add r0, #0x84 - str r1, [r0] - mov r0, #0x43 - str r0, [r4, #0xc] - b _021D985C -_021D930A: - ldr r0, _021D9370 ; =gMain - mov r1, #1 - ldr r0, [r0, #0x48] - and r1, r0 - cmp r1, #1 - bne _021D933C - mov r0, #6 - str r0, [r4, #0x7c] - add r0, r4, #0 - mov r1, #0xa - add r0, #0x80 - str r1, [r0] - mov r0, #2 - str r0, [r4, #0x78] - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9336 - mov r0, #0x44 - str r0, [r4, #0xc] - b _021D985C -_021D9336: - mov r0, #0x46 - str r0, [r4, #0xc] - b _021D985C -_021D933C: - mov r1, #0x20 - and r1, r0 - cmp r1, #0x20 - beq _021D934C - mov r1, #0x10 - and r0, r1 - cmp r0, #0x10 - bne _021D9368 -_021D934C: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D935A - mov r1, #1 - b _021D935C -_021D935A: - mov r1, #0 -_021D935C: - add r0, r4, #0 - add r0, #0x84 - str r1, [r0] - ldr r0, _021D9380 ; =0x000005DC - bl FUN_020054C8 -_021D9368: - add r0, r4, #0 - bl MOD59_021D8504 - b _021D985C - .align 2, 0 -_021D9370: .word gMain -_021D9374: .word MOD59_021D9DC0 -_021D9378: .word 0x0000FFFF -_021D937C: .word 0x00000706 -_021D9380: .word 0x000005DC -_021D9384: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x45 - str r0, [r4, #0xc] - b _021D985C -_021D9396: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_021D8618 - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93AE: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9414 - mov r0, #0x47 - str r0, [r4, #0xc] - b _021D985C -_021D93C0: - mov r1, #2 - add r2, r5, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9414 - add r0, r4, #0 - bl MOD59_021D8618 - mov r0, #0x48 - str r0, [r4, #0xc] - b _021D985C -_021D93D8: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D93E4 - mov r1, #0x16 - b _021D93E6 -_021D93E4: - mov r1, #0x17 -_021D93E6: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9414 - mov r0, #0x49 - str r0, [r4, #0xc] - b _021D985C -_021D93F8: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9414 - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D941C - cmp r1, #1 - beq _021D9416 - cmp r1, #2 - beq _021D941C -_021D9414: - b _021D985C -_021D9416: - mov r0, #0x4b - str r0, [r4, #0xc] - b _021D985C -_021D941C: - ldr r0, [r4, #0x18] - mov r1, #0 - bl FUN_02018744 - mov r0, #0x4a - str r0, [r4, #0xc] - b _021D985C -_021D942A: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D9436 - mov r1, #1 - b _021D9438 -_021D9436: - mov r1, #2 -_021D9438: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9530 - mov r0, #0x3f - str r0, [r4, #0xc] - b _021D985C -_021D944A: - mov r1, #0x18 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4c - str r0, [r4, #0xc] - b _021D985C -_021D945C: - add r0, #0x84 - ldr r1, [r0] - ldr r0, [r4, #0x70] - str r1, [r0, #4] - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x70] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x4d - str r0, [r4, #0xc] - b _021D985C -_021D9476: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94AE - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - b _021D94C2 -_021D94AE: - mov r0, #2 - mov r1, #1 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #2 - add r3, r2, #0 - bl FUN_020179E0 -_021D94C2: - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - mov r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x4e - str r0, [r4, #0xc] - b _021D985C -_021D94DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D9530 - mov r0, #0x4f - str r0, [r4, #0xc] - b _021D985C -_021D94EC: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D94F8 - mov r1, #0x19 - b _021D94FA -_021D94F8: - mov r1, #0x1a -_021D94FA: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9530 - mov r0, #0x50 - str r0, [r4, #0xc] - b _021D985C -_021D950C: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D9530 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D953C - cmp r1, #1 - beq _021D9532 - cmp r1, #2 - beq _021D953C -_021D9530: - b _021D985C -_021D9532: - mov r0, #0x52 - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D953C: - ldr r0, [r4, #0x70] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x3f - str r0, [r4, #0x10] - mov r0, #0x51 - str r0, [r4, #0xc] - b _021D985C -_021D954E: - add r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _021D955A - mov r1, #1 - b _021D955C -_021D955A: - mov r1, #2 -_021D955C: - add r0, r4, #0 - mov r2, #1 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - ldr r0, [r4, #0x10] - str r0, [r4, #0xc] - b _021D985C -_021D956E: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x53 - str r0, [r4, #0xc] - b _021D985C -_021D9586: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x54 - str r0, [r4, #0xc] - b _021D985C -_021D9598: - mov r1, #0x1b - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x55 - str r0, [r4, #0xc] - b _021D985C -_021D95AA: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x56 - str r0, [r4, #0xc] - b _021D985C -_021D95BC: - add r1, r4, #0 - mov r2, #0xa - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x57 - str r0, [r4, #0xc] - b _021D985C -_021D95D4: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D9616 - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D95E6: - mov r1, #0x1c - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D9616 - mov r0, #0x59 - str r0, [r4, #0xc] - b _021D985C -_021D95F8: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D9616 - mov r0, #0x5a - str r0, [r4, #0xc] - b _021D985C -_021D960A: - mov r1, #2 - mov r2, #1 - bl MOD59_021D7D7C - cmp r0, #1 - beq _021D9618 -_021D9616: - b _021D985C -_021D9618: - ldr r0, [r4, #0x48] - cmp r0, #5 - bhi _021D971A - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D962A: ; jump table - .short _021D985C - _021D962A - 2 ; case 0 - .short _021D9636 - _021D962A - 2 ; case 1 - .short _021D963C - _021D962A - 2 ; case 2 - .short _021D963C - _021D962A - 2 ; case 3 - .short _021D963C - _021D962A - 2 ; case 4 - .short _021D963C - _021D962A - 2 ; case 5 -_021D9636: - mov r0, #0x5c - str r0, [r4, #0xc] - b _021D985C -_021D963C: - ldr r1, _021D977C ; =gGameVersion - ldrb r1, [r1] - cmp r1, #0xa - bne _021D964C - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9780 ; =0x021D9F40 - b _021D9652 -_021D964C: - sub r0, r0, #1 - lsl r1, r0, #3 - ldr r0, _021D9784 ; =0x021D9F68 -_021D9652: - ldr r1, [r0, r1] - ldr r0, [r4, #0x4c] - bl NewString_ReadMsgData - add r6, r0, #0 - ldr r0, [r4, #0x74] - add r1, r6, #0 - ldr r0, [r0, #0x18] - bl StringCopy - add r0, r6, #0 - bl String_dtor - mov r0, #0x5b - str r0, [r4, #0xc] - b _021D985C -_021D9672: - mov r1, #1 - mov r2, #2 - bl MOD59_021D8460 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D9684: - ldr r0, _021D9778 ; =UNK_020FA5FC - ldr r1, [r4, #0x74] - ldr r2, [r4] - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x5d - str r0, [r4, #0xc] - b _021D985C -_021D9696: - add r0, r5, #0 - mov r1, #1 - bl FUN_0201797C - mov r0, #3 - mov r1, #1 - bl FUN_0201797C - mov r0, #7 - mov r1, #1 - bl FUN_0201797C - mov r0, #1 - add r1, r0, #0 - bl FUN_0201797C - add r2, r5, #0 - ldr r0, [r4, #0x18] - mov r1, #1 - add r3, r2, #0 - bl FUN_020179E0 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0x5e - str r0, [r4, #0xc] - b _021D985C -_021D96DE: - bl FUN_0200E308 - cmp r0, #1 - bne _021D971A - mov r0, #0x5f - str r0, [r4, #0xc] - b _021D985C -_021D96EC: - mov r1, #0x1d - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D971A - mov r0, #0x60 - str r0, [r4, #0xc] - b _021D985C -_021D96FE: - add r1, r5, #0 - add r2, r5, #0 - bl MOD59_021D7D7C - cmp r0, #1 - bne _021D971A - ldr r1, [r4, #0x48] - sub r0, r5, #2 - cmp r1, r0 - beq _021D972A - cmp r1, #1 - beq _021D971C - cmp r1, #2 - beq _021D972A -_021D971A: - b _021D985C -_021D971C: - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x61 - str r0, [r4, #0xc] - b _021D985C -_021D972A: - ldr r0, [r4, #0x74] - ldr r0, [r0, #0x18] - bl StringSetEmpty - mov r0, #0x58 - str r0, [r4, #0xc] - b _021D985C -_021D9738: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - beq _021D9746 - b _021D985C -_021D9746: - mov r0, #0x62 - str r0, [r4, #0xc] - b _021D985C -_021D974C: - add r1, r4, #0 - mov r2, #1 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - mov r0, #0x63 - str r0, [r4, #0xc] - b _021D985C -_021D9764: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - mov r0, #0x64 - str r0, [r4, #0xc] - b _021D985C - nop -_021D9778: .word UNK_020FA5FC -_021D977C: .word gGameVersion -_021D9780: .word MOD59_021D9F40 -_021D9784: .word MOD59_021D9F68 -_021D9788: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x65 - str r0, [r4, #0xc] - b _021D985C -_021D9798: - mov r1, #0x1e - mov r2, #1 - bl MOD59_021D7C44 - cmp r0, #1 - bne _021D985C - add r0, r5, #0 - mov r1, #0x32 - bl FUN_020053CC - mov r0, #0x66 - str r0, [r4, #0xc] - b _021D985C -_021D97B2: - mov r1, #1 - add r2, r1, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl FUN_02018744 - mov r0, #0x67 - str r0, [r4, #0xc] - b _021D985C -_021D97CC: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x68 - str r0, [r4, #0xc] - b _021D985C -_021D97DC: - add r1, r4, #0 - add r1, #0x84 - ldr r1, [r1] - cmp r1, #0 - bne _021D97FA - add r1, r4, #0 - mov r2, #2 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 - b _021D980C -_021D97FA: - add r1, r4, #0 - mov r2, #6 - add r1, #0x89 - strb r2, [r1] - add r1, r4, #0 - add r1, #0x8a - strb r5, [r1] - bl MOD59_021D8140 -_021D980C: - mov r0, #0x69 - str r0, [r4, #0xc] - b _021D985C -_021D9812: - mov r1, #1 - add r2, r5, #0 - bl MOD59_021D7A68 - cmp r0, #1 - bne _021D985C - add r0, r4, #0 - bl MOD59_021D8624 - mov r0, #0x6a - str r0, [r4, #0xc] - b _021D985C -_021D982A: - mov r1, #0x1e - bl MOD59_021D7BEC - cmp r0, #1 - bne _021D985C - mov r0, #0x6b - str r0, [r4, #0xc] - b _021D985C -_021D983A: - bl MOD59_021D8634 - cmp r0, #1 - bne _021D985C - mov r0, #0x6c - str r0, [r4, #0xc] - b _021D985C -_021D9848: - ldr r0, _021D9864 ; =0x021D9DDC - ldr r2, [r4] - add r1, r5, #0 - bl OverlayManager_new - str r0, [r4, #0x14] - mov r0, #0x6d - str r0, [r4, #0xc] - b _021D985C -_021D985A: - mov r5, #1 -_021D985C: - add r0, r5, #0 - add sp, #0x30 - pop {r4, r5, r6, pc} - nop -_021D9864: .word MOD59_021D9DDC - thumb_func_end MOD59_021D8920 - - .rodata - - .global MOD59_021D9D90 -MOD59_021D9D90: ; 0x021D9D90 - .byte 0x00, 0x08, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01, 0x00, 0x04, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01 - - .global MOD59_021D9DA0 -MOD59_021D9DA0: ; 0x021D9DA0 - .byte 0x00, 0x02, 0x03, 0x0E, 0x0A, 0x05, 0xE1, 0x02 - - .global MOD59_021D9DA8 -MOD59_021D9DA8: ; 0x021D9DA8 - .byte 0x00, 0x02, 0x03, 0x06, 0x04, 0x05, 0x55, 0x03 - - .global MOD59_021D9DB0 -MOD59_021D9DB0: ; 0x021D9DB0 - .byte 0x00, 0x01, 0x03, 0x10, 0x06, 0x05, 0x0D, 0x03 - - .global MOD59_021D9DB8 -MOD59_021D9DB8: ; 0x021D9DB8 - .byte 0x00, 0x02, 0x13, 0x1B, 0x04, 0x06, 0x6D, 0x03 - - .global MOD59_021D9DC0 -MOD59_021D9DC0: ; 0x021D9DC0 - .byte 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 - - .global MOD59_021D9DCC -MOD59_021D9DCC: ; 0x021D9DCC - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9DDC -MOD59_021D9DDC: ; 0x021D9DDC - .word MOD59_021D9868, MOD59_021D9898, MOD59_021D99F8, 0xFFFFFFFF - - .global MOD59_021D9DEC -MOD59_021D9DEC: ; 0x021D9DEC - .byte 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - - .global MOD59_021D9DFC -MOD59_021D9DFC: ; 0x021D9DFC - .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - - .global MOD59_021D9E0C -MOD59_021D9E0C: ; 0x021D9E0C - .byte 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global MOD59_021D9E1C -MOD59_021D9E1C: ; 0x021D9E1C - .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00 - - .global MOD59_021D9E30 -MOD59_021D9E30: ; 0x021D9E30 - .byte 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 - .byte 0x1D, 0x00, 0x00, 0x00 - - .global MOD59_021D9E44 -MOD59_021D9E44: ; 0x021D9E44 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0C, 0x08, 0x00, 0x00 - - .global MOD59_021D9E58 -MOD59_021D9E58: ; 0x021D9E58 - .byte 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global MOD59_021D9E70 -MOD59_021D9E70: ; 0x021D9E70 - .byte 0x0D, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00 - .byte 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 - - .global MOD59_021D9E88 -MOD59_021D9E88: ; 0x021D9E88 - .byte 0x08, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 - .byte 0x2B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 - - .global MOD59_021D9EA0 -MOD59_021D9EA0: ; 0x021D9EA0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9EBC -MOD59_021D9EBC: ; 0x021D9EBC - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9ED8 -MOD59_021D9ED8: ; 0x021D9ED8 - .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A - .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A - - .global MOD59_021D9EF8 -MOD59_021D9EF8: ; 0x021D9EF8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9F18 -MOD59_021D9F18: ; 0x021D9F18 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021D9F40 -MOD59_021D9F40: ; 0x021D9F40 - .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x28, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global MOD59_021D9F68 -MOD59_021D9F68: ; 0x021D9F68 - .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x2C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - - .global MOD59_021D9F90 -MOD59_021D9F90: ; 0x021D9F90 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 - - .global MOD59_021D9FE8 -MOD59_021D9FE8: ; 0x021D9FE8 - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x40, 0x41, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D - .byte 0x0E, 0x0F, 0x42, 0x43, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x44, 0x45, 0x18, 0x19 - .byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x46, 0x47, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 - .byte 0x48, 0x49, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x4A, 0x4B, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x4C, 0x4D, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x4E, 0x4F - .byte 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5A, 0x5B, 0x60, 0x61, 0x54, 0x55, 0x56, 0x57, 0x5C, 0x5D - .byte 0x5E, 0x5F, 0x62, 0x63 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s new file mode 100644 index 00000000..8358f768 --- /dev/null +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -0,0 +1,4482 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD59_021D7564 +MOD59_021D7564: ; 0x021D7564 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl OverlayManager_GetData + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D757A + b _021D76AC +_021D757A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7586: ; jump table + .short _021D7592 - _021D7586 - 2 ; case 0 + .short _021D75FA - _021D7586 - 2 ; case 1 + .short _021D7642 - _021D7586 - 2 ; case 2 + .short _021D7668 - _021D7586 - 2 ; case 3 + .short _021D7690 - _021D7586 - 2 ; case 4 + .short _021D76AA - _021D7586 - 2 ; case 5 +_021D7592: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76B4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76B8 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D778C + add r0, r4, #0 + bl MOD59_021D79F8 + add r0, r4, #0 + bl MOD59_021D7A4C + ldr r0, _021D76BC ; =MOD59_021D7724 + add r1, r4, #0 + bl Main_SetVBlankIntrCB + bl FUN_0201E788 + mov r0, #1 + str r0, [r5] + b _021D76AC +_021D75FA: + bl MOD59_021D8920 + cmp r0, #1 + bne _021D761E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] +_021D761E: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D76AC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D76AC +_021D7642: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + mov r6, #1 + b _021D76AC +_021D7668: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl Main_SetVBlankIntrCB + mov r0, #4 + str r0, [r5] + b _021D76AC +_021D7690: + ldr r0, [r4, #0x14] + bl OverlayManager_Run + cmp r0, #1 + bne _021D76AC + ldr r0, [r4, #0x14] + bl OverlayManager_delete + add r0, r6, #0 + str r0, [r4, #0x14] + mov r0, #5 + str r0, [r5] + b _021D76AC +_021D76AA: + str r6, [r5] +_021D76AC: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D76B4: .word 0xFFFFE0FF +_021D76B8: .word 0x04001000 +_021D76BC: .word MOD59_021D7724 + thumb_func_end MOD59_021D7564 + + thumb_func_start MOD59_021D76C0 +MOD59_021D76C0: ; 0x021D76C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl OverlayManager_GetData + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + bl Sav2_PlayerData_GetProfileAddr + ldr r1, [r4, #0x70] + ldr r1, [r1, #0x18] + bl PlayerName_StringToFlat + ldr r0, [r4, #4] + bl Sav2_PlayerData_GetProfileAddr + ldr r1, [r4, #0x70] + ldr r1, [r1, #4] + bl PlayerProfile_SetTrainerGender + ldr r0, [r4, #4] + bl FUN_02024EB4 + ldr r1, [r4, #0x74] + ldr r1, [r1, #0x18] + bl FUN_02024EF4 + ldr r0, [r4, #0x70] + bl FUN_02077AC4 + ldr r0, [r4, #0x74] + bl FUN_02077AC4 + add r0, r6, #0 + bl OverlayManager_FreeData + add r0, r5, #0 + bl FUN_020168D0 + ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID + ldr r1, _021D7720 ; =MOD52_021D76D8 + bl RegisterMainOverlay + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D771C: .word SDK_OVERLAY_MODULE_52_ID +_021D7720: .word MOD52_021D76D8 + thumb_func_end MOD59_021D76C0 + + thumb_func_start MOD59_021D7724 +MOD59_021D7724: ; 0x021D7724 + ldr r3, _021D772C ; =FUN_0201AB60 + ldr r0, [r0, #0x18] + bx r3 + nop +_021D772C: .word FUN_0201AB60 + thumb_func_end MOD59_021D7724 + + thumb_func_start MOD59_021D7730 +MOD59_021D7730: ; 0x021D7730 + push {r3, r4} + ldr r2, _021D7788 ; =gMain + 0x40 + mov r0, #0 + ldrh r1, [r2, #0x20] + cmp r1, #0 + beq _021D7784 + ldrh r3, [r2, #0x1c] + mov r1, #1 + lsl r1, r1, #8 + cmp r3, r1 + bhs _021D7784 + ldrh r2, [r2, #0x1e] + cmp r2, #0xc0 + bhs _021D7784 + cmp r3, #0x80 + bhs _021D7758 + mov r1, #0x80 + sub r1, r1, r3 + lsl r1, r1, #0x10 + b _021D775C +_021D7758: + sub r3, #0x80 + lsl r1, r3, #0x10 +_021D775C: + lsr r3, r1, #0x10 + cmp r2, #0x64 + bhs _021D776A + mov r1, #0x64 + sub r1, r1, r2 + lsl r1, r1, #0x10 + b _021D776E +_021D776A: + sub r2, #0x64 + lsl r1, r2, #0x10 +_021D776E: + lsr r4, r1, #0x10 + add r2, r3, #0 + add r1, r4, #0 + mul r2, r3 + mul r1, r4 + add r2, r2, r1 + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + bgt _021D7784 + mov r0, #1 +_021D7784: + pop {r3, r4} + bx lr + .align 2, 0 +_021D7788: .word gMain + 0x40 + thumb_func_end MOD59_021D7730 + + thumb_func_start MOD59_021D778C +MOD59_021D778C: ; 0x021D778C + push {r3, r4, r5, lr} + sub sp, #0x78 + ldr r5, _021D7954 ; =0x021D9F18 + add r4, r0, #0 + add r3, sp, #0x50 + mov r2, #5 +_021D7798: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7798 + add r0, sp, #0x50 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x40 + ldr r5, _021D7958 ; =0x021D9DCC + str r0, [r4, #0x18] + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D795C ; =0x021D9EA0 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + mov r0, #0xf + strb r0, [r2, #0x12] + mov r0, #6 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0xe + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #5 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + mov r0, #0xd + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #4 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + mov r0, #0xc + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r1, #3 + strb r1, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7960 ; =0x000003E2 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #4 + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7964 ; =0x000003D9 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #3 + bl FUN_0200CB00 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xa0 + bl FUN_02002ED0 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xc0 + bl FUN_02002EEC + ldr r5, _021D7968 ; =0x021D9EBC + add r3, sp, #8 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0xf + str r0, [r3] + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #6 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r1, #0xe + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #5 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02018744 + mov r1, #0xd + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #4 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #6 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_02018744 + mov r1, #0xc + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #3 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #7 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + add r0, r4, #0 + bl MOD59_021D8058 + mov r0, #0 + str r0, [r4, #0x78] + add sp, #0x78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7954: .word MOD59_021D9F18 +_021D7958: .word MOD59_021D9DCC +_021D795C: .word MOD59_021D9EA0 +_021D7960: .word 0x000003E2 +_021D7964: .word 0x000003D9 +_021D7968: .word MOD59_021D9EBC + thumb_func_end MOD59_021D778C + + thumb_func_start MOD59_021D796C +MOD59_021D796C: ; 0x021D796C + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD59_021D796C + + thumb_func_start MOD59_021D79F8 +MOD59_021D79F8: ; 0x021D79F8 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D7A30 ; =0x00000155 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl NewMsgDataFromNarc + str r0, [r4, #0x4c] + bl FUN_0201BD5C + mov r0, #0 + ldr r3, [r4] + add r1, r0, #0 + mov r2, #6 + bl FUN_020142EC + str r0, [r4, #0x60] + ldr r0, [r4] + bl ScrStrBufs_new + str r0, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #0x54] + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021D7A30: .word 0x00000155 + thumb_func_end MOD59_021D79F8 + + thumb_func_start MOD59_021D7A34 +MOD59_021D7A34: ; 0x021D7A34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + bl ScrStrBufs_delete + ldr r0, [r4, #0x60] + bl FUN_020143D0 + ldr r0, [r4, #0x4c] + bl DestroyMsgData + pop {r4, pc} + thumb_func_end MOD59_021D7A34 + + thumb_func_start MOD59_021D7A4C +MOD59_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02014590 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D7A4C + + thumb_func_start MOD59_021D7A5C +MOD59_021D7A5C: ; 0x021D7A5C + ldr r3, _021D7A64 ; =FUN_020145A8 + ldr r0, [r0, #0x68] + bx r3 + nop +_021D7A64: .word FUN_020145A8 + thumb_func_end MOD59_021D7A5C + + thumb_func_start MOD59_021D7A68 +MOD59_021D7A68: ; 0x021D7A68 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r3, r0, #0 + add r6, r2, #0 + mov r5, #0 + cmp r4, #6 + bhi _021D7A92 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7A84: ; jump table + .short _021D7A92 - _021D7A84 - 2 ; case 0 + .short _021D7A98 - _021D7A84 - 2 ; case 1 + .short _021D7A9E - _021D7A84 - 2 ; case 2 + .short _021D7A92 - _021D7A84 - 2 ; case 3 + .short _021D7AA4 - _021D7A84 - 2 ; case 4 + .short _021D7AAA - _021D7A84 - 2 ; case 5 + .short _021D7AB0 - _021D7A84 - 2 ; case 6 +_021D7A92: + mov r1, #1 + mov r0, #0 + b _021D7AB4 +_021D7A98: + mov r1, #2 + add r0, r5, #0 + b _021D7AB4 +_021D7A9E: + mov r1, #4 + add r0, r5, #0 + b _021D7AB4 +_021D7AA4: + mov r1, #1 + add r0, r1, #0 + b _021D7AB4 +_021D7AAA: + mov r1, #2 + mov r0, #1 + b _021D7AB4 +_021D7AB0: + mov r1, #4 + mov r0, #1 +_021D7AB4: + ldr r2, [r3, #0x78] + cmp r2, #3 + bls _021D7ABC + b _021D7BDE +_021D7ABC: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D7AC8: ; jump table + .short _021D7AD0 - _021D7AC8 - 2 ; case 0 + .short _021D7B2C - _021D7AC8 - 2 ; case 1 + .short _021D7B7C - _021D7AC8 - 2 ; case 2 + .short _021D7BD0 - _021D7AC8 - 2 ; case 3 +_021D7AD0: + cmp r6, #0 + bne _021D7B1A + mov r2, #0 + str r2, [r3, #0x7c] + add r2, r3, #0 + mov r6, #0x10 + add r2, #0x80 + str r6, [r2] + mov r2, #1 + str r2, [r3, #0x78] + cmp r0, #0 + bne _021D7AFC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7B0E +_021D7AFC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ +_021D7B0E: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C + b _021D7BDE +_021D7B1A: + mov r0, #0x10 + str r0, [r3, #0x7c] + add r0, r3, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B2C: + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + cmp r2, #0 + beq _021D7B76 + ldr r2, [r3, #0x7c] + add r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + sub r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7B62 + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B62: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B76: + mov r0, #3 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B7C: + ldr r2, [r3, #0x7c] + cmp r2, #0 + beq _021D7BC0 + sub r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + add r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7BAC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BAC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BC0: + mov r0, #3 + str r0, [r3, #0x78] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + b _021D7BDE +_021D7BD0: + ldr r0, _021D7BE4 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7BE8 ; =0x04001050 + mov r5, #1 + strh r1, [r0] + str r1, [r3, #0x78] +_021D7BDE: + add r0, r5, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D7BE4: .word 0x04000050 +_021D7BE8: .word 0x04001050 + thumb_func_end MOD59_021D7A68 + + thumb_func_start MOD59_021D7BEC +MOD59_021D7BEC: ; 0x021D7BEC + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, r1 + bge _021D7C06 + add r1, r0, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, #0x90 + add r1, r1, #1 + str r1, [r0] + mov r0, #0 + bx lr +_021D7C06: + mov r1, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #1 + bx lr + thumb_func_end MOD59_021D7BEC + + thumb_func_start MOD59_021D7C10 +MOD59_021D7C10: ; 0x021D7C10 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x18 + add r4, r1, #0 + lsr r0, r0, #0x18 + str r0, [sp, #8] + lsl r1, r4, #0x18 + mov r2, #0 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020186B4 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D7C10 + + thumb_func_start MOD59_021D7C44 +MOD59_021D7C44: ; 0x021D7C44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + beq _021D7C5E + cmp r0, #1 + beq _021D7D1C + cmp r0, #2 + beq _021D7D36 + b _021D7D54 +_021D7C5E: + add r1, r5, #0 + ldr r0, [r5, #0x18] + ldr r2, _021D7D5C ; =0x021D9DB8 + add r1, #0x1c + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + add r0, #0x1c + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + add r0, r5, #0 + ldr r2, _021D7D60 ; =0x000003E2 + add r0, #0x1c + add r1, r4, #0 + mov r3, #4 + bl FUN_0200D0BC + mov r0, #1 + bl FUN_02002B60 + add r0, r4, #0 + bl FUN_02002B7C + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl String_ctor + add r6, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl String_ctor + str r0, [r5, #0x5c] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + add r2, r6, #0 + bl ReadMsgDataIntoString + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x70] + add r3, r5, #0 + add r3, #0x84 + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + ldr r3, [r3] + add r1, r4, #0 + bl BufferString + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x74] + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + add r3, r4, #0 + bl BufferString + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x5c] + add r2, r6, #0 + bl StringExpandPlaceholders + add r0, r6, #0 + bl String_dtor + ldr r0, [r5, #8] + bl FUN_02024FF4 + add r3, r4, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x5c] + add r0, #0x1c + mov r1, #1 + bl AddTextPrinterParameterized + str r0, [r5, #0x58] + mov r0, #1 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D1C: + ldr r0, [r5, #0x58] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D7D54 + ldr r0, [r5, #0x5c] + bl String_dtor + mov r0, #2 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D36: + cmp r2, #0 + bne _021D7D46 + ldr r0, _021D7D64 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + bne _021D7D54 +_021D7D46: + add r0, r5, #0 + add r0, #0x1c + bl FUN_02019178 + mov r0, #0 + str r0, [r5, #0x50] + mov r4, #1 +_021D7D54: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021D7D5C: .word MOD59_021D9DB8 +_021D7D60: .word 0x000003E2 +_021D7D64: .word gMain + thumb_func_end MOD59_021D7C44 + + thumb_func_start MOD59_021D7D68 +MOD59_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r2, #0 + bne _021D7D74 + ldr r0, _021D7D78 ; =0x000005DC + bl FUN_020054C8 +_021D7D74: + pop {r3, pc} + nop +_021D7D78: .word 0x000005DC + thumb_func_end MOD59_021D7D68 + + thumb_func_start MOD59_021D7D7C +MOD59_021D7D7C: ; 0x021D7D7C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + add r4, r2, #0 + cmp r0, #0 + beq _021D7D94 + cmp r0, #1 + beq _021D7E4C + b _021D7E96 +_021D7D94: + cmp r1, #0 + beq _021D7DA0 + cmp r1, #1 + beq _021D7DA8 + cmp r1, #2 + beq _021D7DB0 +_021D7DA0: + ldr r2, _021D7E9C ; =0x021D9DA8 + ldr r4, _021D7EA0 ; =0x021D9E0C + mov r6, #2 + b _021D7DC4 +_021D7DA8: + ldr r2, _021D7EA4 ; =0x021D9DB0 + ldr r4, _021D7EA8 ; =0x021D9E58 + mov r6, #3 + b _021D7DC4 +_021D7DB0: + ldr r0, _021D7EAC ; =gGameVersion + ldr r2, _021D7EB0 ; =0x021D9DA0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7DC0 + ldr r4, _021D7EB4 ; =0x021D9F40 + mov r6, #5 + b _021D7DC4 +_021D7DC0: + ldr r4, _021D7EB8 ; =0x021D9F68 + mov r6, #5 +_021D7DC4: + add r1, r5, #0 + ldr r0, [r5, #0x18] + add r1, #0x30 + bl FUN_02019150 + ldr r1, [r5] + add r0, r6, #0 + bl ListMenu_ctor + mov r7, #0 + str r0, [r5, #0x44] + cmp r6, #0 + ble _021D7DF2 +_021D7DDE: + ldr r0, [r5, #0x44] + ldr r1, [r5, #0x4c] + ldr r2, [r4] + ldr r3, [r4, #4] + bl ListMenu_ItemFromMsgData + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _021D7DDE +_021D7DF2: + ldr r4, _021D7EBC ; =0x021D9EF8 + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x44] + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #4 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _021D7EC0 ; =MOD59_021D7D68 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x30 + str r0, [sp, #0x10] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + str r0, [r5, #0x40] + ldr r0, [sp, #0x10] + ldr r2, _021D7EC4 ; =0x000003D9 + mov r1, #1 + mov r3, #3 + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + str r0, [r5, #0x2c] + b _021D7E96 +_021D7E4C: + ldr r0, [r5, #0x40] + bl FUN_02001204 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #0x48] + cmp r0, r1 + beq _021D7E96 + sub r1, r1, #1 + cmp r0, r1 + bne _021D7E66 + cmp r4, #1 + beq _021D7E96 +_021D7E66: + add r0, r5, #0 + add r0, #0x30 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x30 + bl FUN_02019178 + mov r1, #0 + ldr r0, [r5, #0x40] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x44] + bl ListMenu_dtor + ldr r0, _021D7EC8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + mov r0, #1 + str r0, [sp] +_021D7E96: + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E9C: .word MOD59_021D9DA8 +_021D7EA0: .word MOD59_021D9E0C +_021D7EA4: .word MOD59_021D9DB0 +_021D7EA8: .word MOD59_021D9E58 +_021D7EAC: .word gGameVersion +_021D7EB0: .word MOD59_021D9DA0 +_021D7EB4: .word MOD59_021D9F40 +_021D7EB8: .word MOD59_021D9F68 +_021D7EBC: .word MOD59_021D9EF8 +_021D7EC0: .word MOD59_021D7D68 +_021D7EC4: .word 0x000003D9 +_021D7EC8: .word 0x000005DC + thumb_func_end MOD59_021D7D7C + + thumb_func_start MOD59_021D7ECC +MOD59_021D7ECC: ; 0x021D7ECC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r4, #0x54] + add r6, r2, #0 + add r7, r3, #0 + mov r5, #0 + cmp r1, #5 + bls _021D7EE2 + b _021D803C +_021D7EE2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7EEE: ; jump table + .short _021D7EFA - _021D7EEE - 2 ; case 0 + .short _021D7FD8 - _021D7EEE - 2 ; case 1 + .short _021D7FE4 - _021D7EEE - 2 ; case 2 + .short _021D7FF6 - _021D7EEE - 2 ; case 3 + .short _021D8016 - _021D7EEE - 2 ; case 4 + .short _021D8028 - _021D7EEE - 2 ; case 5 +_021D7EFA: + add r0, r5, #0 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl String_ctor + str r0, [r4, #0x5c] + ldr r0, [r4, #0x4c] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x5c] + bl ReadMsgDataIntoString + cmp r6, #1 + add r0, sp, #0x14 + bne _021D7F7C + ldr r1, _021D8044 ; =0x021D9D90 + ldrh r2, [r1, #8] + strh r2, [r0] + ldrh r2, [r1, #0xa] + strh r2, [r0, #2] + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #0x5c] + bl FUN_02002F90 + mov r1, #0xc + sub r2, r1, r0 + add r1, sp, #0x14 + strb r2, [r1, #2] + lsl r0, r0, #1 + strb r0, [r1, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + add r2, sp, #0x14 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D8048 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl AddTextPrinterParameterized2 + b _021D7FCC +_021D7F7C: + ldr r1, _021D8044 ; =0x021D9D90 + add r2, sp, #0x14 + ldrh r3, [r1] + strh r3, [r0] + ldrh r3, [r1, #2] + strh r3, [r0, #2] + ldrh r3, [r1, #4] + ldrh r1, [r1, #6] + strh r3, [r0, #4] + strh r1, [r0, #6] + ldr r1, [sp, #0x30] + strb r7, [r0, #2] + strb r1, [r0, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D804C ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl AddTextPrinterParameterized2 +_021D7FCC: + ldr r0, [r4, #0x5c] + bl String_dtor + mov r0, #1 + str r0, [r4, #0x54] + b _021D803C +_021D7FD8: + add r0, #0x1c + bl FUN_020191D0 + mov r0, #2 + str r0, [r4, #0x54] + b _021D803C +_021D7FE4: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #3 + str r0, [r4, #0x54] + b _021D803C +_021D7FF6: + ldr r0, _021D8050 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D800A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D803C +_021D800A: + ldr r0, _021D8054 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r4, #0x54] + b _021D803C +_021D8016: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #5 + str r0, [r4, #0x54] + b _021D803C +_021D8028: + add r0, #0x1c + bl FUN_02019178 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0x54] + mov r5, #1 +_021D803C: + add r0, r5, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D8044: .word MOD59_021D9D90 +_021D8048: .word 0x00010200 +_021D804C: .word 0x000F0200 +_021D8050: .word gMain +_021D8054: .word 0x000005DC + thumb_func_end MOD59_021D7ECC + + thumb_func_start MOD59_021D8058 +MOD59_021D8058: ; 0x021D8058 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r5, r0, #0 + str r1, [sp, #8] + ldr r0, [r5] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + bl FUN_0200687C + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_0200687C + ldr r0, _021D80F8 ; =gGameVersion + ldrb r0, [r0] + cmp r0, #0xa + bne _021D80A6 + mov r1, #1 + mov r4, #0x18 + b _021D80AA +_021D80A6: + mov r1, #2 + mov r4, #0x19 +_021D80AA: + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7d + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0xa0 + str r0, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r5, #0 + bl MOD59_021D80FC + add r0, r5, #0 + bl MOD59_021D8140 + add r0, r5, #0 + bl MOD59_021D8234 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word gGameVersion + thumb_func_end MOD59_021D8058 + + thumb_func_start MOD59_021D80FC +MOD59_021D80FC: ; 0x021D80FC + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D813C ; =0x021D9E1C + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #0x10 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r3, #0 + add r0, #0x88 + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8138 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #3 + bl FUN_020068C8 +_021D8138: + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_021D813C: .word MOD59_021D9E1C + thumb_func_end MOD59_021D80FC + + thumb_func_start MOD59_021D8140 +MOD59_021D8140: ; 0x021D8140 + push {r3, r4, r5, lr} + sub sp, #0x68 + ldr r5, _021D8230 ; =0x021D9F90 + add r4, r0, #0 + add r3, sp, #0x10 + mov r2, #0xb +_021D814C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D814C + add r0, r4, #0 + add r0, #0x89 + ldrb r1, [r0] + cmp r1, #0 + beq _021D81BE + cmp r1, #0xc + bhs _021D81BE + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x89 + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #0xe0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #1 + mov r2, #7 + bl MOD59_021D7C10 +_021D81BE: + add r0, r4, #0 + add r0, #0x8a + ldrb r1, [r0] + cmp r1, #0 + beq _021D822A + cmp r1, #0xc + bhs _021D822A + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x8a + ldrb r1, [r1] + mov r0, #0x7d + add r3, r0, #0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + add r3, #0x83 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 +_021D822A: + add sp, #0x68 + pop {r3, r4, r5, pc} + nop +_021D8230: .word MOD59_021D9F90 + thumb_func_end MOD59_021D8140 + + thumb_func_start MOD59_021D8234 +MOD59_021D8234: ; 0x021D8234 + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D829C ; =0x021D9E30 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x10 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + add r0, #0x8b + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8296 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_020068C8 + add r0, r4, #0 + add r0, #0x8b + ldrb r0, [r0] + cmp r0, #1 + bne _021D8288 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + bl MOD59_021D7C10 + add sp, #0x24 + pop {r4, r5, pc} +_021D8288: + cmp r0, #2 + bne _021D8296 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl MOD59_021D7C10 +_021D8296: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D829C: .word MOD59_021D9E30 + thumb_func_end MOD59_021D8234 + + thumb_func_start MOD59_021D82A0 +MOD59_021D82A0: ; 0x021D82A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + add r5, r0, #0 + ldr r1, _021D83EC ; =0x000001BE + str r2, [sp, #8] + add r0, sp, #0x10 + mov r3, #2 + bl FUN_02068C00 + ldr r0, [r5] + mov r1, #0xc8 + bl AllocFromHeap + add r7, r0, #0 + ldr r2, _021D83F0 ; =0x021D9FE8 + mov r1, #0 + add r3, r7, #0 +_021D82C8: + ldrb r0, [r2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r0, #1 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0x64 + blt _021D82C8 + add r1, sp, #0x10 + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r2, [r5] + bl FUN_0201244C + add r1, sp, #0x10 + add r4, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #4] + ldr r2, [r5] + bl FUN_02012470 + mov r2, #0 + add r6, r0, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + mov r3, #0xb + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r7, #0 + bl FUN_02018148 + add r0, r5, #0 + mov r1, #2 + mov r2, #9 + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r3, #0x20 + add r2, r3, #0 + mov r0, #2 + add r1, r6, #0 + add r3, #0xe0 + bl FUN_02017FB4 + mov r3, #0x12 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r0, #2 + mov r2, #0x20 + lsl r3, r3, #4 + bl FUN_02017FB4 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #7 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r7, #0 + mov r3, #0xb + bl FUN_02018148 + add r0, r5, #0 + mov r1, #5 + mov r2, #0xa + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r0, #5 + add r1, r6, #0 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + mov r0, #5 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + add r0, r6, #0 + bl FreeToHeap + add r0, r4, #0 + bl FreeToHeap + add r0, r7, #0 + bl FreeToHeap + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D83EC: .word 0x000001BE +_021D83F0: .word MOD59_021D9FE8 +_021D83F4: .word MOD59_021D9ED8 + thumb_func_end MOD59_021D82A0 + + thumb_func_start MOD59_021D83F8 +MOD59_021D83F8: ; 0x021D83F8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x26 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #6 + mov r2, #9 + bl MOD59_021D7C10 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4] + mov r1, #0x27 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0xe0 + bl FUN_02006930 + ldr r3, [r4] + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0x20 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x1e + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D83F8 + + thumb_func_start MOD59_021D8460 +MOD59_021D8460: ; 0x021D8460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + cmp r2, #0 + bne _021D849C + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D8498 + cmp r0, #0 + ldr r0, [r5, #0x18] + ble _021D848A + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D848A: + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D8498: + mov r6, #1 + b _021D84E2 +_021D849C: + cmp r2, #1 + bne _021D84C2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + add r1, r6, #0 + sub r1, #0x30 + cmp r0, r1 + beq _021D84BE + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84BE: + mov r6, #1 + b _021D84E2 +_021D84C2: + cmp r2, #2 + bne _021D84E2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D84E0 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84E0: + mov r6, #1 +_021D84E2: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD59_021D8460 + + thumb_func_start MOD59_021D84E8 +MOD59_021D84E8: ; 0x021D84E8 + add r1, r0, #0 + mov r2, #0 + add r1, #0x8c + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8d + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8e + strb r2, [r1] + add r0, #0x8f + strb r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D84E8 + + thumb_func_start MOD59_021D8504 +MOD59_021D8504: ; 0x021D8504 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r0, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D858E + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + cmp r0, #0 + beq _021D8526 + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + sub r1, r0, #1 + b _021D8546 +_021D8526: + add r0, r4, #0 + add r0, #0x8c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8c + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + mov r1, #4 +_021D8546: + add r0, r4, #0 + add r0, #0x8d + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8610 ; =0x021D9DEC + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8c + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #1 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} +_021D858E: + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + cmp r0, #0 + beq _021D85A2 + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + sub r1, r0, #1 + b _021D85C2 +_021D85A2: + add r0, r4, #0 + add r0, #0x8e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8e + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + mov r1, #4 +_021D85C2: + add r0, r4, #0 + add r0, #0x8f + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8614 ; =0x021D9DFC + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8e + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #2 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_021D860C: .word 0x04000050 +_021D8610: .word MOD59_021D9DEC +_021D8614: .word MOD59_021D9DFC + thumb_func_end MOD59_021D8504 + + thumb_func_start MOD59_021D8618 +MOD59_021D8618: ; 0x021D8618 + ldr r0, _021D8620 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_021D8620: .word 0x04000050 + thumb_func_end MOD59_021D8618 + + thumb_func_start MOD59_021D8624 +MOD59_021D8624: ; 0x021D8624 + add r1, r0, #0 + mov r2, #0 + add r1, #0x94 + str r2, [r1] + add r0, #0x98 + str r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D8624 + + thumb_func_start MOD59_021D8634 +MOD59_021D8634: ; 0x021D8634 + push {r4, r5, r6, lr} + sub sp, #0x40 + add r3, r0, #0 + add r0, #0x98 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _021D864E + add r0, r3, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + b _021D865E +_021D864E: + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r3, #0 + add r0, #0x94 + str r1, [r0] + mov r1, #8 +_021D865E: + add r0, r3, #0 + add r0, #0x98 + str r1, [r0] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D8674 + ldr r6, _021D86B4 ; =0x021D9E88 + add r5, sp, #0x28 + b _021D8678 +_021D8674: + ldr r6, _021D86B8 ; =0x021D9E70 + add r5, sp, #0x10 +_021D8678: + add r2, r5, #0 + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0xff + bne _021D8698 + mov r4, #1 + b _021D86AE +_021D8698: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + str r0, [sp, #0xc] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C +_021D86AE: + add r0, r4, #0 + add sp, #0x40 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D86B4: .word MOD59_021D9E88 +_021D86B8: .word MOD59_021D9E70 + thumb_func_end MOD59_021D8634 + + thumb_func_start MOD59_021D86BC +MOD59_021D86BC: ; 0x021D86BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + mov r7, #0 + cmp r0, #5 + bls _021D86CC + b _021D890A +_021D86CC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D86D8: ; jump table + .short _021D86E4 - _021D86D8 - 2 ; case 0 + .short _021D8728 - _021D86D8 - 2 ; case 1 + .short _021D87A6 - _021D86D8 - 2 ; case 2 + .short _021D87E0 - _021D86D8 - 2 ; case 3 + .short _021D887C - _021D86D8 - 2 ; case 4 + .short _021D88F8 - _021D86D8 - 2 ; case 5 +_021D86E4: + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r7, #0 + add r3, r7, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + sub r3, #0x6b + bl FUN_020179E0 + mov r0, #2 + add r1, r7, #0 + bl FUN_020178BC + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #1 + str r0, [r6] + b _021D890A +_021D8728: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02017B54 + add r1, r4, #0 + add r1, #0xb0 + ldr r3, [r1] + add r1, r4, #0 + add r1, #0xac + ldr r2, [r1] + lsl r1, r2, #3 + add r1, r2, r1 + add r2, r3, #0 + mul r2, r1 + lsl r1, r3, #3 + add r1, r3, r1 + mul r1, r3 + lsr r3, r1, #0x1f + add r3, r1, r3 + asr r1, r3, #1 + sub r5, r2, r1 + cmp r0, #0x58 + bge _021D8792 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #1 + mov r3, #2 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D8792: + mov r0, #5 + add r1, r7, #0 + bl FUN_0201797C + mov r0, #0x1e + add r4, #0xb0 + str r0, [r4] + mov r0, #2 + str r0, [r6] + b _021D890A +_021D87A6: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D87BE + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + add r4, #0xb0 + sub r0, r0, #1 + str r0, [r4] + b _021D890A +_021D87BE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #9 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #3 + str r0, [r6] + b _021D890A +_021D87E0: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r0, r1 + mul r2, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + sub r0, #0x68 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D8846 + cmp r5, #0 + bgt _021D8846 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #4 + str r0, [r6] + b _021D890A +_021D8846: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r5, [r0] + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + asr r5, r5, #1 + cmp r5, #0x90 + ble _021D886E + mov r5, #0x90 +_021D886E: + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D887C: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r2, r1 + mul r0, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D88CC + cmp r5, #0 + bgt _021D88CC + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + mov r0, #5 + str r0, [r6] + b _021D890A +_021D88CC: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + add r4, #0xa8 + str r5, [r4] + b _021D890A +_021D88F8: + ldr r0, _021D8910 ; =0x000001BE + bl FUN_02005578 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 + mov r7, #1 +_021D890A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8910: .word 0x000001BE + thumb_func_end MOD59_021D86BC + + thumb_func_start MOD59_021D8914 +MOD59_021D8914: ; 0x021D8914 + ldr r3, _021D891C ; =FUN_020178BC + mov r0, #2 + mov r1, #1 + bx r3 + .align 2, 0 +_021D891C: .word FUN_020178BC + thumb_func_end MOD59_021D8914 + + thumb_func_start MOD59_021D8920 +MOD59_021D8920: ; 0x021D8920 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r5, #0 + cmp r1, #0x6d + bls _021D8932 + bl _021D985C +_021D8932: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D893E: ; jump table + .short _021D8A1A - _021D893E - 2 ; case 0 + .short _021D8A5A - _021D893E - 2 ; case 1 + .short _021D8A76 - _021D893E - 2 ; case 2 + .short _021D8A92 - _021D893E - 2 ; case 3 + .short _021D8ADE - _021D893E - 2 ; case 4 + .short _021D8AEE - _021D893E - 2 ; case 5 + .short _021D8B02 - _021D893E - 2 ; case 6 + .short _021D8B16 - _021D893E - 2 ; case 7 + .short _021D8B60 - _021D893E - 2 ; case 8 + .short _021D8B80 - _021D893E - 2 ; case 9 + .short _021D8BA0 - _021D893E - 2 ; case 10 + .short _021D8BD8 - _021D893E - 2 ; case 11 + .short _021D8BE8 - _021D893E - 2 ; case 12 + .short _021D8C02 - _021D893E - 2 ; case 13 + .short _021D8C16 - _021D893E - 2 ; case 14 + .short _021D8C30 - _021D893E - 2 ; case 15 + .short _021D8C44 - _021D893E - 2 ; case 16 + .short _021D8C5E - _021D893E - 2 ; case 17 + .short _021D8C72 - _021D893E - 2 ; case 18 + .short _021D8C98 - _021D893E - 2 ; case 19 + .short _021D8CA8 - _021D893E - 2 ; case 20 + .short _021D8CBC - _021D893E - 2 ; case 21 + .short _021D8CF8 - _021D893E - 2 ; case 22 + .short _021D8D1C - _021D893E - 2 ; case 23 + .short _021D8D3E - _021D893E - 2 ; case 24 + .short _021D8D7C - _021D893E - 2 ; case 25 + .short _021D8D94 - _021D893E - 2 ; case 26 + .short _021D8DD6 - _021D893E - 2 ; case 27 + .short _021D8DEA - _021D893E - 2 ; case 28 + .short _021D8E34 - _021D893E - 2 ; case 29 + .short _021D8E44 - _021D893E - 2 ; case 30 + .short _021D8E58 - _021D893E - 2 ; case 31 + .short _021D8E90 - _021D893E - 2 ; case 32 + .short _021D8EA0 - _021D893E - 2 ; case 33 + .short _021D8EBE - _021D893E - 2 ; case 34 + .short _021D8ED6 - _021D893E - 2 ; case 35 + .short _021D8EF0 - _021D893E - 2 ; case 36 + .short _021D8F0A - _021D893E - 2 ; case 37 + .short _021D8F24 - _021D893E - 2 ; case 38 + .short _021D8F3E - _021D893E - 2 ; case 39 + .short _021D8F5E - _021D893E - 2 ; case 40 + .short _021D8F7E - _021D893E - 2 ; case 41 + .short _021D8F92 - _021D893E - 2 ; case 42 + .short _021D8FA6 - _021D893E - 2 ; case 43 + .short _021D8FC6 - _021D893E - 2 ; case 44 + .short _021D900C - _021D893E - 2 ; case 45 + .short _021D901C - _021D893E - 2 ; case 46 + .short _021D9030 - _021D893E - 2 ; case 47 + .short _021D9062 - _021D893E - 2 ; case 48 + .short _021D90CE - _021D893E - 2 ; case 49 + .short _021D90E2 - _021D893E - 2 ; case 50 + .short _021D9106 - _021D893E - 2 ; case 51 + .short _021D913E - _021D893E - 2 ; case 52 + .short _021D9178 - _021D893E - 2 ; case 53 + .short _021D9192 - _021D893E - 2 ; case 54 + .short _021D91E4 - _021D893E - 2 ; case 55 + .short _021D9208 - _021D893E - 2 ; case 56 + .short _021D921A - _021D893E - 2 ; case 57 + .short _021D922A - _021D893E - 2 ; case 58 + .short _021D9244 - _021D893E - 2 ; case 59 + .short _021D925C - _021D893E - 2 ; case 60 + .short _021D926C - _021D893E - 2 ; case 61 + .short _021D927E - _021D893E - 2 ; case 62 + .short _021D9290 - _021D893E - 2 ; case 63 + .short _021D92CA - _021D893E - 2 ; case 64 + .short _021D92DC - _021D893E - 2 ; case 65 + .short _021D92EE - _021D893E - 2 ; case 66 + .short _021D930A - _021D893E - 2 ; case 67 + .short _021D9384 - _021D893E - 2 ; case 68 + .short _021D9396 - _021D893E - 2 ; case 69 + .short _021D93AE - _021D893E - 2 ; case 70 + .short _021D93C0 - _021D893E - 2 ; case 71 + .short _021D93D8 - _021D893E - 2 ; case 72 + .short _021D93F8 - _021D893E - 2 ; case 73 + .short _021D942A - _021D893E - 2 ; case 74 + .short _021D944A - _021D893E - 2 ; case 75 + .short _021D945C - _021D893E - 2 ; case 76 + .short _021D9476 - _021D893E - 2 ; case 77 + .short _021D94DE - _021D893E - 2 ; case 78 + .short _021D94EC - _021D893E - 2 ; case 79 + .short _021D950C - _021D893E - 2 ; case 80 + .short _021D954E - _021D893E - 2 ; case 81 + .short _021D956E - _021D893E - 2 ; case 82 + .short _021D9586 - _021D893E - 2 ; case 83 + .short _021D9598 - _021D893E - 2 ; case 84 + .short _021D95AA - _021D893E - 2 ; case 85 + .short _021D95BC - _021D893E - 2 ; case 86 + .short _021D95D4 - _021D893E - 2 ; case 87 + .short _021D95E6 - _021D893E - 2 ; case 88 + .short _021D95F8 - _021D893E - 2 ; case 89 + .short _021D960A - _021D893E - 2 ; case 90 + .short _021D9672 - _021D893E - 2 ; case 91 + .short _021D9684 - _021D893E - 2 ; case 92 + .short _021D9696 - _021D893E - 2 ; case 93 + .short _021D96DE - _021D893E - 2 ; case 94 + .short _021D96EC - _021D893E - 2 ; case 95 + .short _021D96FE - _021D893E - 2 ; case 96 + .short _021D9738 - _021D893E - 2 ; case 97 + .short _021D974C - _021D893E - 2 ; case 98 + .short _021D9764 - _021D893E - 2 ; case 99 + .short _021D9788 - _021D893E - 2 ; case 100 + .short _021D9798 - _021D893E - 2 ; case 101 + .short _021D97B2 - _021D893E - 2 ; case 102 + .short _021D97CC - _021D893E - 2 ; case 103 + .short _021D97DC - _021D893E - 2 ; case 104 + .short _021D9812 - _021D893E - 2 ; case 105 + .short _021D982A - _021D893E - 2 ; case 106 + .short _021D983A - _021D893E - 2 ; case 107 + .short _021D9848 - _021D893E - 2 ; case 108 + .short _021D985A - _021D893E - 2 ; case 109 +_021D8A1A: + ldr r1, _021D8D70 ; =0x00000405 + mov r0, #2 + mov r2, #1 + bl FUN_0200433C + ldr r0, _021D8D70 ; =0x00000405 + add r1, r5, #0 + bl FUN_02005350 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0xc] + bl _021D985C +_021D8A5A: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + add r0, r4, #0 + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D8B22 + mov r0, #2 + str r0, [r4, #0xc] + bl _021D985C +_021D8A76: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #3 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8A92: + ldr r0, _021D8D70 ; =0x00000405 + bl FUN_0200521C + add r0, r4, #0 + mov r1, #1 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #0x10 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r4, #0xc] + bl _021D985C +_021D8ADE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + mov r0, #5 + str r0, [r4, #0xc] + bl _021D985C +_021D8AEE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8B02: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8B22 + mov r0, #7 + str r0, [r4, #0xc] + bl _021D985C +_021D8B16: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D8B26 +_021D8B22: + bl _021D985C +_021D8B26: + ldr r0, [r4, #0x48] + cmp r0, #1 + beq _021D8B38 + cmp r0, #2 + beq _021D8B44 + cmp r0, #3 + beq _021D8B58 + bl _021D985C +_021D8B38: + mov r0, #0xa + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + bl _021D985C +_021D8B44: + mov r0, #0x1f + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8B58: + mov r0, #0x29 + str r0, [r4, #0xc] + bl _021D985C +_021D8B60: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #9 + str r0, [r4, #0xc] + bl _021D985C +_021D8B80: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #1 + add r1, r5, #0 + bl FUN_0201797C + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + bl _021D985C +_021D8BA0: + add r1, r4, #0 + mov r2, #1 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xb + str r0, [r4, #0xc] + bl _021D985C +_021D8BD8: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8BE8: + mov r1, #0x12 + str r1, [sp] + mov r1, #2 + add r2, r5, #0 + mov r3, #3 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xd + str r0, [r4, #0xc] + bl _021D985C +_021D8C02: + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0xe + str r0, [r4, #0xc] + bl _021D985C +_021D8C16: + mov r1, #0xc + str r1, [sp] + mov r1, #3 + add r2, r5, #0 + mov r3, #7 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xf + str r0, [r4, #0xc] + bl _021D985C +_021D8C30: + add r1, r4, #0 + mov r2, #3 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0x10 + str r0, [r4, #0xc] + bl _021D985C +_021D8C44: + mov r1, #0xc + str r1, [sp] + mov r1, #4 + add r2, r5, #0 + add r3, r1, #0 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0x11 + str r0, [r4, #0xc] + bl _021D985C +_021D8C5E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8C84 + mov r0, #0x12 + str r0, [r4, #0xc] + bl _021D985C +_021D8C72: + mov r1, #0xa + str r1, [sp] + mov r1, #5 + add r2, r5, #0 + mov r3, #4 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8C88 +_021D8C84: + bl _021D985C +_021D8C88: + mov r0, #0x13 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8C98: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x14 + str r0, [r4, #0xc] + bl _021D985C +_021D8CA8: + mov r1, #7 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8DA0 + mov r0, #0x15 + str r0, [r4, #0xc] + bl _021D985C +_021D8CBC: + ldr r6, _021D8D74 ; =0x021D9E44 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x68] + bl FUN_020145C8 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + mov r1, #3 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8CF8: + ldr r0, _021D8D78 ; =gMain + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D8D08 + mov r0, #0x1b + str r0, [r4, #0xc] + bl _021D985C +_021D8D08: + ldr r0, [r4, #0x68] + bl FUN_02014630 + sub r0, r0, #3 + cmp r0, #1 + bhi _021D8DA0 + mov r0, #0x17 + str r0, [r4, #0xc] + bl _021D985C +_021D8D1C: + ldr r0, [r4, #0x68] + bl FUN_02014630 + cmp r0, #1 + beq _021D8D2E + cmp r0, #2 + beq _021D8D36 + bl _021D985C +_021D8D2E: + mov r0, #0x18 + str r0, [r4, #0xc] + bl _021D985C +_021D8D36: + mov r0, #0x1a + str r0, [r4, #0xc] + bl _021D985C +_021D8D3E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x19 + str r0, [r4, #0xc] + bl _021D985C + .align 2, 0 +_021D8D70: .word 0x00000405 +_021D8D74: .word MOD59_021D9E44 +_021D8D78: .word gMain +_021D8D7C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8D94: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D8DA4 +_021D8DA0: + bl _021D985C +_021D8DA4: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8DD6: + mov r1, #8 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8DEA: + add r1, r4, #0 + add r1, #0x88 + strb r5, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x1d + str r0, [r4, #0xc] + bl _021D985C +_021D8E34: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x1e + str r0, [r4, #0xc] + bl _021D985C +_021D8E44: + mov r1, #9 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8E58: + add r1, r4, #0 + mov r2, #4 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #2 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x20 + str r0, [r4, #0xc] + bl _021D985C +_021D8E90: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x21 + str r0, [r4, #0xc] + bl _021D985C +_021D8EA0: + mov r1, #6 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8EB6 +_021D8EB2: + bl _021D985C +_021D8EB6: + mov r0, #0x22 + str r0, [r4, #0xc] + bl _021D985C +_021D8EBE: + mov r3, #8 + mov r1, #0xb + mov r2, #1 + str r3, [sp] + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x23 + str r0, [r4, #0xc] + bl _021D985C +_021D8ED6: + mov r1, #6 + str r1, [sp] + mov r1, #0xc + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x24 + str r0, [r4, #0xc] + bl _021D985C +_021D8EF0: + mov r1, #0xe + str r1, [sp] + mov r1, #0xd + mov r2, #1 + mov r3, #5 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x25 + str r0, [r4, #0xc] + bl _021D985C +_021D8F0A: + mov r1, #4 + str r1, [sp] + mov r1, #0xe + mov r2, #1 + mov r3, #0xa + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x26 + str r0, [r4, #0xc] + bl _021D985C +_021D8F24: + mov r1, #0xc + str r1, [sp] + mov r1, #0xf + mov r2, #1 + mov r3, #6 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x27 + str r0, [r4, #0xc] + bl _021D985C +_021D8F3E: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x28 + str r0, [r4, #0xc] + bl _021D985C +_021D8F5E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8FCE + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8F7E: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2a + str r0, [r4, #0xc] + bl _021D985C +_021D8F92: + mov r1, #0x10 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2b + str r0, [r4, #0xc] + bl _021D985C +_021D8FA6: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #4 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2c + str r0, [r4, #0xc] + bl _021D985C +_021D8FC6: + bl FUN_0200E308 + cmp r0, #1 + beq _021D8FD2 +_021D8FCE: + bl _021D985C +_021D8FD2: + add r0, r4, #0 + bl MOD59_021D83F8 + add r0, r4, #0 + mov r1, #4 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #4 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2d + str r0, [r4, #0xc] + bl _021D985C +_021D900C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2e + str r0, [r4, #0xc] + bl _021D985C +_021D901C: + mov r1, #0x11 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2f + str r0, [r4, #0xc] + bl _021D985C +_021D9030: + bl MOD59_021D7730 + cmp r0, #1 + bne _021D9054 + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4, #0x18] + bl FUN_02018744 + mov r0, #0x30 + str r0, [r4, #0xc] + bl _021D985C +_021D9054: + ldr r0, _021D9370 ; =gMain + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D90DA + mov r0, #0x31 + str r0, [r4, #0xc] + b _021D985C +_021D9062: + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021D9078 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r4, #0x98 + sub r0, r0, #1 + str r0, [r4] + b _021D985C +_021D9078: + ldr r6, _021D9374 ; =0x021D9DC0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + ldr r0, _021D9378 ; =0x0000FFFF + cmp r1, r0 + bne _021D90A2 + ldr r0, _021D937C ; =0x00000706 + bl FUN_020054C8 + mov r0, #0x32 + str r0, [r4, #0xc] + b _021D985C +_021D90A2: + mov r0, #0x20 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [r4] + mov r3, #6 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + bl FUN_0200687C + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + mov r0, #4 + add r4, #0x98 + str r0, [r4] + b _021D985C +_021D90CE: + mov r1, #0x12 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D90DC +_021D90DA: + b _021D985C +_021D90DC: + mov r0, #0x2f + str r0, [r4, #0xc] + b _021D985C +_021D90E2: + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x33 + str r0, [r4, #0xc] + b _021D985C +_021D9106: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x34 + str r0, [r4, #0xc] + b _021D985C +_021D913E: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x35 + str r0, [r4, #0xc] + b _021D985C +_021D9178: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #0x36 + str r0, [r4, #0xc] + b _021D985C +_021D9192: + bl MOD59_021D82A0 + mov r0, #6 + add r1, r5, #0 + bl FUN_0201797C + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x37 + str r0, [r4, #0xc] + b _021D985C +_021D91E4: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + beq _021D91F8 +_021D91F6: + b _021D985C +_021D91F8: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D92FA + mov r0, #0x38 + str r0, [r4, #0xc] + b _021D985C +_021D9208: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + cmp r0, #1 + bne _021D92FA + mov r0, #0x39 + str r0, [r4, #0xc] + b _021D985C +_021D921A: + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3a + str r0, [r4, #0xc] + b _021D985C +_021D922A: + mov r1, #0x13 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x3b + str r0, [r4, #0xc] + b _021D985C +_021D9244: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + add r0, r4, #0 + bl MOD59_021D8914 + mov r0, #0x3c + str r0, [r4, #0xc] + b _021D985C +_021D925C: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3d + str r0, [r4, #0xc] + b _021D985C +_021D926C: + mov r1, #0x14 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3e + str r0, [r4, #0xc] + b _021D985C +_021D927E: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D9290: + bl MOD59_021D84E8 + add r0, r4, #0 + mov r1, #2 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + add r2, r5, #0 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + mov r3, #0x30 + bl FUN_020179E0 + mov r0, #0x40 + str r0, [r4, #0xc] + b _021D985C +_021D92CA: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x41 + str r0, [r4, #0xc] + b _021D985C +_021D92DC: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x42 + str r0, [r4, #0xc] + b _021D985C +_021D92EE: + mov r1, #0x15 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D92FC +_021D92FA: + b _021D985C +_021D92FC: + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0x43 + str r0, [r4, #0xc] + b _021D985C +_021D930A: + ldr r0, _021D9370 ; =gMain + mov r1, #1 + ldr r0, [r0, #0x48] + and r1, r0 + cmp r1, #1 + bne _021D933C + mov r0, #6 + str r0, [r4, #0x7c] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r4, #0x78] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9336 + mov r0, #0x44 + str r0, [r4, #0xc] + b _021D985C +_021D9336: + mov r0, #0x46 + str r0, [r4, #0xc] + b _021D985C +_021D933C: + mov r1, #0x20 + and r1, r0 + cmp r1, #0x20 + beq _021D934C + mov r1, #0x10 + and r0, r1 + cmp r0, #0x10 + bne _021D9368 +_021D934C: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D935A + mov r1, #1 + b _021D935C +_021D935A: + mov r1, #0 +_021D935C: + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, _021D9380 ; =0x000005DC + bl FUN_020054C8 +_021D9368: + add r0, r4, #0 + bl MOD59_021D8504 + b _021D985C + .align 2, 0 +_021D9370: .word gMain +_021D9374: .word MOD59_021D9DC0 +_021D9378: .word 0x0000FFFF +_021D937C: .word 0x00000706 +_021D9380: .word 0x000005DC +_021D9384: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x45 + str r0, [r4, #0xc] + b _021D985C +_021D9396: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93AE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x47 + str r0, [r4, #0xc] + b _021D985C +_021D93C0: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93D8: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D93E4 + mov r1, #0x16 + b _021D93E6 +_021D93E4: + mov r1, #0x17 +_021D93E6: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9414 + mov r0, #0x49 + str r0, [r4, #0xc] + b _021D985C +_021D93F8: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9414 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D941C + cmp r1, #1 + beq _021D9416 + cmp r1, #2 + beq _021D941C +_021D9414: + b _021D985C +_021D9416: + mov r0, #0x4b + str r0, [r4, #0xc] + b _021D985C +_021D941C: + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0x4a + str r0, [r4, #0xc] + b _021D985C +_021D942A: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9436 + mov r1, #1 + b _021D9438 +_021D9436: + mov r1, #2 +_021D9438: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9530 + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D944A: + mov r1, #0x18 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4c + str r0, [r4, #0xc] + b _021D985C +_021D945C: + add r0, #0x84 + ldr r1, [r0] + ldr r0, [r4, #0x70] + str r1, [r0, #4] + ldr r0, _021D9778 ; =UNK_020FA5FC + ldr r1, [r4, #0x70] + ldr r2, [r4] + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x4d + str r0, [r4, #0xc] + b _021D985C +_021D9476: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94AE + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + b _021D94C2 +_021D94AE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 +_021D94C2: + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x4e + str r0, [r4, #0xc] + b _021D985C +_021D94DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4f + str r0, [r4, #0xc] + b _021D985C +_021D94EC: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94F8 + mov r1, #0x19 + b _021D94FA +_021D94F8: + mov r1, #0x1a +_021D94FA: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x50 + str r0, [r4, #0xc] + b _021D985C +_021D950C: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9530 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D953C + cmp r1, #1 + beq _021D9532 + cmp r1, #2 + beq _021D953C +_021D9530: + b _021D985C +_021D9532: + mov r0, #0x52 + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D953C: + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x18] + bl StringSetEmpty + mov r0, #0x3f + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D954E: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D955A + mov r1, #1 + b _021D955C +_021D955A: + mov r1, #2 +_021D955C: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + b _021D985C +_021D956E: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x53 + str r0, [r4, #0xc] + b _021D985C +_021D9586: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x54 + str r0, [r4, #0xc] + b _021D985C +_021D9598: + mov r1, #0x1b + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x55 + str r0, [r4, #0xc] + b _021D985C +_021D95AA: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x56 + str r0, [r4, #0xc] + b _021D985C +_021D95BC: + add r1, r4, #0 + mov r2, #0xa + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x57 + str r0, [r4, #0xc] + b _021D985C +_021D95D4: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D95E6: + mov r1, #0x1c + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x59 + str r0, [r4, #0xc] + b _021D985C +_021D95F8: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9616 + mov r0, #0x5a + str r0, [r4, #0xc] + b _021D985C +_021D960A: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D9618 +_021D9616: + b _021D985C +_021D9618: + ldr r0, [r4, #0x48] + cmp r0, #5 + bhi _021D971A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D962A: ; jump table + .short _021D985C - _021D962A - 2 ; case 0 + .short _021D9636 - _021D962A - 2 ; case 1 + .short _021D963C - _021D962A - 2 ; case 2 + .short _021D963C - _021D962A - 2 ; case 3 + .short _021D963C - _021D962A - 2 ; case 4 + .short _021D963C - _021D962A - 2 ; case 5 +_021D9636: + mov r0, #0x5c + str r0, [r4, #0xc] + b _021D985C +_021D963C: + ldr r1, _021D977C ; =gGameVersion + ldrb r1, [r1] + cmp r1, #0xa + bne _021D964C + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9780 ; =0x021D9F40 + b _021D9652 +_021D964C: + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9784 ; =0x021D9F68 +_021D9652: + ldr r1, [r0, r1] + ldr r0, [r4, #0x4c] + bl NewString_ReadMsgData + add r6, r0, #0 + ldr r0, [r4, #0x74] + add r1, r6, #0 + ldr r0, [r0, #0x18] + bl StringCopy + add r0, r6, #0 + bl String_dtor + mov r0, #0x5b + str r0, [r4, #0xc] + b _021D985C +_021D9672: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D9684: + ldr r0, _021D9778 ; =UNK_020FA5FC + ldr r1, [r4, #0x74] + ldr r2, [r4] + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x5d + str r0, [r4, #0xc] + b _021D985C +_021D9696: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x5e + str r0, [r4, #0xc] + b _021D985C +_021D96DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D96EC: + mov r1, #0x1d + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D971A + mov r0, #0x60 + str r0, [r4, #0xc] + b _021D985C +_021D96FE: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D971A + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D972A + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D972A +_021D971A: + b _021D985C +_021D971C: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x61 + str r0, [r4, #0xc] + b _021D985C +_021D972A: + ldr r0, [r4, #0x74] + ldr r0, [r0, #0x18] + bl StringSetEmpty + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D9738: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D9746 + b _021D985C +_021D9746: + mov r0, #0x62 + str r0, [r4, #0xc] + b _021D985C +_021D974C: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x63 + str r0, [r4, #0xc] + b _021D985C +_021D9764: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + mov r0, #0x64 + str r0, [r4, #0xc] + b _021D985C + nop +_021D9778: .word UNK_020FA5FC +_021D977C: .word gGameVersion +_021D9780: .word MOD59_021D9F40 +_021D9784: .word MOD59_021D9F68 +_021D9788: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x65 + str r0, [r4, #0xc] + b _021D985C +_021D9798: + mov r1, #0x1e + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D985C + add r0, r5, #0 + mov r1, #0x32 + bl FUN_020053CC + mov r0, #0x66 + str r0, [r4, #0xc] + b _021D985C +_021D97B2: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x67 + str r0, [r4, #0xc] + b _021D985C +_021D97CC: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x68 + str r0, [r4, #0xc] + b _021D985C +_021D97DC: + add r1, r4, #0 + add r1, #0x84 + ldr r1, [r1] + cmp r1, #0 + bne _021D97FA + add r1, r4, #0 + mov r2, #2 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + b _021D980C +_021D97FA: + add r1, r4, #0 + mov r2, #6 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 +_021D980C: + mov r0, #0x69 + str r0, [r4, #0xc] + b _021D985C +_021D9812: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + add r0, r4, #0 + bl MOD59_021D8624 + mov r0, #0x6a + str r0, [r4, #0xc] + b _021D985C +_021D982A: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x6b + str r0, [r4, #0xc] + b _021D985C +_021D983A: + bl MOD59_021D8634 + cmp r0, #1 + bne _021D985C + mov r0, #0x6c + str r0, [r4, #0xc] + b _021D985C +_021D9848: + ldr r0, _021D9864 ; =0x021D9DDC + ldr r2, [r4] + add r1, r5, #0 + bl OverlayManager_new + str r0, [r4, #0x14] + mov r0, #0x6d + str r0, [r4, #0xc] + b _021D985C +_021D985A: + mov r5, #1 +_021D985C: + add r0, r5, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_021D9864: .word MOD59_021D9DDC + thumb_func_end MOD59_021D8920 + + .rodata + + .global MOD59_021D9D90 +MOD59_021D9D90: ; 0x021D9D90 + .byte 0x00, 0x08, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01, 0x00, 0x04, 0x00, 0x18, 0x18, 0x05, 0x2D, 0x01 + + .global MOD59_021D9DA0 +MOD59_021D9DA0: ; 0x021D9DA0 + .byte 0x00, 0x02, 0x03, 0x0E, 0x0A, 0x05, 0xE1, 0x02 + + .global MOD59_021D9DA8 +MOD59_021D9DA8: ; 0x021D9DA8 + .byte 0x00, 0x02, 0x03, 0x06, 0x04, 0x05, 0x55, 0x03 + + .global MOD59_021D9DB0 +MOD59_021D9DB0: ; 0x021D9DB0 + .byte 0x00, 0x01, 0x03, 0x10, 0x06, 0x05, 0x0D, 0x03 + + .global MOD59_021D9DB8 +MOD59_021D9DB8: ; 0x021D9DB8 + .byte 0x00, 0x02, 0x13, 0x1B, 0x04, 0x06, 0x6D, 0x03 + + .global MOD59_021D9DC0 +MOD59_021D9DC0: ; 0x021D9DC0 + .byte 0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 + + .global MOD59_021D9DCC +MOD59_021D9DCC: ; 0x021D9DCC + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9DDC +MOD59_021D9DDC: ; 0x021D9DDC + .word MOD59_021D9868, MOD59_021D9898, MOD59_021D99F8, 0xFFFFFFFF + + .global MOD59_021D9DEC +MOD59_021D9DEC: ; 0x021D9DEC + .byte 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + + .global MOD59_021D9DFC +MOD59_021D9DFC: ; 0x021D9DFC + .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + + .global MOD59_021D9E0C +MOD59_021D9E0C: ; 0x021D9E0C + .byte 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global MOD59_021D9E1C +MOD59_021D9E1C: ; 0x021D9E1C + .byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00 + + .global MOD59_021D9E30 +MOD59_021D9E30: ; 0x021D9E30 + .byte 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00 + .byte 0x1D, 0x00, 0x00, 0x00 + + .global MOD59_021D9E44 +MOD59_021D9E44: ; 0x021D9E44 + .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0C, 0x08, 0x00, 0x00 + + .global MOD59_021D9E58 +MOD59_021D9E58: ; 0x021D9E58 + .byte 0x1F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global MOD59_021D9E70 +MOD59_021D9E70: ; 0x021D9E70 + .byte 0x0D, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00 + .byte 0x2F, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 + + .global MOD59_021D9E88 +MOD59_021D9E88: ; 0x021D9E88 + .byte 0x08, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00 + .byte 0x2B, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 + + .global MOD59_021D9EA0 +MOD59_021D9EA0: ; 0x021D9EA0 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9EBC +MOD59_021D9EBC: ; 0x021D9EBC + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9ED8 +MOD59_021D9ED8: ; 0x021D9ED8 + .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A + .byte 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A, 0x3C, 0x6A + + .global MOD59_021D9EF8 +MOD59_021D9EF8: ; 0x021D9EF8 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9F18 +MOD59_021D9F18: ; 0x021D9F18 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD59_021D9F40 +MOD59_021D9F40: ; 0x021D9F40 + .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x28, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + + .global MOD59_021D9F68 +MOD59_021D9F68: ; 0x021D9F68 + .byte 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x2A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x2C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + + .global MOD59_021D9F90 +MOD59_021D9F90: ; 0x021D9F90 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00 + .byte 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 + + .global MOD59_021D9FE8 +MOD59_021D9FE8: ; 0x021D9FE8 + .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x40, 0x41, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D + .byte 0x0E, 0x0F, 0x42, 0x43, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x44, 0x45, 0x18, 0x19 + .byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x46, 0x47, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27 + .byte 0x48, 0x49, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x4A, 0x4B, 0x30, 0x31, 0x32, 0x33 + .byte 0x34, 0x35, 0x36, 0x37, 0x4C, 0x4D, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x4E, 0x4F + .byte 0x50, 0x51, 0x52, 0x53, 0x58, 0x59, 0x5A, 0x5B, 0x60, 0x61, 0x54, 0x55, 0x56, 0x57, 0x5C, 0x5D + .byte 0x5E, 0x5F, 0x62, 0x63 diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h new file mode 100644 index 00000000..9342913d --- /dev/null +++ b/arm9/modules/59/include/mod59_021D74E0.h @@ -0,0 +1,32 @@ +#ifndef POKEDIAMOND_MOD59_021D74E0_H +#define POKEDIAMOND_MOD59_021D74E0_H + +#include "nitro/types.h" +#include "options.h" +#include "save_block_2.h" +#include "main.h" + +typedef struct MOD59_OverlayData +{ + u32 heap_id; + struct SaveBlock2 *sav2; + struct Options *options; + u32 Unk0C; + u32 Unk10; + u32 Unk14; + u8 padding[0x58]; + u32 Unk70; + u32 Unk74; + u8 padding2[0x10]; + u8 Unk88; + u8 Unk89; + u8 Unk8A; + u8 Unk8B; + u8 padding3[4]; + u32 Unk90; + //TODO pad to 0xb4 +} MOD59_OverlayData; + +BOOL MOD59_Init(struct UnkStruct_02006234 *param0); + +#endif //POKEDIAMOND_MOD59_021D74E0_H diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c new file mode 100644 index 00000000..9fccfd95 --- /dev/null +++ b/arm9/modules/59/src/mod59_021D74E0_src.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "player_data.h" +#include "overlay_manager.h" +#include "mod59_021D74E0.h" + +extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options); + +THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0) +{ + //note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof + FUN_0201681C(3, 0x52, 1 << 18); + MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52); + (void)memset((void *)data, 0, 0xb4); + + data->heap_id = 0x52; + int *field18 = OverlayManager_GetField18(param0); + data->sav2 = (struct SaveBlock2 *)field18[2]; //? + data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2); + data->Unk14 = data->Unk10 = data->Unk0C = 0; + data->Unk70 = FUN_02077A84(0x52, 0, 0, 7, data->options); + data->Unk74 = FUN_02077A84(0x52, 3, 0, 7, data->options); + data->Unk88 = 0; + data->Unk89 = 0; + data->Unk8A = 0; + data->Unk8B = 0; + data->Unk90 = 0; + return TRUE; +} diff --git a/arm9/src/overlay_manager.c b/arm9/src/overlay_manager.c new file mode 100644 index 00000000..a59e15ac --- /dev/null +++ b/arm9/src/overlay_manager.c @@ -0,0 +1,79 @@ +#include "global.h" +#include "main.h" +#include "poke_overlay.h" +#include "heap.h" +#include "overlay_manager.h" + +THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id) +{ + struct UnkStruct_02006234 * ret = (struct UnkStruct_02006234 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006234)); + ret->ovly_mgr = *ovly_mgr; + ret->unk10 = 0; + ret->unk14 = 0; + ret->unk18 = a1; + ret->unk1C = NULL; + ret->unk20 = 0; + ret->unk24 = 0; + return ret; +} + +THUMB_FUNC void OverlayManager_delete(struct UnkStruct_02006234 * a0) +{ + FreeToHeap(a0); +} + +THUMB_FUNC void * OverlayManager_CreateAndGetData(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id) +{ + return a0->unk1C = AllocFromHeap(heap_id, size); +} + +THUMB_FUNC void * OverlayManager_GetData(struct UnkStruct_02006234 * a0) +{ + return a0->unk1C; +} + +THUMB_FUNC void OverlayManager_FreeData(struct UnkStruct_02006234 * a0) +{ + FreeToHeap(a0->unk1C); + a0->unk1C = NULL; +} + +THUMB_FUNC int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0) +{ + return a0->unk18; +} + +THUMB_FUNC BOOL OverlayManager_Run(struct UnkStruct_02006234 * a0) +{ + switch (a0->unk10) + { + case 0: + if (a0->ovly_mgr.ovly != SDK_OVERLAY_INVALID_ID) + HandleLoadOverlay(a0->ovly_mgr.ovly, 2); + a0->unk10 = 1; + // fallthrough + case 1: + if (a0->ovly_mgr.unk0(a0, &a0->unk14) == TRUE) + { + a0->unk10 = 2; + a0->unk14 = 0; + } + break; + case 2: + if (a0->ovly_mgr.unk4(a0, &a0->unk14) == TRUE) + { + a0->unk10 = 3; + a0->unk14 = 0; + } + break; + case 3: + if (a0->ovly_mgr.unk8(a0, &a0->unk14) == TRUE) + { + if (a0->ovly_mgr.ovly != SDK_OVERLAY_INVALID_ID) + UnloadOverlayByID(a0->ovly_mgr.ovly); + return TRUE; + } + break; + } + return FALSE; +} diff --git a/arm9/src/unk_02006234.c b/arm9/src/unk_02006234.c deleted file mode 100644 index a493311d..00000000 --- a/arm9/src/unk_02006234.c +++ /dev/null @@ -1,86 +0,0 @@ -#include "global.h" -#include "main.h" -#include "poke_overlay.h" -#include "heap.h" - -struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id); //todo header? -void OverlayManager_delete(struct UnkStruct_02006234 * a0); -void * OverlayManager_CreateAndGetData(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id); -void * OverlayManager_GetData(struct UnkStruct_02006234 * a0); -void OverlayManager_FreeData(struct UnkStruct_02006234 * a0); -int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0); -BOOL OverlayManager_Run(struct UnkStruct_02006234 * a0); - -THUMB_FUNC struct UnkStruct_02006234 * OverlayManager_new(struct Unk21DBE18 * ovly_mgr, int * a1, u32 heap_id) -{ - struct UnkStruct_02006234 * ret = (struct UnkStruct_02006234 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006234)); - ret->ovly_mgr = *ovly_mgr; - ret->unk10 = 0; - ret->unk14 = 0; - ret->unk18 = a1; - ret->unk1C = NULL; - ret->unk20 = 0; - ret->unk24 = 0; - return ret; -} - -THUMB_FUNC void OverlayManager_delete(struct UnkStruct_02006234 * a0) -{ - FreeToHeap(a0); -} - -THUMB_FUNC void * OverlayManager_CreateAndGetData(struct UnkStruct_02006234 * a0, u32 size, u32 heap_id) -{ - return a0->unk1C = AllocFromHeap(heap_id, size); -} - -THUMB_FUNC void * OverlayManager_GetData(struct UnkStruct_02006234 * a0) -{ - return a0->unk1C; -} - -THUMB_FUNC void OverlayManager_FreeData(struct UnkStruct_02006234 * a0) -{ - FreeToHeap(a0->unk1C); - a0->unk1C = NULL; -} - -THUMB_FUNC int * OverlayManager_GetField18(struct UnkStruct_02006234 * a0) -{ - return a0->unk18; -} - -THUMB_FUNC BOOL OverlayManager_Run(struct UnkStruct_02006234 * a0) -{ - switch (a0->unk10) - { - case 0: - if (a0->ovly_mgr.ovly != SDK_OVERLAY_INVALID_ID) - HandleLoadOverlay(a0->ovly_mgr.ovly, 2); - a0->unk10 = 1; - // fallthrough - case 1: - if (a0->ovly_mgr.unk0(a0, &a0->unk14) == TRUE) - { - a0->unk10 = 2; - a0->unk14 = 0; - } - break; - case 2: - if (a0->ovly_mgr.unk4(a0, &a0->unk14) == TRUE) - { - a0->unk10 = 3; - a0->unk14 = 0; - } - break; - case 3: - if (a0->ovly_mgr.unk8(a0, &a0->unk14) == TRUE) - { - if (a0->ovly_mgr.ovly != SDK_OVERLAY_INVALID_ID) - UnloadOverlayByID(a0->ovly_mgr.ovly); - return TRUE; - } - break; - } - return FALSE; -} -- cgit v1.2.3 From cf5eab9389a246354ea5a2a1f24cb281924e12ec Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 4 Nov 2020 14:30:38 +0000 Subject: finish mod05_021E72FC --- arm9/arm9.lsf | 3 +- arm9/modules/05/asm/mod05_021E72FC_asm.s | 172 ------------------------------- arm9/modules/05/include/mod05_021E72FC.h | 6 +- arm9/modules/05/src/mod05_021E72FC.c | 161 +++++++++++++++++++++++++++++ arm9/modules/05/src/mod05_021E72FC_src.c | 70 ------------- 5 files changed, 167 insertions(+), 245 deletions(-) delete mode 100644 arm9/modules/05/asm/mod05_021E72FC_asm.s create mode 100644 arm9/modules/05/src/mod05_021E72FC.c delete mode 100644 arm9/modules/05/src/mod05_021E72FC_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index fd44aa0d..6eab7a85 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -554,8 +554,7 @@ Overlay MODULE_05 Object mod05_021E5C8C.o Object mod05_021E5E10.o Object mod05_021E5FD8.o - Object mod05_021E72FC_src.o - Object mod05_021E72FC_asm.o + Object mod05_021E72FC.o Object mod05_021E7504.o Object module_05.o } diff --git a/arm9/modules/05/asm/mod05_021E72FC_asm.s b/arm9/modules/05/asm/mod05_021E72FC_asm.s deleted file mode 100644 index 2bfcbe12..00000000 --- a/arm9/modules/05/asm/mod05_021E72FC_asm.s +++ /dev/null @@ -1,172 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - #in c file - .extern MOD05_021E7388 - - thumb_func_start MOD05_021E73B4 -MOD05_021E73B4: ; 0x021E73B4 - push {r4, r5, r6, lr} - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_02058720 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021E73DC - cmp r0, #1 - beq _021E73EE - cmp r0, #2 - beq _021E741C - b _021E74CA -_021E73DC: - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058410 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E73EE: - ldr r0, [r4, #0x10] - bl FUN_02057254 - cmp r0, #0 - beq _021E74CA - ldr r0, [r4] - mov r1, #0xc - bl FUN_0205AFDC - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02057260 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #7 - str r0, [r4, #4] - b _021E74CA -_021E741C: - ldr r0, [r4, #4] - cmp r0, #2 - beq _021E742A - cmp r0, #4 - beq _021E742A - cmp r0, #6 - bne _021E743A -_021E742A: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 -_021E743A: - ldr r0, [r4, #4] - sub r0, r0, #1 - str r0, [r4, #4] - bne _021E74CA - add r0, r5, #0 - bl FUN_02054B30 - cmp r0, #1 - bne _021E7452 - mov r0, #3 - str r0, [r4] - b _021E748A -_021E7452: - add r0, r5, #0 - bl FUN_02054B3C - cmp r0, #1 - bne _021E7462 - mov r0, #2 - str r0, [r4] - b _021E748A -_021E7462: - add r0, r5, #0 - bl FUN_02054B48 - cmp r0, #1 - bne _021E7472 - mov r0, #0 - str r0, [r4] - b _021E748A -_021E7472: - add r0, r5, #0 - bl FUN_02054B54 - cmp r0, #1 - bne _021E7482 - mov r0, #1 - str r0, [r4] - b _021E748A -_021E7482: - ldr r0, [r4] - bl MOD05_021E7388 - str r0, [r4] -_021E748A: - ldr r0, [r4, #0x10] - ldr r2, [r4] - add r1, r6, #0 - bl FUN_02056B74 - cmp r0, #0 - bne _021E749E - mov r0, #1 - str r0, [r4, #8] - b _021E74CA -_021E749E: - add r0, r6, #0 - mov r1, #0x80 - bl FUN_02058418 - mov r1, #1 - add r0, r6, #0 - lsl r1, r1, #8 - bl FUN_02058418 - ldr r0, [r4, #0x10] - ldr r1, [r4] - bl FUN_02055304 - add r0, r4, #0 - bl MOD05_021E74F8 - ldr r0, _021E74D0 ; =0x00000658 - mov r1, #0 - bl FUN_020054F0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021E74CA: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021E74D0: .word 0x00000658 - - thumb_func_start MOD05_021E74D4 -MOD05_021E74D4: ; 0x021E74D4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #4 - add r1, r5, #0 - bl AllocFromHeapAtEnd - add r4, r0, #0 - bne _021E74E8 - bl ErrorHandling -_021E74E8: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E74F8 -MOD05_021E74F8: ; 0x021E74F8 - ldr r3, _021E7500 ; =FUN_02016A8C - add r1, r0, #0 - mov r0, #4 - bx r3 - .balign 4, 0 -_021E7500: .word FUN_02016A8C diff --git a/arm9/modules/05/include/mod05_021E72FC.h b/arm9/modules/05/include/mod05_021E72FC.h index 3aba6c4d..6c61c913 100644 --- a/arm9/modules/05/include/mod05_021E72FC.h +++ b/arm9/modules/05/include/mod05_021E72FC.h @@ -6,7 +6,8 @@ typedef struct UnkStruct021E7358 { u32 Unk00; - u8 dummy[8]; + u32 Unk04; + u32 Unk08; u32 Unk0C; u32 Unk10; @@ -15,5 +16,8 @@ typedef struct UnkStruct021E7358 BOOL MOD05_021E72FC(u32 param0, u32 param1); void MOD05_021E7358(u32 param0, u32 param1, u32 param2); u32 MOD05_021E7388(u32 param0); +BOOL MOD05_021E73B4(UnkStruct021E7358 *param0); +UnkStruct021E7358 *MOD05_021E74D4(u32 param0); +void MOD05_021E74F8(UnkStruct021E7358 *param0); #endif //POKEDIAMOND_MOD05_021E72FC_H diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c new file mode 100644 index 00000000..2039e113 --- /dev/null +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -0,0 +1,161 @@ +#include "global.h" +#include "mod05_021E72FC.h" +#include "heap.h" + +extern void FUN_020054C8(u32 param0); +extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); +extern u32 FUN_020553A0(u32 param0); +extern u32 FUN_02058720(u32 param0); +extern BOOL FUN_02054B30(u8 param0); +extern BOOL FUN_02054B3C(u8 param0); +extern BOOL FUN_02054B48(u8 param0); +extern BOOL FUN_02054B54(u8 param0); +extern UnkStruct021E7358 *FUN_0204652C(UnkStruct021E7358 *param0); +extern void FUN_02058410(u32 param0, u32 param1); +extern BOOL FUN_02057254(u32 param0); +extern u32 FUN_0205AFDC(u32 param0, u32 param1); +extern void FUN_02057260(u32 param0, u32 param1); +extern void FUN_02055304(u32 param0, u32 param1); +extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2); +extern void FUN_02058418(u32 param0, u32 param1); +extern void MOD05_021E74F8(UnkStruct021E7358 *param0); +extern void FUN_020054F0(u32 param0, u32 param1); +extern void FUN_02016A8C(u32 param0, void *param1); + +THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) +{ + u8 res = (u8)FUN_02058720(FUN_020553A0(param1)); + u32 r2; + if (FUN_02054B30(res) == TRUE) + { + r2 = 3; + goto label; + } + else if (FUN_02054B3C(res) == TRUE) + { + r2 = 2; + goto label; + } + else if (FUN_02054B48(res) == TRUE) + { + r2 = 0; + goto label; + } + else if (FUN_02054B54(res) == TRUE) + { + r2 = 1; + goto label; + } + return FALSE; +label: + MOD05_021E7358(param0, param1, r2); + return TRUE; +} + +THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) +{ + UnkStruct021E7358 *res = MOD05_021E74D4(24); + res->Unk0C = param0; + res->Unk10 = param1; + res->Unk00 = param2; + FUN_020054C8(1624); + FUN_020463CC(param0, MOD05_021E73B4, res); +} + +THUMB_FUNC u32 MOD05_021E7388(u32 param0) +{ + switch (param0) + { + case 0: + return 2; + case 2: + return 1; + case 1: + return 3; + case 3: + return 0; + } + return 0; +} + +THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0) +{ + UnkStruct021E7358 *strct = FUN_0204652C(param0); + u32 res = FUN_020553A0(strct->Unk10); + u8 res2 = (u8)FUN_02058720(res); + switch (strct->Unk08) //Unk08, u32? + { + case 0: + FUN_02058410(res, 1 << 8); + strct->Unk08++; + break; + case 1: + if (!FUN_02057254(strct->Unk10)) + { + break; + } + FUN_02057260(strct->Unk10, FUN_0205AFDC(strct->Unk00, 12)); + FUN_02055304(strct->Unk10, strct->Unk00); + strct->Unk08++; + strct->Unk04 = 7; + break; + case 2: + if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6) + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + FUN_02055304(strct->Unk10, strct->Unk00); + } + if (--(strct->Unk04)) + { + break; + } + if (FUN_02054B30(res2) == TRUE) + { + strct->Unk00 = 3; + } + else if (FUN_02054B3C(res2) == TRUE) + { + strct->Unk00 = 2; + } + else if (FUN_02054B48(res2) == TRUE) + { + strct->Unk00 = 0; + } + else if (FUN_02054B54(res2) == TRUE) + { + strct->Unk00 = 1; + } + else + { + strct->Unk00 = MOD05_021E7388(strct->Unk00); + } + if (FUN_02056B74(strct->Unk10, res, strct->Unk00) == FALSE) + { + strct->Unk08 = 1; + break; + } + FUN_02058418(res, 0x80); + FUN_02058418(res, 1 << 8); + FUN_02055304(strct->Unk10, strct->Unk00); + MOD05_021E74F8(strct); + FUN_020054F0(1624, 0); + return TRUE; + } + return FALSE; +} + +THUMB_FUNC UnkStruct021E7358 *MOD05_021E74D4(u32 param0) +{ + UnkStruct021E7358 *res = (UnkStruct021E7358 *)AllocFromHeapAtEnd(4, param0); + if (res == NULL) + { + ErrorHandling(); + } + memset((void *)res, 0, param0); + return res; +} + +THUMB_FUNC void MOD05_021E74F8(UnkStruct021E7358 *param0) +{ + FUN_02016A8C(4, param0); +} diff --git a/arm9/modules/05/src/mod05_021E72FC_src.c b/arm9/modules/05/src/mod05_021E72FC_src.c deleted file mode 100644 index 63dc6a7c..00000000 --- a/arm9/modules/05/src/mod05_021E72FC_src.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "global.h" -#include "mod05_021E72FC.h" - -extern UnkStruct021E7358 *MOD05_021E74D4(u32 param0); -extern void FUN_020054C8(u32 param0); -extern MOD05_021E73B4(); -extern void FUN_020463CC(u32 param0, void *func, UnkStruct021E7358 *param2); -extern void FUN_020553A0(u32 param0); -extern u32 FUN_02058720(void); -extern BOOL FUN_02054B30(u8 param0); -extern BOOL FUN_02054B3C(u8 param0); -extern BOOL FUN_02054B48(u8 param0); -extern BOOL FUN_02054B54(u8 param0); - -THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) -{ - FUN_020553A0(param1); - u8 res = (u8)FUN_02058720(); - u32 r2; - if (FUN_02054B30(res) == TRUE) - { - r2 = 3; - goto label; - } - else if (FUN_02054B3C(res) == TRUE) - { - r2 = 2; - goto label; - } - else if (FUN_02054B48(res) == TRUE) - { - r2 = 0; - goto label; - } - else if (FUN_02054B54(res) == TRUE) - { - r2 = 1; - goto label; - } - return FALSE; -label: - MOD05_021E7358(param0, param1, r2); - return TRUE; -} - -THUMB_FUNC void MOD05_021E7358(u32 param0, u32 param1, u32 param2) -{ - UnkStruct021E7358 *res = MOD05_021E74D4(24); - res->Unk0C = param0; - res->Unk10 = param1; - res->Unk00 = param2; - FUN_020054C8(1624); - FUN_020463CC(param0, MOD05_021E73B4, res); -} - -THUMB_FUNC u32 MOD05_021E7388(u32 param0) -{ - switch (param0) - { - case 0: - return 2; - case 2: - return 1; - case 1: - return 3; - case 3: - return 0; - } - return 0; -} -- cgit v1.2.3 From 35284bc1fdf68413786c364462c3db7e2123162a Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 4 Nov 2020 14:33:41 +0000 Subject: cleanup --- arm9/modules/05/src/mod05_021E72FC.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c index 2039e113..8a31d032 100644 --- a/arm9/modules/05/src/mod05_021E72FC.c +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -18,7 +18,6 @@ extern void FUN_02057260(u32 param0, u32 param1); extern void FUN_02055304(u32 param0, u32 param1); extern BOOL FUN_02056B74(u32 param0, u32 param1, u32 param2); extern void FUN_02058418(u32 param0, u32 param1); -extern void MOD05_021E74F8(UnkStruct021E7358 *param0); extern void FUN_020054F0(u32 param0, u32 param1); extern void FUN_02016A8C(u32 param0, void *param1); @@ -83,7 +82,7 @@ THUMB_FUNC BOOL MOD05_021E73B4(UnkStruct021E7358 *param0) UnkStruct021E7358 *strct = FUN_0204652C(param0); u32 res = FUN_020553A0(strct->Unk10); u8 res2 = (u8)FUN_02058720(res); - switch (strct->Unk08) //Unk08, u32? + switch (strct->Unk08) { case 0: FUN_02058410(res, 1 << 8); -- cgit v1.2.3 From ea374bdadadcf550465cf23c88b34958caef620d Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 8 Nov 2020 20:13:22 +0000 Subject: split module 21 --- arm9/arm9.lsf | 3 +- arm9/global.inc | 5 + arm9/modules/21/asm/mod21_02254854.s | 312 +++++++++++++++ arm9/modules/21/asm/mod21_02254A6C.s | 427 ++++++++++++++++++++ arm9/modules/21/asm/module_21.s | 733 ----------------------------------- 5 files changed, 746 insertions(+), 734 deletions(-) create mode 100644 arm9/modules/21/asm/mod21_02254854.s create mode 100644 arm9/modules/21/asm/mod21_02254A6C.s delete mode 100644 arm9/modules/21/asm/module_21.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 6eab7a85..d95024ae 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,7 +664,8 @@ Overlay MODULE_21 ##Pokétch Clock## After MODULE_20 Object module_21_sinit.o - Object module_21.o + Object mod21_02254854.o + Object mod21_02254A6C.o } Overlay MODULE_22 diff --git a/arm9/global.inc b/arm9/global.inc index ba5cc7bf..4845852b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7435,6 +7435,11 @@ .extern MOD20_02254420 .extern MOD20_02254460 .extern MOD20_02254488 +.extern MOD21_02254A6C +.extern MOD21_02254B04 +.extern MOD21_02254B10 +.extern MOD21_02254B34 +.extern MOD21_02254B40 .extern MOD51_02254A68 .extern MOD51_02254AB8 .extern MOD52_021D76C8 diff --git a/arm9/modules/21/asm/mod21_02254854.s b/arm9/modules/21/asm/mod21_02254854.s new file mode 100644 index 00000000..bcbbf915 --- /dev/null +++ b/arm9/modules/21/asm/mod21_02254854.s @@ -0,0 +1,312 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD21_02254854 +MOD21_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x2c + add r7, r2, #0 + str r3, [sp] + bl AllocFromHeap + add r4, r0, #0 + beq _02254892 + ldr r3, [sp] + add r1, r6, #0 + add r2, r7, #0 + bl MOD21_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD21_02254930 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA44 + cmp r0, #0 + beq _0225488C + str r4, [r5] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0225488C: + add r0, r4, #0 + bl FreeToHeap +_02254892: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254898: .word MOD21_02254930 + thumb_func_end MOD21_02254854 + + thumb_func_start MOD21_0225489C +MOD21_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r0, #0x24 + add r1, #0x14 + bl MOD21_02254A6C + cmp r0, #0 + beq _0225490A + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + strb r1, [r5, #2] + mov r0, #1 + strb r0, [r5, #3] + strb r1, [r5, #6] + add r0, r5, #0 + str r1, [r5, #0x20] + add r0, #0x14 + bl GF_RTC_CopyTime + ldr r0, [r5, #0x14] + cmp r0, #0x18 + blo _022548D6 + mov r1, #0x18 + bl _u32_div_f + str r1, [r5, #0x14] +_022548D6: + ldr r0, [r5, #0x18] + cmp r0, #0x3c + blo _022548E6 + ldr r0, [r5, #0x14] + mov r1, #0x3c + bl _u32_div_f + str r1, [r5, #0x14] +_022548E6: + ldr r0, [r5, #0x18] + ldr r2, _02254910 ; =MOD21_02254974 + strb r0, [r5, #5] + mov r0, #8 + str r0, [sp] + ldr r0, _02254914 ; =MOD21_02254D80 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + cmp r0, #0 + bne _02254904 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254904: + str r4, [r5, #0x28] + mov r0, #1 + pop {r3, r4, r5, pc} +_0225490A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02254910: .word MOD21_02254974 +_02254914: .word MOD21_02254D80 + thumb_func_end MOD21_0225489C + + thumb_func_start MOD21_02254918 +MOD21_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl MOD21_02254B04 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD21_02254918 + + thumb_func_start MOD21_02254930 +MOD21_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =MOD21_02254D84 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD21_02254918 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x28] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word MOD21_02254D84 + thumb_func_end MOD21_02254930 + + thumb_func_start MOD21_0225496C +MOD21_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD21_0225496C + + thumb_func_start MOD21_02254974 +MOD21_02254974: ; 0x02254974 + cmp r2, #0 + beq _02254984 + cmp r2, #1 + bne _0225498C + mov r0, #1 + str r0, [r3, #0x20] + strb r0, [r3, #6] + bx lr +_02254984: + mov r0, #0 + str r0, [r3, #0x20] + mov r0, #1 + strb r0, [r3, #6] +_0225498C: + bx lr + .align 2, 0 + thumb_func_end MOD21_02254974 + + thumb_func_start MOD21_02254990 +MOD21_02254990: ; 0x02254990 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254998 + b _0225499A +_02254998: + mov r1, #2 +_0225499A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD21_02254990 + + thumb_func_start MOD21_022549A4 +MOD21_022549A4: ; 0x022549A4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549B4 + cmp r0, #1 + beq _022549C4 + b _022549DE +_022549B4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549DE +_022549C4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B34 + cmp r0, #0 + beq _022549DE + ldr r0, [r4, #0x28] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD21_02254990 +_022549DE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549A4 + + thumb_func_start MOD21_022549E4 +MOD21_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F8 + mov r1, #2 + bl MOD21_02254990 + mov r0, #0 + pop {r4, pc} +_022549F8: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02254A0A + mov r0, #0 + strb r0, [r4, #6] + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD21_02254B10 +_02254A0A: + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B34 + cmp r0, #0 + beq _02254A32 + ldr r0, [r4, #0x18] + strb r0, [r4, #5] + add r0, r4, #0 + add r0, #0x14 + bl GF_RTC_CopyTime + ldrb r1, [r4, #5] + ldr r0, [r4, #0x18] + cmp r1, r0 + beq _02254A32 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B10 +_02254A32: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549E4 + + thumb_func_start MOD21_02254A38 +MOD21_02254A38: ; 0x02254A38 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A48 + cmp r0, #1 + beq _02254A58 + b _02254A66 +_02254A48: + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A66 +_02254A58: + ldr r0, [r4, #0x24] + bl MOD21_02254B40 + cmp r0, #0 + beq _02254A66 + mov r0, #1 + pop {r4, pc} +_02254A66: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254A38 + + .section .rodata + + .global MOD21_02254D80 +MOD21_02254D80: ; 0x02254D80 + .byte 0x10, 0xAF, 0x10, 0xCF + + .global MOD21_02254D84 +MOD21_02254D84: ; 0x02254D84 + .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 diff --git a/arm9/modules/21/asm/mod21_02254A6C.s b/arm9/modules/21/asm/mod21_02254A6C.s new file mode 100644 index 00000000..88dcb27c --- /dev/null +++ b/arm9/modules/21/asm/mod21_02254A6C.s @@ -0,0 +1,427 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD21_02254A6C +MOD21_02254A6C: ; 0x02254A6C + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #3 + add r5, r0, #0 + mov r0, #8 + lsl r1, r1, #8 + bl AllocFromHeap + add r4, r0, #0 + beq _02254ACC + add r0, #8 + mov r1, #8 + bl MOD20_022536F4 + str r6, [r4] + bl MOD20_02252D34 + str r0, [r4, #4] + mov r0, #8 + str r0, [sp] + mov r0, #0xc + mov r1, #0x19 + mov r2, #1 + add r3, sp, #4 + bl FUN_02006BDC + add r6, r0, #0 + bne _02254AB2 + add r0, r4, #0 + bl FreeToHeap + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_02254AB2: + ldr r0, [sp, #4] + add r1, r4, #0 + add r0, #0xc + add r1, #0x30 + bl MOD21_02254AD4 + add r0, r6, #0 + bl FreeToHeap + add sp, #8 + str r4, [r5] + mov r0, #1 + pop {r4, r5, r6, pc} +_02254ACC: + mov r0, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD21_02254A6C + + thumb_func_start MOD21_02254AD4 +MOD21_02254AD4: ; 0x02254AD4 + push {r3, r4, r5, r6, r7, lr} + mov r6, #9 + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 + lsl r6, r6, #6 +_02254AE0: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r1, r4, #0 + add r0, r5, r6 + add r1, #0x40 + mov r2, #0x10 + bl MIi_CpuCopy16 + add r7, r7, #1 + add r5, #0x40 + add r4, #0x50 + sub r6, #0x30 + cmp r7, #9 + blt _02254AE0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD21_02254AD4 + + thumb_func_start MOD21_02254B04 +MOD21_02254B04: ; 0x02254B04 + push {r3, lr} + cmp r0, #0 + beq _02254B0E + bl FreeToHeap +_02254B0E: + pop {r3, pc} + thumb_func_end MOD21_02254B04 + + thumb_func_start MOD21_02254B10 +MOD21_02254B10: ; 0x02254B10 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254B30 ; =MOD21_02254DAC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B30: .word MOD21_02254DAC + thumb_func_end MOD21_02254B10 + + thumb_func_start MOD21_02254B34 +MOD21_02254B34: ; 0x02254B34 + ldr r3, _02254B3C ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B3C: .word MOD20_02253794 + thumb_func_end MOD21_02254B34 + + thumb_func_start MOD21_02254B40 +MOD21_02254B40: ; 0x02254B40 + ldr r3, _02254B48 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B48: .word MOD20_022537B8 + thumb_func_end MOD21_02254B40 + + thumb_func_start MOD21_02254B4C +MOD21_02254B4C: ; 0x02254B4C + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254B4C + + thumb_func_start MOD21_02254B60 +MOD21_02254B60: ; 0x02254B60 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BE8 ; =MOD21_02254D90 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x17 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x18 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + bl MOD21_02254C5C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BEC ; =0x04001000 + ldr r0, _02254BF0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD21_02254B4C + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254BE8: .word MOD21_02254D90 +_02254BEC: .word 0x04001000 +_02254BF0: .word 0xFFFFE0FF + thumb_func_end MOD21_02254B60 + + thumb_func_start MOD21_02254BF4 +MOD21_02254BF4: ; 0x02254BF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD21_02254C5C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD21_02254B4C + pop {r3, r4, r5, pc} + thumb_func_end MOD21_02254BF4 + + thumb_func_start MOD21_02254C14 +MOD21_02254C14: ; 0x02254C14 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02254C30 + mov r0, #0 + add r1, r0, #0 + bl MOD11_02252DB4 + b _02254C38 +_02254C30: + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C +_02254C38: + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + thumb_func_end MOD21_02254C14 + + thumb_func_start MOD21_02254C40 +MOD21_02254C40: ; 0x02254C40 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254C40 + + thumb_func_start MOD21_02254C5C +MOD21_02254C5C: ; 0x02254C5C + push {r4, r5, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254C7A: + ldrh r1, [r2] + tst r1, r0 + bne _02254C7A + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254C8A: + ldrh r2, [r3] + tst r2, r0 + bne _02254C8A + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #8 + mov r3, #7 + bl FUN_02018170 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0, #4] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254D00: + ldrh r1, [r2] + tst r1, r0 + bne _02254D00 + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254D10: + ldrh r2, [r3] + tst r2, r0 + bne _02254D10 + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0xf + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0x14 + mov r3, #7 + bl FUN_02018170 + add sp, #0x1c + pop {r4, r5, pc} + nop +_02254D74: .word 0x04000280 +_02254D78: .word 0x040002A0 +_02254D7C: .word 0x040002A8 + thumb_func_end MOD21_02254C5C + + .section .rodata + + .global MOD21_02254D90 +MOD21_02254D90: ; 0x02254D90 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD21_02254DAC +MOD21_02254DAC: ; 0x02254DAC + .word 0x00, MOD21_02254B60, 0x00 + .word 0x01, MOD21_02254BF4, 0x00 + .word 0x02, MOD21_02254C14, 0x00 + .word 0x03, MOD21_02254C40, 0x00 + .word 0x00, 0x00000000, 0x00 diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s deleted file mode 100644 index ad12a682..00000000 --- a/arm9/modules/21/asm/module_21.s +++ /dev/null @@ -1,733 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD21_02254854 -MOD21_02254854: ; 0x02254854 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #8 - mov r1, #0x2c - add r7, r2, #0 - str r3, [sp] - bl AllocFromHeap - add r4, r0, #0 - beq _02254892 - ldr r3, [sp] - add r1, r6, #0 - add r2, r7, #0 - bl MOD21_0225489C - cmp r0, #0 - beq _0225488C - ldr r0, _02254898 ; =MOD21_02254930 - add r1, r4, #0 - mov r2, #1 - bl FUN_0200CA44 - cmp r0, #0 - beq _0225488C - str r4, [r5] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0225488C: - add r0, r4, #0 - bl FreeToHeap -_02254892: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02254898: .word MOD21_02254930 - thumb_func_end MOD21_02254854 - - thumb_func_start MOD21_0225489C -MOD21_0225489C: ; 0x0225489C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - add r1, r5, #0 - add r0, #0x24 - add r1, #0x14 - bl MOD21_02254A6C - cmp r0, #0 - beq _0225490A - mov r1, #0 - strb r1, [r5] - strb r1, [r5, #1] - strb r1, [r5, #2] - mov r0, #1 - strb r0, [r5, #3] - strb r1, [r5, #6] - add r0, r5, #0 - str r1, [r5, #0x20] - add r0, #0x14 - bl GF_RTC_CopyTime - ldr r0, [r5, #0x14] - cmp r0, #0x18 - blo _022548D6 - mov r1, #0x18 - bl _u32_div_f - str r1, [r5, #0x14] -_022548D6: - ldr r0, [r5, #0x18] - cmp r0, #0x3c - blo _022548E6 - ldr r0, [r5, #0x14] - mov r1, #0x3c - bl _u32_div_f - str r1, [r5, #0x14] -_022548E6: - ldr r0, [r5, #0x18] - ldr r2, _02254910 ; =MOD21_02254974 - strb r0, [r5, #5] - mov r0, #8 - str r0, [sp] - ldr r0, _02254914 ; =MOD21_02254D80 - mov r1, #1 - add r3, r5, #0 - bl MOD20_02254130 - str r0, [r5, #0x10] - cmp r0, #0 - bne _02254904 - mov r0, #0 - pop {r3, r4, r5, pc} -_02254904: - str r4, [r5, #0x28] - mov r0, #1 - pop {r3, r4, r5, pc} -_0225490A: - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_02254910: .word MOD21_02254974 -_02254914: .word MOD21_02254D80 - thumb_func_end MOD21_0225489C - - thumb_func_start MOD21_02254918 -MOD21_02254918: ; 0x02254918 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x24] - bl MOD21_02254B04 - ldr r0, [r4, #0x10] - bl MOD20_02254198 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD21_02254918 - - thumb_func_start MOD21_02254930 -MOD21_02254930: ; 0x02254930 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #3 - bhs _02254966 - ldr r0, [r4, #0x28] - ldr r1, [r4, #0x10] - bl MOD20_02252C14 - ldrb r1, [r4] - add r0, r4, #0 - lsl r2, r1, #2 - ldr r1, _02254968 ; =MOD21_02254D84 - ldr r1, [r1, r2] - blx r1 - cmp r0, #0 - beq _02254966 - add r0, r4, #0 - bl MOD21_02254918 - add r0, r5, #0 - bl FUN_0200CAB4 - ldr r0, [r4, #0x28] - bl MOD20_022529A0 -_02254966: - pop {r3, r4, r5, pc} - .align 2, 0 -_02254968: .word MOD21_02254D84 - thumb_func_end MOD21_02254930 - - thumb_func_start MOD21_0225496C -MOD21_0225496C: ; 0x0225496C - mov r1, #1 - strb r1, [r0, #2] - bx lr - .align 2, 0 - thumb_func_end MOD21_0225496C - - thumb_func_start MOD21_02254974 -MOD21_02254974: ; 0x02254974 - cmp r2, #0 - beq _02254984 - cmp r2, #1 - bne _0225498C - mov r0, #1 - str r0, [r3, #0x20] - strb r0, [r3, #6] - bx lr -_02254984: - mov r0, #0 - str r0, [r3, #0x20] - mov r0, #1 - strb r0, [r3, #6] -_0225498C: - bx lr - .align 2, 0 - thumb_func_end MOD21_02254974 - - thumb_func_start MOD21_02254990 -MOD21_02254990: ; 0x02254990 - ldrb r2, [r0, #2] - cmp r2, #0 - bne _02254998 - b _0225499A -_02254998: - mov r1, #2 -_0225499A: - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - bx lr - .align 2, 0 - thumb_func_end MOD21_02254990 - - thumb_func_start MOD21_022549A4 -MOD21_022549A4: ; 0x022549A4 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _022549B4 - cmp r0, #1 - beq _022549C4 - b _022549DE -_022549B4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _022549DE -_022549C4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B34 - cmp r0, #0 - beq _022549DE - ldr r0, [r4, #0x28] - bl MOD20_0225298C - add r0, r4, #0 - mov r1, #1 - bl MOD21_02254990 -_022549DE: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549A4 - - thumb_func_start MOD21_022549E4 -MOD21_022549E4: ; 0x022549E4 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #2] - cmp r1, #0 - beq _022549F8 - mov r1, #2 - bl MOD21_02254990 - mov r0, #0 - pop {r4, pc} -_022549F8: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _02254A0A - mov r0, #0 - strb r0, [r4, #6] - ldr r0, [r4, #0x24] - mov r1, #2 - bl MOD21_02254B10 -_02254A0A: - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B34 - cmp r0, #0 - beq _02254A32 - ldr r0, [r4, #0x18] - strb r0, [r4, #5] - add r0, r4, #0 - add r0, #0x14 - bl GF_RTC_CopyTime - ldrb r1, [r4, #5] - ldr r0, [r4, #0x18] - cmp r1, r0 - beq _02254A32 - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B10 -_02254A32: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549E4 - - thumb_func_start MOD21_02254A38 -MOD21_02254A38: ; 0x02254A38 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _02254A48 - cmp r0, #1 - beq _02254A58 - b _02254A66 -_02254A48: - ldr r0, [r4, #0x24] - mov r1, #3 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _02254A66 -_02254A58: - ldr r0, [r4, #0x24] - bl MOD21_02254B40 - cmp r0, #0 - beq _02254A66 - mov r0, #1 - pop {r4, pc} -_02254A66: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254A38 - - thumb_func_start MOD21_02254A6C -MOD21_02254A6C: ; 0x02254A6C - push {r4, r5, r6, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #3 - add r5, r0, #0 - mov r0, #8 - lsl r1, r1, #8 - bl AllocFromHeap - add r4, r0, #0 - beq _02254ACC - add r0, #8 - mov r1, #8 - bl MOD20_022536F4 - str r6, [r4] - bl MOD20_02252D34 - str r0, [r4, #4] - mov r0, #8 - str r0, [sp] - mov r0, #0xc - mov r1, #0x19 - mov r2, #1 - add r3, sp, #4 - bl FUN_02006BDC - add r6, r0, #0 - bne _02254AB2 - add r0, r4, #0 - bl FreeToHeap - add sp, #8 - mov r0, #0 - pop {r4, r5, r6, pc} -_02254AB2: - ldr r0, [sp, #4] - add r1, r4, #0 - add r0, #0xc - add r1, #0x30 - bl MOD21_02254AD4 - add r0, r6, #0 - bl FreeToHeap - add sp, #8 - str r4, [r5] - mov r0, #1 - pop {r4, r5, r6, pc} -_02254ACC: - mov r0, #0 - add sp, #8 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD21_02254A6C - - thumb_func_start MOD21_02254AD4 -MOD21_02254AD4: ; 0x02254AD4 - push {r3, r4, r5, r6, r7, lr} - mov r6, #9 - add r5, r0, #0 - add r4, r1, #0 - mov r7, #0 - lsl r6, r6, #6 -_02254AE0: - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x40 - bl MIi_CpuCopy16 - add r1, r4, #0 - add r0, r5, r6 - add r1, #0x40 - mov r2, #0x10 - bl MIi_CpuCopy16 - add r7, r7, #1 - add r5, #0x40 - add r4, #0x50 - sub r6, #0x30 - cmp r7, #9 - blt _02254AE0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD21_02254AD4 - - thumb_func_start MOD21_02254B04 -MOD21_02254B04: ; 0x02254B04 - push {r3, lr} - cmp r0, #0 - beq _02254B0E - bl FreeToHeap -_02254B0E: - pop {r3, pc} - thumb_func_end MOD21_02254B04 - - thumb_func_start MOD21_02254B10 -MOD21_02254B10: ; 0x02254B10 - push {lr} - sub sp, #0xc - add r2, r0, #0 - add r0, #8 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - ldr r0, _02254B30 ; =MOD21_02254DAC - ldr r3, [r2] - bl MOD20_022537E0 - add sp, #0xc - pop {pc} - nop -_02254B30: .word MOD21_02254DAC - thumb_func_end MOD21_02254B10 - - thumb_func_start MOD21_02254B34 -MOD21_02254B34: ; 0x02254B34 - ldr r3, _02254B3C ; =MOD20_02253794 - add r0, #8 - bx r3 - nop -_02254B3C: .word MOD20_02253794 - thumb_func_end MOD21_02254B34 - - thumb_func_start MOD21_02254B40 -MOD21_02254B40: ; 0x02254B40 - ldr r3, _02254B48 ; =MOD20_022537B8 - add r0, #8 - bx r3 - nop -_02254B48: .word MOD20_022537B8 - thumb_func_end MOD21_02254B40 - - thumb_func_start MOD21_02254B4C -MOD21_02254B4C: ; 0x02254B4C - push {r4, lr} - add r4, r0, #0 - bl MOD20_022538A0 - add r0, #8 - add r1, r4, #0 - bl MOD20_02253888 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254B4C - - thumb_func_start MOD21_02254B60 -MOD21_02254B60: ; 0x02254B60 - push {r4, r5, lr} - sub sp, #0x14 - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [r5, #4] - ldr r2, _02254BE8 ; =MOD21_02254D90 - mov r1, #6 - mov r3, #0 - bl FUN_02016C18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x17 - mov r3, #6 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x18 - mov r3, #6 - bl FUN_020068C8 - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C - add r0, r5, #0 - bl MOD21_02254C5C - ldr r0, [r5, #4] - mov r1, #6 - bl FUN_02017CD0 - ldr r1, _02254BEC ; =0x04001000 - ldr r0, _02254BF0 ; =0xFFFFE0FF - ldr r3, [r1] - ldr r2, [r1] - str r3, [sp, #0x10] - and r0, r2 - lsl r2, r3, #0x13 - lsr r3, r2, #0x1b - mov r2, #4 - orr r2, r3 - lsl r2, r2, #8 - orr r0, r2 - str r0, [r1] - add r0, r4, #0 - bl MOD21_02254B4C - add sp, #0x14 - pop {r4, r5, pc} - .align 2, 0 -_02254BE8: .word MOD21_02254D90 -_02254BEC: .word 0x04001000 -_02254BF0: .word 0xFFFFE0FF - thumb_func_end MOD21_02254B60 - - thumb_func_start MOD21_02254BF4 -MOD21_02254BF4: ; 0x02254BF4 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - bl MOD21_02254C5C - ldr r0, [r4, #4] - mov r1, #6 - bl FUN_02017CD0 - add r0, r5, #0 - bl MOD21_02254B4C - pop {r3, r4, r5, pc} - thumb_func_end MOD21_02254BF4 - - thumb_func_start MOD21_02254C14 -MOD21_02254C14: ; 0x02254C14 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02254C30 - mov r0, #0 - add r1, r0, #0 - bl MOD11_02252DB4 - b _02254C38 -_02254C30: - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C -_02254C38: - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - thumb_func_end MOD21_02254C14 - - thumb_func_start MOD21_02254C40 -MOD21_02254C40: ; 0x02254C40 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0, #4] - mov r1, #6 - bl FUN_020178A0 - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254C40 - - thumb_func_start MOD21_02254C5C -MOD21_02254C5C: ; 0x02254C5C - push {r4, r5, lr} - sub sp, #0x1c - add r4, r0, #0 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254C7A: - ldrh r1, [r2] - tst r1, r0 - bne _02254C7A - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254C8A: - ldrh r2, [r3] - tst r2, r0 - bne _02254C8A - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #3 - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #8 - mov r3, #7 - bl FUN_02018170 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0, #4] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254D00: - ldrh r1, [r2] - tst r1, r0 - bne _02254D00 - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254D10: - ldrh r2, [r3] - tst r2, r0 - bne _02254D10 - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0xf - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0x14 - mov r3, #7 - bl FUN_02018170 - add sp, #0x1c - pop {r4, r5, pc} - nop -_02254D74: .word 0x04000280 -_02254D78: .word 0x040002A0 -_02254D7C: .word 0x040002A8 - thumb_func_end MOD21_02254C5C - - .section .rodata - - .global MOD21_02254D80 -MOD21_02254D80: ; 0x02254D80 - .byte 0x10, 0xAF, 0x10, 0xCF - - .global MOD21_02254D84 -MOD21_02254D84: ; 0x02254D84 - .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 - - .global MOD21_02254D90 -MOD21_02254D90: ; 0x02254D90 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD21_02254DAC -MOD21_02254DAC: ; 0x02254DAC - .word 0x00, MOD21_02254B60, 0x00 - .word 0x01, MOD21_02254BF4, 0x00 - .word 0x02, MOD21_02254C14, 0x00 - .word 0x03, MOD21_02254C40, 0x00 - .word 0x00, 0x00000000, 0x00 -- cgit v1.2.3 From 697c2313123690ebb4af45629cbc337d19941d04 Mon Sep 17 00:00:00 2001 From: red031000 Date: Mon, 9 Nov 2020 19:49:19 +0000 Subject: start decompiling mod21_02254854 --- arm9/arm9.lsf | 3 +- arm9/modules/21/asm/mod21_02254854.s | 312 ------------------------------- arm9/modules/21/asm/mod21_02254854_asm.s | 275 +++++++++++++++++++++++++++ arm9/modules/21/include/mod21_02254854.h | 8 + arm9/modules/21/src/mod21_02254854_src.c | 21 +++ arm9/modules/21/src/module_21_sinit.c | 2 +- arm9/src/unk_0200CA44.c | 20 +- 7 files changed, 317 insertions(+), 324 deletions(-) delete mode 100644 arm9/modules/21/asm/mod21_02254854.s create mode 100644 arm9/modules/21/asm/mod21_02254854_asm.s create mode 100644 arm9/modules/21/include/mod21_02254854.h create mode 100644 arm9/modules/21/src/mod21_02254854_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d95024ae..20c1b64c 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,7 +664,8 @@ Overlay MODULE_21 ##Pokétch Clock## After MODULE_20 Object module_21_sinit.o - Object mod21_02254854.o + Object mod21_02254854_src.o + Object mod21_02254854_asm.o Object mod21_02254A6C.o } diff --git a/arm9/modules/21/asm/mod21_02254854.s b/arm9/modules/21/asm/mod21_02254854.s deleted file mode 100644 index bcbbf915..00000000 --- a/arm9/modules/21/asm/mod21_02254854.s +++ /dev/null @@ -1,312 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD21_02254854 -MOD21_02254854: ; 0x02254854 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r0, #8 - mov r1, #0x2c - add r7, r2, #0 - str r3, [sp] - bl AllocFromHeap - add r4, r0, #0 - beq _02254892 - ldr r3, [sp] - add r1, r6, #0 - add r2, r7, #0 - bl MOD21_0225489C - cmp r0, #0 - beq _0225488C - ldr r0, _02254898 ; =MOD21_02254930 - add r1, r4, #0 - mov r2, #1 - bl FUN_0200CA44 - cmp r0, #0 - beq _0225488C - str r4, [r5] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0225488C: - add r0, r4, #0 - bl FreeToHeap -_02254892: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02254898: .word MOD21_02254930 - thumb_func_end MOD21_02254854 - - thumb_func_start MOD21_0225489C -MOD21_0225489C: ; 0x0225489C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - add r1, r5, #0 - add r0, #0x24 - add r1, #0x14 - bl MOD21_02254A6C - cmp r0, #0 - beq _0225490A - mov r1, #0 - strb r1, [r5] - strb r1, [r5, #1] - strb r1, [r5, #2] - mov r0, #1 - strb r0, [r5, #3] - strb r1, [r5, #6] - add r0, r5, #0 - str r1, [r5, #0x20] - add r0, #0x14 - bl GF_RTC_CopyTime - ldr r0, [r5, #0x14] - cmp r0, #0x18 - blo _022548D6 - mov r1, #0x18 - bl _u32_div_f - str r1, [r5, #0x14] -_022548D6: - ldr r0, [r5, #0x18] - cmp r0, #0x3c - blo _022548E6 - ldr r0, [r5, #0x14] - mov r1, #0x3c - bl _u32_div_f - str r1, [r5, #0x14] -_022548E6: - ldr r0, [r5, #0x18] - ldr r2, _02254910 ; =MOD21_02254974 - strb r0, [r5, #5] - mov r0, #8 - str r0, [sp] - ldr r0, _02254914 ; =MOD21_02254D80 - mov r1, #1 - add r3, r5, #0 - bl MOD20_02254130 - str r0, [r5, #0x10] - cmp r0, #0 - bne _02254904 - mov r0, #0 - pop {r3, r4, r5, pc} -_02254904: - str r4, [r5, #0x28] - mov r0, #1 - pop {r3, r4, r5, pc} -_0225490A: - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_02254910: .word MOD21_02254974 -_02254914: .word MOD21_02254D80 - thumb_func_end MOD21_0225489C - - thumb_func_start MOD21_02254918 -MOD21_02254918: ; 0x02254918 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x24] - bl MOD21_02254B04 - ldr r0, [r4, #0x10] - bl MOD20_02254198 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD21_02254918 - - thumb_func_start MOD21_02254930 -MOD21_02254930: ; 0x02254930 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #3 - bhs _02254966 - ldr r0, [r4, #0x28] - ldr r1, [r4, #0x10] - bl MOD20_02252C14 - ldrb r1, [r4] - add r0, r4, #0 - lsl r2, r1, #2 - ldr r1, _02254968 ; =MOD21_02254D84 - ldr r1, [r1, r2] - blx r1 - cmp r0, #0 - beq _02254966 - add r0, r4, #0 - bl MOD21_02254918 - add r0, r5, #0 - bl FUN_0200CAB4 - ldr r0, [r4, #0x28] - bl MOD20_022529A0 -_02254966: - pop {r3, r4, r5, pc} - .align 2, 0 -_02254968: .word MOD21_02254D84 - thumb_func_end MOD21_02254930 - - thumb_func_start MOD21_0225496C -MOD21_0225496C: ; 0x0225496C - mov r1, #1 - strb r1, [r0, #2] - bx lr - .align 2, 0 - thumb_func_end MOD21_0225496C - - thumb_func_start MOD21_02254974 -MOD21_02254974: ; 0x02254974 - cmp r2, #0 - beq _02254984 - cmp r2, #1 - bne _0225498C - mov r0, #1 - str r0, [r3, #0x20] - strb r0, [r3, #6] - bx lr -_02254984: - mov r0, #0 - str r0, [r3, #0x20] - mov r0, #1 - strb r0, [r3, #6] -_0225498C: - bx lr - .align 2, 0 - thumb_func_end MOD21_02254974 - - thumb_func_start MOD21_02254990 -MOD21_02254990: ; 0x02254990 - ldrb r2, [r0, #2] - cmp r2, #0 - bne _02254998 - b _0225499A -_02254998: - mov r1, #2 -_0225499A: - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - bx lr - .align 2, 0 - thumb_func_end MOD21_02254990 - - thumb_func_start MOD21_022549A4 -MOD21_022549A4: ; 0x022549A4 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _022549B4 - cmp r0, #1 - beq _022549C4 - b _022549DE -_022549B4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _022549DE -_022549C4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B34 - cmp r0, #0 - beq _022549DE - ldr r0, [r4, #0x28] - bl MOD20_0225298C - add r0, r4, #0 - mov r1, #1 - bl MOD21_02254990 -_022549DE: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549A4 - - thumb_func_start MOD21_022549E4 -MOD21_022549E4: ; 0x022549E4 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #2] - cmp r1, #0 - beq _022549F8 - mov r1, #2 - bl MOD21_02254990 - mov r0, #0 - pop {r4, pc} -_022549F8: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _02254A0A - mov r0, #0 - strb r0, [r4, #6] - ldr r0, [r4, #0x24] - mov r1, #2 - bl MOD21_02254B10 -_02254A0A: - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B34 - cmp r0, #0 - beq _02254A32 - ldr r0, [r4, #0x18] - strb r0, [r4, #5] - add r0, r4, #0 - add r0, #0x14 - bl GF_RTC_CopyTime - ldrb r1, [r4, #5] - ldr r0, [r4, #0x18] - cmp r1, r0 - beq _02254A32 - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B10 -_02254A32: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549E4 - - thumb_func_start MOD21_02254A38 -MOD21_02254A38: ; 0x02254A38 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _02254A48 - cmp r0, #1 - beq _02254A58 - b _02254A66 -_02254A48: - ldr r0, [r4, #0x24] - mov r1, #3 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _02254A66 -_02254A58: - ldr r0, [r4, #0x24] - bl MOD21_02254B40 - cmp r0, #0 - beq _02254A66 - mov r0, #1 - pop {r4, pc} -_02254A66: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254A38 - - .section .rodata - - .global MOD21_02254D80 -MOD21_02254D80: ; 0x02254D80 - .byte 0x10, 0xAF, 0x10, 0xCF - - .global MOD21_02254D84 -MOD21_02254D84: ; 0x02254D84 - .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s new file mode 100644 index 00000000..5e5dd958 --- /dev/null +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -0,0 +1,275 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD21_0225489C +MOD21_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r1, r5, #0 + add r0, #0x24 + add r1, #0x14 + bl MOD21_02254A6C + cmp r0, #0 + beq _0225490A + mov r1, #0 + strb r1, [r5] + strb r1, [r5, #1] + strb r1, [r5, #2] + mov r0, #1 + strb r0, [r5, #3] + strb r1, [r5, #6] + add r0, r5, #0 + str r1, [r5, #0x20] + add r0, #0x14 + bl GF_RTC_CopyTime + ldr r0, [r5, #0x14] + cmp r0, #0x18 + blo _022548D6 + mov r1, #0x18 + bl _u32_div_f + str r1, [r5, #0x14] +_022548D6: + ldr r0, [r5, #0x18] + cmp r0, #0x3c + blo _022548E6 + ldr r0, [r5, #0x14] + mov r1, #0x3c + bl _u32_div_f + str r1, [r5, #0x14] +_022548E6: + ldr r0, [r5, #0x18] + ldr r2, _02254910 ; =MOD21_02254974 + strb r0, [r5, #5] + mov r0, #8 + str r0, [sp] + ldr r0, _02254914 ; =MOD21_02254D80 + mov r1, #1 + add r3, r5, #0 + bl MOD20_02254130 + str r0, [r5, #0x10] + cmp r0, #0 + bne _02254904 + mov r0, #0 + pop {r3, r4, r5, pc} +_02254904: + str r4, [r5, #0x28] + mov r0, #1 + pop {r3, r4, r5, pc} +_0225490A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02254910: .word MOD21_02254974 +_02254914: .word MOD21_02254D80 + thumb_func_end MOD21_0225489C + + thumb_func_start MOD21_02254918 +MOD21_02254918: ; 0x02254918 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + bl MOD21_02254B04 + ldr r0, [r4, #0x10] + bl MOD20_02254198 + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD21_02254918 + + thumb_func_start MOD21_02254930 +MOD21_02254930: ; 0x02254930 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldrb r0, [r4] + cmp r0, #3 + bhs _02254966 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + bl MOD20_02252C14 + ldrb r1, [r4] + add r0, r4, #0 + lsl r2, r1, #2 + ldr r1, _02254968 ; =MOD21_02254D84 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254966 + add r0, r4, #0 + bl MOD21_02254918 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x28] + bl MOD20_022529A0 +_02254966: + pop {r3, r4, r5, pc} + .align 2, 0 +_02254968: .word MOD21_02254D84 + thumb_func_end MOD21_02254930 + + thumb_func_start MOD21_0225496C +MOD21_0225496C: ; 0x0225496C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD21_0225496C + + thumb_func_start MOD21_02254974 +MOD21_02254974: ; 0x02254974 + cmp r2, #0 + beq _02254984 + cmp r2, #1 + bne _0225498C + mov r0, #1 + str r0, [r3, #0x20] + strb r0, [r3, #6] + bx lr +_02254984: + mov r0, #0 + str r0, [r3, #0x20] + mov r0, #1 + strb r0, [r3, #6] +_0225498C: + bx lr + .align 2, 0 + thumb_func_end MOD21_02254974 + + thumb_func_start MOD21_02254990 +MOD21_02254990: ; 0x02254990 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _02254998 + b _0225499A +_02254998: + mov r1, #2 +_0225499A: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD21_02254990 + + thumb_func_start MOD21_022549A4 +MOD21_022549A4: ; 0x022549A4 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _022549B4 + cmp r0, #1 + beq _022549C4 + b _022549DE +_022549B4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _022549DE +_022549C4: + ldr r0, [r4, #0x24] + mov r1, #0 + bl MOD21_02254B34 + cmp r0, #0 + beq _022549DE + ldr r0, [r4, #0x28] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD21_02254990 +_022549DE: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549A4 + + thumb_func_start MOD21_022549E4 +MOD21_022549E4: ; 0x022549E4 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _022549F8 + mov r1, #2 + bl MOD21_02254990 + mov r0, #0 + pop {r4, pc} +_022549F8: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02254A0A + mov r0, #0 + strb r0, [r4, #6] + ldr r0, [r4, #0x24] + mov r1, #2 + bl MOD21_02254B10 +_02254A0A: + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B34 + cmp r0, #0 + beq _02254A32 + ldr r0, [r4, #0x18] + strb r0, [r4, #5] + add r0, r4, #0 + add r0, #0x14 + bl GF_RTC_CopyTime + ldrb r1, [r4, #5] + ldr r0, [r4, #0x18] + cmp r1, r0 + beq _02254A32 + ldr r0, [r4, #0x24] + mov r1, #1 + bl MOD21_02254B10 +_02254A32: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_022549E4 + + thumb_func_start MOD21_02254A38 +MOD21_02254A38: ; 0x02254A38 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A48 + cmp r0, #1 + beq _02254A58 + b _02254A66 +_02254A48: + ldr r0, [r4, #0x24] + mov r1, #3 + bl MOD21_02254B10 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A66 +_02254A58: + ldr r0, [r4, #0x24] + bl MOD21_02254B40 + cmp r0, #0 + beq _02254A66 + mov r0, #1 + pop {r4, pc} +_02254A66: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254A38 + + .section .rodata + + .global MOD21_02254D80 +MOD21_02254D80: ; 0x02254D80 + .byte 0x10, 0xAF, 0x10, 0xCF + + .global MOD21_02254D84 +MOD21_02254D84: ; 0x02254D84 + .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h new file mode 100644 index 00000000..061e7e4b --- /dev/null +++ b/arm9/modules/21/include/mod21_02254854.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_MOD21_02254854_H +#define POKEDIAMOND_MOD21_02254854_H + +#include "nitro/types.h" + +BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3); + +#endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c new file mode 100644 index 00000000..8a0c4146 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -0,0 +1,21 @@ +#include "global.h" +#include "heap.h" +#include "unk_0200CA44.h" + +extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); +extern void MOD21_02254930(void *, void *); + +THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct +{ + void * alloced = AllocFromHeap(8, 0x2c); + if (alloced != NULL) + { + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1)) + { + *param0 = (u32)alloced; + return TRUE; + } + FreeToHeap(alloced); + } + return FALSE; +} \ No newline at end of file diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c index 2af569ec..c4b2ac5a 100644 --- a/arm9/modules/21/src/module_21_sinit.c +++ b/arm9/modules/21/src/module_21_sinit.c @@ -1,7 +1,7 @@ #include "global.h" +#include "mod21_02254854.h" extern void Poketch_InitApp(void *func1, void *func2); -extern void MOD21_02254854(); extern void MOD21_0225496C(); THUMB_FUNC static void MOD21_02254840(void) diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c index fc4656b2..1a572a89 100644 --- a/arm9/src/unk_0200CA44.c +++ b/arm9/src/unk_0200CA44.c @@ -2,30 +2,30 @@ #include "main.h" #include "unk_0200CA44.h" -extern void FUN_0201B60C(void *, void (*)(void *, void *), void *, void *); +extern BOOL FUN_0201B60C(void *, void (*)(void *, void *), void *, void *); extern void FUN_0201B6A0(s32); -THUMB_FUNC void FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2) { - FUN_0201B60C(gMain.unk18, r0, r1, r2); + return FUN_0201B60C(gMain.unk18, r0, r1, r2); } -THUMB_FUNC void FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2) { - FUN_0201B60C(gMain.unk1C, r0, r1, r2); + return FUN_0201B60C(gMain.unk1C, r0, r1, r2); } -THUMB_FUNC void FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2) { - FUN_0201B60C(gMain.unk24, r0, r1, r2); + return FUN_0201B60C(gMain.unk24, r0, r1, r2); } -THUMB_FUNC void FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2) { - FUN_0201B60C(gMain.unk20, r0, r1, r2); + return FUN_0201B60C(gMain.unk20, r0, r1, r2); } -THUMB_FUNC void FUN_0200CAB4(s32 unk1) +THUMB_FUNC void FUN_0200CAB4(s32 unk1) //bool? { FUN_0201B6A0(unk1); } -- cgit v1.2.3 From b65d56bc44308503f4da143fd9a014926020450c Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 10 Nov 2020 15:52:15 +0000 Subject: fix a few small issues --- arm9/modules/21/src/mod21_02254854_src.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index 8a0c4146..fcb34247 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -1,6 +1,7 @@ #include "global.h" #include "heap.h" #include "unk_0200CA44.h" +#include "mod21_02254854.h" extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); extern void MOD21_02254930(void *, void *); @@ -18,4 +19,4 @@ THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) FreeToHeap(alloced); } return FALSE; -} \ No newline at end of file +} -- cgit v1.2.3 From ebbcd4c9d985bd3c66e45fee6cf201525d501633 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 10 Nov 2020 16:38:39 +0000 Subject: mod21_0225489C --- arm9/modules/21/asm/mod21_02254854_asm.s | 63 -------------------------------- arm9/modules/21/include/mod21_02254854.h | 15 +++++++- arm9/modules/21/src/mod21_02254854_src.c | 46 +++++++++++++++++++++-- 3 files changed, 56 insertions(+), 68 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index 5e5dd958..c879c819 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -3,69 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_0225489C -MOD21_0225489C: ; 0x0225489C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - add r1, r5, #0 - add r0, #0x24 - add r1, #0x14 - bl MOD21_02254A6C - cmp r0, #0 - beq _0225490A - mov r1, #0 - strb r1, [r5] - strb r1, [r5, #1] - strb r1, [r5, #2] - mov r0, #1 - strb r0, [r5, #3] - strb r1, [r5, #6] - add r0, r5, #0 - str r1, [r5, #0x20] - add r0, #0x14 - bl GF_RTC_CopyTime - ldr r0, [r5, #0x14] - cmp r0, #0x18 - blo _022548D6 - mov r1, #0x18 - bl _u32_div_f - str r1, [r5, #0x14] -_022548D6: - ldr r0, [r5, #0x18] - cmp r0, #0x3c - blo _022548E6 - ldr r0, [r5, #0x14] - mov r1, #0x3c - bl _u32_div_f - str r1, [r5, #0x14] -_022548E6: - ldr r0, [r5, #0x18] - ldr r2, _02254910 ; =MOD21_02254974 - strb r0, [r5, #5] - mov r0, #8 - str r0, [sp] - ldr r0, _02254914 ; =MOD21_02254D80 - mov r1, #1 - add r3, r5, #0 - bl MOD20_02254130 - str r0, [r5, #0x10] - cmp r0, #0 - bne _02254904 - mov r0, #0 - pop {r3, r4, r5, pc} -_02254904: - str r4, [r5, #0x28] - mov r0, #1 - pop {r3, r4, r5, pc} -_0225490A: - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_02254910: .word MOD21_02254974 -_02254914: .word MOD21_02254D80 - thumb_func_end MOD21_0225489C - thumb_func_start MOD21_02254918 MOD21_02254918: ; 0x02254918 push {r4, lr} diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index 061e7e4b..dc68ebeb 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -3,6 +3,19 @@ #include "nitro/types.h" -BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3); +typedef struct UnkStruct02254854 +{ + u8 bytearray[8]; + u8 padding0[8]; + BOOL Unk10; + u32 Unk14[2]; + u8 padding1[4]; + u32 Unk20; + u32 Unk24; + u32 Unk28; +} UnkStruct02254854; + +BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3); +BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index fcb34247..5e808856 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -3,20 +3,58 @@ #include "unk_0200CA44.h" #include "mod21_02254854.h" -extern BOOL MOD21_0225489C(void *param0, u32 param1, u32 param2, u32 param3); extern void MOD21_02254930(void *, void *); -THUMB_FUNC BOOL MOD21_02254854(u32 *param0, u32 param1, u32 param2, u32 param3) //param0 is likely actually a struct +extern void GF_RTC_CopyTime(u32 *param0); + +extern void MOD21_02254D80(); +extern void MOD21_02254974(); +extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); +extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); + +THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) { - void * alloced = AllocFromHeap(8, 0x2c); + UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); if (alloced != NULL) { if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1)) { - *param0 = (u32)alloced; + *param0 = alloced; return TRUE; } FreeToHeap(alloced); } return FALSE; } + +THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) +{ +#pragma unused (param2, param3) //not sure, please check + if (MOD21_02254A6C(¶m0->Unk24, param0->Unk14)) + { + param0->bytearray[0] = 0; + param0->bytearray[1] = 0; + param0->bytearray[2] = 0; + param0->bytearray[3] = 1; + param0->bytearray[6] = 0; + param0->Unk20 = 0; + GF_RTC_CopyTime(param0->Unk14); + if (param0->Unk14[0] >= 0x18) + { + param0->Unk14[0] = param0->Unk14[0] % 0x18; + } + if (param0->Unk14[1] >= 0x3c) + { + param0->Unk14[0] = param0->Unk14[0] % 0x3c; + } + param0->bytearray[5] = (u8)param0->Unk14[1]; + param0->Unk10 = MOD20_02254130(MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); + if (param0->Unk10 == FALSE) + { + return FALSE; + } + param0->Unk28 = param1; + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 32fbb72519542c49ac8c33cdc8f4ebf7d808871c Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 12 Nov 2020 18:15:46 +0000 Subject: mod21_02254918 --- arm9/modules/21/asm/mod21_02254854_asm.s | 13 +------------ arm9/modules/21/include/mod21_02254854.h | 1 + arm9/modules/21/src/mod21_02254854_src.c | 10 ++++++++++ 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index c879c819..2081400a 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -3,18 +3,7 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254918 -MOD21_02254918: ; 0x02254918 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x24] - bl MOD21_02254B04 - ldr r0, [r4, #0x10] - bl MOD20_02254198 - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD21_02254918 + .extern MOD21_02254918 thumb_func_start MOD21_02254930 MOD21_02254930: ; 0x02254930 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index dc68ebeb..c04959b3 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -17,5 +17,6 @@ typedef struct UnkStruct02254854 BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3); BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3); +void MOD21_02254918(UnkStruct02254854 *param0); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index 5e808856..870efa17 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -12,6 +12,9 @@ extern void MOD21_02254974(); extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); +extern void MOD21_02254B04(u32 param0); +extern void MOD20_02254198(BOOL param0); + THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) { UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); @@ -58,3 +61,10 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 } return FALSE; } + +THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) +{ + MOD21_02254B04(param0->Unk24); + MOD20_02254198(param0->Unk10); + FreeToHeap((void *)param0); +} -- cgit v1.2.3 From bc3be40047d1b9ec45e7b355dff2280e7c5faa0a Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 14 Nov 2020 00:07:14 +0000 Subject: more mod 21 --- arm9/arm9.lsf | 1 - arm9/modules/21/asm/mod21_02254854_asm.s | 71 -------------------------------- arm9/modules/21/include/mod21_02254854.h | 3 ++ arm9/modules/21/src/mod21_02254854_src.c | 66 ++++++++++++++++++++++++++--- arm9/modules/21/src/module_21_sinit.c | 13 ------ arm9/src/unk_0200CA44.c | 10 ++--- 6 files changed, 68 insertions(+), 96 deletions(-) delete mode 100644 arm9/modules/21/src/module_21_sinit.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 20c1b64c..e0073d87 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -663,7 +663,6 @@ Overlay MODULE_21 { ##Pokétch Clock## After MODULE_20 - Object module_21_sinit.o Object mod21_02254854_src.o Object mod21_02254854_asm.o Object mod21_02254A6C.o diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index 2081400a..8da8777f 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -3,67 +3,6 @@ .section .text .balign 4, 0 - .extern MOD21_02254918 - - thumb_func_start MOD21_02254930 -MOD21_02254930: ; 0x02254930 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #3 - bhs _02254966 - ldr r0, [r4, #0x28] - ldr r1, [r4, #0x10] - bl MOD20_02252C14 - ldrb r1, [r4] - add r0, r4, #0 - lsl r2, r1, #2 - ldr r1, _02254968 ; =MOD21_02254D84 - ldr r1, [r1, r2] - blx r1 - cmp r0, #0 - beq _02254966 - add r0, r4, #0 - bl MOD21_02254918 - add r0, r5, #0 - bl FUN_0200CAB4 - ldr r0, [r4, #0x28] - bl MOD20_022529A0 -_02254966: - pop {r3, r4, r5, pc} - .align 2, 0 -_02254968: .word MOD21_02254D84 - thumb_func_end MOD21_02254930 - - thumb_func_start MOD21_0225496C -MOD21_0225496C: ; 0x0225496C - mov r1, #1 - strb r1, [r0, #2] - bx lr - .align 2, 0 - thumb_func_end MOD21_0225496C - - thumb_func_start MOD21_02254974 -MOD21_02254974: ; 0x02254974 - cmp r2, #0 - beq _02254984 - cmp r2, #1 - bne _0225498C - mov r0, #1 - str r0, [r3, #0x20] - strb r0, [r3, #6] - bx lr -_02254984: - mov r0, #0 - str r0, [r3, #0x20] - mov r0, #1 - strb r0, [r3, #6] -_0225498C: - bx lr - .align 2, 0 - thumb_func_end MOD21_02254974 - thumb_func_start MOD21_02254990 MOD21_02254990: ; 0x02254990 ldrb r2, [r0, #2] @@ -189,13 +128,3 @@ _02254A66: pop {r4, pc} .align 2, 0 thumb_func_end MOD21_02254A38 - - .section .rodata - - .global MOD21_02254D80 -MOD21_02254D80: ; 0x02254D80 - .byte 0x10, 0xAF, 0x10, 0xCF - - .global MOD21_02254D84 -MOD21_02254D84: ; 0x02254D84 - .word MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index c04959b3..dabacf1c 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -18,5 +18,8 @@ typedef struct UnkStruct02254854 BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3); BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3); void MOD21_02254918(UnkStruct02254854 *param0); +void MOD21_02254930(u32 param0, UnkStruct02254854 *param1); +void MOD21_0225496C(UnkStruct02254854 *param0); +void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index 870efa17..f7fbe221 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -3,24 +3,37 @@ #include "unk_0200CA44.h" #include "mod21_02254854.h" -extern void MOD21_02254930(void *, void *); - extern void GF_RTC_CopyTime(u32 *param0); -extern void MOD21_02254D80(); -extern void MOD21_02254974(); +u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF }; extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); +extern void MOD20_02252C14(u32 param0, BOOL param1); + +extern u32 MOD21_022549A4(UnkStruct02254854 *); +extern u32 MOD21_022549E4(UnkStruct02254854 *); +extern u32 MOD21_02254A38(UnkStruct02254854 *); extern void MOD21_02254B04(u32 param0); extern void MOD20_02254198(BOOL param0); +extern void MOD20_022529A0(u32 param0); + +extern void Poketch_InitApp(void *func1, void *func2); + +THUMB_FUNC static void MOD21_02254840(void) +{ + Poketch_InitApp(MOD21_02254854, MOD21_0225496C); +} + +#define NitroStaticInit MOD21_02254840 +#include "sinit.h" THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) { UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); if (alloced != NULL) { - if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44(MOD21_02254930, alloced, (void *)1)) + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1)) { *param0 = alloced; return TRUE; @@ -51,7 +64,7 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 param0->Unk14[0] = param0->Unk14[0] % 0x3c; } param0->bytearray[5] = (u8)param0->Unk14[1]; - param0->Unk10 = MOD20_02254130(MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); + param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); if (param0->Unk10 == FALSE) { return FALSE; @@ -62,9 +75,50 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 return FALSE; } +u32 (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; + THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) { MOD21_02254B04(param0->Unk24); MOD20_02254198(param0->Unk10); FreeToHeap((void *)param0); } + +THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1) +{ + if (param1->bytearray[0] >= 3) + { + return; + } + MOD20_02252C14(param1->Unk28, param1->Unk10); + if (!MOD21_02254D84[param1->bytearray[0]](param1)) + { + return; + } + MOD21_02254918(param1); + FUN_0200CAB4((s32)param0); + MOD20_022529A0(param1->Unk28); +} + +THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0) +{ + param0->bytearray[2] = 1; +} + +THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3) +{ +#pragma unused (param0, param1) + switch (param2) + { + case 1: + param3->Unk20 = 1; + param3->bytearray[6] = 1; + return; + case 0: + param3->Unk20 = 0; + param3->bytearray[6] = 1; + return; + default: + return; + } +} diff --git a/arm9/modules/21/src/module_21_sinit.c b/arm9/modules/21/src/module_21_sinit.c deleted file mode 100644 index c4b2ac5a..00000000 --- a/arm9/modules/21/src/module_21_sinit.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "global.h" -#include "mod21_02254854.h" - -extern void Poketch_InitApp(void *func1, void *func2); -extern void MOD21_0225496C(); - -THUMB_FUNC static void MOD21_02254840(void) -{ - Poketch_InitApp(MOD21_02254854, MOD21_0225496C); -} - -#define NitroStaticInit MOD21_02254840 -#include "sinit.h" diff --git a/arm9/src/unk_0200CA44.c b/arm9/src/unk_0200CA44.c index 1a572a89..fd703cd3 100644 --- a/arm9/src/unk_0200CA44.c +++ b/arm9/src/unk_0200CA44.c @@ -2,25 +2,25 @@ #include "main.h" #include "unk_0200CA44.h" -extern BOOL FUN_0201B60C(void *, void (*)(void *, void *), void *, void *); +extern BOOL FUN_0201B60C(void *, void (*)(u32, void *), void *, void *); extern void FUN_0201B6A0(s32); -THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA44(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk18, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA60(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk1C, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA7C(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk24, r0, r1, r2); } -THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(void *, void *), void * r1, void * r2) +THUMB_FUNC BOOL FUN_0200CA98(void (*r0)(u32, void *), void * r1, void * r2) { return FUN_0201B60C(gMain.unk20, r0, r1, r2); } -- cgit v1.2.3 From 89476f60f8b7bdef718c566252421922c1ace7a2 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 14:22:17 +0000 Subject: mod21_02254990 --- arm9/modules/21/asm/mod21_02254854_asm.s | 16 +--------------- arm9/modules/21/include/mod21_02254854.h | 1 + arm9/modules/21/src/mod21_02254854_src.c | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 15 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index 8da8777f..ee8a1d56 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -3,21 +3,7 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254990 -MOD21_02254990: ; 0x02254990 - ldrb r2, [r0, #2] - cmp r2, #0 - bne _02254998 - b _0225499A -_02254998: - mov r1, #2 -_0225499A: - strb r1, [r0] - mov r1, #0 - strb r1, [r0, #1] - bx lr - .align 2, 0 - thumb_func_end MOD21_02254990 + .extern MOD21_02254990 thumb_func_start MOD21_022549A4 MOD21_022549A4: ; 0x022549A4 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index dabacf1c..26ef3e87 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -21,5 +21,6 @@ void MOD21_02254918(UnkStruct02254854 *param0); void MOD21_02254930(u32 param0, UnkStruct02254854 *param1); void MOD21_0225496C(UnkStruct02254854 *param0); void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3); +void MOD21_02254990(UnkStruct02254854 * param0, u8 param1); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index f7fbe221..eaa8d7ad 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -122,3 +122,17 @@ THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct0225 return; } } + +THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1) +{ + if (param0->bytearray[2] == 0) + { + param0->bytearray[0] = param1; + } + else + { + param0->bytearray[0] = 2; + } + param0->bytearray[1] = 0; +} + -- cgit v1.2.3 From 18795a69f067096ce79e9aa3ca8bfa41ca0e400c Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 14:39:57 +0000 Subject: mod21_022549A4 --- arm9/modules/21/asm/mod21_02254854_asm.s | 35 -------------------------------- arm9/modules/21/include/mod21_02254854.h | 1 + arm9/modules/21/src/mod21_02254854_src.c | 32 +++++++++++++++++++++++++---- 3 files changed, 29 insertions(+), 39 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s index ee8a1d56..344d0d64 100644 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ b/arm9/modules/21/asm/mod21_02254854_asm.s @@ -5,41 +5,6 @@ .extern MOD21_02254990 - thumb_func_start MOD21_022549A4 -MOD21_022549A4: ; 0x022549A4 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _022549B4 - cmp r0, #1 - beq _022549C4 - b _022549DE -_022549B4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _022549DE -_022549C4: - ldr r0, [r4, #0x24] - mov r1, #0 - bl MOD21_02254B34 - cmp r0, #0 - beq _022549DE - ldr r0, [r4, #0x28] - bl MOD20_0225298C - add r0, r4, #0 - mov r1, #1 - bl MOD21_02254990 -_022549DE: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549A4 - thumb_func_start MOD21_022549E4 MOD21_022549E4: ; 0x022549E4 push {r4, lr} diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index 26ef3e87..e6b6c3cf 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -22,5 +22,6 @@ void MOD21_02254930(u32 param0, UnkStruct02254854 *param1); void MOD21_0225496C(UnkStruct02254854 *param0); void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3); void MOD21_02254990(UnkStruct02254854 * param0, u8 param1); +BOOL MOD21_022549A4(UnkStruct02254854 * param0); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c index eaa8d7ad..db8769af 100644 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ b/arm9/modules/21/src/mod21_02254854_src.c @@ -10,14 +10,17 @@ extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); extern void MOD20_02252C14(u32 param0, BOOL param1); -extern u32 MOD21_022549A4(UnkStruct02254854 *); -extern u32 MOD21_022549E4(UnkStruct02254854 *); -extern u32 MOD21_02254A38(UnkStruct02254854 *); +extern BOOL MOD21_022549E4(UnkStruct02254854 *); +extern BOOL MOD21_02254A38(UnkStruct02254854 *); extern void MOD21_02254B04(u32 param0); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); +extern void MOD21_02254B10(u32 param0, u32 param1); +extern BOOL MOD21_02254B34(u32 param0, u32 param1); +extern void MOD20_0225298C(u32 param0); + extern void Poketch_InitApp(void *func1, void *func2); THUMB_FUNC static void MOD21_02254840(void) @@ -75,7 +78,7 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 return FALSE; } -u32 (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; +BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) { @@ -136,3 +139,24 @@ THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1) param0->bytearray[1] = 0; } +THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0) +{ + switch (param0->bytearray[1]) + { + case 0: + MOD21_02254B10(param0->Unk24, 0); + param0->bytearray[1]++; + break; + case 1: + if (MOD21_02254B34(param0->Unk24, 0) == FALSE) + { + break; + } + MOD20_0225298C(param0->Unk28); + MOD21_02254990(param0, 1); + break; + default: + break; + } + return FALSE; +} -- cgit v1.2.3 From c3419a42429718f57f3de5d19e2cd44a18e53033 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 18 Nov 2020 18:19:26 +0000 Subject: fully decomp mod21_02254854.o --- arm9/arm9.lsf | 3 +- arm9/modules/21/asm/mod21_02254854_asm.s | 81 ------------ arm9/modules/21/include/mod21_02254854.h | 2 + arm9/modules/21/src/mod21_02254854.c | 204 +++++++++++++++++++++++++++++++ arm9/modules/21/src/mod21_02254854_src.c | 162 ------------------------ 5 files changed, 207 insertions(+), 245 deletions(-) delete mode 100644 arm9/modules/21/asm/mod21_02254854_asm.s create mode 100644 arm9/modules/21/src/mod21_02254854.c delete mode 100644 arm9/modules/21/src/mod21_02254854_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index e0073d87..d77a4c21 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -663,8 +663,7 @@ Overlay MODULE_21 { ##Pokétch Clock## After MODULE_20 - Object mod21_02254854_src.o - Object mod21_02254854_asm.o + Object mod21_02254854.o Object mod21_02254A6C.o } diff --git a/arm9/modules/21/asm/mod21_02254854_asm.s b/arm9/modules/21/asm/mod21_02254854_asm.s deleted file mode 100644 index 344d0d64..00000000 --- a/arm9/modules/21/asm/mod21_02254854_asm.s +++ /dev/null @@ -1,81 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - .extern MOD21_02254990 - - thumb_func_start MOD21_022549E4 -MOD21_022549E4: ; 0x022549E4 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #2] - cmp r1, #0 - beq _022549F8 - mov r1, #2 - bl MOD21_02254990 - mov r0, #0 - pop {r4, pc} -_022549F8: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _02254A0A - mov r0, #0 - strb r0, [r4, #6] - ldr r0, [r4, #0x24] - mov r1, #2 - bl MOD21_02254B10 -_02254A0A: - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B34 - cmp r0, #0 - beq _02254A32 - ldr r0, [r4, #0x18] - strb r0, [r4, #5] - add r0, r4, #0 - add r0, #0x14 - bl GF_RTC_CopyTime - ldrb r1, [r4, #5] - ldr r0, [r4, #0x18] - cmp r1, r0 - beq _02254A32 - ldr r0, [r4, #0x24] - mov r1, #1 - bl MOD21_02254B10 -_02254A32: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_022549E4 - - thumb_func_start MOD21_02254A38 -MOD21_02254A38: ; 0x02254A38 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r4, #1] - cmp r0, #0 - beq _02254A48 - cmp r0, #1 - beq _02254A58 - b _02254A66 -_02254A48: - ldr r0, [r4, #0x24] - mov r1, #3 - bl MOD21_02254B10 - ldrb r0, [r4, #1] - add r0, r0, #1 - strb r0, [r4, #1] - b _02254A66 -_02254A58: - ldr r0, [r4, #0x24] - bl MOD21_02254B40 - cmp r0, #0 - beq _02254A66 - mov r0, #1 - pop {r4, pc} -_02254A66: - mov r0, #0 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254A38 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index e6b6c3cf..b501962e 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -23,5 +23,7 @@ void MOD21_0225496C(UnkStruct02254854 *param0); void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3); void MOD21_02254990(UnkStruct02254854 * param0, u8 param1); BOOL MOD21_022549A4(UnkStruct02254854 * param0); +BOOL MOD21_022549E4(UnkStruct02254854 * param0); +BOOL MOD21_02254A38(UnkStruct02254854 * param0); #endif //POKEDIAMOND_MOD21_02254854_H diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c new file mode 100644 index 00000000..44c97b8e --- /dev/null +++ b/arm9/modules/21/src/mod21_02254854.c @@ -0,0 +1,204 @@ +#include "global.h" +#include "heap.h" +#include "unk_0200CA44.h" +#include "mod21_02254854.h" + +extern void GF_RTC_CopyTime(u32 *param0); + +u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF }; +extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); +extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); +extern void MOD20_02252C14(u32 param0, BOOL param1); + +extern void MOD21_02254B04(u32 param0); +extern void MOD20_02254198(BOOL param0); +extern void MOD20_022529A0(u32 param0); + +extern void MOD21_02254B10(u32 param0, u32 param1); +extern BOOL MOD21_02254B34(u32 param0, u32 param1); +extern BOOL MOD21_02254B40(u32 param0); +extern void MOD20_0225298C(u32 param0); + +extern void Poketch_InitApp(void *func1, void *func2); + +THUMB_FUNC static void MOD21_02254840(void) +{ + Poketch_InitApp(MOD21_02254854, MOD21_0225496C); +} + +#define NitroStaticInit MOD21_02254840 +#include "sinit.h" + +THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) +{ + UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); + if (alloced != NULL) + { + if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1)) + { + *param0 = alloced; + return TRUE; + } + FreeToHeap(alloced); + } + return FALSE; +} + +THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) +{ +#pragma unused (param2, param3) //not sure, please check + if (MOD21_02254A6C(¶m0->Unk24, param0->Unk14)) + { + param0->bytearray[0] = 0; + param0->bytearray[1] = 0; + param0->bytearray[2] = 0; + param0->bytearray[3] = 1; + param0->bytearray[6] = 0; + param0->Unk20 = 0; + GF_RTC_CopyTime(param0->Unk14); + if (param0->Unk14[0] >= 0x18) + { + param0->Unk14[0] = param0->Unk14[0] % 0x18; + } + if (param0->Unk14[1] >= 0x3c) + { + param0->Unk14[0] = param0->Unk14[0] % 0x3c; + } + param0->bytearray[5] = (u8)param0->Unk14[1]; + param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); + if (param0->Unk10 == FALSE) + { + return FALSE; + } + param0->Unk28 = param1; + return TRUE; + } + return FALSE; +} + +BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; + +THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) +{ + MOD21_02254B04(param0->Unk24); + MOD20_02254198(param0->Unk10); + FreeToHeap((void *)param0); +} + +THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1) +{ + if (param1->bytearray[0] >= 3) + { + return; + } + MOD20_02252C14(param1->Unk28, param1->Unk10); + if (!MOD21_02254D84[param1->bytearray[0]](param1)) + { + return; + } + MOD21_02254918(param1); + FUN_0200CAB4((s32)param0); + MOD20_022529A0(param1->Unk28); +} + +THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0) +{ + param0->bytearray[2] = 1; +} + +THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3) +{ +#pragma unused (param0, param1) + switch (param2) + { + case 1: + param3->Unk20 = 1; + param3->bytearray[6] = 1; + return; + case 0: + param3->Unk20 = 0; + param3->bytearray[6] = 1; + return; + default: + return; + } +} + +THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1) +{ + if (param0->bytearray[2] == 0) + { + param0->bytearray[0] = param1; + } + else + { + param0->bytearray[0] = 2; + } + param0->bytearray[1] = 0; +} + +THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0) +{ + switch (param0->bytearray[1]) + { + case 0: + MOD21_02254B10(param0->Unk24, 0); + param0->bytearray[1]++; + break; + case 1: + if (MOD21_02254B34(param0->Unk24, 0) == FALSE) + { + break; + } + MOD20_0225298C(param0->Unk28); + MOD21_02254990(param0, 1); + break; + default: + break; + } + return FALSE; +} + +THUMB_FUNC BOOL MOD21_022549E4(UnkStruct02254854 * param0) +{ + if (param0->bytearray[2]) + { + MOD21_02254990(param0, 2); + return FALSE; + } + if (param0->bytearray[6]) + { + param0->bytearray[6] = 0; + MOD21_02254B10(param0->Unk24, 2); + } + if (MOD21_02254B34(param0->Unk24, 1)) + { + param0->bytearray[5] = (u8)param0->Unk14[1]; + GF_RTC_CopyTime(param0->Unk14); + if (param0->bytearray[5] != param0->Unk14[1]) + { + MOD21_02254B10(param0->Unk24, 1); + } + } + return FALSE; +} + +THUMB_FUNC BOOL MOD21_02254A38(UnkStruct02254854 * param0) +{ + switch (param0->bytearray[1]) + { + case 0: + MOD21_02254B10(param0->Unk24, 3); + param0->bytearray[1]++; + break; + case 1: + if (MOD21_02254B40(param0->Unk24)) + { + return TRUE; + } + break; + default: + break; + } + return FALSE; +} diff --git a/arm9/modules/21/src/mod21_02254854_src.c b/arm9/modules/21/src/mod21_02254854_src.c deleted file mode 100644 index db8769af..00000000 --- a/arm9/modules/21/src/mod21_02254854_src.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "global.h" -#include "heap.h" -#include "unk_0200CA44.h" -#include "mod21_02254854.h" - -extern void GF_RTC_CopyTime(u32 *param0); - -u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF }; -extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); -extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); -extern void MOD20_02252C14(u32 param0, BOOL param1); - -extern BOOL MOD21_022549E4(UnkStruct02254854 *); -extern BOOL MOD21_02254A38(UnkStruct02254854 *); - -extern void MOD21_02254B04(u32 param0); -extern void MOD20_02254198(BOOL param0); -extern void MOD20_022529A0(u32 param0); - -extern void MOD21_02254B10(u32 param0, u32 param1); -extern BOOL MOD21_02254B34(u32 param0, u32 param1); -extern void MOD20_0225298C(u32 param0); - -extern void Poketch_InitApp(void *func1, void *func2); - -THUMB_FUNC static void MOD21_02254840(void) -{ - Poketch_InitApp(MOD21_02254854, MOD21_0225496C); -} - -#define NitroStaticInit MOD21_02254840 -#include "sinit.h" - -THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param2, u32 param3) -{ - UnkStruct02254854 *alloced = (UnkStruct02254854 *)AllocFromHeap(8, sizeof(UnkStruct02254854)); - if (alloced != NULL) - { - if (MOD21_0225489C(alloced, param1, param2, param3) && FUN_0200CA44((void (*)(u32, void *))MOD21_02254930, alloced, (void *)1)) - { - *param0 = alloced; - return TRUE; - } - FreeToHeap(alloced); - } - return FALSE; -} - -THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) -{ -#pragma unused (param2, param3) //not sure, please check - if (MOD21_02254A6C(¶m0->Unk24, param0->Unk14)) - { - param0->bytearray[0] = 0; - param0->bytearray[1] = 0; - param0->bytearray[2] = 0; - param0->bytearray[3] = 1; - param0->bytearray[6] = 0; - param0->Unk20 = 0; - GF_RTC_CopyTime(param0->Unk14); - if (param0->Unk14[0] >= 0x18) - { - param0->Unk14[0] = param0->Unk14[0] % 0x18; - } - if (param0->Unk14[1] >= 0x3c) - { - param0->Unk14[0] = param0->Unk14[0] % 0x3c; - } - param0->bytearray[5] = (u8)param0->Unk14[1]; - param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); - if (param0->Unk10 == FALSE) - { - return FALSE; - } - param0->Unk28 = param1; - return TRUE; - } - return FALSE; -} - -BOOL (* const MOD21_02254D84[])(UnkStruct02254854 *) = { MOD21_022549A4, MOD21_022549E4, MOD21_02254A38 }; - -THUMB_FUNC void MOD21_02254918(UnkStruct02254854 *param0) -{ - MOD21_02254B04(param0->Unk24); - MOD20_02254198(param0->Unk10); - FreeToHeap((void *)param0); -} - -THUMB_FUNC void MOD21_02254930(u32 param0, UnkStruct02254854 *param1) -{ - if (param1->bytearray[0] >= 3) - { - return; - } - MOD20_02252C14(param1->Unk28, param1->Unk10); - if (!MOD21_02254D84[param1->bytearray[0]](param1)) - { - return; - } - MOD21_02254918(param1); - FUN_0200CAB4((s32)param0); - MOD20_022529A0(param1->Unk28); -} - -THUMB_FUNC void MOD21_0225496C(UnkStruct02254854 *param0) -{ - param0->bytearray[2] = 1; -} - -THUMB_FUNC void MOD21_02254974(u32 param0, u32 param1, u32 param2, UnkStruct02254854 * param3) -{ -#pragma unused (param0, param1) - switch (param2) - { - case 1: - param3->Unk20 = 1; - param3->bytearray[6] = 1; - return; - case 0: - param3->Unk20 = 0; - param3->bytearray[6] = 1; - return; - default: - return; - } -} - -THUMB_FUNC void MOD21_02254990(UnkStruct02254854 * param0, u8 param1) -{ - if (param0->bytearray[2] == 0) - { - param0->bytearray[0] = param1; - } - else - { - param0->bytearray[0] = 2; - } - param0->bytearray[1] = 0; -} - -THUMB_FUNC BOOL MOD21_022549A4(UnkStruct02254854 * param0) -{ - switch (param0->bytearray[1]) - { - case 0: - MOD21_02254B10(param0->Unk24, 0); - param0->bytearray[1]++; - break; - case 1: - if (MOD21_02254B34(param0->Unk24, 0) == FALSE) - { - break; - } - MOD20_0225298C(param0->Unk28); - MOD21_02254990(param0, 1); - break; - default: - break; - } - return FALSE; -} -- cgit v1.2.3 From b929414450ac7ee42268815a4a6c913a955476e4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 18:57:14 +0000 Subject: start decompiling mod21_02254A6C --- arm9/arm9.lsf | 3 +- arm9/modules/21/asm/mod21_02254A6C.s | 427 ------------------------------- arm9/modules/21/asm/mod21_02254A6C_asm.s | 376 +++++++++++++++++++++++++++ arm9/modules/21/include/mod21_02254A6C.h | 17 ++ arm9/modules/21/src/mod21_02254A6C_src.c | 31 +++ 5 files changed, 426 insertions(+), 428 deletions(-) delete mode 100644 arm9/modules/21/asm/mod21_02254A6C.s create mode 100644 arm9/modules/21/asm/mod21_02254A6C_asm.s create mode 100644 arm9/modules/21/include/mod21_02254A6C.h create mode 100644 arm9/modules/21/src/mod21_02254A6C_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d77a4c21..2085fcbe 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,7 +664,8 @@ Overlay MODULE_21 ##Pokétch Clock## After MODULE_20 Object mod21_02254854.o - Object mod21_02254A6C.o + Object mod21_02254A6C_src.o + Object mod21_02254A6C_asm.o } Overlay MODULE_22 diff --git a/arm9/modules/21/asm/mod21_02254A6C.s b/arm9/modules/21/asm/mod21_02254A6C.s deleted file mode 100644 index 88dcb27c..00000000 --- a/arm9/modules/21/asm/mod21_02254A6C.s +++ /dev/null @@ -1,427 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD21_02254A6C -MOD21_02254A6C: ; 0x02254A6C - push {r4, r5, r6, lr} - sub sp, #8 - add r6, r1, #0 - mov r1, #3 - add r5, r0, #0 - mov r0, #8 - lsl r1, r1, #8 - bl AllocFromHeap - add r4, r0, #0 - beq _02254ACC - add r0, #8 - mov r1, #8 - bl MOD20_022536F4 - str r6, [r4] - bl MOD20_02252D34 - str r0, [r4, #4] - mov r0, #8 - str r0, [sp] - mov r0, #0xc - mov r1, #0x19 - mov r2, #1 - add r3, sp, #4 - bl FUN_02006BDC - add r6, r0, #0 - bne _02254AB2 - add r0, r4, #0 - bl FreeToHeap - add sp, #8 - mov r0, #0 - pop {r4, r5, r6, pc} -_02254AB2: - ldr r0, [sp, #4] - add r1, r4, #0 - add r0, #0xc - add r1, #0x30 - bl MOD21_02254AD4 - add r0, r6, #0 - bl FreeToHeap - add sp, #8 - str r4, [r5] - mov r0, #1 - pop {r4, r5, r6, pc} -_02254ACC: - mov r0, #0 - add sp, #8 - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_end MOD21_02254A6C - - thumb_func_start MOD21_02254AD4 -MOD21_02254AD4: ; 0x02254AD4 - push {r3, r4, r5, r6, r7, lr} - mov r6, #9 - add r5, r0, #0 - add r4, r1, #0 - mov r7, #0 - lsl r6, r6, #6 -_02254AE0: - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x40 - bl MIi_CpuCopy16 - add r1, r4, #0 - add r0, r5, r6 - add r1, #0x40 - mov r2, #0x10 - bl MIi_CpuCopy16 - add r7, r7, #1 - add r5, #0x40 - add r4, #0x50 - sub r6, #0x30 - cmp r7, #9 - blt _02254AE0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD21_02254AD4 - - thumb_func_start MOD21_02254B04 -MOD21_02254B04: ; 0x02254B04 - push {r3, lr} - cmp r0, #0 - beq _02254B0E - bl FreeToHeap -_02254B0E: - pop {r3, pc} - thumb_func_end MOD21_02254B04 - - thumb_func_start MOD21_02254B10 -MOD21_02254B10: ; 0x02254B10 - push {lr} - sub sp, #0xc - add r2, r0, #0 - add r0, #8 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - ldr r0, _02254B30 ; =MOD21_02254DAC - ldr r3, [r2] - bl MOD20_022537E0 - add sp, #0xc - pop {pc} - nop -_02254B30: .word MOD21_02254DAC - thumb_func_end MOD21_02254B10 - - thumb_func_start MOD21_02254B34 -MOD21_02254B34: ; 0x02254B34 - ldr r3, _02254B3C ; =MOD20_02253794 - add r0, #8 - bx r3 - nop -_02254B3C: .word MOD20_02253794 - thumb_func_end MOD21_02254B34 - - thumb_func_start MOD21_02254B40 -MOD21_02254B40: ; 0x02254B40 - ldr r3, _02254B48 ; =MOD20_022537B8 - add r0, #8 - bx r3 - nop -_02254B48: .word MOD20_022537B8 - thumb_func_end MOD21_02254B40 - - thumb_func_start MOD21_02254B4C -MOD21_02254B4C: ; 0x02254B4C - push {r4, lr} - add r4, r0, #0 - bl MOD20_022538A0 - add r0, #8 - add r1, r4, #0 - bl MOD20_02253888 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254B4C - - thumb_func_start MOD21_02254B60 -MOD21_02254B60: ; 0x02254B60 - push {r4, r5, lr} - sub sp, #0x14 - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [r5, #4] - ldr r2, _02254BE8 ; =MOD21_02254D90 - mov r1, #6 - mov r3, #0 - bl FUN_02016C18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x17 - mov r3, #6 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x18 - mov r3, #6 - bl FUN_020068C8 - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C - add r0, r5, #0 - bl MOD21_02254C5C - ldr r0, [r5, #4] - mov r1, #6 - bl FUN_02017CD0 - ldr r1, _02254BEC ; =0x04001000 - ldr r0, _02254BF0 ; =0xFFFFE0FF - ldr r3, [r1] - ldr r2, [r1] - str r3, [sp, #0x10] - and r0, r2 - lsl r2, r3, #0x13 - lsr r3, r2, #0x1b - mov r2, #4 - orr r2, r3 - lsl r2, r2, #8 - orr r0, r2 - str r0, [r1] - add r0, r4, #0 - bl MOD21_02254B4C - add sp, #0x14 - pop {r4, r5, pc} - .align 2, 0 -_02254BE8: .word MOD21_02254D90 -_02254BEC: .word 0x04001000 -_02254BF0: .word 0xFFFFE0FF - thumb_func_end MOD21_02254B60 - - thumb_func_start MOD21_02254BF4 -MOD21_02254BF4: ; 0x02254BF4 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - bl MOD21_02254C5C - ldr r0, [r4, #4] - mov r1, #6 - bl FUN_02017CD0 - add r0, r5, #0 - bl MOD21_02254B4C - pop {r3, r4, r5, pc} - thumb_func_end MOD21_02254BF4 - - thumb_func_start MOD21_02254C14 -MOD21_02254C14: ; 0x02254C14 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02254C30 - mov r0, #0 - add r1, r0, #0 - bl MOD11_02252DB4 - b _02254C38 -_02254C30: - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C -_02254C38: - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - thumb_func_end MOD21_02254C14 - - thumb_func_start MOD21_02254C40 -MOD21_02254C40: ; 0x02254C40 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0, #4] - mov r1, #6 - bl FUN_020178A0 - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254C40 - - thumb_func_start MOD21_02254C5C -MOD21_02254C5C: ; 0x02254C5C - push {r4, r5, lr} - sub sp, #0x1c - add r4, r0, #0 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254C7A: - ldrh r1, [r2] - tst r1, r0 - bne _02254C7A - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254C8A: - ldrh r2, [r3] - tst r2, r0 - bne _02254C8A - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #3 - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #8 - mov r3, #7 - bl FUN_02018170 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0, #4] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254D00: - ldrh r1, [r2] - tst r1, r0 - bne _02254D00 - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254D10: - ldrh r2, [r3] - tst r2, r0 - bne _02254D10 - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0xf - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0x14 - mov r3, #7 - bl FUN_02018170 - add sp, #0x1c - pop {r4, r5, pc} - nop -_02254D74: .word 0x04000280 -_02254D78: .word 0x040002A0 -_02254D7C: .word 0x040002A8 - thumb_func_end MOD21_02254C5C - - .section .rodata - - .global MOD21_02254D90 -MOD21_02254D90: ; 0x02254D90 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD21_02254DAC -MOD21_02254DAC: ; 0x02254DAC - .word 0x00, MOD21_02254B60, 0x00 - .word 0x01, MOD21_02254BF4, 0x00 - .word 0x02, MOD21_02254C14, 0x00 - .word 0x03, MOD21_02254C40, 0x00 - .word 0x00, 0x00000000, 0x00 diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s new file mode 100644 index 00000000..a5a2d7ae --- /dev/null +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -0,0 +1,376 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD21_02254AD4 +MOD21_02254AD4: ; 0x02254AD4 + push {r3, r4, r5, r6, r7, lr} + mov r6, #9 + add r5, r0, #0 + add r4, r1, #0 + mov r7, #0 + lsl r6, r6, #6 +_02254AE0: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x40 + bl MIi_CpuCopy16 + add r1, r4, #0 + add r0, r5, r6 + add r1, #0x40 + mov r2, #0x10 + bl MIi_CpuCopy16 + add r7, r7, #1 + add r5, #0x40 + add r4, #0x50 + sub r6, #0x30 + cmp r7, #9 + blt _02254AE0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD21_02254AD4 + + thumb_func_start MOD21_02254B04 +MOD21_02254B04: ; 0x02254B04 + push {r3, lr} + cmp r0, #0 + beq _02254B0E + bl FreeToHeap +_02254B0E: + pop {r3, pc} + thumb_func_end MOD21_02254B04 + + thumb_func_start MOD21_02254B10 +MOD21_02254B10: ; 0x02254B10 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #8 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254B30 ; =MOD21_02254DAC + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254B30: .word MOD21_02254DAC + thumb_func_end MOD21_02254B10 + + thumb_func_start MOD21_02254B34 +MOD21_02254B34: ; 0x02254B34 + ldr r3, _02254B3C ; =MOD20_02253794 + add r0, #8 + bx r3 + nop +_02254B3C: .word MOD20_02253794 + thumb_func_end MOD21_02254B34 + + thumb_func_start MOD21_02254B40 +MOD21_02254B40: ; 0x02254B40 + ldr r3, _02254B48 ; =MOD20_022537B8 + add r0, #8 + bx r3 + nop +_02254B48: .word MOD20_022537B8 + thumb_func_end MOD21_02254B40 + + thumb_func_start MOD21_02254B4C +MOD21_02254B4C: ; 0x02254B4C + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #8 + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254B4C + + thumb_func_start MOD21_02254B60 +MOD21_02254B60: ; 0x02254B60 + push {r4, r5, lr} + sub sp, #0x14 + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r2, _02254BE8 ; =MOD21_02254D90 + mov r1, #6 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x17 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldr r2, [r5, #4] + mov r0, #0xc + mov r1, #0x18 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + add r0, r5, #0 + bl MOD21_02254C5C + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r1, _02254BEC ; =0x04001000 + ldr r0, _02254BF0 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #4 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r4, #0 + bl MOD21_02254B4C + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_02254BE8: .word MOD21_02254D90 +_02254BEC: .word 0x04001000 +_02254BF0: .word 0xFFFFE0FF + thumb_func_end MOD21_02254B60 + + thumb_func_start MOD21_02254BF4 +MOD21_02254BF4: ; 0x02254BF4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r0, r5, #0 + bl MOD20_022538A0 + add r4, r0, #0 + bl MOD21_02254C5C + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + add r0, r5, #0 + bl MOD21_02254B4C + pop {r3, r4, r5, pc} + thumb_func_end MOD21_02254BF4 + + thumb_func_start MOD21_02254C14 +MOD21_02254C14: ; 0x02254C14 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02254C30 + mov r0, #0 + add r1, r0, #0 + bl MOD11_02252DB4 + b _02254C38 +_02254C30: + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C +_02254C38: + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + thumb_func_end MOD21_02254C14 + + thumb_func_start MOD21_02254C40 +MOD21_02254C40: ; 0x02254C40 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl MOD20_022538A0 + ldr r0, [r0, #4] + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD21_02254B4C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD21_02254C40 + + thumb_func_start MOD21_02254C5C +MOD21_02254C5C: ; 0x02254C5C + push {r4, r5, lr} + sub sp, #0x1c + add r4, r0, #0 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254C7A: + ldrh r1, [r2] + tst r1, r0 + bne _02254C7A + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254C8A: + ldrh r2, [r3] + tst r2, r0 + bne _02254C8A + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #3 + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #8 + mov r3, #7 + bl FUN_02018170 + ldr r0, [r4] + ldr r2, _02254D74 ; =0x04000280 + ldr r0, [r0, #4] + mov r3, #0 + strh r3, [r2] + str r0, [r2, #0x10] + add r0, r2, #0 + mov r1, #0xa + add r0, #0x18 + str r1, [r0] + str r3, [r0, #4] + lsr r0, r2, #0xb +_02254D00: + ldrh r1, [r2] + tst r1, r0 + bne _02254D00 + ldr r0, _02254D78 ; =0x040002A0 + add r3, r0, #0 + ldr r1, [r0] + sub r3, #0x20 + lsr r0, r0, #0xb +_02254D10: + ldrh r2, [r3] + tst r2, r0 + bne _02254D10 + ldr r0, _02254D7C ; =0x040002A8 + add r2, r4, #0 + ldr r5, [r0] + mov r0, #4 + str r0, [sp] + mov r0, #9 + lsl r1, r1, #0x1a + str r0, [sp, #4] + add r2, #0x30 + str r2, [sp, #8] + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0xf + mov r3, #7 + bl FUN_02018170 + mov r0, #4 + str r0, [sp] + mov r0, #9 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x30 + str r1, [sp, #8] + lsl r1, r5, #0x1a + lsr r1, r1, #0x18 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov r1, #0x28 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #0x14 + mov r3, #7 + bl FUN_02018170 + add sp, #0x1c + pop {r4, r5, pc} + nop +_02254D74: .word 0x04000280 +_02254D78: .word 0x040002A0 +_02254D7C: .word 0x040002A8 + thumb_func_end MOD21_02254C5C + + .section .rodata + + .global MOD21_02254D90 +MOD21_02254D90: ; 0x02254D90 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD21_02254DAC +MOD21_02254DAC: ; 0x02254DAC + .word 0x00, MOD21_02254B60, 0x00 + .word 0x01, MOD21_02254BF4, 0x00 + .word 0x02, MOD21_02254C14, 0x00 + .word 0x03, MOD21_02254C40, 0x00 + .word 0x00, 0x00000000, 0x00 diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h new file mode 100644 index 00000000..9c37ecc5 --- /dev/null +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -0,0 +1,17 @@ +#ifndef POKEDIAMOND_MOD21_02254A6C_H +#define POKEDIAMOND_MOD21_02254A6C_H + +#include "nitro/types.h" + +typedef struct UnkStruct02254A6C +{ + void *Unk00; + u32 Unk04; + u32 Unk08[1]; + u8 padding0[0x24]; + u32 Unk30[1]; +} UnkStruct02254A6C; + +BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); + +#endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c new file mode 100644 index 00000000..ee664f13 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -0,0 +1,31 @@ +#include "global.h" +#include "heap.h" +#include "mod21_02254A6C.h" + +extern void MOD20_022536F4(u32 *param0, u32 param1); +extern u32 MOD20_02252D34(void); +extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD21_02254AD4(u32 param0, u32 *param1); + +THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) +{ + UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); + u32 sp4; + if (strct != NULL) + { + MOD20_022536F4(strct->Unk08, 8); + strct->Unk00 = param1; + strct->Unk04 = MOD20_02252D34(); + void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); + if (res == 0) + { + FreeToHeap(strct); + return FALSE; + } + MOD21_02254AD4(sp4 + 0xc, strct->Unk30); + FreeToHeap(res); + param0->Unk00 = strct; + return TRUE; + } + return FALSE; +} \ No newline at end of file -- cgit v1.2.3 From 0a7108543bb346f86b6688b11e45cd478df3d890 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 21:10:49 +0000 Subject: mod21_02254AD4 --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 27 --------------------------- arm9/modules/21/include/mod21_02254A6C.h | 1 + arm9/modules/21/src/mod21_02254A6C_src.c | 19 ++++++++++++++++--- 3 files changed, 17 insertions(+), 30 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index a5a2d7ae..45ff2a27 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,33 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254AD4 -MOD21_02254AD4: ; 0x02254AD4 - push {r3, r4, r5, r6, r7, lr} - mov r6, #9 - add r5, r0, #0 - add r4, r1, #0 - mov r7, #0 - lsl r6, r6, #6 -_02254AE0: - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x40 - bl MIi_CpuCopy16 - add r1, r4, #0 - add r0, r5, r6 - add r1, #0x40 - mov r2, #0x10 - bl MIi_CpuCopy16 - add r7, r7, #1 - add r5, #0x40 - add r4, #0x50 - sub r6, #0x30 - cmp r7, #9 - blt _02254AE0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end MOD21_02254AD4 - thumb_func_start MOD21_02254B04 MOD21_02254B04: ; 0x02254B04 push {r3, lr} diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 9c37ecc5..71bc78e7 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -13,5 +13,6 @@ typedef struct UnkStruct02254A6C } UnkStruct02254A6C; BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); +void MOD21_02254AD4(void *param0, void *param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index ee664f13..4bd810d4 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -1,11 +1,11 @@ #include "global.h" #include "heap.h" #include "mod21_02254A6C.h" +#include "MI_memory.h" extern void MOD20_022536F4(u32 *param0, u32 param1); extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); -extern void MOD21_02254AD4(u32 param0, u32 *param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -22,10 +22,23 @@ THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) FreeToHeap(strct); return FALSE; } - MOD21_02254AD4(sp4 + 0xc, strct->Unk30); + MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); FreeToHeap(res); param0->Unk00 = strct; return TRUE; } return FALSE; -} \ No newline at end of file +} + +THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) +{ + s32 i = 0; + for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) + { + MI_CpuCopy16(param0, param1, 0x40); + MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); + i++; + param0 = (void *)((u32)param0 + 0x40); + param1 = (void *)((u32)param1 + 0x50); + } +} -- cgit v1.2.3 From 2e10bebe00a1c459c13854230a3014881d02e312 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 19 Nov 2020 22:16:42 +0000 Subject: a bit of cleanup --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 10 ---------- arm9/modules/21/include/mod21_02254854.h | 1 + arm9/modules/21/include/mod21_02254A6C.h | 1 + arm9/modules/21/src/mod21_02254854.c | 10 ++++------ arm9/modules/21/src/mod21_02254A6C_src.c | 8 ++++++++ 5 files changed, 14 insertions(+), 16 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index 45ff2a27..f1cc2984 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,16 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254B04 -MOD21_02254B04: ; 0x02254B04 - push {r3, lr} - cmp r0, #0 - beq _02254B0E - bl FreeToHeap -_02254B0E: - pop {r3, pc} - thumb_func_end MOD21_02254B04 - thumb_func_start MOD21_02254B10 MOD21_02254B10: ; 0x02254B10 push {lr} diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index b501962e..cc716a1d 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_MOD21_02254854_H #include "nitro/types.h" +#include "mod21_02254A6C.h" typedef struct UnkStruct02254854 { diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 71bc78e7..493c2746 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -14,5 +14,6 @@ typedef struct UnkStruct02254A6C BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); +void MOD21_02254B04(void *param0); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 44c97b8e..0cdb0c32 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -6,17 +6,15 @@ extern void GF_RTC_CopyTime(u32 *param0); u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF }; -extern BOOL MOD21_02254A6C(u32 *param0, u32 *param1); extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); extern void MOD20_02252C14(u32 param0, BOOL param1); -extern void MOD21_02254B04(u32 param0); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern void MOD21_02254B10(u32 param0, u32 param1); -extern BOOL MOD21_02254B34(u32 param0, u32 param1); -extern BOOL MOD21_02254B40(u32 param0); +extern void MOD21_02254B10(void *param0, u32 param1); +extern BOOL MOD21_02254B34(void *param0, u32 param1); +extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); extern void Poketch_InitApp(void *func1, void *func2); @@ -47,7 +45,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) { #pragma unused (param2, param3) //not sure, please check - if (MOD21_02254A6C(¶m0->Unk24, param0->Unk14)) + if (MOD21_02254A6C((UnkStruct02254A6C *)¶m0->Unk24, param0->Unk14)) //todo fix { param0->bytearray[0] = 0; param0->bytearray[1] = 0; diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 4bd810d4..a37b5728 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -42,3 +42,11 @@ THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) param1 = (void *)((u32)param1 + 0x50); } } + +THUMB_FUNC void MOD21_02254B04(void *param0) +{ + if (param0 != NULL) + { + FreeToHeap(param0); + } +} -- cgit v1.2.3 From 408f6b2f49ab9bfd4523c373f2342af7d2fe63cf Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 2 Dec 2020 21:30:04 +0000 Subject: MOD21_02254B10 --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 20 -------------------- arm9/modules/21/include/mod21_02254854.h | 2 +- arm9/modules/21/include/mod21_02254A6C.h | 1 + arm9/modules/21/src/mod21_02254854.c | 1 - arm9/modules/21/src/mod21_02254A6C_src.c | 7 +++++++ 5 files changed, 9 insertions(+), 22 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index f1cc2984..3848695a 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,26 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254B10 -MOD21_02254B10: ; 0x02254B10 - push {lr} - sub sp, #0xc - add r2, r0, #0 - add r0, #8 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - ldr r0, _02254B30 ; =MOD21_02254DAC - ldr r3, [r2] - bl MOD20_022537E0 - add sp, #0xc - pop {pc} - nop -_02254B30: .word MOD21_02254DAC - thumb_func_end MOD21_02254B10 - thumb_func_start MOD21_02254B34 MOD21_02254B34: ; 0x02254B34 ldr r3, _02254B3C ; =MOD20_02253794 diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index cc716a1d..26501f35 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -12,7 +12,7 @@ typedef struct UnkStruct02254854 u32 Unk14[2]; u8 padding1[4]; u32 Unk20; - u32 Unk24; + void *Unk24; u32 Unk28; } UnkStruct02254854; diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 493c2746..64857190 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -15,5 +15,6 @@ typedef struct UnkStruct02254A6C BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); void MOD21_02254B04(void *param0); +void MOD21_02254B10(u32 *param0, u32 param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 0cdb0c32..0f706f4d 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -12,7 +12,6 @@ extern void MOD20_02252C14(u32 param0, BOOL param1); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern void MOD21_02254B10(void *param0, u32 param1); extern BOOL MOD21_02254B34(void *param0, u32 param1); extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index a37b5728..7a792c50 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -6,6 +6,8 @@ extern void MOD20_022536F4(u32 *param0, u32 param1); extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); +extern void MOD21_02254DAC(void); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -50,3 +52,8 @@ THUMB_FUNC void MOD21_02254B04(void *param0) FreeToHeap(param0); } } + +THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) +{ + MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); +} -- cgit v1.2.3 From 21ff3852f8fd49e9f491a2a12fb81d43e5147727 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 2 Dec 2020 22:14:27 +0000 Subject: 2 more funcs --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 18 ------------------ arm9/modules/21/include/mod21_02254A6C.h | 2 ++ arm9/modules/21/src/mod21_02254854.c | 2 -- arm9/modules/21/src/mod21_02254A6C_src.c | 12 ++++++++++++ 4 files changed, 14 insertions(+), 20 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index 3848695a..ff26bc88 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,24 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254B34 -MOD21_02254B34: ; 0x02254B34 - ldr r3, _02254B3C ; =MOD20_02253794 - add r0, #8 - bx r3 - nop -_02254B3C: .word MOD20_02253794 - thumb_func_end MOD21_02254B34 - - thumb_func_start MOD21_02254B40 -MOD21_02254B40: ; 0x02254B40 - ldr r3, _02254B48 ; =MOD20_022537B8 - add r0, #8 - bx r3 - nop -_02254B48: .word MOD20_022537B8 - thumb_func_end MOD21_02254B40 - thumb_func_start MOD21_02254B4C MOD21_02254B4C: ; 0x02254B4C push {r4, lr} diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 64857190..c2eba5b7 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -16,5 +16,7 @@ BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); void MOD21_02254B04(void *param0); void MOD21_02254B10(u32 *param0, u32 param1); +BOOL MOD21_02254B34(void *param0, u32 param1); +BOOL MOD21_02254B40(void *param0); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index 0f706f4d..fe285936 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -12,8 +12,6 @@ extern void MOD20_02252C14(u32 param0, BOOL param1); extern void MOD20_02254198(BOOL param0); extern void MOD20_022529A0(u32 param0); -extern BOOL MOD21_02254B34(void *param0, u32 param1); -extern BOOL MOD21_02254B40(void *param0); extern void MOD20_0225298C(u32 param0); extern void Poketch_InitApp(void *func1, void *func2); diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 7a792c50..b36baa2a 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -8,6 +8,8 @@ extern u32 MOD20_02252D34(void); extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); extern void MOD21_02254DAC(void); +extern BOOL MOD20_02253794(void *param0, u32 param1); +extern BOOL MOD20_022537B8(void *param0); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -57,3 +59,13 @@ THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) { MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); } + +THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) +{ + return MOD20_02253794((void *)((u32)param0 + 8), param1); +} + +THUMB_FUNC BOOL MOD21_02254B40(void *param0) +{ + return MOD20_022537B8((void *)((u32)param0 + 8)); +} -- cgit v1.2.3 From 8c4c85d47a2457e524eb63f91ef32f2c8cd8c38d Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 5 Dec 2020 21:19:20 +0000 Subject: two mod 21 funcs --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 81 +------------------------------- arm9/modules/21/include/mod21_02254A6C.h | 8 ++++ arm9/modules/21/src/mod21_02254A6C_src.c | 39 +++++++++++++++ 3 files changed, 49 insertions(+), 79 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index ff26bc88..f364df84 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,85 +3,8 @@ .section .text .balign 4, 0 - thumb_func_start MOD21_02254B4C -MOD21_02254B4C: ; 0x02254B4C - push {r4, lr} - add r4, r0, #0 - bl MOD20_022538A0 - add r0, #8 - add r1, r4, #0 - bl MOD20_02253888 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254B4C - - thumb_func_start MOD21_02254B60 -MOD21_02254B60: ; 0x02254B60 - push {r4, r5, lr} - sub sp, #0x14 - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - add r5, r0, #0 - ldr r0, [r5, #4] - ldr r2, _02254BE8 ; =MOD21_02254D90 - mov r1, #6 - mov r3, #0 - bl FUN_02016C18 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x17 - mov r3, #6 - bl FUN_0200687C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r5, #4] - mov r0, #0xc - mov r1, #0x18 - mov r3, #6 - bl FUN_020068C8 - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C - add r0, r5, #0 - bl MOD21_02254C5C - ldr r0, [r5, #4] - mov r1, #6 - bl FUN_02017CD0 - ldr r1, _02254BEC ; =0x04001000 - ldr r0, _02254BF0 ; =0xFFFFE0FF - ldr r3, [r1] - ldr r2, [r1] - str r3, [sp, #0x10] - and r0, r2 - lsl r2, r3, #0x13 - lsr r3, r2, #0x1b - mov r2, #4 - orr r2, r3 - lsl r2, r2, #8 - orr r0, r2 - str r0, [r1] - add r0, r4, #0 - bl MOD21_02254B4C - add sp, #0x14 - pop {r4, r5, pc} - .align 2, 0 -_02254BE8: .word MOD21_02254D90 -_02254BEC: .word 0x04001000 -_02254BF0: .word 0xFFFFE0FF - thumb_func_end MOD21_02254B60 + .extern MOD21_02254B4C + .extern MOD21_02254B60 thumb_func_start MOD21_02254BF4 MOD21_02254BF4: ; 0x02254BF4 diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index c2eba5b7..d0fc3284 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -12,11 +12,19 @@ typedef struct UnkStruct02254A6C u32 Unk30[1]; } UnkStruct02254A6C; +typedef struct UnkStruct02254B60 +{ + u32 Unk00; + u32 Unk04; +} UnkStruct02254B60; + BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); void MOD21_02254B04(void *param0); void MOD21_02254B10(u32 *param0, u32 param1); BOOL MOD21_02254B34(void *param0, u32 param1); BOOL MOD21_02254B40(void *param0); +BOOL MOD21_02254B4C(void *param0); +BOOL MOD21_02254B60(u32 param0, void *param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index b36baa2a..44c2515a 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -10,6 +10,17 @@ extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, v extern void MOD21_02254DAC(void); extern BOOL MOD20_02253794(void *param0, u32 param1); extern BOOL MOD20_022537B8(void *param0); +extern UnkStruct02254B60 *MOD20_022538A0(void *param0); +extern BOOL MOD20_02253888(void *param0, void *param1); + +extern void MOD21_02254D90(void); + +extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); +extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void MOD20_02252D7C(u32 param0, u32 param1); +extern void MOD21_02254C5C(UnkStruct02254B60 *param0); +extern void FUN_02017CD0(u32 param0, u32 param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -69,3 +80,31 @@ THUMB_FUNC BOOL MOD21_02254B40(void *param0) { return MOD20_022537B8((void *)((u32)param0 + 8)); } + +THUMB_FUNC BOOL MOD21_02254B4C(void *param0) +{ + return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); +} + +THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254B60 *strct = MOD20_022538A0(param1); + FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); + FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + MOD20_02252D7C(0, 0); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + u32 r3 = reg_GXS_DB_DISPCNT; + u32 r2 = reg_GXS_DB_DISPCNT; + vu32 tmp = r3; //unused? wtf + u32 r0 = ~0x1F00 & r2; + r2 = r3 << 0x13; + r3 = r2 >> 0x1b; + r2 = 4 | r3; + r2 <<= 8; + r0 |= r2; + reg_GXS_DB_DISPCNT = r0; + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From 87be48c985eeb0c1c8faf2817898f4cef3d4830f Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 5 Dec 2020 22:31:04 +0000 Subject: small cleanup + another func --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 17 +---------------- arm9/modules/21/include/mod21_02254A6C.h | 1 + arm9/modules/21/src/mod21_02254A6C_src.c | 13 +++++++++++-- 3 files changed, 13 insertions(+), 18 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index f364df84..b70b3d9a 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -5,22 +5,7 @@ .extern MOD21_02254B4C .extern MOD21_02254B60 - - thumb_func_start MOD21_02254BF4 -MOD21_02254BF4: ; 0x02254BF4 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r0, r5, #0 - bl MOD20_022538A0 - add r4, r0, #0 - bl MOD21_02254C5C - ldr r0, [r4, #4] - mov r1, #6 - bl FUN_02017CD0 - add r0, r5, #0 - bl MOD21_02254B4C - pop {r3, r4, r5, pc} - thumb_func_end MOD21_02254BF4 + .extern MOD21_02254BF4 thumb_func_start MOD21_02254C14 MOD21_02254C14: ; 0x02254C14 diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index d0fc3284..5376e325 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -26,5 +26,6 @@ BOOL MOD21_02254B34(void *param0, u32 param1); BOOL MOD21_02254B40(void *param0); BOOL MOD21_02254B4C(void *param0); BOOL MOD21_02254B60(u32 param0, void *param1); +BOOL MOD21_02254BF4(u32 param0, void *param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 44c2515a..25a8548b 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -100,11 +100,20 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) u32 r2 = reg_GXS_DB_DISPCNT; vu32 tmp = r3; //unused? wtf u32 r0 = ~0x1F00 & r2; - r2 = r3 << 0x13; - r3 = r2 >> 0x1b; + r2 = r3 << 19; //cast with shift? can't replicate both though + r3 = r2 >> 27; r2 = 4 | r3; r2 <<= 8; r0 |= r2; reg_GXS_DB_DISPCNT = r0; return MOD21_02254B4C(param1); } + +THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254B60 *strct = MOD20_022538A0(param1); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From a3060d816a528bdef9f5b6da7246c423a46fce61 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 6 Dec 2020 19:50:02 +0000 Subject: almost finished --- arm9/modules/21/asm/mod21_02254A6C_asm.s | 42 ++------------------------------ arm9/modules/21/include/mod21_02254A6C.h | 19 +++++++-------- arm9/modules/21/src/mod21_02254A6C_src.c | 34 +++++++++++++++++++++++--- 3 files changed, 41 insertions(+), 54 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s index b70b3d9a..05679d5c 100644 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ b/arm9/modules/21/asm/mod21_02254A6C_asm.s @@ -3,48 +3,10 @@ .section .text .balign 4, 0 - .extern MOD21_02254B4C .extern MOD21_02254B60 .extern MOD21_02254BF4 - - thumb_func_start MOD21_02254C14 -MOD21_02254C14: ; 0x02254C14 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02254C30 - mov r0, #0 - add r1, r0, #0 - bl MOD11_02252DB4 - b _02254C38 -_02254C30: - mov r0, #0 - add r1, r0, #0 - bl MOD20_02252D7C -_02254C38: - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - thumb_func_end MOD21_02254C14 - - thumb_func_start MOD21_02254C40 -MOD21_02254C40: ; 0x02254C40 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl MOD20_022538A0 - ldr r0, [r0, #4] - mov r1, #6 - bl FUN_020178A0 - add r0, r4, #0 - bl MOD21_02254B4C - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD21_02254C40 + .extern MOD21_02254C14 + .extern MOD21_02254C40 thumb_func_start MOD21_02254C5C MOD21_02254C5C: ; 0x02254C5C diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 5376e325..568ec26f 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -3,20 +3,17 @@ #include "nitro/types.h" -typedef struct UnkStruct02254A6C +typedef struct UnkStruct02254A6C UnkStruct02254A6C; + +struct UnkStruct02254A6C { - void *Unk00; + UnkStruct02254A6C *Unk00; u32 Unk04; u32 Unk08[1]; - u8 padding0[0x24]; + u32 Unk0C; + u8 padding0[0x20]; u32 Unk30[1]; -} UnkStruct02254A6C; - -typedef struct UnkStruct02254B60 -{ - u32 Unk00; - u32 Unk04; -} UnkStruct02254B60; +}; BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); @@ -27,5 +24,7 @@ BOOL MOD21_02254B40(void *param0); BOOL MOD21_02254B4C(void *param0); BOOL MOD21_02254B60(u32 param0, void *param1); BOOL MOD21_02254BF4(u32 param0, void *param1); +BOOL MOD21_02254C14(u32 param0, void *param1); +BOOL MOD21_02254C40(u32 param0, void *param1); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c index 25a8548b..ef422905 100644 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ b/arm9/modules/21/src/mod21_02254A6C_src.c @@ -10,7 +10,7 @@ extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, v extern void MOD21_02254DAC(void); extern BOOL MOD20_02253794(void *param0, u32 param1); extern BOOL MOD20_022537B8(void *param0); -extern UnkStruct02254B60 *MOD20_022538A0(void *param0); +extern UnkStruct02254A6C *MOD20_022538A0(void *param0); extern BOOL MOD20_02253888(void *param0, void *param1); extern void MOD21_02254D90(void); @@ -19,8 +19,11 @@ extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); extern void MOD20_02252D7C(u32 param0, u32 param1); -extern void MOD21_02254C5C(UnkStruct02254B60 *param0); +extern void MOD21_02254C5C(UnkStruct02254A6C *param0); extern void FUN_02017CD0(u32 param0, u32 param1); +extern void FUN_020178A0(u32 param0, u32 param1); + +extern void MOD11_02252DB4(u32 param0, u32 param1); THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) { @@ -89,7 +92,7 @@ THUMB_FUNC BOOL MOD21_02254B4C(void *param0) THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) { #pragma unused (param0) - UnkStruct02254B60 *strct = MOD20_022538A0(param1); + UnkStruct02254A6C *strct = MOD20_022538A0(param1); FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); @@ -112,8 +115,31 @@ THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) { #pragma unused (param0) - UnkStruct02254B60 *strct = MOD20_022538A0(param1); + UnkStruct02254A6C *strct = MOD20_022538A0(param1); MOD21_02254C5C(strct); FUN_02017CD0(strct->Unk04, 6); return MOD21_02254B4C(param1); } + +THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + if (strct->Unk00->Unk0C) + { + MOD11_02252DB4(0, 0); + } + else + { + MOD20_02252D7C(0, 0); + } + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_020178A0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} -- cgit v1.2.3 From 12c64ee79eabced2a1cc1fc83209be37142bc44c Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 11 Dec 2020 21:07:34 +0000 Subject: match all of module 21 --- arm9/arm9.lsf | 3 +- arm9/modules/21/asm/mod21_02254A6C_asm.s | 171 ---------------------------- arm9/modules/21/include/mod21_02254A6C.h | 8 ++ arm9/modules/21/src/mod21_02254A6C.c | 187 +++++++++++++++++++++++++++++++ arm9/modules/21/src/mod21_02254A6C_src.c | 145 ------------------------ 5 files changed, 196 insertions(+), 318 deletions(-) delete mode 100644 arm9/modules/21/asm/mod21_02254A6C_asm.s create mode 100644 arm9/modules/21/src/mod21_02254A6C.c delete mode 100644 arm9/modules/21/src/mod21_02254A6C_src.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 2085fcbe..d77a4c21 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -664,8 +664,7 @@ Overlay MODULE_21 ##Pokétch Clock## After MODULE_20 Object mod21_02254854.o - Object mod21_02254A6C_src.o - Object mod21_02254A6C_asm.o + Object mod21_02254A6C.o } Overlay MODULE_22 diff --git a/arm9/modules/21/asm/mod21_02254A6C_asm.s b/arm9/modules/21/asm/mod21_02254A6C_asm.s deleted file mode 100644 index 05679d5c..00000000 --- a/arm9/modules/21/asm/mod21_02254A6C_asm.s +++ /dev/null @@ -1,171 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - .extern MOD21_02254B60 - .extern MOD21_02254BF4 - .extern MOD21_02254C14 - .extern MOD21_02254C40 - - thumb_func_start MOD21_02254C5C -MOD21_02254C5C: ; 0x02254C5C - push {r4, r5, lr} - sub sp, #0x1c - add r4, r0, #0 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254C7A: - ldrh r1, [r2] - tst r1, r0 - bne _02254C7A - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254C8A: - ldrh r2, [r3] - tst r2, r0 - bne _02254C8A - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #3 - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #8 - mov r3, #7 - bl FUN_02018170 - ldr r0, [r4] - ldr r2, _02254D74 ; =0x04000280 - ldr r0, [r0, #4] - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - add r0, r2, #0 - mov r1, #0xa - add r0, #0x18 - str r1, [r0] - str r3, [r0, #4] - lsr r0, r2, #0xb -_02254D00: - ldrh r1, [r2] - tst r1, r0 - bne _02254D00 - ldr r0, _02254D78 ; =0x040002A0 - add r3, r0, #0 - ldr r1, [r0] - sub r3, #0x20 - lsr r0, r0, #0xb -_02254D10: - ldrh r2, [r3] - tst r2, r0 - bne _02254D10 - ldr r0, _02254D7C ; =0x040002A8 - add r2, r4, #0 - ldr r5, [r0] - mov r0, #4 - str r0, [sp] - mov r0, #9 - lsl r1, r1, #0x1a - str r0, [sp, #4] - add r2, #0x30 - str r2, [sp, #8] - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0xf - mov r3, #7 - bl FUN_02018170 - mov r0, #4 - str r0, [sp] - mov r0, #9 - add r1, r4, #0 - str r0, [sp, #4] - add r1, #0x30 - str r1, [sp, #8] - lsl r1, r5, #0x1a - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov r1, #0x28 - str r1, [sp, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4, #4] - mov r1, #6 - mov r2, #0x14 - mov r3, #7 - bl FUN_02018170 - add sp, #0x1c - pop {r4, r5, pc} - nop -_02254D74: .word 0x04000280 -_02254D78: .word 0x040002A0 -_02254D7C: .word 0x040002A8 - thumb_func_end MOD21_02254C5C - - .section .rodata - - .global MOD21_02254D90 -MOD21_02254D90: ; 0x02254D90 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD21_02254DAC -MOD21_02254DAC: ; 0x02254DAC - .word 0x00, MOD21_02254B60, 0x00 - .word 0x01, MOD21_02254BF4, 0x00 - .word 0x02, MOD21_02254C14, 0x00 - .word 0x03, MOD21_02254C40, 0x00 - .word 0x00, 0x00000000, 0x00 diff --git a/arm9/modules/21/include/mod21_02254A6C.h b/arm9/modules/21/include/mod21_02254A6C.h index 568ec26f..bae9cab6 100644 --- a/arm9/modules/21/include/mod21_02254A6C.h +++ b/arm9/modules/21/include/mod21_02254A6C.h @@ -15,6 +15,13 @@ struct UnkStruct02254A6C u32 Unk30[1]; }; +typedef struct UnkOverlayStruct1 +{ + u32 number; + BOOL (*func)(u32 param0, void *param1); + u32 Unk08; +} UnkOverlayStruct1; //todo should probably be in mod 20 header + BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1); void MOD21_02254AD4(void *param0, void *param1); void MOD21_02254B04(void *param0); @@ -26,5 +33,6 @@ BOOL MOD21_02254B60(u32 param0, void *param1); BOOL MOD21_02254BF4(u32 param0, void *param1); BOOL MOD21_02254C14(u32 param0, void *param1); BOOL MOD21_02254C40(u32 param0, void *param1); +void MOD21_02254C5C(UnkStruct02254A6C *param0); #endif //POKEDIAMOND_MOD21_02254A6C_H diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c new file mode 100644 index 00000000..1dcbe4b8 --- /dev/null +++ b/arm9/modules/21/src/mod21_02254A6C.c @@ -0,0 +1,187 @@ +#include "global.h" +#include "heap.h" +#include "mod21_02254A6C.h" +#include "MI_memory.h" + +extern void MOD20_022536F4(u32 *param0, u32 param1); +extern u32 MOD20_02252D34(void); +extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); +extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); + +UnkOverlayStruct1 const MOD21_02254DAC[] = { + { 0, MOD21_02254B60, 0 }, + { 1, MOD21_02254BF4, 0 }, + { 2, MOD21_02254C14, 0 }, + { 3, MOD21_02254C40, 0 }, + { 0, NULL, 0 } +}; + +extern BOOL MOD20_02253794(void *param0, u32 param1); +extern BOOL MOD20_022537B8(void *param0); +extern UnkStruct02254A6C *MOD20_022538A0(void *param0); +extern BOOL MOD20_02253888(void *param0, void *param1); + +//todo datatype +u8 const MOD21_02254D90[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); +extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); +extern void MOD20_02252D7C(u32 param0, u32 param1); +extern void FUN_02017CD0(u32 param0, u32 param1); +extern void FUN_020178A0(u32 param0, u32 param1); + +extern void FUN_02018170(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 *param6, u8 param7, u32 param8, u32 param9, u32 param10); + +extern void MOD11_02252DB4(u32 param0, u32 param1); + +THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) +{ + UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); + u32 sp4; + if (strct != NULL) + { + MOD20_022536F4(strct->Unk08, 8); + strct->Unk00 = param1; + strct->Unk04 = MOD20_02252D34(); + void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); + if (res == 0) + { + FreeToHeap(strct); + return FALSE; + } + MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); + FreeToHeap(res); + param0->Unk00 = strct; + return TRUE; + } + return FALSE; +} + +THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) +{ + s32 i = 0; + for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) + { + MI_CpuCopy16(param0, param1, 0x40); + MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); + i++; + param0 = (void *)((u32)param0 + 0x40); + param1 = (void *)((u32)param1 + 0x50); + } +} + +THUMB_FUNC void MOD21_02254B04(void *param0) +{ + if (param0 != NULL) + { + FreeToHeap(param0); + } +} + +THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) +{ + MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); +} + +THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) +{ + return MOD20_02253794((void *)((u32)param0 + 8), param1); +} + +THUMB_FUNC BOOL MOD21_02254B40(void *param0) +{ + return MOD20_022537B8((void *)((u32)param0 + 8)); +} + +THUMB_FUNC BOOL MOD21_02254B4C(void *param0) +{ + return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); +} + +THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); + FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); + FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); + MOD20_02252D7C(0, 0); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + u32 r3 = reg_GXS_DB_DISPCNT; + u32 r2 = reg_GXS_DB_DISPCNT; + vu32 tmp = r3; //unused? wtf + u32 r0 = ~0x1F00 & r2; + r2 = r3 << 19; //cast with shift? can't replicate both though + r3 = r2 >> 27; + r2 = 4 | r3; + r2 <<= 8; + r0 |= r2; + reg_GXS_DB_DISPCNT = r0; + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + MOD21_02254C5C(strct); + FUN_02017CD0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + if (strct->Unk00->Unk0C) + { + MOD11_02252DB4(0, 0); + } + else + { + MOD20_02252D7C(0, 0); + } + return MOD21_02254B4C(param1); +} + +THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) +{ +#pragma unused (param0) + UnkStruct02254A6C *strct = MOD20_022538A0(param1); + FUN_020178A0(strct->Unk04, 6); + return MOD21_02254B4C(param1); +} + +THUMB_FUNC void MOD21_02254C5C(UnkStruct02254A6C *param0) +{ + u32 tmp = (u32)param0->Unk00->Unk00; + reg_CP_DIVCNT = 0; + (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp; + reg_CP_DIV_DENOM = 10; + while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { } + + u32 regaddr = (u32)®_CP_DIV_RESULT_L; + u32 divResult = *(u32 *)regaddr; + while (reg_CP_DIVCNT & (regaddr >> 0xb)) { } + + u32 divRemRes = reg_CP_DIVREM_RESULT_L; + FUN_02018170(param0->Unk04, 6, 3, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9); + FUN_02018170(param0->Unk04, 6, 8, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9); + + tmp = param0->Unk00->Unk04; + reg_CP_DIVCNT = 0; + (*(vu32 *)REG_DIV_NUMER_ADDR) = tmp; + reg_CP_DIV_DENOM = 10; + + while (reg_CP_DIVCNT & ((u32)®_CP_DIVCNT >> 0xb)) { } + + divResult = *(u32 *)regaddr; + while (reg_CP_DIVCNT & (regaddr >> 0xb)) { } + + divRemRes = reg_CP_DIVREM_RESULT_L; + FUN_02018170(param0->Unk04, 6, 15, 7, 4, 9, param0->Unk30, (u8)(divResult << 2), 0, 40, 9); + FUN_02018170(param0->Unk04, 6, 20, 7, 4, 9, param0->Unk30, (u8)(divRemRes << 2), 0, 40, 9); +} diff --git a/arm9/modules/21/src/mod21_02254A6C_src.c b/arm9/modules/21/src/mod21_02254A6C_src.c deleted file mode 100644 index ef422905..00000000 --- a/arm9/modules/21/src/mod21_02254A6C_src.c +++ /dev/null @@ -1,145 +0,0 @@ -#include "global.h" -#include "heap.h" -#include "mod21_02254A6C.h" -#include "MI_memory.h" - -extern void MOD20_022536F4(u32 *param0, u32 param1); -extern u32 MOD20_02252D34(void); -extern void *FUN_02006BDC(u32 param0, u32 param1, u32 param2, void *param3, u32 param4); -extern void MOD20_022537E0(void *param0, u32 param1, void *param2, u32 param3, void *param4, u32 param5, u32 param6); -extern void MOD21_02254DAC(void); -extern BOOL MOD20_02253794(void *param0, u32 param1); -extern BOOL MOD20_022537B8(void *param0); -extern UnkStruct02254A6C *MOD20_022538A0(void *param0); -extern BOOL MOD20_02253888(void *param0, void *param1); - -extern void MOD21_02254D90(void); - -extern void FUN_02016C18(u32 param0, u32 param1, void *param2, u32 param3); -extern void FUN_0200687C(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); -extern void FUN_020068C8(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7); -extern void MOD20_02252D7C(u32 param0, u32 param1); -extern void MOD21_02254C5C(UnkStruct02254A6C *param0); -extern void FUN_02017CD0(u32 param0, u32 param1); -extern void FUN_020178A0(u32 param0, u32 param1); - -extern void MOD11_02252DB4(u32 param0, u32 param1); - -THUMB_FUNC BOOL MOD21_02254A6C(UnkStruct02254A6C *param0, void *param1) -{ - UnkStruct02254A6C *strct = (UnkStruct02254A6C *)AllocFromHeap(8, 3 << 8); - u32 sp4; - if (strct != NULL) - { - MOD20_022536F4(strct->Unk08, 8); - strct->Unk00 = param1; - strct->Unk04 = MOD20_02252D34(); - void *res = FUN_02006BDC(12, 0x19, 1, &sp4, 8); - if (res == 0) - { - FreeToHeap(strct); - return FALSE; - } - MOD21_02254AD4((void *)(sp4 + 0xc), strct->Unk30); - FreeToHeap(res); - param0->Unk00 = strct; - return TRUE; - } - return FALSE; -} - -THUMB_FUNC void MOD21_02254AD4(void *param0, void *param1) -{ - s32 i = 0; - for (u32 r6 = 9 << 6; i < 9; r6 -= 0x30) - { - MI_CpuCopy16(param0, param1, 0x40); - MI_CpuCopy16((void *)((u32)param0 + r6), (void *)((u32)param1 + 0x40), 0x10); - i++; - param0 = (void *)((u32)param0 + 0x40); - param1 = (void *)((u32)param1 + 0x50); - } -} - -THUMB_FUNC void MOD21_02254B04(void *param0) -{ - if (param0 != NULL) - { - FreeToHeap(param0); - } -} - -THUMB_FUNC void MOD21_02254B10(u32 *param0, u32 param1) -{ - MOD20_022537E0(MOD21_02254DAC, param1, param0, *param0, (void *)(param0 + 2), 2, 8); -} - -THUMB_FUNC BOOL MOD21_02254B34(void *param0, u32 param1) -{ - return MOD20_02253794((void *)((u32)param0 + 8), param1); -} - -THUMB_FUNC BOOL MOD21_02254B40(void *param0) -{ - return MOD20_022537B8((void *)((u32)param0 + 8)); -} - -THUMB_FUNC BOOL MOD21_02254B4C(void *param0) -{ - return MOD20_02253888((void *)((u32)MOD20_022538A0(param0) + 8), param0); -} - -THUMB_FUNC BOOL MOD21_02254B60(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - FUN_02016C18(strct->Unk04, 6, MOD21_02254D90, 0); - FUN_0200687C(12, 23, strct->Unk04, 6, 0, 0, 1, 8); - FUN_020068C8(12, 24, strct->Unk04, 6, 0, 0, 1, 8); - MOD20_02252D7C(0, 0); - MOD21_02254C5C(strct); - FUN_02017CD0(strct->Unk04, 6); - u32 r3 = reg_GXS_DB_DISPCNT; - u32 r2 = reg_GXS_DB_DISPCNT; - vu32 tmp = r3; //unused? wtf - u32 r0 = ~0x1F00 & r2; - r2 = r3 << 19; //cast with shift? can't replicate both though - r3 = r2 >> 27; - r2 = 4 | r3; - r2 <<= 8; - r0 |= r2; - reg_GXS_DB_DISPCNT = r0; - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254BF4(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - MOD21_02254C5C(strct); - FUN_02017CD0(strct->Unk04, 6); - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254C14(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - if (strct->Unk00->Unk0C) - { - MOD11_02252DB4(0, 0); - } - else - { - MOD20_02252D7C(0, 0); - } - return MOD21_02254B4C(param1); -} - -THUMB_FUNC BOOL MOD21_02254C40(u32 param0, void *param1) -{ -#pragma unused (param0) - UnkStruct02254A6C *strct = MOD20_022538A0(param1); - FUN_020178A0(strct->Unk04, 6); - return MOD21_02254B4C(param1); -} -- cgit v1.2.3 From 22c9ea3a992c48fc5c8926902cbde48861195f10 Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 18 Dec 2020 13:42:23 -0500 Subject: decompile Options --- arm9/asm/options.s | 239 ------------------------------- arm9/asm/unk_020377F0.s | 2 +- arm9/asm/unk_020476CC.s | 10 +- arm9/asm/unk_02054590.s | 4 +- arm9/asm/unk_020625EC.s | 4 +- arm9/asm/unk_020653EC.s | 4 +- arm9/asm/unk_0206C700.s | 4 +- arm9/asm/unk_0206F3FC.s | 2 +- arm9/asm/unk_02072548.s | 2 +- arm9/asm/unk_020772F0.s | 2 +- arm9/asm/unk_02079C70.s | 4 +- arm9/asm/unk_02085338.s | 2 +- arm9/asm/unk_020859C0.s | 2 +- arm9/asm/unk_02086084.s | 4 +- arm9/asm/unk_02087D00.s | 4 +- arm9/global.inc | 32 ++--- arm9/modules/05/asm/mod05_021E2B80.s | 2 +- arm9/modules/05/asm/module_05.s | 2 +- arm9/modules/06/asm/module_06.s | 6 +- arm9/modules/11/asm/module_11_thumb2.s | 14 +- arm9/modules/12/asm/module_12.s | 16 +-- arm9/modules/14/asm/module_14.s | 4 +- arm9/modules/17/asm/module_17.s | 10 +- arm9/modules/18/asm/module_18.s | 2 +- arm9/modules/52/asm/module_52.s | 2 +- arm9/modules/53/asm/module_53.s | 2 +- arm9/modules/54/asm/module_54.s | 2 +- arm9/modules/55/asm/module_55.s | 4 +- arm9/modules/56/asm/module_56.s | 4 +- arm9/modules/58/asm/module_58.s | 4 +- arm9/modules/59/asm/mod59_021D74E0_asm.s | 2 +- arm9/modules/60/asm/module_60.s | 28 ++-- arm9/modules/61/asm/module_61.s | 4 +- arm9/modules/64/asm/module_64.s | 4 +- arm9/modules/65/asm/module_65.s | 4 +- arm9/modules/71/asm/module_71.s | 4 +- arm9/modules/73/asm/module_73.s | 4 +- arm9/modules/75/asm/module_75.s | 4 +- arm9/modules/76/asm/module_76.s | 4 +- arm9/modules/77/asm/module_77.s | 4 +- arm9/modules/80/asm/module_80.s | 20 +-- arm9/modules/81/asm/module_81.s | 4 +- arm9/modules/82/asm/module_82.s | 2 +- arm9/modules/83/asm/module_83.s | 8 +- arm9/src/options.c | 110 ++++++++++++++ arm9/src/sound.c | 2 +- 46 files changed, 237 insertions(+), 366 deletions(-) delete mode 100644 arm9/asm/options.s create mode 100644 arm9/src/options.c (limited to 'arm9') diff --git a/arm9/asm/options.s b/arm9/asm/options.s deleted file mode 100644 index 14d2a449..00000000 --- a/arm9/asm/options.s +++ /dev/null @@ -1,239 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .text - - thumb_func_start FUN_02024F30 -FUN_02024F30: ; 0x02024F30 - push {r4, lr} - mov r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - bl Options_init - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02024F44 -FUN_02024F44: ; 0x02024F44 - ldr r3, _02024F4C ; =MI_CpuCopy8 - mov r2, #0x2 - bx r3 - nop -_02024F4C: .word MI_CpuCopy8 - - thumb_func_start Options_init -Options_init: ; 0x02024F50 - push {r4, lr} - add r4, r0, #0x0 - mov r1, #0x0 - mov r2, #0x2 - bl MI_CpuFill8 - ldrh r1, [r4, #0x0] - mov r0, #0xf - bic r1, r0 - mov r0, #0x1 - orr r0, r1 - strh r0, [r4, #0x0] - ldrh r1, [r4, #0x0] - mov r0, #0x30 - bic r1, r0 - strh r1, [r4, #0x0] - ldrh r1, [r4, #0x0] - mov r0, #0x40 - bic r1, r0 - strh r1, [r4, #0x0] - ldrh r1, [r4, #0x0] - mov r0, #0x80 - bic r1, r0 - strh r1, [r4, #0x0] - ldrh r1, [r4, #0x0] - ldr r0, _02024F94 ; =0xFFFFFCFF - and r0, r1 - strh r0, [r4, #0x0] - ldrh r1, [r4, #0x0] - ldr r0, _02024F98 ; =0xFFFF83FF - and r0, r1 - strh r0, [r4, #0x0] - pop {r4, pc} - nop -_02024F94: .word 0xFFFFFCFF -_02024F98: .word 0xFFFF83FF - - thumb_func_start FUN_02024F9C -FUN_02024F9C: ; 0x02024F9C - push {r3, lr} - cmp r0, #0x0 - beq _02024FAC - bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025064 - add r1, r0, #0x0 -_02024FAC: - cmp r1, #0x0 - beq _02024FCA - cmp r1, #0x1 - beq _02024FBA - cmp r1, #0x2 - beq _02024FC2 - b _02024FCA -_02024FBA: - ldr r0, _02024FD4 ; =gMain - mov r1, #0x1 - str r1, [r0, #0x34] - pop {r3, pc} -_02024FC2: - ldr r0, _02024FD4 ; =gMain - mov r1, #0x3 - str r1, [r0, #0x34] - pop {r3, pc} -_02024FCA: - ldr r0, _02024FD4 ; =gMain - mov r1, #0x0 - str r1, [r0, #0x34] - pop {r3, pc} - nop -_02024FD4: .word gMain - - thumb_func_start FUN_02024FD8 -FUN_02024FD8: ; 0x02024FD8 - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1c - bx lr - - thumb_func_start FUN_02024FE0 -FUN_02024FE0: ; 0x02024FE0 - ldrh r3, [r0, #0x0] - mov r2, #0xf - lsl r1, r1, #0x10 - bic r3, r2 - lsr r2, r1, #0x10 - mov r1, #0xf - and r1, r2 - orr r1, r3 - strh r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_02024FF4 -FUN_02024FF4: ; 0x02024FF4 - push {r3, lr} - bl FUN_02024FD8 - cmp r0, #0x0 - bne _02025002 - mov r0, #0x8 - pop {r3, pc} -_02025002: - cmp r0, #0x1 - bne _0202500A - mov r0, #0x4 - pop {r3, pc} -_0202500A: - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02025010 -FUN_02025010: ; 0x02025010 - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1a - lsr r0, r0, #0x1e - bx lr - - thumb_func_start FUN_02025018 -FUN_02025018: ; 0x02025018 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1e - ldrh r3, [r0, #0x0] - mov r2, #0x30 - lsr r1, r1, #0x1a - bic r3, r2 - orr r1, r3 - strh r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_0202502C -FUN_0202502C: ; 0x0202502C - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - bx lr - - thumb_func_start FUN_02025034 -FUN_02025034: ; 0x02025034 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - ldrh r3, [r0, #0x0] - mov r2, #0x80 - lsr r1, r1, #0x18 - bic r3, r2 - orr r1, r3 - strh r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_02025048 -FUN_02025048: ; 0x02025048 - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1f - bx lr - - thumb_func_start FUN_02025050 -FUN_02025050: ; 0x02025050 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - ldrh r3, [r0, #0x0] - mov r2, #0x40 - lsr r1, r1, #0x19 - bic r3, r2 - orr r1, r3 - strh r1, [r0, #0x0] - bx lr - - thumb_func_start FUN_02025064 -FUN_02025064: ; 0x02025064 - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x16 - lsr r0, r0, #0x1e - bx lr - - thumb_func_start FUN_0202506C -FUN_0202506C: ; 0x0202506C - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1e - ldrh r3, [r0, #0x0] - ldr r2, _02025080 ; =0xFFFFFCFF - lsr r1, r1, #0x16 - and r2, r3 - orr r1, r2 - strh r1, [r0, #0x0] - bx lr - .balign 4 -_02025080: .word 0xFFFFFCFF - - thumb_func_start FUN_02025084 -FUN_02025084: ; 0x02025084 - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x11 - lsr r0, r0, #0x1b - bx lr - - thumb_func_start FUN_0202508C -FUN_0202508C: ; 0x0202508C - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1b - ldrh r3, [r0, #0x0] - ldr r2, _020250A0 ; =0xFFFF83FF - lsr r1, r1, #0x11 - and r2, r3 - orr r1, r2 - strh r1, [r0, #0x0] - bx lr - .balign 4 -_020250A0: .word 0xFFFF83FF diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index e7d630f6..9d5e2f32 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -2478,7 +2478,7 @@ FUN_020389CC: ; 0x020389CC mov r0, #0x0 str r0, [r4, #0x18] ldr r0, [sp, #0x0] - bl FUN_02025084 + bl Options_GetFrame str r0, [r4, #0x1c] lsl r1, r6, #0x18 ldr r0, [r5, #0xc] diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 568c4b5d..8eac1942 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -116,7 +116,7 @@ _02047774: lsl r1, r1, #0x4 str r0, [r7, r1] add r0, r5, #0x0 - bl FUN_02024F30 + bl Options_new mov r1, #0x13 lsl r1, r1, #0x4 str r0, [r7, r1] @@ -237,7 +237,7 @@ FUN_02047814: ; 0x02047814 lsl r1, r1, #0x4 ldr r0, [sp, #0x14] ldr r1, [r4, r1] - bl FUN_02024F44 + bl Options_copy add r0, r5, #0x0 bl Script_GetTimeOfDay mov r1, #0x16 @@ -513,7 +513,7 @@ FUN_02047A78: ; 0x02047A78 lsl r1, r1, #0x4 ldr r0, [sp, #0xc] ldr r1, [r5, r1] - bl FUN_02024F44 + bl Options_copy ldr r1, [sp, #0x8] add r0, r5, #0x0 mov r2, #0x0 @@ -712,7 +712,7 @@ _02047C98: lsl r1, r1, #0x4 ldr r0, [sp, #0x4] ldr r1, [r6, r1] - bl FUN_02024F44 + bl Options_copy ldr r1, [sp, #0x8] add r0, r6, #0x0 mov r2, #0x0 @@ -896,7 +896,7 @@ _02047E2C: lsl r1, r1, #0x4 ldr r0, [sp, #0x10] ldr r1, [r5, r1] - bl FUN_02024F44 + bl Options_copy ldr r1, [sp, #0x14] add r0, r5, #0x0 mov r2, #0x0 diff --git a/arm9/asm/unk_02054590.s b/arm9/asm/unk_02054590.s index 772871af..c4969083 100644 --- a/arm9/asm/unk_02054590.s +++ b/arm9/asm/unk_02054590.s @@ -74,7 +74,7 @@ FUN_02054608: ; 0x02054608 bl FUN_0201AB08 add r6, r0, #0x0 add r0, r4, #0x0 - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] @@ -119,7 +119,7 @@ FUN_02054658: ; 0x02054658 mov r0, #0x0 bl FUN_02002BB8 add r0, r6, #0x0 - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0x0 str r3, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index 9809241c..e60a5b4f 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -101,11 +101,11 @@ FUN_020625EC: ; 0x020625EC str r0, [r4, r1] add r0, r6, #0x0 bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay strh r0, [r4, #0x1a] add r0, r6, #0x0 bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame strh r0, [r4, #0x1c] str r4, [r7, #0x8] mov r0, #0x1 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 1cf56132..74da05c0 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -67,11 +67,11 @@ FUN_020653EC: ; 0x020653EC add r6, r0, #0x0 strb r1, [r4, #0x1a] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay strb r0, [r4, #0x16] add r0, r6, #0x0 bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame strh r0, [r4, #0x14] add r0, r4, #0x0 ldr r2, [r4, #0x0] diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index f5a0873e..7fa07ac0 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2343,7 +2343,7 @@ _0206DA26: mov r1, #0x4 bl FUN_02018744 ldr r0, [r5, #0x2c] - bl FUN_02025084 + bl Options_GetFrame add r6, r0, #0x0 lsl r0, r6, #0x18 lsr r0, r0, #0x18 @@ -2675,7 +2675,7 @@ FUN_0206DD6C: ; 0x0206DD6C mov r1, #0xff bl FUN_02019620 ldr r0, [r4, #0x2c] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0x0 str r3, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 8d7d828a..e09b1ec4 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1310,7 +1310,7 @@ FUN_0206FD24: ; 0x0206FD24 ldr r0, _0206FE70 ; =0x000005A4 ldr r0, [r5, r0] ldr r0, [r0, #0xc] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index f6f09ad1..f35f769c 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -1664,7 +1664,7 @@ FUN_0207322C: ; 0x0207322C ldr r0, _0207326C ; =0x000005A4 ldr r0, [r4, r0] ldr r0, [r0, #0xc] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0x0 str r3, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 7a24d756..eba7f739 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -2355,7 +2355,7 @@ FUN_02077FE8: ; 0x02077FE8 mov r2, #0x12 bl FUN_02002EEC ldr r0, [r5, #0x18] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 8bace89f..3562d2e7 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -1660,7 +1660,7 @@ _0207A99E: lsl r0, r0, #0x2 ldr r0, [r5, r0] ldr r0, [r0, #0x4] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] @@ -4738,7 +4738,7 @@ FUN_0207C23C: ; 0x0207C23C lsl r0, r0, #0x2 ldr r0, [r4, r0] ldr r0, [r0, #0x4] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x0] diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s index 45fcb995..08f7d90c 100644 --- a/arm9/asm/unk_02085338.s +++ b/arm9/asm/unk_02085338.s @@ -32,7 +32,7 @@ FUN_02085338: ; 0x02085338 add r0, r6, #0x0 strb r1, [r4, #0x3] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame str r0, [r4, #0x8] cmp r5, #0x2 bne _02085390 diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 846e5336..a299f623 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -348,7 +348,7 @@ _02085A9A: str r0, [r4, r1] ldr r0, [r4, #0x0] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame add r5, r0, #0x0 add r0, r4, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s index 6ef3d150..4d8fa9a4 100644 --- a/arm9/asm/unk_02086084.s +++ b/arm9/asm/unk_02086084.s @@ -36,11 +36,11 @@ FUN_02086084: ; 0x02086084 bl OverlayManager_GetField18 str r0, [r4, #0x0] ldr r0, [r0, #0x10] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay str r0, [r4, #0x10] ldr r0, [r4, #0x0] ldr r0, [r0, #0x10] - bl FUN_02025084 + bl Options_GetFrame str r0, [r4, #0x14] bl FUN_02086468 str r0, [r4, #0x38] diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s index 49d4676c..65d4db3d 100644 --- a/arm9/asm/unk_02087D00.s +++ b/arm9/asm/unk_02087D00.s @@ -544,11 +544,11 @@ FUN_020880A0: ; 0x020880A0 str r0, [r4, #0x0] ldr r0, [r5, #0xc] ldr r0, [r0, #0x18] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay strb r0, [r4, #0xa] ldr r0, [r5, #0xc] ldr r0, [r0, #0x18] - bl FUN_02025084 + bl Options_GetFrame strb r0, [r4, #0xb] ldr r0, _02088108 ; =UNK_020FD16C ldr r2, [r5, #0x0] diff --git a/arm9/global.inc b/arm9/global.inc index 4845852b..0a00bc9b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1586,23 +1586,23 @@ .extern FUN_02024EF4 .extern FUN_02024F0C .extern FUN_02024F18 -.extern FUN_02024F30 -.extern FUN_02024F44 +.extern Options_new +.extern Options_copy .extern Options_init -.extern FUN_02024F9C -.extern FUN_02024FD8 -.extern FUN_02024FE0 -.extern FUN_02024FF4 -.extern FUN_02025010 -.extern FUN_02025018 -.extern FUN_0202502C -.extern FUN_02025034 -.extern FUN_02025048 -.extern FUN_02025050 -.extern FUN_02025064 -.extern FUN_0202506C -.extern FUN_02025084 -.extern FUN_0202508C +.extern Options_SetButtonModeOnMain +.extern Options_GetTextSpeed +.extern Options_SetTextSpeed +.extern Options_GetTextFrameDelay +.extern Options_GetSoundMethod +.extern Options_SetSoundMethod +.extern Options_GetBattleScene +.extern Options_SetBattleScene +.extern Options_GetBattleStyle +.extern Options_SetBattleStyle +.extern Options_GetButtonMode +.extern Options_SetButtonMode +.extern Options_GetFrame +.extern Options_SetFrame .extern FUN_020250A4 .extern FUN_020250C4 .extern FUN_02025128 diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 8aa39261..2722d177 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -205,7 +205,7 @@ MOD05_021E2D00: ; 0x021E2D00 ldr r0, [r0] ldr r0, [r0, #0xc] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay pop {r3, pc} .balign 4, 0 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index b7232407..38ca97a9 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -16817,7 +16817,7 @@ _021EFC20: str r1, [r0] ldr r0, [r4, #0x34] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 1337a593..ac0c3eeb 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -8929,7 +8929,7 @@ _0223DA3E: mov r0, #0x85 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -41696,12 +41696,12 @@ MOD06_0224DBA8: ; 0x0224DBA8 ldr r0, [r5, #8] bl Sav2_PlayerData_GetOptionsAddr add r4, r0, #0 - bl FUN_02025084 + bl Options_GetFrame mov r1, #0x53 lsl r1, r1, #2 str r0, [r5, r1] add r0, r4, #0 - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r1, #0x15 lsl r1, r1, #4 str r0, [r5, r1] diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 15f4c237..f04e67da 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -120,7 +120,7 @@ _0222F30E: mov r0, #0x13 lsl r0, r0, #4 ldr r0, [r4, r0] - bl FUN_02025084 + bl Options_GetFrame add r4, r0, #0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -3600,7 +3600,7 @@ _02230E2E: mov r1, #0x6d lsl r1, r1, #2 ldr r0, [r0, r1] - bl FUN_0202502C + bl Options_GetBattleScene cmp r0, #0 bne _02230E40 mov r0, #1 @@ -3613,11 +3613,11 @@ _02230E40: MOD11_02230E44: ; 0x02230E44 mov r1, #0x6d lsl r1, r1, #2 - ldr r3, _02230E50 ; =FUN_02025084 + ldr r3, _02230E50 ; =Options_GetFrame ldr r0, [r0, r1] bx r3 nop -_02230E50: .word FUN_02025084 +_02230E50: .word Options_GetFrame thumb_func_start MOD11_02230E54 MOD11_02230E54: ; 0x02230E54 @@ -3632,7 +3632,7 @@ _02230E62: mov r1, #0x6d lsl r1, r1, #2 ldr r0, [r0, r1] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay pop {r3, pc} .align 2, 0 @@ -3640,11 +3640,11 @@ _02230E62: MOD11_02230E70: ; 0x02230E70 mov r1, #0x6d lsl r1, r1, #2 - ldr r3, _02230E7C ; =FUN_02025048 + ldr r3, _02230E7C ; =Options_GetBattleStyle ldr r0, [r0, r1] bx r3 nop -_02230E7C: .word FUN_02025048 +_02230E7C: .word Options_GetBattleStyle thumb_func_start MOD11_02230E80 MOD11_02230E80: ; 0x02230E80 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 215acf37..c24f23a7 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -4224,7 +4224,7 @@ MOD12_0222F834: ; 0x0222F834 ldr r1, [r5] ldr r0, _0222F930 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02025084 + bl Options_GetFrame add r4, r0, #0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -6224,7 +6224,7 @@ MOD12_022308F0: ; 0x022308F0 ldr r1, [r5] ldr r0, _022309C4 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02025084 + bl Options_GetFrame add r4, r0, #0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -15253,7 +15253,7 @@ _02234F2A: bne _02234F40 ldr r0, _02234FAC ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 b _02234F42 _02234F40: @@ -25497,7 +25497,7 @@ MOD12_02239AD0: ; 0x02239AD0 bne _02239AF2 ldr r0, _02239B44 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 b _02239AF4 _02239AF2: @@ -34742,7 +34742,7 @@ MOD12_0223E1EC: ; 0x0223E1EC bne _0223E20E ldr r0, _0223E26C ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 b _0223E210 _0223E20E: @@ -43529,7 +43529,7 @@ MOD12_022425F4: ; 0x022425F4 bne _02242616 ldr r0, _02242674 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 b _02242618 _02242616: @@ -43673,7 +43673,7 @@ MOD12_022426BC: ; 0x022426BC ldr r1, [r5] ldr r0, _02242784 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02025084 + bl Options_GetFrame add r4, r0, #0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -43843,7 +43843,7 @@ MOD12_02242804: ; 0x02242804 ldr r1, [r6] ldr r0, _022429D0 ; =0x00001988 ldr r0, [r1, r0] - bl FUN_02025084 + bl Options_GetFrame add r4, r0, #0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index ae226da3..0bded4bf 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -9849,11 +9849,11 @@ MOD14_021DC3AC: ; 0x021DC3AC MOD14_021DC3B4: ; 0x021DC3B4 mov r1, #0x69 lsl r1, r1, #2 - ldr r3, _021DC3C0 ; =FUN_02025084 + ldr r3, _021DC3C0 ; =Options_GetFrame ldr r0, [r0, r1] bx r3 nop -_021DC3C0: .word FUN_02025084 +_021DC3C0: .word Options_GetFrame thumb_func_start MOD14_021DC3C4 MOD14_021DC3C4: ; 0x021DC3C4 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index be4096d7..1f3abbf2 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -4666,7 +4666,7 @@ MOD17_021D9918: ; 0x021D9918 ldr r0, [r5, r0] add r7, r2, #0 add r4, r3, #0 - bl FUN_02025084 + bl Options_GetFrame add r6, r0, #0 mov r0, #0 mov r1, #0xe0 @@ -4847,7 +4847,7 @@ _021D9A7E: bne _021D9ACE add r0, r0, #4 ldr r0, [r5, r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay b _021D9AD0 _021D9ACE: mov r0, #1 @@ -11480,12 +11480,12 @@ _021DCA42: ldr r1, [r4, #0xc] bl MOD17_021DCC38 ldr r0, [r4, #0xc] - bl FUN_02025084 + bl Options_GetFrame mov r1, #0x4f lsl r1, r1, #2 str r0, [r5, r1] ldr r0, [r4, #0xc] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r1, #5 lsl r1, r1, #6 str r0, [r5, r1] @@ -11760,7 +11760,7 @@ MOD17_021DCC38: ; 0x021DCC38 sub sp, #8 add r4, r0, #0 add r0, r1, #0 - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index b611c883..d09c0d20 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -7963,7 +7963,7 @@ MOD18_0223D414: ; 0x0223D414 add r6, r0, #0 ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 ldr r0, _0223D580 ; =0x02251388 mov r2, #0x15 diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 3fac1c6f..22824930 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -116,7 +116,7 @@ MOD52_021D7594: ; 0x021D7594 bl MOD52_021D7688 add r0, r4, #0 mov r1, #0 - bl FUN_02024F9C + bl Options_SetButtonModeOnMain add r0, r5, #0 bl Sav2_SysInfo_MacAddressIsMine cmp r0, #0 diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index d128782b..366c45bd 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -846,7 +846,7 @@ MOD53_021D7B60: ; 0x021D7B60 bl FUN_020068C8 ldr r0, [r5, #8] ldr r0, [r0, #8] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 0acfed98..11026c32 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -766,7 +766,7 @@ MOD54_021D7AA0: ; 0x021D7AA0 bl FUN_020068C8 ldr r0, [r5, #8] ldr r0, [r0, #8] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index eb124639..8c06cc76 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -808,7 +808,7 @@ MOD55_021D7AE0: ; 0x021D7AE0 bl FUN_020068C8 ldr r0, [r5, #8] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -5349,7 +5349,7 @@ MOD55_021DA0A4: ; 0x021DA0A4 ldr r0, [r5, #8] add r6, r1, #0 bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r4, r0, #0 mov r0, #0xce lsl r0, r0, #2 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index fbe645b5..309d4cc0 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1014,7 +1014,7 @@ MOD56_0221257C: ; 0x0221257C add r5, #0xc4 ldr r0, [r5] bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -8164,7 +8164,7 @@ MOD56_02215EA4: ; 0x02215EA4 add r4, r1, #0 add r6, r2, #0 bl Sav2_PlayerData_GetOptionsAddr - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r7, r0, #0 mov r0, #0xdb lsl r0, r0, #2 diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index ddcbedd9..a22e6e08 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -662,7 +662,7 @@ MOD58_021D9F14: ; 0x021D9F14 mov r3, #5 bl FUN_020068C8 ldr r0, [r5, #0xc] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -2226,7 +2226,7 @@ MOD58_021DAB94: ; 0x021DAB94 mov r3, #0xa bl FUN_0200D0BC ldr r0, [r5, #0xc] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0 str r3, [sp] str r0, [sp, #4] diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 8358f768..77f574fd 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -936,7 +936,7 @@ _021D7C5E: add r0, r6, #0 bl String_dtor ldr r0, [r5, #8] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r3, r4, #0 str r3, [sp] str r0, [sp, #4] diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 28028e5f..81f6d273 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -25,7 +25,7 @@ MOD60_021D74E0: ; 0x021D74E0 add r4, r0, #0 bl memset add r0, r5, #0 - bl FUN_02024FD8 + bl Options_GetTextSpeed ldrh r1, [r4, #0x18] mov r2, #0xf lsl r0, r0, #0x10 @@ -36,7 +36,7 @@ MOD60_021D74E0: ; 0x021D74E0 orr r0, r1 strh r0, [r4, #0x18] add r0, r5, #0 - bl FUN_0202502C + bl Options_GetBattleScene lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1f @@ -47,7 +47,7 @@ MOD60_021D74E0: ; 0x021D74E0 orr r0, r1 strh r0, [r4, #0x18] add r0, r5, #0 - bl FUN_02025048 + bl Options_GetBattleStyle lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1f @@ -58,7 +58,7 @@ MOD60_021D74E0: ; 0x021D74E0 orr r0, r1 strh r0, [r4, #0x18] add r0, r5, #0 - bl FUN_02025010 + bl Options_GetSoundMethod lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1e @@ -69,7 +69,7 @@ MOD60_021D74E0: ; 0x021D74E0 orr r0, r1 strh r0, [r4, #0x18] add r0, r5, #0 - bl FUN_02025064 + bl Options_GetButtonMode lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1e @@ -80,7 +80,7 @@ MOD60_021D74E0: ; 0x021D74E0 orr r0, r1 strh r0, [r4, #0x18] add r0, r5, #0 - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsl r0, r0, #0x1b @@ -172,32 +172,32 @@ MOD60_021D75B0: ; 0x021D75B0 ldr r0, [r4, #0x1c] lsl r1, r1, #0x1c lsr r1, r1, #0x1c - bl FUN_02024FE0 + bl Options_SetTextSpeed ldrh r1, [r4, #0x18] ldr r0, [r4, #0x1c] lsl r1, r1, #0x19 lsr r1, r1, #0x1f - bl FUN_02025034 + bl Options_SetBattleScene ldrh r1, [r4, #0x18] ldr r0, [r4, #0x1c] lsl r1, r1, #0x18 lsr r1, r1, #0x1f - bl FUN_02025050 + bl Options_SetBattleStyle ldrh r1, [r4, #0x18] ldr r0, [r4, #0x1c] lsl r1, r1, #0x1a lsr r1, r1, #0x1e - bl FUN_02025018 + bl Options_SetSoundMethod ldrh r1, [r4, #0x18] ldr r0, [r4, #0x1c] lsl r1, r1, #0x16 lsr r1, r1, #0x1e - bl FUN_0202506C + bl Options_SetButtonMode ldrh r1, [r4, #0x18] ldr r0, [r4, #0x1c] lsl r1, r1, #0x11 lsr r1, r1, #0x1b - bl FUN_0202508C + bl Options_SetFrame b _021D769A _021D7680: cmp r0, #2 @@ -210,7 +210,7 @@ _021D7680: mov r0, #0 lsl r1, r1, #0x16 lsr r1, r1, #0x1e - bl FUN_02024F9C + bl Options_SetButtonModeOnMain _021D769A: add r0, r5, #0 bl OverlayManager_FreeData @@ -1270,7 +1270,7 @@ _021D7F3C: add r1, r1, r2 add r1, #0x5e ldrh r1, [r1] - bl FUN_02024F9C + bl Options_SetButtonModeOnMain _021D7F54: ldr r0, [sp, #0x14] mov r1, #0x54 diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index 5cb5badb..861757e8 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -44,11 +44,11 @@ MOD61_021D74E0: ; 0x021D74E0 strh r1, [r0] ldr r0, [r4, #0x1c] ldr r0, [r0, #4] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay strb r0, [r4, #0x10] ldr r0, [r4, #0x1c] ldr r0, [r0, #4] - bl FUN_02025084 + bl Options_GetFrame strh r0, [r4, #0xa] mov r0, #1 pop {r3, r4, r5, pc} diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index 1dee0562..71dc63ea 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -35,11 +35,11 @@ _021D7504: bl OverlayManager_GetField18 add r4, r0, #0 ldr r0, [r4, #4] - bl FUN_02025084 + bl Options_GetFrame ldr r1, _021D7634 ; =0x000006A8 str r0, [r5, r1] ldr r0, [r4, #4] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay ldr r1, _021D7638 ; =0x000006AC str r0, [r5, r1] mov r0, #8 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index af08a5f3..25ca7a88 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -950,7 +950,7 @@ MOD65_021D7C04: ; 0x021D7C04 bl FUN_0200CB00 ldr r0, [r6, #0x20] ldr r0, [r0, #0x18] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -1103,7 +1103,7 @@ _021D7D42: _021D7D66: ldr r0, [r5, #0x20] ldr r0, [r0, #0x18] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r5, #0x7c strb r0, [r5] pop {r4, r5, r6, pc} diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index b77c8662..21cf712a 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -278,7 +278,7 @@ MOD71_0222D820: ; 0x0222D820 bl MOD71_0222D780 ldr r0, [r4, #8] ldr r0, [r0, #0x18] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 mov r2, #0x5d @@ -6668,7 +6668,7 @@ MOD71_02230C48: ; 0x02230C48 mov r1, #0 bl FUN_02019620 add r0, r4, #0 - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index 20e8b507..e06f4d00 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -55,11 +55,11 @@ _021D7536: bl MOD73_021D8DF4 ldr r0, [r4, #0x10] ldr r0, [r0, #0x18] - bl FUN_02025084 + bl Options_GetFrame str r0, [r5, #0x24] ldr r0, [r4, #0x10] ldr r0, [r0, #0x18] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay str r0, [r5, #0x28] mov r0, #0xae mov r1, #1 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 63f45d1d..214736ee 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -841,7 +841,7 @@ MOD75_021E7214: ; 0x021E7214 add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -9447,7 +9447,7 @@ MOD75_021EB660: ; 0x021EB660 add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0 str r3, [sp] str r0, [sp, #4] diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 12b6e9fc..7f49e675 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -437,7 +437,7 @@ MOD76_021D7814: ; 0x021D7814 bl FUN_0200CB00 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -2053,7 +2053,7 @@ MOD76_021D853C: ; 0x021D853C bl FUN_02002B7C ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay mov r3, #0 str r3, [sp] str r0, [sp, #4] diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 1c074133..67824222 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -1383,7 +1383,7 @@ MOD77_021D7FAC: ; 0x021D7FAC add r3, r1, #0 bl FUN_020068C8 ldr r0, [r5, #8] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -1685,7 +1685,7 @@ _021D82B0: ldr r2, [r5, r2] bl ReadMsgDataIntoString ldr r0, [r5, #8] - bl FUN_02024FF4 + bl Options_GetTextFrameDelay add r3, r4, #0 str r3, [sp] str r0, [sp, #4] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 29a329f0..ef7fab2d 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -2328,11 +2328,11 @@ MOD80_0222E7B0: ; 0x0222E7B0 thumb_func_start MOD80_0222E7BC MOD80_0222E7BC: ; 0x0222E7BC ldr r0, [r0] - ldr r3, _0222E7C4 ; =FUN_02024FF4 + ldr r3, _0222E7C4 ; =Options_GetTextFrameDelay ldr r0, [r0, #0x24] bx r3 .align 2, 0 -_0222E7C4: .word FUN_02024FF4 +_0222E7C4: .word Options_GetTextFrameDelay thumb_func_end MOD80_0222E7BC thumb_func_start MOD80_0222E7C8 @@ -2805,7 +2805,7 @@ MOD80_0222EB6C: ; 0x0222EB6C bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -4099,7 +4099,7 @@ MOD80_0222F5A8: ; 0x0222F5A8 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -5388,7 +5388,7 @@ MOD80_02230054: ; 0x02230054 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -6395,7 +6395,7 @@ MOD80_02230840: ; 0x02230840 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -8807,7 +8807,7 @@ MOD80_02231BF4: ; 0x02231BF4 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -11836,7 +11836,7 @@ MOD80_0223346C: ; 0x0223346C bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -14380,7 +14380,7 @@ MOD80_022348CC: ; 0x022348CC bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -18024,7 +18024,7 @@ MOD80_02236488: ; 0x02236488 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x24] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index 3db42aa1..927b69b6 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -1325,11 +1325,11 @@ _02238840: .word 0x0000014E thumb_func_start MOD81_02238844 MOD81_02238844: ; 0x02238844 ldr r0, [r0] - ldr r3, _0223884C ; =FUN_02025084 + ldr r3, _0223884C ; =Options_GetFrame ldr r0, [r0, #0x14] bx r3 .align 2, 0 -_0223884C: .word FUN_02025084 +_0223884C: .word Options_GetFrame thumb_func_end MOD81_02238844 thumb_func_start MOD81_02238850 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 4e09a3ed..89f24d96 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -1638,7 +1638,7 @@ MOD82_0222E264: ; 0x0222E264 bl FUN_02002EEC ldr r0, [r5] ldr r0, [r0, #0x10] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index ca3ff8d3..59fd717f 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -2561,7 +2561,7 @@ _0222E960: add r3, r2, #0 bl FUN_0200CB00 ldr r0, [r4, #0x14] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -6152,7 +6152,7 @@ MOD83_02230668: ; 0x02230668 mov r2, #0x56 bl FUN_02002ED0 ldr r0, [r4, #8] - bl FUN_02025084 + bl Options_GetFrame lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -10287,7 +10287,7 @@ _022327E6: ldr r1, _02232B58 ; =0x00002B48 str r0, [r4, r1] ldr r0, [r4, r1] - bl FUN_02025084 + bl Options_GetFrame ldr r1, _02232B5C ; =0x00002B4C str r0, [r4, r1] sub r1, #0xc @@ -18540,7 +18540,7 @@ MOD83_02236764: ; 0x02236764 ldr r0, [r4, #0x10] bl Sav2_PlayerData_GetOptionsAddr str r0, [r4, #0x18] - bl FUN_02025084 + bl Options_GetFrame str r0, [r4, #0x1c] ldr r1, _022367F8 ; =0x00000496 mov r0, #9 diff --git a/arm9/src/options.c b/arm9/src/options.c new file mode 100644 index 00000000..296b398a --- /dev/null +++ b/arm9/src/options.c @@ -0,0 +1,110 @@ +#include "global.h" +#include "heap.h" +#include "main.h" +#include "MI_memory.h" +#include "options.h" +#include "player_data.h" + +#pragma thumb on + +struct Options * Options_new(u32 heap_id) { + struct Options * ret = AllocFromHeap(heap_id, sizeof(struct Options)); + Options_init(ret); + return ret; +} + +void Options_copy(struct Options * src, struct Options * dest) { + MI_CpuCopy8(src, dest, sizeof(struct Options)); +} + +void Options_init(struct Options * options) { + MI_CpuFill8(options, 0, sizeof(struct Options)); + + options->textSpeed = 1; // mid speed + options->soundMethod = 0; // stereo + options->battleStyle = 0; // shift + options->battleScene = 0; // on + options->buttonMode = 0; // normal + options->frame = 0; // frame 1 +} + +void Options_SetButtonModeOnMain(struct SaveBlock2 * sav2, u32 buttonMode) { + if (sav2 != NULL) { + buttonMode = Options_GetButtonMode(Sav2_PlayerData_GetOptionsAddr(sav2)); + } + + switch (buttonMode) { + case 1: + gMain.unk34 = 1; + break; + case 2: + gMain.unk34 = 3; + break; + case 0: + default: + gMain.unk34 = 0; + break; + } +} + +u16 Options_GetTextSpeed(struct Options * options) { + return options->textSpeed; +} + +void Options_SetTextSpeed(struct Options * options, u16 textSpeed) { + options->textSpeed = (u16)(u32)textSpeed; +} + +u32 Options_GetTextFrameDelay(struct Options * options) { + u16 textSpeed = Options_GetTextSpeed(options); + + if (textSpeed == 0) { + return 8; + } + + if (textSpeed == 1) { + return 4; + } + + return 1; +} + +u16 Options_GetSoundMethod(struct Options * options) { + return options->soundMethod; +} + +void Options_SetSoundMethod(struct Options * options, u16 soundMethod) { + options->soundMethod = (u16)(u32)soundMethod; +} + +u16 Options_GetBattleScene(struct Options * options) { + return options->battleScene; +} + +void Options_SetBattleScene(struct Options * options, u16 battleScene) { + options->battleScene = (u16)(u32)battleScene; +} + +u16 Options_GetBattleStyle(struct Options * options) { + return options->battleStyle; +} + +void Options_SetBattleStyle(struct Options * options, u16 battleStyle) { + options->battleStyle = (u16)(u32)battleStyle; +} + +u16 Options_GetButtonMode(struct Options * options) { + return options->buttonMode; +} + +void Options_SetButtonMode(struct Options * options, u16 buttonMode) { + options->buttonMode = (u16)(u32)buttonMode; +} + +u16 Options_GetFrame(struct Options * options) { + return options->frame; +} + +void Options_SetFrame(struct Options * options, u16 frame) { + options->frame = (u16)(u32)frame; +} diff --git a/arm9/src/sound.c b/arm9/src/sound.c index dd928287..a1e31bbd 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -38,7 +38,7 @@ void InitSoundData(void * a0, struct Options * a1) FUN_020040A4(sdat); UNK_02107070[1] = 0; sdat->unk_BCD4C = a0; - FUN_02004D60(a1->unk0_4); + FUN_02004D60(a1->soundMethod); } void DoSoundUpdateFrame(void) -- cgit v1.2.3 From 71e8d0c889d9758201a16f08b08626af5c504919 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 27 Dec 2020 16:06:10 +0000 Subject: split a bit more of mod 5 --- arm9/arm9.lsf | 2 + arm9/global.inc | 6 + arm9/modules/05/asm/mod05_021E779C.s | 621 ++++++++++++++++ arm9/modules/05/asm/mod05_021E7C00.s | 708 ++++++++++++++++++ arm9/modules/05/asm/module_05.s | 1317 ---------------------------------- 5 files changed, 1337 insertions(+), 1317 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E779C.s create mode 100644 arm9/modules/05/asm/mod05_021E7C00.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d77a4c21..84d10f58 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -556,6 +556,8 @@ Overlay MODULE_05 Object mod05_021E5FD8.o Object mod05_021E72FC.o Object mod05_021E7504.o + Object mod05_021E779C.o + Object mod05_021E7C00.o Object module_05.o } diff --git a/arm9/global.inc b/arm9/global.inc index 0a00bc9b..65781a0c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6511,12 +6511,16 @@ .extern MOD05_021E72FC .extern MOD05_021E7358 .extern MOD05_021E7750 +.extern MOD05_021E779C +.extern MOD05_021E77B0 .extern MOD05_021E799C .extern MOD05_021E7AC0 .extern MOD05_021E7C00 .extern MOD05_021E7C14 .extern MOD05_021E7C1C .extern MOD05_021E7C80 +.extern MOD05_021E7CD8 +.extern MOD05_021E7DD8 .extern MOD05_021E7E9C .extern MOD05_021E7EA0 .extern MOD05_021E7EB0 @@ -6677,8 +6681,10 @@ .extern MOD05_021F4BF8 .extern MOD05_021F4C74 .extern MOD05_021F4C88 +.extern MOD05_021F4C9C .extern MOD05_021F4CBC .extern MOD05_021F4CD4 +.extern MOD05_021F4CE4 .extern MOD05_021F4CF8 .extern MOD05_021F4D1C .extern MOD05_021F4D2C diff --git a/arm9/modules/05/asm/mod05_021E779C.s b/arm9/modules/05/asm/mod05_021E779C.s new file mode 100644 index 00000000..ad4118ff --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E779C.s @@ -0,0 +1,621 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E779C +MOD05_021E779C: ; 0x021E779C + push {r4, lr} + mov r2, #0 + mov r1, #0x14 + add r3, r2, #0 + add r4, r0, #0 + bl MOD05_021E4BE8 + str r4, [r0, #0x10] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E77B0 +MOD05_021E77B0: ; 0x021E77B0 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E78B4 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E77C0 +MOD05_021E77C0: ; 0x021E77C0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021E77C8 +MOD05_021E77C8: ; 0x021E77C8 + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _021E77D6 + bl ErrorHandling +_021E77D6: + pop {r3, pc} + + thumb_func_start MOD05_021E77D8 +MOD05_021E77D8: ; 0x021E77D8 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021E77E0 +MOD05_021E77E0: ; 0x021E77E0 + push {r3, lr} + ldr r1, [r0, #4] + sub r1, r1, #1 + str r1, [r0, #4] + bpl _021E77EE + bl ErrorHandling +_021E77EE: + pop {r3, pc} + + thumb_func_start MOD05_021E77F0 +MOD05_021E77F0: ; 0x021E77F0 + push {r3, lr} + cmp r1, #0 + bne _021E77FC + bl MOD05_021E77C0 + pop {r3, pc} +_021E77FC: + bl MOD05_021E77D8 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7804 +MOD05_021E7804: ; 0x021E7804 + push {r3, lr} + cmp r1, #0 + bne _021E7810 + bl MOD05_021E77C8 + pop {r3, pc} +_021E7810: + bl MOD05_021E77E0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7818 +MOD05_021E7818: ; 0x021E7818 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021E785C + mov r1, #1 + str r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #0x55 + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0x75 + bl MOD05_021E50AC + mov r1, #1 + ldr r0, [r4, #0x10] + mov r2, #4 + add r3, r1, #0 + bl MOD05_021E50D4 + mov r1, #1 + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E7860 ; =UNK05_021F7854 + add r2, r1, #0 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + add r3, r1, #0 + bl MOD05_021E4EFC +_021E785C: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E7860: .word UNK05_021F7854 + + thumb_func_start MOD05_021E7864 +MOD05_021E7864: ; 0x021E7864 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E78AC + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x6c + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x75 + bl MOD05_021E50AC + ldr r0, [r4, #0x10] + mov r1, #0xb + mov r2, #0xd + mov r3, #1 + bl MOD05_021E50D4 + mov r0, #0xb + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E78B0 ; =UNK05_021F7854 + mov r2, #0xa + str r0, [sp, #8] + ldr r0, [r4, #0x10] + mov r1, #0xc + add r3, r2, #0 + bl MOD05_021E4EFC +_021E78AC: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E78B0: .word UNK05_021F7854 + + thumb_func_start MOD05_021E78B4 +MOD05_021E78B4: ; 0x021E78B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021E78E2 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E506C +_021E78E2: + pop {r4, pc} + + thumb_func_start MOD05_021E78E4 +MOD05_021E78E4: ; 0x021E78E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E7912 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #0xb + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #0xc + bl MOD05_021E506C +_021E7912: + pop {r4, pc} + + thumb_func_start MOD05_021E7914 +MOD05_021E7914: ; 0x021E7914 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7920 + bl MOD05_021E7818 +_021E7920: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7924 +MOD05_021E7924: ; 0x021E7924 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7930 + bl MOD05_021E7864 +_021E7930: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7934 +MOD05_021E7934: ; 0x021E7934 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7940 + bl MOD05_021E78B4 +_021E7940: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7944 +MOD05_021E7944: ; 0x021E7944 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7950 + bl MOD05_021E78E4 +_021E7950: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7954 +MOD05_021E7954: ; 0x021E7954 + push {r3, lr} + cmp r1, #0 + bne _021E7960 + bl MOD05_021E7914 + pop {r3, pc} +_021E7960: + bl MOD05_021E7924 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7968 +MOD05_021E7968: ; 0x021E7968 + push {r3, lr} + cmp r1, #0 + bne _021E7974 + bl MOD05_021E7934 + pop {r3, pc} +_021E7974: + bl MOD05_021E7944 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E797C +MOD05_021E797C: ; 0x021E797C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r3, _021E7998 ; =UNK05_021F7824 + add r4, sp, #0 + ldr r5, [r3] + ldr r3, [r3, #4] + str r5, [sp] + str r3, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r4, r1] + bl MOD05_021E4EE4 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E7998: .word UNK05_021F7824 + + thumb_func_start MOD05_021E799C +MOD05_021E799C: ; 0x021E799C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #0x14] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E79A8 +MOD05_021E79A8: ; 0x021E79A8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E79FC + ldr r0, _021E7A04 ; =0x000005DD + bl FUN_020054C8 +_021E79FC: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7A04: .word 0x000005DD + + thumb_func_start MOD05_021E7A08 +MOD05_021E7A08: ; 0x021E7A08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_0206477C + ldr r0, [r4] + cmp r0, #0 + beq _021E7A24 + cmp r0, #1 + beq _021E7A46 + cmp r0, #2 + b _021E7A5E +_021E7A24: + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x28] + add r0, r1, r0 + str r0, [r4, #0x1c] + beq _021E7A3A + mov r0, #2 + ldr r1, [r4, #0x28] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7A5E +_021E7A3A: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7A5E +_021E7A46: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7A5E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7A5E: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7A6C +MOD05_021E7A6C: ; 0x021E7A6C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x40] + bl FUN_0201F744 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7804 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7968 + pop {r4, pc} + + thumb_func_start MOD05_021E7A88 +MOD05_021E7A88: ; 0x021E7A88 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E7ABA + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl FUN_0201F7C8 +_021E7ABA: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7AC0 +MOD05_021E7AC0: ; 0x021E7AC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #0x16 + str r6, [sp, #0x14] + str r4, [sp, #0x18] + bl MOD05_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058744 + add r1, r0, #1 + add r0, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + ldr r1, _021E7B04 ; =UNK05_021F7840 + add r0, r4, #0 + add r2, sp, #8 + add r3, r7, #0 + bl MOD05_021E4DC4 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7B04: .word UNK05_021F7840 + + thumb_func_start MOD05_021E7B08 +MOD05_021E7B08: ; 0x021E7B08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x3c] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x3c] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E7B6C + ldr r0, _021E7B74 ; =0x000005DD + bl FUN_020054C8 +_021E7B6C: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7B74: .word 0x000005DD + + thumb_func_start MOD05_021E7B78 +MOD05_021E7B78: ; 0x021E7B78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x3c] + ldr r1, [r4, #8] + add r5, r0, #0 + ldr r2, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021E7B94 + bl ErrorHandling +_021E7B94: + add r0, r6, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + add r1, r1, r0 + str r1, [sp, #4] + ldr r2, [sp, #8] + lsr r1, r0, #5 + add r1, r2, r1 + str r1, [sp, #8] + ldr r1, [r4] + cmp r1, #0 + beq _021E7BBC + cmp r1, #1 + beq _021E7BDC + cmp r1, #2 + b _021E7BF4 +_021E7BBC: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x28] + add r1, r2, r1 + str r1, [r4, #0x1c] + beq _021E7BD0 + ldr r1, [r4, #0x28] + lsr r0, r0, #4 + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7BF4 +_021E7BD0: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7BF4 +_021E7BDC: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7BF4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7BF4: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + .section .rodata + + .global UNK05_021F7824 +UNK05_021F7824: ; 0x021F7824 + .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8 + .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88 + + .global UNK05_021F7840 +UNK05_021F7840: ; 0x021F7840 + .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78 + .word MOD05_021E7A88 + + .global UNK05_021F7854 +UNK05_021F7854: ; 0x021F7854 + .word 0x00000000, 0x00000001, 0x00000000, 0x00000000 + .word 0x00000000, 0x00000002 diff --git a/arm9/modules/05/asm/mod05_021E7C00.s b/arm9/modules/05/asm/mod05_021E7C00.s new file mode 100644 index 00000000..2e968e4f --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E7C00.s @@ -0,0 +1,708 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E7C00 +MOD05_021E7C00: ; 0x021E7C00 + push {r4, lr} + mov r1, #0x46 + lsl r1, r1, #6 + bl AllocFromHeap + add r4, r0, #0 + bl MOD05_021E7C1C + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E7C14 +MOD05_021E7C14: ; 0x021E7C14 + ldr r3, _021E7C18 ; =FreeToHeap + bx r3 + .balign 4, 0 +_021E7C18: .word FreeToHeap + + thumb_func_start MOD05_021E7C1C +MOD05_021E7C1C: ; 0x021E7C1C + push {r3, r4, r5, r6, r7} + sub sp, #0xc + mov r4, #0 + mov ip, r0 + add r7, sp, #0 + add r3, r4, #0 +_021E7C28: + str r3, [r7] + str r3, [r7, #4] + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + mov r0, ip + add r2, r0, r1 + add r5, r2, #0 + str r3, [r7, #8] + mov r0, ip + str r3, [r0, r1] + str r3, [r2, #4] + str r3, [r2, #8] + str r3, [r2, #0xc] + add r6, r7, #0 + ldmia r6!, {r0, r1} + add r5, #0x68 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x74 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x80 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + str r3, [r2, #0x64] + cmp r4, #0x20 + blo _021E7C28 + add sp, #0xc + pop {r3, r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E7C80 +MOD05_021E7C80: ; 0x021E7C80 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0x20 + blt _021E7C90 + bl ErrorHandling +_021E7C90: + add r6, sp, #0 + mov r3, #0 + str r3, [r6] + str r3, [r6, #4] + mov r0, #0x8c + mul r0, r5 + str r3, [r6, #8] + str r3, [r4, r0] + add r2, r4, r0 + str r3, [r2, #4] + str r3, [r2, #8] + add r4, r2, #0 + str r3, [r2, #0xc] + add r5, r6, #0 + ldmia r5!, {r0, r1} + add r4, #0x68 + stmia r4!, {r0, r1} + ldr r0, [r5] + add r5, r6, #0 + str r0, [r4] + add r4, r2, #0 + ldmia r5!, {r0, r1} + add r4, #0x74 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r4, r2, #0 + ldmia r6!, {r0, r1} + add r4, #0x80 + stmia r4!, {r0, r1} + ldr r0, [r6] + str r0, [r4] + str r3, [r2, #0x64] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7CD8 +MOD05_021E7CD8: ; 0x021E7CD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [sp, #0x28] + add r4, r1, #0 + str r0, [sp, #0x28] + mov r0, #0 + add r7, r2, #0 + add r5, r3, #0 + str r0, [sp, #4] + cmp r4, #0 + beq _021E7D0E + mov r0, #4 + bl AllocFromHeapAtEnd + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r6, #0 + add r1, r4, #0 + bl NARC_ReadFile + add r0, r4, #0 + mov r1, #0x30 + bl _u32_div_f + str r0, [sp] + b _021E7D10 +_021E7D0E: + str r0, [sp] +_021E7D10: + ldr r4, [sp, #4] + mov r6, #0 +_021E7D14: + ldr r0, [sp] + cmp r6, r0 + bhs _021E7D82 + ldr r0, [r4] + add r2, r5, #0 + str r0, [r5] + mov r0, #1 + str r0, [r5, #4] + mov r0, #0 + add r3, r4, #4 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x10 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x1c + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r5, #0 + str r0, [r2] + add r2, r5, #0 + ldr r0, [r5] + add r1, r7, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r1, [r5] + add r0, r7, #0 + bl MOD05_021F4CE4 + cmp r0, #0 + bne _021E7D74 + mov r0, #0 + str r0, [r5] +_021E7D74: + add r1, r5, #0 + ldr r0, [r5] + ldr r2, [sp, #0x28] + add r1, #0x10 + bl MOD05_021D9E80 + b _021E7DBE +_021E7D82: + mov r1, #0 + add r0, sp, #8 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + add r0, r1, #0 + str r0, [r5] + str r0, [r5, #4] + add r2, r5, #0 + add r3, sp, #8 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] +_021E7DBE: + add r6, r6, #1 + add r5, #0x8c + add r4, #0x30 + cmp r6, #0x20 + blt _021E7D14 + ldr r0, [sp, #4] + cmp r0, #0 + beq _021E7DD2 + bl FreeToHeap +_021E7DD2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7DD8 +MOD05_021E7DD8: ; 0x021E7DD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + ldr r4, _021E7E94 ; =UNK05_021F7878 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + add r6, r0, #0 + str r1, [sp, #8] + add r3, sp, #0x18 + mov r2, #4 +_021E7DEA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E7DEA + ldr r0, [r4] + ldr r5, [sp, #0x60] + str r0, [r3] + mov r7, #0 +_021E7DFA: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E7E86 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E7E86 + add r4, r5, #0 + add r4, #0x68 + ldmia r4!, {r0, r1} + add r3, sp, #0x3c + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [sp, #0x3c] + ldr r0, [r6] + add r3, r5, #0 + add r0, r1, r0 + str r0, [sp, #0x3c] + ldr r1, [sp, #0x44] + ldr r0, [r6, #8] + add r3, #0x80 + add r0, r1, r0 + str r0, [sp, #0x44] + add r1, r2, #0 + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + bl FUN_0201B6D0 + cmp r0, #0 + beq _021E7E86 + ldr r0, [sp, #8] + bl MOD05_021F4C9C + add r4, r0, #0 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _021E7E50 + ldr r0, [sp, #0x10] + ldr r1, [r5, #0x64] + ldr r2, _021E7E98 ; =0x00000F33 + bl MOD05_021DBB8C +_021E7E50: + ldr r0, [r5] + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD05_021DB9D4 + add r0, sp, #0x14 + ldrh r0, [r0] + add r1, sp, #0x3c + cmp r0, #0 + bne _021E7E74 + add r0, r5, #0 + add r3, r5, #0 + add r0, #0x10 + add r2, sp, #0x18 + add r3, #0x80 + bl FUN_0201B26C + b _021E7E86 +_021E7E74: + str r4, [sp] + ldr r0, [r5] + add r3, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + add r3, #0x80 + bl MOD05_021E7F34 +_021E7E86: + add r7, r7, #1 + add r5, #0x8c + cmp r7, #0x20 + blt _021E7DFA + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7E94: .word UNK05_021F7878 +_021E7E98: .word 0x00000F33 + + thumb_func_start MOD05_021E7E9C +MOD05_021E7E9C: ; 0x021E7E9C + add r0, #0x74 + bx lr + + thumb_func_start MOD05_021E7EA0 +MOD05_021E7EA0: ; 0x021E7EA0 + add r2, r1, #0 + add r2, #0x68 + add r3, r0, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + + thumb_func_start MOD05_021E7EB0 +MOD05_021E7EB0: ; 0x021E7EB0 + add r3, r1, #0 + add r2, r0, #0 + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + + thumb_func_start MOD05_021E7EC0 +MOD05_021E7EC0: ; 0x021E7EC0 + str r1, [r0, #8] + bx lr + + thumb_func_start MOD05_021E7EC4 +MOD05_021E7EC4: ; 0x021E7EC4 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021E7EC8 +MOD05_021E7EC8: ; 0x021E7EC8 + add r0, #0x10 + bx lr + + thumb_func_start MOD05_021E7ECC +MOD05_021E7ECC: ; 0x021E7ECC + ldr r0, [r0, #0x64] + bx lr + + thumb_func_start MOD05_021E7ED0 +MOD05_021E7ED0: ; 0x021E7ED0 + mov r2, #0x8c + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start MOD05_021E7ED8 +MOD05_021E7ED8: ; 0x021E7ED8 + mov r3, #0 +_021E7EDA: + ldr r2, [r0] + cmp r2, r1 + beq _021E7EEA + add r3, r3, #1 + add r0, #0x8c + cmp r3, #0x20 + blt _021E7EDA + mov r0, #0 +_021E7EEA: + bx lr + + thumb_func_start MOD05_021E7EEC +MOD05_021E7EEC: ; 0x021E7EEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0x20 + blt _021E7EFA + bl ErrorHandling +_021E7EFA: + mov r0, #0x8c + mul r0, r4 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021E7F0A + bl ErrorHandling +_021E7F0A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F10 +MOD05_021E7F10: ; 0x021E7F10 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl MOD05_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r1, r0, r1 + add r0, r5, #0 + str r1, [r4] + bl FUN_020B80B4 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F34 +MOD05_021E7F34: ; 0x021E7F34 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + bl FUN_020B8474 + ldr r1, _021E7FB4 ; =UNK_021CEDD4 + add r0, r4, #0 + bl MI_Copy36B + ldr r1, _021E7FB8 ; =UNK_021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + add r0, r5, #0 + str r2, [r1, #0x7c] + bl FUN_020B844C + bl FUN_020B849C + add r2, sp, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, #2 + add r3, sp, #0 + bl MOD05_021DB9E0 + add r0, sp, #0 + ldrh r0, [r0] + ldr r1, [sp, #0x18] + bl MOD05_021DB9F8 + add r6, r0, #0 + add r0, sp, #0 + ldrh r0, [r0, #2] + mov r5, #0xff + mov r4, #0 + cmp r0, #0 + ble _021E7FB0 +_021E7F84: + lsl r0, r4, #2 + add r2, r6, r0 + ldrh r0, [r6, r0] + cmp r5, r0 + beq _021E7F96 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + mov r3, #1 + b _021E7F98 +_021E7F96: + mov r3, #0 +_021E7F98: + ldrh r2, [r2, #2] + add r0, r7, #0 + add r1, r5, #0 + bl FUN_020BAFB8 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, sp, #0 + ldrh r0, [r0, #2] + cmp r4, r0 + blt _021E7F84 +_021E7FB0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7FB4: .word UNK_021CEDD4 +_021E7FB8: .word UNK_021CED98 + + thumb_func_start MOD05_021E7FBC +MOD05_021E7FBC: ; 0x021E7FBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, _021E8058 ; =UNK05_021F786C + add r6, r0, #0 + add r7, r1, #0 + ldmia r5!, {r0, r1} + add r4, sp, #4 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + mov r4, #0 + mov r0, #0x8c +_021E7FD4: + add r1, r4, #0 + mul r1, r0 + add r5, r6, r1 + ldr r1, [r5, #4] + cmp r1, #0 + bne _021E8044 + mov r0, #1 + str r0, [r5, #4] + add r6, r5, #0 + ldmia r3!, {r0, r1} + add r6, #0x68 + stmia r6!, {r0, r1} + ldr r0, [r3] + str r0, [r6] + ldr r6, [sp, #0x28] + cmp r6, #0 + beq _021E8008 + mov r0, #1 + str r0, [r5, #0xc] + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x74 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + b _021E800C +_021E8008: + mov r0, #0 + str r0, [r5, #0xc] +_021E800C: + add r6, sp, #4 + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x80 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r7, #0 + str r0, [r3] + add r3, r5, #0 + str r2, [r5] + add r0, r2, #0 + add r2, r5, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [sp] + ldr r0, [r5] + add r5, #0x10 + add r2, r1, #0 + add r3, r5, #0 + bl MOD05_021D9DC0 + add sp, #0x10 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E8044: + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0x20 + blo _021E7FD4 + bl ErrorHandling + mov r0, #0x20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E8058: .word UNK05_021F786C + + thumb_func_start MOD05_021E805C +MOD05_021E805C: ; 0x021E805C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r4, _021E80F4 ; =UNK05_021F789C + str r0, [sp, #8] + str r1, [sp, #0xc] + add r3, sp, #0x14 + mov r2, #4 +_021E806A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E806A + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r7, sp, #0x14 +_021E807A: + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r5, r0, r1 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E80E4 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E80E4 + ldr r0, [sp, #0xc] + bl MOD05_021F4C9C + add r6, r0, #0 + ldr r0, [r5] + add r1, r6, #0 + add r2, sp, #0x10 + bl MOD05_021DB9D4 + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021E80B2 + add r1, r5, #0 + add r0, r7, #0 + add r1, #0x74 + bl FUN_0201CAA8 +_021E80B2: + add r0, sp, #0x10 + ldrh r0, [r0] + cmp r0, #0 + bne _021E80CE + add r0, r5, #0 + add r1, r5, #0 + add r5, #0x80 + add r0, #0x10 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl FUN_0201B26C + b _021E80E4 +_021E80CE: + str r6, [sp] + ldr r0, [r5] + add r1, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r5, #0x80 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl MOD05_021E7F34 +_021E80E4: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x20 + blo _021E807A + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E80F4: .word UNK05_021F789C + + .section .rodata + + .global UNK05_021F786C +UNK05_021F786C: ; 0x021F786C + .word 0x00001000, 0x00001000, 0x00001000 + + .global UNK05_021F7878 +UNK05_021F7878: ; 0x021F7878 + .byte 0x00, 0x10, 0x00, 0x00 ;word + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + + .global UNK05_021F789C +UNK05_021F789C: ; 0x021F789C + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 38ca97a9..96673023 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,1292 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021E779C -MOD05_021E779C: ; 0x021E779C - push {r4, lr} - mov r2, #0 - mov r1, #0x14 - add r3, r2, #0 - add r4, r0, #0 - bl MOD05_021E4BE8 - str r4, [r0, #0x10] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E77B0 -MOD05_021E77B0: ; 0x021E77B0 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021E78B4 - add r0, r4, #0 - bl MOD05_021E4C00 - pop {r4, pc} - - thumb_func_start MOD05_021E77C0 -MOD05_021E77C0: ; 0x021E77C0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - bx lr - - thumb_func_start MOD05_021E77C8 -MOD05_021E77C8: ; 0x021E77C8 - push {r3, lr} - ldr r1, [r0] - sub r1, r1, #1 - str r1, [r0] - bpl _021E77D6 - bl ErrorHandling -_021E77D6: - pop {r3, pc} - - thumb_func_start MOD05_021E77D8 -MOD05_021E77D8: ; 0x021E77D8 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bx lr - - thumb_func_start MOD05_021E77E0 -MOD05_021E77E0: ; 0x021E77E0 - push {r3, lr} - ldr r1, [r0, #4] - sub r1, r1, #1 - str r1, [r0, #4] - bpl _021E77EE - bl ErrorHandling -_021E77EE: - pop {r3, pc} - - thumb_func_start MOD05_021E77F0 -MOD05_021E77F0: ; 0x021E77F0 - push {r3, lr} - cmp r1, #0 - bne _021E77FC - bl MOD05_021E77C0 - pop {r3, pc} -_021E77FC: - bl MOD05_021E77D8 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7804 -MOD05_021E7804: ; 0x021E7804 - push {r3, lr} - cmp r1, #0 - bne _021E7810 - bl MOD05_021E77C8 - pop {r3, pc} -_021E7810: - bl MOD05_021E77E0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7818 -MOD05_021E7818: ; 0x021E7818 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #0 - bne _021E785C - mov r1, #1 - str r1, [r4, #8] - ldr r0, [r4, #0x10] - mov r2, #0x55 - bl MOD05_021E5078 - ldr r0, [r4, #0x10] - mov r1, #1 - mov r2, #0x75 - bl MOD05_021E50AC - mov r1, #1 - ldr r0, [r4, #0x10] - mov r2, #4 - add r3, r1, #0 - bl MOD05_021E50D4 - mov r1, #1 - str r1, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _021E7860 ; =UNK05_021F7854 - add r2, r1, #0 - str r0, [sp, #8] - ldr r0, [r4, #0x10] - add r3, r1, #0 - bl MOD05_021E4EFC -_021E785C: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_021E7860: .word UNK05_021F7854 - - thumb_func_start MOD05_021E7864 -MOD05_021E7864: ; 0x021E7864 - push {r3, r4, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _021E78AC - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #0x10] - mov r1, #0xa - mov r2, #0x6c - bl MOD05_021E5078 - ldr r0, [r4, #0x10] - mov r1, #0xa - mov r2, #0x75 - bl MOD05_021E50AC - ldr r0, [r4, #0x10] - mov r1, #0xb - mov r2, #0xd - mov r3, #1 - bl MOD05_021E50D4 - mov r0, #0xb - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _021E78B0 ; =UNK05_021F7854 - mov r2, #0xa - str r0, [sp, #8] - ldr r0, [r4, #0x10] - mov r1, #0xc - add r3, r2, #0 - bl MOD05_021E4EFC -_021E78AC: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 -_021E78B0: .word UNK05_021F7854 - - thumb_func_start MOD05_021E78B4 -MOD05_021E78B4: ; 0x021E78B4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - cmp r0, #1 - bne _021E78E2 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E50A0 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E50C8 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E5114 - ldr r0, [r4, #0x10] - mov r1, #1 - bl MOD05_021E506C -_021E78E2: - pop {r4, pc} - - thumb_func_start MOD05_021E78E4 -MOD05_021E78E4: ; 0x021E78E4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - cmp r0, #1 - bne _021E7912 - mov r0, #0 - str r0, [r4, #0xc] - ldr r0, [r4, #0x10] - mov r1, #0xa - bl MOD05_021E50A0 - ldr r0, [r4, #0x10] - mov r1, #0xa - bl MOD05_021E50C8 - ldr r0, [r4, #0x10] - mov r1, #0xb - bl MOD05_021E5114 - ldr r0, [r4, #0x10] - mov r1, #0xc - bl MOD05_021E506C -_021E7912: - pop {r4, pc} - - thumb_func_start MOD05_021E7914 -MOD05_021E7914: ; 0x021E7914 - push {r3, lr} - ldr r1, [r0] - cmp r1, #0 - bne _021E7920 - bl MOD05_021E7818 -_021E7920: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7924 -MOD05_021E7924: ; 0x021E7924 - push {r3, lr} - ldr r1, [r0, #4] - cmp r1, #0 - bne _021E7930 - bl MOD05_021E7864 -_021E7930: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7934 -MOD05_021E7934: ; 0x021E7934 - push {r3, lr} - ldr r1, [r0] - cmp r1, #0 - bne _021E7940 - bl MOD05_021E78B4 -_021E7940: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7944 -MOD05_021E7944: ; 0x021E7944 - push {r3, lr} - ldr r1, [r0, #4] - cmp r1, #0 - bne _021E7950 - bl MOD05_021E78E4 -_021E7950: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7954 -MOD05_021E7954: ; 0x021E7954 - push {r3, lr} - cmp r1, #0 - bne _021E7960 - bl MOD05_021E7914 - pop {r3, pc} -_021E7960: - bl MOD05_021E7924 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7968 -MOD05_021E7968: ; 0x021E7968 - push {r3, lr} - cmp r1, #0 - bne _021E7974 - bl MOD05_021E7934 - pop {r3, pc} -_021E7974: - bl MOD05_021E7944 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E797C -MOD05_021E797C: ; 0x021E797C - push {r3, r4, r5, lr} - sub sp, #8 - ldr r3, _021E7998 ; =UNK05_021F7824 - add r4, sp, #0 - ldr r5, [r3] - ldr r3, [r3, #4] - str r5, [sp] - str r3, [sp, #4] - lsl r1, r1, #2 - ldr r1, [r4, r1] - bl MOD05_021E4EE4 - add sp, #8 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021E7998: .word UNK05_021F7824 - - thumb_func_start MOD05_021E799C -MOD05_021E799C: ; 0x021E799C - push {r3, lr} - bl FUN_02064738 - ldr r0, [r0, #0x14] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E79A8 -MOD05_021E79A8: ; 0x021E79A8 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - bl FUN_0206475C - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x30 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - mov r0, #6 - lsl r0, r0, #0xc - str r0, [r4, #0x28] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7954 - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206477C - ldr r0, [r4, #0x34] - ldr r1, [r4, #0x30] - add r2, sp, #0 - bl MOD05_021E797C - str r0, [r4, #0x40] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E77F0 - add r0, r5, #0 - bl FUN_02064754 - cmp r0, #1 - bne _021E79FC - ldr r0, _021E7A04 ; =0x000005DD - bl FUN_020054C8 -_021E79FC: - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - nop -_021E7A04: .word 0x000005DD - - thumb_func_start MOD05_021E7A08 -MOD05_021E7A08: ; 0x021E7A08 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r1, sp, #0 - add r5, r0, #0 - bl FUN_0206477C - ldr r0, [r4] - cmp r0, #0 - beq _021E7A24 - cmp r0, #1 - beq _021E7A46 - cmp r0, #2 - b _021E7A5E -_021E7A24: - ldr r1, [r4, #0x1c] - ldr r0, [r4, #0x28] - add r0, r1, r0 - str r0, [r4, #0x1c] - beq _021E7A3A - mov r0, #2 - ldr r1, [r4, #0x28] - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [r4, #0x28] - b _021E7A5E -_021E7A3A: - mov r0, #0 - str r0, [r4, #0x28] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021E7A5E -_021E7A46: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #0x1e - blt _021E7A5E - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #0x14] -_021E7A5E: - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206476C - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7A6C -MOD05_021E7A6C: ; 0x021E7A6C - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #0x40] - bl FUN_0201F744 - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7804 - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7968 - pop {r4, pc} - - thumb_func_start MOD05_021E7A88 -MOD05_021E7A88: ; 0x021E7A88 - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r1, [r4, #0x10] - cmp r1, #1 - beq _021E7ABA - add r1, sp, #0 - bl FUN_0206477C - ldr r1, [sp] - ldr r0, [r4, #0x18] - add r0, r1, r0 - str r0, [sp] - ldr r1, [sp, #4] - ldr r0, [r4, #0x1c] - add r0, r1, r0 - str r0, [sp, #4] - ldr r1, [sp, #8] - ldr r0, [r4, #0x20] - add r0, r1, r0 - str r0, [sp, #8] - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl FUN_0201F7C8 -_021E7ABA: - add sp, #0xc - pop {r3, r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7AC0 -MOD05_021E7AC0: ; 0x021E7AC0 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - add r6, r1, #0 - add r7, r2, #0 - bl MOD05_021E4C24 - add r4, r0, #0 - mov r1, #0x16 - str r6, [sp, #0x14] - str r4, [sp, #0x18] - bl MOD05_021E4C08 - str r0, [sp, #0x1c] - add r0, r5, #0 - add r1, sp, #8 - str r5, [sp, #0x20] - bl FUN_02058B5C - add r0, r5, #0 - bl FUN_02058744 - add r1, r0, #1 - add r0, sp, #0x14 - str r0, [sp] - str r1, [sp, #4] - ldr r1, _021E7B04 ; =UNK05_021F7840 - add r0, r4, #0 - add r2, sp, #8 - add r3, r7, #0 - bl MOD05_021E4DC4 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021E7B04: .word UNK05_021F7840 - - thumb_func_start MOD05_021E7B08 -MOD05_021E7B08: ; 0x021E7B08 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - bl FUN_0206475C - add r2, r4, #0 - add r3, r0, #0 - add r2, #0x30 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0x3c] - bl FUN_02058448 - str r0, [r4, #8] - ldr r0, [r4, #0x3c] - bl FUN_02058450 - str r0, [r4, #0xc] - mov r0, #6 - lsl r0, r0, #0xc - str r0, [r4, #0x28] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E7954 - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206477C - ldr r0, [r4, #0x34] - ldr r1, [r4, #0x30] - add r2, sp, #0 - bl MOD05_021E797C - str r0, [r4, #0x40] - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x30] - bl MOD05_021E77F0 - add r0, r5, #0 - bl FUN_02064754 - cmp r0, #1 - bne _021E7B6C - ldr r0, _021E7B74 ; =0x000005DD - bl FUN_020054C8 -_021E7B6C: - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - nop -_021E7B74: .word 0x000005DD - - thumb_func_start MOD05_021E7B78 -MOD05_021E7B78: ; 0x021E7B78 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r6, [r4, #0x3c] - ldr r1, [r4, #8] - add r5, r0, #0 - ldr r2, [r4, #0xc] - add r0, r6, #0 - bl FUN_020582A8 - cmp r0, #0 - bne _021E7B94 - bl ErrorHandling -_021E7B94: - add r0, r6, #0 - add r1, sp, #0 - bl MOD05_021F1E64 - mov r0, #2 - ldr r1, [sp, #4] - lsl r0, r0, #0x10 - add r1, r1, r0 - str r1, [sp, #4] - ldr r2, [sp, #8] - lsr r1, r0, #5 - add r1, r2, r1 - str r1, [sp, #8] - ldr r1, [r4] - cmp r1, #0 - beq _021E7BBC - cmp r1, #1 - beq _021E7BDC - cmp r1, #2 - b _021E7BF4 -_021E7BBC: - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x28] - add r1, r2, r1 - str r1, [r4, #0x1c] - beq _021E7BD0 - ldr r1, [r4, #0x28] - lsr r0, r0, #4 - sub r0, r1, r0 - str r0, [r4, #0x28] - b _021E7BF4 -_021E7BD0: - mov r0, #0 - str r0, [r4, #0x28] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021E7BF4 -_021E7BDC: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - cmp r0, #0x1e - blt _021E7BF4 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - mov r0, #0 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #0x14] -_021E7BF4: - add r0, r5, #0 - add r1, sp, #0 - bl FUN_0206476C - add sp, #0xc - pop {r3, r4, r5, r6, pc} - - thumb_func_start MOD05_021E7C00 -MOD05_021E7C00: ; 0x021E7C00 - push {r4, lr} - mov r1, #0x46 - lsl r1, r1, #6 - bl AllocFromHeap - add r4, r0, #0 - bl MOD05_021E7C1C - add r0, r4, #0 - pop {r4, pc} - - thumb_func_start MOD05_021E7C14 -MOD05_021E7C14: ; 0x021E7C14 - ldr r3, _021E7C18 ; =FreeToHeap - bx r3 - .balign 4, 0 -_021E7C18: .word FreeToHeap - - thumb_func_start MOD05_021E7C1C -MOD05_021E7C1C: ; 0x021E7C1C - push {r3, r4, r5, r6, r7} - sub sp, #0xc - mov r4, #0 - mov ip, r0 - add r7, sp, #0 - add r3, r4, #0 -_021E7C28: - str r3, [r7] - str r3, [r7, #4] - mov r0, #0x8c - add r1, r4, #0 - mul r1, r0 - mov r0, ip - add r2, r0, r1 - add r5, r2, #0 - str r3, [r7, #8] - mov r0, ip - str r3, [r0, r1] - str r3, [r2, #4] - str r3, [r2, #8] - str r3, [r2, #0xc] - add r6, r7, #0 - ldmia r6!, {r0, r1} - add r5, #0x68 - stmia r5!, {r0, r1} - ldr r0, [r6] - add r6, r7, #0 - str r0, [r5] - add r5, r2, #0 - ldmia r6!, {r0, r1} - add r5, #0x74 - stmia r5!, {r0, r1} - ldr r0, [r6] - add r6, r7, #0 - str r0, [r5] - add r5, r2, #0 - ldmia r6!, {r0, r1} - add r5, #0x80 - stmia r5!, {r0, r1} - ldr r0, [r6] - str r0, [r5] - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - str r3, [r2, #0x64] - cmp r4, #0x20 - blo _021E7C28 - add sp, #0xc - pop {r3, r4, r5, r6, r7} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E7C80 -MOD05_021E7C80: ; 0x021E7C80 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - add r4, r1, #0 - cmp r5, #0x20 - blt _021E7C90 - bl ErrorHandling -_021E7C90: - add r6, sp, #0 - mov r3, #0 - str r3, [r6] - str r3, [r6, #4] - mov r0, #0x8c - mul r0, r5 - str r3, [r6, #8] - str r3, [r4, r0] - add r2, r4, r0 - str r3, [r2, #4] - str r3, [r2, #8] - add r4, r2, #0 - str r3, [r2, #0xc] - add r5, r6, #0 - ldmia r5!, {r0, r1} - add r4, #0x68 - stmia r4!, {r0, r1} - ldr r0, [r5] - add r5, r6, #0 - str r0, [r4] - add r4, r2, #0 - ldmia r5!, {r0, r1} - add r4, #0x74 - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - add r4, r2, #0 - ldmia r6!, {r0, r1} - add r4, #0x80 - stmia r4!, {r0, r1} - ldr r0, [r6] - str r0, [r4] - str r3, [r2, #0x64] - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7CD8 -MOD05_021E7CD8: ; 0x021E7CD8 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldr r0, [sp, #0x28] - add r4, r1, #0 - str r0, [sp, #0x28] - mov r0, #0 - add r7, r2, #0 - add r5, r3, #0 - str r0, [sp, #4] - cmp r4, #0 - beq _021E7D0E - mov r0, #4 - bl AllocFromHeapAtEnd - str r0, [sp, #4] - ldr r2, [sp, #4] - add r0, r6, #0 - add r1, r4, #0 - bl NARC_ReadFile - add r0, r4, #0 - mov r1, #0x30 - bl _u32_div_f - str r0, [sp] - b _021E7D10 -_021E7D0E: - str r0, [sp] -_021E7D10: - ldr r4, [sp, #4] - mov r6, #0 -_021E7D14: - ldr r0, [sp] - cmp r6, r0 - bhs _021E7D82 - ldr r0, [r4] - add r2, r5, #0 - str r0, [r5] - mov r0, #1 - str r0, [r5, #4] - mov r0, #0 - add r3, r4, #4 - str r0, [r5, #0xc] - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r4, #0 - str r0, [r2] - add r3, #0x10 - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x74 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r4, #0 - str r0, [r2] - add r3, #0x1c - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x80 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, r5, #0 - str r0, [r2] - add r2, r5, #0 - ldr r0, [r5] - add r1, r7, #0 - add r2, #0x10 - add r3, #0x64 - bl MOD05_021E7F10 - ldr r1, [r5] - add r0, r7, #0 - bl MOD05_021F4CE4 - cmp r0, #0 - bne _021E7D74 - mov r0, #0 - str r0, [r5] -_021E7D74: - add r1, r5, #0 - ldr r0, [r5] - ldr r2, [sp, #0x28] - add r1, #0x10 - bl MOD05_021D9E80 - b _021E7DBE -_021E7D82: - mov r1, #0 - add r0, sp, #8 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - add r0, r1, #0 - str r0, [r5] - str r0, [r5, #4] - add r2, r5, #0 - add r3, sp, #8 - str r0, [r5, #0xc] - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #8 - str r0, [r2] - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x74 - stmia r2!, {r0, r1} - ldr r0, [r3] - add r3, sp, #8 - str r0, [r2] - add r2, r5, #0 - ldmia r3!, {r0, r1} - add r2, #0x80 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] -_021E7DBE: - add r6, r6, #1 - add r5, #0x8c - add r4, #0x30 - cmp r6, #0x20 - blt _021E7D14 - ldr r0, [sp, #4] - cmp r0, #0 - beq _021E7DD2 - bl FreeToHeap -_021E7DD2: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7DD8 -MOD05_021E7DD8: ; 0x021E7DD8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x48 - ldr r4, _021E7E94 ; =UNK05_021F7878 - str r2, [sp, #0xc] - str r3, [sp, #0x10] - add r6, r0, #0 - str r1, [sp, #8] - add r3, sp, #0x18 - mov r2, #4 -_021E7DEA: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021E7DEA - ldr r0, [r4] - ldr r5, [sp, #0x60] - str r0, [r3] - mov r7, #0 -_021E7DFA: - ldr r0, [r5, #4] - cmp r0, #0 - beq _021E7E86 - ldr r0, [r5, #8] - cmp r0, #0 - bne _021E7E86 - add r4, r5, #0 - add r4, #0x68 - ldmia r4!, {r0, r1} - add r3, sp, #0x3c - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - ldr r1, [sp, #0x3c] - ldr r0, [r6] - add r3, r5, #0 - add r0, r1, r0 - str r0, [sp, #0x3c] - ldr r1, [sp, #0x44] - ldr r0, [r6, #8] - add r3, #0x80 - add r0, r1, r0 - str r0, [sp, #0x44] - add r1, r2, #0 - ldr r0, [r5, #0x64] - add r2, sp, #0x18 - bl FUN_0201B6D0 - cmp r0, #0 - beq _021E7E86 - ldr r0, [sp, #8] - bl MOD05_021F4C9C - add r4, r0, #0 - ldr r0, [sp, #0xc] - cmp r0, #1 - bne _021E7E50 - ldr r0, [sp, #0x10] - ldr r1, [r5, #0x64] - ldr r2, _021E7E98 ; =0x00000F33 - bl MOD05_021DBB8C -_021E7E50: - ldr r0, [r5] - add r1, r4, #0 - add r2, sp, #0x14 - bl MOD05_021DB9D4 - add r0, sp, #0x14 - ldrh r0, [r0] - add r1, sp, #0x3c - cmp r0, #0 - bne _021E7E74 - add r0, r5, #0 - add r3, r5, #0 - add r0, #0x10 - add r2, sp, #0x18 - add r3, #0x80 - bl FUN_0201B26C - b _021E7E86 -_021E7E74: - str r4, [sp] - ldr r0, [r5] - add r3, r5, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x64] - add r2, sp, #0x18 - add r3, #0x80 - bl MOD05_021E7F34 -_021E7E86: - add r7, r7, #1 - add r5, #0x8c - cmp r7, #0x20 - blt _021E7DFA - add sp, #0x48 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7E94: .word UNK05_021F7878 -_021E7E98: .word 0x00000F33 - - thumb_func_start MOD05_021E7E9C -MOD05_021E7E9C: ; 0x021E7E9C - add r0, #0x74 - bx lr - - thumb_func_start MOD05_021E7EA0 -MOD05_021E7EA0: ; 0x021E7EA0 - add r2, r1, #0 - add r2, #0x68 - add r3, r0, #0 - ldmia r2!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r2] - str r0, [r3] - bx lr - - thumb_func_start MOD05_021E7EB0 -MOD05_021E7EB0: ; 0x021E7EB0 - add r3, r1, #0 - add r2, r0, #0 - ldmia r3!, {r0, r1} - add r2, #0x68 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - bx lr - - thumb_func_start MOD05_021E7EC0 -MOD05_021E7EC0: ; 0x021E7EC0 - str r1, [r0, #8] - bx lr - - thumb_func_start MOD05_021E7EC4 -MOD05_021E7EC4: ; 0x021E7EC4 - ldr r0, [r0] - bx lr - - thumb_func_start MOD05_021E7EC8 -MOD05_021E7EC8: ; 0x021E7EC8 - add r0, #0x10 - bx lr - - thumb_func_start MOD05_021E7ECC -MOD05_021E7ECC: ; 0x021E7ECC - ldr r0, [r0, #0x64] - bx lr - - thumb_func_start MOD05_021E7ED0 -MOD05_021E7ED0: ; 0x021E7ED0 - mov r2, #0x8c - mul r2, r1 - add r0, r0, r2 - bx lr - - thumb_func_start MOD05_021E7ED8 -MOD05_021E7ED8: ; 0x021E7ED8 - mov r3, #0 -_021E7EDA: - ldr r2, [r0] - cmp r2, r1 - beq _021E7EEA - add r3, r3, #1 - add r0, #0x8c - cmp r3, #0x20 - blt _021E7EDA - mov r0, #0 -_021E7EEA: - bx lr - - thumb_func_start MOD05_021E7EEC -MOD05_021E7EEC: ; 0x021E7EEC - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - cmp r4, #0x20 - blt _021E7EFA - bl ErrorHandling -_021E7EFA: - mov r0, #0x8c - mul r0, r4 - add r4, r5, r0 - ldr r0, [r4, #4] - cmp r0, #0 - bne _021E7F0A - bl ErrorHandling -_021E7F0A: - add r0, r4, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7F10 -MOD05_021E7F10: ; 0x021E7F10 - push {r3, r4, r5, lr} - add r5, r2, #0 - add r4, r3, #0 - bl MOD05_021F4BD0 - ldr r0, [r0] - bl FUN_020BC13C - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r1, r0, r1 - add r0, r5, #0 - str r1, [r4] - bl FUN_020B80B4 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E7F34 -MOD05_021E7F34: ; 0x021E7F34 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r0, r1, #0 - add r4, r2, #0 - add r5, r3, #0 - bl FUN_020B8474 - ldr r1, _021E7FB4 ; =UNK_021CEDD4 - add r0, r4, #0 - bl MI_Copy36B - ldr r1, _021E7FB8 ; =UNK_021CED98 - mov r0, #0xa4 - ldr r2, [r1, #0x7c] - bic r2, r0 - add r0, r5, #0 - str r2, [r1, #0x7c] - bl FUN_020B844C - bl FUN_020B849C - add r2, sp, #0 - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x18] - add r2, #2 - add r3, sp, #0 - bl MOD05_021DB9E0 - add r0, sp, #0 - ldrh r0, [r0] - ldr r1, [sp, #0x18] - bl MOD05_021DB9F8 - add r6, r0, #0 - add r0, sp, #0 - ldrh r0, [r0, #2] - mov r5, #0xff - mov r4, #0 - cmp r0, #0 - ble _021E7FB0 -_021E7F84: - lsl r0, r4, #2 - add r2, r6, r0 - ldrh r0, [r6, r0] - cmp r5, r0 - beq _021E7F96 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - mov r3, #1 - b _021E7F98 -_021E7F96: - mov r3, #0 -_021E7F98: - ldrh r2, [r2, #2] - add r0, r7, #0 - add r1, r5, #0 - bl FUN_020BAFB8 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, sp, #0 - ldrh r0, [r0, #2] - cmp r4, r0 - blt _021E7F84 -_021E7FB0: - pop {r3, r4, r5, r6, r7, pc} - nop -_021E7FB4: .word UNK_021CEDD4 -_021E7FB8: .word UNK_021CED98 - - thumb_func_start MOD05_021E7FBC -MOD05_021E7FBC: ; 0x021E7FBC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - ldr r5, _021E8058 ; =UNK05_021F786C - add r6, r0, #0 - add r7, r1, #0 - ldmia r5!, {r0, r1} - add r4, sp, #4 - stmia r4!, {r0, r1} - ldr r0, [r5] - str r0, [r4] - mov r4, #0 - mov r0, #0x8c -_021E7FD4: - add r1, r4, #0 - mul r1, r0 - add r5, r6, r1 - ldr r1, [r5, #4] - cmp r1, #0 - bne _021E8044 - mov r0, #1 - str r0, [r5, #4] - add r6, r5, #0 - ldmia r3!, {r0, r1} - add r6, #0x68 - stmia r6!, {r0, r1} - ldr r0, [r3] - str r0, [r6] - ldr r6, [sp, #0x28] - cmp r6, #0 - beq _021E8008 - mov r0, #1 - str r0, [r5, #0xc] - add r3, r5, #0 - ldmia r6!, {r0, r1} - add r3, #0x74 - stmia r3!, {r0, r1} - ldr r0, [r6] - str r0, [r3] - b _021E800C -_021E8008: - mov r0, #0 - str r0, [r5, #0xc] -_021E800C: - add r6, sp, #4 - add r3, r5, #0 - ldmia r6!, {r0, r1} - add r3, #0x80 - stmia r3!, {r0, r1} - ldr r0, [r6] - add r1, r7, #0 - str r0, [r3] - add r3, r5, #0 - str r2, [r5] - add r0, r2, #0 - add r2, r5, #0 - add r2, #0x10 - add r3, #0x64 - bl MOD05_021E7F10 - ldr r0, [sp, #0x2c] - mov r1, #0 - str r0, [sp] - ldr r0, [r5] - add r5, #0x10 - add r2, r1, #0 - add r3, r5, #0 - bl MOD05_021D9DC0 - add sp, #0x10 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} -_021E8044: - add r1, r4, #1 - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - cmp r4, #0x20 - blo _021E7FD4 - bl ErrorHandling - mov r0, #0x20 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E8058: .word UNK05_021F786C - - thumb_func_start MOD05_021E805C -MOD05_021E805C: ; 0x021E805C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x38 - ldr r4, _021E80F4 ; =UNK05_021F789C - str r0, [sp, #8] - str r1, [sp, #0xc] - add r3, sp, #0x14 - mov r2, #4 -_021E806A: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021E806A - ldr r0, [r4] - mov r4, #0 - str r0, [r3] - add r7, sp, #0x14 -_021E807A: - mov r0, #0x8c - add r1, r4, #0 - mul r1, r0 - ldr r0, [sp, #8] - add r5, r0, r1 - ldr r0, [r5, #4] - cmp r0, #0 - beq _021E80E4 - ldr r0, [r5, #8] - cmp r0, #0 - bne _021E80E4 - ldr r0, [sp, #0xc] - bl MOD05_021F4C9C - add r6, r0, #0 - ldr r0, [r5] - add r1, r6, #0 - add r2, sp, #0x10 - bl MOD05_021DB9D4 - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021E80B2 - add r1, r5, #0 - add r0, r7, #0 - add r1, #0x74 - bl FUN_0201CAA8 -_021E80B2: - add r0, sp, #0x10 - ldrh r0, [r0] - cmp r0, #0 - bne _021E80CE - add r0, r5, #0 - add r1, r5, #0 - add r5, #0x80 - add r0, #0x10 - add r1, #0x68 - add r2, r7, #0 - add r3, r5, #0 - bl FUN_0201B26C - b _021E80E4 -_021E80CE: - str r6, [sp] - ldr r0, [r5] - add r1, r5, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x64] - add r5, #0x80 - add r1, #0x68 - add r2, r7, #0 - add r3, r5, #0 - bl MOD05_021E7F34 -_021E80E4: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x20 - blo _021E807A - add sp, #0x38 - pop {r3, r4, r5, r6, r7, pc} - nop -_021E80F4: .word UNK05_021F789C - thumb_func_start MOD05_021E80F8 MOD05_021E80F8: ; 0x021E80F8 push {r3, lr} @@ -30518,37 +29232,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F7824 -UNK05_021F7824: ; 0x021F7824 - .word 0x00000001, 0x0000000C, 0x00000044, MOD05_021E79A8 - .word MOD05_021E7A6C, MOD05_021E7A08, MOD05_021E7A88 - - .global UNK05_021F7840 -UNK05_021F7840: ; 0x021F7840 - .word 0x00000044, MOD05_021E7B08, MOD05_021E7A6C, MOD05_021E7B78 - .word MOD05_021E7A88 - - .global UNK05_021F7854 -UNK05_021F7854: ; 0x021F7854 - .word 0x00000000, 0x00000001, 0x00000000, 0x00000000 - .word 0x00000000, 0x00000002 - - .global UNK05_021F786C -UNK05_021F786C: ; 0x021F786C - .word 0x00001000, 0x00001000, 0x00001000 - - .global UNK05_021F7878 -UNK05_021F7878: ; 0x021F7878 - .byte 0x00, 0x10, 0x00, 0x00 ;word - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - - .global UNK05_021F789C -UNK05_021F789C: ; 0x021F789C - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ;word - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global UNK05_021F78C4 UNK05_021F78C4: ; 0x021F78C4 .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -- cgit v1.2.3 From 66c84ded7ac7a706934ba9e0fdbe986c450858af Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 27 Dec 2020 22:20:15 +0000 Subject: some more mod 5 --- arm9/arm9.lsf | 2 + arm9/modules/05/asm/mod05_021E80F8.s | 303 +++++++++++++++ arm9/modules/05/asm/mod05_021E8310.s | 409 ++++++++++++++++++++ arm9/modules/05/asm/module_05.s | 702 ----------------------------------- 4 files changed, 714 insertions(+), 702 deletions(-) create mode 100644 arm9/modules/05/asm/mod05_021E80F8.s create mode 100644 arm9/modules/05/asm/mod05_021E8310.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 84d10f58..5468430a 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -558,6 +558,8 @@ Overlay MODULE_05 Object mod05_021E7504.o Object mod05_021E779C.o Object mod05_021E7C00.o + Object mod05_021E80F8.o + Object mod05_021E8310.o Object module_05.o } diff --git a/arm9/modules/05/asm/mod05_021E80F8.s b/arm9/modules/05/asm/mod05_021E80F8.s new file mode 100644 index 00000000..82fd7a02 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E80F8.s @@ -0,0 +1,303 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E80F8 +MOD05_021E80F8: ; 0x021E80F8 + push {r3, lr} + mov r1, #0x14 + bl AllocFromHeap + add r3, r0, #0 + mov r2, #0x14 + mov r1, #0 +_021E8106: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021E8106 + pop {r3, pc} + + thumb_func_start MOD05_021E8110 +MOD05_021E8110: ; 0x021E8110 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E8120 + bl FUN_02019178 +_021E8120: + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021E8128 +MOD05_021E8128: ; 0x021E8128 + strb r1, [r0, #0x12] + strh r2, [r0, #0x10] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8130 +MOD05_021E8130: ; 0x021E8130 + ldrb r3, [r0, #0x13] + mov r2, #0x7f + bic r3, r2 + mov r2, #0x7f + and r1, r2 + orr r1, r3 + strb r1, [r0, #0x13] + bx lr + + thumb_func_start MOD05_021E8140 +MOD05_021E8140: ; 0x021E8140 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8144 +MOD05_021E8144: ; 0x021E8144 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD05_021E8148 +MOD05_021E8148: ; 0x021E8148 + ldrb r0, [r0, #0x13] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + bne _021E8154 + mov r0, #1 + bx lr +_021E8154: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021E8158 +MOD05_021E8158: ; 0x021E8158 + push {r4, lr} + ldr r4, [r0, #0x60] + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + cmp r1, #4 + bhi _021E81BA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8172: ; jump table + .short _021E81BA - _021E8172 - 2 ; case 0 + .short _021E817C - _021E8172 - 2 ; case 1 + .short _021E818A - _021E8172 - 2 ; case 2 + .short _021E819C - _021E8172 - 2 ; case 3 + .short _021E81AE - _021E8172 - 2 ; case 4 +_021E817C: + bl MOD05_021E81D0 + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E818A: + bl MOD05_021E82A0 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E819C: + bl MOD05_021E8260 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E81AE: + bl MOD05_021E820C + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] +_021E81BA: + pop {r4, pc} + + thumb_func_start MOD05_021E81BC +MOD05_021E81BC: ; 0x021E81BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x60] + bl MOD05_021E8130 + add r0, r4, #0 + bl MOD05_021E8158 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E81D0 +MOD05_021E81D0: ; 0x021E81D0 + push {r4, lr} + mov r1, #3 + add r4, r0, #0 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 + ldr r1, [r4, #0x60] + ldrb r0, [r1, #0x13] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _021E8200 + ldrb r2, [r1, #0x12] + ldr r0, [r4, #8] + mov r3, #3 + bl FUN_020546E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + orr r0, r1 + strb r0, [r2, #0x13] +_021E8200: + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x12] + ldrh r2, [r0, #0x10] + bl FUN_02054744 + pop {r4, pc} + + thumb_func_start MOD05_021E820C +MOD05_021E820C: ; 0x021E820C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E825A + bl FUN_02019178 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + bic r1, r0 + strb r1, [r2, #0x13] +_021E825A: + add sp, #0x10 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8260 +MOD05_021E8260: ; 0x021E8260 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + cmp r0, #0 + bne _021E8274 + mov r0, #1 + pop {r4, pc} +_021E8274: + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + ble _021E8280 + cmp r0, #0 + blt _021E828E +_021E8280: + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 +_021E828E: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #4 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E82A0 +MOD05_021E82A0: ; 0x021E82A0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + bne _021E82EC + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x10 + mov r0, #1 + pop {r4, pc} +_021E82EC: + ble _021E82F2 + cmp r0, #0 + blt _021E82FE +_021E82F2: + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 +_021E82FE: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #5 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + add sp, #0x10 + pop {r4, pc} diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s new file mode 100644 index 00000000..e3a28a97 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -0,0 +1,409 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E8310 +MOD05_021E8310: ; 0x021E8310 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1, #0xc] + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02034E30 + bl FUN_02034DC0 + add r6, r0, #0 + add r0, r4, #0 + bl Sav2_Pokedex_get + add r7, r0, #0 + ldr r0, [r6] + bl FUN_02034824 + str r0, [r5, #4] + add r0, r7, #0 + bl Pokedex_GetSinnohDexFlag + cmp r0, #0 + beq _021E8344 + add r0, r7, #0 + bl Pokedex_CountSeenMons + b _021E8346 +_021E8344: + mov r0, #0 +_021E8346: + str r0, [r5] + add r0, r4, #0 + bl Sav2_PlayerData_GetProfileAddr + str r0, [r5, #8] + add r0, r4, #0 + bl Sav2_PlayerData_GetIGTAddr + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E835C +MOD05_021E835C: ; 0x021E835C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r2, [r4, #4] + mov r1, #0 + add r5, r0, #0 + bl BufferLandmarkName + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl BufferPlayersName + ldr r0, [r4, #8] + bl PlayerProfile_CountBadges + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r5, #0 + mov r1, #2 + bl BufferIntegerAsString + ldr r2, [r4] + cmp r2, #0x64 + blt _021E839A + mov r3, #3 + mov r0, #0 + b _021E83A8 +_021E839A: + cmp r2, #0xa + blt _021E83A4 + mov r3, #3 + mov r0, #1 + b _021E83A8 +_021E83A4: + mov r3, #2 + mov r0, #1 +_021E83A8: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #3 + bl BufferIntegerAsString + ldr r0, [r4, #0xc] + bl GetIGTHours + add r2, r0, #0 + cmp r2, #0x64 + blt _021E83C8 + mov r3, #3 + mov r0, #0 + b _021E83D6 +_021E83C8: + cmp r2, #0xa + blt _021E83D2 + mov r3, #3 + mov r0, #1 + b _021E83D6 +_021E83D2: + mov r3, #2 + mov r0, #1 +_021E83D6: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #4 + bl BufferIntegerAsString + ldr r0, [r4, #0xc] + bl GetIGTMinutes + mov r3, #2 + add r2, r0, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #5 + bl BufferIntegerAsString + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E8400 +MOD05_021E8400: ; 0x021E8400 + ldr r0, [r0] + cmp r0, #0 + beq _021E840A + mov r0, #0xa + bx lr +_021E840A: + mov r0, #8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8410 +MOD05_021E8410: ; 0x021E8410 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + mov r1, #1 + bl FUN_02002E4C + add r4, r0, #0 + mov r0, #0 + mov r1, #3 + bl FUN_02002E4C + add r0, r4, r0 + str r0, [sp, #0x14] + mov r4, #0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r3, [r5, #4] + add r2, r4, #0 + bl ReadMsgData_ExpandPlaceholders + add r1, r4, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _021E84EC ; =UNK05_021F78D4 + ldr r7, _021E84F0 ; =UNK05_021F78C4 + str r0, [sp, #0xc] +_021E8460: + ldr r0, [sp, #0xc] + ldr r1, [r0] + cmp r1, #3 + bne _021E846E + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E84D6 +_021E846E: + ldr r0, [sp, #0x14] + add r4, r4, r0 + ldr r0, [r5, #0x18] + bl NewString_ReadMsgData + add r6, r0, #0 + mov r1, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor + sub r2, r7, #4 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [r2] + ldr r3, [r5, #4] + bl ReadMsgData_ExpandPlaceholders + add r6, r0, #0 + mov r0, #0 + mov r1, #2 + bl FUN_02002E4C + add r2, r0, #0 + mov r0, #0 + add r1, r6, #0 + bl FUN_02002E14 + mov r1, #0x68 + sub r3, r1, r0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + mov r1, #0 + add r2, r6, #0 + bl AddTextPrinterParameterized + add r0, r6, #0 + bl String_dtor +_021E84D6: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blo _021E8460 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E84EC: .word UNK05_021F78D4 +_021E84F0: .word UNK05_021F78C4 + + thumb_func_start MOD05_021E84F4 +MOD05_021E84F4: ; 0x021E84F4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #0x10 + bl AllocFromHeap + str r0, [r4, #0x10] + mov r3, #1 + str r3, [sp] + ldr r0, [r4, #0x2c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021E8564 ; =0x0000027F + str r0, [sp, #0x10] + ldrb r2, [r4, #8] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, _021E8568 ; =0x000003D9 + str r0, [sp, #4] + ldrb r1, [r4, #8] + ldr r0, [r4, #0xc] + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02019620 + add r0, r4, #0 + bl MOD05_021E8410 + ldr r0, [r4, #0x10] + ldr r2, _021E8568 ; =0x000003D9 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E8564: .word 0x0000027F +_021E8568: .word 0x000003D9 + + thumb_func_start MOD05_021E856C +MOD05_021E856C: ; 0x021E856C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200CCF8 + ldr r0, [r4, #0x10] + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FreeToHeap + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8588 +MOD05_021E8588: ; 0x021E8588 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x34 + add r7, r2, #0 + bl AllocFromHeap + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #4] + strb r7, [r4, #8] + ldr r0, [r6, #8] + str r0, [r4, #0xc] + add r0, r5, #0 + bl ScrStrBufs_new + str r0, [r4, #0x14] + ldr r2, _021E85E0 ; =0x000001E3 + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl NewMsgDataFromNarc + str r0, [r4, #0x18] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x1c + bl MOD05_021E8310 + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + bl MOD05_021E835C + mov r0, #0xd + str r0, [r4, #0x2c] + add r0, r4, #0 + add r0, #0x1c + bl MOD05_021E8400 + str r0, [r4, #0x30] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E85E0: .word 0x000001E3 + + thumb_func_start MOD05_021E85E4 +MOD05_021E85E4: ; 0x021E85E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl DestroyMsgData + ldr r0, [r4, #0x14] + bl ScrStrBufs_delete + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021E85FC +MOD05_021E85FC: ; 0x021E85FC + push {r4, lr} + add r4, r0, #0 + bl FUN_02034E48 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD05_021EFA9C + ldr r0, [r4, #0x38] + bl FUN_02055320 + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r0, [r4, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x1c] + str r0, [r1, #0xc] + mov r1, #0 + ldr r0, [r4, #0x1c] + mvn r1, r1 + str r1, [r0, #4] + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldr r1, [r4, #0x1c] + str r0, [r1, #0x10] + ldr r0, [r4, #0xc] + bl FUN_02022720 + cmp r0, #2 + bne _021E8642 + mov r0, #1 + pop {r4, pc} +_021E8642: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F78C4 +UNK05_021F78C4: ; 0x021F78C4 + .word 0x00000006, 0x00000007, 0x00000008, 0x00000000 + + .global UNK05_021F78D4 +UNK05_021F78D4: ; 0x021F78D4 + .word 0x00000001, 0x00000002, 0x00000003, 0x00000004 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 96673023..597bd083 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,700 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021E80F8 -MOD05_021E80F8: ; 0x021E80F8 - push {r3, lr} - mov r1, #0x14 - bl AllocFromHeap - add r3, r0, #0 - mov r2, #0x14 - mov r1, #0 -_021E8106: - strb r1, [r3] - add r3, r3, #1 - sub r2, r2, #1 - bne _021E8106 - pop {r3, pc} - - thumb_func_start MOD05_021E8110 -MOD05_021E8110: ; 0x021E8110 - push {r4, lr} - add r4, r0, #0 - ldrb r1, [r4, #0x13] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E8120 - bl FUN_02019178 -_021E8120: - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021E8128 -MOD05_021E8128: ; 0x021E8128 - strb r1, [r0, #0x12] - strh r2, [r0, #0x10] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8130 -MOD05_021E8130: ; 0x021E8130 - ldrb r3, [r0, #0x13] - mov r2, #0x7f - bic r3, r2 - mov r2, #0x7f - and r1, r2 - orr r1, r3 - strb r1, [r0, #0x13] - bx lr - - thumb_func_start MOD05_021E8140 -MOD05_021E8140: ; 0x021E8140 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8144 -MOD05_021E8144: ; 0x021E8144 - ldrb r0, [r0, #0x12] - bx lr - - thumb_func_start MOD05_021E8148 -MOD05_021E8148: ; 0x021E8148 - ldrb r0, [r0, #0x13] - lsl r0, r0, #0x19 - lsr r0, r0, #0x19 - bne _021E8154 - mov r0, #1 - bx lr -_021E8154: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021E8158 -MOD05_021E8158: ; 0x021E8158 - push {r4, lr} - ldr r4, [r0, #0x60] - ldrb r1, [r4, #0x13] - lsl r1, r1, #0x19 - lsr r1, r1, #0x19 - cmp r1, #4 - bhi _021E81BA - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021E8172: ; jump table - .short _021E81BA - _021E8172 - 2 ; case 0 - .short _021E817C - _021E8172 - 2 ; case 1 - .short _021E818A - _021E8172 - 2 ; case 2 - .short _021E819C - _021E8172 - 2 ; case 3 - .short _021E81AE - _021E8172 - 2 ; case 4 -_021E817C: - bl MOD05_021E81D0 - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E818A: - bl MOD05_021E82A0 - cmp r0, #1 - bne _021E81BA - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E819C: - bl MOD05_021E8260 - cmp r0, #1 - bne _021E81BA - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] - pop {r4, pc} -_021E81AE: - bl MOD05_021E820C - ldrb r1, [r4, #0x13] - mov r0, #0x7f - bic r1, r0 - strb r1, [r4, #0x13] -_021E81BA: - pop {r4, pc} - - thumb_func_start MOD05_021E81BC -MOD05_021E81BC: ; 0x021E81BC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x60] - bl MOD05_021E8130 - add r0, r4, #0 - bl MOD05_021E8158 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E81D0 -MOD05_021E81D0: ; 0x021E81D0 - push {r4, lr} - mov r1, #3 - add r4, r0, #0 - add r3, r1, #0 - ldr r0, [r4, #8] - add r2, r1, #0 - sub r3, #0x33 - bl FUN_020179E0 - ldr r1, [r4, #0x60] - ldrb r0, [r1, #0x13] - lsl r0, r0, #0x18 - lsr r0, r0, #0x1f - bne _021E8200 - ldrb r2, [r1, #0x12] - ldr r0, [r4, #8] - mov r3, #3 - bl FUN_020546E0 - ldr r2, [r4, #0x60] - mov r0, #0x80 - ldrb r1, [r2, #0x13] - orr r0, r1 - strb r0, [r2, #0x13] -_021E8200: - ldr r0, [r4, #0x60] - ldrb r1, [r0, #0x12] - ldrh r2, [r0, #0x10] - bl FUN_02054744 - pop {r4, pc} - - thumb_func_start MOD05_021E820C -MOD05_021E820C: ; 0x021E820C - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #0x60] - ldrb r1, [r0, #0x13] - lsl r1, r1, #0x18 - lsr r1, r1, #0x1f - beq _021E825A - bl FUN_02019178 - mov r0, #0x12 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #0x10 - str r0, [sp, #0xc] - mov r2, #0 - ldr r0, [r4, #8] - mov r1, #3 - add r3, r2, #0 - bl FUN_02018540 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017CD0 - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 - ldr r2, [r4, #0x60] - mov r0, #0x80 - ldrb r1, [r2, #0x13] - bic r1, r0 - strb r1, [r2, #0x13] -_021E825A: - add sp, #0x10 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8260 -MOD05_021E8260: ; 0x021E8260 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017B54 - cmp r0, #0 - bne _021E8274 - mov r0, #1 - pop {r4, pc} -_021E8274: - mov r1, #0x2f - mvn r1, r1 - cmp r0, r1 - ble _021E8280 - cmp r0, #0 - blt _021E828E -_021E8280: - mov r1, #3 - add r3, r1, #0 - ldr r0, [r4, #8] - add r2, r1, #0 - sub r3, #0x33 - bl FUN_020179E0 -_021E828E: - ldr r0, [r4, #8] - mov r1, #3 - mov r2, #4 - mov r3, #0x10 - bl FUN_020179E0 - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E82A0 -MOD05_021E82A0: ; 0x021E82A0 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017B54 - mov r1, #0x2f - mvn r1, r1 - cmp r0, r1 - bne _021E82EC - mov r0, #0x12 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #0x10 - str r0, [sp, #0xc] - mov r2, #0 - ldr r0, [r4, #8] - mov r1, #3 - add r3, r2, #0 - bl FUN_02018540 - ldr r0, [r4, #8] - mov r1, #3 - bl FUN_02017CD0 - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 - add sp, #0x10 - mov r0, #1 - pop {r4, pc} -_021E82EC: - ble _021E82F2 - cmp r0, #0 - blt _021E82FE -_021E82F2: - mov r1, #3 - ldr r0, [r4, #8] - add r2, r1, #0 - mov r3, #0 - bl FUN_020179E0 -_021E82FE: - ldr r0, [r4, #8] - mov r1, #3 - mov r2, #5 - mov r3, #0x10 - bl FUN_020179E0 - mov r0, #0 - add sp, #0x10 - pop {r4, pc} - - thumb_func_start MOD05_021E8310 -MOD05_021E8310: ; 0x021E8310 - push {r3, r4, r5, r6, r7, lr} - ldr r4, [r1, #0xc] - add r5, r0, #0 - add r0, r4, #0 - bl FUN_02034E30 - bl FUN_02034DC0 - add r6, r0, #0 - add r0, r4, #0 - bl Sav2_Pokedex_get - add r7, r0, #0 - ldr r0, [r6] - bl FUN_02034824 - str r0, [r5, #4] - add r0, r7, #0 - bl Pokedex_GetSinnohDexFlag - cmp r0, #0 - beq _021E8344 - add r0, r7, #0 - bl Pokedex_CountSeenMons - b _021E8346 -_021E8344: - mov r0, #0 -_021E8346: - str r0, [r5] - add r0, r4, #0 - bl Sav2_PlayerData_GetProfileAddr - str r0, [r5, #8] - add r0, r4, #0 - bl Sav2_PlayerData_GetIGTAddr - str r0, [r5, #0xc] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E835C -MOD05_021E835C: ; 0x021E835C - push {r3, r4, r5, lr} - sub sp, #8 - add r4, r1, #0 - ldr r2, [r4, #4] - mov r1, #0 - add r5, r0, #0 - bl BufferLandmarkName - ldr r2, [r4, #8] - add r0, r5, #0 - mov r1, #1 - bl BufferPlayersName - ldr r0, [r4, #8] - bl PlayerProfile_CountBadges - add r2, r0, #0 - mov r0, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - add r0, r5, #0 - mov r1, #2 - bl BufferIntegerAsString - ldr r2, [r4] - cmp r2, #0x64 - blt _021E839A - mov r3, #3 - mov r0, #0 - b _021E83A8 -_021E839A: - cmp r2, #0xa - blt _021E83A4 - mov r3, #3 - mov r0, #1 - b _021E83A8 -_021E83A4: - mov r3, #2 - mov r0, #1 -_021E83A8: - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #3 - bl BufferIntegerAsString - ldr r0, [r4, #0xc] - bl GetIGTHours - add r2, r0, #0 - cmp r2, #0x64 - blt _021E83C8 - mov r3, #3 - mov r0, #0 - b _021E83D6 -_021E83C8: - cmp r2, #0xa - blt _021E83D2 - mov r3, #3 - mov r0, #1 - b _021E83D6 -_021E83D2: - mov r3, #2 - mov r0, #1 -_021E83D6: - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #4 - bl BufferIntegerAsString - ldr r0, [r4, #0xc] - bl GetIGTMinutes - mov r3, #2 - add r2, r0, #0 - str r3, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r5, #0 - mov r1, #5 - bl BufferIntegerAsString - add sp, #8 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021E8400 -MOD05_021E8400: ; 0x021E8400 - ldr r0, [r0] - cmp r0, #0 - beq _021E840A - mov r0, #0xa - bx lr -_021E840A: - mov r0, #8 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021E8410 -MOD05_021E8410: ; 0x021E8410 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - mov r0, #0 - mov r1, #1 - bl FUN_02002E4C - add r4, r0, #0 - mov r0, #0 - mov r1, #3 - bl FUN_02002E4C - add r0, r4, r0 - str r0, [sp, #0x14] - mov r4, #0 - ldr r0, [r5, #0x14] - ldr r1, [r5, #0x18] - ldr r3, [r5, #4] - add r2, r4, #0 - bl ReadMsgData_ExpandPlaceholders - add r1, r4, #0 - add r6, r0, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - str r1, [sp, #8] - ldr r0, [r5, #0x10] - add r2, r6, #0 - add r3, r1, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor - mov r0, #1 - str r0, [sp, #0x10] - ldr r0, _021E84EC ; =UNK05_021F78D4 - ldr r7, _021E84F0 ; =UNK05_021F78C4 - str r0, [sp, #0xc] -_021E8460: - ldr r0, [sp, #0xc] - ldr r1, [r0] - cmp r1, #3 - bne _021E846E - ldr r0, [r5, #0x1c] - cmp r0, #0 - beq _021E84D6 -_021E846E: - ldr r0, [sp, #0x14] - add r4, r4, r0 - ldr r0, [r5, #0x18] - bl NewString_ReadMsgData - add r6, r0, #0 - mov r1, #0 - str r4, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r5, #0x10] - add r2, r6, #0 - add r3, r1, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor - sub r2, r7, #4 - ldr r0, [r5, #0x14] - ldr r1, [r5, #0x18] - ldr r2, [r2] - ldr r3, [r5, #4] - bl ReadMsgData_ExpandPlaceholders - add r6, r0, #0 - mov r0, #0 - mov r1, #2 - bl FUN_02002E4C - add r2, r0, #0 - mov r0, #0 - add r1, r6, #0 - bl FUN_02002E14 - mov r1, #0x68 - sub r3, r1, r0 - str r4, [sp] - mov r0, #0xff - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r5, #0x10] - mov r1, #0 - add r2, r6, #0 - bl AddTextPrinterParameterized - add r0, r6, #0 - bl String_dtor -_021E84D6: - ldr r0, [sp, #0xc] - add r7, r7, #4 - add r0, r0, #4 - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - add r0, r0, #1 - str r0, [sp, #0x10] - cmp r0, #5 - blo _021E8460 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E84EC: .word UNK05_021F78D4 -_021E84F0: .word UNK05_021F78C4 - - thumb_func_start MOD05_021E84F4 -MOD05_021E84F4: ; 0x021E84F4 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - ldr r0, [r4, #4] - mov r1, #0x10 - bl AllocFromHeap - str r0, [r4, #0x10] - mov r3, #1 - str r3, [sp] - ldr r0, [r4, #0x2c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - ldr r0, [r4, #0x30] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #8] - mov r0, #0xd - str r0, [sp, #0xc] - ldr r0, _021E8564 ; =0x0000027F - str r0, [sp, #0x10] - ldrb r2, [r4, #8] - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - bl FUN_02019064 - mov r0, #0 - str r0, [sp] - ldr r0, [r4, #4] - ldr r2, _021E8568 ; =0x000003D9 - str r0, [sp, #4] - ldrb r1, [r4, #8] - ldr r0, [r4, #0xc] - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0 - mov r1, #6 - bl FUN_02002E4C - add r1, r0, #0 - ldr r0, [r4, #0x10] - bl FUN_02019620 - add r0, r4, #0 - bl MOD05_021E8410 - ldr r0, [r4, #0x10] - ldr r2, _021E8568 ; =0x000003D9 - mov r1, #0 - mov r3, #0xb - bl FUN_0200CCA4 - add sp, #0x14 - pop {r3, r4, pc} - .balign 4, 0 -_021E8564: .word 0x0000027F -_021E8568: .word 0x000003D9 - - thumb_func_start MOD05_021E856C -MOD05_021E856C: ; 0x021E856C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - mov r1, #0 - bl FUN_0200CCF8 - ldr r0, [r4, #0x10] - bl FUN_02019178 - ldr r0, [r4, #0x10] - bl FreeToHeap - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021E8588 -MOD05_021E8588: ; 0x021E8588 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #0x34 - add r7, r2, #0 - bl AllocFromHeap - add r4, r0, #0 - str r6, [r4] - str r5, [r4, #4] - strb r7, [r4, #8] - ldr r0, [r6, #8] - str r0, [r4, #0xc] - add r0, r5, #0 - bl ScrStrBufs_new - str r0, [r4, #0x14] - ldr r2, _021E85E0 ; =0x000001E3 - mov r0, #1 - mov r1, #0x1a - add r3, r5, #0 - bl NewMsgDataFromNarc - str r0, [r4, #0x18] - add r0, r4, #0 - ldr r1, [r4] - add r0, #0x1c - bl MOD05_021E8310 - add r1, r4, #0 - ldr r0, [r4, #0x14] - add r1, #0x1c - bl MOD05_021E835C - mov r0, #0xd - str r0, [r4, #0x2c] - add r0, r4, #0 - add r0, #0x1c - bl MOD05_021E8400 - str r0, [r4, #0x30] - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021E85E0: .word 0x000001E3 - - thumb_func_start MOD05_021E85E4 -MOD05_021E85E4: ; 0x021E85E4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - bl DestroyMsgData - ldr r0, [r4, #0x14] - bl ScrStrBufs_delete - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021E85FC -MOD05_021E85FC: ; 0x021E85FC - push {r4, lr} - add r4, r0, #0 - bl FUN_02034E48 - add r0, r4, #0 - mov r1, #4 - mov r2, #0 - bl MOD05_021EFA9C - ldr r0, [r4, #0x38] - bl FUN_02055320 - ldr r1, [r4, #0x1c] - str r0, [r1, #8] - ldr r0, [r4, #0x38] - bl FUN_0205532C - ldr r1, [r4, #0x1c] - str r0, [r1, #0xc] - mov r1, #0 - ldr r0, [r4, #0x1c] - mvn r1, r1 - str r1, [r0, #4] - ldr r0, [r4, #0x38] - bl FUN_020552F8 - ldr r1, [r4, #0x1c] - str r0, [r1, #0x10] - ldr r0, [r4, #0xc] - bl FUN_02022720 - cmp r0, #2 - bne _021E8642 - mov r0, #1 - pop {r4, pc} -_021E8642: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_start MOD05_021E8648 MOD05_021E8648: ; 0x021E8648 push {r4, r5, r6, lr} @@ -29232,14 +28538,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F78C4 -UNK05_021F78C4: ; 0x021F78C4 - .byte 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK05_021F78D4 -UNK05_021F78D4: ; 0x021F78D4 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .global UNK05_021F78E4 UNK05_021F78E4: ; 0x021F78E4 .byte 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -- cgit v1.2.3 From 18004751857f49080460f6ec4dfea3c3ea6608b0 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 8 Jan 2021 14:52:37 +0000 Subject: decompile CTRDG_common --- arm9/arm9.lsf | 2 +- arm9/asm/CTRDG.s | 670 --------------------------------- arm9/asm/CTRDG_proc.s | 14 +- arm9/lib/include/CTRDG_common.h | 137 ++++++- arm9/lib/include/MI_dma.h | 3 + arm9/lib/include/MI_exMemory.h | 40 +- arm9/lib/include/MI_memory.h | 5 + arm9/lib/include/OS_protectionRegion.h | 4 + arm9/lib/include/OS_spinLock.h | 6 +- arm9/lib/include/consts.h | 7 + arm9/lib/include/mmap.h | 3 + arm9/lib/include/syscall.h | 13 + arm9/lib/src/CTRDG_common.c | 349 +++++++++++++++++ 13 files changed, 567 insertions(+), 686 deletions(-) delete mode 100644 arm9/asm/CTRDG.s create mode 100644 arm9/lib/src/CTRDG_common.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 5468430a..33661a6b 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -452,7 +452,7 @@ Static arm9 Object WM_ds.o Object WM_ks.o Object WM_etc.o - Object CTRDG.o + Object CTRDG_common.o Object CTRDG_proc.o Object CTRDG_backup.o Object CTRDG_flash_common.o diff --git a/arm9/asm/CTRDG.s b/arm9/asm/CTRDG.s deleted file mode 100644 index dc60582b..00000000 --- a/arm9/asm/CTRDG.s +++ /dev/null @@ -1,670 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global UNK_021D6940 -UNK_021D6940: ; 0x021D6940 - .space 0x4 - - .global UNK_021D6944 -UNK_021D6944: ; 0x021D6944 - .space 0x4 - - .text - - arm_func_start CTRDG_CheckEnabled -CTRDG_CheckEnabled: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl CTRDG_IsOptionCartridge - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - bl CTRDG_IsEnabled - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {lr} - bxne lr - bl OS_Terminate - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDG_Enable -CTRDG_Enable: ; 0x020DB15C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, _020DB1AC ; =UNK_021D6940 - mov r4, r0 - str r5, [r1, #0x0] - bl CTRDG_IsOptionCartridge - cmp r0, #0x0 - bne _020DB198 - cmp r5, #0x0 - movne r1, #0x1000 - moveq r1, #0x5000 - mov r0, #0xf000 - bl OS_SetDPermissionsForProtectionRegion -_020DB198: - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020DB1AC: .word UNK_021D6940 - - arm_func_start CTRDG_IsEnabled -CTRDG_IsEnabled: - ldr r0, _020DB1BC ; =UNK_021D6940 - ldr r0, [r0, #0x0] - bx lr - .balign 4 -_020DB1BC: .word UNK_021D6940 - - arm_func_start CTRDGi_AccessCommon -CTRDGi_AccessCommon: ; 0x020DB1C0 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl CTRDG_IsExisting - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - bl CTRDG_CheckEnabled - ldr r0, _020DB2BC ; =UNK_021D6944 - ldrh r0, [r0, #0x2] - bl OS_LockCartridge - cmp r4, #0x21 - bhi _020DB240 - cmp r4, #0x21 - bhs _020DB270 - cmp r4, #0x11 - bhi _020DB234 - cmp r4, #0x10 - blo _020DB294 - cmp r4, #0x10 - beq _020DB290 - cmp r4, #0x11 - beq _020DB260 - b _020DB294 -_020DB234: - cmp r4, #0x20 - streqh r6, [r7, #0x0] - b _020DB294 -_020DB240: - cmp r4, #0x40 - bhi _020DB254 - cmp r4, #0x40 - streq r6, [r7, #0x0] - b _020DB294 -_020DB254: - cmp r4, #0x41 - beq _020DB280 - b _020DB294 -_020DB260: - cmp r5, #0x0 - ldrneb r0, [r7, #0x0] - strneb r0, [r5, #0x0] - b _020DB294 -_020DB270: - cmp r5, #0x0 - ldrneh r0, [r7, #0x0] - strneh r0, [r5, #0x0] - b _020DB294 -_020DB280: - cmp r5, #0x0 - ldrne r0, [r7, #0x0] - strne r0, [r5, #0x0] - b _020DB294 -_020DB290: - strb r6, [r7, #0x0] -_020DB294: - ldr r0, _020DB2BC ; =UNK_021D6944 - ldrh r0, [r0, #0x2] - bl OS_UnLockCartridge - bl CTRDG_IsExisting - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020DB2BC: .word UNK_021D6944 - - arm_func_start CTRDG_Read32 -CTRDG_Read32: ; 0x020DB2C0 - ldr ip, _020DB2D4 ; =CTRDGi_AccessCommon - mov r2, r1 - mov r1, #0x0 - mov r3, #0x41 - bx r12 - .balign 4 -_020DB2D4: .word CTRDGi_AccessCommon - - arm_func_start CTRDGi_CopyCommon -CTRDGi_CopyCommon: ; 0x020DB2D8 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl CTRDG_IsExisting - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - bl CTRDG_CheckEnabled - ldr r0, _020DB42C ; =UNK_021D6944 - ldrh r0, [r0, #0x2] - bl OS_LockCartridge - ldr r0, [sp, #0x18] - ands r0, r0, #0x1 - bne _020DB338 - mov r0, r7 - bl MI_StopDma - mov r0, r5 - mov r1, r4 - bl DC_FlushRange -_020DB338: - ldr r0, [sp, #0x18] - cmp r0, #0x11 - bhi _020DB36C - cmp r0, #0x10 - blo _020DB360 - cmp r0, #0x10 - beq _020DB38C - cmp r0, #0x11 - beq _020DB3BC - b _020DB404 -_020DB360: - cmp r0, #0x1 - beq _020DB3E4 - b _020DB404 -_020DB36C: - cmp r0, #0x20 - bhi _020DB380 - cmp r0, #0x20 - beq _020DB3A4 - b _020DB404 -_020DB380: - cmp r0, #0x21 - beq _020DB3D0 - b _020DB404 -_020DB38C: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl MI_DmaCopy16 - b _020DB404 -_020DB3A4: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl MI_DmaCopy32 - b _020DB404 -_020DB3BC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MIi_CpuCopy16 - b _020DB404 -_020DB3D0: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MIi_CpuCopy32 - b _020DB404 -_020DB3E4: - cmp r4, #0x0 - mov r1, #0x0 - bls _020DB404 -_020DB3F0: - ldrb r0, [r6], #0x1 - add r1, r1, #0x1 - cmp r1, r4 - strb r0, [r5], #0x1 - blo _020DB3F0 -_020DB404: - ldr r0, _020DB42C ; =UNK_021D6944 - ldrh r0, [r0, #0x2] - bl OS_UnLockCartridge - bl CTRDG_IsExisting - cmp r0, #0x0 - movne r0, #0x1 - moveq r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020DB42C: .word UNK_021D6944 - - arm_func_start CTRDG_CpuCopy32 -CTRDG_CpuCopy32: ; 0x020DB430 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, r1 - mov r3, r2 - mov r12, #0x21 - mov r1, r0 - mov r2, lr - mov r0, #0x0 - str r12, [sp, #0x0] - bl CTRDGi_CopyCommon - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDG_CpuCopy16 -CTRDG_CpuCopy16: ; 0x020DB464 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, r1 - mov r3, r2 - mov r12, #0x11 - mov r1, r0 - mov r2, lr - mov r0, #0x0 - str r12, [sp, #0x0] - bl CTRDGi_CopyCommon - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDG_CpuCopy8 -CTRDG_CpuCopy8: ; 0x020DB498 - stmdb sp!, {lr} - sub sp, sp, #0x4 - mov lr, r1 - mov r3, r2 - cmp lr, #0x8000000 - blo _020DB4DC - ldr r2, _020DB500 ; =0x0A010000 - cmp lr, r2 - bhs _020DB4DC - mov r12, #0x1 - mov r2, r0 - mov r0, #0x0 - str r12, [sp, #0x0] - bl CTRDGi_CopyCommon - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr -_020DB4DC: - mov r12, #0x1 - mov r1, r0 - mov r2, lr - mov r0, #0x0 - str r12, [sp, #0x0] - bl CTRDGi_CopyCommon - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DB500: .word 0x0A010000 - - arm_func_start CTRDGi_SendtoPxi -CTRDGi_SendtoPxi: ; 0x020DB504 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r1, r7 - mov r0, #0xd - mov r2, #0x0 - bl PXI_SendWordByFifo - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - mov r6, #0x1 - mov r5, #0xd - mov r4, #0x0 -_020DB53C: - mov r0, r6 - bl SVC_WaitByLoop - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0x0 - bne _020DB53C - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - - arm_func_start CTRDGi_UnlockByProcessor -CTRDGi_UnlockByProcessor: ; 0x020DB568 - stmdb sp!, {r4,lr} - mov r4, r1 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - bne _020DB580 - bl OS_UnLockCartridge -_020DB580: - ldr r0, [r4, #0x4] - bl OS_RestoreInterrupts - ldmia sp!, {r4,lr} - bx lr - - arm_func_start CTRDGi_LockByProcessor -CTRDGi_LockByProcessor: ; 0x020DB590 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - mov r6, r1 - ldr r5, _020DB60C ; =0x027FFFE8 - mov r4, #0x1 -_020DB5A8: - bl OS_DisableInterrupts - str r0, [r6, #0x4] - mov r0, r5 - bl OS_ReadOwnerOfLockWord - and r0, r0, #0x40 - str r0, [r6, #0x0] - ldr r0, [r6, #0x0] - cmp r0, #0x0 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - mov r0, r7 - bl OS_TryLockCartridge - cmp r0, #0x0 - addeq sp, sp, #0x4 - ldmeqia sp!, {r4-r7,lr} - bxeq lr - ldr r0, [r6, #0x4] - bl OS_RestoreInterrupts - mov r0, r4 - bl SVC_WaitByLoop - b _020DB5A8 -_020DB600: ; 0x020DB600 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020DB60C: .word 0x027FFFE8 - - arm_func_start CTRDGi_RestoreAccessCycle -CTRDGi_RestoreAccessCycle: ; 0x020DB610 - ldr r3, _020DB640 ; =0x04000204 - ldr r2, [r0, #0x0] - ldrh r1, [r3, #0x0] - bic r1, r1, #0xc - orr r1, r1, r2, lsl #0x2 - strh r1, [r3, #0x0] - ldrh r1, [r3, #0x0] - ldr r2, [r0, #0x4] - bic r0, r1, #0x10 - orr r0, r0, r2, lsl #0x4 - strh r0, [r3, #0x0] - bx lr - .balign 4 -_020DB640: .word 0x04000204 - - arm_func_start CTRDGi_ChangeLatestAccessCycle -CTRDGi_ChangeLatestAccessCycle: ; 0x020DB644 - ldr r2, _020DB688 ; =0x04000204 - ldrh r1, [r2, #0x0] - and r1, r1, #0xc - mov r1, r1, asr #0x2 - str r1, [r0, #0x0] - ldrh r1, [r2, #0x0] - and r1, r1, #0x10 - mov r1, r1, asr #0x4 - str r1, [r0, #0x4] - ldrh r0, [r2, #0x0] - bic r0, r0, #0xc - orr r0, r0, #0xc - strh r0, [r2, #0x0] - ldrh r0, [r2, #0x0] - bic r0, r0, #0x10 - strh r0, [r2, #0x0] - bx lr - .balign 4 -_020DB688: .word 0x04000204 - - arm_func_start CTRDG_IsExisting -CTRDG_IsExisting: - stmdb sp!, {r4,lr} - sub sp, sp, #0x10 - ldr r2, _020DB798 ; =0x027FFC30 - ldr r0, _020DB79C ; =0x0000FFFF - ldrh r1, [r2, #0x0] - mov r4, #0x1 - cmp r1, r0 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldrb r0, [r2, #0x5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - cmp r0, #0x1 - addeq sp, sp, #0x10 - moveq r0, #0x0 - ldmeqia sp!, {r4,lr} - bxeq lr - ldr r0, _020DB7A0 ; =UNK_021D6944 - add r1, sp, #0x0 - ldrh r0, [r0, #0x2] - bl CTRDGi_LockByProcessor - add r0, sp, #0x8 - bl CTRDGi_ChangeLatestAccessCycle - mov r0, #0x8000000 - ldrb r2, [r0, #0xb2] - cmp r2, #0x96 - bne _020DB714 - ldr r1, _020DB798 ; =0x027FFC30 - ldrh r0, [r0, #0xbe] - ldrh r1, [r1, #0x0] - cmp r1, r0 - bne _020DB75C -_020DB714: - cmp r2, #0x96 - beq _020DB734 - ldr r1, _020DB798 ; =0x027FFC30 - ldr r0, _020DB7A4 ; =0x0801FFFE - ldrh r1, [r1, #0x0] - ldrh r0, [r0, #0x0] - cmp r1, r0 - bne _020DB75C -_020DB734: - ldr r2, _020DB798 ; =0x027FFC30 - mov r0, #0x8000000 - ldr r1, [r2, #0x8] - ldr r0, [r0, #0xac] - cmp r1, r0 - beq _020DB770 - ldrb r0, [r2, #0x5] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _020DB770 -_020DB75C: - ldr r1, _020DB798 ; =0x027FFC30 - mov r4, #0x0 - ldrb r0, [r1, #0x5] - orr r0, r0, #0x2 - strb r0, [r1, #0x5] -_020DB770: - add r0, sp, #0x8 - bl CTRDGi_RestoreAccessCycle - ldr r0, _020DB7A0 ; =UNK_021D6944 - add r1, sp, #0x0 - ldrh r0, [r0, #0x2] - bl CTRDGi_UnlockByProcessor - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020DB798: .word 0x027FFC30 -_020DB79C: .word 0x0000FFFF -_020DB7A0: .word UNK_021D6944 -_020DB7A4: .word 0x0801FFFE - - arm_func_start CTRDG_IsPulledOut -CTRDG_IsPulledOut: ; 0x020DB7A8 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r2, _020DB800 ; =0x027FFC30 - ldr r0, _020DB804 ; =0x0000FFFF - ldrh r1, [r2, #0x0] - cmp r1, r0 - addeq sp, sp, #0x4 - moveq r0, #0x0 - ldmeqia sp!, {lr} - bxeq lr - ldrb r0, [r2, #0x5] - mov r0, r0, lsl #0x1e - movs r0, r0, lsr #0x1f - bne _020DB7E4 - bl CTRDG_IsExisting -_020DB7E4: - ldr r0, _020DB800 ; =0x027FFC30 - ldrb r0, [r0, #0x5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DB800: .word 0x027FFC30 -_020DB804: .word 0x0000FFFF - - arm_func_start CTRDGi_GetAgbMakerCodeAtInit -CTRDGi_GetAgbMakerCodeAtInit: ; 0x020DB808 - stmdb sp!, {r4,lr} - mov r4, #0x0 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0x0 - ldrne r0, _020DB82C ; =0x027FFC30 - ldrneh r4, [r0, #0x6] - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020DB82C: .word 0x027FFC30 - - arm_func_start CTRDG_GetAgbMakerCode -CTRDG_GetAgbMakerCode: ; 0x020DB830 - stmdb sp!, {r4,lr} - mov r4, #0x0 - bl CTRDG_IsExisting - cmp r0, #0x0 - beq _020DB84C - bl CTRDGi_GetAgbMakerCodeAtInit - mov r4, r0 -_020DB84C: - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start CTRDGi_GetAgbGameCodeAtInit -CTRDGi_GetAgbGameCodeAtInit: ; 0x020DB858 - stmdb sp!, {r4,lr} - mov r4, #0x0 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0x0 - ldrne r0, _020DB87C ; =0x027FFC30 - ldrne r4, [r0, #0x8] - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - .balign 4 -_020DB87C: .word 0x027FFC30 - - arm_func_start CTRDG_GetAgbGameCode -CTRDG_GetAgbGameCode: ; 0x020DB880 - stmdb sp!, {r4,lr} - mov r4, #0x0 - bl CTRDG_IsExisting - cmp r0, #0x0 - beq _020DB89C - bl CTRDGi_GetAgbGameCodeAtInit - mov r4, r0 -_020DB89C: - mov r0, r4 - ldmia sp!, {r4,lr} - bx lr - - arm_func_start CTRDGi_IsAgbCartridgeAtInit -CTRDGi_IsAgbCartridgeAtInit: - ldr r0, _020DB8BC ; =0x027FFC30 - ldrb r0, [r0, #0x5] - mov r0, r0, lsl #0x1f - mov r0, r0, lsr #0x1f - bx lr - .balign 4 -_020DB8BC: .word 0x027FFC30 - - arm_func_start CTRDG_IsOptionCartridge -CTRDG_IsOptionCartridge: - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl CTRDG_IsExisting - cmp r0, #0x0 - beq _020DB8EC - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0x0 - addeq sp, sp, #0x4 - moveq r0, #0x1 - ldmeqia sp!, {lr} - bxeq lr -_020DB8EC: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDG_IsAgbCartridge -CTRDG_IsAgbCartridge: ; 0x020DB8FC - stmdb sp!, {lr} - sub sp, sp, #0x4 - bl CTRDG_IsExisting - cmp r0, #0x0 - beq _020DB928 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0x0 - addne sp, sp, #0x4 - movne r0, #0x1 - ldmneia sp!, {lr} - bxne lr -_020DB928: - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_InitCommon -CTRDGi_InitCommon: ; 0x020DB938 - stmdb sp!, {lr} - sub sp, sp, #0x4 - ldr r1, _020DB970 ; =UNK_021D6944 - mov r3, #0x0 - ldr r2, _020DB974 ; =0x05000001 - add r0, sp, #0x0 - str r3, [sp, #0x0] - bl SVC_CpuSet - bl OS_GetLockID - ldr r1, _020DB970 ; =UNK_021D6944 - strh r0, [r1, #0x2] - add sp, sp, #0x4 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DB970: .word UNK_021D6944 -_020DB974: .word 0x05000001 diff --git a/arm9/asm/CTRDG_proc.s b/arm9/asm/CTRDG_proc.s index 3351aa2b..f9e981d0 100644 --- a/arm9/asm/CTRDG_proc.s +++ b/arm9/asm/CTRDG_proc.s @@ -1,7 +1,7 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_021D6944 + .extern CTRDGi_Work .section .bss @@ -104,7 +104,7 @@ CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C sub sp, sp, #0x4 and r0, r1, #0x3f cmp r0, #0x1 - ldreq r0, _020DBA64 ; =UNK_021D6944 + ldreq r0, _020DBA64 ; =CTRDGi_Work moveq r1, #0x1 streqh r1, [r0, #0x0] addeq sp, sp, #0x4 @@ -115,7 +115,7 @@ CTRDGi_CallbackForInitModuleInfo: ; 0x020DBA2C ldmia sp!, {lr} bx lr .balign 4 -_020DBA64: .word UNK_021D6944 +_020DBA64: .word CTRDGi_Work arm_func_start CTRDGi_InitModuleInfo CTRDGi_InitModuleInfo: ; 0x020DBA68 @@ -140,7 +140,7 @@ CTRDGi_InitModuleInfo: ; 0x020DBA68 ldr r3, _020DBC58 ; =0x04000208 mov r2, #0x1 ldrh r4, [r3, #0x0] - ldr r1, _020DBC5C ; =UNK_021D6944 + ldr r1, _020DBC5C ; =CTRDGi_Work mov r6, r0 strh r2, [r3, #0x0] ldrh r0, [r1, #0x2] @@ -173,7 +173,7 @@ CTRDGi_InitModuleInfo: ; 0x020DBA68 orr r1, r1, r5, lsl #0xf strh r1, [r2, #0x0] bl CTRDGi_RestoreAccessCycle - ldr r0, _020DBC5C ; =UNK_021D6944 + ldr r0, _020DBC5C ; =CTRDGi_Work add r1, sp, #0x0 ldrh r0, [r0, #0x2] bl CTRDGi_UnlockByProcessor @@ -227,7 +227,7 @@ _020DBBDC: mov r0, r0, lsl #0x6 orr r0, r0, #0x1 bl CTRDGi_SendtoPxi - ldr r5, _020DBC5C ; =UNK_021D6944 + ldr r5, _020DBC5C ; =CTRDGi_Work ldrh r0, [r5, #0x0] cmp r0, #0x1 beq _020DBC30 @@ -251,7 +251,7 @@ _020DBC30: _020DBC50: .word UNK_021D6948 _020DBC54: .word 0x04000300 _020DBC58: .word 0x04000208 -_020DBC5C: .word UNK_021D6944 +_020DBC5C: .word CTRDGi_Work _020DBC60: .word 0x04000204 _020DBC64: .word UNK_021D6960 _020DBC68: .word 0x08000080 diff --git a/arm9/lib/include/CTRDG_common.h b/arm9/lib/include/CTRDG_common.h index 32049f3c..2d37c6f8 100644 --- a/arm9/lib/include/CTRDG_common.h +++ b/arm9/lib/include/CTRDG_common.h @@ -1,8 +1,137 @@ -#ifndef NITRO_CTRDG_COMMON_H_ -#define NITRO_CTRDG_COMMON_H_ +#ifndef POKEDIAMOND_CTRDG_COMMON_H +#define POKEDIAMOND_CTRDG_COMMON_H -#include "nitro/types.h" +#include "consts.h" +#include "OS_spinLock.h" +#include "OS_system.h" +#include "MI_exMemory.h" +typedef struct CTRDGWork +{ + vu16 subpInitialized; + u16 lockID; + +} CTRDGWork; + +typedef struct CTRDGModuleID +{ + union + { + struct + { + u8 bitID; + u8 numberID:5; + u8 :2; + u8 disableExLsiID:1; + }; + u16 raw; + }; +} CTRDGModuleID; + +typedef struct CTRDGModuleInfo +{ + CTRDGModuleID moduleID; + u8 exLsiID[3]; + u8 isAgbCartridge:1; + u8 detectPullOut:1; + u8 :0; //?? + u16 makerCode; + u32 gameCode; +} CTRDGModuleInfo; + +typedef struct CTRDGLockByProc +{ + BOOL locked; + OSIntrMode irq; +} CTRDGLockByProc; + +typedef struct CTRDGHeader +{ + u32 startAddress; + u8 nintendoLogo[0x9c]; + + u8 titleName[12]; + u32 gameCode; + u16 makerCode; + + u8 isRomCode; + + u8 machineCode; + u8 deviceType; + + u8 exLsiID[3]; + + u8 reserved[4]; + u8 softVersion; + u8 complement; + + u16 moduleID; +} CTRDGHeader; + +typedef struct CTRDGRomCycle +{ + MICartridgeRomCycle1st c1; + MICartridgeRomCycle2nd c2; +} CTRDGRomCycle; + +#define CTRDGi_GetModuleInfoAddr() ((CTRDGModuleInfo *)HW_CTRDG_MODULE_INFO_BUF) +#define CTRDGi_GetHeaderAddr() ((CTRDGHeader *)HW_CTRDG_ROM) +#define CTRDGi_GetModuleIDImageAddr() ((u16 *)(HW_CTRDG_ROM + 0x0001fffe)) + +#define CTRDG_IS_ROM_CODE 0x96 +#define CTRDG_LOCKED_BY_MYPROC_FLAG OS_MAINP_LOCKED_FLAG + +#define CTRDGi_FORWARD_TYPE_DMA 0x00000000 +#define CTRDGi_FORWARD_TYPE_CPU 0x00000001 +#define CTRDGi_FORWARD_TYPE_MASK 0x00000001 + +#define CTRDGi_FORWARD_WIDTH_8 0x00000000 +#define CTRDGi_FORWARD_WIDTH_16 0x00000010 +#define CTRDGi_FORWARD_WIDTH_32 0x00000020 + +#define CTRDGi_FORWARD_DMA16 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_16) +#define CTRDGi_FORWARD_DMA32 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_32) +#define CTRDGi_FORWARD_CPU8 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_8) +#define CTRDGi_FORWARD_CPU16 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_16) +#define CTRDGi_FORWARD_CPU32 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_32) + +#define CTRDGi_ACCESS_DIR_WRITE 0x00000000 +#define CTRDGi_ACCESS_DIR_READ 0x00000001 + +#define CTRDGi_ACCESS_WIDTH_8 0x00000010 +#define CTRDGi_ACCESS_WIDTH_16 0x00000020 +#define CTRDGi_ACCESS_WIDTH_32 0x00000040 + +#define CTRDGi_ACCESS_WRITE8 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_8) +#define CTRDGi_ACCESS_WRITE16 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_16) +#define CTRDGi_ACCESS_WRITE32 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_32) +#define CTRDGi_ACCESS_READ8 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_8) +#define CTRDGi_ACCESS_READ16 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_16) +#define CTRDGi_ACCESS_READ32 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_32) + +void CTRDGi_InitCommon(void); +BOOL CTRDG_IsAgbCartridge(void); +BOOL CTRDG_IsOptionCartridge(void); +BOOL CTRDGi_IsAgbCartridgeAtInit(void); +u32 CTRDG_GetAgbGameCode(void); +u32 CTRDGi_GetAgbGameCodeAtInit(void); +u16 CTRDG_GetAgbMakerCode(void); +u16 CTRDGi_GetAgbMakerCodeAtInit(void); BOOL CTRDG_IsPulledOut(void); +BOOL CTRDG_IsExisting(void); +void CTRDGi_ChangeLatestAccessCycle(CTRDGRomCycle *r); +void CTRDGi_RestoreAccessCycle(CTRDGRomCycle *r); +void CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc *info); +void CTRDGi_UnlockByProcessor(u16 lockID, CTRDGLockByProc *info); +void CTRDGi_SendtoPxi(u32 data); +BOOL CTRDG_CpuCopy8(const void *src, void *dest, u32 size); +BOOL CTRDG_CpuCopy16(const void *src, void *dest, u32 size); +BOOL CTRDG_CpuCopy32(const void *src, void *dest, u32 size); +BOOL CTRDGi_CopyCommon(u32 dmaNo, const void *src, void *dest, u32 size, u32 forwardType); +BOOL CTRDG_Read32(const u32 *address, u32 *rdata); +BOOL CTRDGi_AccessCommon(void *address, u32 data, void *rdata, u32 accessType); +BOOL CTRDG_IsEnabled(void); +void CTRDG_Enable(BOOL enable); +void CTRDG_CheckEnabled(void); -#endif //NITRO_CTRDG_COMMON_H_ +#endif //POKEDIAMOND_CTRDG_COMMON_H diff --git a/arm9/lib/include/MI_dma.h b/arm9/lib/include/MI_dma.h index 8ce3f417..99d1cb84 100644 --- a/arm9/lib/include/MI_dma.h +++ b/arm9/lib/include/MI_dma.h @@ -21,6 +21,9 @@ typedef void (*MIDmaCallback)(void *); #define MI_DMA_SRC_FIX (2UL << 23) #define MI_DMA_SRC_INC (0UL << 23) +#define MI_DMA_16BIT_BUS (0UL << 26) +#define MI_DMA_32BIT_BUS (1UL << 26) + #define MIi_DMA_TIMING_ANY (u32)(~0) #define MI_DMA_TIMING_H_BLANK (2UL << 27) diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/include/MI_exMemory.h index 8bd355ac..df46b008 100644 --- a/arm9/lib/include/MI_exMemory.h +++ b/arm9/lib/include/MI_exMemory.h @@ -1,5 +1,5 @@ -#ifndef NITRO_MI_EXMEMORY_H_ -#define NITRO_MI_EXMEMORY_H_ +#ifndef POKEDIAMOND_MI_EXMEMORY_H +#define POKEDIAMOND_MI_EXMEMORY_H #include "consts.h" @@ -8,6 +8,20 @@ typedef enum { MI_PROCESSOR_ARM7 = 1 } MIProcessor; +typedef enum +{ + MI_CTRDG_ROMCYCLE1_10 = 0, + MI_CTRDG_ROMCYCLE1_8 = 1, + MI_CTRDG_ROMCYCLE1_6 = 2, + MI_CTRDG_ROMCYCLE1_18 = 3 +} MICartridgeRomCycle1st; + +typedef enum +{ + MI_CTRDG_ROMCYCLE2_6 = 0, + MI_CTRDG_ROMCYCLE2_4 = 1 +} MICartridgeRomCycle2nd; + static inline void MIi_SetCardProcessor(MIProcessor proc) { reg_MI_EXMEMCNT = @@ -20,4 +34,24 @@ static inline void MIi_SetCartridgeProcessor(MIProcessor proc) (u16)((reg_MI_EXMEMCNT & ~0x0080) | (proc << 7)); } -#endif //NITRO_MI_EXMEMORY_H_ +static inline MICartridgeRomCycle1st MI_GetCartridgeRomCycle1st(void) +{ + return (MICartridgeRomCycle1st)((reg_MI_EXMEMCNT & 0xc) >> 2); +} + +static inline MICartridgeRomCycle2nd MI_GetCartridgeRomCycle2nd(void) +{ + return (MICartridgeRomCycle2nd)((reg_MI_EXMEMCNT & 0x10) >> 4); +} + +static inline void MI_SetCartridgeRomCycle1st(MICartridgeRomCycle1st c1) +{ + reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0xc) | (c1 << 2)); +} + +static inline void MI_SetCartridgeRomCycle2nd(MICartridgeRomCycle2nd c2) +{ + reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0x10) | (c2 << 4)); +} + +#endif //POKEDIAMOND_MI_EXMEMORY_H diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h index 450e5e58..339ff9b8 100644 --- a/arm9/lib/include/MI_memory.h +++ b/arm9/lib/include/MI_memory.h @@ -45,6 +45,11 @@ static inline void MI_CpuCopy16(const void *src, void *dest, u32 size) MIi_CpuCopy16(src, dest, size); } +static inline void MI_CpuCopy32(const void *src, void *dest, u32 size) +{ + MIi_CpuCopy32(src, dest, size); +} + static inline void MI_CpuFillFast(void *dest, u32 data, u32 size) { MIi_CpuClearFast(data, dest, size); diff --git a/arm9/lib/include/OS_protectionRegion.h b/arm9/lib/include/OS_protectionRegion.h index 9b65258d..00b7ae63 100644 --- a/arm9/lib/include/OS_protectionRegion.h +++ b/arm9/lib/include/OS_protectionRegion.h @@ -41,4 +41,8 @@ static inline u32 OSi_CalcPRParam(u32 address, u32 size, OSiProtectionRegionBase OS_SetProtectionRegion##regionNo(OSi_CalcPRParam(address, HW_C6_PR_##sizeStr, OSi_PR_BASE_MASK_##sizeStr) \ | 1) +#define OS_PR3_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR3_SFT) +#define OS_PR3_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR3_SFT) +#define OS_PR3_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR3_SFT) + #endif //POKEDIAMOND_OS_PROTECTIONREGION_H diff --git a/arm9/lib/include/OS_spinLock.h b/arm9/lib/include/OS_spinLock.h index c26e3b9f..09c2cf2c 100644 --- a/arm9/lib/include/OS_spinLock.h +++ b/arm9/lib/include/OS_spinLock.h @@ -5,7 +5,11 @@ #include "nitro/OS_spinLock_shared.h" #include "syscall.h" -#define OS_LOCK_ID_ERROR (-3) +#define OS_ReadOwnerOfLockCartridge() OS_ReadOwnerOfLockWord( (OSLockWord *)HW_CTRDG_LOCK_BUF ) +#define OS_MAINP_LOCKED_FLAG 0x40 +#define OS_LOCK_SUCCESS 0 + +#define OS_LOCK_ID_ERROR (-3) static inline void OSi_WaitByLoop(void) { diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h index 095a15df..a41f22ae 100644 --- a/arm9/lib/include/consts.h +++ b/arm9/lib/include/consts.h @@ -6,6 +6,13 @@ #include "registers.h" #include "systemWork.h" +#define HW_C5_PERMIT_MASK 0xf + +#define HW_C5_PERMIT_RO 5 +#define HW_C5_PERMIT_RW 1 + +#define HW_C5_PR3_SFT 12 + #define HW_C6_PR_4KB 0x16 #define HW_C6_PR_8KB 0x18 #define HW_C6_PR_16KB 0x1a diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h index de5a8057..69e9c696 100644 --- a/arm9/lib/include/mmap.h +++ b/arm9/lib/include/mmap.h @@ -34,6 +34,7 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM + 0x007ffc00) #define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20) #define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c) +#define HW_CTRDG_MODULE_INFO_BUF (HW_MAIN_MEM + 0x007ffc30) #define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer #define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory #define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE) @@ -93,6 +94,8 @@ extern u32 SDK_AUTOLOAD_DTCM_START[]; #define HW_DB_OAM_END 0x07000800 #define HW_DB_OAM_SIZE (HW_DB_OAM_END-HW_DB_OAM) +#define HW_CTRDG_RAM_END 0x0a010000 + #define HW_DTCM_SYSRV_OFS_INTR_VECTOR 0x3c #define HW_RESET_VECTOR 0xffff0000 diff --git a/arm9/lib/include/syscall.h b/arm9/lib/include/syscall.h index 427134a7..8e7962df 100644 --- a/arm9/lib/include/syscall.h +++ b/arm9/lib/include/syscall.h @@ -1,6 +1,19 @@ #ifndef POKEDIAMOND_ARM9_SYSCALL_H #define POKEDIAMOND_ARM9_SYSCALL_H +#include "consts.h" +#include "MI_dma.h" + +void SVC_CpuSet(const void *srcp, void *destp, u32 dmaCntData); + +#define SVC_CpuClear( data, destp, size, bit ) \ +do{ \ + vu##bit tmp = (vu##bit )(data); \ + SVC_CpuSet((u8 *)&(tmp), (u8 *)(destp), ( \ + MI_DMA_SRC_FIX | \ + MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff))); \ +} while(0) + void SVC_WaitByLoop(u32 ct); #endif //POKEDIAMOND_ARM9_SYSCALL_H diff --git a/arm9/lib/src/CTRDG_common.c b/arm9/lib/src/CTRDG_common.c new file mode 100644 index 00000000..3d80cf24 --- /dev/null +++ b/arm9/lib/src/CTRDG_common.c @@ -0,0 +1,349 @@ +#include "CTRDG_common.h" +#include "function_target.h" +#include "syscall.h" +#include "OS_cache.h" +#include "OS_protectionRegion.h" +#include "OS_terminate_proc.h" +#include "PXI_fifo.h" +#include "MI_dma.h" +#include "MI_memory.h" + +CTRDGWork CTRDGi_Work; + +static BOOL CTRDGi_EnableFlag = FALSE; + +ARM_FUNC void CTRDGi_InitCommon(void) +{ + SVC_CpuClear(0, &CTRDGi_Work, sizeof(CTRDGi_Work), 32); + + CTRDGi_Work.lockID = (u16)OS_GetLockID(); +} + +ARM_FUNC BOOL CTRDG_IsAgbCartridge(void) +{ + return (CTRDG_IsExisting() && CTRDGi_IsAgbCartridgeAtInit()); +} + +ARM_FUNC BOOL CTRDG_IsOptionCartridge(void) +{ + return (CTRDG_IsExisting() && !CTRDGi_IsAgbCartridgeAtInit()); +} + +ARM_FUNC BOOL CTRDGi_IsAgbCartridgeAtInit(void) +{ + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); + + return cip->isAgbCartridge; +} + +ARM_FUNC u32 CTRDG_GetAgbGameCode(void) +{ + u32 ret = 0; + + if (CTRDG_IsExisting()) + { + ret = CTRDGi_GetAgbGameCodeAtInit(); + } + + return ret; +} + +ARM_FUNC u32 CTRDGi_GetAgbGameCodeAtInit(void) +{ + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); + u32 ret = 0; + + if (CTRDGi_IsAgbCartridgeAtInit()) + { + ret = cip->gameCode; + } + + return ret; +} + +ARM_FUNC u16 CTRDG_GetAgbMakerCode(void) +{ + u16 ret = 0; + + if (CTRDG_IsExisting()) + { + ret = CTRDGi_GetAgbMakerCodeAtInit(); + } + + return ret; +} + +ARM_FUNC u16 CTRDGi_GetAgbMakerCodeAtInit(void) +{ + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); + u16 ret = 0; + + if (CTRDGi_IsAgbCartridgeAtInit()) + { + ret = cip->makerCode; + } + + return ret; +} + +ARM_FUNC BOOL CTRDG_IsPulledOut(void) +{ + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); + + if (cip->moduleID.raw == 0xffff) + { + return FALSE; + } + + if (!cip->detectPullOut) + { + (void)CTRDG_IsExisting(); + } + + return cip->detectPullOut; +} + +ARM_FUNC BOOL CTRDG_IsExisting(void) +{ + BOOL ret = TRUE; + CTRDGLockByProc lockInfo; + + CTRDGHeader *chp = CTRDGi_GetHeaderAddr(); + CTRDGModuleInfo *cip = CTRDGi_GetModuleInfoAddr(); + + if (cip->moduleID.raw == 0xffff) + { + return FALSE; + } + + if (cip->detectPullOut == TRUE) + { + return FALSE; + } + + CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo); + + CTRDGRomCycle rc; + + CTRDGi_ChangeLatestAccessCycle(&rc); + u8 isRomCode = chp->isRomCode; + + if ((isRomCode == CTRDG_IS_ROM_CODE && cip->moduleID.raw != chp->moduleID) + || (isRomCode != CTRDG_IS_ROM_CODE && cip->moduleID.raw != *CTRDGi_GetModuleIDImageAddr()) + || ((cip->gameCode != chp->gameCode) && cip->isAgbCartridge)) + { + cip->detectPullOut = TRUE; + ret = FALSE; + } + + CTRDGi_RestoreAccessCycle(&rc); + + CTRDGi_UnlockByProcessor(CTRDGi_Work.lockID, &lockInfo); + + return ret; +} + +ARM_FUNC void CTRDGi_ChangeLatestAccessCycle(CTRDGRomCycle *r) +{ + r->c1 = MI_GetCartridgeRomCycle1st(); + r->c2 = MI_GetCartridgeRomCycle2nd(); + + MI_SetCartridgeRomCycle1st(MI_CTRDG_ROMCYCLE1_18); + MI_SetCartridgeRomCycle2nd(MI_CTRDG_ROMCYCLE2_6); +} + +ARM_FUNC void CTRDGi_RestoreAccessCycle(CTRDGRomCycle *r) +{ + MI_SetCartridgeRomCycle1st(r->c1); + MI_SetCartridgeRomCycle2nd(r->c2); +} + +ARM_FUNC void CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc *info) +{ + while (TRUE) + { + info->irq = OS_DisableInterrupts(); + if (((info->locked = OS_ReadOwnerOfLockCartridge() & CTRDG_LOCKED_BY_MYPROC_FLAG) != 0) + || (OS_TryLockCartridge(lockID) == OS_LOCK_SUCCESS)) + { + break; + } + (void)OS_RestoreInterrupts(info->irq); + + SVC_WaitByLoop(1); + } +} + +ARM_FUNC void CTRDGi_UnlockByProcessor(u16 lockID, CTRDGLockByProc *info) +{ + if (!info->locked) + { + (void)OS_UnLockCartridge(lockID); + } + + (void)OS_RestoreInterrupts(info->irq); +} + +ARM_FUNC void CTRDGi_SendtoPxi(u32 data) +{ + while (PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG, data, FALSE) != PXI_FIFO_SUCCESS) + { + SVC_WaitByLoop(1); + } +} + +ARM_FUNC BOOL CTRDG_CpuCopy8(const void *src, void *dest, u32 size) +{ + if (HW_CTRDG_ROM <= (u32)dest && (u32)dest < HW_CTRDG_RAM_END) + { + return CTRDGi_CopyCommon(0, (const void *)dest, (void *)src, size, CTRDGi_FORWARD_CPU8); + } + else + { + return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU8); + } +} + +ARM_FUNC BOOL CTRDG_CpuCopy16(const void *src, void *dest, u32 size) +{ + return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU16); +} + +ARM_FUNC BOOL CTRDG_CpuCopy32(const void *src, void *dest, u32 size) +{ + return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU32); +} + +ARM_FUNC BOOL CTRDGi_CopyCommon(u32 dmaNo, const void *src, void *dest, u32 size, u32 forwardType) +{ + if (!CTRDG_IsExisting()) + { + return FALSE; + } + + CTRDG_CheckEnabled(); + + (void)OS_LockCartridge(CTRDGi_Work.lockID); + + if ((forwardType & CTRDGi_FORWARD_TYPE_MASK) == CTRDGi_FORWARD_TYPE_DMA) + { + MI_StopDma(dmaNo); + DC_FlushRange(dest, size); + } + + switch (forwardType) + { + case CTRDGi_FORWARD_DMA16: + MI_DmaCopy16(dmaNo, src, dest, size); + break; + case CTRDGi_FORWARD_DMA32: + MI_DmaCopy32(dmaNo, src, dest, size); + break; + case CTRDGi_FORWARD_CPU16: + MI_CpuCopy16(src, dest, size); + break; + case CTRDGi_FORWARD_CPU32: + MI_CpuCopy32(src, dest, size); + break; + + case CTRDGi_FORWARD_CPU8: + u8 *dest8 = (u8 *)dest; + u8 *src8 = (u8 *)src; + for (s32 n = 0; n < size; n++) + { + *dest8++ = *src8++; + } + break; + } + + (void)OS_UnLockCartridge(CTRDGi_Work.lockID); + + if (!CTRDG_IsExisting()) + { + return FALSE; + } + + return TRUE; +} + +ARM_FUNC BOOL CTRDG_Read32(const u32 *address, u32 *rdata) +{ + return CTRDGi_AccessCommon((void *)address, 0, rdata, CTRDGi_ACCESS_READ32); +} + +ARM_FUNC BOOL CTRDGi_AccessCommon(void *address, u32 data, void *rdata, u32 accessType) +{ + if (!CTRDG_IsExisting()) + { + return FALSE; + } + + CTRDG_CheckEnabled(); + + (void)OS_LockCartridge(CTRDGi_Work.lockID); + + switch (accessType) + { + case CTRDGi_ACCESS_READ8: + if (rdata) + { + *(u8 *)rdata = *(u8 *)address; + } + break; + case CTRDGi_ACCESS_READ16: + if (rdata) + { + *(u16 *)rdata = *(u16 *)address; + } + break; + case CTRDGi_ACCESS_READ32: + if (rdata) + { + *(u32 *)rdata = *(u32 *)address; + } + break; + case CTRDGi_ACCESS_WRITE8: + *(u8 *)address = (u8)data; + break; + case CTRDGi_ACCESS_WRITE16: + *(u16 *)address = (u16)data; + break; + case CTRDGi_ACCESS_WRITE32: + *(u32 *)address = (u32)data; + break; + } + + (void)OS_UnLockCartridge(CTRDGi_Work.lockID); + + if (!CTRDG_IsExisting()) + { + return FALSE; + } + + return TRUE; +} + +ARM_FUNC BOOL CTRDG_IsEnabled(void) +{ + return CTRDGi_EnableFlag; +} + +ARM_FUNC void CTRDG_Enable(BOOL enable) +{ + OSIntrMode bak_cpsr = OS_DisableInterrupts(); + CTRDGi_EnableFlag = enable; + if (!CTRDG_IsOptionCartridge()) + { + u32 acc = (u32)(enable ? OS_PR3_ACCESS_RW : OS_PR3_ACCESS_RO); + (void)OS_SetDPermissionsForProtectionRegion(OS_PR3_ACCESS_MASK, acc); + } + (void)OS_RestoreInterrupts(bak_cpsr); +} + +ARM_FUNC void CTRDG_CheckEnabled(void) +{ + if (!CTRDG_IsOptionCartridge() && !CTRDG_IsEnabled()) + { + OS_Terminate(); + } +} -- cgit v1.2.3 From ce4bb1eaea10d79a3b66e45d9621cf8d87e9492d Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 12 Jan 2021 22:06:18 +0000 Subject: properly split data for cartridge flash files --- arm9/arm9.lsf | 1 + arm9/asm/CTRDG_backup.s | 145 ++++----------------------------- arm9/asm/CTRDG_flash_AT29LV512.s | 53 +++++++++--- arm9/asm/CTRDG_flash_LE26FV10N1TS-10.s | 29 +++++++ arm9/asm/CTRDG_flash_LE39FW512.s | 33 ++++++++ arm9/asm/CTRDG_flash_MX29L010.s | 33 ++++++++ arm9/asm/CTRDG_flash_MX29L512.s | 23 ++++++ 7 files changed, 175 insertions(+), 142 deletions(-) create mode 100644 arm9/asm/CTRDG_flash_LE26FV10N1TS-10.s (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 33661a6b..fac2074d 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -457,6 +457,7 @@ Static arm9 Object CTRDG_backup.o Object CTRDG_flash_common.o Object CTRDG_flash_AT29LV512.o + Object CTRDG_flash_LE26FV10N1TS-10.o Object CTRDG_flash_LE39FW512.o Object CTRDG_flash_MX29L010.o Object CTRDG_flash_MX29L512.o diff --git a/arm9/asm/CTRDG_backup.s b/arm9/asm/CTRDG_backup.s index e04344b4..e4c4baa4 100644 --- a/arm9/asm/CTRDG_backup.s +++ b/arm9/asm/CTRDG_backup.s @@ -1,6 +1,7 @@ .include "asm/macros.inc" .include "global.inc" + .extern AT29LV512_lib .extern CTRDGi_EraseFlash4KBAT .extern CTRDGi_EraseFlash4KBAsyncAT .extern CTRDGi_EraseFlashChipAT @@ -26,6 +27,12 @@ .extern CTRDGi_WriteFlashSectorMX .extern CTRDGi_WriteFlashSectorAsyncMX5 .extern CTRDGi_WriteFlashSectorMX5 + .extern defaultFlash1M + .extern defaultFlash512 + .extern LE26FV10N1TS_10 + .extern LE39FW512 + .extern MN63F805MNP + .extern MX29L010 .extern UNK_021D6B14 .extern UNK_021D6B30 .extern UNK_021D6B28 @@ -46,140 +53,16 @@ UNK_02103FE4: ; 0x02103FE4 .global UNK_02103FE8 UNK_02103FE8: ; 0x02103FE8 - .word UNK_02104150 - .word UNK_0210408C - .word UNK_0210418C + .word MX29L010 + .word LE26FV10N1TS_10 + .word defaultFlash1M .global UNK_02103FF4 UNK_02103FF4: ; 0x02103FF4 - .word UNK_0210410C - .word UNK_0210400C - .word UNK_021041D0 - .word UNK_021040D0 - - .global UNK_02104004 -UNK_02104004: ; 0x02104004 - .byte 0x0A, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00 - - .global UNK_0210400C -UNK_0210400C: ; 0x0210400C - .word CTRDGi_WriteFlash4KBAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlash4KBAT - .word CTRDGi_WriteFlash4KBAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlash4KBAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word UNK_02104004 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - - .global UNK_02104048 -UNK_02104048: ; 0x02104048 - .word CTRDGi_WriteFlashSectorAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlashSectorAT - .word CTRDGi_WriteFlashSectorAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlashSectorAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word UNK_02104004 - .byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - - .global UNK_02104084 -UNK_02104084: ; 0x02104084 - .byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0x88, 0x13 - - .global UNK_0210408C -UNK_0210408C: ; 0x0210408C - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word UNK_02104084 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00 - - .global UNK_021040C8 -UNK_021040C8: ; 0x021040C8 - .byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00 - - .global UNK_021040D0 -UNK_021040D0: ; 0x021040D0 - .word CTRDGi_WriteFlashSectorLE - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncLE - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word UNK_021040C8 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_0210410C -UNK_0210410C: ; 0x0210410C - .word CTRDGi_WriteFlashSectorLE - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncLE - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word UNK_021040C8 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00 - - .global UNK_02104148 -UNK_02104148: ; 0x02104148 - .byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0xD0, 0x07 - - .global UNK_02104150 -UNK_02104150: ; 0x02104150 - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word UNK_02104148 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x09, 0x00 - - .global UNK_0210418C -UNK_0210418C: ; 0x0210418C - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word UNK_02104148 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_021041C8 -UNK_021041C8: ; 0x021041C8 - .byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01 - - .global UNK_021041D0 -UNK_021041D0: ; 0x021041D0 - .word CTRDGi_WriteFlashSectorMX5 - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncMX5 - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word UNK_021041C8 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00 + .word LE39FW512 + .word AT29LV512_lib + .word MN63F805MNP + .word defaultFlash512 .section .bss diff --git a/arm9/asm/CTRDG_flash_AT29LV512.s b/arm9/asm/CTRDG_flash_AT29LV512.s index 33298e6c..ff80e947 100644 --- a/arm9/asm/CTRDG_flash_AT29LV512.s +++ b/arm9/asm/CTRDG_flash_AT29LV512.s @@ -1,14 +1,45 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_0210400C + .extern CTRDGi_PollingSR512kCOMMON .extern UNK_021D6B20 .extern UNK_021D6B24 .extern UNK_021D6B0C .extern UNK_021D6B38 - .extern UNK_02104048 .extern UNK_021D6B08 + .section .rodata + + .global atMaxTime +atMaxTime: ; 0x02104004 + .short 10, 40, 0, 40 + + .global AT29LV512_lib +AT29LV512_lib: ; 0x0210400C + .word CTRDGi_WriteFlash4KBAT + .word CTRDGi_EraseFlashChipAT + .word CTRDGi_EraseFlash4KBAT + .word CTRDGi_WriteFlash4KBAsyncAT + .word CTRDGi_EraseFlashChipAsyncAT + .word CTRDGi_EraseFlash4KBAsyncAT + .word CTRDGi_PollingSR512kCOMMON + .word atMaxTime + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 + + .global AT29LV512_org +AT29LV512_org: ; 0x02104048 + .word CTRDGi_WriteFlashSectorAT + .word CTRDGi_EraseFlashChipAT + .word CTRDGi_EraseFlashSectorAT + .word CTRDGi_WriteFlashSectorAsyncAT + .word CTRDGi_EraseFlashChipAsyncAT + .word CTRDGi_EraseFlashSectorAsyncAT + .word CTRDGi_PollingSR512kCOMMON + .word atMaxTime + .byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 + .text arm_func_start CTRDGi_WriteFlashSectorAsyncAT @@ -170,7 +201,7 @@ CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780 ldrhs r0, _020DC85C ; =0x000080FF ldmcsia sp!, {r4-r9,lr} bxcs lr - ldr r1, _020DC860 ; =UNK_0210400C + ldr r1, _020DC860 ; =AT29LV512_lib mov r0, r0, lsl #0x15 ldr r1, [r1, #0x24] ldr r4, _020DC864 ; =UNK_021D6B08 @@ -179,7 +210,7 @@ CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780 ldrh r0, [r4, #0x0] cmp r0, #0x0 beq _020DC84C - ldr r0, _020DC868 ; =UNK_02104048 + ldr r0, _020DC868 ; =AT29LV512_org ldr r6, [r0, #0x24] mov r5, #0x2 _020DC7F4: @@ -214,9 +245,9 @@ _020DC84C: bx lr .balign 4 _020DC85C: .word 0x000080FF -_020DC860: .word UNK_0210400C +_020DC860: .word AT29LV512_lib _020DC864: .word UNK_021D6B08 -_020DC868: .word UNK_02104048 +_020DC868: .word AT29LV512_org arm_func_start CTRDGi_WriteFlashSectorCoreAT CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C @@ -240,7 +271,7 @@ CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C ldr r1, [r1, #0x0] ldrh r2, [r5, #0x0] ldr r3, [r1, #0x10] - ldr r1, _020DC990 ; =UNK_02104048 + ldr r1, _020DC990 ; =AT29LV512_org bic r2, r2, #0x3 orr r2, r2, r3 strh r2, [r5, #0x0] @@ -296,7 +327,7 @@ _020DC92C: _020DC984: .word UNK_021D6B0C _020DC988: .word 0x04000204 _020DC98C: .word UNK_021D6B20 -_020DC990: .word UNK_02104048 +_020DC990: .word AT29LV512_org _020DC994: .word 0x04000208 _020DC998: .word 0x0A005555 _020DC99C: .word 0x0A002AAA @@ -366,7 +397,7 @@ CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58 ldmia r5!, {r0-r3} stmia r4!, {r0-r3} ldr r0, [r5, #0x0] - ldr r1, _020DCB80 ; =UNK_02104048 + ldr r1, _020DCB80 ; =AT29LV512_org str r0, [r4, #0x0] ldr r0, _020DCB84 ; =UNK_021D6B0C ldrh r2, [sp, #0x20] @@ -396,7 +427,7 @@ CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58 strb r3, [r1, #0x0] mov r3, #0xa0 strb r3, [r4, #0x0] - ldr r1, _020DCB80 ; =UNK_02104048 + ldr r1, _020DCB80 ; =AT29LV512_org and r4, r0, #0x3 ldr r1, [r1, #0x24] cmp r1, #0x0 @@ -434,7 +465,7 @@ _020DCB18: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020DCB80: .word UNK_02104048 +_020DCB80: .word AT29LV512_org _020DCB84: .word UNK_021D6B0C _020DCB88: .word 0x04000204 _020DCB8C: .word UNK_021D6B20 diff --git a/arm9/asm/CTRDG_flash_LE26FV10N1TS-10.s b/arm9/asm/CTRDG_flash_LE26FV10N1TS-10.s new file mode 100644 index 00000000..518ac3d7 --- /dev/null +++ b/arm9/asm/CTRDG_flash_LE26FV10N1TS-10.s @@ -0,0 +1,29 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern CTRDGi_EraseFlashChipAsyncMX + .extern CTRDGi_EraseFlashChipMX + .extern CTRDGi_EraseFlashSectorAsyncMX + .extern CTRDGi_EraseFlashSectorMX + .extern CTRDGi_PollingSR1MCOMMON + .extern CTRDGi_WriteFlashSectorAsyncMX + .extern CTRDGi_WriteFlashSectorMX + + .section .rodata + + .global LeMaxTime +LeMaxTime: ; 0x02104084 + .short 10, 10, 2000, 5000 + + .global LE26FV10N1TS_10 +LE26FV10N1TS_10: ; 0x0210408C + .word CTRDGi_WriteFlashSectorMX + .word CTRDGi_EraseFlashChipMX + .word CTRDGi_EraseFlashSectorMX + .word CTRDGi_WriteFlashSectorAsyncMX + .word CTRDGi_EraseFlashChipAsyncMX + .word CTRDGi_EraseFlashSectorAsyncMX + .word CTRDGi_PollingSR1MCOMMON + .word LeMaxTime + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00 diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s index 77071a6d..b3f4b8a3 100644 --- a/arm9/asm/CTRDG_flash_LE39FW512.s +++ b/arm9/asm/CTRDG_flash_LE39FW512.s @@ -1,12 +1,45 @@ .include "asm/macros.inc" .include "global.inc" + .extern CTRDGi_PollingSR512kCOMMON .extern UNK_021D6B20 .extern UNK_021D6B24 .extern UNK_021D6B0C .extern UNK_021D6B38 .extern UNK_021D6B08 + .section .rodata + + .global leMaxTime +leMaxTime: ; 0x021040C8 + .byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00 + + .global defaultFlash512 +defaultFlash512: ; 0x021040D0 + .word CTRDGi_WriteFlashSectorLE + .word CTRDGi_EraseFlashChipLE + .word CTRDGi_EraseFlashSectorLE + .word CTRDGi_WriteFlashSectorAsyncLE + .word CTRDGi_EraseFlashChipAsyncLE + .word CTRDGi_EraseFlashSectorAsyncLE + .word CTRDGi_PollingSR512kCOMMON + .word leMaxTime + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global LE39FW512 +LE39FW512: ; 0x0210410C + .word CTRDGi_WriteFlashSectorLE + .word CTRDGi_EraseFlashChipLE + .word CTRDGi_EraseFlashSectorLE + .word CTRDGi_WriteFlashSectorAsyncLE + .word CTRDGi_EraseFlashChipAsyncLE + .word CTRDGi_EraseFlashSectorAsyncLE + .word CTRDGi_PollingSR512kCOMMON + .word leMaxTime + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00 + .text arm_func_start CTRDGi_WriteFlashSectorAsyncLE diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s index 646121f3..5ac28935 100644 --- a/arm9/asm/CTRDG_flash_MX29L010.s +++ b/arm9/asm/CTRDG_flash_MX29L010.s @@ -1,12 +1,45 @@ .include "asm/macros.inc" .include "global.inc" + .extern CTRDGi_PollingSR1MCOMMON .extern UNK_021D6B20 .extern UNK_021D6B24 .extern UNK_021D6B0C .extern UNK_021D6B38 .extern UNK_021D6B08 + .section .rodata + + .global MxMaxTime +MxMaxTime: ; 0x02104148 + .short 10, 10, 2000, 2000 + + .global MX29L010 +MX29L010: ; 0x02104150 + .word CTRDGi_WriteFlashSectorMX + .word CTRDGi_EraseFlashChipMX + .word CTRDGi_EraseFlashSectorMX + .word CTRDGi_WriteFlashSectorAsyncMX + .word CTRDGi_EraseFlashChipAsyncMX + .word CTRDGi_EraseFlashSectorAsyncMX + .word CTRDGi_PollingSR1MCOMMON + .word MxMaxTime + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x09, 0x00 + + .global defaultFlash1M +defaultFlash1M: ; 0x0210418C + .word CTRDGi_WriteFlashSectorMX + .word CTRDGi_EraseFlashChipMX + .word CTRDGi_EraseFlashSectorMX + .word CTRDGi_WriteFlashSectorAsyncMX + .word CTRDGi_EraseFlashChipAsyncMX + .word CTRDGi_EraseFlashSectorAsyncMX + .word CTRDGi_PollingSR1MCOMMON + .word MxMaxTime + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .text arm_func_start CTRDGi_WriteFlashSectorAsyncMX diff --git a/arm9/asm/CTRDG_flash_MX29L512.s b/arm9/asm/CTRDG_flash_MX29L512.s index f075c9f0..17b50125 100644 --- a/arm9/asm/CTRDG_flash_MX29L512.s +++ b/arm9/asm/CTRDG_flash_MX29L512.s @@ -1,10 +1,33 @@ .include "asm/macros.inc" .include "global.inc" + .extern CTRDGi_EraseFlashChipAsyncLE + .extern CTRDGi_EraseFlashChipLE + .extern CTRDGi_EraseFlashSectorAsyncLE + .extern CTRDGi_PollingSR512kCOMMON .extern UNK_021D6B08 .extern UNK_021D6B20 .extern UNK_021D6B0C + .section .rodata + + .global PaMaxTime +PaMaxTime: ; 0x021041C8 + .byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01 + + .global MN63F805MNP +MN63F805MNP: ; 0x021041D0 + .word CTRDGi_WriteFlashSectorMX5 + .word CTRDGi_EraseFlashChipLE + .word CTRDGi_EraseFlashSectorLE + .word CTRDGi_WriteFlashSectorAsyncMX5 + .word CTRDGi_EraseFlashChipAsyncLE + .word CTRDGi_EraseFlashSectorAsyncLE + .word CTRDGi_PollingSR512kCOMMON + .word PaMaxTime + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x32, 0x00, 0x1B, 0x00 + .text arm_func_start CTRDGi_WriteFlashSectorAsyncMX5 -- cgit v1.2.3 From 935da757da3ae35ef3c42ef432bd666d9c78f4fd Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 14 Jan 2021 19:37:51 +0000 Subject: name some script and text functions --- arm9/asm/scrcmd.s | 2 +- arm9/asm/scrcmd_7.s | 6 ++-- arm9/asm/unk_02001B80.s | 14 ++++----- arm9/asm/unk_02038C78.s | 36 +++++++++++----------- arm9/asm/unk_02048904.s | 4 +-- arm9/asm/unk_02054590.s | 4 +-- arm9/asm/unk_0205C598.s | 2 +- arm9/asm/unk_020625EC.s | 2 +- arm9/asm/unk_020653EC.s | 2 +- arm9/asm/unk_0206C700.s | 4 +-- arm9/asm/unk_02072548.s | 2 +- arm9/asm/unk_02089498.s | 4 +-- arm9/global.inc | 10 +++--- arm9/modules/05/asm/mod05_021E1374.s | 2 +- arm9/modules/05/asm/mod05_021E2B80.s | 60 ++++++++++++++++++------------------ arm9/modules/05/asm/module_05.s | 8 ++--- arm9/modules/06/asm/module_06.s | 14 ++++----- arm9/modules/18/asm/module_18.s | 28 ++++++++--------- arm9/modules/54/asm/module_54.s | 6 ++-- arm9/modules/55/asm/module_55.s | 4 +-- arm9/modules/56/asm/module_56.s | 24 +++++++-------- arm9/modules/61/asm/module_61.s | 2 +- arm9/modules/64/asm/module_64.s | 2 +- arm9/modules/65/asm/module_65.s | 2 +- arm9/modules/71/asm/module_71.s | 2 +- arm9/modules/75/asm/module_75.s | 2 +- arm9/modules/76/asm/module_76.s | 2 +- arm9/modules/77/asm/module_77.s | 4 +-- arm9/modules/80/asm/module_80.s | 2 +- arm9/modules/82/asm/module_82.s | 2 +- 30 files changed, 129 insertions(+), 129 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 2f0cb3ef..c5ae760b 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -2248,7 +2248,7 @@ FUN_0203AAA0: ; 0x0203AAA0 ldr r1, _0203AAF8 ; =UNK_020F34E0 ldr r2, _0203AAF4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r6, #0x0] ldr r1, _0203AAFC ; =FUN_0203AB00 add r0, r5, #0x0 diff --git a/arm9/asm/scrcmd_7.s b/arm9/asm/scrcmd_7.s index 7ae38f49..01c0425f 100644 --- a/arm9/asm/scrcmd_7.s +++ b/arm9/asm/scrcmd_7.s @@ -366,7 +366,7 @@ FUN_02041970: ; 0x02041970 add r5, r0, #0x0 ldrh r0, [r4, #0x0] bl FUN_020395F4 - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle lsl r0, r0, #0x10 lsr r0, r0, #0x10 bne _020419D2 @@ -430,7 +430,7 @@ FUN_020419F8: ; 0x020419F8 add r5, r0, #0x0 ldrh r0, [r4, #0x0] bl FUN_020395F4 - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle lsl r0, r0, #0x10 lsr r0, r0, #0x10 bne _02041A5A @@ -478,7 +478,7 @@ FUN_02041A80: ; 0x02041A80 add r5, r0, #0x0 ldrh r0, [r4, #0x0] bl FUN_020395F4 - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02001B80.s b/arm9/asm/unk_02001B80.s index ff804a2f..3ad4b3b7 100644 --- a/arm9/asm/unk_02001B80.s +++ b/arm9/asm/unk_02001B80.s @@ -755,8 +755,8 @@ FUN_020020B0: ; 0x020020B0 pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_020020EC -FUN_020020EC: ; 0x020020EC + thumb_func_start CreateYesNoMenu +CreateYesNoMenu: ; 0x020020EC push {r3-r7, lr} sub sp, #0x20 ldr r5, [sp, #0x3c] @@ -777,13 +777,13 @@ FUN_020020EC: ; 0x020020EC mov r2, #0x29 mov r3, #0x0 add r6, r0, #0x0 - bl ListMenu_ItemFromMsgData + bl ListMenu_ItemFromMsgData ; YES mov r3, #0x2a add r2, r3, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 sub r3, #0x2c - bl ListMenu_ItemFromMsgData + bl ListMenu_ItemFromMsgData ; NO add r0, r4, #0x0 bl DestroyMsgData add r0, r5, #0x0 @@ -834,15 +834,15 @@ FUN_020020EC: ; 0x020020EC nop _02002194: .word 0x00000141 - thumb_func_start FUN_02002198 -FUN_02002198: ; 0x02002198 + thumb_func_start Std_CreateYesNoMenu +Std_CreateYesNoMenu: ; 0x02002198 push {r4, lr} sub sp, #0x8 mov r4, #0x0 str r4, [sp, #0x0] ldr r4, [sp, #0x10] str r4, [sp, #0x4] - bl FUN_020020EC + bl CreateYesNoMenu add sp, #0x8 pop {r4, pc} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index d16d93f2..f35fd58e 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -879,7 +879,7 @@ FUN_02038C78: ; 0x02038C78 add r5, r0, #0x0 add r6, r1, #0x0 add r7, r2, #0x0 - bl FUN_02038E20 + bl CreateFieldContext add r4, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -932,7 +932,7 @@ FUN_02038CD8: ; 0x02038CD8 add r5, r3, #0x0 bl FUN_02046528 str r0, [sp, #0x8] - bl FUN_02038E20 + bl CreateFieldContext add r4, r0, #0x0 ldr r0, [sp, #0x8] ldr r3, [sp, #0x4] @@ -958,7 +958,7 @@ FUN_02038D10: ; 0x02038D10 add r7, r2, #0x0 bl FUN_02046528 str r0, [sp, #0x4] - bl FUN_02038E20 + bl CreateFieldContext add r4, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -1031,7 +1031,7 @@ _02038DA8: cmp r0, #0x0 bne _02038DD2 add r0, r6, #0x0 - bl FUN_02038E48 + bl DeleteScriptContext ldrb r0, [r4, #0x9] cmp r0, #0x0 bne _02038DC8 @@ -1081,8 +1081,8 @@ _02038E1A: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start FUN_02038E20 -FUN_02038E20: ; 0x02038E20 + thumb_func_start CreateFieldContext +CreateFieldContext: ; 0x02038E20 push {r4, lr} mov r0, #0xb mov r1, #0xdc @@ -1102,8 +1102,8 @@ _02038E32: .balign 4 _02038E44: .word 0x0003643F - thumb_func_start FUN_02038E48 -FUN_02038E48: ; 0x02038E48 + thumb_func_start DeleteScriptContext +DeleteScriptContext: ; 0x02038E48 push {r4, lr} add r4, r0, #0x0 ldr r0, [r4, #0x78] @@ -2139,8 +2139,8 @@ _02039622: nop _02039628: .word 0x00001388 - thumb_func_start FUN_0203962C -FUN_0203962C: ; 0x0203962C + thumb_func_start Field_TrainerIsDoubleBattle +Field_TrainerIsDoubleBattle: ; 0x0203962C push {r3, lr} mov r1, #0x9 bl TrainerData_GetAttr @@ -2443,17 +2443,17 @@ _02039856: nop _02039870: .word 0x0000FFFF - thumb_func_start FUN_02039874 -FUN_02039874: ; 0x02039874 - ldr r3, _0203987C ; =FUN_02039880 + thumb_func_start RunPokemonCenterScriptsInNewContext +RunPokemonCenterScriptsInNewContext: ; 0x02039874 + ldr r3, _0203987C ; =RunScriptInNewContext mov r1, #0x96 lsl r1, r1, #0x6 bx r3 .balign 4 -_0203987C: .word FUN_02039880 +_0203987C: .word RunScriptInNewContext - thumb_func_start FUN_02039880 -FUN_02039880: ; 0x02039880 + thumb_func_start RunScriptInNewContext +RunScriptInNewContext: ; 0x02039880 push {r4, lr} bl CreateScriptContext add r4, r0, #0x0 @@ -2463,7 +2463,7 @@ _02039888: cmp r0, #0x1 beq _02039888 add r0, r4, #0x0 - bl FUN_02038E48 + bl DeleteScriptContext pop {r4, pc} .balign 4 @@ -2503,7 +2503,7 @@ _020398CE: b _020398E2 _020398DC: add r0, r5, #0x0 - bl FUN_02039880 + bl RunScriptInNewContext _020398E2: mov r0, #0x1 pop {r3-r5, pc} diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index 4ca21350..d9259556 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -599,7 +599,7 @@ FUN_02048D90: ; 0x02048D90 add r4, r0, #0x0 mov r1, #0x0 str r1, [r4, #0x6c] - bl FUN_02039874 + bl RunPokemonCenterScriptsInNewContext ldr r1, _02048DA8 ; =FUN_02048D34 add r0, r4, #0x0 mov r2, #0x0 @@ -2040,7 +2040,7 @@ _020498DC: ldr r0, [r5, #0x8] ldr r1, _02049ABC ; =UNK_020F46D8 ldr r2, _02049AB8 ; =0x000003D9 - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x3c] mov r0, #0x2 str r0, [r4, #0x0] diff --git a/arm9/asm/unk_02054590.s b/arm9/asm/unk_02054590.s index c4969083..6f52c967 100644 --- a/arm9/asm/unk_02054590.s +++ b/arm9/asm/unk_02054590.s @@ -131,8 +131,8 @@ FUN_02054658: ; 0x02054658 add sp, #0xc pop {r3-r6, pc} - thumb_func_start FUN_02054690 -FUN_02054690: ; 0x02054690 + thumb_func_start DrawFieldMessage +DrawFieldMessage: ; 0x02054690 push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index 8429979f..ac7a6808 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -241,7 +241,7 @@ FUN_0205C73C: ; 0x0205C73C str r0, [r5, #0xc] lsl r0, r0, #0x10 lsr r0, r0, #0x10 - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle str r0, [r5, #0x10] str r4, [r5, #0x14] pop {r3-r5, pc} diff --git a/arm9/asm/unk_020625EC.s b/arm9/asm/unk_020625EC.s index e60a5b4f..8383e9bb 100644 --- a/arm9/asm/unk_020625EC.s +++ b/arm9/asm/unk_020625EC.s @@ -430,7 +430,7 @@ FUN_020628BC: ; 0x020628BC ldr r0, [r0, #0x0] ldr r2, _020628E4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu add r4, #0xc8 str r0, [r4, #0x0] add sp, #0x4 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 74da05c0..45f5de1d 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -2192,7 +2192,7 @@ FUN_02066520: ; 0x02066520 ldr r0, [r4, r0] ldr r2, _02066548 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5a lsl r1, r1, #0x2 str r0, [r4, r1] diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 7fa07ac0..8e89581c 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -1314,7 +1314,7 @@ _0206D1F0: ldr r0, [r4, #0x0] mov r2, #0x1 mov r3, #0x8 - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x40] add r0, r4, #0x0 add r0, #0x64 @@ -1537,7 +1537,7 @@ _0206D3CC: ldr r0, [r4, #0x0] mov r2, #0x1 mov r3, #0x8 - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x40] add r0, r4, #0x0 add r0, #0x64 diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index f35f769c..5b3ed0a3 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -1741,7 +1741,7 @@ FUN_020732CC: ; 0x020732CC ldr r1, _020732EC ; =UNK_020F96EC mov r2, #0x1 mov r3, #0xe - bl FUN_02002198 + bl Std_CreateYesNoMenu ldr r1, _020732F0 ; =0x000006FC str r0, [r4, r1] add sp, #0x4 diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index 82d06472..e4ce48cf 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -415,7 +415,7 @@ _020897B8: ldr r0, [r4, #0x14] ldr r2, _02089894 ; =0x000001D9 mov r3, #0x3 - bl FUN_020020EC + bl CreateYesNoMenu str r0, [r4, #0x2c] mov r0, #0x1 str r0, [r4, #0x4] @@ -453,7 +453,7 @@ _02089802: ldr r0, [r4, #0x14] ldr r2, _02089894 ; =0x000001D9 mov r3, #0x3 - bl FUN_020020EC + bl CreateYesNoMenu str r0, [r4, #0x2c] mov r0, #0x3 str r0, [r4, #0x4] diff --git a/arm9/global.inc b/arm9/global.inc index 65781a0c..d703c8eb 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -212,8 +212,8 @@ .extern FUN_02001DDC .extern FUN_02001E5C .extern FUN_02001E60 -.extern FUN_020020EC -.extern FUN_02002198 +.extern CreateYesNoMenu +.extern Std_CreateYesNoMenu .extern FUN_020021AC .extern FUN_020021CC .extern FUN_020021EC @@ -2691,13 +2691,13 @@ .extern FUN_020395BC .extern FUN_020395F4 .extern FUN_02039618 -.extern FUN_0203962C +.extern Field_TrainerIsDoubleBattle .extern TrainerFlagCheck .extern TrainerFlagSet .extern TrainerFlagClear .extern FUN_02039694 .extern FUN_02039754 -.extern FUN_02039874 +.extern RunPokemonCenterScriptsInNewContext .extern FUN_0203989C .extern ScrCmd_nop .extern ScrCmd_nop2 @@ -3804,7 +3804,7 @@ .extern FUN_02054608 .extern FUN_0205464C .extern FUN_02054658 -.extern FUN_02054690 +.extern DrawFieldMessage .extern FUN_020546C8 .extern FUN_020546E0 .extern FUN_02054744 diff --git a/arm9/modules/05/asm/mod05_021E1374.s b/arm9/modules/05/asm/mod05_021E1374.s index e3bb69a4..df43ddb9 100644 --- a/arm9/modules/05/asm/mod05_021E1374.s +++ b/arm9/modules/05/asm/mod05_021E1374.s @@ -915,7 +915,7 @@ MOD05_021E1A30: ; 0x021E1A30 str r0, [sp, #0xc] bl FUN_020395F4 str r0, [sp, #8] - bl FUN_0203962C + bl Field_TrainerIsDoubleBattle cmp r0, #0 bne _021E1A60 add sp, #0x10 diff --git a/arm9/modules/05/asm/mod05_021E2B80.s b/arm9/modules/05/asm/mod05_021E2B80.s index 2722d177..16e19ae0 100644 --- a/arm9/modules/05/asm/mod05_021E2B80.s +++ b/arm9/modules/05/asm/mod05_021E2B80.s @@ -42,7 +42,7 @@ MOD05_021E2BB8: ; 0x021E2BB8 push {r4, lr} add r4, r0, #0 add r0, r1, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay strb r0, [r4] mov r0, #0 strb r0, [r4, #1] @@ -68,15 +68,15 @@ MOD05_021E2BD0: ; 0x021E2BD0 add r0, #0x80 ldr r0, [r0] add r1, sp, #8 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #8 add r1, r6, #0 add r2, r7, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer cmp r4, #0 bne _021E2C10 add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 mov r1, #1 @@ -89,7 +89,7 @@ _021E2C16: str r0, [sp] ldr r3, [sp, #4] add r0, sp, #8 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} @@ -107,14 +107,14 @@ MOD05_ShowMessageInField: ; 0x021E2C24 add r5, #0x80 ldr r0, [r5] add r1, sp, #0 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #0 add r1, r4, #0 add r2, r6, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer add r0, sp, #0 mov r1, #1 - bl MOD05_021E2E68 + bl MOD05_AddTextPrinterParameterized add sp, #0x18 pop {r4, r5, r6, pc} @@ -134,7 +134,7 @@ MOD05_021E2C58: ; 0x021E2C58 add r0, #0x80 ldr r0, [r0] add r1, sp, #4 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox add r0, sp, #0x20 ldrh r0, [r0, #0x10] add r1, r4, #0 @@ -142,13 +142,13 @@ MOD05_021E2C58: ; 0x021E2C58 str r0, [sp] add r0, sp, #4 add r3, r7, #0 - bl MOD05_021E2DF0 + bl MOD05_ExpandEasyChatMessage add r0, sp, #0x20 ldrb r0, [r0, #0x14] cmp r0, #0xff beq _021E2CB0 add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 str r0, [sp] @@ -156,13 +156,13 @@ MOD05_021E2C58: ; 0x021E2C58 ldrb r3, [r3, #0x14] add r0, sp, #4 mov r1, #1 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x1c pop {r4, r5, r6, r7, pc} _021E2CB0: add r0, sp, #4 mov r1, #1 - bl MOD05_021E2E68 + bl MOD05_AddTextPrinterParameterized add sp, #0x1c pop {r4, r5, r6, r7, pc} @@ -181,25 +181,25 @@ MOD05_021E2CBC: ; 0x021E2CBC add r0, #0x80 ldr r0, [r0] add r1, sp, #4 - bl MOD05_021E2D9C + bl MOD05_CreateMessageBox ldr r1, [r5, #0x78] add r0, sp, #4 add r2, r4, #0 - bl MOD05_021E2DD4 + bl MOD05_ReadAndExpandMsgDataViaBuffer add r0, r5, #0 - bl MOD05_021E2D00 + bl MOD05_ScriptContext_GetTextFrameDelay add r2, r0, #0 mov r0, #0 str r0, [sp] add r0, sp, #4 mov r1, #1 add r3, r6, #0 - bl MOD05_021E2E40 + bl MOD05_DrawFieldMessage add sp, #0x1c pop {r3, r4, r5, r6, pc} - thumb_func_start MOD05_021E2D00 -MOD05_021E2D00: ; 0x021E2D00 + thumb_func_start MOD05_ScriptContext_GetTextFrameDelay +MOD05_ScriptContext_GetTextFrameDelay: ; 0x021E2D00 push {r3, lr} add r0, #0x80 ldr r0, [r0] @@ -272,8 +272,8 @@ MOD05_021E2D5C: ; 0x021E2D5C str r0, [r4, #0x14] pop {r4, r5, r6, pc} - thumb_func_start MOD05_021E2D9C -MOD05_021E2D9C: ; 0x021E2D9C + thumb_func_start MOD05_CreateMessageBox +MOD05_CreateMessageBox: ; 0x021E2D9C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 @@ -300,8 +300,8 @@ _021E2DC8: pop {r3, r4, r5, pc} .balign 4, 0 - thumb_func_start MOD05_021E2DD4 -MOD05_021E2DD4: ; 0x021E2DD4 + thumb_func_start MOD05_ReadAndExpandMsgDataViaBuffer +MOD05_ReadAndExpandMsgDataViaBuffer: ; 0x021E2DD4 push {r4, lr} add r4, r0, #0 add r0, r1, #0 @@ -315,8 +315,8 @@ MOD05_021E2DD4: ; 0x021E2DD4 pop {r4, pc} .balign 4, 0 - thumb_func_start MOD05_021E2DF0 -MOD05_021E2DF0: ; 0x021E2DF0 + thumb_func_start MOD05_ExpandEasyChatMessage +MOD05_ExpandEasyChatMessage: ; 0x021E2DF0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 @@ -351,8 +351,8 @@ MOD05_021E2DF0: ; 0x021E2DF0 pop {r3, r4, r5, r6, r7, pc} .balign 4, 0 - thumb_func_start MOD05_021E2E40 -MOD05_021E2E40: ; 0x021E2E40 + thumb_func_start MOD05_DrawFieldMessage +MOD05_DrawFieldMessage: ; 0x021E2E40 push {r4, r5, r6, lr} sub sp, #8 add r4, r0, #0 @@ -367,14 +367,14 @@ MOD05_021E2E40: ; 0x021E2E40 ldr r1, [r4] add r2, r6, #0 add r3, r5, #0 - bl FUN_02054690 + bl DrawFieldMessage ldr r1, [r4, #0x14] strb r0, [r1] add sp, #8 pop {r4, r5, r6, pc} - thumb_func_start MOD05_021E2E68 -MOD05_021E2E68: ; 0x021E2E68 + thumb_func_start MOD05_AddTextPrinterParameterized +MOD05_AddTextPrinterParameterized: ; 0x021E2E68 push {r3, r4, lr} sub sp, #0xc mov r3, #0 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 597bd083..23f6ea7b 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -14988,7 +14988,7 @@ MOD05_021EFD40: ; 0x021EFD40 ldr r0, [r0, #8] ldr r2, _021EFD78 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #3 str r0, [r4, #0x48] @@ -15079,7 +15079,7 @@ MOD05_021EFDF0: ; 0x021EFDF0 ldr r0, [r0, #8] ldr r2, _021EFE28 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #5 str r0, [r4, #0x48] @@ -15145,7 +15145,7 @@ MOD05_021EFE70: ; 0x021EFE70 ldr r0, [r0, #8] ldr r2, _021EFEA8 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #7 str r0, [r4, #0x48] @@ -15392,7 +15392,7 @@ MOD05_021F0080: ; 0x021F0080 ldr r0, [r0, #8] ldr r2, _021F00B8 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x44] mov r0, #0xb str r0, [r4, #0x48] diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index ac0c3eeb..d39eedbd 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -10293,7 +10293,7 @@ _0223E5FE: ldr r0, [r4] ldr r1, _0223E618 ; =0x0224F348 mov r2, #0x1f - bl FUN_02002198 + bl Std_CreateYesNoMenu add r4, #0x80 str r0, [r4] mov r0, #8 @@ -12384,7 +12384,7 @@ MOD06_0223F720: ; 0x0223F720 ldr r0, [r0, #0x68] mov r3, #0xb ldr r0, [r0, #8] - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x60] ldr r0, _0223F76C ; =MOD06_0223F770 bl MOD06_0223F8BC @@ -13438,7 +13438,7 @@ MOD06_0223FFD4: ; 0x0223FFD4 ldr r0, [r0, #0x68] mov r3, #0xb ldr r0, [r0, #8] - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x60] ldr r0, _0224002C ; =MOD06_02240030 bl MOD06_0223F8BC @@ -13698,7 +13698,7 @@ MOD06_02240204: ; 0x02240204 ldr r0, [r0, #0x68] mov r3, #0xb ldr r0, [r0, #8] - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x60] ldr r0, _02240254 ; =MOD06_02240258 bl MOD06_0223F8BC @@ -13821,7 +13821,7 @@ MOD06_02240310: ; 0x02240310 ldr r0, [r0, #0x68] mov r3, #0xb ldr r0, [r0, #8] - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x60] ldr r0, _02240360 ; =MOD06_0223FD08 bl MOD06_0223F8BC @@ -19372,7 +19372,7 @@ _02242FA6: ldr r0, [r0, #8] ldr r2, _02242FE8 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x64] add r0, r4, #0 mov r1, #0x24 @@ -42800,7 +42800,7 @@ MOD06_0224E470: ; 0x0224E470 mov r2, #0x1f mov r3, #0xb str r4, [sp] - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r5, #4] str r4, [r5, #8] mov r0, #1 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index d09c0d20..6581e679 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -1223,7 +1223,7 @@ MOD18_02239F98: ; 0x02239F98 ldr r0, [r0] mov r3, #0xb ldr r0, [r0, #8] - bl FUN_02002198 + bl Std_CreateYesNoMenu ldr r2, _0223A044 ; =0x02251380 ldr r1, _0223A050 ; =0x000007E4 ldr r3, [r2] @@ -25227,7 +25227,7 @@ _02245898: ldr r1, _022459E0 ; =0x022504F8 ldr r2, _022459E4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #4] mov r0, #2 str r0, [r4, #0xc] @@ -25262,7 +25262,7 @@ _022458D4: ldr r1, _022459E0 ; =0x022504F8 ldr r2, _022459E4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #4] mov r0, #4 str r0, [r4, #0xc] @@ -25302,7 +25302,7 @@ _0224592A: ldr r1, _022459E0 ; =0x022504F8 ldr r2, _022459E4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #4] mov r0, #6 str r0, [r4, #0xc] @@ -25669,7 +25669,7 @@ _02245C14: ldr r1, _02245E08 ; =0x022504F8 ldr r2, _02245E0C ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #4] mov r0, #2 str r0, [r4, #0xc] @@ -25715,7 +25715,7 @@ _02245C7C: ldr r1, _02245E08 ; =0x022504F8 ldr r2, _02245E0C ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #4] mov r0, #5 str r0, [r4, #0xc] @@ -27379,7 +27379,7 @@ _022469E0: ldr r1, _02246AD8 ; =0x022504F8 ldr r2, _02246ADC ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #8] mov r0, #6 str r0, [r4, #0xc] @@ -30583,7 +30583,7 @@ _0224830C: ldr r0, [r0, #8] ldr r2, _022484D4 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x24] add r0, r4, #0 mov r1, #0x14 @@ -31535,7 +31535,7 @@ _02248AAE: ldr r0, [r0, #8] ldr r2, _02248D94 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x20] b _02248DB6 _02248AD8: @@ -31664,7 +31664,7 @@ _02248BC2: ldr r0, [r0, #8] ldr r2, _02248D94 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x20] b _02248DB6 _02248BEC: @@ -35073,7 +35073,7 @@ MOD18_0224A710: ; 0x0224A710 ldr r0, [r0, #8] ldr r2, _0224A744 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x5c] ldr r0, _0224A748 ; =0x00000246 mov r1, #0xc @@ -35224,7 +35224,7 @@ MOD18_0224A844: ; 0x0224A844 ldr r0, [r0, #8] ldr r2, _0224A878 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x5c] ldr r0, _0224A87C ; =0x00000246 mov r1, #1 @@ -37895,7 +37895,7 @@ _0224BE0A: ldr r0, [r0, #8] ldr r2, _0224BE80 ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #8] mov r0, #1 str r0, [r4] @@ -40208,7 +40208,7 @@ _0224D0DA: ldr r0, [r0, #8] ldr r2, _0224D1EC ; =0x000003D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r4, #0x5c] ldr r0, _0224D1D8 ; =0x00000246 mov r1, #0xe diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 11026c32..49c51d11 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -1502,7 +1502,7 @@ MOD54_021D8120: ; 0x021D8120 ldr r1, _021D814C ; =0x021D9678 mov r2, #0x1f mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x32 lsl r1, r1, #4 str r0, [r5, r1] @@ -1767,7 +1767,7 @@ MOD54_021D8340: ; 0x021D8340 ldr r1, _021D836C ; =0x021D9678 mov r2, #0x1f mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x32 lsl r1, r1, #4 str r0, [r5, r1] @@ -2128,7 +2128,7 @@ MOD54_021D8600: ; 0x021D8600 ldr r1, _021D862C ; =0x021D9678 mov r2, #0x1f mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x32 lsl r1, r1, #4 str r0, [r5, r1] diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 8c06cc76..b6f57d67 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -2031,7 +2031,7 @@ MOD55_021D8544: ; 0x021D8544 ldr r1, _021D857C ; =0x021DA2AC ldr r2, _021D8580 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu add r1, r5, #0 add r1, #0xe8 str r0, [r1] @@ -5253,7 +5253,7 @@ MOD55_021D9FDC: ; 0x021D9FDC ldr r1, _021DA014 ; =0x021DA2AC ldr r2, _021DA018 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu add r1, r5, #0 add r1, #0xe8 str r0, [r1] diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 309d4cc0..97d746da 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1565,7 +1565,7 @@ _02212A9A: ldr r1, _02212B34 ; =0x02216310 ldr r2, _02212B38 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -1627,7 +1627,7 @@ MOD56_02212B3C: ; 0x02212B3C ldr r1, _02212B7C ; =0x022162F8 ldr r2, _02212B80 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -1727,7 +1727,7 @@ MOD56_02212BE8: ; 0x02212BE8 ldr r1, _02212C48 ; =0x02216310 ldr r2, _02212C4C ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -1786,7 +1786,7 @@ _02212C74: ldr r1, _02212CC4 ; =0x02216310 ldr r2, _02212CC8 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -2378,7 +2378,7 @@ MOD56_022130F4: ; 0x022130F4 ldr r1, _02213134 ; =0x02216308 ldr r2, _02213138 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -4575,7 +4575,7 @@ MOD56_02214238: ; 0x02214238 ldr r1, _02214284 ; =0x02216308 ldr r2, _02214288 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -4968,7 +4968,7 @@ MOD56_02214520: ; 0x02214520 ldr r1, _02214560 ; =0x02216308 ldr r2, _02214564 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -6212,7 +6212,7 @@ MOD56_02214F0C: ; 0x02214F0C ldr r1, _02214F4C ; =0x02216308 ldr r2, _02214F50 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -6317,7 +6317,7 @@ MOD56_02214FD8: ; 0x02214FD8 ldr r1, _02215018 ; =0x02216308 ldr r2, _0221501C ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -7646,7 +7646,7 @@ MOD56_02215A8C: ; 0x02215A8C ldr r1, _02215ACC ; =0x02216308 ldr r2, _02215AD0 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -7831,7 +7831,7 @@ _02215BF0: ldr r1, _02215C28 ; =0x02216308 ldr r2, _02215C2C ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] @@ -7985,7 +7985,7 @@ MOD56_02215D20: ; 0x02215D20 ldr r1, _02215D60 ; =0x02216308 ldr r2, _02215D64 ; =0x000001D9 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x5f lsl r1, r1, #2 str r0, [r5, r1] diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index 861757e8..ed38301b 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -374,7 +374,7 @@ MOD61_021D7790: ; 0x021D7790 ldr r0, [r4, #0x18] mov r2, #1 mov r3, #5 - bl FUN_02002198 + bl Std_CreateYesNoMenu add r4, #0xa4 str r0, [r4] add sp, #4 diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index 71dc63ea..645c9569 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -2212,7 +2212,7 @@ _021D8604: ldr r2, _021D86D8 ; =0x0000029E add r1, #0xb0 mov r3, #1 - bl FUN_02002198 + bl Std_CreateYesNoMenu add r1, r4, #0 add r1, #0xb8 str r0, [r1] diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 25ca7a88..4ff5aca1 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -2418,7 +2418,7 @@ MOD65_021D87B0: ; 0x021D87B0 ldr r0, [r4, #0x24] mov r2, #0x1f mov r3, #0xf - bl FUN_02002198 + bl Std_CreateYesNoMenu add r4, #0xd4 str r0, [r4] add sp, #4 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 21cf712a..e7f0b24d 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -7038,7 +7038,7 @@ _02230FC8: ldr r1, _02230FFC ; =0x022313CC ldr r2, _02231000 ; =0x000001F7 mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu str r0, [r5] ldr r0, [r4] add r0, r0, #1 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 214736ee..87c9c55a 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -9515,7 +9515,7 @@ MOD75_021EB6E0: ; 0x021EB6E0 ldr r1, _021EB700 ; =0x021EC6AC ldr r2, _021EB704 ; =0x000003F7 mov r3, #0xe - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x56 lsl r1, r1, #2 str r0, [r4, r1] diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 7f49e675..d81a7697 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -735,7 +735,7 @@ MOD76_021D7AB4: ; 0x021D7AB4 ldr r1, _021D7AD8 ; =0x021D9034 mov r2, #1 mov r3, #0xc - bl FUN_02002198 + bl Std_CreateYesNoMenu mov r1, #0x43 lsl r1, r1, #2 str r0, [r4, r1] diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 67824222..4536decb 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -291,7 +291,7 @@ _021D7744: ldr r2, _021D7998 ; =0x000001D9 ldr r0, [r4, r0] mov r3, #7 - bl FUN_02002198 + bl Std_CreateYesNoMenu ldr r1, _021D799C ; =0x0000C05C str r0, [r4, r1] mov r0, #6 @@ -499,7 +499,7 @@ _021D78EE: ldr r2, _021D7998 ; =0x000001D9 ldr r0, [r4, r0] mov r3, #7 - bl FUN_02002198 + bl Std_CreateYesNoMenu ldr r1, _021D799C ; =0x0000C05C str r0, [r4, r1] mov r0, #0xd diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index ef7fab2d..9e91c64e 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -2192,7 +2192,7 @@ MOD80_0222E6A8: ; 0x0222E6A8 add r1, r3, #0 mov r2, #0x1f mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu add sp, #0xc pop {r3, r4, r5, r6, pc} .align 2, 0 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 89f24d96..f1cd74ed 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -1230,7 +1230,7 @@ MOD82_0222DF38: ; 0x0222DF38 add r1, r3, #0 mov r2, #0x1f mov r3, #0xb - bl FUN_02002198 + bl Std_CreateYesNoMenu add sp, #0xc pop {r3, r4, r5, r6, pc} .align 2, 0 -- cgit v1.2.3 From 1fc2021e29935b1b4930203ba7ec1a2b0380d9cb Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 14 Jan 2021 21:28:45 +0000 Subject: decompile CTRDG_backup --- arm9/asm/CTRDG_backup.s | 189 --------------------------------------- arm9/asm/CTRDG_flash_AT29LV512.s | 48 +++++----- arm9/asm/CTRDG_flash_LE39FW512.s | 64 ++++++------- arm9/asm/CTRDG_flash_MX29L010.s | 56 ++++++------ arm9/asm/CTRDG_flash_MX29L512.s | 16 ++-- arm9/asm/CTRDG_flash_common.s | 80 ++++++++--------- arm9/lib/include/CTRDG_backup.h | 41 +++++++++ arm9/lib/include/CTRDG_flash.h | 25 ++++++ arm9/lib/include/CTRDG_task.h | 25 ++++++ arm9/lib/include/MI_exMemory.h | 18 ++++ arm9/lib/src/CTRDG_backup.c | 94 +++++++++++++++++++ 11 files changed, 335 insertions(+), 321 deletions(-) delete mode 100644 arm9/asm/CTRDG_backup.s create mode 100644 arm9/lib/include/CTRDG_backup.h create mode 100644 arm9/lib/include/CTRDG_flash.h create mode 100644 arm9/lib/include/CTRDG_task.h create mode 100644 arm9/lib/src/CTRDG_backup.c (limited to 'arm9') diff --git a/arm9/asm/CTRDG_backup.s b/arm9/asm/CTRDG_backup.s deleted file mode 100644 index e4c4baa4..00000000 --- a/arm9/asm/CTRDG_backup.s +++ /dev/null @@ -1,189 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern AT29LV512_lib - .extern CTRDGi_EraseFlash4KBAT - .extern CTRDGi_EraseFlash4KBAsyncAT - .extern CTRDGi_EraseFlashChipAT - .extern CTRDGi_EraseFlashChipAsyncAT - .extern CTRDGi_EraseFlashChipAsyncLE - .extern CTRDGi_EraseFlashChipAsyncMX - .extern CTRDGi_EraseFlashChipLE - .extern CTRDGi_EraseFlashChipMX - .extern CTRDGi_EraseFlashSectorAT - .extern CTRDGi_EraseFlashSectorAsyncAT - .extern CTRDGi_EraseFlashSectorAsyncLE - .extern CTRDGi_EraseFlashSectorAsyncMX - .extern CTRDGi_EraseFlashSectorMX - .extern CTRDGi_PollingSR1MCOMMON - .extern CTRDGi_PollingSR512kCOMMON - .extern CTRDGi_WriteFlash4KBAT - .extern CTRDGi_WriteFlash4KBAsyncAT - .extern CTRDGi_WriteFlashSectorAT - .extern CTRDGi_WriteFlashSectorAsyncAT - .extern CTRDGi_WriteFlashSectorAsyncLE - .extern CTRDGi_WriteFlashSectorAsyncMX - .extern CTRDGi_WriteFlashSectorLE - .extern CTRDGi_WriteFlashSectorMX - .extern CTRDGi_WriteFlashSectorAsyncMX5 - .extern CTRDGi_WriteFlashSectorMX5 - .extern defaultFlash1M - .extern defaultFlash512 - .extern LE26FV10N1TS_10 - .extern LE39FW512 - .extern MN63F805MNP - .extern MX29L010 - .extern UNK_021D6B14 - .extern UNK_021D6B30 - .extern UNK_021D6B28 - .extern UNK_021D6B1C - .extern UNK_021D6B24 - .extern UNK_021D6B20 - .extern UNK_021D6B0C - .extern UNK_021D6B34 - .extern UNK_021D6B2C - .extern UNK_021D6B4C - .extern UNK_021D6B18 - - .section .rodata - - .global UNK_02103FE4 -UNK_02103FE4: ; 0x02103FE4 - .byte 0x14, 0x00, 0x00, 0x00 - - .global UNK_02103FE8 -UNK_02103FE8: ; 0x02103FE8 - .word MX29L010 - .word LE26FV10N1TS_10 - .word defaultFlash1M - - .global UNK_02103FF4 -UNK_02103FF4: ; 0x02103FF4 - .word LE39FW512 - .word AT29LV512_lib - .word MN63F805MNP - .word defaultFlash512 - - .section .bss - - .text - - arm_func_start CTRDG_IdentifyAgbBackup -CTRDG_IdentifyAgbBackup: ; 0x020DBD50 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x4 - mov r7, r0 - cmp r7, #0x1 - mov r0, #0x1 - bhi _020DBEAC - bl OS_GetLockID - ldr r1, _020DBED8 ; =UNK_021D6B0C - strh r0, [r1, #0x0] - ldrh r0, [r1, #0x0] - bl OS_LockCartridge - ldr r6, _020DBEDC ; =0x04000204 - ldr r1, _020DBEE0 ; =UNK_02103FE4 - ldrh r3, [r6, #0x0] - ldrh r2, [r6, #0x0] - ldr r0, _020DBEE4 ; =UNK_021D6B28 - and r4, r3, #0x3 - bic r2, r2, #0x3 - orr r2, r2, #0x3 - strh r2, [r6, #0x0] - str r1, [r0, #0x0] - bl CTRDGi_ReadFlashID - ldr r2, _020DBEDC ; =0x04000204 - mov r6, r0 - ldrh r1, [r2, #0x0] - cmp r7, #0x0 - ldreq r5, _020DBEE8 ; =UNK_02103FF4 - bic r1, r1, #0x3 - orr r1, r1, r4 - cmp r7, #0x1 - ldr r0, _020DBED8 ; =UNK_021D6B0C - strh r1, [r2, #0x0] - ldrh r0, [r0, #0x0] - ldreq r5, _020DBEEC ; =UNK_02103FE8 - bl OS_UnlockCartridge - ldr r2, [r5, #0x0] - mov r0, #0x1 - ldrh r1, [r2, #0x38] - cmp r1, #0x0 - beq _020DBE14 - and r3, r6, #0xff -_020DBDF4: - ldrh r1, [r2, #0x38] - cmp r3, r1 - moveq r0, #0x0 - beq _020DBE14 - ldr r2, [r5, #0x4]! - ldrh r1, [r2, #0x38] - cmp r1, #0x0 - bne _020DBDF4 -_020DBE14: - ldr r2, [r2, #0x0] - ldr r1, _020DBEF0 ; =UNK_021D6B14 - ldr r3, _020DBEF4 ; =UNK_021D6B34 - str r2, [r1, #0x0] - ldr r1, [r5, #0x0] - ldr r2, _020DBEF8 ; =UNK_021D6B2C - ldr r4, [r1, #0x4] - ldr r1, _020DBEFC ; =UNK_021D6B18 - str r4, [r3, #0x0] - ldr r3, [r5, #0x0] - ldr r6, _020DBF00 ; =UNK_021D6B1C - ldr r3, [r3, #0x8] - ldr r4, _020DBF04 ; =UNK_021D6B30 - str r3, [r2, #0x0] - ldr r2, [r5, #0x0] - ldr r3, _020DBF08 ; =UNK_021D6B24 - ldr r7, [r2, #0xc] - ldr r2, _020DBEE4 ; =UNK_021D6B28 - str r7, [r1, #0x0] - ldr r7, [r5, #0x0] - ldr r1, _020DBF0C ; =UNK_021D6B20 - ldr r7, [r7, #0x10] - add sp, sp, #0x4 - str r7, [r6, #0x0] - ldr r6, [r5, #0x0] - ldr r6, [r6, #0x14] - str r6, [r4, #0x0] - ldr r4, [r5, #0x0] - ldr r4, [r4, #0x18] - str r4, [r3, #0x0] - ldr r3, [r5, #0x0] - ldr r3, [r3, #0x1c] - str r3, [r2, #0x0] - ldr r2, [r5, #0x0] - add r2, r2, #0x20 - str r2, [r1, #0x0] - ldmia sp!, {r4-r7,lr} - bx lr -_020DBEAC: - cmp r7, #0x2 - addne sp, sp, #0x4 - ldmneia sp!, {r4-r7,lr} - bxne lr - bl OS_GetLockID - ldr r1, _020DBF10 ; =UNK_021D6B4C - strh r0, [r1, #0x0] - mov r0, #0x0 - add sp, sp, #0x4 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020DBED8: .word UNK_021D6B0C -_020DBEDC: .word 0x04000204 -_020DBEE0: .word UNK_02103FE4 -_020DBEE4: .word UNK_021D6B28 -_020DBEE8: .word UNK_02103FF4 -_020DBEEC: .word UNK_02103FE8 -_020DBEF0: .word UNK_021D6B14 -_020DBEF4: .word UNK_021D6B34 -_020DBEF8: .word UNK_021D6B2C -_020DBEFC: .word UNK_021D6B18 -_020DBF00: .word UNK_021D6B1C -_020DBF04: .word UNK_021D6B30 -_020DBF08: .word UNK_021D6B24 -_020DBF0C: .word UNK_021D6B20 -_020DBF10: .word UNK_021D6B4C diff --git a/arm9/asm/CTRDG_flash_AT29LV512.s b/arm9/asm/CTRDG_flash_AT29LV512.s index ff80e947..24b2e0f2 100644 --- a/arm9/asm/CTRDG_flash_AT29LV512.s +++ b/arm9/asm/CTRDG_flash_AT29LV512.s @@ -2,9 +2,9 @@ .include "global.inc" .extern CTRDGi_PollingSR512kCOMMON - .extern UNK_021D6B20 - .extern UNK_021D6B24 - .extern UNK_021D6B0C + .extern AgbFlash + .extern CTRDGi_PollingSR + .extern ctrdgi_flash_lock_id .extern UNK_021D6B38 .extern UNK_021D6B08 @@ -259,14 +259,14 @@ CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DC984 ; =UNK_021D6B0C + ldr r0, _020DC984 ; =ctrdgi_flash_lock_id ldr r1, [r5, #0x0] ldrh r0, [r0, #0x0] str r1, [r4, #0x0] ldr r4, [sp, #0xc] bl OS_LockCartridge ldr r5, _020DC988 ; =0x04000204 - ldr r1, _020DC98C ; =UNK_021D6B20 + ldr r1, _020DC98C ; =AgbFlash ldrh r0, [r5, #0x0] ldr r1, [r1, #0x0] ldrh r2, [r5, #0x0] @@ -302,7 +302,7 @@ _020DC91C: bne _020DC91C _020DC92C: ldr ip, _020DC994 ; =0x04000208 - ldr r3, _020DC9A0 ; =UNK_021D6B24 + ldr r3, _020DC9A0 ; =CTRDGi_PollingSR ldrh r0, [r12, #0x0] sub r1, r1, #0x1 mov r0, #0x1 @@ -311,7 +311,7 @@ _020DC92C: ldr r3, [r3, #0x0] blx r3 ldr r3, _020DC988 ; =0x04000204 - ldr r1, _020DC984 ; =UNK_021D6B0C + ldr r1, _020DC984 ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -324,14 +324,14 @@ _020DC92C: ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020DC984: .word UNK_021D6B0C +_020DC984: .word ctrdgi_flash_lock_id _020DC988: .word 0x04000204 -_020DC98C: .word UNK_021D6B20 +_020DC98C: .word AgbFlash _020DC990: .word AT29LV512_org _020DC994: .word 0x04000208 _020DC998: .word 0x0A005555 _020DC99C: .word 0x0A002AAA -_020DC9A0: .word UNK_021D6B24 +_020DC9A0: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlash4KBCoreAT CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4 @@ -399,7 +399,7 @@ CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58 ldr r0, [r5, #0x0] ldr r1, _020DCB80 ; =AT29LV512_org str r0, [r4, #0x0] - ldr r0, _020DCB84 ; =UNK_021D6B0C + ldr r0, _020DCB84 ; =ctrdgi_flash_lock_id ldrh r2, [sp, #0x20] ldrh r1, [r1, #0x28] ldrh r0, [r0, #0x0] @@ -407,7 +407,7 @@ CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58 add r5, r1, #0xa000000 bl OS_LockCartridge ldr r4, _020DCB88 ; =0x04000204 - ldr r1, _020DCB8C ; =UNK_021D6B20 + ldr r1, _020DCB8C ; =AgbFlash ldrh r0, [r4, #0x0] ldr r2, [r1, #0x0] ldrh r1, [r4, #0x0] @@ -439,7 +439,7 @@ _020DCB0C: bne _020DCB0C _020DCB18: ldr ip, _020DCB90 ; =0x04000208 - ldr r3, _020DCB9C ; =UNK_021D6B24 + ldr r3, _020DCB9C ; =CTRDGi_PollingSR ldrh r0, [r12, #0x0] sub r1, r5, #0x1 strh r2, [r12, #0x0] @@ -456,7 +456,7 @@ _020DCB18: bic r1, r1, #0x3 movne r5, r0, lsr #0x10 orr r1, r1, r4 - ldr r0, _020DCB84 ; =UNK_021D6B0C + ldr r0, _020DCB84 ; =ctrdgi_flash_lock_id strh r1, [r2, #0x0] ldrh r0, [r0, #0x0] bl OS_UnlockCartridge @@ -466,23 +466,23 @@ _020DCB18: bx lr .balign 4 _020DCB80: .word AT29LV512_org -_020DCB84: .word UNK_021D6B0C +_020DCB84: .word ctrdgi_flash_lock_id _020DCB88: .word 0x04000204 -_020DCB8C: .word UNK_021D6B20 +_020DCB8C: .word AgbFlash _020DCB90: .word 0x04000208 _020DCB94: .word 0x0A005555 _020DCB98: .word 0x0A002AAA -_020DCB9C: .word UNK_021D6B24 +_020DCB9C: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlashChipCoreAT CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r0, _020DCC7C ; =UNK_021D6B0C + ldr r0, _020DCC7C ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r4, _020DCC80 ; =0x04000204 - ldr r0, _020DCC84 ; =UNK_021D6B20 + ldr r0, _020DCC84 ; =AgbFlash ldrh r3, [r4, #0x0] ldr r0, [r0, #0x0] ldrh r1, [r4, #0x0] @@ -510,7 +510,7 @@ CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 strb r2, [lr, #0x0] ldrh r2, [r0, #0x0] ldr r2, [r1, #0x0] - ldr r1, _020DCC98 ; =UNK_021D6B24 + ldr r1, _020DCC98 ; =CTRDGi_PollingSR strh r2, [r0, #0x0] ldr r4, [r1, #0x0] mov r0, #0x3 @@ -519,7 +519,7 @@ CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 and r5, r3, #0x3 blx r4 ldr r3, _020DCC80 ; =0x04000204 - ldr r1, _020DCC7C ; =UNK_021D6B0C + ldr r1, _020DCC7C ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -532,11 +532,11 @@ CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020DCC7C: .word UNK_021D6B0C +_020DCC7C: .word ctrdgi_flash_lock_id _020DCC80: .word 0x04000204 -_020DCC84: .word UNK_021D6B20 +_020DCC84: .word AgbFlash _020DCC88: .word 0x04000208 _020DCC8C: .word UNK_021D6B38 _020DCC90: .word 0x0A005555 _020DCC94: .word 0x0A002AAA -_020DCC98: .word UNK_021D6B24 +_020DCC98: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s index b3f4b8a3..3228818d 100644 --- a/arm9/asm/CTRDG_flash_LE39FW512.s +++ b/arm9/asm/CTRDG_flash_LE39FW512.s @@ -2,9 +2,9 @@ .include "global.inc" .extern CTRDGi_PollingSR512kCOMMON - .extern UNK_021D6B20 - .extern UNK_021D6B24 - .extern UNK_021D6B0C + .extern AgbFlash + .extern CTRDGi_PollingSR + .extern ctrdgi_flash_lock_id .extern UNK_021D6B38 .extern UNK_021D6B08 @@ -128,13 +128,13 @@ CTRDGi_EraseFlashChipLE: ; 0x020DCD70 arm_func_start CTRDGi_VerifyFlashErase CTRDGi_VerifyFlashErase: ; 0x020DCD94 stmdb sp!, {r4-r6,lr} - ldr r2, _020DCE14 ; =UNK_021D6B0C + ldr r2, _020DCE14 ; =ctrdgi_flash_lock_id mov r4, r0 ldrh r0, [r2, #0x0] mov r5, r1 bl OS_LockCartridge ldr ip, _020DCE18 ; =0x04000204 - ldr r0, _020DCE1C ; =UNK_021D6B20 + ldr r0, _020DCE1C ; =AgbFlash ldrh r3, [r12, #0x0] ldr r0, [r0, #0x0] ldrh r1, [r12, #0x0] @@ -148,7 +148,7 @@ CTRDGi_VerifyFlashErase: ; 0x020DCD94 blx r5 cmp r0, #0x0 ldr r2, _020DCE18 ; =0x04000204 - ldr r0, _020DCE14 ; =UNK_021D6B0C + ldr r0, _020DCE14 ; =ctrdgi_flash_lock_id ldrh r1, [r2, #0x0] ldrne r4, _020DCE20 ; =0x00008004 bic r1, r1, #0x3 @@ -160,14 +160,14 @@ CTRDGi_VerifyFlashErase: ; 0x020DCD94 ldmia sp!, {r4-r6,lr} bx lr .balign 4 -_020DCE14: .word UNK_021D6B0C +_020DCE14: .word ctrdgi_flash_lock_id _020DCE18: .word 0x04000204 -_020DCE1C: .word UNK_021D6B20 +_020DCE1C: .word AgbFlash _020DCE20: .word 0x00008004 arm_func_start CTRDGi_VerifyFlashCoreFF CTRDGi_VerifyFlashCoreFF: ; 0x020DCE24 - ldr r1, _020DCE54 ; =UNK_021D6B20 + ldr r1, _020DCE54 ; =AgbFlash ldr r1, [r1, #0x0] ldr r2, [r1, #0x4] cmp r2, #0x0 @@ -182,7 +182,7 @@ _020DCE4C: mov r0, r2 bx lr .balign 4 -_020DCE54: .word UNK_021D6B20 +_020DCE54: .word AgbFlash arm_func_start CTRDGi_WriteFlashSectorCoreLE CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58 @@ -203,7 +203,7 @@ CTRDGi_WriteFlashSectorCoreLE: ; 0x020DCE58 ldrhs r0, _020DD018 ; =0x000080FF ldmcsia sp!, {r4-r9,lr} bxcs lr - ldr r0, _020DD01C ; =UNK_021D6B20 + ldr r0, _020DD01C ; =AgbFlash mov r9, #0x0 ldr r0, [r0, #0x0] ldrh r0, [r0, #0x8] @@ -247,11 +247,11 @@ _020DCF1C: cmp r9, r5 bls _020DCF1C _020DCF38: - ldr r0, _020DD024 ; =UNK_021D6B0C + ldr r0, _020DD024 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r5, _020DD028 ; =0x04000204 - ldr r1, _020DD01C ; =UNK_021D6B20 + ldr r1, _020DD01C ; =AgbFlash ldrh r0, [r5, #0x0] ldr r3, [r1, #0x0] ldrh r2, [r5, #0x0] @@ -295,7 +295,7 @@ _020DCFD4: ldr r2, _020DD028 ; =0x04000204 strh r0, [r3, #0x0] ldrh r1, [r2, #0x0] - ldr r0, _020DD024 ; =UNK_021D6B0C + ldr r0, _020DD024 ; =ctrdgi_flash_lock_id bic r1, r1, #0x3 orr r1, r1, r5 strh r1, [r2, #0x0] @@ -307,9 +307,9 @@ _020DCFD4: bx lr .balign 4 _020DD018: .word 0x000080FF -_020DD01C: .word UNK_021D6B20 +_020DD01C: .word AgbFlash _020DD020: .word CTRDGi_VerifyFlashCoreFF -_020DD024: .word UNK_021D6B0C +_020DD024: .word ctrdgi_flash_lock_id _020DD028: .word 0x04000204 _020DD02C: .word UNK_021D6B08 _020DD030: .word 0x04000208 @@ -329,7 +329,7 @@ CTRDGi_ProgramFlashByteLE: ; 0x020DD038 mov r0, #0xa0 strb r0, [r12, #0x0] ldrb r2, [lr, #0x0] - ldr r3, _020DD094 ; =UNK_021D6B24 + ldr r3, _020DD094 ; =CTRDGi_PollingSR mov r0, #0x1 strb r2, [r1, #0x0] ldrb r2, [lr, #0x0] @@ -341,7 +341,7 @@ CTRDGi_ProgramFlashByteLE: ; 0x020DD038 .balign 4 _020DD08C: .word 0x0A005555 _020DD090: .word 0x0A002AAA -_020DD094: .word UNK_021D6B24 +_020DD094: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlashSectorCoreLE CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 @@ -361,11 +361,11 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 ldrhs r0, _020DD1B8 ; =0x000080FF ldmcsia sp!, {r4-r6,lr} bxcs lr - ldr r0, _020DD1BC ; =UNK_021D6B0C + ldr r0, _020DD1BC ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r6, _020DD1C0 ; =0x04000204 - ldr r1, _020DD1C4 ; =UNK_021D6B20 + ldr r1, _020DD1C4 ; =AgbFlash ldrh r3, [r6, #0x0] ldr r0, [r1, #0x0] ldrh r2, [r6, #0x0] @@ -397,7 +397,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 strb r4, [r1, #0x0] ldrh r4, [r0, #0x0] ldr r4, [r2, #0x0] - ldr r2, _020DD1D8 ; =UNK_021D6B24 + ldr r2, _020DD1D8 ; =CTRDGi_PollingSR strh r4, [r0, #0x0] ldr r4, [r2, #0x0] mov r0, #0x2 @@ -405,7 +405,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 and r5, r3, #0x3 blx r4 ldr r3, _020DD1C0 ; =0x04000204 - ldr r1, _020DD1BC ; =UNK_021D6B0C + ldr r1, _020DD1BC ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -419,24 +419,24 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 bx lr .balign 4 _020DD1B8: .word 0x000080FF -_020DD1BC: .word UNK_021D6B0C +_020DD1BC: .word ctrdgi_flash_lock_id _020DD1C0: .word 0x04000204 -_020DD1C4: .word UNK_021D6B20 +_020DD1C4: .word AgbFlash _020DD1C8: .word 0x04000208 _020DD1CC: .word UNK_021D6B38 _020DD1D0: .word 0x0A005555 _020DD1D4: .word 0x0A002AAA -_020DD1D8: .word UNK_021D6B24 +_020DD1D8: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlashChipCoreLE CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r0, _020DD2B8 ; =UNK_021D6B0C + ldr r0, _020DD2B8 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r4, _020DD2BC ; =0x04000204 - ldr r0, _020DD2C0 ; =UNK_021D6B20 + ldr r0, _020DD2C0 ; =AgbFlash ldrh r3, [r4, #0x0] ldr r0, [r0, #0x0] ldrh r1, [r4, #0x0] @@ -464,7 +464,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC strb r2, [lr, #0x0] ldrh r2, [r0, #0x0] ldr r2, [r1, #0x0] - ldr r1, _020DD2D4 ; =UNK_021D6B24 + ldr r1, _020DD2D4 ; =CTRDGi_PollingSR strh r2, [r0, #0x0] ldr r4, [r1, #0x0] mov r0, #0x3 @@ -473,7 +473,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC and r5, r3, #0x3 blx r4 ldr r3, _020DD2BC ; =0x04000204 - ldr r1, _020DD2B8 ; =UNK_021D6B0C + ldr r1, _020DD2B8 ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -486,11 +486,11 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020DD2B8: .word UNK_021D6B0C +_020DD2B8: .word ctrdgi_flash_lock_id _020DD2BC: .word 0x04000204 -_020DD2C0: .word UNK_021D6B20 +_020DD2C0: .word AgbFlash _020DD2C4: .word 0x04000208 _020DD2C8: .word UNK_021D6B38 _020DD2CC: .word 0x0A005555 _020DD2D0: .word 0x0A002AAA -_020DD2D4: .word UNK_021D6B24 +_020DD2D4: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s index 5ac28935..7b4e1dc3 100644 --- a/arm9/asm/CTRDG_flash_MX29L010.s +++ b/arm9/asm/CTRDG_flash_MX29L010.s @@ -2,9 +2,9 @@ .include "global.inc" .extern CTRDGi_PollingSR1MCOMMON - .extern UNK_021D6B20 - .extern UNK_021D6B24 - .extern UNK_021D6B0C + .extern AgbFlash + .extern CTRDGi_PollingSR + .extern ctrdgi_flash_lock_id .extern UNK_021D6B38 .extern UNK_021D6B08 @@ -135,7 +135,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0 stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DD540 ; =UNK_021D6B20 + ldr r0, _020DD540 ; =AgbFlash ldr r1, [r5, #0x0] ldr r0, [r0, #0x0] str r1, [r4, #0x0] @@ -153,11 +153,11 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0 addne sp, sp, #0x28 ldmneia sp!, {r4-r8,lr} bxne lr - ldr r0, _020DD548 ; =UNK_021D6B0C + ldr r0, _020DD548 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r7, _020DD54C ; =0x04000204 - ldr r0, _020DD540 ; =UNK_021D6B20 + ldr r0, _020DD540 ; =AgbFlash ldrh r3, [r7, #0x0] ldr r2, [r0, #0x0] ldrh r1, [r7, #0x0] @@ -169,7 +169,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0 strh r1, [r7, #0x0] and r7, r3, #0x3 bl CTRDGi_SetFlashBankMx - ldr r0, _020DD540 ; =UNK_021D6B20 + ldr r0, _020DD540 ; =AgbFlash and r1, r5, #0xf ldr r3, [r0, #0x0] mov r0, r1, lsl #0x10 @@ -211,7 +211,7 @@ _020DD4FC: ldr r2, _020DD54C ; =0x04000204 strh r0, [r3, #0x0] ldrh r1, [r2, #0x0] - ldr r0, _020DD548 ; =UNK_021D6B0C + ldr r0, _020DD548 ; =ctrdgi_flash_lock_id bic r1, r1, #0x3 orr r1, r1, r7 strh r1, [r2, #0x0] @@ -222,9 +222,9 @@ _020DD4FC: ldmia sp!, {r4-r8,lr} bx lr .balign 4 -_020DD540: .word UNK_021D6B20 +_020DD540: .word AgbFlash _020DD544: .word 0x000080FF -_020DD548: .word UNK_021D6B0C +_020DD548: .word ctrdgi_flash_lock_id _020DD54C: .word 0x04000204 _020DD550: .word UNK_021D6B08 _020DD554: .word 0x04000208 @@ -244,7 +244,7 @@ CTRDGi_ProgramFlashByteMX: ; 0x020DD55C mov r0, #0xa0 strb r0, [r12, #0x0] ldrb r2, [lr, #0x0] - ldr r3, _020DD5B8 ; =UNK_021D6B24 + ldr r3, _020DD5B8 ; =CTRDGi_PollingSR mov r0, #0x1 strb r2, [r1, #0x0] ldrb r2, [lr, #0x0] @@ -256,7 +256,7 @@ CTRDGi_ProgramFlashByteMX: ; 0x020DD55C .balign 4 _020DD5B0: .word 0x0A005555 _020DD5B4: .word 0x0A002AAA -_020DD5B8: .word UNK_021D6B24 +_020DD5B8: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlashSectorCoreMX CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC @@ -268,7 +268,7 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DD748 ; =UNK_021D6B20 + ldr r0, _020DD748 ; =AgbFlash ldr r1, [r5, #0x0] ldr r0, [r0, #0x0] str r1, [r4, #0x0] @@ -279,11 +279,11 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC ldrhs r0, _020DD74C ; =0x000080FF ldmcsia sp!, {r4-r11,lr} bxcs lr - ldr r0, _020DD750 ; =UNK_021D6B0C + ldr r0, _020DD750 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r5, _020DD754 ; =0x04000204 - ldr r0, _020DD748 ; =UNK_021D6B20 + ldr r0, _020DD748 ; =AgbFlash ldrh r3, [r5, #0x0] ldr r2, [r0, #0x0] ldrh r1, [r5, #0x0] @@ -311,7 +311,7 @@ CTRDGi_EraseFlashSectorCoreMX: ; 0x020DD5BC mov r4, #0x30 str r0, [sp, #0xc] _020DD684: - ldr r0, _020DD748 ; =UNK_021D6B20 + ldr r0, _020DD748 ; =AgbFlash ldrh r12, [r8, #0x0] ldr r0, [r0, #0x0] ldr r3, _020DD75C ; =UNK_021D6B38 @@ -336,7 +336,7 @@ _020DD684: ldr r3, _020DD75C ; =UNK_021D6B38 ldr r3, [r3, #0x0] strh r3, [r8, #0x0] - ldr r3, _020DD768 ; =UNK_021D6B24 + ldr r3, _020DD768 ; =CTRDGi_PollingSR ldr r3, [r3, #0x0] blx r3 str r0, [sp, #0x4] @@ -349,7 +349,7 @@ _020DD684: beq _020DD684 _020DD714: ldr r2, _020DD754 ; =0x04000204 - ldr r1, _020DD750 ; =UNK_021D6B0C + ldr r1, _020DD750 ; =ctrdgi_flash_lock_id ldrh r0, [r2, #0x0] bic r3, r0, #0x3 ldr r0, [sp, #0x0] @@ -362,25 +362,25 @@ _020DD714: ldmia sp!, {r4-r11,lr} bx lr .balign 4 -_020DD748: .word UNK_021D6B20 +_020DD748: .word AgbFlash _020DD74C: .word 0x000080FF -_020DD750: .word UNK_021D6B0C +_020DD750: .word ctrdgi_flash_lock_id _020DD754: .word 0x04000204 _020DD758: .word 0x04000208 _020DD75C: .word UNK_021D6B38 _020DD760: .word 0x0A005555 _020DD764: .word 0x0A002AAA -_020DD768: .word UNK_021D6B24 +_020DD768: .word CTRDGi_PollingSR arm_func_start CTRDGi_EraseFlashChipCoreMX CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C stmdb sp!, {r4-r5,lr} sub sp, sp, #0x4 - ldr r0, _020DD848 ; =UNK_021D6B0C + ldr r0, _020DD848 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r4, _020DD84C ; =0x04000204 - ldr r0, _020DD850 ; =UNK_021D6B20 + ldr r0, _020DD850 ; =AgbFlash ldrh r3, [r4, #0x0] ldr r0, [r0, #0x0] ldrh r1, [r4, #0x0] @@ -408,7 +408,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C strb r2, [lr, #0x0] ldrh r2, [r0, #0x0] ldr r2, [r1, #0x0] - ldr r1, _020DD864 ; =UNK_021D6B24 + ldr r1, _020DD864 ; =CTRDGi_PollingSR strh r2, [r0, #0x0] ldr r4, [r1, #0x0] mov r0, #0x3 @@ -417,7 +417,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C and r5, r3, #0x3 blx r4 ldr r3, _020DD84C ; =0x04000204 - ldr r1, _020DD848 ; =UNK_021D6B0C + ldr r1, _020DD848 ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -430,11 +430,11 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C ldmia sp!, {r4-r5,lr} bx lr .balign 4 -_020DD848: .word UNK_021D6B0C +_020DD848: .word ctrdgi_flash_lock_id _020DD84C: .word 0x04000204 -_020DD850: .word UNK_021D6B20 +_020DD850: .word AgbFlash _020DD854: .word 0x04000208 _020DD858: .word UNK_021D6B38 _020DD85C: .word 0x0A005555 _020DD860: .word 0x0A002AAA -_020DD864: .word UNK_021D6B24 +_020DD864: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_MX29L512.s b/arm9/asm/CTRDG_flash_MX29L512.s index 17b50125..eac57f63 100644 --- a/arm9/asm/CTRDG_flash_MX29L512.s +++ b/arm9/asm/CTRDG_flash_MX29L512.s @@ -6,8 +6,8 @@ .extern CTRDGi_EraseFlashSectorAsyncLE .extern CTRDGi_PollingSR512kCOMMON .extern UNK_021D6B08 - .extern UNK_021D6B20 - .extern UNK_021D6B0C + .extern AgbFlash + .extern ctrdgi_flash_lock_id .section .rodata @@ -69,7 +69,7 @@ CTRDGi_WriteFlashSectorCoreMX5: ; 0x020DD8C0 stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DD9E8 ; =UNK_021D6B20 + ldr r0, _020DD9E8 ; =AgbFlash ldr r1, [r5, #0x0] ldr r0, [r0, #0x0] str r1, [r4, #0x0] @@ -87,11 +87,11 @@ CTRDGi_WriteFlashSectorCoreMX5: ; 0x020DD8C0 addne sp, sp, #0x28 ldmneia sp!, {r4-r8,lr} bxne lr - ldr r0, _020DD9F0 ; =UNK_021D6B0C + ldr r0, _020DD9F0 ; =ctrdgi_flash_lock_id ldrh r0, [r0, #0x0] bl OS_LockCartridge ldr r7, _020DD9F4 ; =0x04000204 - ldr r0, _020DD9E8 ; =UNK_021D6B20 + ldr r0, _020DD9E8 ; =AgbFlash ldrh r3, [r7, #0x0] ldr r2, [r0, #0x0] ldrh r1, [r7, #0x0] @@ -126,7 +126,7 @@ _020DD984: bne _020DD984 _020DD9B8: ldr r2, _020DD9F4 ; =0x04000204 - ldr r0, _020DD9F0 ; =UNK_021D6B0C + ldr r0, _020DD9F0 ; =ctrdgi_flash_lock_id ldrh r1, [r2, #0x0] bic r1, r1, #0x3 orr r1, r1, r7 @@ -138,8 +138,8 @@ _020DD9B8: ldmia sp!, {r4-r8,lr} bx lr .balign 4 -_020DD9E8: .word UNK_021D6B20 +_020DD9E8: .word AgbFlash _020DD9EC: .word 0x000080FF -_020DD9F0: .word UNK_021D6B0C +_020DD9F0: .word ctrdgi_flash_lock_id _020DD9F4: .word 0x04000204 _020DD9F8: .word UNK_021D6B08 diff --git a/arm9/asm/CTRDG_flash_common.s b/arm9/asm/CTRDG_flash_common.s index aaef15fb..4c51608a 100644 --- a/arm9/asm/CTRDG_flash_common.s +++ b/arm9/asm/CTRDG_flash_common.s @@ -7,48 +7,48 @@ UNK_021D6B08: ; 0x021D6B08 .space 0x4 - .global UNK_021D6B0C -UNK_021D6B0C: ; 0x021D6B0C + .global ctrdgi_flash_lock_id +ctrdgi_flash_lock_id: ; 0x021D6B0C .space 0x4 .global UNK_021D6B10 UNK_021D6B10: ; 0x021D6B10 .space 0x4 - .global UNK_021D6B14 -UNK_021D6B14: ; 0x021D6B14 + .global CTRDGi_WriteAgbFlashSector +CTRDGi_WriteAgbFlashSector: ; 0x021D6B14 .space 0x4 - .global UNK_021D6B18 -UNK_021D6B18: ; 0x021D6B18 + .global CTRDGi_WriteAgbFlashSectorAsync +CTRDGi_WriteAgbFlashSectorAsync: ; 0x021D6B18 .space 0x4 - .global UNK_021D6B1C -UNK_021D6B1C: ; 0x021D6B1C + .global CTRDGi_EraseAgbFlashChipAsync +CTRDGi_EraseAgbFlashChipAsync: ; 0x021D6B1C .space 0x4 - .global UNK_021D6B20 -UNK_021D6B20: ; 0x021D6B20 + .global AgbFlash +AgbFlash: ; 0x021D6B20 .space 0x4 - .global UNK_021D6B24 -UNK_021D6B24: ; 0x021D6B24 + .global CTRDGi_PollingSR +CTRDGi_PollingSR: ; 0x021D6B24 .space 0x4 - .global UNK_021D6B28 -UNK_021D6B28: ; 0x021D6B28 + .global ctrdgi_fl_maxtime +ctrdgi_fl_maxtime: ; 0x021D6B28 .space 0x4 - .global UNK_021D6B2C -UNK_021D6B2C: ; 0x021D6B2C + .global CTRDGi_EraseAgbFlashSector +CTRDGi_EraseAgbFlashSector: ; 0x021D6B2C .space 0x4 - .global UNK_021D6B30 -UNK_021D6B30: ; 0x021D6B30 + .global CTRDGi_EraseAgbFlashSectorAsync +CTRDGi_EraseAgbFlashSectorAsync: ; 0x021D6B30 .space 0x4 - .global UNK_021D6B34 -UNK_021D6B34: ; 0x021D6B34 + .global CTRDGi_EraseAgbFlashChip +CTRDGi_EraseAgbFlashChip: ; 0x021D6B34 .space 0x4 .global UNK_021D6B38 @@ -63,8 +63,8 @@ UNK_021D6B3C: ; 0x021D6B3C UNK_021D6B44: ; 0x021D6B44 .space 0x8 - .global UNK_021D6B4C -UNK_021D6B4C: ; 0x021D6B4C + .global ctrdgi_sram_lock_id +ctrdgi_sram_lock_id: ; 0x021D6B4C .space 0x4 .text @@ -103,14 +103,14 @@ CTRDG_VerifyAgbFlash: CTRDG_WriteAgbFlashSector: stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r2, _020DBF90 ; =UNK_021D6B14 + ldr r2, _020DBF90 ; =CTRDGi_WriteAgbFlashSector ldr r2, [r2, #0x0] blx r2 add sp, sp, #0x4 ldmia sp!, {lr} bx lr .balign 4 -_020DBF90: .word UNK_021D6B14 +_020DBF90: .word CTRDGi_WriteAgbFlashSector arm_func_start CTRDG_ReadAgbFlash CTRDG_ReadAgbFlash: ; 0x020DBF94 @@ -178,7 +178,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DC128 ; =UNK_021D6B0C + ldr r0, _020DC128 ; =ctrdgi_flash_lock_id ldr r1, [r5, #0x0] ldrh r0, [r0, #0x0] str r1, [r4, #0x0] @@ -187,7 +187,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C ldr r4, [sp, #0x18] bl OS_LockCartridge ldr r3, _020DC12C ; =0x04000204 - ldr r0, _020DC130 ; =UNK_021D6B20 + ldr r0, _020DC130 ; =AgbFlash ldrh r2, [r3, #0x0] ldrh r1, [r3, #0x0] and r7, r2, #0x3 @@ -205,7 +205,7 @@ CTRDGi_VerifyAgbFlashCore: ; 0x020DC04C mov r0, r0, lsl #0x10 mov r6, r0, lsr #0x10 _020DC0D4: - ldr r1, _020DC130 ; =UNK_021D6B20 + ldr r1, _020DC130 ; =AgbFlash mov r0, r5 ldr r1, [r1, #0x0] mov r2, r4 @@ -214,7 +214,7 @@ _020DC0D4: add r1, r1, #0xa000000 bl CTRDGi_VerifyFlashSectorCore ldr r3, _020DC12C ; =0x04000204 - ldr r1, _020DC128 ; =UNK_021D6B0C + ldr r1, _020DC128 ; =ctrdgi_flash_lock_id ldrh r2, [r3, #0x0] mov r4, r0 bic r0, r2, #0x3 @@ -227,9 +227,9 @@ _020DC0D4: ldmia sp!, {r4-r7,lr} bx lr .balign 4 -_020DC128: .word UNK_021D6B0C +_020DC128: .word ctrdgi_flash_lock_id _020DC12C: .word 0x04000204 -_020DC130: .word UNK_021D6B20 +_020DC130: .word AgbFlash arm_func_start CTRDGi_VerifyFlashSectorCore CTRDGi_VerifyFlashSectorCore: ; 0x020DC134 @@ -259,7 +259,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168 stmia r4!, {r0-r3} ldmia r5!, {r0-r3} stmia r4!, {r0-r3} - ldr r0, _020DC25C ; =UNK_021D6B0C + ldr r0, _020DC25C ; =ctrdgi_flash_lock_id ldr r1, [r5, #0x0] ldrh r0, [r0, #0x0] str r1, [r4, #0x0] @@ -269,7 +269,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168 ldr r4, [sp, #0x18] bl OS_LockCartridge ldr r3, _020DC260 ; =0x04000204 - ldr r0, _020DC264 ; =UNK_021D6B20 + ldr r0, _020DC264 ; =AgbFlash ldrh r2, [r3, #0x0] ldrh r1, [r3, #0x0] and r8, r2, #0x3 @@ -287,7 +287,7 @@ CTRDGi_ReadAgbFlashCore: ; 0x020DC168 mov r0, r0, lsl #0x10 mov r7, r0, lsr #0x10 _020DC1F4: - ldr r0, _020DC264 ; =UNK_021D6B20 + ldr r0, _020DC264 ; =AgbFlash cmp r4, #0x0 ldr r0, [r0, #0x0] sub r4, r4, #0x1 @@ -304,7 +304,7 @@ _020DC218: bne _020DC218 _020DC22C: ldr r2, _020DC260 ; =0x04000204 - ldr r0, _020DC25C ; =UNK_021D6B0C + ldr r0, _020DC25C ; =ctrdgi_flash_lock_id ldrh r1, [r2, #0x0] bic r1, r1, #0x3 orr r1, r1, r8 @@ -316,9 +316,9 @@ _020DC22C: ldmia sp!, {r4-r8,lr} bx lr .balign 4 -_020DC25C: .word UNK_021D6B0C +_020DC25C: .word ctrdgi_flash_lock_id _020DC260: .word 0x04000204 -_020DC264: .word UNK_021D6B20 +_020DC264: .word AgbFlash arm_func_start CTRDGi_PollingSR1MCOMMON CTRDGi_PollingSR1MCOMMON: ; 0x020DC268 @@ -398,7 +398,7 @@ _020DC33C: _020DC360: ; 0x020DC360 cmp r7, r0 beq _020DC390 - ldr r0, _020DC3AC ; =UNK_021D6B20 + ldr r0, _020DC3AC ; =AgbFlash ldr r0, [r0, #0x0] ldrh r0, [r0, #0x18] cmp r0, #0xc2 @@ -418,7 +418,7 @@ _020DC394: ; 0x020DC394 bx lr .balign 4 _020DC3A8: .word UNK_021D6B10 -_020DC3AC: .word UNK_021D6B20 +_020DC3AC: .word AgbFlash _020DC3B0: .word 0x0A005555 arm_func_start CTRDGi_ReadSrFunc @@ -463,7 +463,7 @@ _020DC42C: .word UNK_021D6B10 StartFlashTimer: ; 0x020DC430 stmdb sp!, {lr} sub sp, sp, #0x4 - ldr r1, _020DC47C ; =UNK_021D6B28 + ldr r1, _020DC47C ; =ctrdgi_fl_maxtime ldr r2, _020DC480 ; =UNK_021D6B10 mov r3, #0x0 ldr r1, [r1, #0x0] @@ -481,7 +481,7 @@ StartFlashTimer: ; 0x020DC430 ldmia sp!, {lr} bx lr .balign 4 -_020DC47C: .word UNK_021D6B28 +_020DC47C: .word ctrdgi_fl_maxtime _020DC480: .word UNK_021D6B10 _020DC484: .word UNK_021D6B3C _020DC488: .word UNK_021D6B44 diff --git a/arm9/lib/include/CTRDG_backup.h b/arm9/lib/include/CTRDG_backup.h new file mode 100644 index 00000000..d248b7a1 --- /dev/null +++ b/arm9/lib/include/CTRDG_backup.h @@ -0,0 +1,41 @@ +#ifndef POKEDIAMOND_CTRDG_BACKUP_H +#define POKEDIAMOND_CTRDG_BACKUP_H + +#include "nitro/types.h" +#include "CTRDG_flash.h" +#include "CTRDG_task.h" + +typedef struct CTRDGiFlashTypePlusTag +{ + u16 (*CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 *src); + u16 (*CTRDGi_EraseAgbFlashChip)(void); + u16 (*CTRDGi_EraseAgbFlashSector)(u16 secNo); + void (*CTRDGi_WriteAgbFlashSectorAsync)(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback); + void (*CTRDGi_EraseAgbFlashChipAsync)(CTRDG_TASK_FUNC callback); + void (*CTRDGi_EraseAgbFlashSectorAsync)(u16 secNo, CTRDG_TASK_FUNC callback); + u16 (*CTRDGi_PollingSR)(u16 phase, u8 *adr, u16 lastData); + const u16 (*maxtime); + CTRDGFlashType type; +} CTRDGiFlashTypePlus; + +typedef enum +{ + CTRDG_BACKUP_TYPE_FLASH_512K, + CTRDG_BACKUP_TYPE_FLASH_1M, + CTRDG_BACKUP_TYPE_SRAM +} CTRDGBackupType; + +extern const u16 (*ctrdgi_fl_maxtime); + +extern u16 (*CTRDGi_PollingSR)(u16 phase, u8 *adr, u16 lastData); +extern const CTRDGFlashType *AgbFlash; +extern u16 (*CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 *src); +extern u16 (*CTRDGi_EraseAgbFlashChip)(void); +extern u16 (*CTRDGi_EraseAgbFlashSector)(u16 secNo); +extern void (*CTRDGi_WriteAgbFlashSectorAsync)(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback); +extern void (*CTRDGi_EraseAgbFlashChipAsync)(CTRDG_TASK_FUNC callback); +extern void (*CTRDGi_EraseAgbFlashSectorAsync)(u16 secNo, CTRDG_TASK_FUNC callback); + +u16 CTRDG_IdentifyAgbBackup(CTRDGBackupType type); + +#endif //POKEDIAMOND_CTRDG_BACKUP_H diff --git a/arm9/lib/include/CTRDG_flash.h b/arm9/lib/include/CTRDG_flash.h new file mode 100644 index 00000000..9a4aff41 --- /dev/null +++ b/arm9/lib/include/CTRDG_flash.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_CTRDG_FLASH_H +#define POKEDIAMOND_CTRDG_FLASH_H + +#include "nitro/types.h" +#include "MI_exMemory.h" + +typedef struct CTRDGiFlashSectorTag +{ + u32 size; + u16 shift; + u16 count; + u16 top; + u8 reserved[2]; +} CTRDGiFlashSector; + +typedef struct CTRDGFlashTypeTag +{ + u32 romSize; + CTRDGiFlashSector sector; + MICartridgeRamCycle agbWait[2]; + u16 makerID; + u16 deviceID; +} CTRDGFlashType; + +#endif //POKEDIAMOND_CTRDG_FLASH_H diff --git a/arm9/lib/include/CTRDG_task.h b/arm9/lib/include/CTRDG_task.h new file mode 100644 index 00000000..2cf7a233 --- /dev/null +++ b/arm9/lib/include/CTRDG_task.h @@ -0,0 +1,25 @@ +#ifndef POKEDIAMOND_CTRDG_TASK_H +#define POKEDIAMOND_CTRDG_TASK_H + +#include "nitro/types.h" + +struct CTRDGTaskInfo_tag; + +typedef u32 (*CTRDG_TASK_FUNC) (struct CTRDGTaskInfo_tag *); + +typedef struct CTRDGTaskInfo_tag +{ + CTRDG_TASK_FUNC task; + CTRDG_TASK_FUNC callback; + u32 result; + u8 *data; + u8 *adr; + u32 offset; + u32 size; + u8 *dst; + u16 sec_num; + u8 busy; + u8 param[1]; +} CTRDGTaskInfo; + +#endif //POKEDIAMOND_CTRDG_TASK_H diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/include/MI_exMemory.h index df46b008..aa90a73c 100644 --- a/arm9/lib/include/MI_exMemory.h +++ b/arm9/lib/include/MI_exMemory.h @@ -22,6 +22,14 @@ typedef enum MI_CTRDG_ROMCYCLE2_4 = 1 } MICartridgeRomCycle2nd; +typedef enum +{ + MI_CTRDG_RAMCYCLE_10 = 0, + MI_CTRDG_RAMCYCLE_8 = 1, + MI_CTRDG_RAMCYCLE_6 = 2, + MI_CTRDG_RAMCYCLE_18 = 3 +} MICartridgeRamCycle; + static inline void MIi_SetCardProcessor(MIProcessor proc) { reg_MI_EXMEMCNT = @@ -54,4 +62,14 @@ static inline void MI_SetCartridgeRomCycle2nd(MICartridgeRomCycle2nd c2) reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0x10) | (c2 << 4)); } +static inline void MI_SetCartridgeRamCycle(MICartridgeRamCycle c) +{ + reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~3) | (c << 0)); +} + +static inline MICartridgeRamCycle MI_GetCartridgeRamCycle(void) +{ + return (MICartridgeRamCycle)((reg_MI_EXMEMCNT & 3) >> 0); +} + #endif //POKEDIAMOND_MI_EXMEMORY_H diff --git a/arm9/lib/src/CTRDG_backup.c b/arm9/lib/src/CTRDG_backup.c new file mode 100644 index 00000000..dc1a3f4b --- /dev/null +++ b/arm9/lib/src/CTRDG_backup.c @@ -0,0 +1,94 @@ +#include "CTRDG_backup.h" +#include "function_target.h" +#include "OS_spinLock.h" + +extern u16 ctrdgi_flash_lock_id; +extern u16 ctrdgi_sram_lock_id; + +extern u16 CTRDGi_ReadFlashID(void); + +extern const CTRDGiFlashTypePlus defaultFlash1M; +extern const CTRDGiFlashTypePlus MX29L010; +extern const CTRDGiFlashTypePlus LE26FV10N1TS_10; + +extern const CTRDGiFlashTypePlus defaultFlash512; +extern const CTRDGiFlashTypePlus LE39FW512; +extern const CTRDGiFlashTypePlus AT29LV512_lib; +extern const CTRDGiFlashTypePlus MN63F805MNP; + +static const CTRDGiFlashTypePlus *const flash1M_list[] = { + &MX29L010, + &LE26FV10N1TS_10, + &defaultFlash1M +}; + +static const CTRDGiFlashTypePlus *const flash512_list[] = { + &LE39FW512, + &AT29LV512_lib, + &MN63F805MNP, + &defaultFlash512 +}; + +static const u16 readidtime[] = { + 20 +}; + +ARM_FUNC u16 CTRDG_IdentifyAgbBackup(CTRDGBackupType type) +{ + u16 result = 1; + u16 flashID; + const CTRDGiFlashTypePlus *const *flp; + MICartridgeRamCycle ram_cycle; + + if (type == CTRDG_BACKUP_TYPE_FLASH_512K || type == CTRDG_BACKUP_TYPE_FLASH_1M) + { + ctrdgi_flash_lock_id = (u16)OS_GetLockID(); + + (void)OS_LockCartridge(ctrdgi_flash_lock_id); + + ram_cycle = MI_GetCartridgeRamCycle(); + MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); + + ctrdgi_fl_maxtime = readidtime; + flashID = CTRDGi_ReadFlashID(); + + if (type == CTRDG_BACKUP_TYPE_FLASH_512K) + { + flp = flash512_list; + } + + if (type == CTRDG_BACKUP_TYPE_FLASH_1M) + { + flp = flash1M_list; + } + + MI_SetCartridgeRamCycle(ram_cycle); + (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); + + result = 1; + while ((*flp)->type.makerID != 0) + { + if ((flashID & 0xff) == *(u16 *)&((*flp)->type.makerID)) + { + result = 0; + break; + } + flp++; + } + CTRDGi_WriteAgbFlashSector = (*flp)->CTRDGi_WriteAgbFlashSector; + CTRDGi_EraseAgbFlashChip = (*flp)->CTRDGi_EraseAgbFlashChip; + CTRDGi_EraseAgbFlashSector = (*flp)->CTRDGi_EraseAgbFlashSector; + CTRDGi_WriteAgbFlashSectorAsync = (*flp)->CTRDGi_WriteAgbFlashSectorAsync; + CTRDGi_EraseAgbFlashChipAsync = (*flp)->CTRDGi_EraseAgbFlashChipAsync; + CTRDGi_EraseAgbFlashSectorAsync = (*flp)->CTRDGi_EraseAgbFlashSectorAsync; + CTRDGi_PollingSR = (*flp)->CTRDGi_PollingSR; + ctrdgi_fl_maxtime = (*flp)->maxtime; + AgbFlash = &(*flp)->type; + } + else if (type == CTRDG_BACKUP_TYPE_SRAM) + { + ctrdgi_sram_lock_id = (u16)OS_GetLockID(); + result = 0; + } + return result; +} -- cgit v1.2.3 From a37fd3dff5df3a93ac7d756d1e16d411a0299dc9 Mon Sep 17 00:00:00 2001 From: tgsm Date: Thu, 14 Jan 2021 18:22:00 -0500 Subject: decompile unk_0202C144 --- arm9/asm/unk_0202C144.s | 42 ------------------------------------------ arm9/src/unk_0202C144.c | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 42 deletions(-) delete mode 100644 arm9/asm/unk_0202C144.s create mode 100644 arm9/src/unk_0202C144.c (limited to 'arm9') diff --git a/arm9/asm/unk_0202C144.s b/arm9/asm/unk_0202C144.s deleted file mode 100644 index fb5bc6c4..00000000 --- a/arm9/asm/unk_0202C144.s +++ /dev/null @@ -1,42 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0202C144 -FUN_0202C144: ; 0x0202C144 - push {r3-r7, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _0202C194 - add r0, r5, #0x0 - bl Sav2_Pokedex_get - add r6, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02029FC8 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - lsl r2, r2, #0x10 - add r0, r7, #0x0 - add r1, r6, #0x0 - lsr r2, r2, #0x10 - bl FUN_0202A1C4 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl Pokedex_SetMonCaughtFlag - add r0, r5, #0x0 - bl Sav2_Poketch_get - add r1, r4, #0x0 - bl Sav2_Poketch_PokemonHistoryAddMon -_0202C194: - pop {r3-r7, pc} - .balign 4 diff --git a/arm9/src/unk_0202C144.c b/arm9/src/unk_0202C144.c new file mode 100644 index 00000000..b7dd45aa --- /dev/null +++ b/arm9/src/unk_0202C144.c @@ -0,0 +1,26 @@ +#include "global.h" +#include "pokedex.h" +#include "poketch.h" +#include "unk_02029FB0.h" +#include "unk_0202C144.h" + +#pragma thumb on + +extern struct UnkStruct_02029FB0 * FUN_02029FC8(struct SaveBlock2 * sav2); +extern void FUN_0202A1C4(struct UnkStruct_02029FB0 * unk, struct Pokedex * pokedex, u16 species); + +void FUN_0202C144(struct SaveBlock2 * sav2, struct Pokemon * mon) +{ + u32 is_egg = GetMonData(mon, MON_DATA_IS_EGG, NULL); + if (!is_egg) + { + struct Pokedex * pokedex = Sav2_Pokedex_get(sav2); + struct UnkStruct_02029FB0 * unk = FUN_02029FC8(sav2); + u32 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + FUN_0202A1C4(unk, pokedex, (u16)species); + Pokedex_SetMonCaughtFlag(pokedex, mon); + + struct SavePoketch * poketch = Sav2_Poketch_get(sav2); + Sav2_Poketch_PokemonHistoryAddMon(poketch, &mon->box); + } +} -- cgit v1.2.3 From a2c689698a8b16cc72615bd020f938ebe104b87e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 5 Feb 2021 02:00:25 -0500 Subject: port over and implement asm processor for NONMATCHINGS. thanks hondew! --- arm9/Makefile | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'arm9') diff --git a/arm9/Makefile b/arm9/Makefile index d537fbd7..05e78524 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -69,6 +69,9 @@ LIBS_OBJS = $(LIBS_FILES:%.s=$(BUILD_DIR)/%.o) # Object files O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS) +GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(C_FILES) +GLOBAL_ASM_O_FILES = $(addprefix $(BUILD_DIR)/,$(GLOBAL_ASM_C_FILES:.c=.o)) + # Overlay modules OVERLAYS := $(shell grep -oE "Overlay \w+" $(LD_SPEC) | cut -d' ' -f2) @@ -102,6 +105,9 @@ AR := $(CROSS)ar OBJDUMP := $(CROSS)objdump OBJCOPY := $(CROSS)objcopy +ASM_PROCESSOR_DIR := ../tools/asm_processor +ASM_PROCESSOR := $(ASM_PROCESSOR_DIR)/compile.sh + # ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o ASFLAGS = -proc arm5te -i ../include -i .. -D$(GAME_VERSION) -D$(GAME_LANGUAGE) CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) @@ -124,7 +130,7 @@ GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE) SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE) MWASMARM_PATCHER = $(TOOLS_DIR)/mwasmarm_patcher/mwasmarm_patcher$(EXE) -q -TOOLDIRS = $(filter-out $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*)) +TOOLDIRS = $(filter-out $(TOOLS_DIR)/asm_processor $(TOOLS_DIR)/mwccarm $(TOOLS_DIR)/bin,$(wildcard $(TOOLS_DIR)/*)) TOOLBASE = $(TOOLDIRS:$(TOOLS_DIR)/%=%) TOOLS = $(foreach tool,$(TOOLBASE),$(TOOLS_DIR)/$(tool)/$(tool)$(EXE)) @@ -190,8 +196,12 @@ else $(BUILD_DIR)/%.o: dep := endif +# Cpp asm processor is not supported at this time. +$(GLOBAL_ASM_O_FILES): BUILD_C := $(ASM_PROCESSOR) "$(CC) $(CFLAGS)" "$(AS) $(ASFLAGS)" +BUILD_C ?= $(CC) -c $(CFLAGS) -o + $(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep) - $(CC) -c $(CFLAGS) -o $@ $< + $(BUILD_C) $@ $< $(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep) $(CXX) -c $(CXXFLAGS) -o $@ $< -- cgit v1.2.3 From fc81c4a0af763477fa485e2648cc47ffd5ed703d Mon Sep 17 00:00:00 2001 From: Dsaster <78389441+dsastr@users.noreply.github.com> Date: Sat, 6 Feb 2021 01:16:47 +0100 Subject: add macOS support --- arm9/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/Makefile b/arm9/Makefile index 05e78524..ea391eea 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -120,11 +120,16 @@ STATIC_LIBS := $(addprefix $(BUILD_DIR)/lib/,libsyscall.a) ####################### Other Tools ######################### # DS TOOLS -ifndef BUSYBOX +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +SHA1SUM = shasum +else +ifdef BUSYBOX SHA1SUM = sha1sum --quiet else SHA1SUM = sha1sum endif +endif JSONPROC = $(TOOLS_DIR)/jsonproc/jsonproc$(EXE) GFX = $(TOOLS_DIR)/nitrogfx/nitrogfx$(EXE) SCANINC = $(TOOLS_DIR)/scaninc/scaninc$(EXE) -- cgit v1.2.3 From a2f2340c2bda2dae406ffaa1935d28cb740c2e39 Mon Sep 17 00:00:00 2001 From: Dsaster <78389441+dsastr@users.noreply.github.com> Date: Sat, 6 Feb 2021 02:16:48 +0100 Subject: fix ifdef -> ifndef typo --- arm9/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/Makefile b/arm9/Makefile index ea391eea..8b84a135 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -124,7 +124,7 @@ UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) SHA1SUM = shasum else -ifdef BUSYBOX +ifndef BUSYBOX SHA1SUM = sha1sum --quiet else SHA1SUM = sha1sum -- cgit v1.2.3 From f9512bc6c7b8c93a4c72b92825db67718863a200 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 25 Feb 2021 15:34:52 +0000 Subject: partial CTRDG_flash_AT29LV512.o decomp --- arm9/arm9.lsf | 1 + arm9/asm/CTRDG_flash_AT29LV512.s | 542 ------------------------------- arm9/asm/CTRDG_flash_AT29LV512_asm.s | 358 ++++++++++++++++++++ arm9/asm/CTRDG_flash_LE39FW512.s | 16 +- arm9/asm/CTRDG_flash_MX29L010.s | 18 +- arm9/asm/CTRDG_flash_common.s | 10 +- arm9/lib/include/CTRDG_backup.h | 4 + arm9/lib/include/CTRDG_flash.h | 2 + arm9/lib/include/CTRDG_flash_AT29LV512.h | 10 + arm9/lib/include/OS_interrupt.h | 7 + arm9/lib/src/CTRDG_flash_AT29LV512.c | 143 ++++++++ arm9/modules/21/include/mod21_02254854.h | 8 +- arm9/modules/21/src/mod21_02254854.c | 22 +- 13 files changed, 565 insertions(+), 576 deletions(-) delete mode 100644 arm9/asm/CTRDG_flash_AT29LV512.s create mode 100644 arm9/asm/CTRDG_flash_AT29LV512_asm.s create mode 100644 arm9/lib/include/CTRDG_flash_AT29LV512.h create mode 100644 arm9/lib/src/CTRDG_flash_AT29LV512.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index fac2074d..6bbff67c 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -456,6 +456,7 @@ Static arm9 Object CTRDG_proc.o Object CTRDG_backup.o Object CTRDG_flash_common.o + Object CTRDG_flash_AT29LV512_asm.o Object CTRDG_flash_AT29LV512.o Object CTRDG_flash_LE26FV10N1TS-10.o Object CTRDG_flash_LE39FW512.o diff --git a/arm9/asm/CTRDG_flash_AT29LV512.s b/arm9/asm/CTRDG_flash_AT29LV512.s deleted file mode 100644 index 24b2e0f2..00000000 --- a/arm9/asm/CTRDG_flash_AT29LV512.s +++ /dev/null @@ -1,542 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern CTRDGi_PollingSR512kCOMMON - .extern AgbFlash - .extern CTRDGi_PollingSR - .extern ctrdgi_flash_lock_id - .extern UNK_021D6B38 - .extern UNK_021D6B08 - - .section .rodata - - .global atMaxTime -atMaxTime: ; 0x02104004 - .short 10, 40, 0, 40 - - .global AT29LV512_lib -AT29LV512_lib: ; 0x0210400C - .word CTRDGi_WriteFlash4KBAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlash4KBAT - .word CTRDGi_WriteFlash4KBAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlash4KBAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word atMaxTime - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - - .global AT29LV512_org -AT29LV512_org: ; 0x02104048 - .word CTRDGi_WriteFlashSectorAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlashSectorAT - .word CTRDGi_WriteFlashSectorAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlashSectorAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word atMaxTime - .byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - - .text - - arm_func_start CTRDGi_WriteFlashSectorAsyncAT -CTRDGi_WriteFlashSectorAsyncAT: ; 0x020DC5DC - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020DC604 ; =CTRDGi_WriteFlashSectorCoreAT - add r0, sp, #0x0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DC604: .word CTRDGi_WriteFlashSectorCoreAT - - arm_func_start CTRDGi_EraseFlashSectorAsyncAT -CTRDGi_EraseFlashSectorAsyncAT: ; 0x020DC608 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020DC630 ; =CTRDGi_EraseFlashSectorCoreAT - add r0, sp, #0x0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DC630: .word CTRDGi_EraseFlashSectorCoreAT - - arm_func_start CTRDGi_WriteFlashSectorAT -CTRDGi_WriteFlashSectorAT: ; 0x020DC634 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0x0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlashSectorCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_EraseFlashSectorAT -CTRDGi_EraseFlashSectorAT: ; 0x020DC660 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0x0 - bl CTRDGi_EraseFlashSectorCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_WriteFlash4KBAsyncAT -CTRDGi_WriteFlash4KBAsyncAT: ; 0x020DC688 - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020DC6B0 ; =CTRDGi_WriteFlash4KBCoreAT - add r0, sp, #0x0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DC6B0: .word CTRDGi_WriteFlash4KBCoreAT - - arm_func_start CTRDGi_EraseFlash4KBAsyncAT -CTRDGi_EraseFlash4KBAsyncAT: ; 0x020DC6B4 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020DC6DC ; =CTRDGi_EraseFlash4KBCoreAT - add r0, sp, #0x0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DC6DC: .word CTRDGi_EraseFlash4KBCoreAT - - arm_func_start CTRDGi_EraseFlashChipAsyncAT -CTRDGi_EraseFlashChipAsyncAT: ; 0x020DC6E0 - stmdb sp!, {lr} - sub sp, sp, #0x24 - ldr r1, _020DC704 ; =CTRDGi_EraseFlashChipCoreAT - mov r2, r0 - add r0, sp, #0x0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - .balign 4 -_020DC704: .word CTRDGi_EraseFlashChipCoreAT - - arm_func_start CTRDGi_WriteFlash4KBAT -CTRDGi_WriteFlash4KBAT: ; 0x020DC708 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0x0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlash4KBCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_EraseFlash4KBAT -CTRDGi_EraseFlash4KBAT: ; 0x020DC734 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0x0 - bl CTRDGi_EraseFlash4KBCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_EraseFlashChipAT -CTRDGi_EraseFlashChipAT: ; 0x020DC75C - stmdb sp!, {lr} - sub sp, sp, #0x24 - add r0, sp, #0x0 - bl CTRDGi_EraseFlashChipCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {lr} - bx lr - - arm_func_start CTRDGi_WriteFlash4KBCoreAT -CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780 - stmdb sp!, {r4-r9,lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0-r3} - add r4, sp, #0x0 - stmia r4!, {r0-r3} - ldmia r5!, {r0-r3} - stmia r4!, {r0-r3} - ldr r0, [r5, #0x0] - str r0, [r4, #0x0] - ldrh r0, [sp, #0x20] - ldr r7, [sp, #0xc] - cmp r0, #0x10 - addcs sp, sp, #0x24 - ldrhs r0, _020DC85C ; =0x000080FF - ldmcsia sp!, {r4-r9,lr} - bxcs lr - ldr r1, _020DC860 ; =AT29LV512_lib - mov r0, r0, lsl #0x15 - ldr r1, [r1, #0x24] - ldr r4, _020DC864 ; =UNK_021D6B08 - mov r8, r0, lsr #0x10 - strh r1, [r4, #0x0] - ldrh r0, [r4, #0x0] - cmp r0, #0x0 - beq _020DC84C - ldr r0, _020DC868 ; =AT29LV512_org - ldr r6, [r0, #0x24] - mov r5, #0x2 -_020DC7F4: - mov r9, r5 -_020DC7F8: - mov r0, r8 - mov r1, r7 - bl CTRDGi_WriteFlashSectorAT - movs r12, r0 - beq _020DC81C - sub r0, r9, #0x1 - mov r0, r0, lsl #0x10 - movs r9, r0, lsr #0x10 - bne _020DC7F8 -_020DC81C: - cmp r12, #0x0 - bne _020DC84C - ldrh r1, [r4, #0x0] - add r0, r8, #0x1 - mov r0, r0, lsl #0x10 - sub r1, r1, r6 - strh r1, [r4, #0x0] - ldrh r1, [r4, #0x0] - add r7, r7, r6 - mov r8, r0, lsr #0x10 - cmp r1, #0x0 - bne _020DC7F4 -_020DC84C: - mov r0, r12 - add sp, sp, #0x24 - ldmia sp!, {r4-r9,lr} - bx lr - .balign 4 -_020DC85C: .word 0x000080FF -_020DC860: .word AT29LV512_lib -_020DC864: .word UNK_021D6B08 -_020DC868: .word AT29LV512_org - - arm_func_start CTRDGi_WriteFlashSectorCoreAT -CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x24 - mov r5, r0 - add r4, sp, #0x0 - ldmia r5!, {r0-r3} - stmia r4!, {r0-r3} - ldmia r5!, {r0-r3} - stmia r4!, {r0-r3} - ldr r0, _020DC984 ; =ctrdgi_flash_lock_id - ldr r1, [r5, #0x0] - ldrh r0, [r0, #0x0] - str r1, [r4, #0x0] - ldr r4, [sp, #0xc] - bl OS_LockCartridge - ldr r5, _020DC988 ; =0x04000204 - ldr r1, _020DC98C ; =AgbFlash - ldrh r0, [r5, #0x0] - ldr r1, [r1, #0x0] - ldrh r2, [r5, #0x0] - ldr r3, [r1, #0x10] - ldr r1, _020DC990 ; =AT29LV512_org - bic r2, r2, #0x3 - orr r2, r2, r3 - strh r2, [r5, #0x0] - ldr r5, _020DC994 ; =0x04000208 - ldrh lr, [sp, #0x20] - ldrh r12, [r1, #0x28] - ldrh r2, [r5, #0x0] - mov r3, #0x0 - mov lr, lr, lsl r12 - strh r3, [r5, #0x0] - ldr ip, _020DC998 ; =0x0A005555 - mov r5, #0xaa - strb r5, [r12, #0x0] - ldr r3, _020DC99C ; =0x0A002AAA - mov r5, #0x55 - strb r5, [r3, #0x0] - mov r3, #0xa0 - strb r3, [r12, #0x0] - ldr r3, [r1, #0x24] - and r5, r0, #0x3 - cmp r3, #0x0 - add r1, lr, #0xa000000 - beq _020DC92C -_020DC91C: - ldrb r0, [r4], #0x1 - subs r3, r3, #0x1 - strb r0, [r1], #0x1 - bne _020DC91C -_020DC92C: - ldr ip, _020DC994 ; =0x04000208 - ldr r3, _020DC9A0 ; =CTRDGi_PollingSR - ldrh r0, [r12, #0x0] - sub r1, r1, #0x1 - mov r0, #0x1 - strh r2, [r12, #0x0] - ldrb r2, [r4, #-0x1] - ldr r3, [r3, #0x0] - blx r3 - ldr r3, _020DC988 ; =0x04000204 - ldr r1, _020DC984 ; =ctrdgi_flash_lock_id - ldrh r2, [r3, #0x0] - mov r4, r0 - bic r0, r2, #0x3 - orr r0, r0, r5 - strh r0, [r3, #0x0] - ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge - mov r0, r4 - add sp, sp, #0x24 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020DC984: .word ctrdgi_flash_lock_id -_020DC988: .word 0x04000204 -_020DC98C: .word AgbFlash -_020DC990: .word AT29LV512_org -_020DC994: .word 0x04000208 -_020DC998: .word 0x0A005555 -_020DC99C: .word 0x0A002AAA -_020DC9A0: .word CTRDGi_PollingSR - - arm_func_start CTRDGi_EraseFlash4KBCoreAT -CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4 - stmdb sp!, {r4-r7,lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0-r3} - add r4, sp, #0x0 - stmia r4!, {r0-r3} - ldmia r5!, {r0-r3} - stmia r4!, {r0-r3} - ldr r0, [r5, #0x0] - str r0, [r4, #0x0] - ldrh r0, [sp, #0x20] - cmp r0, #0x10 - addcs sp, sp, #0x24 - ldrhs r0, _020DCA54 ; =0x000080FF - ldmcsia sp!, {r4-r7,lr} - bxcs lr - mov r0, r0, lsl #0x15 - mov r5, r0, lsr #0x10 - mov r6, #0x0 - mov r4, #0x2 -_020DC9F4: - mov r7, r4 -_020DC9F8: - mov r0, r5 - bl CTRDGi_EraseFlashSectorAT -_020DCA00: ; 0x020DCA00 - cmp r0, #0x0 - beq _020DCA18 - sub r1, r7, #0x1 - mov r1, r1, lsl #0x10 - movs r7, r1, lsr #0x10 - bne _020DC9F8 -_020DCA18: - add r1, r5, #0x1 - mov r1, r1, lsl #0x10 - cmp r0, #0x0 - mov r5, r1, lsr #0x10 - addne sp, sp, #0x24 - ldmneia sp!, {r4-r7,lr} - bxne lr - add r1, r6, #0x1 - mov r1, r1, lsl #0x10 - mov r6, r1, lsr #0x10 - cmp r6, #0x20 - blo _020DC9F4 - add sp, sp, #0x24 - ldmia sp!, {r4-r7,lr} - bx lr - .balign 4 -_020DCA54: .word 0x000080FF - - arm_func_start CTRDGi_EraseFlashSectorCoreAT -CTRDGi_EraseFlashSectorCoreAT: ; 0x020DCA58 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0-r3} - add r4, sp, #0x0 - stmia r4!, {r0-r3} - ldmia r5!, {r0-r3} - stmia r4!, {r0-r3} - ldr r0, [r5, #0x0] - ldr r1, _020DCB80 ; =AT29LV512_org - str r0, [r4, #0x0] - ldr r0, _020DCB84 ; =ctrdgi_flash_lock_id - ldrh r2, [sp, #0x20] - ldrh r1, [r1, #0x28] - ldrh r0, [r0, #0x0] - mov r1, r2, lsl r1 - add r5, r1, #0xa000000 - bl OS_LockCartridge - ldr r4, _020DCB88 ; =0x04000204 - ldr r1, _020DCB8C ; =AgbFlash - ldrh r0, [r4, #0x0] - ldr r2, [r1, #0x0] - ldrh r1, [r4, #0x0] - ldr r2, [r2, #0x10] - ldr r3, _020DCB90 ; =0x04000208 - bic r1, r1, #0x3 - orr r1, r1, r2 - strh r1, [r4, #0x0] - ldrh r2, [r3, #0x0] - mov r1, #0x0 - ldr r4, _020DCB94 ; =0x0A005555 - strh r1, [r3, #0x0] - mov r3, #0xaa - strb r3, [r4, #0x0] - ldr r1, _020DCB98 ; =0x0A002AAA - mov r3, #0x55 - strb r3, [r1, #0x0] - mov r3, #0xa0 - strb r3, [r4, #0x0] - ldr r1, _020DCB80 ; =AT29LV512_org - and r4, r0, #0x3 - ldr r1, [r1, #0x24] - cmp r1, #0x0 - beq _020DCB18 - mov r0, #0xff -_020DCB0C: - strb r0, [r5], #0x1 - subs r1, r1, #0x1 - bne _020DCB0C -_020DCB18: - ldr ip, _020DCB90 ; =0x04000208 - ldr r3, _020DCB9C ; =CTRDGi_PollingSR - ldrh r0, [r12, #0x0] - sub r1, r5, #0x1 - strh r2, [r12, #0x0] - ldr r3, [r3, #0x0] - mov r0, #0x1 - mov r2, #0xff - blx r3 - ldr r2, _020DCB88 ; =0x04000204 - movs r5, r0 - ldrh r1, [r2, #0x0] - andne r0, r5, #0xff00 - orrne r0, r0, #0x2 - movne r0, r0, lsl #0x10 - bic r1, r1, #0x3 - movne r5, r0, lsr #0x10 - orr r1, r1, r4 - ldr r0, _020DCB84 ; =ctrdgi_flash_lock_id - strh r1, [r2, #0x0] - ldrh r0, [r0, #0x0] - bl OS_UnlockCartridge - mov r0, r5 - add sp, sp, #0x24 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020DCB80: .word AT29LV512_org -_020DCB84: .word ctrdgi_flash_lock_id -_020DCB88: .word 0x04000204 -_020DCB8C: .word AgbFlash -_020DCB90: .word 0x04000208 -_020DCB94: .word 0x0A005555 -_020DCB98: .word 0x0A002AAA -_020DCB9C: .word CTRDGi_PollingSR - - arm_func_start CTRDGi_EraseFlashChipCoreAT -CTRDGi_EraseFlashChipCoreAT: ; 0x020DCBA0 - stmdb sp!, {r4-r5,lr} - sub sp, sp, #0x4 - ldr r0, _020DCC7C ; =ctrdgi_flash_lock_id - ldrh r0, [r0, #0x0] - bl OS_LockCartridge - ldr r4, _020DCC80 ; =0x04000204 - ldr r0, _020DCC84 ; =AgbFlash - ldrh r3, [r4, #0x0] - ldr r0, [r0, #0x0] - ldrh r1, [r4, #0x0] - ldr r2, [r0, #0x10] - ldr r0, _020DCC88 ; =0x04000208 - bic r1, r1, #0x3 - orr r1, r1, r2 - strh r1, [r4, #0x0] - ldrh r4, [r0, #0x0] - mov r2, #0x0 - ldr r1, _020DCC8C ; =UNK_021D6B38 - strh r2, [r0, #0x0] - ldr lr, _020DCC90 ; =0x0A005555 - str r4, [r1, #0x0] - mov r5, #0xaa - ldr r4, _020DCC94 ; =0x0A002AAA - strb r5, [lr, #0x0] - mov r12, #0x55 - strb r12, [r4, #0x0] - mov r2, #0x80 - strb r2, [lr, #0x0] - strb r5, [lr, #0x0] - strb r12, [r4, #0x0] - mov r2, #0x10 - strb r2, [lr, #0x0] - ldrh r2, [r0, #0x0] - ldr r2, [r1, #0x0] - ldr r1, _020DCC98 ; =CTRDGi_PollingSR - strh r2, [r0, #0x0] - ldr r4, [r1, #0x0] - mov r0, #0x3 - mov r1, #0xa000000 - mov r2, #0xff - and r5, r3, #0x3 - blx r4 - ldr r3, _020DCC80 ; =0x04000204 - ldr r1, _020DCC7C ; =ctrdgi_flash_lock_id - ldrh r2, [r3, #0x0] - mov r4, r0 - bic r0, r2, #0x3 - orr r0, r0, r5 - strh r0, [r3, #0x0] - ldrh r0, [r1, #0x0] - bl OS_UnlockCartridge - mov r0, r4 - add sp, sp, #0x4 - ldmia sp!, {r4-r5,lr} - bx lr - .balign 4 -_020DCC7C: .word ctrdgi_flash_lock_id -_020DCC80: .word 0x04000204 -_020DCC84: .word AgbFlash -_020DCC88: .word 0x04000208 -_020DCC8C: .word UNK_021D6B38 -_020DCC90: .word 0x0A005555 -_020DCC94: .word 0x0A002AAA -_020DCC98: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_AT29LV512_asm.s b/arm9/asm/CTRDG_flash_AT29LV512_asm.s new file mode 100644 index 00000000..7cfa90af --- /dev/null +++ b/arm9/asm/CTRDG_flash_AT29LV512_asm.s @@ -0,0 +1,358 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern CTRDGi_PollingSR512kCOMMON + .extern AgbFlash + .extern CTRDGi_PollingSR + .extern ctrdgi_flash_lock_id + .extern UNK_021D6B08 + .extern CTRDGi_EraseFlashChipCoreAT + .extern CTRDGi_EraseFlashSectorCoreAT + .extern AT29LV512_org + .extern AT29LV512_lib + + .text + + arm_func_start CTRDGi_WriteFlashSectorAsyncAT +CTRDGi_WriteFlashSectorAsyncAT: ; 0x020DC5DC + stmdb sp!, {lr} + sub sp, sp, #0x24 + str r1, [sp, #0xc] + strh r0, [sp, #0x20] + ldr r1, _020DC604 ; =CTRDGi_WriteFlashSectorCoreAT + add r0, sp, #0x0 + bl CTRDGi_SetTask + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + .balign 4 +_020DC604: .word CTRDGi_WriteFlashSectorCoreAT + + arm_func_start CTRDGi_EraseFlashSectorAsyncAT +CTRDGi_EraseFlashSectorAsyncAT: ; 0x020DC608 + stmdb sp!, {lr} + sub sp, sp, #0x24 + mov r2, r1 + strh r0, [sp, #0x20] + ldr r1, _020DC630 ; =CTRDGi_EraseFlashSectorCoreAT + add r0, sp, #0x0 + bl CTRDGi_SetTask + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + .balign 4 +_020DC630: .word CTRDGi_EraseFlashSectorCoreAT + + arm_func_start CTRDGi_WriteFlashSectorAT +CTRDGi_WriteFlashSectorAT: ; 0x020DC634 + stmdb sp!, {lr} + sub sp, sp, #0x24 + strh r0, [sp, #0x20] + add r0, sp, #0x0 + str r1, [sp, #0xc] + bl CTRDGi_WriteFlashSectorCoreAT + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + + arm_func_start CTRDGi_EraseFlashSectorAT +CTRDGi_EraseFlashSectorAT: ; 0x020DC660 + stmdb sp!, {lr} + sub sp, sp, #0x24 + strh r0, [sp, #0x20] + add r0, sp, #0x0 + bl CTRDGi_EraseFlashSectorCoreAT + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + + arm_func_start CTRDGi_WriteFlash4KBAsyncAT +CTRDGi_WriteFlash4KBAsyncAT: ; 0x020DC688 + stmdb sp!, {lr} + sub sp, sp, #0x24 + str r1, [sp, #0xc] + strh r0, [sp, #0x20] + ldr r1, _020DC6B0 ; =CTRDGi_WriteFlash4KBCoreAT + add r0, sp, #0x0 + bl CTRDGi_SetTask + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + .balign 4 +_020DC6B0: .word CTRDGi_WriteFlash4KBCoreAT + + arm_func_start CTRDGi_EraseFlash4KBAsyncAT +CTRDGi_EraseFlash4KBAsyncAT: ; 0x020DC6B4 + stmdb sp!, {lr} + sub sp, sp, #0x24 + mov r2, r1 + strh r0, [sp, #0x20] + ldr r1, _020DC6DC ; =CTRDGi_EraseFlash4KBCoreAT + add r0, sp, #0x0 + bl CTRDGi_SetTask + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + .balign 4 +_020DC6DC: .word CTRDGi_EraseFlash4KBCoreAT + + arm_func_start CTRDGi_EraseFlashChipAsyncAT +CTRDGi_EraseFlashChipAsyncAT: ; 0x020DC6E0 + stmdb sp!, {lr} + sub sp, sp, #0x24 + ldr r1, _020DC704 ; =CTRDGi_EraseFlashChipCoreAT + mov r2, r0 + add r0, sp, #0x0 + bl CTRDGi_SetTask + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + .balign 4 +_020DC704: .word CTRDGi_EraseFlashChipCoreAT + + arm_func_start CTRDGi_WriteFlash4KBAT +CTRDGi_WriteFlash4KBAT: ; 0x020DC708 + stmdb sp!, {lr} + sub sp, sp, #0x24 + strh r0, [sp, #0x20] + add r0, sp, #0x0 + str r1, [sp, #0xc] + bl CTRDGi_WriteFlash4KBCoreAT + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + + arm_func_start CTRDGi_EraseFlash4KBAT +CTRDGi_EraseFlash4KBAT: ; 0x020DC734 + stmdb sp!, {lr} + sub sp, sp, #0x24 + strh r0, [sp, #0x20] + add r0, sp, #0x0 + bl CTRDGi_EraseFlash4KBCoreAT + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + + arm_func_start CTRDGi_EraseFlashChipAT +CTRDGi_EraseFlashChipAT: ; 0x020DC75C + stmdb sp!, {lr} + sub sp, sp, #0x24 + add r0, sp, #0x0 + bl CTRDGi_EraseFlashChipCoreAT + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x24 + ldmia sp!, {lr} + bx lr + + arm_func_start CTRDGi_WriteFlash4KBCoreAT +CTRDGi_WriteFlash4KBCoreAT: ; 0x020DC780 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x24 + mov r5, r0 + ldmia r5!, {r0-r3} + add r4, sp, #0x0 + stmia r4!, {r0-r3} + ldmia r5!, {r0-r3} + stmia r4!, {r0-r3} + ldr r0, [r5, #0x0] + str r0, [r4, #0x0] + ldrh r0, [sp, #0x20] + ldr r7, [sp, #0xc] + cmp r0, #0x10 + addcs sp, sp, #0x24 + ldrhs r0, _020DC85C ; =0x000080FF + ldmcsia sp!, {r4-r9,lr} + bxcs lr + ldr r1, _020DC860 ; =AT29LV512_lib + mov r0, r0, lsl #0x15 + ldr r1, [r1, #0x24] + ldr r4, _020DC864 ; =UNK_021D6B08 + mov r8, r0, lsr #0x10 + strh r1, [r4, #0x0] + ldrh r0, [r4, #0x0] + cmp r0, #0x0 + beq _020DC84C + ldr r0, _020DC868 ; =AT29LV512_org + ldr r6, [r0, #0x24] + mov r5, #0x2 +_020DC7F4: + mov r9, r5 +_020DC7F8: + mov r0, r8 + mov r1, r7 + bl CTRDGi_WriteFlashSectorAT + movs r12, r0 + beq _020DC81C + sub r0, r9, #0x1 + mov r0, r0, lsl #0x10 + movs r9, r0, lsr #0x10 + bne _020DC7F8 +_020DC81C: + cmp r12, #0x0 + bne _020DC84C + ldrh r1, [r4, #0x0] + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + sub r1, r1, r6 + strh r1, [r4, #0x0] + ldrh r1, [r4, #0x0] + add r7, r7, r6 + mov r8, r0, lsr #0x10 + cmp r1, #0x0 + bne _020DC7F4 +_020DC84C: + mov r0, r12 + add sp, sp, #0x24 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020DC85C: .word 0x000080FF +_020DC860: .word AT29LV512_lib +_020DC864: .word UNK_021D6B08 +_020DC868: .word AT29LV512_org + + arm_func_start CTRDGi_WriteFlashSectorCoreAT +CTRDGi_WriteFlashSectorCoreAT: ; 0x020DC86C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x24 + mov r5, r0 + add r4, sp, #0x0 + ldmia r5!, {r0-r3} + stmia r4!, {r0-r3} + ldmia r5!, {r0-r3} + stmia r4!, {r0-r3} + ldr r0, _020DC984 ; =ctrdgi_flash_lock_id + ldr r1, [r5, #0x0] + ldrh r0, [r0, #0x0] + str r1, [r4, #0x0] + ldr r4, [sp, #0xc] + bl OS_LockCartridge + ldr r5, _020DC988 ; =0x04000204 + ldr r1, _020DC98C ; =AgbFlash + ldrh r0, [r5, #0x0] + ldr r1, [r1, #0x0] + ldrh r2, [r5, #0x0] + ldr r3, [r1, #0x10] + ldr r1, _020DC990 ; =AT29LV512_org + bic r2, r2, #0x3 + orr r2, r2, r3 + strh r2, [r5, #0x0] + ldr r5, _020DC994 ; =0x04000208 + ldrh lr, [sp, #0x20] + ldrh r12, [r1, #0x28] + ldrh r2, [r5, #0x0] + mov r3, #0x0 + mov lr, lr, lsl r12 + strh r3, [r5, #0x0] + ldr ip, _020DC998 ; =0x0A005555 + mov r5, #0xaa + strb r5, [r12, #0x0] + ldr r3, _020DC99C ; =0x0A002AAA + mov r5, #0x55 + strb r5, [r3, #0x0] + mov r3, #0xa0 + strb r3, [r12, #0x0] + ldr r3, [r1, #0x24] + and r5, r0, #0x3 + cmp r3, #0x0 + add r1, lr, #0xa000000 + beq _020DC92C +_020DC91C: + ldrb r0, [r4], #0x1 + subs r3, r3, #0x1 + strb r0, [r1], #0x1 + bne _020DC91C +_020DC92C: + ldr ip, _020DC994 ; =0x04000208 + ldr r3, _020DC9A0 ; =CTRDGi_PollingSR + ldrh r0, [r12, #0x0] + sub r1, r1, #0x1 + mov r0, #0x1 + strh r2, [r12, #0x0] + ldrb r2, [r4, #-0x1] + ldr r3, [r3, #0x0] + blx r3 + ldr r3, _020DC988 ; =0x04000204 + ldr r1, _020DC984 ; =ctrdgi_flash_lock_id + ldrh r2, [r3, #0x0] + mov r4, r0 + bic r0, r2, #0x3 + orr r0, r0, r5 + strh r0, [r3, #0x0] + ldrh r0, [r1, #0x0] + bl OS_UnlockCartridge + mov r0, r4 + add sp, sp, #0x24 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020DC984: .word ctrdgi_flash_lock_id +_020DC988: .word 0x04000204 +_020DC98C: .word AgbFlash +_020DC990: .word AT29LV512_org +_020DC994: .word 0x04000208 +_020DC998: .word 0x0A005555 +_020DC99C: .word 0x0A002AAA +_020DC9A0: .word CTRDGi_PollingSR + + arm_func_start CTRDGi_EraseFlash4KBCoreAT +CTRDGi_EraseFlash4KBCoreAT: ; 0x020DC9A4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x24 + mov r5, r0 + ldmia r5!, {r0-r3} + add r4, sp, #0x0 + stmia r4!, {r0-r3} + ldmia r5!, {r0-r3} + stmia r4!, {r0-r3} + ldr r0, [r5, #0x0] + str r0, [r4, #0x0] + ldrh r0, [sp, #0x20] + cmp r0, #0x10 + addcs sp, sp, #0x24 + ldrhs r0, _020DCA54 ; =0x000080FF + ldmcsia sp!, {r4-r7,lr} + bxcs lr + mov r0, r0, lsl #0x15 + mov r5, r0, lsr #0x10 + mov r6, #0x0 + mov r4, #0x2 +_020DC9F4: + mov r7, r4 +_020DC9F8: + mov r0, r5 + bl CTRDGi_EraseFlashSectorAT +_020DCA00: ; 0x020DCA00 + cmp r0, #0x0 + beq _020DCA18 + sub r1, r7, #0x1 + mov r1, r1, lsl #0x10 + movs r7, r1, lsr #0x10 + bne _020DC9F8 +_020DCA18: + add r1, r5, #0x1 + mov r1, r1, lsl #0x10 + cmp r0, #0x0 + mov r5, r1, lsr #0x10 + addne sp, sp, #0x24 + ldmneia sp!, {r4-r7,lr} + bxne lr + add r1, r6, #0x1 + mov r1, r1, lsl #0x10 + mov r6, r1, lsr #0x10 + cmp r6, #0x20 + blo _020DC9F4 + add sp, sp, #0x24 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020DCA54: .word 0x000080FF diff --git a/arm9/asm/CTRDG_flash_LE39FW512.s b/arm9/asm/CTRDG_flash_LE39FW512.s index 3228818d..26e714c0 100644 --- a/arm9/asm/CTRDG_flash_LE39FW512.s +++ b/arm9/asm/CTRDG_flash_LE39FW512.s @@ -5,7 +5,7 @@ .extern AgbFlash .extern CTRDGi_PollingSR .extern ctrdgi_flash_lock_id - .extern UNK_021D6B38 + .extern ctrdgi_backup_irq .extern UNK_021D6B08 .section .rodata @@ -266,7 +266,7 @@ _020DCF38: mov r2, #0x0 strh r1, [r7, #0x0] ldrh r3, [r9, #0x0] - ldr r1, _020DD034 ; =UNK_021D6B38 + ldr r1, _020DD034 ; =ctrdgi_backup_irq and r5, r0, #0x3 strh r2, [r9, #0x0] ldrh r0, [r7, #0x0] @@ -289,7 +289,7 @@ _020DCFA0: bne _020DCFA0 _020DCFD4: ldr r3, _020DD030 ; =0x04000208 - ldr r0, _020DD034 ; =UNK_021D6B38 + ldr r0, _020DD034 ; =ctrdgi_backup_irq ldrh r1, [r3, #0x0] ldr r0, [r0, #0x0] ldr r2, _020DD028 ; =0x04000204 @@ -313,7 +313,7 @@ _020DD024: .word ctrdgi_flash_lock_id _020DD028: .word 0x04000204 _020DD02C: .word UNK_021D6B08 _020DD030: .word 0x04000208 -_020DD034: .word UNK_021D6B38 +_020DD034: .word ctrdgi_backup_irq arm_func_start CTRDGi_ProgramFlashByteLE CTRDGi_ProgramFlashByteLE: ; 0x020DD038 @@ -378,7 +378,7 @@ CTRDGi_EraseFlashSectorCoreLE: ; 0x020DD098 ldrh r5, [r0, #0x0] ldrh r12, [r1, #0x8] mov r1, #0x0 - ldr r2, _020DD1CC ; =UNK_021D6B38 + ldr r2, _020DD1CC ; =ctrdgi_backup_irq strh r1, [r0, #0x0] mov r6, r4, lsl r12 ldr lr, _020DD1D0 ; =0x0A005555 @@ -423,7 +423,7 @@ _020DD1BC: .word ctrdgi_flash_lock_id _020DD1C0: .word 0x04000204 _020DD1C4: .word AgbFlash _020DD1C8: .word 0x04000208 -_020DD1CC: .word UNK_021D6B38 +_020DD1CC: .word ctrdgi_backup_irq _020DD1D0: .word 0x0A005555 _020DD1D4: .word 0x0A002AAA _020DD1D8: .word CTRDGi_PollingSR @@ -447,7 +447,7 @@ CTRDGi_EraseFlashChipCoreLE: ; 0x020DD1DC strh r1, [r4, #0x0] ldrh r4, [r0, #0x0] mov r2, #0x0 - ldr r1, _020DD2C8 ; =UNK_021D6B38 + ldr r1, _020DD2C8 ; =ctrdgi_backup_irq strh r2, [r0, #0x0] ldr lr, _020DD2CC ; =0x0A005555 str r4, [r1, #0x0] @@ -490,7 +490,7 @@ _020DD2B8: .word ctrdgi_flash_lock_id _020DD2BC: .word 0x04000204 _020DD2C0: .word AgbFlash _020DD2C4: .word 0x04000208 -_020DD2C8: .word UNK_021D6B38 +_020DD2C8: .word ctrdgi_backup_irq _020DD2CC: .word 0x0A005555 _020DD2D0: .word 0x0A002AAA _020DD2D4: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_MX29L010.s b/arm9/asm/CTRDG_flash_MX29L010.s index 7b4e1dc3..13de7bd7 100644 --- a/arm9/asm/CTRDG_flash_MX29L010.s +++ b/arm9/asm/CTRDG_flash_MX29L010.s @@ -5,7 +5,7 @@ .extern AgbFlash .extern CTRDGi_PollingSR .extern ctrdgi_flash_lock_id - .extern UNK_021D6B38 + .extern ctrdgi_backup_irq .extern UNK_021D6B08 .section .rodata @@ -184,7 +184,7 @@ CTRDGi_WriteFlashSectorCoreMX: ; 0x020DD3D0 mov r3, r5, lsl r3 strh r0, [r1, #0x0] ldrh r1, [r8, #0x0] - ldr r0, _020DD558 ; =UNK_021D6B38 + ldr r0, _020DD558 ; =ctrdgi_backup_irq add r5, r3, #0xa000000 str r2, [r0, #0x0] cmp r1, #0x0 @@ -205,7 +205,7 @@ _020DD4C8: bne _020DD4C8 _020DD4FC: ldr r3, _020DD554 ; =0x04000208 - ldr r0, _020DD558 ; =UNK_021D6B38 + ldr r0, _020DD558 ; =ctrdgi_backup_irq ldrh r1, [r3, #0x0] ldr r0, [r0, #0x0] ldr r2, _020DD54C ; =0x04000204 @@ -228,7 +228,7 @@ _020DD548: .word ctrdgi_flash_lock_id _020DD54C: .word 0x04000204 _020DD550: .word UNK_021D6B08 _020DD554: .word 0x04000208 -_020DD558: .word UNK_021D6B38 +_020DD558: .word ctrdgi_backup_irq arm_func_start CTRDGi_ProgramFlashByteMX CTRDGi_ProgramFlashByteMX: ; 0x020DD55C @@ -314,7 +314,7 @@ _020DD684: ldr r0, _020DD748 ; =AgbFlash ldrh r12, [r8, #0x0] ldr r0, [r0, #0x0] - ldr r3, _020DD75C ; =UNK_021D6B38 + ldr r3, _020DD75C ; =ctrdgi_backup_irq ldrh r1, [r0, #0x8] ldr r0, [sp, #0x8] ldr r2, [sp, #0xc] @@ -333,7 +333,7 @@ _020DD684: strb r6, [r3, #0x0] strb r4, [r1, #0x0] ldrh r3, [r8, #0x0] - ldr r3, _020DD75C ; =UNK_021D6B38 + ldr r3, _020DD75C ; =ctrdgi_backup_irq ldr r3, [r3, #0x0] strh r3, [r8, #0x0] ldr r3, _020DD768 ; =CTRDGi_PollingSR @@ -367,7 +367,7 @@ _020DD74C: .word 0x000080FF _020DD750: .word ctrdgi_flash_lock_id _020DD754: .word 0x04000204 _020DD758: .word 0x04000208 -_020DD75C: .word UNK_021D6B38 +_020DD75C: .word ctrdgi_backup_irq _020DD760: .word 0x0A005555 _020DD764: .word 0x0A002AAA _020DD768: .word CTRDGi_PollingSR @@ -391,7 +391,7 @@ CTRDGi_EraseFlashChipCoreMX: ; 0x020DD76C strh r1, [r4, #0x0] ldrh r4, [r0, #0x0] mov r2, #0x0 - ldr r1, _020DD858 ; =UNK_021D6B38 + ldr r1, _020DD858 ; =ctrdgi_backup_irq strh r2, [r0, #0x0] ldr lr, _020DD85C ; =0x0A005555 str r4, [r1, #0x0] @@ -434,7 +434,7 @@ _020DD848: .word ctrdgi_flash_lock_id _020DD84C: .word 0x04000204 _020DD850: .word AgbFlash _020DD854: .word 0x04000208 -_020DD858: .word UNK_021D6B38 +_020DD858: .word ctrdgi_backup_irq _020DD85C: .word 0x0A005555 _020DD860: .word 0x0A002AAA _020DD864: .word CTRDGi_PollingSR diff --git a/arm9/asm/CTRDG_flash_common.s b/arm9/asm/CTRDG_flash_common.s index 4c51608a..ed1dd88e 100644 --- a/arm9/asm/CTRDG_flash_common.s +++ b/arm9/asm/CTRDG_flash_common.s @@ -51,8 +51,8 @@ CTRDGi_EraseAgbFlashSectorAsync: ; 0x021D6B30 CTRDGi_EraseAgbFlashChip: ; 0x021D6B34 .space 0x4 - .global UNK_021D6B38 -UNK_021D6B38: ; 0x021D6B38 + .global ctrdgi_backup_irq +ctrdgi_backup_irq: ; 0x021D6B38 .space 0x4 .global UNK_021D6B3C @@ -493,7 +493,7 @@ CTRDGi_ReadFlashID: ; 0x020DC48C ldr r5, _020DC590 ; =0x04000208 mov r0, #0x0 ldrh r2, [r5, #0x0] - ldr r1, _020DC594 ; =UNK_021D6B38 + ldr r1, _020DC594 ; =ctrdgi_backup_irq ldr r4, _020DC598 ; =0x0A005555 strh r0, [r5, #0x0] str r2, [r1, #0x0] @@ -527,7 +527,7 @@ _020DC4FC: orr r4, r0, r4, lsr #0x10 ldrh r2, [r12, #0x0] mov r0, #0x0 - ldr r1, _020DC594 ; =UNK_021D6B38 + ldr r1, _020DC594 ; =ctrdgi_backup_irq strh r0, [r12, #0x0] ldr r5, _020DC598 ; =0x0A005555 str r2, [r1, #0x0] @@ -559,7 +559,7 @@ _020DC580: bx lr .balign 4 _020DC590: .word 0x04000208 -_020DC594: .word UNK_021D6B38 +_020DC594: .word ctrdgi_backup_irq _020DC598: .word 0x0A005555 _020DC59C: .word 0x0A002AAA _020DC5A0: .word UNK_021D6B10 diff --git a/arm9/lib/include/CTRDG_backup.h b/arm9/lib/include/CTRDG_backup.h index d248b7a1..272744ad 100644 --- a/arm9/lib/include/CTRDG_backup.h +++ b/arm9/lib/include/CTRDG_backup.h @@ -5,6 +5,10 @@ #include "CTRDG_flash.h" #include "CTRDG_task.h" +#define CTRDG_BACKUP_PHASE_PROGRAM 0x0001 +#define CTRDG_BACKUP_PHASE_SECTOR_ERASE 0x0002 +#define CTRDG_BACKUP_PHASE_CHIP_ERASE 0x0003 + typedef struct CTRDGiFlashTypePlusTag { u16 (*CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 *src); diff --git a/arm9/lib/include/CTRDG_flash.h b/arm9/lib/include/CTRDG_flash.h index 9a4aff41..aa02d951 100644 --- a/arm9/lib/include/CTRDG_flash.h +++ b/arm9/lib/include/CTRDG_flash.h @@ -4,6 +4,8 @@ #include "nitro/types.h" #include "MI_exMemory.h" +#define CTRDG_AGB_FLASH_ADR 0x0A000000 + typedef struct CTRDGiFlashSectorTag { u32 size; diff --git a/arm9/lib/include/CTRDG_flash_AT29LV512.h b/arm9/lib/include/CTRDG_flash_AT29LV512.h new file mode 100644 index 00000000..908dd6cf --- /dev/null +++ b/arm9/lib/include/CTRDG_flash_AT29LV512.h @@ -0,0 +1,10 @@ +#ifndef POKEDIAMOND_CTRDG_FLASH_AT29LV512_H +#define POKEDIAMOND_CTRDG_FLASH_AT29LV512_H + +#include "nitro/types.h" +#include "CTRDG_task.h" + +u32 CTRDGi_EraseFlashChipCoreAT(CTRDGTaskInfo *arg); +u32 CTRDGi_EraseFlashSectorCoreAT(CTRDGTaskInfo *arg); + +#endif //POKEDIAMOND_CTRDG_FLASH_AT29LV512_H diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h index c3812128..d063b817 100644 --- a/arm9/lib/include/OS_interrupt.h +++ b/arm9/lib/include/OS_interrupt.h @@ -43,6 +43,13 @@ static inline BOOL OS_EnableIrq(void) return (BOOL)prep; } +static inline BOOL OS_RestoreIrq(BOOL enable) +{ + u16 prep = reg_OS_IME; + reg_OS_IME = (u16)enable; + return (BOOL)prep; +} + static inline OSIrqMask OS_GetIrqMask(void) { return reg_OS_IE; diff --git a/arm9/lib/src/CTRDG_flash_AT29LV512.c b/arm9/lib/src/CTRDG_flash_AT29LV512.c new file mode 100644 index 00000000..8cd90c31 --- /dev/null +++ b/arm9/lib/src/CTRDG_flash_AT29LV512.c @@ -0,0 +1,143 @@ +#include "CTRDG_flash_AT29LV512.h" +#include "function_target.h" +#include "CTRDG_backup.h" +#include "CTRDG_flash.h" +#include "MI_exMemory.h" +#include "OS_interrupt.h" +#include "OS_spinLock.h" + +#define CTRDG_BACKUP_COM_ADR1 (CTRDG_AGB_FLASH_ADR+0x00005555) +#define CTRDG_BACKUP_COM_ADR2 (CTRDG_AGB_FLASH_ADR+0x00002aaa) + +extern u16 ctrdgi_flash_lock_id; +extern BOOL ctrdgi_backup_irq; + +extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 *adr, u16 lastData); + +extern u16 CTRDGi_EraseFlashChipAT(void); +extern u16 CTRDGi_EraseFlashSectorAT(u16 p_secNo); +extern u16 CTRDGi_EraseFlash4KBAT(u16 l_secNo); +extern u16 CTRDGi_WriteFlashSectorAT(u16 p_secNo, u8 *src); +extern u16 CTRDGi_WriteFlash4KBAT(u16 l_secNo, u8 *src); + +extern void CTRDGi_EraseFlashChipAsyncAT(CTRDG_TASK_FUNC callback); +extern void CTRDGi_EraseFlash4KBAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback); +extern void CTRDGi_WriteFlash4KBAsyncAT(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback); +extern void CTRDGi_EraseFlashSectorAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback); +extern void CTRDGi_WriteFlashSectorAsyncAT(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback); + +static const u16 atMaxTime[] = { + 10, 40, 0, 40 +}; + +const CTRDGiFlashTypePlus AT29LV512_lib = { + CTRDGi_WriteFlash4KBAT, + CTRDGi_EraseFlashChipAT, + CTRDGi_EraseFlash4KBAT, + CTRDGi_WriteFlash4KBAsyncAT, + CTRDGi_EraseFlashChipAsyncAT, + CTRDGi_EraseFlash4KBAsyncAT, + CTRDGi_PollingSR512kCOMMON, + atMaxTime, + { + 0x00010000, //ROM size + {0x00001000, 12, 16, 0}, //sector + {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, //read cycle and write cycle + 0x1f, //maker ID + 0x3d, //device ID + } +}; + +const CTRDGiFlashTypePlus AT29LV512_org = { + CTRDGi_WriteFlashSectorAT, + CTRDGi_EraseFlashChipAT, + CTRDGi_EraseFlashSectorAT, + CTRDGi_WriteFlashSectorAsyncAT, + CTRDGi_EraseFlashChipAsyncAT, + CTRDGi_EraseFlashSectorAsyncAT, + CTRDGi_PollingSR512kCOMMON, + atMaxTime, + { + 0x00010000, //ROM size + {0x00000080, 7, 512, 0}, //sector + {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, //read cycle and write cycle + 0x1f, //maker ID + 0x3d, //device ID + } +}; + +ARM_FUNC u32 CTRDGi_EraseFlashChipCoreAT(CTRDGTaskInfo *arg) +{ + MICartridgeRamCycle ram_cycle; + u32 result; + (void)arg; + + (void)OS_LockCartridge(ctrdgi_flash_lock_id); + + ram_cycle = MI_GetCartridgeRamCycle(); + MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); + + ctrdgi_backup_irq = OS_DisableIrq(); + + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; + *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; + *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x10; + + (void)OS_RestoreIrq(ctrdgi_backup_irq); + + result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_CHIP_ERASE, (u8 *)CTRDG_AGB_FLASH_ADR, 0xff); + + MI_SetCartridgeRamCycle(ram_cycle); + + (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); + + return result; +} + +ARM_FUNC u32 CTRDGi_EraseFlashSectorCoreAT(CTRDGTaskInfo *arg) +{ + u32 i; + u8 *dst; + BOOL shlet_ime; + MICartridgeRamCycle ram_cycle; + u32 result; + CTRDGTaskInfo p = *arg; + u16 p_secNo = p.sec_num; + + dst = (u8 *)(CTRDG_AGB_FLASH_ADR + (p_secNo << AT29LV512_org.type.sector.shift)); + + (void)OS_LockCartridge(ctrdgi_flash_lock_id); + + ram_cycle = MI_GetCartridgeRamCycle(); + MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); + + shlet_ime = OS_DisableIrq(); + + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; + *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; + *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0; + + for (i = AT29LV512_org.type.sector.size; i > 0; i--) + { + *dst++ = 0xff; + } + dst--; + + (void)OS_RestoreIrq(shlet_ime); + + result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, 0xff); + + if (result) + { + result = (u16)((result & 0xff00) | CTRDG_BACKUP_PHASE_SECTOR_ERASE); + } + + MI_SetCartridgeRamCycle(ram_cycle); + + (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); + + return result; +} diff --git a/arm9/modules/21/include/mod21_02254854.h b/arm9/modules/21/include/mod21_02254854.h index 26501f35..cc243568 100644 --- a/arm9/modules/21/include/mod21_02254854.h +++ b/arm9/modules/21/include/mod21_02254854.h @@ -4,12 +4,18 @@ #include "nitro/types.h" #include "mod21_02254A6C.h" +typedef struct Time +{ + u32 hour; + u32 minute; +} Time; + typedef struct UnkStruct02254854 { u8 bytearray[8]; u8 padding0[8]; BOOL Unk10; - u32 Unk14[2]; + Time time; u8 padding1[4]; u32 Unk20; void *Unk24; diff --git a/arm9/modules/21/src/mod21_02254854.c b/arm9/modules/21/src/mod21_02254854.c index fe285936..a9a7599d 100644 --- a/arm9/modules/21/src/mod21_02254854.c +++ b/arm9/modules/21/src/mod21_02254854.c @@ -3,7 +3,7 @@ #include "unk_0200CA44.h" #include "mod21_02254854.h" -extern void GF_RTC_CopyTime(u32 *param0); +extern void GF_RTC_CopyTime(Time *param0); u8 const MOD21_02254D80[] = { 0x10, 0xAF, 0x10, 0xCF }; extern BOOL MOD20_02254130(void *param0, BOOL param1, void *param2, UnkStruct02254854 *param3, u32 param4); @@ -42,7 +42,7 @@ THUMB_FUNC BOOL MOD21_02254854(UnkStruct02254854 **param0, u32 param1, u32 param THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2, u32 param3) { #pragma unused (param2, param3) //not sure, please check - if (MOD21_02254A6C((UnkStruct02254A6C *)¶m0->Unk24, param0->Unk14)) //todo fix + if (MOD21_02254A6C((UnkStruct02254A6C *)¶m0->Unk24, ¶m0->time)) //todo fix { param0->bytearray[0] = 0; param0->bytearray[1] = 0; @@ -50,16 +50,16 @@ THUMB_FUNC BOOL MOD21_0225489C(UnkStruct02254854 *param0, u32 param1, u32 param2 param0->bytearray[3] = 1; param0->bytearray[6] = 0; param0->Unk20 = 0; - GF_RTC_CopyTime(param0->Unk14); - if (param0->Unk14[0] >= 0x18) + GF_RTC_CopyTime(¶m0->time); + if (param0->time.hour >= 0x18) { - param0->Unk14[0] = param0->Unk14[0] % 0x18; + param0->time.hour = param0->time.hour % 0x18; } - if (param0->Unk14[1] >= 0x3c) + if (param0->time.minute >= 0x3c) { - param0->Unk14[0] = param0->Unk14[0] % 0x3c; + param0->time.hour = param0->time.hour % 0x3c; } - param0->bytearray[5] = (u8)param0->Unk14[1]; + param0->bytearray[5] = (u8)param0->time.minute; param0->Unk10 = MOD20_02254130((void *)MOD21_02254D80, TRUE, MOD21_02254974, param0, 8); if (param0->Unk10 == FALSE) { @@ -168,9 +168,9 @@ THUMB_FUNC BOOL MOD21_022549E4(UnkStruct02254854 * param0) } if (MOD21_02254B34(param0->Unk24, 1)) { - param0->bytearray[5] = (u8)param0->Unk14[1]; - GF_RTC_CopyTime(param0->Unk14); - if (param0->bytearray[5] != param0->Unk14[1]) + param0->bytearray[5] = (u8)param0->time.minute; + GF_RTC_CopyTime(¶m0->time); + if (param0->bytearray[5] != param0->time.minute) { MOD21_02254B10(param0->Unk24, 1); } -- cgit v1.2.3