From 8c295f4eae1623bd95a842d375de9cfe3fed8302 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 12 Mar 2021 23:23:53 +0000 Subject: start of scrcmd decomp --- arm9/arm9.lsf | 1 + arm9/asm/scrcmd.s | 12448 ---------------------------------------------- arm9/asm/scrcmd_asm.s | 12077 ++++++++++++++++++++++++++++++++++++++++++++ arm9/asm/unk_02038C78.s | 42 +- arm9/global.inc | 42 +- arm9/src/scrcmd.c | 182 + arm9/src/scrcmd_18_c.c | 2 +- arm9/src/script.c | 2 +- 8 files changed, 12304 insertions(+), 12492 deletions(-) delete mode 100644 arm9/asm/scrcmd.s create mode 100644 arm9/asm/scrcmd_asm.s create mode 100644 arm9/src/scrcmd.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b8accee4..fbe54fd5 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -152,6 +152,7 @@ Static arm9 Object script.o Object unk_02038C78.o Object scrcmd.o + Object scrcmd_asm.o Object scrcmd_2.o Object scrcmd_3.o Object scrcmd_4.o diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s deleted file mode 100644 index c5ae760b..00000000 --- a/arm9/asm/scrcmd.s +++ /dev/null @@ -1,12448 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern UNK_020F34E0 - .extern sScriptConditionTable - .extern UNK_020F34FC - .extern UNK_020F3538 - .extern gMain - - .section .bss - - .global UNK_021C5A0C -UNK_021C5A0C: ; 0x021C5A0C - .space 0x4 - - .text - - thumb_func_start ScrCmd_nop -ScrCmd_nop: ; 0x020399A0 - mov r0, #0x0 - bx lr - - thumb_func_start ScrCmd_nop2 -ScrCmd_nop2: ; 0x020399A4 - mov r0, #0x0 - bx lr - - thumb_func_start ScrCmd_end -ScrCmd_end: ; 0x020399A8 - push {r3, lr} - bl StopScript - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start ScrCmd_delay -ScrCmd_delay: ; 0x020399B4 - push {r3-r7, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r6, [r1, #0x0] - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl GetVarPointer - strh r7, [r0, #0x0] - ldr r1, _020399E4 ; =RunPauseTimer - add r0, r5, #0x0 - str r4, [r5, #0x64] - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_020399E4: .word RunPauseTimer - - thumb_func_start RunPauseTimer -RunPauseTimer: ; 0x020399E8 - push {r3, lr} - add r1, r0, #0x0 - ldr r1, [r1, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - ldrh r1, [r0, #0x0] - sub r1, r1, #0x1 - strh r1, [r0, #0x0] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - bne _02039A0A - mov r0, #0x1 - pop {r3, pc} -_02039A0A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02039A10 -FUN_02039A10: ; 0x02039A10 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ScrCmd_loadbyte -ScrCmd_loadbyte: ; 0x02039A28 - ldr r1, [r0, #0x8] - add r2, r1, #0x1 - str r2, [r0, #0x8] - ldrb r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r2, [r2, #0x0] - lsl r1, r3, #0x2 - add r0, r0, r1 - str r2, [r0, #0x64] - mov r0, #0x0 - bx lr - - thumb_func_start ScrCmd_loadword -ScrCmd_loadword: ; 0x02039A40 - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r5, [r2, #0x0] - bl ScriptReadWord - lsl r1, r5, #0x2 - add r1, r4, r1 - str r0, [r1, #0x64] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_loadbytefromaddr -ScrCmd_loadbytefromaddr: ; 0x02039A5C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadWord - ldrb r1, [r0, #0x0] - lsl r0, r4, #0x2 - add r0, r5, r0 - str r1, [r0, #0x64] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_writebytetoaddr -ScrCmd_writebytetoaddr: ; 0x02039A78 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - strb r1, [r0, #0x0] - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ScrCmd_setptrbyte -ScrCmd_setptrbyte: ; 0x02039A90 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - lsl r1, r1, #0x2 - add r1, r4, r1 - ldr r1, [r1, #0x64] - strb r1, [r0, #0x0] - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_copylocal -ScrCmd_copylocal: ; 0x02039AAC - ldr r1, [r0, #0x8] - add r2, r1, #0x1 - str r2, [r0, #0x8] - ldrb r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - lsl r1, r1, #0x2 - add r1, r0, r1 - ldr r2, [r1, #0x64] - lsl r1, r3, #0x2 - add r0, r0, r1 - str r2, [r0, #0x64] - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start ScrCmd_copybyte -ScrCmd_copybyte: ; 0x02039ACC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadWord - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadWord - ldrb r0, [r0, #0x0] - strb r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start compare_012 -compare_012: ; 0x02039AE4 - cmp r0, r1 - bhs _02039AEC - mov r0, #0x0 - bx lr -_02039AEC: - cmp r0, r1 - bne _02039AF4 - mov r0, #0x1 - bx lr -_02039AF4: - mov r0, #0x2 - bx lr - - thumb_func_start ScrCmd_compare_local_to_local -ScrCmd_compare_local_to_local: ; 0x02039AF8 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x8] - add r1, r0, #0x1 - str r1, [r4, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - lsl r0, r0, #0x2 - add r0, r4, r0 - ldr r0, [r0, #0x64] - str r2, [r4, #0x8] - ldrb r1, [r1, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - lsl r1, r1, #0x2 - add r1, r4, r1 - ldr r1, [r1, #0x64] - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_compare_local_to_value -ScrCmd_compare_local_to_value: ; 0x02039B28 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x8] - add r1, r0, #0x1 - str r1, [r4, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - lsl r0, r0, #0x2 - add r0, r4, r0 - ldr r0, [r0, #0x64] - str r2, [r4, #0x8] - ldrb r1, [r1, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ScrCmd_compare_local_to_addr -ScrCmd_compare_local_to_addr: ; 0x02039B50 - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - lsl r1, r1, #0x2 - add r1, r4, r1 - ldr r1, [r1, #0x64] - lsl r1, r1, #0x18 - lsr r5, r1, #0x18 - bl ScriptReadWord - ldrb r1, [r0, #0x0] - add r0, r5, #0x0 - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_compare_addr_to_local -ScrCmd_compare_addr_to_local: ; 0x02039B78 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - ldr r2, [r4, #0x8] - ldrb r0, [r0, #0x0] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - lsl r1, r1, #0x2 - add r1, r4, r1 - ldr r1, [r1, #0x64] - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ScrCmd_compare_addr_to_value -ScrCmd_compare_addr_to_value: ; 0x02039BA0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - ldr r2, [r4, #0x8] - ldrb r0, [r0, #0x0] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_compare_addr_to_addr -ScrCmd_compare_addr_to_addr: ; 0x02039BBC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadWord - ldrb r4, [r0, #0x0] - add r0, r5, #0x0 - bl ScriptReadWord - ldrb r1, [r0, #0x0] - add r0, r4, #0x0 - bl compare_012 - strb r0, [r5, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_compare_var_to_value -ScrCmd_compare_var_to_value: ; 0x02039BDC - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - ldrh r5, [r0, #0x0] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl compare_012 - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_compare_var_to_var -ScrCmd_compare_var_to_var: ; 0x02039C08 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldrh r0, [r4, #0x0] - ldrh r1, [r1, #0x0] - bl compare_012 - strb r0, [r5, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02039C40 -FUN_02039C40: ; 0x02039C40 - push {r3-r7, lr} - add r7, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x7 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xe - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r7, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl CreateScriptContext - str r0, [r6, #0x0] - ldrb r0, [r4, #0x0] - add r0, r0, #0x1 - strb r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02039C78 -FUN_02039C78: ; 0x02039C78 - push {r3-r7, lr} - str r0, [sp, #0x0] - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x5 - add r0, r5, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x7 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xe - bl FUN_02039438 - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - mov r0, #0x1 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - bl CreateScriptContext - str r0, [r7, #0x0] - ldrb r0, [r4, #0x0] - ldr r1, _02039CC4 ; =FUN_02039CC8 - add r0, r0, #0x1 - strb r0, [r4, #0x0] - ldr r0, [sp, #0x0] - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_02039CC4: .word FUN_02039CC8 - - thumb_func_start FUN_02039CC8 -FUN_02039CC8: ; 0x02039CC8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x5 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02039CDE - mov r0, #0x1 - pop {r3, pc} -_02039CDE: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02039CE4 -FUN_02039CE4: ; 0x02039CE4 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x5 - bl FUN_02039438 - mov r1, #0x0 - strb r1, [r0, #0x0] - add r0, r1, #0x0 - pop {r3, pc} - - thumb_func_start ScrCmd_goto -ScrCmd_goto: ; 0x02039CF8 - ; relative jump - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r1, [r4, #0x8] - add r0, r4, #0x0 - add r1, r1, r2 - bl ScriptJump - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02039D10 -FUN_02039D10: ; 0x02039D10 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadWord - add r7, r0, #0x0 - ldr r0, [r6, #0x0] - bl FUN_02058448 - cmp r4, r0 - bne _02039D44 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r7 - bl ScriptJump -_02039D44: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02039D48 -FUN_02039D48: ; 0x02039D48 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x74] - bl FUN_02046534 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r0, r5, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - cmp r6, r4 - bne _02039D72 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r2 - bl ScriptJump -_02039D72: - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02039D78 -FUN_02039D78: ; 0x02039D78 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x9 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r0, r5, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - cmp r0, r4 - bne _02039DA8 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r2 - bl ScriptJump -_02039DA8: - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start ScrCmd_call -ScrCmd_call: ; 0x02039DAC - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r1, [r4, #0x8] - add r0, r4, #0x0 - add r1, r1, r2 - bl ScriptCall - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_return -ScrCmd_return: ; 0x02039DC4 - push {r3, lr} - bl ScriptReturn - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start ScrCmd_goto_if -ScrCmd_goto_if: ; 0x02039DD0 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadWord - add r1, r0, #0x0 - lsl r0, r4, #0x1 - add r3, r4, r0 - ldr r0, _02039E00 ; =sScriptConditionTable - ldrb r2, [r5, #0x2] - add r0, r0, r3 - ldrb r0, [r2, r0] - cmp r0, #0x1 - bne _02039DFC - ldr r2, [r5, #0x8] - add r0, r5, #0x0 - add r1, r2, r1 - bl ScriptJump -_02039DFC: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_02039E00: .word sScriptConditionTable - - thumb_func_start ScrCmd_call_if -ScrCmd_call_if: ; 0x02039E04 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadWord - add r1, r0, #0x0 - lsl r0, r4, #0x1 - add r3, r4, r0 - ldr r0, _02039E34 ; =sScriptConditionTable - ldrb r2, [r5, #0x2] - add r0, r0, r3 - ldrb r0, [r2, r0] - cmp r0, #0x1 - bne _02039E30 - ldr r2, [r5, #0x8] - add r0, r5, #0x0 - add r1, r2, r1 - bl ScriptCall -_02039E30: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_02039E34: .word sScriptConditionTable - - thumb_func_start ScrCmd_setflag -ScrCmd_setflag: ; 0x02039E38 - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FlagSet - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_clearflag -ScrCmd_clearflag: ; 0x02039E50 - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FlagClear - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_checkflag -ScrCmd_checkflag: ; 0x02039E68 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl FlagCheck - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02039E84 -FUN_02039E84: ; 0x02039E84 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldrh r1, [r6, #0x0] - add r0, r5, #0x0 - bl FlagCheck - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02039EC0 -FUN_02039EC0: ; 0x02039EC0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldrh r1, [r1, #0x0] - add r0, r4, #0x0 - bl FlagSet - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_settrainerflag -ScrCmd_settrainerflag: ; 0x02039EE8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl TrainerFlagSet - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_cleartrainerflag -ScrCmd_cleartrainerflag: ; 0x02039F0C - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl TrainerFlagClear - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_checktrainerflag -ScrCmd_checktrainerflag: ; 0x02039F30 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r4, #0x0 - bl TrainerFlagCheck - strb r0, [r5, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_addvar -ScrCmd_addvar: ; 0x02039F58 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - ldrh r1, [r4, #0x0] - add r0, r1, r0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_subvar -ScrCmd_subvar: ; 0x02039F88 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - ldrh r1, [r4, #0x0] - sub r0, r1, r0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_setvar -ScrCmd_setvar: ; 0x02039FB8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_copyvar -ScrCmd_copyvar: ; 0x02039FDC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - ldrh r0, [r0, #0x0] - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_setorcopyvar -ScrCmd_setorcopyvar: ; 0x0203A00C - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_message -ScrCmd_message: ; 0x0203A038 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [r0, #0x78] - bl MOD05_ShowMessageInField - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start ScrCmd_message_from -ScrCmd_message_from: ; 0x0203A04C - ; message_from bank, id - push {r4-r6, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - mov r0, #0x1 - mov r1, #0x1a - add r2, r5, #0x0 - mov r3, #0x20 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl MOD05_ShowMessageInField - add r0, r5, #0x0 - bl DestroyMsgData - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203A098 -FUN_0203A098: ; 0x0203A098 - push {r3-r6, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - mov r0, #0x1 - mov r1, #0x1a - add r2, r5, #0x0 - mov r3, #0x20 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - add r0, r5, #0x0 - bl DestroyMsgData - ldr r1, _0203A0F8 ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r6, pc} - nop -_0203A0F8: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A0FC -FUN_0203A0FC: ; 0x0203A0FC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0xff - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - add r3, r7, #0x0 - bl MOD05_021E2C58 - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203A13C -FUN_0203A13C: ; 0x0203A13C - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - add r3, r7, #0x0 - bl MOD05_021E2C58 - ldr r1, _0203A184 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203A184: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A188 -FUN_0203A188: ; 0x0203A188 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldrb r3, [r2, #0x0] - add r1, #0xa8 - ldr r2, [r1, #0x0] - cmp r2, #0x0 - bne _0203A1AA - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_0203A1AA: - lsl r1, r3, #0x4 - add r1, r3, r1 - add r2, #0x90 - lsl r1, r1, #0x4 - add r4, r2, r1 - ldrh r1, [r2, r1] - ldr r2, _0203A204 ; =0x0000FFFF - cmp r1, r2 - bne _0203A1E2 - ldr r2, _0203A208 ; =0x0000022B - mov r0, #0x1 - mov r1, #0x1a - mov r3, #0x20 - bl NewMsgDataFromNarc - add r6, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r2, [r4, #0x2] - add r0, r5, #0x0 - add r1, r6, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - add r0, r6, #0x0 - bl DestroyMsgData - b _0203A1F4 -_0203A1E2: - mov r2, #0x6 - ldrsh r2, [r4, r2] - str r2, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - ldrh r2, [r4, #0x2] - ldrh r3, [r4, #0x4] - bl MOD05_021E2C58 -_0203A1F4: - ldr r1, _0203A20C ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r4-r6, pc} - nop -_0203A204: .word 0x0000FFFF -_0203A208: .word 0x0000022B -_0203A20C: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A210 -FUN_0203A210: ; 0x0203A210 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r2, [r5, #0x8] - ldr r6, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - ldr r1, [r5, #0x8] - add r2, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r3, [r1, #0x0] - mov r1, #0x0 - add r0, sp, #0x4 - strb r1, [r0, #0x0] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r0, [r6, #0xc] - add r1, r7, #0x0 - bl MOD06_02244210 - add r6, r0, #0x0 - add r2, sp, #0x4 - ldrb r2, [r2, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r4, r2 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0x1 - bl MOD05_021E2CBC - add r0, r6, #0x0 - bl ScrStrBufs_delete - ldr r1, _0203A284 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203A284: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A288 -FUN_0203A288: ; 0x0203A288 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - mov r1, #0x3 - add r0, sp, #0x4 - strb r1, [r0, #0x2] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl MOD05_021E2BD0 - ldr r1, _0203A2C0 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_0203A2C0: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A2C4 -FUN_0203A2C4: ; 0x0203A2C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - mov r3, #0x1 - add r1, r2, #0x1 - str r1, [r4, #0x8] - mov r1, #0x0 - str r1, [sp, #0x0] - ldrb r2, [r2, #0x0] - ldr r1, [r4, #0x78] - bl MOD05_021E2BD0 - ldr r1, _0203A2EC ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203A2EC: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A2F0 -FUN_0203A2F0: ; 0x0203A2F0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x3 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - bl FUN_020546C8 - pop {r3, pc} - - thumb_func_start FUN_0203A304 -FUN_0203A304: ; 0x0203A304 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - lsr r2, r2, #0x18 - mov r3, #0x1 - bl MOD05_021E2BD0 - ldr r1, _0203A33C ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203A33C: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A340 -FUN_0203A340: ; 0x0203A340 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - lsl r2, r4, #0x18 - mov r3, #0x1 - add r0, sp, #0x4 - strb r3, [r0, #0x1] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - lsr r2, r2, #0x18 - bl MOD05_021E2BD0 - ldr r1, _0203A384 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_0203A384: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A388 -FUN_0203A388: ; 0x0203A388 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - lsr r2, r2, #0x18 - bl MOD05_021E2BD0 - ldr r1, _0203A3C0 ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - nop -_0203A3C0: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A3C4 -FUN_0203A3C4: ; 0x0203A3C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_02058488 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - ldr r1, _0203A3FC ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - nop -_0203A3FC: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A400 -FUN_0203A400: ; 0x0203A400 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r1, [r5, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - bl FUN_02030F40 - cmp r0, #0x0 - bne _0203A428 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - b _0203A448 -_0203A428: - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - mov r1, #0x1 - add r0, sp, #0x4 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl MOD05_021E2BD0 -_0203A448: - ldr r1, _0203A458 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - nop -_0203A458: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A45C -FUN_0203A45C: ; 0x0203A45C - push {r3, lr} - ldr r1, _0203A468 ; =FUN_0203A46C - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A468: .word FUN_0203A46C - - thumb_func_start FUN_0203A46C -FUN_0203A46C: ; 0x0203A46C - ldr r0, _0203A480 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x3 - tst r0, r1 - beq _0203A47A - mov r0, #0x1 - bx lr -_0203A47A: - mov r0, #0x0 - bx lr - nop -_0203A480: .word gMain - - thumb_func_start FUN_0203A484 -FUN_0203A484: ; 0x0203A484 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [r4, #0x64] - ldr r1, _0203A4A8 ; =FUN_0203A4AC - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203A4A8: .word FUN_0203A4AC - - thumb_func_start FUN_0203A4AC -FUN_0203A4AC: ; 0x0203A4AC - ldr r1, _0203A4CC ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x3 - tst r1, r2 - beq _0203A4BA - mov r0, #0x1 - bx lr -_0203A4BA: - ldr r1, [r0, #0x64] - sub r1, r1, #0x1 - str r1, [r0, #0x64] - bne _0203A4C6 - mov r0, #0x1 - bx lr -_0203A4C6: - mov r0, #0x0 - bx lr - nop -_0203A4CC: .word gMain - - thumb_func_start FUN_0203A4D0 -FUN_0203A4D0: ; 0x0203A4D0 - push {r3, lr} - ldr r1, _0203A4DC ; =FUN_0203A4E0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A4DC: .word FUN_0203A4E0 - - thumb_func_start FUN_0203A4E0 -FUN_0203A4E0: ; 0x0203A4E0 - push {r4, lr} - ldr r1, _0203A55C ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x3 - add r3, r2, #0x0 - tst r3, r1 - beq _0203A4F2 - mov r0, #0x1 - pop {r4, pc} -_0203A4F2: - mov r3, #0x40 - tst r3, r2 - beq _0203A506 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A506: - mov r3, #0x80 - tst r3, r2 - beq _0203A51A - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A51A: - mov r3, #0x20 - tst r3, r2 - beq _0203A52E - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x2 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A52E: - mov r3, #0x10 - add r4, r2, #0x0 - tst r4, r3 - beq _0203A542 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A542: - lsl r1, r3, #0x6 - tst r1, r2 - beq _0203A552 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02039460 - b _0203A556 -_0203A552: - mov r0, #0x0 - pop {r4, pc} -_0203A556: - mov r0, #0x1 - pop {r4, pc} - nop -_0203A55C: .word gMain - - thumb_func_start FUN_0203A560 -FUN_0203A560: ; 0x0203A560 - push {r3, lr} - ldr r1, _0203A56C ; =FUN_0203A570 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A56C: .word FUN_0203A570 - - thumb_func_start FUN_0203A570 -FUN_0203A570: ; 0x0203A570 - ldr r0, _0203A58C ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x3 - tst r0, r1 - beq _0203A57E - mov r0, #0x1 - bx lr -_0203A57E: - mov r0, #0xf0 - tst r0, r1 - beq _0203A588 - mov r0, #0x1 - bx lr -_0203A588: - mov r0, #0x0 - bx lr - .balign 4 -_0203A58C: .word gMain - - thumb_func_start FUN_0203A590 -FUN_0203A590: ; 0x0203A590 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x6 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - add r1, r0, #0x0 - ldr r0, [r4, #0x8] - mov r2, #0x3 - bl FUN_020545B8 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02054608 - mov r0, #0x1 - strb r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203A5D8 -FUN_0203A5D8: ; 0x0203A5D8 - push {r3-r5, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x1 - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_0200D0E0 - add r0, r5, #0x0 - bl FUN_02019178 - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A608 -FUN_0203A608: ; 0x0203A608 - push {r3-r5, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x1 - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02019178 - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A630 -FUN_0203A630: ; 0x0203A630 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x31 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2d - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x32 - bl FUN_02039438 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0x33 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x2e - bl FUN_02039438 - str r0, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x34 - bl FUN_02039438 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r6, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r7, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x0] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x4] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x8] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r0, #0x0] - ldr r1, _0203A6C4 ; =FUN_0203A6C8 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0203A6C4: .word FUN_0203A6C8 - - thumb_func_start FUN_0203A6C8 -FUN_0203A6C8: ; 0x0203A6C8 - push {r4-r7, lr} - sub sp, #0xc - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x31 - add r0, r4, #0x0 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x32 - bl FUN_02039438 - str r0, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x33 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x34 - bl FUN_02039438 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0x2d - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2e - bl FUN_02039438 - add r5, r0, #0x0 - ldrh r0, [r6, #0x0] - cmp r0, #0x0 - bne _0203A71E - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - bne _0203A71E - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0203A71E: - ldrh r3, [r7, #0x0] - cmp r3, #0x0 - beq _0203A740 - ldr r0, [sp, #0x8] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - ldr r0, [r4, #0x8] - bne _0203A738 - mov r1, #0x3 - mov r2, #0x1 - bl FUN_020179E0 - b _0203A740 -_0203A738: - mov r1, #0x3 - mov r2, #0x2 - bl FUN_020179E0 -_0203A740: - ldr r0, [sp, #0x4] - ldrh r3, [r0, #0x0] - cmp r3, #0x0 - beq _0203A764 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - ldr r0, [r4, #0x8] - bne _0203A75C - mov r1, #0x3 - mov r2, #0x4 - bl FUN_020179E0 - b _0203A764 -_0203A75C: - mov r1, #0x3 - mov r2, #0x5 - bl FUN_020179E0 -_0203A764: - ldrh r0, [r6, #0x0] - cmp r0, #0x0 - beq _0203A76E - sub r0, r0, #0x1 - strh r0, [r6, #0x0] -_0203A76E: - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0203A778 - sub r0, r0, #0x1 - strh r0, [r5, #0x0] -_0203A778: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203A780 -FUN_0203A780: ; 0x0203A780 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x11 - add r0, r4, #0x0 - bl FUN_02039438 - str r0, [sp, #0x18] - add r0, r4, #0x0 - mov r1, #0x10 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x14] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - str r0, [sp, #0xc] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - cmp r6, #0x0 - bne _0203A7E0 - add r0, r4, #0x0 - mov r1, #0xa - bl FUN_02039438 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02058510 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 -_0203A7E0: - ldr r0, [r4, #0x60] - ldr r1, [sp, #0x10] - add r2, r6, #0x0 - bl MOD05_021E8128 - ldr r0, [r4, #0x60] - mov r1, #0x1 - bl MOD05_021E8130 - add r0, r4, #0x0 - bl MOD05_021E8158 - ldr r2, [sp, #0x18] - ldr r0, [r5, #0x78] - ldr r1, [sp, #0xc] - ldr r2, [r2, #0x0] - bl ReadMsgDataIntoString - ldr r0, [sp, #0x14] - ldr r2, [sp, #0x18] - ldr r0, [r0, #0x0] - ldr r1, [r7, #0x0] - ldr r2, [r2, #0x0] - bl StringExpandPlaceholders - ldr r0, [r4, #0x60] - bl MOD05_021E8140 - mov r3, #0x0 - str r3, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - ldr r2, [r7, #0x0] - mov r1, #0x1 - bl AddTextPrinterParameterized - mov r0, #0x1 - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203A830 -FUN_0203A830: ; 0x0203A830 - push {r3-r5, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r4, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r5, [r2, #0x0] - bl ScriptReadHalfword - add r2, r0, #0x0 - ldr r0, [r4, #0x60] - add r1, r5, #0x0 - bl MOD05_021E8128 - ldr r0, [r4, #0x60] - mov r1, #0x1 - bl MOD05_021E8130 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A85C -FUN_0203A85C: ; 0x0203A85C - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r3, #0x60] - bl MOD05_021E8130 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203A878 -FUN_0203A878: ; 0x0203A878 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x60] - bl MOD05_021E8148 - cmp r0, #0x1 - bne _0203A88E - mov r0, #0x0 - pop {r4, pc} -_0203A88E: - ldr r1, _0203A89C ; =FUN_0203A8A0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203A89C: .word FUN_0203A8A0 - - thumb_func_start FUN_0203A8A0 -FUN_0203A8A0: ; 0x0203A8A0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x60] - bl MOD05_021E8148 - cmp r0, #0x1 - bne _0203A8B4 - mov r0, #0x1 - pop {r3, pc} -_0203A8B4: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203A8B8 -FUN_0203A8B8: ; 0x0203A8B8 - push {r3-r7, lr} - sub sp, #0x10 - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x3 - add r0, r4, #0x0 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x11 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x10 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - str r0, [sp, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - ldr r1, [sp, #0x0] - ldr r2, [r6, #0x0] - bl ReadMsgDataIntoString - ldr r0, [sp, #0x8] - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - ldr r2, [r6, #0x0] - bl StringExpandPlaceholders - ldr r0, [r4, #0x60] - bl MOD05_021E8140 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r2, r0, #0x0 - ldr r1, [r7, #0x0] - add r0, r4, #0x0 - mov r3, #0x1 - bl FUN_02054658 - ldr r1, [sp, #0x4] - strb r0, [r1, #0x0] - ldr r0, [sp, #0xc] - ldr r1, _0203A948 ; =FUN_0203A94C - str r0, [r5, #0x64] - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_0203A948: .word FUN_0203A94C - - thumb_func_start FUN_0203A94C -FUN_0203A94C: ; 0x0203A94C - push {r3-r7, lr} - add r7, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x3 - add r0, r5, #0x0 - bl FUN_02039438 - ldr r1, [r7, #0x64] - add r6, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0x60] - bl MOD05_021E8144 - ldrb r0, [r6, #0x0] - ldr r5, _0203A9E8 ; =0x0000FFFF - bl FUN_020546C8 - cmp r0, #0x1 - bne _0203A986 - mov r0, #0x2 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} -_0203A986: - ldr r0, _0203A9EC ; =gMain - mov r1, #0x40 - ldr r0, [r0, #0x48] - tst r1, r0 - beq _0203A994 - mov r5, #0x0 - b _0203A9B0 -_0203A994: - mov r1, #0x80 - tst r1, r0 - beq _0203A99E - mov r5, #0x1 - b _0203A9B0 -_0203A99E: - mov r1, #0x20 - tst r1, r0 - beq _0203A9A8 - mov r5, #0x2 - b _0203A9B0 -_0203A9A8: - mov r1, #0x10 - tst r1, r0 - beq _0203A9B0 - mov r5, #0x3 -_0203A9B0: - ldr r1, _0203A9E8 ; =0x0000FFFF - cmp r5, r1 - beq _0203A9D0 - ldrb r0, [r6, #0x0] - bl FUN_0201BD7C - add r7, #0x80 - ldr r0, [r7, #0x0] - add r1, r5, #0x0 - ldr r0, [r0, #0x38] - bl FUN_02055304 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} -_0203A9D0: - mov r1, #0x1 - lsl r1, r1, #0xa - tst r0, r1 - beq _0203A9E4 - ldrb r0, [r6, #0x0] - bl FUN_0201BD7C - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r3-r7, pc} -_0203A9E4: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_0203A9E8: .word 0x0000FFFF -_0203A9EC: .word gMain - - thumb_func_start FUN_0203A9F0 -FUN_0203A9F0: ; 0x0203A9F0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203AA08 ; =FUN_0203AA0C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203AA08: .word FUN_0203AA0C - - thumb_func_start FUN_0203AA0C -FUN_0203AA0C: ; 0x0203AA0C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, _0203AA88 ; =gMain - ldr r1, _0203AA8C ; =0x0000FFFF - ldr r2, [r0, #0x48] - mov r0, #0x3 - add r3, r2, #0x0 - tst r3, r0 - beq _0203AA36 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} -_0203AA36: - mov r3, #0x40 - tst r3, r2 - beq _0203AA40 - mov r1, #0x0 - b _0203AA5C -_0203AA40: - mov r3, #0x80 - tst r3, r2 - beq _0203AA4A - mov r1, #0x1 - b _0203AA5C -_0203AA4A: - mov r3, #0x20 - tst r3, r2 - beq _0203AA54 - mov r1, #0x2 - b _0203AA5C -_0203AA54: - mov r3, #0x10 - tst r3, r2 - beq _0203AA5C - add r1, r0, #0x0 -_0203AA5C: - ldr r0, _0203AA8C ; =0x0000FFFF - cmp r1, r0 - beq _0203AA74 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055304 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} -_0203AA74: - mov r0, #0x1 - lsl r0, r0, #0xa - tst r0, r2 - beq _0203AA82 - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r3-r5, pc} -_0203AA82: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203AA88: .word gMain -_0203AA8C: .word 0x0000FFFF - - thumb_func_start FUN_0203AA90 -FUN_0203AA90: ; 0x0203AA90 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02039460 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203AAA0 -FUN_0203AAA0: ; 0x0203AAA0 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x2 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x4 - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - ldr r2, _0203AAF4 ; =0x000003D9 - mov r1, #0x3 - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [r4, #0x8] - ldr r1, _0203AAF8 ; =UNK_020F34E0 - ldr r2, _0203AAF4 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r6, #0x0] - ldr r1, _0203AAFC ; =FUN_0203AB00 - add r0, r5, #0x0 - str r7, [r5, #0x64] - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203AAF4: .word 0x000003D9 -_0203AAF8: .word UNK_020F34E0 -_0203AAFC: .word FUN_0203AB00 - - thumb_func_start FUN_0203AB00 -FUN_0203AB00: ; 0x0203AB00 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x2 - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r5, #0x64] - add r4, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x4 - bl FUN_020021AC - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - bne _0203AB34 - mov r0, #0x0 - pop {r4-r6, pc} -_0203AB34: - cmp r0, #0x0 - bne _0203AB3C - mov r0, #0x0 - b _0203AB3E -_0203AB3C: - mov r0, #0x1 -_0203AB3E: - strh r0, [r5, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203AB44 -FUN_0203AB44: ; 0x0203AB44 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - mov r1, #0x12 - bl FUN_02039438 - add r5, r0, #0x0 - ldr r1, _0203AB70 ; =0x000003E2 - add r0, r4, #0x0 - bl FUN_0200D858 - str r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203AB70: .word 0x000003E2 - - thumb_func_start FUN_0203AB74 -FUN_0203AB74: ; 0x0203AB74 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x12 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_0200DBFC - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203AB8C -FUN_0203AB8C: ; 0x0203AB8C - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1BF8 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AC14 -FUN_0203AC14: ; 0x0203AC14 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1BF8 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AC9C -FUN_0203AC9C: ; 0x0203AC9C - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r3, r1, #0x1 - str r3, [r4, #0x8] - ldrb r1, [r1, #0x0] - add r2, r3, #0x1 - str r2, [r4, #0x8] - ldrb r2, [r3, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E1C4C - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203ACC4 -FUN_0203ACC4: ; 0x0203ACC4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r4, #0x0] - add r1, r6, #0x0 - bl MOD05_021E1C4C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203AD08 -FUN_0203AD08: ; 0x0203AD08 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1C54 - ldr r1, _0203AD28 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AD28: .word FUN_0203AD2C - - thumb_func_start FUN_0203AD2C -FUN_0203AD2C: ; 0x0203AD2C - push {r3, lr} - add r1, r0, #0x0 - ldr r1, [r1, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - ldrh r1, [r0, #0x0] - ldr r0, _0203AD50 ; =0x0000EEEE - cmp r1, r0 - beq _0203AD4A - mov r0, #0x1 - pop {r3, pc} -_0203AD4A: - mov r0, #0x0 - pop {r3, pc} - nop -_0203AD50: .word 0x0000EEEE - - thumb_func_start FUN_0203AD54 -FUN_0203AD54: ; 0x0203AD54 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1C54 - ldr r1, _0203AD74 ; =FUN_0203AD78 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AD74: .word FUN_0203AD78 - - thumb_func_start FUN_0203AD78 -FUN_0203AD78: ; 0x0203AD78 - push {r4-r6, lr} - add r1, r0, #0x0 - add r0, #0x80 - ldr r1, [r1, #0x64] - ldr r5, [r0, #0x0] - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _0203ADC0 ; =0x0000EEEE - cmp r1, r0 - bne _0203ADBC - ldr r0, [r5, #0x78] - bl FUN_02052714 - cmp r0, #0x0 - beq _0203ADB8 - mov r0, #0x8 - strh r0, [r4, #0x0] - ldr r0, [r6, #0x0] - bl MOD05_021E1ECC - mov r0, #0x1 - pop {r4-r6, pc} -_0203ADB8: - mov r0, #0x0 - pop {r4-r6, pc} -_0203ADBC: - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203ADC0: .word 0x0000EEEE - - thumb_func_start FUN_0203ADC4 -FUN_0203ADC4: ; 0x0203ADC4 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AE4C -FUN_0203AE4C: ; 0x0203AE4C - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AED4 -FUN_0203AED4: ; 0x0203AED4 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r3, r0, #0x0 - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl MOD05_021E1F58 - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203AF34 -FUN_0203AF34: ; 0x0203AF34 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1F60 - ldr r1, _0203AF54 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF54: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF58 -FUN_0203AF58: ; 0x0203AF58 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E26CC - ldr r1, _0203AF80 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF80: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF84 -FUN_0203AF84: ; 0x0203AF84 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B80 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203AFA4 -FUN_0203AFA4: ; 0x0203AFA4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B9C - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203AFC4 -FUN_0203AFC4: ; 0x0203AFC4 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadWord - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl FUN_0203B120 - add r6, r0, #0x0 - bne _0203AFF6 - bl ErrorHandling -_0203AFF6: - ldr r1, [r5, #0x8] - add r0, r6, #0x0 - add r1, r1, r4 - bl FUN_0205AEA4 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x4 - bl FUN_02039438 - ldrb r1, [r0, #0x0] - add r5, #0x80 - mov r2, #0x0 - add r1, r1, #0x1 - strb r1, [r0, #0x0] - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_0203B174 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203B024 -FUN_0203B024: ; 0x0203B024 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_0203B120 - str r0, [sp, #0x4] - cmp r0, #0x0 - bne _0203B07A - bl ErrorHandling -_0203B07A: - mov r0, #0x4 - add r1, r0, #0x0 - add r1, #0xfc - bl AllocFromHeap - add r4, r0, #0x0 - ldr r0, [sp, #0x4] - bl FUN_02058B2C - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - ldr r0, [sp, #0x4] - bl FUN_02058B4C - lsl r0, r0, #0x10 - ldr r2, [sp, #0x0] - lsr r0, r0, #0x10 - mov r1, #0x0 - cmp r6, r2 - bhs _0203B0B0 - mov r2, #0xf - strh r2, [r4, #0x0] - ldr r2, [sp, #0x0] - add r1, r1, #0x1 - sub r2, r2, r6 - strh r2, [r4, #0x2] - b _0203B0C0 -_0203B0B0: - cmp r6, r2 - bls _0203B0C0 - mov r2, #0xe - strh r2, [r4, #0x0] - ldr r2, [sp, #0x0] - add r1, r1, #0x1 - sub r2, r6, r2 - strh r2, [r4, #0x2] -_0203B0C0: - cmp r0, r7 - bhs _0203B0D4 - lsl r2, r1, #0x2 - mov r3, #0xc - strh r3, [r4, r2] - sub r3, r7, r0 - add r0, r4, r2 - strh r3, [r0, #0x2] - add r1, r1, #0x1 - b _0203B0E6 -_0203B0D4: - cmp r0, r7 - bls _0203B0E6 - lsl r2, r1, #0x2 - mov r3, #0xd - strh r3, [r4, r2] - sub r3, r0, r7 - add r0, r4, r2 - strh r3, [r0, #0x2] - add r1, r1, #0x1 -_0203B0E6: - lsl r2, r1, #0x2 - mov r0, #0xfe - strh r0, [r4, r2] - mov r1, #0x0 - add r0, r4, r2 - strh r1, [r0, #0x2] - ldr r0, [sp, #0x4] - add r1, r4, #0x0 - bl FUN_0205AEA4 - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x4 - bl FUN_02039438 - ldrb r1, [r0, #0x0] - add r5, #0x80 - add r2, r4, #0x0 - add r1, r1, #0x1 - strb r1, [r0, #0x0] - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - bl FUN_0203B174 - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0203B120 -FUN_0203B120: ; 0x0203B120 - push {r3, lr} - cmp r1, #0xf2 - bne _0203B130 - ldr r0, [r0, #0x34] - mov r1, #0x30 - bl FUN_020580B4 - pop {r3, pc} -_0203B130: - cmp r1, #0xf1 - bne _0203B13E - mov r1, #0xb - bl FUN_02039438 - ldr r0, [r0, #0x0] - pop {r3, pc} -_0203B13E: - ldr r0, [r0, #0x34] - bl FUN_02058060 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203B148 -FUN_0203B148: ; 0x0203B148 - push {r3, lr} - ldr r1, _0203B154 ; =FUN_0203B158 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203B154: .word FUN_0203B158 - - thumb_func_start FUN_0203B158 -FUN_0203B158: ; 0x0203B158 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x4 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203B16E - mov r0, #0x1 - pop {r3, pc} -_0203B16E: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203B174 -FUN_0203B174: ; 0x0203B174 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - mov r0, #0x4 - mov r1, #0x10 - add r7, r2, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - bne _0203B18E - bl ErrorHandling - pop {r3-r7, pc} -_0203B18E: - str r5, [r4, #0xc] - str r6, [r4, #0x4] - ldr r0, _0203B1A4 ; =FUN_0203B1A8 - add r1, r4, #0x0 - mov r2, #0x0 - str r7, [r4, #0x8] - bl FUN_0200CA44 - str r0, [r4, #0x0] - pop {r3-r7, pc} - nop -_0203B1A4: .word FUN_0203B1A8 - - thumb_func_start FUN_0203B1A8 -FUN_0203B1A8: ; 0x0203B1A8 - push {r3-r5, lr} - add r5, r1, #0x0 - ldr r0, [r5, #0xc] - mov r1, #0x4 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r5, #0x4] - bl FUN_0205AEF0 - cmp r0, #0x1 - bne _0203B1EC - ldr r0, [r5, #0x4] - bl FUN_0205AEFC - ldr r0, [r5, #0x0] - bl FUN_0200CAB4 - ldr r0, [r5, #0x8] - cmp r0, #0x0 - beq _0203B1D6 - bl FreeToHeap -_0203B1D6: - add r0, r5, #0x0 - bl FreeToHeap - ldrb r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203B1E8 - bl ErrorHandling - pop {r3-r5, pc} -_0203B1E8: - sub r0, r0, #0x1 - strb r0, [r4, #0x0] -_0203B1EC: - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B1F0 -FUN_0203B1F0: ; 0x0203B1F0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0xa - add r0, r4, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203B20E - ldr r0, [r4, #0x34] - bl FUN_02058780 - b _0203B214 -_0203B20E: - add r0, r5, #0x0 - bl FUN_0203B2E0 -_0203B214: - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203B218 -FUN_0203B218: ; 0x0203B218 - push {r4-r6, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0xa - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - ldr r0, [r4, #0x38] - bl FUN_020553A0 - ldr r1, _0203B2DC ; =UNK_021C5A0C - add r6, r0, #0x0 - ldrb r2, [r1, #0x0] - mov r1, #0x1 - tst r1, r2 - beq _0203B252 - bl FUN_0205AE28 - cmp r0, #0x1 - bne _0203B252 - add r0, r6, #0x0 - bl FUN_02058908 - ldr r1, _0203B2DC ; =UNK_021C5A0C - mov r0, #0xfe - ldrb r2, [r1, #0x0] - and r0, r2 - strb r0, [r1, #0x0] -_0203B252: - ldr r0, _0203B2DC ; =UNK_021C5A0C - ldrb r1, [r0, #0x0] - mov r0, #0x4 - tst r0, r1 - beq _0203B276 - ldr r0, [r5, #0x0] - bl FUN_02058854 - cmp r0, #0x0 - bne _0203B276 - ldr r0, [r5, #0x0] - bl FUN_02058908 - ldr r1, _0203B2DC ; =UNK_021C5A0C - mov r0, #0xfb - ldrb r2, [r1, #0x0] - and r0, r2 - strb r0, [r1, #0x0] -_0203B276: - ldr r0, _0203B2DC ; =UNK_021C5A0C - ldrb r1, [r0, #0x0] - mov r0, #0x2 - tst r0, r1 - beq _0203B2A2 - ldr r0, [r4, #0x34] - mov r1, #0x30 - bl FUN_020580B4 - add r4, r0, #0x0 - bl FUN_02058854 - cmp r0, #0x0 - bne _0203B2A2 - add r0, r4, #0x0 - bl FUN_02058908 - ldr r1, _0203B2DC ; =UNK_021C5A0C - mov r0, #0xfd - ldrb r2, [r1, #0x0] - and r0, r2 - strb r0, [r1, #0x0] -_0203B2A2: - ldr r0, _0203B2DC ; =UNK_021C5A0C - ldrb r1, [r0, #0x0] - mov r0, #0x8 - tst r0, r1 - beq _0203B2CC - ldr r0, [r5, #0x0] - bl FUN_0205E7C4 - add r4, r0, #0x0 - bl FUN_02058854 - cmp r0, #0x0 - bne _0203B2CC - add r0, r4, #0x0 - bl FUN_02058908 - ldr r1, _0203B2DC ; =UNK_021C5A0C - mov r0, #0xf7 - ldrb r2, [r1, #0x0] - and r0, r2 - strb r0, [r1, #0x0] -_0203B2CC: - ldr r0, _0203B2DC ; =UNK_021C5A0C - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203B2D8 - mov r0, #0x1 - pop {r4-r6, pc} -_0203B2D8: - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 -_0203B2DC: .word UNK_021C5A0C - - thumb_func_start FUN_0203B2E0 -FUN_0203B2E0: ; 0x0203B2E0 - push {r3-r7, lr} - sub sp, #0x8 - str r0, [sp, #0x0] - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0xa - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - ldr r0, [r4, #0x38] - bl FUN_020553A0 - str r0, [sp, #0x4] - ldr r0, [r4, #0x34] - mov r1, #0x30 - bl FUN_020580B4 - add r7, r0, #0x0 - ldr r0, [r5, #0x0] - bl FUN_0205E7C4 - add r6, r0, #0x0 - ldr r0, [r4, #0x34] - ldr r1, _0203B3A8 ; =UNK_021C5A0C - mov r2, #0x0 - strb r2, [r1, #0x0] - bl FUN_02058780 - ldr r0, [sp, #0x4] - bl FUN_0205AE28 - cmp r0, #0x0 - bne _0203B334 - ldr r1, _0203B3A8 ; =UNK_021C5A0C - mov r0, #0x1 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] - ldr r0, [sp, #0x4] - bl FUN_02058914 -_0203B334: - ldr r0, [r5, #0x0] - bl FUN_02058854 - cmp r0, #0x0 - beq _0203B34E - ldr r1, _0203B3A8 ; =UNK_021C5A0C - mov r0, #0x4 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] - ldr r0, [r5, #0x0] - bl FUN_02058914 -_0203B34E: - cmp r7, #0x0 - beq _0203B37A - ldr r0, [r4, #0xc] - bl SavArray_Flags_get - bl FUN_0205ED3C - cmp r0, #0x1 - bne _0203B37A - add r0, r7, #0x0 - bl FUN_02058854 - cmp r0, #0x0 - beq _0203B37A - ldr r1, _0203B3A8 ; =UNK_021C5A0C - mov r0, #0x2 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] - add r0, r7, #0x0 - bl FUN_02058914 -_0203B37A: - cmp r6, #0x0 - beq _0203B398 - add r0, r6, #0x0 - bl FUN_02058854 - cmp r0, #0x0 - beq _0203B398 - ldr r1, _0203B3A8 ; =UNK_021C5A0C - mov r0, #0x8 - ldrb r2, [r1, #0x0] - orr r0, r2 - strb r0, [r1, #0x0] - add r0, r6, #0x0 - bl FUN_02058914 -_0203B398: - ldr r0, [sp, #0x0] - ldr r1, _0203B3AC ; =FUN_0203B218 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203B3A8: .word UNK_021C5A0C -_0203B3AC: .word FUN_0203B218 - - thumb_func_start FUN_0203B3B0 -FUN_0203B3B0: ; 0x0203B3B0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x34] - bl FUN_020587B0 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203B3C0 -FUN_0203B3C0: ; 0x0203B3C0 - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - ldr r0, [r4, #0x34] - bl FUN_02058060 - bl FUN_02058908 - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203B3DC -FUN_0203B3DC: ; 0x0203B3DC - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - ldr r0, [r4, #0x34] - bl FUN_02058060 - bl FUN_02058914 - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203B3F8 -FUN_0203B3F8: ; 0x0203B3F8 - push {r3-r6, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02034B64 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02034B6C - str r0, [sp, #0x0] - ldr r3, [r5, #0x1c] - ldr r0, [r5, #0x34] - ldr r3, [r3, #0x0] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020575D4 - cmp r0, #0x0 - bne _0203B43A - bl ErrorHandling -_0203B43A: - mov r0, #0x0 - add sp, #0x4 - pop {r3-r6, pc} - - thumb_func_start FUN_0203B440 -FUN_0203B440: ; 0x0203B440 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [r5, #0x34] - bl FUN_02058060 - bl FUN_02057688 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203B468 -FUN_0203B468: ; 0x0203B468 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xb - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - mov r1, #0x2 - ldr r0, [r0, #0x0] - lsl r1, r1, #0xc - str r1, [sp, #0x0] - mov r3, #0x0 - str r3, [sp, #0x4] - ldr r1, [r0, #0x1c] - add r2, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - ldr r0, [r0, #0x34] - add r1, r6, #0x0 - bl FUN_0205753C - str r0, [r4, #0x0] - bl FUN_02059D1C - ldr r0, [r4, #0x0] - mov r1, #0x1 - bl FUN_0205889C - ldr r0, [r4, #0x0] - mov r1, #0x0 - bl FUN_020588B8 - ldr r0, [r4, #0x0] - bl FUN_02058B7C - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - add r4, r0, #0x0 - ldr r1, [r1, #0x24] - bl MOD05_021EF5E0 - add r5, #0x80 - ldr r1, [r5, #0x0] - add r0, r4, #0x0 - ldr r1, [r1, #0x20] - bl FUN_0201EC68 - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203B500 -FUN_0203B500: ; 0x0203B500 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xb - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_02057654 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xff - ldr r0, [r0, #0x34] - bl FUN_02058060 - bl FUN_02058B7C - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - add r4, r0, #0x0 - ldr r1, [r1, #0x24] - bl MOD05_021EF5E0 - add r5, #0x80 - ldr r1, [r5, #0x0] - add r0, r4, #0x0 - ldr r1, [r1, #0x20] - bl FUN_0201EC68 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203B544 -FUN_0203B544: ; 0x0203B544 - push {r3-r5, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - ldr r0, [r5, #0x38] - bl FUN_020552F8 - bl FUN_02059E74 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa - bl FUN_02039438 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203B568 - mov r0, #0x0 - pop {r3-r5, pc} -_0203B568: - add r1, r4, #0x0 - bl MOD05_021F1EC0 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B574 -FUN_0203B574: ; 0x0203B574 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0x38] - bl FUN_02055320 - strh r0, [r6, #0x0] - ldr r0, [r5, #0x38] - bl FUN_0205532C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203B5B8 -FUN_0203B5B8: ; 0x0203B5B8 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [r5, #0x34] - bl FUN_02058060 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02058B2C - strh r0, [r6, #0x0] - add r0, r5, #0x0 - bl FUN_02058B4C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203B618 -FUN_0203B618: ; 0x0203B618 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020552F8 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B640 -FUN_0203B640: ; 0x0203B640 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - cmp r7, #0x0 - beq _0203B696 - lsl r0, r7, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0203B6A4 -_0203B696: - lsl r0, r7, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0203B6A4: - bl _ffix - str r0, [sp, #0x0] - cmp r6, #0x0 - beq _0203B6C0 - lsl r0, r6, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0203B6CE -_0203B6C0: - lsl r0, r6, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0203B6CE: - bl _ffix - str r0, [sp, #0x4] - cmp r4, #0x0 - beq _0203B6EA - lsl r0, r4, #0xc - bl _fflt - add r1, r0, #0x0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _0203B6F8 -_0203B6EA: - lsl r0, r4, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_0203B6F8: - bl _ffix - str r0, [sp, #0x8] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020553A0 - add r1, sp, #0x0 - bl FUN_02058BB4 - add r5, #0x80 - ldr r1, [r5, #0x0] - add r0, sp, #0x0 - ldr r1, [r1, #0x20] - bl FUN_0201EF70 - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203B724 -FUN_0203B724: ; 0x0203B724 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x34] - bl FUN_02058060 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - bl FUN_02058994 - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203B758 -FUN_0203B758: ; 0x0203B758 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02058E90 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B790 -FUN_0203B790: ; 0x0203B790 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - mov r0, #0x0 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x34] - bl FUN_02058060 - cmp r0, #0x0 - beq _0203B7D2 - bl FUN_02058480 - strh r0, [r4, #0x0] -_0203B7D2: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B7D8 -FUN_0203B7D8: ; 0x0203B7D8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x30 - ldr r0, [r0, #0x34] - bl FUN_020580B4 - mov r1, #0xfe - bl FUN_02058EB0 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203B7F0 -FUN_0203B7F0: ; 0x0203B7F0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_SealCase_get - bl FUN_02029E0C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B81C -FUN_0203B81C: ; 0x0203B81C - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_SealCase_get - add r1, r6, #0x0 - bl FUN_02029E2C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203B85C -FUN_0203B85C: ; 0x0203B85C - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_SealCase_get - lsl r2, r4, #0x10 - add r1, r6, #0x0 - asr r2, r2, #0x10 - bl FUN_02029D44 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203B8A0 -FUN_0203B8A0: ; 0x0203B8A0 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl GetPartyMonByIndex - bl GetMonUnownLetter - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203B8E4 -FUN_0203B8E4: ; 0x0203B8E4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r1, r5, #0x0 - add r1, #0x80 - add r4, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0x20 - bl FUN_020379F8 - str r0, [r4, #0x0] - ldr r1, _0203B910 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203B910: .word FUN_0203BC04 - - thumb_func_start FUN_0203B914 -FUN_0203B914: ; 0x0203B914 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r1, r5, #0x0 - add r1, #0x80 - add r4, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0x20 - bl FUN_02037A1C - str r0, [r4, #0x0] - ldr r1, _0203B940 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203B940: .word FUN_0203BC04 - - thumb_func_start FUN_0203B944 -FUN_0203B944: ; 0x0203B944 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - mov r1, #0x20 - ldr r0, [r0, #0x10] - bl FUN_02037B44 - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B968 -FUN_0203B968: ; 0x0203B968 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203B994 - bl ErrorHandling -_0203B994: - ldr r0, [r4, #0x0] - bl FUN_02037A40 - strh r0, [r5, #0x0] - ldrh r0, [r5, #0x0] - cmp r0, #0x7 - bne _0203B9A6 - mov r0, #0xff - strh r0, [r5, #0x0] -_0203B9A6: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203B9B4 -FUN_0203B9B4: ; 0x0203B9B4 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r1, r5, #0x0 - str r6, [sp, #0x4] - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r2, [sp, #0x8] - mov r0, #0x20 - add r3, r7, #0x0 - bl FUN_02037BB0 - str r0, [r4, #0x0] - ldr r1, _0203BA38 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0203BA38: .word FUN_0203BC04 - - thumb_func_start FUN_0203BA3C -FUN_0203BA3C: ; 0x0203BA3C - push {r4-r6, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203BA7C - bl ErrorHandling -_0203BA7C: - ldr r0, [r4, #0x0] - bl FUN_02037A40 - strh r0, [r6, #0x0] - ldrh r0, [r6, #0x0] - cmp r0, #0x7 - bne _0203BA8E - mov r0, #0xff - strh r0, [r6, #0x0] -_0203BA8E: - ldr r0, [r4, #0x0] - bl FUN_02037A70 - strh r0, [r5, #0x0] - ldrh r0, [r5, #0x0] - cmp r0, #0x1 - bne _0203BAA0 - mov r0, #0x1 - b _0203BAA2 -_0203BAA0: - mov r0, #0x0 -_0203BAA2: - strh r0, [r5, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r4-r6, pc} - - thumb_func_start FUN_0203BAB0 -FUN_0203BAB0: ; 0x0203BAB0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r5, #0x0 - add r1, #0x80 - add r2, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0x20 - bl FUN_02037C00 - str r0, [r4, #0x0] - ldr r1, _0203BAF0 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203BAF0: .word FUN_0203BC04 - - thumb_func_start FUN_0203BAF4 -FUN_0203BAF4: ; 0x0203BAF4 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203BB20 - bl ErrorHandling -_0203BB20: - ldr r0, [r4, #0x0] - bl FUN_02037A78 - strh r0, [r5, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - - thumb_func_start FUN_0203BB34 -FUN_0203BB34: ; 0x0203BB34 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - add r2, r7, #0x0 - bl MOD05_021E1858 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203BB80 -FUN_0203BB80: ; 0x0203BB80 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203BB84 -FUN_0203BB84: ; 0x0203BB84 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203BB88 -FUN_0203BB88: ; 0x0203BB88 - mov r0, #0x1 - bx lr - - thumb_func_start FUN_0203BB8C -FUN_0203BB8C: ; 0x0203BB8C - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203BB90 -FUN_0203BB90: ; 0x0203BB90 - push {r3-r5, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x13 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0204647C - cmp r0, #0x0 - beq _0203BBAE - mov r0, #0x0 - pop {r3-r5, pc} -_0203BBAE: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203BBBC -FUN_0203BBBC: ; 0x0203BBBC - push {r4-r6, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x13 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - ldr r6, [r4, #0x0] - bl FUN_0204647C - cmp r0, #0x0 - beq _0203BBDC - mov r0, #0x0 - pop {r4-r6, pc} -_0203BBDC: - ldr r0, [r6, #0x8] - cmp r0, #0x1 - bne _0203BBF4 - mov r0, #0xb - bl FUN_02029048 - add r5, #0x98 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - mov r2, #0x1 - bl FUN_02028AD4 -_0203BBF4: - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203BC04 -FUN_0203BC04: ; 0x0203BC04 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204647C - cmp r0, #0x0 - bne _0203BC16 - mov r0, #0x1 - pop {r3, pc} -_0203BC16: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203BC1C -FUN_0203BC1C: ; 0x0203BC1C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_0204AF84 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203BC2C -FUN_0203BC2C: ; 0x0203BC2C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_0204AF3C - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203BC3C -FUN_0203BC3C: ; 0x0203BC3C - push {r3-r5, lr} - ldr r0, [r0, #0xc] - add r5, r1, #0x0 - add r4, r2, #0x0 - bl FUN_02027E24 - cmp r5, #0x0 - bne _0203BC5A - add r1, r4, #0x0 - bl FUN_02027098 - cmp r0, #0x0 - bne _0203BC68 - mov r0, #0x0 - pop {r3-r5, pc} -_0203BC5A: - add r1, r4, #0x0 - bl FUN_020270B4 - cmp r0, #0x0 - bne _0203BC68 - mov r0, #0x0 - pop {r3-r5, pc} -_0203BC68: - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203BC6C -FUN_0203BC6C: ; 0x0203BC6C - push {r3-r7, lr} - add r5, r1, #0x0 - str r0, [sp, #0x0] - ldr r0, [r5, #0xc] - add r4, r2, #0x0 - add r6, r3, #0x0 - bl FUN_02027E24 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0203BC3C - cmp r0, #0x0 - bne _0203BC90 - mov r0, #0x0 - pop {r3-r7, pc} -_0203BC90: - ldr r0, [sp, #0x0] - mov r1, #0xc - bl AllocFromHeap - mov r1, #0x0 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - strb r1, [r0, #0x2] - strb r1, [r0, #0x3] - strb r1, [r0, #0x4] - strb r1, [r0, #0x5] - strb r1, [r0, #0x6] - strb r1, [r0, #0x7] - strb r1, [r0, #0x8] - strb r1, [r0, #0x9] - strb r1, [r0, #0xa] - strb r1, [r0, #0xb] - str r7, [r0, #0x0] - str r4, [r0, #0x8] - str r6, [r0, #0x4] - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203BCBC -FUN_0203BCBC: ; 0x0203BCBC - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD05_021F02C4 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203BCCC -FUN_0203BCCC: ; 0x0203BCCC - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_0206F3B8 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203BCD8 -FUN_0203BCD8: ; 0x0203BCD8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - ldr r1, [r4, #0x0] - ldr r1, [r1, #0x4] - strh r1, [r0, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203BD08 -FUN_0203BD08: ; 0x0203BD08 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - bl FUN_02031190 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203BD28 -FUN_0203BD28: ; 0x0203BD28 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x4 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r2, _0203BDB4 ; =0x000003D9 - ldr r0, [r0, #0x8] - mov r1, #0x3 - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0xb - str r0, [sp, #0x0] - ldr r0, _0203BDB4 ; =0x000003D9 - mov r1, #0x3 - str r0, [sp, #0x4] - lsl r0, r7, #0x18 - str r4, [sp, #0x8] - lsr r0, r0, #0x18 - str r0, [sp, #0xc] - mov r0, #0x4 - str r0, [sp, #0x10] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r2, #0xa - ldr r0, [r0, #0x8] - mov r3, #0x5 - bl FUN_0200DC4C - add r5, #0x80 - str r0, [r6, #0x0] - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_0203ED2C - mov r0, #0x0 - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_0203BDB4: .word 0x000003D9 - - thumb_func_start FUN_0203BDB8 -FUN_0203BDB8: ; 0x0203BDB8 - push {r4-r6, lr} - sub sp, #0x10 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r4, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x4 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r2, _0203BE4C ; =0x000003D9 - ldr r0, [r0, #0x8] - mov r1, #0x3 - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0xb - str r0, [sp, #0x0] - ldr r0, _0203BE4C ; =0x000003D9 - mov r1, #0x3 - str r0, [sp, #0x4] - str r4, [sp, #0x8] - mov r0, #0x4 - str r0, [sp, #0xc] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r2, #0xa - ldr r0, [r0, #0x8] - mov r3, #0x5 - bl FUN_0200DCA4 - str r0, [r6, #0x0] - add r0, r4, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r1, r0, #0x0 - add r5, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r5, #0x0] - lsr r1, r1, #0x10 - bl FUN_0203ED2C - mov r0, #0x0 - add sp, #0x10 - pop {r4-r6, pc} - .balign 4 -_0203BE4C: .word 0x000003D9 - - thumb_func_start FUN_0203BE50 -FUN_0203BE50: ; 0x0203BE50 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - ldr r0, [r0, #0x0] - mov r1, #0x1 - strb r1, [r0, #0x0] - add r0, r1, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203BE68 -FUN_0203BE68: ; 0x0203BE68 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - ldr r0, [r0, #0x0] - mov r1, #0x2 - strb r1, [r0, #0x0] - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203BE80 -FUN_0203BE80: ; 0x0203BE80 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203BE98 ; =FUN_0203BE9C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203BE98: .word FUN_0203BE9C - - thumb_func_start FUN_0203BE9C -FUN_0203BE9C: ; 0x0203BE9C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - ldr r0, [r4, #0x0] - ldrb r0, [r0, #0x0] - cmp r0, #0x3 - beq _0203BEC8 - mov r0, #0x1 - pop {r3-r5, pc} -_0203BEC8: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203BECC -FUN_0203BECC: ; 0x0203BECC - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl GetVarPointer - add r2, r0, #0x0 - ldr r0, [r5, #0x74] - ldr r1, [r4, #0x0] - bl MOD05_021E1374 - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203BF00 -FUN_0203BF00: ; 0x0203BF00 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _0203BF1C - add r4, #0x80 - ldr r0, [r4, #0x0] - bl MOD05_021E1994 -_0203BF1C: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203BF20 -FUN_0203BF20: ; 0x0203BF20 - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_0208A338 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203BF2C -FUN_0203BF2C: ; 0x0203BF2C - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - ldr r2, [r5, #0x0] - add r1, r6, #0x0 - str r0, [sp, #0x0] - ldr r0, [r2, #0x10] - ldr r2, [r2, #0xc] - add r3, r4, #0x0 - bl FUN_020380CC - mov r0, #0x1 - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_0203BF84 -FUN_0203BF84: ; 0x0203BF84 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r5, #0x0 - add r1, #0x80 - add r6, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0xb - mov r2, #0x0 - add r3, r7, #0x0 - bl FUN_0203BC6C - str r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203BFCC - mov r0, #0x1 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0203BFCC: - mov r0, #0x0 - strh r0, [r6, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl FUN_02038130 - ldr r1, _0203BFE8 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203BFE8: .word FUN_0203BB90 - - thumb_func_start FUN_0203BFEC -FUN_0203BFEC: ; 0x0203BFEC - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r5, #0x0 - add r1, #0x80 - add r6, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0xb - mov r2, #0x1 - add r3, r7, #0x0 - bl FUN_0203BC6C - str r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203C034 - mov r0, #0x1 - strh r0, [r6, #0x0] - pop {r3-r7, pc} -_0203C034: - mov r0, #0x0 - strh r0, [r6, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl FUN_02038130 - ldr r1, _0203C050 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203C050: .word FUN_0203BB90 - - thumb_func_start FUN_0203C054 -FUN_0203C054: ; 0x0203C054 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - mov r1, #0x0 - add r2, r6, #0x0 - bl FUN_0203BC3C - cmp r0, #0x1 - bne _0203C088 - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r4-r6, pc} -_0203C088: - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203C090 -FUN_0203C090: ; 0x0203C090 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - mov r1, #0x1 - add r2, r6, #0x0 - bl FUN_0203BC3C - cmp r0, #0x1 - bne _0203C0C4 - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r4-r6, pc} -_0203C0C4: - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203C0CC -FUN_0203C0CC: ; 0x0203C0CC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - mov r1, #0x0 - bl FUN_02027008 - add r1, r4, #0x0 - bl FUN_02027478 - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203C0FC -FUN_0203C0FC: ; 0x0203C0FC - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02038804 - ldr r1, _0203C114 ; =FUN_0203BC04 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203C114: .word FUN_0203BC04 - - thumb_func_start FUN_0203C118 -FUN_0203C118: ; 0x0203C118 - push {r3, lr} - add r1, r0, #0x0 - ldr r0, [r1, #0x74] - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0xc] - bl FUN_02085F48 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203C12C -FUN_0203C12C: ; 0x0203C12C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - mov r1, #0x5 - add r4, r0, #0x0 - mov r0, #0xb - lsl r1, r1, #0x6 - bl AllocFromHeap - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - mov r2, #0x2 - bl FUN_0205F7A0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl FUN_02037E90 - ldr r1, _0203C170 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203C170: .word FUN_0203BB90 - - thumb_func_start FUN_0203C174 -FUN_0203C174: ; 0x0203C174 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r2, #0xb - bl FUN_02088960 - str r0, [r4, #0x0] - ldr r1, _0203C1A8 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203C1A8: .word FUN_0203BB90 - - thumb_func_start FUN_0203C1AC -FUN_0203C1AC: ; 0x0203C1AC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Bag_get - mov r1, #0x4 - bl Bag_PocketNotEmpty - cmp r0, #0x0 - bne _0203C1E0 - mov r0, #0x1 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} -_0203C1E0: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02028048 - bl FUN_020281B8 - cmp r0, #0x64 - blo _0203C1FA - mov r0, #0x2 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} -_0203C1FA: - mov r0, #0x0 - strh r0, [r4, #0x0] - pop {r3-r5, pc} - - thumb_func_start FUN_0203C200 -FUN_0203C200: ; 0x0203C200 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r6, r0, #0x0 - mov r0, #0xb - mov r1, #0x8 - bl AllocFromHeap - mov r1, #0x0 - mov r2, #0x8 - str r0, [r6, #0x0] - add r4, r0, #0x0 - bl MI_CpuFill8 - ldr r0, [sp, #0x0] - strh r7, [r4, #0x4] - strh r0, [r4, #0x6] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r6, #0x0] - bl FUN_02037FE4 - ldr r1, _0203C274 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203C274: .word FUN_0203BB90 - - thumb_func_start ScrCmd_monstoragepc -ScrCmd_monstoragepc: ; 0x0203C278 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - mov r0, #0xb - mov r1, #0xc - bl AllocFromHeap - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r1, [r1, #0xc] - str r1, [r0, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - str r1, [r0, #0x4] - str r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl LaunchStoragePCInterface - ldr r1, _0203C2C0 ; =FUN_0203BBBC - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203C2C0: .word FUN_0203BBBC - - thumb_func_start FUN_0203C2C4 -FUN_0203C2C4: ; 0x0203C2C4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_020383F8 - ldr r1, _0203C2DC ; =FUN_0203BC04 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203C2DC: .word FUN_0203BC04 - - thumb_func_start FUN_0203C2E0 -FUN_0203C2E0: ; 0x0203C2E0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02065344 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203C2F0 -FUN_0203C2F0: ; 0x0203C2F0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_020383D8 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203C300 -FUN_0203C300: ; 0x0203C300 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0203842C - str r0, [r4, #0x0] - ldr r1, _0203C328 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203C328: .word FUN_0203BB90 - - thumb_func_start ScrCmd_halloffame -ScrCmd_halloffame: ; 0x0203C32C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl Special_EnterHallOfFame - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203C33C -FUN_0203C33C: ; 0x0203C33C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02038824 - str r0, [r4, #0x0] - ldr r1, _0203C364 ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203C364: .word FUN_0203BB90 - - thumb_func_start FUN_0203C368 -FUN_0203C368: ; 0x0203C368 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0203384C - cmp r0, #0x0 - beq _0203C3BC - mov r0, #0x1 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl FUN_020386E0 - ldr r1, _0203C3C4 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - b _0203C3C0 -_0203C3BC: - mov r0, #0x0 - strh r0, [r4, #0x0] -_0203C3C0: - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203C3C4: .word FUN_0203BC04 - - thumb_func_start FUN_0203C3C8 -FUN_0203C3C8: ; 0x0203C3C8 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldr r0, [r4, #0x74] - bl FUN_0206F3D8 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203C3E8 -FUN_0203C3E8: ; 0x0203C3E8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - mov r0, #0xb - mov r1, #0x8 - bl AllocFromHeap - str r0, [r4, #0x0] - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - str r0, [r6, #0x4] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r4, #0x0] - bl FUN_020386A4 - ldr r1, _0203C42C ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - nop -_0203C42C: .word FUN_0203BC04 - - thumb_func_start FUN_0203C430 -FUN_0203C430: ; 0x0203C430 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - ldr r1, [r4, #0x0] - ldr r1, [r1, #0x0] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl FUN_0205F378 - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203C460 -FUN_0203C460: ; 0x0203C460 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - beq _0203C474 - mov r0, #0x1 - b _0203C476 -_0203C474: - mov r0, #0x0 -_0203C476: - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r6, r0, #0x0 - ldr r0, [r6, #0x0] - cmp r0, #0x0 - beq _0203C492 - bl ErrorHandling -_0203C492: - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl FUN_0203789C - str r0, [r6, #0x0] - ldr r1, _0203C4AC ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203C4AC: .word FUN_0203BC04 - - thumb_func_start FUN_0203C4B0 -FUN_0203C4B0: ; 0x0203C4B0 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203C4DC - bl ErrorHandling -_0203C4DC: - ldr r0, [r4, #0x0] - bl FUN_020378FC - strh r0, [r5, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r3-r5, pc} - - thumb_func_start FUN_0203C4F0 -FUN_0203C4F0: ; 0x0203C4F0 - push {r3-r4, lr} - sub sp, #0xc - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [r4, #0x74] - add r2, r1, #0x0 - mov r3, #0x7 - bl FUN_020385CC - mov r0, #0x1 - add sp, #0xc - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_0203C520 -FUN_0203C520: ; 0x0203C520 - push {r4-r7, lr} - sub sp, #0x34 - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - ldr r0, [r4, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl GetPartyMonByIndex - mov r1, #0x74 - add r2, sp, #0xc - add r7, r0, #0x0 - bl GetMonData - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r7, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - str r6, [sp, #0x0] - add r0, sp, #0xc - str r0, [sp, #0x4] - str r4, [sp, #0x8] - ldr r0, [r5, #0x74] - mov r1, #0x1 - mov r3, #0xa - bl FUN_020385CC - mov r0, #0x1 - add sp, #0x34 - pop {r4-r7, pc} - - thumb_func_start FUN_0203C58C -FUN_0203C58C: ; 0x0203C58C - push {r3-r4, lr} - sub sp, #0xc - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - mov r2, #0x0 - str r2, [sp, #0x0] - str r2, [sp, #0x4] - str r0, [sp, #0x8] - ldr r0, [r4, #0x74] - mov r1, #0x6 - mov r3, #0xa - bl FUN_020385CC - mov r0, #0x1 - add sp, #0xc - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_0203C5BC -FUN_0203C5BC: ; 0x0203C5BC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r2, r0, #0x0 - ldr r0, _0203C610 ; =0x0000FFFF - add r5, #0x80 - strh r0, [r2, #0x0] - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0x10] - mov r3, #0x0 - bl FUN_02037E18 - mov r0, #0x1 - pop {r3-r5, pc} - nop -_0203C610: .word 0x0000FFFF - - thumb_func_start FUN_0203C614 -FUN_0203C614: ; 0x0203C614 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r3, r0, #0x0 - ldr r0, _0203C67C ; =0x0000FFFF - add r5, #0x80 - strh r0, [r4, #0x0] - strh r0, [r3, #0x0] - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - ldr r0, [r0, #0x10] - add r2, r4, #0x0 - bl FUN_02037E18 - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203C67C: .word 0x0000FFFF - - thumb_func_start FUN_0203C680 -FUN_0203C680: ; 0x0203C680 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r4, #0x0] - add r1, r6, #0x0 - bl FUN_0200B518 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203C6C4 -FUN_0203C6C4: ; 0x0203C6C4 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r4, [sp, #0x0] - add r3, r0, #0x0 - str r6, [sp, #0x4] - mov r0, #0x4 - str r0, [sp, #0x8] - mov r0, #0x0 - add r1, r7, #0x0 - add r2, r7, #0x0 - bl FUN_0200E1D0 - mov r0, #0x0 - bl FUN_0200E388 - mov r0, #0x1 - bl FUN_0200E388 - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_0203C70C -FUN_0203C70C: ; 0x0203C70C - push {r3, lr} - ldr r1, _0203C718 ; =FUN_0203C71C - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203C718: .word FUN_0203C71C - - thumb_func_start FUN_0203C71C -FUN_0203C71C: ; 0x0203C71C - push {r3, lr} - bl FUN_0200E308 - cmp r0, #0x1 - bne _0203C72A - mov r0, #0x1 - pop {r3, pc} -_0203C72A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203C730 -FUN_0203C730: ; 0x0203C730 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r4, [sp, #0x0] - str r0, [sp, #0x4] - mov r2, #0x0 - ldr r0, [r5, #0x74] - add r1, r6, #0x0 - mvn r2, r2 - add r3, r7, #0x0 - bl FUN_02049240 - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0203C788 -FUN_0203C788: ; 0x0203C788 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r4, [sp, #0x0] - mov r2, #0x0 - add r5, #0x80 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - ldr r0, [r0, #0x10] - mvn r2, r2 - add r3, r7, #0x0 - bl FUN_02049F98 - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0203C7E4 -FUN_0203C7E4: ; 0x0203C7E4 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_02049FFC - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203C7F4 -FUN_0203C7F4: ; 0x0203C7F4 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - bl FUN_02034DC8 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - ldr r1, [r5, #0x0] - strh r1, [r0, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203C820 -FUN_0203C820: ; 0x0203C820 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - ldr r1, [r4, #0x0] - ldr r1, [r1, #0x1c] - ldr r1, [r1, #0x0] - strh r1, [r0, #0x0] - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203C844 -FUN_0203C844: ; 0x0203C844 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020552F8 - add r1, r0, #0x0 - ldr r0, [r5, #0x74] - add r2, r4, #0x0 - bl MOD05_021E6990 - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203C874 -FUN_0203C874: ; 0x0203C874 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r0, #0x90 - ldr r0, [r0, #0x0] - bl FUN_0205DD40 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020552F8 - add r1, r0, #0x0 - ldr r0, [r5, #0x74] - add r2, r4, #0x0 - bl MOD05_021E6410 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203C8B4 -FUN_0203C8B4: ; 0x0203C8B4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020552F8 - add r1, r0, #0x0 - ldr r0, [r5, #0x74] - add r2, r4, #0x0 - bl MOD05_021E6BF4 - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203C8E4 -FUN_0203C8E4: ; 0x0203C8E4 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - add r5, #0x80 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - sub r2, r2, #0x2 - add r3, r6, #0x0 - bl FUN_02049274 - mov r0, #0x1 - add sp, #0x8 - pop {r4-r6, pc} - - thumb_func_start FUN_0203C930 -FUN_0203C930: ; 0x0203C930 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - add r5, r0, #0x0 - mov r1, #0x0 - bl FUN_02034DF4 - add r0, r5, #0x0 - bl FUN_02034DEC - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xc] - bl MOD05_021DC174 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203C960 -FUN_0203C960: ; 0x0203C960 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - add r5, r0, #0x0 - mov r1, #0x0 - bl FUN_02034DF4 - add r0, r5, #0x0 - bl FUN_02034DEC - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x4] - ldr r0, [r0, #0xc] - bl MOD05_021DC174 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203C990 -FUN_0203C990: ; 0x0203C990 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl GetPartyMonByIndex - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020553E8 - add r3, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - add r2, r6, #0x0 - bl MOD06_0224666C - str r0, [r4, #0x0] - ldr r1, _0203C9F4 ; =FUN_0203C9F8 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - nop -_0203C9F4: .word FUN_0203C9F8 - - thumb_func_start FUN_0203C9F8 -FUN_0203C9F8: ; 0x0203C9F8 - push {r4, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - bl MOD06_022466A0 - cmp r0, #0x1 - bne _0203CA1A - ldr r0, [r4, #0x0] - bl MOD06_022466AC - mov r0, #0x1 - pop {r4, pc} -_0203CA1A: - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203CA20 -FUN_0203CA20: ; 0x0203CA20 - push {r3, lr} - ldr r0, [r0, #0x74] - bl MOD05_021E7030 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203CA2C -FUN_0203CA2C: ; 0x0203CA2C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020553C4 - cmp r0, #0x1 - bne _0203CA54 - mov r0, #0x1 - b _0203CA56 -_0203CA54: - mov r0, #0x0 -_0203CA56: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203CA5C -FUN_0203CA5C: ; 0x0203CA5C - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x8] - add r0, r1, #0x1 - str r0, [r4, #0x8] - ldrb r0, [r1, #0x0] - cmp r0, #0x1 - bne _0203CAA4 - add r0, r4, #0x0 - add r0, #0x80 - mov r1, #0x12 - ldr r0, [r0, #0x0] - lsl r1, r1, #0x6 - bl FUN_0204AB20 - add r0, r4, #0x0 - add r0, #0x80 - mov r1, #0x12 - ldr r0, [r0, #0x0] - lsl r1, r1, #0x6 - mov r2, #0x1 - bl FUN_0204ABDC - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x2 - ldr r0, [r0, #0x38] - bl MOD05_021E5FD8 - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x38] - bl MOD05_021E5FE0 - b _0203CAE4 -_0203CAA4: - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr r0, [r0, #0x38] - bl MOD05_021E5FD8 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl MOD05_021E5FE0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_0204AB20 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r1, [r0, #0x1c] - ldr r1, [r1, #0x0] - bl FUN_0204AB58 - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - mov r2, #0x1 - bl FUN_0204ABDC -_0203CAE4: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203CAE8 -FUN_0203CAE8: ; 0x0203CAE8 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x2 - ldr r0, [r0, #0x38] - bl MOD05_021E5FD8 - add r4, #0x80 - mov r1, #0x12 - ldr r0, [r4, #0x0] - lsl r1, r1, #0x6 - bl FUN_0204AB20 - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203CB08 -FUN_0203CB08: ; 0x0203CB08 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldr r0, [r0, #0x0] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055720 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203CB20 -FUN_0203CB20: ; 0x0203CB20 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020553C4 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CB48 -FUN_0203CB48: ; 0x0203CB48 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x38] - bl FUN_020553D4 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203CB60 -FUN_0203CB60: ; 0x0203CB60 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl MOD05_021E5FE0 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203CB70 -FUN_0203CB70: ; 0x0203CB70 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0202A9B0 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x2 - bl FUN_0202A990 - add r1, r6, #0x0 - add r2, r4, #0x0 - bl MOD06_02245910 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203CBBC -FUN_0203CBBC: ; 0x0203CBBC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F388 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CBE8 -FUN_0203CBE8: ; 0x0203CBE8 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x8 - add r0, r4, #0x0 - bl FUN_02039438 - add r0, r4, #0x0 - mov r1, #0x10 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02039438 - add r0, r4, #0x0 - mov r1, #0x3 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [sp, #0x0] - ldr r2, [r6, #0x0] - mov r3, #0xb - bl GetTrainerMessageByIdPair - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - mov r1, #0xf - bl FUN_02019620 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r2, r0, #0x0 - ldr r1, [r6, #0x0] - add r0, r4, #0x0 - mov r3, #0x1 - bl FUN_02054658 - strb r0, [r7, #0x0] - ldr r1, _0203CC84 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203CC84: .word FUN_0203A2F0 - - thumb_func_start FUN_0203CC88 -FUN_0203CC88: ; 0x0203CC88 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - ldr r2, [sp, #0x0] - ldr r3, [sp, #0x4] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl MOD06_02240790 - ldr r1, _0203CCF4 ; =FUN_0203CCF8 - add r0, r5, #0x0 - str r6, [r5, #0x64] - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203CCF4: .word FUN_0203CCF8 - - thumb_func_start FUN_0203CCF8 -FUN_0203CCF8: ; 0x0203CCF8 - push {r4, lr} - add r1, r0, #0x0 - ldr r1, [r1, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - bl MOD06_022407DC - cmp r0, #0x0 - bne _0203CD18 - mov r0, #0x0 - pop {r4, pc} -_0203CD18: - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203CD20 -FUN_0203CD20: ; 0x0203CD20 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - ldr r2, [sp, #0x0] - ldr r3, [sp, #0x4] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl MOD06_022407F8 - ldr r1, _0203CD8C ; =FUN_0203CD90 - add r0, r5, #0x0 - str r6, [r5, #0x64] - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203CD8C: .word FUN_0203CD90 - - thumb_func_start FUN_0203CD90 -FUN_0203CD90: ; 0x0203CD90 - push {r4, lr} - add r1, r0, #0x0 - ldr r1, [r1, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - bl MOD06_02240844 - cmp r0, #0x0 - bne _0203CDB0 - mov r0, #0x0 - pop {r4, pc} -_0203CDB0: - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203CDB8 -FUN_0203CDB8: ; 0x0203CDB8 - push {r3, lr} - bl ScriptReadHalfword - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203CDC4 -FUN_0203CDC4: ; 0x0203CDC4 - push {r3, lr} - bl ScriptReadHalfword - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203CDD0 -FUN_0203CDD0: ; 0x0203CDD0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r6, r0, #0x0 - add r5, #0x80 - ldr r4, [r6, #0x0] - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0x10] - add r1, #0x2c - mov r2, #0x5 - bl FUN_02047174 - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x0 - str r0, [r6, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203CE00 -FUN_0203CE00: ; 0x0203CE00 - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_02080C38 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203CE0C -FUN_0203CE0C: ; 0x0203CE0C - push {r3-r4, lr} - sub sp, #0x14 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, #0x80 - str r0, [sp, #0x10] - ldr r0, [r4, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - add r1, sp, #0x0 - bl FUN_02034DD4 - mov r0, #0x0 - add sp, #0x14 - pop {r3-r4, pc} - .balign 4 - - thumb_func_start FUN_0203CE8C -FUN_0203CE8C: ; 0x0203CE8C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - bl FUN_02034DD0 - ldr r0, [r0, #0x0] - bl MOD05_021E2608 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203CEBC -FUN_0203CEBC: ; 0x0203CEBC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - str r0, [sp, #0x4] - bl FUN_02039438 - add r7, r0, #0x0 - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r6, [r0, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r3, r0, #0x0 - ldr r0, [r7, #0x0] - add r1, r6, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - add r2, r4, #0x0 - bl MOD05_021E2464 - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0203CF04 -FUN_0203CF04: ; 0x0203CF04 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_CountSinnohDexSeenMons - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CF34 -FUN_0203CF34: ; 0x0203CF34 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_CountSinnohDexCaughtMons - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CF64 -FUN_0203CF64: ; 0x0203CF64 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_CountNationalDexSeenMons - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CF94 -FUN_0203CF94: ; 0x0203CF94 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_CountNationalDexCaughtMons - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203CFC4 -FUN_0203CFC4: ; 0x0203CFC4 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203CFC8 -FUN_0203CFC8: ; 0x0203CFC8 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r5, #0x8] - str r0, [sp, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r6, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - cmp r6, #0x0 - bne _0203D02E - add r0, r7, #0x0 - bl Pokedex_CountSinnohDexSeenMons_OmitMythicals - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - mov r1, #0x2 - mov r2, #0xa - bl FUN_0205F2E4 - add r1, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_02054CC8 - b _0203D048 -_0203D02E: - add r0, r7, #0x0 - bl Pokedex_CountNationalDexCaughtMons_OmitMythicals - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - bl PlayerProfile_GetTrainerGender - add r1, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl FUN_02054D1C -_0203D048: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D050 -FUN_0203D050: ; 0x0203D050 - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x17 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r0, [r5, #0x74] - add r1, r6, #0x0 - lsr r2, r2, #0x18 - add r3, r4, #0x0 - bl FUN_02046E18 - mov r0, #0x1 - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D0A4 -FUN_0203D0A4: ; 0x0203D0A4 - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x17 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r0, [r5, #0x74] - add r1, r6, #0x0 - lsr r2, r2, #0x18 - add r3, r4, #0x0 - bl FUN_02046E18 - mov r0, #0x1 - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D0F8 -FUN_0203D0F8: ; 0x0203D0F8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - lsl r2, r2, #0x18 - ldr r0, [r5, #0x74] - add r1, r4, #0x0 - lsr r2, r2, #0x18 - bl FUN_02046FA0 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D134 -FUN_0203D134: ; 0x0203D134 - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_020470AC - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203D140 -FUN_0203D140: ; 0x0203D140 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD05_021F4DC8 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D150 -FUN_0203D150: ; 0x0203D150 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl MOD05_021F4D80 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D178 -FUN_0203D178: ; 0x0203D178 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x17 - bl FUN_02039438 - add r1, r0, #0x0 - ldr r0, [r4, #0x74] - bl FUN_02046DB4 - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203D194 -FUN_0203D194: ; 0x0203D194 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD05_021F4E7C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D1A4 -FUN_0203D1A4: ; 0x0203D1A4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_020386B4 - ldr r1, _0203D1BC ; =FUN_0203BC04 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203D1BC: .word FUN_0203BC04 - - thumb_func_start FUN_0203D1C0 -FUN_0203D1C0: ; 0x0203D1C0 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r5, [r1, #0xc] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0202280C - cmp r0, #0x0 - beq _0203D1EC - mov r0, #0x0 - strh r0, [r4, #0x0] - b _0203D210 -_0203D1EC: - add r0, r5, #0x0 - bl FUN_02022804 - cmp r0, #0x0 - bne _0203D1FC - mov r0, #0x1 - strh r0, [r4, #0x0] - b _0203D210 -_0203D1FC: - add r0, r5, #0x0 - bl SaveGetDirtyBit - cmp r0, #0x0 - beq _0203D20C - mov r0, #0x2 - strh r0, [r4, #0x0] - b _0203D210 -_0203D20C: - mov r0, #0x3 - strh r0, [r4, #0x0] -_0203D210: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203D214 -FUN_0203D214: ; 0x0203D214 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl MOD05_021E85FC - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D23C -FUN_0203D23C: ; 0x0203D23C - push {r3, lr} - ldr r0, [r0, #0x74] - bl MOD05_021E3424 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203D248 -FUN_0203D248: ; 0x0203D248 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Poketch_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Sav2_Poketch_IsGiven - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D278 -FUN_0203D278: ; 0x0203D278 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - bl Sav2_Poketch_get - add r1, r5, #0x0 - bl Sav2_Poketch_UnlockApp - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D2A4 -FUN_0203D2A4: ; 0x0203D2A4 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Poketch_get - add r1, r6, #0x0 - bl Sav2_Poketch_AppIsUnlocked - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203D2E4 -FUN_0203D2E4: ; 0x0203D2E4 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [r4, #0x64] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02031588 - ldr r1, _0203D310 ; =FUN_0203D314 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203D310: .word FUN_0203D314 - - thumb_func_start FUN_0203D314 -FUN_0203D314: ; 0x0203D314 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02030F20 - cmp r0, #0x2 - bge _0203D324 - mov r0, #0x1 - pop {r4, pc} -_0203D324: - ldr r0, [r4, #0x64] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_020315D8 - pop {r4, pc} - - thumb_func_start FUN_0203D330 -FUN_0203D330: ; 0x0203D330 - push {r3, lr} - bl FUN_0203168C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D33C -FUN_0203D33C: ; 0x0203D33C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl FUN_0205296C - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D36C -FUN_0203D36C: ; 0x0203D36C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r1, r0, #0x0 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r1, [r1, #0x0] - ldr r0, [r0, #0x78] - bl FUN_02052C0C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D3A4 -FUN_0203D3A4: ; 0x0203D3A4 - push {r4, lr} - bl ScriptReadHalfword - add r4, r0, #0x0 - cmp r4, #0x5 - beq _0203D3BC - cmp r4, #0x7 - beq _0203D3BC - cmp r4, #0x9 - beq _0203D3BC - cmp r4, #0x6 - bne _0203D3C2 -_0203D3BC: - bl FUN_02031C54 - b _0203D3CA -_0203D3C2: - cmp r4, #0xb - bne _0203D3CA - bl FUN_02031C64 -_0203D3CA: - bl FUN_02031190 - cmp r0, #0x0 - bne _0203D3D8 - add r0, r4, #0x0 - bl FUN_02052B74 -_0203D3D8: - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0203D3DC -FUN_0203D3DC: ; 0x0203D3DC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, #0x80 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl FUN_02013B5C - add r5, r0, #0x0 - cmp r4, #0x0 - bne _0203D432 - ldr r0, [r7, #0x0] - bl FUN_02058448 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - b _0203D434 -_0203D432: - mov r2, #0x0 -_0203D434: - str r5, [sp, #0x0] - ldr r0, [r6, #0x0] - ldr r3, [sp, #0x4] - add r1, r4, #0x0 - bl FUN_02052D08 - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D448 -FUN_0203D448: ; 0x0203D448 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0208881C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D458 -FUN_0203D458: ; 0x0203D458 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x7c] - bl FUN_02052F74 - bl FUN_02031B50 - ldr r1, _0203D478 ; =FUN_0203D47C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203D478: .word FUN_0203D47C - - thumb_func_start FUN_0203D47C -FUN_0203D47C: ; 0x0203D47C - push {r3, lr} - bl FUN_02030F20 - cmp r0, #0x2 - bge _0203D48A - mov r0, #0x1 - pop {r3, pc} -_0203D48A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D490 -FUN_0203D490: ; 0x0203D490 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r7, r0, #0x0 - ldr r0, [r4, #0x0] - bl FUN_02058448 - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r2, [sp, #0x0] - ldr r0, [r0, #0x78] - ldr r3, [r7, #0x0] - bl FUN_02052A10 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D4E8 -FUN_0203D4E8: ; 0x0203D4E8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x78] - bl FUN_020527A8 - strh r0, [r4, #0x0] - ldrh r0, [r4, #0x0] - cmp r0, #0x0 - beq _0203D522 - add r5, #0x80 - ldr r0, [r5, #0x0] - mov r1, #0x13 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FreeToHeap -_0203D522: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D528 -FUN_0203D528: ; 0x0203D528 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0xa - add r0, r5, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r6, #0x0] - bl FUN_02058448 - add r1, r0, #0x0 - ldr r0, [r5, #0x78] - bl FUN_020524CC - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203D560 -FUN_0203D560: ; 0x0203D560 - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0xa - add r0, r5, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r6, #0x0] - bl FUN_02058448 - add r1, r0, #0x0 - ldr r0, [r5, #0x78] - add r2, r7, #0x0 - bl FUN_02052544 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D5B0 -FUN_0203D5B0: ; 0x0203D5B0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203D5C8 ; =FUN_0203D5CC - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203D5C8: .word FUN_0203D5CC - - thumb_func_start FUN_0203D5CC -FUN_0203D5CC: ; 0x0203D5CC - push {r4-r6, lr} - add r6, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - ldr r0, [r5, #0x78] - bl FUN_02052604 - ldr r1, [r6, #0x64] - add r4, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - cmp r4, #0x0 - bne _0203D5F0 - mov r0, #0x0 - pop {r4-r6, pc} -_0203D5F0: - strh r4, [r0, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D5F8 -FUN_0203D5F8: ; 0x0203D5F8 - push {r3, lr} - add r0, #0x80 - ldr r1, [r0, #0x0] - ldr r0, [r1, #0x34] - ldr r1, [r1, #0x7c] - bl FUN_020534DC - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D60C -FUN_0203D60C: ; 0x0203D60C - push {r3, lr} - mov r0, #0x4 - bl FUN_02052B74 - bl FUN_02031C2C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203D61C -FUN_0203D61C: ; 0x0203D61C - push {r3, lr} - bl FUN_02031C64 - bl FUN_02031B50 - mov r0, #0x0 - bl FUN_02052B74 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203D630 -FUN_0203D630: ; 0x0203D630 - push {r4-r6, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r4, #0x78] - add r1, r6, #0x0 - bl FUN_0205265C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D66C -FUN_0203D66C: ; 0x0203D66C - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203D684 ; =FUN_0203D688 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203D684: .word FUN_0203D688 - - thumb_func_start FUN_0203D688 -FUN_0203D688: ; 0x0203D688 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x78] - bl FUN_02052608 - cmp r0, #0x1 - blo _0203D6BC - add r5, #0x80 - strh r0, [r4, #0x0] - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x78] - bl FUN_02052E10 - mov r0, #0x1 - pop {r3-r5, pc} -_0203D6BC: - mov r0, #0x0 - strh r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D6C4 -FUN_0203D6C4: ; 0x0203D6C4 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203D6DC ; =FUN_0203D6E0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203D6DC: .word FUN_0203D6E0 - - thumb_func_start FUN_0203D6E0 -FUN_0203D6E0: ; 0x0203D6E0 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x78] - bl FUN_02052648 - ldr r1, _0203D724 ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x2 - tst r1, r2 - beq _0203D716 - add r5, #0x80 - ldr r0, [r5, #0x0] - mov r1, #0x8 - ldr r0, [r0, #0x78] - bl FUN_02052718 -_0203D716: - cmp r0, #0x0 - beq _0203D720 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} -_0203D720: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_0203D724: .word gMain - - thumb_func_start FUN_0203D728 -FUN_0203D728: ; 0x0203D728 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x10] - bl FUN_02049EA4 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203D738 -FUN_0203D738: ; 0x0203D738 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerID - add r6, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerGender - add r1, r0, #0x0 - ldr r2, [r4, #0x0] - add r0, r6, #0x0 - bl FUN_0205363C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D774 -FUN_0203D774: ; 0x0203D774 - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerID - add r6, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerGender - add r1, r0, #0x0 - add r0, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02053678 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerGender - ldrh r1, [r4, #0x0] - mov r2, #0x2 - bl FUN_020536D0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D7DC -FUN_0203D7DC: ; 0x0203D7DC - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerID - add r6, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_GetTrainerGender - add r1, r0, #0x0 - add r0, r6, #0x0 - add r2, r7, #0x0 - bl FUN_02053678 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203D834 -FUN_0203D834: ; 0x0203D834 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r1, r0, #0x0 - lsl r1, r1, #0x18 - add r0, r4, #0x0 - lsr r1, r1, #0x18 - bl PlayerProfile_SetAvatar - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203D868 -FUN_0203D868: ; 0x0203D868 - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_02048498 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203D874 -FUN_0203D874: ; 0x0203D874 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - add r1, r4, #0x0 - bl FUN_02034E04 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_getplayergender -ScrCmd_getplayergender: ; 0x0203D8A0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl PlayerProfile_GetTrainerGender - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_healparty -ScrCmd_healparty: ; 0x0203D8D0 - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_02046528 - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - bl HealParty - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D8E8 -FUN_0203D8E8: ; 0x0203D8E8 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203D8EC -FUN_0203D8EC: ; 0x0203D8EC - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02050024 - ldr r1, _0203D900 ; =FUN_0203D904 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203D900: .word FUN_0203D904 - - thumb_func_start FUN_0203D904 -FUN_0203D904: ; 0x0203D904 - push {r3, lr} - bl FUN_02031810 - cmp r0, #0x1 - beq _0203D91A - bl FUN_0202EDF8 - cmp r0, #0x1 - beq _0203D91A - mov r0, #0x1 - pop {r3, pc} -_0203D91A: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D920 -FUN_0203D920: ; 0x0203D920 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02050048 - ldr r1, _0203D934 ; =FUN_0203D904 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203D934: .word FUN_0203D904 - - thumb_func_start FUN_0203D938 -FUN_0203D938: ; 0x0203D938 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204FF5C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D948 -FUN_0203D948: ; 0x0203D948 - push {r3, lr} - bl ScriptReadHalfword - bl FUN_0204F6DC - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203D958 -FUN_0203D958: ; 0x0203D958 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - bl Bag_PocketNotEmpty - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203D998 -FUN_0203D998: ; 0x0203D998 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r3, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02034B74 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203D9E8 -FUN_0203D9E8: ; 0x0203D9E8 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - ldr r0, [r0, #0x34] - bl FUN_02058060 - ldr r2, [sp, #0x4] - ldr r3, [sp, #0x8] - add r5, r0, #0x0 - add r1, r7, #0x0 - str r4, [sp, #0x0] - bl FUN_02058E28 - add r0, r5, #0x0 - bl FUN_02059D1C - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203DA78 -FUN_0203DA78: ; 0x0203DA78 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r2, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_02034BDC - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DAB0 -FUN_0203DAB0: ; 0x0203DAB0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r2, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl FUN_02034BAC - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DAE8 -FUN_0203DAE8: ; 0x0203DAE8 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r3, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02034C0C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203DB38 -FUN_0203DB38: ; 0x0203DB38 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r3, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02034C34 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203DB88 -FUN_0203DB88: ; 0x0203DB88 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r5, r0, #0x0 - bne _0203DBC6 - bl ErrorHandling -_0203DBC6: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl MOD05_021F1EC0 - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203DBD4 -FUN_0203DBD4: ; 0x0203DBD4 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xc - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - ldr r1, [r5, #0x0] - cmp r1, #0x0 - beq _0203DBFC - strh r0, [r1, #0x0] -_0203DBFC: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DC00 -FUN_0203DC00: ; 0x0203DC00 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - lsl r1, r4, #0x5 - ldr r3, [r5, #0x8] - add r2, r0, #0x0 - add r0, r3, #0x1 - str r0, [r5, #0x8] - add r5, #0x80 - lsl r4, r6, #0x5 - ldrb r3, [r3, #0x0] - ldr r0, [r5, #0x0] - add r1, r7, r1 - add r2, r2, r4 - bl MOD05_021DAE40 - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203DC58 -FUN_0203DC58: ; 0x0203DC58 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021DAF78 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DC70 -FUN_0203DC70: ; 0x0203DC70 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021DAF98 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DC88 -FUN_0203DC88: ; 0x0203DC88 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021DAED4 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCA0 -FUN_0203DCA0: ; 0x0203DCA0 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021DAF28 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCB8 -FUN_0203DCB8: ; 0x0203DCB8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02064CA8 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCC8 -FUN_0203DCC8: ; 0x0203DCC8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD06_02241230 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCD8 -FUN_0203DCD8: ; 0x0203DCD8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02064CC8 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCE8 -FUN_0203DCE8: ; 0x0203DCE8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD06_02241914 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DCF8 -FUN_0203DCF8: ; 0x0203DCF8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02064D10 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DD08 -FUN_0203DD08: ; 0x0203DD08 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02064D4C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DD18 -FUN_0203DD18: ; 0x0203DD18 - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - add r0, r3, #0x0 - bl FUN_02064D88 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DD34 -FUN_0203DD34: ; 0x0203DD34 - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - add r0, r3, #0x0 - bl MOD06_02242A38 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DD50 -FUN_0203DD50: ; 0x0203DD50 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_020388B4 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DD60 -FUN_0203DD60: ; 0x0203DD60 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r0, [r5, #0x64] - ldr r0, [r6, #0x0] - bl FUN_02058448 - add r1, r5, #0x0 - add r1, #0x80 - add r2, r0, #0x0 - ldr r1, [r1, #0x0] - add r0, r7, #0x0 - bl MOD18_0224CA54 - str r0, [r4, #0x0] - ldr r1, _0203DDBC ; =FUN_0203DDC0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0203DDBC: .word FUN_0203DDC0 - - thumb_func_start FUN_0203DDC0 -FUN_0203DDC0: ; 0x0203DDC0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl MOD18_0224CA2C - strh r0, [r5, #0x0] - ldrh r1, [r5, #0x0] - ldr r0, _0203DDFC ; =0x0000FFFE - cmp r1, r0 - beq _0203DDF6 - mov r0, #0x1 - pop {r3-r5, pc} -_0203DDF6: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203DDFC: .word 0x0000FFFE - - thumb_func_start FUN_0203DE00 -FUN_0203DE00: ; 0x0203DE00 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x3 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - bl MOD18_0224CA58 - strb r0, [r4, #0x0] - ldr r1, _0203DE34 ; =FUN_0203DE38 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203DE34: .word FUN_0203DE38 - - thumb_func_start FUN_0203DE38 -FUN_0203DE38: ; 0x0203DE38 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x3 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - bl FUN_020546C8 - pop {r3, pc} - - thumb_func_start FUN_0203DE4C -FUN_0203DE4C: ; 0x0203DE4C - push {r3, lr} - bl MOD11_0224CA94 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DE58 -FUN_0203DE58: ; 0x0203DE58 - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r5, [r2, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl MOD18_0224CAA0 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203DE80 -FUN_0203DE80: ; 0x0203DE80 - push {r3-r5, lr} - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r5, [r2, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl MOD18_0224CAB4 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203DEA8 -FUN_0203DEA8: ; 0x0203DEA8 - push {r3, lr} - sub sp, #0x8 - mov r3, #0x0 - str r3, [sp, #0x0] - str r3, [sp, #0x4] - mov r1, #0x1 - ldr r0, [r0, #0x74] - add r2, r1, #0x0 - bl MOD06_02242BE0 - mov r0, #0x1 - add sp, #0x8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203DEC4 -FUN_0203DEC4: ; 0x0203DEC4 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [r5, #0x34] - bl FUN_02058060 - add r4, r0, #0x0 - bne _0203DEEC - bl ErrorHandling -_0203DEEC: - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_0205889C - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DEF8 -FUN_0203DEF8: ; 0x0203DEF8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [r5, #0x34] - bl FUN_02058060 - add r4, r0, #0x0 - bne _0203DF20 - bl ErrorHandling -_0203DF20: - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_0205889C - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DF2C -FUN_0203DF2C: ; 0x0203DF2C - push {r3, lr} - ldr r0, [r0, #0x74] - bl FUN_02066818 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203DF38 -FUN_0203DF38: ; 0x0203DF38 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0xc] - bl Sav2_Mailbox_get - mov r1, #0x0 - bl Mailbox_CountMessages - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DF64 -FUN_0203DF64: ; 0x0203DF64 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - ldr r0, [r4, #0x74] - bl FUN_02063650 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203DF84 -FUN_0203DF84: ; 0x0203DF84 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl Script_GetTimeOfDay - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DFA8 -FUN_0203DFA8: ; 0x0203DFA8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - bl LCRandom - add r1, r5, #0x0 - bl _s32_div_f - strh r1, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203DFE0 -FUN_0203DFE0: ; 0x0203DFE0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - bl LCRandom - add r1, r5, #0x0 - bl _s32_div_f - strh r1, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - - thumb_func_start FUN_0203E018 -FUN_0203E018: ; 0x0203E018 - push {r4-r6, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r4, #0x0 - bl MOD05_021F3A18 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203E054 -FUN_0203E054: ; 0x0203E054 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl MOD05_021F3AB4 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203E078 -FUN_0203E078: ; 0x0203E078 - push {r3-r7, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - add r3, r0, #0x0 - add r0, r4, #0x0 - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - bl MOD05_021F3B7C - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203E0CC -FUN_0203E0CC: ; 0x0203E0CC - push {r3-r7, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - add r3, r0, #0x0 - add r0, r4, #0x0 - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - bl MOD05_021F3B4C - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203E120 -FUN_0203E120: ; 0x0203E120 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - mov r1, #0x82 - lsl r1, r1, #0x8 - bl FUN_0205F3F8 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E138 -FUN_0203E138: ; 0x0203E138 - push {r4, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - ldr r0, [r4, #0xc] - bl SavArray_Flags_get - mov r1, #0x1 - bl FUN_0205F2D4 - ldr r0, [r4, #0xc] - bl FUN_020289A4 - mov r1, #0x1 - bl FUN_020289B0 - add r1, r4, #0x0 - add r1, #0x98 - str r0, [r1, #0x0] - add r0, r4, #0x0 - bl FUN_02048C58 - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203E168 -FUN_0203E168: ; 0x0203E168 - push {r3-r7, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r7, #0x0 - sub r0, #0x10 - cmp r0, #0xa - bhi _0203E23A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0203E1EA: ; jump table (using 16-bit offset) - .short _0203E200 - _0203E1EA - 2; case 0 - .short _0203E20C - _0203E1EA - 2; case 1 - .short _0203E218 - _0203E1EA - 2; case 2 - .short _0203E226 - _0203E1EA - 2; case 3 - .short _0203E23A - _0203E1EA - 2; case 4 - .short _0203E226 - _0203E1EA - 2; case 5 - .short _0203E226 - _0203E1EA - 2; case 6 - .short _0203E226 - _0203E1EA - 2; case 7 - .short _0203E226 - _0203E1EA - 2; case 8 - .short _0203E226 - _0203E1EA - 2; case 9 - .short _0203E226 - _0203E1EA - 2; case 10 -_0203E200: - mov r0, #0x4 - mov r6, #0x1 - bl FUN_02029120 - str r0, [r5, #0x0] - b _0203E23E -_0203E20C: - mov r0, #0x4 - mov r6, #0x1 - bl FUN_0202912C - str r0, [r5, #0x0] - b _0203E23E -_0203E218: - ldr r0, [sp, #0x0] - mov r1, #0x4 - mov r6, #0x1 - bl FUN_02029138 - str r0, [r5, #0x0] - b _0203E23E -_0203E226: - sub r7, #0x13 - lsl r0, r7, #0x18 - ldr r1, [sp, #0x0] - lsr r0, r0, #0x18 - mov r2, #0x4 - mov r6, #0x1 - bl FUN_0202914C - str r0, [r5, #0x0] - b _0203E23E -_0203E23A: - mov r0, #0x1 - pop {r3-r7, pc} -_0203E23E: - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r1, [r5, #0x0] - add r0, #0x98 - ldr r0, [r0, #0x0] - add r2, r6, #0x0 - bl FUN_02028AD4 - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203E254 -FUN_0203E254: ; 0x0203E254 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0203E258 -FUN_0203E258: ; 0x0203E258 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020271A4 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203E29C -FUN_0203E29C: ; 0x0203E29C - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020270D8 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203E2F8 -FUN_0203E2F8: ; 0x0203E2F8 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r7, #0x0 - bl FUN_02027114 - cmp r6, r0 - bhi _0203E352 - mov r0, #0x1 - b _0203E354 -_0203E352: - mov r0, #0x0 -_0203E354: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203E35C -FUN_0203E35C: ; 0x0203E35C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r4, #0x0 - bl FUN_02027264 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E38C -FUN_0203E38C: ; 0x0203E38C - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r6, #0x0 - bl FUN_02027100 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203E3D0 -FUN_0203E3D0: ; 0x0203E3D0 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - mov r0, #0x0 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl Pokedex_HasCompletedSinnohDex - cmp r0, #0x1 - bne _0203E404 - mov r0, #0x1 - strh r0, [r4, #0x0] -_0203E404: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203E408 -FUN_0203E408: ; 0x0203E408 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - mov r0, #0x0 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl Pokedex_HasCompletedNationalDex - cmp r0, #0x1 - bne _0203E43C - mov r0, #0x1 - strh r0, [r4, #0x0] -_0203E43C: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203E440 -FUN_0203E440: ; 0x0203E440 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x20 - mov r2, #0x0 - bl FUN_02038AF4 - str r0, [r4, #0x0] - ldr r1, _0203E46C ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203E46C: .word FUN_0203BB90 - - thumb_func_start FUN_0203E470 -FUN_0203E470: ; 0x0203E470 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x20 - mov r2, #0x1 - bl FUN_02038AF4 - str r0, [r4, #0x0] - ldr r1, _0203E49C ; =FUN_0203BB90 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 -_0203E49C: .word FUN_0203BB90 - - thumb_func_start FUN_0203E4A0 -FUN_0203E4A0: ; 0x0203E4A0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl MOD06_0224CBB0 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E4B0 -FUN_0203E4B0: ; 0x0203E4B0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl MOD06_0224CC24 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E4D8 -FUN_0203E4D8: ; 0x0203E4D8 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203E4F0 -FUN_0203E4F0: ; 0x0203E4F0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r4, #0x0 - bl FUN_0202A0E8 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E510 -FUN_0203E510: ; 0x0203E510 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r6, #0x0 - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r7, #0x0 - bl FUN_0202A150 - ldr r1, _0203E564 ; =0xFFFF0000 - and r1, r0 - lsr r1, r1, #0x10 - strh r1, [r4, #0x0] - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_0203E564: .word 0xFFFF0000 - - thumb_func_start FUN_0203E568 -FUN_0203E568: ; 0x0203E568 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - ldr r1, [r5, #0x8] - add r2, r1, #0x1 - str r2, [r5, #0x8] - lsl r2, r4, #0x10 - add r4, r2, #0x0 - orr r4, r0 - ldrb r0, [r1, #0x0] - cmp r0, #0x0 - beq _0203E59C - cmp r0, #0x1 - beq _0203E5B0 - cmp r0, #0x2 - beq _0203E5C4 - b _0203E5D6 -_0203E59C: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r6, #0x0 - add r2, r4, #0x0 - bl FUN_0202A11C - b _0203E5D6 -_0203E5B0: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r6, #0x0 - add r2, r4, #0x0 - bl FUN_0202A07C - b _0203E5D6 -_0203E5C4: - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r6, #0x0 - add r2, r4, #0x0 - bl FUN_0202A0A8 -_0203E5D6: - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203E5DC -FUN_0203E5DC: ; 0x0203E5DC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02022504 - ldr r1, [r5, #0x8] - str r0, [sp, #0x4] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r0, r7, #0x0 - bl FUN_02034E24 - add r6, r0, #0x0 - add r0, r7, #0x0 - bl FUN_02034E28 - add r7, r0, #0x0 - cmp r4, #0x0 - beq _0203E62C - cmp r4, #0x1 - beq _0203E642 - b _0203E66E -_0203E62C: - ldr r0, [sp, #0x0] - bl FUN_0205F1F4 - ldr r0, [sp, #0x4] - bl FUN_02060FD0 - mov r0, #0x1e - strh r0, [r6, #0x0] - mov r0, #0x0 - strh r0, [r7, #0x0] - b _0203E66E -_0203E642: - ldr r0, [sp, #0x0] - bl FUN_0205F204 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02061574 - mov r0, #0x4 - bl FUN_0202912C - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - mov r2, #0x1 - add r0, #0x98 - ldr r0, [r0, #0x0] - bl FUN_02028AD4 - mov r0, #0x0 - strh r0, [r6, #0x0] - strh r0, [r7, #0x0] -_0203E66E: - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0203E674 -FUN_0203E674: ; 0x0203E674 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0206015C - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203E684 -FUN_0203E684: ; 0x0203E684 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r4, #0x0 - bl MOD06_022456E8 - strh r0, [r6, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203E6B4 -FUN_0203E6B4: ; 0x0203E6B4 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02064E20 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203E6C4 -FUN_0203E6C4: ; 0x0203E6C4 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - mov r1, #0x0 - add r6, r0, #0x0 - mov r0, #0x41 - add r2, r1, #0x0 - bl FUN_0200433C - add r5, #0x80 - ldrh r1, [r4, #0x0] - ldr r0, [r5, #0x0] - add r2, r6, #0x0 - bl MOD06_0224525C - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203E6FC -FUN_0203E6FC: ; 0x0203E6FC - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - add r1, r6, #0x0 - bl MOD06_02245340 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203E72C -FUN_0203E72C: ; 0x0203E72C - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldr r0, [r0, #0x0] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055560 - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start FUN_0203E744 -FUN_0203E744: ; 0x0203E744 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F688 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E774 -FUN_0203E774: ; 0x0203E774 - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - str r0, [sp, #0x0] - add r0, r7, #0x0 - bl Pokedex_CountSinnohDexSeenMons - add r4, r0, #0x0 - bl LCRandom - add r1, r4, #0x0 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r6, r0, #0x10 - ldr r0, [sp, #0x0] - mov r1, #0x19 - strh r1, [r0, #0x0] - mov r4, #0x1 - mov r5, #0x0 -_0203E7B6: - add r0, r7, #0x0 - add r1, r4, #0x0 - bl Pokedex_CheckMonSeenFlag - cmp r0, #0x1 - bne _0203E7DC - add r0, r4, #0x0 - bl SpeciesToSinnohDexNo - cmp r0, #0x0 - beq _0203E7DC - cmp r5, r6 - bne _0203E7D6 - ldr r0, [sp, #0x0] - strh r4, [r0, #0x0] - b _0203E7E8 -_0203E7D6: - add r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_0203E7DC: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - ldr r0, _0203E7EC ; =0x000001ED - cmp r4, r0 - bls _0203E7B6 -_0203E7E8: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_0203E7EC: .word 0x000001ED - - thumb_func_start FUN_0203E7F0 -FUN_0203E7F0: ; 0x0203E7F0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r1, r4, #0x0 - bl FUN_0205F5A4 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E81C -FUN_0203E81C: ; 0x0203E81C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F594 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E848 -FUN_0203E848: ; 0x0203E848 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0202AA00 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E858 -FUN_0203E858: ; 0x0203E858 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldr r0, [r0, #0x0] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02060490 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E870 -FUN_0203E870: ; 0x0203E870 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r4, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r1, [r1, #0x0] - mov r0, #0xb - bl MOD06_0224884C - str r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203E894 -FUN_0203E894: ; 0x0203E894 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl MOD06_022488EC - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E8C4 -FUN_0203E8C4: ; 0x0203E8C4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl MOD06_022488F4 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E8F4 -FUN_0203E8F4: ; 0x0203E8F4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r5, #0x74] - ldr r1, [r4, #0x0] - mov r3, #0xb - bl FUN_02060790 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203E928 -FUN_0203E928: ; 0x0203E928 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x14 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD06_022488CC - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203E940 -FUN_0203E940: ; 0x0203E940 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - bl FUN_02024D4C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E954 -FUN_0203E954: ; 0x0203E954 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - bl FUN_02024CE0 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203E968 -FUN_0203E968: ; 0x0203E968 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - mov r0, #0x0 - strh r0, [r6, #0x0] - cmp r4, #0x1 - bne _0203E9AE - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - bl Pokedex_SetNatDexFlag - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - bl PlayerProfile_SetNatDexFlag - b _0203E9C8 -_0203E9AE: - cmp r4, #0x2 - bne _0203E9C4 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - bl Pokedex_GetNatDexFlag - strh r0, [r6, #0x0] - b _0203E9C8 -_0203E9C4: - bl ErrorHandling -_0203E9C8: - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203E9CC -FUN_0203E9CC: ; 0x0203E9CC - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r5, r0, #0x0 - mov r1, #0xd - mov r2, #0x0 - bl GetMonData - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xe - mov r2, #0x0 - bl GetMonData - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xf - mov r2, #0x0 - bl GetMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x10 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x11 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x12 - mov r2, #0x0 - bl GetMonData - add r1, r4, r6 - add r2, r7, r1 - ldr r1, [sp, #0x4] - add r2, r1, r2 - ldr r1, [sp, #0x8] - add r1, r1, r2 - add r1, r0, r1 - ldr r0, [sp, #0x0] - strh r1, [r0, #0x0] - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203EA68 -FUN_0203EA68: ; 0x0203EA68 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, sp, #0x0 - bl GF_RTC_CopyDate - ldr r0, [sp, #0xc] - strh r0, [r4, #0x0] - mov r0, #0x0 - add sp, #0x10 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203EA90 -FUN_0203EA90: ; 0x0203EA90 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldr r0, [r4, #0x74] - bl MOD06_022411F4 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203EAB0 -FUN_0203EAB0: ; 0x0203EAB0 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r7, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r7, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r5, #0x0 - bl MOD05_021F61E8 - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl MOD05_021F61DC - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203EB20 -FUN_0203EB20: ; 0x0203EB20 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r4, #0x80 - lsl r1, r1, #0x18 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - bl MOD06_0224C27C - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203EB48 -FUN_0203EB48: ; 0x0203EB48 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - add r5, #0x80 - lsl r1, r4, #0x18 - lsl r2, r2, #0x18 - ldr r0, [r5, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - bl MOD06_0224C520 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203EB88 -FUN_0203EB88: ; 0x0203EB88 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - ldr r1, [r5, #0x8] - add r2, r1, #0x1 - str r2, [r5, #0x8] - ldrb r6, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - str r7, [sp, #0x0] - add r5, #0x80 - str r0, [sp, #0x4] - ldr r0, [r5, #0x0] - ldr r3, [sp, #0x8] - add r1, r6, #0x0 - add r2, r4, #0x0 - bl FUN_020607D4 - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start ScrCmd_gameversion -ScrCmd_gameversion: ; 0x0203EBC8 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r1, #GAME_VERSION - strh r1, [r0, #0x0] - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start ScrCmd_givewallpaper -ScrCmd_givewallpaper: ; 0x0203EBE4 - push {r3-r7, lr} - sub sp, #0x10 - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - add r0, r6, #0x0 - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - str r0, [sp, #0x4] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r6, #0xc] - bl GetStoragePCPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0xc] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r2, [sp, #0x8] - ldr r3, [sp, #0xc] - add r1, r7, #0x0 - bl MOD06_0224D14C - add r5, r0, #0x0 - mov r0, #0x0 - mvn r0, r0 - cmp r5, r0 - beq _0203EC7E - cmp r5, #0x7 - ble _0203EC88 -_0203EC7E: - mov r0, #0xff - strh r0, [r4, #0x0] - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0203EC88: - add r0, r6, #0x0 - add r1, r5, #0x0 - bl PCStorage_IsBonusWallpaperUnlocked - cmp r0, #0x0 - beq _0203EC98 - mov r0, #0x0 - b _0203ECA2 -_0203EC98: - add r0, r6, #0x0 - add r1, r5, #0x0 - bl PCStorage_UnlockBonusWallpaper - add r0, r5, #0x1 -_0203ECA2: - strh r0, [r4, #0x0] - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203ECAC -FUN_0203ECAC: ; 0x0203ECAC - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r4, [r1, #0xc] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02026CB4 - bl FUN_020269CC - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203ECD8 -FUN_0203ECD8: ; 0x0203ECD8 - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - add r0, r3, #0x0 - bl MOD06_0224C678 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203ECF4 -FUN_0203ECF4: ; 0x0203ECF4 - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - add r0, r3, #0x0 - bl MOD06_0224C6E8 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203ED10 -FUN_0203ED10: ; 0x0203ED10 - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - add r0, r3, #0x0 - bl MOD06_0224C6F4 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203ED2C -FUN_0203ED2C: ; 0x0203ED2C - push {r4-r6, lr} - sub sp, #0x10 - ldr r0, [r0, #0xc] - add r5, r1, #0x0 - bl Sav2_Pokedex_get - add r6, r0, #0x0 - mov r0, #0x20 - bl AllocMonZeroed - add r4, r0, #0x0 - bl ZeroMonData - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - str r0, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r1, r5, #0x0 - mov r2, #0x32 - mov r3, #0x20 - bl CreateMon - add r0, r6, #0x0 - add r1, r4, #0x0 - bl Pokedex_SetMonSeenFlag - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start ScrCmd_pcfreespace -ScrCmd_pcfreespace: ; 0x0203ED70 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl GetStoragePCPointer - bl PCStorage_CountMonsAndEggsInAllBoxes - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - mov r0, #0x87 - lsl r0, r0, #0x2 - sub r0, r0, r1 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203EDA4 -FUN_0203EDA4: ; 0x0203EDA4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x16 - bl FUN_02039438 - add r4, r0, #0x0 - mov r0, #0x0 - add r5, #0x80 - str r0, [r4, #0x0] - ldr r0, [r5, #0x0] - bl MOD05_021E7184 - str r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203EDC8 -FUN_0203EDC8: ; 0x0203EDC8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x16 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E71E8 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203EDE0 -FUN_0203EDE0: ; 0x0203EDE0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r4, #0x80 - lsl r1, r1, #0x18 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - bl MOD06_0224E554 - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203EE08 -FUN_0203EE08: ; 0x0203EE08 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0206486C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203EE18 -FUN_0203EE18: ; 0x0203EE18 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_020649D4 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203EE28 -FUN_0203EE28: ; 0x0203EE28 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - bl FUN_020649B0 - cmp r0, #0x0 - beq _0203EE4E - mov r0, #0x1 - b _0203EE50 -_0203EE4E: - mov r0, #0x0 -_0203EE50: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203EE58 -FUN_0203EE58: ; 0x0203EE58 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD06_0224E764 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203EE68 -FUN_0203EE68: ; 0x0203EE68 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl MOD06_0224E7C4 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203EE78 -FUN_0203EE78: ; 0x0203EE78 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r1, r4, #0x0 - bl FUN_0202A170 - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203EE98 -FUN_0203EE98: ; 0x0203EE98 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - add r1, r6, #0x0 - bl PartyHasMon - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203EED8 -FUN_0203EED8: ; 0x0203EED8 - push {r3-r7, lr} - sub sp, #0x8 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, sp, #0x4 - strh r0, [r1, #0x0] - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - str r0, [sp, #0x0] - bl GetPartyCount - add r4, #0x80 - add r6, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r7, r0, #0x0 - mov r5, #0x0 - cmp r6, #0x0 - ble _0203EF4E -_0203EF18: - ldr r0, [sp, #0x0] - add r1, r5, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - ldr r1, _0203EF54 ; =0x00000182 - cmp r0, r1 - bne _0203EF48 - add r0, r4, #0x0 - mov r1, #0x70 - add r2, sp, #0x4 - bl SetMonData - add r0, r4, #0x0 - bl CalcMonLevelAndStats - add r0, r7, #0x0 - add r1, r4, #0x0 - bl Pokedex_SetMonCaughtFlag -_0203EF48: - add r5, r5, #0x1 - cmp r5, r6 - blt _0203EF18 -_0203EF4E: - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_0203EF54: .word 0x00000182 - - thumb_func_start FUN_0203EF58 -FUN_0203EF58: ; 0x0203EF58 - push {r3-r7, lr} - sub sp, #0x30 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - str r0, [sp, #0x0] - ldr r0, [r4, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_PlayerParty_get - str r0, [sp, #0xc] - bl GetPartyCount - add r2, sp, #0x18 - mov r4, #0x0 - ldr r3, _0203F008 ; =UNK_020F34FC - str r0, [sp, #0x8] - add r7, r2, #0x0 - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r2!, {r0-r1} - ldr r0, [sp, #0x8] - str r4, [sp, #0x4] - cmp r0, #0x0 - ble _0203EFFC - mov r5, #0x1 - str r7, [sp, #0x14] -_0203EFA2: - ldr r0, [sp, #0xc] - add r1, r4, #0x0 - bl GetPartyMonByIndex - add r6, r0, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x10] - add r0, r6, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - add r3, r0, #0x0 - mov r0, #0x67 - ldr r1, [sp, #0x10] - lsl r0, r0, #0x2 - cmp r1, r0 - bne _0203EFF2 - mov r2, #0x0 - add r1, r2, #0x0 - str r3, [r7, #0x0] - cmp r4, #0x0 - ble _0203EFE8 - ldr r6, [sp, #0x14] -_0203EFD8: - ldr r0, [r6, #0x0] - cmp r3, r0 - bne _0203EFE0 - add r2, r5, #0x0 -_0203EFE0: - add r1, r1, #0x1 - add r6, r6, #0x4 - cmp r1, r4 - blt _0203EFD8 -_0203EFE8: - cmp r2, #0x0 - bne _0203EFF2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0203EFF2: - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r7, r7, #0x4 - cmp r4, r0 - blt _0203EFA2 -_0203EFFC: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - strh r1, [r0, #0x0] - mov r0, #0x1 - add sp, #0x30 - pop {r3-r7, pc} - .balign 4 -_0203F008: .word UNK_020F34FC - - thumb_func_start FUN_0203F00C -FUN_0203F00C: ; 0x0203F00C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F1C4 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203F020 -FUN_0203F020: ; 0x0203F020 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F1D4 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203F034 -FUN_0203F034: ; 0x0203F034 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x10] - bl FUN_020389CC - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203F058 -FUN_0203F058: ; 0x0203F058 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl Script_GetHour - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203F07C -FUN_0203F07C: ; 0x0203F07C - push {r3-r7, lr} - sub sp, #0x10 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0xc] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r7, #0x0 - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r7, r0, #0x0 - bne _0203F0FA - bl ErrorHandling -_0203F0FA: - str r6, [sp, #0x0] - str r4, [sp, #0x4] - ldr r0, [r5, #0x74] - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x8] - add r1, r7, #0x0 - bl FUN_02054F50 - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_0203F110 -FUN_0203F110: ; 0x0203F110 - push {r3-r7, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r5, #0x0 - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r5, r0, #0x0 - bne _0203F164 - bl ErrorHandling -_0203F164: - ldr r0, [r4, #0x74] - add r1, r5, #0x0 - add r2, r7, #0x0 - add r3, r6, #0x0 - bl FUN_0205502C - mov r0, #0x1 - pop {r3-r7, pc} - - thumb_func_start FUN_0203F174 -FUN_0203F174: ; 0x0203F174 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02054E30 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F19C -FUN_0203F19C: ; 0x0203F19C - push {r4-r7, lr} - sub sp, #0x24 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - str r0, [sp, #0x0] - ldr r0, [r4, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - mov r6, #0x0 - add r7, r0, #0x0 - add r4, r6, #0x0 - add r5, sp, #0x4 -_0203F1CA: - add r1, r4, #0x0 - add r0, r7, #0x0 - add r1, #0x22 - mov r2, #0x1 - bl FUN_020270D8 - cmp r0, #0x1 - bne _0203F1E0 - mov r0, #0x1 - strh r0, [r5, #0x0] - add r6, r6, #0x1 -_0203F1E0: - add r4, r4, #0x1 - add r5, r5, #0x2 - cmp r4, #0x10 - blt _0203F1CA - cmp r6, #0x0 - bne _0203F1F8 - ldr r0, [sp, #0x0] - ldr r1, _0203F230 ; =0x0000FFFF - add sp, #0x24 - strh r1, [r0, #0x0] - mov r0, #0x0 - pop {r4-r7, pc} -_0203F1F8: - bl LCRandom - add r1, r6, #0x0 - bl _s32_div_f - mov r4, #0x0 - add r2, sp, #0x4 -_0203F206: - ldrh r0, [r2, #0x0] - cmp r0, #0x1 - bne _0203F212 - cmp r1, #0x0 - beq _0203F21A - sub r1, r1, #0x1 -_0203F212: - add r4, r4, #0x1 - add r2, r2, #0x2 - cmp r4, #0x10 - blt _0203F206 -_0203F21A: - cmp r4, #0x10 - blt _0203F222 - bl ErrorHandling -_0203F222: - ldr r0, [sp, #0x0] - add r4, #0x22 - strh r4, [r0, #0x0] - mov r0, #0x0 - add sp, #0x24 - pop {r4-r7, pc} - nop -_0203F230: .word 0x0000FFFF - - thumb_func_start FUN_0203F234 -FUN_0203F234: ; 0x0203F234 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - ldr r1, _0203F250 ; =gMain + 0x60 - ldrb r1, [r1, #0x6] - strh r1, [r0, #0x0] - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203F250: .word gMain + 0x60 - - thumb_func_start FUN_0203F254 -FUN_0203F254: ; 0x0203F254 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - mov r1, #0x0 - bl FUN_0205F698 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203F26C -FUN_0203F26C: ; 0x0203F26C - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r5, #0x80 - ldr r0, [r5, #0x0] - ldrb r4, [r1, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - cmp r4, #0x0 - beq _0203F2A0 - add r1, r6, #0x0 - bl FUN_0205F4E4 - b _0203F2A6 -_0203F2A0: - add r1, r6, #0x0 - bl FUN_0205F50C -_0203F2A6: - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203F2AC -FUN_0203F2AC: ; 0x0203F2AC - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferContestBackgroundName - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203F2E4 -FUN_0203F2E4: ; 0x0203F2E4 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0205F6C8 - cmp r0, #0xa - blo _0203F314 - mov r0, #0x1 - b _0203F316 -_0203F314: - mov r0, #0x0 -_0203F316: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203F31C -FUN_0203F31C: ; 0x0203F31C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F648 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F348 -FUN_0203F348: ; 0x0203F348 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02027E24 - bl FUN_0202708C - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02027210 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203F38C -FUN_0203F38C: ; 0x0203F38C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02046030 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203F39C -FUN_0203F39C: ; 0x0203F39C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0205F668 - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203F3AC -FUN_0203F3AC: ; 0x0203F3AC - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02013B5C - bl FUN_02013B74 - cmp r0, #0x20 - bne _0203F3FE - ldr r0, _0203F414 ; =0x0000FFFF - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} -_0203F3FE: - strh r0, [r4, #0x0] - bl FUN_02013BE4 - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r7, #0x0 - bl FUN_0200B518 - mov r0, #0x0 - pop {r3-r7, pc} - nop -_0203F414: .word 0x0000FFFF - - thumb_func_start FUN_0203F418 -FUN_0203F418: ; 0x0203F418 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02013B5C - bl FUN_02013BC8 - cmp r0, #0x1 - bne _0203F444 - mov r0, #0x1 - b _0203F446 -_0203F444: - mov r0, #0x0 -_0203F446: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203F44C -FUN_0203F44C: ; 0x0203F44C - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0205F710 - cmp r0, #0x5 - blo _0203F47C - mov r0, #0x1 - b _0203F47E -_0203F47C: - mov r0, #0x0 -_0203F47E: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203F484 -FUN_0203F484: ; 0x0203F484 - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - ldr r5, [r5, #0x0] - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_SysInfo_get - add r7, r0, #0x0 - bl Sav2_SysInfo_GetBirthMonth - add r6, r0, #0x0 - add r0, r5, #0x0 - bl Script_GetMonth - cmp r6, r0 - bne _0203F4CE - add r0, r7, #0x0 - bl Sav2_SysInfo_GetBirthDay - add r6, r0, #0x0 - add r0, r5, #0x0 - bl Script_GetDay - cmp r6, r0 - bne _0203F4CE - mov r0, #0x1 - strh r0, [r4, #0x0] - b _0203F4D2 -_0203F4CE: - mov r0, #0x0 - strh r0, [r4, #0x0] -_0203F4D2: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203F4D8 -FUN_0203F4D8: ; 0x0203F4D8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl Pokedex_CountSeenUnown - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F508 -FUN_0203F508: ; 0x0203F508 - push {r3-r7, lr} - add r6, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r6, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r6, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r2, [r1, #0x1c] - ldr r1, [r2, #0x8] - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 - ldr r1, [r2, #0xc] - lsl r1, r1, #0x10 - lsr r4, r1, #0x10 - cmp r7, #0x3 - blo _0203F54C - ldr r7, _0203F5C8 ; =0x0000010E - b _0203F582 -_0203F54C: - cmp r0, #0x1e - blo _0203F556 - mov r7, #0x43 - lsl r7, r7, #0x2 - b _0203F582 -_0203F556: - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - cmp r1, #0x19 - bge _0203F568 - ldr r7, _0203F5CC ; =0x0000010D - b _0203F582 -_0203F568: - bl LCRandom - mov r1, #0x6 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r1, r0, #0x10 - mov r0, #0x6 - mul r0, r7 - add r0, r1, r0 - lsl r1, r0, #0x1 - ldr r0, _0203F5D0 ; =UNK_020F3538 - ldrh r7, [r0, r1] -_0203F582: - cmp r5, #0xb - bne _0203F59A - cmp r4, #0x1 - bne _0203F58E - mov r4, #0x0 - b _0203F5A4 -_0203F58E: - cmp r4, #0x14 - bne _0203F596 - mov r4, #0x2 - b _0203F5A4 -_0203F596: - mov r4, #0x5 - b _0203F5A4 -_0203F59A: - cmp r5, #0x14 - bne _0203F5A2 - mov r4, #0x1 - b _0203F5A4 -_0203F5A2: - mov r4, #0x3 -_0203F5A4: - mov r5, #0x0 -_0203F5A6: - cmp r5, r4 - beq _0203F5B8 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r5, #0x0 - add r2, r7, #0x0 - bl FUN_02034C24 -_0203F5B8: - add r0, r5, #0x1 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - cmp r5, #0x4 - blo _0203F5A6 - mov r0, #0x0 - pop {r3-r7, pc} - nop -_0203F5C8: .word 0x0000010E -_0203F5CC: .word 0x0000010D -_0203F5D0: .word UNK_020F3538 - - thumb_func_start FUN_0203F5D4 -FUN_0203F5D4: ; 0x0203F5D4 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F720 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F604 -FUN_0203F604: ; 0x0203F604 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F740 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F634 -FUN_0203F634: ; 0x0203F634 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F760 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F664 -FUN_0203F664: ; 0x0203F664 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r2, #0x0 - add r3, sp, #0x0 - add r0, #0x8 -_0203F684: - ldr r6, [r0, #0x0] - ldr r1, [r5, #0x8] - add r6, r6, #0x1 - str r6, [r0, #0x0] - ldrb r1, [r1, #0x0] - add r2, r2, #0x1 - strb r1, [r3, #0x0] - add r3, r3, #0x1 - cmp r2, #0x5 - blt _0203F684 - ldr r1, [r0, #0x0] - ldr r2, [r5, #0x8] - add r1, r1, #0x1 - str r1, [r0, #0x0] - ldrb r6, [r2, #0x0] - mov r0, #0x4 - bl FUN_02027E5C - add r1, sp, #0x0 - add r2, r6, #0x0 - mov r3, #0x0 - add r7, r0, #0x0 - bl FUN_02027F04 - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02028048 - add r1, r7, #0x0 - bl FUN_02028094 - add r5, r0, #0x0 - add r0, r7, #0x0 - bl FreeToHeap - ldr r0, _0203F6E0 ; =0x0000FFFF - cmp r5, r0 - bne _0203F6D8 - strh r0, [r4, #0x0] - b _0203F6DA -_0203F6D8: - strh r6, [r4, #0x0] -_0203F6DA: - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_0203F6E0: .word 0x0000FFFF - - thumb_func_start FUN_0203F6E4 -FUN_0203F6E4: ; 0x0203F6E4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02028048 - bl FUN_02028074 - ldr r1, _0203F71C ; =0x0000FFFF - cmp r0, r1 - bne _0203F712 - mov r0, #0x0 - b _0203F714 -_0203F712: - mov r0, #0x1 -_0203F714: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203F71C: .word 0x0000FFFF - - thumb_func_start FUN_0203F720 -FUN_0203F720: ; 0x0203F720 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r5, r0, #0x0 - cmp r4, #0x3 - bls _0203F752 - bl ErrorHandling -_0203F752: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0205F4A0 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203F760 -FUN_0203F760: ; 0x0203F760 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x20 - ldr r0, [r0, #0xc] - add r2, sp, #0x0 - bl LoadHallOfFame - ldr r1, [sp, #0x0] - add r4, r0, #0x0 - cmp r1, #0x0 - bne _0203F798 - mov r1, #0x0 - strh r1, [r5, #0x0] - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0203F798: - cmp r1, #0x1 - bne _0203F7AE - mov r1, #0x0 - bl Sav2_HOF_TranslateRecordIdx - strh r0, [r5, #0x0] - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0203F7AE: - cmp r1, #0x2 - bne _0203F7BE - mov r1, #0x0 - strh r1, [r5, #0x0] - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0203F7BE: - mov r0, #0x0 - strh r0, [r5, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F7C8 -FUN_0203F7C8: ; 0x0203F7C8 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r1, r5, #0x0 - add r1, #0x80 - add r4, r0, #0x0 - ldr r1, [r1, #0x0] - mov r0, #0x20 - add r2, r6, #0x0 - bl FUN_02037A48 - str r0, [r4, #0x0] - ldr r1, _0203F808 ; =FUN_0203BC04 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203F808: .word FUN_0203BC04 - - thumb_func_start FUN_0203F80C -FUN_0203F80C: ; 0x0203F80C - push {r4-r6, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x13 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x0 - bne _0203F84C - bl ErrorHandling -_0203F84C: - ldr r0, [r4, #0x0] - bl FUN_02037A40 - strh r0, [r6, #0x0] - ldrh r0, [r6, #0x0] - cmp r0, #0x7 - bne _0203F85E - mov r0, #0xff - strh r0, [r6, #0x0] -_0203F85E: - ldr r0, [r4, #0x0] - bl FUN_02037A70 - strh r0, [r5, #0x0] - ldrh r0, [r5, #0x0] - cmp r0, #0x1 - bne _0203F870 - mov r0, #0x1 - b _0203F872 -_0203F870: - mov r0, #0x0 -_0203F872: - strh r0, [r5, #0x0] - ldr r0, [r4, #0x0] - bl FreeToHeap - mov r0, #0x0 - str r0, [r4, #0x0] - pop {r4-r6, pc} - - thumb_func_start FUN_0203F880 -FUN_0203F880: ; 0x0203F880 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - cmp r4, #0x64 - bls _0203F8A2 - mov r4, #0x64 -_0203F8A2: - bl LCRandom - mov r1, #0x65 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, r4 - bgt _0203F8B8 - mov r0, #0x1 - b _0203F8BA -_0203F8B8: - mov r0, #0x0 -_0203F8BA: - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203F8C0 -FUN_0203F8C0: ; 0x0203F8C0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - cmp r4, #0x0 - beq _0203F8FC - cmp r4, #0x1 - beq _0203F906 - cmp r4, #0x2 - beq _0203F910 - b _0203F91A -_0203F8FC: - mov r2, #0x0 - mov r3, #0x20 - bl MOD06_0224F12C - b _0203F91E -_0203F906: - mov r2, #0x1 - mov r3, #0x20 - bl MOD06_0224F12C - b _0203F91E -_0203F910: - mov r2, #0x2 - mov r3, #0x20 - bl MOD06_0224F12C - b _0203F91E -_0203F91A: - bl ErrorHandling -_0203F91E: - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F924 -FUN_0203F924: ; 0x0203F924 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0205F6A8 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F954 -FUN_0203F954: ; 0x0203F954 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - cmp r0, #0x0 - bne _0203F978 - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x10] - bl MOD06_02239944 - b _0203F982 -_0203F978: - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r0, [r0, #0x10] - bl MOD06_02239AAC -_0203F982: - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203F988 -FUN_0203F988: ; 0x0203F988 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_0203384C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F9B0 -FUN_0203F9B0: ; 0x0203F9B0 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_020286EC - bl FUN_02028448 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203F9DC -FUN_0203F9DC: ; 0x0203F9DC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02026CC4 - ldr r1, _0203FA10 ; =0x0000FF79 - add r1, r4, r1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - cmp r1, #0x1 - bhi _0203FA0C - bl FUN_02025C30 -_0203FA0C: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_0203FA10: .word 0x0000FF79 - - thumb_func_start FUN_0203FA14 -FUN_0203FA14: ; 0x0203FA14 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - mov r1, #0x0 - strh r1, [r0, #0x0] - ldr r1, _0203FA54 ; =0x0000012A - cmp r4, r1 - blo _0203FA4E - add r1, #0xf - cmp r4, r1 - bhi _0203FA4E - mov r1, #0x1 - strh r1, [r0, #0x0] -_0203FA4E: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203FA54: .word 0x0000012A - - thumb_func_start FUN_0203FA58 -FUN_0203FA58: ; 0x0203FA58 - push {r3-r7, lr} - sub sp, #0x10 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r7, r0, #0x0 - mov r0, #0x20 - bl ScrStrBufs_new - add r4, r0, #0x0 - ldr r2, _0203FB48 ; =0x00000147 - mov r0, #0x0 - mov r1, #0x1a - mov r3, #0x20 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - ldr r2, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_0200B518 - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_0200B518 - ldr r2, [sp, #0xc] - add r0, r4, #0x0 - mov r1, #0x2 - bl FUN_0200B518 - add r0, r4, #0x0 - mov r1, #0x3 - add r2, r7, #0x0 - bl FUN_0200B518 - add r0, r4, #0x0 - add r1, r5, #0x0 - mov r2, #0x1 - mov r3, #0x20 - bl ReadMsgData_ExpandPlaceholders - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl NewString_ReadMsgData - str r0, [sp, #0x0] - ldr r1, [sp, #0x0] - add r0, r7, #0x0 - bl StringCompare - cmp r0, #0x0 - bne _0203FB24 - mov r0, #0x1 - b _0203FB26 -_0203FB24: - mov r0, #0x0 -_0203FB26: - strh r0, [r6, #0x0] - add r0, r7, #0x0 - bl String_dtor - ldr r0, [sp, #0x0] - bl String_dtor - add r0, r5, #0x0 - bl DestroyMsgData - add r0, r4, #0x0 - bl ScrStrBufs_delete - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - nop -_0203FB48: .word 0x00000147 - - thumb_func_start FUN_0203FB4C -FUN_0203FB4C: ; 0x0203FB4C - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_SysInfo_get - mov r1, #0x1 - bl FUN_02023828 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203FB64 -FUN_0203FB64: ; 0x0203FB64 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_0205296C - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203FB94 -FUN_0203FB94: ; 0x0203FB94 - push {r3, lr} - bl FUN_02033E74 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203FBA0 -FUN_0203FBA0: ; 0x0203FBA0 - push {r3, lr} - bl FUN_02033ED0 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203FBAC -FUN_0203FBAC: ; 0x0203FBAC - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02034E48 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203FBBC -FUN_0203FBBC: ; 0x0203FBBC - push {r3-r7, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r7, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02034E30 - bl FUN_02034DCC - str r4, [r0, #0x0] - str r6, [r0, #0x8] - mov r1, #0x0 - str r7, [r0, #0xc] - mvn r1, r1 - str r1, [r0, #0x4] - mov r1, #0x1 - str r1, [r0, #0x10] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203FC1C -FUN_0203FC1C: ; 0x0203FC1C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - ldr r2, [r5, #0x8] - add r1, r0, #0x0 - add r0, r2, #0x1 - str r0, [r5, #0x8] - add r5, #0x80 - ldr r0, [r5, #0x0] - ldrb r4, [r2, #0x0] - ldr r0, [r0, #0x34] - bl FUN_02058060 - add r5, r0, #0x0 - bne _0203FC4C - bl ErrorHandling -_0203FC4C: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_020588B8 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0203FC58 -FUN_0203FC58: ; 0x0203FC58 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02065078 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203FC80 -FUN_0203FC80: ; 0x0203FC80 - push {r3-r5, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x28 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0202280C - cmp r0, #0x0 - bne _0203FCAA - add r0, r5, #0x0 - mov r1, #0x4 - mov r2, #0x3 - bl MOD05_021E8588 - str r0, [r4, #0x0] - bl MOD05_021E84F4 -_0203FCAA: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203FCB0 -FUN_0203FCB0: ; 0x0203FCB0 - push {r3-r5, lr} - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x28 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0202280C - cmp r0, #0x0 - bne _0203FCD6 - ldr r0, [r4, #0x0] - bl MOD05_021E856C - ldr r0, [r4, #0x0] - bl MOD05_021E85E4 -_0203FCD6: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203FCDC -FUN_0203FCDC: ; 0x0203FCDC - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - add r0, #0x80 - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl FUN_0206367C - mov r0, #0x0 - pop {r3, pc} - .balign 4 diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s new file mode 100644 index 00000000..493fea57 --- /dev/null +++ b/arm9/asm/scrcmd_asm.s @@ -0,0 +1,12077 @@ + .include "asm/macros.inc" + .include "global.inc" + + .extern UNK_020F34E0 + .extern sScriptConditionTable + .extern UNK_020F34FC + .extern UNK_020F3538 + .extern gMain + + .section .bss + + .global UNK_021C5A0C +UNK_021C5A0C: ; 0x021C5A0C + .space 0x4 + + .text + + thumb_func_start FUN_02039C40 +FUN_02039C40: ; 0x02039C40 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x7 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl CreateScriptContext + str r0, [r6, #0x0] + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02039C78 +FUN_02039C78: ; 0x02039C78 + push {r3-r7, lr} + str r0, [sp, #0x0] + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x5 + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x7 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + mov r0, #0x1 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + bl CreateScriptContext + str r0, [r7, #0x0] + ldrb r0, [r4, #0x0] + ldr r1, _02039CC4 ; =FUN_02039CC8 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + ldr r0, [sp, #0x0] + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_02039CC4: .word FUN_02039CC8 + + thumb_func_start FUN_02039CC8 +FUN_02039CC8: ; 0x02039CC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x5 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02039CDE + mov r0, #0x1 + pop {r3, pc} +_02039CDE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02039CE4 +FUN_02039CE4: ; 0x02039CE4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x5 + bl FUN_02039438 + mov r1, #0x0 + strb r1, [r0, #0x0] + add r0, r1, #0x0 + pop {r3, pc} + + thumb_func_start ScrCmd_goto +ScrCmd_goto: ; 0x02039CF8 + ; relative jump + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r4, #0x0 + add r1, r1, r2 + bl ScriptJump + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039D10 +FUN_02039D10: ; 0x02039D10 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadWord + add r7, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + cmp r4, r0 + bne _02039D44 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r7 + bl ScriptJump +_02039D44: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02039D48 +FUN_02039D48: ; 0x02039D48 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x74] + bl FUN_02046534 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r5, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + cmp r6, r4 + bne _02039D72 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r2 + bl ScriptJump +_02039D72: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02039D78 +FUN_02039D78: ; 0x02039D78 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x9 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r5, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, r4 + bne _02039DA8 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r2 + bl ScriptJump +_02039DA8: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start ScrCmd_call +ScrCmd_call: ; 0x02039DAC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r4, #0x0 + add r1, r1, r2 + bl ScriptCall + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start ScrCmd_return +ScrCmd_return: ; 0x02039DC4 + push {r3, lr} + bl ScriptReturn + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start ScrCmd_goto_if +ScrCmd_goto_if: ; 0x02039DD0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadWord + add r1, r0, #0x0 + lsl r0, r4, #0x1 + add r3, r4, r0 + ldr r0, _02039E00 ; =sScriptConditionTable + ldrb r2, [r5, #0x2] + add r0, r0, r3 + ldrb r0, [r2, r0] + cmp r0, #0x1 + bne _02039DFC + ldr r2, [r5, #0x8] + add r0, r5, #0x0 + add r1, r2, r1 + bl ScriptJump +_02039DFC: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02039E00: .word sScriptConditionTable + + thumb_func_start ScrCmd_call_if +ScrCmd_call_if: ; 0x02039E04 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadWord + add r1, r0, #0x0 + lsl r0, r4, #0x1 + add r3, r4, r0 + ldr r0, _02039E34 ; =sScriptConditionTable + ldrb r2, [r5, #0x2] + add r0, r0, r3 + ldrb r0, [r2, r0] + cmp r0, #0x1 + bne _02039E30 + ldr r2, [r5, #0x8] + add r0, r5, #0x0 + add r1, r2, r1 + bl ScriptCall +_02039E30: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02039E34: .word sScriptConditionTable + + thumb_func_start ScrCmd_setflag +ScrCmd_setflag: ; 0x02039E38 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FlagSet + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start ScrCmd_clearflag +ScrCmd_clearflag: ; 0x02039E50 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FlagClear + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start ScrCmd_checkflag +ScrCmd_checkflag: ; 0x02039E68 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FlagCheck + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039E84 +FUN_02039E84: ; 0x02039E84 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldrh r1, [r6, #0x0] + add r0, r5, #0x0 + bl FlagCheck + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02039EC0 +FUN_02039EC0: ; 0x02039EC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r1, r0, #0x0 + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FlagSet + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start ScrCmd_settrainerflag +ScrCmd_settrainerflag: ; 0x02039EE8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r5, #0x0 + bl TrainerFlagSet + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_cleartrainerflag +ScrCmd_cleartrainerflag: ; 0x02039F0C + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r5, #0x0 + bl TrainerFlagClear + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_checktrainerflag +ScrCmd_checktrainerflag: ; 0x02039F30 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r4, #0x0 + bl TrainerFlagCheck + strb r0, [r5, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_addvar +ScrCmd_addvar: ; 0x02039F58 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + ldrh r1, [r4, #0x0] + add r0, r1, r0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_subvar +ScrCmd_subvar: ; 0x02039F88 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + ldrh r1, [r4, #0x0] + sub r0, r1, r0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_setvar +ScrCmd_setvar: ; 0x02039FB8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start ScrCmd_copyvar +ScrCmd_copyvar: ; 0x02039FDC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + ldrh r0, [r0, #0x0] + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start ScrCmd_setorcopyvar +ScrCmd_setorcopyvar: ; 0x0203A00C + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_message +ScrCmd_message: ; 0x0203A038 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [r0, #0x78] + bl MOD05_ShowMessageInField + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start ScrCmd_message_from +ScrCmd_message_from: ; 0x0203A04C + ; message_from bank, id + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + add r2, r5, #0x0 + mov r3, #0x20 + bl NewMsgDataFromNarc + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + bl MOD05_ShowMessageInField + add r0, r5, #0x0 + bl DestroyMsgData + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203A098 +FUN_0203A098: ; 0x0203A098 + push {r3-r6, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + add r2, r5, #0x0 + mov r3, #0x20 + bl NewMsgDataFromNarc + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x1 + bl MOD05_021E2BD0 + add r0, r5, #0x0 + bl DestroyMsgData + ldr r1, _0203A0F8 ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + nop +_0203A0F8: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A0FC +FUN_0203A0FC: ; 0x0203A0FC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl MOD05_021E2C58 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A13C +FUN_0203A13C: ; 0x0203A13C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl MOD05_021E2C58 + ldr r1, _0203A184 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203A184: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A188 +FUN_0203A188: ; 0x0203A188 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldrb r3, [r2, #0x0] + add r1, #0xa8 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + bne _0203A1AA + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_0203A1AA: + lsl r1, r3, #0x4 + add r1, r3, r1 + add r2, #0x90 + lsl r1, r1, #0x4 + add r4, r2, r1 + ldrh r1, [r2, r1] + ldr r2, _0203A204 ; =0x0000FFFF + cmp r1, r2 + bne _0203A1E2 + ldr r2, _0203A208 ; =0x0000022B + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x20 + bl NewMsgDataFromNarc + add r6, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x1 + bl MOD05_021E2BD0 + add r0, r6, #0x0 + bl DestroyMsgData + b _0203A1F4 +_0203A1E2: + mov r2, #0x6 + ldrsh r2, [r4, r2] + str r2, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + ldrh r2, [r4, #0x2] + ldrh r3, [r4, #0x4] + bl MOD05_021E2C58 +_0203A1F4: + ldr r1, _0203A20C ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r4-r6, pc} + nop +_0203A204: .word 0x0000FFFF +_0203A208: .word 0x0000022B +_0203A20C: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A210 +FUN_0203A210: ; 0x0203A210 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r2, [r5, #0x8] + ldr r6, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r1, [r5, #0x8] + add r2, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r3, [r1, #0x0] + mov r1, #0x0 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r0, [r6, #0xc] + add r1, r7, #0x0 + bl MOD06_02244210 + add r6, r0, #0x0 + add r2, sp, #0x4 + ldrb r2, [r2, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, r2 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0x1 + bl MOD05_021E2CBC + add r0, r6, #0x0 + bl ScrStrBufs_delete + ldr r1, _0203A284 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203A284: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A288 +FUN_0203A288: ; 0x0203A288 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, sp, #0x4 + add r1, r5, #0x0 + bl MOD05_021E2BB8 + mov r1, #0x3 + add r0, sp, #0x4 + strb r1, [r0, #0x2] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl MOD05_021E2BD0 + ldr r1, _0203A2C0 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0203A2C0: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A2C4 +FUN_0203A2C4: ; 0x0203A2C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + mov r3, #0x1 + add r1, r2, #0x1 + str r1, [r4, #0x8] + mov r1, #0x0 + str r1, [sp, #0x0] + ldrb r2, [r2, #0x0] + ldr r1, [r4, #0x78] + bl MOD05_021E2BD0 + ldr r1, _0203A2EC ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203A2EC: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A2F0 +FUN_0203A2F0: ; 0x0203A2F0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + bl FUN_020546C8 + pop {r3, pc} + + thumb_func_start FUN_0203A304 +FUN_0203A304: ; 0x0203A304 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + lsr r2, r2, #0x18 + mov r3, #0x1 + bl MOD05_021E2BD0 + ldr r1, _0203A33C ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203A33C: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A340 +FUN_0203A340: ; 0x0203A340 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, sp, #0x4 + add r1, r5, #0x0 + bl MOD05_021E2BB8 + lsl r2, r4, #0x18 + mov r3, #0x1 + add r0, sp, #0x4 + strb r3, [r0, #0x1] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl MOD05_021E2BD0 + ldr r1, _0203A384 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0203A384: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A388 +FUN_0203A388: ; 0x0203A388 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + lsr r2, r2, #0x18 + bl MOD05_021E2BD0 + ldr r1, _0203A3C0 ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + nop +_0203A3C0: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A3C4 +FUN_0203A3C4: ; 0x0203A3C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02058488 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + mov r3, #0x1 + bl MOD05_021E2BD0 + ldr r1, _0203A3FC ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + nop +_0203A3FC: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A400 +FUN_0203A400: ; 0x0203A400 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + bl FUN_02030F40 + cmp r0, #0x0 + bne _0203A428 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x1 + bl MOD05_021E2BD0 + b _0203A448 +_0203A428: + add r0, sp, #0x4 + add r1, r5, #0x0 + bl MOD05_021E2BB8 + mov r1, #0x1 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl MOD05_021E2BD0 +_0203A448: + ldr r1, _0203A458 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + nop +_0203A458: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A45C +FUN_0203A45C: ; 0x0203A45C + push {r3, lr} + ldr r1, _0203A468 ; =FUN_0203A46C + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A468: .word FUN_0203A46C + + thumb_func_start FUN_0203A46C +FUN_0203A46C: ; 0x0203A46C + ldr r0, _0203A480 ; =gMain + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0203A47A + mov r0, #0x1 + bx lr +_0203A47A: + mov r0, #0x0 + bx lr + nop +_0203A480: .word gMain + + thumb_func_start FUN_0203A484 +FUN_0203A484: ; 0x0203A484 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [r4, #0x64] + ldr r1, _0203A4A8 ; =FUN_0203A4AC + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203A4A8: .word FUN_0203A4AC + + thumb_func_start FUN_0203A4AC +FUN_0203A4AC: ; 0x0203A4AC + ldr r1, _0203A4CC ; =gMain + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + beq _0203A4BA + mov r0, #0x1 + bx lr +_0203A4BA: + ldr r1, [r0, #0x64] + sub r1, r1, #0x1 + str r1, [r0, #0x64] + bne _0203A4C6 + mov r0, #0x1 + bx lr +_0203A4C6: + mov r0, #0x0 + bx lr + nop +_0203A4CC: .word gMain + + thumb_func_start FUN_0203A4D0 +FUN_0203A4D0: ; 0x0203A4D0 + push {r3, lr} + ldr r1, _0203A4DC ; =FUN_0203A4E0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A4DC: .word FUN_0203A4E0 + + thumb_func_start FUN_0203A4E0 +FUN_0203A4E0: ; 0x0203A4E0 + push {r4, lr} + ldr r1, _0203A55C ; =gMain + ldr r2, [r1, #0x48] + mov r1, #0x3 + add r3, r2, #0x0 + tst r3, r1 + beq _0203A4F2 + mov r0, #0x1 + pop {r4, pc} +_0203A4F2: + mov r3, #0x40 + tst r3, r2 + beq _0203A506 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A506: + mov r3, #0x80 + tst r3, r2 + beq _0203A51A + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A51A: + mov r3, #0x20 + tst r3, r2 + beq _0203A52E + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A52E: + mov r3, #0x10 + add r4, r2, #0x0 + tst r4, r3 + beq _0203A542 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A542: + lsl r1, r3, #0x6 + tst r1, r2 + beq _0203A552 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02039460 + b _0203A556 +_0203A552: + mov r0, #0x0 + pop {r4, pc} +_0203A556: + mov r0, #0x1 + pop {r4, pc} + nop +_0203A55C: .word gMain + + thumb_func_start FUN_0203A560 +FUN_0203A560: ; 0x0203A560 + push {r3, lr} + ldr r1, _0203A56C ; =FUN_0203A570 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A56C: .word FUN_0203A570 + + thumb_func_start FUN_0203A570 +FUN_0203A570: ; 0x0203A570 + ldr r0, _0203A58C ; =gMain + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0203A57E + mov r0, #0x1 + bx lr +_0203A57E: + mov r0, #0xf0 + tst r0, r1 + beq _0203A588 + mov r0, #0x1 + bx lr +_0203A588: + mov r0, #0x0 + bx lr + .balign 4 +_0203A58C: .word gMain + + thumb_func_start FUN_0203A590 +FUN_0203A590: ; 0x0203A590 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x6 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r1, r0, #0x0 + ldr r0, [r4, #0x8] + mov r2, #0x3 + bl FUN_020545B8 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054608 + mov r0, #0x1 + strb r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203A5D8 +FUN_0203A5D8: ; 0x0203A5D8 + push {r3-r5, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02019178 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A608 +FUN_0203A608: ; 0x0203A608 + push {r3-r5, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02019178 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A630 +FUN_0203A630: ; 0x0203A630 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x31 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_02039438 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_02039438 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_02039438 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r6, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r7, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x0] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x4] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x8] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r0, #0x0] + ldr r1, _0203A6C4 ; =FUN_0203A6C8 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0203A6C4: .word FUN_0203A6C8 + + thumb_func_start FUN_0203A6C8 +FUN_0203A6C8: ; 0x0203A6C8 + push {r4-r7, lr} + sub sp, #0xc + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x31 + add r0, r4, #0x0 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_02039438 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_02039438 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_02039438 + add r5, r0, #0x0 + ldrh r0, [r6, #0x0] + cmp r0, #0x0 + bne _0203A71E + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + bne _0203A71E + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0203A71E: + ldrh r3, [r7, #0x0] + cmp r3, #0x0 + beq _0203A740 + ldr r0, [sp, #0x8] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x8] + bne _0203A738 + mov r1, #0x3 + mov r2, #0x1 + bl FUN_020179E0 + b _0203A740 +_0203A738: + mov r1, #0x3 + mov r2, #0x2 + bl FUN_020179E0 +_0203A740: + ldr r0, [sp, #0x4] + ldrh r3, [r0, #0x0] + cmp r3, #0x0 + beq _0203A764 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x8] + bne _0203A75C + mov r1, #0x3 + mov r2, #0x4 + bl FUN_020179E0 + b _0203A764 +_0203A75C: + mov r1, #0x3 + mov r2, #0x5 + bl FUN_020179E0 +_0203A764: + ldrh r0, [r6, #0x0] + cmp r0, #0x0 + beq _0203A76E + sub r0, r0, #0x1 + strh r0, [r6, #0x0] +_0203A76E: + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _0203A778 + sub r0, r0, #0x1 + strh r0, [r5, #0x0] +_0203A778: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A780 +FUN_0203A780: ; 0x0203A780 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x11 + add r0, r4, #0x0 + bl FUN_02039438 + str r0, [sp, #0x18] + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x14] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + str r0, [sp, #0xc] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + cmp r6, #0x0 + bne _0203A7E0 + add r0, r4, #0x0 + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02058510 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 +_0203A7E0: + ldr r0, [r4, #0x60] + ldr r1, [sp, #0x10] + add r2, r6, #0x0 + bl MOD05_021E8128 + ldr r0, [r4, #0x60] + mov r1, #0x1 + bl MOD05_021E8130 + add r0, r4, #0x0 + bl MOD05_021E8158 + ldr r2, [sp, #0x18] + ldr r0, [r5, #0x78] + ldr r1, [sp, #0xc] + ldr r2, [r2, #0x0] + bl ReadMsgDataIntoString + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r0, [r0, #0x0] + ldr r1, [r7, #0x0] + ldr r2, [r2, #0x0] + bl StringExpandPlaceholders + ldr r0, [r4, #0x60] + bl MOD05_021E8140 + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + ldr r2, [r7, #0x0] + mov r1, #0x1 + bl AddTextPrinterParameterized + mov r0, #0x1 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A830 +FUN_0203A830: ; 0x0203A830 + push {r3-r5, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r4, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r2, r0, #0x0 + ldr r0, [r4, #0x60] + add r1, r5, #0x0 + bl MOD05_021E8128 + ldr r0, [r4, #0x60] + mov r1, #0x1 + bl MOD05_021E8130 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A85C +FUN_0203A85C: ; 0x0203A85C + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r3, #0x60] + bl MOD05_021E8130 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203A878 +FUN_0203A878: ; 0x0203A878 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x60] + bl MOD05_021E8148 + cmp r0, #0x1 + bne _0203A88E + mov r0, #0x0 + pop {r4, pc} +_0203A88E: + ldr r1, _0203A89C ; =FUN_0203A8A0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203A89C: .word FUN_0203A8A0 + + thumb_func_start FUN_0203A8A0 +FUN_0203A8A0: ; 0x0203A8A0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x60] + bl MOD05_021E8148 + cmp r0, #0x1 + bne _0203A8B4 + mov r0, #0x1 + pop {r3, pc} +_0203A8B4: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203A8B8 +FUN_0203A8B8: ; 0x0203A8B8 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x3 + add r0, r4, #0x0 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + str r0, [sp, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + ldr r1, [sp, #0x0] + ldr r2, [r6, #0x0] + bl ReadMsgDataIntoString + ldr r0, [sp, #0x8] + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + ldr r2, [r6, #0x0] + bl StringExpandPlaceholders + ldr r0, [r4, #0x60] + bl MOD05_021E8140 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r2, r0, #0x0 + ldr r1, [r7, #0x0] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_02054658 + ldr r1, [sp, #0x4] + strb r0, [r1, #0x0] + ldr r0, [sp, #0xc] + ldr r1, _0203A948 ; =FUN_0203A94C + str r0, [r5, #0x64] + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0203A948: .word FUN_0203A94C + + thumb_func_start FUN_0203A94C +FUN_0203A94C: ; 0x0203A94C + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x3 + add r0, r5, #0x0 + bl FUN_02039438 + ldr r1, [r7, #0x64] + add r6, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r5, #0x60] + bl MOD05_021E8144 + ldrb r0, [r6, #0x0] + ldr r5, _0203A9E8 ; =0x0000FFFF + bl FUN_020546C8 + cmp r0, #0x1 + bne _0203A986 + mov r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0203A986: + ldr r0, _0203A9EC ; =gMain + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0203A994 + mov r5, #0x0 + b _0203A9B0 +_0203A994: + mov r1, #0x80 + tst r1, r0 + beq _0203A99E + mov r5, #0x1 + b _0203A9B0 +_0203A99E: + mov r1, #0x20 + tst r1, r0 + beq _0203A9A8 + mov r5, #0x2 + b _0203A9B0 +_0203A9A8: + mov r1, #0x10 + tst r1, r0 + beq _0203A9B0 + mov r5, #0x3 +_0203A9B0: + ldr r1, _0203A9E8 ; =0x0000FFFF + cmp r5, r1 + beq _0203A9D0 + ldrb r0, [r6, #0x0] + bl FUN_0201BD7C + add r7, #0x80 + ldr r0, [r7, #0x0] + add r1, r5, #0x0 + ldr r0, [r0, #0x38] + bl FUN_02055304 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0203A9D0: + mov r1, #0x1 + lsl r1, r1, #0xa + tst r0, r1 + beq _0203A9E4 + ldrb r0, [r6, #0x0] + bl FUN_0201BD7C + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r7, pc} +_0203A9E4: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203A9E8: .word 0x0000FFFF +_0203A9EC: .word gMain + + thumb_func_start FUN_0203A9F0 +FUN_0203A9F0: ; 0x0203A9F0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203AA08 ; =FUN_0203AA0C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203AA08: .word FUN_0203AA0C + + thumb_func_start FUN_0203AA0C +FUN_0203AA0C: ; 0x0203AA0C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, _0203AA88 ; =gMain + ldr r1, _0203AA8C ; =0x0000FFFF + ldr r2, [r0, #0x48] + mov r0, #0x3 + add r3, r2, #0x0 + tst r3, r0 + beq _0203AA36 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203AA36: + mov r3, #0x40 + tst r3, r2 + beq _0203AA40 + mov r1, #0x0 + b _0203AA5C +_0203AA40: + mov r3, #0x80 + tst r3, r2 + beq _0203AA4A + mov r1, #0x1 + b _0203AA5C +_0203AA4A: + mov r3, #0x20 + tst r3, r2 + beq _0203AA54 + mov r1, #0x2 + b _0203AA5C +_0203AA54: + mov r3, #0x10 + tst r3, r2 + beq _0203AA5C + add r1, r0, #0x0 +_0203AA5C: + ldr r0, _0203AA8C ; =0x0000FFFF + cmp r1, r0 + beq _0203AA74 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055304 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203AA74: + mov r0, #0x1 + lsl r0, r0, #0xa + tst r0, r2 + beq _0203AA82 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r5, pc} +_0203AA82: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203AA88: .word gMain +_0203AA8C: .word 0x0000FFFF + + thumb_func_start FUN_0203AA90 +FUN_0203AA90: ; 0x0203AA90 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02039460 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203AAA0 +FUN_0203AAA0: ; 0x0203AAA0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x2 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + ldr r2, _0203AAF4 ; =0x000003D9 + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + ldr r1, _0203AAF8 ; =UNK_020F34E0 + ldr r2, _0203AAF4 ; =0x000003D9 + mov r3, #0xb + bl Std_CreateYesNoMenu + str r0, [r6, #0x0] + ldr r1, _0203AAFC ; =FUN_0203AB00 + add r0, r5, #0x0 + str r7, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203AAF4: .word 0x000003D9 +_0203AAF8: .word UNK_020F34E0 +_0203AAFC: .word FUN_0203AB00 + + thumb_func_start FUN_0203AB00 +FUN_0203AB00: ; 0x0203AB00 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x2 + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r5, #0x64] + add r4, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x4 + bl FUN_020021AC + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + bne _0203AB34 + mov r0, #0x0 + pop {r4-r6, pc} +_0203AB34: + cmp r0, #0x0 + bne _0203AB3C + mov r0, #0x0 + b _0203AB3E +_0203AB3C: + mov r0, #0x1 +_0203AB3E: + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203AB44 +FUN_0203AB44: ; 0x0203AB44 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x12 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r1, _0203AB70 ; =0x000003E2 + add r0, r4, #0x0 + bl FUN_0200D858 + str r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203AB70: .word 0x000003E2 + + thumb_func_start FUN_0203AB74 +FUN_0203AB74: ; 0x0203AB74 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x12 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0200DBFC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203AB8C +FUN_0203AB8C: ; 0x0203AB8C + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl GetVarPointer + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl MOD05_021E1BF8 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AC14 +FUN_0203AC14: ; 0x0203AC14 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl GetVarPointer + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl MOD05_021E1BF8 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AC9C +FUN_0203AC9C: ; 0x0203AC9C + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r3, r1, #0x1 + str r3, [r4, #0x8] + ldrb r1, [r1, #0x0] + add r2, r3, #0x1 + str r2, [r4, #0x8] + ldrb r2, [r3, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021E1C4C + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203ACC4 +FUN_0203ACC4: ; 0x0203ACC4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl MOD05_021E1C4C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203AD08 +FUN_0203AD08: ; 0x0203AD08 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl MOD05_021E1C54 + ldr r1, _0203AD28 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AD28: .word FUN_0203AD2C + + thumb_func_start FUN_0203AD2C +FUN_0203AD2C: ; 0x0203AD2C + push {r3, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + ldrh r1, [r0, #0x0] + ldr r0, _0203AD50 ; =0x0000EEEE + cmp r1, r0 + beq _0203AD4A + mov r0, #0x1 + pop {r3, pc} +_0203AD4A: + mov r0, #0x0 + pop {r3, pc} + nop +_0203AD50: .word 0x0000EEEE + + thumb_func_start FUN_0203AD54 +FUN_0203AD54: ; 0x0203AD54 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl MOD05_021E1C54 + ldr r1, _0203AD74 ; =FUN_0203AD78 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AD74: .word FUN_0203AD78 + + thumb_func_start FUN_0203AD78 +FUN_0203AD78: ; 0x0203AD78 + push {r4-r6, lr} + add r1, r0, #0x0 + add r0, #0x80 + ldr r1, [r1, #0x64] + ldr r5, [r0, #0x0] + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _0203ADC0 ; =0x0000EEEE + cmp r1, r0 + bne _0203ADBC + ldr r0, [r5, #0x78] + bl FUN_02052714 + cmp r0, #0x0 + beq _0203ADB8 + mov r0, #0x8 + strh r0, [r4, #0x0] + ldr r0, [r6, #0x0] + bl MOD05_021E1ECC + mov r0, #0x1 + pop {r4-r6, pc} +_0203ADB8: + mov r0, #0x0 + pop {r4-r6, pc} +_0203ADBC: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203ADC0: .word 0x0000EEEE + + thumb_func_start FUN_0203ADC4 +FUN_0203ADC4: ; 0x0203ADC4 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl GetVarPointer + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl MOD05_021E1F34 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AE4C +FUN_0203AE4C: ; 0x0203AE4C + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl GetVarPointer + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl MOD05_021E1F34 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AED4 +FUN_0203AED4: ; 0x0203AED4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r3, r0, #0x0 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl MOD05_021E1F58 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203AF34 +FUN_0203AF34: ; 0x0203AF34 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl MOD05_021E1F60 + ldr r1, _0203AF54 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AF54: .word FUN_0203AD2C + + thumb_func_start FUN_0203AF58 +FUN_0203AF58: ; 0x0203AF58 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021E26CC + ldr r1, _0203AF80 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AF80: .word FUN_0203AD2C + + thumb_func_start FUN_0203AF84 +FUN_0203AF84: ; 0x0203AF84 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021E2B80 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203AFA4 +FUN_0203AFA4: ; 0x0203AFA4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021E2B9C + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203AFC4 +FUN_0203AFC4: ; 0x0203AFC4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_0203B120 + add r6, r0, #0x0 + bne _0203AFF6 + bl ErrorHandling +_0203AFF6: + ldr r1, [r5, #0x8] + add r0, r6, #0x0 + add r1, r1, r4 + bl FUN_0205AEA4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r1, [r0, #0x0] + add r5, #0x80 + mov r2, #0x0 + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_0203B174 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B024 +FUN_0203B024: ; 0x0203B024 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_0203B120 + str r0, [sp, #0x4] + cmp r0, #0x0 + bne _0203B07A + bl ErrorHandling +_0203B07A: + mov r0, #0x4 + add r1, r0, #0x0 + add r1, #0xfc + bl AllocFromHeap + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02058B2C + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x4] + bl FUN_02058B4C + lsl r0, r0, #0x10 + ldr r2, [sp, #0x0] + lsr r0, r0, #0x10 + mov r1, #0x0 + cmp r6, r2 + bhs _0203B0B0 + mov r2, #0xf + strh r2, [r4, #0x0] + ldr r2, [sp, #0x0] + add r1, r1, #0x1 + sub r2, r2, r6 + strh r2, [r4, #0x2] + b _0203B0C0 +_0203B0B0: + cmp r6, r2 + bls _0203B0C0 + mov r2, #0xe + strh r2, [r4, #0x0] + ldr r2, [sp, #0x0] + add r1, r1, #0x1 + sub r2, r6, r2 + strh r2, [r4, #0x2] +_0203B0C0: + cmp r0, r7 + bhs _0203B0D4 + lsl r2, r1, #0x2 + mov r3, #0xc + strh r3, [r4, r2] + sub r3, r7, r0 + add r0, r4, r2 + strh r3, [r0, #0x2] + add r1, r1, #0x1 + b _0203B0E6 +_0203B0D4: + cmp r0, r7 + bls _0203B0E6 + lsl r2, r1, #0x2 + mov r3, #0xd + strh r3, [r4, r2] + sub r3, r0, r7 + add r0, r4, r2 + strh r3, [r0, #0x2] + add r1, r1, #0x1 +_0203B0E6: + lsl r2, r1, #0x2 + mov r0, #0xfe + strh r0, [r4, r2] + mov r1, #0x0 + add r0, r4, r2 + strh r1, [r0, #0x2] + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + bl FUN_0205AEA4 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r1, [r0, #0x0] + add r5, #0x80 + add r2, r4, #0x0 + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_0203B174 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203B120 +FUN_0203B120: ; 0x0203B120 + push {r3, lr} + cmp r1, #0xf2 + bne _0203B130 + ldr r0, [r0, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + pop {r3, pc} +_0203B130: + cmp r1, #0xf1 + bne _0203B13E + mov r1, #0xb + bl FUN_02039438 + ldr r0, [r0, #0x0] + pop {r3, pc} +_0203B13E: + ldr r0, [r0, #0x34] + bl FUN_02058060 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203B148 +FUN_0203B148: ; 0x0203B148 + push {r3, lr} + ldr r1, _0203B154 ; =FUN_0203B158 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203B154: .word FUN_0203B158 + + thumb_func_start FUN_0203B158 +FUN_0203B158: ; 0x0203B158 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B16E + mov r0, #0x1 + pop {r3, pc} +_0203B16E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203B174 +FUN_0203B174: ; 0x0203B174 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x4 + mov r1, #0x10 + add r7, r2, #0x0 + bl AllocFromHeap + add r4, r0, #0x0 + bne _0203B18E + bl ErrorHandling + pop {r3-r7, pc} +_0203B18E: + str r5, [r4, #0xc] + str r6, [r4, #0x4] + ldr r0, _0203B1A4 ; =FUN_0203B1A8 + add r1, r4, #0x0 + mov r2, #0x0 + str r7, [r4, #0x8] + bl FUN_0200CA44 + str r0, [r4, #0x0] + pop {r3-r7, pc} + nop +_0203B1A4: .word FUN_0203B1A8 + + thumb_func_start FUN_0203B1A8 +FUN_0203B1A8: ; 0x0203B1A8 + push {r3-r5, lr} + add r5, r1, #0x0 + ldr r0, [r5, #0xc] + mov r1, #0x4 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0x4] + bl FUN_0205AEF0 + cmp r0, #0x1 + bne _0203B1EC + ldr r0, [r5, #0x4] + bl FUN_0205AEFC + ldr r0, [r5, #0x0] + bl FUN_0200CAB4 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _0203B1D6 + bl FreeToHeap +_0203B1D6: + add r0, r5, #0x0 + bl FreeToHeap + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203B1E8 + bl ErrorHandling + pop {r3-r5, pc} +_0203B1E8: + sub r0, r0, #0x1 + strb r0, [r4, #0x0] +_0203B1EC: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B1F0 +FUN_0203B1F0: ; 0x0203B1F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B20E + ldr r0, [r4, #0x34] + bl FUN_02058780 + b _0203B214 +_0203B20E: + add r0, r5, #0x0 + bl FUN_0203B2E0 +_0203B214: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B218 +FUN_0203B218: ; 0x0203B218 + push {r4-r6, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + ldr r1, _0203B2DC ; =UNK_021C5A0C + add r6, r0, #0x0 + ldrb r2, [r1, #0x0] + mov r1, #0x1 + tst r1, r2 + beq _0203B252 + bl FUN_0205AE28 + cmp r0, #0x1 + bne _0203B252 + add r0, r6, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =UNK_021C5A0C + mov r0, #0xfe + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B252: + ldr r0, _0203B2DC ; =UNK_021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x4 + tst r0, r1 + beq _0203B276 + ldr r0, [r5, #0x0] + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B276 + ldr r0, [r5, #0x0] + bl FUN_02058908 + ldr r1, _0203B2DC ; =UNK_021C5A0C + mov r0, #0xfb + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B276: + ldr r0, _0203B2DC ; =UNK_021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0203B2A2 + ldr r0, [r4, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + add r4, r0, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B2A2 + add r0, r4, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =UNK_021C5A0C + mov r0, #0xfd + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B2A2: + ldr r0, _0203B2DC ; =UNK_021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x8 + tst r0, r1 + beq _0203B2CC + ldr r0, [r5, #0x0] + bl FUN_0205E7C4 + add r4, r0, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B2CC + add r0, r4, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =UNK_021C5A0C + mov r0, #0xf7 + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B2CC: + ldr r0, _0203B2DC ; =UNK_021C5A0C + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B2D8 + mov r0, #0x1 + pop {r4-r6, pc} +_0203B2D8: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0203B2DC: .word UNK_021C5A0C + + thumb_func_start FUN_0203B2E0 +FUN_0203B2E0: ; 0x0203B2E0 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + str r0, [sp, #0x4] + ldr r0, [r4, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0205E7C4 + add r6, r0, #0x0 + ldr r0, [r4, #0x34] + ldr r1, _0203B3A8 ; =UNK_021C5A0C + mov r2, #0x0 + strb r2, [r1, #0x0] + bl FUN_02058780 + ldr r0, [sp, #0x4] + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0203B334 + ldr r1, _0203B3A8 ; =UNK_021C5A0C + mov r0, #0x1 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + ldr r0, [sp, #0x4] + bl FUN_02058914 +_0203B334: + ldr r0, [r5, #0x0] + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B34E + ldr r1, _0203B3A8 ; =UNK_021C5A0C + mov r0, #0x4 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + ldr r0, [r5, #0x0] + bl FUN_02058914 +_0203B34E: + cmp r7, #0x0 + beq _0203B37A + ldr r0, [r4, #0xc] + bl SavArray_Flags_get + bl FUN_0205ED3C + cmp r0, #0x1 + bne _0203B37A + add r0, r7, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B37A + ldr r1, _0203B3A8 ; =UNK_021C5A0C + mov r0, #0x2 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02058914 +_0203B37A: + cmp r6, #0x0 + beq _0203B398 + add r0, r6, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B398 + ldr r1, _0203B3A8 ; =UNK_021C5A0C + mov r0, #0x8 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_02058914 +_0203B398: + ldr r0, [sp, #0x0] + ldr r1, _0203B3AC ; =FUN_0203B218 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203B3A8: .word UNK_021C5A0C +_0203B3AC: .word FUN_0203B218 + + thumb_func_start FUN_0203B3B0 +FUN_0203B3B0: ; 0x0203B3B0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203B3C0 +FUN_0203B3C0: ; 0x0203B3C0 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + ldr r0, [r4, #0x34] + bl FUN_02058060 + bl FUN_02058908 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203B3DC +FUN_0203B3DC: ; 0x0203B3DC + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + ldr r0, [r4, #0x34] + bl FUN_02058060 + bl FUN_02058914 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203B3F8 +FUN_0203B3F8: ; 0x0203B3F8 + push {r3-r6, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034B64 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034B6C + str r0, [sp, #0x0] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x34] + ldr r3, [r3, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020575D4 + cmp r0, #0x0 + bne _0203B43A + bl ErrorHandling +_0203B43A: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_0203B440 +FUN_0203B440: ; 0x0203B440 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + bl FUN_02057688 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B468 +FUN_0203B468: ; 0x0203B468 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xb + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xc + str r1, [sp, #0x0] + mov r3, #0x0 + str r3, [sp, #0x4] + ldr r1, [r0, #0x1c] + add r2, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + ldr r0, [r0, #0x34] + add r1, r6, #0x0 + bl FUN_0205753C + str r0, [r4, #0x0] + bl FUN_02059D1C + ldr r0, [r4, #0x0] + mov r1, #0x1 + bl FUN_0205889C + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020588B8 + ldr r0, [r4, #0x0] + bl FUN_02058B7C + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r4, r0, #0x0 + ldr r1, [r1, #0x24] + bl MOD05_021EF5E0 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EC68 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203B500 +FUN_0203B500: ; 0x0203B500 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xb + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02057654 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xff + ldr r0, [r0, #0x34] + bl FUN_02058060 + bl FUN_02058B7C + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r4, r0, #0x0 + ldr r1, [r1, #0x24] + bl MOD05_021EF5E0 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EC68 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B544 +FUN_0203B544: ; 0x0203B544 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + bl FUN_02059E74 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B568 + mov r0, #0x0 + pop {r3-r5, pc} +_0203B568: + add r1, r4, #0x0 + bl MOD05_021F1EC0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B574 +FUN_0203B574: ; 0x0203B574 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x38] + bl FUN_0205532C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B5B8 +FUN_0203B5B8: ; 0x0203B5B8 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + strh r0, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_02058B4C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B618 +FUN_0203B618: ; 0x0203B618 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B640 +FUN_0203B640: ; 0x0203B640 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + cmp r7, #0x0 + beq _0203B696 + lsl r0, r7, #0xc + bl _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0203B6A4 +_0203B696: + lsl r0, r7, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0203B6A4: + bl _ffix + str r0, [sp, #0x0] + cmp r6, #0x0 + beq _0203B6C0 + lsl r0, r6, #0xc + bl _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0203B6CE +_0203B6C0: + lsl r0, r6, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0203B6CE: + bl _ffix + str r0, [sp, #0x4] + cmp r4, #0x0 + beq _0203B6EA + lsl r0, r4, #0xc + bl _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0203B6F8 +_0203B6EA: + lsl r0, r4, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0203B6F8: + bl _ffix + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r1, sp, #0x0 + bl FUN_02058BB4 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, sp, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EF70 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203B724 +FUN_0203B724: ; 0x0203B724 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + bl FUN_02058994 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203B758 +FUN_0203B758: ; 0x0203B758 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058E90 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B790 +FUN_0203B790: ; 0x0203B790 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + cmp r0, #0x0 + beq _0203B7D2 + bl FUN_02058480 + strh r0, [r4, #0x0] +_0203B7D2: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B7D8 +FUN_0203B7D8: ; 0x0203B7D8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x30 + ldr r0, [r0, #0x34] + bl FUN_020580B4 + mov r1, #0xfe + bl FUN_02058EB0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203B7F0 +FUN_0203B7F0: ; 0x0203B7F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_SealCase_get + bl FUN_02029E0C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B81C +FUN_0203B81C: ; 0x0203B81C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_SealCase_get + add r1, r6, #0x0 + bl FUN_02029E2C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B85C +FUN_0203B85C: ; 0x0203B85C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_SealCase_get + lsl r2, r4, #0x10 + add r1, r6, #0x0 + asr r2, r2, #0x10 + bl FUN_02029D44 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B8A0 +FUN_0203B8A0: ; 0x0203B8A0 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r6, #0x0 + bl GetPartyMonByIndex + bl GetMonUnownLetter + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B8E4 +FUN_0203B8E4: ; 0x0203B8E4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_020379F8 + str r0, [r4, #0x0] + ldr r1, _0203B910 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203B910: .word FUN_0203BC04 + + thumb_func_start FUN_0203B914 +FUN_0203B914: ; 0x0203B914 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_02037A1C + str r0, [r4, #0x0] + ldr r1, _0203B940 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203B940: .word FUN_0203BC04 + + thumb_func_start FUN_0203B944 +FUN_0203B944: ; 0x0203B944 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x20 + ldr r0, [r0, #0x10] + bl FUN_02037B44 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B968 +FUN_0203B968: ; 0x0203B968 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203B994 + bl ErrorHandling +_0203B994: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x7 + bne _0203B9A6 + mov r0, #0xff + strh r0, [r5, #0x0] +_0203B9A6: + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B9B4 +FUN_0203B9B4: ; 0x0203B9B4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r1, r5, #0x0 + str r6, [sp, #0x4] + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r2, [sp, #0x8] + mov r0, #0x20 + add r3, r7, #0x0 + bl FUN_02037BB0 + str r0, [r4, #0x0] + ldr r1, _0203BA38 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0203BA38: .word FUN_0203BC04 + + thumb_func_start FUN_0203BA3C +FUN_0203BA3C: ; 0x0203BA3C + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BA7C + bl ErrorHandling +_0203BA7C: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r6, #0x0] + ldrh r0, [r6, #0x0] + cmp r0, #0x7 + bne _0203BA8E + mov r0, #0xff + strh r0, [r6, #0x0] +_0203BA8E: + ldr r0, [r4, #0x0] + bl FUN_02037A70 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x1 + bne _0203BAA0 + mov r0, #0x1 + b _0203BAA2 +_0203BAA0: + mov r0, #0x0 +_0203BAA2: + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0203BAB0 +FUN_0203BAB0: ; 0x0203BAB0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r5, #0x0 + add r1, #0x80 + add r2, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_02037C00 + str r0, [r4, #0x0] + ldr r1, _0203BAF0 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203BAF0: .word FUN_0203BC04 + + thumb_func_start FUN_0203BAF4 +FUN_0203BAF4: ; 0x0203BAF4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BB20 + bl ErrorHandling +_0203BB20: + ldr r0, [r4, #0x0] + bl FUN_02037A78 + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203BB34 +FUN_0203BB34: ; 0x0203BB34 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + add r2, r7, #0x0 + bl MOD05_021E1858 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203BB80 +FUN_0203BB80: ; 0x0203BB80 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB84 +FUN_0203BB84: ; 0x0203BB84 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB88 +FUN_0203BB88: ; 0x0203BB88 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0203BB8C +FUN_0203BB8C: ; 0x0203BB8C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB90 +FUN_0203BB90: ; 0x0203BB90 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x13 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0203BBAE + mov r0, #0x0 + pop {r3-r5, pc} +_0203BBAE: + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BBBC +FUN_0203BBBC: ; 0x0203BBBC + push {r4-r6, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x13 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r6, [r4, #0x0] + bl FUN_0204647C + cmp r0, #0x0 + beq _0203BBDC + mov r0, #0x0 + pop {r4-r6, pc} +_0203BBDC: + ldr r0, [r6, #0x8] + cmp r0, #0x1 + bne _0203BBF4 + mov r0, #0xb + bl FUN_02029048 + add r5, #0x98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x1 + bl FUN_02028AD4 +_0203BBF4: + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BC04 +FUN_0203BC04: ; 0x0203BC04 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204647C + cmp r0, #0x0 + bne _0203BC16 + mov r0, #0x1 + pop {r3, pc} +_0203BC16: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BC1C +FUN_0203BC1C: ; 0x0203BC1C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_0204AF84 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BC2C +FUN_0203BC2C: ; 0x0203BC2C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_0204AF3C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BC3C +FUN_0203BC3C: ; 0x0203BC3C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02027E24 + cmp r5, #0x0 + bne _0203BC5A + add r1, r4, #0x0 + bl FUN_02027098 + cmp r0, #0x0 + bne _0203BC68 + mov r0, #0x0 + pop {r3-r5, pc} +_0203BC5A: + add r1, r4, #0x0 + bl FUN_020270B4 + cmp r0, #0x0 + bne _0203BC68 + mov r0, #0x0 + pop {r3-r5, pc} +_0203BC68: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BC6C +FUN_0203BC6C: ; 0x0203BC6C + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0xc] + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02027E24 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x0 + bne _0203BC90 + mov r0, #0x0 + pop {r3-r7, pc} +_0203BC90: + ldr r0, [sp, #0x0] + mov r1, #0xc + bl AllocFromHeap + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + strb r1, [r0, #0x4] + strb r1, [r0, #0x5] + strb r1, [r0, #0x6] + strb r1, [r0, #0x7] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + str r7, [r0, #0x0] + str r4, [r0, #0x8] + str r6, [r0, #0x4] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203BCBC +FUN_0203BCBC: ; 0x0203BCBC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD05_021F02C4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BCCC +FUN_0203BCCC: ; 0x0203BCCC + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_0206F3B8 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BCD8 +FUN_0203BCD8: ; 0x0203BCD8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x4] + strh r1, [r0, #0x0] + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BD08 +FUN_0203BD08: ; 0x0203BD08 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + bl FUN_02031190 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203BD28 +FUN_0203BD28: ; 0x0203BD28 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r2, _0203BDB4 ; =0x000003D9 + ldr r0, [r0, #0x8] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0xb + str r0, [sp, #0x0] + ldr r0, _0203BDB4 ; =0x000003D9 + mov r1, #0x3 + str r0, [sp, #0x4] + lsl r0, r7, #0x18 + str r4, [sp, #0x8] + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x4 + str r0, [sp, #0x10] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xa + ldr r0, [r0, #0x8] + mov r3, #0x5 + bl FUN_0200DC4C + add r5, #0x80 + str r0, [r6, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_0203ED2C + mov r0, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_0203BDB4: .word 0x000003D9 + + thumb_func_start FUN_0203BDB8 +FUN_0203BDB8: ; 0x0203BDB8 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r4, #0x0 + bl GetPartyMonByIndex + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r2, _0203BE4C ; =0x000003D9 + ldr r0, [r0, #0x8] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0xb + str r0, [sp, #0x0] + ldr r0, _0203BE4C ; =0x000003D9 + mov r1, #0x3 + str r0, [sp, #0x4] + str r4, [sp, #0x8] + mov r0, #0x4 + str r0, [sp, #0xc] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xa + ldr r0, [r0, #0x8] + mov r3, #0x5 + bl FUN_0200DCA4 + str r0, [r6, #0x0] + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonData + add r1, r0, #0x0 + add r5, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x0] + lsr r1, r1, #0x10 + bl FUN_0203ED2C + mov r0, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0203BE4C: .word 0x000003D9 + + thumb_func_start FUN_0203BE50 +FUN_0203BE50: ; 0x0203BE50 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x1 + strb r1, [r0, #0x0] + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BE68 +FUN_0203BE68: ; 0x0203BE68 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x2 + strb r1, [r0, #0x0] + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BE80 +FUN_0203BE80: ; 0x0203BE80 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203BE98 ; =FUN_0203BE9C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203BE98: .word FUN_0203BE9C + + thumb_func_start FUN_0203BE9C +FUN_0203BE9C: ; 0x0203BE9C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + ldr r0, [r4, #0x0] + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _0203BEC8 + mov r0, #0x1 + pop {r3-r5, pc} +_0203BEC8: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BECC +FUN_0203BECC: ; 0x0203BECC + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl GetVarPointer + add r2, r0, #0x0 + ldr r0, [r5, #0x74] + ldr r1, [r4, #0x0] + bl MOD05_021E1374 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BF00 +FUN_0203BF00: ; 0x0203BF00 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0203BF1C + add r4, #0x80 + ldr r0, [r4, #0x0] + bl MOD05_021E1994 +_0203BF1C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203BF20 +FUN_0203BF20: ; 0x0203BF20 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_0208A338 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BF2C +FUN_0203BF2C: ; 0x0203BF2C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + ldr r2, [r5, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [r2, #0x10] + ldr r2, [r2, #0xc] + add r3, r4, #0x0 + bl FUN_020380CC + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BF84 +FUN_0203BF84: ; 0x0203BF84 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r1, r5, #0x0 + add r1, #0x80 + add r6, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0xb + mov r2, #0x0 + add r3, r7, #0x0 + bl FUN_0203BC6C + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BFCC + mov r0, #0x1 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0203BFCC: + mov r0, #0x0 + strh r0, [r6, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02038130 + ldr r1, _0203BFE8 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203BFE8: .word FUN_0203BB90 + + thumb_func_start FUN_0203BFEC +FUN_0203BFEC: ; 0x0203BFEC + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r1, r5, #0x0 + add r1, #0x80 + add r6, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0xb + mov r2, #0x1 + add r3, r7, #0x0 + bl FUN_0203BC6C + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203C034 + mov r0, #0x1 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0203C034: + mov r0, #0x0 + strh r0, [r6, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02038130 + ldr r1, _0203C050 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203C050: .word FUN_0203BB90 + + thumb_func_start FUN_0203C054 +FUN_0203C054: ; 0x0203C054 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x1 + bne _0203C088 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0203C088: + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C090 +FUN_0203C090: ; 0x0203C090 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x1 + bne _0203C0C4 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0203C0C4: + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C0CC +FUN_0203C0CC: ; 0x0203C0CC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + mov r1, #0x0 + bl FUN_02027008 + add r1, r4, #0x0 + bl FUN_02027478 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C0FC +FUN_0203C0FC: ; 0x0203C0FC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02038804 + ldr r1, _0203C114 ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203C114: .word FUN_0203BC04 + + thumb_func_start FUN_0203C118 +FUN_0203C118: ; 0x0203C118 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, [r1, #0x74] + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + bl FUN_02085F48 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C12C +FUN_0203C12C: ; 0x0203C12C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + mov r1, #0x5 + add r4, r0, #0x0 + mov r0, #0xb + lsl r1, r1, #0x6 + bl AllocFromHeap + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + mov r2, #0x2 + bl FUN_0205F7A0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02037E90 + ldr r1, _0203C170 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C170: .word FUN_0203BB90 + + thumb_func_start FUN_0203C174 +FUN_0203C174: ; 0x0203C174 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xb + bl FUN_02088960 + str r0, [r4, #0x0] + ldr r1, _0203C1A8 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C1A8: .word FUN_0203BB90 + + thumb_func_start FUN_0203C1AC +FUN_0203C1AC: ; 0x0203C1AC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Bag_get + mov r1, #0x4 + bl Bag_PocketNotEmpty + cmp r0, #0x0 + bne _0203C1E0 + mov r0, #0x1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} +_0203C1E0: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + bl FUN_020281B8 + cmp r0, #0x64 + blo _0203C1FA + mov r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} +_0203C1FA: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203C200 +FUN_0203C200: ; 0x0203C200 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl AllocFromHeap + mov r1, #0x0 + mov r2, #0x8 + str r0, [r6, #0x0] + add r4, r0, #0x0 + bl MI_CpuFill8 + ldr r0, [sp, #0x0] + strh r7, [r4, #0x4] + strh r0, [r4, #0x6] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r6, #0x0] + bl FUN_02037FE4 + ldr r1, _0203C274 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203C274: .word FUN_0203BB90 + + thumb_func_start ScrCmd_monstoragepc +ScrCmd_monstoragepc: ; 0x0203C278 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0xc + bl AllocFromHeap + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + str r1, [r0, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + str r1, [r0, #0x4] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl LaunchStoragePCInterface + ldr r1, _0203C2C0 ; =FUN_0203BBBC + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C2C0: .word FUN_0203BBBC + + thumb_func_start FUN_0203C2C4 +FUN_0203C2C4: ; 0x0203C2C4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020383F8 + ldr r1, _0203C2DC ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203C2DC: .word FUN_0203BC04 + + thumb_func_start FUN_0203C2E0 +FUN_0203C2E0: ; 0x0203C2E0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02065344 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203C2F0 +FUN_0203C2F0: ; 0x0203C2F0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_020383D8 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C300 +FUN_0203C300: ; 0x0203C300 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0203842C + str r0, [r4, #0x0] + ldr r1, _0203C328 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C328: .word FUN_0203BB90 + + thumb_func_start ScrCmd_halloffame +ScrCmd_halloffame: ; 0x0203C32C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl Special_EnterHallOfFame + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C33C +FUN_0203C33C: ; 0x0203C33C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02038824 + str r0, [r4, #0x0] + ldr r1, _0203C364 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C364: .word FUN_0203BB90 + + thumb_func_start FUN_0203C368 +FUN_0203C368: ; 0x0203C368 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0203384C + cmp r0, #0x0 + beq _0203C3BC + mov r0, #0x1 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_020386E0 + ldr r1, _0203C3C4 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + b _0203C3C0 +_0203C3BC: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0203C3C0: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C3C4: .word FUN_0203BC04 + + thumb_func_start FUN_0203C3C8 +FUN_0203C3C8: ; 0x0203C3C8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_0206F3D8 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203C3E8 +FUN_0203C3E8: ; 0x0203C3E8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl AllocFromHeap + str r0, [r4, #0x0] + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + str r0, [r6, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_020386A4 + ldr r1, _0203C42C ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0203C42C: .word FUN_0203BC04 + + thumb_func_start FUN_0203C430 +FUN_0203C430: ; 0x0203C430 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x0] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205F378 + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C460 +FUN_0203C460: ; 0x0203C460 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + beq _0203C474 + mov r0, #0x1 + b _0203C476 +_0203C474: + mov r0, #0x0 +_0203C476: + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _0203C492 + bl ErrorHandling +_0203C492: + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_0203789C + str r0, [r6, #0x0] + ldr r1, _0203C4AC ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C4AC: .word FUN_0203BC04 + + thumb_func_start FUN_0203C4B0 +FUN_0203C4B0: ; 0x0203C4B0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203C4DC + bl ErrorHandling +_0203C4DC: + ldr r0, [r4, #0x0] + bl FUN_020378FC + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203C4F0 +FUN_0203C4F0: ; 0x0203C4F0 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x74] + add r2, r1, #0x0 + mov r3, #0x7 + bl FUN_020385CC + mov r0, #0x1 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203C520 +FUN_0203C520: ; 0x0203C520 + push {r4-r7, lr} + sub sp, #0x34 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl SavArray_PlayerParty_get + add r1, r6, #0x0 + bl GetPartyMonByIndex + mov r1, #0x74 + add r2, sp, #0xc + add r7, r0, #0x0 + bl GetMonData + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonData + add r2, r0, #0x0 + str r6, [sp, #0x0] + add r0, sp, #0xc + str r0, [sp, #0x4] + str r4, [sp, #0x8] + ldr r0, [r5, #0x74] + mov r1, #0x1 + mov r3, #0xa + bl FUN_020385CC + mov r0, #0x1 + add sp, #0x34 + pop {r4-r7, pc} + + thumb_func_start FUN_0203C58C +FUN_0203C58C: ; 0x0203C58C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + mov r2, #0x0 + str r2, [sp, #0x0] + str r2, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x74] + mov r1, #0x6 + mov r3, #0xa + bl FUN_020385CC + mov r0, #0x1 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203C5BC +FUN_0203C5BC: ; 0x0203C5BC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r2, r0, #0x0 + ldr r0, _0203C610 ; =0x0000FFFF + add r5, #0x80 + strh r0, [r2, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x10] + mov r3, #0x0 + bl FUN_02037E18 + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C610: .word 0x0000FFFF + + thumb_func_start FUN_0203C614 +FUN_0203C614: ; 0x0203C614 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r3, r0, #0x0 + ldr r0, _0203C67C ; =0x0000FFFF + add r5, #0x80 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x10] + add r2, r4, #0x0 + bl FUN_02037E18 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C67C: .word 0x0000FFFF + + thumb_func_start FUN_0203C680 +FUN_0203C680: ; 0x0203C680 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl FUN_0200B518 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203C6C4 +FUN_0203C6C4: ; 0x0203C6C4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + add r3, r0, #0x0 + str r6, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r7, #0x0 + add r2, r7, #0x0 + bl FUN_0200E1D0 + mov r0, #0x0 + bl FUN_0200E388 + mov r0, #0x1 + bl FUN_0200E388 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0203C70C +FUN_0203C70C: ; 0x0203C70C + push {r3, lr} + ldr r1, _0203C718 ; =FUN_0203C71C + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203C718: .word FUN_0203C71C + + thumb_func_start FUN_0203C71C +FUN_0203C71C: ; 0x0203C71C + push {r3, lr} + bl FUN_0200E308 + cmp r0, #0x1 + bne _0203C72A + mov r0, #0x1 + pop {r3, pc} +_0203C72A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203C730 +FUN_0203C730: ; 0x0203C730 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + mvn r2, r2 + add r3, r7, #0x0 + bl FUN_02049240 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203C788 +FUN_0203C788: ; 0x0203C788 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + mov r2, #0x0 + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x10] + mvn r2, r2 + add r3, r7, #0x0 + bl FUN_02049F98 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203C7E4 +FUN_0203C7E4: ; 0x0203C7E4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02049FFC + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C7F4 +FUN_0203C7F4: ; 0x0203C7F4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DC8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + ldr r1, [r5, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C820 +FUN_0203C820: ; 0x0203C820 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x1c] + ldr r1, [r1, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203C844 +FUN_0203C844: ; 0x0203C844 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl MOD05_021E6990 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C874 +FUN_0203C874: ; 0x0203C874 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl MOD05_021E6410 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C8B4 +FUN_0203C8B4: ; 0x0203C8B4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl MOD05_021E6BF4 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C8E4 +FUN_0203C8E4: ; 0x0203C8E4 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + add r5, #0x80 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + sub r2, r2, #0x2 + add r3, r6, #0x0 + bl FUN_02049274 + mov r0, #0x1 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C930 +FUN_0203C930: ; 0x0203C930 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_02034DF4 + add r0, r5, #0x0 + bl FUN_02034DEC + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xc] + bl MOD05_021DC174 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C960 +FUN_0203C960: ; 0x0203C960 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_02034DF4 + add r0, r5, #0x0 + bl FUN_02034DEC + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xc] + bl MOD05_021DC174 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C990 +FUN_0203C990: ; 0x0203C990 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r6, #0x0 + bl GetPartyMonByIndex + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + add r2, r6, #0x0 + bl MOD06_0224666C + str r0, [r4, #0x0] + ldr r1, _0203C9F4 ; =FUN_0203C9F8 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0203C9F4: .word FUN_0203C9F8 + + thumb_func_start FUN_0203C9F8 +FUN_0203C9F8: ; 0x0203C9F8 + push {r4, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl MOD06_022466A0 + cmp r0, #0x1 + bne _0203CA1A + ldr r0, [r4, #0x0] + bl MOD06_022466AC + mov r0, #0x1 + pop {r4, pc} +_0203CA1A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CA20 +FUN_0203CA20: ; 0x0203CA20 + push {r3, lr} + ldr r0, [r0, #0x74] + bl MOD05_021E7030 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203CA2C +FUN_0203CA2C: ; 0x0203CA2C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + cmp r0, #0x1 + bne _0203CA54 + mov r0, #0x1 + b _0203CA56 +_0203CA54: + mov r0, #0x0 +_0203CA56: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203CA5C +FUN_0203CA5C: ; 0x0203CA5C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r1, #0x1 + str r0, [r4, #0x8] + ldrb r0, [r1, #0x0] + cmp r0, #0x1 + bne _0203CAA4 + add r0, r4, #0x0 + add r0, #0x80 + mov r1, #0x12 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x6 + bl FUN_0204AB20 + add r0, r4, #0x0 + add r0, #0x80 + mov r1, #0x12 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x6 + mov r2, #0x1 + bl FUN_0204ABDC + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl MOD05_021E5FD8 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl MOD05_021E5FE0 + b _0203CAE4 +_0203CAA4: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl MOD05_021E5FD8 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl MOD05_021E5FE0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_0204AB20 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x1c] + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x1 + bl FUN_0204ABDC +_0203CAE4: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203CAE8 +FUN_0203CAE8: ; 0x0203CAE8 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl MOD05_021E5FD8 + add r4, #0x80 + mov r1, #0x12 + ldr r0, [r4, #0x0] + lsl r1, r1, #0x6 + bl FUN_0204AB20 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203CB08 +FUN_0203CB08: ; 0x0203CB08 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055720 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203CB20 +FUN_0203CB20: ; 0x0203CB20 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CB48 +FUN_0203CB48: ; 0x0203CB48 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553D4 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203CB60 +FUN_0203CB60: ; 0x0203CB60 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl MOD05_021E5FE0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203CB70 +FUN_0203CB70: ; 0x0203CB70 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0202A990 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl MOD06_02245910 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203CBBC +FUN_0203CBBC: ; 0x0203CBBC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + bl FUN_0205F388 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CBE8 +FUN_0203CBE8: ; 0x0203CBE8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x8 + add r0, r4, #0x0 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r2, [r6, #0x0] + mov r3, #0xb + bl GetTrainerMessageByIdPair + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetOptionsAddr + add r2, r0, #0x0 + ldr r1, [r6, #0x0] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_02054658 + strb r0, [r7, #0x0] + ldr r1, _0203CC84 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203CC84: .word FUN_0203A2F0 + + thumb_func_start FUN_0203CC88 +FUN_0203CC88: ; 0x0203CC88 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl MOD06_02240790 + ldr r1, _0203CCF4 ; =FUN_0203CCF8 + add r0, r5, #0x0 + str r6, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203CCF4: .word FUN_0203CCF8 + + thumb_func_start FUN_0203CCF8 +FUN_0203CCF8: ; 0x0203CCF8 + push {r4, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + bl MOD06_022407DC + cmp r0, #0x0 + bne _0203CD18 + mov r0, #0x0 + pop {r4, pc} +_0203CD18: + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CD20 +FUN_0203CD20: ; 0x0203CD20 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl MOD06_022407F8 + ldr r1, _0203CD8C ; =FUN_0203CD90 + add r0, r5, #0x0 + str r6, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203CD8C: .word FUN_0203CD90 + + thumb_func_start FUN_0203CD90 +FUN_0203CD90: ; 0x0203CD90 + push {r4, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + bl MOD06_02240844 + cmp r0, #0x0 + bne _0203CDB0 + mov r0, #0x0 + pop {r4, pc} +_0203CDB0: + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CDB8 +FUN_0203CDB8: ; 0x0203CDB8 + push {r3, lr} + bl ScriptReadHalfword + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203CDC4 +FUN_0203CDC4: ; 0x0203CDC4 + push {r3, lr} + bl ScriptReadHalfword + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203CDD0 +FUN_0203CDD0: ; 0x0203CDD0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + add r5, #0x80 + ldr r4, [r6, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x10] + add r1, #0x2c + mov r2, #0x5 + bl FUN_02047174 + add r0, r4, #0x0 + bl FreeToHeap + mov r0, #0x0 + str r0, [r6, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203CE00 +FUN_0203CE00: ; 0x0203CE00 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02080C38 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203CE0C +FUN_0203CE0C: ; 0x0203CE0C + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, #0x80 + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r1, sp, #0x0 + bl FUN_02034DD4 + mov r0, #0x0 + add sp, #0x14 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203CE8C +FUN_0203CE8C: ; 0x0203CE8C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + ldr r0, [r0, #0x0] + bl MOD05_021E2608 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203CEBC +FUN_0203CEBC: ; 0x0203CEBC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + str r0, [sp, #0x4] + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r6, [r0, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r3, r0, #0x0 + ldr r0, [r7, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r2, r4, #0x0 + bl MOD05_021E2464 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203CF04 +FUN_0203CF04: ; 0x0203CF04 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Pokedex_CountSinnohDexSeenMons + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF34 +FUN_0203CF34: ; 0x0203CF34 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Pokedex_CountSinnohDexCaughtMons + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF64 +FUN_0203CF64: ; 0x0203CF64 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Pokedex_CountNationalDexSeenMons + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF94 +FUN_0203CF94: ; 0x0203CF94 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Pokedex_CountNationalDexCaughtMons + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CFC4 +FUN_0203CFC4: ; 0x0203CFC4 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203CFC8 +FUN_0203CFC8: ; 0x0203CFC8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetProfileAddr + ldr r1, [r5, #0x8] + str r0, [sp, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + cmp r6, #0x0 + bne _0203D02E + add r0, r7, #0x0 + bl Pokedex_CountSinnohDexSeenMons_OmitMythicals + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + mov r1, #0x2 + mov r2, #0xa + bl FUN_0205F2E4 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02054CC8 + b _0203D048 +_0203D02E: + add r0, r7, #0x0 + bl Pokedex_CountNationalDexCaughtMons_OmitMythicals + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + bl PlayerProfile_GetTrainerGender + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_02054D1C +_0203D048: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D050 +FUN_0203D050: ; 0x0203D050 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + lsr r2, r2, #0x18 + add r3, r4, #0x0 + bl FUN_02046E18 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D0A4 +FUN_0203D0A4: ; 0x0203D0A4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + lsr r2, r2, #0x18 + add r3, r4, #0x0 + bl FUN_02046E18 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D0F8 +FUN_0203D0F8: ; 0x0203D0F8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_02046FA0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D134 +FUN_0203D134: ; 0x0203D134 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_020470AC + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D140 +FUN_0203D140: ; 0x0203D140 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD05_021F4DC8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D150 +FUN_0203D150: ; 0x0203D150 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl MOD05_021F4D80 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D178 +FUN_0203D178: ; 0x0203D178 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_02046DB4 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203D194 +FUN_0203D194: ; 0x0203D194 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD05_021F4E7C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D1A4 +FUN_0203D1A4: ; 0x0203D1A4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020386B4 + ldr r1, _0203D1BC ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D1BC: .word FUN_0203BC04 + + thumb_func_start FUN_0203D1C0 +FUN_0203D1C0: ; 0x0203D1C0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202280C + cmp r0, #0x0 + beq _0203D1EC + mov r0, #0x0 + strh r0, [r4, #0x0] + b _0203D210 +_0203D1EC: + add r0, r5, #0x0 + bl FUN_02022804 + cmp r0, #0x0 + bne _0203D1FC + mov r0, #0x1 + strh r0, [r4, #0x0] + b _0203D210 +_0203D1FC: + add r0, r5, #0x0 + bl SaveGetDirtyBit + cmp r0, #0x0 + beq _0203D20C + mov r0, #0x2 + strh r0, [r4, #0x0] + b _0203D210 +_0203D20C: + mov r0, #0x3 + strh r0, [r4, #0x0] +_0203D210: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203D214 +FUN_0203D214: ; 0x0203D214 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl MOD05_021E85FC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D23C +FUN_0203D23C: ; 0x0203D23C + push {r3, lr} + ldr r0, [r0, #0x74] + bl MOD05_021E3424 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D248 +FUN_0203D248: ; 0x0203D248 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Poketch_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Sav2_Poketch_IsGiven + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D278 +FUN_0203D278: ; 0x0203D278 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl Sav2_Poketch_get + add r1, r5, #0x0 + bl Sav2_Poketch_UnlockApp + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D2A4 +FUN_0203D2A4: ; 0x0203D2A4 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl Sav2_Poketch_get + add r1, r6, #0x0 + bl Sav2_Poketch_AppIsUnlocked + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D2E4 +FUN_0203D2E4: ; 0x0203D2E4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [r4, #0x64] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02031588 + ldr r1, _0203D310 ; =FUN_0203D314 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D310: .word FUN_0203D314 + + thumb_func_start FUN_0203D314 +FUN_0203D314: ; 0x0203D314 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030F20 + cmp r0, #0x2 + bge _0203D324 + mov r0, #0x1 + pop {r4, pc} +_0203D324: + ldr r0, [r4, #0x64] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020315D8 + pop {r4, pc} + + thumb_func_start FUN_0203D330 +FUN_0203D330: ; 0x0203D330 + push {r3, lr} + bl FUN_0203168C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D33C +FUN_0203D33C: ; 0x0203D33C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0205296C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D36C +FUN_0203D36C: ; 0x0203D36C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r1, r0, #0x0 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052C0C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D3A4 +FUN_0203D3A4: ; 0x0203D3A4 + push {r4, lr} + bl ScriptReadHalfword + add r4, r0, #0x0 + cmp r4, #0x5 + beq _0203D3BC + cmp r4, #0x7 + beq _0203D3BC + cmp r4, #0x9 + beq _0203D3BC + cmp r4, #0x6 + bne _0203D3C2 +_0203D3BC: + bl FUN_02031C54 + b _0203D3CA +_0203D3C2: + cmp r4, #0xb + bne _0203D3CA + bl FUN_02031C64 +_0203D3CA: + bl FUN_02031190 + cmp r0, #0x0 + bne _0203D3D8 + add r0, r4, #0x0 + bl FUN_02052B74 +_0203D3D8: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203D3DC +FUN_0203D3DC: ; 0x0203D3DC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl FUN_02013B5C + add r5, r0, #0x0 + cmp r4, #0x0 + bne _0203D432 + ldr r0, [r7, #0x0] + bl FUN_02058448 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + b _0203D434 +_0203D432: + mov r2, #0x0 +_0203D434: + str r5, [sp, #0x0] + ldr r0, [r6, #0x0] + ldr r3, [sp, #0x4] + add r1, r4, #0x0 + bl FUN_02052D08 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D448 +FUN_0203D448: ; 0x0203D448 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0208881C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D458 +FUN_0203D458: ; 0x0203D458 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + bl FUN_02052F74 + bl FUN_02031B50 + ldr r1, _0203D478 ; =FUN_0203D47C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D478: .word FUN_0203D47C + + thumb_func_start FUN_0203D47C +FUN_0203D47C: ; 0x0203D47C + push {r3, lr} + bl FUN_02030F20 + cmp r0, #0x2 + bge _0203D48A + mov r0, #0x1 + pop {r3, pc} +_0203D48A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D490 +FUN_0203D490: ; 0x0203D490 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02058448 + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x0] + ldr r0, [r0, #0x78] + ldr r3, [r7, #0x0] + bl FUN_02052A10 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D4E8 +FUN_0203D4E8: ; 0x0203D4E8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_020527A8 + strh r0, [r4, #0x0] + ldrh r0, [r4, #0x0] + cmp r0, #0x0 + beq _0203D522 + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FreeToHeap +_0203D522: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D528 +FUN_0203D528: ; 0x0203D528 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xa + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + ldr r0, [r5, #0x78] + bl FUN_020524CC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D560 +FUN_0203D560: ; 0x0203D560 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xa + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + ldr r0, [r5, #0x78] + add r2, r7, #0x0 + bl FUN_02052544 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D5B0 +FUN_0203D5B0: ; 0x0203D5B0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D5C8 ; =FUN_0203D5CC + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D5C8: .word FUN_0203D5CC + + thumb_func_start FUN_0203D5CC +FUN_0203D5CC: ; 0x0203D5CC + push {r4-r6, lr} + add r6, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + ldr r0, [r5, #0x78] + bl FUN_02052604 + ldr r1, [r6, #0x64] + add r4, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl GetVarPointer + cmp r4, #0x0 + bne _0203D5F0 + mov r0, #0x0 + pop {r4-r6, pc} +_0203D5F0: + strh r4, [r0, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D5F8 +FUN_0203D5F8: ; 0x0203D5F8 + push {r3, lr} + add r0, #0x80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x34] + ldr r1, [r1, #0x7c] + bl FUN_020534DC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D60C +FUN_0203D60C: ; 0x0203D60C + push {r3, lr} + mov r0, #0x4 + bl FUN_02052B74 + bl FUN_02031C2C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203D61C +FUN_0203D61C: ; 0x0203D61C + push {r3, lr} + bl FUN_02031C64 + bl FUN_02031B50 + mov r0, #0x0 + bl FUN_02052B74 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203D630 +FUN_0203D630: ; 0x0203D630 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r2, r0, #0x0 + ldr r0, [r4, #0x78] + add r1, r6, #0x0 + bl FUN_0205265C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D66C +FUN_0203D66C: ; 0x0203D66C + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D684 ; =FUN_0203D688 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D684: .word FUN_0203D688 + + thumb_func_start FUN_0203D688 +FUN_0203D688: ; 0x0203D688 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052608 + cmp r0, #0x1 + blo _0203D6BC + add r5, #0x80 + strh r0, [r4, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052E10 + mov r0, #0x1 + pop {r3-r5, pc} +_0203D6BC: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D6C4 +FUN_0203D6C4: ; 0x0203D6C4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D6DC ; =FUN_0203D6E0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D6DC: .word FUN_0203D6E0 + + thumb_func_start FUN_0203D6E0 +FUN_0203D6E0: ; 0x0203D6E0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052648 + ldr r1, _0203D724 ; =gMain + ldr r2, [r1, #0x48] + mov r1, #0x2 + tst r1, r2 + beq _0203D716 + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x8 + ldr r0, [r0, #0x78] + bl FUN_02052718 +_0203D716: + cmp r0, #0x0 + beq _0203D720 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203D720: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0203D724: .word gMain + + thumb_func_start FUN_0203D728 +FUN_0203D728: ; 0x0203D728 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02049EA4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D738 +FUN_0203D738: ; 0x0203D738 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerID + add r6, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerGender + add r1, r0, #0x0 + ldr r2, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_0205363C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D774 +FUN_0203D774: ; 0x0203D774 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerID + add r6, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerGender + add r1, r0, #0x0 + add r0, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02053678 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerGender + ldrh r1, [r4, #0x0] + mov r2, #0x2 + bl FUN_020536D0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D7DC +FUN_0203D7DC: ; 0x0203D7DC + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerID + add r6, r0, #0x0 + add r0, r5, #0x0 + bl PlayerProfile_GetTrainerGender + add r1, r0, #0x0 + add r0, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02053678 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D834 +FUN_0203D834: ; 0x0203D834 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl PlayerProfile_SetAvatar + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D868 +FUN_0203D868: ; 0x0203D868 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02048498 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D874 +FUN_0203D874: ; 0x0203D874 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r1, r4, #0x0 + bl FUN_02034E04 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start ScrCmd_getplayergender +ScrCmd_getplayergender: ; 0x0203D8A0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl PlayerProfile_GetTrainerGender + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start ScrCmd_healparty +ScrCmd_healparty: ; 0x0203D8D0 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02046528 + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + bl HealParty + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D8E8 +FUN_0203D8E8: ; 0x0203D8E8 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203D8EC +FUN_0203D8EC: ; 0x0203D8EC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02050024 + ldr r1, _0203D900 ; =FUN_0203D904 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D900: .word FUN_0203D904 + + thumb_func_start FUN_0203D904 +FUN_0203D904: ; 0x0203D904 + push {r3, lr} + bl FUN_02031810 + cmp r0, #0x1 + beq _0203D91A + bl FUN_0202EDF8 + cmp r0, #0x1 + beq _0203D91A + mov r0, #0x1 + pop {r3, pc} +_0203D91A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D920 +FUN_0203D920: ; 0x0203D920 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02050048 + ldr r1, _0203D934 ; =FUN_0203D904 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D934: .word FUN_0203D904 + + thumb_func_start FUN_0203D938 +FUN_0203D938: ; 0x0203D938 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204FF5C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D948 +FUN_0203D948: ; 0x0203D948 + push {r3, lr} + bl ScriptReadHalfword + bl FUN_0204F6DC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D958 +FUN_0203D958: ; 0x0203D958 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Bag_get + add r1, r6, #0x0 + bl Bag_PocketNotEmpty + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D998 +FUN_0203D998: ; 0x0203D998 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034B74 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D9E8 +FUN_0203D9E8: ; 0x0203D9E8 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + add r5, r0, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0x0] + bl FUN_02058E28 + add r0, r5, #0x0 + bl FUN_02059D1C + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203DA78 +FUN_0203DA78: ; 0x0203DA78 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02034BDC + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DAB0 +FUN_0203DAB0: ; 0x0203DAB0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02034BAC + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DAE8 +FUN_0203DAE8: ; 0x0203DAE8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034C0C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DB38 +FUN_0203DB38: ; 0x0203DB38 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034C34 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DB88 +FUN_0203DB88: ; 0x0203DB88 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203DBC6 + bl ErrorHandling +_0203DBC6: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl MOD05_021F1EC0 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DBD4 +FUN_0203DBD4: ; 0x0203DBD4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xc + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + ldr r1, [r5, #0x0] + cmp r1, #0x0 + beq _0203DBFC + strh r0, [r1, #0x0] +_0203DBFC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DC00 +FUN_0203DC00: ; 0x0203DC00 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + lsl r1, r4, #0x5 + ldr r3, [r5, #0x8] + add r2, r0, #0x0 + add r0, r3, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + lsl r4, r6, #0x5 + ldrb r3, [r3, #0x0] + ldr r0, [r5, #0x0] + add r1, r7, r1 + add r2, r2, r4 + bl MOD05_021DAE40 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203DC58 +FUN_0203DC58: ; 0x0203DC58 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021DAF78 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DC70 +FUN_0203DC70: ; 0x0203DC70 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021DAF98 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DC88 +FUN_0203DC88: ; 0x0203DC88 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021DAED4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCA0 +FUN_0203DCA0: ; 0x0203DCA0 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl MOD05_021DAF28 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCB8 +FUN_0203DCB8: ; 0x0203DCB8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064CA8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCC8 +FUN_0203DCC8: ; 0x0203DCC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD06_02241230 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCD8 +FUN_0203DCD8: ; 0x0203DCD8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064CC8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCE8 +FUN_0203DCE8: ; 0x0203DCE8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD06_02241914 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCF8 +FUN_0203DCF8: ; 0x0203DCF8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064D10 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD08 +FUN_0203DD08: ; 0x0203DD08 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064D4C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD18 +FUN_0203DD18: ; 0x0203DD18 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_02064D88 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD34 +FUN_0203DD34: ; 0x0203DD34 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl MOD06_02242A38 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD50 +FUN_0203DD50: ; 0x0203DD50 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020388B4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD60 +FUN_0203DD60: ; 0x0203DD60 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [r5, #0x64] + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r5, #0x0 + add r1, #0x80 + add r2, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r7, #0x0 + bl MOD18_0224CA54 + str r0, [r4, #0x0] + ldr r1, _0203DDBC ; =FUN_0203DDC0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203DDBC: .word FUN_0203DDC0 + + thumb_func_start FUN_0203DDC0 +FUN_0203DDC0: ; 0x0203DDC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl MOD18_0224CA2C + strh r0, [r5, #0x0] + ldrh r1, [r5, #0x0] + ldr r0, _0203DDFC ; =0x0000FFFE + cmp r1, r0 + beq _0203DDF6 + mov r0, #0x1 + pop {r3-r5, pc} +_0203DDF6: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203DDFC: .word 0x0000FFFE + + thumb_func_start FUN_0203DE00 +FUN_0203DE00: ; 0x0203DE00 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + bl MOD18_0224CA58 + strb r0, [r4, #0x0] + ldr r1, _0203DE34 ; =FUN_0203DE38 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203DE34: .word FUN_0203DE38 + + thumb_func_start FUN_0203DE38 +FUN_0203DE38: ; 0x0203DE38 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + bl FUN_020546C8 + pop {r3, pc} + + thumb_func_start FUN_0203DE4C +FUN_0203DE4C: ; 0x0203DE4C + push {r3, lr} + bl MOD11_0224CA94 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DE58 +FUN_0203DE58: ; 0x0203DE58 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r5, #0x0 + bl MOD18_0224CAA0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203DE80 +FUN_0203DE80: ; 0x0203DE80 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r5, #0x0 + bl MOD18_0224CAB4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203DEA8 +FUN_0203DEA8: ; 0x0203DEA8 + push {r3, lr} + sub sp, #0x8 + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + mov r1, #0x1 + ldr r0, [r0, #0x74] + add r2, r1, #0x0 + bl MOD06_02242BE0 + mov r0, #0x1 + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DEC4 +FUN_0203DEC4: ; 0x0203DEC4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r4, r0, #0x0 + bne _0203DEEC + bl ErrorHandling +_0203DEEC: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205889C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DEF8 +FUN_0203DEF8: ; 0x0203DEF8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r4, r0, #0x0 + bne _0203DF20 + bl ErrorHandling +_0203DF20: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205889C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DF2C +FUN_0203DF2C: ; 0x0203DF2C + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02066818 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203DF38 +FUN_0203DF38: ; 0x0203DF38 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl Sav2_Mailbox_get + mov r1, #0x0 + bl Mailbox_CountMessages + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DF64 +FUN_0203DF64: ; 0x0203DF64 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_02063650 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203DF84 +FUN_0203DF84: ; 0x0203DF84 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl Script_GetTimeOfDay + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DFA8 +FUN_0203DFA8: ; 0x0203DFA8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r5, r0, #0x0 + bl LCRandom + add r1, r5, #0x0 + bl _s32_div_f + strh r1, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DFE0 +FUN_0203DFE0: ; 0x0203DFE0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r5, r0, #0x0 + bl LCRandom + add r1, r5, #0x0 + bl _s32_div_f + strh r1, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E018 +FUN_0203E018: ; 0x0203E018 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r4, #0x0 + bl MOD05_021F3A18 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E054 +FUN_0203E054: ; 0x0203E054 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r1, r0, #0x0 + add r0, r5, #0x0 + bl MOD05_021F3AB4 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E078 +FUN_0203E078: ; 0x0203E078 + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r3, r0, #0x0 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD05_021F3B7C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E0CC +FUN_0203E0CC: ; 0x0203E0CC + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r3, r0, #0x0 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD05_021F3B4C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E120 +FUN_0203E120: ; 0x0203E120 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + mov r1, #0x82 + lsl r1, r1, #0x8 + bl FUN_0205F3F8 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E138 +FUN_0203E138: ; 0x0203E138 + push {r4, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + ldr r0, [r4, #0xc] + bl SavArray_Flags_get + mov r1, #0x1 + bl FUN_0205F2D4 + ldr r0, [r4, #0xc] + bl FUN_020289A4 + mov r1, #0x1 + bl FUN_020289B0 + add r1, r4, #0x0 + add r1, #0x98 + str r0, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_02048C58 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203E168 +FUN_0203E168: ; 0x0203E168 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r7, #0x0 + sub r0, #0x10 + cmp r0, #0xa + bhi _0203E23A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0203E1EA: ; jump table (using 16-bit offset) + .short _0203E200 - _0203E1EA - 2; case 0 + .short _0203E20C - _0203E1EA - 2; case 1 + .short _0203E218 - _0203E1EA - 2; case 2 + .short _0203E226 - _0203E1EA - 2; case 3 + .short _0203E23A - _0203E1EA - 2; case 4 + .short _0203E226 - _0203E1EA - 2; case 5 + .short _0203E226 - _0203E1EA - 2; case 6 + .short _0203E226 - _0203E1EA - 2; case 7 + .short _0203E226 - _0203E1EA - 2; case 8 + .short _0203E226 - _0203E1EA - 2; case 9 + .short _0203E226 - _0203E1EA - 2; case 10 +_0203E200: + mov r0, #0x4 + mov r6, #0x1 + bl FUN_02029120 + str r0, [r5, #0x0] + b _0203E23E +_0203E20C: + mov r0, #0x4 + mov r6, #0x1 + bl FUN_0202912C + str r0, [r5, #0x0] + b _0203E23E +_0203E218: + ldr r0, [sp, #0x0] + mov r1, #0x4 + mov r6, #0x1 + bl FUN_02029138 + str r0, [r5, #0x0] + b _0203E23E +_0203E226: + sub r7, #0x13 + lsl r0, r7, #0x18 + ldr r1, [sp, #0x0] + lsr r0, r0, #0x18 + mov r2, #0x4 + mov r6, #0x1 + bl FUN_0202914C + str r0, [r5, #0x0] + b _0203E23E +_0203E23A: + mov r0, #0x1 + pop {r3-r7, pc} +_0203E23E: + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r5, #0x0] + add r0, #0x98 + ldr r0, [r0, #0x0] + add r2, r6, #0x0 + bl FUN_02028AD4 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E254 +FUN_0203E254: ; 0x0203E254 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203E258 +FUN_0203E258: ; 0x0203E258 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020271A4 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E29C +FUN_0203E29C: ; 0x0203E29C + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020270D8 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E2F8 +FUN_0203E2F8: ; 0x0203E2F8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r7, #0x0 + bl FUN_02027114 + cmp r6, r0 + bhi _0203E352 + mov r0, #0x1 + b _0203E354 +_0203E352: + mov r0, #0x0 +_0203E354: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E35C +FUN_0203E35C: ; 0x0203E35C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + bl FUN_02027264 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E38C +FUN_0203E38C: ; 0x0203E38C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r6, #0x0 + bl FUN_02027100 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E3D0 +FUN_0203E3D0: ; 0x0203E3D0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl Pokedex_HasCompletedSinnohDex + cmp r0, #0x1 + bne _0203E404 + mov r0, #0x1 + strh r0, [r4, #0x0] +_0203E404: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E408 +FUN_0203E408: ; 0x0203E408 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl Pokedex_HasCompletedNationalDex + cmp r0, #0x1 + bne _0203E43C + mov r0, #0x1 + strh r0, [r4, #0x0] +_0203E43C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E440 +FUN_0203E440: ; 0x0203E440 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x20 + mov r2, #0x0 + bl FUN_02038AF4 + str r0, [r4, #0x0] + ldr r1, _0203E46C ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203E46C: .word FUN_0203BB90 + + thumb_func_start FUN_0203E470 +FUN_0203E470: ; 0x0203E470 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x20 + mov r2, #0x1 + bl FUN_02038AF4 + str r0, [r4, #0x0] + ldr r1, _0203E49C ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203E49C: .word FUN_0203BB90 + + thumb_func_start FUN_0203E4A0 +FUN_0203E4A0: ; 0x0203E4A0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl MOD06_0224CBB0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E4B0 +FUN_0203E4B0: ; 0x0203E4B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl MOD06_0224CC24 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E4D8 +FUN_0203E4D8: ; 0x0203E4D8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203E4F0 +FUN_0203E4F0: ; 0x0203E4F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r4, #0x0 + bl FUN_0202A0E8 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E510 +FUN_0203E510: ; 0x0203E510 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl GetVarPointer + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r7, #0x0 + bl FUN_0202A150 + ldr r1, _0203E564 ; =0xFFFF0000 + and r1, r0 + lsr r1, r1, #0x10 + strh r1, [r4, #0x0] + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203E564: .word 0xFFFF0000 + + thumb_func_start FUN_0203E568 +FUN_0203E568: ; 0x0203E568 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r1, [r5, #0x8] + add r2, r1, #0x1 + str r2, [r5, #0x8] + lsl r2, r4, #0x10 + add r4, r2, #0x0 + orr r4, r0 + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + beq _0203E59C + cmp r0, #0x1 + beq _0203E5B0 + cmp r0, #0x2 + beq _0203E5C4 + b _0203E5D6 +_0203E59C: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A11C + b _0203E5D6 +_0203E5B0: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A07C + b _0203E5D6 +_0203E5C4: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A0A8 +_0203E5D6: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E5DC +FUN_0203E5DC: ; 0x0203E5DC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022504 + ldr r1, [r5, #0x8] + str r0, [sp, #0x4] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02034E24 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02034E28 + add r7, r0, #0x0 + cmp r4, #0x0 + beq _0203E62C + cmp r4, #0x1 + beq _0203E642 + b _0203E66E +_0203E62C: + ldr r0, [sp, #0x0] + bl FUN_0205F1F4 + ldr r0, [sp, #0x4] + bl FUN_02060FD0 + mov r0, #0x1e + strh r0, [r6, #0x0] + mov r0, #0x0 + strh r0, [r7, #0x0] + b _0203E66E +_0203E642: + ldr r0, [sp, #0x0] + bl FUN_0205F204 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02061574 + mov r0, #0x4 + bl FUN_0202912C + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x1 + add r0, #0x98 + ldr r0, [r0, #0x0] + bl FUN_02028AD4 + mov r0, #0x0 + strh r0, [r6, #0x0] + strh r0, [r7, #0x0] +_0203E66E: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E674 +FUN_0203E674: ; 0x0203E674 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0206015C + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E684 +FUN_0203E684: ; 0x0203E684 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl MOD06_022456E8 + strh r0, [r6, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E6B4 +FUN_0203E6B4: ; 0x0203E6B4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064E20 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E6C4 +FUN_0203E6C4: ; 0x0203E6C4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + mov r1, #0x0 + add r6, r0, #0x0 + mov r0, #0x41 + add r2, r1, #0x0 + bl FUN_0200433C + add r5, #0x80 + ldrh r1, [r4, #0x0] + ldr r0, [r5, #0x0] + add r2, r6, #0x0 + bl MOD06_0224525C + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E6FC +FUN_0203E6FC: ; 0x0203E6FC + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl MOD06_02245340 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E72C +FUN_0203E72C: ; 0x0203E72C + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055560 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203E744 +FUN_0203E744: ; 0x0203E744 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F688 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E774 +FUN_0203E774: ; 0x0203E774 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl Pokedex_CountSinnohDexSeenMons + add r4, r0, #0x0 + bl LCRandom + add r1, r4, #0x0 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x0] + mov r1, #0x19 + strh r1, [r0, #0x0] + mov r4, #0x1 + mov r5, #0x0 +_0203E7B6: + add r0, r7, #0x0 + add r1, r4, #0x0 + bl Pokedex_CheckMonSeenFlag + cmp r0, #0x1 + bne _0203E7DC + add r0, r4, #0x0 + bl SpeciesToSinnohDexNo + cmp r0, #0x0 + beq _0203E7DC + cmp r5, r6 + bne _0203E7D6 + ldr r0, [sp, #0x0] + strh r4, [r0, #0x0] + b _0203E7E8 +_0203E7D6: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_0203E7DC: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _0203E7EC ; =0x000001ED + cmp r4, r0 + bls _0203E7B6 +_0203E7E8: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203E7EC: .word 0x000001ED + + thumb_func_start FUN_0203E7F0 +FUN_0203E7F0: ; 0x0203E7F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r1, r4, #0x0 + bl FUN_0205F5A4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E81C +FUN_0203E81C: ; 0x0203E81C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + bl FUN_0205F594 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E848 +FUN_0203E848: ; 0x0203E848 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202AA00 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E858 +FUN_0203E858: ; 0x0203E858 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02060490 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E870 +FUN_0203E870: ; 0x0203E870 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r4, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r1, [r1, #0x0] + mov r0, #0xb + bl MOD06_0224884C + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E894 +FUN_0203E894: ; 0x0203E894 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl MOD06_022488EC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E8C4 +FUN_0203E8C4: ; 0x0203E8C4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl MOD06_022488F4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E8F4 +FUN_0203E8F4: ; 0x0203E8F4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + ldr r0, [r5, #0x74] + ldr r1, [r4, #0x0] + mov r3, #0xb + bl FUN_02060790 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E928 +FUN_0203E928: ; 0x0203E928 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl MOD06_022488CC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E940 +FUN_0203E940: ; 0x0203E940 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + bl FUN_02024D4C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E954 +FUN_0203E954: ; 0x0203E954 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + bl FUN_02024CE0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E968 +FUN_0203E968: ; 0x0203E968 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + mov r0, #0x0 + strh r0, [r6, #0x0] + cmp r4, #0x1 + bne _0203E9AE + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + bl Pokedex_SetNatDexFlag + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_PlayerData_GetProfileAddr + bl PlayerProfile_SetNatDexFlag + b _0203E9C8 +_0203E9AE: + cmp r4, #0x2 + bne _0203E9C4 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + bl Pokedex_GetNatDexFlag + strh r0, [r6, #0x0] + b _0203E9C8 +_0203E9C4: + bl ErrorHandling +_0203E9C8: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E9CC +FUN_0203E9CC: ; 0x0203E9CC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r4, #0x0 + bl GetPartyMonByIndex + add r5, r0, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl GetMonData + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl GetMonData + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl GetMonData + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl GetMonData + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl GetMonData + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl GetMonData + add r1, r4, r6 + add r2, r7, r1 + ldr r1, [sp, #0x4] + add r2, r1, r2 + ldr r1, [sp, #0x8] + add r1, r1, r2 + add r1, r0, r1 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203EA68 +FUN_0203EA68: ; 0x0203EA68 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, sp, #0x0 + bl GF_RTC_CopyDate + ldr r0, [sp, #0xc] + strh r0, [r4, #0x0] + mov r0, #0x0 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EA90 +FUN_0203EA90: ; 0x0203EA90 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl MOD06_022411F4 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203EAB0 +FUN_0203EAB0: ; 0x0203EAB0 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r7, #0x0 + bl GetPartyMonByIndex + mov r1, #0x5 + mov r2, #0x0 + bl GetMonData + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r5, #0x0 + bl MOD05_021F61E8 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl MOD05_021F61DC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203EB20 +FUN_0203EB20: ; 0x0203EB20 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + add r4, #0x80 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + bl MOD06_0224C27C + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EB48 +FUN_0203EB48: ; 0x0203EB48 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r2, r0, #0x0 + add r5, #0x80 + lsl r1, r4, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r5, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD06_0224C520 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EB88 +FUN_0203EB88: ; 0x0203EB88 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r2, r1, #0x1 + str r2, [r5, #0x8] + ldrb r6, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r7, [sp, #0x0] + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x8] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_020607D4 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start ScrCmd_gameversion +ScrCmd_gameversion: ; 0x0203EBC8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + mov r1, #GAME_VERSION + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start ScrCmd_givewallpaper +ScrCmd_givewallpaper: ; 0x0203EBE4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + add r0, r6, #0x0 + bl ScriptEnvironment_GetSav2Ptr + bl Sav2_PlayerData_GetProfileAddr + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + ldr r0, [r6, #0xc] + bl GetStoragePCPointer + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + ldr r2, [sp, #0x8] + ldr r3, [sp, #0xc] + add r1, r7, #0x0 + bl MOD06_0224D14C + add r5, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + beq _0203EC7E + cmp r5, #0x7 + ble _0203EC88 +_0203EC7E: + mov r0, #0xff + strh r0, [r4, #0x0] + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0203EC88: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl PCStorage_IsBonusWallpaperUnlocked + cmp r0, #0x0 + beq _0203EC98 + mov r0, #0x0 + b _0203ECA2 +_0203EC98: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl PCStorage_UnlockBonusWallpaper + add r0, r5, #0x1 +_0203ECA2: + strh r0, [r4, #0x0] + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203ECAC +FUN_0203ECAC: ; 0x0203ECAC + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02026CB4 + bl FUN_020269CC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203ECD8 +FUN_0203ECD8: ; 0x0203ECD8 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl MOD06_0224C678 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ECF4 +FUN_0203ECF4: ; 0x0203ECF4 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl MOD06_0224C6E8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ED10 +FUN_0203ED10: ; 0x0203ED10 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl MOD06_0224C6F4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ED2C +FUN_0203ED2C: ; 0x0203ED2C + push {r4-r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl Sav2_Pokedex_get + add r6, r0, #0x0 + mov r0, #0x20 + bl AllocMonZeroed + add r4, r0, #0x0 + bl ZeroMonData + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x32 + mov r3, #0x20 + bl CreateMon + add r0, r6, #0x0 + add r1, r4, #0x0 + bl Pokedex_SetMonSeenFlag + add r0, r4, #0x0 + bl FreeToHeap + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start ScrCmd_pcfreespace +ScrCmd_pcfreespace: ; 0x0203ED70 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl GetStoragePCPointer + bl PCStorage_CountMonsAndEggsInAllBoxes + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #0x87 + lsl r0, r0, #0x2 + sub r0, r0, r1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203EDA4 +FUN_0203EDA4: ; 0x0203EDA4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x16 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0x0 + add r5, #0x80 + str r0, [r4, #0x0] + ldr r0, [r5, #0x0] + bl MOD05_021E7184 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EDC8 +FUN_0203EDC8: ; 0x0203EDC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x16 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl MOD05_021E71E8 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EDE0 +FUN_0203EDE0: ; 0x0203EDE0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r0, #0x0 + add r4, #0x80 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + bl MOD06_0224E554 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EE08 +FUN_0203EE08: ; 0x0203EE08 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0206486C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE18 +FUN_0203EE18: ; 0x0203EE18 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020649D4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE28 +FUN_0203EE28: ; 0x0203EE28 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020649B0 + cmp r0, #0x0 + beq _0203EE4E + mov r0, #0x1 + b _0203EE50 +_0203EE4E: + mov r0, #0x0 +_0203EE50: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EE58 +FUN_0203EE58: ; 0x0203EE58 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD06_0224E764 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE68 +FUN_0203EE68: ; 0x0203EE68 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl MOD06_0224E7C4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE78 +FUN_0203EE78: ; 0x0203EE78 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r4, #0x0 + bl FUN_0202A170 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EE98 +FUN_0203EE98: ; 0x0203EE98 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + add r1, r6, #0x0 + bl PartyHasMon + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203EED8 +FUN_0203EED8: ; 0x0203EED8 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, sp, #0x4 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + str r0, [sp, #0x0] + bl GetPartyCount + add r4, #0x80 + add r6, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r7, r0, #0x0 + mov r5, #0x0 + cmp r6, #0x0 + ble _0203EF4E +_0203EF18: + ldr r0, [sp, #0x0] + add r1, r5, #0x0 + bl GetPartyMonByIndex + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl GetMonData + ldr r1, _0203EF54 ; =0x00000182 + cmp r0, r1 + bne _0203EF48 + add r0, r4, #0x0 + mov r1, #0x70 + add r2, sp, #0x4 + bl SetMonData + add r0, r4, #0x0 + bl CalcMonLevelAndStats + add r0, r7, #0x0 + add r1, r4, #0x0 + bl Pokedex_SetMonCaughtFlag +_0203EF48: + add r5, r5, #0x1 + cmp r5, r6 + blt _0203EF18 +_0203EF4E: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0203EF54: .word 0x00000182 + + thumb_func_start FUN_0203EF58 +FUN_0203EF58: ; 0x0203EF58 + push {r3-r7, lr} + sub sp, #0x30 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_PlayerParty_get + str r0, [sp, #0xc] + bl GetPartyCount + add r2, sp, #0x18 + mov r4, #0x0 + ldr r3, _0203F008 ; =UNK_020F34FC + str r0, [sp, #0x8] + add r7, r2, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [sp, #0x8] + str r4, [sp, #0x4] + cmp r0, #0x0 + ble _0203EFFC + mov r5, #0x1 + str r7, [sp, #0x14] +_0203EFA2: + ldr r0, [sp, #0xc] + add r1, r4, #0x0 + bl GetPartyMonByIndex + add r6, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonData + str r0, [sp, #0x10] + add r0, r6, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetMonData + add r3, r0, #0x0 + mov r0, #0x67 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x2 + cmp r1, r0 + bne _0203EFF2 + mov r2, #0x0 + add r1, r2, #0x0 + str r3, [r7, #0x0] + cmp r4, #0x0 + ble _0203EFE8 + ldr r6, [sp, #0x14] +_0203EFD8: + ldr r0, [r6, #0x0] + cmp r3, r0 + bne _0203EFE0 + add r2, r5, #0x0 +_0203EFE0: + add r1, r1, #0x1 + add r6, r6, #0x4 + cmp r1, r4 + blt _0203EFD8 +_0203EFE8: + cmp r2, #0x0 + bne _0203EFF2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0203EFF2: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r7, r7, #0x4 + cmp r4, r0 + blt _0203EFA2 +_0203EFFC: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x1 + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_0203F008: .word UNK_020F34FC + + thumb_func_start FUN_0203F00C +FUN_0203F00C: ; 0x0203F00C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + bl FUN_0205F1C4 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F020 +FUN_0203F020: ; 0x0203F020 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + bl FUN_0205F1D4 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F034 +FUN_0203F034: ; 0x0203F034 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_020389CC + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203F058 +FUN_0203F058: ; 0x0203F058 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl Script_GetHour + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F07C +FUN_0203F07C: ; 0x0203F07C + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r7, r0, #0x0 + bne _0203F0FA + bl ErrorHandling +_0203F0FA: + str r6, [sp, #0x0] + str r4, [sp, #0x4] + ldr r0, [r5, #0x74] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + add r1, r7, #0x0 + bl FUN_02054F50 + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0203F110 +FUN_0203F110: ; 0x0203F110 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r5, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203F164 + bl ErrorHandling +_0203F164: + ldr r0, [r4, #0x74] + add r1, r5, #0x0 + add r2, r7, #0x0 + add r3, r6, #0x0 + bl FUN_0205502C + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0203F174 +FUN_0203F174: ; 0x0203F174 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02054E30 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F19C +FUN_0203F19C: ; 0x0203F19C + push {r4-r7, lr} + sub sp, #0x24 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + mov r6, #0x0 + add r7, r0, #0x0 + add r4, r6, #0x0 + add r5, sp, #0x4 +_0203F1CA: + add r1, r4, #0x0 + add r0, r7, #0x0 + add r1, #0x22 + mov r2, #0x1 + bl FUN_020270D8 + cmp r0, #0x1 + bne _0203F1E0 + mov r0, #0x1 + strh r0, [r5, #0x0] + add r6, r6, #0x1 +_0203F1E0: + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x10 + blt _0203F1CA + cmp r6, #0x0 + bne _0203F1F8 + ldr r0, [sp, #0x0] + ldr r1, _0203F230 ; =0x0000FFFF + add sp, #0x24 + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4-r7, pc} +_0203F1F8: + bl LCRandom + add r1, r6, #0x0 + bl _s32_div_f + mov r4, #0x0 + add r2, sp, #0x4 +_0203F206: + ldrh r0, [r2, #0x0] + cmp r0, #0x1 + bne _0203F212 + cmp r1, #0x0 + beq _0203F21A + sub r1, r1, #0x1 +_0203F212: + add r4, r4, #0x1 + add r2, r2, #0x2 + cmp r4, #0x10 + blt _0203F206 +_0203F21A: + cmp r4, #0x10 + blt _0203F222 + bl ErrorHandling +_0203F222: + ldr r0, [sp, #0x0] + add r4, #0x22 + strh r4, [r0, #0x0] + mov r0, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0203F230: .word 0x0000FFFF + + thumb_func_start FUN_0203F234 +FUN_0203F234: ; 0x0203F234 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + ldr r1, _0203F250 ; =gMain + 0x60 + ldrb r1, [r1, #0x6] + strh r1, [r0, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203F250: .word gMain + 0x60 + + thumb_func_start FUN_0203F254 +FUN_0203F254: ; 0x0203F254 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + mov r1, #0x0 + bl FUN_0205F698 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203F26C +FUN_0203F26C: ; 0x0203F26C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + ldr r0, [r5, #0x0] + ldrb r4, [r1, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + cmp r4, #0x0 + beq _0203F2A0 + add r1, r6, #0x0 + bl FUN_0205F4E4 + b _0203F2A6 +_0203F2A0: + add r1, r6, #0x0 + bl FUN_0205F50C +_0203F2A6: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203F2AC +FUN_0203F2AC: ; 0x0203F2AC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl VarGet + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl BufferContestBackgroundName + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203F2E4 +FUN_0203F2E4: ; 0x0203F2E4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205F6C8 + cmp r0, #0xa + blo _0203F314 + mov r0, #0x1 + b _0203F316 +_0203F314: + mov r0, #0x0 +_0203F316: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F31C +FUN_0203F31C: ; 0x0203F31C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + bl FUN_0205F648 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F348 +FUN_0203F348: ; 0x0203F348 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02027210 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203F38C +FUN_0203F38C: ; 0x0203F38C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02046030 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203F39C +FUN_0203F39C: ; 0x0203F39C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0205F668 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F3AC +FUN_0203F3AC: ; 0x0203F3AC + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02013B5C + bl FUN_02013B74 + cmp r0, #0x20 + bne _0203F3FE + ldr r0, _0203F414 ; =0x0000FFFF + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} +_0203F3FE: + strh r0, [r4, #0x0] + bl FUN_02013BE4 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_0200B518 + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0203F414: .word 0x0000FFFF + + thumb_func_start FUN_0203F418 +FUN_0203F418: ; 0x0203F418 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02013B5C + bl FUN_02013BC8 + cmp r0, #0x1 + bne _0203F444 + mov r0, #0x1 + b _0203F446 +_0203F444: + mov r0, #0x0 +_0203F446: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F44C +FUN_0203F44C: ; 0x0203F44C + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205F710 + cmp r0, #0x5 + blo _0203F47C + mov r0, #0x1 + b _0203F47E +_0203F47C: + mov r0, #0x0 +_0203F47E: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F484 +FUN_0203F484: ; 0x0203F484 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + ldr r5, [r5, #0x0] + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl Sav2_SysInfo_get + add r7, r0, #0x0 + bl Sav2_SysInfo_GetBirthMonth + add r6, r0, #0x0 + add r0, r5, #0x0 + bl Script_GetMonth + cmp r6, r0 + bne _0203F4CE + add r0, r7, #0x0 + bl Sav2_SysInfo_GetBirthDay + add r6, r0, #0x0 + add r0, r5, #0x0 + bl Script_GetDay + cmp r6, r0 + bne _0203F4CE + mov r0, #0x1 + strh r0, [r4, #0x0] + b _0203F4D2 +_0203F4CE: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0203F4D2: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203F4D8 +FUN_0203F4D8: ; 0x0203F4D8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_Pokedex_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl Pokedex_CountSeenUnown + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F508 +FUN_0203F508: ; 0x0203F508 + push {r3-r7, lr} + add r6, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r7, r0, #0x0 + add r0, r6, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r1, r6, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x1c] + ldr r1, [r2, #0x8] + lsl r1, r1, #0x10 + lsr r5, r1, #0x10 + ldr r1, [r2, #0xc] + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r7, #0x3 + blo _0203F54C + ldr r7, _0203F5C8 ; =0x0000010E + b _0203F582 +_0203F54C: + cmp r0, #0x1e + blo _0203F556 + mov r7, #0x43 + lsl r7, r7, #0x2 + b _0203F582 +_0203F556: + bl LCRandom + mov r1, #0x64 + bl _s32_div_f + cmp r1, #0x19 + bge _0203F568 + ldr r7, _0203F5CC ; =0x0000010D + b _0203F582 +_0203F568: + bl LCRandom + mov r1, #0x6 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r1, r0, #0x10 + mov r0, #0x6 + mul r0, r7 + add r0, r1, r0 + lsl r1, r0, #0x1 + ldr r0, _0203F5D0 ; =UNK_020F3538 + ldrh r7, [r0, r1] +_0203F582: + cmp r5, #0xb + bne _0203F59A + cmp r4, #0x1 + bne _0203F58E + mov r4, #0x0 + b _0203F5A4 +_0203F58E: + cmp r4, #0x14 + bne _0203F596 + mov r4, #0x2 + b _0203F5A4 +_0203F596: + mov r4, #0x5 + b _0203F5A4 +_0203F59A: + cmp r5, #0x14 + bne _0203F5A2 + mov r4, #0x1 + b _0203F5A4 +_0203F5A2: + mov r4, #0x3 +_0203F5A4: + mov r5, #0x0 +_0203F5A6: + cmp r5, r4 + beq _0203F5B8 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02034C24 +_0203F5B8: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x4 + blo _0203F5A6 + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0203F5C8: .word 0x0000010E +_0203F5CC: .word 0x0000010D +_0203F5D0: .word UNK_020F3538 + + thumb_func_start FUN_0203F5D4 +FUN_0203F5D4: ; 0x0203F5D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F720 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F604 +FUN_0203F604: ; 0x0203F604 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F740 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F634 +FUN_0203F634: ; 0x0203F634 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F760 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F664 +FUN_0203F664: ; 0x0203F664 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x0 + add r3, sp, #0x0 + add r0, #0x8 +_0203F684: + ldr r6, [r0, #0x0] + ldr r1, [r5, #0x8] + add r6, r6, #0x1 + str r6, [r0, #0x0] + ldrb r1, [r1, #0x0] + add r2, r2, #0x1 + strb r1, [r3, #0x0] + add r3, r3, #0x1 + cmp r2, #0x5 + blt _0203F684 + ldr r1, [r0, #0x0] + ldr r2, [r5, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x0] + ldrb r6, [r2, #0x0] + mov r0, #0x4 + bl FUN_02027E5C + add r1, sp, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + add r7, r0, #0x0 + bl FUN_02027F04 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + add r1, r7, #0x0 + bl FUN_02028094 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FreeToHeap + ldr r0, _0203F6E0 ; =0x0000FFFF + cmp r5, r0 + bne _0203F6D8 + strh r0, [r4, #0x0] + b _0203F6DA +_0203F6D8: + strh r6, [r4, #0x0] +_0203F6DA: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0203F6E0: .word 0x0000FFFF + + thumb_func_start FUN_0203F6E4 +FUN_0203F6E4: ; 0x0203F6E4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + bl FUN_02028074 + ldr r1, _0203F71C ; =0x0000FFFF + cmp r0, r1 + bne _0203F712 + mov r0, #0x0 + b _0203F714 +_0203F712: + mov r0, #0x1 +_0203F714: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203F71C: .word 0x0000FFFF + + thumb_func_start FUN_0203F720 +FUN_0203F720: ; 0x0203F720 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r5, r0, #0x0 + cmp r4, #0x3 + bls _0203F752 + bl ErrorHandling +_0203F752: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205F4A0 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203F760 +FUN_0203F760: ; 0x0203F760 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x20 + ldr r0, [r0, #0xc] + add r2, sp, #0x0 + bl LoadHallOfFame + ldr r1, [sp, #0x0] + add r4, r0, #0x0 + cmp r1, #0x0 + bne _0203F798 + mov r1, #0x0 + strh r1, [r5, #0x0] + bl FreeToHeap + mov r0, #0x1 + pop {r3-r5, pc} +_0203F798: + cmp r1, #0x1 + bne _0203F7AE + mov r1, #0x0 + bl Sav2_HOF_TranslateRecordIdx + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FreeToHeap + mov r0, #0x1 + pop {r3-r5, pc} +_0203F7AE: + cmp r1, #0x2 + bne _0203F7BE + mov r1, #0x0 + strh r1, [r5, #0x0] + bl FreeToHeap + mov r0, #0x1 + pop {r3-r5, pc} +_0203F7BE: + mov r0, #0x0 + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F7C8 +FUN_0203F7C8: ; 0x0203F7C8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + add r2, r6, #0x0 + bl FUN_02037A48 + str r0, [r4, #0x0] + ldr r1, _0203F808 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203F808: .word FUN_0203BC04 + + thumb_func_start FUN_0203F80C +FUN_0203F80C: ; 0x0203F80C + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203F84C + bl ErrorHandling +_0203F84C: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r6, #0x0] + ldrh r0, [r6, #0x0] + cmp r0, #0x7 + bne _0203F85E + mov r0, #0xff + strh r0, [r6, #0x0] +_0203F85E: + ldr r0, [r4, #0x0] + bl FUN_02037A70 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x1 + bne _0203F870 + mov r0, #0x1 + b _0203F872 +_0203F870: + mov r0, #0x0 +_0203F872: + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FreeToHeap + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0203F880 +FUN_0203F880: ; 0x0203F880 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + cmp r4, #0x64 + bls _0203F8A2 + mov r4, #0x64 +_0203F8A2: + bl LCRandom + mov r1, #0x65 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, r4 + bgt _0203F8B8 + mov r0, #0x1 + b _0203F8BA +_0203F8B8: + mov r0, #0x0 +_0203F8BA: + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F8C0 +FUN_0203F8C0: ; 0x0203F8C0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r4, #0x0 + beq _0203F8FC + cmp r4, #0x1 + beq _0203F906 + cmp r4, #0x2 + beq _0203F910 + b _0203F91A +_0203F8FC: + mov r2, #0x0 + mov r3, #0x20 + bl MOD06_0224F12C + b _0203F91E +_0203F906: + mov r2, #0x1 + mov r3, #0x20 + bl MOD06_0224F12C + b _0203F91E +_0203F910: + mov r2, #0x2 + mov r3, #0x20 + bl MOD06_0224F12C + b _0203F91E +_0203F91A: + bl ErrorHandling +_0203F91E: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F924 +FUN_0203F924: ; 0x0203F924 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl SavArray_Flags_get + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F6A8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F954 +FUN_0203F954: ; 0x0203F954 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + cmp r0, #0x0 + bne _0203F978 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl MOD06_02239944 + b _0203F982 +_0203F978: + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl MOD06_02239AAC +_0203F982: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203F988 +FUN_0203F988: ; 0x0203F988 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0203384C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F9B0 +FUN_0203F9B0: ; 0x0203F9B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020286EC + bl FUN_02028448 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F9DC +FUN_0203F9DC: ; 0x0203F9DC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + ldr r1, _0203FA10 ; =0x0000FF79 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #0x1 + bhi _0203FA0C + bl FUN_02025C30 +_0203FA0C: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0203FA10: .word 0x0000FF79 + + thumb_func_start FUN_0203FA14 +FUN_0203FA14: ; 0x0203FA14 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + mov r1, #0x0 + strh r1, [r0, #0x0] + ldr r1, _0203FA54 ; =0x0000012A + cmp r4, r1 + blo _0203FA4E + add r1, #0xf + cmp r4, r1 + bhi _0203FA4E + mov r1, #0x1 + strh r1, [r0, #0x0] +_0203FA4E: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203FA54: .word 0x0000012A + + thumb_func_start FUN_0203FA58 +FUN_0203FA58: ; 0x0203FA58 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl GetVarPointer + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl VarGet + add r7, r0, #0x0 + mov r0, #0x20 + bl ScrStrBufs_new + add r4, r0, #0x0 + ldr r2, _0203FB48 ; =0x00000147 + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0x20 + bl NewMsgDataFromNarc + add r5, r0, #0x0 + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200B518 + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200B518 + ldr r2, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + add r0, r4, #0x0 + mov r1, #0x3 + add r2, r7, #0x0 + bl FUN_0200B518 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl ReadMsgData_ExpandPlaceholders + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl NewString_ReadMsgData + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r7, #0x0 + bl StringCompare + cmp r0, #0x0 + bne _0203FB24 + mov r0, #0x1 + b _0203FB26 +_0203FB24: + mov r0, #0x0 +_0203FB26: + strh r0, [r6, #0x0] + add r0, r7, #0x0 + bl String_dtor + ldr r0, [sp, #0x0] + bl String_dtor + add r0, r5, #0x0 + bl DestroyMsgData + add r0, r4, #0x0 + bl ScrStrBufs_delete + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_0203FB48: .word 0x00000147 + + thumb_func_start FUN_0203FB4C +FUN_0203FB4C: ; 0x0203FB4C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl Sav2_SysInfo_get + mov r1, #0x1 + bl FUN_02023828 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FB64 +FUN_0203FB64: ; 0x0203FB64 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0205296C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FB94 +FUN_0203FB94: ; 0x0203FB94 + push {r3, lr} + bl FUN_02033E74 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBA0 +FUN_0203FBA0: ; 0x0203FBA0 + push {r3, lr} + bl FUN_02033ED0 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBAC +FUN_0203FBAC: ; 0x0203FBAC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02034E48 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBBC +FUN_0203FBBC: ; 0x0203FBBC + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + str r4, [r0, #0x0] + str r6, [r0, #0x8] + mov r1, #0x0 + str r7, [r0, #0xc] + mvn r1, r1 + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x10] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203FC1C +FUN_0203FC1C: ; 0x0203FC1C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl VarGet + ldr r2, [r5, #0x8] + add r1, r0, #0x0 + add r0, r2, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + ldr r0, [r5, #0x0] + ldrb r4, [r2, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203FC4C + bl ErrorHandling +_0203FC4C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020588B8 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203FC58 +FUN_0203FC58: ; 0x0203FC58 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl GetVarPointer + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02065078 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FC80 +FUN_0203FC80: ; 0x0203FC80 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x28 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + bne _0203FCAA + add r0, r5, #0x0 + mov r1, #0x4 + mov r2, #0x3 + bl MOD05_021E8588 + str r0, [r4, #0x0] + bl MOD05_021E84F4 +_0203FCAA: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FCB0 +FUN_0203FCB0: ; 0x0203FCB0 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x28 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + bne _0203FCD6 + ldr r0, [r4, #0x0] + bl MOD05_021E856C + ldr r0, [r4, #0x0] + bl MOD05_021E85E4 +_0203FCD6: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FCDC +FUN_0203FCDC: ; 0x0203FCDC + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_0206367C + mov r0, #0x0 + pop {r3, pc} + .balign 4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index f35fd58e..28fad682 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -149,25 +149,25 @@ UNK_020F3538: ; 0x020F3538 .global gScriptCmdTable gScriptCmdTable: ; 0x020F355C - .word ScrCmd_nop - .word ScrCmd_nop2 - .word ScrCmd_end - .word ScrCmd_delay - .word ScrCmd_loadbyte - .word ScrCmd_loadword - .word ScrCmd_loadbytefromaddr - .word ScrCmd_writebytetoaddr - .word ScrCmd_setptrbyte - .word ScrCmd_copylocal - .word ScrCmd_copybyte - .word ScrCmd_compare_local_to_local - .word ScrCmd_compare_local_to_value - .word ScrCmd_compare_local_to_addr - .word ScrCmd_compare_addr_to_local - .word ScrCmd_compare_addr_to_value - .word ScrCmd_compare_addr_to_addr - .word ScrCmd_compare_var_to_value - .word ScrCmd_compare_var_to_var + .word ScrCmd_Nop + .word ScrCmd_Dummy + .word ScrCmd_End + .word ScrCmd_Wait + .word ScrCmd_LoadByte + .word ScrCmd_LoadWord + .word ScrCmd_LoadByteFromAddr + .word ScrCmd_WriteByteToAddr + .word ScrCmd_SetPtrByte + .word ScrCmd_CopyLocal + .word ScrCmd_CopyByte + .word ScrCmd_CompareLocalToLocal + .word ScrCmd_CompareLocalToValue + .word ScrCmd_CompareLocalToAddr + .word ScrCmd_CompareAddrToLocal + .word ScrCmd_CompareAddrToValue + .word ScrCmd_CompareAddrToAddr + .word ScrCmd_CompareVarToValue + .word ScrCmd_CompareVarToVar .word FUN_02039C40 .word FUN_02039C78 .word FUN_02039CE4 @@ -299,7 +299,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203B81C .word FUN_0203B85C .word FUN_0203B8A0 - .word ScrCmd_givemon + .word ScrCmd_GiveMon .word ScrCmd_giveegg .word ScrCmd_setpartymonmove .word ScrCmd_partymonhasmove @@ -654,7 +654,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_countpartymonsatorbelowlevel .word ScrCmd_survivepsn .word FUN_0203BC2C - .word FUN_02039A10 + .word ScrCmd_DebugWatch .word ScrCmd_message_from .word FUN_0203A098 .word FUN_0203A0FC diff --git a/arm9/global.inc b/arm9/global.inc index d816d92a..c45c0a45 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2699,26 +2699,26 @@ .extern FUN_02039754 .extern RunPokemonCenterScriptsInNewContext .extern FUN_0203989C -.extern ScrCmd_nop -.extern ScrCmd_nop2 -.extern ScrCmd_end -.extern ScrCmd_delay -.extern FUN_02039A10 -.extern ScrCmd_loadbyte -.extern ScrCmd_loadword -.extern ScrCmd_loadbytefromaddr -.extern ScrCmd_writebytetoaddr -.extern ScrCmd_setptrbyte -.extern ScrCmd_copylocal -.extern ScrCmd_copybyte -.extern ScrCmd_compare_local_to_local -.extern ScrCmd_compare_local_to_value -.extern ScrCmd_compare_local_to_addr -.extern ScrCmd_compare_addr_to_local -.extern ScrCmd_compare_addr_to_value -.extern ScrCmd_compare_addr_to_addr -.extern ScrCmd_compare_var_to_value -.extern ScrCmd_compare_var_to_var +.extern ScrCmd_Nop +.extern ScrCmd_Dummy +.extern ScrCmd_End +.extern ScrCmd_Wait +.extern ScrCmd_DebugWatch +.extern ScrCmd_LoadByte +.extern ScrCmd_LoadWord +.extern ScrCmd_LoadByteFromAddr +.extern ScrCmd_WriteByteToAddr +.extern ScrCmd_SetPtrByte +.extern ScrCmd_CopyLocal +.extern ScrCmd_CopyByte +.extern ScrCmd_CompareLocalToLocal +.extern ScrCmd_CompareLocalToValue +.extern ScrCmd_CompareLocalToAddr +.extern ScrCmd_CompareAddrToLocal +.extern ScrCmd_CompareAddrToValue +.extern ScrCmd_CompareAddrToAddr +.extern ScrCmd_CompareVarToValue +.extern ScrCmd_CompareVarToVar .extern FUN_02039C40 .extern FUN_02039C78 .extern FUN_02039CE4 @@ -3320,7 +3320,7 @@ .extern FUN_02044158 .extern FUN_0204416C .extern FUN_02044198 -.extern ScrCmd_givemon +.extern ScrCmd_GiveMon .extern ScrCmd_getpartyspecies .extern ScrCmd_checkpartymonotid .extern ScrCmd_giveegg diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c new file mode 100644 index 00000000..ae25050d --- /dev/null +++ b/arm9/src/scrcmd.c @@ -0,0 +1,182 @@ +#include "scrcmd.h" + +extern u16 *GetVarPointer(struct UnkStruct_0204639C* arg, u16); +extern u16 VarGet(struct UnkStruct_0204639C* arg, u16 wk); + +static BOOL RunPauseTimer(struct ScriptContext* ctx); +static u32 Compare(u16 a, u16 b); + +THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Dummy(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext* ctx) +{ + StopScript(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C* arg = ctx->unk80; + u16 num = ScriptReadHalfword(ctx); + u16 wk = ScriptReadHalfword(ctx); + u16* VarPointer = GetVarPointer(arg, wk); + *VarPointer = num; + ctx->data[0] = wk; + SetupNativeScript(ctx, RunPauseTimer); + return TRUE; +} + +THUMB_FUNC static BOOL RunPauseTimer(struct ScriptContext* ctx) +{ + u16* VarPointer = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); + *VarPointer = (u16)(*VarPointer - 1); + return !(*VarPointer); +} + +THUMB_FUNC BOOL ScrCmd_DebugWatch(struct ScriptContext* ctx) +{ + u16 wk = ScriptReadHalfword(ctx); + VarGet(ctx->unk80, wk); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_LoadByte(struct ScriptContext* ctx) +{ + u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadByte(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_LoadWord(struct ScriptContext* ctx) +{ + u8 index = ScriptReadByte(ctx); + ctx->data[index] = ScriptReadWord(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext* ctx) +{ + u8 index = ScriptReadByte(ctx); + ctx->data[index] = *(u8 *)ScriptReadWord(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_WriteByteToAddr(struct ScriptContext* ctx) +{ + u8* ptr = (u8*)ScriptReadWord(ctx); + *ptr = ScriptReadByte(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetPtrByte(struct ScriptContext* ctx) +{ + u8* ptr = (u8*)ScriptReadWord(ctx); + *ptr = (u8)ctx->data[ScriptReadByte(ctx)]; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx) +{ + u8 index_store = ScriptReadByte(ctx); + u8 index_load = ScriptReadByte(ctx); + ctx->data[index_store] = ctx->data[index_load]; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CopyByte(struct ScriptContext* ctx) +{ + u8 *target = (u8 *)ScriptReadWord(ctx); + u8 *source = (u8 *)ScriptReadWord(ctx); + *target = *source; + return FALSE; +} + +THUMB_FUNC static u32 Compare(u16 a, u16 b) +{ + if (a < b) + { + return 0; + } + else if (a == b) + { + return 1; + } + else + { + return 2; + } +} + +THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx) +{ + u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; + u8 b = (u8)ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx) +{ + u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; + u8 b = ScriptReadByte(ctx); + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx) +{ + u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; + u8 b = *(u8*)ScriptReadWord(ctx); + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx) +{ + u8 a = *(u8*)ScriptReadWord(ctx); + u8 b = (u8)ctx->data[ScriptReadByte(ctx)]; + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx) +{ + u8 a = *(u8*)ScriptReadWord(ctx); + u8 b = (u8)ScriptReadByte(ctx); + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx) +{ + u8 a = *(u8*)ScriptReadWord(ctx); + u8 b = *(u8*)ScriptReadWord(ctx); + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx) +{ + u16 a = *GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 b = ScriptReadHalfword(ctx); + ctx->comparisonResult = (u8)Compare(a, b); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx) +{ + u16 *a = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 *b = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + ctx->comparisonResult = (u8)Compare(*a, *b); + return FALSE; +} diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c index b8bbbcdd..510e181f 100644 --- a/arm9/src/scrcmd_18_c.c +++ b/arm9/src/scrcmd_18_c.c @@ -10,7 +10,7 @@ extern u16 VarGet(struct UnkStruct_0204639C* arg, u16 wk); extern u16 *GetVarPointer(struct UnkStruct_0204639C* arg, u16); extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType); -THUMB_FUNC BOOL ScrCmd_givemon(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx) { u32 mapSec = FUN_02034824(*(ctx->unk80->unk1C)); struct UnkStruct_0204639C *savePtr = ctx->unk80; diff --git a/arm9/src/script.c b/arm9/src/script.c index a5a5a6e4..d067ac79 100644 --- a/arm9/src/script.c +++ b/arm9/src/script.c @@ -27,7 +27,7 @@ THUMB_FUNC u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) return 1; } -THUMB_FUNC void SetupNativeScript(struct ScriptContext *ctx, u8 (*ptr)(struct ScriptContext *)) +THUMB_FUNC void SetupNativeScript(struct ScriptContext *ctx, BOOL (*ptr)(struct ScriptContext *)) { ctx->mode = 2; ctx->nativePtr = ptr; -- cgit v1.2.3 From e3c008e794c07a26445581f8ca8d1369fd703095 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 13 Mar 2021 17:08:05 +0000 Subject: more --- arm9/asm/scrcmd_asm.s | 529 ------------------------------------------------ arm9/asm/unk_02038C78.s | 50 ++--- arm9/global.inc | 50 ++--- arm9/src/scrcmd.c | 254 +++++++++++++++++++++++ 4 files changed, 304 insertions(+), 579 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 493fea57..8b5212dd 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,535 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_02039C40 -FUN_02039C40: ; 0x02039C40 - push {r3-r7, lr} - add r7, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x7 - add r0, r5, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xe - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r7, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl CreateScriptContext - str r0, [r6, #0x0] - ldrb r0, [r4, #0x0] - add r0, r0, #0x1 - strb r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02039C78 -FUN_02039C78: ; 0x02039C78 - push {r3-r7, lr} - str r0, [sp, #0x0] - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x5 - add r0, r5, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x7 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xe - bl FUN_02039438 - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - mov r0, #0x1 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - bl CreateScriptContext - str r0, [r7, #0x0] - ldrb r0, [r4, #0x0] - ldr r1, _02039CC4 ; =FUN_02039CC8 - add r0, r0, #0x1 - strb r0, [r4, #0x0] - ldr r0, [sp, #0x0] - bl SetupNativeScript - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_02039CC4: .word FUN_02039CC8 - - thumb_func_start FUN_02039CC8 -FUN_02039CC8: ; 0x02039CC8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x5 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02039CDE - mov r0, #0x1 - pop {r3, pc} -_02039CDE: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02039CE4 -FUN_02039CE4: ; 0x02039CE4 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x5 - bl FUN_02039438 - mov r1, #0x0 - strb r1, [r0, #0x0] - add r0, r1, #0x0 - pop {r3, pc} - - thumb_func_start ScrCmd_goto -ScrCmd_goto: ; 0x02039CF8 - ; relative jump - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r1, [r4, #0x8] - add r0, r4, #0x0 - add r1, r1, r2 - bl ScriptJump - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start FUN_02039D10 -FUN_02039D10: ; 0x02039D10 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadWord - add r7, r0, #0x0 - ldr r0, [r6, #0x0] - bl FUN_02058448 - cmp r4, r0 - bne _02039D44 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r7 - bl ScriptJump -_02039D44: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02039D48 -FUN_02039D48: ; 0x02039D48 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, [r5, #0x74] - bl FUN_02046534 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r0, r5, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - cmp r6, r4 - bne _02039D72 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r2 - bl ScriptJump -_02039D72: - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02039D78 -FUN_02039D78: ; 0x02039D78 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x9 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r0, r5, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - cmp r0, r4 - bne _02039DA8 - ldr r1, [r5, #0x8] - add r0, r5, #0x0 - add r1, r1, r2 - bl ScriptJump -_02039DA8: - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start ScrCmd_call -ScrCmd_call: ; 0x02039DAC - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadWord - add r2, r0, #0x0 - ldr r1, [r4, #0x8] - add r0, r4, #0x0 - add r1, r1, r2 - bl ScriptCall - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_return -ScrCmd_return: ; 0x02039DC4 - push {r3, lr} - bl ScriptReturn - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start ScrCmd_goto_if -ScrCmd_goto_if: ; 0x02039DD0 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadWord - add r1, r0, #0x0 - lsl r0, r4, #0x1 - add r3, r4, r0 - ldr r0, _02039E00 ; =sScriptConditionTable - ldrb r2, [r5, #0x2] - add r0, r0, r3 - ldrb r0, [r2, r0] - cmp r0, #0x1 - bne _02039DFC - ldr r2, [r5, #0x8] - add r0, r5, #0x0 - add r1, r2, r1 - bl ScriptJump -_02039DFC: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_02039E00: .word sScriptConditionTable - - thumb_func_start ScrCmd_call_if -ScrCmd_call_if: ; 0x02039E04 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadWord - add r1, r0, #0x0 - lsl r0, r4, #0x1 - add r3, r4, r0 - ldr r0, _02039E34 ; =sScriptConditionTable - ldrb r2, [r5, #0x2] - add r0, r0, r3 - ldrb r0, [r2, r0] - cmp r0, #0x1 - bne _02039E30 - ldr r2, [r5, #0x8] - add r0, r5, #0x0 - add r1, r2, r1 - bl ScriptCall -_02039E30: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 -_02039E34: .word sScriptConditionTable - - thumb_func_start ScrCmd_setflag -ScrCmd_setflag: ; 0x02039E38 - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FlagSet - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_clearflag -ScrCmd_clearflag: ; 0x02039E50 - push {r4, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FlagClear - mov r0, #0x0 - pop {r4, pc} - - thumb_func_start ScrCmd_checkflag -ScrCmd_checkflag: ; 0x02039E68 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - bl FlagCheck - strb r0, [r4, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02039E84 -FUN_02039E84: ; 0x02039E84 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldrh r1, [r6, #0x0] - add r0, r5, #0x0 - bl FlagCheck - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02039EC0 -FUN_02039EC0: ; 0x02039EC0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldrh r1, [r1, #0x0] - add r0, r4, #0x0 - bl FlagSet - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_settrainerflag -ScrCmd_settrainerflag: ; 0x02039EE8 - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl TrainerFlagSet - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_cleartrainerflag -ScrCmd_cleartrainerflag: ; 0x02039F0C - push {r3-r5, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl TrainerFlagClear - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_checktrainerflag -ScrCmd_checktrainerflag: ; 0x02039F30 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r4, #0x0 - bl TrainerFlagCheck - strb r0, [r5, #0x2] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_addvar -ScrCmd_addvar: ; 0x02039F58 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - ldrh r1, [r4, #0x0] - add r0, r1, r0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_subvar -ScrCmd_subvar: ; 0x02039F88 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - ldrh r1, [r4, #0x0] - sub r0, r1, r0 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_setvar -ScrCmd_setvar: ; 0x02039FB8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_copyvar -ScrCmd_copyvar: ; 0x02039FDC - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - ldrh r0, [r0, #0x0] - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_setorcopyvar -ScrCmd_setorcopyvar: ; 0x0203A00C - push {r3-r5, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start ScrCmd_message -ScrCmd_message: ; 0x0203A038 - push {r3, lr} - ldr r2, [r0, #0x8] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [r0, #0x78] - bl MOD05_ShowMessageInField - mov r0, #0x0 - pop {r3, pc} - thumb_func_start ScrCmd_message_from ScrCmd_message_from: ; 0x0203A04C ; message_from bank, id diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 28fad682..86085965 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -168,31 +168,31 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_CompareAddrToAddr .word ScrCmd_CompareVarToValue .word ScrCmd_CompareVarToVar - .word FUN_02039C40 - .word FUN_02039C78 - .word FUN_02039CE4 - .word ScrCmd_goto - .word FUN_02039D10 - .word FUN_02039D48 - .word FUN_02039D78 - .word ScrCmd_call - .word ScrCmd_return - .word ScrCmd_goto_if - .word ScrCmd_call_if - .word ScrCmd_setflag - .word ScrCmd_clearflag - .word ScrCmd_checkflag - .word FUN_02039E84 - .word FUN_02039EC0 - .word ScrCmd_settrainerflag - .word ScrCmd_cleartrainerflag - .word ScrCmd_checktrainerflag - .word ScrCmd_addvar - .word ScrCmd_subvar - .word ScrCmd_setvar - .word ScrCmd_copyvar - .word ScrCmd_setorcopyvar - .word ScrCmd_message + .word ScrCmd_RunScript + .word ScrCmd_RunScriptWait + .word ScrCmd_RestartCurrentScript + .word ScrCmd_GoTo + .word ScrCmd_ObjectGoTo + .word ScrCmd_BgGoTo + .word ScrCmd_DirectionGoTo + .word ScrCmd_Call + .word ScrCmd_Return + .word ScrCmd_GoToIf + .word ScrCmd_CallIf + .word ScrCmd_SetFlag + .word ScrCmd_ClearFlag + .word ScrCmd_CheckFlag + .word ScrCmd_CheckFlagVar + .word ScrCmd_SetFlagVar + .word ScrCmd_SetTrainerFlag + .word ScrCmd_ClearTrainerFlag + .word ScrCmd_CheckTrainerFlag + .word ScrCmd_AddVar + .word ScrCmd_SubVar + .word ScrCmd_SetVar + .word ScrCmd_CopyVar + .word ScrCmd_SetOrCopyVar + .word ScrCmd_Message .word FUN_0203A2C4 .word FUN_0203A304 .word FUN_0203A388 diff --git a/arm9/global.inc b/arm9/global.inc index c45c0a45..cec9d379 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2719,31 +2719,31 @@ .extern ScrCmd_CompareAddrToAddr .extern ScrCmd_CompareVarToValue .extern ScrCmd_CompareVarToVar -.extern FUN_02039C40 -.extern FUN_02039C78 -.extern FUN_02039CE4 -.extern ScrCmd_goto -.extern FUN_02039D10 -.extern FUN_02039D48 -.extern FUN_02039D78 -.extern ScrCmd_call -.extern ScrCmd_return -.extern ScrCmd_goto_if -.extern ScrCmd_call_if -.extern ScrCmd_setflag -.extern ScrCmd_clearflag -.extern ScrCmd_checkflag -.extern FUN_02039E84 -.extern FUN_02039EC0 -.extern ScrCmd_settrainerflag -.extern ScrCmd_cleartrainerflag -.extern ScrCmd_checktrainerflag -.extern ScrCmd_addvar -.extern ScrCmd_subvar -.extern ScrCmd_setvar -.extern ScrCmd_copyvar -.extern ScrCmd_setorcopyvar -.extern ScrCmd_message +.extern ScrCmd_RunScript +.extern ScrCmd_RunScriptWait +.extern ScrCmd_RestartCurrentScript +.extern ScrCmd_GoTo +.extern ScrCmd_ObjectGoTo +.extern ScrCmd_BgGoTo +.extern ScrCmd_DirectionGoTo +.extern ScrCmd_Call +.extern ScrCmd_Return +.extern ScrCmd_GoToIf +.extern ScrCmd_CallIf +.extern ScrCmd_SetFlag +.extern ScrCmd_ClearFlag +.extern ScrCmd_CheckFlag +.extern ScrCmd_CheckFlagVar +.extern ScrCmd_SetFlagVar +.extern ScrCmd_SetTrainerFlag +.extern ScrCmd_ClearTrainerFlag +.extern ScrCmd_CheckTrainerFlag +.extern ScrCmd_AddVar +.extern ScrCmd_SubVar +.extern ScrCmd_SetVar +.extern ScrCmd_CopyVar +.extern ScrCmd_SetOrCopyVar +.extern ScrCmd_Message .extern ScrCmd_message_from .extern FUN_0203A098 .extern FUN_0203A0FC diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index ae25050d..91ee2f03 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -2,9 +2,23 @@ extern u16 *GetVarPointer(struct UnkStruct_0204639C* arg, u16); extern u16 VarGet(struct UnkStruct_0204639C* arg, u16 wk); +extern void *FUN_02039438(struct UnkStruct_0204639C* arg, u32 id); +extern void *CreateScriptContext(struct UnkStruct_0204639C* arg, u16 id); +extern u8 FUN_02058448(u32 param0); +extern u32 FUN_02046534(u32 param0); +extern void FlagSet(struct UnkStruct_0204639C *arg, u16 flag); +extern void FlagClear(struct UnkStruct_0204639C *arg, u16 flag); +extern u8 FlagCheck(struct UnkStruct_0204639C *arg, u16 flag); +extern void TrainerFlagSet(struct UnkStruct_0204639C *arg, u16 flag); +extern void TrainerFlagClear(struct UnkStruct_0204639C *arg, u16 flag); +extern u8 TrainerFlagCheck(struct UnkStruct_0204639C *arg, u16 flag); +extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u8 id); static BOOL RunPauseTimer(struct ScriptContext* ctx); static u32 Compare(u16 a, u16 b); +static BOOL FUN_02039CC8(struct ScriptContext* ctx); + +extern u8 sScriptConditionTable[6][3]; THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext* ctx) { @@ -180,3 +194,243 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx) ctx->comparisonResult = (u8)Compare(*a, *b); return FALSE; } + +THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C* unk80 = ctx->unk80; + u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x7); + u32 **unk2 = (u32 **)FUN_02039438(unk80, 0xe); + u16 id = ScriptReadHalfword(ctx); + + *unk2 = CreateScriptContext(unk80, id); + *unk1 = (u8)(*unk1 + 1); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C* unk80 = ctx->unk80; + u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x5); + u8 *unk2 = (u8 *)FUN_02039438(unk80, 0x7); + u32 **unk3 = (u32 **)FUN_02039438(unk80, 0xe); + + u16 id = ScriptReadHalfword(ctx); + *unk1 = 1; + *unk3 = CreateScriptContext(unk80, id); + *unk2 = (u8)(*unk2 + 1); + + SetupNativeScript(ctx, FUN_02039CC8); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext* ctx) +{ + u8* unk = FUN_02039438(ctx->unk80, 0x5); + + if (*unk == 0) + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx) +{ + u8* unk = (u8 *)FUN_02039438(ctx->unk80, 0x5); + + *unk = 0; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GoTo(struct ScriptContext* ctx) +{ + s32 offset = (s32)ScriptReadWord(ctx); + ScriptJump(ctx, ctx->scriptPtr + offset); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx) +{ + u32* unk = FUN_02039438(ctx->unk80, 0xa); + u8 id = ScriptReadByte(ctx); + s32 offset = (s32)ScriptReadWord(ctx); + if (FUN_02058448(*unk) == id) + { + ScriptJump(ctx, ctx->scriptPtr + offset); + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx) +{ + u32 bgId = FUN_02046534(ctx->unk74); + u8 id = ScriptReadByte(ctx); + s32 offset = (s32)ScriptReadWord(ctx); + + if (bgId == id) + { + ScriptJump(ctx, ctx->scriptPtr + offset); + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx) +{ + u32 *playerDirection = FUN_02039438(ctx->unk80, 0x9); + u8 dir = ScriptReadByte(ctx); + s32 offset = (s32)ScriptReadWord(ctx); + + if (*playerDirection == dir) + { + ScriptJump(ctx, ctx->scriptPtr + offset); + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Call(struct ScriptContext* ctx) +{ + s32 offset = (s32)ScriptReadWord(ctx); + ScriptCall(ctx, ctx->scriptPtr + offset); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Return(struct ScriptContext* ctx) +{ + ScriptReturn(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext* ctx) +{ + u8 compareType = ScriptReadByte(ctx); + s32 offset = (s32)ScriptReadWord(ctx); + + if (sScriptConditionTable[compareType][ctx->comparisonResult] == TRUE) + { + ScriptJump(ctx, ctx->scriptPtr + offset); + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx) +{ + u8 compareType = ScriptReadByte(ctx); + s32 offset = (s32)ScriptReadWord(ctx); + + if (sScriptConditionTable[compareType][ctx->comparisonResult] == TRUE) + { + ScriptCall(ctx, ctx->scriptPtr + offset); + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = ScriptReadHalfword(ctx); + FlagSet(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = ScriptReadHalfword(ctx); + FlagClear(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = ScriptReadHalfword(ctx); + ctx->comparisonResult = FlagCheck(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 *wk2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *wk2 = FlagCheck(unk80, *wk1); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + FlagSet(unk80, *wk); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + TrainerFlagSet(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + TrainerFlagClear(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx) +{ + struct UnkStruct_0204639C *unk80 = ctx->unk80; + u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + ctx->comparisonResult = TrainerFlagCheck(unk80, flag); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext* ctx) +{ + u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + *wk1 = (u16)(*wk1 + wk2); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext* ctx) +{ + u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + *wk1 = (u16)(*wk1 - wk2); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetVar(struct ScriptContext* ctx) +{ + u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *wk = ScriptReadHalfword(ctx); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext* ctx) +{ + u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 *wk2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *wk1 = *wk2; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx) +{ + u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + *wk1 = wk2; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext* ctx) +{ + u8 id = ScriptReadByte(ctx); + MOD05_ShowMessageInField(ctx, ctx->msgData, id); + return FALSE; +} -- cgit v1.2.3 From bee5e11870b47027235c63794f20dc4cccaac92e Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 13 Mar 2021 20:58:02 +0000 Subject: more --- arm9/asm/scrcmd_asm.s | 143 ------------------------------------------------ arm9/asm/unk_02038C78.s | 8 +-- arm9/global.inc | 8 +-- arm9/src/scrcmd.c | 50 ++++++++++++++++- 4 files changed, 57 insertions(+), 152 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 8b5212dd..3c73d00c 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,149 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start ScrCmd_message_from -ScrCmd_message_from: ; 0x0203A04C - ; message_from bank, id - push {r4-r6, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - mov r0, #0x1 - mov r1, #0x1a - add r2, r5, #0x0 - mov r3, #0x20 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - bl MOD05_ShowMessageInField - add r0, r5, #0x0 - bl DestroyMsgData - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203A098 -FUN_0203A098: ; 0x0203A098 - push {r3-r6, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - mov r0, #0x1 - mov r1, #0x1a - add r2, r5, #0x0 - mov r3, #0x20 - bl NewMsgDataFromNarc - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - add r1, r5, #0x0 - add r2, r6, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - add r0, r5, #0x0 - bl DestroyMsgData - ldr r1, _0203A0F8 ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r6, pc} - nop -_0203A0F8: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A0FC -FUN_0203A0FC: ; 0x0203A0FC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0xff - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - add r3, r7, #0x0 - bl MOD05_021E2C58 - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0203A13C -FUN_0203A13C: ; 0x0203A13C - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - add r3, r7, #0x0 - bl MOD05_021E2C58 - ldr r1, _0203A184 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203A184: .word FUN_0203A2F0 - thumb_func_start FUN_0203A188 FUN_0203A188: ; 0x0203A188 push {r4-r6, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 86085965..2bada91e 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -655,10 +655,10 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_survivepsn .word FUN_0203BC2C .word ScrCmd_DebugWatch - .word ScrCmd_message_from - .word FUN_0203A098 - .word FUN_0203A0FC - .word FUN_0203A13C + .word ScrCmd_MessageFrom + .word ScrCmd_MessageFrom2 + .word ScrCmd_Unk01FC + .word ScrCmd_Unk01FD .word FUN_0203A188 .word FUN_0203A210 .word FUN_0203C7F4 diff --git a/arm9/global.inc b/arm9/global.inc index cec9d379..ca70f69b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2744,10 +2744,10 @@ .extern ScrCmd_CopyVar .extern ScrCmd_SetOrCopyVar .extern ScrCmd_Message -.extern ScrCmd_message_from -.extern FUN_0203A098 -.extern FUN_0203A0FC -.extern FUN_0203A13C +.extern ScrCmd_MessageFrom +.extern ScrCmd_MessageFrom2 +.extern ScrCmd_Unk01FC +.extern ScrCmd_Unk01FD .extern FUN_0203A188 .extern FUN_0203A210 .extern FUN_0203A288 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 91ee2f03..82a14a7c 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -12,7 +12,10 @@ extern u8 FlagCheck(struct UnkStruct_0204639C *arg, u16 flag); extern void TrainerFlagSet(struct UnkStruct_0204639C *arg, u16 flag); extern void TrainerFlagClear(struct UnkStruct_0204639C *arg, u16 flag); extern u8 TrainerFlagCheck(struct UnkStruct_0204639C *arg, u16 flag); -extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u8 id); +extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u16 id); +extern void MOD05_021E2BD0(struct ScriptContext *ctx, struct MsgData *msgData, u16 msgId, u32 param4, void *param5); +extern BOOL FUN_0203A2F0(struct ScriptContext *ctx); +extern void MOD05_021E2C58(struct ScriptContext *ctx, u16 typ, u16 id, u16 word1, s16 word2, u8 param5); static BOOL RunPauseTimer(struct ScriptContext* ctx); static u32 Compare(u16 a, u16 b); @@ -434,3 +437,48 @@ THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext* ctx) MOD05_ShowMessageInField(ctx, ctx->msgData, id); return FALSE; } + +THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx) +{ + u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct MsgData *msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, arc, 32); + MOD05_ShowMessageInField(ctx, msgData, msg); + DestroyMsgData(msgData); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx) +{ + u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct MsgData *msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, arc, 32); + MOD05_021E2BD0(ctx, msgData, msg, 1, NULL); + DestroyMsgData(msgData); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx) +{ + u16 typ = ScriptReadHalfword(ctx); + u16 id = ScriptReadHalfword(ctx); + u16 word1 = ScriptReadHalfword(ctx); + u16 word2 = ScriptReadHalfword(ctx); + + MOD05_021E2C58(ctx, typ, id, word1, word2, 0xff); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx) +{ + u16 typ = ScriptReadHalfword(ctx); + u16 id = ScriptReadHalfword(ctx); + u16 word1 = ScriptReadHalfword(ctx); + u16 word2 = ScriptReadHalfword(ctx); + + MOD05_021E2C58(ctx, typ, id, word1, word2, 1); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + -- cgit v1.2.3 From 19651447d53e96d727e9bcf65cd7901ded8f6d8f Mon Sep 17 00:00:00 2001 From: hondew Date: Sun, 14 Mar 2021 23:46:12 -0400 Subject: Make asmproc produce a linkable obj Document compile.sh --- arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s | 12 ++++++------ arm9/temp.c | 0 2 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 arm9/temp.c (limited to 'arm9') diff --git a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s index 2d51a2ae..a083bf2e 100644 --- a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s +++ b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s @@ -1,11 +1,11 @@ - .include "asm/macros.inc" - .include "global.inc" - .extern UNK_021C570C - .extern UNK_021C5734 +.section .text + +glabel GenerateFontHalfRowLookupTable + +.extern UNK_021C570C +.extern UNK_021C5734 - thumb_func_start GenerateFontHalfRowLookupTable -GenerateFontHalfRowLookupTable: ; 0x0201C05C push {r3-r7, lr} sub sp, #0x30 ldr r3, _0201C0F8 ; =UNK_021C570C diff --git a/arm9/temp.c b/arm9/temp.c deleted file mode 100644 index e69de29b..00000000 -- cgit v1.2.3 From ff109c169cb508e0811bd1f0097f97ee594bfd54 Mon Sep 17 00:00:00 2001 From: James Luke <5251299+ethanpepro@users.noreply.github.com> Date: Mon, 15 Mar 2021 13:37:17 -0400 Subject: Decompile unk_0204AEA8.s --- arm9/asm/unk_0204AEA8.s | 67 ------------------------------------------------- arm9/src/unk_0204AEA8.c | 45 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 67 deletions(-) delete mode 100644 arm9/asm/unk_0204AEA8.s create mode 100644 arm9/src/unk_0204AEA8.c (limited to 'arm9') diff --git a/arm9/asm/unk_0204AEA8.s b/arm9/asm/unk_0204AEA8.s deleted file mode 100644 index 018a64e2..00000000 --- a/arm9/asm/unk_0204AEA8.s +++ /dev/null @@ -1,67 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0204AEA8 -FUN_0204AEA8: ; 0x0204AEA8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02046528 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0204652C - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - cmp r1, #0x0 - beq _0204AEC6 - cmp r1, #0x1 - beq _0204AEE6 - b _0204AEF4 -_0204AEC6: - ldr r0, [r4, #0x8] - add r1, r5, #0x0 - add r2, r4, #0x4 - bl MOD05_021E3444 - ldr r1, [r4, #0xc] - mov r0, #0x5 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - mov r2, #0x1 - bl FUN_0200433C - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _0204AEF4 -_0204AEE6: - ldr r1, [r4, #0x4] - cmp r1, #0x1 - bne _0204AEF4 - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0204AEF4: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0204AEF8 -FUN_0204AEF8: ; 0x0204AEF8 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - mov r0, #0xb - mov r1, #0x10 - add r4, r2, #0x0 - bl AllocFromHeapAtEnd - add r2, r0, #0x0 - mov r0, #0x0 - str r0, [r2, #0x0] - str r0, [r2, #0x4] - str r5, [r2, #0x8] - ldr r1, _0204AF20 ; =FUN_0204AEA8 - add r0, r6, #0x0 - str r4, [r2, #0xc] - bl FUN_0204640C - pop {r4-r6, pc} - nop -_0204AF20: .word FUN_0204AEA8 diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c new file mode 100644 index 00000000..23dd6960 --- /dev/null +++ b/arm9/src/unk_0204AEA8.c @@ -0,0 +1,45 @@ +#include "global.h" +#include "heap.h" +#include "unk_0204639C.h" +#include "unk_0204AEA8.h" + +#pragma thumb on + +extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32); +extern void FUN_0200433C(u32, u32, u32); + +BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) +{ + struct UnkStruct_0204639C *v0 = FUN_02046528(a0); + u32 *v1 = FUN_0204652C(a0); + + switch (v1[0]) + { + case 0: + MOD05_021E3444(v1[2], v0, (u32)v1 + 4); + FUN_0200433C(5, ((v1[3] << 16) >> 16), 1); + v1[0]++; + break; + case 1: + if (v1[1] == 1) + { + FreeToHeap(v1); + return TRUE; + } + break; + } + + return FALSE; +} + +void FUN_0204AEF8(struct UnkStruct_0204639C *a0, u32 a1, u32 a2) +{ + u32 *v0 = AllocFromHeapAtEnd(11, 4 * sizeof(u32)); + + v0[0] = 0; + v0[1] = 0; + v0[2] = a1; + v0[3] = a2; + + FUN_0204640C(a0, FUN_0204AEA8, v0); +} -- cgit v1.2.3 From 119f9d3310a64d04a874aa3bb04b8c13b05dab5b Mon Sep 17 00:00:00 2001 From: James Luke <5251299+ethanpepro@users.noreply.github.com> Date: Mon, 15 Mar 2021 14:44:23 -0400 Subject: Update with the requested changes --- arm9/src/unk_0204AEA8.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c index 23dd6960..9c572a8e 100644 --- a/arm9/src/unk_0204AEA8.c +++ b/arm9/src/unk_0204AEA8.c @@ -3,12 +3,10 @@ #include "unk_0204639C.h" #include "unk_0204AEA8.h" -#pragma thumb on - extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32); -extern void FUN_0200433C(u32, u32, u32); +extern void FUN_0200433C(u32, u16, u32); -BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) +THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) { struct UnkStruct_0204639C *v0 = FUN_02046528(a0); u32 *v1 = FUN_0204652C(a0); @@ -17,7 +15,7 @@ BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) { case 0: MOD05_021E3444(v1[2], v0, (u32)v1 + 4); - FUN_0200433C(5, ((v1[3] << 16) >> 16), 1); + FUN_0200433C(5, (u16)v1[3], 1); v1[0]++; break; case 1: @@ -32,7 +30,7 @@ BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) return FALSE; } -void FUN_0204AEF8(struct UnkStruct_0204639C *a0, u32 a1, u32 a2) +THUMB_FUNC void FUN_0204AEF8(struct UnkStruct_0204639C *a0, u32 a1, u32 a2) { u32 *v0 = AllocFromHeapAtEnd(11, 4 * sizeof(u32)); -- cgit v1.2.3 From 0c4df699ac1c4d2e6085e9e117cd4e1c5879f430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:40:27 +0100 Subject: decomp FUN_02024E64 --- arm9/arm9.lsf | 1 + arm9/asm/unk_02024E64.s | 7 ------- arm9/global.inc | 1 + arm9/src/unk_02024E64_c.c | 5 +++++ 4 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 arm9/src/unk_02024E64_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b8accee4..9378c57e 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -89,6 +89,7 @@ Static arm9 Object unk_02023AC4.o Object daycare.o Object pokedex.o + Object unk_02024E64_c.o Object unk_02024E64.o Object options.o Object unk_020250A4.o diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 0234a504..3b57116b 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -3,13 +3,6 @@ .text - thumb_func_start FUN_02024E64 -FUN_02024E64: ; 0x02024E64 - ldr r0, _02024E68 ; =0x0000074C - bx lr - .balign 4 -_02024E68: .word 0x0000074C - thumb_func_start FUN_02024E6C FUN_02024E6C: ; 0x02024E6C push {r4, lr} diff --git a/arm9/global.inc b/arm9/global.inc index d816d92a..f76e8d5a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,3 +8519,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon +.extern FUN_02024E64 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c new file mode 100644 index 00000000..aca5698d --- /dev/null +++ b/arm9/src/unk_02024E64_c.c @@ -0,0 +1,5 @@ +#include "global.h" + +THUMB_FUNC u32 FUN_02024E64() { + return 0x0000074C; +} -- cgit v1.2.3 From 7bd0b42dbf5374110f40becb4b27a5ba37621735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:53:18 +0100 Subject: decomp FUN_02024E6C --- arm9/asm/unk_02024E64.s | 31 ------------------------------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 32 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 3b57116b..cfd56621 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -3,37 +3,6 @@ .text - thumb_func_start FUN_02024E6C -FUN_02024E6C: ; 0x02024E6C - push {r4, lr} - add r4, r0, #0x0 - ldr r2, _02024EA4 ; =0x0000074C - mov r0, #0x0 - add r1, r4, #0x0 - bl MIi_CpuClearFast - add r0, r4, #0x0 - bl FUN_020250A4 - mov r0, #0x7 - lsl r0, r0, #0x8 - add r0, r4, r0 - bl FUN_02025484 - ldr r1, _02024EA8 ; =0x00000724 - ldr r0, _02024EAC ; =0x0000FFFF - add r1, r4, r1 - mov r2, #0x8 - bl MIi_CpuClear16 - ldr r1, _02024EB0 ; =0x00000734 - ldr r0, _02024EAC ; =0x0000FFFF - add r1, r4, r1 - mov r2, #0xb - bl MIi_CpuClear16 - pop {r4, pc} - .balign 4 -_02024EA4: .word 0x0000074C -_02024EA8: .word 0x00000724 -_02024EAC: .word 0x0000FFFF -_02024EB0: .word 0x00000734 - thumb_func_start FUN_02024EB4 FUN_02024EB4: ; 0x02024EB4 ldr r3, _02024EBC ; =SavArray_get diff --git a/arm9/global.inc b/arm9/global.inc index f76e8d5a..c7d54591 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,4 +8519,5 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern FUN_02024E64 \ No newline at end of file +.extern FUN_02024E64 +.extern FUN_02024E6C \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index aca5698d..a3b958c0 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -1,5 +1,52 @@ #include "global.h" +#include "MI_memory.h" + + +extern void FUN_020250A4(void *param0); +extern void FUN_02025484(void* param0); THUMB_FUNC u32 FUN_02024E64() { return 0x0000074C; } + + +// thumb_func_start FUN_02024E6C +// FUN_02024E6C: ; 0x02024E6C +// push {r4, lr} +// add r4, r0, #0x0 +// ldr r2, _02024EA4 ; =0x0000074C +// mov r0, #0x0 +// add r1, r4, #0x0 +// bl MIi_CpuClearFast +// add r0, r4, #0x0 +// bl FUN_020250A4 +// mov r0, #0x7 +// lsl r0, r0, #0x8 +// add r0, r4, r0 +// bl FUN_02025484 +// ldr r1, _02024EA8 ; =0x00000724 +// ldr r0, _02024EAC ; =0x0000FFFF +// add r1, r4, r1 +// mov r2, #0x8 +// bl MIi_CpuClear16 +// ldr r1, _02024EB0 ; =0x00000734 +// ldr r0, _02024EAC ; =0x0000FFFF +// add r1, r4, r1 +// mov r2, #0xb +// bl MIi_CpuClear16 +// pop {r4, pc} +// .balign 4 +// _02024EA4: .word 0x0000074C +// _02024EA8: .word 0x00000724 +// _02024EAC: .word 0x0000FFFF +// _02024EB0: .word 0x00000734 +THUMB_FUNC void FUN_02024E6C(void* param0) { + MIi_CpuClearFast(0, param0, 0x0000074C); + + FUN_020250A4(param0); + + FUN_02025484(param0+(7<<8)); + + MIi_CpuClear16(0x0000FFFF, param0 + 0x00000724, 8); + MIi_CpuClear16(0x0000FFFF, param0 + 0x00000734, 0xb); +} -- cgit v1.2.3 From b37cbfed36a331b574c3a17c557293ccd187874d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:56:29 +0100 Subject: decomp FUN_02024EB4 --- arm9/asm/unk_02024E64.s | 7 ------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 48 ++++++++++++----------------------------------- 3 files changed, 14 insertions(+), 44 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index cfd56621..8f726e3d 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -3,13 +3,6 @@ .text - thumb_func_start FUN_02024EB4 -FUN_02024EB4: ; 0x02024EB4 - ldr r3, _02024EBC ; =SavArray_get - mov r1, #0xa - bx r3 - nop -_02024EBC: .word SavArray_get thumb_func_start FUN_02024EC0 FUN_02024EC0: ; 0x02024EC0 diff --git a/arm9/global.inc b/arm9/global.inc index c7d54591..54e64ba2 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8520,4 +8520,5 @@ .extern MonNotFaintedOrEgg .extern CountAlivePokemon .extern FUN_02024E64 -.extern FUN_02024E6C \ No newline at end of file +.extern FUN_02024E6C +.extern FUN_02024EB4 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index a3b958c0..08982a4f 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -1,52 +1,28 @@ #include "global.h" #include "MI_memory.h" - +#include "save_block_2.h" extern void FUN_020250A4(void *param0); -extern void FUN_02025484(void* param0); +extern void FUN_02025484(void *param0); -THUMB_FUNC u32 FUN_02024E64() { +THUMB_FUNC u32 FUN_02024E64() +{ return 0x0000074C; } - -// thumb_func_start FUN_02024E6C -// FUN_02024E6C: ; 0x02024E6C -// push {r4, lr} -// add r4, r0, #0x0 -// ldr r2, _02024EA4 ; =0x0000074C -// mov r0, #0x0 -// add r1, r4, #0x0 -// bl MIi_CpuClearFast -// add r0, r4, #0x0 -// bl FUN_020250A4 -// mov r0, #0x7 -// lsl r0, r0, #0x8 -// add r0, r4, r0 -// bl FUN_02025484 -// ldr r1, _02024EA8 ; =0x00000724 -// ldr r0, _02024EAC ; =0x0000FFFF -// add r1, r4, r1 -// mov r2, #0x8 -// bl MIi_CpuClear16 -// ldr r1, _02024EB0 ; =0x00000734 -// ldr r0, _02024EAC ; =0x0000FFFF -// add r1, r4, r1 -// mov r2, #0xb -// bl MIi_CpuClear16 -// pop {r4, pc} -// .balign 4 -// _02024EA4: .word 0x0000074C -// _02024EA8: .word 0x00000724 -// _02024EAC: .word 0x0000FFFF -// _02024EB0: .word 0x00000734 -THUMB_FUNC void FUN_02024E6C(void* param0) { +THUMB_FUNC void FUN_02024E6C(void *param0) +{ MIi_CpuClearFast(0, param0, 0x0000074C); FUN_020250A4(param0); - FUN_02025484(param0+(7<<8)); + FUN_02025484(param0 + (7 << 8)); MIi_CpuClear16(0x0000FFFF, param0 + 0x00000724, 8); MIi_CpuClear16(0x0000FFFF, param0 + 0x00000734, 0xb); } + +THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 0xa); +} \ No newline at end of file -- cgit v1.2.3 From d0d866e6b7478d051e3943fdfaa3fc5ff0a5b5dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:58:32 +0100 Subject: decomp FUN_02024EC0 --- arm9/asm/unk_02024E64.s | 7 ------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 5 +++++ 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 8f726e3d..b45ae679 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -4,13 +4,6 @@ .text - thumb_func_start FUN_02024EC0 -FUN_02024EC0: ; 0x02024EC0 - ldr r3, _02024EC8 ; =FUN_02022634 - mov r1, #0xa - bx r3 - nop -_02024EC8: .word FUN_02022634 thumb_func_start FUN_02024ECC FUN_02024ECC: ; 0x02024ECC diff --git a/arm9/global.inc b/arm9/global.inc index 54e64ba2..022195ce 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8521,4 +8521,5 @@ .extern CountAlivePokemon .extern FUN_02024E64 .extern FUN_02024E6C -.extern FUN_02024EB4 \ No newline at end of file +.extern FUN_02024EB4 +.extern FUN_02024EC0 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index 08982a4f..04c26f16 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -25,4 +25,9 @@ THUMB_FUNC void FUN_02024E6C(void *param0) THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) { return SavArray_get(sav2, 0xa); +} + +THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) +{ + return FUN_02022634(sav2, 0xa); } \ No newline at end of file -- cgit v1.2.3 From 6ae1b13784323e8d952d97d9f19c820d346d11ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:59:29 +0100 Subject: decomp FUN_02024ECC --- arm9/asm/unk_02024E64.s | 8 -------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 5 +++++ 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index b45ae679..991f1558 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -5,14 +5,6 @@ - thumb_func_start FUN_02024ECC -FUN_02024ECC: ; 0x02024ECC - ldr r3, _02024ED4 ; =SavArray_get - mov r1, #0xa - bx r3 - nop -_02024ED4: .word SavArray_get - thumb_func_start FUN_02024ED8 FUN_02024ED8: ; 0x02024ED8 push {r3, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 022195ce..e0d8a4b1 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8522,4 +8522,5 @@ .extern FUN_02024E64 .extern FUN_02024E6C .extern FUN_02024EB4 -.extern FUN_02024EC0 \ No newline at end of file +.extern FUN_02024EC0 +.extern FUN_02024ECC \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index 04c26f16..b64d165d 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -30,4 +30,9 @@ THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) { return FUN_02022634(sav2, 0xa); +} + +THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 0xa); } \ No newline at end of file -- cgit v1.2.3 From 45f5ad2cb03af2cfd4fc5bd15513c3bd61540cc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 10:02:05 +0100 Subject: decomp FUN_02024ED8 --- arm9/asm/unk_02024E64.s | 9 --------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 6 ++++++ 3 files changed, 8 insertions(+), 10 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 991f1558..68ed3f77 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -5,15 +5,6 @@ - thumb_func_start FUN_02024ED8 -FUN_02024ED8: ; 0x02024ED8 - push {r3, lr} - mov r1, #0xa - bl SavArray_get - mov r1, #0x7 - lsl r1, r1, #0x8 - add r0, r0, r1 - pop {r3, pc} thumb_func_start FUN_02024EE8 FUN_02024EE8: ; 0x02024EE8 diff --git a/arm9/global.inc b/arm9/global.inc index e0d8a4b1..ec71589a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8523,4 +8523,5 @@ .extern FUN_02024E6C .extern FUN_02024EB4 .extern FUN_02024EC0 -.extern FUN_02024ECC \ No newline at end of file +.extern FUN_02024ECC +.extern FUN_02024ED8 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index b64d165d..8831d772 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -35,4 +35,10 @@ THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) { return SavArray_get(sav2, 0xa); +} + +THUMB_FUNC void* FUN_02024ED8(struct SaveBlock2 *sav2) { + void* res = SavArray_get(sav2, 0xa); + return res + (7 << 8); + } \ No newline at end of file -- cgit v1.2.3 From dbca3ebcabf9dae1844d8bf7712bd814b5facebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 10:03:48 +0100 Subject: decomp FUN_02024EE8 --- arm9/asm/unk_02024E64.s | 8 +------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 11 ++++++++--- 3 files changed, 11 insertions(+), 11 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 68ed3f77..6df427e8 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -6,13 +6,7 @@ - thumb_func_start FUN_02024EE8 -FUN_02024EE8: ; 0x02024EE8 - ldr r1, _02024EF0 ; =0x00000724 - add r0, r0, r1 - bx lr - nop -_02024EF0: .word 0x00000724 + thumb_func_start FUN_02024EF4 FUN_02024EF4: ; 0x02024EF4 diff --git a/arm9/global.inc b/arm9/global.inc index ec71589a..4dd5e543 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8524,4 +8524,5 @@ .extern FUN_02024EB4 .extern FUN_02024EC0 .extern FUN_02024ECC -.extern FUN_02024ED8 \ No newline at end of file +.extern FUN_02024ED8 +.extern FUN_02024EE8 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index 8831d772..114951eb 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -37,8 +37,13 @@ THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) return SavArray_get(sav2, 0xa); } -THUMB_FUNC void* FUN_02024ED8(struct SaveBlock2 *sav2) { - void* res = SavArray_get(sav2, 0xa); +THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2) +{ + void *res = SavArray_get(sav2, 0xa); return res + (7 << 8); +} -} \ No newline at end of file +THUMB_FUNC u32 FUN_02024EE8(u32 param0) +{ + return param0 + 0x00000724; +} -- cgit v1.2.3 From 53c56aa88db1eb214c60fec5f97d3d74f21e0bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 10:11:25 +0100 Subject: decomp FUN_02024EF4 --- arm9/asm/unk_02024E64.s | 13 +------------ arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 6 ++++++ 3 files changed, 9 insertions(+), 13 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index 6df427e8..bda5460c 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -8,18 +8,7 @@ - thumb_func_start FUN_02024EF4 -FUN_02024EF4: ; 0x02024EF4 - add r2, r0, #0x0 - add r0, r1, #0x0 - ldr r1, _02024F04 ; =0x00000724 - ldr r3, _02024F08 ; =CopyStringToU16Array - add r1, r2, r1 - mov r2, #0x8 - bx r3 - nop -_02024F04: .word 0x00000724 -_02024F08: .word CopyStringToU16Array + thumb_func_start FUN_02024F0C FUN_02024F0C: ; 0x02024F0C diff --git a/arm9/global.inc b/arm9/global.inc index 4dd5e543..fdea352f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8525,4 +8525,5 @@ .extern FUN_02024EC0 .extern FUN_02024ECC .extern FUN_02024ED8 -.extern FUN_02024EE8 \ No newline at end of file +.extern FUN_02024EE8 +.extern FUN_02024EF4 \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index 114951eb..48e1821e 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -1,6 +1,7 @@ #include "global.h" #include "MI_memory.h" #include "save_block_2.h" +#include "string16.h" extern void FUN_020250A4(void *param0); extern void FUN_02025484(void *param0); @@ -47,3 +48,8 @@ THUMB_FUNC u32 FUN_02024EE8(u32 param0) { return param0 + 0x00000724; } + +THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str) +{ + CopyStringToU16Array(str, buf + 0x392, 8); +} \ No newline at end of file -- cgit v1.2.3 From 17b47c39406338ff7c77f3662b3ad88fadb38e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 10:12:56 +0100 Subject: decomp FUN_02024F0C --- arm9/asm/unk_02024E64.s | 8 -------- arm9/global.inc | 3 ++- arm9/src/unk_02024E64_c.c | 7 ++++++- 3 files changed, 8 insertions(+), 10 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s index bda5460c..c24e5ea3 100644 --- a/arm9/asm/unk_02024E64.s +++ b/arm9/asm/unk_02024E64.s @@ -10,14 +10,6 @@ - thumb_func_start FUN_02024F0C -FUN_02024F0C: ; 0x02024F0C - ldr r1, _02024F14 ; =0x00000734 - add r0, r0, r1 - bx lr - nop -_02024F14: .word 0x00000734 - thumb_func_start FUN_02024F18 FUN_02024F18: ; 0x02024F18 add r2, r0, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index fdea352f..44ae1ae6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8526,4 +8526,5 @@ .extern FUN_02024ECC .extern FUN_02024ED8 .extern FUN_02024EE8 -.extern FUN_02024EF4 \ No newline at end of file +.extern FUN_02024EF4 +.extern FUN_02024F0C \ No newline at end of file diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c index 48e1821e..083735bd 100644 --- a/arm9/src/unk_02024E64_c.c +++ b/arm9/src/unk_02024E64_c.c @@ -52,4 +52,9 @@ THUMB_FUNC u32 FUN_02024EE8(u32 param0) THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str) { CopyStringToU16Array(str, buf + 0x392, 8); -} \ No newline at end of file +} + +THUMB_FUNC u32 FUN_02024F0C(u32 param0) +{ + return param0 + 0x734; +} -- cgit v1.2.3 From 841866478a047e1879804eeee93a2f6113fa5295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 11:15:23 +0100 Subject: cleanup --- arm9/arm9.lsf | 1 - arm9/asm/unk_02024E64.s | 24 ------------------ arm9/global.inc | 9 ------- arm9/src/save_arrays.c | 3 +-- arm9/src/script_buffers.c | 3 +-- arm9/src/trainer_data.c | 3 +-- arm9/src/unk_02024E64.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_02024E64_c.c | 60 --------------------------------------------- 8 files changed, 65 insertions(+), 100 deletions(-) delete mode 100644 arm9/asm/unk_02024E64.s create mode 100644 arm9/src/unk_02024E64.c delete mode 100644 arm9/src/unk_02024E64_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9378c57e..b8accee4 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -89,7 +89,6 @@ Static arm9 Object unk_02023AC4.o Object daycare.o Object pokedex.o - Object unk_02024E64_c.o Object unk_02024E64.o Object options.o Object unk_020250A4.o diff --git a/arm9/asm/unk_02024E64.s b/arm9/asm/unk_02024E64.s deleted file mode 100644 index c24e5ea3..00000000 --- a/arm9/asm/unk_02024E64.s +++ /dev/null @@ -1,24 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - - - - - - - - thumb_func_start FUN_02024F18 -FUN_02024F18: ; 0x02024F18 - add r2, r0, #0x0 - add r0, r1, #0x0 - ldr r1, _02024F28 ; =0x00000734 - ldr r3, _02024F2C ; =CopyStringToU16Array - add r1, r2, r1 - mov r2, #0xb - bx r3 - nop -_02024F28: .word 0x00000734 -_02024F2C: .word CopyStringToU16Array diff --git a/arm9/global.inc b/arm9/global.inc index 44ae1ae6..d816d92a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,12 +8519,3 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern FUN_02024E64 -.extern FUN_02024E6C -.extern FUN_02024EB4 -.extern FUN_02024EC0 -.extern FUN_02024ECC -.extern FUN_02024ED8 -.extern FUN_02024EE8 -.extern FUN_02024EF4 -.extern FUN_02024F0C \ No newline at end of file diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 397f1f69..8520f2c1 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -14,10 +14,10 @@ #include "pokedex.h" #include "seal.h" #include "unk_020139D8.h" +#include "unk_02024E64.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); -extern u32 FUN_02024E64(void); extern u32 FUN_02034D80(void); extern u32 FUN_02025954(void); extern u32 FUN_02023AC8(void); @@ -39,7 +39,6 @@ extern u32 FUN_0202BE98(void); extern u32 FUN_0202C0E0(void); extern void FUN_0202AC28(void *); extern void FUN_02034D98(void *); -extern void FUN_02024E6C(void *); extern void FUN_02034D88(void *); extern void FUN_0202597C(void *); extern void FUN_02023AD8(void *); diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index 431f63b4..293c0bac 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -11,11 +11,10 @@ #include "unk_0201B8B8.h" #include "trainer_data.h" #include "script_buffers.h" +#include "unk_02024E64.h" #pragma thumb on -extern void * FUN_02024EC0(struct SaveBlock2 * sav2); -extern u16 * FUN_02024EE8(void *); extern u32 GetCityNamesMsgdataIdByCountry(u32); extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1); extern void StringCat_HandleTrainerName(struct String * dest, const struct String * src); diff --git a/arm9/src/trainer_data.c b/arm9/src/trainer_data.c index 7af4b2ce..a797956c 100644 --- a/arm9/src/trainer_data.c +++ b/arm9/src/trainer_data.c @@ -6,11 +6,10 @@ #include "proto.h" #include "msgdata.h" #include "constants/trainer_classes.h" +#include "unk_02024E64.h" #pragma thumb on -extern void * FUN_02024EC0(struct SaveBlock2 *); -extern u16 * FUN_02024EE8(void *); // Loads all battle opponents, including multi-battle partner if exists. void EnemyTrainerSet_Init(struct BattleSetupStruct * enemies, struct SaveBlock2 * sav2, u32 heap_id) diff --git a/arm9/src/unk_02024E64.c b/arm9/src/unk_02024E64.c new file mode 100644 index 00000000..fc596418 --- /dev/null +++ b/arm9/src/unk_02024E64.c @@ -0,0 +1,62 @@ +#include "unk_02024E64.h" + +extern void FUN_020250A4(void *param0); +extern void FUN_02025484(void *param0); + +THUMB_FUNC u32 FUN_02024E64() +{ + return 0x74C; +} + +THUMB_FUNC void FUN_02024E6C(void *param0) +{ + MIi_CpuClearFast(0, param0, 0x74C); + + FUN_020250A4(param0); + + FUN_02025484(param0 + (7 << 8)); + + MIi_CpuClear16(0xFFFF, param0 + 0x724, 8); + MIi_CpuClear16(0xFFFF, param0 + 0x734, 0xb); +} + +THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 0xa); +} + +THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) +{ + return FUN_02022634(sav2, 0xa); +} + +THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) +{ + return SavArray_get(sav2, 0xa); +} + +THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2) +{ + void *res = SavArray_get(sav2, 0xa); + return res + (7 << 8); +} + +THUMB_FUNC u16 *FUN_02024EE8(void *buf) +{ + return buf + 0x724; +} + +THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str) +{ + CopyStringToU16Array(str, buf + 0x392, 8); +} + +THUMB_FUNC u16 *FUN_02024F0C(void *buf) +{ + return buf + 0x734; +} + +THUMB_FUNC void FUN_02024F18(u16 *buf, struct String *str) +{ + CopyStringToU16Array(str, buf + 0x39A, 0xb); +} diff --git a/arm9/src/unk_02024E64_c.c b/arm9/src/unk_02024E64_c.c deleted file mode 100644 index 083735bd..00000000 --- a/arm9/src/unk_02024E64_c.c +++ /dev/null @@ -1,60 +0,0 @@ -#include "global.h" -#include "MI_memory.h" -#include "save_block_2.h" -#include "string16.h" - -extern void FUN_020250A4(void *param0); -extern void FUN_02025484(void *param0); - -THUMB_FUNC u32 FUN_02024E64() -{ - return 0x0000074C; -} - -THUMB_FUNC void FUN_02024E6C(void *param0) -{ - MIi_CpuClearFast(0, param0, 0x0000074C); - - FUN_020250A4(param0); - - FUN_02025484(param0 + (7 << 8)); - - MIi_CpuClear16(0x0000FFFF, param0 + 0x00000724, 8); - MIi_CpuClear16(0x0000FFFF, param0 + 0x00000734, 0xb); -} - -THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) -{ - return SavArray_get(sav2, 0xa); -} - -THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) -{ - return FUN_02022634(sav2, 0xa); -} - -THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) -{ - return SavArray_get(sav2, 0xa); -} - -THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2) -{ - void *res = SavArray_get(sav2, 0xa); - return res + (7 << 8); -} - -THUMB_FUNC u32 FUN_02024EE8(u32 param0) -{ - return param0 + 0x00000724; -} - -THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str) -{ - CopyStringToU16Array(str, buf + 0x392, 8); -} - -THUMB_FUNC u32 FUN_02024F0C(u32 param0) -{ - return param0 + 0x734; -} -- cgit v1.2.3 From 435054bfb3d55802403bc987225ef545c843343e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 19:56:37 +0100 Subject: module_52.c --- arm9/modules/52/src/module_52_c.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 arm9/modules/52/src/module_52_c.c (limited to 'arm9') diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3 From 2583e3148007cedecfdd2c7f02e27a98bdadbd84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 20:49:20 +0100 Subject: decomp MOD52_021D74E0 --- arm9/arm9.lsf | 1 + arm9/global.inc | 1 + arm9/modules/52/asm/module_52.s | 14 -------------- arm9/modules/52/src/module_52_c.c | 13 +++++++++++++ 4 files changed, 15 insertions(+), 14 deletions(-) (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b8accee4..615430f9 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -899,6 +899,7 @@ Overlay MODULE_52 { ##Some kind of transition overlay for intro## After arm9 + Object module_52_c.o Object module_52.o } diff --git a/arm9/global.inc b/arm9/global.inc index d816d92a..999a0e6d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,3 +8519,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon +.extern MOD52_021D74E0 diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 22824930..4d85bb58 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -3,20 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD52_021D74E0 -MOD52_021D74E0: ; 0x021D74E0 - push {r3, lr} - mov r2, #2 - mov r0, #3 - mov r1, #0x4d - lsl r2, r2, #0x10 - bl FUN_0201681C - bl InitializeMainRNG - mov r0, #1 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD52_021D74E0 - thumb_func_start MOD52_021D74F8 MOD52_021D74F8: ; 0x021D74F8 push {r3, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index e69de29b..5835255f 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -0,0 +1,13 @@ +#include "global.h" +#include "main.h" + + +extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +extern void MOD52_021D769C(u32 heap_id, u32 param1); + +THUMB_FUNC int MOD52_021D74E0() { + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; +} \ No newline at end of file -- cgit v1.2.3 From 66f2e4ed4df708280904a21e4a92558e7fcc5866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 21:17:31 +0100 Subject: decomp MOD52_021D74F8 --- arm9/global.inc | 1 + arm9/modules/52/asm/module_52.s | 11 ----------- arm9/modules/52/src/module_52_c.c | 13 +++++++++++-- 3 files changed, 12 insertions(+), 13 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 999a0e6d..15f291a0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8520,3 +8520,4 @@ .extern MonNotFaintedOrEgg .extern CountAlivePokemon .extern MOD52_021D74E0 +.extern MOD52_021D74F8 diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 4d85bb58..457373a1 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -3,17 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD52_021D74F8 -MOD52_021D74F8: ; 0x021D74F8 - push {r3, lr} - bl OverlayManager_GetField18 - ldr r1, [r0, #8] - mov r0, #0x4d - bl MOD52_021D769C - mov r0, #1 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD52_021D74F8 thumb_func_start MOD52_021D750C MOD52_021D750C: ; 0x021D750C diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index 5835255f..61877176 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -1,13 +1,22 @@ #include "global.h" #include "main.h" +#include "overlay_manager.h" extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); -extern void MOD52_021D769C(u32 heap_id, u32 param1); +extern void MOD52_021D769C(u32 heap_id, int param1); THUMB_FUNC int MOD52_021D74E0() { FUN_0201681C(3, 0x4d, 2 << 16); InitializeMainRNG(); return 1; -} \ No newline at end of file +} + +THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { + int res = OverlayManager_GetField18(param0)[2]; + + MOD52_021D769C(0x4d, res); + + return 1; +} -- cgit v1.2.3 From f3adb8eda9602941397cac94e76caf8b51781d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 21:51:27 +0100 Subject: decomp MOD52_021D750C --- arm9/global.inc | 1 + arm9/modules/52/asm/module_52.s | 14 -------------- arm9/modules/52/src/module_52_c.c | 9 +++++++++ 3 files changed, 10 insertions(+), 14 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 15f291a0..83a492ba 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8521,3 +8521,4 @@ .extern CountAlivePokemon .extern MOD52_021D74E0 .extern MOD52_021D74F8 +.extern MOD52_021D750C \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 457373a1..5c456f0c 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -4,20 +4,6 @@ .balign 4, 0 - thumb_func_start MOD52_021D750C -MOD52_021D750C: ; 0x021D750C - push {r3, lr} - mov r0, #0x4d - bl FUN_020168D0 - mov r0, #0 - ldr r1, _021D7524 ; =UNK_020FD144 - mvn r0, r0 - bl RegisterMainOverlay - mov r0, #1 - pop {r3, pc} - nop -_021D7524: .word UNK_020FD144 - thumb_func_end MOD52_021D750C thumb_func_start MOD52_021D7528 MOD52_021D7528: ; 0x021D7528 diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index 61877176..bc059dff 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -4,7 +4,9 @@ extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +extern int FUN_020168D0(u32 heap_id); extern void MOD52_021D769C(u32 heap_id, int param1); +extern struct Unk21DBE18 UNK_020FD144; THUMB_FUNC int MOD52_021D74E0() { FUN_0201681C(3, 0x4d, 2 << 16); @@ -20,3 +22,10 @@ THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { return 1; } + +THUMB_FUNC int MOD52_021D750C() { + FUN_020168D0(0x4d); + RegisterMainOverlay(-1, &UNK_020FD144); + + return 1; +} \ No newline at end of file -- cgit v1.2.3 From 31439d0c354fb6db2adea8cf695e4f9fde4368fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 21:54:01 +0100 Subject: decomp MOD52_021D7528 --- arm9/global.inc | 3 ++- arm9/modules/52/asm/module_52.s | 16 ---------------- arm9/modules/52/src/module_52_c.c | 7 +++++++ 3 files changed, 9 insertions(+), 17 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 83a492ba..aee60c7b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8521,4 +8521,5 @@ .extern CountAlivePokemon .extern MOD52_021D74E0 .extern MOD52_021D74F8 -.extern MOD52_021D750C \ No newline at end of file +.extern MOD52_021D750C +.extern MOD52_021D7528 \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 5c456f0c..82abcf6e 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -3,22 +3,6 @@ .section .text .balign 4, 0 - - - thumb_func_start MOD52_021D7528 -MOD52_021D7528: ; 0x021D7528 - push {r3, lr} - mov r2, #2 - mov r0, #3 - mov r1, #0x4d - lsl r2, r2, #0x10 - bl FUN_0201681C - bl InitializeMainRNG - mov r0, #1 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD52_021D7528 - thumb_func_start MOD52_021D7540 MOD52_021D7540: ; 0x021D7540 push {r4, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index bc059dff..4e73a078 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -28,4 +28,11 @@ THUMB_FUNC int MOD52_021D750C() { RegisterMainOverlay(-1, &UNK_020FD144); return 1; +} + +THUMB_FUNC int MOD52_021D7528() { + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; } \ No newline at end of file -- cgit v1.2.3 From 543b9f0b5cc4351f1663fa48219438fb7e1a9672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 22:05:14 +0100 Subject: decomp MOD52_021D7540 --- arm9/global.inc | 3 ++- arm9/modules/52/asm/module_52.s | 15 --------------- arm9/modules/52/src/module_52_c.c | 19 ++++++++++++++++--- 3 files changed, 18 insertions(+), 19 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index aee60c7b..f6c46ada 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8522,4 +8522,5 @@ .extern MOD52_021D74E0 .extern MOD52_021D74F8 .extern MOD52_021D750C -.extern MOD52_021D7528 \ No newline at end of file +.extern MOD52_021D7528 +.extern MOD52_021D7540 \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 82abcf6e..1fb81f69 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -3,21 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD52_021D7540 -MOD52_021D7540: ; 0x021D7540 - push {r4, lr} - bl OverlayManager_GetField18 - ldr r4, [r0, #8] - mov r0, #0x4d - add r1, r4, #0 - mov r2, #1 - bl MOD52_021D7604 - add r0, r4, #0 - bl Sav2_PlayerData_GetIGTAddr - bl FUN_02015E3C - mov r0, #1 - pop {r4, pc} - thumb_func_end MOD52_021D7540 thumb_func_start MOD52_021D7560 MOD52_021D7560: ; 0x021D7560 diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index 4e73a078..f4803a8d 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -1,12 +1,15 @@ #include "global.h" #include "main.h" #include "overlay_manager.h" +#include "player_data.h" extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); extern int FUN_020168D0(u32 heap_id); -extern void MOD52_021D769C(u32 heap_id, int param1); +extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *save); extern struct Unk21DBE18 UNK_020FD144; +extern void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); +extern void FUN_02015E3C(struct IGT* igt); THUMB_FUNC int MOD52_021D74E0() { FUN_0201681C(3, 0x4d, 2 << 16); @@ -16,9 +19,9 @@ THUMB_FUNC int MOD52_021D74E0() { } THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { - int res = OverlayManager_GetField18(param0)[2]; + struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; - MOD52_021D769C(0x4d, res); + MOD52_021D769C(0x4d, save); return 1; } @@ -35,4 +38,14 @@ THUMB_FUNC int MOD52_021D7528() { InitializeMainRNG(); return 1; +} + + +THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) { + struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; + MOD52_021D7604(0x4d, save, 1); + struct IGT* igt = Sav2_PlayerData_GetIGTAddr(save); + FUN_02015E3C(igt); + + return 1; } \ No newline at end of file -- cgit v1.2.3 From 223add63f94543b37d9d648840a324432576dd45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 22:08:57 +0100 Subject: decomp MOD52_021D7560 --- arm9/global.inc | 3 ++- arm9/modules/52/asm/module_52.s | 15 +-------------- arm9/modules/52/src/module_52_c.c | 37 +++++++++++++++++++++++++------------ 3 files changed, 28 insertions(+), 27 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index f6c46ada..7e2fc2e9 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8523,4 +8523,5 @@ .extern MOD52_021D74F8 .extern MOD52_021D750C .extern MOD52_021D7528 -.extern MOD52_021D7540 \ No newline at end of file +.extern MOD52_021D7540 +.extern MOD52_021D7560 diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 1fb81f69..385167f4 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -4,20 +4,7 @@ .balign 4, 0 - thumb_func_start MOD52_021D7560 -MOD52_021D7560: ; 0x021D7560 - push {r3, lr} - mov r0, #0x4d - bl FUN_020168D0 - mov r0, #0 - ldr r1, _021D7578 ; =UNK_020F2B7C - mvn r0, r0 - bl RegisterMainOverlay - mov r0, #1 - pop {r3, pc} - nop -_021D7578: .word UNK_020F2B7C - thumb_func_end MOD52_021D7560 + thumb_func_start MOD52_021D757C MOD52_021D757C: ; 0x021D757C diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index f4803a8d..38aa29c0 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -3,22 +3,25 @@ #include "overlay_manager.h" #include "player_data.h" - extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); extern int FUN_020168D0(u32 heap_id); extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *save); extern struct Unk21DBE18 UNK_020FD144; +extern struct Unk21DBE18 UNK_020F2B7C; + extern void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); -extern void FUN_02015E3C(struct IGT* igt); +extern void FUN_02015E3C(struct IGT *igt); -THUMB_FUNC int MOD52_021D74E0() { +THUMB_FUNC int MOD52_021D74E0() +{ FUN_0201681C(3, 0x4d, 2 << 16); - InitializeMainRNG(); + InitializeMainRNG(); return 1; } -THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { +THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) +{ struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; MOD52_021D769C(0x4d, save); @@ -26,26 +29,36 @@ THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { return 1; } -THUMB_FUNC int MOD52_021D750C() { +THUMB_FUNC int MOD52_021D750C() +{ FUN_020168D0(0x4d); RegisterMainOverlay(-1, &UNK_020FD144); return 1; } -THUMB_FUNC int MOD52_021D7528() { +THUMB_FUNC int MOD52_021D7528() +{ FUN_0201681C(3, 0x4d, 2 << 16); - InitializeMainRNG(); + InitializeMainRNG(); - return 1; + return 1; } - -THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) { +THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) +{ struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; MOD52_021D7604(0x4d, save, 1); - struct IGT* igt = Sav2_PlayerData_GetIGTAddr(save); + struct IGT *igt = Sav2_PlayerData_GetIGTAddr(save); FUN_02015E3C(igt); + return 1; +} + +THUMB_FUNC int MOD52_021D7560() +{ + FUN_020168D0(0x4d); + RegisterMainOverlay(-1, &UNK_020F2B7C); + return 1; } \ No newline at end of file -- cgit v1.2.3 From 96d819dc80d6d62f802850ff69ec62cf27dd9c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 22:10:52 +0100 Subject: decomp MOD52_021D757C --- arm9/global.inc | 1 + arm9/modules/52/asm/module_52.s | 14 -------------- arm9/modules/52/src/module_52_c.c | 10 +++++++++- 3 files changed, 10 insertions(+), 15 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 7e2fc2e9..930bd44d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8525,3 +8525,4 @@ .extern MOD52_021D7528 .extern MOD52_021D7540 .extern MOD52_021D7560 +.extern MOD52_021D757C \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 385167f4..821f2bfc 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -6,20 +6,6 @@ - thumb_func_start MOD52_021D757C -MOD52_021D757C: ; 0x021D757C - push {r3, lr} - mov r2, #2 - mov r0, #3 - mov r1, #0x4d - lsl r2, r2, #0x10 - bl FUN_0201681C - bl InitializeMainRNG - mov r0, #1 - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD52_021D757C - thumb_func_start MOD52_021D7594 MOD52_021D7594: ; 0x021D7594 push {r3, r4, r5, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index 38aa29c0..b68bdd36 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -61,4 +61,12 @@ THUMB_FUNC int MOD52_021D7560() RegisterMainOverlay(-1, &UNK_020F2B7C); return 1; -} \ No newline at end of file +} + +THUMB_FUNC int MOD52_021D757C() +{ + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; +} -- cgit v1.2.3 From 32852c6104604d7df8450dc9a58a3beeb13e6913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 23:28:06 +0100 Subject: decomp MOD52_021D7594 --- arm9/global.inc | 3 ++- arm9/modules/52/asm/module_52.s | 38 -------------------------------------- arm9/modules/52/src/module_52_c.c | 23 +++++++++++++++++++++++ 3 files changed, 25 insertions(+), 39 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 930bd44d..1bcdcc4b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8525,4 +8525,5 @@ .extern MOD52_021D7528 .extern MOD52_021D7540 .extern MOD52_021D7560 -.extern MOD52_021D757C \ No newline at end of file +.extern MOD52_021D757C +.extern MOD52_021D7594 diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index 821f2bfc..dfc5f598 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -5,44 +5,6 @@ - - thumb_func_start MOD52_021D7594 -MOD52_021D7594: ; 0x021D7594 - push {r3, r4, r5, lr} - bl OverlayManager_GetField18 - ldr r4, [r0, #8] - add r0, r4, #0 - bl Sav2_SysInfo_get - add r5, r0, #0 - mov r0, #0x4d - add r1, r4, #0 - bl MOD52_021D7688 - add r0, r4, #0 - mov r1, #0 - bl Options_SetButtonModeOnMain - add r0, r5, #0 - bl Sav2_SysInfo_MacAddressIsMine - cmp r0, #0 - beq _021D75C8 - add r0, r5, #0 - bl Sav2_SysInfo_RTCOffsetIsMine - cmp r0, #0 - bne _021D75D8 -_021D75C8: - add r0, r4, #0 - bl Sav2_SysInfo_RTC_get - bl FUN_020238A4 - add r0, r5, #0 - bl Sav2_SysInfo_InitFromSystem -_021D75D8: - add r0, r4, #0 - bl Sav2_PlayerData_GetIGTAddr - bl FUN_02015E3C - mov r0, #1 - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD52_021D7594 - thumb_func_start MOD52_021D75E8 MOD52_021D75E8: ; 0x021D75E8 push {r3, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index b68bdd36..5c242b26 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -1,7 +1,9 @@ #include "global.h" #include "main.h" +#include "options.h" #include "overlay_manager.h" #include "player_data.h" +#include "sav_system_info.h" extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); extern int FUN_020168D0(u32 heap_id); @@ -12,6 +14,8 @@ extern struct Unk21DBE18 UNK_020F2B7C; extern void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); extern void FUN_02015E3C(struct IGT *igt); +extern void MOD52_021D7688(u32 heap_id, struct SaveBlock2 *save); + THUMB_FUNC int MOD52_021D74E0() { FUN_0201681C(3, 0x4d, 2 << 16); @@ -70,3 +74,22 @@ THUMB_FUNC int MOD52_021D757C() return 1; } + +THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) +{ + struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; + struct SavSysInfo *save_info = Sav2_SysInfo_get(save); + + MOD52_021D7688(0x4d, save); + Options_SetButtonModeOnMain(save, 0); + + if (!Sav2_SysInfo_MacAddressIsMine(save_info) || !Sav2_SysInfo_RTCOffsetIsMine(save_info)) + { + FUN_020238A4(Sav2_SysInfo_RTC_get(save)); + Sav2_SysInfo_InitFromSystem(save_info); + } + + FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(save)); + + return 1; +} -- cgit v1.2.3 From 0772a60fbb18493ffdefeff7406015f64c09c3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 15 Mar 2021 23:31:18 +0100 Subject: decomp MOD52_021D75E8 --- arm9/global.inc | 1 + arm9/modules/52/asm/module_52.s | 15 --------------- arm9/modules/52/src/module_52_c.c | 9 +++++++++ 3 files changed, 10 insertions(+), 15 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 1bcdcc4b..40466824 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8527,3 +8527,4 @@ .extern MOD52_021D7560 .extern MOD52_021D757C .extern MOD52_021D7594 +.extern MOD52_021D75E8 \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index dfc5f598..f9363ba0 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -5,21 +5,6 @@ - thumb_func_start MOD52_021D75E8 -MOD52_021D75E8: ; 0x021D75E8 - push {r3, lr} - mov r0, #0x4d - bl FUN_020168D0 - mov r0, #0 - ldr r1, _021D7600 ; =UNK_020F2B8C - mvn r0, r0 - bl RegisterMainOverlay - mov r0, #1 - pop {r3, pc} - nop -_021D7600: .word UNK_020F2B8C - thumb_func_end MOD52_021D75E8 - thumb_func_start MOD52_021D7604 MOD52_021D7604: ; 0x021D7604 push {r3, r4, r5, r6, r7, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index 5c242b26..d87eb0e6 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -10,6 +10,7 @@ extern int FUN_020168D0(u32 heap_id); extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *save); extern struct Unk21DBE18 UNK_020FD144; extern struct Unk21DBE18 UNK_020F2B7C; +extern struct Unk21DBE18 UNK_020F2B8C; extern void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); extern void FUN_02015E3C(struct IGT *igt); @@ -93,3 +94,11 @@ THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) return 1; } + +THUMB_FUNC int MOD52_021D75E8() +{ + FUN_020168D0(0x4d); + RegisterMainOverlay(-1, &UNK_020F2B8C); + + return 1; +} \ No newline at end of file -- cgit v1.2.3 From 9535d47d68cf3fb999bac445c3aeaaf28bf8f37b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 09:31:16 +0100 Subject: wip: decomp MOD52_021D7604 --- arm9/global.inc | 3 +- arm9/modules/52/asm/module_52.s | 56 ---------------------- arm9/modules/52/src/module_52_c.c | 97 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 97 insertions(+), 59 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 40466824..f682a937 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8527,4 +8527,5 @@ .extern MOD52_021D7560 .extern MOD52_021D757C .extern MOD52_021D7594 -.extern MOD52_021D75E8 \ No newline at end of file +.extern MOD52_021D75E8 +.extern MOD52_021D7604 \ No newline at end of file diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index f9363ba0..acb4b895 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -4,62 +4,6 @@ .balign 4, 0 - - thumb_func_start MOD52_021D7604 -MOD52_021D7604: ; 0x021D7604 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - str r0, [sp] - add r0, r5, #0 - add r6, r2, #0 - bl Sav2_SysInfo_get - bl Sav2_SysInfo_InitFromSystem - add r0, r5, #0 - bl Sav2_SysInfo_RTC_get - bl Sav2_SysInfo_RTC_init - add r0, r5, #0 - bl FUN_0202881C - add r4, r0, #0 - bl MTRandom - add r2, r0, #0 - add r0, r4, #0 - mov r1, #1 - bl FUN_02028788 - add r0, r5, #0 - bl FUN_0206007C - add r0, r5, #0 - bl Sav2_PlayerData_GetProfileAddr - add r4, r0, #0 - bl MTRandom - add r7, r0, #0 - cmp r6, #0 - beq _021D7656 - add r0, r4, #0 - add r1, r7, #0 - bl PlayerProfile_SetTrainerID -_021D7656: - add r0, r4, #0 - bl PlayerProfile_GetTrainerGender - add r1, r0, #0 - add r0, r7, #0 - mov r2, #0 - bl FUN_02053678 - add r1, r0, #0 - lsl r1, r1, #0x18 - add r0, r4, #0 - lsr r1, r1, #0x18 - bl PlayerProfile_SetAvatar - add r0, r5, #0 - bl FUN_02024ECC - ldr r1, [sp] - ldr r2, _021D7684 ; =0x021D76F8 - mov r3, #0x76 - bl FUN_020250C4 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D7684: .word MOD52_021D76F8 - thumb_func_end MOD52_021D7604 - thumb_func_start MOD52_021D7688 MOD52_021D7688: ; 0x021D7688 push {r3, lr} diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index d87eb0e6..cfd74a74 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -4,6 +4,9 @@ #include "overlay_manager.h" #include "player_data.h" #include "sav_system_info.h" +#include "unk_020286F8.h" +#include "math_util.h" + extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); extern int FUN_020168D0(u32 heap_id); @@ -12,11 +15,18 @@ extern struct Unk21DBE18 UNK_020FD144; extern struct Unk21DBE18 UNK_020F2B7C; extern struct Unk21DBE18 UNK_020F2B8C; -extern void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); +void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); extern void FUN_02015E3C(struct IGT *igt); extern void MOD52_021D7688(u32 heap_id, struct SaveBlock2 *save); +extern void FUN_0206007C(struct SaveBlock2 *save); +extern int FUN_02053678(u32 random, u32 gender, u32 param2); +extern void FUN_02024ECC(struct SaveBlock2 *save); +extern void FUN_020250C4(struct SaveBlock2 *save, u32 heap_id, u32 **param2, u32 param3); + +extern u32 *MOD52_021D76F8; + THUMB_FUNC int MOD52_021D74E0() { FUN_0201681C(3, 0x4d, 2 << 16); @@ -101,4 +111,87 @@ THUMB_FUNC int MOD52_021D75E8() RegisterMainOverlay(-1, &UNK_020F2B8C); return 1; -} \ No newline at end of file +} + + +// thumb_func_start MOD52_021D7604 +// MOD52_021D7604: ; 0x021D7604 +// push {r3, r4, r5, r6, r7, lr} +// add r5, r1, #0 +// str r0, [sp] +// add r0, r5, #0 +// add r6, r2, #0 +// bl Sav2_SysInfo_get +// bl Sav2_SysInfo_InitFromSystem +// add r0, r5, #0 +// bl Sav2_SysInfo_RTC_get +// bl Sav2_SysInfo_RTC_init +// add r0, r5, #0 +// bl FUN_0202881C +// add r4, r0, #0 +// bl MTRandom +// add r2, r0, #0 +// add r0, r4, #0 +// mov r1, #1 +// bl FUN_02028788 +// add r0, r5, #0 +// bl FUN_0206007C +// add r0, r5, #0 +// bl Sav2_PlayerData_GetProfileAddr +// add r4, r0, #0 +// bl MTRandom +// add r7, r0, #0 +// cmp r6, #0 +// beq _021D7656 +// add r0, r4, #0 +// add r1, r7, #0 +// bl PlayerProfile_SetTrainerID +// _021D7656: +// add r0, r4, #0 +// bl PlayerProfile_GetTrainerGender +// add r1, r0, #0 +// add r0, r7, #0 +// mov r2, #0 +// bl FUN_02053678 +// add r1, r0, #0 +// lsl r1, r1, #0x18 +// add r0, r4, #0 +// lsr r1, r1, #0x18 +// bl PlayerProfile_SetAvatar +// add r0, r5, #0 +// bl FUN_02024ECC +// ldr r1, [sp] +// ldr r2, _021D7684 ; =0x021D76F8 +// mov r3, #0x76 +// bl FUN_020250C4 +// pop {r3, r4, r5, r6, r7, pc} +// .align 2, 0 +// _021D7684: .word MOD52_021D76F8 +// thumb_func_end MOD52_021D7604 +THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2) { + Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(save)); + Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(save)); + + struct UnkSaveStruct_020286F8 *unk_save = FUN_0202881C(save); + u32 rand = MTRandom(); + + FUN_02028788(unk_save, 1, rand); + FUN_0206007C(save); + + struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(save); + u32 rand2 = MTRandom(); + + if (param2 != 0) { + PlayerProfile_SetTrainerID(player_data, rand2); + } + + u32 gender = PlayerProfile_GetTrainerGender(player_data); + u32 avatar = FUN_02053678(rand2, gender, 0); + avatar = avatar << 0x18; + avatar = avatar >> 0x18; + + PlayerProfile_SetAvatar(player_data, avatar); + + FUN_02024ECC(save); + FUN_020250C4(save, heap_id, &MOD52_021D76F8, 0x76); +} -- cgit v1.2.3 From 7d09fdd1c9e3e37f274ea7b35fe0b0e70f8b68dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 17:34:38 +0100 Subject: match remaining symbols --- arm9/global.inc | 4 +- arm9/modules/52/asm/module_52.s | 87 ----- arm9/modules/52/src/module_52_c.c | 660 ++++++++++++++++++++++++++++++++------ 3 files changed, 567 insertions(+), 184 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index f682a937..70a13375 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8528,4 +8528,6 @@ .extern MOD52_021D757C .extern MOD52_021D7594 .extern MOD52_021D75E8 -.extern MOD52_021D7604 \ No newline at end of file +.extern MOD52_021D7604 +.extern MOD52_021D7688 +.extern MOD52_021D769C diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s index acb4b895..e69de29b 100644 --- a/arm9/modules/52/asm/module_52.s +++ b/arm9/modules/52/asm/module_52.s @@ -1,87 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - - thumb_func_start MOD52_021D7688 -MOD52_021D7688: ; 0x021D7688 - push {r3, lr} - add r0, r1, #0 - bl FUN_020226FC - cmp r0, #0 - bne _021D769A - mov r0, #0 - bl OS_ResetSystem -_021D769A: - pop {r3, pc} - thumb_func_end MOD52_021D7688 - - thumb_func_start MOD52_021D769C -MOD52_021D769C: ; 0x021D769C - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl Sav2_InitDynamicRegion - add r0, r4, #0 - bl FUN_020377E0 - add r0, r4, #0 - bl Sav2_PlayerData_GetProfileAddr - ldr r1, _021D76C4 ; =0x00000BB8 - bl PlayerProfile_SetMoney - add r0, r4, #0 - bl SavArray_Flags_get - bl FUN_0205ECD4 - pop {r4, pc} - .align 2, 0 -_021D76C4: .word 0x00000BB8 - thumb_func_end MOD52_021D769C - - .rodata - .global MOD52_021D76C8 -MOD52_021D76C8: ; 0x021D76C8 - .word MOD52_021D757C, MOD52_021D7594, MOD52_021D75E8, 0xFFFFFFFF - - .global MOD52_021D76D8 -MOD52_021D76D8: ; 0x021D76D8 - .word MOD52_021D7528, MOD52_021D7540, MOD52_021D7560, 0xFFFFFFFF - - .global MOD52_021D76E8 -MOD52_021D76E8: ; 0x021D76E8 - .word MOD52_021D74E0, MOD52_021D74F8, MOD52_021D750C, 0xFFFFFFFF - - .global MOD52_021D76F8 -MOD52_021D76F8: ; 0x021D76F8 - .byte 0x9B, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00 - .byte 0x9B, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x02, 0x00 - .byte 0x95, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x02, 0x00, 0x9E, 0x00, 0x01, 0x00, 0xA7, 0x00, 0x02, 0x00 - .byte 0xA7, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00 - .byte 0x9B, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00 - .byte 0xA4, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x01, 0x00 - .byte 0x9B, 0x00, 0x01, 0x00, 0xA5, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x02, 0x00, 0xA4, 0x00, 0x02, 0x00 - .byte 0xA5, 0x00, 0x02, 0x00, 0xA8, 0x00, 0x02, 0x00, 0x9A, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00 - .byte 0xA4, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x01, 0x00 - .byte 0xA6, 0x00, 0x01, 0x00, 0x9F, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00 - .byte 0xA4, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00 - .byte 0xA0, 0x00, 0x01, 0x00, 0xA2, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00 - .byte 0xA3, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00 - .byte 0xAE, 0x00, 0x01, 0x00, 0x9D, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00 - .byte 0xA8, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00 - .byte 0xA6, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x01, 0x00, 0xA2, 0x00, 0x01, 0x00, 0xA3, 0x00, 0x01, 0x00 - .byte 0x98, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00 - .byte 0x96, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00, 0x97, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x02, 0x00 - .byte 0xA0, 0x00, 0x01, 0x00, 0xA1, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00 - .byte 0x9F, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x02, 0x00, 0x9A, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00 - .byte 0xA1, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00, 0xA0, 0x00, 0x02, 0x00, 0xA1, 0x00, 0x02, 0x00 - .byte 0xA2, 0x00, 0x02, 0x00, 0xAB, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x03, 0x00 - .byte 0xA6, 0x00, 0x03, 0x00, 0xA7, 0x00, 0x03, 0x00, 0xA9, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00 - .byte 0xAC, 0x00, 0x02, 0x00, 0xAC, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x01, 0x00, 0xAA, 0x00, 0x01, 0x00 - .byte 0xAE, 0x00, 0x01, 0x00, 0xAE, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00 - .byte 0xA9, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00 - .byte 0xAE, 0x00, 0x01, 0x00, 0xAE, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00 - .byte 0xAB, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00, 0x9D, 0x00, 0x01, 0x00, 0x9A, 0x00, 0x01, 0x00 - .byte 0xAB, 0x00, 0x02, 0x00, 0xAD, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x02, 0x00 - .byte 0xAD, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00 - - .data - .bss diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c index cfd74a74..3e6d360f 100644 --- a/arm9/modules/52/src/module_52_c.c +++ b/arm9/modules/52/src/module_52_c.c @@ -1,31 +1,35 @@ #include "global.h" +#include "save_block_2.h" +#include "event_data.h" #include "main.h" +#include "math_util.h" #include "options.h" #include "overlay_manager.h" #include "player_data.h" #include "sav_system_info.h" +#include "unk_02024E64.h" #include "unk_020286F8.h" -#include "math_util.h" - extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); extern int FUN_020168D0(u32 heap_id); -extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *save); +extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *sav2); extern struct Unk21DBE18 UNK_020FD144; extern struct Unk21DBE18 UNK_020F2B7C; extern struct Unk21DBE18 UNK_020F2B8C; -void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2); +void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); extern void FUN_02015E3C(struct IGT *igt); -extern void MOD52_021D7688(u32 heap_id, struct SaveBlock2 *save); +extern void MOD52_021D7688(u32 heap_id, struct SaveBlock2 *sav2); -extern void FUN_0206007C(struct SaveBlock2 *save); +extern void FUN_0206007C(struct SaveBlock2 *sav2); extern int FUN_02053678(u32 random, u32 gender, u32 param2); -extern void FUN_02024ECC(struct SaveBlock2 *save); -extern void FUN_020250C4(struct SaveBlock2 *save, u32 heap_id, u32 **param2, u32 param3); +extern void FUN_020250C4(void *sav_ptr, u32 heap_id, u8 *param2, u32 param3); -extern u32 *MOD52_021D76F8; +extern void FUN_020377E0(struct SaveBlock2 *sav2); +extern void FUN_0205ECD4(struct ScriptState *script_state); + +extern const u8 MOD52_021D76F8[]; THUMB_FUNC int MOD52_021D74E0() { @@ -37,9 +41,9 @@ THUMB_FUNC int MOD52_021D74E0() THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) { - struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; + struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; - MOD52_021D769C(0x4d, save); + MOD52_021D769C(0x4d, sav2); return 1; } @@ -62,9 +66,9 @@ THUMB_FUNC int MOD52_021D7528() THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) { - struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; - MOD52_021D7604(0x4d, save, 1); - struct IGT *igt = Sav2_PlayerData_GetIGTAddr(save); + struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; + MOD52_021D7604(0x4d, sav2, 1); + struct IGT *igt = Sav2_PlayerData_GetIGTAddr(sav2); FUN_02015E3C(igt); return 1; @@ -88,19 +92,19 @@ THUMB_FUNC int MOD52_021D757C() THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) { - struct SaveBlock2 *save = OverlayManager_GetField18(param0)[2]; - struct SavSysInfo *save_info = Sav2_SysInfo_get(save); + struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; + struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2); - MOD52_021D7688(0x4d, save); - Options_SetButtonModeOnMain(save, 0); + MOD52_021D7688(0x4d, sav2); + Options_SetButtonModeOnMain(sav2, 0); - if (!Sav2_SysInfo_MacAddressIsMine(save_info) || !Sav2_SysInfo_RTCOffsetIsMine(save_info)) + if (!Sav2_SysInfo_MacAddressIsMine(sav2_info) || !Sav2_SysInfo_RTCOffsetIsMine(sav2_info)) { - FUN_020238A4(Sav2_SysInfo_RTC_get(save)); - Sav2_SysInfo_InitFromSystem(save_info); + FUN_020238A4(Sav2_SysInfo_RTC_get(sav2)); + Sav2_SysInfo_InitFromSystem(sav2_info); } - FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(save)); + FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(sav2)); return 1; } @@ -113,85 +117,549 @@ THUMB_FUNC int MOD52_021D75E8() return 1; } +THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid) +{ + Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(sav2)); + Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(sav2)); + + struct UnkSaveStruct_020286F8 *unk_sav2 = FUN_0202881C(sav2); + + FUN_02028788(unk_sav2, 1, MTRandom()); + FUN_0206007C(sav2); + + struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); + u32 trainerid = MTRandom(); -// thumb_func_start MOD52_021D7604 -// MOD52_021D7604: ; 0x021D7604 -// push {r3, r4, r5, r6, r7, lr} -// add r5, r1, #0 -// str r0, [sp] -// add r0, r5, #0 -// add r6, r2, #0 -// bl Sav2_SysInfo_get -// bl Sav2_SysInfo_InitFromSystem -// add r0, r5, #0 -// bl Sav2_SysInfo_RTC_get -// bl Sav2_SysInfo_RTC_init -// add r0, r5, #0 -// bl FUN_0202881C -// add r4, r0, #0 -// bl MTRandom -// add r2, r0, #0 -// add r0, r4, #0 -// mov r1, #1 -// bl FUN_02028788 -// add r0, r5, #0 -// bl FUN_0206007C -// add r0, r5, #0 -// bl Sav2_PlayerData_GetProfileAddr -// add r4, r0, #0 -// bl MTRandom -// add r7, r0, #0 -// cmp r6, #0 -// beq _021D7656 -// add r0, r4, #0 -// add r1, r7, #0 -// bl PlayerProfile_SetTrainerID -// _021D7656: -// add r0, r4, #0 -// bl PlayerProfile_GetTrainerGender -// add r1, r0, #0 -// add r0, r7, #0 -// mov r2, #0 -// bl FUN_02053678 -// add r1, r0, #0 -// lsl r1, r1, #0x18 -// add r0, r4, #0 -// lsr r1, r1, #0x18 -// bl PlayerProfile_SetAvatar -// add r0, r5, #0 -// bl FUN_02024ECC -// ldr r1, [sp] -// ldr r2, _021D7684 ; =0x021D76F8 -// mov r3, #0x76 -// bl FUN_020250C4 -// pop {r3, r4, r5, r6, r7, pc} -// .align 2, 0 -// _021D7684: .word MOD52_021D76F8 -// thumb_func_end MOD52_021D7604 -THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *save, u32 param2) { - Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(save)); - Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(save)); - - struct UnkSaveStruct_020286F8 *unk_save = FUN_0202881C(save); - u32 rand = MTRandom(); - - FUN_02028788(unk_save, 1, rand); - FUN_0206007C(save); - - struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(save); - u32 rand2 = MTRandom(); - - if (param2 != 0) { - PlayerProfile_SetTrainerID(player_data, rand2); + if (set_trainerid) + { + PlayerProfile_SetTrainerID(player_data, trainerid); } u32 gender = PlayerProfile_GetTrainerGender(player_data); - u32 avatar = FUN_02053678(rand2, gender, 0); - avatar = avatar << 0x18; - avatar = avatar >> 0x18; + int avatar = FUN_02053678(trainerid, gender, 0); PlayerProfile_SetAvatar(player_data, avatar); - FUN_02024ECC(save); - FUN_020250C4(save, heap_id, &MOD52_021D76F8, 0x76); + FUN_020250C4(FUN_02024ECC(sav2), heap_id, &MOD52_021D76F8[0], 0x76); } + +THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2) +{ + if (FUN_020226FC(sav2)) + { + return; + } + + OS_ResetSystem(0); +} + +THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2) +{ + Sav2_InitDynamicRegion(sav2); + FUN_020377E0(sav2); + struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); + PlayerProfile_SetMoney(player_data, 3000); + FUN_0205ECD4(SavArray_Flags_get(sav2)); +} + +// struct MOD52_Struct { +// int (*func1)(void); +// int (*func2)(struct UnkStruct_02006234 *param0); +// int (*func3)(void); +// }; + +const u32 MOD52_021D76C8[4] = { + MOD52_021D757C, + MOD52_021D7594, + MOD52_021D75E8, + 0xFFFFFFFF, +}; + +const u32 MOD52_021D76D8[4] = { + MOD52_021D7528, + MOD52_021D7540, + MOD52_021D7560, + 0xFFFFFFFF, +}; + +const u32 MOD52_021D76E8[4] = { + MOD52_021D74E0, + MOD52_021D74F8, + MOD52_021D750C, + 0xFFFFFFFF, +}; + +const u8 MOD52_021D76F8[] = { + 0x9B, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x02, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0xA7, + 0x00, + 0x02, + 0x00, + 0xA7, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0xA5, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x02, + 0x00, + 0xA4, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0xA8, + 0x00, + 0x02, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0x9F, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA0, + 0x00, + 0x01, + 0x00, + 0xA2, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xA3, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0x9D, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA2, + 0x00, + 0x01, + 0x00, + 0xA3, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0xA0, + 0x00, + 0x01, + 0x00, + 0xA1, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0x9F, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x02, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA1, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xA0, + 0x00, + 0x02, + 0x00, + 0xA1, + 0x00, + 0x02, + 0x00, + 0xA2, + 0x00, + 0x02, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x03, + 0x00, + 0xA6, + 0x00, + 0x03, + 0x00, + 0xA7, + 0x00, + 0x03, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x02, + 0x00, + 0xAC, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0x9D, + 0x00, + 0x01, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x02, + 0x00, + 0xAD, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x02, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, +}; \ No newline at end of file -- cgit v1.2.3 From 000fd95ffcc81b03f0e25e46ce30884cf1ff59a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 18:16:42 +0100 Subject: module 52 header --- arm9/arm9.lsf | 1 - arm9/modules/52/asm/module_52.s | 0 arm9/modules/52/include/module_52.h | 42 +++ arm9/modules/52/src/module_52.c | 643 ++++++++++++++++++++++++++++++++++ arm9/modules/52/src/module_52_c.c | 665 ------------------------------------ 5 files changed, 685 insertions(+), 666 deletions(-) delete mode 100644 arm9/modules/52/asm/module_52.s create mode 100644 arm9/modules/52/include/module_52.h create mode 100644 arm9/modules/52/src/module_52.c delete mode 100644 arm9/modules/52/src/module_52_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 615430f9..b8accee4 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -899,7 +899,6 @@ Overlay MODULE_52 { ##Some kind of transition overlay for intro## After arm9 - Object module_52_c.o Object module_52.o } diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s deleted file mode 100644 index e69de29b..00000000 diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h new file mode 100644 index 00000000..46caf4e9 --- /dev/null +++ b/arm9/modules/52/include/module_52.h @@ -0,0 +1,42 @@ +#ifndef POKEDIAMOND_MODULE_52_H +#define POKEDIAMOND_MODULE_52_H + +#include "global.h" +#include "save_block_2.h" +#include "event_data.h" +#include "main.h" +#include "math_util.h" +#include "options.h" +#include "overlay_manager.h" +#include "player_data.h" +#include "sav_system_info.h" +#include "unk_02024E64.h" +#include "unk_020286F8.h" + +const u8 MOD52_021D76F8[]; + +THUMB_FUNC int MOD52_021D74E0(); +THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0); +THUMB_FUNC int MOD52_021D750C(); + +THUMB_FUNC int MOD52_021D7528(); +THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0); +THUMB_FUNC int MOD52_021D7560(); + +THUMB_FUNC int MOD52_021D757C(); +THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0); +THUMB_FUNC int MOD52_021D75E8(); + +THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); +THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2); +THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2); + +struct MOD52_Struct +{ + int (*func1)(void); + int (*func2)(struct UnkStruct_02006234 *param0); + int (*func3)(void); + u32 terminator; +}; + +#endif //POKEDIAMOND_MODULE_52_H \ No newline at end of file diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c new file mode 100644 index 00000000..766d5169 --- /dev/null +++ b/arm9/modules/52/src/module_52.c @@ -0,0 +1,643 @@ +#include "module_52.h" + +extern struct Unk21DBE18 UNK_020FD144; +extern struct Unk21DBE18 UNK_020F2B7C; +extern struct Unk21DBE18 UNK_020F2B8C; + +extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +extern int FUN_020168D0(u32 heap_id); +extern void FUN_02015E3C(struct IGT *igt); +extern void FUN_0206007C(struct SaveBlock2 *sav2); +extern int FUN_02053678(u32 random, u32 gender, u32 param2); +extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3); +extern void FUN_020377E0(struct SaveBlock2 *sav2); +extern void FUN_0205ECD4(struct ScriptState *script_state); + +THUMB_FUNC int MOD52_021D74E0() +{ + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; +} + +THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) +{ + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird + + MOD52_021D769C(0x4d, sav2); + + return 1; +} + +THUMB_FUNC int MOD52_021D750C() +{ + FUN_020168D0(0x4d); + RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144); + + return 1; +} + +THUMB_FUNC int MOD52_021D7528() +{ + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; +} + +THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) +{ + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird + + MOD52_021D7604(0x4d, sav2, 1); + struct IGT *igt = Sav2_PlayerData_GetIGTAddr(sav2); + FUN_02015E3C(igt); + + return 1; +} + +THUMB_FUNC int MOD52_021D7560() +{ + FUN_020168D0(0x4d); + RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C); + + return 1; +} + +THUMB_FUNC int MOD52_021D757C() +{ + FUN_0201681C(3, 0x4d, 2 << 16); + InitializeMainRNG(); + + return 1; +} + +THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) +{ + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird + + struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2); + + MOD52_021D7688(0x4d, sav2); + Options_SetButtonModeOnMain(sav2, 0); + + if (!Sav2_SysInfo_MacAddressIsMine(sav2_info) || !Sav2_SysInfo_RTCOffsetIsMine(sav2_info)) + { + FUN_020238A4(Sav2_SysInfo_RTC_get(sav2)); + Sav2_SysInfo_InitFromSystem(sav2_info); + } + + FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(sav2)); + + return 1; +} + +THUMB_FUNC int MOD52_021D75E8() +{ + FUN_020168D0(0x4d); + RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C); + + return 1; +} + +THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid) +{ + Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(sav2)); + Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(sav2)); + + struct UnkSaveStruct_020286F8 *unk_sav2 = FUN_0202881C(sav2); + + FUN_02028788(unk_sav2, 1, MTRandom()); + FUN_0206007C(sav2); + + struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); + u32 trainerid = MTRandom(); + + if (set_trainerid) + { + PlayerProfile_SetTrainerID(player_data, trainerid); + } + + u32 gender = PlayerProfile_GetTrainerGender(player_data); + int avatar = FUN_02053678(trainerid, gender, 0); + + PlayerProfile_SetAvatar(player_data, (u8)avatar); + + FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76); +} + +THUMB_FUNC void MOD52_021D7688(u32 unused UNUSED, struct SaveBlock2 *sav2) +{ + if (FUN_020226FC(sav2)) + { + return; + } + + OS_ResetSystem(0); +} + +THUMB_FUNC void MOD52_021D769C(u32 unused UNUSED, struct SaveBlock2 *sav2) +{ + Sav2_InitDynamicRegion(sav2); + FUN_020377E0(sav2); + struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); + PlayerProfile_SetMoney(player_data, 3000); + FUN_0205ECD4(SavArray_Flags_get(sav2)); +} + +const struct MOD52_Struct MOD52_021D76C8 = { + MOD52_021D757C, + MOD52_021D7594, + MOD52_021D75E8, + 0xFFFFFFFF, +}; + +const struct MOD52_Struct MOD52_021D76D8 = { + MOD52_021D7528, + MOD52_021D7540, + MOD52_021D7560, + 0xFFFFFFFF, +}; + +const struct MOD52_Struct MOD52_021D76E8 = { + MOD52_021D74E0, + MOD52_021D74F8, + MOD52_021D750C, + 0xFFFFFFFF, +}; + +const u8 MOD52_021D76F8[] = { + 0x9B, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x02, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0xA7, + 0x00, + 0x02, + 0x00, + 0xA7, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0x9B, + 0x00, + 0x01, + 0x00, + 0xA5, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x02, + 0x00, + 0xA4, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0xA8, + 0x00, + 0x02, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0x9F, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xA4, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA0, + 0x00, + 0x01, + 0x00, + 0xA2, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xA3, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x99, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0x9D, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA6, + 0x00, + 0x01, + 0x00, + 0xA2, + 0x00, + 0x01, + 0x00, + 0xA3, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x95, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x01, + 0x00, + 0x96, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x02, + 0x00, + 0xA0, + 0x00, + 0x01, + 0x00, + 0xA1, + 0x00, + 0x01, + 0x00, + 0x98, + 0x00, + 0x01, + 0x00, + 0x9C, + 0x00, + 0x01, + 0x00, + 0x9F, + 0x00, + 0x01, + 0x00, + 0xA8, + 0x00, + 0x02, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0x97, + 0x00, + 0x01, + 0x00, + 0xA1, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xA0, + 0x00, + 0x02, + 0x00, + 0xA1, + 0x00, + 0x02, + 0x00, + 0xA2, + 0x00, + 0x02, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0x9E, + 0x00, + 0x02, + 0x00, + 0xA5, + 0x00, + 0x03, + 0x00, + 0xA6, + 0x00, + 0x03, + 0x00, + 0xA7, + 0x00, + 0x03, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x02, + 0x00, + 0xAC, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0xAA, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xA9, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xAC, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAE, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x01, + 0x00, + 0x9D, + 0x00, + 0x01, + 0x00, + 0x9A, + 0x00, + 0x01, + 0x00, + 0xAB, + 0x00, + 0x02, + 0x00, + 0xAD, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x02, + 0x00, + 0xAA, + 0x00, + 0x02, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, + 0xAD, + 0x00, + 0x01, + 0x00, +}; \ No newline at end of file diff --git a/arm9/modules/52/src/module_52_c.c b/arm9/modules/52/src/module_52_c.c deleted file mode 100644 index 3e6d360f..00000000 --- a/arm9/modules/52/src/module_52_c.c +++ /dev/null @@ -1,665 +0,0 @@ -#include "global.h" -#include "save_block_2.h" -#include "event_data.h" -#include "main.h" -#include "math_util.h" -#include "options.h" -#include "overlay_manager.h" -#include "player_data.h" -#include "sav_system_info.h" -#include "unk_02024E64.h" -#include "unk_020286F8.h" - -extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); -extern int FUN_020168D0(u32 heap_id); -extern void MOD52_021D769C(u32 heap_id, struct SaveBlock2 *sav2); -extern struct Unk21DBE18 UNK_020FD144; -extern struct Unk21DBE18 UNK_020F2B7C; -extern struct Unk21DBE18 UNK_020F2B8C; - -void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid); -extern void FUN_02015E3C(struct IGT *igt); - -extern void MOD52_021D7688(u32 heap_id, struct SaveBlock2 *sav2); - -extern void FUN_0206007C(struct SaveBlock2 *sav2); -extern int FUN_02053678(u32 random, u32 gender, u32 param2); -extern void FUN_020250C4(void *sav_ptr, u32 heap_id, u8 *param2, u32 param3); - -extern void FUN_020377E0(struct SaveBlock2 *sav2); -extern void FUN_0205ECD4(struct ScriptState *script_state); - -extern const u8 MOD52_021D76F8[]; - -THUMB_FUNC int MOD52_021D74E0() -{ - FUN_0201681C(3, 0x4d, 2 << 16); - InitializeMainRNG(); - - return 1; -} - -THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0) -{ - struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; - - MOD52_021D769C(0x4d, sav2); - - return 1; -} - -THUMB_FUNC int MOD52_021D750C() -{ - FUN_020168D0(0x4d); - RegisterMainOverlay(-1, &UNK_020FD144); - - return 1; -} - -THUMB_FUNC int MOD52_021D7528() -{ - FUN_0201681C(3, 0x4d, 2 << 16); - InitializeMainRNG(); - - return 1; -} - -THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0) -{ - struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; - MOD52_021D7604(0x4d, sav2, 1); - struct IGT *igt = Sav2_PlayerData_GetIGTAddr(sav2); - FUN_02015E3C(igt); - - return 1; -} - -THUMB_FUNC int MOD52_021D7560() -{ - FUN_020168D0(0x4d); - RegisterMainOverlay(-1, &UNK_020F2B7C); - - return 1; -} - -THUMB_FUNC int MOD52_021D757C() -{ - FUN_0201681C(3, 0x4d, 2 << 16); - InitializeMainRNG(); - - return 1; -} - -THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0) -{ - struct SaveBlock2 *sav2 = OverlayManager_GetField18(param0)[2]; - struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2); - - MOD52_021D7688(0x4d, sav2); - Options_SetButtonModeOnMain(sav2, 0); - - if (!Sav2_SysInfo_MacAddressIsMine(sav2_info) || !Sav2_SysInfo_RTCOffsetIsMine(sav2_info)) - { - FUN_020238A4(Sav2_SysInfo_RTC_get(sav2)); - Sav2_SysInfo_InitFromSystem(sav2_info); - } - - FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(sav2)); - - return 1; -} - -THUMB_FUNC int MOD52_021D75E8() -{ - FUN_020168D0(0x4d); - RegisterMainOverlay(-1, &UNK_020F2B8C); - - return 1; -} - -THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid) -{ - Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(sav2)); - Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(sav2)); - - struct UnkSaveStruct_020286F8 *unk_sav2 = FUN_0202881C(sav2); - - FUN_02028788(unk_sav2, 1, MTRandom()); - FUN_0206007C(sav2); - - struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); - u32 trainerid = MTRandom(); - - if (set_trainerid) - { - PlayerProfile_SetTrainerID(player_data, trainerid); - } - - u32 gender = PlayerProfile_GetTrainerGender(player_data); - int avatar = FUN_02053678(trainerid, gender, 0); - - PlayerProfile_SetAvatar(player_data, avatar); - - FUN_020250C4(FUN_02024ECC(sav2), heap_id, &MOD52_021D76F8[0], 0x76); -} - -THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2) -{ - if (FUN_020226FC(sav2)) - { - return; - } - - OS_ResetSystem(0); -} - -THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2) -{ - Sav2_InitDynamicRegion(sav2); - FUN_020377E0(sav2); - struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); - PlayerProfile_SetMoney(player_data, 3000); - FUN_0205ECD4(SavArray_Flags_get(sav2)); -} - -// struct MOD52_Struct { -// int (*func1)(void); -// int (*func2)(struct UnkStruct_02006234 *param0); -// int (*func3)(void); -// }; - -const u32 MOD52_021D76C8[4] = { - MOD52_021D757C, - MOD52_021D7594, - MOD52_021D75E8, - 0xFFFFFFFF, -}; - -const u32 MOD52_021D76D8[4] = { - MOD52_021D7528, - MOD52_021D7540, - MOD52_021D7560, - 0xFFFFFFFF, -}; - -const u32 MOD52_021D76E8[4] = { - MOD52_021D74E0, - MOD52_021D74F8, - MOD52_021D750C, - 0xFFFFFFFF, -}; - -const u8 MOD52_021D76F8[] = { - 0x9B, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x02, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0xA7, - 0x00, - 0x02, - 0x00, - 0xA7, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0x9B, - 0x00, - 0x01, - 0x00, - 0xA5, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x02, - 0x00, - 0xA4, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0xA8, - 0x00, - 0x02, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0x9F, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xA4, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA0, - 0x00, - 0x01, - 0x00, - 0xA2, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xA3, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x99, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0x9D, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA6, - 0x00, - 0x01, - 0x00, - 0xA2, - 0x00, - 0x01, - 0x00, - 0xA3, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x95, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x01, - 0x00, - 0x96, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x02, - 0x00, - 0xA0, - 0x00, - 0x01, - 0x00, - 0xA1, - 0x00, - 0x01, - 0x00, - 0x98, - 0x00, - 0x01, - 0x00, - 0x9C, - 0x00, - 0x01, - 0x00, - 0x9F, - 0x00, - 0x01, - 0x00, - 0xA8, - 0x00, - 0x02, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0x97, - 0x00, - 0x01, - 0x00, - 0xA1, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xA0, - 0x00, - 0x02, - 0x00, - 0xA1, - 0x00, - 0x02, - 0x00, - 0xA2, - 0x00, - 0x02, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0x9E, - 0x00, - 0x02, - 0x00, - 0xA5, - 0x00, - 0x03, - 0x00, - 0xA6, - 0x00, - 0x03, - 0x00, - 0xA7, - 0x00, - 0x03, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x02, - 0x00, - 0xAC, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0xAA, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xA9, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xAC, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAE, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x01, - 0x00, - 0x9D, - 0x00, - 0x01, - 0x00, - 0x9A, - 0x00, - 0x01, - 0x00, - 0xAB, - 0x00, - 0x02, - 0x00, - 0xAD, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x02, - 0x00, - 0xAA, - 0x00, - 0x02, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, - 0xAD, - 0x00, - 0x01, - 0x00, -}; \ No newline at end of file -- cgit v1.2.3 From 7da64ed729153ceb36a639365de5ae183257426a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 18:19:33 +0100 Subject: remove unneeded includes --- arm9/global.inc | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index 70a13375..d816d92a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,15 +8519,3 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern MOD52_021D74E0 -.extern MOD52_021D74F8 -.extern MOD52_021D750C -.extern MOD52_021D7528 -.extern MOD52_021D7540 -.extern MOD52_021D7560 -.extern MOD52_021D757C -.extern MOD52_021D7594 -.extern MOD52_021D75E8 -.extern MOD52_021D7604 -.extern MOD52_021D7688 -.extern MOD52_021D769C -- cgit v1.2.3 From 6f4ef01cefe01b5c02e963c842f9f1515e12a5dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 18:26:05 +0100 Subject: header weirdness --- arm9/modules/52/include/module_52.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h index 46caf4e9..4c47a82d 100644 --- a/arm9/modules/52/include/module_52.h +++ b/arm9/modules/52/include/module_52.h @@ -2,7 +2,6 @@ #define POKEDIAMOND_MODULE_52_H #include "global.h" -#include "save_block_2.h" #include "event_data.h" #include "main.h" #include "math_util.h" @@ -10,6 +9,7 @@ #include "overlay_manager.h" #include "player_data.h" #include "sav_system_info.h" +#include "save_block_2.h" #include "unk_02024E64.h" #include "unk_020286F8.h" @@ -39,4 +39,4 @@ struct MOD52_Struct u32 terminator; }; -#endif //POKEDIAMOND_MODULE_52_H \ No newline at end of file +#endif // POKEDIAMOND_MODULE_52_H \ No newline at end of file -- cgit v1.2.3 From e31be2804e19b75ba41312bac87239a2f068efe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 16 Mar 2021 18:43:20 +0100 Subject: use #pragma unused --- arm9/modules/52/src/module_52.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'arm9') diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c index 766d5169..8b00f613 100644 --- a/arm9/modules/52/src/module_52.c +++ b/arm9/modules/52/src/module_52.c @@ -127,8 +127,10 @@ THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_tr FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76); } -THUMB_FUNC void MOD52_021D7688(u32 unused UNUSED, struct SaveBlock2 *sav2) +THUMB_FUNC void MOD52_021D7688(u32 unused, struct SaveBlock2 *sav2) { +#pragma unused(unused) + if (FUN_020226FC(sav2)) { return; @@ -137,8 +139,10 @@ THUMB_FUNC void MOD52_021D7688(u32 unused UNUSED, struct SaveBlock2 *sav2) OS_ResetSystem(0); } -THUMB_FUNC void MOD52_021D769C(u32 unused UNUSED, struct SaveBlock2 *sav2) +THUMB_FUNC void MOD52_021D769C(u32 unused, struct SaveBlock2 *sav2) { +#pragma unused(unused) + Sav2_InitDynamicRegion(sav2); FUN_020377E0(sav2); struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2); -- cgit v1.2.3 From b80100f71232394f72f2a278ff30c78e46b3ffd4 Mon Sep 17 00:00:00 2001 From: tgsm Date: Wed, 17 Mar 2021 00:33:05 -0400 Subject: unk_02024E64: use a struct for storing information Also add a missing include guard and name a couple of functions. --- arm9/global.inc | 4 ++-- arm9/modules/59/asm/mod59_021D74E0_asm.s | 2 +- arm9/src/script_buffers.c | 2 +- arm9/src/trainer_data.c | 2 +- arm9/src/unk_02024E64.c | 38 ++++++++++++++++---------------- 5 files changed, 24 insertions(+), 24 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index d816d92a..7c53db63 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1582,8 +1582,8 @@ .extern FUN_02024EC0 .extern FUN_02024ECC .extern FUN_02024ED8 -.extern FUN_02024EE8 -.extern FUN_02024EF4 +.extern GetRivalNamePtr +.extern RivalsNameToU16Array .extern FUN_02024F0C .extern FUN_02024F18 .extern Options_new diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index cd947e57..447b763f 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -181,7 +181,7 @@ MOD59_021D76C0: ; 0x021D76C0 bl FUN_02024EB4 ldr r1, [r4, #0x74] ldr r1, [r1, #0x18] - bl FUN_02024EF4 + bl RivalsNameToU16Array ldr r0, [r4, #0x70] bl FUN_02077AC4 ldr r0, [r4, #0x74] diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index 293c0bac..e9a55051 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -130,7 +130,7 @@ void BufferPlayersName(struct ScrStrBufs * mgr, u32 idx, struct PlayerData * dat void BufferRivalsName(struct ScrStrBufs * mgr, u32 idx, struct SaveBlock2 * sav2) { - u16 * name = FUN_02024EE8(FUN_02024EC0(sav2)); + u16 * name = GetRivalNamePtr(FUN_02024EC0(sav2)); CopyU16ArrayToString(mgr->tmpbuf, name); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); } diff --git a/arm9/src/trainer_data.c b/arm9/src/trainer_data.c index a797956c..f161b302 100644 --- a/arm9/src/trainer_data.c +++ b/arm9/src/trainer_data.c @@ -22,7 +22,7 @@ void EnemyTrainerSet_Init(struct BattleSetupStruct * enemies, struct SaveBlock2 // FIXME: String formatting in files/msgdata/msg/narc_0559.txt is abnormal. msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, heap_id); - rivalName = FUN_02024EE8(FUN_02024EC0(sav2)); + rivalName = GetRivalNamePtr(FUN_02024EC0(sav2)); for (i = 0; i < 4; i++) { if (enemies->trainer_idxs[i] != 0) diff --git a/arm9/src/unk_02024E64.c b/arm9/src/unk_02024E64.c index fc596418..d8682531 100644 --- a/arm9/src/unk_02024E64.c +++ b/arm9/src/unk_02024E64.c @@ -5,22 +5,22 @@ extern void FUN_02025484(void *param0); THUMB_FUNC u32 FUN_02024E64() { - return 0x74C; + return sizeof(struct UnkStruct_02024E64); } -THUMB_FUNC void FUN_02024E6C(void *param0) +THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0) { - MIi_CpuClearFast(0, param0, 0x74C); + MIi_CpuClearFast(0, param0, sizeof(struct UnkStruct_02024E64)); - FUN_020250A4(param0); + FUN_020250A4(param0->unk0); - FUN_02025484(param0 + (7 << 8)); + FUN_02025484(param0->unk700); - MIi_CpuClear16(0xFFFF, param0 + 0x724, 8); - MIi_CpuClear16(0xFFFF, param0 + 0x734, 0xb); + MIi_CpuClear16(0xFFFF, param0->rival_name_buf, sizeof(param0->rival_name_buf) / sizeof(u16)); + MIi_CpuClear16(0xFFFF, param0->unk734, sizeof(param0->unk734) / sizeof(u16)); } -THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2) +THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2) { return SavArray_get(sav2, 0xa); } @@ -30,33 +30,33 @@ THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2) return FUN_02022634(sav2, 0xa); } -THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2) +THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2) { return SavArray_get(sav2, 0xa); } THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2) { - void *res = SavArray_get(sav2, 0xa); - return res + (7 << 8); + struct UnkStruct_02024E64 *res = SavArray_get(sav2, 0xa); + return res->unk700; } -THUMB_FUNC u16 *FUN_02024EE8(void *buf) +THUMB_FUNC u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk) { - return buf + 0x724; + return unk->rival_name_buf; } -THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str) +THUMB_FUNC void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str) { - CopyStringToU16Array(str, buf + 0x392, 8); + CopyStringToU16Array(str, unk->rival_name_buf, sizeof(unk->rival_name_buf) / sizeof(u16)); } -THUMB_FUNC u16 *FUN_02024F0C(void *buf) +THUMB_FUNC u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk) { - return buf + 0x734; + return unk->unk734; } -THUMB_FUNC void FUN_02024F18(u16 *buf, struct String *str) +THUMB_FUNC void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str) { - CopyStringToU16Array(str, buf + 0x39A, 0xb); + CopyStringToU16Array(str, unk->unk734, sizeof(unk->unk734) / sizeof(u16)); } -- cgit v1.2.3 From 6a611e99617dbf1ed15c5e7d67a8f82665fa662e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 17 Mar 2021 22:34:21 +0100 Subject: decomp FUN_020166C8 --- arm9/arm9.lsf | 1 + arm9/asm/unk_020166C8.s | 167 ---------------------------------------------- arm9/global.inc | 1 + arm9/src/unk_020166C8_c.c | 106 +++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 167 deletions(-) create mode 100644 arm9/src/unk_020166C8_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b8accee4..7b581663 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -48,6 +48,7 @@ Static arm9 Object unk_02015D14.o Object unk_02015E30.o Object game_init.o + Object unk_020166C8_c.o Object unk_020166C8.o Object unk_02016B94.o Object unk_0201B1A8.o diff --git a/arm9/asm/unk_020166C8.s b/arm9/asm/unk_020166C8.s index 3c251114..39bf564d 100644 --- a/arm9/asm/unk_020166C8.s +++ b/arm9/asm/unk_020166C8.s @@ -2,175 +2,8 @@ .include "global.inc" .section .bss - - .global UNK_021C4D28 -UNK_021C4D28: ; 0x021C4D28 - .space 0x1c - .text - thumb_func_start FUN_020166C8 -FUN_020166C8: ; 0x020166C8 - push {r3-r7, lr} - sub sp, #0x8 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - str r0, [sp, #0x4] - add r0, #0x18 - add r6, r2, #0x0 - str r0, [sp, #0x4] - cmp r6, r0 - bhs _020166E0 - add r6, r0, #0x0 -_020166E0: - cmp r3, #0x0 - beq _020166FE - mov r0, #0x3 - tst r0, r3 - beq _020166F4 - mov r0, #0x3 -_020166EC: - add r3, r3, #0x1 - add r1, r3, #0x0 - tst r1, r0 - bne _020166EC -_020166F4: - mov r0, #0x0 - add r1, r3, #0x0 - mov r2, #0x4 - bl OS_AllocFromArenaLo -_020166FE: - ldr r1, [sp, #0x4] - lsl r7, r6, #0x1 - lsl r2, r1, #0x1 - add r1, r1, r2 - add r1, r1, #0x1 - lsl r1, r1, #0x2 - add r1, r7, r1 - mov r0, #0x0 - add r1, r6, r1 - mov r2, #0x4 - bl OS_AllocFromArenaLo - ldr r1, _020167F0 ; =UNK_021C4D28 - str r0, [r1, #0x0] - ldr r1, [sp, #0x4] - add r1, r1, #0x1 - lsl r1, r1, #0x2 - add r1, r0, r1 - ldr r0, _020167F0 ; =UNK_021C4D28 - str r1, [r0, #0x4] - ldr r0, [sp, #0x4] - lsl r0, r0, #0x2 - add r2, r1, r0 - ldr r1, _020167F0 ; =UNK_021C4D28 - str r2, [r1, #0x8] - add r1, r2, r0 - ldr r0, _020167F0 ; =UNK_021C4D28 - str r1, [r0, #0xc] - add r1, r1, r7 - str r1, [r0, #0x10] - strh r6, [r0, #0x14] - strh r4, [r0, #0x16] - ldr r0, [sp, #0x4] - mov r7, #0x0 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - ldr r0, _020167F0 ; =UNK_021C4D28 - cmp r4, #0x0 - strh r1, [r0, #0x1a] - strh r1, [r0, #0x18] - bls _020167A0 - str r7, [sp, #0x0] -_02016752: - ldr r0, [r5, #0x4] - cmp r0, #0x0 - beq _0201675C - cmp r0, #0x2 - beq _02016768 -_0201675C: - ldr r1, [r5, #0x0] - mov r0, #0x0 - mov r2, #0x4 - bl OS_AllocFromArenaLo - b _02016772 -_02016768: - ldr r1, [r5, #0x0] - mov r0, #0x2 - mov r2, #0x4 - bl OS_AllocFromArenaHi -_02016772: - cmp r0, #0x0 - beq _0201678E - ldr r1, [r5, #0x0] - mov r2, #0x0 - bl tempName_NNS_FndCreateExpHeapEx - ldr r1, _020167F0 ; =UNK_021C4D28 - ldr r2, [r1, #0x0] - ldr r1, [sp, #0x0] - str r0, [r2, r1] - ldr r0, _020167F0 ; =UNK_021C4D28 - ldr r0, [r0, #0x10] - strb r7, [r0, r7] - b _02016792 -_0201678E: - bl ErrorHandling -_02016792: - ldr r0, [sp, #0x0] - add r7, r7, #0x1 - add r0, r0, #0x4 - add r5, #0x8 - str r0, [sp, #0x0] - cmp r7, r4 - blo _02016752 -_020167A0: - ldr r0, [sp, #0x4] - add r1, r0, #0x1 - cmp r4, r1 - bhs _020167C0 - ldr r3, _020167F0 ; =UNK_021C4D28 - lsl r2, r4, #0x2 - mov r0, #0x0 -_020167AE: - ldr r5, [r3, #0x0] - str r0, [r5, r2] - ldrh r7, [r3, #0x1a] - ldr r5, [r3, #0x10] - add r2, r2, #0x4 - strb r7, [r5, r4] - add r4, r4, #0x1 - cmp r4, r1 - blo _020167AE -_020167C0: - cmp r4, r6 - bhs _020167D2 - ldr r0, _020167F0 ; =UNK_021C4D28 -_020167C6: - ldrh r2, [r0, #0x1a] - ldr r1, [r0, #0x10] - strb r2, [r1, r4] - add r4, r4, #0x1 - cmp r4, r6 - blo _020167C6 -_020167D2: - mov r4, #0x0 - cmp r6, #0x0 - bls _020167EA - ldr r0, _020167F0 ; =UNK_021C4D28 - add r3, r4, #0x0 - add r2, r4, #0x0 -_020167DE: - ldr r1, [r0, #0xc] - add r4, r4, #0x1 - strh r2, [r1, r3] - add r3, r3, #0x2 - cmp r4, r6 - blo _020167DE -_020167EA: - add sp, #0x8 - pop {r3-r7, pc} - nop -_020167F0: .word UNK_021C4D28 thumb_func_start FUN_020167F4 FUN_020167F4: ; 0x020167F4 diff --git a/arm9/global.inc b/arm9/global.inc index d816d92a..a9c01091 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,3 +8519,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon +.extern UNK_021C4D28 diff --git a/arm9/src/unk_020166C8_c.c b/arm9/src/unk_020166C8_c.c new file mode 100644 index 00000000..b3cb4503 --- /dev/null +++ b/arm9/src/unk_020166C8_c.c @@ -0,0 +1,106 @@ +#include "global.h" + +struct UnkStruct_020166C8 +{ + u32 *unk_ptr1; + void *unk_ptr2; + void *unk_ptr3; + u16 *unk_ptr4; + u8 *unk_ptr5; + u16 unk_half1; + u16 unk_half2; + u16 unk_half3; + u16 unk_half4; +}; + +struct UnkStruct_020166C8 UNK_021C4D28; + +extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); + + +THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) +{ + u32 r7; + u32 saved_in_stack; + + saved_in_stack = param1 + 0x18; + + if (param2 < saved_in_stack) + { + param2 = saved_in_stack; + } + if (pre_size != 0) + { + while (pre_size % 4 != 0) + { + pre_size++; + } + + OS_AllocFromArenaLo(0, pre_size, 4); + } + + r7 = param2 * 2; + void *ptr = OS_AllocFromArenaLo(0, (saved_in_stack * 3 + 1) * 4 + r7 + param2, 4); + UNK_021C4D28.unk_ptr1 = ptr; + ptr += (saved_in_stack + 1) * 4; + UNK_021C4D28.unk_ptr2 = ptr; + ptr += saved_in_stack * 4; + UNK_021C4D28.unk_ptr3 = ptr; + ptr += saved_in_stack * 4; + UNK_021C4D28.unk_ptr4 = ptr; + ptr += r7; + UNK_021C4D28.unk_ptr5 = ptr; + UNK_021C4D28.unk_half1 = param2; + UNK_021C4D28.unk_half2 = param1; + + r7 = 0; + UNK_021C4D28.unk_half4 = (u16)saved_in_stack; + UNK_021C4D28.unk_half3 = (u16)saved_in_stack; + + while (r7 < param1) + { + void *ptr; + if (param0[1] == 0 || param0[1] != 2) + { + ptr = OS_AllocFromArenaLo(0, param0[0], 4); + } + else + { + ptr = OS_AllocFromArenaHi(2, param0[0], 4); + } + + if (ptr != 0) + { + void *res = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); + UNK_021C4D28.unk_ptr1[r7] = res; + UNK_021C4D28.unk_ptr5[r7] = (u8)r7; + } + else + { + ErrorHandling(); + } + + param0 += 2; + r7++; + } + + while (param1 < saved_in_stack + 1) + { + UNK_021C4D28.unk_ptr1[param1] = 0; + UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + + param1++; + } + + while (param1 < param2) + { + UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + + param1++; + } + + for (param1 = 0; param1 < param2; param1++) + { + UNK_021C4D28.unk_ptr4[param1] = 0; + } +} -- cgit v1.2.3 From 4f75d9ce4df3d39b32d6bc77a15b88f4b58fa1ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 08:53:31 +0100 Subject: decomp smaller functions --- arm9/asm/unk_020166C8.s | 41 ------------------------------- arm9/global.inc | 1 + arm9/src/unk_020166C8_c.c | 62 +++++++++++++++++++++++++++++++++++------------ 3 files changed, 47 insertions(+), 57 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_020166C8.s b/arm9/asm/unk_020166C8.s index 39bf564d..ecbd9afe 100644 --- a/arm9/asm/unk_020166C8.s +++ b/arm9/asm/unk_020166C8.s @@ -5,47 +5,6 @@ .text - thumb_func_start FUN_020167F4 -FUN_020167F4: ; 0x020167F4 - ldr r1, _02016818 ; =UNK_021C4D28 - ldrh r0, [r1, #0x16] - ldrh r3, [r1, #0x18] - cmp r0, r3 - bge _02016812 - ldr r2, [r1, #0x0] - lsl r1, r0, #0x2 - add r2, r2, r1 -_02016804: - ldr r1, [r2, #0x0] - cmp r1, #0x0 - beq _02016816 - add r0, r0, #0x1 - add r2, r2, #0x4 - cmp r0, r3 - blt _02016804 -_02016812: - mov r0, #0x0 - mvn r0, r0 -_02016816: - bx lr - .balign 4 -_02016818: .word UNK_021C4D28 - - thumb_func_start FUN_0201681C -FUN_0201681C: ; 0x0201681C - push {r3, lr} - mov r3, #0x4 - bl FUN_02016834 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02016828 -FUN_02016828: ; 0x02016828 - push {r3, lr} - mov r3, #0x3 - mvn r3, r3 - bl FUN_02016834 - pop {r3, pc} thumb_func_start FUN_02016834 FUN_02016834: ; 0x02016834 diff --git a/arm9/global.inc b/arm9/global.inc index a9c01091..28515dd6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8520,3 +8520,4 @@ .extern MonNotFaintedOrEgg .extern CountAlivePokemon .extern UNK_021C4D28 +.extern FUN_020167F4 diff --git a/arm9/src/unk_020166C8_c.c b/arm9/src/unk_020166C8_c.c index b3cb4503..6e9e672f 100644 --- a/arm9/src/unk_020166C8_c.c +++ b/arm9/src/unk_020166C8_c.c @@ -16,18 +16,15 @@ struct UnkStruct_020166C8 struct UnkStruct_020166C8 UNK_021C4D28; extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); - +extern u32 FUN_02016834(u32 param0, u32 param1, u32 param2, u32 param3); THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) { - u32 r7; - u32 saved_in_stack; - - saved_in_stack = param1 + 0x18; - - if (param2 < saved_in_stack) + u32 unk_size = param1 + 24; + + if (param2 < unk_size) { - param2 = saved_in_stack; + param2 = unk_size; } if (pre_size != 0) { @@ -39,14 +36,15 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) OS_AllocFromArenaLo(0, pre_size, 4); } - r7 = param2 * 2; - void *ptr = OS_AllocFromArenaLo(0, (saved_in_stack * 3 + 1) * 4 + r7 + param2, 4); + u32 r7 = param2 * 2; + + void *ptr = OS_AllocFromArenaLo(0, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); UNK_021C4D28.unk_ptr1 = ptr; - ptr += (saved_in_stack + 1) * 4; + ptr += (unk_size + 1) * 4; UNK_021C4D28.unk_ptr2 = ptr; - ptr += saved_in_stack * 4; + ptr += unk_size * 4; UNK_021C4D28.unk_ptr3 = ptr; - ptr += saved_in_stack * 4; + ptr += unk_size * 4; UNK_021C4D28.unk_ptr4 = ptr; ptr += r7; UNK_021C4D28.unk_ptr5 = ptr; @@ -54,8 +52,8 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) UNK_021C4D28.unk_half2 = param1; r7 = 0; - UNK_021C4D28.unk_half4 = (u16)saved_in_stack; - UNK_021C4D28.unk_half3 = (u16)saved_in_stack; + UNK_021C4D28.unk_half4 = (u16)unk_size; + UNK_021C4D28.unk_half3 = (u16)unk_size; while (r7 < param1) { @@ -84,7 +82,7 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) r7++; } - while (param1 < saved_in_stack + 1) + while (param1 < unk_size + 1) { UNK_021C4D28.unk_ptr1[param1] = 0; UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; @@ -104,3 +102,35 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) UNK_021C4D28.unk_ptr4[param1] = 0; } } + +THUMB_FUNC s32 FUN_020167F4() +{ + s32 i = UNK_021C4D28.unk_half2; + s32 j = UNK_021C4D28.unk_half3; + + if (i < j) + { + u32 *ptr = UNK_021C4D28.unk_ptr1 + i; + do + { + if (*ptr == 0) + { + return i; + } + i++; + ptr++; + } while (i < j); + } + + return -1; +} + + +THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2) { + return FUN_02016834(param0, param1, param2, 4); +} + + +THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) { + return FUN_02016834(param0, param1, param2, -4); +} \ No newline at end of file -- cgit v1.2.3 From 71f0b43f821292a1093a9c7bad752f5a04655df3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 09:38:39 +0100 Subject: decomp FUN_02016834 --- arm9/asm/unk_020166C8.s | 79 ----------------------------------------------- arm9/src/unk_020166C8_c.c | 72 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 65 insertions(+), 86 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_020166C8.s b/arm9/asm/unk_020166C8.s index ecbd9afe..a1caec42 100644 --- a/arm9/asm/unk_020166C8.s +++ b/arm9/asm/unk_020166C8.s @@ -5,85 +5,6 @@ .text - - thumb_func_start FUN_02016834 -FUN_02016834: ; 0x02016834 - push {r3-r7, lr} - sub sp, #0x8 - add r4, r0, #0x0 - add r5, r1, #0x0 - str r2, [sp, #0x0] - add r7, r3, #0x0 - bl OS_GetProcMode - cmp r0, #0x12 - bne _0201684C - bl ErrorHandling -_0201684C: - ldr r1, _020168CC ; =UNK_021C4D28 - ldr r0, [r1, #0x10] - ldrh r3, [r1, #0x1a] - ldrb r2, [r0, r5] - cmp r3, r2 - bne _020168C2 - ldrb r0, [r0, r4] - ldr r1, [r1, #0x0] - lsl r0, r0, #0x2 - ldr r6, [r1, r0] - cmp r6, #0x0 - beq _020168BC - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - add r2, r7, #0x0 - bl tempName_NNS_FndAllocFromExpHeapEx - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _020168B6 - bl FUN_020167F4 - add r7, r0, #0x0 - bmi _020168B0 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0x0] - mov r2, #0x0 - lsl r4, r7, #0x2 - bl tempName_NNS_FndCreateExpHeapEx - ldr r1, _020168CC ; =UNK_021C4D28 - ldr r2, [r1, #0x0] - str r0, [r2, r4] - ldr r0, [r1, #0x0] - ldr r0, [r0, r4] - cmp r0, #0x0 - beq _020168AA - ldr r0, [r1, #0x4] - str r6, [r0, r4] - ldr r0, [sp, #0x4] - ldr r2, [r1, #0x8] - add sp, #0x8 - str r0, [r2, r4] - ldr r0, [r1, #0x10] - strb r7, [r0, r5] - mov r0, #0x1 - pop {r3-r7, pc} -_020168AA: - bl ErrorHandling - b _020168C6 -_020168B0: - bl ErrorHandling - b _020168C6 -_020168B6: - bl ErrorHandling - b _020168C6 -_020168BC: - bl ErrorHandling - b _020168C6 -_020168C2: - bl ErrorHandling -_020168C6: - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020168CC: .word UNK_021C4D28 - thumb_func_start FUN_020168D0 FUN_020168D0: ; 0x020168D0 push {r4, lr} diff --git a/arm9/src/unk_020166C8_c.c b/arm9/src/unk_020166C8_c.c index 6e9e672f..00640ec1 100644 --- a/arm9/src/unk_020166C8_c.c +++ b/arm9/src/unk_020166C8_c.c @@ -3,8 +3,8 @@ struct UnkStruct_020166C8 { u32 *unk_ptr1; - void *unk_ptr2; - void *unk_ptr3; + u32 *unk_ptr2; + void **unk_ptr3; u16 *unk_ptr4; u8 *unk_ptr5; u16 unk_half1; @@ -16,7 +16,8 @@ struct UnkStruct_020166C8 struct UnkStruct_020166C8 UNK_021C4D28; extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); -extern u32 FUN_02016834(u32 param0, u32 param1, u32 param2, u32 param3); +extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); +u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) { @@ -125,12 +126,69 @@ THUMB_FUNC s32 FUN_020167F4() return -1; } - -THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2) +{ return FUN_02016834(param0, param1, param2, 4); } - -THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) +{ return FUN_02016834(param0, param1, param2, -4); +} + + +THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) +{ + if (OS_GetProcMode() == OS_PROCMODE_IRQ) + { + ErrorHandling(); + } + + u8 *ptr = UNK_021C4D28.unk_ptr5; + if (UNK_021C4D28.unk_half4 == ptr[param1]) + { + u32 r6 = UNK_021C4D28.unk_ptr1[ptr[param0]]; + if (r6 != 0) + { + void *res = tempName_NNS_FndAllocFromExpHeapEx(r6, param2, param3); + if (res != 0) + { + param3 = FUN_020167F4(); + if (param3 >= 0) + { + UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(res, param2, 0); + + if (UNK_021C4D28.unk_ptr1[param3] != 0) + { + UNK_021C4D28.unk_ptr2[param3] = r6; + UNK_021C4D28.unk_ptr3[param3] = res; + UNK_021C4D28.unk_ptr5[param1] = param3; + + return 1; + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + return 0; } \ No newline at end of file -- cgit v1.2.3 From 777bb376069caa8ef66a7ac753d9d2d0250af052 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 18 Mar 2021 16:00:46 +0000 Subject: fix main scrcmd struct --- arm9/asm/scrcmd_asm.s | 66 ------------------------------------------------ arm9/asm/unk_02038C78.s | 2 +- arm9/global.inc | 2 +- arm9/src/scrcmd.c | 67 +++++++++++++++++++++++++++++++++---------------- arm9/src/scrcmd_18_c.c | 12 ++++----- 5 files changed, 53 insertions(+), 96 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 3c73d00c..19159d18 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,72 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203A188 -FUN_0203A188: ; 0x0203A188 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldrb r3, [r2, #0x0] - add r1, #0xa8 - ldr r2, [r1, #0x0] - cmp r2, #0x0 - bne _0203A1AA - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_0203A1AA: - lsl r1, r3, #0x4 - add r1, r3, r1 - add r2, #0x90 - lsl r1, r1, #0x4 - add r4, r2, r1 - ldrh r1, [r2, r1] - ldr r2, _0203A204 ; =0x0000FFFF - cmp r1, r2 - bne _0203A1E2 - ldr r2, _0203A208 ; =0x0000022B - mov r0, #0x1 - mov r1, #0x1a - mov r3, #0x20 - bl NewMsgDataFromNarc - add r6, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - ldrh r2, [r4, #0x2] - add r0, r5, #0x0 - add r1, r6, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - add r0, r6, #0x0 - bl DestroyMsgData - b _0203A1F4 -_0203A1E2: - mov r2, #0x6 - ldrsh r2, [r4, r2] - str r2, [sp, #0x0] - mov r2, #0x1 - str r2, [sp, #0x4] - ldrh r2, [r4, #0x2] - ldrh r3, [r4, #0x4] - bl MOD05_021E2C58 -_0203A1F4: - ldr r1, _0203A20C ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r4-r6, pc} - nop -_0203A204: .word 0x0000FFFF -_0203A208: .word 0x0000022B -_0203A20C: .word FUN_0203A2F0 - thumb_func_start FUN_0203A210 FUN_0203A210: ; 0x0203A210 push {r3-r7, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 2bada91e..7011ab90 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -659,7 +659,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_MessageFrom2 .word ScrCmd_Unk01FC .word ScrCmd_Unk01FD - .word FUN_0203A188 + .word ScrCmd_Unk01FE .word FUN_0203A210 .word FUN_0203C7F4 .word FUN_0203C820 diff --git a/arm9/global.inc b/arm9/global.inc index c0bd9b5f..82e4a51b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2748,7 +2748,7 @@ .extern ScrCmd_MessageFrom2 .extern ScrCmd_Unk01FC .extern ScrCmd_Unk01FD -.extern FUN_0203A188 +.extern ScrCmd_Unk01FE .extern FUN_0203A210 .extern FUN_0203A288 .extern FUN_0203A2C4 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 82a14a7c..86f5069a 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,17 +1,17 @@ #include "scrcmd.h" +#include "unk_0204639C.h" -extern u16 *GetVarPointer(struct UnkStruct_0204639C* arg, u16); -extern u16 VarGet(struct UnkStruct_0204639C* arg, u16 wk); -extern void *FUN_02039438(struct UnkStruct_0204639C* arg, u32 id); -extern void *CreateScriptContext(struct UnkStruct_0204639C* arg, u16 id); +extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); +extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); +extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); +extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); extern u8 FUN_02058448(u32 param0); -extern u32 FUN_02046534(u32 param0); -extern void FlagSet(struct UnkStruct_0204639C *arg, u16 flag); -extern void FlagClear(struct UnkStruct_0204639C *arg, u16 flag); -extern u8 FlagCheck(struct UnkStruct_0204639C *arg, u16 flag); -extern void TrainerFlagSet(struct UnkStruct_0204639C *arg, u16 flag); -extern void TrainerFlagClear(struct UnkStruct_0204639C *arg, u16 flag); -extern u8 TrainerFlagCheck(struct UnkStruct_0204639C *arg, u16 flag); +extern void FlagSet(struct UnkSavStruct80 *arg, u16 flag); +extern void FlagClear(struct UnkSavStruct80 *arg, u16 flag); +extern u8 FlagCheck(struct UnkSavStruct80 *arg, u16 flag); +extern void TrainerFlagSet(struct UnkSavStruct80 *arg, u16 flag); +extern void TrainerFlagClear(struct UnkSavStruct80 *arg, u16 flag); +extern u8 TrainerFlagCheck(struct UnkSavStruct80 *arg, u16 flag); extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u16 id); extern void MOD05_021E2BD0(struct ScriptContext *ctx, struct MsgData *msgData, u16 msgId, u32 param4, void *param5); extern BOOL FUN_0203A2F0(struct ScriptContext *ctx); @@ -43,7 +43,7 @@ THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx) { - struct UnkStruct_0204639C* arg = ctx->unk80; + struct UnkSavStruct80* arg = ctx->unk80; u16 num = ScriptReadHalfword(ctx); u16 wk = ScriptReadHalfword(ctx); u16* VarPointer = GetVarPointer(arg, wk); @@ -200,7 +200,7 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx) { - struct UnkStruct_0204639C* unk80 = ctx->unk80; + struct UnkSavStruct80* unk80 = ctx->unk80; u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x7); u32 **unk2 = (u32 **)FUN_02039438(unk80, 0xe); u16 id = ScriptReadHalfword(ctx); @@ -212,7 +212,7 @@ THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx) { - struct UnkStruct_0204639C* unk80 = ctx->unk80; + struct UnkSavStruct80* unk80 = ctx->unk80; u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x5); u8 *unk2 = (u8 *)FUN_02039438(unk80, 0x7); u32 **unk3 = (u32 **)FUN_02039438(unk80, 0xe); @@ -329,7 +329,7 @@ THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); FlagSet(unk80, flag); return FALSE; @@ -337,7 +337,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); FlagClear(unk80, flag); return FALSE; @@ -345,7 +345,7 @@ THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); ctx->comparisonResult = FlagCheck(unk80, flag); return FALSE; @@ -353,7 +353,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 *wk2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); *wk2 = FlagCheck(unk80, *wk1); @@ -362,7 +362,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); FlagSet(unk80, *wk); return FALSE; @@ -370,7 +370,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); TrainerFlagSet(unk80, flag); return FALSE; @@ -378,7 +378,7 @@ THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); TrainerFlagClear(unk80, flag); return FALSE; @@ -386,7 +386,7 @@ THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx) { - struct UnkStruct_0204639C *unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); ctx->comparisonResult = TrainerFlagCheck(unk80, flag); return FALSE; @@ -482,3 +482,26 @@ THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx) return TRUE; } +THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx) +{ + u8 id = ScriptReadByte(ctx); + + if (ctx->unk80->unkA8 == NULL) + { + return FALSE; + } + + u16 *unkArr = ctx->unk80->unkA8->unk90[id].unk0; + if (unkArr[0] == 0xFFFF) + { + struct MsgData *msgdata = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0x22b, 32); + MOD05_021E2BD0(ctx, msgdata, unkArr[1], 1, NULL); + DestroyMsgData(msgdata); + } + else + { + MOD05_021E2C58(ctx, unkArr[0], unkArr[1], unkArr[2], (s16)unkArr[3], 1); + } + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c index 510e181f..633ad71c 100644 --- a/arm9/src/scrcmd_18_c.c +++ b/arm9/src/scrcmd_18_c.c @@ -6,19 +6,19 @@ #include "map_header.h" #include "scrcmd.h" -extern u16 VarGet(struct UnkStruct_0204639C* arg, u16 wk); -extern u16 *GetVarPointer(struct UnkStruct_0204639C* arg, u16); +extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); +extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType); THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx) { - u32 mapSec = FUN_02034824(*(ctx->unk80->unk1C)); - struct UnkStruct_0204639C *savePtr = ctx->unk80; + u32 mapSec = FUN_02034824(*(ctx->unk80->mapId)); + struct UnkSavStruct80 *savePtr = ctx->unk80; u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 level = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 * varPtr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - struct PlayerParty * party = SavArray_PlayerParty_get((struct SaveBlock2 *) savePtr->unkC); - *varPtr = (u16)GiveMon(11, (struct SaveBlock2 *) savePtr->unkC, species, (u8)level, item, mapSec, 12); + struct PlayerParty * party = SavArray_PlayerParty_get(savePtr->saveBlock2); + *varPtr = (u16)GiveMon(11, savePtr->saveBlock2, species, (u8)level, item, mapSec, 12); return FALSE; } -- cgit v1.2.3 From dc241048eeac3cb560f621658dafc107226722fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 17:55:41 +0100 Subject: decomp FUN_020168D0 and FUN_02016944 --- arm9/asm/unk_020166C8.s | 95 ----------------------------------------------- arm9/global.inc | 1 + arm9/src/unk_020166C8_c.c | 49 ++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 95 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_020166C8.s b/arm9/asm/unk_020166C8.s index a1caec42..d28d1166 100644 --- a/arm9/asm/unk_020166C8.s +++ b/arm9/asm/unk_020166C8.s @@ -5,101 +5,6 @@ .text - thumb_func_start FUN_020168D0 -FUN_020168D0: ; 0x020168D0 - push {r4, lr} - add r4, r0, #0x0 - bl OS_GetProcMode - cmp r0, #0x12 - bne _020168E0 - bl ErrorHandling -_020168E0: - ldr r0, _02016940 ; =UNK_021C4D28 - ldr r1, [r0, #0x0] - ldr r0, [r0, #0x10] - ldrb r0, [r0, r4] - lsl r0, r0, #0x2 - ldr r0, [r1, r0] - cmp r0, #0x0 - beq _0201693E - bl thunk_FUN_020adc8c - ldr r1, _02016940 ; =UNK_021C4D28 - ldr r0, [r1, #0x10] - ldrb r0, [r0, r4] - lsl r2, r0, #0x2 - ldr r0, [r1, #0x4] - ldr r1, [r1, #0x8] - ldr r0, [r0, r2] - ldr r1, [r1, r2] - cmp r0, #0x0 - beq _02016912 - cmp r1, #0x0 - beq _02016912 - bl FUN_020ADDF0 - b _02016916 -_02016912: - bl ErrorHandling -_02016916: - ldr r1, _02016940 ; =UNK_021C4D28 - mov r0, #0x0 - ldr r2, [r1, #0x10] - ldr r3, [r1, #0x0] - ldrb r2, [r2, r4] - lsl r2, r2, #0x2 - str r0, [r3, r2] - ldr r2, [r1, #0x10] - ldr r3, [r1, #0x4] - ldrb r2, [r2, r4] - lsl r2, r2, #0x2 - str r0, [r3, r2] - ldr r2, [r1, #0x10] - ldr r3, [r1, #0x8] - ldrb r2, [r2, r4] - lsl r2, r2, #0x2 - str r0, [r3, r2] - ldrh r2, [r1, #0x1a] - ldr r0, [r1, #0x10] - strb r2, [r0, r4] -_0201693E: - pop {r4, pc} - .balign 4 -_02016940: .word UNK_021C4D28 - - thumb_func_start FUN_02016944 -FUN_02016944: ; 0x02016944 - push {r3-r7, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - add r7, r2, #0x0 - add r6, r3, #0x0 - cmp r5, #0x0 - bne _02016956 - bl ErrorHandling -_02016956: - bl OS_DisableInterrupts - add r4, #0x10 - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r7, #0x0 - bl tempName_NNS_FndAllocFromExpHeapEx - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - bl OS_RestoreInterrupts - cmp r4, #0x0 - beq _02016984 - ldr r1, [r4, #0xc] - mov r0, #0xff - bic r1, r0 - lsl r0, r6, #0x18 - lsr r0, r0, #0x18 - orr r0, r1 - str r0, [r4, #0xc] - add r4, #0x10 -_02016984: - add r0, r4, #0x0 - pop {r3-r7, pc} - thumb_func_start FUN_02016988 FUN_02016988: ; 0x02016988 push {r3, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 28515dd6..e30ba1c5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8521,3 +8521,4 @@ .extern CountAlivePokemon .extern UNK_021C4D28 .extern FUN_020167F4 +.extern FUN_02016944 \ No newline at end of file diff --git a/arm9/src/unk_020166C8_c.c b/arm9/src/unk_020166C8_c.c index 00640ec1..36428a59 100644 --- a/arm9/src/unk_020166C8_c.c +++ b/arm9/src/unk_020166C8_c.c @@ -18,6 +18,8 @@ struct UnkStruct_020166C8 UNK_021C4D28; extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); +extern void thunk_FUN_020adc8c(); +extern void FUN_020ADDF0(u32 param0, void *param1); THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) { @@ -191,4 +193,51 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) ErrorHandling(); } return 0; +} + + +THUMB_FUNC void FUN_020168D0(u32 param0) { + if (OS_GetProcMode() == OS_PROCMODE_IRQ) { + ErrorHandling(); + } + + if (UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[param0]] != 0) { + thunk_FUN_020adc8c(); + + u8 index = UNK_021C4D28.unk_ptr5[param0]; + u32 arg1 = UNK_021C4D28.unk_ptr2[index]; + void *arg2 = UNK_021C4D28.unk_ptr3[index]; + if (arg1 != 0 && arg2 != 0) { + FUN_020ADDF0(arg1, arg2); + } else { + ErrorHandling(); + } + + + + UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[param0]] = 0; + UNK_021C4D28.unk_ptr2[UNK_021C4D28.unk_ptr5[param0]] = 0; + UNK_021C4D28.unk_ptr3[UNK_021C4D28.unk_ptr5[param0]] = 0; + + UNK_021C4D28.unk_ptr5[param0] = UNK_021C4D28.unk_half4; + } +} + + +THUMB_FUNC u32 FUN_02016944(void *param0, u32 param1, u32 param2, u8 param3) { + if (param0 == 0) { + ErrorHandling(); + } + OSIntrMode os_mode = OS_DisableInterrupts(); + param1+=16; + u32 *ptr = (u32 *) tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2); + + OS_RestoreInterrupts(os_mode); + if (ptr != 0) { + ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff); + + ptr+=4; + } + + return ptr; } \ No newline at end of file -- cgit v1.2.3 From 1d566ba7cf311dc85aecd43592724ce00bd73d93 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 18 Mar 2021 17:05:03 +0000 Subject: more --- arm9/asm/scrcmd_asm.s | 120 +----------------------------------------------- arm9/asm/unk_02038C78.s | 6 +-- arm9/global.inc | 6 +-- arm9/src/scrcmd.c | 55 ++++++++++++++++++++-- 4 files changed, 59 insertions(+), 128 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 19159d18..c2751ee2 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -2,10 +2,10 @@ .include "global.inc" .extern UNK_020F34E0 - .extern sScriptConditionTable .extern UNK_020F34FC .extern UNK_020F3538 .extern gMain + .extern FUN_0203A2F0 .section .bss @@ -15,124 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203A210 -FUN_0203A210: ; 0x0203A210 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r2, [r5, #0x8] - ldr r6, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r4, [r2, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - ldr r1, [r5, #0x8] - add r2, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r3, [r1, #0x0] - mov r1, #0x0 - add r0, sp, #0x4 - strb r1, [r0, #0x0] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r0, [r6, #0xc] - add r1, r7, #0x0 - bl MOD06_02244210 - add r6, r0, #0x0 - add r2, sp, #0x4 - ldrb r2, [r2, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, r4, r2 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - mov r3, #0x1 - bl MOD05_021E2CBC - add r0, r6, #0x0 - bl ScrStrBufs_delete - ldr r1, _0203A284 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203A284: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A288 -FUN_0203A288: ; 0x0203A288 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r4, r0, #0x0 - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - mov r1, #0x3 - add r0, sp, #0x4 - strb r1, [r0, #0x2] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl MOD05_021E2BD0 - ldr r1, _0203A2C0 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_0203A2C0: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A2C4 -FUN_0203A2C4: ; 0x0203A2C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - ldr r2, [r4, #0x8] - mov r3, #0x1 - add r1, r2, #0x1 - str r1, [r4, #0x8] - mov r1, #0x0 - str r1, [sp, #0x0] - ldrb r2, [r2, #0x0] - ldr r1, [r4, #0x78] - bl MOD05_021E2BD0 - ldr r1, _0203A2EC ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203A2EC: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A2F0 -FUN_0203A2F0: ; 0x0203A2F0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x3 - bl FUN_02039438 - ldrb r0, [r0, #0x0] - bl FUN_020546C8 - pop {r3, pc} - thumb_func_start FUN_0203A304 FUN_0203A304: ; 0x0203A304 push {r3-r4, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 7011ab90..3978d8c1 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -193,7 +193,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_CopyVar .word ScrCmd_SetOrCopyVar .word ScrCmd_Message - .word FUN_0203A2C4 + .word ScrCmd_Unk002C .word FUN_0203A304 .word FUN_0203A388 .word FUN_0203A400 @@ -660,7 +660,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk01FC .word ScrCmd_Unk01FD .word ScrCmd_Unk01FE - .word FUN_0203A210 + .word ScrCmd_Unk01FF .word FUN_0203C7F4 .word FUN_0203C820 .word FUN_0203E5DC @@ -770,7 +770,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203F110 .word FUN_0203F174 .word FUN_0203F19C - .word FUN_0203A288 + .word ScrCmd_Unk026D .word FUN_0203F234 .word FUN_0203F254 .word FUN_0203F26C diff --git a/arm9/global.inc b/arm9/global.inc index 82e4a51b..0190b134 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2749,9 +2749,9 @@ .extern ScrCmd_Unk01FC .extern ScrCmd_Unk01FD .extern ScrCmd_Unk01FE -.extern FUN_0203A210 -.extern FUN_0203A288 -.extern FUN_0203A2C4 +.extern ScrCmd_Unk01FF +.extern ScrCmd_Unk026D +.extern ScrCmd_Unk002C .extern FUN_0203A304 .extern FUN_0203A340 .extern FUN_0203A388 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 86f5069a..9e6a337a 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -14,12 +14,16 @@ extern void TrainerFlagClear(struct UnkSavStruct80 *arg, u16 flag); extern u8 TrainerFlagCheck(struct UnkSavStruct80 *arg, u16 flag); extern void MOD05_ShowMessageInField(struct ScriptContext *ctx, struct MsgData *msgData, u16 id); extern void MOD05_021E2BD0(struct ScriptContext *ctx, struct MsgData *msgData, u16 msgId, u32 param4, void *param5); -extern BOOL FUN_0203A2F0(struct ScriptContext *ctx); extern void MOD05_021E2C58(struct ScriptContext *ctx, u16 typ, u16 id, u16 word1, s16 word2, u8 param5); +extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 sex, u8 flag, u8 *unk); +extern void MOD05_021E2CBC(struct ScriptContext *ctx, struct ScrStrBufs *str, u8 param2, u32 param3); +extern void MOD05_021E2BB8(void *param0, struct ScriptContext *ctx); +extern BOOL FUN_020546C8(u8 param0); static BOOL RunPauseTimer(struct ScriptContext* ctx); static u32 Compare(u16 a, u16 b); static BOOL FUN_02039CC8(struct ScriptContext* ctx); +/*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx); extern u8 sScriptConditionTable[6][3]; @@ -464,7 +468,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx) u16 typ = ScriptReadHalfword(ctx); u16 id = ScriptReadHalfword(ctx); u16 word1 = ScriptReadHalfword(ctx); - u16 word2 = ScriptReadHalfword(ctx); + s16 word2 = (s16)ScriptReadHalfword(ctx); MOD05_021E2C58(ctx, typ, id, word1, word2, 0xff); return FALSE; @@ -475,7 +479,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx) u16 typ = ScriptReadHalfword(ctx); u16 id = ScriptReadHalfword(ctx); u16 word1 = ScriptReadHalfword(ctx); - u16 word2 = ScriptReadHalfword(ctx); + s16 word2 = (s16)ScriptReadHalfword(ctx); MOD05_021E2C58(ctx, typ, id, word1, word2, 1); SetupNativeScript(ctx, FUN_0203A2F0); @@ -505,3 +509,48 @@ THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx) SetupNativeScript(ctx, FUN_0203A2F0); return TRUE; } + +THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 msg = ScriptReadByte(ctx); + u16 poke = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 sex = ScriptReadHalfword(ctx); + u8 flag = ScriptReadByte(ctx); + u8 unk = 0; + + struct ScrStrBufs *str = MOD06_02244210(unk80->saveBlock2, poke, sex, flag, &unk); + MOD05_021E2CBC(ctx, str, (u8)(msg + unk), 1); + ScrStrBufs_delete(str); + + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font? +{ + struct UnkStruct_0203A288 myLocalStruct; + u16 msg = ScriptReadHalfword(ctx); + + MOD05_021E2BB8(&myLocalStruct, ctx); + myLocalStruct.unk2 = 3; + + MOD05_021E2BD0(ctx, ctx->msgData, msg, 0, &myLocalStruct); + SetupNativeScript(ctx, FUN_0203A2F0); + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx) +{ + u8 msg = ScriptReadByte(ctx); + MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx) +{ + u8 *unk = (u8 *)FUN_02039438(ctx->unk80, 3); + return FUN_020546C8(*unk); +} -- cgit v1.2.3 From 6f8f78f701185bf65d962e46ab62d4a0457c53d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 20:03:46 +0100 Subject: finish heap.c --- arm9/arm9.lsf | 3 +- arm9/asm/unk_020166C8.s | 283 --------------------- arm9/modules/05/src/mod05_021E72FC.c | 2 +- arm9/modules/52/src/module_52.c | 4 +- arm9/modules/59/src/mod59_021D74E0_src.c | 3 +- arm9/src/game_init.c | 5 +- arm9/src/heap.c | 407 +++++++++++++++++++++++++++++++ arm9/src/unk_020166C8_c.c | 243 ------------------ 8 files changed, 415 insertions(+), 535 deletions(-) delete mode 100644 arm9/asm/unk_020166C8.s create mode 100644 arm9/src/heap.c delete mode 100644 arm9/src/unk_020166C8_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7b581663..df095b52 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -48,8 +48,7 @@ Static arm9 Object unk_02015D14.o Object unk_02015E30.o Object game_init.o - Object unk_020166C8_c.o - Object unk_020166C8.o + Object heap.o Object unk_02016B94.o Object unk_0201B1A8.o Object unk_0201B4E8.o diff --git a/arm9/asm/unk_020166C8.s b/arm9/asm/unk_020166C8.s deleted file mode 100644 index d28d1166..00000000 --- a/arm9/asm/unk_020166C8.s +++ /dev/null @@ -1,283 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - .text - - - thumb_func_start FUN_02016988 -FUN_02016988: ; 0x02016988 - push {r3, lr} - bl FUN_02031810 - cmp r0, #0x0 - beq _02016996 - bl PrintErrorMessageAndReset -_02016996: - pop {r3, pc} - - thumb_func_start AllocFromHeap -AllocFromHeap: ; 0x02016998 - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _020169D4 ; =UNK_021C4D28 - mov r4, #0x0 - ldrh r2, [r0, #0x14] - cmp r5, r2 - bhs _020169BA - ldr r2, [r0, #0x0] - ldr r0, [r0, #0x10] - add r3, r5, #0x0 - ldrb r0, [r0, r5] - lsl r0, r0, #0x2 - ldr r0, [r2, r0] - mov r2, #0x4 - bl FUN_02016944 - add r4, r0, #0x0 -_020169BA: - cmp r4, #0x0 - beq _020169CC - ldr r0, _020169D4 ; =UNK_021C4D28 - lsl r1, r5, #0x1 - ldr r2, [r0, #0xc] - ldrh r0, [r2, r1] - add r0, r0, #0x1 - strh r0, [r2, r1] - b _020169D0 -_020169CC: - bl FUN_02016988 -_020169D0: - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_020169D4: .word UNK_021C4D28 - - thumb_func_start AllocFromHeapAtEnd -AllocFromHeapAtEnd: ; 0x020169D8 - push {r3-r5, lr} - ldr r2, _02016A14 ; =UNK_021C4D28 - add r5, r0, #0x0 - ldrh r0, [r2, #0x14] - mov r4, #0x0 - cmp r5, r0 - bhs _020169FA - ldr r0, [r2, #0x0] - ldr r2, [r2, #0x10] - add r3, r5, #0x0 - ldrb r2, [r2, r5] - lsl r2, r2, #0x2 - ldr r0, [r0, r2] - sub r2, r4, #0x4 - bl FUN_02016944 - add r4, r0, #0x0 -_020169FA: - cmp r4, #0x0 - beq _02016A0C - ldr r0, _02016A14 ; =UNK_021C4D28 - lsl r1, r5, #0x1 - ldr r2, [r0, #0xc] - ldrh r0, [r2, r1] - add r0, r0, #0x1 - strh r0, [r2, r1] - b _02016A10 -_02016A0C: - bl FUN_02016988 -_02016A10: - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_02016A14: .word UNK_021C4D28 - - thumb_func_start FreeToHeap -FreeToHeap: ; 0x02016A18 - push {r3-r7, lr} - add r6, r0, #0x0 - sub r0, r6, #0x4 - ldr r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, _02016A88 ; =UNK_021C4D28 - ldrh r1, [r0, #0x14] - cmp r4, r1 - bhs _02016A80 - ldr r1, [r0, #0x0] - ldr r0, [r0, #0x10] - ldrb r0, [r0, r4] - lsl r0, r0, #0x2 - ldr r7, [r1, r0] - cmp r7, #0x0 - bne _02016A3E - bl ErrorHandling -_02016A3E: - ldr r0, _02016A88 ; =UNK_021C4D28 - lsl r5, r4, #0x1 - ldr r0, [r0, #0xc] - ldrh r0, [r0, r5] - cmp r0, #0x0 - bne _02016A50 - add r0, r4, #0x0 - bl FUN_02016B90 -_02016A50: - ldr r0, _02016A88 ; =UNK_021C4D28 - ldr r0, [r0, #0xc] - ldrh r0, [r0, r5] - cmp r0, #0x0 - bne _02016A5E - bl ErrorHandling -_02016A5E: - ldr r0, _02016A88 ; =UNK_021C4D28 - ldr r1, [r0, #0xc] - ldrh r0, [r1, r5] - sub r0, r0, #0x1 - strh r0, [r1, r5] - bl OS_DisableInterrupts - sub r6, #0x10 - add r4, r0, #0x0 - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_020ADDF0 - add r0, r4, #0x0 - bl OS_RestoreInterrupts - pop {r3-r7, pc} -_02016A80: - bl ErrorHandling - pop {r3-r7, pc} - nop -_02016A88: .word UNK_021C4D28 - - thumb_func_start FUN_02016A8C -FUN_02016A8C: ; 0x02016A8C - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl OS_GetProcMode - cmp r0, #0x12 - bne _02016A9E - bl ErrorHandling -_02016A9E: - ldr r0, _02016AF4 ; =UNK_021C4D28 - ldrh r1, [r0, #0x14] - cmp r5, r1 - bhs _02016AEE - ldr r1, [r0, #0x0] - ldr r0, [r0, #0x10] - ldrb r0, [r0, r5] - lsl r0, r0, #0x2 - ldr r6, [r1, r0] - cmp r6, #0x0 - bne _02016AB8 - bl ErrorHandling -_02016AB8: - sub r0, r4, #0x4 - ldr r0, [r0, #0x0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, r5 - beq _02016AC8 - bl ErrorHandling -_02016AC8: - sub r4, #0x10 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl FUN_020ADDF0 - ldr r0, _02016AF4 ; =UNK_021C4D28 - lsl r4, r5, #0x1 - ldr r0, [r0, #0xc] - ldrh r0, [r0, r4] - cmp r0, #0x0 - bne _02016AE2 - bl ErrorHandling -_02016AE2: - ldr r0, _02016AF4 ; =UNK_021C4D28 - ldr r1, [r0, #0xc] - ldrh r0, [r1, r4] - sub r0, r0, #0x1 - strh r0, [r1, r4] - pop {r4-r6, pc} -_02016AEE: - bl ErrorHandling - pop {r4-r6, pc} - .balign 4 -_02016AF4: .word UNK_021C4D28 - - thumb_func_start FUN_02016AF8 -FUN_02016AF8: ; 0x02016AF8 - push {r3, lr} - ldr r1, _02016B1C ; =UNK_021C4D28 - ldrh r2, [r1, #0x14] - cmp r0, r2 - bhs _02016B12 - ldr r2, [r1, #0x0] - ldr r1, [r1, #0x10] - ldrb r0, [r1, r0] - lsl r0, r0, #0x2 - ldr r0, [r2, r0] - bl FUN_020ADDC8 - pop {r3, pc} -_02016B12: - bl ErrorHandling - mov r0, #0x0 - pop {r3, pc} - nop -_02016B1C: .word UNK_021C4D28 - - thumb_func_start FUN_02016B20 -FUN_02016B20: ; 0x02016B20 - push {r4, lr} - ldr r4, _02016B40 ; =UNK_021C4D28 - ldrh r3, [r4, #0x14] - cmp r1, r3 - bhs _02016B3A - ldr r3, [r4, #0x0] - ldr r4, [r4, #0x10] - ldrb r1, [r4, r1] - lsl r1, r1, #0x2 - ldr r1, [r3, r1] - bl FUN_020AE82C - pop {r4, pc} -_02016B3A: - bl ErrorHandling - pop {r4, pc} - .balign 4 -_02016B40: .word UNK_021C4D28 - - thumb_func_start FUN_02016B44 -FUN_02016B44: ; 0x02016B44 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl OS_GetProcMode - cmp r0, #0x12 - bne _02016B56 - bl ErrorHandling -_02016B56: - add r0, r5, #0x0 - sub r0, #0x10 - bl FUN_020ADDC0 - add r4, #0x10 - cmp r0, r4 - blo _02016B84 - sub r2, r5, #0x4 - ldr r0, _02016B8C ; =UNK_021C4D28 - ldr r2, [r2, #0x0] - ldr r1, [r0, #0x0] - lsl r2, r2, #0x18 - ldr r0, [r0, #0x10] - lsr r2, r2, #0x18 - ldrb r0, [r0, r2] - sub r5, #0x10 - add r2, r4, #0x0 - lsl r0, r0, #0x2 - ldr r0, [r1, r0] - add r1, r5, #0x0 - bl FUN_020ADE2C - pop {r3-r5, pc} -_02016B84: - bl ErrorHandling - pop {r3-r5, pc} - nop -_02016B8C: .word UNK_021C4D28 - - thumb_func_start FUN_02016B90 -FUN_02016B90: ; 0x02016B90 - mov r0, #0x1 - bx lr diff --git a/arm9/modules/05/src/mod05_021E72FC.c b/arm9/modules/05/src/mod05_021E72FC.c index 8a31d032..c24a7bd3 100644 --- a/arm9/modules/05/src/mod05_021E72FC.c +++ b/arm9/modules/05/src/mod05_021E72FC.c @@ -2,6 +2,7 @@ #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); @@ -19,7 +20,6 @@ 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 FUN_020054F0(u32 param0, u32 param1); -extern void FUN_02016A8C(u32 param0, void *param1); THUMB_FUNC BOOL MOD05_021E72FC(u32 param0, u32 param1) { diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c index 8b00f613..a5b53e6c 100644 --- a/arm9/modules/52/src/module_52.c +++ b/arm9/modules/52/src/module_52.c @@ -1,11 +1,11 @@ #include "module_52.h" +#include "heap.h" + extern struct Unk21DBE18 UNK_020FD144; extern struct Unk21DBE18 UNK_020F2B7C; extern struct Unk21DBE18 UNK_020F2B8C; -extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2); -extern int FUN_020168D0(u32 heap_id); extern void FUN_02015E3C(struct IGT *igt); extern void FUN_0206007C(struct SaveBlock2 *sav2); extern int FUN_02053678(u32 random, u32 gender, u32 param2); diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c index 9fccfd95..4d7a4a98 100644 --- a/arm9/modules/59/src/mod59_021D74E0_src.c +++ b/arm9/modules/59/src/mod59_021D74E0_src.c @@ -2,8 +2,9 @@ #include "player_data.h" #include "overlay_manager.h" #include "mod59_021D74E0.h" +#include "heap.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) diff --git a/arm9/src/game_init.c b/arm9/src/game_init.c index 327c66c6..a7508fab 100644 --- a/arm9/src/game_init.c +++ b/arm9/src/game_init.c @@ -4,16 +4,15 @@ #include "main.h" #include "FS_rom.h" #include "PAD_pad.h" -#include "heap.h" #include "MWC_string.h" #include "tp.h" #include "unk_0201B4E8.h" #include "game_init.h" #include "registers.h" +#include "heap.h" #pragma thumb on -extern void FUN_020166C8(const u32 (*)[2], int, int, int); extern void FUN_02022450(void); typedef volatile struct @@ -142,7 +141,7 @@ void FUN_02015FC8(void) { csum++; } - FUN_020166C8(UNK_020EDB10, 4, 92, (int)csum); + FUN_020166C8((u32 *)UNK_020EDB10, 4, 92, (int)csum); } void InitSystemForTheGame(void) diff --git a/arm9/src/heap.c b/arm9/src/heap.c new file mode 100644 index 00000000..a23937b0 --- /dev/null +++ b/arm9/src/heap.c @@ -0,0 +1,407 @@ +#include "heap.h" + +extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); +extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); +u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); +extern void thunk_FUN_020adc8c(); +extern void FUN_020ADDF0(u32 param0, void *param1); +extern u32 FUN_02031810(void); +extern void PrintErrorMessageAndReset(void); +extern u32 FUN_020ADDC8(u32 param0); +extern void FUN_020AE82C(u32 param0, u32 param1, u32 param2); +extern u32 FUN_020ADDC0(u32 param0); +extern void FUN_020ADE2C(u32 param0, void *ptr, u32 param2); + + +struct UnkStruct_020166C8 UNK_021C4D28; + + +THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) +{ + u32 unk_size = param1 + 24; + + if (param2 < unk_size) + { + param2 = unk_size; + } + if (pre_size != 0) + { + while (pre_size % 4 != 0) + { + pre_size++; + } + + OS_AllocFromArenaLo(0, pre_size, 4); + } + + u32 r7 = param2 * 2; + + void *ptr = OS_AllocFromArenaLo(0, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); + UNK_021C4D28.unk_ptr1 = ptr; + ptr += (unk_size + 1) * 4; + UNK_021C4D28.unk_ptr2 = ptr; + ptr += unk_size * 4; + UNK_021C4D28.unk_ptr3 = ptr; + ptr += unk_size * 4; + UNK_021C4D28.unk_ptr4 = ptr; + ptr += r7; + UNK_021C4D28.unk_ptr5 = ptr; + UNK_021C4D28.unk_half1 = param2; + UNK_021C4D28.unk_half2 = param1; + + r7 = 0; + UNK_021C4D28.unk_half4 = (u16)unk_size; + UNK_021C4D28.unk_half3 = (u16)unk_size; + + while (r7 < param1) + { + void *ptr; + if (param0[1] == 0 || param0[1] != 2) + { + ptr = OS_AllocFromArenaLo(0, param0[0], 4); + } + else + { + ptr = OS_AllocFromArenaHi(2, param0[0], 4); + } + + if (ptr != 0) + { + void *res = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); + UNK_021C4D28.unk_ptr1[r7] = res; + UNK_021C4D28.unk_ptr5[r7] = (u8)r7; + } + else + { + ErrorHandling(); + } + + param0 += 2; + r7++; + } + + while (param1 < unk_size + 1) + { + UNK_021C4D28.unk_ptr1[param1] = 0; + UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + + param1++; + } + + while (param1 < param2) + { + UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + + param1++; + } + + for (param1 = 0; param1 < param2; param1++) + { + UNK_021C4D28.unk_ptr4[param1] = 0; + } +} + +THUMB_FUNC s32 FUN_020167F4() +{ + s32 i = UNK_021C4D28.unk_half2; + s32 j = UNK_021C4D28.unk_half3; + + if (i < j) + { + u32 *ptr = UNK_021C4D28.unk_ptr1 + i; + do + { + if (*ptr == 0) + { + return i; + } + i++; + ptr++; + } while (i < j); + } + + return -1; +} + +THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2) +{ + return FUN_02016834(param0, param1, param2, 4); +} + +THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) +{ + return FUN_02016834(param0, param1, param2, -4); +} + +THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) +{ + if (OS_GetProcMode() == OS_PROCMODE_IRQ) + { + ErrorHandling(); + } + + u8 *ptr = UNK_021C4D28.unk_ptr5; + if (UNK_021C4D28.unk_half4 == ptr[param1]) + { + u32 r6 = UNK_021C4D28.unk_ptr1[ptr[param0]]; + if (r6 != 0) + { + void *res = tempName_NNS_FndAllocFromExpHeapEx(r6, param2, param3); + if (res != 0) + { + param3 = FUN_020167F4(); + if (param3 >= 0) + { + UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(res, param2, 0); + + if (UNK_021C4D28.unk_ptr1[param3] != 0) + { + UNK_021C4D28.unk_ptr2[param3] = r6; + UNK_021C4D28.unk_ptr3[param3] = res; + UNK_021C4D28.unk_ptr5[param1] = param3; + + return 1; + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + } + else + { + ErrorHandling(); + } + return 0; +} + +THUMB_FUNC void FUN_020168D0(u32 heap_id) +{ + if (OS_GetProcMode() == OS_PROCMODE_IRQ) + { + ErrorHandling(); + } + + if (UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[heap_id]] != 0) + { + thunk_FUN_020adc8c(); + + u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + u32 arg1 = UNK_021C4D28.unk_ptr2[index]; + void *arg2 = UNK_021C4D28.unk_ptr3[index]; + if (arg1 != 0 && arg2 != 0) + { + FUN_020ADDF0(arg1, arg2); + } + else + { + ErrorHandling(); + } + + UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[heap_id]] = 0; + UNK_021C4D28.unk_ptr2[UNK_021C4D28.unk_ptr5[heap_id]] = 0; + UNK_021C4D28.unk_ptr3[UNK_021C4D28.unk_ptr5[heap_id]] = 0; + + UNK_021C4D28.unk_ptr5[heap_id] = UNK_021C4D28.unk_half4; + } +} + +THUMB_FUNC u32 FUN_02016944(void *param0, u32 param1, u32 param2, u32 param3) +{ + if (param0 == 0) + { + ErrorHandling(); + } + OSIntrMode intr_mode = OS_DisableInterrupts(); + param1 += 16; + u32 *ptr = (u32 *)tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2); + + OS_RestoreInterrupts(intr_mode); + if (ptr != 0) + { + ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff); + + ptr += 4; + } + + return ptr; +} + +THUMB_FUNC void FUN_02016988() +{ + if (FUN_02031810() != 0) + { + PrintErrorMessageAndReset(); + } +} + +void *AllocFromHeap(u32 heap_id, u32 size) +{ + void *ptr = 0; + if (heap_id < UNK_021C4D28.unk_half1) + { + u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + ptr = FUN_02016944(UNK_021C4D28.unk_ptr1[index], size, 4, heap_id); + } + if (ptr != 0) + { + UNK_021C4D28.unk_ptr4[heap_id]++; + } + else + { + FUN_02016988(); + } + + return ptr; +} + +void *AllocFromHeapAtEnd(u32 heap_id, u32 size) +{ + void *ptr = 0; + if (heap_id < UNK_021C4D28.unk_half1) + { + u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + ptr = FUN_02016944(UNK_021C4D28.unk_ptr1[index], size, -4, heap_id); + } + + if (ptr != 0) + { + UNK_021C4D28.unk_ptr4[heap_id]++; + } + else + { + FUN_02016988(); + } + + return ptr; +} + +void FreeToHeap(void *ptr) +{ + u8 heap_id = ((u32 *)ptr)[-1]; + + if ((u16)heap_id < UNK_021C4D28.unk_half1) + { + u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + void *ptr2 = UNK_021C4D28.unk_ptr1[index]; + if (ptr2 == 0) + { + ErrorHandling(); + } + if (UNK_021C4D28.unk_ptr4[heap_id] == 0) + { + FUN_02016B90(heap_id); + } + if (UNK_021C4D28.unk_ptr4[heap_id] == 0) + { + ErrorHandling(); + } + + UNK_021C4D28.unk_ptr4[heap_id]--; + OSIntrMode intr_mode = OS_DisableInterrupts(); + FUN_020ADDF0(ptr2, ptr - 16); + OS_RestoreInterrupts(intr_mode); + return; + } + + ErrorHandling(); +} + +void FUN_02016A8C(u32 param0, void *param1) +{ + if (OS_GetProcMode() == OS_PROCMODE_IRQ) + { + ErrorHandling(); + } + + if (param0 < UNK_021C4D28.unk_half1) + { + u8 index = UNK_021C4D28.unk_ptr5[param0]; + void *ptr = UNK_021C4D28.unk_ptr1[index]; + if (ptr == 0) + { + ErrorHandling(); + } + + u8 heap_id = ((u32 *)param1)[-1]; + if (heap_id != param0) + { + ErrorHandling(); + } + + FUN_020ADDF0(ptr, param1 - 16); + if (UNK_021C4D28.unk_ptr4[param0] == 0) + { + ErrorHandling(); + } + + UNK_021C4D28.unk_ptr4[param0]--; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC u32 FUN_02016AF8(u32 param0) +{ + if (param0 < UNK_021C4D28.unk_half1) + { + u8 index = UNK_021C4D28.unk_ptr5[param0]; + return FUN_020ADDC8(UNK_021C4D28.unk_ptr1[index]); + } + + ErrorHandling(); + return 0; +} + +THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2) +{ + if (param1 < UNK_021C4D28.unk_half1) + { + + u8 index = UNK_021C4D28.unk_ptr5[param1]; + FUN_020AE82C(param0, UNK_021C4D28.unk_ptr1[index], param2); + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) +{ + if (OS_GetProcMode() == OS_PROCMODE_IRQ) + { + ErrorHandling(); + } + + param1 += 16; + if (FUN_020ADDC0(ptr - 16) >= param1) + { + u8 heap_id = ((u32 *)ptr)[-1]; + + u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + + FUN_020ADE2C(UNK_021C4D28.unk_ptr1[index], ptr - 16, param1); + return; + } + ErrorHandling(); +} + +THUMB_FUNC u32 FUN_02016B90(u32 param0) +{ + return 1; +} diff --git a/arm9/src/unk_020166C8_c.c b/arm9/src/unk_020166C8_c.c deleted file mode 100644 index 36428a59..00000000 --- a/arm9/src/unk_020166C8_c.c +++ /dev/null @@ -1,243 +0,0 @@ -#include "global.h" - -struct UnkStruct_020166C8 -{ - u32 *unk_ptr1; - u32 *unk_ptr2; - void **unk_ptr3; - u16 *unk_ptr4; - u8 *unk_ptr5; - u16 unk_half1; - u16 unk_half2; - u16 unk_half3; - u16 unk_half4; -}; - -struct UnkStruct_020166C8 UNK_021C4D28; - -extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); -extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); -u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); -extern void thunk_FUN_020adc8c(); -extern void FUN_020ADDF0(u32 param0, void *param1); - -THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) -{ - u32 unk_size = param1 + 24; - - if (param2 < unk_size) - { - param2 = unk_size; - } - if (pre_size != 0) - { - while (pre_size % 4 != 0) - { - pre_size++; - } - - OS_AllocFromArenaLo(0, pre_size, 4); - } - - u32 r7 = param2 * 2; - - void *ptr = OS_AllocFromArenaLo(0, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); - UNK_021C4D28.unk_ptr1 = ptr; - ptr += (unk_size + 1) * 4; - UNK_021C4D28.unk_ptr2 = ptr; - ptr += unk_size * 4; - UNK_021C4D28.unk_ptr3 = ptr; - ptr += unk_size * 4; - UNK_021C4D28.unk_ptr4 = ptr; - ptr += r7; - UNK_021C4D28.unk_ptr5 = ptr; - UNK_021C4D28.unk_half1 = param2; - UNK_021C4D28.unk_half2 = param1; - - r7 = 0; - UNK_021C4D28.unk_half4 = (u16)unk_size; - UNK_021C4D28.unk_half3 = (u16)unk_size; - - while (r7 < param1) - { - void *ptr; - if (param0[1] == 0 || param0[1] != 2) - { - ptr = OS_AllocFromArenaLo(0, param0[0], 4); - } - else - { - ptr = OS_AllocFromArenaHi(2, param0[0], 4); - } - - if (ptr != 0) - { - void *res = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); - UNK_021C4D28.unk_ptr1[r7] = res; - UNK_021C4D28.unk_ptr5[r7] = (u8)r7; - } - else - { - ErrorHandling(); - } - - param0 += 2; - r7++; - } - - while (param1 < unk_size + 1) - { - UNK_021C4D28.unk_ptr1[param1] = 0; - UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; - - param1++; - } - - while (param1 < param2) - { - UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; - - param1++; - } - - for (param1 = 0; param1 < param2; param1++) - { - UNK_021C4D28.unk_ptr4[param1] = 0; - } -} - -THUMB_FUNC s32 FUN_020167F4() -{ - s32 i = UNK_021C4D28.unk_half2; - s32 j = UNK_021C4D28.unk_half3; - - if (i < j) - { - u32 *ptr = UNK_021C4D28.unk_ptr1 + i; - do - { - if (*ptr == 0) - { - return i; - } - i++; - ptr++; - } while (i < j); - } - - return -1; -} - -THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 param1, u32 param2) -{ - return FUN_02016834(param0, param1, param2, 4); -} - -THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) -{ - return FUN_02016834(param0, param1, param2, -4); -} - - -THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) -{ - if (OS_GetProcMode() == OS_PROCMODE_IRQ) - { - ErrorHandling(); - } - - u8 *ptr = UNK_021C4D28.unk_ptr5; - if (UNK_021C4D28.unk_half4 == ptr[param1]) - { - u32 r6 = UNK_021C4D28.unk_ptr1[ptr[param0]]; - if (r6 != 0) - { - void *res = tempName_NNS_FndAllocFromExpHeapEx(r6, param2, param3); - if (res != 0) - { - param3 = FUN_020167F4(); - if (param3 >= 0) - { - UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(res, param2, 0); - - if (UNK_021C4D28.unk_ptr1[param3] != 0) - { - UNK_021C4D28.unk_ptr2[param3] = r6; - UNK_021C4D28.unk_ptr3[param3] = res; - UNK_021C4D28.unk_ptr5[param1] = param3; - - return 1; - } - else - { - ErrorHandling(); - } - } - else - { - ErrorHandling(); - } - } - else - { - ErrorHandling(); - } - } - else - { - ErrorHandling(); - } - } - else - { - ErrorHandling(); - } - return 0; -} - - -THUMB_FUNC void FUN_020168D0(u32 param0) { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) { - ErrorHandling(); - } - - if (UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[param0]] != 0) { - thunk_FUN_020adc8c(); - - u8 index = UNK_021C4D28.unk_ptr5[param0]; - u32 arg1 = UNK_021C4D28.unk_ptr2[index]; - void *arg2 = UNK_021C4D28.unk_ptr3[index]; - if (arg1 != 0 && arg2 != 0) { - FUN_020ADDF0(arg1, arg2); - } else { - ErrorHandling(); - } - - - - UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[param0]] = 0; - UNK_021C4D28.unk_ptr2[UNK_021C4D28.unk_ptr5[param0]] = 0; - UNK_021C4D28.unk_ptr3[UNK_021C4D28.unk_ptr5[param0]] = 0; - - UNK_021C4D28.unk_ptr5[param0] = UNK_021C4D28.unk_half4; - } -} - - -THUMB_FUNC u32 FUN_02016944(void *param0, u32 param1, u32 param2, u8 param3) { - if (param0 == 0) { - ErrorHandling(); - } - OSIntrMode os_mode = OS_DisableInterrupts(); - param1+=16; - u32 *ptr = (u32 *) tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2); - - OS_RestoreInterrupts(os_mode); - if (ptr != 0) { - ptr[3] = (ptr[3] & ~0xff) | (param3 & 0xff); - - ptr+=4; - } - - return ptr; -} \ No newline at end of file -- cgit v1.2.3 From dd945442141c666cc9c59afed14e386b9f01b42a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 20:59:06 +0100 Subject: fix warnings --- arm9/src/heap.c | 65 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) (limited to 'arm9') diff --git a/arm9/src/heap.c b/arm9/src/heap.c index a23937b0..7cfc2d6d 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -2,15 +2,14 @@ extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); -u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); extern void thunk_FUN_020adc8c(); -extern void FUN_020ADDF0(u32 param0, void *param1); +extern void FUN_020ADDF0(void *ptr1, void *ptr2); extern u32 FUN_02031810(void); extern void PrintErrorMessageAndReset(void); -extern u32 FUN_020ADDC8(u32 param0); -extern void FUN_020AE82C(u32 param0, u32 param1, u32 param2); -extern u32 FUN_020ADDC0(u32 param0); -extern void FUN_020ADE2C(u32 param0, void *ptr, u32 param2); +extern u32 FUN_020ADDC8(void *param0); +extern void FUN_020AE82C(u32 param0, void *param1, u32 param2); +extern u32 FUN_020ADDC0(void *param0); +extern void FUN_020ADE2C(void *ptr1, void *ptr2, u32 param2); struct UnkStruct_020166C8 UNK_021C4D28; @@ -31,12 +30,12 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) pre_size++; } - OS_AllocFromArenaLo(0, pre_size, 4); + OS_AllocFromArenaLo(OS_ARENA_MAIN, pre_size, 4); } u32 r7 = param2 * 2; - void *ptr = OS_AllocFromArenaLo(0, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); + void *ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); UNK_021C4D28.unk_ptr1 = ptr; ptr += (unk_size + 1) * 4; UNK_021C4D28.unk_ptr2 = ptr; @@ -46,8 +45,8 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) UNK_021C4D28.unk_ptr4 = ptr; ptr += r7; UNK_021C4D28.unk_ptr5 = ptr; - UNK_021C4D28.unk_half1 = param2; - UNK_021C4D28.unk_half2 = param1; + UNK_021C4D28.unk_half1 = (u16)param2; + UNK_021C4D28.unk_half2 = (u16)param1; r7 = 0; UNK_021C4D28.unk_half4 = (u16)unk_size; @@ -58,17 +57,17 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) void *ptr; if (param0[1] == 0 || param0[1] != 2) { - ptr = OS_AllocFromArenaLo(0, param0[0], 4); + ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, param0[0], 4); } else { - ptr = OS_AllocFromArenaHi(2, param0[0], 4); + ptr = OS_AllocFromArenaHi(OS_ARENA_MAINEX, param0[0], 4); } if (ptr != 0) { - void *res = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); - UNK_021C4D28.unk_ptr1[r7] = res; + + UNK_021C4D28.unk_ptr1[r7] = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); UNK_021C4D28.unk_ptr5[r7] = (u8)r7; } else @@ -108,7 +107,7 @@ THUMB_FUNC s32 FUN_020167F4() if (i < j) { - u32 *ptr = UNK_021C4D28.unk_ptr1 + i; + void **ptr = UNK_021C4D28.unk_ptr1 + i; do { if (*ptr == 0) @@ -143,22 +142,23 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) u8 *ptr = UNK_021C4D28.unk_ptr5; if (UNK_021C4D28.unk_half4 == ptr[param1]) { - u32 r6 = UNK_021C4D28.unk_ptr1[ptr[param0]]; - if (r6 != 0) + void *ptr2 = UNK_021C4D28.unk_ptr1[ptr[param0]]; + if (ptr2 != 0) { - void *res = tempName_NNS_FndAllocFromExpHeapEx(r6, param2, param3); - if (res != 0) + void *ptr3 = tempName_NNS_FndAllocFromExpHeapEx(ptr2, param2, param3); + if (ptr3 != 0) { param3 = FUN_020167F4(); if (param3 >= 0) { - UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(res, param2, 0); + UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(ptr3, param2, 0); + if (UNK_021C4D28.unk_ptr1[param3] != 0) { - UNK_021C4D28.unk_ptr2[param3] = r6; - UNK_021C4D28.unk_ptr3[param3] = res; - UNK_021C4D28.unk_ptr5[param1] = param3; + UNK_021C4D28.unk_ptr2[param3] = ptr2; + UNK_021C4D28.unk_ptr3[param3] = ptr3; + UNK_021C4D28.unk_ptr5[param1] = (u8)param3; return 1; } @@ -201,11 +201,11 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) thunk_FUN_020adc8c(); u8 index = UNK_021C4D28.unk_ptr5[heap_id]; - u32 arg1 = UNK_021C4D28.unk_ptr2[index]; - void *arg2 = UNK_021C4D28.unk_ptr3[index]; - if (arg1 != 0 && arg2 != 0) + void *ptr1 = UNK_021C4D28.unk_ptr2[index]; + void *ptr2 = UNK_021C4D28.unk_ptr3[index]; + if (ptr1 != 0 && ptr2 != 0) { - FUN_020ADDF0(arg1, arg2); + FUN_020ADDF0(ptr1, ptr2); } else { @@ -216,11 +216,11 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) UNK_021C4D28.unk_ptr2[UNK_021C4D28.unk_ptr5[heap_id]] = 0; UNK_021C4D28.unk_ptr3[UNK_021C4D28.unk_ptr5[heap_id]] = 0; - UNK_021C4D28.unk_ptr5[heap_id] = UNK_021C4D28.unk_half4; + UNK_021C4D28.unk_ptr5[heap_id] = (u8)UNK_021C4D28.unk_half4; } } -THUMB_FUNC u32 FUN_02016944(void *param0, u32 param1, u32 param2, u32 param3) +THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3) { if (param0 == 0) { @@ -292,7 +292,7 @@ void *AllocFromHeapAtEnd(u32 heap_id, u32 size) void FreeToHeap(void *ptr) { - u8 heap_id = ((u32 *)ptr)[-1]; + u8 heap_id = (u8)((u32 *)ptr)[-1]; if ((u16)heap_id < UNK_021C4D28.unk_half1) { @@ -337,7 +337,7 @@ void FUN_02016A8C(u32 param0, void *param1) ErrorHandling(); } - u8 heap_id = ((u32 *)param1)[-1]; + u8 heap_id = (u8)((u32 *)param1)[-1]; if (heap_id != param0) { ErrorHandling(); @@ -391,7 +391,7 @@ THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) param1 += 16; if (FUN_020ADDC0(ptr - 16) >= param1) { - u8 heap_id = ((u32 *)ptr)[-1]; + u8 heap_id = (u8)((u32 *)ptr)[-1]; u8 index = UNK_021C4D28.unk_ptr5[heap_id]; @@ -403,5 +403,6 @@ THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) THUMB_FUNC u32 FUN_02016B90(u32 param0) { +#pragma unused(param0) return 1; } -- cgit v1.2.3 From a814010fc8aee5a961520d5b6b50ad4250baa47e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 21:01:36 +0100 Subject: remove unused includes --- arm9/global.inc | 3 --- 1 file changed, 3 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index e30ba1c5..d816d92a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,6 +8519,3 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern UNK_021C4D28 -.extern FUN_020167F4 -.extern FUN_02016944 \ No newline at end of file -- cgit v1.2.3 From 2c18674cca148311e00984fa17d9a8fb775edf7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 21:23:23 +0100 Subject: review changes --- arm9/src/heap.c | 139 ++++++++++++++++++++++++++------------------------------ 1 file changed, 64 insertions(+), 75 deletions(-) (limited to 'arm9') diff --git a/arm9/src/heap.c b/arm9/src/heap.c index 7cfc2d6d..cbdd43a9 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -36,21 +36,21 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) u32 r7 = param2 * 2; void *ptr = OS_AllocFromArenaLo(OS_ARENA_MAIN, (unk_size * 3 + 1) * sizeof(u32) + r7 + param2, 4); - UNK_021C4D28.unk_ptr1 = ptr; + UNK_021C4D28.unk00 = ptr; ptr += (unk_size + 1) * 4; - UNK_021C4D28.unk_ptr2 = ptr; + UNK_021C4D28.unk04 = ptr; ptr += unk_size * 4; - UNK_021C4D28.unk_ptr3 = ptr; + UNK_021C4D28.unk08 = ptr; ptr += unk_size * 4; - UNK_021C4D28.unk_ptr4 = ptr; + UNK_021C4D28.unk0c = ptr; ptr += r7; - UNK_021C4D28.unk_ptr5 = ptr; - UNK_021C4D28.unk_half1 = (u16)param2; - UNK_021C4D28.unk_half2 = (u16)param1; + UNK_021C4D28.unk10 = ptr; + UNK_021C4D28.unk14 = (u16)param2; + UNK_021C4D28.unk16 = (u16)param1; r7 = 0; - UNK_021C4D28.unk_half4 = (u16)unk_size; - UNK_021C4D28.unk_half3 = (u16)unk_size; + UNK_021C4D28.unk1a = (u16)unk_size; + UNK_021C4D28.unk18 = (u16)unk_size; while (r7 < param1) { @@ -67,8 +67,8 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) if (ptr != 0) { - UNK_021C4D28.unk_ptr1[r7] = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); - UNK_021C4D28.unk_ptr5[r7] = (u8)r7; + UNK_021C4D28.unk00[r7] = tempName_NNS_FndCreateExpHeapEx(ptr, param0[0], 0); + UNK_021C4D28.unk10[r7] = (u8)r7; } else { @@ -81,33 +81,33 @@ THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size) while (param1 < unk_size + 1) { - UNK_021C4D28.unk_ptr1[param1] = 0; - UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + UNK_021C4D28.unk00[param1] = 0; + UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a; param1++; } while (param1 < param2) { - UNK_021C4D28.unk_ptr5[param1] = (u8)UNK_021C4D28.unk_half4; + UNK_021C4D28.unk10[param1] = (u8)UNK_021C4D28.unk1a; param1++; } for (param1 = 0; param1 < param2; param1++) { - UNK_021C4D28.unk_ptr4[param1] = 0; + UNK_021C4D28.unk0c[param1] = 0; } } THUMB_FUNC s32 FUN_020167F4() { - s32 i = UNK_021C4D28.unk_half2; - s32 j = UNK_021C4D28.unk_half3; + s32 i = UNK_021C4D28.unk16; + s32 j = UNK_021C4D28.unk18; if (i < j) { - void **ptr = UNK_021C4D28.unk_ptr1 + i; + void **ptr = UNK_021C4D28.unk00 + i; do { if (*ptr == 0) @@ -139,10 +139,10 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) ErrorHandling(); } - u8 *ptr = UNK_021C4D28.unk_ptr5; - if (UNK_021C4D28.unk_half4 == ptr[param1]) + u8 *ptr = UNK_021C4D28.unk10; + if (UNK_021C4D28.unk1a == ptr[param1]) { - void *ptr2 = UNK_021C4D28.unk_ptr1[ptr[param0]]; + void *ptr2 = UNK_021C4D28.unk00[ptr[param0]]; if (ptr2 != 0) { void *ptr3 = tempName_NNS_FndAllocFromExpHeapEx(ptr2, param2, param3); @@ -151,14 +151,14 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) param3 = FUN_020167F4(); if (param3 >= 0) { - UNK_021C4D28.unk_ptr1[param3] = tempName_NNS_FndCreateExpHeapEx(ptr3, param2, 0); + UNK_021C4D28.unk00[param3] = tempName_NNS_FndCreateExpHeapEx(ptr3, param2, 0); - if (UNK_021C4D28.unk_ptr1[param3] != 0) + if (UNK_021C4D28.unk00[param3] != 0) { - UNK_021C4D28.unk_ptr2[param3] = ptr2; - UNK_021C4D28.unk_ptr3[param3] = ptr3; - UNK_021C4D28.unk_ptr5[param1] = (u8)param3; + UNK_021C4D28.unk04[param3] = ptr2; + UNK_021C4D28.unk08[param3] = ptr3; + UNK_021C4D28.unk10[param1] = (u8)param3; return 1; } @@ -196,13 +196,13 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) ErrorHandling(); } - if (UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[heap_id]] != 0) + if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0) { thunk_FUN_020adc8c(); - u8 index = UNK_021C4D28.unk_ptr5[heap_id]; - void *ptr1 = UNK_021C4D28.unk_ptr2[index]; - void *ptr2 = UNK_021C4D28.unk_ptr3[index]; + u8 index = UNK_021C4D28.unk10[heap_id]; + void *ptr1 = UNK_021C4D28.unk04[index]; + void *ptr2 = UNK_021C4D28.unk08[index]; if (ptr1 != 0 && ptr2 != 0) { FUN_020ADDF0(ptr1, ptr2); @@ -212,11 +212,11 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) ErrorHandling(); } - UNK_021C4D28.unk_ptr1[UNK_021C4D28.unk_ptr5[heap_id]] = 0; - UNK_021C4D28.unk_ptr2[UNK_021C4D28.unk_ptr5[heap_id]] = 0; - UNK_021C4D28.unk_ptr3[UNK_021C4D28.unk_ptr5[heap_id]] = 0; + UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] = 0; + UNK_021C4D28.unk04[UNK_021C4D28.unk10[heap_id]] = 0; + UNK_021C4D28.unk08[UNK_021C4D28.unk10[heap_id]] = 0; - UNK_021C4D28.unk_ptr5[heap_id] = (u8)UNK_021C4D28.unk_half4; + UNK_021C4D28.unk10[heap_id] = (u8)UNK_021C4D28.unk1a; } } @@ -252,14 +252,14 @@ THUMB_FUNC void FUN_02016988() void *AllocFromHeap(u32 heap_id, u32 size) { void *ptr = 0; - if (heap_id < UNK_021C4D28.unk_half1) + if (heap_id < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[heap_id]; - ptr = FUN_02016944(UNK_021C4D28.unk_ptr1[index], size, 4, heap_id); + u8 index = UNK_021C4D28.unk10[heap_id]; + ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, 4, heap_id); } if (ptr != 0) { - UNK_021C4D28.unk_ptr4[heap_id]++; + UNK_021C4D28.unk0c[heap_id]++; } else { @@ -272,15 +272,15 @@ void *AllocFromHeap(u32 heap_id, u32 size) void *AllocFromHeapAtEnd(u32 heap_id, u32 size) { void *ptr = 0; - if (heap_id < UNK_021C4D28.unk_half1) + if (heap_id < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[heap_id]; - ptr = FUN_02016944(UNK_021C4D28.unk_ptr1[index], size, -4, heap_id); + u8 index = UNK_021C4D28.unk10[heap_id]; + ptr = FUN_02016944(UNK_021C4D28.unk00[index], size, -4, heap_id); } if (ptr != 0) { - UNK_021C4D28.unk_ptr4[heap_id]++; + UNK_021C4D28.unk0c[heap_id]++; } else { @@ -294,24 +294,19 @@ void FreeToHeap(void *ptr) { u8 heap_id = (u8)((u32 *)ptr)[-1]; - if ((u16)heap_id < UNK_021C4D28.unk_half1) + if ((u16)heap_id < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[heap_id]; - void *ptr2 = UNK_021C4D28.unk_ptr1[index]; - if (ptr2 == 0) - { - ErrorHandling(); - } - if (UNK_021C4D28.unk_ptr4[heap_id] == 0) + u8 index = UNK_021C4D28.unk10[heap_id]; + void *ptr2 = UNK_021C4D28.unk00[index]; + GF_ASSERT(ptr2); + + if (UNK_021C4D28.unk0c[heap_id] == 0) { FUN_02016B90(heap_id); } - if (UNK_021C4D28.unk_ptr4[heap_id] == 0) - { - ErrorHandling(); - } + GF_ASSERT(UNK_021C4D28.unk0c[heap_id]); - UNK_021C4D28.unk_ptr4[heap_id]--; + UNK_021C4D28.unk0c[heap_id]--; OSIntrMode intr_mode = OS_DisableInterrupts(); FUN_020ADDF0(ptr2, ptr - 16); OS_RestoreInterrupts(intr_mode); @@ -328,14 +323,11 @@ void FUN_02016A8C(u32 param0, void *param1) ErrorHandling(); } - if (param0 < UNK_021C4D28.unk_half1) + if (param0 < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[param0]; - void *ptr = UNK_021C4D28.unk_ptr1[index]; - if (ptr == 0) - { - ErrorHandling(); - } + u8 index = UNK_021C4D28.unk10[param0]; + void *ptr = UNK_021C4D28.unk00[index]; + GF_ASSERT (ptr ); u8 heap_id = (u8)((u32 *)param1)[-1]; if (heap_id != param0) @@ -344,12 +336,9 @@ void FUN_02016A8C(u32 param0, void *param1) } FUN_020ADDF0(ptr, param1 - 16); - if (UNK_021C4D28.unk_ptr4[param0] == 0) - { - ErrorHandling(); - } + GF_ASSERT (UNK_021C4D28.unk0c[param0]); - UNK_021C4D28.unk_ptr4[param0]--; + UNK_021C4D28.unk0c[param0]--; return; } @@ -358,10 +347,10 @@ void FUN_02016A8C(u32 param0, void *param1) THUMB_FUNC u32 FUN_02016AF8(u32 param0) { - if (param0 < UNK_021C4D28.unk_half1) + if (param0 < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[param0]; - return FUN_020ADDC8(UNK_021C4D28.unk_ptr1[index]); + u8 index = UNK_021C4D28.unk10[param0]; + return FUN_020ADDC8(UNK_021C4D28.unk00[index]); } ErrorHandling(); @@ -370,11 +359,11 @@ THUMB_FUNC u32 FUN_02016AF8(u32 param0) THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2) { - if (param1 < UNK_021C4D28.unk_half1) + if (param1 < UNK_021C4D28.unk14) { - u8 index = UNK_021C4D28.unk_ptr5[param1]; - FUN_020AE82C(param0, UNK_021C4D28.unk_ptr1[index], param2); + u8 index = UNK_021C4D28.unk10[param1]; + FUN_020AE82C(param0, UNK_021C4D28.unk00[index], param2); return; } @@ -393,9 +382,9 @@ THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) { u8 heap_id = (u8)((u32 *)ptr)[-1]; - u8 index = UNK_021C4D28.unk_ptr5[heap_id]; + u8 index = UNK_021C4D28.unk10[heap_id]; - FUN_020ADE2C(UNK_021C4D28.unk_ptr1[index], ptr - 16, param1); + FUN_020ADE2C(UNK_021C4D28.unk00[index], ptr - 16, param1); return; } ErrorHandling(); -- cgit v1.2.3 From c2c12d21bb89b5b890141f8177a5b2920ed8d885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 18 Mar 2021 21:29:44 +0100 Subject: moar GF_ASSERT --- arm9/src/heap.c | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) (limited to 'arm9') diff --git a/arm9/src/heap.c b/arm9/src/heap.c index cbdd43a9..c27a40c0 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -134,10 +134,7 @@ THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2) THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) - { - ErrorHandling(); - } + GF_ASSERT(OS_GetProcMode() != OS_PROCMODE_IRQ); u8 *ptr = UNK_021C4D28.unk10; if (UNK_021C4D28.unk1a == ptr[param1]) @@ -191,10 +188,7 @@ THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3) THUMB_FUNC void FUN_020168D0(u32 heap_id) { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) - { - ErrorHandling(); - } + GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); if (UNK_021C4D28.unk00[UNK_021C4D28.unk10[heap_id]] != 0) { @@ -222,10 +216,8 @@ THUMB_FUNC void FUN_020168D0(u32 heap_id) THUMB_FUNC u32 *FUN_02016944(void *param0, u32 param1, s32 param2, u32 param3) { - if (param0 == 0) - { - ErrorHandling(); - } + GF_ASSERT(param0); + OSIntrMode intr_mode = OS_DisableInterrupts(); param1 += 16; u32 *ptr = (u32 *)tempName_NNS_FndAllocFromExpHeapEx(param0, param1, param2); @@ -318,10 +310,7 @@ void FreeToHeap(void *ptr) void FUN_02016A8C(u32 param0, void *param1) { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) - { - ErrorHandling(); - } + GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); if (param0 < UNK_021C4D28.unk14) { @@ -330,10 +319,7 @@ void FUN_02016A8C(u32 param0, void *param1) GF_ASSERT (ptr ); u8 heap_id = (u8)((u32 *)param1)[-1]; - if (heap_id != param0) - { - ErrorHandling(); - } + GF_ASSERT (heap_id == param0); FUN_020ADDF0(ptr, param1 - 16); GF_ASSERT (UNK_021C4D28.unk0c[param0]); @@ -372,10 +358,7 @@ THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2) THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1) { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) - { - ErrorHandling(); - } + GF_ASSERT (OS_GetProcMode() != OS_PROCMODE_IRQ); param1 += 16; if (FUN_020ADDC0(ptr - 16) >= param1) -- cgit v1.2.3 From 736eabe8a863facc978316e5335863925b76bc58 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 19 Mar 2021 12:34:03 +0000 Subject: more scrcmd --- arm9/asm/scrcmd_asm.s | 657 ------------------------------------------------ arm9/asm/unk_02038C78.s | 28 +-- arm9/global.inc | 28 +-- arm9/src/scrcmd.c | 441 +++++++++++++++++++++++++++----- arm9/src/script.c | 6 +- 5 files changed, 409 insertions(+), 751 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index c2751ee2..3633bc53 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,663 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203A304 -FUN_0203A304: ; 0x0203A304 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - lsr r2, r2, #0x18 - mov r3, #0x1 - bl MOD05_021E2BD0 - ldr r1, _0203A33C ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - .balign 4 -_0203A33C: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A340 -FUN_0203A340: ; 0x0203A340 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - lsl r2, r4, #0x18 - mov r3, #0x1 - add r0, sp, #0x4 - strb r3, [r0, #0x1] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - lsr r2, r2, #0x18 - bl MOD05_021E2BD0 - ldr r1, _0203A384 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_0203A384: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A388 -FUN_0203A388: ; 0x0203A388 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r2, r0, #0x0 - mov r3, #0x0 - str r3, [sp, #0x0] - lsl r2, r2, #0x18 - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - lsr r2, r2, #0x18 - bl MOD05_021E2BD0 - ldr r1, _0203A3C0 ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - nop -_0203A3C0: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A3C4 -FUN_0203A3C4: ; 0x0203A3C4 - push {r3-r4, lr} - sub sp, #0x4 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_02058488 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r4, #0x78] - add r0, r4, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - ldr r1, _0203A3FC ; =FUN_0203A2F0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x4 - pop {r3-r4, pc} - nop -_0203A3FC: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A400 -FUN_0203A400: ; 0x0203A400 - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - ldr r1, [r5, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r4, [r1, #0x0] - bl FUN_02030F40 - cmp r0, #0x0 - bne _0203A428 - mov r0, #0x0 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x1 - bl MOD05_021E2BD0 - b _0203A448 -_0203A428: - add r0, sp, #0x4 - add r1, r5, #0x0 - bl MOD05_021E2BB8 - mov r1, #0x1 - add r0, sp, #0x4 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - add r0, sp, #0x4 - str r0, [sp, #0x0] - ldr r1, [r5, #0x78] - add r0, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl MOD05_021E2BD0 -_0203A448: - ldr r1, _0203A458 ; =FUN_0203A2F0 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - nop -_0203A458: .word FUN_0203A2F0 - - thumb_func_start FUN_0203A45C -FUN_0203A45C: ; 0x0203A45C - push {r3, lr} - ldr r1, _0203A468 ; =FUN_0203A46C - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A468: .word FUN_0203A46C - - thumb_func_start FUN_0203A46C -FUN_0203A46C: ; 0x0203A46C - ldr r0, _0203A480 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x3 - tst r0, r1 - beq _0203A47A - mov r0, #0x1 - bx lr -_0203A47A: - mov r0, #0x0 - bx lr - nop -_0203A480: .word gMain - - thumb_func_start FUN_0203A484 -FUN_0203A484: ; 0x0203A484 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [r4, #0x64] - ldr r1, _0203A4A8 ; =FUN_0203A4AC - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203A4A8: .word FUN_0203A4AC - - thumb_func_start FUN_0203A4AC -FUN_0203A4AC: ; 0x0203A4AC - ldr r1, _0203A4CC ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x3 - tst r1, r2 - beq _0203A4BA - mov r0, #0x1 - bx lr -_0203A4BA: - ldr r1, [r0, #0x64] - sub r1, r1, #0x1 - str r1, [r0, #0x64] - bne _0203A4C6 - mov r0, #0x1 - bx lr -_0203A4C6: - mov r0, #0x0 - bx lr - nop -_0203A4CC: .word gMain - - thumb_func_start FUN_0203A4D0 -FUN_0203A4D0: ; 0x0203A4D0 - push {r3, lr} - ldr r1, _0203A4DC ; =FUN_0203A4E0 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A4DC: .word FUN_0203A4E0 - - thumb_func_start FUN_0203A4E0 -FUN_0203A4E0: ; 0x0203A4E0 - push {r4, lr} - ldr r1, _0203A55C ; =gMain - ldr r2, [r1, #0x48] - mov r1, #0x3 - add r3, r2, #0x0 - tst r3, r1 - beq _0203A4F2 - mov r0, #0x1 - pop {r4, pc} -_0203A4F2: - mov r3, #0x40 - tst r3, r2 - beq _0203A506 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A506: - mov r3, #0x80 - tst r3, r2 - beq _0203A51A - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A51A: - mov r3, #0x20 - tst r3, r2 - beq _0203A52E - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x2 - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A52E: - mov r3, #0x10 - add r4, r2, #0x0 - tst r4, r3 - beq _0203A542 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055304 - b _0203A556 -_0203A542: - lsl r1, r3, #0x6 - tst r1, r2 - beq _0203A552 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02039460 - b _0203A556 -_0203A552: - mov r0, #0x0 - pop {r4, pc} -_0203A556: - mov r0, #0x1 - pop {r4, pc} - nop -_0203A55C: .word gMain - - thumb_func_start FUN_0203A560 -FUN_0203A560: ; 0x0203A560 - push {r3, lr} - ldr r1, _0203A56C ; =FUN_0203A570 - bl SetupNativeScript - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_0203A56C: .word FUN_0203A570 - - thumb_func_start FUN_0203A570 -FUN_0203A570: ; 0x0203A570 - ldr r0, _0203A58C ; =gMain - ldr r1, [r0, #0x48] - mov r0, #0x3 - tst r0, r1 - beq _0203A57E - mov r0, #0x1 - bx lr -_0203A57E: - mov r0, #0xf0 - tst r0, r1 - beq _0203A588 - mov r0, #0x1 - bx lr -_0203A588: - mov r0, #0x0 - bx lr - .balign 4 -_0203A58C: .word gMain - - thumb_func_start FUN_0203A590 -FUN_0203A590: ; 0x0203A590 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x6 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - add r1, r0, #0x0 - ldr r0, [r4, #0x8] - mov r2, #0x3 - bl FUN_020545B8 - add r0, r4, #0x0 - mov r1, #0x1 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02054608 - mov r0, #0x1 - strb r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_0203A5D8 -FUN_0203A5D8: ; 0x0203A5D8 - push {r3-r5, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x1 - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_0200D0E0 - add r0, r5, #0x0 - bl FUN_02019178 - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A608 -FUN_0203A608: ; 0x0203A608 - push {r3-r5, lr} - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x1 - add r0, r4, #0x0 - bl FUN_02039438 - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x6 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02019178 - mov r0, #0x0 - strb r0, [r4, #0x0] - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A630 -FUN_0203A630: ; 0x0203A630 - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x31 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2d - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x32 - bl FUN_02039438 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0x33 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x2e - bl FUN_02039438 - str r0, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x34 - bl FUN_02039438 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r6, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r7, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x0] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x4] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r2, [r2, #0x0] - ldr r1, [sp, #0x8] - strh r2, [r1, #0x0] - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - strh r1, [r0, #0x0] - ldr r1, _0203A6C4 ; =FUN_0203A6C8 - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_0203A6C4: .word FUN_0203A6C8 - - thumb_func_start FUN_0203A6C8 -FUN_0203A6C8: ; 0x0203A6C8 - push {r4-r7, lr} - sub sp, #0xc - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x31 - add r0, r4, #0x0 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x32 - bl FUN_02039438 - str r0, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x33 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x34 - bl FUN_02039438 - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0x2d - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2e - bl FUN_02039438 - add r5, r0, #0x0 - ldrh r0, [r6, #0x0] - cmp r0, #0x0 - bne _0203A71E - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - bne _0203A71E - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_0203A71E: - ldrh r3, [r7, #0x0] - cmp r3, #0x0 - beq _0203A740 - ldr r0, [sp, #0x8] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - ldr r0, [r4, #0x8] - bne _0203A738 - mov r1, #0x3 - mov r2, #0x1 - bl FUN_020179E0 - b _0203A740 -_0203A738: - mov r1, #0x3 - mov r2, #0x2 - bl FUN_020179E0 -_0203A740: - ldr r0, [sp, #0x4] - ldrh r3, [r0, #0x0] - cmp r3, #0x0 - beq _0203A764 - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x0] - cmp r0, #0x0 - ldr r0, [r4, #0x8] - bne _0203A75C - mov r1, #0x3 - mov r2, #0x4 - bl FUN_020179E0 - b _0203A764 -_0203A75C: - mov r1, #0x3 - mov r2, #0x5 - bl FUN_020179E0 -_0203A764: - ldrh r0, [r6, #0x0] - cmp r0, #0x0 - beq _0203A76E - sub r0, r0, #0x1 - strh r0, [r6, #0x0] -_0203A76E: - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0203A778 - sub r0, r0, #0x1 - strh r0, [r5, #0x0] -_0203A778: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203A780 -FUN_0203A780: ; 0x0203A780 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x11 - add r0, r4, #0x0 - bl FUN_02039438 - str r0, [sp, #0x18] - add r0, r4, #0x0 - mov r1, #0x10 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x14] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - str r0, [sp, #0xc] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl ScriptReadHalfword - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - cmp r6, #0x0 - bne _0203A7E0 - add r0, r4, #0x0 - mov r1, #0xa - bl FUN_02039438 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02058510 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 -_0203A7E0: - ldr r0, [r4, #0x60] - ldr r1, [sp, #0x10] - add r2, r6, #0x0 - bl MOD05_021E8128 - ldr r0, [r4, #0x60] - mov r1, #0x1 - bl MOD05_021E8130 - add r0, r4, #0x0 - bl MOD05_021E8158 - ldr r2, [sp, #0x18] - ldr r0, [r5, #0x78] - ldr r1, [sp, #0xc] - ldr r2, [r2, #0x0] - bl ReadMsgDataIntoString - ldr r0, [sp, #0x14] - ldr r2, [sp, #0x18] - ldr r0, [r0, #0x0] - ldr r1, [r7, #0x0] - ldr r2, [r2, #0x0] - bl StringExpandPlaceholders - ldr r0, [r4, #0x60] - bl MOD05_021E8140 - mov r3, #0x0 - str r3, [sp, #0x0] - str r3, [sp, #0x4] - str r3, [sp, #0x8] - ldr r2, [r7, #0x0] - mov r1, #0x1 - bl AddTextPrinterParameterized - mov r0, #0x1 - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 - thumb_func_start FUN_0203A830 FUN_0203A830: ; 0x0203A830 push {r3-r5, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 3978d8c1..379ff363 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -194,23 +194,23 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_SetOrCopyVar .word ScrCmd_Message .word ScrCmd_Unk002C - .word FUN_0203A304 - .word FUN_0203A388 - .word FUN_0203A400 - .word FUN_0203A45C - .word FUN_0203A4D0 - .word FUN_0203A560 - .word FUN_0203A590 - .word FUN_0203A5D8 - .word FUN_0203A608 - .word FUN_0203A780 + .word ScrCmd_Unk002D + .word ScrCmd_Unk002E + .word ScrCmd_Unk002F + .word ScrCmd_WaitButtonAB + .word ScrCmd_WaitButton + .word ScrCmd_Unk0032 + .word ScrCmd_Unk0033 + .word ScrCmd_Unk0034 + .word ScrCmd_Unk0035 + .word ScrCmd_CreateMessageBox .word FUN_0203A830 .word FUN_0203A85C .word FUN_0203A878 .word FUN_0203A8B8 .word FUN_0203A9F0 .word FUN_0203AA90 - .word FUN_0203A630 + .word ScrCmd_ScrollBg .word FUN_0203AAA0 .word FUN_0203DEA8 .word FUN_0203AB8C @@ -549,7 +549,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203AB44 .word FUN_0203AB74 .word FUN_0203DBD4 - .word FUN_0203A484 + .word ScrCmd_WaitButtonABTime .word FUN_0203B8E4 .word FUN_0203B944 .word FUN_0203B968 @@ -673,7 +673,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203BE50 .word FUN_0203BECC .word FUN_0203BF00 - .word FUN_0203A3C4 + .word ScrCmd_Unk020C .word FUN_0203E684 .word FUN_0203E6B4 .word FUN_0203E6C4 @@ -853,7 +853,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203D0A4 .word FUN_0203FC58 .word FUN_0203CAE8 - .word FUN_0203A340 + .word ScrCmd_Unk02C0 .word FUN_0203FC80 .word FUN_0203FCB0 .word FUN_0203FCDC diff --git a/arm9/global.inc b/arm9/global.inc index 0190b134..1614c405 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2752,20 +2752,20 @@ .extern ScrCmd_Unk01FF .extern ScrCmd_Unk026D .extern ScrCmd_Unk002C -.extern FUN_0203A304 -.extern FUN_0203A340 -.extern FUN_0203A388 -.extern FUN_0203A3C4 -.extern FUN_0203A400 -.extern FUN_0203A45C -.extern FUN_0203A484 -.extern FUN_0203A4D0 -.extern FUN_0203A560 -.extern FUN_0203A590 -.extern FUN_0203A5D8 -.extern FUN_0203A608 -.extern FUN_0203A630 -.extern FUN_0203A780 +.extern ScrCmd_Unk002D +.extern ScrCmd_Unk02C0 +.extern ScrCmd_Unk002E +.extern ScrCmd_Unk020C +.extern ScrCmd_Unk002F +.extern ScrCmd_WaitButtonAB +.extern ScrCmd_WaitButtonABTime +.extern ScrCmd_WaitButton +.extern ScrCmd_Unk0032 +.extern ScrCmd_Unk0033 +.extern ScrCmd_Unk0034 +.extern ScrCmd_Unk0035 +.extern ScrCmd_ScrollBg +.extern ScrCmd_CreateMessageBox .extern FUN_0203A830 .extern FUN_0203A85C .extern FUN_0203A878 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 9e6a337a..0f8c6c45 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1,5 +1,9 @@ #include "scrcmd.h" #include "unk_0204639C.h" +#include "main.h" +#include "options.h" +#include "player_data.h" +#include "text.h" extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); @@ -19,35 +23,55 @@ extern struct ScrStrBufs *MOD06_02244210(struct SaveBlock2 *sav, u16 poke, u16 s extern void MOD05_021E2CBC(struct ScriptContext *ctx, struct ScrStrBufs *str, u8 param2, u32 param3); extern void MOD05_021E2BB8(void *param0, struct ScriptContext *ctx); extern BOOL FUN_020546C8(u8 param0); - -static BOOL RunPauseTimer(struct ScriptContext* ctx); +extern u32 FUN_02058488(u32 param0); +extern BOOL FUN_02030F40(void); +extern void FUN_02055304(u32 param0, u32 param1); +extern void FUN_02039460(struct UnkSavStruct80 *arg); +extern void FUN_02055304(u32 param0, u32 param1); +extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2); +extern void FUN_02054608(u8 *param0, struct Options *options); +extern void FUN_0200D0E0(u32 *param0, u32 param1); +extern void FUN_02019178(u32 *param0); +extern void FUN_020179E0(u32 param0, u32 param1, u32 param2, u16 val); +extern u32 FUN_02058510(u32 param0, u32 param1); +extern void MOD05_021E8128(u32 param0, u8 type, u16 map); +extern void MOD05_021E8130(u32 param0, u32 param1); +extern void MOD05_021E8158(struct UnkSavStruct80 *unk80); +extern u32 MOD05_021E8140(u32 param0); + +static BOOL RunPauseTimer(struct ScriptContext *ctx); static u32 Compare(u16 a, u16 b); -static BOOL FUN_02039CC8(struct ScriptContext* ctx); -/*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx); +static BOOL FUN_02039CC8(struct ScriptContext *ctx); +/*static*/ BOOL FUN_0203A2F0(struct ScriptContext *ctx); +static BOOL FUN_0203A46C(struct ScriptContext *ctx); +static BOOL FUN_0203A4AC(struct ScriptContext *ctx); +static BOOL FUN_0203A4E0(struct ScriptContext *ctx); +static BOOL FUN_0203A570(struct ScriptContext *ctx); +static BOOL FUN_0203A6C8(struct ScriptContext* ctx); extern u8 sScriptConditionTable[6][3]; -THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Nop(struct ScriptContext *ctx) { #pragma unused(ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Dummy(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Dummy(struct ScriptContext *ctx) { #pragma unused(ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_End(struct ScriptContext *ctx) { StopScript(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext *ctx) { - struct UnkSavStruct80* arg = ctx->unk80; + struct UnkSavStruct80 *arg = ctx->unk80; u16 num = ScriptReadHalfword(ctx); u16 wk = ScriptReadHalfword(ctx); u16* VarPointer = GetVarPointer(arg, wk); @@ -57,56 +81,56 @@ THUMB_FUNC BOOL ScrCmd_Wait(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC static BOOL RunPauseTimer(struct ScriptContext* ctx) +THUMB_FUNC static BOOL RunPauseTimer(struct ScriptContext *ctx) { u16* VarPointer = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); *VarPointer = (u16)(*VarPointer - 1); return !(*VarPointer); } -THUMB_FUNC BOOL ScrCmd_DebugWatch(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_DebugWatch(struct ScriptContext *ctx) { u16 wk = ScriptReadHalfword(ctx); VarGet(ctx->unk80, wk); return FALSE; } -THUMB_FUNC BOOL ScrCmd_LoadByte(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_LoadByte(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); ctx->data[index] = ScriptReadByte(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_LoadWord(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_LoadWord(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); ctx->data[index] = ScriptReadWord(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext *ctx) { u8 index = ScriptReadByte(ctx); ctx->data[index] = *(u8 *)ScriptReadWord(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_WriteByteToAddr(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_WriteByteToAddr(struct ScriptContext *ctx) { u8* ptr = (u8*)ScriptReadWord(ctx); *ptr = ScriptReadByte(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetPtrByte(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetPtrByte(struct ScriptContext *ctx) { u8* ptr = (u8*)ScriptReadWord(ctx); *ptr = (u8)ctx->data[ScriptReadByte(ctx)]; return FALSE; } -THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext *ctx) { u8 index_store = ScriptReadByte(ctx); u8 index_load = ScriptReadByte(ctx); @@ -114,7 +138,7 @@ THUMB_FUNC BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CopyByte(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CopyByte(struct ScriptContext *ctx) { u8 *target = (u8 *)ScriptReadWord(ctx); u8 *source = (u8 *)ScriptReadWord(ctx); @@ -138,7 +162,7 @@ THUMB_FUNC static u32 Compare(u16 a, u16 b) } } -THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext *ctx) { u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; u8 b = (u8)ctx->data[ScriptReadByte(ctx)]; @@ -146,7 +170,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext *ctx) { u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; u8 b = ScriptReadByte(ctx); @@ -154,7 +178,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext *ctx) { u8 a = (u8)ctx->data[ScriptReadByte(ctx)]; u8 b = *(u8*)ScriptReadWord(ctx); @@ -162,7 +186,7 @@ THUMB_FUNC BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext *ctx) { u8 a = *(u8*)ScriptReadWord(ctx); u8 b = (u8)ctx->data[ScriptReadByte(ctx)]; @@ -170,7 +194,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext *ctx) { u8 a = *(u8*)ScriptReadWord(ctx); u8 b = (u8)ScriptReadByte(ctx); @@ -178,7 +202,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext *ctx) { u8 a = *(u8*)ScriptReadWord(ctx); u8 b = *(u8*)ScriptReadWord(ctx); @@ -186,7 +210,7 @@ THUMB_FUNC BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext *ctx) { u16 a = *GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 b = ScriptReadHalfword(ctx); @@ -194,7 +218,7 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext *ctx) { u16 *a = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 *b = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -202,9 +226,9 @@ THUMB_FUNC BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext *ctx) { - struct UnkSavStruct80* unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x7); u32 **unk2 = (u32 **)FUN_02039438(unk80, 0xe); u16 id = ScriptReadHalfword(ctx); @@ -214,9 +238,9 @@ THUMB_FUNC BOOL ScrCmd_RunScript(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext *ctx) { - struct UnkSavStruct80* unk80 = ctx->unk80; + struct UnkSavStruct80 *unk80 = ctx->unk80; u8 *unk1 = (u8 *)FUN_02039438(unk80, 0x5); u8 *unk2 = (u8 *)FUN_02039438(unk80, 0x7); u32 **unk3 = (u32 **)FUN_02039438(unk80, 0xe); @@ -230,7 +254,7 @@ THUMB_FUNC BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext* ctx) +THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext *ctx) { u8* unk = FUN_02039438(ctx->unk80, 0x5); @@ -241,7 +265,7 @@ THUMB_FUNC static BOOL FUN_02039CC8(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext *ctx) { u8* unk = (u8 *)FUN_02039438(ctx->unk80, 0x5); @@ -249,14 +273,14 @@ THUMB_FUNC BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_GoTo(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GoTo(struct ScriptContext *ctx) { s32 offset = (s32)ScriptReadWord(ctx); ScriptJump(ctx, ctx->scriptPtr + offset); return FALSE; } -THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext *ctx) { u32* unk = FUN_02039438(ctx->unk80, 0xa); u8 id = ScriptReadByte(ctx); @@ -268,7 +292,7 @@ THUMB_FUNC BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext *ctx) { u32 bgId = FUN_02046534(ctx->unk74); u8 id = ScriptReadByte(ctx); @@ -281,7 +305,7 @@ THUMB_FUNC BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext *ctx) { u32 *playerDirection = FUN_02039438(ctx->unk80, 0x9); u8 dir = ScriptReadByte(ctx); @@ -294,20 +318,20 @@ THUMB_FUNC BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Call(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Call(struct ScriptContext *ctx) { s32 offset = (s32)ScriptReadWord(ctx); ScriptCall(ctx, ctx->scriptPtr + offset); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Return(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Return(struct ScriptContext *ctx) { ScriptReturn(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext *ctx) { u8 compareType = ScriptReadByte(ctx); s32 offset = (s32)ScriptReadWord(ctx); @@ -319,7 +343,7 @@ THUMB_FUNC BOOL ScrCmd_GoToIf(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext *ctx) { u8 compareType = ScriptReadByte(ctx); s32 offset = (s32)ScriptReadWord(ctx); @@ -331,7 +355,7 @@ THUMB_FUNC BOOL ScrCmd_CallIf(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); @@ -339,7 +363,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); @@ -347,7 +371,7 @@ THUMB_FUNC BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = ScriptReadHalfword(ctx); @@ -355,7 +379,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -364,7 +388,7 @@ THUMB_FUNC BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -372,7 +396,7 @@ THUMB_FUNC BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -380,7 +404,7 @@ THUMB_FUNC BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -388,7 +412,7 @@ THUMB_FUNC BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u16 flag = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -396,7 +420,7 @@ THUMB_FUNC BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext *ctx) { u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -404,7 +428,7 @@ THUMB_FUNC BOOL ScrCmd_AddVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext *ctx) { u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -412,14 +436,14 @@ THUMB_FUNC BOOL ScrCmd_SubVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetVar(struct ScriptContext *ctx) { u16 *wk = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); *wk = ScriptReadHalfword(ctx); return FALSE; } -THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext *ctx) { u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 *wk2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); @@ -427,7 +451,7 @@ THUMB_FUNC BOOL ScrCmd_CopyVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext *ctx) { u16 *wk1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 wk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -435,14 +459,14 @@ THUMB_FUNC BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Message(struct ScriptContext *ctx) { u8 id = ScriptReadByte(ctx); MOD05_ShowMessageInField(ctx, ctx->msgData, id); return FALSE; } -THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext *ctx) { u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -452,7 +476,7 @@ THUMB_FUNC BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext *ctx) { u16 arc = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); @@ -463,7 +487,7 @@ THUMB_FUNC BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext *ctx) { u16 typ = ScriptReadHalfword(ctx); u16 id = ScriptReadHalfword(ctx); @@ -474,7 +498,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext *ctx) { u16 typ = ScriptReadHalfword(ctx); u16 id = ScriptReadHalfword(ctx); @@ -486,7 +510,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext *ctx) { u8 id = ScriptReadByte(ctx); @@ -510,7 +534,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u8 msg = ScriptReadByte(ctx); @@ -527,7 +551,7 @@ THUMB_FUNC BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font? +THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext *ctx) //message unown font? { struct UnkStruct_0203A288 myLocalStruct; u16 msg = ScriptReadHalfword(ctx); @@ -541,7 +565,7 @@ THUMB_FUNC BOOL ScrCmd_Unk026D(struct ScriptContext* ctx) //message unown font? return TRUE; } -THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx) +THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext *ctx) { u8 msg = ScriptReadByte(ctx); MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL); @@ -549,8 +573,299 @@ THUMB_FUNC BOOL ScrCmd_Unk002C(struct ScriptContext* ctx) return TRUE; } -THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext* ctx) +THUMB_FUNC /*static*/ BOOL FUN_0203A2F0(struct ScriptContext *ctx) { u8 *unk = (u8 *)FUN_02039438(ctx->unk80, 3); return FUN_020546C8(*unk); } + +THUMB_FUNC BOOL ScrCmd_Unk002D(struct ScriptContext *ctx) +{ + u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 1, NULL); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02C0(struct ScriptContext *ctx) +{ + struct UnkStruct_0203A288 myLocalStruct; + u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + MOD05_021E2BB8(&myLocalStruct, ctx); + myLocalStruct.unk1 = 1; + + MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 1, &myLocalStruct); + SetupNativeScript(ctx, FUN_0203A2F0); + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk002E(struct ScriptContext *ctx) +{ + u16 msg = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + MOD05_021E2BD0(ctx, ctx->msgData, (u8)msg, 0, NULL); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk020C(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0xa); + u8 msg = (u8)FUN_02058488(*unk); + MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL); + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk002F(struct ScriptContext *ctx) +{ + u8 msg = ScriptReadByte(ctx); + + if (!FUN_02030F40()) + { + MOD05_021E2BD0(ctx, ctx->msgData, msg, 1, NULL); + } + else + { + struct UnkStruct_0203A288 myLocalStruct; + MOD05_021E2BB8(&myLocalStruct, ctx); + myLocalStruct.unk0 = 1; + myLocalStruct.unk1 = 1; + MOD05_021E2BD0(ctx, ctx->msgData, msg, 0, &myLocalStruct); + } + + SetupNativeScript(ctx, FUN_0203A2F0); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_WaitButtonAB(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, FUN_0203A46C); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A46C(struct ScriptContext *ctx) +{ +#pragma unused(ctx) + if (gMain.unk48 & 0x3) // Mask (A | B) ? + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_WaitButtonABTime(struct ScriptContext *ctx) +{ + ctx->data[0] = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + SetupNativeScript(ctx, FUN_0203A4AC); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A4AC(struct ScriptContext *ctx) +{ + if (gMain.unk48 & 0x3) // Mask (A | B) ? + { + return TRUE; + } + ctx->data[0] = ctx->data[0] - 1; + + if (ctx->data[0] == 0) + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_WaitButton(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, FUN_0203A4E0); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A4E0(struct ScriptContext *ctx) +{ + if (gMain.unk48 & 3) + { + return TRUE; + } + else if (gMain.unk48 & 0x40) + { + FUN_02055304(ctx->unk80->unk38, 0); + } + else if (gMain.unk48 & 0x80) + { + FUN_02055304(ctx->unk80->unk38, 1); + } + else if (gMain.unk48 & 0x20) + { + FUN_02055304(ctx->unk80->unk38, 2); + } + else if (gMain.unk48 & 0x10) + { + FUN_02055304(ctx->unk80->unk38, 3); + } + else if (gMain.unk48 & 0x400) + { + FUN_02039460(ctx->unk80); + } + else + { + return FALSE; + } + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0032(struct ScriptContext *ctx) +{ + SetupNativeScript(ctx, FUN_0203A570); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A570(struct ScriptContext *ctx) +{ +#pragma unused(ctx) + if (gMain.unk48 & 0x3) + { + return TRUE; + } + else if (gMain.unk48 & 0xf0) + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0033(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 *unk = (u8 *)FUN_02039438(unk80, 6); + FUN_020545B8(unk80->unk08, FUN_02039438(unk80, 1), 3); + FUN_02054608(FUN_02039438(unk80, 1), Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2)); + *unk = 1; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0034(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + u8 *unk2 = FUN_02039438(unk80, 0x6); + FUN_0200D0E0(unk, 0); //clear window? + FUN_02019178(unk); + *unk2 = 0; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0035(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0x1); //windowID? + u8 *unk2 = FUN_02039438(unk80, 0x6); + FUN_02019178(unk); + *unk2 = 0; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ScrollBg(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u16 *xval = FUN_02039438(unk80, 0x31); + u16 *xcnt = FUN_02039438(unk80, 0x2d); + u16 *xdir = FUN_02039438(unk80, 0x32); + u16 *yval = FUN_02039438(unk80, 0x33); + u16 *ycnt = FUN_02039438(unk80, 0x2e); + u16 *ydir = FUN_02039438(unk80, 0x34); + + *xval = ScriptReadByte(ctx); + *xcnt = ScriptReadByte(ctx); + *xdir = ScriptReadByte(ctx); + *yval = ScriptReadByte(ctx); + *ycnt = ScriptReadByte(ctx); + *ydir = ScriptReadByte(ctx); + + SetupNativeScript(ctx, FUN_0203A6C8); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A6C8(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u16 *xval = FUN_02039438(unk80, 0x31); + u16 *xdir = FUN_02039438(unk80, 0x32); + u16 *yval = FUN_02039438(unk80, 0x33); + u16 *ydir = FUN_02039438(unk80, 0x34); + u16 *xcnt = FUN_02039438(unk80, 0x2d); + u16 *ycnt = FUN_02039438(unk80, 0x2e); + + if (*xcnt == 0 && *ycnt == 0) + { + return TRUE; + } + + if (*xval != 0) + { + if (*xdir == 0) + { + FUN_020179E0(unk80->unk08, 3, 1, *xval); + } + else + { + FUN_020179E0(unk80->unk08, 3, 2, *xval); + } + } + + if (*yval != 0) + { + if (*ydir == 0) + { + FUN_020179E0(unk80->unk08, 3, 4, *yval); + } + else + { + FUN_020179E0(unk80->unk08, 3, 5, *yval); + } + } + + if (*xcnt != 0) + { + *xcnt = (u16)(*xcnt - 1); + } + + if (*ycnt != 0) + { + *ycnt = (u16)(*ycnt - 1); + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + struct String **unk1 = FUN_02039438(unk80, 0x11); + struct String **unk2 = FUN_02039438(unk80, 0x10); + struct ScrStrBufs **unk3 = FUN_02039438(unk80, 0x0f); + u8 typ, msg; + u16 wk, map; + + msg = ScriptReadByte(ctx); + typ = ScriptReadByte(ctx); + map = ScriptReadHalfword(ctx); + wk = ScriptReadHalfword(ctx); + + if (map == 0) + { + u32 *unk4 = FUN_02039438(unk80, 10); + map = (u16)FUN_02058510(*unk4, 0); + } + + MOD05_021E8128(unk80->unk60, typ, map); + MOD05_021E8130(unk80->unk60, 1); + MOD05_021E8158(unk80); + ReadMsgDataIntoString(ctx->msgData, msg, *unk1); + StringExpandPlaceholders(*unk3, *unk2, *unk1); + AddTextPrinterParameterized(MOD05_021E8140(unk80->unk60), 1, (u16 *)*unk2, 0, 0, 0, NULL); + + return TRUE; +} diff --git a/arm9/src/script.c b/arm9/src/script.c index d067ac79..2fa80058 100644 --- a/arm9/src/script.c +++ b/arm9/src/script.c @@ -17,7 +17,7 @@ THUMB_FUNC void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, u32 for (i = 0; i < NELEMS(ctx->stack); i++) ctx->stack[i] = NULL; - ctx->unk74 = 0; + ctx->unk74 = NULL; } THUMB_FUNC u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr) @@ -39,9 +39,9 @@ THUMB_FUNC void StopScript(struct ScriptContext *ctx) ctx->scriptPtr = 0; } -THUMB_FUNC void FUN_02038B6C(struct ScriptContext *ctx, s32 r1) +THUMB_FUNC void FUN_02038B6C(struct ScriptContext *ctx, struct UnkStruct_0204639C *r1) { - ctx->unk74 = (u32)r1; + ctx->unk74 = r1; } THUMB_FUNC u8 RunScriptCommand(struct ScriptContext *ctx) -- cgit v1.2.3 From 91d218a8657f857e7d5a34be9f4f6ff23fb1b9c7 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 19 Mar 2021 19:08:08 +0000 Subject: more --- arm9/asm/scrcmd_asm.s | 224 ------------------------------------------------ arm9/asm/unk_02038C78.s | 8 +- arm9/global.inc | 8 +- arm9/src/scrcmd.c | 118 ++++++++++++++++++++++++- arm9/src/text.c | 1 + 5 files changed, 126 insertions(+), 233 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 3633bc53..95b132fd 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,230 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203A830 -FUN_0203A830: ; 0x0203A830 - push {r3-r5, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r4, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r5, [r2, #0x0] - bl ScriptReadHalfword - add r2, r0, #0x0 - ldr r0, [r4, #0x60] - add r1, r5, #0x0 - bl MOD05_021E8128 - ldr r0, [r4, #0x60] - mov r1, #0x1 - bl MOD05_021E8130 - mov r0, #0x1 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0203A85C -FUN_0203A85C: ; 0x0203A85C - push {r3, lr} - add r1, r0, #0x0 - add r1, #0x80 - ldr r2, [r0, #0x8] - ldr r3, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r0, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r3, #0x60] - bl MOD05_021E8130 - mov r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203A878 -FUN_0203A878: ; 0x0203A878 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x60] - bl MOD05_021E8148 - cmp r0, #0x1 - bne _0203A88E - mov r0, #0x0 - pop {r4, pc} -_0203A88E: - ldr r1, _0203A89C ; =FUN_0203A8A0 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203A89C: .word FUN_0203A8A0 - - thumb_func_start FUN_0203A8A0 -FUN_0203A8A0: ; 0x0203A8A0 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0x60] - bl MOD05_021E8148 - cmp r0, #0x1 - bne _0203A8B4 - mov r0, #0x1 - pop {r3, pc} -_0203A8B4: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_0203A8B8 -FUN_0203A8B8: ; 0x0203A8B8 - push {r3-r7, lr} - sub sp, #0x10 - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x3 - add r0, r4, #0x0 - bl FUN_02039438 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x11 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x10 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - str r0, [sp, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r0, [r1, #0x0] - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl ScriptReadHalfword - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - ldr r1, [sp, #0x0] - ldr r2, [r6, #0x0] - bl ReadMsgDataIntoString - ldr r0, [sp, #0x8] - ldr r1, [r7, #0x0] - ldr r0, [r0, #0x0] - ldr r2, [r6, #0x0] - bl StringExpandPlaceholders - ldr r0, [r4, #0x60] - bl MOD05_021E8140 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetOptionsAddr - add r2, r0, #0x0 - ldr r1, [r7, #0x0] - add r0, r4, #0x0 - mov r3, #0x1 - bl FUN_02054658 - ldr r1, [sp, #0x4] - strb r0, [r1, #0x0] - ldr r0, [sp, #0xc] - ldr r1, _0203A948 ; =FUN_0203A94C - str r0, [r5, #0x64] - add r0, r5, #0x0 - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_0203A948: .word FUN_0203A94C - - thumb_func_start FUN_0203A94C -FUN_0203A94C: ; 0x0203A94C - push {r3-r7, lr} - add r7, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x3 - add r0, r5, #0x0 - bl FUN_02039438 - ldr r1, [r7, #0x64] - add r6, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0x60] - bl MOD05_021E8144 - ldrb r0, [r6, #0x0] - ldr r5, _0203A9E8 ; =0x0000FFFF - bl FUN_020546C8 - cmp r0, #0x1 - bne _0203A986 - mov r0, #0x2 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} -_0203A986: - ldr r0, _0203A9EC ; =gMain - mov r1, #0x40 - ldr r0, [r0, #0x48] - tst r1, r0 - beq _0203A994 - mov r5, #0x0 - b _0203A9B0 -_0203A994: - mov r1, #0x80 - tst r1, r0 - beq _0203A99E - mov r5, #0x1 - b _0203A9B0 -_0203A99E: - mov r1, #0x20 - tst r1, r0 - beq _0203A9A8 - mov r5, #0x2 - b _0203A9B0 -_0203A9A8: - mov r1, #0x10 - tst r1, r0 - beq _0203A9B0 - mov r5, #0x3 -_0203A9B0: - ldr r1, _0203A9E8 ; =0x0000FFFF - cmp r5, r1 - beq _0203A9D0 - ldrb r0, [r6, #0x0] - bl FUN_0201BD7C - add r7, #0x80 - ldr r0, [r7, #0x0] - add r1, r5, #0x0 - ldr r0, [r0, #0x38] - bl FUN_02055304 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} -_0203A9D0: - mov r1, #0x1 - lsl r1, r1, #0xa - tst r0, r1 - beq _0203A9E4 - ldrb r0, [r6, #0x0] - bl FUN_0201BD7C - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r3-r7, pc} -_0203A9E4: - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_0203A9E8: .word 0x0000FFFF -_0203A9EC: .word gMain - thumb_func_start FUN_0203A9F0 FUN_0203A9F0: ; 0x0203A9F0 push {r4, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 379ff363..950ebd45 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -204,10 +204,10 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0034 .word ScrCmd_Unk0035 .word ScrCmd_CreateMessageBox - .word FUN_0203A830 - .word FUN_0203A85C - .word FUN_0203A878 - .word FUN_0203A8B8 + .word ScrCmd_Unk0037 + .word ScrCmd_Unk0038 + .word ScrCmd_Unk0039 + .word ScrCmd_Unk003A .word FUN_0203A9F0 .word FUN_0203AA90 .word ScrCmd_ScrollBg diff --git a/arm9/global.inc b/arm9/global.inc index 1614c405..c9b785dc 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2766,10 +2766,10 @@ .extern ScrCmd_Unk0035 .extern ScrCmd_ScrollBg .extern ScrCmd_CreateMessageBox -.extern FUN_0203A830 -.extern FUN_0203A85C -.extern FUN_0203A878 -.extern FUN_0203A8B8 +.extern ScrCmd_Unk0037 +.extern ScrCmd_Unk0038 +.extern ScrCmd_Unk0039 +.extern ScrCmd_Unk003A .extern FUN_0203A9F0 .extern FUN_0203AA90 .extern FUN_0203AAA0 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 0f8c6c45..478148bc 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -38,6 +38,9 @@ extern void MOD05_021E8128(u32 param0, u8 type, u16 map); extern void MOD05_021E8130(u32 param0, u32 param1); extern void MOD05_021E8158(struct UnkSavStruct80 *unk80); extern u32 MOD05_021E8140(u32 param0); +extern BOOL MOD05_021E8148(u32 param0); +extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3); +extern void MOD05_021E8144(u32 param0); static BOOL RunPauseTimer(struct ScriptContext *ctx); static u32 Compare(u16 a, u16 b); @@ -47,7 +50,9 @@ static BOOL FUN_0203A46C(struct ScriptContext *ctx); static BOOL FUN_0203A4AC(struct ScriptContext *ctx); static BOOL FUN_0203A4E0(struct ScriptContext *ctx); static BOOL FUN_0203A570(struct ScriptContext *ctx); -static BOOL FUN_0203A6C8(struct ScriptContext* ctx); +static BOOL FUN_0203A6C8(struct ScriptContext *ctx); +static BOOL FUN_0203A8A0(struct ScriptContext *ctx); +static BOOL FUN_0203A94C(struct ScriptContext *ctx); extern u8 sScriptConditionTable[6][3]; @@ -869,3 +874,114 @@ THUMB_FUNC BOOL ScrCmd_CreateMessageBox(struct ScriptContext* ctx) return TRUE; } + +THUMB_FUNC BOOL ScrCmd_Unk0037(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 typ = ScriptReadByte(ctx); + u16 map = ScriptReadHalfword(ctx); + + MOD05_021E8128(unk80->unk60, typ, map); + MOD05_021E8130(unk80->unk60, 1); + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0038(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 req = ScriptReadByte(ctx); + MOD05_021E8130(unk80->unk60, req); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0039(struct ScriptContext *ctx) +{ + if (MOD05_021E8148(ctx->unk80->unk60) == TRUE) + { + return FALSE; + } + + SetupNativeScript(ctx, FUN_0203A8A0); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A8A0(struct ScriptContext *ctx) +{ + if (MOD05_021E8148(ctx->unk80->unk60) == TRUE) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk003A(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 *unk1 = FUN_02039438(unk80, 3); + struct String **unk2 = FUN_02039438(unk80, 17); + struct String **unk3 = FUN_02039438(unk80, 16); + struct ScrStrBufs **unk4 = FUN_02039438(unk80, 15); + + u8 msg = ScriptReadByte(ctx); + u16 wk = ScriptReadHalfword(ctx); + + ReadMsgDataIntoString(ctx->msgData, msg, *unk2); + StringExpandPlaceholders(*unk4, *unk3, *unk2); + + *unk1 = FUN_02054658(MOD05_021E8140(unk80->unk60), *unk3, Sav2_PlayerData_GetOptionsAddr(ctx->unk80->saveBlock2), 1); + ctx->data[0] = wk; + SetupNativeScript(ctx, FUN_0203A94C); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext* ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u8 *unk1 = FUN_02039438(unk80, 3); + u16 *varPtr = GetVarPointer(unk80, (u16)ctx->data[0]); + MOD05_021E8144(unk80->unk60); + + u32 tmp = 0xFFFF; + if (FUN_020546C8(*unk1) == TRUE) + { + *varPtr = 2; + return TRUE; + } + + if (gMain.unk48 & 0x40) + { + tmp = 0; + } + else if (gMain.unk48 & 0x80) + { + tmp = 1; + } + else if (gMain.unk48 & 0x20) + { + tmp = 2; + } + else if (gMain.unk48 & 0x10) + { + tmp = 3; + } + + if (tmp != 0xFFFF) + { + FUN_0201BD7C(*unk1); + FUN_02055304(ctx->unk80->unk38, tmp); + *varPtr = 0; + return TRUE; + } + else + { + if (gMain.unk48 & 0x400) + { + FUN_0201BD7C(*unk1); + *varPtr = 1; + return TRUE; + } + return FALSE; + } +} diff --git a/arm9/src/text.c b/arm9/src/text.c index 6207d913..665b5dd9 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -416,6 +416,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow *(current++) = (shadow12) | temp; } #else +//GLOBAL_ASM("asm/nonmatchings/GenerateFontHalfRowLookupTable.s") THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor) //TODO use asm preprocessor { asm { -- cgit v1.2.3 From 2a67d8b7e34a89bb50edae7f81bd5ac56d995101 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 19 Mar 2021 19:42:00 +0000 Subject: fix asmproc --- arm9/asm/scrcmd_asm.s | 14 -------------- arm9/asm/unk_02038C78.s | 2 +- arm9/global.inc | 2 +- arm9/src/scrcmd.c | 11 ++++++++++- 4 files changed, 12 insertions(+), 17 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index 95b132fd..dcf84948 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -15,20 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203A9F0 -FUN_0203A9F0: ; 0x0203A9F0 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - str r0, [r4, #0x64] - ldr r1, _0203AA08 ; =FUN_0203AA0C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - nop -_0203AA08: .word FUN_0203AA0C - thumb_func_start FUN_0203AA0C FUN_0203AA0C: ; 0x0203AA0C push {r3-r5, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 950ebd45..95ca2106 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -208,7 +208,7 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0038 .word ScrCmd_Unk0039 .word ScrCmd_Unk003A - .word FUN_0203A9F0 + .word ScrCmd_Unk003B .word FUN_0203AA90 .word ScrCmd_ScrollBg .word FUN_0203AAA0 diff --git a/arm9/global.inc b/arm9/global.inc index c9b785dc..ab44d83e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2770,7 +2770,7 @@ .extern ScrCmd_Unk0038 .extern ScrCmd_Unk0039 .extern ScrCmd_Unk003A -.extern FUN_0203A9F0 +.extern ScrCmd_Unk003B .extern FUN_0203AA90 .extern FUN_0203AAA0 .extern FUN_0203AB44 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 478148bc..870d6353 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -53,6 +53,7 @@ static BOOL FUN_0203A570(struct ScriptContext *ctx); static BOOL FUN_0203A6C8(struct ScriptContext *ctx); static BOOL FUN_0203A8A0(struct ScriptContext *ctx); static BOOL FUN_0203A94C(struct ScriptContext *ctx); +/*static*/ BOOL FUN_0203AA0C(struct ScriptContext *ctx); extern u8 sScriptConditionTable[6][3]; @@ -936,7 +937,7 @@ THUMB_FUNC BOOL ScrCmd_Unk003A(struct ScriptContext *ctx) return TRUE; } -THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext* ctx) +THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext *ctx) { struct UnkSavStruct80 *unk80 = ctx->unk80; u8 *unk1 = FUN_02039438(unk80, 3); @@ -985,3 +986,11 @@ THUMB_FUNC static BOOL FUN_0203A94C(struct ScriptContext* ctx) return FALSE; } } + +THUMB_FUNC BOOL ScrCmd_Unk003B(struct ScriptContext *ctx) +{ + ctx->data[0] = ScriptReadHalfword(ctx); + + SetupNativeScript(ctx, FUN_0203AA0C); + return TRUE; +} -- cgit v1.2.3 From 7dd1e6b1a3ce58430bca1d2ad95d68f7c7c7a0ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 19 Mar 2021 20:56:32 +0100 Subject: decomp 02015E30 --- arm9/asm/unk_02015E30.s | 72 ------------------------------------------------- arm9/src/unk_02015E30.c | 38 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 72 deletions(-) delete mode 100644 arm9/asm/unk_02015E30.s create mode 100644 arm9/src/unk_02015E30.c (limited to 'arm9') diff --git a/arm9/asm/unk_02015E30.s b/arm9/asm/unk_02015E30.s deleted file mode 100644 index 9ca09399..00000000 --- a/arm9/asm/unk_02015E30.s +++ /dev/null @@ -1,72 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global UNK_021C4898 -UNK_021C4898: ; 0x021C4898 - .space 0x20 - - .text - - thumb_func_start FUN_02015E30 -FUN_02015E30: ; 0x02015E30 - ldr r0, _02015E38 ; =UNK_021C4898 - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_02015E38: .word UNK_021C4898 - - thumb_func_start FUN_02015E3C -FUN_02015E3C: ; 0x02015E3C - push {r3, lr} - ldr r1, _02015E5C ; =UNK_021C4898 - mov r2, #0x1 - str r2, [r1, #0x0] - mov r2, #0x0 - str r2, [r1, #0x10] - str r2, [r1, #0x14] - str r2, [r1, #0x8] - str r2, [r1, #0xc] - str r0, [r1, #0x4] - bl FUN_02020BF4 - ldr r2, _02015E5C ; =UNK_021C4898 - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - pop {r3, pc} - .balign 4 -_02015E5C: .word UNK_021C4898 - - thumb_func_start FUN_02015E60 -FUN_02015E60: ; 0x02015E60 - push {r3-r5, lr} - ldr r0, _02015E9C ; =UNK_021C4898 - ldr r0, [r0, #0x0] - cmp r0, #0x0 - beq _02015E9A - bl FUN_02020BF4 - ldr r2, _02015E9C ; =UNK_021C4898 - ldr r3, [r2, #0x18] - ldr r2, [r2, #0x1c] - sub r0, r0, r3 - sbc r1, r2 - bl FUN_02020C14 - add r5, r1, #0x0 - ldr r1, _02015E9C ; =UNK_021C4898 - add r4, r0, #0x0 - ldr r3, [r1, #0x8] - ldr r2, [r1, #0xc] - sub r0, r3, r4 - sbc r2, r5 - bhs _02015E9A - ldr r0, [r1, #0x4] - sub r1, r4, r3 - bl AddIGTSeconds - ldr r0, _02015E9C ; =UNK_021C4898 - str r4, [r0, #0x8] - str r5, [r0, #0xc] -_02015E9A: - pop {r3-r5, pc} - .balign 4 -_02015E9C: .word UNK_021C4898 diff --git a/arm9/src/unk_02015E30.c b/arm9/src/unk_02015E30.c new file mode 100644 index 00000000..848bc3ad --- /dev/null +++ b/arm9/src/unk_02015E30.c @@ -0,0 +1,38 @@ + +#include "unk_02015E30.h" + +extern u64 FUN_02020BF4(); +extern u64 FUN_02020C14(u64 param0); + +struct UnkStruct_02015E30 UNK_021C4898; + +THUMB_FUNC void FUN_02015E30() +{ + UNK_021C4898.unk00 = 0; +} + +THUMB_FUNC void FUN_02015E3C(struct IGT *igt) +{ + struct UnkStruct_02015E30 *unk1 = &UNK_021C4898; + UNK_021C4898.unk00 = 1; + UNK_021C4898.unk10 = 0; + UNK_021C4898.unk14 = 0; + UNK_021C4898.unk08 = 0; + UNK_021C4898.unk04 = igt; + + UNK_021C4898.unk18 = FUN_02020BF4(); +} + +THUMB_FUNC void FUN_02015E60() +{ + if (UNK_021C4898.unk00 != 0) + { + u64 res = FUN_02020C14(FUN_02020BF4() - UNK_021C4898.unk18); + + if (UNK_021C4898.unk08 < res) + { + AddIGTSeconds(UNK_021C4898.unk04, (u32)(res - UNK_021C4898.unk08)); + UNK_021C4898.unk08 = res; + } + } +} \ No newline at end of file -- cgit v1.2.3 From 2b1cbfa8627fc799a53c6dfb5356dbcb10000126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 19 Mar 2021 21:05:16 +0100 Subject: new line --- arm9/src/unk_02015E30.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/src/unk_02015E30.c b/arm9/src/unk_02015E30.c index 848bc3ad..d52fb236 100644 --- a/arm9/src/unk_02015E30.c +++ b/arm9/src/unk_02015E30.c @@ -35,4 +35,4 @@ THUMB_FUNC void FUN_02015E60() UNK_021C4898.unk08 = res; } } -} \ No newline at end of file +} -- cgit v1.2.3 From 0ed2967bdbf4667afdbbfafac6aee19d9244d50a Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 19 Mar 2021 20:05:57 +0000 Subject: asmproc doesn't like me --- arm9/src/text.c | 1 - 1 file changed, 1 deletion(-) (limited to 'arm9') diff --git a/arm9/src/text.c b/arm9/src/text.c index 665b5dd9..6207d913 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -416,7 +416,6 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow *(current++) = (shadow12) | temp; } #else -//GLOBAL_ASM("asm/nonmatchings/GenerateFontHalfRowLookupTable.s") THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor) //TODO use asm preprocessor { asm { -- cgit v1.2.3 From 1a326c6b75b7e97bad781a1472bdbb29d90766b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 20 Mar 2021 10:51:56 +0100 Subject: match 02020AFC --- arm9/asm/unk_02020AFC.s | 165 ------------------------------------------------ arm9/src/unk_02020AFC.c | 74 ++++++++++++++++++++++ 2 files changed, 74 insertions(+), 165 deletions(-) delete mode 100644 arm9/asm/unk_02020AFC.s create mode 100644 arm9/src/unk_02020AFC.c (limited to 'arm9') diff --git a/arm9/asm/unk_02020AFC.s b/arm9/asm/unk_02020AFC.s deleted file mode 100644 index 3d43d259..00000000 --- a/arm9/asm/unk_02020AFC.s +++ /dev/null @@ -1,165 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .bss - - .global UNK_021C59B0 -UNK_021C59B0: ; 0x021C59B0 - .space 0xc - - .text - - thumb_func_start FUN_02020AFC -FUN_02020AFC: ; 0x02020AFC - push {r3, lr} - ldr r0, _02020B24 ; =UNK_021C59B0 - mov r2, #0x0 - str r2, [r0, #0x4] - str r2, [r0, #0x8] - ldr r1, _02020B28 ; =0x0400010E - str r2, [r0, #0x0] - strh r2, [r1, #0x0] - sub r0, r1, #0x2 - strh r2, [r0, #0x0] - mov r0, #0xc1 - strh r0, [r1, #0x0] - ldr r1, _02020B2C ; =FUN_02020B30 - mov r0, #0x40 - bl OS_SetIrqFunction - mov r0, #0x40 - bl OS_EnableIrqMask - pop {r3, pc} - .balign 4 -_02020B24: .word UNK_021C59B0 -_02020B28: .word 0x0400010E -_02020B2C: .word FUN_02020B30 - - thumb_func_start FUN_02020B30 -FUN_02020B30: ; 0x02020B30 - ldr r0, _02020B68 ; =UNK_021C59B0 - mov r3, #0x0 - ldr r1, [r0, #0x4] - ldr r2, [r0, #0x8] - add r1, r1, #0x1 - adc r2, r3 - str r1, [r0, #0x4] - str r2, [r0, #0x8] - ldr r1, [r0, #0x0] - cmp r1, #0x0 - beq _02020B54 - ldr r2, _02020B6C ; =0x0400010E - strh r3, [r2, #0x0] - sub r1, r2, #0x2 - strh r3, [r1, #0x0] - mov r1, #0xc1 - strh r1, [r2, #0x0] - str r3, [r0, #0x0] -_02020B54: - ldr r3, _02020B70 ; =0x027E0000 - ldr r1, _02020B74 ; =0x00003FF8 - mov r0, #0x40 - ldr r2, [r3, r1] - orr r2, r0 - str r2, [r3, r1] - ldr r3, _02020B78 ; =OS_SetIrqFunction - ldr r1, _02020B7C ; =FUN_02020B30 - bx r3 - nop -_02020B68: .word UNK_021C59B0 -_02020B6C: .word 0x0400010E -_02020B70: .word 0x027E0000 -_02020B74: .word 0x00003FF8 -_02020B78: .word OS_SetIrqFunction -_02020B7C: .word FUN_02020B30 - - thumb_func_start FUN_02020B80 -FUN_02020B80: ; 0x02020B80 - push {r4-r5, lr} - sub sp, #0xc - bl OS_DisableInterrupts - ldr r1, _02020BE4 ; =0x0400010C - add r3, sp, #0x0 - ldrh r1, [r1, #0x0] - ldr r2, _02020BE8 ; =0x0000FFFF - strh r1, [r3, #0x0] - ldr r1, _02020BEC ; =UNK_021C59B0 - ldr r5, [r1, #0x4] - ldr r4, [r1, #0x8] - mov r1, #0x0 - mvn r1, r1 - and r1, r5 - str r1, [sp, #0x4] - and r2, r4 - ldr r1, _02020BF0 ; =0x04000214 - str r2, [sp, #0x8] - ldr r2, [r1, #0x0] - mov r1, #0x40 - tst r2, r1 - beq _02020BC4 - ldrh r2, [r3, #0x0] - lsl r1, r1, #0x9 - tst r1, r2 - bne _02020BC4 - ldr r2, [sp, #0x4] - mov r1, #0x0 - ldr r3, [sp, #0x8] - add r2, r2, #0x1 - adc r3, r1 - str r2, [sp, #0x4] - str r3, [sp, #0x8] -_02020BC4: - bl OS_RestoreInterrupts - ldr r2, [sp, #0x4] - ldr r1, [sp, #0x8] - lsr r0, r2, #0x10 - lsl r1, r1, #0x10 - orr r1, r0 - add r0, sp, #0x0 - lsl r3, r2, #0x10 - ldrh r2, [r0, #0x0] - asr r0, r2, #0x1f - orr r1, r0 - add r0, r3, #0x0 - orr r0, r2 - add sp, #0xc - pop {r4-r5, pc} - .balign 4 -_02020BE4: .word 0x0400010C -_02020BE8: .word 0x0000FFFF -_02020BEC: .word UNK_021C59B0 -_02020BF0: .word 0x04000214 - - thumb_func_start FUN_02020BF4 -FUN_02020BF4: ; 0x02020BF4 - ldr r3, _02020BF8 ; =FUN_02020B80 - bx r3 - .balign 4 -_02020BF8: .word FUN_02020B80 - - thumb_func_start FUN_02020BFC -FUN_02020BFC: ; 0x02020BFC - push {r3, lr} - lsr r2, r0, #0x1a - lsl r1, r1, #0x6 - orr r1, r2 - ldr r2, _02020C10 ; =0x000082EA - lsl r0, r0, #0x6 - mov r3, #0x0 - bl _ll_udiv - pop {r3, pc} - .balign 4 -_02020C10: .word 0x000082EA - - thumb_func_start FUN_02020C14 -FUN_02020C14: ; 0x02020C14 - push {r3, lr} - lsr r2, r0, #0x1a - lsl r1, r1, #0x6 - orr r1, r2 - ldr r2, _02020C28 ; =0x01FF6210 - lsl r0, r0, #0x6 - mov r3, #0x0 - bl _ll_udiv - pop {r3, pc} - .balign 4 -_02020C28: .word 0x01FF6210 diff --git a/arm9/src/unk_02020AFC.c b/arm9/src/unk_02020AFC.c new file mode 100644 index 00000000..80d37755 --- /dev/null +++ b/arm9/src/unk_02020AFC.c @@ -0,0 +1,74 @@ +#include "global.h" + +struct UnkStruct_02020AFC +{ + BOOL NeedReset; + vu64 Timer3Counter; +}; + +struct UnkStruct_02020AFC UNK_021C59B0; + +extern void FUN_02020B30(void); + +THUMB_FUNC void FUN_02020AFC() +{ + UNK_021C59B0.Timer3Counter = 0; + UNK_021C59B0.NeedReset = FALSE; + + reg_OS_TM3CNT_H = 0; + reg_OS_TM3CNT_L = 0; + reg_OS_TM3CNT_H = 0xc1; // start timer3 with f/64 and irq enable + + OS_SetIrqFunction(0x40, &FUN_02020B30); + OS_EnableIrqMask(0x40); // irq on timer3 overflow +} + + +THUMB_FUNC void FUN_02020B30() +{ + UNK_021C59B0.Timer3Counter++; + + if (UNK_021C59B0.NeedReset) + { + reg_OS_TM3CNT_H = 0; + reg_OS_TM3CNT_L = 0; + reg_OS_TM3CNT_H = 0xc1; + UNK_021C59B0.NeedReset = FALSE; + } + u32 *ptr = (u32 *)0x027e0000; + u32 offset = 0xffe; + ptr[offset] |= 0x40; + + OS_SetIrqFunction(0x40, &FUN_02020B30); +} + +THUMB_FUNC u64 FUN_02020B80() +{ + OSIntrMode intr_mode = OS_DisableInterrupts(); + + vu16 timer3 = reg_OS_TM3CNT_L; + vu64 unk1 = UNK_021C59B0.Timer3Counter & 0x0000ffffffffffff; + + if (reg_OS_IF & 64 && !(timer3 & 0x8000)) + { + unk1++; + } + + OS_RestoreInterrupts(intr_mode); + return (unk1 << 16) | timer3; +} + +THUMB_FUNC u64 FUN_02020BF4() +{ + return FUN_02020B80(); +} + +THUMB_FUNC u64 FUN_02020BFC(u64 param0) +{ + return (param0 << 6) / 33514; +} + +THUMB_FUNC u64 FUN_02020C14(u64 param0) +{ + return (param0 << 6) / 33514000; +} -- cgit v1.2.3 From bef877266c6af17c90581f56f5d4217fd4ecce23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 20 Mar 2021 11:42:10 +0100 Subject: better names --- arm9/arm9.lsf | 2 +- arm9/global.inc | 7 ++-- arm9/modules/22/asm/module_22.s | 10 +++--- arm9/modules/41/asm/module_41.s | 10 +++--- arm9/src/main.c | 4 +-- arm9/src/timer3.c | 67 +++++++++++++++++++++++++++++++++++++ arm9/src/unk_02015E30.c | 7 ++-- arm9/src/unk_02020AFC.c | 74 ----------------------------------------- 8 files changed, 85 insertions(+), 96 deletions(-) create mode 100644 arm9/src/timer3.c delete mode 100644 arm9/src/unk_02020AFC.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ba128605..1b6a6d66 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -69,7 +69,7 @@ Static arm9 Object unk_0201E7D8.o Object unk_0201F06C.o Object unk_020208B8.o - Object unk_02020AFC.o + Object timer3.o Object error_handling.o Object unk_02020C44.o Object unk_0202134C.o diff --git a/arm9/global.inc b/arm9/global.inc index 0190b134..ebbd0c24 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1353,10 +1353,9 @@ .extern FUN_02020AB0 .extern FUN_02020ACC .extern FUN_02020AE8 -.extern FUN_02020AFC -.extern FUN_02020BF4 -.extern FUN_02020BFC -.extern FUN_02020C14 +.extern GetTimer3Count +.extern Timer3CountToMilliSeconds +.extern Timer3CountToSeconds .extern FUN_02020C44 .extern FUN_02020C90 .extern FUN_02020CB0 diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s index ef079cdb..e58e406b 100644 --- a/arm9/modules/22/asm/module_22.s +++ b/arm9/modules/22/asm/module_22.s @@ -657,7 +657,7 @@ MOD22_02254D00: ; 0x02254D00 eor r0, r3 orr r0, r1 beq _02254D32 - bl FUN_02020BF4 + bl GetTimer3Count add r5, r4, #0 add r5, #0xc ldr r7, [r4, #0x14] @@ -672,7 +672,7 @@ MOD22_02254D00: ; 0x02254D00 str r3, [r5, #4] b _02254D3A _02254D32: - bl FUN_02020BF4 + bl GetTimer3Count str r0, [r4, #0xc] str r1, [r4, #0x10] _02254D3A: @@ -687,7 +687,7 @@ _02254D3A: MOD22_02254D44: ; 0x02254D44 push {r4, lr} add r4, r0, #0 - bl FUN_02020BF4 + bl GetTimer3Count str r0, [r4, #0x14] str r1, [r4, #0x18] mov r0, #0 @@ -706,12 +706,12 @@ MOD22_02254D58: ; 0x02254D58 bne _02254D66 b _02254E7C _02254D66: - bl FUN_02020BF4 + bl GetTimer3Count ldr r3, [r5, #0xc] ldr r2, [r5, #0x10] sub r0, r0, r3 sbc r1, r2 - bl FUN_02020BFC + bl Timer3CountToMilliSeconds ldr r2, _02254E80 ; =0x04000280 mov r3, #1 strh r3, [r2] diff --git a/arm9/modules/41/asm/module_41.s b/arm9/modules/41/asm/module_41.s index a60736df..637c100f 100644 --- a/arm9/modules/41/asm/module_41.s +++ b/arm9/modules/41/asm/module_41.s @@ -1046,7 +1046,7 @@ MOD41_0225504C: ; 0x0225504C add r5, r0, #0 add r4, r5, #0 add r4, #0x48 - bl FUN_02020BF4 + bl GetTimer3Count str r0, [r5, #0x68] str r1, [r5, #0x6c] mov r2, #0 @@ -1105,7 +1105,7 @@ MOD41_022550BC: ; 0x022550BC mov r1, #0 add r0, #0x88 str r1, [r0] - bl FUN_02020BF4 + bl GetTimer3Count str r0, [r4, #0x70] str r1, [r4, #0x74] pop {r4, pc} @@ -1115,7 +1115,7 @@ MOD41_022550BC: ; 0x022550BC MOD41_022550D0: ; 0x022550D0 push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 - bl FUN_02020BF4 + bl GetTimer3Count add r5, r4, #0 add r5, #0x68 ldr r7, [r4, #0x70] @@ -1155,12 +1155,12 @@ MOD41_02255108: ; 0x02255108 ldr r0, [r0] cmp r0, #0 beq _0225516A - bl FUN_02020BF4 + bl GetTimer3Count ldr r3, [r4, #0x68] ldr r2, [r4, #0x6c] sub r0, r0, r3 sbc r1, r2 - bl FUN_02020C14 + bl Timer3CountToSeconds add r5, r0, #0 add r0, r4, #0 add r0, #0x80 diff --git a/arm9/src/main.c b/arm9/src/main.c index 86f0f6af..c50fbaff 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -11,6 +11,7 @@ #include "poke_overlay.h" #include "player_data.h" #include "sound.h" +#include "timer3.h" FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -34,7 +35,6 @@ extern void FUN_02002C14(void); extern void FUN_02002C50(int, int); extern struct SaveBlock2 * SaveBlock2_new(void); extern void * FUN_02029EF8(struct SaveBlock2 *); -extern void FUN_02020AFC(void); extern int FUN_020337E8(int); extern void FUN_02034188(int, int); extern int FUN_020227FC(struct SaveBlock2 *); @@ -75,7 +75,7 @@ THUMB_FUNC void NitroMain(void) gBacklightTop.unk18 = -1; gBacklightTop.unk20 = SaveBlock2_new(); InitSoundData(FUN_02029EF8(gBacklightTop.unk20), Sav2_PlayerData_GetOptionsAddr(gBacklightTop.unk20)); - FUN_02020AFC(); + Init_Timer3(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); if (FUN_020227FC(gBacklightTop.unk20) == 0) diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c new file mode 100644 index 00000000..7bf66398 --- /dev/null +++ b/arm9/src/timer3.c @@ -0,0 +1,67 @@ +#include "timer3.h" + +struct Timer3Data timer3_data; + + +THUMB_FUNC void Init_Timer3() +{ + timer3_data.Timer3Counter = 0; + timer3_data.NeedReset = FALSE; + + reg_OS_TM3CNT_H = 0; + reg_OS_TM3CNT_L = 0; + reg_OS_TM3CNT_H = 0xc1; // start timer3 with f/64 and irq enable + + OS_SetIrqFunction(0x40, &CountUpTimer3); + OS_EnableIrqMask(0x40); // irq on timer3 overflow +} + + +THUMB_FUNC void CountUpTimer3() +{ + timer3_data.Timer3Counter++; + + if (timer3_data.NeedReset) + { + reg_OS_TM3CNT_H = 0; + reg_OS_TM3CNT_L = 0; + reg_OS_TM3CNT_H = 0xc1; + timer3_data.NeedReset = FALSE; + } + u32 *ptr = (u32 *)0x027e0000; + u32 offset = 0xffe; + ptr[offset] |= 0x40; + + OS_SetIrqFunction(0x40, &CountUpTimer3); +} + +THUMB_FUNC u64 internal_GetTimer3Count() +{ + OSIntrMode intr_mode = OS_DisableInterrupts(); + + vu16 timer3 = reg_OS_TM3CNT_L; + vu64 timer3_counter = timer3_data.Timer3Counter & 0x0000ffffffffffff; + + if (reg_OS_IF & 64 && !(timer3 & 0x8000)) + { + timer3_counter++; + } + + OS_RestoreInterrupts(intr_mode); + return (timer3_counter << 16) | timer3; +} + +THUMB_FUNC u64 GetTimer3Count() +{ + return internal_GetTimer3Count(); +} + +THUMB_FUNC u64 Timer3CountToMilliSeconds(u64 count) +{ + return (count *64) / 33514; +} + +THUMB_FUNC u64 Timer3CountToSeconds(u64 count) +{ + return (count *64) / HW_SYSTEM_CLOCK; +} diff --git a/arm9/src/unk_02015E30.c b/arm9/src/unk_02015E30.c index d52fb236..8be466fb 100644 --- a/arm9/src/unk_02015E30.c +++ b/arm9/src/unk_02015E30.c @@ -1,9 +1,6 @@ #include "unk_02015E30.h" -extern u64 FUN_02020BF4(); -extern u64 FUN_02020C14(u64 param0); - struct UnkStruct_02015E30 UNK_021C4898; THUMB_FUNC void FUN_02015E30() @@ -20,14 +17,14 @@ THUMB_FUNC void FUN_02015E3C(struct IGT *igt) UNK_021C4898.unk08 = 0; UNK_021C4898.unk04 = igt; - UNK_021C4898.unk18 = FUN_02020BF4(); + UNK_021C4898.unk18 = GetTimer3Count(); } THUMB_FUNC void FUN_02015E60() { if (UNK_021C4898.unk00 != 0) { - u64 res = FUN_02020C14(FUN_02020BF4() - UNK_021C4898.unk18); + u64 res = Timer3CountToSeconds(GetTimer3Count() - UNK_021C4898.unk18); if (UNK_021C4898.unk08 < res) { diff --git a/arm9/src/unk_02020AFC.c b/arm9/src/unk_02020AFC.c deleted file mode 100644 index 80d37755..00000000 --- a/arm9/src/unk_02020AFC.c +++ /dev/null @@ -1,74 +0,0 @@ -#include "global.h" - -struct UnkStruct_02020AFC -{ - BOOL NeedReset; - vu64 Timer3Counter; -}; - -struct UnkStruct_02020AFC UNK_021C59B0; - -extern void FUN_02020B30(void); - -THUMB_FUNC void FUN_02020AFC() -{ - UNK_021C59B0.Timer3Counter = 0; - UNK_021C59B0.NeedReset = FALSE; - - reg_OS_TM3CNT_H = 0; - reg_OS_TM3CNT_L = 0; - reg_OS_TM3CNT_H = 0xc1; // start timer3 with f/64 and irq enable - - OS_SetIrqFunction(0x40, &FUN_02020B30); - OS_EnableIrqMask(0x40); // irq on timer3 overflow -} - - -THUMB_FUNC void FUN_02020B30() -{ - UNK_021C59B0.Timer3Counter++; - - if (UNK_021C59B0.NeedReset) - { - reg_OS_TM3CNT_H = 0; - reg_OS_TM3CNT_L = 0; - reg_OS_TM3CNT_H = 0xc1; - UNK_021C59B0.NeedReset = FALSE; - } - u32 *ptr = (u32 *)0x027e0000; - u32 offset = 0xffe; - ptr[offset] |= 0x40; - - OS_SetIrqFunction(0x40, &FUN_02020B30); -} - -THUMB_FUNC u64 FUN_02020B80() -{ - OSIntrMode intr_mode = OS_DisableInterrupts(); - - vu16 timer3 = reg_OS_TM3CNT_L; - vu64 unk1 = UNK_021C59B0.Timer3Counter & 0x0000ffffffffffff; - - if (reg_OS_IF & 64 && !(timer3 & 0x8000)) - { - unk1++; - } - - OS_RestoreInterrupts(intr_mode); - return (unk1 << 16) | timer3; -} - -THUMB_FUNC u64 FUN_02020BF4() -{ - return FUN_02020B80(); -} - -THUMB_FUNC u64 FUN_02020BFC(u64 param0) -{ - return (param0 << 6) / 33514; -} - -THUMB_FUNC u64 FUN_02020C14(u64 param0) -{ - return (param0 << 6) / 33514000; -} -- cgit v1.2.3 From 2fe62832f7b10a39ec55fe2adcdd8243fcfc1344 Mon Sep 17 00:00:00 2001 From: hondew Date: Sat, 20 Mar 2021 23:20:12 -0400 Subject: Use asmproc for text.c nonmatch --- .../nonmatchings/GenerateFontHalfRowLookupTable.s | 1 - arm9/src/text.c | 88 +--------------------- 2 files changed, 1 insertion(+), 88 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s index a083bf2e..a590ef02 100644 --- a/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s +++ b/arm9/asm/nonmatchings/GenerateFontHalfRowLookupTable.s @@ -1,4 +1,3 @@ - .section .text glabel GenerateFontHalfRowLookupTable diff --git a/arm9/src/text.c b/arm9/src/text.c index 6207d913..aadb84c0 100644 --- a/arm9/src/text.c +++ b/arm9/src/text.c @@ -416,93 +416,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow *(current++) = (shadow12) | temp; } #else -THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadowColor) //TODO use asm preprocessor -{ - asm { - // push {r3-r7, lr} - sub sp, #0x30 - ldr r3, =UNK_021C570C - mov r5, #0x0 - str r5, [sp, #0x20] - str r0, [sp, #0x24] - str r2, [sp, #0x28] - str r1, [sp, #0x2c] - strh r1, [r3, #0x6] - strh r0, [r3, #0x2] - add r0, sp, #0x20 - strh r2, [r3, #0x4] - str r5, [sp, #0x14] - str r0, [sp, #0x8] - mov r12, r0 - mov lr, r0 - str r0, [sp, #0x18] - _0201C07E: - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x18] - str r0, [sp, #0x4] - ldr r0, [sp, #0x8] - ldr r0, [r0, #0x0] - str r0, [sp, #0x1c] - _0201C08C: - mov r0, #0x0 - str r0, [sp, #0xc] - mov r0, lr - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r0, [r0, #0x0] - lsl r7, r0, #0x4 - _0201C09A: - ldr r0, [sp, #0x0] - mov r3, #0x0 - ldr r0, [r0, #0x0] - mov r4, r12 - lsl r6, r0, #0x8 - _0201C0A4: - ldr r0, [r4, #0x0] - add r1, r7, #0x0 - lsl r0, r0, #0xc - orr r0, r6 - orr r1, r0 - ldr r0, [sp, #0x1c] - add r3, r3, #0x1 - add r2, r0, #0x0 - orr r2, r1 - lsl r1, r5, #0x1 - ldr r0, =UNK_021C5734 - add r5, r5, #0x1 - add r4, r4, #0x4 - strh r2, [r0, r1] - cmp r3, #0x4 - blt _0201C0A4 - ldr r0, [sp, #0x0] - add r0, r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [sp, #0xc] - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, #0x4 - blt _0201C09A - ldr r0, [sp, #0x4] - add r0, r0, #0x4 - str r0, [sp, #0x4] - ldr r0, [sp, #0x10] - add r0, r0, #0x1 - str r0, [sp, #0x10] - cmp r0, #0x4 - blt _0201C08C - ldr r0, [sp, #0x8] - add r0, r0, #0x4 - str r0, [sp, #0x8] - ldr r0, [sp, #0x14] - add r0, r0, #0x1 - str r0, [sp, #0x14] - cmp r0, #0x4 - blt _0201C07E - add sp, #0x30 - // pop {r3-r7, pc} - } -} +GLOBAL_ASM("asm/nonmatchings/GenerateFontHalfRowLookupTable.s") #endif THUMB_FUNC void DecompressGlyphTile(const u16 *src, u16 *dst) -- cgit v1.2.3 From 8bfbd3f4983d0843b352b403f08c2894d1001ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 09:17:05 +0100 Subject: use HW_INTR_CHECK_BUF macro --- arm9/src/timer3.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'arm9') diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c index 7bf66398..75689326 100644 --- a/arm9/src/timer3.c +++ b/arm9/src/timer3.c @@ -28,9 +28,8 @@ THUMB_FUNC void CountUpTimer3() reg_OS_TM3CNT_H = 0xc1; timer3_data.NeedReset = FALSE; } - u32 *ptr = (u32 *)0x027e0000; - u32 offset = 0xffe; - ptr[offset] |= 0x40; + + *(vu32 *)HW_INTR_CHECK_BUF |= 0x40; OS_SetIrqFunction(0x40, &CountUpTimer3); } -- cgit v1.2.3 From 2aa4e10d388c15f0c4a2f7bf5a27c7560d80ed7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 09:20:11 +0100 Subject: use hex constant for flag check --- arm9/src/timer3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c index 75689326..1799fd24 100644 --- a/arm9/src/timer3.c +++ b/arm9/src/timer3.c @@ -41,7 +41,7 @@ THUMB_FUNC u64 internal_GetTimer3Count() vu16 timer3 = reg_OS_TM3CNT_L; vu64 timer3_counter = timer3_data.Timer3Counter & 0x0000ffffffffffff; - if (reg_OS_IF & 64 && !(timer3 & 0x8000)) + if (reg_OS_IF & 0x40 && !(timer3 & 0x8000)) { timer3_counter++; } -- cgit v1.2.3 From 8f469065b93a2b26024eb77e2531b1b158f20d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 14:30:09 +0100 Subject: almost match --- arm9/arm9.lsf | 1 + arm9/asm/unk_0208A998.s | 283 +------------------------------ arm9/global.inc | 7 + arm9/src/unk_0208A998_c.c | 414 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 423 insertions(+), 282 deletions(-) create mode 100644 arm9/src/unk_0208A998_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index ba128605..5dccee2d 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -317,6 +317,7 @@ Static arm9 Object unk_0208A258.o Object unk_0208A300.o Object unk_0208A338.o + Object unk_0208A998_c.o Object unk_0208A998.o ### Third-party libraries ### Object unk_0208AC14.o diff --git a/arm9/asm/unk_0208A998.s b/arm9/asm/unk_0208A998.s index 14a02753..b63ba6d5 100644 --- a/arm9/asm/unk_0208A998.s +++ b/arm9/asm/unk_0208A998.s @@ -5,290 +5,9 @@ .section .rodata - .global UNK_020FF49C -UNK_020FF49C: ; 0x020FF49C - .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00 - - .global UNK_020FF4A4 -UNK_020FF4A4: ; 0x020FF4A4 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF4AC -UNK_020FF4AC: ; 0x020FF4AC - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FF4BC -UNK_020FF4BC: ; 0x020FF4BC - .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 UNK_020FF4D8 -UNK_020FF4D8: ; 0x020FF4D8 - .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 .section .bss - - .global sErrorMessagePrinterLock -sErrorMessagePrinterLock: ; 0x021C8C58 - .space 0x4 - .text - thumb_func_start FUN_0208A998 -FUN_0208A998: ; 0x0208A998 - ldr r3, _0208A9AC ; =0x027E0000 - ldr r1, _0208A9B0 ; =0x00003FF8 - mov r0, #0x1 - ldr r2, [r3, r1] - orr r0, r2 - str r0, [r3, r1] - ldr r3, _0208A9B4 ; =MI_WaitDma - mov r0, #0x3 - bx r3 - nop -_0208A9AC: .word 0x027E0000 -_0208A9B0: .word 0x00003FF8 -_0208A9B4: .word MI_WaitDma - thumb_func_start PrintErrorMessageAndReset -PrintErrorMessageAndReset: ; 0x0208A9B8 - push {r4-r7, lr} - sub sp, #0x24 - ldr r0, _0208ABC8 ; =sErrorMessagePrinterLock - ldr r1, [r0, #0x0] - cmp r1, #0x1 - bne _0208A9C6 - b _0208ABC4 -_0208A9C6: - mov r1, #0x1 - str r1, [r0, #0x0] - mov r0, #0x0 - bl OS_GetInitArenaHi - add r1, r0, #0x0 - mov r0, #0x0 - bl OS_SetArenaHi - mov r0, #0x0 - bl OS_GetInitArenaLo - add r1, r0, #0x0 - mov r0, #0x0 - bl OS_SetArenaLo - mov r1, #0x1 - ldr r0, _0208ABCC ; =UNK_020FF4A4 - add r2, r1, #0x0 - mov r3, #0x0 - bl FUN_020166C8 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - bl OS_DisableIrqMask - ldr r1, _0208ABD0 ; =FUN_0208A998 - mov r0, #0x1 - bl OS_SetIrqFunction - mov r0, #0x1 - bl OS_EnableIrqMask - mov r0, #0x0 - add r1, r0, #0x0 - bl Main_SetVBlankIntrCB - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _0208ABD4 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0x0] - ldr r2, _0208ABD8 ; =0x04001000 - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - mov r0, #0x4 - mov r1, #0x8 - bl FUN_0201669C - ldr r0, _0208ABDC ; =gMain + 0x60 - mov r1, #0x0 - strb r1, [r0, #0x5] - bl FUN_0201E7A0 - ldr r3, _0208ABE0 ; =0x04000050 - mov r0, #0x0 - strh r0, [r3, #0x0] - ldr r2, _0208ABE4 ; =0x04001050 - sub r3, #0x50 - strh r0, [r2, #0x0] - ldr r1, [r3, #0x0] - ldr r0, _0208ABE8 ; =0xFFFF1FFF - sub r2, #0x50 - and r1, r0 - str r1, [r3, #0x0] - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - ldr r0, _0208ABEC ; =UNK_020FF4D8 - bl FUN_0201E66C - mov r0, #0x0 - bl FUN_02016B94 - str r0, [sp, #0x10] - ldr r0, _0208ABF0 ; =UNK_020FF4AC - bl FUN_02016BBC - mov r1, #0x0 - ldr r0, [sp, #0x10] - ldr r2, _0208ABF4 ; =UNK_020FF4BC - add r3, r1, #0x0 - bl FUN_02016C18 - ldr r0, [sp, #0x10] - mov r1, #0x0 - bl FUN_02018744 - mov r1, #0x0 - str r1, [sp, #0x0] - ldr r0, [sp, #0x10] - ldr r2, _0208ABF8 ; =0x000001F7 - mov r3, #0x2 - str r1, [sp, #0x4] - bl FUN_0200CB00 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - bl FUN_02002ED0 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - add r3, r0, #0x0 - bl FUN_02017F18 - ldr r1, _0208ABFC ; =0x00006C21 - mov r0, #0x0 - bl FUN_02017FE4 - ldr r1, _0208ABFC ; =0x00006C21 - mov r0, #0x4 - bl FUN_02017FE4 - mov r0, #0x1 - mov r1, #0x1a - mov r2, #0xc8 - mov r3, #0x0 - bl NewMsgDataFromNarc - str r0, [sp, #0xc] - mov r0, #0x6 - lsl r0, r0, #0x6 - mov r1, #0x0 - bl String_ctor - add r4, r0, #0x0 - bl FUN_0201BD5C - ldr r0, [sp, #0x10] - ldr r2, _0208AC00 ; =UNK_020FF49C - add r1, sp, #0x14 - bl FUN_02019150 - mov r0, #0xd0 - str r0, [sp, #0x0] - mov r0, #0x90 - mov r2, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x14 - mov r1, #0xf - add r3, r2, #0x0 - bl FUN_020196F4 - ldr r2, _0208ABF8 ; =0x000001F7 - add r0, sp, #0x14 - mov r1, #0x0 - mov r3, #0x2 - bl FUN_0200CCA4 - ldr r0, [sp, #0xc] - mov r1, #0x3 - add r2, r4, #0x0 - bl ReadMsgDataIntoString - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - add r0, sp, #0x14 - add r2, r4, #0x0 - add r3, r1, #0x0 - str r1, [sp, #0x8] - bl AddTextPrinterParameterized - add r0, r4, #0x0 - bl String_dtor - bl FUN_0201E788 - mov r0, #0x0 - bl FUN_0200E394 - mov r0, #0x1 - bl FUN_0200E394 - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl FUN_0200A274 - bl FUN_02032DAC - mov r4, #0x1 -_0208AB58: - bl HandleDSLidAction - bl FUN_0202FB80 - bl FUN_02033678 - cmp r0, #0x0 - bne _0208AB72 - add r0, r4, #0x0 - add r1, r4, #0x0 - bl OS_WaitIrq - b _0208AB58 -_0208AB72: - ldr r5, _0208AC04 ; =0x04000130 - ldr r4, _0208AC08 ; =0x027FFFA8 - ldr r7, _0208AC0C ; =0x00002FFF - mov r6, #0x1 -_0208AB7A: - bl HandleDSLidAction - ldrh r1, [r5, #0x0] - ldrh r0, [r4, #0x0] - orr r1, r0 - ldr r0, _0208AC0C ; =0x00002FFF - eor r0, r1 - and r0, r7 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - tst r0, r6 - bne _0208AB9C - mov r0, #0x1 - add r1, r0, #0x0 - bl OS_WaitIrq - b _0208AB7A -_0208AB9C: - ldr r1, _0208AC10 ; =0x00007FFF - mov r0, #0x0 - bl FUN_0200E3A0 - ldr r1, _0208AC10 ; =0x00007FFF - mov r0, #0x1 - bl FUN_0200E3A0 - add r0, sp, #0x14 - bl FUN_02019178 - ldr r0, [sp, #0xc] - bl DestroyMsgData - ldr r0, [sp, #0x10] - bl FreeToHeap - mov r0, #0x0 - bl OS_ResetSystem -_0208ABC4: - add sp, #0x24 - pop {r4-r7, pc} - .balign 4 -_0208ABC8: .word sErrorMessagePrinterLock -_0208ABCC: .word UNK_020FF4A4 -_0208ABD0: .word FUN_0208A998 -_0208ABD4: .word 0xFFFFE0FF -_0208ABD8: .word 0x04001000 -_0208ABDC: .word gMain + 0x60 -_0208ABE0: .word 0x04000050 -_0208ABE4: .word 0x04001050 -_0208ABE8: .word 0xFFFF1FFF -_0208ABEC: .word UNK_020FF4D8 -_0208ABF0: .word UNK_020FF4AC -_0208ABF4: .word UNK_020FF4BC -_0208ABF8: .word 0x000001F7 -_0208ABFC: .word 0x00006C21 -_0208AC00: .word UNK_020FF49C -_0208AC04: .word 0x04000130 -_0208AC08: .word 0x027FFFA8 -_0208AC0C: .word 0x00002FFF -_0208AC10: .word 0x00007FFF + diff --git a/arm9/global.inc b/arm9/global.inc index 0190b134..c391a7a0 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8519,3 +8519,10 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon +.extern UNK_020FF49C +.extern UNK_020FF4A4 +.extern UNK_020FF4AC +.extern UNK_020FF4BC +.extern UNK_020FF4D8 +.extern sErrorMessagePrinterLock +.extern FUN_0208A998 diff --git a/arm9/src/unk_0208A998_c.c b/arm9/src/unk_0208A998_c.c new file mode 100644 index 00000000..bbff614b --- /dev/null +++ b/arm9/src/unk_0208A998_c.c @@ -0,0 +1,414 @@ +#include "global.h" +#include "heap.h" +#include "SPI_pm.h" +#include "game_init.h" +#include "msgdata.h" +#include "text.h" + + +const u8 UNK_020FF49C[8] = {0x00, 0x03, 0x03, 0x1a, 0x12, 0x01, 0x23, 0x00}; + +const u8 UNK_020FF4A4[8] = {0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; + + + + +const u8 UNK_020FF4AC[16] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00}; + + +const u8 UNK_020FF4BC[28] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +const u8 UNK_020FF4D8[40] = { + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +u32 sErrorMessagePrinterLock; + + +extern void FUN_0200E3A0(PMLCDTarget, int); +extern void FUN_0201E6D8(); +extern void FUN_0201E7A0(); +extern void FUN_0201E66C(u32 *param0); +extern u32 FUN_02016B94(u32 param0); +extern void FUN_02016BBC(u32 *param0); +extern void FUN_02016C18(u32 param0, u32 param1, u32 *param2, u32 param3); +extern void FUN_02018744(u32 param0, u32 param1); +extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); +extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); +extern void FUN_02017FE4(u32 param0, u32 param1); +extern void FUN_02019150(u32 param0, u32 *param1, u32 *param2); +extern void FUN_020196F4(u32 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); +extern void FUN_0201E788(); +extern void FUN_0200E394(u32 param0); +extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); +extern void FUN_02032DAC(); +extern BOOL FUN_0202FB80(void); +extern BOOL FUN_02033678(void); +extern void FUN_02019178(u32 *param0); +extern void FUN_0201E740(); + + + + +THUMB_FUNC void FUN_0208A998() { + *(vu32 *)HW_INTR_CHECK_BUF |= 1; + + MI_WaitDma(3); +} + + + + +// thumb_func_start PrintErrorMessageAndReset +// PrintErrorMessageAndReset: ; 0x0208A9B8 +// push {r4-r7, lr} +// sub sp, #0x24 +// ldr r0, _0208ABC8 ; =sErrorMessagePrinterLock +// ldr r1, [r0, #0x0] +// cmp r1, #0x1 +// bne _0208A9C6 +// b _0208ABC4 +// _0208A9C6: +// mov r1, #0x1 +// str r1, [r0, #0x0] +// mov r0, #0x0 +// bl OS_GetInitArenaHi +// add r1, r0, #0x0 +// mov r0, #0x0 +// bl OS_SetArenaHi +// mov r0, #0x0 +// bl OS_GetInitArenaLo +// add r1, r0, #0x0 +// mov r0, #0x0 +// bl OS_SetArenaLo +// mov r1, #0x1 +// ldr r0, _0208ABCC ; =UNK_020FF4A4 +// add r2, r1, #0x0 +// mov r3, #0x0 +// bl FUN_020166C8 +// mov r0, #0x0 +// add r1, r0, #0x0 +// bl FUN_0200E3A0 +// mov r0, #0x1 +// mov r1, #0x0 +// bl FUN_0200E3A0 +// mov r0, #0x1 +// bl OS_DisableIrqMask +// ldr r1, _0208ABD0 ; =FUN_0208A998 +// mov r0, #0x1 +// bl OS_SetIrqFunction +// mov r0, #0x1 +// bl OS_EnableIrqMask +// mov r0, #0x0 +// add r1, r0, #0x0 +// bl Main_SetVBlankIntrCB +// mov r0, #0x0 +// add r1, r0, #0x0 +// bl FUN_02015F34 +// bl FUN_0201E6D8 +// bl FUN_0201E740 +// mov r2, #0x1 +// lsl r2, r2, #0x1a +// ldr r1, [r2, #0x0] +// ldr r0, _0208ABD4 ; =0xFFFFE0FF +// and r1, r0 +// str r1, [r2, #0x0] +// ldr r2, _0208ABD8 ; =0x04001000 +// ldr r1, [r2, #0x0] +// and r0, r1 +// str r0, [r2, #0x0] +// mov r0, #0x4 +// mov r1, #0x8 +// bl FUN_0201669C +// ldr r0, _0208ABDC ; =gMain + 0x60 +// mov r1, #0x0 +// strb r1, [r0, #0x5] +// bl FUN_0201E7A0 +// ldr r3, _0208ABE0 ; =0x04000050 +// mov r0, #0x0 +// strh r0, [r3, #0x0] +// ldr r2, _0208ABE4 ; =0x04001050 +// sub r3, #0x50 +// strh r0, [r2, #0x0] +// ldr r1, [r3, #0x0] +// ldr r0, _0208ABE8 ; =0xFFFF1FFF +// sub r2, #0x50 +// and r1, r0 +// str r1, [r3, #0x0] +// ldr r1, [r2, #0x0] +// and r0, r1 +// str r0, [r2, #0x0] +// ldr r0, _0208ABEC ; =UNK_020FF4D8 +// bl FUN_0201E66C +// mov r0, #0x0 +// bl FUN_02016B94 +// str r0, [sp, #0x10] +// ldr r0, _0208ABF0 ; =UNK_020FF4AC +// bl FUN_02016BBC +// mov r1, #0x0 +// ldr r0, [sp, #0x10] +// ldr r2, _0208ABF4 ; =UNK_020FF4BC +// add r3, r1, #0x0 +// bl FUN_02016C18 +// ldr r0, [sp, #0x10] +// mov r1, #0x0 +// bl FUN_02018744 +// mov r1, #0x0 +// str r1, [sp, #0x0] +// ldr r0, [sp, #0x10] +// ldr r2, _0208ABF8 ; =0x000001F7 +// mov r3, #0x2 +// str r1, [sp, #0x4] +// bl FUN_0200CB00 +// mov r0, #0x0 +// mov r1, #0x20 +// add r2, r0, #0x0 +// bl FUN_02002ED0 +// mov r0, #0x0 +// mov r1, #0x20 +// add r2, r0, #0x0 +// add r3, r0, #0x0 +// bl FUN_02017F18 +// ldr r1, _0208ABFC ; =0x00006C21 +// mov r0, #0x0 +// bl FUN_02017FE4 +// ldr r1, _0208ABFC ; =0x00006C21 +// mov r0, #0x4 +// bl FUN_02017FE4 +// mov r0, #0x1 +// mov r1, #0x1a +// mov r2, #0xc8 +// mov r3, #0x0 +// bl NewMsgDataFromNarc +// str r0, [sp, #0xc] +// mov r0, #0x6 +// lsl r0, r0, #0x6 +// mov r1, #0x0 +// bl String_ctor +// add r4, r0, #0x0 +// bl FUN_0201BD5C +// ldr r0, [sp, #0x10] +// ldr r2, _0208AC00 ; =UNK_020FF49C +// add r1, sp, #0x14 +// bl FUN_02019150 +// mov r0, #0xd0 +// str r0, [sp, #0x0] +// mov r0, #0x90 +// mov r2, #0x0 +// str r0, [sp, #0x4] +// add r0, sp, #0x14 +// mov r1, #0xf +// add r3, r2, #0x0 +// bl FUN_020196F4 +// ldr r2, _0208ABF8 ; =0x000001F7 +// add r0, sp, #0x14 +// mov r1, #0x0 +// mov r3, #0x2 +// bl FUN_0200CCA4 +// ldr r0, [sp, #0xc] +// mov r1, #0x3 +// add r2, r4, #0x0 +// bl ReadMsgDataIntoString +// mov r1, #0x0 +// str r1, [sp, #0x0] +// str r1, [sp, #0x4] +// add r0, sp, #0x14 +// add r2, r4, #0x0 +// add r3, r1, #0x0 +// str r1, [sp, #0x8] +// bl AddTextPrinterParameterized +// add r0, r4, #0x0 +// bl String_dtor +// bl FUN_0201E788 +// mov r0, #0x0 +// bl FUN_0200E394 +// mov r0, #0x1 +// bl FUN_0200E394 +// mov r0, #0x0 +// mov r1, #0x3f +// mov r2, #0x3 +// bl FUN_0200A274 +// bl FUN_02032DAC +// mov r4, #0x1 +// _0208AB58: +// bl HandleDSLidAction +// bl FUN_0202FB80 +// bl FUN_02033678 +// cmp r0, #0x0 +// bne _0208AB72 +// add r0, r4, #0x0 +// add r1, r4, #0x0 +// bl OS_WaitIrq +// b _0208AB58 +// _0208AB72: +// ldr r5, _0208AC04 ; =0x04000130 +// ldr r4, _0208AC08 ; =0x027FFFA8 +// ldr r7, _0208AC0C ; =0x00002FFF +// mov r6, #0x1 +// _0208AB7A: +// bl HandleDSLidAction +// ldrh r1, [r5, #0x0] +// ldrh r0, [r4, #0x0] +// orr r1, r0 +// ldr r0, _0208AC0C ; =0x00002FFF +// eor r0, r1 +// and r0, r7 +// lsl r0, r0, #0x10 +// lsr r0, r0, #0x10 +// tst r0, r6 +// bne _0208AB9C +// mov r0, #0x1 +// add r1, r0, #0x0 +// bl OS_WaitIrq +// b _0208AB7A +// _0208AB9C: +// ldr r1, _0208AC10 ; =0x00007FFF +// mov r0, #0x0 +// bl FUN_0200E3A0 +// ldr r1, _0208AC10 ; =0x00007FFF +// mov r0, #0x1 +// bl FUN_0200E3A0 +// add r0, sp, #0x14 +// bl FUN_02019178 +// ldr r0, [sp, #0xc] +// bl DestroyMsgData +// ldr r0, [sp, #0x10] +// bl FreeToHeap +// mov r0, #0x0 +// bl OS_ResetSystem +// _0208ABC4: +// add sp, #0x24 +// pop {r4-r7, pc} +// .balign 4 +// _0208ABC8: .word sErrorMessagePrinterLock +// _0208ABCC: .word UNK_020FF4A4 +// _0208ABD0: .word FUN_0208A998 +// _0208ABD4: .word 0xFFFFE0FF +// _0208ABD8: .word 0x04001000 +// _0208ABDC: .word gMain + 0x60 +// _0208ABE0: .word 0x04000050 +// _0208ABE4: .word 0x04001050 +// _0208ABE8: .word 0xFFFF1FFF +// _0208ABEC: .word UNK_020FF4D8 +// _0208ABF0: .word UNK_020FF4AC +// _0208ABF4: .word UNK_020FF4BC +// _0208ABF8: .word 0x000001F7 +// _0208ABFC: .word 0x00006C21 +// _0208AC00: .word UNK_020FF49C +// _0208AC04: .word 0x04000130 +// _0208AC08: .word 0x027FFFA8 +// _0208AC0C: .word 0x00002FFF +// _0208AC10: .word 0x00007FFF + +THUMB_FUNC void PrintErrorMessageAndReset() { + + struct StructPrintErrorMessage { + u32 *unk00; + u32 unk04[4]; + } data; + + if (sErrorMessagePrinterLock != 1) { + sErrorMessagePrinterLock = 1; + OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); + OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); + + + FUN_020166C8(UNK_020FF4A4, 1, 1, 0); + FUN_0200E3A0(PM_LCD_TOP,0); + FUN_0200E3A0(PM_LCD_BOTTOM,0); + + OS_DisableIrqMask(1); + OS_SetIrqFunction(1, &FUN_0208A998); + OS_EnableIrqMask(1); + + + Main_SetVBlankIntrCB(NULL, NULL); + + FUN_02015F34(NULL, NULL); + FUN_0201E6D8(); + FUN_0201E740(); + + + reg_GX_DISPCNT &= 0xFFFFE0FF; + reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; + + FUN_0201669C(4, 8); + + + gMain.unk65 = 0; + FUN_0201E7A0(); + + + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= 0xFFFF1FFF; + reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; + + FUN_0201E66C(UNK_020FF4D8); + data.unk00 = FUN_02016B94(0); + FUN_02016BBC(UNK_020FF4AC); + + FUN_02016C18(data.unk00, 0, UNK_020FF4BC, 0); + FUN_02018744(data.unk00, 0); + + FUN_0200CB00(data.unk00, 0, 503, 2, 0, param5); // don't match + + + FUN_02002ED0(0, 0x20, 0); + FUN_02017F18(0, 0x20, 0, 0); + FUN_02017FE4(0, 0x6C21); + FUN_02017FE4(4, 0x6C21); + + struct MsgData *msg_data = NewMsgDataFromNarc(1, 0x1a, 0xc8, 0); + struct String *str = String_ctor(6 << 6, 0); + + FUN_0201BD5C(); + FUN_02019150(data.unk00, data.unk04, UNK_020FF49C); + FUN_020196F4(data.unk04, 15, 0, 0, 0xd0, 0x90); + FUN_0200CCA4(data.unk04, 0, 0x1f7, 2); + + ReadMsgDataIntoString(msg_data, 3, str); + + AddTextPrinterParameterized((u32)data.unk04, 0, (const u16 *)str, 0, 0, 0, NULL); + + String_dtor(str); + FUN_0201E788(); + FUN_0200E394(0); + FUN_0200E394(1); + FUN_0200A274(0, 0x3f, 3); + FUN_02032DAC(); + + lid:HandleDSLidAction(); + FUN_0202FB80(); + if (!FUN_02033678()) { + OS_WaitIrq(1, 1); + goto lid; + } + + + lid2:HandleDSLidAction(); + if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1)) { + OS_WaitIrq(1,1); + goto lid2; + } + + + FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); + FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); + + FUN_02019178(data.unk04); + + DestroyMsgData(msg_data); + FreeToHeap(data.unk00); + + OS_ResetSystem(0); + } +} \ No newline at end of file -- cgit v1.2.3 From b43341ac3b516d02b07ca8b03b961cceb3026f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 17:31:49 +0100 Subject: match unk_0208A998 --- arm9/arm9.lsf | 1 - arm9/asm/unk_0208A998.s | 13 -- arm9/src/unk_0208A998.c | 146 ++++++++++++++++ arm9/src/unk_0208A998_c.c | 414 ---------------------------------------------- 4 files changed, 146 insertions(+), 428 deletions(-) delete mode 100644 arm9/asm/unk_0208A998.s create mode 100644 arm9/src/unk_0208A998.c delete mode 100644 arm9/src/unk_0208A998_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7741c6d8..1b6a6d66 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -317,7 +317,6 @@ Static arm9 Object unk_0208A258.o Object unk_0208A300.o Object unk_0208A338.o - Object unk_0208A998_c.o Object unk_0208A998.o ### Third-party libraries ### Object unk_0208AC14.o diff --git a/arm9/asm/unk_0208A998.s b/arm9/asm/unk_0208A998.s deleted file mode 100644 index b63ba6d5..00000000 --- a/arm9/asm/unk_0208A998.s +++ /dev/null @@ -1,13 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .rodata - - - .section .bss - .text - - - diff --git a/arm9/src/unk_0208A998.c b/arm9/src/unk_0208A998.c new file mode 100644 index 00000000..2112fbd1 --- /dev/null +++ b/arm9/src/unk_0208A998.c @@ -0,0 +1,146 @@ +#include "unk_0208A998.h" + +const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; + +const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 }; + +const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 }; + +const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 }; + +const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; + +u32 sErrorMessagePrinterLock; + +extern void FUN_0200E3A0(PMLCDTarget, int); +extern void FUN_0201E6D8(); +extern void FUN_0201E7A0(); +extern void FUN_0201E66C(const struct GraphicsBanks *banks); +extern u32 *FUN_02016B94(u32 param0); +extern void FUN_02016BBC(const struct GraphicsModes *modes); +extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); +extern void FUN_02018744(u32 *param0, u32 param1); +extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); +extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); +extern void FUN_02017FE4(u32 param0, u32 param1); +extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); +extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); +extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); +extern void FUN_0201E788(); +extern void FUN_0200E394(u32 param0); +extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); +extern BOOL FUN_02032DAC(void); +extern BOOL FUN_0202FB80(void); +extern BOOL FUN_02033678(void); +extern void FUN_02019178(u32 *param0); +extern void FUN_0201E740(); + +THUMB_FUNC void FUN_0208A998() +{ + *(vu32 *)HW_INTR_CHECK_BUF |= 1; + + MI_WaitDma(3); +} + +THUMB_FUNC void PrintErrorMessageAndReset() +{ + + u32 *ptr; + u32 buf[4]; + + if (sErrorMessagePrinterLock != 1) + { + sErrorMessagePrinterLock = 1; + OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); + OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); + + FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0); + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + OS_DisableIrqMask(1); + OS_SetIrqFunction(1, &FUN_0208A998); + OS_EnableIrqMask(1); + + Main_SetVBlankIntrCB(NULL, NULL); + + FUN_02015F34(NULL, NULL); + FUN_0201E6D8(); + FUN_0201E740(); + + reg_GX_DISPCNT &= 0xFFFFE0FF; + reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; + + FUN_0201669C(4, 8); + + gMain.unk65 = 0; + FUN_0201E7A0(); + + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= 0xFFFF1FFF; + reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; + + FUN_0201E66C(&UNK_020FF4D8); + ptr = FUN_02016B94(0); + FUN_02016BBC(&UNK_020FF4AC); + + FUN_02016C18(ptr, 0, UNK_020FF4BC, 0); + FUN_02018744(ptr, 0); + + FUN_0200CB00(ptr, 0, 503, 2, 0, 0); + + FUN_02002ED0(0, 0x20, 0); + FUN_02017F18(0, 0x20, 0, 0); + FUN_02017FE4(0, 0x6C21); + FUN_02017FE4(4, 0x6C21); + + struct MsgData *msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xc8, 0); + struct String *str = String_ctor(6 << 6, 0); + + FUN_0201BD5C(); + FUN_02019150(ptr, buf, UNK_020FF49C); + FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90); + FUN_0200CCA4(buf, 0, 0x1f7, 2); + + ReadMsgDataIntoString(msg_data, 3, str); + + AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf + + String_dtor(str); + FUN_0201E788(); + FUN_0200E394(0); + FUN_0200E394(1); + FUN_0200A274(0, 0x3f, 3); + FUN_02032DAC(); + + lid: + HandleDSLidAction(); + FUN_0202FB80(); + if (!FUN_02033678()) + { + OS_WaitIrq(1, 1); + goto lid; + } + + + lid2: + HandleDSLidAction(); + if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1)) + { + OS_WaitIrq(1, 1); + goto lid2; + } + + FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); + FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); + + FUN_02019178(buf); + + DestroyMsgData(msg_data); + FreeToHeap(ptr); + + OS_ResetSystem(0); + } +} \ No newline at end of file diff --git a/arm9/src/unk_0208A998_c.c b/arm9/src/unk_0208A998_c.c deleted file mode 100644 index bbff614b..00000000 --- a/arm9/src/unk_0208A998_c.c +++ /dev/null @@ -1,414 +0,0 @@ -#include "global.h" -#include "heap.h" -#include "SPI_pm.h" -#include "game_init.h" -#include "msgdata.h" -#include "text.h" - - -const u8 UNK_020FF49C[8] = {0x00, 0x03, 0x03, 0x1a, 0x12, 0x01, 0x23, 0x00}; - -const u8 UNK_020FF4A4[8] = {0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; - - - - -const u8 UNK_020FF4AC[16] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00}; - - -const u8 UNK_020FF4BC[28] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - - -const u8 UNK_020FF4D8[40] = { - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -u32 sErrorMessagePrinterLock; - - -extern void FUN_0200E3A0(PMLCDTarget, int); -extern void FUN_0201E6D8(); -extern void FUN_0201E7A0(); -extern void FUN_0201E66C(u32 *param0); -extern u32 FUN_02016B94(u32 param0); -extern void FUN_02016BBC(u32 *param0); -extern void FUN_02016C18(u32 param0, u32 param1, u32 *param2, u32 param3); -extern void FUN_02018744(u32 param0, u32 param1); -extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); -extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); -extern void FUN_02017FE4(u32 param0, u32 param1); -extern void FUN_02019150(u32 param0, u32 *param1, u32 *param2); -extern void FUN_020196F4(u32 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); -extern void FUN_0201E788(); -extern void FUN_0200E394(u32 param0); -extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); -extern void FUN_02032DAC(); -extern BOOL FUN_0202FB80(void); -extern BOOL FUN_02033678(void); -extern void FUN_02019178(u32 *param0); -extern void FUN_0201E740(); - - - - -THUMB_FUNC void FUN_0208A998() { - *(vu32 *)HW_INTR_CHECK_BUF |= 1; - - MI_WaitDma(3); -} - - - - -// thumb_func_start PrintErrorMessageAndReset -// PrintErrorMessageAndReset: ; 0x0208A9B8 -// push {r4-r7, lr} -// sub sp, #0x24 -// ldr r0, _0208ABC8 ; =sErrorMessagePrinterLock -// ldr r1, [r0, #0x0] -// cmp r1, #0x1 -// bne _0208A9C6 -// b _0208ABC4 -// _0208A9C6: -// mov r1, #0x1 -// str r1, [r0, #0x0] -// mov r0, #0x0 -// bl OS_GetInitArenaHi -// add r1, r0, #0x0 -// mov r0, #0x0 -// bl OS_SetArenaHi -// mov r0, #0x0 -// bl OS_GetInitArenaLo -// add r1, r0, #0x0 -// mov r0, #0x0 -// bl OS_SetArenaLo -// mov r1, #0x1 -// ldr r0, _0208ABCC ; =UNK_020FF4A4 -// add r2, r1, #0x0 -// mov r3, #0x0 -// bl FUN_020166C8 -// mov r0, #0x0 -// add r1, r0, #0x0 -// bl FUN_0200E3A0 -// mov r0, #0x1 -// mov r1, #0x0 -// bl FUN_0200E3A0 -// mov r0, #0x1 -// bl OS_DisableIrqMask -// ldr r1, _0208ABD0 ; =FUN_0208A998 -// mov r0, #0x1 -// bl OS_SetIrqFunction -// mov r0, #0x1 -// bl OS_EnableIrqMask -// mov r0, #0x0 -// add r1, r0, #0x0 -// bl Main_SetVBlankIntrCB -// mov r0, #0x0 -// add r1, r0, #0x0 -// bl FUN_02015F34 -// bl FUN_0201E6D8 -// bl FUN_0201E740 -// mov r2, #0x1 -// lsl r2, r2, #0x1a -// ldr r1, [r2, #0x0] -// ldr r0, _0208ABD4 ; =0xFFFFE0FF -// and r1, r0 -// str r1, [r2, #0x0] -// ldr r2, _0208ABD8 ; =0x04001000 -// ldr r1, [r2, #0x0] -// and r0, r1 -// str r0, [r2, #0x0] -// mov r0, #0x4 -// mov r1, #0x8 -// bl FUN_0201669C -// ldr r0, _0208ABDC ; =gMain + 0x60 -// mov r1, #0x0 -// strb r1, [r0, #0x5] -// bl FUN_0201E7A0 -// ldr r3, _0208ABE0 ; =0x04000050 -// mov r0, #0x0 -// strh r0, [r3, #0x0] -// ldr r2, _0208ABE4 ; =0x04001050 -// sub r3, #0x50 -// strh r0, [r2, #0x0] -// ldr r1, [r3, #0x0] -// ldr r0, _0208ABE8 ; =0xFFFF1FFF -// sub r2, #0x50 -// and r1, r0 -// str r1, [r3, #0x0] -// ldr r1, [r2, #0x0] -// and r0, r1 -// str r0, [r2, #0x0] -// ldr r0, _0208ABEC ; =UNK_020FF4D8 -// bl FUN_0201E66C -// mov r0, #0x0 -// bl FUN_02016B94 -// str r0, [sp, #0x10] -// ldr r0, _0208ABF0 ; =UNK_020FF4AC -// bl FUN_02016BBC -// mov r1, #0x0 -// ldr r0, [sp, #0x10] -// ldr r2, _0208ABF4 ; =UNK_020FF4BC -// add r3, r1, #0x0 -// bl FUN_02016C18 -// ldr r0, [sp, #0x10] -// mov r1, #0x0 -// bl FUN_02018744 -// mov r1, #0x0 -// str r1, [sp, #0x0] -// ldr r0, [sp, #0x10] -// ldr r2, _0208ABF8 ; =0x000001F7 -// mov r3, #0x2 -// str r1, [sp, #0x4] -// bl FUN_0200CB00 -// mov r0, #0x0 -// mov r1, #0x20 -// add r2, r0, #0x0 -// bl FUN_02002ED0 -// mov r0, #0x0 -// mov r1, #0x20 -// add r2, r0, #0x0 -// add r3, r0, #0x0 -// bl FUN_02017F18 -// ldr r1, _0208ABFC ; =0x00006C21 -// mov r0, #0x0 -// bl FUN_02017FE4 -// ldr r1, _0208ABFC ; =0x00006C21 -// mov r0, #0x4 -// bl FUN_02017FE4 -// mov r0, #0x1 -// mov r1, #0x1a -// mov r2, #0xc8 -// mov r3, #0x0 -// bl NewMsgDataFromNarc -// str r0, [sp, #0xc] -// mov r0, #0x6 -// lsl r0, r0, #0x6 -// mov r1, #0x0 -// bl String_ctor -// add r4, r0, #0x0 -// bl FUN_0201BD5C -// ldr r0, [sp, #0x10] -// ldr r2, _0208AC00 ; =UNK_020FF49C -// add r1, sp, #0x14 -// bl FUN_02019150 -// mov r0, #0xd0 -// str r0, [sp, #0x0] -// mov r0, #0x90 -// mov r2, #0x0 -// str r0, [sp, #0x4] -// add r0, sp, #0x14 -// mov r1, #0xf -// add r3, r2, #0x0 -// bl FUN_020196F4 -// ldr r2, _0208ABF8 ; =0x000001F7 -// add r0, sp, #0x14 -// mov r1, #0x0 -// mov r3, #0x2 -// bl FUN_0200CCA4 -// ldr r0, [sp, #0xc] -// mov r1, #0x3 -// add r2, r4, #0x0 -// bl ReadMsgDataIntoString -// mov r1, #0x0 -// str r1, [sp, #0x0] -// str r1, [sp, #0x4] -// add r0, sp, #0x14 -// add r2, r4, #0x0 -// add r3, r1, #0x0 -// str r1, [sp, #0x8] -// bl AddTextPrinterParameterized -// add r0, r4, #0x0 -// bl String_dtor -// bl FUN_0201E788 -// mov r0, #0x0 -// bl FUN_0200E394 -// mov r0, #0x1 -// bl FUN_0200E394 -// mov r0, #0x0 -// mov r1, #0x3f -// mov r2, #0x3 -// bl FUN_0200A274 -// bl FUN_02032DAC -// mov r4, #0x1 -// _0208AB58: -// bl HandleDSLidAction -// bl FUN_0202FB80 -// bl FUN_02033678 -// cmp r0, #0x0 -// bne _0208AB72 -// add r0, r4, #0x0 -// add r1, r4, #0x0 -// bl OS_WaitIrq -// b _0208AB58 -// _0208AB72: -// ldr r5, _0208AC04 ; =0x04000130 -// ldr r4, _0208AC08 ; =0x027FFFA8 -// ldr r7, _0208AC0C ; =0x00002FFF -// mov r6, #0x1 -// _0208AB7A: -// bl HandleDSLidAction -// ldrh r1, [r5, #0x0] -// ldrh r0, [r4, #0x0] -// orr r1, r0 -// ldr r0, _0208AC0C ; =0x00002FFF -// eor r0, r1 -// and r0, r7 -// lsl r0, r0, #0x10 -// lsr r0, r0, #0x10 -// tst r0, r6 -// bne _0208AB9C -// mov r0, #0x1 -// add r1, r0, #0x0 -// bl OS_WaitIrq -// b _0208AB7A -// _0208AB9C: -// ldr r1, _0208AC10 ; =0x00007FFF -// mov r0, #0x0 -// bl FUN_0200E3A0 -// ldr r1, _0208AC10 ; =0x00007FFF -// mov r0, #0x1 -// bl FUN_0200E3A0 -// add r0, sp, #0x14 -// bl FUN_02019178 -// ldr r0, [sp, #0xc] -// bl DestroyMsgData -// ldr r0, [sp, #0x10] -// bl FreeToHeap -// mov r0, #0x0 -// bl OS_ResetSystem -// _0208ABC4: -// add sp, #0x24 -// pop {r4-r7, pc} -// .balign 4 -// _0208ABC8: .word sErrorMessagePrinterLock -// _0208ABCC: .word UNK_020FF4A4 -// _0208ABD0: .word FUN_0208A998 -// _0208ABD4: .word 0xFFFFE0FF -// _0208ABD8: .word 0x04001000 -// _0208ABDC: .word gMain + 0x60 -// _0208ABE0: .word 0x04000050 -// _0208ABE4: .word 0x04001050 -// _0208ABE8: .word 0xFFFF1FFF -// _0208ABEC: .word UNK_020FF4D8 -// _0208ABF0: .word UNK_020FF4AC -// _0208ABF4: .word UNK_020FF4BC -// _0208ABF8: .word 0x000001F7 -// _0208ABFC: .word 0x00006C21 -// _0208AC00: .word UNK_020FF49C -// _0208AC04: .word 0x04000130 -// _0208AC08: .word 0x027FFFA8 -// _0208AC0C: .word 0x00002FFF -// _0208AC10: .word 0x00007FFF - -THUMB_FUNC void PrintErrorMessageAndReset() { - - struct StructPrintErrorMessage { - u32 *unk00; - u32 unk04[4]; - } data; - - if (sErrorMessagePrinterLock != 1) { - sErrorMessagePrinterLock = 1; - OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); - - - FUN_020166C8(UNK_020FF4A4, 1, 1, 0); - FUN_0200E3A0(PM_LCD_TOP,0); - FUN_0200E3A0(PM_LCD_BOTTOM,0); - - OS_DisableIrqMask(1); - OS_SetIrqFunction(1, &FUN_0208A998); - OS_EnableIrqMask(1); - - - Main_SetVBlankIntrCB(NULL, NULL); - - FUN_02015F34(NULL, NULL); - FUN_0201E6D8(); - FUN_0201E740(); - - - reg_GX_DISPCNT &= 0xFFFFE0FF; - reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; - - FUN_0201669C(4, 8); - - - gMain.unk65 = 0; - FUN_0201E7A0(); - - - reg_G2_BLDCNT = 0; - reg_G2S_DB_BLDCNT = 0; - reg_GX_DISPCNT &= 0xFFFF1FFF; - reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; - - FUN_0201E66C(UNK_020FF4D8); - data.unk00 = FUN_02016B94(0); - FUN_02016BBC(UNK_020FF4AC); - - FUN_02016C18(data.unk00, 0, UNK_020FF4BC, 0); - FUN_02018744(data.unk00, 0); - - FUN_0200CB00(data.unk00, 0, 503, 2, 0, param5); // don't match - - - FUN_02002ED0(0, 0x20, 0); - FUN_02017F18(0, 0x20, 0, 0); - FUN_02017FE4(0, 0x6C21); - FUN_02017FE4(4, 0x6C21); - - struct MsgData *msg_data = NewMsgDataFromNarc(1, 0x1a, 0xc8, 0); - struct String *str = String_ctor(6 << 6, 0); - - FUN_0201BD5C(); - FUN_02019150(data.unk00, data.unk04, UNK_020FF49C); - FUN_020196F4(data.unk04, 15, 0, 0, 0xd0, 0x90); - FUN_0200CCA4(data.unk04, 0, 0x1f7, 2); - - ReadMsgDataIntoString(msg_data, 3, str); - - AddTextPrinterParameterized((u32)data.unk04, 0, (const u16 *)str, 0, 0, 0, NULL); - - String_dtor(str); - FUN_0201E788(); - FUN_0200E394(0); - FUN_0200E394(1); - FUN_0200A274(0, 0x3f, 3); - FUN_02032DAC(); - - lid:HandleDSLidAction(); - FUN_0202FB80(); - if (!FUN_02033678()) { - OS_WaitIrq(1, 1); - goto lid; - } - - - lid2:HandleDSLidAction(); - if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1)) { - OS_WaitIrq(1,1); - goto lid2; - } - - - FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); - FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); - - FUN_02019178(data.unk04); - - DestroyMsgData(msg_data); - FreeToHeap(data.unk00); - - OS_ResetSystem(0); - } -} \ No newline at end of file -- cgit v1.2.3 From bd4835f73f7e9f12eb8e3bf6ba2ca70edccd4c8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 19:21:39 +0100 Subject: rename --- arm9/arm9.lsf | 2 +- arm9/global.inc | 8 +-- arm9/src/error_message_reset.c | 146 +++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0208A998.c | 146 ----------------------------------------- 4 files changed, 148 insertions(+), 154 deletions(-) create mode 100644 arm9/src/error_message_reset.c delete mode 100644 arm9/src/unk_0208A998.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 1b6a6d66..9bd6cb07 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -317,7 +317,7 @@ Static arm9 Object unk_0208A258.o Object unk_0208A300.o Object unk_0208A338.o - Object unk_0208A998.o + Object error_message_reset.o ### Third-party libraries ### Object unk_0208AC14.o Object custom_allocator.o diff --git a/arm9/global.inc b/arm9/global.inc index eb2a9be3..d269aed4 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8518,10 +8518,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern UNK_020FF49C -.extern UNK_020FF4A4 -.extern UNK_020FF4AC -.extern UNK_020FF4BC -.extern UNK_020FF4D8 -.extern sErrorMessagePrinterLock -.extern FUN_0208A998 + diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c new file mode 100644 index 00000000..bbab7899 --- /dev/null +++ b/arm9/src/error_message_reset.c @@ -0,0 +1,146 @@ +#include "error_message_reset.h" + +const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; + +const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 }; + +const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 }; + +const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 }; + +const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; + +u32 sErrorMessagePrinterLock; + +extern void FUN_0200E3A0(PMLCDTarget, int); +extern void FUN_0201E6D8(); +extern void FUN_0201E7A0(); +extern void FUN_0201E66C(const struct GraphicsBanks *banks); +extern u32 *FUN_02016B94(u32 param0); +extern void FUN_02016BBC(const struct GraphicsModes *modes); +extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); +extern void FUN_02018744(u32 *param0, u32 param1); +extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); +extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); +extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); +extern void FUN_02017FE4(u32 param0, u32 param1); +extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); +extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); +extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); +extern void FUN_0201E788(); +extern void FUN_0200E394(u32 param0); +extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); +extern BOOL FUN_02032DAC(void); +extern BOOL FUN_0202FB80(void); +extern BOOL FUN_02033678(void); +extern void FUN_02019178(u32 *param0); +extern void FUN_0201E740(); + +THUMB_FUNC void VBlankHandler() +{ + *(vu32 *)HW_INTR_CHECK_BUF |= 1; + + MI_WaitDma(3); +} + +THUMB_FUNC void PrintErrorMessageAndReset() +{ + + u32 *ptr; + u32 buf[4]; + + if (sErrorMessagePrinterLock != 1) + { + sErrorMessagePrinterLock = 1; + OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); + OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); + + FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0); + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + OS_DisableIrqMask(1); + OS_SetIrqFunction(1, &VBlankHandler); + OS_EnableIrqMask(1); + + Main_SetVBlankIntrCB(NULL, NULL); + + FUN_02015F34(NULL, NULL); + FUN_0201E6D8(); + FUN_0201E740(); + + reg_GX_DISPCNT &= 0xFFFFE0FF; + reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; + + FUN_0201669C(4, 8); + + gMain.unk65 = 0; + FUN_0201E7A0(); + + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= 0xFFFF1FFF; + reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; + + FUN_0201E66C(&UNK_020FF4D8); + ptr = FUN_02016B94(0); + FUN_02016BBC(&UNK_020FF4AC); + + FUN_02016C18(ptr, 0, UNK_020FF4BC, 0); + FUN_02018744(ptr, 0); + + FUN_0200CB00(ptr, 0, 503, 2, 0, 0); + + FUN_02002ED0(0, 0x20, 0); + FUN_02017F18(0, 0x20, 0, 0); + FUN_02017FE4(0, 0x6C21); + FUN_02017FE4(4, 0x6C21); + + struct MsgData *msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xc8, 0); + struct String *str = String_ctor(6 << 6, 0); + + FUN_0201BD5C(); + FUN_02019150(ptr, buf, UNK_020FF49C); + FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90); + FUN_0200CCA4(buf, 0, 0x1f7, 2); + + ReadMsgDataIntoString(msg_data, 3, str); + + AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf + + String_dtor(str); + FUN_0201E788(); + FUN_0200E394(0); + FUN_0200E394(1); + FUN_0200A274(0, 0x3f, 3); + FUN_02032DAC(); + + lid: + HandleDSLidAction(); + FUN_0202FB80(); + if (!FUN_02033678()) + { + OS_WaitIrq(1, 1); + goto lid; + } + + + lid2: + HandleDSLidAction(); + if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1)) + { + OS_WaitIrq(1, 1); + goto lid2; + } + + FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); + FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); + + FUN_02019178(buf); + + DestroyMsgData(msg_data); + FreeToHeap(ptr); + + OS_ResetSystem(0); + } +} \ No newline at end of file diff --git a/arm9/src/unk_0208A998.c b/arm9/src/unk_0208A998.c deleted file mode 100644 index 2112fbd1..00000000 --- a/arm9/src/unk_0208A998.c +++ /dev/null @@ -1,146 +0,0 @@ -#include "unk_0208A998.h" - -const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; - -const u32 UNK_020FF4A4[2] = { 0x00020000, 0x00000000 }; - -const struct GraphicsModes UNK_020FF4AC = { mode1 : 1 }; - -const u32 UNK_020FF4BC[7] = { 0x00, 0x00, 0x0800, 0x00, 0x06000001, 0x0100, 0x00 }; - -const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; - -u32 sErrorMessagePrinterLock; - -extern void FUN_0200E3A0(PMLCDTarget, int); -extern void FUN_0201E6D8(); -extern void FUN_0201E7A0(); -extern void FUN_0201E66C(const struct GraphicsBanks *banks); -extern u32 *FUN_02016B94(u32 param0); -extern void FUN_02016BBC(const struct GraphicsModes *modes); -extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); -extern void FUN_02018744(u32 *param0, u32 param1); -extern void FUN_0200CB00(u32 *param0, u32 param1, u32 param2, u32 param3, u8 param4, u32 param5); -extern void FUN_02002ED0(u32 param0, u32 param1, u32 param2); -extern void FUN_02017F18(u32 param0, u32 param1, u32 param2, u32 param3); -extern void FUN_02017FE4(u32 param0, u32 param1); -extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); -extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); -extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); -extern void FUN_0201E788(); -extern void FUN_0200E394(u32 param0); -extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); -extern BOOL FUN_02032DAC(void); -extern BOOL FUN_0202FB80(void); -extern BOOL FUN_02033678(void); -extern void FUN_02019178(u32 *param0); -extern void FUN_0201E740(); - -THUMB_FUNC void FUN_0208A998() -{ - *(vu32 *)HW_INTR_CHECK_BUF |= 1; - - MI_WaitDma(3); -} - -THUMB_FUNC void PrintErrorMessageAndReset() -{ - - u32 *ptr; - u32 buf[4]; - - if (sErrorMessagePrinterLock != 1) - { - sErrorMessagePrinterLock = 1; - OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); - - FUN_020166C8((u32 *)UNK_020FF4A4, 1, 1, 0); - FUN_0200E3A0(PM_LCD_TOP, 0); - FUN_0200E3A0(PM_LCD_BOTTOM, 0); - - OS_DisableIrqMask(1); - OS_SetIrqFunction(1, &FUN_0208A998); - OS_EnableIrqMask(1); - - Main_SetVBlankIntrCB(NULL, NULL); - - FUN_02015F34(NULL, NULL); - FUN_0201E6D8(); - FUN_0201E740(); - - reg_GX_DISPCNT &= 0xFFFFE0FF; - reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; - - FUN_0201669C(4, 8); - - gMain.unk65 = 0; - FUN_0201E7A0(); - - reg_G2_BLDCNT = 0; - reg_G2S_DB_BLDCNT = 0; - reg_GX_DISPCNT &= 0xFFFF1FFF; - reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; - - FUN_0201E66C(&UNK_020FF4D8); - ptr = FUN_02016B94(0); - FUN_02016BBC(&UNK_020FF4AC); - - FUN_02016C18(ptr, 0, UNK_020FF4BC, 0); - FUN_02018744(ptr, 0); - - FUN_0200CB00(ptr, 0, 503, 2, 0, 0); - - FUN_02002ED0(0, 0x20, 0); - FUN_02017F18(0, 0x20, 0, 0); - FUN_02017FE4(0, 0x6C21); - FUN_02017FE4(4, 0x6C21); - - struct MsgData *msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xc8, 0); - struct String *str = String_ctor(6 << 6, 0); - - FUN_0201BD5C(); - FUN_02019150(ptr, buf, UNK_020FF49C); - FUN_020196F4(buf, 15, 0, 0, 0xd0, 0x90); - FUN_0200CCA4(buf, 0, 0x1f7, 2); - - ReadMsgDataIntoString(msg_data, 3, str); - - AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf - - String_dtor(str); - FUN_0201E788(); - FUN_0200E394(0); - FUN_0200E394(1); - FUN_0200A274(0, 0x3f, 3); - FUN_02032DAC(); - - lid: - HandleDSLidAction(); - FUN_0202FB80(); - if (!FUN_02033678()) - { - OS_WaitIrq(1, 1); - goto lid; - } - - - lid2: - HandleDSLidAction(); - if (!((u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ 0x2FFF) & 0x2FFF) & 1)) - { - OS_WaitIrq(1, 1); - goto lid2; - } - - FUN_0200E3A0(PM_LCD_TOP, 0x7FFF); - FUN_0200E3A0(PM_LCD_BOTTOM, 0x7FFF); - - FUN_02019178(buf); - - DestroyMsgData(msg_data); - FreeToHeap(ptr); - - OS_ResetSystem(0); - } -} \ No newline at end of file -- cgit v1.2.3 From 3c89d769dca2795130747aae4f395fe5fc2ad888 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 21 Mar 2021 19:23:10 +0100 Subject: use headers --- arm9/global.inc | 1 - arm9/src/error_handling.c | 2 +- arm9/src/error_message_reset.c | 2 +- arm9/src/heap.c | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index d269aed4..337d2c0c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5478,7 +5478,6 @@ .extern FUN_0208A330 .extern FUN_0208A334 .extern FUN_0208A338 -.extern PrintErrorMessageAndReset .extern FUN_0208AC14 .extern FUN_0208AC58 .extern FUN_0208ACEC diff --git a/arm9/src/error_handling.c b/arm9/src/error_handling.c index 9052773f..a01894f6 100644 --- a/arm9/src/error_handling.c +++ b/arm9/src/error_handling.c @@ -1,8 +1,8 @@ #include "global.h" #include "error_handling.h" +#include "error_message_reset.h" extern u32 FUN_02031810(void); -extern void PrintErrorMessageAndReset(void); THUMB_FUNC void ErrorHandling(void) { diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index bbab7899..7d1caccb 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -143,4 +143,4 @@ THUMB_FUNC void PrintErrorMessageAndReset() OS_ResetSystem(0); } -} \ No newline at end of file +} diff --git a/arm9/src/heap.c b/arm9/src/heap.c index c27a40c0..84abc834 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -1,11 +1,11 @@ #include "heap.h" +#include "error_message_reset.h" extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); extern void thunk_FUN_020adc8c(); extern void FUN_020ADDF0(void *ptr1, void *ptr2); extern u32 FUN_02031810(void); -extern void PrintErrorMessageAndReset(void); extern u32 FUN_020ADDC8(void *param0); extern void FUN_020AE82C(u32 param0, void *param1, u32 param2); extern u32 FUN_020ADDC0(void *param0); -- cgit v1.2.3 From e66ec843470977a813aa2309b1914deae218bb0e Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 22 Mar 2021 05:00:02 -0400 Subject: decompile scrcmd_19 --- arm9/asm/scrcmd_19.s | 175 ------------------------------------------------ arm9/asm/unk_02038C78.s | 10 +-- arm9/global.inc | 10 +-- arm9/src/scrcmd_19.c | 89 ++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 185 deletions(-) delete mode 100644 arm9/asm/scrcmd_19.s create mode 100644 arm9/src/scrcmd_19.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_19.s b/arm9/asm/scrcmd_19.s deleted file mode 100644 index 863006b1..00000000 --- a/arm9/asm/scrcmd_19.s +++ /dev/null @@ -1,175 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F450C -UNK_020F450C: ; 0x020F450C - .byte 0x67, 0x00 - - .global UNK_020F450E -UNK_020F450E: ; 0x020F450E - .byte 0x8E, 0x00, 0x65, 0x00, 0x8A, 0x00, 0x66, 0x00, 0x8C, 0x00, 0x63, 0x00, 0x59, 0x01, 0x64, 0x00 - .byte 0x5B, 0x01, 0x68, 0x00, 0x9A, 0x01, 0x69, 0x00, 0x98, 0x01 - - .text - - thumb_func_start FUN_02045268 -FUN_02045268: ; 0x02045268 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r6, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r4, #0x0 - ldr r7, _020452B0 ; =UNK_020F450C - str r0, [sp, #0x0] - add r5, r4, #0x0 -_02045288: - ldr r0, [r6, #0xc] - bl Sav2_Bag_get - lsl r1, r4, #0x2 - ldrh r1, [r7, r1] - mov r2, #0x4 - bl Bag_GetQuantity - add r0, r5, r0 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x7 - blo _02045288 - ldr r0, [sp, #0x0] - strh r5, [r0, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_020452B0: .word UNK_020F450C - - thumb_func_start FUN_020452B4 -FUN_020452B4: ; 0x020452B4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - mov r5, #0x0 - ldr r2, _02045300 ; =UNK_020F450C - strh r5, [r4, #0x0] -_020452E0: - lsl r3, r5, #0x2 - ldrh r1, [r2, r3] - cmp r0, r1 - bne _020452F0 - ldr r0, _02045304 ; =UNK_020F450E - ldrh r0, [r0, r3] - strh r0, [r4, #0x0] - b _020452FA -_020452F0: - add r1, r5, #0x1 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 - cmp r5, #0x7 - blo _020452E0 -_020452FA: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_02045300: .word UNK_020F450C -_02045304: .word UNK_020F450E - - thumb_func_start FUN_02045308 -FUN_02045308: ; 0x02045308 - push {r4-r7, lr} - sub sp, #0xc - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r7, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - str r0, [sp, #0x0] - mov r4, #0x0 - ldr r0, [sp, #0x8] - add r6, r4, #0x0 - strh r4, [r0, #0x0] - ldr r0, [sp, #0x4] - strh r4, [r0, #0x0] -_02045358: - ldr r0, [r7, #0xc] - lsl r5, r4, #0x2 - bl Sav2_Bag_get - ldr r1, _02045394 ; =UNK_020F450C - mov r2, #0x4 - ldrh r1, [r1, r5] - bl Bag_GetQuantity - add r0, r6, r0 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _02045384 - ldr r0, _02045394 ; =UNK_020F450C - ldrh r1, [r0, r5] - ldr r0, [sp, #0x8] - strh r1, [r0, #0x0] - ldr r0, [sp, #0x4] - strh r4, [r0, #0x0] - b _0204538E -_02045384: - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x7 - blo _02045358 -_0204538E: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02045394: .word UNK_020F450C - - thumb_func_start FUN_02045398 -FUN_02045398: ; 0x02045398 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0204539C -FUN_0204539C: ; 0x0204539C - mov r0, #0x0 - bx lr diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 95ca2106..9ef2c97d 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -646,11 +646,11 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02044ED8 .word FUN_0203E4D8 .word FUN_02044F20 - .word FUN_02045268 - .word FUN_02045398 - .word FUN_0204539C - .word FUN_020452B4 - .word FUN_02045308 + .word ScrCmd_Unk01F1 + .word ScrCmd_Unk01F2 + .word ScrCmd_Unk01F3 + .word ScrCmd_Unk01F4 + .word ScrCmd_Unk01F5 .word ScrCmd_countpartymonsatorbelowlevel .word ScrCmd_survivepsn .word FUN_0203BC2C diff --git a/arm9/global.inc b/arm9/global.inc index c8834374..250c218c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3356,11 +3356,11 @@ .extern FUN_02045170 .extern FUN_020451D0 .extern FUN_02045264 -.extern FUN_02045268 -.extern FUN_020452B4 -.extern FUN_02045308 -.extern FUN_02045398 -.extern FUN_0204539C +.extern ScrCmd_Unk01F1 +.extern ScrCmd_Unk01F4 +.extern ScrCmd_Unk01F5 +.extern ScrCmd_Unk01F2 +.extern ScrCmd_Unk01F3 .extern FUN_020453A0 .extern FUN_020453F4 .extern FUN_02045424 diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c new file mode 100644 index 00000000..f0fb9b42 --- /dev/null +++ b/arm9/src/scrcmd_19.c @@ -0,0 +1,89 @@ +#include "scrcmd.h" +#include "bag.h" + +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); + +const u16 UNK_020F450C[7][2] = { + { 0x0067, 0x008E }, + { 0x0065, 0x008A }, + { 0x0066, 0x008C }, + { 0x0063, 0x0159 }, + { 0x0064, 0x015B }, + { 0x0068, 0x019A }, + { 0x0069, 0x0198 }, +}; + +THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx) +{ + struct UnkSavStruct80 * sav_ptr = ctx->unk80; + + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u8 i; + u16 total; + for (i = 0, total = 0; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + } + + *ret_ptr = total; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx) +{ + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = 0; + + for (u16 i = 0; i < 7; i++) + { + if (UNK_020F450C[i][0] == unk) + { + *ret_ptr = UNK_020F450C[i][1]; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 needed_amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr1 = 0; + *ret_ptr2 = 0; + + u8 i = 0; + u16 total = 0; + for (; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + if (total >= needed_amount) + { + *ret_ptr1 = UNK_020F450C[i][0]; + *ret_ptr2 = i; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F2(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F3(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} -- cgit v1.2.3 From 5cdd0564c8d3f5ec074d87f18998c3b40637db0f Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 22 Mar 2021 05:03:32 -0400 Subject: decompile scrcmd_25 --- arm9/asm/scrcmd_25.s | 30 ------------------------------ arm9/asm/unk_02038C78.s | 8 ++++---- arm9/global.inc | 8 ++++---- arm9/src/scrcmd_25.c | 27 +++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 38 deletions(-) delete mode 100644 arm9/asm/scrcmd_25.s create mode 100644 arm9/src/scrcmd_25.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_25.s b/arm9/asm/scrcmd_25.s deleted file mode 100644 index ab6d4787..00000000 --- a/arm9/asm/scrcmd_25.s +++ /dev/null @@ -1,30 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02046010 -FUN_02046010: ; 0x02046010 - push {r3, lr} - bl ErrorHandling - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0204601C -FUN_0204601C: ; 0x0204601C - push {r3, lr} - bl ErrorHandling - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02046028 -FUN_02046028: ; 0x02046028 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0204602C -FUN_0204602C: ; 0x0204602C - mov r0, #0x0 - bx lr diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 9ef2c97d..c876dcc6 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -724,10 +724,10 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203EB48 .word FUN_0203EB88 .word FUN_02042D1C - .word FUN_02046010 - .word FUN_0204601C - .word FUN_02046028 - .word FUN_0204602C + .word ScrCmd_Unk02EF + .word ScrCmd_Unk02F0 + .word ScrCmd_Unk02F1 + .word ScrCmd_Unk02F2 .word FUN_0203C5BC .word FUN_0203C614 .word FUN_0203C680 diff --git a/arm9/global.inc b/arm9/global.inc index 250c218c..cac00e2d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3416,10 +3416,10 @@ .extern FUN_02045F84 .extern FUN_02045F88 .extern FUN_02045FCC -.extern FUN_02046010 -.extern FUN_0204601C -.extern FUN_02046028 -.extern FUN_0204602C +.extern ScrCmd_Unk02EF +.extern ScrCmd_Unk02F0 +.extern ScrCmd_Unk02F1 +.extern ScrCmd_Unk02F2 .extern FUN_02046030 .extern SavArray_Flags_sizeof .extern SavArray_Flags_init diff --git a/arm9/src/scrcmd_25.c b/arm9/src/scrcmd_25.c new file mode 100644 index 00000000..e3638675 --- /dev/null +++ b/arm9/src/scrcmd_25.c @@ -0,0 +1,27 @@ +#include "scrcmd.h" + +THUMB_FUNC BOOL ScrCmd_Unk02EF(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + GF_ASSERT(FALSE); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02F0(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + GF_ASSERT(FALSE); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02F1(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02F2(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} -- cgit v1.2.3 From 9bd613f6243fb50d2f1f9125803fa666d1ad5711 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 22 Mar 2021 05:05:35 -0400 Subject: decompile scrcmd_20 --- arm9/asm/scrcmd_20.s | 56 ------------------------------------------------- arm9/asm/unk_02038C78.s | 2 +- arm9/global.inc | 2 +- arm9/src/scrcmd_20.c | 38 +++++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 58 deletions(-) delete mode 100644 arm9/asm/scrcmd_20.s create mode 100644 arm9/src/scrcmd_20.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_20.s b/arm9/asm/scrcmd_20.s deleted file mode 100644 index 31de1e77..00000000 --- a/arm9/asm/scrcmd_20.s +++ /dev/null @@ -1,56 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F4528 -UNK_020F4528: ; 0x020F4528 - .byte 0xFB, 0x00 - - .global UNK_020F452A -UNK_020F452A: ; 0x020F452A - .byte 0xE8, 0x03, 0x09, 0x01, 0xE8, 0x03, 0x14, 0x01, 0xE8, 0x03, 0x15, 0x01, 0xE8, 0x03, 0xA1, 0x01 - .byte 0xD0, 0x07, 0x81, 0x01, 0xD0, 0x07, 0x92, 0x01, 0xA0, 0x0F, 0x67, 0x01, 0xA0, 0x0F, 0x73, 0x01 - .byte 0x70, 0x17, 0xA0, 0x01, 0x70, 0x17, 0x51, 0x01, 0x70, 0x17, 0x62, 0x01, 0x40, 0x1F, 0x5C, 0x01 - .byte 0x40, 0x1F, 0x6A, 0x01, 0x10, 0x27, 0x5F, 0x01, 0x10, 0x27, 0x54, 0x01, 0x10, 0x27, 0x64, 0x01 - .byte 0x10, 0x27, 0x91, 0x01, 0x98, 0x3A, 0x8B, 0x01, 0x20, 0x4E - - .text - - thumb_func_start FUN_020453A0 -FUN_020453A0: ; 0x020453A0 - push {r4-r6, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - ldr r1, _020453EC ; =UNK_020F4528 - lsl r2, r4, #0x2 - ldrh r1, [r1, r2] - strh r1, [r6, #0x0] - ldr r1, _020453F0 ; =UNK_020F452A - ldrh r1, [r1, r2] - strh r1, [r0, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 -_020453EC: .word UNK_020F4528 -_020453F0: .word UNK_020F452A diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index c876dcc6..d880340e 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -827,7 +827,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203F988 .word FUN_0203F9B0 .word FUN_0203B914 - .word FUN_020453A0 + .word ScrCmd_Unk02A6 .word FUN_0203FA14 .word FUN_02043B54 .word FUN_02043BD0 diff --git a/arm9/global.inc b/arm9/global.inc index cac00e2d..69746e05 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3361,7 +3361,7 @@ .extern ScrCmd_Unk01F5 .extern ScrCmd_Unk01F2 .extern ScrCmd_Unk01F3 -.extern FUN_020453A0 +.extern ScrCmd_Unk02A6 .extern FUN_020453F4 .extern FUN_02045424 .extern FUN_02045438 diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c new file mode 100644 index 00000000..bf4fb7f1 --- /dev/null +++ b/arm9/src/scrcmd_20.c @@ -0,0 +1,38 @@ +#include "scrcmd.h" + +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); + +const u16 UNK_020F452A[19][2] = { + { 0x00FB, 0x03E8 }, + { 0x0109, 0x03E8 }, + { 0x0114, 0x03E8 }, + { 0x0115, 0x03E8 }, + { 0x01A1, 0x07D0 }, + { 0x0181, 0x07D0 }, + { 0x0192, 0x0FA0 }, + { 0x0167, 0x0FA0 }, + { 0x0173, 0x1770 }, + { 0x01A0, 0x1770 }, + { 0x0151, 0x1770 }, + { 0x0162, 0x1F40 }, + { 0x015C, 0x1F40 }, + { 0x016A, 0x2710 }, + { 0x015F, 0x2710 }, + { 0x0154, 0x2710 }, + { 0x0164, 0x2710 }, + { 0x0191, 0x3A98 }, + { 0x018B, 0x4E20 }, +}; + +THUMB_FUNC BOOL ScrCmd_Unk02A6(struct ScriptContext * ctx) +{ + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr1 = UNK_020F452A[idx][0]; + *ret_ptr2 = UNK_020F452A[idx][1]; + + return FALSE; +} -- cgit v1.2.3 From 343729e9c8b63c5804852933df33e743d722ad6b Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 22 Mar 2021 05:50:30 -0400 Subject: decompile scrcmd_15 -> scrcmd_money --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_15.s | 198 ------------------------------------------------ arm9/asm/unk_02038C78.s | 16 ++-- arm9/global.inc | 16 ++-- arm9/src/scrcmd_money.c | 115 ++++++++++++++++++++++++++++ 5 files changed, 132 insertions(+), 215 deletions(-) delete mode 100644 arm9/asm/scrcmd_15.s create mode 100644 arm9/src/scrcmd_money.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9bd6cb07..9b12ab46 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -166,7 +166,7 @@ Static arm9 Object scrcmd_12.o Object scrcmd_13.o Object scrcmd_14.o - Object scrcmd_15.o + Object scrcmd_money.o Object scrcmd_16.o Object scrcmd_17.o Object scrcmd_18_c.o diff --git a/arm9/asm/scrcmd_15.s b/arm9/asm/scrcmd_15.s deleted file mode 100644 index e5630b08..00000000 --- a/arm9/asm/scrcmd_15.s +++ /dev/null @@ -1,198 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02043C6C -FUN_02043C6C: ; 0x02043C6C - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadWord - add r1, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_AddMoney - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02043C90 -FUN_02043C90: ; 0x02043C90 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadWord - add r1, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_SubMoney - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02043CB4 -FUN_02043CB4: ; 0x02043CB4 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl PlayerProfile_SubMoney - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02043CE4 -FUN_02043CE4: ; 0x02043CE4 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadWord - add r4, r0, #0x0 - add r0, r6, #0x0 - bl PlayerProfile_GetMoney - cmp r0, r4 - bhs _02043D20 - mov r0, #0x0 - b _02043D22 -_02043D20: - mov r0, #0x1 -_02043D22: - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02043D28 -FUN_02043D28: ; 0x02043D28 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r6, #0x0 - bl PlayerProfile_GetMoney - cmp r0, r4 - bhs _02043D6E - mov r0, #0x0 - b _02043D70 -_02043D6E: - mov r0, #0x1 -_02043D70: - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02043D78 -FUN_02043D78: ; 0x02043D78 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x27 - bl FUN_02039438 - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - bl MOD05_021E27E8 - str r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02043DC8 -FUN_02043DC8: ; 0x02043DC8 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x27 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E288C - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02043DE0 -FUN_02043DE0: ; 0x02043DE0 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x27 - bl FUN_02039438 - add r1, r0, #0x0 - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r1, [r1, #0x0] - bl MOD05_021E28A0 - mov r0, #0x0 - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index d880340e..53d41e3b 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -260,12 +260,12 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203B724 .word FUN_0203B758 .word FUN_0203B7D8 - .word FUN_02043C6C - .word FUN_02043C90 - .word FUN_02043CE4 - .word FUN_02043D78 - .word FUN_02043DC8 - .word FUN_02043DE0 + .word ScrCmd_GiveMoney + .word ScrCmd_TakeMoneyImmediate + .word ScrCmd_HasEnoughMoneyImmediate + .word ScrCmd_Unk0072 + .word ScrCmd_Unk0073 + .word ScrCmd_Unk0074 .word FUN_02043A44 .word FUN_02043A94 .word FUN_02043AAC @@ -568,7 +568,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203DE4C .word FUN_0203DE58 .word FUN_0203DE80 - .word FUN_02043CB4 + .word ScrCmd_TakeMoneyAddress .word FUN_02043E9C .word FUN_02044120 .word FUN_02044138 @@ -576,7 +576,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02043E50 .word FUN_02043E68 .word FUN_02043EFC - .word FUN_02043D28 + .word ScrCmd_HasEnoughMoneyAddress .word FUN_0203DD50 .word FUN_02044140 .word FUN_02043F50 diff --git a/arm9/global.inc b/arm9/global.inc index 69746e05..057a0ad3 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3292,14 +3292,14 @@ .extern FUN_02043B84 .extern FUN_02043BD0 .extern FUN_02043C28 -.extern FUN_02043C6C -.extern FUN_02043C90 -.extern FUN_02043CB4 -.extern FUN_02043CE4 -.extern FUN_02043D28 -.extern FUN_02043D78 -.extern FUN_02043DC8 -.extern FUN_02043DE0 +.extern ScrCmd_GiveMoney +.extern ScrCmd_TakeMoneyImmediate +.extern ScrCmd_TakeMoneyAddress +.extern ScrCmd_HasEnoughMoneyImmediate +.extern ScrCmd_HasEnoughMoneyAddress +.extern ScrCmd_Unk0072 +.extern ScrCmd_Unk0073 +.extern ScrCmd_Unk0074 .extern FUN_02043E00 .extern FUN_02043E20 .extern FUN_02043E50 diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c new file mode 100644 index 00000000..b61a7ff7 --- /dev/null +++ b/arm9/src/scrcmd_money.c @@ -0,0 +1,115 @@ +#include "scrcmd.h" +#include "player_data.h" + +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); +extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); + +extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); + +extern u32 MOD05_021E27E8(struct UnkSavStruct80* arg, u8, u8); +extern void MOD05_021E288C(u32 *); +extern void MOD05_021E28A0(struct UnkSavStruct80* arg, u32 *); + +THUMB_FUNC BOOL ScrCmd_GiveMoney(struct ScriptContext * ctx) +{ + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + + u32 amount = ScriptReadWord(ctx); + PlayerProfile_AddMoney(player, amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeMoneyImmediate(struct ScriptContext * ctx) +{ + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + + u32 amount = ScriptReadWord(ctx); + PlayerProfile_SubMoney(player, amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeMoneyAddress(struct ScriptContext * ctx) +{ + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + + u32 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + PlayerProfile_SubMoney(player, amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyImmediate(struct ScriptContext * ctx) +{ + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u32 amount = ScriptReadWord(ctx); + u32 money = PlayerProfile_GetMoney(player); + + if (money < amount) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 1; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasEnoughMoneyAddress(struct ScriptContext * ctx) +{ + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u32 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 money = PlayerProfile_GetMoney(player); + + if (money < amount) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 1; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0072(struct ScriptContext * ctx) +{ + struct UnkSavStruct80 * sav_ptr = ctx->unk80; + u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 *unk_ret_ptr = FUN_02039438(sav_ptr, 0x27); + + *unk_ret_ptr = MOD05_021E27E8(ctx->unk80, (u8)unk1, (u8)unk2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0073(struct ScriptContext * ctx) +{ + u32 ** unk = FUN_02039438(ctx->unk80, 0x27); + MOD05_021E288C(*unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0074(struct ScriptContext * ctx) +{ + u32 ** unk = FUN_02039438(ctx->unk80, 0x27); + MOD05_021E28A0(ctx->unk80, *unk); + + return FALSE; +} -- cgit v1.2.3 From fb9ded97a1f966f1e5d389e0332b62fe3422c4e3 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 22 Mar 2021 07:04:41 -0400 Subject: decompile scrcmd_14 -> scrcmd_coins --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_14.s | 267 ------------------------------------------------ arm9/asm/unk_02038C78.s | 20 ++-- arm9/global.inc | 20 ++-- arm9/src/scrcmd_coins.c | 140 +++++++++++++++++++++++++ 5 files changed, 161 insertions(+), 288 deletions(-) delete mode 100644 arm9/asm/scrcmd_14.s create mode 100644 arm9/src/scrcmd_coins.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9b12ab46..d0ea254a 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -165,7 +165,7 @@ Static arm9 Object scrcmd_11.o Object scrcmd_12.o Object scrcmd_13.o - Object scrcmd_14.o + Object scrcmd_coins.o Object scrcmd_money.o Object scrcmd_16.o Object scrcmd_17.o diff --git a/arm9/asm/scrcmd_14.s b/arm9/asm/scrcmd_14.s deleted file mode 100644 index 1fd34357..00000000 --- a/arm9/asm/scrcmd_14.s +++ /dev/null @@ -1,267 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02043A44 -FUN_02043A44: ; 0x02043A44 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x26 - bl FUN_02039438 - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - bl MOD05_021E2950 - str r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02043A94 -FUN_02043A94: ; 0x02043A94 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x26 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E29B4 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02043AAC -FUN_02043AAC: ; 0x02043AAC - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x26 - bl FUN_02039438 - add r1, r0, #0x0 - add r4, #0x80 - ldr r0, [r4, #0x0] - ldr r1, [r1, #0x0] - bl MOD05_021E29C8 - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02043ACC -FUN_02043ACC: ; 0x02043ACC - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl CheckCoins - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02043AFC -FUN_02043AFC: ; 0x02043AFC - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl GiveCoins - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02043B28 -FUN_02043B28: ; 0x02043B28 - push {r3-r5, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r5, #0x0 - bl TakeCoins - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02043B54 -FUN_02043B54: ; 0x02043B54 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r1, r0, #0x0 - ldrh r1, [r1, #0x0] - add r0, r4, #0x0 - bl TakeCoins - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02043B84 -FUN_02043B84: ; 0x02043B84 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - add r0, r5, #0x0 - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - ldr r0, [r5, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadWord - add r4, r0, #0x0 - add r0, r6, #0x0 - bl CheckCoins - cmp r0, r4 - bhs _02043BC8 - mov r0, #0x0 - b _02043BCA -_02043BC8: - mov r0, #0x1 -_02043BCA: - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02043BD0 -FUN_02043BD0: ; 0x02043BD0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - add r0, r4, #0x0 - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - ldr r0, [r4, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - ldrh r5, [r0, #0x0] - add r0, r6, #0x0 - bl CheckCoins - cmp r0, r5 - bhs _02043C1E - mov r0, #0x0 - b _02043C20 -_02043C1E: - mov r0, #0x1 -_02043C20: - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02043C28 -FUN_02043C28: ; 0x02043C28 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetCoinsAddr - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r1, r0, #0x0 - add r0, r6, #0x0 - bl CanGiveCoins - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 53d41e3b..c9a8bdd6 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -266,12 +266,12 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0072 .word ScrCmd_Unk0073 .word ScrCmd_Unk0074 - .word FUN_02043A44 - .word FUN_02043A94 - .word FUN_02043AAC - .word FUN_02043ACC - .word FUN_02043AFC - .word FUN_02043B28 + .word ScrCmd_Unk0075 + .word ScrCmd_Unk0076 + .word ScrCmd_Unk0077 + .word ScrCmd_GetCoins + .word ScrCmd_GiveCoins + .word ScrCmd_TakeCoinsImmediate .word FUN_02045784 .word FUN_020457DC .word FUN_02045834 @@ -777,9 +777,9 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203C58C .word FUN_02040DEC .word FUN_0203F2AC - .word FUN_02043B84 + .word ScrCmd_HasEnoughCoinsImmediate .word FUN_0203F2E4 - .word FUN_02043C28 + .word ScrCmd_CanGiveCoins .word FUN_0203F31C .word ScrCmd_getpartymonlevel .word FUN_0203F348 @@ -829,8 +829,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203B914 .word ScrCmd_Unk02A6 .word FUN_0203FA14 - .word FUN_02043B54 - .word FUN_02043BD0 + .word ScrCmd_TakeCoinsAddress + .word ScrCmd_HasEnoughCoinsAddress .word FUN_0203FA58 .word FUN_0203B7F0 .word FUN_0203FB4C diff --git a/arm9/global.inc b/arm9/global.inc index 057a0ad3..c7d3bd73 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3282,16 +3282,16 @@ .extern FUN_020438D0 .extern FUN_02043918 .extern FUN_020439B4 -.extern FUN_02043A44 -.extern FUN_02043A94 -.extern FUN_02043AAC -.extern FUN_02043ACC -.extern FUN_02043AFC -.extern FUN_02043B28 -.extern FUN_02043B54 -.extern FUN_02043B84 -.extern FUN_02043BD0 -.extern FUN_02043C28 +.extern ScrCmd_Unk0075 +.extern ScrCmd_Unk0076 +.extern ScrCmd_Unk0077 +.extern ScrCmd_GetCoins +.extern ScrCmd_GiveCoins +.extern ScrCmd_TakeCoinsImmediate +.extern ScrCmd_TakeCoinsAddress +.extern ScrCmd_HasEnoughCoinsImmediate +.extern ScrCmd_HasEnoughCoinsAddress +.extern ScrCmd_CanGiveCoins .extern ScrCmd_GiveMoney .extern ScrCmd_TakeMoneyImmediate .extern ScrCmd_TakeMoneyAddress diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c new file mode 100644 index 00000000..de4e993e --- /dev/null +++ b/arm9/src/scrcmd_coins.c @@ -0,0 +1,140 @@ +#include "scrcmd.h" +#include "coins.h" + +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); +extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); + +extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); + +extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8); +extern MOD05_021E29B4(); +extern MOD05_021E29C8(); + +THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + u32 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 ** unk_ret_ptr = FUN_02039438(sav_ptr, 0x26); + + u32 unk3 = MOD05_021E2950(ctx->unk80, (u8)unk1, (u8)unk2); + *unk_ret_ptr = unk3; + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0076(struct ScriptContext * ctx) +{ + u16 ** unk = FUN_02039438(ctx->unk80, 0x26); + MOD05_021E29B4(*unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0077(struct ScriptContext * ctx) +{ + u16 ** unk = FUN_02039438(ctx->unk80, 0x26); + MOD05_021E29C8(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetCoins(struct ScriptContext * ctx) +{ + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = CheckCoins(coins_ptr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveCoins(struct ScriptContext * ctx) +{ + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2); + u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + GiveCoins(coins_ptr, amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeCoinsImmediate(struct ScriptContext * ctx) +{ + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2); + u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + TakeCoins(coins_ptr, amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeCoinsAddress(struct ScriptContext * ctx) +{ + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2); + u16 * amount = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + TakeCoins(coins_ptr, *amount); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasEnoughCoinsImmediate(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + // Created, but discarded. + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(sav_ptr->saveBlock2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u32 amount = ScriptReadWord(ctx); + u16 coins = CheckCoins(coins_ptr); + + if (coins < amount) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 1; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasEnoughCoinsAddress(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2 * sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + // Created, but discarded + struct PlayerData * player = Sav2_PlayerData_GetProfileAddr(sav2); + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(sav_ptr->saveBlock2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 amount = *(u16*)GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 coins = CheckCoins(coins_ptr); + + if (coins < amount) + { + *ret_ptr = 0; + } + else + { + *ret_ptr = 1; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CanGiveCoins(struct ScriptContext * ctx) +{ + u16 * coins_ptr = Sav2_PlayerData_GetCoinsAddr(ctx->unk80->saveBlock2); + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = CanGiveCoins(coins_ptr, amount); + + return FALSE; +} -- cgit v1.2.3 From 3c88114bc0597d92585c7ab663724f799038d175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 23 Mar 2021 09:47:13 +0100 Subject: Decompile unk_0201E66C.s to GX_layers.c --- arm9/arm9.lsf | 2 +- arm9/asm/unk_0200CABC.s | 2 +- arm9/asm/unk_02016B94.s | 40 +++---- arm9/asm/unk_0201B1A8.s | 2 +- arm9/asm/unk_0201E66C.s | 197 ------------------------------- arm9/asm/unk_02022318.s | 2 +- arm9/asm/unk_02033F50.s | 8 +- arm9/asm/unk_02034188.s | 8 +- arm9/asm/unk_02035068.s | 2 +- arm9/asm/unk_02053750.s | 12 +- arm9/asm/unk_0206C700.s | 12 +- arm9/asm/unk_0206DE24.s | 6 +- arm9/asm/unk_0206F3FC.s | 10 +- arm9/asm/unk_02073710.s | 4 +- arm9/asm/unk_020772F0.s | 28 ++--- arm9/asm/unk_02079C70.s | 10 +- arm9/asm/unk_0207C328.s | 4 +- arm9/asm/unk_0207EF6C.s | 2 +- arm9/asm/unk_020859C0.s | 16 +-- arm9/asm/unk_02086084.s | 8 +- arm9/asm/unk_02086414.s | 14 +-- arm9/asm/unk_02086FA8.s | 8 +- arm9/asm/unk_02089498.s | 6 +- arm9/asm/unk_02089960.s | 6 +- arm9/asm/unk_02089D90.s | 8 +- arm9/asm/unk_02089F24.s | 16 +-- arm9/global.inc | 17 ++- arm9/modules/05/asm/mod05_021D74E0.s | 10 +- arm9/modules/05/asm/mod05_021DC0B8.s | 60 +++++----- arm9/modules/05/asm/mod05_021E3444.s | 8 +- arm9/modules/05/asm/module_05.s | 60 +++++----- arm9/modules/06/asm/module_06.s | 26 ++-- arm9/modules/07/asm/module_07.s | 14 +-- arm9/modules/09/asm/module_09.s | 8 +- arm9/modules/11/asm/module_11_thumb1.s | 30 ++--- arm9/modules/11/asm/module_11_thumb2.s | 8 +- arm9/modules/12/asm/module_12.s | 76 ++++++------ arm9/modules/14/asm/module_14.s | 10 +- arm9/modules/15/asm/module_15.s | 8 +- arm9/modules/16/asm/module_16.s | 18 +-- arm9/modules/17/asm/module_17.s | 38 +++--- arm9/modules/18/asm/module_18.s | 64 +++++----- arm9/modules/20/asm/module_20.s | 4 +- arm9/modules/51/asm/module_51.s | 18 +-- arm9/modules/53/asm/module_53.s | 8 +- arm9/modules/54/asm/module_54.s | 8 +- arm9/modules/55/asm/module_55.s | 12 +- arm9/modules/56/asm/module_56.s | 20 ++-- arm9/modules/57/asm/module_57.s | 10 +- arm9/modules/58/asm/module_58.s | 8 +- arm9/modules/59/asm/mod59_021D74E0_asm.s | 6 +- arm9/modules/59/asm/mod59_021D9868.s | 6 +- arm9/modules/60/asm/module_60.s | 10 +- arm9/modules/61/asm/module_61.s | 10 +- arm9/modules/62/asm/module_62.s | 38 +++--- arm9/modules/63/asm/mod63_021D74E0.s | 76 ++++++------ arm9/modules/63/asm/mod63_021D8890.s | 54 ++++----- arm9/modules/63/asm/mod63_021DA640.s | 2 +- arm9/modules/63/asm/mod63_021DAE5C.s | 4 +- arm9/modules/64/asm/module_64.s | 10 +- arm9/modules/65/asm/module_65.s | 24 ++-- arm9/modules/66/asm/module_66.s | 12 +- arm9/modules/67/asm/module_67.s | 10 +- arm9/modules/68/asm/module_68.s | 10 +- arm9/modules/69/asm/module_69.s | 4 +- arm9/modules/70/asm/module_70.s | 2 +- arm9/modules/71/asm/module_71.s | 16 +-- arm9/modules/73/asm/module_73.s | 34 +++--- arm9/modules/74/asm/module_74.s | 10 +- arm9/modules/75/asm/module_75.s | 12 +- arm9/modules/76/asm/module_76.s | 8 +- arm9/modules/77/asm/module_77.s | 24 ++-- arm9/modules/78/asm/module_78.s | 6 +- arm9/modules/80/asm/module_80.s | 52 ++++---- arm9/modules/81/asm/module_81.s | 44 +++---- arm9/modules/82/asm/module_82.s | 24 ++-- arm9/modules/83/asm/module_83.s | 52 ++++---- arm9/modules/84/asm/module_84_thumb1.s | 10 +- arm9/modules/84/asm/module_84_thumb2.s | 22 ++-- arm9/modules/85/asm/module_85.s | 24 ++-- arm9/modules/86/asm/module_86.s | 6 +- arm9/src/GX_layers.c | 110 +++++++++++++++++ arm9/src/error_message_reset.c | 13 +- 83 files changed, 815 insertions(+), 906 deletions(-) delete mode 100644 arm9/asm/unk_0201E66C.s create mode 100644 arm9/src/GX_layers.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d0ea254a..6066b7ca 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -65,7 +65,7 @@ Static arm9 Object unk_0201CC08.o Object unk_0201D040.o Object unk_0201E00C.o - Object unk_0201E66C.o + Object GX_layers.o Object unk_0201E7D8.o Object unk_0201F06C.o Object unk_020208B8.o diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index 0920c2fb..6d593845 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -2463,7 +2463,7 @@ _0200DE40: bl FUN_0201FDEC mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x34 pop {r4-r7, pc} nop diff --git a/arm9/asm/unk_02016B94.s b/arm9/asm/unk_02016B94.s index 61fc9de5..3c92650d 100644 --- a/arm9/asm/unk_02016B94.s +++ b/arm9/asm/unk_02016B94.s @@ -89,8 +89,8 @@ FUN_02016BBC: ; 0x02016BBC asr r0, r0, #0x3 and r0, r1 str r0, [r2, #0x0] - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers pop {r4, pc} nop _02016BF0: .word 0xC7FFFFFF @@ -105,12 +105,12 @@ FUN_02016BF4: ; 0x02016BF4 ldr r1, [r2, #0x4] ldr r2, [r2, #0xc] bl GX_SetGraphicsMode - bl FUN_0201E6D8 + bl GX_DisableEngineALayers pop {r3, pc} _02016C0C: ldr r0, [r2, #0x8] bl GXS_SetGraphicsMode - bl FUN_0201E740 + bl GX_DisableEngineBLayers pop {r3, pc} thumb_func_start FUN_02016C18 @@ -148,7 +148,7 @@ _02016C42: ; jump table (using 16-bit offset) _02016C52: mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldrb r3, [r4, #0x14] ldrb r1, [r4, #0x12] ldrb r0, [r4, #0x11] @@ -193,7 +193,7 @@ _02016CA0: _02016CAA: mov r0, #0x2 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldrb r3, [r4, #0x14] ldrb r1, [r4, #0x12] ldrb r0, [r4, #0x11] @@ -238,7 +238,7 @@ _02016CF8: _02016D02: mov r0, #0x4 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [sp, #0x8] cmp r0, #0x0 beq _02016D18 @@ -324,7 +324,7 @@ _02016D9A: _02016DA4: mov r0, #0x8 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [sp, #0x8] cmp r0, #0x0 beq _02016DBA @@ -410,7 +410,7 @@ _02016E3C: _02016E46: mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldrb r3, [r4, #0x14] ldrb r1, [r4, #0x12] ldrb r0, [r4, #0x11] @@ -455,7 +455,7 @@ _02016E94: _02016E9E: mov r0, #0x2 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldrb r2, [r4, #0x13] ldrb r1, [r4, #0x12] ldrb r0, [r4, #0x11] @@ -500,7 +500,7 @@ _02016EEC: _02016EF6: mov r0, #0x4 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [sp, #0x8] cmp r0, #0x0 beq _02016F0C @@ -586,7 +586,7 @@ _02016F8E: _02016F98: mov r0, #0x8 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [sp, #0x8] cmp r0, #0x0 beq _02016FAE @@ -1958,35 +1958,35 @@ _0201798E: ; jump table (using 16-bit offset) .short _020179D6 - _0201798E - 2; case 7 _0201799E: mov r0, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, pc} _020179A6: mov r0, #0x2 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, pc} _020179AE: mov r0, #0x4 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, pc} _020179B6: mov r0, #0x8 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, pc} _020179BE: mov r0, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, pc} _020179C6: mov r0, #0x2 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, pc} _020179CE: mov r0, #0x4 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, pc} _020179D6: mov r0, #0x8 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _020179DC: pop {r3, pc} .balign 4 diff --git a/arm9/asm/unk_0201B1A8.s b/arm9/asm/unk_0201B1A8.s index baf31fcb..05245bc6 100644 --- a/arm9/asm/unk_0201B1A8.s +++ b/arm9/asm/unk_0201B1A8.s @@ -199,7 +199,7 @@ FUN_0201B314: ; 0x0201B314 push {r3, lr} mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0201B380 ; =0x04000008 mov r1, #0x3 ldrh r2, [r0, #0x0] diff --git a/arm9/asm/unk_0201E66C.s b/arm9/asm/unk_0201E66C.s deleted file mode 100644 index 5f5dcb68..00000000 --- a/arm9/asm/unk_0201E66C.s +++ /dev/null @@ -1,197 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .bss - - .global UNK_021C599C -UNK_021C599C: ; 0x021C599C - .space 0x8 - - .text - - thumb_func_start FUN_0201E66C -FUN_0201E66C: ; 0x0201E66C - push {r4, lr} - add r4, r0, #0x0 - bl GX_ResetBankForBG - bl GX_ResetBankForBGExtPltt - bl GX_ResetBankForSubBG - bl FUN_020C6034 - bl GX_ResetBankForOBJ - bl GX_ResetBankForOBJExtPltt - bl FUN_020C605C - bl GX_ResetBankForSubOBJ - bl GX_ResetBankForTex - bl GX_ResetBankForTexPltt - ldr r0, [r4, #0x0] - bl GX_SetBankForBG - ldr r0, [r4, #0x4] - bl GX_SetBankForBGExtPltt - ldr r0, [r4, #0x8] - bl GX_SetBankForSubBG - ldr r0, [r4, #0xc] - bl GX_SetBankForSubBGExtPltt - ldr r0, [r4, #0x10] - bl GX_SetBankForOBJ - ldr r0, [r4, #0x14] - bl GX_SetBankForOBJExtPltt - ldr r0, [r4, #0x18] - bl GX_SetBankForSubOBJ - ldr r0, [r4, #0x1c] - bl GX_SetBankForSubOBJExtPltt - ldr r0, [r4, #0x20] - bl GX_SetBankForTex - ldr r0, [r4, #0x24] - bl GX_SetBankForTexPltt - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0201E6D8 -FUN_0201E6D8: ; 0x0201E6D8 - ldr r0, _0201E6E0 ; =UNK_021C599C - mov r1, #0x0 - str r1, [r0, #0x4] - bx lr - .balign 4 -_0201E6E0: .word UNK_021C599C - - thumb_func_start FUN_0201E6E4 -FUN_0201E6E4: ; 0x0201E6E4 - cmp r1, #0x1 - bne _0201E6F2 - ldr r1, _0201E718 ; =UNK_021C599C - ldr r1, [r1, #0x4] - tst r1, r0 - beq _0201E6FA - bx lr -_0201E6F2: - ldr r1, _0201E718 ; =UNK_021C599C - ldr r1, [r1, #0x4] - tst r1, r0 - beq _0201E714 -_0201E6FA: - ldr r1, _0201E718 ; =UNK_021C599C - ldr r2, [r1, #0x4] - add r3, r2, #0x0 - eor r3, r0 - mov r2, #0x1 - lsl r2, r2, #0x1a - str r3, [r1, #0x4] - ldr r1, [r2, #0x0] - ldr r0, _0201E71C ; =0xFFFFE0FF - and r1, r0 - lsl r0, r3, #0x8 - orr r0, r1 - str r0, [r2, #0x0] -_0201E714: - bx lr - nop -_0201E718: .word UNK_021C599C -_0201E71C: .word 0xFFFFE0FF - - thumb_func_start FUN_0201E720 -FUN_0201E720: ; 0x0201E720 - ldr r1, _0201E738 ; =UNK_021C599C - mov r3, #0x1 - str r0, [r1, #0x4] - lsl r3, r3, #0x1a - ldr r2, [r3, #0x0] - ldr r1, _0201E73C ; =0xFFFFE0FF - lsl r0, r0, #0x8 - and r1, r2 - orr r0, r1 - str r0, [r3, #0x0] - bx lr - nop -_0201E738: .word UNK_021C599C -_0201E73C: .word 0xFFFFE0FF - - thumb_func_start FUN_0201E740 -FUN_0201E740: ; 0x0201E740 - ldr r0, _0201E748 ; =UNK_021C599C - mov r1, #0x0 - str r1, [r0, #0x0] - bx lr - .balign 4 -_0201E748: .word UNK_021C599C - - thumb_func_start FUN_0201E74C -FUN_0201E74C: ; 0x0201E74C - cmp r1, #0x1 - bne _0201E75A - ldr r1, _0201E77C ; =UNK_021C599C - ldr r1, [r1, #0x0] - tst r1, r0 - beq _0201E762 - bx lr -_0201E75A: - ldr r1, _0201E77C ; =UNK_021C599C - ldr r1, [r1, #0x0] - tst r1, r0 - beq _0201E77A -_0201E762: - ldr r1, _0201E77C ; =UNK_021C599C - ldr r2, [r1, #0x0] - add r3, r2, #0x0 - eor r3, r0 - ldr r2, _0201E780 ; =0x04001000 - str r3, [r1, #0x0] - ldr r1, [r2, #0x0] - ldr r0, _0201E784 ; =0xFFFFE0FF - and r1, r0 - lsl r0, r3, #0x8 - orr r0, r1 - str r0, [r2, #0x0] -_0201E77A: - bx lr - .balign 4 -_0201E77C: .word UNK_021C599C -_0201E780: .word 0x04001000 -_0201E784: .word 0xFFFFE0FF - - thumb_func_start FUN_0201E788 -FUN_0201E788: ; 0x0201E788 - push {r3, lr} - bl GX_DispOn - ldr r2, _0201E79C ; =0x04001000 - mov r0, #0x1 - ldr r1, [r2, #0x0] - lsl r0, r0, #0x10 - orr r0, r1 - str r0, [r2, #0x0] - pop {r3, pc} - .balign 4 -_0201E79C: .word 0x04001000 - - thumb_func_start FUN_0201E7A0 -FUN_0201E7A0: ; 0x0201E7A0 - ldr r0, _0201E7C0 ; =gMain + 0x60 - ldr r2, _0201E7C4 ; =0x04000304 - ldrb r0, [r0, #0x5] - cmp r0, #0x0 - bne _0201E7B4 - ldrh r1, [r2, #0x0] - lsr r0, r2, #0xb - orr r0, r1 - strh r0, [r2, #0x0] - bx lr -_0201E7B4: - ldrh r1, [r2, #0x0] - ldr r0, _0201E7C8 ; =0xFFFF7FFF - and r0, r1 - strh r0, [r2, #0x0] - bx lr - nop -_0201E7C0: .word gMain + 0x60 -_0201E7C4: .word 0x04000304 -_0201E7C8: .word 0xFFFF7FFF - - thumb_func_start FUN_0201E7CC -FUN_0201E7CC: ; 0x0201E7CC - ldr r0, _0201E7D4 ; =UNK_021C599C - ldr r0, [r0, #0x4] - bx lr - nop -_0201E7D4: .word UNK_021C599C diff --git a/arm9/asm/unk_02022318.s b/arm9/asm/unk_02022318.s index 7f8590a6..cf87cdb9 100644 --- a/arm9/asm/unk_02022318.s +++ b/arm9/asm/unk_02022318.s @@ -99,7 +99,7 @@ FUN_020223D4: ; 0x020223D4 push {r3, lr} mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _02022438 ; =0x04000008 mov r1, #0x3 ldrh r2, [r0, #0x0] diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s index cf84285f..1ff53c51 100644 --- a/arm9/asm/unk_02033F50.s +++ b/arm9/asm/unk_02033F50.s @@ -96,8 +96,8 @@ _02033FA4: mov r0, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -114,7 +114,7 @@ _02033FA4: ldr r0, _02034160 ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r3, _02034164 ; =0x04000050 mov r1, #0x0 strh r1, [r3, #0x0] @@ -231,7 +231,7 @@ _02033FA4: bl AddTextPrinterParameterized add r0, r7, #0x0 bl String_dtor - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x0 bl FUN_0200E394 mov r0, #0x1 diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s index d8b35c57..10c67e5a 100644 --- a/arm9/asm/unk_02034188.s +++ b/arm9/asm/unk_02034188.s @@ -44,8 +44,8 @@ FUN_02034188: ; 0x02034188 mov r0, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -62,7 +62,7 @@ FUN_02034188: ; 0x02034188 ldr r0, _02034370 ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r3, _02034374 ; =0x04000050 mov r0, #0x0 strh r0, [r3, #0x0] @@ -158,7 +158,7 @@ FUN_02034188: ; 0x02034188 bl AddTextPrinterParameterized add r0, r4, #0x0 bl String_dtor - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x0 bl FUN_0200E394 mov r0, #0x1 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 95c1867f..810faa41 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -1406,7 +1406,7 @@ _02035B2C: str r2, [r0, r1] mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0xb4 pop {r4-r7, pc} .balign 4 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 73072399..6ab54142 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -308,10 +308,10 @@ _02053912: bl FUN_02017FB4 mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r1, #0x57 lsl r1, r1, #0x2 add r0, r4, #0x0 @@ -488,7 +488,7 @@ _02053A78: bge _02053B30 mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x6 lsl r0, r0, #0x6 ldr r1, [r4, r0] @@ -559,7 +559,7 @@ _02053B00: _02053B16: mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x62 lsl r0, r0, #0x2 ldr r0, [r4, r0] @@ -878,10 +878,10 @@ FUN_02053D70: ; 0x02053D70 str r0, [r4, #0x0] mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r4, pc} thumb_func_start FUN_02053D94 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 8e89581c..9d542d37 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2237,7 +2237,7 @@ FUN_0206D9B4: ; 0x0206D9B4 sub sp, #0xb8 add r5, r0, #0x0 add r4, r1, #0x0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r6, _0206DC28 ; =UNK_020F8354 add r3, sp, #0x3c mov r2, #0x5 @@ -2323,7 +2323,7 @@ _0206DA26: orr r2, r0 strh r2, [r1, #0x0] add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r6, _0206DC38 ; =UNK_020F8338 add r3, sp, #0x10 ldmia r6!, {r0-r1} @@ -2507,10 +2507,10 @@ _0206DA26: mov r1, #0xa0 add r0, #0x75 strb r1, [r0, #0x0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0206DC44 ; =FUN_0206DD08 add r1, r5, #0x0 bl Main_SetVBlankIntrCB @@ -2532,10 +2532,10 @@ FUN_0206DC48: ; 0x0206DC48 add r4, r0, #0x0 mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0x0 mov r1, #0x1 bl FUN_020178A0 diff --git a/arm9/asm/unk_0206DE24.s b/arm9/asm/unk_0206DE24.s index 41eab63c..0bc45eb2 100644 --- a/arm9/asm/unk_0206DE24.s +++ b/arm9/asm/unk_0206DE24.s @@ -9,8 +9,8 @@ thumb_func_start FUN_0206DE24 FUN_0206DE24: ; 0x0206DE24 push {r3, lr} - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -69,7 +69,7 @@ FUN_0206DE94: ; 0x0206DE94 push {r3, lr} mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0206DF00 ; =0x04000008 mov r1, #0x3 ldrh r2, [r0, #0x0] diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index e09b1ec4..9c619fea 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -124,8 +124,8 @@ FUN_0206F3FC: ; 0x0206F3FC add r1, r0, #0x0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #0x1 lsl r0, r0, #0x1a ldr r2, [r0, #0x0] @@ -289,7 +289,7 @@ _0206F564: bne _0206F582 mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _0206F582: ldr r0, _0206F5A8 ; =FUN_0206FB58 add r1, r4, #0x0 @@ -1213,10 +1213,10 @@ FUN_0206FCD4: ; 0x0206FCD4 add r4, r0, #0x0 mov r0, #0x1f mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x13 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0x0 mov r1, #0x5 bl FUN_020178A0 diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s index 93309503..8aac6df0 100644 --- a/arm9/asm/unk_02073710.s +++ b/arm9/asm/unk_02073710.s @@ -129,10 +129,10 @@ FUN_02073710: ; 0x02073710 add r4, r0, #0x0 mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x20 mov r1, #0xc bl FUN_0201C24C diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index ecca3742..2586d0f5 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -714,8 +714,8 @@ _020772FE: add r1, r0, #0x0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -846,7 +846,7 @@ _020772FE: ldr r0, _020774A8 ; =gMain + 0x60 mov r1, #0x1 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r0, [r5, #0x0] add r0, r0, #0x1 str r0, [r5, #0x0] @@ -1587,7 +1587,7 @@ _02077A0C: ldr r0, _02077A80 ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay mov r0, #0x1 add sp, #0x14 pop {r4-r7, pc} @@ -1855,32 +1855,32 @@ FUN_02077C84: ; 0x02077C84 lsl r1, r4, #0x18 mov r0, #0x1 lsr r1, r1, #0x18 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers lsl r1, r4, #0x18 mov r0, #0x2 lsr r1, r1, #0x18 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers lsl r1, r4, #0x18 mov r0, #0x4 lsr r1, r1, #0x18 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x8 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers lsl r1, r4, #0x18 mov r0, #0x10 lsr r1, r1, #0x18 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers lsl r1, r4, #0x18 mov r0, #0x1 lsr r1, r1, #0x18 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x10 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r4, pc} thumb_func_start FUN_02077CD4 @@ -2875,10 +2875,10 @@ _020784FA: bl FUN_02078530 mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r4-r7, pc} nop diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 3562d2e7..ec9c64ac 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -61,8 +61,8 @@ FUN_02079C7C: ; 0x02079C7C add r1, r0, #0x0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #0x1 lsl r1, r1, #0x1a ldr r0, [r1, #0x0] @@ -157,7 +157,7 @@ FUN_02079C7C: ; 0x02079C7C ldr r0, _02079DB0 ; =FUN_02079F24 add r1, r5, #0x0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r1, #0x0 mov r0, #0x3d add r2, r1, #0x0 @@ -514,8 +514,8 @@ _0207A088: .word UNK_020FA634 FUN_0207A08C: ; 0x0207A08C push {r4, lr} add r4, r0, #0x0 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers add r0, r4, #0x0 mov r1, #0x5 bl FUN_020178A0 diff --git a/arm9/asm/unk_0207C328.s b/arm9/asm/unk_0207C328.s index bf0bb784..ba0e57e6 100644 --- a/arm9/asm/unk_0207C328.s +++ b/arm9/asm/unk_0207C328.s @@ -274,10 +274,10 @@ FUN_0207C328: ; 0x0207C328 add r4, r0, #0x0 mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x20 mov r1, #0x13 bl FUN_0201C24C diff --git a/arm9/asm/unk_0207EF6C.s b/arm9/asm/unk_0207EF6C.s index 0ef763b0..8fcaed0c 100644 --- a/arm9/asm/unk_0207EF6C.s +++ b/arm9/asm/unk_0207EF6C.s @@ -145,7 +145,7 @@ FUN_0207EF6C: ; 0x0207EF6C str r0, [r1, #0x40] mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _0207F004 ; =0x04000008 mov r0, #0x3 ldrh r2, [r1, #0x0] diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index a299f623..2e98e9cf 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -445,28 +445,28 @@ FUN_02085C08: ; 0x02085C08 add r4, r0, #0x0 mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x4 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x8 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x4 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x8 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0x0 add r0, #0xe4 ldr r0, [r0, #0x0] diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s index 4d8fa9a4..9d8276fd 100644 --- a/arm9/asm/unk_02086084.s +++ b/arm9/asm/unk_02086084.s @@ -171,16 +171,16 @@ FUN_020861DC: ; 0x020861DC bl FUN_020223BC mov r0, #0x1 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x3 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x4 mov r1, #0x0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4, #0x8] mov r1, #0x0 bl FUN_02003038 diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index de7be3b2..ca93020a 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -97,8 +97,8 @@ UNK_020FD078: ; 0x020FD078 thumb_func_start FUN_02086414 FUN_02086414: ; 0x02086414 push {r3, lr} - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -158,7 +158,7 @@ FUN_02086488: ; 0x02086488 push {r3, lr} mov r0, #0x1 add r1, r0, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _020864F4 ; =0x04000008 mov r1, #0x3 ldrh r2, [r0, #0x0] @@ -251,7 +251,7 @@ FUN_0208654C: ; 0x0208654C push {r3-r5, lr} sub sp, #0xa8 add r4, r0, #0x0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _02086650 ; =UNK_020FCEBC add r3, sp, #0x2c mov r2, #0x5 @@ -337,11 +337,11 @@ _020865BC: orr r2, r0 strh r2, [r1, #0x0] add r1, r0, #0x0 - bl FUN_0201E6E4 - bl FUN_0201E788 + bl GX_EngineAToggleLayers + bl GX_BothDispOn mov r0, #0x10 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _02086660 ; =UNK_020FCE60 add r3, sp, #0x0 ldmia r5!, {r0-r1} diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s index 8cc246e9..2ccd040d 100644 --- a/arm9/asm/unk_02086FA8.s +++ b/arm9/asm/unk_02086FA8.s @@ -850,7 +850,7 @@ _02087636: bl FUN_0200C61C mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x64] add r0, r0, #0x1 str r0, [r4, #0x64] @@ -984,7 +984,7 @@ _0208774C: bne _02087810 mov r0, #0x2 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0x0 mov r1, #0x0 bl FUN_02086F98 @@ -1105,7 +1105,7 @@ _02087844: bl FUN_02086B70 mov r0, #0x2 mov r1, #0x0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x64] add r0, r0, #0x1 str r0, [r4, #0x64] @@ -1232,7 +1232,7 @@ _0208794C: bl FUN_02086F98 mov r0, #0x2 mov r1, #0x1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x6c] mov r1, #0x0 bl FUN_0200C644 diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index e4ce48cf..4d0675a9 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -105,8 +105,8 @@ _020894FC: add r0, r6, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -127,7 +127,7 @@ _020894FC: ldr r0, _020895EC ; =FUN_02089610 add r1, r4, #0x0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x6 mov r1, #0x1 str r0, [sp, #0x0] diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s index 575eade7..c0b5f4d0 100644 --- a/arm9/asm/unk_02089960.s +++ b/arm9/asm/unk_02089960.s @@ -87,8 +87,8 @@ _020899B8: add r0, r4, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -106,7 +106,7 @@ _020899B8: bl FUN_02089A6C add r0, r6, #0x0 bl FUN_02089B80 - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x1 str r0, [r5, #0x0] b _02089A34 diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s index b8c341df..0b5c5774 100644 --- a/arm9/asm/unk_02089D90.s +++ b/arm9/asm/unk_02089D90.s @@ -43,8 +43,8 @@ FUN_02089D90: ; 0x02089D90 mov r0, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -61,7 +61,7 @@ FUN_02089D90: ; 0x02089D90 ldr r0, _02089EFC ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r3, _02089F00 ; =0x04000050 mov r0, #0x0 strh r0, [r3, #0x0] @@ -157,7 +157,7 @@ FUN_02089D90: ; 0x02089D90 bl AddTextPrinterParameterized add r0, r4, #0x0 bl String_dtor - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x0 bl FUN_0200E394 mov r0, #0x1 diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s index 5c84eabc..340fa64d 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -47,8 +47,8 @@ FUN_02089F24: ; 0x02089F24 mov r0, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -65,7 +65,7 @@ FUN_02089F24: ; 0x02089F24 ldr r0, _0208A090 ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r3, _0208A094 ; =0x04000050 mov r0, #0x0 strh r0, [r3, #0x0] @@ -161,7 +161,7 @@ FUN_02089F24: ; 0x02089F24 bl AddTextPrinterParameterized add r0, r4, #0x0 bl String_dtor - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x0 bl FUN_0200E394 mov r0, #0x1 @@ -216,8 +216,8 @@ _0208A0C8: mov r0, #0x0 add r1, r0, #0x0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #0x1 lsl r2, r2, #0x1a ldr r1, [r2, #0x0] @@ -234,7 +234,7 @@ _0208A0C8: ldr r0, _0208A230 ; =gMain + 0x60 mov r1, #0x0 strb r1, [r0, #0x5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r3, _0208A234 ; =0x04000050 mov r1, #0x0 strh r1, [r3, #0x0] @@ -330,7 +330,7 @@ _0208A0C8: bl AddTextPrinterParameterized add r0, r4, #0x0 bl String_dtor - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x0 bl FUN_0200E394 mov r0, #0x1 diff --git a/arm9/global.inc b/arm9/global.inc index c7d3bd73..186131be 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1231,14 +1231,14 @@ .extern FUN_0201E258 .extern FUN_0201E28C .extern FUN_0201E66C -.extern FUN_0201E6D8 -.extern FUN_0201E6E4 -.extern FUN_0201E720 -.extern FUN_0201E740 -.extern FUN_0201E74C -.extern FUN_0201E788 -.extern FUN_0201E7A0 -.extern FUN_0201E7CC +.extern GX_DisableEngineALayers +.extern GX_EngineAToggleLayers +.extern GX_SetEngineALayers +.extern GX_DisableEngineBLayers +.extern GX_EngineBToggleLayers +.extern GX_BothDispOn +.extern GX_SwapDisplay +.extern GX_GetEngineALayers .extern FUN_0201EABC .extern FUN_0201EB48 .extern FUN_0201EB64 @@ -8517,4 +8517,3 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon - diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index 24743c4b..5fb56ea8 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -99,7 +99,7 @@ _021D757A: bl FUN_0201B2EC bl MOD05_021D7BA0 bl MOD05_021D7B38 - bl FUN_0201E7A0 + bl GX_SwapDisplay mov r0, #4 bl FUN_02016B94 str r0, [r4, #8] @@ -710,7 +710,7 @@ MOD05_021D7B10: ; 0x021D7B10 add r4, r0, #0 mov r0, #0xf mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #1 bl FUN_020178A0 @@ -942,7 +942,7 @@ MOD05_021D7CF0: ; 0x021D7CF0 add r5, r0, #0 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021D7D44 ; =UNK_02105BB8 ldr r0, [r0] lsl r1, r0, #1 @@ -1097,8 +1097,8 @@ MOD05_021D7E4C: ; 0x021D7E4C add r4, r0, #0 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 - bl FUN_0201E788 + bl GX_EngineAToggleLayers + bl GX_BothDispOn bl MOD05_021DBABC str r0, [r4, #0x40] bl MOD05_021D7B64 diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s index 5e07b24d..ab06fed1 100644 --- a/arm9/modules/05/asm/mod05_021DC0B8.s +++ b/arm9/modules/05/asm/mod05_021DC0B8.s @@ -32,7 +32,7 @@ _021DC0CC: str r0, [r4, #0x10] mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 pop {r3, r4, r5, pc} @@ -681,7 +681,7 @@ _021DC5A2: strh r0, [r1] mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4] add r0, #8 bl MOD05_021DC4AC @@ -1252,7 +1252,7 @@ _021DCA04: beq _021DCA30 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r2, _021DCA40 ; =0x0400000C mov r1, #3 ldrh r3, [r2] @@ -1336,7 +1336,7 @@ MOD05_021DCA94: ; 0x021DCA94 beq _021DCAD2 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DCB5C ; =0x0400000C mov r2, #3 ldrh r3, [r0] @@ -1436,7 +1436,7 @@ MOD05_021DCB6C: ; 0x021DCB6C beq _021DCBA2 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DCBD4 ; =0x0400000C mov r2, #3 ldrh r3, [r0] @@ -1967,7 +1967,7 @@ MOD05_021DCF68: ; 0x021DCF68 beq _021DD00A mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0xc mov r0, #0x42 lsl r0, r0, #2 @@ -5337,7 +5337,7 @@ _021DE8EE: strh r0, [r1] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DEA68 ; =0x00000F62 mov r1, #1 add sp, #0x10 @@ -5395,7 +5395,7 @@ _021DE9A0: strh r0, [r1] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DEA68 ; =0x00000F62 mov r1, #3 add sp, #0x10 @@ -6061,7 +6061,7 @@ _021DEF00: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF08A _021DEF10: mov r2, #8 @@ -6119,7 +6119,7 @@ _021DEF54: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF08A _021DEF8A: mov r0, #6 @@ -6192,7 +6192,7 @@ _021DF008: mov r0, #4 strh r0, [r5, r1] mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF08A _021DF01E: add r0, r4, #0 @@ -6425,7 +6425,7 @@ _021DF1EC: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF366 _021DF1FC: mov r2, #0xa @@ -6480,7 +6480,7 @@ _021DF240: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF366 _021DF270: mov r1, #6 @@ -6548,7 +6548,7 @@ _021DF2E2: mov r0, #4 strh r0, [r5, r1] mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021DF366 _021DF2F8: add r0, r4, #0 @@ -7339,7 +7339,7 @@ _021DF934: str r1, [r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DFAA0 ; =0x00000F62 mov r1, #1 strh r1, [r5, r0] @@ -8366,7 +8366,7 @@ _021E0180: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021E02E8 _021E0190: mov r2, #1 @@ -8428,7 +8428,7 @@ _021E01EE: strh r1, [r5, r0] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021E02E8 _021E0212: mov r0, #6 @@ -8479,7 +8479,7 @@ _021E025C: add r1, #0xc8 str r2, [r1] mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021E02E8 _021E027A: add r0, r4, #0 @@ -8918,7 +8918,7 @@ _021E05D4: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E06F0 ; =0x00000F62 mov r1, #3 strh r1, [r5, r0] @@ -9452,7 +9452,7 @@ _021E0A02: strh r0, [r1] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0AC4 ; =0x00000F62 mov r1, #1 strh r1, [r4, r0] @@ -9484,7 +9484,7 @@ _021E0A52: strh r0, [r1] mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0AC4 ; =0x00000F62 mov r1, #3 strh r1, [r4, r0] @@ -9562,7 +9562,7 @@ _021E0AF2: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0B94 ; =0x00000F62 mov r1, #1 strh r1, [r4, r0] @@ -9587,7 +9587,7 @@ _021E0B34: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0B94 ; =0x00000F62 mov r1, #3 strh r1, [r4, r0] @@ -9687,7 +9687,7 @@ _021E0BC6: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0D1C ; =0x00000F62 mov r1, #1 add sp, #0x10 @@ -9738,7 +9738,7 @@ _021E0C6A: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0D1C ; =0x00000F62 mov r1, #3 add sp, #0x10 @@ -9880,7 +9880,7 @@ _021E0D4E: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0EA8 ; =0x00000F62 mov r1, #1 add sp, #0x10 @@ -9931,7 +9931,7 @@ _021E0DF2: bl MOD05_021DC6D4 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0EA8 ; =0x00000F62 mov r1, #3 add sp, #0x10 @@ -10072,7 +10072,7 @@ _021E0F0A: bne _021E0F98 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 bl MOD05_021E1290 ldr r0, _021E0FA0 ; =0x00000F62 @@ -10083,7 +10083,7 @@ _021E0F0A: _021E0F2C: mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E0FA0 ; =0x00000F62 mov r1, #3 add sp, #8 @@ -10116,7 +10116,7 @@ _021E0F3E: _021E0F70: mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 bl MOD05_021E11EC cmp r0, #1 diff --git a/arm9/modules/05/asm/mod05_021E3444.s b/arm9/modules/05/asm/mod05_021E3444.s index fa3acfc5..27446591 100644 --- a/arm9/modules/05/asm/mod05_021E3444.s +++ b/arm9/modules/05/asm/mod05_021E3444.s @@ -1058,7 +1058,7 @@ MOD05_021E3C14: ; 0x021E3C14 bl FUN_02016BBC mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r3, _021E3D14 ; =UNK05_021F74AC add r2, sp, #0x38 ldmia r3!, {r0, r1} @@ -1087,7 +1087,7 @@ MOD05_021E3C14: ; 0x021E3C14 bl FUN_02018744 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r3, _021E3D18 ; =UNK05_021F7490 add r2, sp, #0x1c ldmia r3!, {r0, r1} @@ -1116,7 +1116,7 @@ MOD05_021E3C14: ; 0x021E3C14 bl FUN_02018744 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r3, _021E3D1C ; =UNK05_021F7474 add r2, sp, #0 ldmia r3!, {r0, r1} @@ -1145,7 +1145,7 @@ MOD05_021E3C14: ; 0x021E3C14 bl FUN_02018744 mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 bl FUN_0200CAB4 add sp, #0x64 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index ad35672e..104c1b87 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -286,13 +286,13 @@ MOD05_021E8860: ; 0x021E8860 add r4, r1, #0 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers bl GX_ResetBankForBG mov r0, #4 add r1, r0, #0 @@ -336,7 +336,7 @@ MOD05_021E88C0: ; 0x021E88C0 bl GX_SetBankForBG mov r0, #0xe mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, [r4] mov r0, #4 bl FUN_02016A8C @@ -1511,7 +1511,7 @@ _021E91D4: blt _021E91D4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r7] add r0, r0, #1 str r0, [r7] @@ -1911,7 +1911,7 @@ _021E9536: blt _021E9536 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r6] add r0, r0, #1 str r0, [r6] @@ -2278,7 +2278,7 @@ _021E9844: blt _021E9844 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r7] add r0, r0, #1 str r0, [r7] @@ -2734,7 +2734,7 @@ _021E9C02: blt _021E9C02 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 bl FUN_02018FF4 @@ -3369,7 +3369,7 @@ _021EA110: bl FUN_020200A0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -3706,7 +3706,7 @@ _021EA430: blt _021EA430 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 bl FUN_02018FF4 @@ -4287,7 +4287,7 @@ _021EA8B2: bl FUN_02020398 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4] add r0, r0, #1 str r0, [r4] @@ -4573,7 +4573,7 @@ _021EAB5A: blt _021EAB5A mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r6] add r0, r0, #1 str r0, [r6] @@ -4880,7 +4880,7 @@ _021EADDC: blt _021EADDC mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [sp, #0x14] ldr r0, [r0] add r1, r0, #1 @@ -5374,7 +5374,7 @@ _021EB18E: bl FUN_02020238 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 bl MOD05_021E4688 str r0, [r4, #4] @@ -5671,13 +5671,13 @@ _021EB484: bne _021EB484 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4] add sp, #0xc add r0, r0, #1 @@ -5849,13 +5849,13 @@ _021EB5E4: bl memset mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4] add sp, #0xc add r0, r0, #1 @@ -6180,7 +6180,7 @@ _021EB86A: bl MOD05_021E35EC mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -6276,7 +6276,7 @@ _021EB8E8: bl FUN_02020238 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r2, #0x11 ldr r1, [r4] add r0, sp, #0x24 @@ -6930,7 +6930,7 @@ _021EBE60: bl FUN_02020064 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r5] add r0, r0, #1 str r0, [r5] @@ -26509,7 +26509,7 @@ MOD05_021F5518: ; 0x021F5518 bl FUN_020178BC mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021F5560 ; =0x00000648 bl FUN_020054C8 add sp, #4 @@ -26721,7 +26721,7 @@ MOD05_021F56B8: ; 0x021F56B8 strh r1, [r0] mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _021F5714 ; =0x0400000C mov r0, #3 ldrh r2, [r1] @@ -26746,7 +26746,7 @@ MOD05_021F56B8: ; 0x021F56B8 bl FUN_02018768 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD05_021F569C add sp, #8 @@ -26766,7 +26766,7 @@ MOD05_021F571C: ; 0x021F571C strh r1, [r0] mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _021F5778 ; =0x0400000E mov r0, #3 ldrh r2, [r1] @@ -26790,7 +26790,7 @@ MOD05_021F571C: ; 0x021F571C bl FUN_02018768 mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD05_021F569C add sp, #8 @@ -26931,7 +26931,7 @@ _021F5856: bl FUN_020178BC mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _021F5980 _021F5872: ldr r0, [r4] @@ -27001,7 +27001,7 @@ _021F58EE: beq _021F5980 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021F5984 ; =0x04000050 mov r1, #0 strh r1, [r0] diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 1dd5e52a..e6113936 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -148,7 +148,7 @@ MOD06_02239790: ; 0x02239790 bl FUN_02016BBC mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _022397F0 ; =0x0224F1D8 add r3, sp, #0 ldmia r5!, {r0, r1} @@ -249,7 +249,7 @@ MOD06_0223986C: ; 0x0223986C bl MOD05_021D7A20 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, pc} thumb_func_start MOD06_0223987C @@ -8949,7 +8949,7 @@ _0223DA88: .word 0x00000241 MOD06_0223DA8C: ; 0x0223DA8C push {r4, lr} add r4, r0, #0 - bl FUN_0201E7CC + bl GX_GetEngineALayers mov r1, #0x8e lsl r1, r1, #2 str r0, [r4, r1] @@ -8988,16 +8988,16 @@ MOD06_0223DA8C: ; 0x0223DA8C bl FUN_020178BC mov r0, #0 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #3 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r4, pc} nop _0223DB10: .word 0x00000235 @@ -9028,7 +9028,7 @@ MOD06_0223DB1C: ; 0x0223DB1C mov r0, #0x8e lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0201E720 + bl GX_SetEngineALayers pop {r4, pc} nop _0223DB58: .word 0x00000235 @@ -10997,7 +10997,7 @@ _0223EBA8: blo _0223EBA8 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, r4, r5, r6, r7, pc} nop _0223EBCC: .word MOD6_0224F370 @@ -27738,7 +27738,7 @@ MOD06_02246F0C: ; 0x02246F0C strh r0, [r2, #4] mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r2, r5, #0 add r0, r4, #0 mov r1, #2 @@ -27771,7 +27771,7 @@ MOD06_02246F0C: ; 0x02246F0C str r0, [r5, r1] mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, r4, r5, pc} .align 2, 0 _02246FB4: .word 0x0400000A @@ -27782,7 +27782,7 @@ MOD06_02246FB8: ; 0x02246FB8 add r4, r0, #0 mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x1e lsl r0, r0, #4 ldr r0, [r4, r0] @@ -27809,7 +27809,7 @@ MOD06_02246FB8: ; 0x02246FB8 bl FUN_02054590 mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r4, pc} nop _02247008: .word 0x04000008 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 1a91192a..bd4fab74 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -126,8 +126,8 @@ MOD07_02211F34: ; 0x02211F34 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] @@ -1358,7 +1358,7 @@ MOD07_02212968: ; 0x02212968 bne _022129AC mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 lsl r0, r0, #0x1a add r3, r0, #0 @@ -1750,7 +1750,7 @@ MOD07_02212C04: ; 0x02212C04 bl FUN_0200BF60 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop @@ -1966,7 +1966,7 @@ MOD07_02212D98: ; 0x02212D98 bl FUN_02018744 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x64 pop {r4, r5, pc} nop @@ -1981,7 +1981,7 @@ MOD07_02212E64: ; 0x02212E64 add r4, r0, #0 mov r0, #0x1f mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0xc] mov r1, #3 bl FUN_020178A0 @@ -3269,7 +3269,7 @@ MOD07_022138F8: ; 0x022138F8 add r4, r0, #0 mov r0, #0x1e mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0xc] mov r1, #3 bl FUN_020178A0 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index e98eadea..55a90a71 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2143,7 +2143,7 @@ MOD09_02212F5C: ; 0x02212F5C add r4, r0, #0 mov r0, #0x1f mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #4 bl FUN_020178A0 @@ -8759,7 +8759,7 @@ MOD09_02216734: ; 0x02216734 bl MOD09_02217750 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r4, pc} thumb_func_start MOD09_02216770 @@ -13962,7 +13962,7 @@ MOD09_02219198: ; 0x02219198 add r4, r0, #0 mov r0, #0x17 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #4 bl FUN_020178A0 @@ -15495,7 +15495,7 @@ MOD09_02219DC8: ; 0x02219DC8 bl MOD09_0221A244 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 30ee9995..95320fb1 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -386,7 +386,7 @@ MOD11_0222D88C: ; 0x0222D88C bl MOD11_02258450 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x67 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -427,10 +427,10 @@ MOD11_0222D944: ; 0x0222D944 bl FUN_02019178 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #4] mov r1, #1 bl FUN_020178A0 @@ -499,7 +499,7 @@ _0222D99A: orr r2, r0 strh r2, [r1] add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 bl MOD11_02230E44 add r4, r0, #0 @@ -602,13 +602,13 @@ _0222D99A: ldrh r2, [r0] bic r2, r1 strh r2, [r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, _0222DB4C ; =MOD11_0222F01C add r1, r5, #0 bl Main_SetVBlankIntrCB @@ -1420,7 +1420,7 @@ MOD11_0222E264: ; 0x0222E264 sub sp, #0x9c add r5, r0, #0 add r4, r1, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers mov r0, #0 bl FUN_0200E394 mov r0, #1 @@ -1517,7 +1517,7 @@ _0222E2F0: orr r2, r0 strh r2, [r1] add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD11_02258450 add r0, r5, #0 @@ -1622,13 +1622,13 @@ _0222E2F0: ldrh r2, [r0] bic r2, r1 strh r2, [r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, _0222E46C ; =MOD11_0222F01C add r1, r5, #0 bl Main_SetVBlankIntrCB @@ -1706,10 +1706,10 @@ MOD11_0222E4E8: ; 0x0222E4E8 add r4, r0, #0 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #1 bl FUN_020178A0 @@ -2995,7 +2995,7 @@ MOD11_0222EF50: ; 0x0222EF50 push {r3, lr} mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0222EFBC ; =0x04000008 mov r1, #3 ldrh r2, [r0] diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index f04e67da..580ec810 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -49,7 +49,7 @@ MOD11_0222F29C: ; 0x0222F29C str r0, [r5, #8] add r0, r5, #0 bl FUN_0206BFF0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r6, _0222F4C8 ; =MOD11_0225DA40 add r3, sp, #0x40 mov r2, #5 @@ -165,10 +165,10 @@ _0222F30E: add r2, r1, #0 add r3, r1, #0 bl FUN_02003914 - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x13 str r0, [sp] mov r0, #0x1b @@ -813,7 +813,7 @@ MOD11_0222F93C: ; 0x0222F93C bl FUN_020191A4 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #4] mov r1, #1 bl FUN_020178A0 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 4f1ef252..aaa6b90c 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -12,8 +12,8 @@ MOD12_0222D5C0: ; 0x0222D5C0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -255,13 +255,13 @@ _0222D7BC: ldr r0, _0222D88C ; =0x00000824 mov r1, #1 strb r1, [r4, r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r1, _0222D890 ; =0x0000046F mov r0, #6 mov r2, #1 @@ -448,10 +448,10 @@ MOD12_0222D9B0: ; 0x0222D9B0 bl FUN_02019178 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x30] mov r1, #1 bl FUN_020178A0 @@ -589,7 +589,7 @@ MOD12_0222DB50: ; 0x0222DB50 push {r4, r5, lr} sub sp, #0x8c add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _0222DC70 ; =MOD12_022449E8 add r3, sp, #0x10 mov r2, #5 @@ -706,7 +706,7 @@ _0222DBC0: strh r0, [r1] mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD12_022319A4 add sp, #0x8c @@ -1079,7 +1079,7 @@ MOD12_0222DF30: ; 0x0222DF30 bne _0222DFBE mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x10 pop {r3, r4, r5, pc} _0222DF9A: @@ -3147,8 +3147,8 @@ MOD12_0222EF04: ; 0x0222EF04 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -3357,13 +3357,13 @@ MOD12_0222EF04: ; 0x0222EF04 ldr r0, _0222F188 ; =0x000004F8 mov r1, #1 strb r1, [r5, r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 bl FUN_0200415C ldr r1, _0222F18C ; =0x0000046F @@ -3604,10 +3604,10 @@ MOD12_0222F324: ; 0x0222F324 bl FUN_02019178 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x30] mov r1, #1 bl FUN_020178A0 @@ -3818,7 +3818,7 @@ MOD12_0222F548: ; 0x0222F548 push {r3, r4, r5, lr} sub sp, #0xa8 add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _0222F6A0 ; =MOD12_02244B1C add r3, sp, #0x2c mov r2, #5 @@ -3934,7 +3934,7 @@ _0222F5B8: orr r2, r0 strh r2, [r1] add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _0222F6B0 ; =MOD12_02244AE0 add r3, sp, #0 ldmia r5!, {r0, r1} @@ -4987,8 +4987,8 @@ MOD12_0222FE4C: ; 0x0222FE4C add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -5219,13 +5219,13 @@ MOD12_0222FE4C: ; 0x0222FE4C ldr r0, _02230110 ; =0x00001154 mov r1, #1 strb r1, [r5, r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r1, _02230114 ; =0x0000046F mov r0, #6 mov r2, #1 @@ -5442,10 +5442,10 @@ _02230296: blt _02230296 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x74] mov r1, #1 bl FUN_020178A0 @@ -5764,7 +5764,7 @@ MOD12_02230574: ; 0x02230574 push {r4, r5, lr} sub sp, #0x8c add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _02230694 ; =MOD12_02244C38 add r3, sp, #0x10 mov r2, #5 @@ -5881,7 +5881,7 @@ _022305E4: strh r0, [r1] mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD12_0223B41C add sp, #0x8c @@ -7479,7 +7479,7 @@ MOD12_022312F4: ; 0x022312F4 push {r3, lr} mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _02231360 ; =0x04000008 mov r1, #3 ldrh r2, [r0] @@ -41074,8 +41074,8 @@ MOD12_02241210: ; 0x02241210 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -41276,13 +41276,13 @@ MOD12_02241210: ; 0x02241210 mov r1, #1 lsl r0, r0, #4 strb r1, [r5, r0] - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r1, _0224147C ; =0x0000046F mov r0, #6 mov r2, #1 @@ -41479,10 +41479,10 @@ _022415D4: blt _022415D4 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x30] mov r1, #1 bl FUN_020178A0 @@ -41754,7 +41754,7 @@ MOD12_02241864: ; 0x02241864 push {r3, r4, r5, lr} sub sp, #0xa8 add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _022419BC ; =MOD12_0224656C add r3, sp, #0x2c mov r2, #5 @@ -41870,7 +41870,7 @@ _022418D4: orr r2, r0 strh r2, [r1] add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _022419CC ; =MOD12_02246530 add r3, sp, #0 ldmia r5!, {r0, r1} diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 824cb507..3c2e533d 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -10495,8 +10495,8 @@ _021DC79C: mov r5, #1 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -13061,10 +13061,10 @@ _021DDBF2: _021DDC48: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers bl GX_DispOn add sp, #0x10 pop {r3, r4, r5, pc} @@ -13083,7 +13083,7 @@ MOD14_021DDC78: ; 0x021DDC78 bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021DDCDC ; =0x04000008 mov r1, #3 ldrh r2, [r0] diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index f7f9881d..339be333 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -2817,8 +2817,8 @@ MOD15_021D8998: ; 0x021D8998 MOD15_021D89C0: ; 0x021D89C0 push {r3, r4, r5, lr} add r4, r1, #0 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r1, #1 lsl r1, r1, #0x1a ldr r0, [r1] @@ -2903,10 +2903,10 @@ MOD15_021D89C0: ; 0x021D89C0 bl MOD15_021DAEB4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers bl GX_DispOn add r0, r4, #0 bl MOD15_021D8998 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index cfff4a29..a320f179 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -2207,10 +2207,10 @@ MOD16_021D8534: ; 0x021D8534 str r0, [r5, r1] mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x4f lsl r0, r0, #2 ldr r0, [r5, r0] @@ -3372,7 +3372,7 @@ MOD16_021D8DC0: ; 0x021D8DC0 bl FUN_020178BC mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r6, _021D8F1C ; =0x021FF4D8 add r3, sp, #0x54 ldmia r6!, {r0, r1} @@ -25839,7 +25839,7 @@ _021E3288: _021E329E: mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021E32D0 ; =0x00000804 ldr r0, [r5, r0] bl FreeToHeap @@ -27619,7 +27619,7 @@ MOD16_021E4094: ; 0x021E4094 add r0, r0, #4 str r1, [r6, r0] mov r0, #2 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] @@ -27658,7 +27658,7 @@ MOD16_021E40D4: ; 0x021E40D4 bl G2x_SetBlendAlpha_ mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r6, #0 add r0, #0xc4 ldr r0, [r0] @@ -27725,7 +27725,7 @@ _021E4158: _021E4162: mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x81 add r1, r4, #0 lsl r0, r0, #4 @@ -27773,7 +27773,7 @@ _021E417E: bne _021E41CC mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r3, r4, r5, r6, r7, pc} _021E41CC: add r0, r5, #0 @@ -51397,7 +51397,7 @@ MOD16_021EF218: ; 0x021EF218 bl FUN_020178BC mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 mov r1, #0 bl FUN_020178A0 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 3615681b..910aa687 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -414,7 +414,7 @@ MOD17_021D7794: ; 0x021D7794 ldr r0, _021D77B0 ; =gMain + 0x60 mov r1, #1 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay pop {r3, pc} nop _021D77B0: .word gMain + 0x60 @@ -426,7 +426,7 @@ MOD17_021D77B4: ; 0x021D77B4 ldr r0, _021D77D0 ; =gMain + 0x60 mov r1, #0 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay bl MOD17_021D7E0C bl MOD17_021D7E00 bl GX_ResetBankForTex @@ -1177,7 +1177,7 @@ MOD17_021D7D28: ; 0x021D7D28 bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021D7D9C ; =0x04000008 mov r1, #3 ldrh r2, [r0] @@ -1254,14 +1254,14 @@ MOD17_021D7DB0: ; 0x021D7DB0 orr r0, r1 str r0, [r2] bl FUN_020B0FC0 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #0x1f mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x13 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -1280,8 +1280,8 @@ MOD17_021D7E00: ; 0x021D7E00 thumb_func_start MOD17_021D7E0C MOD17_021D7E0C: ; 0x021D7E0C push {r3, lr} - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers bl FUN_020B0FC0 pop {r3, pc} thumb_func_end MOD17_021D7E0C @@ -4497,19 +4497,19 @@ MOD17_021D9778: ; 0x021D9778 bic r2, r3 strh r2, [r1, #6] mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0 bl FUN_0200E394 pop {r4, pc} @@ -4535,16 +4535,16 @@ MOD17_021D9800: ; 0x021D9800 bl FUN_0201FD98 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers pop {r4, pc} thumb_func_end MOD17_021D9800 @@ -13824,7 +13824,7 @@ _021DDBBC: ldr r0, _021DDC2C ; =gMain + 0x60 mov r1, #0 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay add r0, r4, #0 add r0, #0x14 mov r1, #0xe diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 233dbc05..58f1c9a6 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -1733,16 +1733,16 @@ MOD18_0223A3D4: ; 0x0223A3D4 bl MOD18_022396A0 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r2, #5 mov r0, #3 mov r1, #0x1d @@ -2128,16 +2128,16 @@ _0223A73A: bl FUN_0200E1D0 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4] add sp, #0xc add r0, r0, #1 @@ -6124,10 +6124,10 @@ _0223C634: blt _0223C57A mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x64 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -14393,7 +14393,7 @@ _022404A4: bl FUN_020178BC mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 bl FUN_0204F774 ldr r0, _022404EC ; =0x022513A0 @@ -14652,7 +14652,7 @@ _02240672: ; jump table _0224068C: mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers bl MOD18_022400A0 str r0, [r4, #4] ldr r0, [r4] @@ -14793,7 +14793,7 @@ _0224079E: bl FUN_0200A208 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #7 str r0, [r4] bl MOD18_0223D638 @@ -17110,10 +17110,10 @@ _0224195E: _022419BE: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} nop @@ -18293,10 +18293,10 @@ _0224227A: _02242308: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x60 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -18857,10 +18857,10 @@ _02242704: blt _02242704 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} nop @@ -20398,10 +20398,10 @@ MOD18_022432B4: ; 0x022432B4 bl FUN_02020238 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {pc} nop @@ -21585,10 +21585,10 @@ _02243CBE: blt _02243C60 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} nop @@ -22580,7 +22580,7 @@ _02244460: blt _02244460 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4] add sp, #0x60 add r0, r0, #1 @@ -22594,16 +22594,16 @@ _022444A4: _022444AC: mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #0 bl FUN_02017FE4 @@ -23101,7 +23101,7 @@ MOD18_0224486C: ; 0x0224486C bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r6, _02244990 ; =0x02250498 add r3, sp, #0x2c ldmia r6!, {r0, r1} @@ -23119,7 +23119,7 @@ MOD18_0224486C: ; 0x0224486C bl FUN_02016C18 mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r6, _02244994 ; =0x0225047C add r3, sp, #0x10 ldmia r6!, {r0, r1} @@ -23137,7 +23137,7 @@ MOD18_0224486C: ; 0x0224486C bl FUN_02016C18 mov r0, #8 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r5, #0 mov r1, #7 bl FUN_02018744 @@ -32427,7 +32427,7 @@ _02249184: str r2, [r0, r1] mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0xb4 pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s index a42eeb6f..67f4c29a 100644 --- a/arm9/modules/20/asm/module_20.s +++ b/arm9/modules/20/asm/module_20.s @@ -1560,10 +1560,10 @@ MOD20_02252ED0: ; 0x02252ED0 mov r0, #0x10 orr r0, r1 str r0, [r2] - bl FUN_0201E740 + bl GX_DisableEngineBLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #6 lsl r0, r0, #6 ldr r0, [r4, r0] diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s index 848caed1..60bdd016 100644 --- a/arm9/modules/51/asm/module_51.s +++ b/arm9/modules/51/asm/module_51.s @@ -49,19 +49,19 @@ _0225487A: bl MOD51_02254944 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 bl MOD51_0225571C ldr r0, [r4] @@ -409,7 +409,7 @@ MOD51_02254B54: ; 0x02254B54 bl FUN_02018744 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r5, _02254C74 ; =0x0225578C add r3, sp, #0x48 ldmia r5!, {r0, r1} @@ -430,7 +430,7 @@ MOD51_02254B54: ; 0x02254B54 bl FUN_02018744 mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r5, _02254C78 ; =0x022557C4 add r3, sp, #0x2c ldmia r5!, {r0, r1} @@ -451,7 +451,7 @@ MOD51_02254B54: ; 0x02254B54 bl FUN_02018744 mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r5, _02254C7C ; =0x02255754 add r3, sp, #0x10 ldmia r5!, {r0, r1} @@ -469,7 +469,7 @@ MOD51_02254B54: ; 0x02254B54 bl FUN_02016C18 mov r0, #8 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x60 mov r1, #0 str r0, [sp] diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index f55e7c99..cac73593 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -22,8 +22,8 @@ _021D74F6: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1289,10 +1289,10 @@ _021D7F74: blt _021D7F74 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x64 pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index 2091a0c6..fa7d0581 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -22,8 +22,8 @@ _021D74F6: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1045,10 +1045,10 @@ _021D7D4C: str r0, [sp, #0x38] mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index b6f57d67..3e673f3d 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -29,8 +29,8 @@ MOD55_021D7504: ; 0x021D7504 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1198,7 +1198,7 @@ _021D7EB8: blt _021D7E56 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} thumb_func_end MOD55_021D7DA0 @@ -4017,7 +4017,7 @@ MOD55_021D9574: ; 0x021D9574 bl G3X_InitMtxStack mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021D95D8 ; =0x04000008 mov r1, #3 ldrh r2, [r0] @@ -5576,11 +5576,11 @@ MOD55_021DA27C: ; 0x021DA27C lsl r1, r4, #0x18 mov r0, #0xf lsr r1, r1, #0x18 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers lsl r1, r4, #0x18 mov r0, #1 lsr r1, r1, #0x18 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r4, pc} .align 2, 0 thumb_func_end MOD55_021DA27C diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 97d746da..b01ccefe 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -253,8 +253,8 @@ MOD56_02211FD4: ; 0x02211FD4 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -385,10 +385,10 @@ _022120BE: str r2, [r4, r1] mov r0, #0xf mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0xf mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 bl MOD56_0221244C add r0, r4, #0 @@ -930,19 +930,19 @@ MOD56_0221257C: ; 0x0221257C ldr r4, [r0] mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r2, #0 str r2, [sp] mov r0, #0x36 @@ -1293,7 +1293,7 @@ _02212848: blt _02212848 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x5c pop {r4, r5, r6, r7, pc} thumb_func_end MOD56_022127D4 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index 2e0c7acd..3d600303 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -14,8 +14,8 @@ MOD57_021D74E0: ; 0x021D74E0 mov r0, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1208,10 +1208,10 @@ MOD57_021D7EDC: ; 0x021D7EDC add r4, r0, #0 mov r0, #0x1f mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x13 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #7 bl FUN_020178A0 @@ -3730,7 +3730,7 @@ _021D92CE: bl NARC_dtor mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x3c pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index 3e04165c..f1b48055 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -28,8 +28,8 @@ _021D9A36: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1008,10 +1008,10 @@ MOD58_021DA1C4: ; 0x021DA1C4 bl FUN_02020238 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x5c pop {r3, r4, pc} .align 2, 0 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 447b763f..45f744de 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -42,8 +42,8 @@ _021D7592: add r0, r6, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -66,7 +66,7 @@ _021D7592: ldr r0, _021D76BC ; =MOD59_021D7724 add r1, r4, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #1 str r0, [r5] b _021D76AC diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s index 3a2ba4ad..f115dd71 100644 --- a/arm9/modules/59/asm/mod59_021D9868.s +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -67,8 +67,8 @@ _021D98C6: add r0, r6, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -89,7 +89,7 @@ _021D98C6: ldr r0, _021D99F0 ; =MOD59_021D9A14 add r1, r4, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x3c str r0, [r4, #0x24] mov r0, #1 diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index d55b37fc..816328a0 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -438,8 +438,8 @@ _021D7848: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -478,7 +478,7 @@ _021D78A2: bl FUN_0201C24C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers bl FUN_02033F20 ldr r0, _021D78E4 ; =MOD60_021D77D4 add r1, r4, #0 @@ -551,8 +551,8 @@ _021D7946: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index bcb6e9b6..fb7d1bec 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -557,8 +557,8 @@ _021D78FA: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -593,7 +593,7 @@ _021D794E: bl Main_SetVBlankIntrCB mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0 bl FUN_0200E394 mov r1, #4 @@ -681,8 +681,8 @@ _021D79FC: mov r0, #0 add r1, r0, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 86eebba7..12f7f3bb 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -1755,7 +1755,7 @@ MOD62_0222E2DC: ; 0x0222E2DC push {r3, lr} mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0222E348 ; =0x04000008 mov r1, #3 ldrh r2, [r0] @@ -3734,13 +3734,13 @@ _0222F26C: .word 0x0000FFFF thumb_func_start MOD62_0222F270 MOD62_0222F270: ; 0x0222F270 push {r3, lr} - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, pc} thumb_func_end MOD62_0222F270 @@ -6022,10 +6022,10 @@ _0223042E: bl FUN_02003210 mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #7 mov r1, #1 bl FUN_020178BC @@ -6111,7 +6111,7 @@ _0223050A: ; jump table _0223051A: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r3, #0 str r3, [sp] mov r0, #0xa @@ -6296,7 +6296,7 @@ _02230692: bl MOD08_02229A2C mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD62_0223021C mov r0, #0x3e @@ -6395,7 +6395,7 @@ _0223072C: bl MOD62_0222F7E0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0xf7 lsl r0, r0, #2 ldr r1, [r4, r0] @@ -6462,7 +6462,7 @@ _0223081A: _0223081C: mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #1 bl MOD62_022300DC @@ -6582,7 +6582,7 @@ _022308E4: bl MOD62_022300DC mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0xf7 lsl r0, r0, #2 ldr r1, [r4, r0] @@ -6655,7 +6655,7 @@ _0223093E: _022309B4: mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0xf7 lsl r0, r0, #2 ldr r1, [r4, r0] @@ -6791,7 +6791,7 @@ _02230AC2: _02230AD4: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r3, #0 str r3, [sp] mov r0, #0x10 @@ -6850,7 +6850,7 @@ _02230B40: bl FUN_020178BC mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #0 bl MOD62_0222F738 @@ -7322,8 +7322,8 @@ MOD62_02230F3C: ; 0x02230F3C add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -7355,7 +7355,7 @@ MOD62_02230F80: ; 0x02230F80 push {r4, r5, lr} sub sp, #0xfc add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers ldr r5, _022310B8 ; =MOD62_02231238 add r3, sp, #0x10 mov r2, #5 @@ -7441,7 +7441,7 @@ _02230FF0: orr r2, r0 strh r2, [r1] add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _022310C8 ; =MOD62_022312E8 add r3, sp, #0x38 mov r2, #0xe @@ -7484,7 +7484,7 @@ _02231052: bl FUN_02018744 mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0xfc pop {r4, r5, pc} nop diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index df0624f9..6aa32be7 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -23,8 +23,8 @@ MOD63_021D74E0: ; 0x021D74E0 mov r0, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -69,7 +69,7 @@ MOD63_021D74E0: ; 0x021D74E0 ldr r0, _021D7598 ; =MOD63_021D782C add r1, r4, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #1 pop {r4, pc} .align 2, 0 @@ -251,7 +251,7 @@ _021D76D4: strh r3, [r4, r1] mov r1, #0 str r0, [r2, #0x6c] - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 mov r1, #0x3c bl FUN_020053CC @@ -795,28 +795,28 @@ MOD63_021D7A48: ; 0x021D7A48 bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 add r1, r0, #0 bl FUN_02017FE4 @@ -841,28 +841,28 @@ MOD63_021D7B9C: ; 0x021D7B9C add r4, r0, #0 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4, #4] mov r1, #4 bl FUN_020178A0 @@ -1031,7 +1031,7 @@ _021D7C52: ldr r0, _021D7D70 ; =gMain + 0x60 mov r1, #1 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay mov r0, #2 str r0, [r5, #4] mov r0, #1 @@ -1085,13 +1085,13 @@ _021D7DA4: ; jump table _021D7DB8: mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r1, _021D80F0 ; =0x00000116 add r0, r6, #0 strh r0, [r4, r1] @@ -1663,16 +1663,16 @@ _021D81DC: bne _021D824E mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #0x5a add r0, #0xa8 @@ -1736,22 +1736,22 @@ _021D8272: bl FUN_0201F05C mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 add r1, r4, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl FUN_0200E394 mov r0, #1 @@ -1791,19 +1791,19 @@ _021D82FC: bne _021D831A mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers b _021D8330 _021D831A: cmp r0, #0x10 bne _021D8330 mov r0, #1 add r1, r4, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers b _021D8330 _021D8328: mov r0, #1 add r1, r4, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _021D8330: add r0, r5, #0 add r0, #0xa8 @@ -1855,7 +1855,7 @@ MOD63_021D8360: ; 0x021D8360 strh r0, [r2] ldr r0, _021D83A4 ; =gMain + 0x60 strb r3, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay mov r0, #1 pop {r4, r5, r6, pc} .align 2, 0 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index 9c8b1d22..e4ec2bcf 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -578,8 +578,8 @@ MOD63_021D8D10: ; 0x021D8D10 mov r0, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #4 mov r1, #8 bl FUN_0201669C @@ -606,7 +606,7 @@ MOD63_021D8D10: ; 0x021D8D10 strb r1, [r4, r0] ldr r0, _021D8D94 ; =gMain + 0x60 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay bl GetLCRNGSeed str r0, [r4, #0x14] mov r0, #0 @@ -985,10 +985,10 @@ MOD63_021D8F38: ; 0x021D8F38 bl FUN_02006930 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x10 str r0, [sp] ldr r0, _021D90C8 ; =0x04000050 @@ -1010,7 +1010,7 @@ MOD63_021D8F38: ; 0x021D8F38 bl FUN_0200E394 mov r0, #1 bl FUN_0200E394 - bl FUN_0201E788 + bl GX_BothDispOn add sp, #0x10 pop {r4, pc} nop @@ -1089,10 +1089,10 @@ _021D9148: blt _021D9208 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x10 str r0, [sp] ldr r0, _021D9220 ; =0x04000050 @@ -1109,10 +1109,10 @@ _021D9148: bl G2x_SetBlendAlpha_ mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r2, #0 strb r2, [r4, #7] strb r2, [r4, #6] @@ -1546,7 +1546,7 @@ MOD63_021D9498: ; 0x021D9498 str r0, [r5, #0x40] ldr r0, _021D9588 ; =gMain + 0x60 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r6, _021D958C ; =MOD63_021DBDE8 ldr r7, _021D9590 ; =MOD63_021DBAD0 mov r4, #0 @@ -1886,10 +1886,10 @@ _021D96F8: bl MOD63_021DABCC mov r0, #0xe mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 bl FUN_0200E394 mov r0, #1 @@ -2171,7 +2171,7 @@ _021D9A42: blt _021D9B0C mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 str r0, [sp] mov r0, #8 @@ -2197,14 +2197,14 @@ _021D9A7A: bne _021D9A88 mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _021D9A88: ldr r0, _021D9DD0 ; =0x000003C5 cmp r5, r0 blt _021D9B0C mov r0, #7 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x12 str r0, [sp] mov r1, #1 @@ -2319,13 +2319,13 @@ _021D9B72: bl G2x_SetBlendAlpha_ mov r0, #6 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0 ldr r0, [r4, #0x10] add r2, r1, #0 @@ -2526,7 +2526,7 @@ _021D9D48: bl MOD63_021DAD18 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x10] mov r1, #0 mov r2, #1 @@ -2610,7 +2610,7 @@ _021D9DF8: bl MOD63_021D9EA8 mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 str r0, [sp] mov r1, #1 @@ -3172,13 +3172,13 @@ _021DA192: bl FUN_020068C8 mov r0, #0xe mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4, #0xc] mov r1, #3 mov r2, #1 @@ -3532,11 +3532,11 @@ MOD63_021DA588: ; 0x021DA588 strb r2, [r0, #3] mov r2, #0 strb r2, [r0, #1] - ldr r3, _021DA59C ; =FUN_0201E6E4 + ldr r3, _021DA59C ; =GX_EngineAToggleLayers add r0, r1, #0 bx r3 nop -_021DA59C: .word FUN_0201E6E4 +_021DA59C: .word GX_EngineAToggleLayers thumb_func_end MOD63_021DA588 thumb_func_start MOD63_021DA5A0 @@ -3610,7 +3610,7 @@ _021DA618: blo _021DA630 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers _021DA630: add sp, #4 pop {r3, r4, r5, r6, pc} diff --git a/arm9/modules/63/asm/mod63_021DA640.s b/arm9/modules/63/asm/mod63_021DA640.s index dbfc4e75..6095d832 100644 --- a/arm9/modules/63/asm/mod63_021DA640.s +++ b/arm9/modules/63/asm/mod63_021DA640.s @@ -460,7 +460,7 @@ _021DA9DC: blt _021DA9DC mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/arm9/modules/63/asm/mod63_021DAE5C.s b/arm9/modules/63/asm/mod63_021DAE5C.s index 81d1816a..52b453e2 100644 --- a/arm9/modules/63/asm/mod63_021DAE5C.s +++ b/arm9/modules/63/asm/mod63_021DAE5C.s @@ -338,10 +338,10 @@ _021DB040: bl FUN_02009CF0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x14 pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index 645c9569..f65c4f78 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -79,10 +79,10 @@ _021D755E: bl MOD64_021D7970 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 mov r1, #0x2f bl MOD64_021D7A54 @@ -962,10 +962,10 @@ MOD64_021D7C74: ; 0x021D7C74 str r0, [r5, r1] mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD64_021D7C74 @@ -1940,7 +1940,7 @@ _021D8400: bl MOD64_021D8864 mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 890b3348..e2741c41 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -114,8 +114,8 @@ _021D75A4: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -221,8 +221,8 @@ _021D7684: mov r0, #0 add r1, r0, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -2574,10 +2574,10 @@ MOD65_021D8850: ; 0x021D8850 _021D8908: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x54 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -2771,8 +2771,8 @@ _021D8A88: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -2882,8 +2882,8 @@ _021D8B68: mov r0, #0 add r1, r0, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -3491,7 +3491,7 @@ MOD65_021D8FB0: ; 0x021D8FB0 _021D9040: mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x44 pop {r3, r4, r5, r6, pc} .align 2, 0 @@ -5354,7 +5354,7 @@ MOD65_021D9E98: ; 0x021D9E98 bl MOD65_021DA000 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _021D9F4C ; =0x04000008 mov r0, #3 ldrh r2, [r1] diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s index 65c5c857..dc3ae898 100644 --- a/arm9/modules/66/asm/module_66.s +++ b/arm9/modules/66/asm/module_66.s @@ -193,8 +193,8 @@ _021D763C: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -319,10 +319,10 @@ MOD66_021D7750: ; 0x021D7750 bl FUN_0201CD04 mov r0, #0x1f mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x1f mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 add r1, r0, #0 bl Main_SetVBlankIntrCB @@ -3630,10 +3630,10 @@ MOD66_021D913C: ; 0x021D913C add r4, r0, #0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r1, [r4, #4] mov r0, #0x20 bl FUN_0201C24C diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index a72ccebc..379ba223 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -11,8 +11,8 @@ MOD67_021D74E0: ; 0x021D74E0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] @@ -80,11 +80,11 @@ MOD67_021D74E0: ; 0x021D74E0 ldr r0, _021D75CC ; =MOD67_021D7660 add r1, r4, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn bl FUN_02033E74 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0 mov r0, #0x43 add r2, r1, #0 @@ -312,7 +312,7 @@ _021D7778: .word MOD67_021D9794 MOD67_021D777C: ; 0x021D777C push {r4, lr} add r4, r0, #0 - bl FUN_0201E6D8 + bl GX_DisableEngineALayers add r0, r4, #0 mov r1, #3 bl FUN_020178A0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index dfab7ef8..a227032e 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -11,8 +11,8 @@ MOD68_021D74E0: ; 0x021D74E0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -93,7 +93,7 @@ MOD68_021D74E0: ; 0x021D74E0 bl FUN_02033F20 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 @@ -308,7 +308,7 @@ MOD68_021D7774: ; 0x021D7774 add r4, r0, #0 mov r0, #0xf mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #3 bl FUN_020178A0 @@ -1447,7 +1447,7 @@ MOD68_021D7FD8: ; 0x021D7FD8 str r0, [r1, #0x40] mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _021D8068 ; =0x04000008 mov r0, #3 ldrh r2, [r1] diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 0e218fd3..a7c2807d 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -964,7 +964,7 @@ MOD69_0222DD54: ; 0x0222DD54 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0222DDF8 ; =0x04000008 mov r1, #3 ldrh r2, [r0] @@ -1115,7 +1115,7 @@ MOD69_0222DE98: ; 0x0222DE98 bl MOD69_0222DF0C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x1c pop {r3, r4, pc} .align 2, 0 diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index ef7b18bd..30f38fe4 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -909,7 +909,7 @@ MOD70_021D7AF4: ; 0x021D7AF4 bl G2x_SetBlendAlpha_ mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index e7f0b24d..42be4647 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -12,8 +12,8 @@ MOD71_0222D5C0: ; 0x0222D5C0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -131,7 +131,7 @@ MOD71_0222D5C0: ; 0x0222D5C0 bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0x5d lsl r1, r1, #2 ldr r1, [r4, r1] @@ -323,7 +323,7 @@ MOD71_0222D820: ; 0x0222D820 bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 mov r1, #1 bl FUN_0201797C @@ -338,7 +338,7 @@ MOD71_0222D820: ; 0x0222D820 bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers bl MOD71_0222EA38 add r0, r4, #0 bl MOD71_0222EA68 @@ -1175,7 +1175,7 @@ _0222DF92: str r0, [r4, #0x4c] mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0222E0F8 ; =0x00002218 mov r1, #0 ldr r0, [r4, r0] @@ -1220,7 +1220,7 @@ _0222DFD6: bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x4c] add r0, r0, #1 str r0, [r4, #0x4c] @@ -1276,7 +1276,7 @@ _0222E054: bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4, #0x4c] add r0, r0, #1 str r0, [r4, #0x4c] diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index b4e14758..cadaa246 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -325,7 +325,7 @@ _021D76D4: bl FUN_02033E74 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _021D7804 ; =0x00001420 ldr r0, [r5, r0] cmp r0, #1 @@ -968,13 +968,13 @@ _021D7CD2: bl MOD73_021DA730 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0xae mov r1, #0 lsl r0, r0, #2 @@ -2233,7 +2233,7 @@ MOD73_021D8630: ; 0x021D8630 ldr r0, _021D8758 ; =gMain + 0x60 mov r1, #1 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay add sp, #8 pop {r4, pc} .align 2, 0 @@ -2302,7 +2302,7 @@ MOD73_021D875C: ; 0x021D875C ldr r0, _021D880C ; =gMain + 0x60 mov r1, #0 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay pop {r4, pc} .align 2, 0 _021D87EC: .word 0x0000063C @@ -2453,7 +2453,7 @@ MOD73_021D88E4: ; 0x021D88E4 bl FUN_02016BBC mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0 mov r1, #2 bl FUN_020178BC @@ -2537,10 +2537,10 @@ MOD73_021D89AC: ; 0x021D89AC bl MOD73_021D92EC mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers pop {r3, pc} .align 2, 0 thumb_func_end MOD73_021D89AC @@ -5857,10 +5857,10 @@ _021DA266: bl MOD73_021DA374 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 str r0, [r5, #0x28] pop {r4, r5, r6, pc} @@ -6067,10 +6067,10 @@ MOD73_021DA408: ; 0x021DA408 blt _021DA432 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r5, #0 bl FUN_0200CAB4 mov r0, #0 @@ -6117,10 +6117,10 @@ _021DA446: bl CopyWindowToVram mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x10 pop {r4, r5, r6, pc} .align 2, 0 @@ -6150,10 +6150,10 @@ MOD73_021DA4AC: ; 0x021DA4AC beq _021DA4D0 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x2c] bl FUN_0200CAB4 mov r0, #0 diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 14dc995b..0a07e4b4 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -190,8 +190,8 @@ _021D7644: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -289,8 +289,8 @@ _021D7722: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1746,7 +1746,7 @@ MOD74_021D8200: ; 0x021D8200 bl FUN_0200BD20 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x50 pop {r3, r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index 87c9c55a..c05b6059 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -12,8 +12,8 @@ MOD75_021E6BA0: ; 0x021E6BA0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] @@ -732,10 +732,10 @@ MOD75_021E71BC: ; 0x021E71BC add r4, r0, #0 mov r0, #0x1f mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x1b mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #7 bl FUN_020178A0 @@ -9844,10 +9844,10 @@ MOD75_021EB9B4: ; 0x021EB9B4 add r4, r0, #0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x20 mov r1, #6 bl FUN_0201C24C diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index d81a7697..9d86b835 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -179,8 +179,8 @@ MOD76_021D7638: ; 0x021D7638 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -370,7 +370,7 @@ MOD76_021D77E4: ; 0x021D77E4 add r4, r0, #0 mov r0, #0x17 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #2 bl FUN_020178A0 @@ -2397,7 +2397,7 @@ MOD76_021D8758: ; 0x021D8758 bl FUN_0200BF60 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x4c pop {r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 8ed82bcb..8c158d12 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -13,8 +13,8 @@ MOD77_021D74E0: ; 0x021D74E0 mov r0, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -79,7 +79,7 @@ _021D7540: bl FUN_02016B94 ldr r1, _021D75F4 ; =0x0000C010 str r0, [r5, r1] - bl FUN_0201E788 + bl GX_BothDispOn bl FUN_0201BD5C ldr r2, [r5] mov r0, #8 @@ -97,7 +97,7 @@ _021D7540: ldr r0, _021D7600 ; =gMain + 0x60 mov r1, #1 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay mov r0, #4 mov r1, #8 bl FUN_0201669C @@ -185,16 +185,16 @@ _021D764C: bl FUN_0200E1D0 mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #1 str r0, [r5] b _021D7B66 @@ -805,16 +805,16 @@ MOD77_021D7BAC: ; 0x021D7BAC mov r0, #4 mov r1, #0 ldr r5, [r4] - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, _021D7C14 ; =0x0000C2CC ldr r0, [r4, r0] bl FUN_0201EB70 diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s index 6a0d80b3..2f4531da 100644 --- a/arm9/modules/78/asm/module_78.s +++ b/arm9/modules/78/asm/module_78.s @@ -271,8 +271,8 @@ MOD78_021D7708: ; 0x021D7708 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -295,7 +295,7 @@ MOD78_021D7708: ; 0x021D7708 strh r0, [r2] ldr r0, _021D7768 ; =0x021D7888 bl G3X_SetEdgeColorTable - bl FUN_0201E7A0 + bl GX_SwapDisplay pop {r3, pc} nop _021D7758: .word 0xFFFFE0FF diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 128c6280..3b2cdd0d 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1375,8 +1375,8 @@ _0222DFE4: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -2162,10 +2162,10 @@ MOD80_0222E614: ; 0x0222E614 bl FUN_02008AA4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x2c pop {r3, r4, pc} thumb_func_end MOD80_0222E614 @@ -2725,10 +2725,10 @@ MOD80_0222EA04: ; 0x0222EA04 bl FUN_02017F18 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x9c pop {r4, r5, pc} nop @@ -2767,13 +2767,13 @@ MOD80_0222EB40: ; 0x0222EB40 add r4, r0, #0 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0222EB68 ; =0x00000D5C mov r1, #0 ldr r0, [r4, r0] @@ -3128,13 +3128,13 @@ MOD80_0222EE24: ; 0x0222EE24 beq _0222EE5A mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #7 mov r2, #0xb @@ -8739,10 +8739,10 @@ MOD80_02231AB0: ; 0x02231AB0 bl FUN_02017F18 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x9c pop {r4, r5, pc} nop @@ -14322,10 +14322,10 @@ MOD80_02234780: ; 0x02234780 bl FUN_02017F18 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x9c pop {r4, r5, pc} nop @@ -14411,7 +14411,7 @@ MOD80_022348CC: ; 0x022348CC bl FUN_0201797C mov r0, #0x10 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _02234944: ldr r0, [r5, #0x20] cmp r0, #9 @@ -17776,16 +17776,16 @@ MOD80_02236284: ; 0x02236284 bl MOD80_02236580 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4] ldr r0, [r0, #0x20] bl FUN_02033288 @@ -17889,7 +17889,7 @@ MOD80_02236378: ; 0x02236378 bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #0 bl FUN_02018744 @@ -17910,7 +17910,7 @@ MOD80_02236378: ; 0x02236378 bl FUN_02016C18 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _0223645C ; =0x02237654 add r3, sp, #0x1c ldmia r5!, {r0, r1} @@ -17928,7 +17928,7 @@ MOD80_02236378: ; 0x02236378 bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #4 bl FUN_02018744 @@ -17949,7 +17949,7 @@ MOD80_02236378: ; 0x02236378 bl FUN_02016C18 mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 mov r1, #0x20 add r2, r0, #0 @@ -17962,7 +17962,7 @@ MOD80_02236378: ; 0x02236378 bl FUN_02017F18 mov r0, #0x10 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x70 pop {r3, r4, r5, pc} nop diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index b7492d39..f8dca2fd 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -153,8 +153,8 @@ _02237F22: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -2176,7 +2176,7 @@ MOD81_02238E44: ; 0x02238E44 bl FUN_02016C18 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r2, _02239058 ; =0x04000008 mov r0, #3 ldrh r3, [r2] @@ -2344,10 +2344,10 @@ MOD81_02238E44: ; 0x02238E44 bl MOD81_02238B40 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 bl MOD81_022393F4 ldr r0, _02239064 ; =0x04000050 @@ -3872,10 +3872,10 @@ _02239C02: bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 add r0, #0xc0 mov r1, #3 @@ -4013,7 +4013,7 @@ MOD81_02239CDC: ; 0x02239CDC bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _02239DDC ; =0x04000008 mov r0, #3 ldrh r2, [r1] @@ -5846,10 +5846,10 @@ _0223AAE8: bl FUN_020179E0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -5930,7 +5930,7 @@ MOD81_0223ABD8: ; 0x0223ABD8 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _0223ACCC ; =0x04000008 mov r0, #3 ldrh r2, [r1] @@ -6936,10 +6936,10 @@ MOD81_0223B264: ; 0x0223B264 bl MOD81_0223B4B0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x10 pop {r4, pc} .align 2, 0 @@ -7355,10 +7355,10 @@ _0223B6F0: bl FUN_020179E0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers bl FUN_02033E74 mov r0, #1 mov r1, #0x39 @@ -7442,7 +7442,7 @@ MOD81_0223B7E8: ; 0x0223B7E8 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _0223B8E8 ; =0x04000008 mov r0, #3 ldrh r2, [r1] @@ -8596,10 +8596,10 @@ _0223C14A: bl FUN_0201797C mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 @@ -8694,7 +8694,7 @@ MOD81_0223C1DC: ; 0x0223C1DC bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _0223C2E0 ; =0x04000008 mov r0, #3 ldrh r2, [r1] @@ -9228,7 +9228,7 @@ MOD81_0223C658: ; 0x0223C658 bl FUN_02016C18 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r2, _0223C81C ; =0x04000008 mov r0, #3 ldrh r3, [r2] @@ -9369,10 +9369,10 @@ MOD81_0223C658: ; 0x0223C658 bl MOD81_0223CBE0 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 str r0, [sp] ldr r0, _0223C824 ; =0x04000050 diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 925315fb..79cead66 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -625,8 +625,8 @@ _0222DA48: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -1194,10 +1194,10 @@ _0222DED4: blt _0222DED4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers bl FUN_02033E74 add sp, #0x5c pop {r4, r5, r6, r7, pc} @@ -1382,16 +1382,16 @@ MOD82_0222E050: ; 0x0222E050 bl MOD82_0222E35C mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r4] ldr r0, [r0, #0xc] bl FUN_02033288 @@ -1506,7 +1506,7 @@ MOD82_0222E15C: ; 0x0222E15C bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #0 bl FUN_02018744 @@ -1527,7 +1527,7 @@ MOD82_0222E15C: ; 0x0222E15C bl FUN_02016C18 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r5, _0222E238 ; =0x0222F8B0 add r3, sp, #0x1c ldmia r5!, {r0, r1} @@ -1545,7 +1545,7 @@ MOD82_0222E15C: ; 0x0222E15C bl FUN_02016C18 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r0, r4, #0 mov r1, #4 bl FUN_02018744 @@ -1566,7 +1566,7 @@ MOD82_0222E15C: ; 0x0222E15C bl FUN_02016C18 mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0 mov r1, #0x20 add r2, r0, #0 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 92b5807e..05e58fb2 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -449,13 +449,13 @@ _0222D8B2: bl FUN_020186B4 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0x1e add r0, r1, #0 add r0, #0xfe @@ -500,13 +500,13 @@ _0222D94A: _0222D974: mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x45 mov r1, #0xf lsl r0, r0, #2 @@ -3250,10 +3250,10 @@ _0222EFC2: bl MOD83_0222EA88 mov r0, #1 add r1, r0, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r1, #0xc6 lsl r1, r1, #6 ldr r0, [r4, #4] @@ -3453,7 +3453,7 @@ MOD83_0222F074: ; 0x0222F074 bl FUN_0202AC98 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, [r5, #4] add r1, r4, #0 bl MOD83_022391EC @@ -6306,7 +6306,7 @@ MOD83_022307B4: ; 0x022307B4 _022307C8: mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r5] mov r1, #0 bl FUN_02018744 @@ -6517,8 +6517,8 @@ MOD83_02230954: ; 0x02230954 mov r0, #0x56 bl FUN_02016B94 str r0, [r4] - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers bl MOD83_022331C0 ldr r0, [r4] bl MOD83_02230258 @@ -7606,10 +7606,10 @@ _022312EC: bl MOD83_022302B4 mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add r1, r4, #0 ldr r0, [r4] add r1, #0xdc @@ -10478,7 +10478,7 @@ _0223299E: bl FUN_020054C8 mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _02232B7C ; =0x00002B70 mov r1, #0 add r0, r4, r0 @@ -10544,7 +10544,7 @@ _02232A20: bl MOD83_0223243C mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0xa str r0, [r5] b _02232CF4 @@ -10570,7 +10570,7 @@ _02232A56: bl FUN_0200CCA4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 bl MOD83_022324A0 mov r0, #5 @@ -15840,7 +15840,7 @@ MOD83_022351F8: ; 0x022351F8 bl FUN_02008AA4 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #0x2c pop {pc} thumb_func_end MOD83_022351F8 @@ -17530,7 +17530,7 @@ _02235F48: ldr r0, _02235FB8 ; =gMain + 0x60 mov r1, #1 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay bl FUN_0201BD5C mov r1, #0x1e mov r0, #0 @@ -17865,7 +17865,7 @@ _02236148: bl FUN_02017CD0 mov r0, #2 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #7 mov r0, #0 lsl r1, r1, #6 @@ -17945,7 +17945,7 @@ _022362C2: blt _022362C2 mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, _0223632C ; =0x00000498 add r0, r6, r0 bl MOD83_02236298 @@ -18094,7 +18094,7 @@ _022363E2: ldr r0, _0223644C ; =gMain + 0x60 mov r1, #0 strb r1, [r0, #5] - bl FUN_0201E7A0 + bl GX_SwapDisplay ldr r0, [r6, #0x20] mov r1, #0 bl FUN_020178A0 @@ -18671,7 +18671,7 @@ _022368BA: bl Main_SetVBlankIntrCB mov r0, #0x10 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #4] cmp r0, #1 bne _022368FA @@ -18898,7 +18898,7 @@ _02236A88: bl Main_SetVBlankIntrCB mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add r0, r4, #0 mov r1, #0 bl MOD83_02235C4C @@ -23555,12 +23555,12 @@ _02238CA8: bne _02238D1A mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers b _02238D22 _02238D1A: mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers _02238D22: ldr r0, _02238D34 ; =MOD83_02238F00 mov r1, #0 diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s index 405c33ef..f1a8e8a2 100644 --- a/arm9/modules/84/asm/module_84_thumb1.s +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -38,8 +38,8 @@ _021D7516: add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -768,7 +768,7 @@ MOD84_021D7AC8: ; 0x021D7AC8 bl FUN_020AEDF4 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r1, _021D7B50 ; =0x04000008 mov r0, #3 ldrh r2, [r1] @@ -1348,10 +1348,10 @@ MOD84_021D7F94: ; 0x021D7F94 bl FUN_020200D8 mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers add sp, #0x30 pop {r4, pc} thumb_func_end MOD84_021D7F94 diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s index 048adbf9..66e7a196 100644 --- a/arm9/modules/84/asm/module_84_thumb2.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -1314,7 +1314,7 @@ _021D8AEC: ; jump table _021D8AF4: mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0 mov r0, #3 add r2, r1, #0 @@ -1362,7 +1362,7 @@ _021D8B4E: beq _021D8B66 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #4 mov r0, #1 pop {r3, r4, pc} @@ -1611,10 +1611,10 @@ _021D8D24: ; jump table _021D8D2C: mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r1, #0 mov r0, #3 add r2, r1, #0 @@ -1692,10 +1692,10 @@ _021D8DC8: beq _021D8DE6 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #1 pop {r3, r4, r5, pc} _021D8DE6: @@ -2473,7 +2473,7 @@ _021D93F4: ; jump table _021D93FC: mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0 mov r0, #3 add r2, r1, #0 @@ -2521,7 +2521,7 @@ _021D9456: beq _021D946E mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #4 mov r0, #1 pop {r3, r4, pc} @@ -3346,7 +3346,7 @@ _021D9AB4: ; jump table _021D9ABC: mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r1, #0 mov r0, #3 add r2, r1, #0 @@ -3394,7 +3394,7 @@ _021D9B16: beq _021D9B2E mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers add sp, #4 mov r0, #1 pop {r3, r4, pc} @@ -3989,7 +3989,7 @@ _021D9FBE: beq _021DA068 mov r0, #1 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers ldr r0, [r4, #0x10] mov r1, #0 bl FUN_020200A0 diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index 2fe33d18..18fd473f 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -12,8 +12,8 @@ MOD85_021D74E0: ; 0x021D74E0 add r1, r0, #0 bl Main_SetVBlankIntrCB bl FUN_02015F1C - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #2 mov r0, #3 mov r1, #0x4f @@ -273,34 +273,34 @@ MOD85_021D76FC: ; 0x021D76FC bl MOD85_021D7930 mov r0, #1 add r1, r0, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #2 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #4 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #8 mov r1, #0 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E6E4 + bl GX_EngineAToggleLayers mov r0, #1 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #2 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #4 mov r1, #0 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #8 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers mov r0, #0x10 mov r1, #1 - bl FUN_0201E74C + bl GX_EngineBToggleLayers ldr r0, _021D77D0 ; =0x04000008 mov r2, #3 ldrh r1, [r0] diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s index e3a93e0f..4b697f92 100644 --- a/arm9/modules/86/asm/module_86.s +++ b/arm9/modules/86/asm/module_86.s @@ -43,8 +43,8 @@ MOD86_021D74E0: ; 0x021D74E0 mov r0, #0 add r1, r0, #0 bl FUN_02015F34 - bl FUN_0201E6D8 - bl FUN_0201E740 + bl GX_DisableEngineALayers + bl GX_DisableEngineBLayers mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] @@ -65,7 +65,7 @@ MOD86_021D74E0: ; 0x021D74E0 ldr r0, _021D7588 ; =MOD86_021D76E0 add r1, r4, #0 bl Main_SetVBlankIntrCB - bl FUN_0201E788 + bl GX_BothDispOn mov r0, #1 pop {r3, r4, r5, pc} nop diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c new file mode 100644 index 00000000..a43a2277 --- /dev/null +++ b/arm9/src/GX_layers.c @@ -0,0 +1,110 @@ +#include "GX_layers.h" + + +struct GX_LayerData layer_data; + +THUMB_FUNC void FUN_0201E66C(const struct GraphicsBanks *banks) +{ + GX_ResetBankForBG(); + GX_ResetBankForBGExtPltt(); + GX_ResetBankForSubBG(); + FUN_020C6034(); + GX_ResetBankForOBJ(); + GX_ResetBankForOBJExtPltt(); + FUN_020C605C(); + GX_ResetBankForSubOBJ(); + GX_ResetBankForTex(); + GX_ResetBankForTexPltt(); + + GX_SetBankForBG(banks->bg); + GX_SetBankForBGExtPltt(banks->bgextpltt); + GX_SetBankForSubBG(banks->subbg); + GX_SetBankForSubBGExtPltt(banks->subbgextpltt); + GX_SetBankForOBJ(banks->obj); + GX_SetBankForOBJExtPltt(banks->objextpltt); + GX_SetBankForSubOBJ(banks->subobj); + GX_SetBankForSubOBJExtPltt(banks->subobjextpltt); + GX_SetBankForTex(banks->tex); + GX_SetBankForTexPltt(banks->texpltt); +} + + +THUMB_FUNC void GX_DisableEngineALayers() +{ + layer_data.EngineA_DISPCNT_LayerMask = 0; +} + +THUMB_FUNC void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle) +{ + if (layer_toggle == GX_LAYER_TOGGLE_ON) + { + if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) != 0) + { + return; + } + } + else + { + if ((layer_data.EngineA_DISPCNT_LayerMask & layer_mask) == 0) + { + return; + } + } + + reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineA_DISPCNT_LayerMask ^= layer_mask) << 8; +} + +THUMB_FUNC void GX_SetEngineALayers(u32 layer_mask) +{ + layer_data.EngineA_DISPCNT_LayerMask = layer_mask; + reg_GX_DISPCNT = (reg_GX_DISPCNT & 0xFFFFE0FF) | layer_mask << 8; +} + +THUMB_FUNC void GX_DisableEngineBLayers() +{ + layer_data.EngineB_DISPCNT_LayerMask = 0; +} + +THUMB_FUNC void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle) +{ + if (layer_toggle == GX_LAYER_TOGGLE_ON) + { + if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) != 0) + { + return; + } + } + else + { + if ((layer_data.EngineB_DISPCNT_LayerMask & layer_mask) == 0) + { + return; + } + } + + reg_GXS_DB_DISPCNT = (reg_GXS_DB_DISPCNT & 0xFFFFE0FF) | (layer_data.EngineB_DISPCNT_LayerMask ^= layer_mask) << 8; +} + +THUMB_FUNC void GX_BothDispOn() +{ + GX_DispOn(); + + reg_GXS_DB_DISPCNT |= 0x10000; +} + +THUMB_FUNC void GX_SwapDisplay() +{ + if (gMain.unk65 == 0) + { + reg_GX_POWCNT |= 0x8000; //send display A to lower screen + } + else + { + reg_GX_POWCNT &= 0xFFFF7FFF; // sned display A to upper screen + } +} + +THUMB_FUNC u32 GX_GetEngineALayers() +{ + return layer_data.EngineA_DISPCNT_LayerMask; +} \ No newline at end of file diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 7d1caccb..dfd7a91f 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -1,4 +1,5 @@ #include "error_message_reset.h" +#include "GX_layers.h" const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; @@ -13,8 +14,6 @@ const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; u32 sErrorMessagePrinterLock; extern void FUN_0200E3A0(PMLCDTarget, int); -extern void FUN_0201E6D8(); -extern void FUN_0201E7A0(); extern void FUN_0201E66C(const struct GraphicsBanks *banks); extern u32 *FUN_02016B94(u32 param0); extern void FUN_02016BBC(const struct GraphicsModes *modes); @@ -27,14 +26,12 @@ extern void FUN_02017FE4(u32 param0, u32 param1); extern void FUN_02019150(u32 *param0, u32 *param1, const u32 *param2); extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); -extern void FUN_0201E788(); extern void FUN_0200E394(u32 param0); extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); extern BOOL FUN_02032DAC(void); extern BOOL FUN_0202FB80(void); extern BOOL FUN_02033678(void); extern void FUN_02019178(u32 *param0); -extern void FUN_0201E740(); THUMB_FUNC void VBlankHandler() { @@ -66,8 +63,8 @@ THUMB_FUNC void PrintErrorMessageAndReset() Main_SetVBlankIntrCB(NULL, NULL); FUN_02015F34(NULL, NULL); - FUN_0201E6D8(); - FUN_0201E740(); + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); reg_GX_DISPCNT &= 0xFFFFE0FF; reg_GXS_DB_DISPCNT &= 0xFFFFE0FF; @@ -75,7 +72,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() FUN_0201669C(4, 8); gMain.unk65 = 0; - FUN_0201E7A0(); + GX_SwapDisplay(); reg_G2_BLDCNT = 0; reg_G2S_DB_BLDCNT = 0; @@ -109,7 +106,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() AddTextPrinterParameterized((u32)buf, 0, (const u16 *)str, 0, 0, 0, NULL); // wtf String_dtor(str); - FUN_0201E788(); + GX_BothDispOn(); FUN_0200E394(0); FUN_0200E394(1); FUN_0200A274(0, 0x3f, 3); -- cgit v1.2.3 From 0faaad19be1e1b318404e9b9e8a7f1eda672d5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 23 Mar 2021 09:52:14 +0100 Subject: add missing declaration --- arm9/asm/unk_02033F50.s | 2 +- arm9/asm/unk_02034188.s | 2 +- arm9/asm/unk_02048120.s | 2 +- arm9/asm/unk_020484A8.s | 2 +- arm9/asm/unk_0206C700.s | 2 +- arm9/asm/unk_0206F3FC.s | 2 +- arm9/asm/unk_020772F0.s | 2 +- arm9/asm/unk_02079C70.s | 2 +- arm9/asm/unk_02086414.s | 2 +- arm9/asm/unk_02089498.s | 2 +- arm9/asm/unk_02089960.s | 2 +- arm9/asm/unk_02089D90.s | 2 +- arm9/asm/unk_02089F24.s | 4 ++-- arm9/global.inc | 2 +- arm9/modules/05/asm/mod05_021D74E0.s | 2 +- arm9/modules/06/asm/module_06.s | 4 ++-- arm9/modules/07/asm/module_07.s | 2 +- arm9/modules/11/asm/module_11_thumb1.s | 6 +++--- arm9/modules/11/asm/module_11_thumb2.s | 2 +- arm9/modules/12/asm/module_12.s | 8 ++++---- arm9/modules/14/asm/module_14.s | 2 +- arm9/modules/15/asm/module_15.s | 2 +- arm9/modules/16/asm/module_16.s | 2 +- arm9/modules/17/asm/module_17.s | 2 +- arm9/modules/18/asm/module_18.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 | 2 +- arm9/modules/57/asm/module_57.s | 2 +- arm9/modules/58/asm/module_58.s | 2 +- arm9/modules/59/asm/mod59_021D74E0_asm.s | 2 +- arm9/modules/59/asm/mod59_021D9868.s | 2 +- arm9/modules/60/asm/module_60.s | 2 +- arm9/modules/61/asm/module_61.s | 2 +- arm9/modules/62/asm/module_62.s | 2 +- arm9/modules/63/asm/mod63_021D74E0.s | 2 +- arm9/modules/63/asm/mod63_021D8890.s | 6 +++--- arm9/modules/64/asm/module_64.s | 2 +- arm9/modules/65/asm/module_65.s | 4 ++-- arm9/modules/66/asm/module_66.s | 2 +- arm9/modules/67/asm/module_67.s | 2 +- arm9/modules/68/asm/module_68.s | 2 +- arm9/modules/69/asm/module_69.s | 2 +- arm9/modules/70/asm/module_70.s | 2 +- arm9/modules/71/asm/module_71.s | 2 +- arm9/modules/73/asm/module_73.s | 2 +- arm9/modules/74/asm/module_74.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 | 2 +- arm9/modules/78/asm/module_78.s | 2 +- arm9/modules/80/asm/module_80.s | 2 +- arm9/modules/81/asm/module_81.s | 14 +++++++------- arm9/modules/82/asm/module_82.s | 2 +- arm9/modules/83/asm/module_83.s | 8 ++++---- arm9/modules/84/asm/module_84_thumb1.s | 2 +- arm9/modules/85/asm/module_85.s | 2 +- arm9/modules/86/asm/module_86.s | 2 +- arm9/src/GX_layers.c | 4 ++-- arm9/src/error_message_reset.c | 3 +-- 61 files changed, 82 insertions(+), 83 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02033F50.s b/arm9/asm/unk_02033F50.s index 1ff53c51..a5439dfe 100644 --- a/arm9/asm/unk_02033F50.s +++ b/arm9/asm/unk_02033F50.s @@ -130,7 +130,7 @@ _02033FA4: and r1, r2 str r1, [r0, #0x0] ldr r0, _02034170 ; =UNK_020EECD0 - bl FUN_0201E66C + bl GX_SetBanks add r0, r4, #0x0 bl FUN_02016B94 add r6, r0, #0x0 diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s index 10c67e5a..44144564 100644 --- a/arm9/asm/unk_02034188.s +++ b/arm9/asm/unk_02034188.s @@ -78,7 +78,7 @@ FUN_02034188: ; 0x02034188 and r0, r1 str r0, [r2, #0x0] ldr r0, _02034380 ; =UNK_020EED2C - bl FUN_0201E66C + bl GX_SetBanks add r0, r4, #0x0 bl FUN_02016B94 str r0, [sp, #0x10] diff --git a/arm9/asm/unk_02048120.s b/arm9/asm/unk_02048120.s index 3c92ba05..6f303045 100644 --- a/arm9/asm/unk_02048120.s +++ b/arm9/asm/unk_02048120.s @@ -32,7 +32,7 @@ FUN_02048120: ; 0x02048120 sub sp, #0x8 add r4, r0, #0x0 ldr r0, _02048158 ; =UNK_020F465C - bl FUN_0201E66C + bl GX_SetBanks ldr r0, _0204815C ; =UNK_020F4630 bl FUN_02016BBC ldr r2, _02048160 ; =UNK_020F4640 diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s index 833d62c0..4750c7ea 100644 --- a/arm9/asm/unk_020484A8.s +++ b/arm9/asm/unk_020484A8.s @@ -345,7 +345,7 @@ FUN_02048764: ; 0x02048764 add r0, r1, #0x0 bl FUN_0201901C ldr r0, _020487D4 ; =UNK_020F46B0 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _020487D8 ; =0x04000304 ldrh r1, [r2, #0x0] lsr r0, r2, #0xb diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 9d542d37..879f7f48 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2247,7 +2247,7 @@ _0206D9C6: sub r2, r2, #0x1 bne _0206D9C6 add r0, sp, #0x3c - bl FUN_0201E66C + bl GX_SetBanks mov r1, #0x6 mov r2, #0x2 mov r0, #0x0 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 9c619fea..b7b79b0e 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1064,7 +1064,7 @@ _0206FB8A: sub r2, r2, #0x1 bne _0206FB8A add r0, sp, #0x0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 2586d0f5..a5d7b26d 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -1697,7 +1697,7 @@ _02077B2E: sub r2, r2, #0x1 bne _02077B2E add r0, sp, #0x0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index ec9c64ac..722c8144 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -381,7 +381,7 @@ _02079F62: sub r2, r2, #0x1 bne _02079F62 add r0, sp, #0x0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index ca93020a..7e7745fe 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -261,7 +261,7 @@ _0208655C: sub r2, r2, #0x1 bne _0208655C add r0, sp, #0x2c - bl FUN_0201E66C + bl GX_SetBanks mov r1, #0x6 mov r2, #0x2 mov r0, #0x0 diff --git a/arm9/asm/unk_02089498.s b/arm9/asm/unk_02089498.s index 4d0675a9..b4c7a133 100644 --- a/arm9/asm/unk_02089498.s +++ b/arm9/asm/unk_02089498.s @@ -225,7 +225,7 @@ _02089628: sub r2, r2, #0x1 bne _02089628 add r0, sp, #0x34 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4, #0x0] bl FUN_02016B94 add r3, sp, #0x24 diff --git a/arm9/asm/unk_02089960.s b/arm9/asm/unk_02089960.s index c0b5f4d0..4502d1f9 100644 --- a/arm9/asm/unk_02089960.s +++ b/arm9/asm/unk_02089960.s @@ -165,7 +165,7 @@ _02089A78: sub r2, r2, #0x1 bne _02089A78 add r0, sp, #0x34 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4, #0x0] bl FUN_02016B94 add r3, sp, #0x24 diff --git a/arm9/asm/unk_02089D90.s b/arm9/asm/unk_02089D90.s index 0b5c5774..92b9e987 100644 --- a/arm9/asm/unk_02089D90.s +++ b/arm9/asm/unk_02089D90.s @@ -77,7 +77,7 @@ FUN_02089D90: ; 0x02089D90 and r0, r1 str r0, [r2, #0x0] ldr r0, _02089F0C ; =UNK_020FF418 - bl FUN_0201E66C + bl GX_SetBanks add r0, r4, #0x0 bl FUN_02016B94 add r5, r0, #0x0 diff --git a/arm9/asm/unk_02089F24.s b/arm9/asm/unk_02089F24.s index 340fa64d..b678254c 100644 --- a/arm9/asm/unk_02089F24.s +++ b/arm9/asm/unk_02089F24.s @@ -81,7 +81,7 @@ FUN_02089F24: ; 0x02089F24 and r0, r1 str r0, [r2, #0x0] ldr r0, _0208A0A0 ; =UNK_020FF418 - bl FUN_0201E66C + bl GX_SetBanks add r0, r4, #0x0 bl FUN_02016B94 add r5, r0, #0x0 @@ -250,7 +250,7 @@ _0208A0C8: and r1, r2 str r1, [r0, #0x0] ldr r0, _0208A240 ; =UNK_020FF474 - bl FUN_0201E66C + bl GX_SetBanks add r0, r4, #0x0 bl FUN_02016B94 add r5, r0, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 186131be..d45b7243 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1230,7 +1230,7 @@ .extern FUN_0201E230 .extern FUN_0201E258 .extern FUN_0201E28C -.extern FUN_0201E66C +.extern GX_SetBanks .extern GX_DisableEngineALayers .extern GX_EngineAToggleLayers .extern GX_SetEngineALayers diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index 5fb56ea8..8488759b 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -584,7 +584,7 @@ _021D7A0A: sub r2, r2, #1 bne _021D7A0A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .balign 4, 0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index e6113936..18de2954 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -126,7 +126,7 @@ _0223977A: sub r2, r2, #1 bne _0223977A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 @@ -225,7 +225,7 @@ MOD06_02239840: ; 0x02239840 add r4, r1, #0 add r5, r0, #0 add r0, r4, #4 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4] ldr r0, [r0, #8] bl MOD06_02239864 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index bd4fab74..3cef2d24 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -110,7 +110,7 @@ _02211F1E: sub r2, r2, #1 bne _02211F1E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index 95320fb1..32981b60 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -1434,7 +1434,7 @@ _0222E282: sub r2, r2, #1 bne _0222E282 add r0, sp, #0x20 - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 @@ -3127,7 +3127,7 @@ _0222F056: sub r2, r2, #1 bne _0222F056 add r0, sp, #0x28 - bl FUN_0201E66C + bl GX_SetBanks _0222F064: ldr r1, _0222F0B8 ; =0x000023FB ldrb r2, [r4, r1] @@ -3146,7 +3146,7 @@ _0222F07A: sub r2, r2, #1 bne _0222F07A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks _0222F088: add r0, r4, #0 add r0, #0x88 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 580ec810..3e416af6 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -59,7 +59,7 @@ _0222F30E: sub r2, r2, #1 bne _0222F30E add r0, sp, #0x40 - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index aaa6b90c..f717789a 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -599,7 +599,7 @@ _0222DB60: sub r2, r2, #1 bne _0222DB60 add r0, sp, #0x10 - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 @@ -3828,7 +3828,7 @@ _0222F558: sub r2, r2, #1 bne _0222F558 add r0, sp, #0x2c - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 @@ -5774,7 +5774,7 @@ _02230584: sub r2, r2, #1 bne _02230584 add r0, sp, #0x10 - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 @@ -41764,7 +41764,7 @@ _02241874: sub r2, r2, #1 bne _02241874 add r0, sp, #0x2c - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 3c2e533d..edbb6d86 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -12835,7 +12835,7 @@ MOD14_021DDA38: ; 0x021DDA38 add r5, r0, #0 ldr r0, _021DDB20 ; =MOD14_021E63A4 add r4, r1, #0 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _021DDB24 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index 339be333..560be120 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -3110,7 +3110,7 @@ MOD15_021D8C30: ; 0x021D8C30 add r2, r0, #0 bl GX_SetGraphicsMode ldr r0, _021D8C98 ; =0x021DB964 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, _021D8C9C ; =0x021DB8C8 bl FUN_02016BBC mov r1, #0 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index a320f179..26ae4fbf 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -1984,7 +1984,7 @@ _021D840E: sub r2, r2, #1 bne _021D840E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 910aa687..82398e6b 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -1163,7 +1163,7 @@ _021D7D12: sub r2, r2, #1 bne _021D7D12 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 58f1c9a6..d0f6db33 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -1467,7 +1467,7 @@ _0223A194: sub r2, r2, #1 bne _0223A194 add r0, sp, #0x80 - bl FUN_0201E66C + bl GX_SetBanks ldr r5, _0223A2A8 ; =0x02250000 add r3, sp, #0x70 add r2, r3, #0 diff --git a/arm9/modules/53/asm/module_53.s b/arm9/modules/53/asm/module_53.s index cac73593..b4fd4d80 100644 --- a/arm9/modules/53/asm/module_53.s +++ b/arm9/modules/53/asm/module_53.s @@ -462,7 +462,7 @@ _021D78DA: sub r2, r2, #1 bne _021D78DA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s index fa7d0581..904d1c7f 100644 --- a/arm9/modules/54/asm/module_54.s +++ b/arm9/modules/54/asm/module_54.s @@ -428,7 +428,7 @@ _021D787E: sub r2, r2, #1 bne _021D787E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s index 3e673f3d..0d96ce13 100644 --- a/arm9/modules/55/asm/module_55.s +++ b/arm9/modules/55/asm/module_55.s @@ -385,11 +385,11 @@ _021D7808: .word 0x00003FF8 thumb_func_start MOD55_021D780C MOD55_021D780C: ; 0x021D780C - ldr r3, _021D7814 ; =FUN_0201E66C + ldr r3, _021D7814 ; =GX_SetBanks ldr r0, _021D7818 ; =0x021DA458 bx r3 nop -_021D7814: .word FUN_0201E66C +_021D7814: .word GX_SetBanks _021D7818: .word MOD55_021DA458 thumb_func_end MOD55_021D780C diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index b01ccefe..d1046c7b 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -603,7 +603,7 @@ _022122BE: sub r2, r2, #1 bne _022122BE add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s index 3d600303..39e977cc 100644 --- a/arm9/modules/57/asm/module_57.s +++ b/arm9/modules/57/asm/module_57.s @@ -635,7 +635,7 @@ _021D7A1E: sub r2, r2, #1 bne _021D7A1E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/58/asm/module_58.s b/arm9/modules/58/asm/module_58.s index f1b48055..93c1c39d 100644 --- a/arm9/modules/58/asm/module_58.s +++ b/arm9/modules/58/asm/module_58.s @@ -315,7 +315,7 @@ _021D9CE6: sub r2, r2, #1 bne _021D9CE6 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 45f744de..c86d2c94 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -278,7 +278,7 @@ _021D7798: sub r2, r2, #1 bne _021D7798 add r0, sp, #0x50 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4] bl FUN_02016B94 add r3, sp, #0x40 diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s index f115dd71..6d2d6e6b 100644 --- a/arm9/modules/59/asm/mod59_021D9868.s +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -229,7 +229,7 @@ _021D9A2C: sub r2, r2, #1 bne _021D9A2C add r0, sp, #0x90 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4] bl FUN_02016B94 add r3, sp, #0x80 diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s index 816328a0..418fa446 100644 --- a/arm9/modules/60/asm/module_60.s +++ b/arm9/modules/60/asm/module_60.s @@ -369,7 +369,7 @@ _021D77BE: sub r2, r2, #1 bne _021D77BE add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s index fb7d1bec..3afc1e03 100644 --- a/arm9/modules/61/asm/module_61.s +++ b/arm9/modules/61/asm/module_61.s @@ -907,7 +907,7 @@ _021D7BBA: sub r2, r2, #1 bne _021D7BBA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 12f7f3bb..d65fb117 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -7365,7 +7365,7 @@ _02230F90: sub r2, r2, #1 bne _02230F90 add r0, sp, #0x10 - bl FUN_0201E66C + bl GX_SetBanks mov r1, #6 mov r2, #2 mov r0, #0 diff --git a/arm9/modules/63/asm/mod63_021D74E0.s b/arm9/modules/63/asm/mod63_021D74E0.s index 6aa32be7..a323b642 100644 --- a/arm9/modules/63/asm/mod63_021D74E0.s +++ b/arm9/modules/63/asm/mod63_021D74E0.s @@ -420,7 +420,7 @@ _021D7842: sub r2, r2, #1 bne _021D7842 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index e4ec2bcf..e501157b 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -16,7 +16,7 @@ _021D889A: sub r2, r2, #1 bne _021D889A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 @@ -36,7 +36,7 @@ _021D88BA: sub r2, r2, #1 bne _021D88BA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 @@ -56,7 +56,7 @@ _021D88DA: sub r2, r2, #1 bne _021D88DA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/64/asm/module_64.s b/arm9/modules/64/asm/module_64.s index f65c4f78..0ade6b6c 100644 --- a/arm9/modules/64/asm/module_64.s +++ b/arm9/modules/64/asm/module_64.s @@ -404,7 +404,7 @@ _021D7846: sub r2, r2, #1 bne _021D7846 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index e2741c41..229a9214 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -740,7 +740,7 @@ _021D7A76: sub r2, r2, #1 bne _021D7A76 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 @@ -3055,7 +3055,7 @@ _021D8CC2: sub r2, r2, #1 bne _021D8CC2 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/66/asm/module_66.s b/arm9/modules/66/asm/module_66.s index dc3ae898..e0b21bf2 100644 --- a/arm9/modules/66/asm/module_66.s +++ b/arm9/modules/66/asm/module_66.s @@ -169,7 +169,7 @@ _021D7612: sub r2, r2, #1 bne _021D7612 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 379ba223..60757798 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -201,7 +201,7 @@ _021D768A: sub r2, r2, #1 bne _021D768A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index a227032e..5c2c1740 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -213,7 +213,7 @@ _021D76AA: sub r2, r2, #1 bne _021D76AA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index a7c2807d..33fafb4f 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -738,7 +738,7 @@ MOD69_0222DBAC: ; 0x0222DBAC bl FUN_02016B94 str r0, [r4, #0x10] ldr r0, _0222DCF4 ; =0x0222F8CC - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0222DCF8 ; =0x04000304 ldr r0, _0222DCFC ; =0xFFFF7FFF ldrh r1, [r2] diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index 30f38fe4..a0966fec 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -803,7 +803,7 @@ MOD70_021D7AF4: ; 0x021D7AF4 sub sp, #0x10 add r5, r0, #0 ldr r0, _021D7BF8 ; =0x021D8284 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _021D7BFC ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 42be4647..ac2559a6 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1856,7 +1856,7 @@ _0222E562: sub r2, r2, #1 bne _0222E562 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/73/asm/module_73.s b/arm9/modules/73/asm/module_73.s index cadaa246..d5105d7e 100644 --- a/arm9/modules/73/asm/module_73.s +++ b/arm9/modules/73/asm/module_73.s @@ -2425,7 +2425,7 @@ _021D88CE: sub r2, r2, #1 bne _021D88CE add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/74/asm/module_74.s b/arm9/modules/74/asm/module_74.s index 0a07e4b4..1fce128e 100644 --- a/arm9/modules/74/asm/module_74.s +++ b/arm9/modules/74/asm/module_74.s @@ -329,7 +329,7 @@ _021D776E: sub r2, r2, #1 bne _021D776E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index c05b6059..1a9861c9 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -558,7 +558,7 @@ _021E703E: sub r2, r2, #1 bne _021E703E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 9d86b835..13ddf00c 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -275,7 +275,7 @@ _021D771A: sub r2, r2, #1 bne _021D771A add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/77/asm/module_77.s b/arm9/modules/77/asm/module_77.s index 8c158d12..a5eaa94b 100644 --- a/arm9/modules/77/asm/module_77.s +++ b/arm9/modules/77/asm/module_77.s @@ -857,7 +857,7 @@ _021D7C2E: sub r2, r2, #1 bne _021D7C2E add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/78/asm/module_78.s b/arm9/modules/78/asm/module_78.s index 2f4531da..5d9f4625 100644 --- a/arm9/modules/78/asm/module_78.s +++ b/arm9/modules/78/asm/module_78.s @@ -318,7 +318,7 @@ _021D7776: sub r2, r2, #1 bne _021D7776 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 3b2cdd0d..f0b34ee0 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -1739,7 +1739,7 @@ _0222E322: sub r2, r2, #1 bne _0222E322 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index f8dca2fd..94767f70 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -2151,7 +2151,7 @@ MOD81_02238E44: ; 0x02238E44 sub sp, #0x1c add r4, r0, #0 ldr r0, _02239040 ; =0x0223D054 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _02239044 ; =0x04000304 ldr r0, _02239048 ; =0xFFFF7FFF ldrh r1, [r2] @@ -3634,7 +3634,7 @@ MOD81_022399FC: ; 0x022399FC sub sp, #0x10 add r4, r0, #0 ldr r0, _02239C78 ; =0x0223D0EC - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _02239C7C ; =0x04000304 ldr r0, _02239C80 ; =0xFFFF7FFF ldrh r1, [r2] @@ -5703,7 +5703,7 @@ MOD81_0223AA68: ; 0x0223AA68 sub sp, #0x14 add r4, r0, #0 ldr r0, _0223ABAC ; =0x0223D158 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0223ABB0 ; =0x04000304 ldr r0, _0223ABB4 ; =0xFFFF7FFF ldrh r1, [r2] @@ -6725,7 +6725,7 @@ MOD81_0223B264: ; 0x0223B264 sub sp, #0x10 add r4, r0, #0 ldr r0, _0223B45C ; =0x0223D1EC - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0223B460 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb @@ -7212,7 +7212,7 @@ MOD81_0223B670: ; 0x0223B670 sub sp, #0x14 add r4, r0, #0 ldr r0, _0223B7C0 ; =0x0223D258 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0223B7C4 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb @@ -8374,7 +8374,7 @@ MOD81_0223BF74: ; 0x0223BF74 sub sp, #0x10 add r4, r0, #0 ldr r0, _0223C18C ; =0x0223D2EC - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0223C190 ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb @@ -9208,7 +9208,7 @@ MOD81_0223C658: ; 0x0223C658 sub sp, #0x1c add r4, r0, #0 ldr r0, _0223C808 ; =0x0223D374 - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _0223C80C ; =0x04000304 ldrh r1, [r2] lsr r0, r2, #0xb diff --git a/arm9/modules/82/asm/module_82.s b/arm9/modules/82/asm/module_82.s index 79cead66..b9d0df31 100644 --- a/arm9/modules/82/asm/module_82.s +++ b/arm9/modules/82/asm/module_82.s @@ -926,7 +926,7 @@ _0222DCEE: sub r2, r2, #1 bne _0222DCEE add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 05e58fb2..7e36aa68 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -624,7 +624,7 @@ _0222DA5C: ldmia r3!, {r0, r1} stmia r2!, {r0, r1} add r0, sp, #0x18 - bl FUN_0201E66C + bl GX_SetBanks add r0, sp, #8 bl FUN_02016BBC mov r1, #0 @@ -2511,7 +2511,7 @@ _0222E960: ldmia r3!, {r0, r1} stmia r2!, {r0, r1} add r0, sp, #0x20 - bl FUN_0201E66C + bl GX_SetBanks add r0, sp, #0x10 bl FUN_02016BBC mov r1, #0 @@ -11433,7 +11433,7 @@ _022331CA: sub r2, r2, #1 bne _022331CA add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 @@ -17524,7 +17524,7 @@ _02235F48: sub r2, r2, #1 bne _02235F48 add r0, sp, #0x10 - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4, #0x20] bl MOD83_02235E68 ldr r0, _02235FB8 ; =gMain + 0x60 diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s index f1a8e8a2..53dfe036 100644 --- a/arm9/modules/84/asm/module_84_thumb1.s +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -565,7 +565,7 @@ MOD84_021D7968: ; 0x021D7968 bl FUN_02016B94 str r0, [r4, #4] ldr r0, _021D7A60 ; =0x021DA68C - bl FUN_0201E66C + bl GX_SetBanks ldr r2, _021D7A64 ; =0x04000304 ldr r0, _021D7A68 ; =0xFFFF7FFF ldrh r1, [r2] diff --git a/arm9/modules/85/asm/module_85.s b/arm9/modules/85/asm/module_85.s index 18fd473f..adb49508 100644 --- a/arm9/modules/85/asm/module_85.s +++ b/arm9/modules/85/asm/module_85.s @@ -383,7 +383,7 @@ _021D7802: sub r2, r2, #1 bne _021D7802 add r0, sp, #0 - bl FUN_0201E66C + bl GX_SetBanks add sp, #0x28 pop {r4, pc} .align 2, 0 diff --git a/arm9/modules/86/asm/module_86.s b/arm9/modules/86/asm/module_86.s index 4b697f92..08651acb 100644 --- a/arm9/modules/86/asm/module_86.s +++ b/arm9/modules/86/asm/module_86.s @@ -262,7 +262,7 @@ _021D76F8: sub r2, r2, #1 bne _021D76F8 add r0, sp, #0x2c - bl FUN_0201E66C + bl GX_SetBanks ldr r0, [r4] bl FUN_02016B94 add r3, sp, #0x1c diff --git a/arm9/src/GX_layers.c b/arm9/src/GX_layers.c index a43a2277..ce188876 100644 --- a/arm9/src/GX_layers.c +++ b/arm9/src/GX_layers.c @@ -3,7 +3,7 @@ struct GX_LayerData layer_data; -THUMB_FUNC void FUN_0201E66C(const struct GraphicsBanks *banks) +THUMB_FUNC void GX_SetBanks(const struct GraphicsBanks *banks) { GX_ResetBankForBG(); GX_ResetBankForBGExtPltt(); @@ -107,4 +107,4 @@ THUMB_FUNC void GX_SwapDisplay() THUMB_FUNC u32 GX_GetEngineALayers() { return layer_data.EngineA_DISPCNT_LayerMask; -} \ No newline at end of file +} diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index dfd7a91f..3a727924 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -14,7 +14,6 @@ const struct GraphicsBanks UNK_020FF4D8 = { bg : 3 }; u32 sErrorMessagePrinterLock; extern void FUN_0200E3A0(PMLCDTarget, int); -extern void FUN_0201E66C(const struct GraphicsBanks *banks); extern u32 *FUN_02016B94(u32 param0); extern void FUN_02016BBC(const struct GraphicsModes *modes); extern void FUN_02016C18(u32 *param0, u32 param1, void *param2, u32 param3); @@ -79,7 +78,7 @@ THUMB_FUNC void PrintErrorMessageAndReset() reg_GX_DISPCNT &= 0xFFFF1FFF; reg_GXS_DB_DISPCNT &= 0xFFFF1FFF; - FUN_0201E66C(&UNK_020FF4D8); + GX_SetBanks(&UNK_020FF4D8); ptr = FUN_02016B94(0); FUN_02016BBC(&UNK_020FF4AC); -- cgit v1.2.3 From 963908bc38d5bddeee08acf77619ee23c2680482 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 23 Mar 2021 22:43:11 +0000 Subject: more scrcmd, struct changes --- arm9/asm/scrcmd_asm.s | 479 +----------------------------------------------- arm9/asm/unk_02038C78.s | 20 +- arm9/global.inc | 20 +- arm9/src/scrcmd.c | 228 ++++++++++++++++++++++- arm9/src/scrcmd_coins.c | 4 +- 5 files changed, 249 insertions(+), 502 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index dcf84948..c10ba0f5 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -1,11 +1,11 @@ .include "asm/macros.inc" .include "global.inc" - .extern UNK_020F34E0 .extern UNK_020F34FC .extern UNK_020F3538 .extern gMain .extern FUN_0203A2F0 + .extern FUN_0203AD2C .section .bss @@ -15,483 +15,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203AA0C -FUN_0203AA0C: ; 0x0203AA0C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r1, [r5, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, _0203AA88 ; =gMain - ldr r1, _0203AA8C ; =0x0000FFFF - ldr r2, [r0, #0x48] - mov r0, #0x3 - add r3, r2, #0x0 - tst r3, r0 - beq _0203AA36 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} -_0203AA36: - mov r3, #0x40 - tst r3, r2 - beq _0203AA40 - mov r1, #0x0 - b _0203AA5C -_0203AA40: - mov r3, #0x80 - tst r3, r2 - beq _0203AA4A - mov r1, #0x1 - b _0203AA5C -_0203AA4A: - mov r3, #0x20 - tst r3, r2 - beq _0203AA54 - mov r1, #0x2 - b _0203AA5C -_0203AA54: - mov r3, #0x10 - tst r3, r2 - beq _0203AA5C - add r1, r0, #0x0 -_0203AA5C: - ldr r0, _0203AA8C ; =0x0000FFFF - cmp r1, r0 - beq _0203AA74 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0x38] - bl FUN_02055304 - mov r0, #0x0 - strh r0, [r4, #0x0] - mov r0, #0x1 - pop {r3-r5, pc} -_0203AA74: - mov r0, #0x1 - lsl r0, r0, #0xa - tst r0, r2 - beq _0203AA82 - mov r0, #0x1 - strh r0, [r4, #0x0] - pop {r3-r5, pc} -_0203AA82: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203AA88: .word gMain -_0203AA8C: .word 0x0000FFFF - - thumb_func_start FUN_0203AA90 -FUN_0203AA90: ; 0x0203AA90 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_02039460 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203AAA0 -FUN_0203AAA0: ; 0x0203AAA0 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0x2 - add r0, r4, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r7, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - mov r0, #0x4 - str r0, [sp, #0x4] - ldr r0, [r4, #0x8] - ldr r2, _0203AAF4 ; =0x000003D9 - mov r1, #0x3 - mov r3, #0xb - bl FUN_0200CB00 - mov r0, #0x4 - str r0, [sp, #0x0] - ldr r0, [r4, #0x8] - ldr r1, _0203AAF8 ; =UNK_020F34E0 - ldr r2, _0203AAF4 ; =0x000003D9 - mov r3, #0xb - bl Std_CreateYesNoMenu - str r0, [r6, #0x0] - ldr r1, _0203AAFC ; =FUN_0203AB00 - add r0, r5, #0x0 - str r7, [r5, #0x64] - bl SetupNativeScript - mov r0, #0x1 - add sp, #0x8 - pop {r3-r7, pc} - nop -_0203AAF4: .word 0x000003D9 -_0203AAF8: .word UNK_020F34E0 -_0203AAFC: .word FUN_0203AB00 - - thumb_func_start FUN_0203AB00 -FUN_0203AB00: ; 0x0203AB00 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x2 - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r5, #0x64] - add r4, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - mov r1, #0x4 - bl FUN_020021AC - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - bne _0203AB34 - mov r0, #0x0 - pop {r4-r6, pc} -_0203AB34: - cmp r0, #0x0 - bne _0203AB3C - mov r0, #0x0 - b _0203AB3E -_0203AB3C: - mov r0, #0x1 -_0203AB3E: - strh r0, [r5, #0x0] - mov r0, #0x1 - pop {r4-r6, pc} - - thumb_func_start FUN_0203AB44 -FUN_0203AB44: ; 0x0203AB44 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - mov r1, #0x12 - bl FUN_02039438 - add r5, r0, #0x0 - ldr r1, _0203AB70 ; =0x000003E2 - add r0, r4, #0x0 - bl FUN_0200D858 - str r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - nop -_0203AB70: .word 0x000003E2 - - thumb_func_start FUN_0203AB74 -FUN_0203AB74: ; 0x0203AB74 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x12 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl FUN_0200DBFC - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0203AB8C -FUN_0203AB8C: ; 0x0203AB8C - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1BF8 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AC14 -FUN_0203AC14: ; 0x0203AC14 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1BF8 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AC9C -FUN_0203AC9C: ; 0x0203AC9C - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r3, r1, #0x1 - str r3, [r4, #0x8] - ldrb r1, [r1, #0x0] - add r2, r3, #0x1 - str r2, [r4, #0x8] - ldrb r2, [r3, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E1C4C - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0203ACC4 -FUN_0203ACC4: ; 0x0203ACC4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r4, #0x0] - add r1, r6, #0x0 - bl MOD05_021E1C4C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0203AD08 -FUN_0203AD08: ; 0x0203AD08 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1C54 - ldr r1, _0203AD28 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AD28: .word FUN_0203AD2C - - thumb_func_start FUN_0203AD2C -FUN_0203AD2C: ; 0x0203AD2C - push {r3, lr} - add r1, r0, #0x0 - ldr r1, [r1, #0x64] - add r0, #0x80 - lsl r1, r1, #0x10 - ldr r0, [r0, #0x0] - lsr r1, r1, #0x10 - bl GetVarPointer - ldrh r1, [r0, #0x0] - ldr r0, _0203AD50 ; =0x0000EEEE - cmp r1, r0 - beq _0203AD4A - mov r0, #0x1 - pop {r3, pc} -_0203AD4A: - mov r0, #0x0 - pop {r3, pc} - nop -_0203AD50: .word 0x0000EEEE - - thumb_func_start FUN_0203AD54 -FUN_0203AD54: ; 0x0203AD54 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1C54 - ldr r1, _0203AD74 ; =FUN_0203AD78 - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AD74: .word FUN_0203AD78 - - thumb_func_start FUN_0203AD78 -FUN_0203AD78: ; 0x0203AD78 - push {r4-r6, lr} - add r1, r0, #0x0 - add r0, #0x80 - ldr r1, [r1, #0x64] - ldr r5, [r0, #0x0] - lsl r1, r1, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - ldrh r1, [r4, #0x0] - ldr r0, _0203ADC0 ; =0x0000EEEE - cmp r1, r0 - bne _0203ADBC - ldr r0, [r5, #0x78] - bl FUN_02052714 - cmp r0, #0x0 - beq _0203ADB8 - mov r0, #0x8 - strh r0, [r4, #0x0] - ldr r0, [r6, #0x0] - bl MOD05_021E1ECC - mov r0, #0x1 - pop {r4-r6, pc} -_0203ADB8: - mov r0, #0x0 - pop {r4-r6, pc} -_0203ADBC: - mov r0, #0x1 - pop {r4-r6, pc} - .balign 4 -_0203ADC0: .word 0x0000EEEE - thumb_func_start FUN_0203ADC4 FUN_0203ADC4: ; 0x0203ADC4 push {r4-r7, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index c9a8bdd6..7051e8ff 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -209,14 +209,14 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0039 .word ScrCmd_Unk003A .word ScrCmd_Unk003B - .word FUN_0203AA90 + .word ScrCmd_Menu .word ScrCmd_ScrollBg - .word FUN_0203AAA0 + .word ScrCmd_YesNoMenu .word FUN_0203DEA8 - .word FUN_0203AB8C - .word FUN_0203AC14 - .word FUN_0203AC9C - .word FUN_0203AD08 + .word ScrCmd_Unk0040 + .word ScrCmd_Unk0041 + .word ScrCmd_Unk0042 + .word ScrCmd_Unk0043 .word FUN_0203ADC4 .word FUN_0203AE4C .word FUN_0203AED4 @@ -546,8 +546,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203DAE8 .word FUN_0203DB38 .word FUN_0203DB88 - .word FUN_0203AB44 - .word FUN_0203AB74 + .word ScrCmd_ShowSaveClock + .word ScrCmd_HideSaveClock .word FUN_0203DBD4 .word ScrCmd_WaitButtonABTime .word FUN_0203B8E4 @@ -818,7 +818,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02042A48 .word FUN_02042A98 .word FUN_0203D7DC - .word FUN_0203ACC4 + .word ScrCmd_Unk029D .word FUN_0203F8C0 .word FUN_0203F954 .word FUN_0204190C @@ -846,7 +846,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203FC1C .word FUN_020451D0 .word FUN_02042000 - .word FUN_0203AD54 + .word ScrCmd_Unk02B9 .word FUN_0203D4E8 .word FUN_0203D920 .word FUN_02041B40 diff --git a/arm9/global.inc b/arm9/global.inc index d45b7243..30385d33 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2770,16 +2770,16 @@ .extern ScrCmd_Unk0039 .extern ScrCmd_Unk003A .extern ScrCmd_Unk003B -.extern FUN_0203AA90 -.extern FUN_0203AAA0 -.extern FUN_0203AB44 -.extern FUN_0203AB74 -.extern FUN_0203AB8C -.extern FUN_0203AC14 -.extern FUN_0203AC9C -.extern FUN_0203ACC4 -.extern FUN_0203AD08 -.extern FUN_0203AD54 +.extern ScrCmd_Menu +.extern ScrCmd_YesNoMenu +.extern ScrCmd_ShowSaveClock +.extern ScrCmd_HideSaveClock +.extern ScrCmd_Unk0040 +.extern ScrCmd_Unk0041 +.extern ScrCmd_Unk0042 +.extern ScrCmd_Unk029D +.extern ScrCmd_Unk0043 +.extern ScrCmd_Unk02B9 .extern FUN_0203ADC4 .extern FUN_0203AE4C .extern FUN_0203AED4 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 870d6353..bad0d69c 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -27,7 +27,6 @@ extern u32 FUN_02058488(u32 param0); extern BOOL FUN_02030F40(void); extern void FUN_02055304(u32 param0, u32 param1); extern void FUN_02039460(struct UnkSavStruct80 *arg); -extern void FUN_02055304(u32 param0, u32 param1); extern void FUN_020545B8(u32 param0, u8 *param1, u32 param2); extern void FUN_02054608(u8 *param0, struct Options *options); extern void FUN_0200D0E0(u32 *param0, u32 param1); @@ -41,6 +40,18 @@ extern u32 MOD05_021E8140(u32 param0); extern BOOL MOD05_021E8148(u32 param0); extern u8 FUN_02054658(u32 param0, struct String *str, struct Options *opt, u32 param3); extern void MOD05_021E8144(u32 param0); +extern void FUN_0200CB00(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern u32 Std_CreateYesNoMenu(u32 param0, u8 **param1, u32 param2, u32 param3, u32 param4); +extern u32 FUN_020021AC(u32 param0, u32 param1); +extern u32 FUN_0200D858(u32 *param0, u32 param1); +extern void FUN_0200DBFC(u32 param0); +extern u32 MOD05_021E1BF8(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData); +extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2); +extern void MOD05_021E1C54(u32 param0); +extern u32 FUN_02052714(u32 param0); +extern void MOD05_021E1ECC(u32 param0); + +extern u8 *UNK_020F34E0; static BOOL RunPauseTimer(struct ScriptContext *ctx); static u32 Compare(u16 a, u16 b); @@ -53,7 +64,10 @@ static BOOL FUN_0203A570(struct ScriptContext *ctx); static BOOL FUN_0203A6C8(struct ScriptContext *ctx); static BOOL FUN_0203A8A0(struct ScriptContext *ctx); static BOOL FUN_0203A94C(struct ScriptContext *ctx); -/*static*/ BOOL FUN_0203AA0C(struct ScriptContext *ctx); +static BOOL FUN_0203AA0C(struct ScriptContext *ctx); +static BOOL FUN_0203AB00(struct ScriptContext *ctx); +/*static*/ BOOL FUN_0203AD2C(struct ScriptContext *ctx); +static BOOL FUN_0203AD78(struct ScriptContext *ctx); extern u8 sScriptConditionTable[6][3]; @@ -994,3 +1008,213 @@ THUMB_FUNC BOOL ScrCmd_Unk003B(struct ScriptContext *ctx) SetupNativeScript(ctx, FUN_0203AA0C); return TRUE; } + +THUMB_FUNC static BOOL FUN_0203AA0C(struct ScriptContext *ctx) +{ + u16 *unk = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); + + u32 tmp = 0xFFFF; + if (gMain.unk48 & 0x3) + { + *unk = 0; + return TRUE; + } + else if (gMain.unk48 & 0x40) + { + tmp = 0; + } + else if (gMain.unk48 & 0x80) + { + tmp = 1; + } + else if (gMain.unk48 & 0x20) + { + tmp = 2; + } + else if (gMain.unk48 & 0x10) + { + tmp = 3; + } + + if (tmp != 0xFFFF) + { + FUN_02055304(ctx->unk80->unk38, tmp); + *unk = 0; + return TRUE; + } + else + { + if (gMain.unk48 & 0x400) + { + *unk = 1; + return TRUE; + } + else + { + return FALSE; + } + } +} + +THUMB_FUNC BOOL ScrCmd_Menu(struct ScriptContext *ctx) +{ + FUN_02039460(ctx->unk80); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_YesNoMenu(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 2); + u16 wk = ScriptReadHalfword(ctx); + FUN_0200CB00(unk80->unk08, 3, 985, 11, 0, 4); + *unk = Std_CreateYesNoMenu(unk80->unk08, &UNK_020F34E0, 985, 11, 4); + ctx->data[0] = wk; + SetupNativeScript(ctx, FUN_0203AB00); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203AB00(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 2); + u16 *ptr = GetVarPointer(unk80, (u16)ctx->data[0]); + u32 unk2 = FUN_020021AC(*unk, 4); + + if (unk2 == -1) + { + return FALSE; + } + + if (unk2 == 0) + { + *ptr = 0; + } + else + { + *ptr = 1; + } + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_ShowSaveClock(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 1); + u32 *unk2 = FUN_02039438(ctx->unk80, 18); + *unk2 = FUN_0200D858(unk, 994); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HideSaveClock(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 18); + FUN_0200DBFC(*unk); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0040(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + u16 unk7 = ScriptReadHalfword(ctx); + u16 *ptr = GetVarPointer(unk80, unk7); + u32 *unk8 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1BF8(unk80, unk3, unk4, unk5, unk6, ptr, *unk2, unk8, NULL); + ctx->data[0] = unk7; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0041(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + u16 unk7 = ScriptReadHalfword(ctx); + u16 *ptr = GetVarPointer(unk80, unk7); + u32 *unk8 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1BF8(unk80, unk3, unk4, unk5, unk6, ptr, *unk2, unk8, ctx->msgData); + ctx->data[0] = unk7; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0042(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + u8 unk2 = ScriptReadByte(ctx); + u8 unk3 = ScriptReadByte(ctx); + MOD05_021E1C4C(*unk, unk2, unk3); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk029D(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + MOD05_021E1C4C(*unk, unk2, unk3); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0043(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E1C54(*unk); + SetupNativeScript(ctx, FUN_0203AD2C); + return TRUE; +} + +THUMB_FUNC BOOL FUN_0203AD2C(struct ScriptContext *ctx) +{ + u16 *varPtr = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); + if (*varPtr == 0xEEEE) + { + return FALSE; + } + else + { + return TRUE; + } +} + +THUMB_FUNC BOOL ScrCmd_Unk02B9(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E1C54(*unk); + SetupNativeScript(ctx, FUN_0203AD78); + return TRUE; +} + +THUMB_FUNC static BOOL FUN_0203AD78(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u16 *varPtr = GetVarPointer(unk80, (u16)ctx->data[0]); + u32 *unk = FUN_02039438(unk80, 0); + + if (*varPtr == 0xEEEE) + { + if (FUN_02052714(unk80->unk78)) + { + *varPtr = 8; + MOD05_021E1ECC(*unk); + return TRUE; + } + else + { + return FALSE; + } + } + else + { + return TRUE; + } +} diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c index de4e993e..5f7c4aa8 100644 --- a/arm9/src/scrcmd_coins.c +++ b/arm9/src/scrcmd_coins.c @@ -19,7 +19,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0075(struct ScriptContext * ctx) u16 ** unk_ret_ptr = FUN_02039438(sav_ptr, 0x26); u32 unk3 = MOD05_021E2950(ctx->unk80, (u8)unk1, (u8)unk2); - *unk_ret_ptr = unk3; + *unk_ret_ptr = (u16 *)unk3; return FALSE; } @@ -134,7 +134,7 @@ THUMB_FUNC BOOL ScrCmd_CanGiveCoins(struct ScriptContext * ctx) u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); u16 amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); - *ret_ptr = CanGiveCoins(coins_ptr, amount); + *ret_ptr = (u16)CanGiveCoins(coins_ptr, amount); return FALSE; } -- cgit v1.2.3 From 08f7471387b63deca732cbf7e972f92187b4b647 Mon Sep 17 00:00:00 2001 From: tgsm Date: Wed, 24 Mar 2021 07:28:25 -0400 Subject: Document some MapHeader functions/members --- arm9/asm/scrcmd_18.s | 2 +- arm9/asm/scrcmd_3.s | 2 +- arm9/asm/unk_02028980.s | 4 +- arm9/asm/unk_020343A8.s | 2 +- arm9/asm/unk_02034A28.s | 8 ++-- arm9/asm/unk_02034FE4.s | 2 +- arm9/asm/unk_02035068.s | 2 +- arm9/asm/unk_02038C78.s | 2 +- arm9/asm/unk_020476CC.s | 4 +- arm9/asm/unk_02048904.s | 4 +- arm9/asm/unk_0204AB0C.s | 8 ++-- arm9/asm/unk_0205CE48.s | 10 ++--- arm9/asm/unk_0205F7A0.s | 2 +- arm9/asm/unk_02060CCC.s | 10 ++--- arm9/asm/unk_0206367C.s | 4 +- arm9/asm/unk_02063948.s | 4 +- arm9/asm/unk_0207550C.s | 2 +- arm9/asm/unk_02086084.s | 2 +- arm9/global.inc | 36 ++++++++-------- arm9/modules/05/asm/mod05_021D74E0.s | 10 ++--- arm9/modules/05/asm/mod05_021D80E8.s | 14 +++---- arm9/modules/05/asm/mod05_021E2E88.s | 2 +- arm9/modules/05/asm/mod05_021E8310.s | 2 +- arm9/modules/05/asm/module_05.s | 2 +- arm9/modules/06/asm/module_06.s | 4 +- arm9/modules/42/asm/module_42.s | 4 +- arm9/modules/43/asm/module_43.s | 4 +- arm9/modules/67/asm/module_67.s | 30 +++++++------- arm9/src/map_header.c | 80 ++++++++++++++++++------------------ arm9/src/scrcmd_18_c.c | 2 +- arm9/src/unk_02064E4C.c | 2 +- 31 files changed, 133 insertions(+), 133 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s index 4b0acb12..fe0e3aa9 100644 --- a/arm9/asm/scrcmd_18.s +++ b/arm9/asm/scrcmd_18.s @@ -678,7 +678,7 @@ FUN_020448D4: ; 0x020448D4 ldr r0, [r5, #0x0] ldr r0, [r0, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r7, r0, #0x0 ldr r0, [r6, #0xc] bl SavArray_PlayerParty_get diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s index 28cbd7ac..28df2444 100644 --- a/arm9/asm/scrcmd_3.s +++ b/arm9/asm/scrcmd_3.s @@ -206,7 +206,7 @@ FUN_02040028: ; 0x02040028 ldr r0, [r0, #0x0] ldr r0, [r0, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r5, #0x80 ldr r3, [r5, #0x0] add r2, r0, #0x0 diff --git a/arm9/asm/unk_02028980.s b/arm9/asm/unk_02028980.s index ad0b1145..8c9178e7 100644 --- a/arm9/asm/unk_02028980.s +++ b/arm9/asm/unk_02028980.s @@ -2215,7 +2215,7 @@ FUN_02029880: ; 0x02029880 cmp r0, #0x1 bne _02029942 add r0, r4, #0x0 - bl FUN_02034824 + bl MapHeader_GetMapSec lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r1, r6, #0x0 @@ -2248,7 +2248,7 @@ _020298DE: b _02029942 _020298EE: add r0, r4, #0x0 - bl FUN_02034824 + bl MapHeader_GetMapSec add r7, r0, #0x0 lsl r0, r7, #0x10 lsr r0, r0, #0x10 diff --git a/arm9/asm/unk_020343A8.s b/arm9/asm/unk_020343A8.s index fc2463b8..88fd2560 100644 --- a/arm9/asm/unk_020343A8.s +++ b/arm9/asm/unk_020343A8.s @@ -139,7 +139,7 @@ FUN_020344AC: ; 0x020344AC push {r4-r6, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl FUN_0203474C + bl MapHeader_GetMatrixId add r6, r0, #0x0 add r0, r4, #0x4 add r1, r6, #0x0 diff --git a/arm9/asm/unk_02034A28.s b/arm9/asm/unk_02034A28.s index d0cc2c05..e4c8097a 100644 --- a/arm9/asm/unk_02034A28.s +++ b/arm9/asm/unk_02034A28.s @@ -67,7 +67,7 @@ FUN_02034A98: ; 0x02034A98 push {r3-r5, lr} add r5, r0, #0x0 add r0, r1, #0x0 - bl FUN_02034810 + bl MapHeader_GetEventsBank add r4, r0, #0x0 mov r0, #0x20 add r1, r4, #0x0 @@ -406,11 +406,11 @@ FUN_02034CB4: ; 0x02034CB4 add r5, r0, #0x0 bl memset add r0, r4, #0x0 - bl FUN_020347D8 + bl MapHeader_HasWildEncounters cmp r0, #0x0 beq _02034CDE add r0, r4, #0x0 - bl FUN_020347FC + bl MapHeader_GetWildEncounterBank add r2, r0, #0x0 add r0, r5, #0x0 .ifdef DIAMOND @@ -436,7 +436,7 @@ FUN_02034CEC: ; 0x02034CEC push {r3-r5, lr} add r5, r0, #0x0 add r0, r1, #0x0 - bl FUN_0203479C + bl MapHeader_GetLevelScriptsBank mov r1, #0x82 lsl r1, r1, #0x4 mov r2, #0x1 diff --git a/arm9/asm/unk_02034FE4.s b/arm9/asm/unk_02034FE4.s index 2d66b396..8ff7abe0 100644 --- a/arm9/asm/unk_02034FE4.s +++ b/arm9/asm/unk_02034FE4.s @@ -128,7 +128,7 @@ FUN_02034FE4: ; 0x02034FE4 push {r3-r7, lr} add r7, r0, #0x0 add r0, r1, #0x0 - bl FUN_02034838 + bl MapHeader_GetWeatherType add r4, r0, #0x0 cmp r4, #0x18 blt _0203505C diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 810faa41..0c8e3612 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -67,7 +67,7 @@ FUN_02035068: ; 0x02035068 push {r3, lr} ldr r0, [r0, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec cmp r0, #0x0 beq _0203507A mov r0, #0x1 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 7051e8ff..f8d30d92 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -1925,7 +1925,7 @@ ScriptRunByIndex: ; 0x02039484 thumb_func_start LoadScriptsForCurrentMap LoadScriptsForCurrentMap: ; 0x0203949C push {r3, lr} - bl MapHeader_GetScrSeqReleaseNo + bl MapHeader_GetScriptsBank add r1, r0, #0x0 mov r0, #0xa mov r2, #0xb diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 8eac1942..7e25689f 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -525,7 +525,7 @@ FUN_02047A78: ; 0x02047A78 str r0, [r5, r1] ldr r0, [r4, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec mov r1, #0x56 lsl r1, r1, #0x2 str r0, [r5, r1] @@ -1161,7 +1161,7 @@ FUN_0204806C: ; 0x0204806C add r6, r0, #0x0 ldr r0, [r4, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034860 + bl MapHeader_GetField17_0 mov r1, #0x15 lsl r1, r1, #0x4 str r0, [r5, r1] diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index d9259556..1fcababe 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -223,14 +223,14 @@ _02048A82: bl FUN_02034E10 add r6, r0, #0x0 add r0, r7, #0x0 - bl FUN_0203484C + bl MapHeader_GetCameraType cmp r6, r0 beq _02048AB4 bl ErrorHandling b _02048AB4 _02048AA6: add r0, r7, #0x0 - bl FUN_0203484C + bl MapHeader_GetCameraType add r1, r0, #0x0 ldr r0, [sp, #0x4] bl FUN_02034E18 diff --git a/arm9/asm/unk_0204AB0C.s b/arm9/asm/unk_0204AB0C.s index 45702b12..bea4eefa 100644 --- a/arm9/asm/unk_0204AB0C.s +++ b/arm9/asm/unk_0204AB0C.s @@ -121,11 +121,11 @@ FUN_0204ABA8: ; 0x0204ABA8 cmp r0, #0x0 bne _0204ABBE add r0, r4, #0x0 - bl FUN_020347B0 + bl MapHeader_GetDayMusicId b _0204ABC4 _0204ABBE: add r0, r4, #0x0 - bl FUN_020347C4 + bl MapHeader_GetNightMusicId _0204ABC4: add r6, r0, #0x0 ldr r0, [r5, #0xc] @@ -338,11 +338,11 @@ FUN_0204AD44: ; 0x0204AD44 cmp r0, #0x0 bne _0204AD58 add r0, r4, #0x0 - bl FUN_020347B0 + bl MapHeader_GetDayMusicId pop {r4, pc} _0204AD58: add r0, r4, #0x0 - bl FUN_020347C4 + bl MapHeader_GetNightMusicId pop {r4, pc} thumb_func_start FUN_0204AD60 diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s index 5ad7ca34..6e6f1f85 100644 --- a/arm9/asm/unk_0205CE48.s +++ b/arm9/asm/unk_0205CE48.s @@ -432,7 +432,7 @@ FUN_0205D170: ; 0x0205D170 push {r3-r5, lr} add r5, r0, #0x0 ldr r0, [r5, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec cmp r0, #0x0 bne _0205D184 mov r0, #0x0 @@ -440,7 +440,7 @@ FUN_0205D170: ; 0x0205D170 pop {r3-r5, pc} _0205D184: ldr r0, [r5, #0x0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0x0 bne _0205D194 mov r0, #0x0 @@ -697,7 +697,7 @@ _0205D390: pop {r3-r5, pc} _0205D396: ldr r0, [r4, #0x0] - bl FUN_020348B4 + bl MapHeader_IsBikeAllowed cmp r0, #0x0 bne _0205D3A6 mov r0, #0x0 @@ -1178,7 +1178,7 @@ _0205D730: .word 0x000022F6 FUN_0205D734: ; 0x0205D734 push {r3, lr} ldr r0, [r0, #0x0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0x0 beq _0205D744 mov r0, #0x0 @@ -1595,7 +1595,7 @@ _0205DA8E: cmp r0, #0x1 bne _0205DAA6 ldr r0, [r4, #0x0] - bl FUN_0203487C + bl MapHeader_GetField17_6 cmp r0, #0x1 bne _0205DAA6 mov r0, #0x0 diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s index 43358f72..b781112b 100644 --- a/arm9/asm/unk_0205F7A0.s +++ b/arm9/asm/unk_0205F7A0.s @@ -55,7 +55,7 @@ FUN_0205F7A0: ; 0x0205F7A0 asr r1, r1, #0x5 asr r2, r2, #0x5 bl FUN_0203451C - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0x0 beq _0205F806 str r4, [r5, #0x0] diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 44e19c06..b6692f24 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -1033,7 +1033,7 @@ FUN_02061374: ; 0x02061374 strh r1, [r0, #0x0] ldr r0, [r4, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r1, sp, #0x0 strh r0, [r1, #0x2] add r0, r4, #0x0 @@ -1084,7 +1084,7 @@ FUN_020613CC: ; 0x020613CC bl FUN_02060E34 ldr r0, [r4, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r1, sp, #0x4 strh r0, [r1, #0x6] add r0, r4, #0x0 @@ -2838,7 +2838,7 @@ _0206218C: bl FUN_02034FE4 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0x0 add r0, r7, #0x0 mov r1, #0x0 @@ -2949,7 +2949,7 @@ FUN_02062240: ; 0x02062240 bl MOD06_02245910 add r0, sp, #0x0 ldrh r0, [r0, #0x2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x0 @@ -3176,7 +3176,7 @@ FUN_020623F4: ; 0x020623F4 lsl r1, r0, #0x1 ldr r0, _0206245C ; =UNK_020F79EE ldrh r0, [r0, r1] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0x0 add r0, r5, #0x0 mov r1, #0x0 diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s index 431828e8..0696b4e4 100644 --- a/arm9/asm/unk_0206367C.s +++ b/arm9/asm/unk_0206367C.s @@ -107,7 +107,7 @@ _02063758: bne _0206377C ldr r0, [r5, #0x1c] ldr r0, [r0, #0x0] - bl FUN_020348B4 + bl MapHeader_IsBikeAllowed cmp r0, #0x0 bne _0206377C mov r0, #0x0 @@ -122,7 +122,7 @@ _0206377C: _02063786: ldr r0, [r5, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0x0 beq _020637A6 ldr r0, [r5, #0xc] diff --git a/arm9/asm/unk_02063948.s b/arm9/asm/unk_02063948.s index 28b6db5b..854eaedd 100644 --- a/arm9/asm/unk_02063948.s +++ b/arm9/asm/unk_02063948.s @@ -303,7 +303,7 @@ _02063B52: pop {r4, pc} _02063B66: ldr r0, [r4, #0x0] - bl FUN_02034898 + bl MapHeader_IsFlyAllowed cmp r0, #0x0 bne _02063B74 mov r0, #0x1 @@ -1129,7 +1129,7 @@ _020641BE: cmp r0, #0x1 bne _020641D2 ldr r0, [r4, #0x0] - bl FUN_0203487C + bl MapHeader_GetField17_6 cmp r0, #0x1 beq _020641D6 _020641D2: diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index d4608a0d..14488621 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -3503,7 +3503,7 @@ FUN_020772CC: ; 0x020772CC ldr r0, [r0, #0x1c] ldr r0, [r0, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r3, pc} diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s index 9d8276fd..3a4017d7 100644 --- a/arm9/asm/unk_02086084.s +++ b/arm9/asm/unk_02086084.s @@ -279,7 +279,7 @@ _020862D6: add r7, r0, #0x0 ldr r0, [r6, #0x1c] ldr r0, [r0, #0x0] - bl FUN_02034824 + bl MapHeader_GetMapSec str r0, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] diff --git a/arm9/global.inc b/arm9/global.inc index 30385d33..621d07ec 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2491,26 +2491,26 @@ .extern FUN_02034660 .extern FUN_02034678 .extern FUN_020346CC -.extern FUN_02034724 -.extern FUN_02034738 -.extern FUN_0203474C +.extern MapHeader_GetAreaDataBank +.extern MapHeader_GetField1 +.extern MapHeader_GetMatrixId .extern MapHeader_GetMsgBank -.extern MapHeader_GetScrSeqReleaseNo -.extern FUN_0203479C -.extern FUN_020347B0 -.extern FUN_020347C4 -.extern FUN_020347D8 -.extern FUN_020347FC -.extern FUN_02034810 -.extern FUN_02034824 -.extern FUN_02034838 -.extern FUN_0203484C -.extern FUN_02034860 -.extern FUN_0203487C -.extern FUN_02034898 -.extern FUN_020348B4 +.extern MapHeader_GetScriptsBank +.extern MapHeader_GetLevelScriptsBank +.extern MapHeader_GetDayMusicId +.extern MapHeader_GetNightMusicId +.extern MapHeader_HasWildEncounters +.extern MapHeader_GetWildEncounterBank +.extern MapHeader_GetEventsBank +.extern MapHeader_GetMapSec +.extern MapHeader_GetWeatherType +.extern MapHeader_GetCameraType +.extern MapHeader_GetField17_0 +.extern MapHeader_GetField17_6 +.extern MapHeader_IsFlyAllowed +.extern MapHeader_IsBikeAllowed .extern FUN_020348E4 -.extern FUN_02034908 +.extern MapHeader_MapIsOnOverworldMatrix .extern FUN_02034930 .extern FUN_02034944 .extern FUN_02034964 diff --git a/arm9/modules/05/asm/mod05_021D74E0.s b/arm9/modules/05/asm/mod05_021D74E0.s index 8488759b..e66ad6aa 100644 --- a/arm9/modules/05/asm/mod05_021D74E0.s +++ b/arm9/modules/05/asm/mod05_021D74E0.s @@ -477,10 +477,10 @@ _021D78CE: ldr r0, [r0, #0xc] bl MOD05_021DC174 add r0, r6, #0 - bl FUN_02034824 + bl MapHeader_GetMapSec add r6, r0, #0 add r0, r4, #0 - bl FUN_02034824 + bl MapHeader_GetMapSec add r1, r0, #0 cmp r6, r1 beq _021D7956 @@ -542,7 +542,7 @@ MOD05_021D79B4: ; 0x021D79B4 add r5, r0, #0 ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 beq _021D79FE ldr r0, [r5, #0xc] @@ -954,13 +954,13 @@ MOD05_021D7CF0: ; 0x021D7CF0 str r0, [r5, #0x50] ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_02034724 + bl MapHeader_GetAreaDataBank ldr r1, [r5, #0x4c] bl MOD05_021F4978 str r0, [r5, #0x2c] ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_02034738 + bl MapHeader_GetField1 add r4, r0, #0 ldr r0, [r5, #0x30] cmp r0, #0 diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s index 946b25da..c00cb45f 100644 --- a/arm9/modules/05/asm/mod05_021D80E8.s +++ b/arm9/modules/05/asm/mod05_021D80E8.s @@ -1075,7 +1075,7 @@ _021D8992: _021D8998: ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_020347D8 + bl MapHeader_HasWildEncounters cmp r0, #0 beq _021D89B4 add r0, r4, #0 @@ -1846,7 +1846,7 @@ MOD05_021D8FD0: ; 0x021D8FD0 add r6, r0, #0 ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034824 + bl MapHeader_GetMapSec lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r6, #0 @@ -1894,7 +1894,7 @@ MOD05_021D9010: ; 0x021D9010 _021D903E: ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r1, r0, #0 lsl r1, r1, #0x10 add r0, r4, #0 @@ -2216,11 +2216,11 @@ MOD05_021D9290: ; 0x021D9290 beq _021D92DA ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #1 bne _021D931C ldr r0, [sp, #8] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 bne _021D931C ldr r0, [r4, #0x38] @@ -2246,11 +2246,11 @@ _021D92DA: beq _021D931C ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #1 bne _021D931C ldr r0, [sp, #8] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 bne _021D931C ldr r0, [r4, #0x38] diff --git a/arm9/modules/05/asm/mod05_021E2E88.s b/arm9/modules/05/asm/mod05_021E2E88.s index 6d69341c..0666b52d 100644 --- a/arm9/modules/05/asm/mod05_021E2E88.s +++ b/arm9/modules/05/asm/mod05_021E2E88.s @@ -606,7 +606,7 @@ MOD05_021E331C: ; 0x021E331C bne _021E333E ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034824 + bl MapHeader_GetMapSec add r1, r0, #0 ldr r0, [r4, #4] ldr r0, [r0, #8] diff --git a/arm9/modules/05/asm/mod05_021E8310.s b/arm9/modules/05/asm/mod05_021E8310.s index e3a28a97..7a66cdcb 100644 --- a/arm9/modules/05/asm/mod05_021E8310.s +++ b/arm9/modules/05/asm/mod05_021E8310.s @@ -16,7 +16,7 @@ MOD05_021E8310: ; 0x021E8310 bl Sav2_Pokedex_get add r7, r0, #0 ldr r0, [r6] - bl FUN_02034824 + bl MapHeader_GetMapSec str r0, [r5, #4] add r0, r7, #0 bl Pokedex_GetSinnohDexFlag diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 104c1b87..fe346300 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -26953,7 +26953,7 @@ _021F5888: strh r0, [r4, #0xa] ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_020347D8 + bl MapHeader_HasWildEncounters cmp r0, #0 beq _021F58D4 mov r0, #0xa diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 18de2954..d46e003b 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -8668,7 +8668,7 @@ _0223D804: bne _0223D8F4 ldr r0, [r5, #0x1c] ldr r0, [r0] - bl FUN_02034824 + bl MapHeader_GetMapSec cmp r0, #0x65 beq _0223D8F4 ldr r0, [r5, #0x1c] @@ -31270,7 +31270,7 @@ CreateInGameTradeMon: ; 0x022489D4 add r2, r4, #0 bl SetMonData ldr r0, [sp, #0x2c] - bl FUN_02034824 + bl MapHeader_GetMapSec add r3, r0, #0 ldr r0, [sp, #0x28] mov r1, #0 diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s index 8e41c6cc..5bbfa2ba 100644 --- a/arm9/modules/42/asm/module_42.s +++ b/arm9/modules/42/asm/module_42.s @@ -139,7 +139,7 @@ _02254932: add r6, r0, #0 ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 beq _02254984 ldr r0, [r4, #0x1c] @@ -527,7 +527,7 @@ MOD42_02254C04: ; 0x02254C04 add r6, r0, #0 ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 beq _02254C3C ldr r1, [r4, #0x1c] diff --git a/arm9/modules/43/asm/module_43.s b/arm9/modules/43/asm/module_43.s index 8efadd9b..89b23259 100644 --- a/arm9/modules/43/asm/module_43.s +++ b/arm9/modules/43/asm/module_43.s @@ -62,7 +62,7 @@ MOD43_0225489C: ; 0x0225489C add r6, r0, #0 ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 beq _022548E0 ldr r0, [r4, #0x1c] @@ -395,7 +395,7 @@ MOD43_02254AF8: ; 0x02254AF8 add r7, r0, #0 ldr r0, [r4, #0x1c] ldr r0, [r0] - bl FUN_02034908 + bl MapHeader_MapIsOnOverworldMatrix cmp r0, #0 beq _02254B36 ldr r1, [r4, #0x1c] diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 60757798..4982fa30 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -1248,7 +1248,7 @@ _021D7E32: add r4, r0, #0 ldr r0, [sp, #0x14] lsr r0, r0, #0x13 - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -1685,7 +1685,7 @@ MOD67_021D8208: ; 0x021D8208 b _021D832E _021D822A: ldrh r0, [r0, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r1, _021D8338 ; =0x0000017E mov r0, #0x1a @@ -1774,7 +1774,7 @@ _021D82EA: _021D82F2: add r0, sp, #0x10 ldrh r0, [r0, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r4, #0x54] mov r1, #0 @@ -2423,7 +2423,7 @@ MOD67_021D87E4: ; 0x021D87E4 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2674,7 +2674,7 @@ MOD67_021D89E0: ; 0x021D89E0 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2717,7 +2717,7 @@ MOD67_021D8A3C: ; 0x021D8A3C bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2760,7 +2760,7 @@ MOD67_021D8A98: ; 0x021D8A98 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2803,7 +2803,7 @@ MOD67_021D8AF4: ; 0x021D8AF4 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2846,7 +2846,7 @@ MOD67_021D8B50: ; 0x021D8B50 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2889,7 +2889,7 @@ MOD67_021D8BAC: ; 0x021D8BAC bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2932,7 +2932,7 @@ MOD67_021D8C08: ; 0x021D8C08 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -2975,7 +2975,7 @@ MOD67_021D8C64: ; 0x021D8C64 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -3018,7 +3018,7 @@ MOD67_021D8CC0: ; 0x021D8CC0 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -3061,7 +3061,7 @@ MOD67_021D8D1C: ; 0x021D8D1C bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 @@ -3104,7 +3104,7 @@ MOD67_021D8D78: ; 0x021D8D78 bl NewString_ReadMsgData add r7, r0, #0 ldrh r0, [r4, #2] - bl FUN_02034824 + bl MapHeader_GetMapSec add r2, r0, #0 ldr r0, [r5, #0x54] mov r1, #0 diff --git a/arm9/src/map_header.c b/arm9/src/map_header.c index 0a5b8987..644a590b 100644 --- a/arm9/src/map_header.c +++ b/arm9/src/map_header.c @@ -605,23 +605,23 @@ u32 MapNumberBoundsCheck(u32 mapno) return mapno; } -u8 FUN_02034724(u32 mapno) +u8 MapHeader_GetAreaDataBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk0; + return sMapHeaders[mapno].area_data_bank; } -u8 FUN_02034738(u32 mapno) +u8 MapHeader_GetField1(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); return sMapHeaders[mapno].unk1; } -u16 FUN_0203474C(u32 mapno) +u16 MapHeader_GetMatrixId(u32 mapno) { u16 ret; mapno = MapNumberBoundsCheck(mapno); - ret = sMapHeaders[mapno].unk2; + ret = sMapHeaders[mapno].matrix_id; // Spear Pillar if (ret == 22 && gGameVersion == VERSION_PEARL) ret = 23; @@ -631,94 +631,94 @@ u16 FUN_0203474C(u32 mapno) u16 MapHeader_GetMsgBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk8; + return sMapHeaders[mapno].msg_bank; } -u16 MapHeader_GetScrSeqReleaseNo(u32 mapno) +u16 MapHeader_GetScriptsBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk4; + return sMapHeaders[mapno].scripts_bank; } -u16 FUN_0203479C(u32 mapno) +u16 MapHeader_GetLevelScriptsBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk6; + return sMapHeaders[mapno].level_scripts_bank; } -u16 FUN_020347B0(u32 mapno) +u16 MapHeader_GetDayMusicId(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unkA; + return sMapHeaders[mapno].day_music_id; } -u16 FUN_020347C4(u32 mapno) +u16 MapHeader_GetNightMusicId(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unkC; + return sMapHeaders[mapno].night_music_id; } -BOOL FUN_020347D8(u32 mapno) +BOOL MapHeader_HasWildEncounters(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unkE != 0xFFFF; + return sMapHeaders[mapno].wild_encounter_bank != 0xFFFF; } -u16 FUN_020347FC(u32 mapno) +u16 MapHeader_GetWildEncounterBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unkE; + return sMapHeaders[mapno].wild_encounter_bank; } -u16 FUN_02034810(u32 mapno) +u16 MapHeader_GetEventsBank(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk10; + return sMapHeaders[mapno].events_bank; } -u16 FUN_02034824(u32 mapno) +u16 MapHeader_GetMapSec(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); return sMapHeaders[mapno].mapsec; } -u8 FUN_02034838(u32 mapno) +u8 MapHeader_GetWeatherType(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk14; + return sMapHeaders[mapno].weather_type; } -u8 FUN_0203484C(u32 mapno) +u8 MapHeader_GetCameraType(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk15; + return sMapHeaders[mapno].camera_type; } -u8 FUN_02034860(u32 mapno) +u8 MapHeader_GetField17_0(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); return sMapHeaders[mapno].unk17_0; } -u8 FUN_0203487C(u32 mapno) +u8 MapHeader_GetField17_6(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); return sMapHeaders[mapno].unk17_6; } -u8 FUN_02034898(u32 mapno) +u8 MapHeader_IsFlyAllowed(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk17_7; + return sMapHeaders[mapno].is_fly_allowed; } -u8 FUN_020348B4(u32 mapno) +u8 MapHeader_IsBikeAllowed(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); - return sMapHeaders[mapno].unk17_4; + return sMapHeaders[mapno].is_bike_allowed; } -u8 FUN_020348D0(u32 mapno) +u8 MapHeader_GetField16(u32 mapno) { mapno = MapNumberBoundsCheck(mapno); return sMapHeaders[mapno].unk16; @@ -726,36 +726,36 @@ u8 FUN_020348D0(u32 mapno) BOOL FUN_020348E4(u32 mapno) { - if (!FUN_02034898(mapno)) + if (!MapHeader_IsFlyAllowed(mapno)) return FALSE; - if (FUN_020348D0(mapno) != 1) + if (MapHeader_GetField16(mapno) != 1) return TRUE; return FALSE; } -BOOL FUN_02034908(u32 mapno) +BOOL MapHeader_MapIsOnOverworldMatrix(u32 mapno) { - return !FUN_0203474C(mapno); + return MapHeader_GetMatrixId(mapno) == 0; } BOOL FUN_0203491C(u32 mapno) { - return FUN_020348D0(mapno) == 5; + return MapHeader_GetField16(mapno) == 5; } BOOL FUN_02034930(u32 mapno) { - return FUN_020348D0(mapno) == 3; + return MapHeader_GetField16(mapno) == 3; } BOOL FUN_02034944(u32 mapno) { - return FUN_020348D0(mapno) == 4 || FUN_020348D0(mapno) == 5; + return MapHeader_GetField16(mapno) == 4 || MapHeader_GetField16(mapno) == 5; } BOOL FUN_02034964(u32 mapno) { - return FUN_020348D0(mapno) == 1 || FUN_020348D0(mapno) == 2; + return MapHeader_GetField16(mapno) == 1 || MapHeader_GetField16(mapno) == 2; } BOOL FUN_02034984(u32 mapno) diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c index 633ad71c..c683bc8c 100644 --- a/arm9/src/scrcmd_18_c.c +++ b/arm9/src/scrcmd_18_c.c @@ -12,7 +12,7 @@ extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx) { - u32 mapSec = FUN_02034824(*(ctx->unk80->mapId)); + u32 mapSec = MapHeader_GetMapSec(*(ctx->unk80->mapId)); struct UnkSavStruct80 *savePtr = ctx->unk80; u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); u16 level = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); diff --git a/arm9/src/unk_02064E4C.c b/arm9/src/unk_02064E4C.c index 1e9f8515..90ff8340 100644 --- a/arm9/src/unk_02064E4C.c +++ b/arm9/src/unk_02064E4C.c @@ -16,7 +16,7 @@ void FUN_02064E4C(struct MsgData * msgData, u16 map_sec, struct String * dest) void FUN_02064E60(u32 map_no, u32 heap_id, struct String * dest) { struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 382, heap_id); - u16 map_sec = FUN_02034824(map_no); + u16 map_sec = MapHeader_GetMapSec(map_no); FUN_02064E4C(msgData, map_sec, dest); -- cgit v1.2.3 From 28f7626d24511428986ce9c47d29ecc28047b256 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 24 Mar 2021 22:38:46 +0000 Subject: more scrcmd --- arm9/asm/scrcmd_asm.s | 248 ------------------------------------------------ arm9/asm/unk_02038C78.s | 14 +-- arm9/global.inc | 14 +-- arm9/src/scrcmd.c | 86 ++++++++++++++++- 4 files changed, 98 insertions(+), 264 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index c10ba0f5..3d6645c2 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -5,7 +5,6 @@ .extern UNK_020F3538 .extern gMain .extern FUN_0203A2F0 - .extern FUN_0203AD2C .section .bss @@ -15,253 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203ADC4 -FUN_0203ADC4: ; 0x0203ADC4 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AE4C -FUN_0203AE4C: ; 0x0203AE4C - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AED4 -FUN_0203AED4: ; 0x0203AED4 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r3, r0, #0x0 - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl MOD05_021E1F58 - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203AF34 -FUN_0203AF34: ; 0x0203AF34 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1F60 - ldr r1, _0203AF54 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF54: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF58 -FUN_0203AF58: ; 0x0203AF58 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E26CC - ldr r1, _0203AF80 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF80: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF84 -FUN_0203AF84: ; 0x0203AF84 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B80 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203AFA4 -FUN_0203AFA4: ; 0x0203AFA4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B9C - mov r0, #0x1 - pop {r4, pc} - thumb_func_start FUN_0203AFC4 FUN_0203AFC4: ; 0x0203AFC4 push {r4-r6, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index f8d30d92..57a1b801 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -217,11 +217,11 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0041 .word ScrCmd_Unk0042 .word ScrCmd_Unk0043 - .word FUN_0203ADC4 - .word FUN_0203AE4C - .word FUN_0203AED4 - .word FUN_0203AF34 - .word FUN_0203AF58 + .word ScrCmd_Unk0044 + .word ScrCmd_Unk0045 + .word ScrCmd_Unk0046 + .word ScrCmd_Unk0047 + .word ScrCmd_Unk0048 .word FUN_020414E0 .word FUN_020414FC .word FUN_02041518 @@ -868,8 +868,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02041100 .word FUN_02041138 .word FUN_02041174 - .word FUN_0203AF84 - .word FUN_0203AFA4 + .word ScrCmd_Unk02CF + .word ScrCmd_Unk02D0 .text diff --git a/arm9/global.inc b/arm9/global.inc index 621d07ec..bfe823c3 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2780,13 +2780,13 @@ .extern ScrCmd_Unk029D .extern ScrCmd_Unk0043 .extern ScrCmd_Unk02B9 -.extern FUN_0203ADC4 -.extern FUN_0203AE4C -.extern FUN_0203AED4 -.extern FUN_0203AF34 -.extern FUN_0203AF58 -.extern FUN_0203AF84 -.extern FUN_0203AFA4 +.extern ScrCmd_Unk0044 +.extern ScrCmd_Unk0045 +.extern ScrCmd_Unk0046 +.extern ScrCmd_Unk0047 +.extern ScrCmd_Unk0048 +.extern ScrCmd_Unk02CF +.extern ScrCmd_Unk02D0 .extern FUN_0203AFC4 .extern FUN_0203B024 .extern FUN_0203B148 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index bad0d69c..0b11ba0a 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -50,6 +50,12 @@ extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2); extern void MOD05_021E1C54(u32 param0); extern u32 FUN_02052714(u32 param0); extern void MOD05_021E1ECC(u32 param0); +extern u32 MOD05_021E1F34(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData); +extern void MOD05_021E1F58(u32 param0, u8 param1, u8 param2, u8 param3); +extern void MOD05_021E1F60(u32 param0); +extern void MOD05_021E26CC(u32 param0, u8 param1); +extern void MOD05_021E2B80(u32 param0, u8 param1); +extern void MOD05_021E2B9C(u32 param0, u8 param1); extern u8 *UNK_020F34E0; @@ -66,7 +72,7 @@ static BOOL FUN_0203A8A0(struct ScriptContext *ctx); static BOOL FUN_0203A94C(struct ScriptContext *ctx); static BOOL FUN_0203AA0C(struct ScriptContext *ctx); static BOOL FUN_0203AB00(struct ScriptContext *ctx); -/*static*/ BOOL FUN_0203AD2C(struct ScriptContext *ctx); +static BOOL FUN_0203AD2C(struct ScriptContext *ctx); static BOOL FUN_0203AD78(struct ScriptContext *ctx); extern u8 sScriptConditionTable[6][3]; @@ -1173,7 +1179,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0043(struct ScriptContext *ctx) return TRUE; } -THUMB_FUNC BOOL FUN_0203AD2C(struct ScriptContext *ctx) +THUMB_FUNC static BOOL FUN_0203AD2C(struct ScriptContext *ctx) { u16 *varPtr = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); if (*varPtr == 0xEEEE) @@ -1218,3 +1224,79 @@ THUMB_FUNC static BOOL FUN_0203AD78(struct ScriptContext *ctx) return TRUE; } } + +THUMB_FUNC BOOL ScrCmd_Unk0044(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + + u16 halfWord = ScriptReadHalfword(ctx); + u16 *varPtr = GetVarPointer(unk80, halfWord); + u32 *unk7 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, NULL); + ctx->data[0] = halfWord; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0045(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + + u16 halfWord = ScriptReadHalfword(ctx); + u16 *varPtr = GetVarPointer(unk80, halfWord); + u32 *unk7 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, ctx->msgData); + ctx->data[0] = halfWord; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0046(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk4 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + MOD05_021E1F58(*unk, (u8)unk2, (u8)unk3, (u8)unk4); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0047(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E1F60(*unk); + SetupNativeScript(ctx, FUN_0203AD2C); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0048(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E26CC(*unk, ScriptReadByte(ctx)); + SetupNativeScript(ctx, FUN_0203AD2C); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E2B80(*unk, ScriptReadByte(ctx)); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E2B9C(*unk, ScriptReadByte(ctx)); + return TRUE; +} -- cgit v1.2.3 From 5e505aa880f4e07dbd20ba698d2936965f6170f1 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 26 Mar 2021 18:37:38 -0500 Subject: decomp unk_02025484 --- arm9/asm/unk_02025484.s | 41 ----------------------------------------- arm9/global.inc | 4 ++++ arm9/src/unk_02025484.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 41 deletions(-) delete mode 100644 arm9/asm/unk_02025484.s create mode 100644 arm9/src/unk_02025484.c (limited to 'arm9') diff --git a/arm9/asm/unk_02025484.s b/arm9/asm/unk_02025484.s deleted file mode 100644 index 5f869289..00000000 --- a/arm9/asm/unk_02025484.s +++ /dev/null @@ -1,41 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02025484 -FUN_02025484: ; 0x02025484 - ldr r3, _0202548C ; =MI_CpuFill8 - mov r1, #0x0 - mov r2, #0x24 - bx r3 - .balign 4 -_0202548C: .word MI_CpuFill8 - - thumb_func_start FUN_02025490 -FUN_02025490: ; 0x02025490 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bl FUN_02025484 - str r4, [r5, #0x0] - add r0, r5, #0x4 - pop {r3-r5, pc} - - thumb_func_start FUN_020254A0 -FUN_020254A0: ; 0x020254A0 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, r1 - beq _020254AE - bl ErrorHandling -_020254AE: - add r0, r4, #0x4 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020254B4 -FUN_020254B4: ; 0x020254B4 - ldr r0, [r0, #0x0] - bx lr diff --git a/arm9/global.inc b/arm9/global.inc index 621d07ec..c6076947 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8517,3 +8517,7 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon +.extern FUN_02025484 +.extern FUN_02025490 +.extern FUN_020254A0 +.extern FUN_020254B4 diff --git a/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c new file mode 100644 index 00000000..7a394da8 --- /dev/null +++ b/arm9/src/unk_02025484.c @@ -0,0 +1,28 @@ +#include "global.h" +#include "MI_memory.h" +#include "error_handling.h" +#include "unk_02025484.h" + +THUMB_FUNC void FUN_02025484(struct unk_2025484 *r0, u32 r1) +{ + MI_CpuFill8(r0, 0, sizeof(struct unk_2025484)); +} + +THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1) +{ + FUN_02025484(r0, r1); + r0->unk0 = r1; + return &r0->unk4; +} + +THUMB_FUNC u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1) +{ + if(r0->unk0 != r1) + ErrorHandling(); + return &r0->unk4; +} + +THUMB_FUNC u32 FUN_020254B4(struct unk_2025484 *r0) +{ + return r0->unk0; +} -- cgit v1.2.3 From 4324604ed8ffd261cb55dd1c132a38014ba67493 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 26 Mar 2021 18:44:28 -0500 Subject: only have one extern of each func --- arm9/global.inc | 4 ---- 1 file changed, 4 deletions(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index c6076947..a2fd15c3 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1618,10 +1618,6 @@ .extern FUN_020252E8 .extern FUN_020252F4 .extern FUN_020253E0 -.extern FUN_02025484 -.extern FUN_02025490 -.extern FUN_020254A0 -.extern FUN_020254B4 .extern FUN_020254B8 .extern FUN_020254C0 .extern FUN_020254CC -- cgit v1.2.3 From c93f033923e84964e8f096cb914e695d0d4f3444 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 26 Mar 2021 18:49:48 -0500 Subject: use GF_ASSERT --- arm9/src/unk_02025484.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_02025484.c b/arm9/src/unk_02025484.c index 7a394da8..733ac23a 100644 --- a/arm9/src/unk_02025484.c +++ b/arm9/src/unk_02025484.c @@ -17,8 +17,7 @@ THUMB_FUNC u32 *FUN_02025490(struct unk_2025484 *r0, u32 r1) THUMB_FUNC u32 *FUN_020254A0(struct unk_2025484 *r0, u32 r1) { - if(r0->unk0 != r1) - ErrorHandling(); + GF_ASSERT(r0->unk0 == r1); return &r0->unk4; } -- cgit v1.2.3 From 0cc774d83e739f041f92b10c9703e8520727795f Mon Sep 17 00:00:00 2001 From: tgsm Date: Tue, 30 Mar 2021 06:00:23 -0400 Subject: scrcmd: move some extern declarations into scrcmd.h Prevents us from having to copy and paste these over and over when decompiling more scrcmd files. --- arm9/src/scrcmd.c | 2 -- arm9/src/scrcmd_18_c.c | 2 -- arm9/src/scrcmd_19.c | 3 --- arm9/src/scrcmd_20.c | 3 --- arm9/src/scrcmd_coins.c | 4 ---- arm9/src/scrcmd_money.c | 4 ---- 6 files changed, 18 deletions(-) (limited to 'arm9') diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index bad0d69c..a40ed547 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -5,8 +5,6 @@ #include "player_data.h" #include "text.h" -extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); -extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); extern u8 FUN_02058448(u32 param0); diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c index c683bc8c..d4437c5f 100644 --- a/arm9/src/scrcmd_18_c.c +++ b/arm9/src/scrcmd_18_c.c @@ -6,8 +6,6 @@ #include "map_header.h" #include "scrcmd.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); -extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType); THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx) diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c index f0fb9b42..b0a201b7 100644 --- a/arm9/src/scrcmd_19.c +++ b/arm9/src/scrcmd_19.c @@ -1,9 +1,6 @@ #include "scrcmd.h" #include "bag.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); - const u16 UNK_020F450C[7][2] = { { 0x0067, 0x008E }, { 0x0065, 0x008A }, diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c index bf4fb7f1..882126a0 100644 --- a/arm9/src/scrcmd_20.c +++ b/arm9/src/scrcmd_20.c @@ -1,8 +1,5 @@ #include "scrcmd.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); - const u16 UNK_020F452A[19][2] = { { 0x00FB, 0x03E8 }, { 0x0109, 0x03E8 }, diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c index 5f7c4aa8..59638c83 100644 --- a/arm9/src/scrcmd_coins.c +++ b/arm9/src/scrcmd_coins.c @@ -1,10 +1,6 @@ #include "scrcmd.h" #include "coins.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); -extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); - extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8); diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c index b61a7ff7..d2254844 100644 --- a/arm9/src/scrcmd_money.c +++ b/arm9/src/scrcmd_money.c @@ -1,10 +1,6 @@ #include "scrcmd.h" #include "player_data.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); -extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); - extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); extern u32 MOD05_021E27E8(struct UnkSavStruct80* arg, u8, u8); -- cgit v1.2.3 From 14d341e09decfc061f567ef51f615d7bcb012ea8 Mon Sep 17 00:00:00 2001 From: tgsm Date: Tue, 30 Mar 2021 06:28:49 -0400 Subject: Decompile scrcmd_22 -> scrcmd_items --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_22.s | 220 ------------------------------------------------ arm9/asm/unk_02038C78.s | 16 ++-- arm9/global.inc | 16 ++-- arm9/src/scrcmd_items.c | 96 +++++++++++++++++++++ 5 files changed, 113 insertions(+), 237 deletions(-) delete mode 100644 arm9/asm/scrcmd_22.s create mode 100644 arm9/src/scrcmd_items.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 6066b7ca..05a905ee 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -174,7 +174,7 @@ Static arm9 Object scrcmd_19.o Object scrcmd_20.o Object scrcmd_21.o - Object scrcmd_22.o + Object scrcmd_items.o Object scrcmd_23.o Object scrcmd_24.o Object scrcmd_25.o diff --git a/arm9/asm/scrcmd_22.s b/arm9/asm/scrcmd_22.s deleted file mode 100644 index 1f354520..00000000 --- a/arm9/asm/scrcmd_22.s +++ /dev/null @@ -1,220 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02045784 -FUN_02045784: ; 0x02045784 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_AddItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020457DC -FUN_020457DC: ; 0x020457DC - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_TakeItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02045834 -FUN_02045834: ; 0x02045834 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_HasSpaceForItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0204588C -FUN_0204588C: ; 0x0204588C - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0xb - bl Bag_HasItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020458E4 -FUN_020458E4: ; 0x020458E4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02054CB0 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02045918 -FUN_02045918: ; 0x02045918 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x5 - mov r2, #0xb - bl GetItemAttr - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02045950 -FUN_02045950: ; 0x02045950 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02045954 -FUN_02045954: ; 0x02045954 - mov r0, #0x0 - bx lr diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index f8d30d92..72d8bce2 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -272,14 +272,14 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetCoins .word ScrCmd_GiveCoins .word ScrCmd_TakeCoinsImmediate - .word FUN_02045784 - .word FUN_020457DC - .word FUN_02045834 - .word FUN_0204588C - .word FUN_020458E4 - .word FUN_02045918 - .word FUN_02045950 - .word FUN_02045954 + .word ScrCmd_GiveItem + .word ScrCmd_TakeItem + .word ScrCmd_HasSpaceForItem + .word ScrCmd_HasItem + .word ScrCmd_ItemIdIsTMOrHM + .word ScrCmd_GetItemPocketId + .word ScrCmd_Unk0081 + .word ScrCmd_Unk0082 .word FUN_02045958 .word FUN_020459AC .word FUN_020459E8 diff --git a/arm9/global.inc b/arm9/global.inc index a2fd15c3..e90bb423 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3378,14 +3378,14 @@ .extern FUN_02045678 .extern FUN_020456D4 .extern FUN_0204572C -.extern FUN_02045784 -.extern FUN_020457DC -.extern FUN_02045834 -.extern FUN_0204588C -.extern FUN_020458E4 -.extern FUN_02045918 -.extern FUN_02045950 -.extern FUN_02045954 +.extern ScrCmd_GiveItem +.extern ScrCmd_TakeItem +.extern ScrCmd_HasSpaceForItem +.extern ScrCmd_HasItem +.extern ScrCmd_ItemIdIsTMOrHM +.extern ScrCmd_GetItemPocketId +.extern ScrCmd_Unk0081 +.extern ScrCmd_Unk0082 .extern FUN_02045958 .extern FUN_020459AC .extern FUN_020459E8 diff --git a/arm9/src/scrcmd_items.c b/arm9/src/scrcmd_items.c new file mode 100644 index 00000000..0184d02e --- /dev/null +++ b/arm9/src/scrcmd_items.c @@ -0,0 +1,96 @@ +#include "scrcmd.h" +#include "bag.h" + +extern BOOL FUN_02054CB0(u16 item_id); + +THUMB_FUNC BOOL ScrCmd_GiveItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* item_was_added = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *item_was_added = (u16)Bag_AddItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* item_was_taken = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *item_was_taken = (u16)Bag_TakeItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasSpaceForItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* has_space = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *has_space = (u16)Bag_HasSpaceForItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* has_item = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *has_item = (u16)Bag_HasItem(bag, item_id, quantity, 11); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ItemIdIsTMOrHM(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* is_tm_or_hm = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *is_tm_or_hm = (u16)FUN_02054CB0(item_id); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* pocket = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *pocket = (u16)GetItemAttr(item_id, ITEMATTR_POCKET, 11); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0081(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0082(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} -- cgit v1.2.3 From 9bff34f5ed78da1c6dea8e6a5a19458160616029 Mon Sep 17 00:00:00 2001 From: tgsm Date: Wed, 31 Mar 2021 09:47:13 -0400 Subject: Decompile scrcmd_13 --- arm9/asm/scrcmd_13.s | 220 ------------------------------------------------ arm9/asm/unk_02038C78.s | 8 +- arm9/global.inc | 8 +- arm9/src/scrcmd_13.c | 111 ++++++++++++++++++++++++ 4 files changed, 119 insertions(+), 228 deletions(-) delete mode 100644 arm9/asm/scrcmd_13.s create mode 100644 arm9/src/scrcmd_13.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_13.s b/arm9/asm/scrcmd_13.s deleted file mode 100644 index 1b31ce71..00000000 --- a/arm9/asm/scrcmd_13.s +++ /dev/null @@ -1,220 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0204387C -FUN_0204387C: ; 0x0204387C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - cmp r0, #0x0 - bne _020438B2 - add r0, r4, #0x0 - bl FUN_0205F224 - add r5, #0x80 - ldr r0, [r5, #0x0] - bl FUN_0204B9EC - b _020438CA -_020438B2: - cmp r0, #0x1 - bne _020438C6 - add r0, r4, #0x0 - bl FUN_0205F234 - add r5, #0x80 - ldr r0, [r5, #0x0] - bl FUN_0204BA1C - b _020438CA -_020438C6: - bl ErrorHandling -_020438CA: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020438D0 -FUN_020438D0: ; 0x020438D0 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02022528 - add r6, r0, #0x0 - mov r0, #0x20 - bl AllocMonZeroed - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FUN_0202C000 - cmp r0, #0x6 - bne _02043908 - mov r0, #0x1 - b _0204390A -_02043908: - mov r0, #0x0 -_0204390A: - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02043918 -FUN_02043918: ; 0x02043918 - push {r4-r7, lr} - sub sp, #0xc - add r6, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02022528 - add r7, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl GetStoragePCPointer - str r0, [sp, #0x8] - mov r0, #0x20 - bl AllocMonZeroed - add r4, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - mov r5, #0x0 -_0204395C: - add r0, r7, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl FUN_0202BFD8 - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r4, #0x0 - mov r2, #0x2 - mov r3, #0x0 - bl FUN_0208089C - add r0, r4, #0x0 - bl FUN_020690E4 - add r1, r0, #0x0 - ldr r0, [sp, #0x8] - bl PCStorage_PlaceMonInFirstEmptySlotInAnyBox - cmp r0, #0x0 - bne _0204398C - bl ErrorHandling -_0204398C: - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0xc] - bl FUN_0202C144 - add r5, r5, #0x1 - cmp r5, #0x6 - blt _0204395C - add r0, r4, #0x0 - bl FreeToHeap - add r0, r7, #0x0 - bl FUN_0202BEDC - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020439B4 -FUN_020439B4: ; 0x020439B4 - push {r3-r7, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - cmp r6, #0x3 - bhi _02043A40 - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020439EE: ; jump table (using 16-bit offset) - .short _020439F6 - _020439EE - 2; case 0 - .short _02043A02 - _020439EE - 2; case 1 - .short _02043A0E - _020439EE - 2; case 2 - .short _02043A1A - _020439EE - 2; case 3 -_020439F6: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAC4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A02: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAD4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A0E: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAE4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A1A: - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204BAD4 - add r6, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204BAC4 - add r4, #0x80 - add r7, r0, #0x0 - ldr r0, [r4, #0x0] - bl FUN_0204BAE4 - add r0, r7, r0 - add r0, r6, r0 - strh r0, [r5, #0x0] -_02043A40: - mov r0, #0x0 - pop {r3-r7, pc} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 4b80024a..a5037d01 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -744,10 +744,10 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02041340 .word FUN_02040964 .word ScrCmd_pcfreespace - .word FUN_0204387C - .word FUN_020438D0 - .word FUN_02043918 - .word FUN_020439B4 + .word ScrCmd_Unk0253 + .word ScrCmd_Unk0254 + .word ScrCmd_Unk0255 + .word ScrCmd_Unk0256 .word FUN_0203FE80 .word FUN_0203EDA4 .word FUN_0203EDC8 diff --git a/arm9/global.inc b/arm9/global.inc index d5d12155..63ab1566 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3274,10 +3274,10 @@ .extern FUN_02042C8C .extern FUN_02042CBC .extern FUN_02042D1C -.extern FUN_0204387C -.extern FUN_020438D0 -.extern FUN_02043918 -.extern FUN_020439B4 +.extern ScrCmd_Unk0253 +.extern ScrCmd_Unk0254 +.extern ScrCmd_Unk0255 +.extern ScrCmd_Unk0256 .extern ScrCmd_Unk0075 .extern ScrCmd_Unk0076 .extern ScrCmd_Unk0077 diff --git a/arm9/src/scrcmd_13.c b/arm9/src/scrcmd_13.c new file mode 100644 index 00000000..3b21facc --- /dev/null +++ b/arm9/src/scrcmd_13.c @@ -0,0 +1,111 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "heap.h" +#include "pokedex.h" +#include "pokemon_storage_system.h" +#include "unk_0202C144.h" + +extern struct PCStorage* GetStoragePCPointer(struct SaveBlock2* sav2); +extern void* FUN_02022528(struct SaveBlock2* sav2); +extern void FUN_0202BEDC(struct Pokemon* pokemon); +extern void FUN_0202BFD8(void* a0, s32 a1, struct Pokemon* pokemon); +extern u16 FUN_0202C000(struct Pokemon* pokemon); +extern void FUN_0204B9EC(struct UnkSavStruct80*); +extern u32 FUN_0204BA1C(struct UnkSavStruct80*); +extern u16 FUN_0204BAC4(struct UnkSavStruct80*); +extern u16 FUN_0204BAD4(struct UnkSavStruct80*); +extern u16 FUN_0204BAE4(struct UnkSavStruct80*); +extern void FUN_0205F224(struct ScriptState* state); +extern void FUN_0205F234(struct ScriptState* state); +extern void FUN_0208089C(struct Pokemon* pokemon, struct PlayerData* player, u32 a2, u32 a3, u32 heap_id); + +THUMB_FUNC BOOL ScrCmd_Unk0253(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + if (unk == 0) + { + FUN_0205F224(state); + FUN_0204B9EC(ctx->unk80); + } + else if (unk == 1) + { + FUN_0205F234(state); + FUN_0204BA1C(ctx->unk80); + } + else + { + GF_ASSERT(FALSE); + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0254(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 eggs = FUN_0202C000(unk); + if (eggs == 6) { + *ret_ptr = 1; + } else { + *ret_ptr = 0; + } + + FreeToHeap(pokemon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0255(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct PCStorage* pc = GetStoragePCPointer(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); // unused + + for (s32 i = 0; i < PARTY_SIZE; i++) + { + FUN_0202BFD8(unk, i, pokemon); + FUN_0208089C(pokemon, player, 2, 0, 32); + + struct BoxPokemon* box_mon = FUN_020690E4(pokemon); + GF_ASSERT(PCStorage_PlaceMonInFirstEmptySlotInAnyBox(pc, box_mon)); + + FUN_0202C144(ctx->unk80->saveBlock2, pokemon); + } + + FreeToHeap(pokemon); + FUN_0202BEDC(unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0256(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + switch (unk) + { + case 0: + *ret_ptr = FUN_0204BAC4(ctx->unk80); + break; + case 1: + *ret_ptr = FUN_0204BAD4(ctx->unk80); + break; + case 2: + *ret_ptr = FUN_0204BAE4(ctx->unk80); + break; + case 3: + // For some reason, mwcc puts the FUN_0204BAD4 call before the FUN_0204BAC4 and FUN_0204BAE4 calls. + *ret_ptr = (u16)(FUN_0204BAC4(ctx->unk80) + FUN_0204BAE4(ctx->unk80) + FUN_0204BAD4(ctx->unk80)); + break; + } + + return FALSE; +} -- cgit v1.2.3 From 8958487e95618eaea84f4aaa02f68d3ef467a874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 11:57:44 +0200 Subject: decomp unk_0205FA2C.s --- arm9/asm/unk_0205FA2C.s | 930 ------------------------------------------------ arm9/src/unk_0205FA2C.c | 595 +++++++++++++++++++++++++++++++ 2 files changed, 595 insertions(+), 930 deletions(-) delete mode 100644 arm9/asm/unk_0205FA2C.s create mode 100644 arm9/src/unk_0205FA2C.c (limited to 'arm9') diff --git a/arm9/asm/unk_0205FA2C.s b/arm9/asm/unk_0205FA2C.s deleted file mode 100644 index ae0d9d3f..00000000 --- a/arm9/asm/unk_0205FA2C.s +++ /dev/null @@ -1,930 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern UNK_020F96DC - .extern UNK_020FA6E8 - - .section .rodata - - .global UNK_020F7454 -UNK_020F7454: ; 0x020F7454 - .byte 0x00, 0x01, 0x02, 0x04, 0x03, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_0205FA2C -FUN_0205FA2C: ; 0x0205FA2C - push {r3-r7, lr} - add r5, r0, #0x0 - add r7, r1, #0x0 - add r0, r2, #0x0 - mov r1, #0x40 - bl AllocFromHeapAtEnd - ldr r6, [r7, #0xc] - mov r1, #0x0 - mov r2, #0x40 - add r4, r0, #0x0 - bl MI_CpuFill8 - add r0, r6, #0x0 - bl Sav2_PlayerData_GetOptionsAddr - str r0, [r4, #0xc] - add r0, r6, #0x0 - bl SavArray_PlayerParty_get - str r0, [r4, #0x0] - add r0, r6, #0x0 - bl Sav2_Bag_get - str r0, [r4, #0x4] - add r0, r4, #0x0 - mov r1, #0x0 - add r0, #0x21 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - ldrb r2, [r5, #0x8] - add r0, #0x20 - strb r2, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x32 - ldrb r0, [r0, #0x0] - mov r2, #0xf - ldrb r3, [r5, #0xa] - bic r0, r2 - mov r2, #0xf - and r2, r3 - orr r2, r0 - add r0, r4, #0x0 - add r0, #0x32 - strb r2, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x32 - ldrb r0, [r0, #0x0] - mov r2, #0xf0 - bic r0, r2 - ldrb r2, [r5, #0xb] - lsl r2, r2, #0x1c - lsr r2, r2, #0x18 - orr r2, r0 - add r0, r4, #0x0 - add r0, #0x32 - strb r2, [r0, #0x0] - add r0, r4, #0x0 - ldrb r2, [r5, #0xc] - add r0, #0x33 - strb r2, [r0, #0x0] - add r0, r4, #0x0 - ldrb r2, [r5, #0xd] - add r0, #0x22 - strb r2, [r0, #0x0] -_0205FAAE: - add r0, r5, r1 - ldrb r2, [r0, #0xe] - add r0, r4, r1 - add r0, #0x2c - strb r2, [r0, #0x0] - add r0, r1, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - cmp r1, #0x6 - blo _0205FAAE - ldr r1, _0205FAD4 ; =UNK_020F96DC - add r0, r7, #0x0 - add r2, r4, #0x0 - bl FUN_020373D4 - ldr r0, [r5, #0x14] - str r4, [r0, #0x0] - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 -_0205FAD4: .word UNK_020F96DC - - thumb_func_start FUN_0205FAD8 -FUN_0205FAD8: ; 0x0205FAD8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - bl FUN_0204647C - cmp r0, #0x0 - beq _0205FAEA - mov r0, #0x1 - pop {r3-r5, pc} -_0205FAEA: - ldr r0, [r5, #0x14] - ldr r4, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - cmp r0, #0x6 - beq _0205FB04 - cmp r0, #0x7 - bne _0205FB0C - mov r0, #0x0 - str r0, [r5, #0x0] - mov r0, #0x4 - pop {r3-r5, pc} -_0205FB04: - mov r0, #0x1 - str r0, [r5, #0x0] - mov r0, #0x4 - pop {r3-r5, pc} -_0205FB0C: - add r0, r4, #0x0 - add r1, r5, #0x0 - add r0, #0x2c - add r1, #0xe - mov r2, #0x6 - bl MI_CpuCopy8 - add r0, r4, #0x0 - add r0, #0x22 - ldrb r0, [r0, #0x0] - strb r0, [r5, #0xd] - add r0, r4, #0x0 - bl FreeToHeap - ldr r0, [r5, #0x14] - mov r1, #0x0 - str r1, [r0, #0x0] - mov r0, #0x2 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0205FB34 -FUN_0205FB34: ; 0x0205FB34 - push {r3-r7, lr} - add r7, r1, #0x0 - add r6, r0, #0x0 - ldr r5, [r7, #0xc] - add r0, r2, #0x0 - mov r1, #0x30 - bl AllocFromHeapAtEnd - mov r1, #0x0 - mov r2, #0x30 - add r4, r0, #0x0 - bl MI_CpuFill8 - add r0, r5, #0x0 - bl Sav2_PlayerData_GetOptionsAddr - str r0, [r4, #0x4] - add r0, r5, #0x0 - bl SavArray_PlayerParty_get - str r0, [r4, #0x0] - add r0, r5, #0x0 - bl FUN_0206BB28 - str r0, [r4, #0x1c] - add r0, r5, #0x0 - bl FUN_02079C70 - str r0, [r4, #0x2c] - mov r0, #0x1 - strb r0, [r4, #0x11] - ldrb r0, [r6, #0xd] - strb r0, [r4, #0x14] - ldr r0, [r4, #0x0] - bl GetPartyCount - strb r0, [r4, #0x13] - mov r0, #0x0 - strh r0, [r4, #0x18] - ldrb r0, [r6, #0x9] - strb r0, [r4, #0x12] - add r0, r5, #0x0 - bl FUN_0202A918 - str r0, [r4, #0x20] - ldr r1, _0205FBB8 ; =UNK_020F7454 - add r0, r4, #0x0 - bl FUN_0207B000 - add r0, r5, #0x0 - bl Sav2_PlayerData_GetProfileAddr - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0207C2A4 - ldr r1, _0205FBBC ; =UNK_020FA6E8 - add r0, r7, #0x0 - add r2, r4, #0x0 - bl FUN_020373D4 - ldr r0, [r6, #0x14] - str r4, [r0, #0x0] - mov r0, #0x3 - pop {r3-r7, pc} - nop -_0205FBB8: .word UNK_020F7454 -_0205FBBC: .word UNK_020FA6E8 - - thumb_func_start FUN_0205FBC0 -FUN_0205FBC0: ; 0x0205FBC0 - push {r4, lr} - add r4, r0, #0x0 - add r0, r1, #0x0 - bl FUN_0204647C - cmp r0, #0x0 - beq _0205FBD2 - mov r0, #0x3 - pop {r4, pc} -_0205FBD2: - ldr r0, [r4, #0x14] - ldr r0, [r0, #0x0] - ldrb r1, [r0, #0x14] - strb r1, [r4, #0xd] - bl FreeToHeap - ldr r1, [r4, #0x14] - mov r0, #0x0 - str r0, [r1, #0x0] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0205FBE8 -FUN_0205FBE8: ; 0x0205FBE8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02046528 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0204652C - add r4, r0, #0x0 - ldr r1, [r4, #0x4] - cmp r1, #0x4 - bhi _0205FC4A - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0205FC0C: ; jump table (using 16-bit offset) - .short _0205FC16 - _0205FC0C - 2; case 0 - .short _0205FC22 - _0205FC0C - 2; case 1 - .short _0205FC2C - _0205FC0C - 2; case 2 - .short _0205FC38 - _0205FC0C - 2; case 3 - .short _0205FC42 - _0205FC0C - 2; case 4 -_0205FC16: - add r1, r5, #0x0 - mov r2, #0xb - bl FUN_0205FA2C - str r0, [r4, #0x4] - b _0205FC4A -_0205FC22: - add r1, r5, #0x0 - bl FUN_0205FAD8 - str r0, [r4, #0x4] - b _0205FC4A -_0205FC2C: - add r1, r5, #0x0 - mov r2, #0xb - bl FUN_0205FB34 - str r0, [r4, #0x4] - b _0205FC4A -_0205FC38: - add r1, r5, #0x0 - bl FUN_0205FBC0 - str r0, [r4, #0x4] - b _0205FC4A -_0205FC42: - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0205FC4A: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0205FC50 -FUN_0205FC50: ; 0x0205FC50 - push {r3-r7, lr} - add r5, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_02046528 - str r0, [sp, #0x0] - mov r0, #0xb - mov r1, #0x18 - bl AllocFromHeap - add r4, r0, #0x0 - mov r1, #0x0 - mov r2, #0x18 - bl MI_CpuFill8 - strb r6, [r4, #0x8] - strb r7, [r4, #0x9] - add r0, sp, #0x8 - ldrb r1, [r0, #0x10] - add r2, r4, #0x0 - strb r1, [r4, #0xa] - ldrb r1, [r0, #0x14] - strb r1, [r4, #0xb] - ldrb r1, [r0, #0x18] - strb r1, [r4, #0xc] - ldrb r0, [r0, #0x1c] - ldr r1, _0205FC98 ; =FUN_0205FBE8 - strb r0, [r4, #0xd] - ldr r0, [sp, #0x0] - str r5, [r4, #0x14] - ldr r0, [r0, #0x10] - bl FUN_0204640C - pop {r3-r7, pc} - nop -_0205FC98: .word FUN_0205FBE8 - - thumb_func_start FUN_0205FC9C -FUN_0205FC9C: ; 0x0205FC9C - push {r3-r5, lr} - add r5, r1, #0x0 - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl FUN_0203384C - cmp r0, #0x0 - beq _0205FCBC - ldrh r1, [r4, #0x12] - ldrh r2, [r4, #0x14] - add r0, r5, #0x0 - bl FUN_02038790 - str r0, [r4, #0x8] - mov r0, #0x1 - pop {r3-r5, pc} -_0205FCBC: - mov r0, #0x1 - str r0, [r4, #0x0] - mov r0, #0x2 - pop {r3-r5, pc} - - thumb_func_start FUN_0205FCC4 -FUN_0205FCC4: ; 0x0205FCC4 - push {r4, lr} - add r4, r0, #0x0 - add r0, r1, #0x0 - bl FUN_0204647C - cmp r0, #0x0 - beq _0205FCD6 - mov r0, #0x1 - pop {r4, pc} -_0205FCD6: - ldr r0, [r4, #0x8] - ldr r0, [r0, #0x20] - str r0, [r4, #0x0] - ldr r0, [r4, #0x8] - bl FreeToHeap - mov r0, #0x2 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_0205FCE8 -FUN_0205FCE8: ; 0x0205FCE8 - push {r3-r5, lr} - add r4, r0, #0x0 - bl FUN_02046528 - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0204652C - add r4, r0, #0x0 - ldr r1, [r4, #0x4] - cmp r1, #0x0 - beq _0205FD0A - cmp r1, #0x1 - beq _0205FD14 - cmp r1, #0x2 - beq _0205FD1E - b _0205FD34 -_0205FD0A: - add r1, r5, #0x0 - bl FUN_0205FC9C - str r0, [r4, #0x4] - b _0205FD34 -_0205FD14: - add r1, r5, #0x0 - bl FUN_0205FCC4 - str r0, [r4, #0x4] - b _0205FD34 -_0205FD1E: - ldrh r1, [r4, #0x10] - add r0, r5, #0x0 - bl GetVarPointer - ldr r1, [r4, #0x0] - strh r1, [r0, #0x0] - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x1 - pop {r3-r5, pc} -_0205FD34: - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_0205FD38 -FUN_0205FD38: ; 0x0205FD38 - push {r3-r7, lr} - add r5, r1, #0x0 - add r6, r2, #0x0 - add r7, r3, #0x0 - bl FUN_02046528 - str r0, [sp, #0x0] - mov r0, #0xb - mov r1, #0x18 - bl AllocFromHeap - add r4, r0, #0x0 - mov r1, #0x0 - mov r2, #0x18 - bl MI_CpuFill8 - strh r5, [r4, #0x12] - strh r7, [r4, #0x14] - ldr r0, [sp, #0x0] - strh r6, [r4, #0x10] - ldr r0, [r0, #0x10] - ldr r1, _0205FD6C ; =FUN_0205FCE8 - add r2, r4, #0x0 - bl FUN_0204640C - pop {r3-r7, pc} - .balign 4 -_0205FD6C: .word FUN_0205FCE8 - - thumb_func_start FUN_0205FD70 -FUN_0205FD70: ; 0x0205FD70 - push {r3-r7, lr} - add r4, r0, #0x0 - bl FUN_02046528 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0204652C - add r5, r0, #0x0 - bl FUN_02031190 - mov r1, #0x1 - sub r0, r1, r0 - bl FUN_020316E0 - add r7, r0, #0x0 - bne _0205FD96 - mov r0, #0x0 - pop {r3-r7, pc} -_0205FD96: - ldrh r1, [r5, #0x2] - add r0, r6, #0x0 - bl GetVarPointer - add r4, r0, #0x0 - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0205FDB0 - cmp r0, #0x1 - beq _0205FDBC - cmp r0, #0x2 - beq _0205FDC8 - b _0205FDD2 -_0205FDB0: - add r0, r6, #0x0 - add r1, r7, #0x0 - bl MOD06_02244660 - strh r0, [r4, #0x0] - b _0205FDD2 -_0205FDBC: - add r0, r6, #0x0 - add r1, r7, #0x0 - bl MOD06_022446BC - strh r0, [r4, #0x0] - b _0205FDD2 -_0205FDC8: - add r0, r6, #0x0 - add r1, r7, #0x0 - bl MOD06_022446E0 - strh r0, [r4, #0x0] -_0205FDD2: - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x1 - pop {r3-r7, pc} - - thumb_func_start FUN_0205FDDC -FUN_0205FDDC: ; 0x0205FDDC - push {r3-r7, lr} - add r5, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02046528 - add r7, r0, #0x0 - mov r0, #0xb - mov r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - mov r1, #0x0 - mov r2, #0x4 - bl MI_CpuFill8 - strh r5, [r4, #0x0] - strh r6, [r4, #0x2] - ldr r0, [r7, #0x10] - ldr r1, _0205FE0C ; =FUN_0205FD70 - add r2, r4, #0x0 - bl FUN_0204640C - pop {r3-r7, pc} - nop -_0205FE0C: .word FUN_0205FD70 - - thumb_func_start FUN_0205FE10 -FUN_0205FE10: ; 0x0205FE10 - push {r4-r7, lr} - sub sp, #0x14 - str r0, [sp, #0x0] - bl FUN_02029FC8 - mov r1, #0x35 - bl FUN_0202A150 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x10] - cmp r0, #0x14 - bhs _0205FE30 - add sp, #0x14 - mov r0, #0x0 - pop {r4-r7, pc} -_0205FE30: - ldr r0, [sp, #0x0] - bl FUN_0202A8D8 - mov r1, #0xd - mov r2, #0x0 - add r4, r0, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - mov r1, #0x0 - lsr r7, r0, #0x18 - add r0, r4, #0x0 - add r2, r1, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - add r0, r4, #0x0 - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - add r0, r4, #0x0 - mov r1, #0xe - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0xc] - add r0, r4, #0x0 - mov r1, #0x2 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x8] - add r0, r4, #0x0 - mov r1, #0x3 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4] - cmp r7, #0x0 - beq _0205FEA2 - cmp r6, #0x0 - beq _0205FEA2 - cmp r5, #0x0 - beq _0205FEA2 - add sp, #0x14 - mov r0, #0x0 - pop {r4-r7, pc} -_0205FEA2: - ldr r0, [sp, #0x0] - bl FUN_02026CC4 - cmp r7, #0x0 - bne _0205FEDC - mov r1, #0x55 - bl FUN_02025D94 - cmp r0, #0x0 - beq _0205FEC6 - add r0, r4, #0x0 - mov r1, #0xd - mov r2, #0x1 - bl FUN_0202A578 - add sp, #0x14 - mov r0, #0x1 - pop {r4-r7, pc} -_0205FEC6: - ldr r0, [sp, #0xc] - cmp r0, #0x0 - bne _0205FED6 - add r0, r4, #0x0 - mov r1, #0xe - mov r2, #0x1 - bl FUN_0202A578 -_0205FED6: - add sp, #0x14 - mov r0, #0x4 - pop {r4-r7, pc} -_0205FEDC: - ldr r1, [sp, #0x10] - cmp r1, #0x32 - bhs _0205FEE8 - add sp, #0x14 - mov r0, #0x0 - pop {r4-r7, pc} -_0205FEE8: - cmp r6, #0x0 - bne _0205FF1C - mov r1, #0x56 - bl FUN_02025D94 - cmp r0, #0x0 - beq _0205FF06 - add r0, r4, #0x0 - mov r1, #0x0 - mov r2, #0x1 - bl FUN_0202A578 - add sp, #0x14 - mov r0, #0x2 - pop {r4-r7, pc} -_0205FF06: - ldr r0, [sp, #0x8] - cmp r0, #0x0 - bne _0205FF16 - add r0, r4, #0x0 - mov r1, #0x2 - mov r2, #0x1 - bl FUN_0202A578 -_0205FF16: - add sp, #0x14 - mov r0, #0x4 - pop {r4-r7, pc} -_0205FF1C: - cmp r1, #0x64 - blo _0205FF24 - cmp r5, #0x0 - beq _0205FF2A -_0205FF24: - add sp, #0x14 - mov r0, #0x0 - pop {r4-r7, pc} -_0205FF2A: - mov r1, #0x57 - bl FUN_02025D94 - cmp r0, #0x0 - beq _0205FF44 - mov r1, #0x1 - add r0, r4, #0x0 - add r2, r1, #0x0 - bl FUN_0202A578 - add sp, #0x14 - mov r0, #0x3 - pop {r4-r7, pc} -_0205FF44: - ldr r0, [sp, #0x4] - cmp r0, #0x0 - bne _0205FF54 - add r0, r4, #0x0 - mov r1, #0x3 - mov r2, #0x1 - bl FUN_0202A578 -_0205FF54: - mov r0, #0x4 - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0205FF5C -FUN_0205FF5C: ; 0x0205FF5C - push {r4-r7, lr} - sub sp, #0xc - add r4, r0, #0x0 - bl FUN_02029FC8 - mov r1, #0x35 - bl FUN_0202A150 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 - cmp r7, #0x14 - bhs _0205FF7A - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0205FF7A: - add r0, r4, #0x0 - bl FUN_0202A8D8 - mov r1, #0xd - mov r2, #0x0 - str r0, [sp, #0x8] - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - mov r1, #0x0 - ldr r0, [sp, #0x8] - add r2, r1, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [sp, #0x8] - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r5, r0, #0x18 - ldr r0, [sp, #0x8] - mov r1, #0xe - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x4] - ldr r0, [sp, #0x8] - mov r1, #0x2 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x0] - ldr r0, [sp, #0x8] - mov r1, #0x3 - mov r2, #0x0 - bl FUN_0202A578 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r6, #0x0 - beq _0205FFEA - cmp r4, #0x0 - beq _0205FFEA - cmp r5, #0x0 - beq _0205FFEA - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0205FFEA: - cmp r6, #0x0 - bne _02060000 - ldr r0, [sp, #0x4] - cmp r0, #0x0 - beq _0205FFFA - add sp, #0xc - mov r0, #0x4 - pop {r4-r7, pc} -_0205FFFA: - add sp, #0xc - mov r0, #0x1 - pop {r4-r7, pc} -_02060000: - cmp r7, #0x32 - bhs _0206000A - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0206000A: - cmp r4, #0x0 - bne _02060020 - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _0206001A - add sp, #0xc - mov r0, #0x5 - pop {r4-r7, pc} -_0206001A: - add sp, #0xc - mov r0, #0x2 - pop {r4-r7, pc} -_02060020: - cmp r7, #0x64 - bhs _0206002A - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_0206002A: - cmp r5, #0x0 - beq _02060034 - add sp, #0xc - mov r0, #0x0 - pop {r4-r7, pc} -_02060034: - cmp r0, #0x0 - beq _0206003E - add sp, #0xc - mov r0, #0x6 - pop {r4-r7, pc} -_0206003E: - mov r0, #0x3 - add sp, #0xc - pop {r4-r7, pc} - - thumb_func_start FUN_02060044 -FUN_02060044: ; 0x02060044 - add r0, #0xa8 - ldr r0, [r0, #0x0] - ldr r2, [r1, #0x0] - ldrh r3, [r0, #0x24] - add r2, r3, r2 - strh r2, [r0, #0x24] - ldrh r3, [r0, #0x28] - ldr r2, [r1, #0x4] - add r2, r3, r2 - strh r2, [r0, #0x28] - ldrh r2, [r0, #0x26] - ldr r1, [r1, #0x8] - add r1, r2, r1 - strh r1, [r0, #0x26] - bx lr - .balign 4 - - thumb_func_start FUN_02060064 -FUN_02060064: ; 0x02060064 - ldr r1, _0206006C ; =0x02E90EDD - mul r1, r0 - add r0, r1, #0x1 - bx lr - .balign 4 -_0206006C: .word 0x02E90EDD - - thumb_func_start FUN_02060070 -FUN_02060070: ; 0x02060070 - ldr r1, _02060078 ; =0x5D588B65 - mul r1, r0 - add r0, r1, #0x1 - bx lr - .balign 4 -_02060078: .word 0x5D588B65 - - thumb_func_start FUN_0206007C -FUN_0206007C: ; 0x0206007C - push {r3-r5, lr} - add r5, r0, #0x0 - bl FUN_0202881C - bl FUN_020287A4 - bl FUN_02060070 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_0202A8D8 - add r1, r4, #0x0 - bl FUN_0202A5CC - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020600A0 -FUN_020600A0: ; 0x020600A0 - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - bl FUN_0202A8D8 - add r6, r0, #0x0 - bl FUN_0202A5D0 - bl FUN_02060070 - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl FUN_0202A5CC - add r0, r4, #0x0 - bl FUN_02060064 - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl FUN_0202A8CC - mov r1, #0xa - add r2, sp, #0x0 - bl FUN_0202A2C4 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_020600DC -FUN_020600DC: ; 0x020600DC - push {r3-r6, lr} - sub sp, #0x4 - add r6, r0, #0x0 - bl FUN_0202A8D8 - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FUN_0202A8CC - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_0202A5D0 - bl FUN_02060064 - mov r1, #0x0 - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r2, r1, #0x0 - bl FUN_0202A240 - add r1, r0, #0x0 - lsl r1, r1, #0x10 - add r0, r4, #0x0 - lsr r1, r1, #0x10 - mov r2, #0x0 - bl FUN_0202A538 - mov r1, #0x18 - add r5, r0, #0x0 - mul r5, r1 - mov r4, #0x0 - cmp r5, #0x0 - ble _0206012E - ldr r0, [sp, #0x0] -_02060122: - bl FUN_02060064 - add r4, r4, #0x1 - str r0, [sp, #0x0] - cmp r4, r5 - blt _02060122 -_0206012E: - add r0, r6, #0x0 - bl FUN_0202A8CC - mov r1, #0xa - add r2, sp, #0x0 - bl FUN_0202A2C4 - ldr r0, [sp, #0x0] - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 - - thumb_func_start FUN_02060144 -FUN_02060144: ; 0x02060144 - ldr r0, [r0, #0x1c] - ldr r1, [r0, #0x0] - ldr r0, _02060158 ; =0x000001ED - cmp r1, r0 - bne _02060152 - mov r0, #0x1 - bx lr -_02060152: - mov r0, #0x0 - bx lr - nop -_02060158: .word 0x000001ED diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c new file mode 100644 index 00000000..e5c717b8 --- /dev/null +++ b/arm9/src/unk_0205FA2C.c @@ -0,0 +1,595 @@ +#include "unk_0205FA2C.h" + +extern void *UNK_020F96DC; +extern void *UNK_020FA6E8; +extern u32 FUN_02079C70(struct SaveBlock2 *sav2); +extern void FUN_0207B000(void *ptr, u8 param1[12]); +extern void FUN_0207C2A4(void *ptr, struct PlayerData *player_data); +extern u32 FUN_0203384C(u32 param0); +extern u32 FUN_02038790(u32 *param0, u16 param1, u16 param2); +extern u16 *GetVarPointer(void *arg, u16); +extern u32 FUN_02031190(); +extern u32 FUN_020316E0(u32 param0); +extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); +extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1); +extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1); +extern void FUN_0202A5CC(u32 param0, u32 param1); +extern u32 FUN_0202A5D0(u32 param0); +extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1); +extern u32 FUN_0202A8D8(struct SaveBlock2 *sav2); +extern u32 FUN_0202A578(u32 param0, u32 param1, u32 param2); +extern u32 FUN_02026CC4(struct SaveBlock2 *sav2); +extern u32 FUN_02025D94(u32 param0, u32 param1); +extern u32 FUN_0202A8CC(struct SaveBlock2 *sav2); +extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); +extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); +extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); + +struct UnkStruct3 +{ + /* 0x00 */ struct PlayerParty *player_party; + /* 0x04 */ struct Bag *bag; + u32 unk08; + /* 0x0c */ struct Options *options; + u32 unk10[4]; + u8 unk20; + u8 unk21; + u8 unk22; + u8 unk23; + u32 unk24[2]; + u8 unk2c[6]; + u8 unk32:4; + u8 unk322:4; + u8 unk33; + u32 unk34[3]; +}; + +THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +{ + struct UnkStruct3 *ptr = + (struct UnkStruct3 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct3)); + + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct3)); + + ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); + + ptr->player_party = SavArray_PlayerParty_get(sav2); + + ptr->bag = Sav2_Bag_get(sav2); + + ptr->unk21 = 0; + ptr->unk20 = param0[8]; + ptr->unk32 = param0[10]; + ptr->unk322 = param0[11]; + ptr->unk33 = param0[0xc]; + ptr->unk22 = param0[0xd]; + + for (u8 i = 0; i < 6; i++) + { + ptr->unk2c[i] = param0[i + 0xe]; + + } + + + FUN_020373D4(param1, &UNK_020F96DC, ptr); + + *((u32 **)param0)[5] = ptr; + + return 1; +} + +THUMB_FUNC u32 FUN_0205FAD8(u8 *param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 1; + } + + void *ptr = *((u32 **)param0)[5]; + + u8 r1 = *(u8 *)(ptr + 0x22); + if (r1 != 6) + { + if (r1 == 7) + { + ((u32 *)param0)[0] = 0; + return 4; + } + } + else + { + ((u32 *)param0)[0] = 1; + return 4; + } + + MI_CpuCopy8(ptr + 0x2c, param0 + 0xe, 6); + + param0[0xd] = *(u8 *)(ptr + 0x22); + FreeToHeap(ptr); + + *((u32 **)param0)[5] = 0; + + return 2; +} + + +struct UnkStruct4 { + /* 0x00 */ struct PlayerData *player_data; + /* 0x04 */ struct Options *options; + u32 unk08; + u32 unk0c; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15[3]; + u16 unk18; + u16 unk1a; + u32 unk1c; + u32 unk20; + u32 unk24; + u32 unk28; + u32 unk2c; + +}; + +THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +{ + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + + struct UnkStruct4 *ptr = (struct UnkStruct4 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct4)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct4)); + + ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); + ptr->player_data = SavArray_PlayerParty_get(sav2); + ptr->unk1c = FUN_0206BB28(sav2); + ptr->unk2c = FUN_02079C70(sav2); + + ptr->unk11 = 1; + ptr->unk14 = param0[0xd]; + + ptr->unk13 = GetPartyCount(*(u32 *)ptr); + + ptr->unk18 = 0; + ptr->unk12 = param0[9]; + + ptr->unk20 = FUN_0202A918(sav2); + + FUN_0207B000(ptr, UNK_020F7454); + + FUN_0207C2A4(ptr, Sav2_PlayerData_GetProfileAddr(sav2)); + + FUN_020373D4(param1, &UNK_020FA6E8, ptr); + + *((u32 **)param0)[5] = ptr; + + return 3; +} + +THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 3; + } + + u8 *r0 = param0[5][0]; + ((u8 *)param0)[0xd] = r0[20]; + FreeToHeap(r0); + + param0[5][0] = 0; + + return 0; +} + +THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + switch (sav2->unk_00004) + { + case 0: + sav2->unk_00004 = FUN_0205FA2C((u8 *)sav2, res, 0xb); + break; + case 1: + sav2->unk_00004 = FUN_0205FAD8((u8 *)sav2, res); + break; + case 2: + sav2->unk_00004 = FUN_0205FB34((u8 *)sav2, res, 0xb); + break; + case 3: + sav2->unk_00004 = FUN_0205FBC0((u8 ***)sav2, res); + break; + case 4: + FreeToHeap(sav2); + return 1; + } + + return 0; +} + +struct UnkStruct1 +{ + u32 unk00; + u32 unk04; + u8 unk08; + u8 unk09; + u8 unk0a; + u8 unk0b; + u8 unk0c; + u8 unk0d; + u16 unk0e; + u32 unk10; + u32 unk14; +}; + +THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xb, sizeof(struct UnkStruct1)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct1)); + ptr->unk08 = param2; + ptr->unk09 = param3; + + ptr->unk0a = param4; + ptr->unk0b = param5; + ptr->unk0c = param6; + ptr->unk0d = param7; + ptr->unk14 = param1; + + FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); +} + +THUMB_FUNC u32 FUN_0205FC9C(u16 *param0, u32 *param1) +{ + if (FUN_0203384C(param1[3])) + { + + ((u32 *)param0)[2] = FUN_02038790(param1, param0[9], param0[10]); + return 1; + } + + ((u32 *)param0)[0] = 1; + return 2; +} + +THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 1; + } + + param0[0] = param0[2][8]; + FreeToHeap(param0[2]); + + return 2; +} + +THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + + switch (sav2->unk_00004) + { + case 0: + sav2->unk_00004 = FUN_0205FC9C((u16 *)sav2, (u32 *)res); + break; + case 1: + sav2->unk_00004 = FUN_0205FCC4((u32 **)sav2, (void *)res); + break; + case 2: + u16 *var = GetVarPointer(res, ((u16 *)sav2)[8]); + *var = sav2->flashOkay; + FreeToHeap(sav2); + + return 1; + } + + return 0; +} + +struct UnkStruct2 +{ + u32 unk00; + u32 unk04; + u8 unk08; + u8 unk09; + u8 unk0a; + u8 unk0b; + u8 unk0c; + u8 unk0d; + u16 unk0e; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; +}; + +THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkStruct2 *ptr = (struct UnkStruct2 *)AllocFromHeap(0xb, sizeof(struct UnkStruct2)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct2)); + + ptr->unk12 = param1; + ptr->unk14 = param3; + ptr->unk10 = param2; + + FUN_0204640C(res->unk10, &FUN_0205FCE8, (u32 *)ptr); +} + +THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + u16 *res2 = (u16 *)FUN_0204652C(param0); + u32 res3 = FUN_020316E0(1 - FUN_02031190()); + if (res3 == 0) + { + return 0; + } + + u16 *var = GetVarPointer(res, res2[1]); + switch (res2[0]) + { + case 0: + *var = MOD06_02244660(res, res3); + break; + case 1: + *var = MOD06_022446BC(res, res3); + + break; + case 2: + *var = MOD06_022446E0(res, res3); + + break; + } + + FreeToHeap(res2); + + return 1; +} + +THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + + u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16)); + MI_CpuFill8(ptr, 0, 2 * sizeof(u16)); + + ptr[0] = param1; + ptr[1] = param2; + + FUN_0204640C(res->unk10, &FUN_0205FD70, ptr); +} + +THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) +{ + + u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + if (res < 20) + { + return 0; + } + + u32 res2 = FUN_0202A8D8(sav2); + + u8 res3 = FUN_0202A578(res2, 0xd, 0); + u8 res4 = FUN_0202A578(res2, 0, 0); + u8 res5 = FUN_0202A578(res2, 1, 0); + + u8 res6 = FUN_0202A578(res2, 0xe, 0); + u8 res7 = FUN_0202A578(res2, 2, 0); + u8 res8 = FUN_0202A578(res2, 3, 0); + + if (res3 != 0 && res4 != 0 && res5 != 0) + { + return 0; + } + + u32 res9 = FUN_02026CC4(sav2); + if (res3 == 0) + { + if (FUN_02025D94(res9, 0x55) != 0) + { + FUN_0202A578(res2, 0xd, 1); + return 1; + } + + if (res6 == 0) + { + FUN_0202A578(res2, 0xe, 1); + } + + return 4; + } + + if (res < 50) + { + return 0; + } + + if (res4 == 0) + { + if (FUN_02025D94(res9, 0x56) != 0) + { + FUN_0202A578(res2, 0, 1); + return 2; + } + + if (res7 == 0) + { + FUN_0202A578(res2, 2, 1); + } + + return 4; + } + + if (res < 100 || res5 != 0) + { + return 0; + } + + if (FUN_02025D94(res9, 0x57) != 0) + { + FUN_0202A578(res2, 1, 1); + return 3; + } + + if (res8 == 0) + { + FUN_0202A578(res2, 3, 1); + } + + return 4; +} + +THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) +{ + u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + if (res < 20) + { + return 0; + } + + u32 res2 = FUN_0202A8D8(sav2); + + u8 res3 = FUN_0202A578(res2, 0xd, 0); + u8 res4 = FUN_0202A578(res2, 0, 0); + u8 res5 = FUN_0202A578(res2, 1, 0); + + u8 res6 = FUN_0202A578(res2, 0xe, 0); + u8 res7 = FUN_0202A578(res2, 2, 0); + u8 res8 = FUN_0202A578(res2, 3, 0); + + if (res3 != 0 && res4 != 0 && res5 != 0) + { + return 0; + } + + if (res3 == 0) + { + if (res6 != 0) + { + return 4; + } + + return 1; + } + + if (res < 50) + { + return 0; + } + + if (res4 == 0) + { + if (res7 != 0) + { + return 5; + } + + return 2; + } + + if (res < 100) + { + return 0; + } + + if (res5 != 0) + { + return 0; + } + + if (res8 != 0) + { + return 6; + } + + return 3; +} + +THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1) +{ + u16 *ptr = param0[42]; + + ptr[18] += param1[0]; + ptr[20] += param1[1]; + ptr[19] += param1[2]; +} + +THUMB_FUNC u32 FUN_02060064(u32 param0) +{ + return param0 * 0x02E90EDD + 1; +} + +THUMB_FUNC u32 FUN_02060070(u32 param0) +{ + return param0 * 0x5D588B65 + 1; +} + +THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2) +{ + u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2))); + + FUN_0202A5CC(FUN_0202A8D8(sav2), res); + + return res; +} + +THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2) +{ + u32 res = FUN_0202A8D8(sav2); + + u32 res2 = FUN_02060070(FUN_0202A5D0(res)); + + FUN_0202A5CC(res, res2); + u32 res3 = FUN_02060064(res2); + + FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + + return res3; +} + +THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) +{ + u32 res = FUN_0202A8D8(sav2); + + u32 res2 = FUN_0202A8CC(sav2); + + u32 res3 = FUN_02060064(FUN_0202A5D0(res)); + + int i = 0; + int res4 = FUN_0202A538(res, FUN_0202A240(res2, 0, 0), 0) * 0x18; + + for (i = 0; i < res4; i++) + { + res3 = FUN_02060064(res3); + } + + FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + + return res3; +} + +THUMB_FUNC BOOL FUN_02060144(u32 **param0) +{ + if (param0[7][0] == 0x1ED) + { + return TRUE; + } + + return FALSE; +} -- cgit v1.2.3 From b20e00af7417022971bdf37870b66ccb8d3c52a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 15:11:23 +0200 Subject: better structs and signatures --- arm9/asm/unk_02035068.s | 6 +- arm9/asm/unk_020377F0.s | 10 +- arm9/asm/unk_02050E48.s | 2 +- arm9/global.inc | 4 +- arm9/modules/11/asm/module_11_thumb2.s | 2 +- arm9/modules/14/asm/module_14.s | 4 +- arm9/src/unk_0205FA2C.c | 245 ++++++++++++--------------------- arm9/src/unk_0206BB28.c | 6 +- 8 files changed, 108 insertions(+), 171 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 0c8e3612..f0cdc150 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -1870,7 +1870,7 @@ _02035ECC: bl FUN_0202A918 str r0, [r7, #0x20] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r7, #0x1c] ldr r0, [r5, #0xc] bl FUN_02079C70 @@ -1918,7 +1918,7 @@ _02035F4A: mov r0, #0x2 strb r0, [r7, #0x12] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r7, #0x1c] ldr r0, [r5, #0xc] bl FUN_02079C70 @@ -1975,7 +1975,7 @@ _02035FD0: mov r0, #0x2 strb r0, [r7, #0x12] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r7, #0x1c] ldr r0, [r5, #0xc] bl FUN_02079C70 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 9d5e2f32..7c45ad7a 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -773,7 +773,7 @@ FUN_02037C00: ; 0x02037C00 bl FUN_0202A918 str r0, [r4, #0x20] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r4, #0x1c] ldr r0, [r5, #0xc] bl FUN_02079C70 @@ -827,7 +827,7 @@ FUN_02037C7C: ; 0x02037C7C strh r0, [r4, #0x18] strb r6, [r4, #0x12] add r0, r5, #0x0 - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r4, #0x1c] add r0, r5, #0x0 bl FUN_02079C70 @@ -874,7 +874,7 @@ FUN_02037CF0: ; 0x02037CF0 mov r0, #0x2 strb r0, [r4, #0x12] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r4, #0x1c] ldr r0, [r5, #0xc] bl FUN_02079C70 @@ -1426,7 +1426,7 @@ FUN_02038144: ; 0x02038144 bl Sav2_Pokedex_get str r0, [r5, #0x24] ldr r0, [r4, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r5, #0x30] ldr r0, [r4, #0xc] str r0, [r5, #0x10] @@ -2157,7 +2157,7 @@ FUN_020386E0: ; 0x020386E0 ldr r0, [r5, #0xc] str r0, [r4, #0x20] ldr r0, [r5, #0xc] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r4, #0x34] ldr r0, [r4, #0x14] bl FUN_02033830 diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index 5746b23f..c8a8a153 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -35,7 +35,7 @@ FUN_02050E48: ; 0x02050E48 add r0, r4, #0x0 bl FUN_0207C2A4 add r0, r6, #0x0 - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled str r0, [r4, #0x1c] add r0, r6, #0x0 bl FUN_02079C70 diff --git a/arm9/global.inc b/arm9/global.inc index a2fd15c3..d77b0a72 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4887,8 +4887,8 @@ .extern CopyPlayerParty .extern PartyHasMon .extern SavArray_PlayerParty_get -.extern FUN_0206BB28 -.extern FUN_0206BB34 +.extern SavArray_IsNatDexEnabled +.extern Pokedex_IsNatDexEnabled .extern FUN_0206BB48 .extern FUN_0206BB5C .extern FUN_0206BB74 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index 3e416af6..62996375 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -25381,7 +25381,7 @@ _0223B916: str r0, [sp, #0xe0] ldr r0, [r4] bl MOD11_022300D0 - bl FUN_0206BB34 + bl Pokedex_IsNatDexEnabled str r0, [sp, #0xe4] bl FUN_0201D658 str r0, [r4, #0x54] diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index edbb6d86..37a18d6d 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -1925,7 +1925,7 @@ _021D84AA: str r1, [r4, r0] sub r0, #0x38 ldr r0, [r4, r0] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled mov r1, #0x52 lsl r1, r1, #2 str r0, [r4, r1] @@ -9205,7 +9205,7 @@ MOD14_021DBEAC: ; 0x021DBEAC mov r0, #0x47 lsl r0, r0, #2 ldr r0, [r6, r0] - bl FUN_0206BB28 + bl SavArray_IsNatDexEnabled ldrh r1, [r4, #4] bl FUN_0206BB48 strh r0, [r4, #8] diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index e5c717b8..dde83a06 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -3,11 +3,11 @@ extern void *UNK_020F96DC; extern void *UNK_020FA6E8; extern u32 FUN_02079C70(struct SaveBlock2 *sav2); -extern void FUN_0207B000(void *ptr, u8 param1[12]); -extern void FUN_0207C2A4(void *ptr, struct PlayerData *player_data); -extern u32 FUN_0203384C(u32 param0); -extern u32 FUN_02038790(u32 *param0, u16 param1, u16 param2); -extern u16 *GetVarPointer(void *arg, u16); +extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]); +extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data); +extern u32 FUN_0203384C(u32 *param0); +extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); extern u32 FUN_02031190(); extern u32 FUN_020316E0(u32 param0); extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); @@ -25,32 +25,15 @@ extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); -struct UnkStruct3 -{ - /* 0x00 */ struct PlayerParty *player_party; - /* 0x04 */ struct Bag *bag; - u32 unk08; - /* 0x0c */ struct Options *options; - u32 unk10[4]; - u8 unk20; - u8 unk21; - u8 unk22; - u8 unk23; - u32 unk24[2]; - u8 unk2c[6]; - u8 unk32:4; - u8 unk322:4; - u8 unk33; - u32 unk34[3]; -}; - -THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + + +THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { - struct UnkStruct3 *ptr = - (struct UnkStruct3 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct3)); + struct UnkPlayerStruct1_0205FA2C *ptr = + (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct3)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -59,101 +42,83 @@ THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 h ptr->bag = Sav2_Bag_get(sav2); ptr->unk21 = 0; - ptr->unk20 = param0[8]; - ptr->unk32 = param0[10]; - ptr->unk322 = param0[11]; - ptr->unk33 = param0[0xc]; - ptr->unk22 = param0[0xd]; + ptr->unk20 = param0->unk08; + ptr->unk32 = param0->unk0a; + ptr->unk322 = param0->unk0b; + ptr->unk33 = param0->unk0c; + ptr->unk22 = param0->unk0d; for (u8 i = 0; i < 6; i++) { - ptr->unk2c[i] = param0[i + 0xe]; + ptr->unk2c[i] = param0->unk0e[i]; } - FUN_020373D4(param1, &UNK_020F96DC, ptr); + FUN_020373D4(param1, (u32)&UNK_020F96DC, (u32)ptr); - *((u32 **)param0)[5] = ptr; + *param0->unk14 = ptr; return 1; } -THUMB_FUNC u32 FUN_0205FAD8(u8 *param0, void *param1) +THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 1; } - void *ptr = *((u32 **)param0)[5]; + struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)*param0->unk14; - u8 r1 = *(u8 *)(ptr + 0x22); + u8 r1 = ptr->unk22; if (r1 != 6) { if (r1 == 7) { - ((u32 *)param0)[0] = 0; + param0->unk00 = 0; return 4; } } else { - ((u32 *)param0)[0] = 1; + param0->unk00 = 1; return 4; } - MI_CpuCopy8(ptr + 0x2c, param0 + 0xe, 6); + MI_CpuCopy8(ptr->unk2c, param0->unk0e, 6); - param0[0xd] = *(u8 *)(ptr + 0x22); + param0->unk0d = ptr->unk22; FreeToHeap(ptr); - *((u32 **)param0)[5] = 0; + *param0->unk14 = NULL; return 2; } -struct UnkStruct4 { - /* 0x00 */ struct PlayerData *player_data; - /* 0x04 */ struct Options *options; - u32 unk08; - u32 unk0c; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; - u8 unk14; - u8 unk15[3]; - u16 unk18; - u16 unk1a; - u32 unk1c; - u32 unk20; - u32 unk24; - u32 unk28; - u32 unk2c; - -}; - -THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + + + +THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - struct UnkStruct4 *ptr = (struct UnkStruct4 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct4)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct4)); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct2_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); - ptr->player_data = SavArray_PlayerParty_get(sav2); - ptr->unk1c = FUN_0206BB28(sav2); + ptr->player_party = SavArray_PlayerParty_get(sav2); + ptr->IsNatDex = SavArray_IsNatDexEnabled(sav2); ptr->unk2c = FUN_02079C70(sav2); ptr->unk11 = 1; - ptr->unk14 = param0[0xd]; + ptr->unk14 = param0->unk0d; - ptr->unk13 = GetPartyCount(*(u32 *)ptr); + ptr->party_count = (u8)GetPartyCount(ptr->player_party); ptr->unk18 = 0; - ptr->unk12 = param0[9]; + ptr->unk12 = param0->unk09; ptr->unk20 = FUN_0202A918(sav2); @@ -161,25 +126,25 @@ THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 h FUN_0207C2A4(ptr, Sav2_PlayerData_GetProfileAddr(sav2)); - FUN_020373D4(param1, &UNK_020FA6E8, ptr); + FUN_020373D4(param1, (u32)&UNK_020FA6E8, (u32)ptr); - *((u32 **)param0)[5] = ptr; + *param0->unk14 = ptr; return 3; } -THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) +THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 3; } - u8 *r0 = param0[5][0]; - ((u8 *)param0)[0xd] = r0[20]; - FreeToHeap(r0); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)*param0->unk14; + param0->unk0d = ptr->unk14; + FreeToHeap(ptr); - param0[5][0] = 0; + *param0->unk14 = NULL; return 0; } @@ -187,46 +152,32 @@ THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); - switch (sav2->unk_00004) + struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); + switch (res2->unk04) { case 0: - sav2->unk_00004 = FUN_0205FA2C((u8 *)sav2, res, 0xb); + res2->unk04 = FUN_0205FA2C(res2, res, 0xb); break; case 1: - sav2->unk_00004 = FUN_0205FAD8((u8 *)sav2, res); + res2->unk04 = FUN_0205FAD8(res2, res); break; case 2: - sav2->unk_00004 = FUN_0205FB34((u8 *)sav2, res, 0xb); + res2->unk04 = FUN_0205FB34(res2, res, 0xb); break; case 3: - sav2->unk_00004 = FUN_0205FBC0((u8 ***)sav2, res); + res2->unk04 = FUN_0205FBC0(res2, res); break; case 4: - FreeToHeap(sav2); + FreeToHeap(res2); return 1; } return 0; } -struct UnkStruct1 -{ - u32 unk00; - u32 unk04; - u8 unk08; - u8 unk09; - u8 unk0a; - u8 unk0b; - u8 unk0c; - u8 unk0d; - u16 unk0e; - u32 unk10; - u32 unk14; -}; THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, - u32 param1, + void **param1, u8 param2, u8 param3, u8 param4, @@ -236,11 +187,11 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xb, sizeof(struct UnkStruct1)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct1)); + struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct1_0205FA2C)); + ptr->unk08 = param2; ptr->unk09 = param3; - ptr->unk0a = param4; ptr->unk0b = param5; ptr->unk0c = param6; @@ -250,28 +201,29 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); } -THUMB_FUNC u32 FUN_0205FC9C(u16 *param0, u32 *param1) + +THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { - if (FUN_0203384C(param1[3])) + if (FUN_0203384C(param1->unkC)) { - ((u32 *)param0)[2] = FUN_02038790(param1, param0[9], param0[10]); + param0->unk08 = FUN_02038790(param1, param0->unk12, param0->unk14); return 1; } - ((u32 *)param0)[0] = 1; + param0->unk00 = 1; return 2; } -THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) +THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 1; } - param0[0] = param0[2][8]; - FreeToHeap(param0[2]); + param0->unk00 = param0->unk08[8]; + FreeToHeap(param0->unk08); return 2; } @@ -279,20 +231,20 @@ THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); - switch (sav2->unk_00004) + switch (res2->unk04) { case 0: - sav2->unk_00004 = FUN_0205FC9C((u16 *)sav2, (u32 *)res); + res2->unk04 = FUN_0205FC9C(res2, res); break; case 1: - sav2->unk_00004 = FUN_0205FCC4((u32 **)sav2, (void *)res); + res2->unk04 = FUN_0205FCC4(res2, res); break; case 2: - u16 *var = GetVarPointer(res, ((u16 *)sav2)[8]); - *var = sav2->flashOkay; - FreeToHeap(sav2); + u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2->unk10); + *var = (u16)res2->unk00; + FreeToHeap(res2); return 1; } @@ -300,28 +252,13 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) return 0; } -struct UnkStruct2 -{ - u32 unk00; - u32 unk04; - u8 unk08; - u8 unk09; - u8 unk0a; - u8 unk0b; - u8 unk0c; - u8 unk0d; - u16 unk0e; - u16 unk10; - u16 unk12; - u16 unk14; - u16 unk16; -}; + THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkStruct2 *ptr = (struct UnkStruct2 *)AllocFromHeap(0xb, sizeof(struct UnkStruct2)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct2)); + struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); ptr->unk12 = param1; ptr->unk14 = param3; @@ -340,7 +277,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) return 0; } - u16 *var = GetVarPointer(res, res2[1]); + u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2[1]); switch (res2[0]) { case 0: @@ -371,13 +308,13 @@ THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 ptr[0] = param1; ptr[1] = param2; - FUN_0204640C(res->unk10, &FUN_0205FD70, ptr); + FUN_0204640C(res->unk10, &FUN_0205FD70, (u32 *)ptr); } THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) { - u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + u16 res = (u16)FUN_0202A150(FUN_02029FC8(sav2), 0x35); if (res < 20) { return 0; @@ -385,13 +322,13 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) u32 res2 = FUN_0202A8D8(sav2); - u8 res3 = FUN_0202A578(res2, 0xd, 0); - u8 res4 = FUN_0202A578(res2, 0, 0); - u8 res5 = FUN_0202A578(res2, 1, 0); + u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); + u8 res4 = (u8)FUN_0202A578(res2, 0, 0); + u8 res5 = (u8)FUN_0202A578(res2, 1, 0); - u8 res6 = FUN_0202A578(res2, 0xe, 0); - u8 res7 = FUN_0202A578(res2, 2, 0); - u8 res8 = FUN_0202A578(res2, 3, 0); + u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); + u8 res7 = (u8)FUN_0202A578(res2, 2, 0); + u8 res8 = (u8)FUN_0202A578(res2, 3, 0); if (res3 != 0 && res4 != 0 && res5 != 0) { @@ -457,7 +394,7 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) { - u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + u16 res = (u16)FUN_0202A150(FUN_02029FC8(sav2), 0x35); if (res < 20) { return 0; @@ -465,13 +402,13 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) u32 res2 = FUN_0202A8D8(sav2); - u8 res3 = FUN_0202A578(res2, 0xd, 0); - u8 res4 = FUN_0202A578(res2, 0, 0); - u8 res5 = FUN_0202A578(res2, 1, 0); + u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); + u8 res4 = (u8)FUN_0202A578(res2, 0, 0); + u8 res5 = (u8)FUN_0202A578(res2, 1, 0); - u8 res6 = FUN_0202A578(res2, 0xe, 0); - u8 res7 = FUN_0202A578(res2, 2, 0); - u8 res8 = FUN_0202A578(res2, 3, 0); + u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); + u8 res7 = (u8)FUN_0202A578(res2, 2, 0); + u8 res8 = (u8)FUN_0202A578(res2, 3, 0); if (res3 != 0 && res4 != 0 && res5 != 0) { @@ -572,7 +509,7 @@ THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) u32 res3 = FUN_02060064(FUN_0202A5D0(res)); int i = 0; - int res4 = FUN_0202A538(res, FUN_0202A240(res2, 0, 0), 0) * 0x18; + int res4 = FUN_0202A538(res, (u16)FUN_0202A240(res2, 0, 0), 0) * 0x18; for (i = 0; i < res4; i++) { diff --git a/arm9/src/unk_0206BB28.c b/arm9/src/unk_0206BB28.c index baaecc6a..e7c12793 100644 --- a/arm9/src/unk_0206BB28.c +++ b/arm9/src/unk_0206BB28.c @@ -6,12 +6,12 @@ #pragma thumb on -BOOL FUN_0206BB28(struct SaveBlock2 * sav2) +BOOL SavArray_IsNatDexEnabled(struct SaveBlock2 * sav2) { - return FUN_0206BB34(Sav2_Pokedex_get(sav2)); + return Pokedex_IsNatDexEnabled(Sav2_Pokedex_get(sav2)); } -BOOL FUN_0206BB34(struct Pokedex * pokedex) +BOOL Pokedex_IsNatDexEnabled(struct Pokedex * pokedex) { return Pokedex_GetNatDexFlag(pokedex) == TRUE; } -- cgit v1.2.3 From 44a082830ef1aaff60449d9dc2b01fdcf8300e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 15:18:24 +0200 Subject: remove extern declaration --- arm9/modules/52/src/module_52.c | 2 +- arm9/src/unk_0205FA2C.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c index a5b53e6c..1f74c77f 100644 --- a/arm9/modules/52/src/module_52.c +++ b/arm9/modules/52/src/module_52.c @@ -1,5 +1,6 @@ #include "module_52.h" #include "heap.h" +#include "unk_0205FA2C.h" extern struct Unk21DBE18 UNK_020FD144; @@ -7,7 +8,6 @@ extern struct Unk21DBE18 UNK_020F2B7C; extern struct Unk21DBE18 UNK_020F2B8C; extern void FUN_02015E3C(struct IGT *igt); -extern void FUN_0206007C(struct SaveBlock2 *sav2); extern int FUN_02053678(u32 random, u32 gender, u32 param2); extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3); extern void FUN_020377E0(struct SaveBlock2 *sav2); diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index dde83a06..25411c1a 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -27,6 +27,23 @@ extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); + +const u8 UNK_020F7454[] = { + 0x00, + 0x01, + 0x02, + 0x04, + 0x03, + 0x05, + 0x06, + 0x07, + 0x08, + 0x00, + 0x00, + 0x00, +}; + + THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct UnkPlayerStruct1_0205FA2C *ptr = -- cgit v1.2.3 From c54ec6c98fa9ac1affed7fb1233e9b9aa84a27c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 18:10:46 +0200 Subject: run clang-format --- arm9/src/unk_0205FA2C.c | 51 +++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 25411c1a..93bd2e4e 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -25,9 +25,6 @@ extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); - - - const u8 UNK_020F7454[] = { 0x00, 0x01, @@ -43,11 +40,11 @@ const u8 UNK_020F7454[] = { 0x00, }; - -THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +THUMB_FUNC u32 FUN_0205FA2C( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { - struct UnkPlayerStruct1_0205FA2C *ptr = - (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); + struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd( + heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); @@ -68,9 +65,7 @@ THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct U for (u8 i = 0; i < 6; i++) { ptr->unk2c[i] = param0->unk0e[i]; - } - FUN_020373D4(param1, (u32)&UNK_020F96DC, (u32)ptr); @@ -79,7 +74,8 @@ THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 1; } -THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FAD8( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -113,15 +109,13 @@ THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 2; } - - - - -THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +THUMB_FUNC u32 FUN_0205FB34( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd( + heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct2_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -150,7 +144,8 @@ THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 3; } -THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FBC0( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -169,7 +164,8 @@ THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct U THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); + struct UnkCallbackStruct1_0205FA2C *res2 = + (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) { case 0: @@ -192,7 +188,6 @@ THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) return 0; } - THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, void **param1, u8 param2, @@ -204,7 +199,8 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); + struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap( + 0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct1_0205FA2C)); ptr->unk08 = param2; @@ -218,8 +214,8 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); } - -THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FC9C( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0203384C(param1->unkC)) { @@ -232,7 +228,8 @@ THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct U return 2; } -THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FCC4( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -248,7 +245,8 @@ THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct U THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); + struct UnkCallbackStruct2_0205FA2C *res2 = + (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) { @@ -269,12 +267,11 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) return 0; } - - THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); + struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap( + 0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); ptr->unk12 = param1; -- cgit v1.2.3 From cc54fce78c69e0646ed6d128eadbbfc21c1e0143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 20:35:31 +0200 Subject: remove unnecessary padding --- arm9/src/unk_0205FA2C.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 93bd2e4e..3d74a9c8 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -35,9 +35,6 @@ const u8 UNK_020F7454[] = { 0x06, 0x07, 0x08, - 0x00, - 0x00, - 0x00, }; THUMB_FUNC u32 FUN_0205FA2C( -- cgit v1.2.3 From 72ecd04439857ccf7a07d8142d9d2bf50af13747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 20:35:56 +0200 Subject: replace hard-coded number with constant --- arm9/src/unk_0205FA2C.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 3d74a9c8..7bcdf950 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -534,7 +534,7 @@ THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) THUMB_FUNC BOOL FUN_02060144(u32 **param0) { - if (param0[7][0] == 0x1ED) + if (param0[7][0] == SPECIES_ARCEUS) { return TRUE; } -- cgit v1.2.3 From 8132e1e5678b0bde7421acf7600c223854fe7c01 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 5 Apr 2021 12:41:20 -0400 Subject: Decompile scrcmd_16 -> scrcmd_daycare --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_16.s | 408 ---------------------------------------------- arm9/asm/unk_02038C78.s | 32 ++-- arm9/global.inc | 32 ++-- arm9/src/scrcmd_daycare.c | 192 ++++++++++++++++++++++ 5 files changed, 225 insertions(+), 441 deletions(-) delete mode 100644 arm9/asm/scrcmd_16.s create mode 100644 arm9/src/scrcmd_daycare.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 05a905ee..b0bb0a55 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -167,7 +167,7 @@ Static arm9 Object scrcmd_13.o Object scrcmd_coins.o Object scrcmd_money.o - Object scrcmd_16.o + Object scrcmd_daycare.o Object scrcmd_17.o Object scrcmd_18_c.o Object scrcmd_18.o diff --git a/arm9/asm/scrcmd_16.s b/arm9/asm/scrcmd_16.s deleted file mode 100644 index 8afbf518..00000000 --- a/arm9/asm/scrcmd_16.s +++ /dev/null @@ -1,408 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02043E00 -FUN_02043E00: ; 0x02043E00 - push {r3-r5, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - ldr r5, [r0, #0xc] - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl Sav2_DayCare_get - ldr r1, [r4, #0x0] - bl MOD05_021ED4E0 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02043E20 -FUN_02043E20: ; 0x02043E20 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r4, [r1, #0xc] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x8 - bl SavArray_get - bl MOD05_021ED5EC - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02043E50 -FUN_02043E50: ; 0x02043E50 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x8 - ldr r0, [r0, #0xc] - bl SavArray_get - bl MOD05_021ECD64 - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02043E68 -FUN_02043E68: ; 0x02043E68 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0x8 - ldr r0, [r5, #0xc] - bl SavArray_get - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl SavArray_PlayerParty_get - add r4, #0x80 - add r5, r0, #0x0 - ldr r0, [r4, #0x0] - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r2, r0, #0x0 - add r0, r6, #0x0 - add r1, r5, #0x0 - bl MOD05_DayCare_GiveEggToPlayer - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02043E9C -FUN_02043E9C: ; 0x02043E9C - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0xf - add r0, r5, #0x0 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - ldr r6, [r5, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0x8 - bl SavArray_get - add r6, r0, #0x0 - ldr r0, [r5, #0xc] - bl SavArray_PlayerParty_get - lsl r3, r4, #0x18 - ldr r1, [r7, #0x0] - add r2, r6, #0x0 - lsr r3, r3, #0x18 - bl MOD05_021EC71C - ldr r1, [sp, #0x0] - strh r0, [r1, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02043EFC -FUN_02043EFC: ; 0x02043EFC - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0xf - add r0, r5, #0x0 - bl FUN_02039438 - add r7, r0, #0x0 - add r0, r4, #0x0 - ldr r5, [r5, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - bl SavArray_get - lsl r1, r4, #0x18 - ldr r2, [r7, #0x0] - lsr r1, r1, #0x18 - bl MOD05_021EC854 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02043F50 -FUN_02043F50: ; 0x02043F50 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - ldr r4, [r0, #0xc] - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x8 - bl SavArray_get - ldr r2, [r6, #0x0] - add r1, r5, #0x0 - bl MOD05_021EC864 - strh r0, [r7, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02043FA0 -FUN_02043FA0: ; 0x02043FA0 - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - mov r1, #0xf - add r0, r5, #0x0 - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl SavArray_PlayerParty_get - ldr r2, [r6, #0x0] - add r1, r7, #0x0 - bl MOD05_021ED5C4 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02043FF4 -FUN_02043FF4: ; 0x02043FF4 - push {r4-r6, lr} - add r6, r0, #0x0 - add r1, r6, #0x0 - add r1, #0x80 - ldr r4, [r1, #0x0] - ldr r5, [r4, #0xc] - bl ScriptReadHalfword - add r6, #0x80 - add r1, r0, #0x0 - ldr r0, [r6, #0x0] - bl VarGet - add r6, r0, #0x0 - ldr r0, [r4, #0xc] - bl SavArray_PlayerParty_get - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - bl SavArray_get - lsl r1, r6, #0x18 - add r2, r0, #0x0 - add r0, r4, #0x0 - lsr r1, r1, #0x18 - add r3, r5, #0x0 - bl MOD05_021EC57C - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02044034 -FUN_02044034: ; 0x02044034 - push {r3-r7, lr} - sub sp, #0x10 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - ldr r5, [r0, #0xc] - bl FUN_02039438 - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0xc] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl Sav2_DayCare_get - lsl r1, r4, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - ldr r1, [r6, #0x0] - ldr r2, [sp, #0x8] - ldr r3, [sp, #0xc] - str r1, [sp, #0x4] - lsl r1, r7, #0x18 - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl MOD05_021ED52C - mov r0, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - - thumb_func_start FUN_020440C0 -FUN_020440C0: ; 0x020440C0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r4, [r1, #0xc] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x8 - bl SavArray_get - bl MOD05_021ED644 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020440F0 -FUN_020440F0: ; 0x020440F0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r4, [r1, #0xc] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x8 - bl SavArray_get - bl Sav2_DayCare_GetEggPID - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02044120 -FUN_02044120: ; 0x02044120 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02044138 -FUN_02044138: ; 0x02044138 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0204413C -FUN_0204413C: ; 0x0204413C - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02044140 -FUN_02044140: ; 0x02044140 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index a5037d01..70b66348 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -514,8 +514,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203DC70 .word FUN_0203DC88 .word FUN_0203DCA0 - .word FUN_02043E00 - .word FUN_02043E20 + .word ScrCmd_Unk016D + .word ScrCmd_Unk016E .word FUN_0203DCB8 .word FUN_0203DCC8 .word FUN_0203DCD8 @@ -569,19 +569,19 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203DE58 .word FUN_0203DE80 .word ScrCmd_TakeMoneyAddress - .word FUN_02043E9C - .word FUN_02044120 - .word FUN_02044138 - .word FUN_0204413C - .word FUN_02043E50 - .word FUN_02043E68 - .word FUN_02043EFC + .word ScrCmd_Unk01A4 + .word ScrCmd_Unk01A5 + .word ScrCmd_Unk01A6 + .word ScrCmd_Unk01A7 + .word ScrCmd_Unk01A8 + .word ScrCmd_Unk01A9 + .word ScrCmd_Unk01AA .word ScrCmd_HasEnoughMoneyAddress .word FUN_0203DD50 - .word FUN_02044140 - .word FUN_02043F50 - .word FUN_02043FA0 - .word FUN_02043FF4 + .word ScrCmd_Unk01AD + .word ScrCmd_Unk01AE + .word ScrCmd_Unk01AF + .word ScrCmd_Unk01B0 .word FUN_0203DEC4 .word FUN_0203DEF8 .word FUN_0203DF2C @@ -593,10 +593,10 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_getpartymonfriendship .word FUN_020448D4 .word FUN_020449A4 - .word FUN_02044034 + .word ScrCmd_Unk01BC .word FUN_0203B618 - .word FUN_020440C0 - .word FUN_020440F0 + .word ScrCmd_Unk01BE + .word ScrCmd_Unk01BF .word FUN_02044F58 .word FUN_0203E018 .word FUN_0203E054 diff --git a/arm9/global.inc b/arm9/global.inc index 63ab1566..2029d1c1 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3296,22 +3296,22 @@ .extern ScrCmd_Unk0072 .extern ScrCmd_Unk0073 .extern ScrCmd_Unk0074 -.extern FUN_02043E00 -.extern FUN_02043E20 -.extern FUN_02043E50 -.extern FUN_02043E68 -.extern FUN_02043E9C -.extern FUN_02043EFC -.extern FUN_02043F50 -.extern FUN_02043FA0 -.extern FUN_02043FF4 -.extern FUN_02044034 -.extern FUN_020440C0 -.extern FUN_020440F0 -.extern FUN_02044120 -.extern FUN_02044138 -.extern FUN_0204413C -.extern FUN_02044140 +.extern ScrCmd_Unk016D +.extern ScrCmd_Unk016E +.extern ScrCmd_Unk01A8 +.extern ScrCmd_Unk01A9 +.extern ScrCmd_Unk01A4 +.extern ScrCmd_Unk01AA +.extern ScrCmd_Unk01AE +.extern ScrCmd_Unk01AF +.extern ScrCmd_Unk01B0 +.extern ScrCmd_Unk01BC +.extern ScrCmd_Unk01BE +.extern ScrCmd_Unk01BF +.extern ScrCmd_Unk01A5 +.extern ScrCmd_Unk01A6 +.extern ScrCmd_Unk01A7 +.extern ScrCmd_Unk01AD .extern FUN_02044158 .extern FUN_0204416C .extern FUN_02044198 diff --git a/arm9/src/scrcmd_daycare.c b/arm9/src/scrcmd_daycare.c new file mode 100644 index 00000000..4e2f925e --- /dev/null +++ b/arm9/src/scrcmd_daycare.c @@ -0,0 +1,192 @@ +#include "scrcmd.h" +#include "daycare.h" +#include "party.h" +#include "script_buffers.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, int idx); + +extern void MOD05_021EC57C(struct PlayerParty* party, u8 idx, struct DayCare* daycare, struct SaveBlock2* sav2); +extern u16 MOD05_021EC71C(struct PlayerParty* party, struct ScrStrBufs* mgr, struct DayCare* daycare, u8 idx); +extern u16 MOD05_021EC854(struct DayCare* daycare, u8 idx, struct ScrStrBufs* mgr); +extern u8 MOD05_021EC864(struct DayCare* daycare, int idx, struct ScrStrBufs* mgr); +extern void MOD05_021ECD64(struct DayCare* daycare); +extern void MOD05_DayCare_GiveEggToPlayer(struct DayCare* daycare, struct PlayerParty* party, struct PlayerData* player); +extern void MOD05_021ED4E0(struct DayCare* daycare, struct ScrStrBufs* mgr); +extern void MOD05_021ED52C(struct DayCare* daycare, u8 idx1, u8 idx2, u8 idx3, u8 idx4, struct ScrStrBufs* mgr); +extern u16 MOD05_021ED5C4(struct PlayerParty* party, int idx, struct ScrStrBufs* mgr); +extern u16 MOD05_021ED5EC(struct DayCare* daycare); +extern u32 MOD05_021ED644(struct DayCare* daycare); + +THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + struct DayCare* daycare = Sav2_DayCare_get(sav2); + + MOD05_021ED4E0(daycare, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021ED5EC(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx) +{ + struct DayCare* daycare = SavArray_get(ctx->unk80->saveBlock2, 8); + MOD05_021ECD64(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct DayCare* daycare = SavArray_get(sav_ptr->saveBlock2, 8); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + + MOD05_DayCare_GiveEggToPlayer(daycare, party, player); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A4(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + + *ret_ptr = MOD05_021EC71C(party, *mgr, daycare, (u8)idx); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021EC854(daycare, (u8)idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021EC864(daycare, idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AF(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16 unused = ScriptReadHalfword(ctx); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + + *ret_ptr = MOD05_021ED5C4(party, idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01B0(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct DayCare* daycare = SavArray_get(sav2, 8); + + MOD05_021EC57C(party, (u8)idx, daycare, sav2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BC(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16 idx1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx4 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = Sav2_DayCare_get(sav2); + + MOD05_021ED52C(daycare, (u8)idx1, (u8)idx2, (u8)idx3, (u8)idx4, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BE(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = (u16)MOD05_021ED644(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BF(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = (u16)Sav2_DayCare_GetEggPID(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A5(struct ScriptContext* ctx) +{ + u16* unused = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx) +{ + u16* unused = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + return FALSE; +} -- cgit v1.2.3 From 3f493d7ab6c45e17e515fd9901450935a6a08f14 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 5 Apr 2021 20:55:25 -0400 Subject: Decompile scrcmd_11 --- arm9/asm/scrcmd_11.s | 239 ------------------------------------------------ arm9/asm/unk_02038C78.s | 18 ++-- arm9/global.inc | 18 ++-- arm9/src/scrcmd_11.c | 120 ++++++++++++++++++++++++ 4 files changed, 138 insertions(+), 257 deletions(-) delete mode 100644 arm9/asm/scrcmd_11.s create mode 100644 arm9/src/scrcmd_11.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_11.s b/arm9/asm/scrcmd_11.s deleted file mode 100644 index 5612284f..00000000 --- a/arm9/asm/scrcmd_11.s +++ /dev/null @@ -1,239 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02042B0C -FUN_02042B0C: ; 0x02042B0C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r1, r0, #0x0 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r1, [r1, #0x0] - bl FUN_0204B5FC - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02042B40 -FUN_02042B40: ; 0x02042B40 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B63C - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02042B74 -FUN_02042B74: ; 0x02042B74 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B660 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02042BA8 -FUN_02042BA8: ; 0x02042BA8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B684 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02042BDC -FUN_02042BDC: ; 0x02042BDC - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r6, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B6A4 - strh r0, [r6, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02042C10 -FUN_02042C10: ; 0x02042C10 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r2, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B57C - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02042C44 -FUN_02042C44: ; 0x02042C44 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, #0x80 - add r2, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r1, [r4, #0x0] - bl FUN_0204B5A8 - add r0, r6, #0x0 - mov r1, #0x3 - bl FUN_0202A0E8 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02042C8C -FUN_02042C8C: ; 0x02042C8C - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - cmp r0, #0x0 - beq _02042C9E - cmp r0, #0x1 - beq _02042CA8 - b _02042CB2 -_02042C9E: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204B9A0 - b _02042CB6 -_02042CA8: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204B9CC - b _02042CB6 -_02042CB2: - bl ErrorHandling -_02042CB6: - mov r0, #0x1 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02042CBC -FUN_02042CBC: ; 0x02042CBC - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02029FC8 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xa - bl FUN_02039438 - add r1, r0, #0x0 - add r5, #0x80 - ldr r0, [r5, #0x0] - ldr r1, [r1, #0x0] - bl FUN_0204B4FC - add r0, r4, #0x0 - mov r1, #0x0 - bl FUN_0202A170 - mov r0, #0x0 - pop {r3-r5, pc} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 70b66348..b79288ca 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -530,15 +530,15 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203D958 .word FUN_02040D04 .word FUN_02040D7C - .word FUN_02042B0C - .word FUN_02042B40 - .word FUN_02042B74 - .word FUN_02042BA8 - .word FUN_02042BDC - .word FUN_02042C10 - .word FUN_02042C44 - .word FUN_02042C8C - .word FUN_02042CBC + .word ScrCmd_Unk017D + .word ScrCmd_Unk017E + .word ScrCmd_Unk017F + .word ScrCmd_Unk0180 + .word ScrCmd_Unk0181 + .word ScrCmd_Unk0182 + .word ScrCmd_Unk0183 + .word ScrCmd_Unk0184 + .word ScrCmd_Unk0185 .word FUN_0203D998 .word FUN_0203D9E8 .word FUN_0203DA78 diff --git a/arm9/global.inc b/arm9/global.inc index b09157f2..0da3fadd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3264,15 +3264,15 @@ .extern FUN_02042A18 .extern FUN_02042A48 .extern FUN_02042A98 -.extern FUN_02042B0C -.extern FUN_02042B40 -.extern FUN_02042B74 -.extern FUN_02042BA8 -.extern FUN_02042BDC -.extern FUN_02042C10 -.extern FUN_02042C44 -.extern FUN_02042C8C -.extern FUN_02042CBC +.extern ScrCmd_Unk017D +.extern ScrCmd_Unk017E +.extern ScrCmd_Unk017F +.extern ScrCmd_Unk0180 +.extern ScrCmd_Unk0181 +.extern ScrCmd_Unk0182 +.extern ScrCmd_Unk0183 +.extern ScrCmd_Unk0184 +.extern ScrCmd_Unk0185 .extern FUN_02042D1C .extern ScrCmd_Unk0253 .extern ScrCmd_Unk0254 diff --git a/arm9/src/scrcmd_11.c b/arm9/src/scrcmd_11.c new file mode 100644 index 00000000..8553adfa --- /dev/null +++ b/arm9/src/scrcmd_11.c @@ -0,0 +1,120 @@ +#include "scrcmd.h" +#include "unk_02029FB0.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, int idx); + +extern void FUN_0202A0E8(struct UnkStruct_02029FB0*, int); +extern void FUN_0202A170(struct UnkStruct_02029FB0*, int); +extern u8 FUN_0204B5FC(struct UnkSavStruct80*, void*); +extern void FUN_0204B57C(struct UnkSavStruct80*, void*, int); +extern u16 FUN_0204B63C(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B660(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B684(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B6A4(struct UnkSavStruct80*, void*); +extern void FUN_0204B9CC(struct UnkSavStruct80*); +extern void FUN_0204B5A8(struct UnkSavStruct80*, void*, u16); +extern void FUN_0204B9A0(struct UnkSavStruct80*); +extern void FUN_0204B4FC(struct UnkSavStruct80*, void*); + +THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void** unk = FUN_02039438(ctx->unk80, 10); + + *ret_ptr = FUN_0204B5FC(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B63C(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B660(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B684(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B6A4(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_0204B57C(ctx->unk80, *unk, unk2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + struct UnkStruct_02029FB0* unk2 = FUN_02029FC8(ctx->unk80->saveBlock2); + u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_0204B5A8(ctx->unk80, *unk, unk3); + FUN_0202A0E8(unk2, 3); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) +{ + u16 unk = ScriptReadHalfword(ctx); + + switch (unk) + { + case 0: + FUN_0204B9A0(ctx->unk80); + break; + case 1: + FUN_0204B9CC(ctx->unk80); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0185(struct ScriptContext* ctx) +{ + struct UnkStruct_02029FB0* unk = FUN_02029FC8(ctx->unk80->saveBlock2); + void** unk2 = FUN_02039438(ctx->unk80, 10); + + FUN_0204B4FC(ctx->unk80, *unk2); + FUN_0202A170(unk, 0); + + return FALSE; +} -- cgit v1.2.3 From a4a5cc6169360abd5687cbf39b9fa6bd3fb7ca5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 7 Apr 2021 21:47:39 +0200 Subject: decomp start of unk_0202F150.s --- arm9/arm9.lsf | 1 + arm9/asm/unk_0202F150.s | 959 +--------------------------------------------- arm9/global.inc | 9 + arm9/src/unk_0202F150_c.c | 417 ++++++++++++++++++++ 4 files changed, 433 insertions(+), 953 deletions(-) create mode 100644 arm9/src/unk_0202F150_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 05a905ee..7aad650f 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -127,6 +127,7 @@ Static arm9 Object unk_0202D8D0.o Object unk_0202DB14.o Object unk_0202E29C.o + Object unk_0202F150_c.o Object unk_0202F150.o Object unk_02031480.o Object unk_02031734.o diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s index a4efe28d..873f7d0b 100644 --- a/arm9/asm/unk_0202F150.s +++ b/arm9/asm/unk_0202F150.s @@ -5,971 +5,24 @@ .section .bss - .global UNK_021C59F4 -UNK_021C59F4: ; 0x021C59F4 - .space 0x8 .section .data - .global UNK_02105D58 -UNK_02105D58: ; 0x02105D58 - .byte 4, 4 + .text - thumb_func_start FUN_0202F150 -FUN_0202F150: ; 0x0202F150 - push {r4-r6, lr} - add r6, r1, #0x0 - mov r4, #0x0 - ldr r1, _0202F2BC ; =UNK_021C59F4 - cmp r0, #0x0 - strb r4, [r1, #0x0] - beq _0202F25C - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r5, r0, #0x1 - ldr r0, _0202F2BC ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202F178 - mov r0, #0x1 - pop {r4-r6, pc} -_0202F178: - mov r0, #0xf - bl FUN_02031480 - ldr r1, _0202F2C0 ; =0x0000068C - mov r0, #0xf - bl AllocFromHeap - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, _0202F2C0 ; =0x0000068C - str r0, [r1, #0x4] - add r1, r4, #0x0 - bl MI_CpuFill8 - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2C4 ; =0x00000658 - ldr r0, [r2, #0x4] - add r6, #0x40 - str r6, [r0, r1] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - add r6, r4, #0x0 - add r0, #0x25 - strb r6, [r3, r0] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - mov r6, #0x1b - add r0, #0x26 - strb r6, [r3, r0] - ldr r2, [r2, #0x4] - mov r0, #0xf - ldr r1, [r2, r1] - lsl r1, r1, #0x1 - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2C8 ; =0x0000045C - ldr r3, [r2, #0x4] - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x46 - ldr r3, [r2, #0x4] - lsl r1, r1, #0x4 - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - mul r1, r5 - bl AllocFromHeap - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2CC ; =0x00000458 - ldr r3, [r2, #0x4] - str r0, [r3, r1] - ldr r2, [r2, #0x4] - ldr r1, _0202F2C4 ; =0x00000658 - mov r0, #0xf - ldr r1, [r2, r1] - mul r1, r5 - bl AllocFromHeap - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _0202F2D0 ; =0x00000454 - str r0, [r2, r1] - bl FUN_02033534 - cmp r0, #0xa - ldr r2, _0202F2D4 ; =0x0000054C - bne _0202F236 - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x64 - ldr r3, [r0, #0x4] - add r0, r3, r2 - sub r2, #0xe8 - add r2, r3, r2 - bl FUN_0202D7D8 - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x32 - ldr r3, [r0, #0x4] - ldr r2, _0202F2D8 ; =0x0000056C - lsl r1, r1, #0x4 - add r0, r3, r2 - sub r2, #0x90 - add r2, r3, r2 - bl FUN_0202D7D8 - b _0202F268 -_0202F236: - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r1, #0x14 - ldr r3, [r0, #0x4] - add r0, r3, r2 - sub r2, #0xe8 - add r2, r3, r2 - bl FUN_0202D7D8 - ldr r0, _0202F2BC ; =UNK_021C59F4 - add r1, r6, #0x0 - ldr r3, [r0, #0x4] - ldr r2, _0202F2D8 ; =0x0000056C - add r1, #0xfd - add r0, r3, r2 - sub r2, #0x90 - add r2, r3, r2 - bl FUN_0202D7D8 - b _0202F268 -_0202F25C: - ldr r0, [r1, #0x4] - mov r4, #0x1 - cmp r0, #0x0 - bne _0202F268 - bl ErrorHandling -_0202F268: - ldr r2, _0202F2BC ; =UNK_021C59F4 - ldr r1, _0202F2DC ; =0x0000065C - ldr r3, [r2, #0x4] - mov r0, #0x0 - strh r0, [r3, r1] - mov r5, #0xff - add r1, #0x1b -_0202F276: - ldr r3, [r2, #0x4] - add r3, r3, r0 - add r0, r0, #0x1 - strb r5, [r3, r1] - cmp r0, #0x4 - blt _0202F276 - cmp r4, #0x0 - bne _0202F28A - bl FUN_0202F2F0 -_0202F28A: - ldr r0, _0202F2BC ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F2E0 ; =0x000005F8 - add r0, r1, r0 - bl FUN_020312BC - cmp r4, #0x0 - bne _0202F2AC - mov r1, #0x0 - ldr r0, _0202F2E4 ; =FUN_0202FB20 - add r2, r1, #0x0 - bl FUN_0200CA60 - ldr r1, _0202F2BC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _0202F2E8 ; =0x00000548 - str r0, [r2, r1] -_0202F2AC: - ldr r0, _0202F2BC ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F2EC ; =0x00000687 - strb r2, [r1, r0] - mov r0, #0x1 - pop {r4-r6, pc} - nop -_0202F2BC: .word UNK_021C59F4 -_0202F2C0: .word 0x0000068C -_0202F2C4: .word 0x00000658 -_0202F2C8: .word 0x0000045C -_0202F2CC: .word 0x00000458 -_0202F2D0: .word 0x00000454 -_0202F2D4: .word 0x0000054C -_0202F2D8: .word 0x0000056C -_0202F2DC: .word 0x0000065C -_0202F2E0: .word 0x000005F8 -_0202F2E4: .word FUN_0202FB20 -_0202F2E8: .word 0x00000548 -_0202F2EC: .word 0x00000687 - thumb_func_start FUN_0202F2F0 -FUN_0202F2F0: ; 0x0202F2F0 - push {r3-r7, lr} - ldr r3, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F550 ; =0x0000062C - ldr r1, [r3, #0x4] - mov r0, #0x0 - strb r0, [r1, r2] - ldr r4, [r3, #0x4] - add r1, r2, #0x1 - strb r0, [r4, r1] - add r1, r2, #0x0 - ldr r4, [r3, #0x4] - add r1, #0x53 - strb r0, [r4, r1] - ldr r1, [r3, #0x4] - add r2, #0x54 - strb r0, [r1, r2] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F558 ; =0x00000458 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r4, #0x0 - cmp r6, #0x0 - ble _0202F360 - ldr r7, _0202F54C ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202F33E: - ldr r3, [r7, #0x4] - ldr r0, _0202F554 ; =0x00000658 - ldr r1, _0202F558 ; =0x00000458 - ldr r2, [r3, r0] - ldr r0, _0202F55C ; =0x000004E8 - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r4, #0x0 - mul r1, r2 - add r0, r0, r5 - add r1, r3, r1 - bl FUN_0202D394 - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r6 - blt _0202F33E -_0202F360: - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F560 ; =0x00000454 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r5, #0x0 - cmp r6, #0x0 - ble _0202F3A2 - ldr r7, _0202F54C ; =UNK_021C59F4 - add r4, r5, #0x0 -_0202F380: - ldr r3, [r7, #0x4] - ldr r0, _0202F554 ; =0x00000658 - ldr r1, _0202F560 ; =0x00000454 - ldr r2, [r3, r0] - ldr r0, _0202F564 ; =0x0000047C - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - add r5, r5, #0x1 - add r4, #0xc - cmp r5, r6 - blt _0202F380 -_0202F3A2: - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x6 - ldr r1, [r0, #0x4] - mov r0, #0xb5 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x0 - lsl r2, r2, #0x6 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r1, #0xb5 - ldr r2, [r0, #0x4] - ldr r0, _0202F568 ; =0x000004DC - lsl r1, r1, #0x2 - add r0, r2, r0 - add r1, r2, r1 - mov r2, #0x6 - lsl r2, r2, #0x6 - bl FUN_0202D394 - mov r0, #0xee - add r2, r0, #0x0 - mov r3, #0x85 - ldr r4, _0202F54C ; =UNK_021C59F4 - mov r1, #0x0 - add r2, #0x66 - lsl r3, r3, #0x2 -_0202F3DA: - ldr r5, [r4, #0x4] - add r5, r5, r1 - strb r0, [r5, r2] - ldr r5, [r4, #0x4] - add r5, r5, r1 - add r1, r1, #0x1 - strb r0, [r5, r3] - cmp r1, #0xc0 - blt _0202F3DA - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x42 - ldr r0, [r0, #0x4] - mov r1, #0x0 - add r0, #0x4c - lsl r2, r2, #0x2 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x42 - ldr r1, [r0, #0x4] - ldr r0, _0202F56C ; =0x00000464 - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, #0x4c - bl FUN_0202D394 - ldr r1, _0202F54C ; =UNK_021C59F4 - mov r2, #0xff - ldr r0, [r1, #0x4] - mov r3, #0x1 - strb r2, [r0, #0x0] - ldr r0, [r1, #0x4] - add r0, #0x26 - strb r2, [r0, #0x0] - mov r2, #0xee -_0202F420: - ldr r0, [r1, #0x4] - strb r2, [r0, r3] - ldr r0, [r1, #0x4] - add r0, r0, r3 - add r0, #0x26 - add r3, r3, #0x1 - strb r2, [r0, #0x0] - cmp r3, #0x26 - blt _0202F420 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r2, _0202F554 ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F570 ; =0x0000045C - ldr r2, [r3, r2] - ldr r0, [r3, r0] - mov r1, #0x0 - lsl r2, r2, #0x1 - bl MI_CpuFill8 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r1, #0x47 - ldr r3, [r0, #0x4] - ldr r2, _0202F554 ; =0x00000658 - lsl r1, r1, #0x4 - add r0, r3, r1 - sub r1, #0x14 - ldr r2, [r3, r2] - ldr r1, [r3, r1] - lsl r2, r2, #0x1 - bl FUN_0202D394 - mov r2, #0x0 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r1, _0202F574 ; =0x00000684 - ldr r3, [r0, #0x4] - mov r12, r2 - strb r2, [r3, r1] - ldr r3, [r0, #0x4] - add r1, r1, #0x1 - strb r2, [r3, r1] - add r1, r2, #0x0 - add r7, r2, #0x0 - add r6, r2, #0x0 -_0202F476: - ldr r3, [r0, #0x4] - add r4, r3, r2 - ldr r3, _0202F578 ; =0x0000065F - strb r6, [r4, r3] - ldr r3, [r0, #0x4] - ldr r4, _0202F57C ; =0x00000667 - add r5, r3, r2 - mov r3, #0x1 - strb r3, [r5, r4] - ldr r3, [r0, #0x4] - add r4, #0x8 - add r5, r3, r2 - mov r3, #0x1 - strb r3, [r5, r4] - ldr r4, [r0, #0x4] - mov r3, r12 - add r4, r4, r3 - mov r3, #0x61 - lsl r3, r3, #0x4 - strh r6, [r4, r3] - ldr r3, [r0, #0x4] - mov r4, #0xee - add r5, r3, r1 - ldr r3, _0202F580 ; =0x00000596 - add r2, r2, #0x1 - strb r4, [r5, r3] - ldr r3, [r0, #0x4] - ldr r4, _0202F584 ; =0x0000FFFF - add r5, r3, r1 - ldr r3, _0202F588 ; =0x00000594 - strh r4, [r5, r3] - ldr r3, [r0, #0x4] - add r4, r3, r1 - mov r3, #0x59 - lsl r3, r3, #0x4 - str r6, [r4, r3] - ldr r3, [r0, #0x4] - add r4, r3, r1 - ldr r3, _0202F58C ; =0x0000058C - add r1, #0xc - str r6, [r4, r3] - ldr r3, [r0, #0x4] - add r4, r3, r7 - ldr r3, _0202F590 ; =0x00000638 - add r7, r7, #0x4 - str r6, [r4, r3] - mov r3, r12 - add r3, r3, #0x2 - mov r12, r3 - cmp r2, #0x8 - blt _0202F476 - ldr r1, _0202F54C ; =UNK_021C59F4 - ldr r0, _0202F594 ; =0x00000634 - ldr r2, [r1, #0x4] - sub r3, r0, #0x4 - str r6, [r2, r0] - ldr r4, [r1, #0x4] - mov r2, #0x1 - str r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - sub r3, #0x3e - mov r2, #0xee - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - ldr r2, _0202F584 ; =0x0000FFFF - sub r3, #0x40 - strh r2, [r4, r3] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x44 - str r6, [r3, r2] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x48 - str r6, [r3, r2] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x4e - mov r2, #0x1 - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x4f - strb r2, [r4, r3] - ldr r2, _0202F598 ; =UNK_02105D58 - mov r3, #0x4 - strb r3, [r2, #0x1] - strb r3, [r2, #0x0] - ldr r1, [r1, #0x4] - sub r0, #0xe8 - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F54C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F59C ; =0x0000056C - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F54C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F5A0 ; =0x00000688 - strb r2, [r1, r0] - pop {r3-r7, pc} - .balign 4 -_0202F54C: .word UNK_021C59F4 -_0202F550: .word 0x0000062C -_0202F554: .word 0x00000658 -_0202F558: .word 0x00000458 -_0202F55C: .word 0x000004E8 -_0202F560: .word 0x00000454 -_0202F564: .word 0x0000047C -_0202F568: .word 0x000004DC -_0202F56C: .word 0x00000464 -_0202F570: .word 0x0000045C -_0202F574: .word 0x00000684 -_0202F578: .word 0x0000065F -_0202F57C: .word 0x00000667 -_0202F580: .word 0x00000596 -_0202F584: .word 0x0000FFFF -_0202F588: .word 0x00000594 -_0202F58C: .word 0x0000058C -_0202F590: .word 0x00000638 -_0202F594: .word 0x00000634 -_0202F598: .word UNK_02105D58 -_0202F59C: .word 0x0000056C -_0202F5A0: .word 0x00000688 - thumb_func_start FUN_0202F5A4 -FUN_0202F5A4: ; 0x0202F5A4 - push {r3-r7, lr} - ldr r1, _0202F7D4 ; =UNK_021C59F4 - ldr r0, _0202F7D8 ; =0x0000062C - ldr r2, [r1, #0x4] - mov r3, #0x0 - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - add r0, r0, #0x1 - strb r3, [r1, r0] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7E0 ; =0x00000458 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r4, #0x0 - cmp r6, #0x0 - ble _0202F606 - ldr r7, _0202F7D4 ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202F5E4: - ldr r3, [r7, #0x4] - ldr r0, _0202F7DC ; =0x00000658 - ldr r1, _0202F7E0 ; =0x00000458 - ldr r2, [r3, r0] - ldr r0, _0202F7E4 ; =0x000004E8 - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r4, #0x0 - mul r1, r2 - add r0, r0, r5 - add r1, r3, r1 - bl FUN_0202D394 - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r6 - blt _0202F5E4 -_0202F606: - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7E8 ; =0x00000454 - mov r1, #0x0 - ldr r0, [r3, r0] - ldr r3, [r3, r2] - add r2, r3, #0x0 - mul r2, r6 - bl MI_CpuFill8 - mov r5, #0x0 - cmp r6, #0x0 - ble _0202F648 - ldr r7, _0202F7D4 ; =UNK_021C59F4 - add r4, r5, #0x0 -_0202F626: - ldr r3, [r7, #0x4] - ldr r0, _0202F7DC ; =0x00000658 - ldr r1, _0202F7E8 ; =0x00000454 - ldr r2, [r3, r0] - ldr r0, _0202F7EC ; =0x0000047C - add r0, r3, r0 - ldr r3, [r3, r1] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - add r5, r5, #0x1 - add r4, #0xc - cmp r5, r6 - blt _0202F626 -_0202F648: - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x6 - ldr r1, [r0, #0x4] - mov r0, #0xb5 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x0 - lsl r2, r2, #0x6 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0xb5 - ldr r2, [r0, #0x4] - ldr r0, _0202F7F0 ; =0x000004DC - lsl r1, r1, #0x2 - add r0, r2, r0 - add r1, r2, r1 - mov r2, #0x6 - lsl r2, r2, #0x6 - bl FUN_0202D394 - mov r0, #0xee - add r2, r0, #0x0 - mov r3, #0x85 - ldr r4, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0x0 - add r2, #0x66 - lsl r3, r3, #0x2 -_0202F680: - ldr r5, [r4, #0x4] - add r5, r5, r1 - strb r0, [r5, r2] - ldr r5, [r4, #0x4] - add r5, r5, r1 - add r1, r1, #0x1 - strb r0, [r5, r3] - cmp r1, #0xc0 - blt _0202F680 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x42 - ldr r0, [r0, #0x4] - mov r1, #0x0 - add r0, #0x4c - lsl r2, r2, #0x2 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x42 - ldr r1, [r0, #0x4] - ldr r0, _0202F7F4 ; =0x00000464 - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, #0x4c - bl FUN_0202D394 - ldr r1, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0xff - ldr r0, [r1, #0x4] - mov r3, #0x1 - strb r2, [r0, #0x0] - ldr r0, [r1, #0x4] - add r0, #0x26 - strb r2, [r0, #0x0] - mov r2, #0xee -_0202F6C6: - ldr r0, [r1, #0x4] - strb r2, [r0, r3] - ldr r0, [r1, #0x4] - add r0, r0, r3 - add r0, #0x26 - add r3, r3, #0x1 - strb r2, [r0, #0x0] - cmp r3, #0x26 - blt _0202F6C6 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r2, _0202F7DC ; =0x00000658 - ldr r3, [r0, #0x4] - ldr r0, _0202F7F8 ; =0x0000045C - ldr r2, [r3, r2] - ldr r0, [r3, r0] - mov r1, #0x0 - lsl r2, r2, #0x1 - bl MI_CpuFill8 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r1, #0x47 - ldr r3, [r0, #0x4] - ldr r2, _0202F7DC ; =0x00000658 - lsl r1, r1, #0x4 - add r0, r3, r1 - sub r1, #0x14 - ldr r2, [r3, r2] - ldr r1, [r3, r1] - lsl r2, r2, #0x1 - bl FUN_0202D394 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r3, #0x0 - ldr r2, [r0, #0x4] - ldr r1, _0202F7FC ; =0x00000684 - add r7, r3, #0x0 - strb r3, [r2, r1] - ldr r2, [r0, #0x4] - add r1, r1, #0x1 - strb r3, [r2, r1] - add r1, r3, #0x0 - add r2, r3, #0x0 -_0202F71A: - ldr r4, [r0, #0x4] - add r5, r4, r3 - ldr r4, _0202F800 ; =0x0000065F - strb r7, [r5, r4] - ldr r4, [r0, #0x4] - ldr r5, _0202F804 ; =0x00000667 - add r6, r4, r3 - mov r4, #0x1 - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - add r5, #0x8 - add r6, r4, r3 - mov r4, #0x1 - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - add r3, r3, #0x1 - add r5, r4, r1 - mov r4, #0x61 - lsl r4, r4, #0x4 - strh r7, [r5, r4] - ldr r4, [r0, #0x4] - ldr r5, _0202F808 ; =0x00000596 - add r6, r4, r2 - mov r4, #0xee - strb r4, [r6, r5] - ldr r4, [r0, #0x4] - ldr r5, _0202F80C ; =0x0000FFFF - add r6, r4, r2 - ldr r4, _0202F810 ; =0x00000594 - add r1, r1, #0x2 - strh r5, [r6, r4] - ldr r4, [r0, #0x4] - add r5, r4, r2 - mov r4, #0x59 - lsl r4, r4, #0x4 - str r7, [r5, r4] - ldr r4, [r0, #0x4] - add r5, r4, r2 - ldr r4, _0202F814 ; =0x0000058C - add r2, #0xc - str r7, [r5, r4] - cmp r3, #0x8 - blt _0202F71A - ldr r1, _0202F7D4 ; =UNK_021C59F4 - add r0, r4, #0x0 - ldr r3, [r1, #0x4] - add r0, #0xa4 - mov r2, #0x1 - str r2, [r3, r0] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - sub r3, #0x3a - mov r2, #0xee - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - ldr r2, _0202F80C ; =0x0000FFFF - sub r3, #0x3c - strh r2, [r4, r3] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x40 - str r7, [r3, r2] - add r2, r0, #0x0 - ldr r3, [r1, #0x4] - sub r2, #0x44 - str r7, [r3, r2] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x52 - mov r2, #0x1 - strb r2, [r4, r3] - add r3, r0, #0x0 - ldr r4, [r1, #0x4] - add r3, #0x53 - strb r2, [r4, r3] - ldr r1, [r1, #0x4] - sub r0, #0xe4 - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202F818 ; =0x0000056C - add r0, r1, r0 - bl FUN_0202D804 - ldr r0, _0202F7D4 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202F81C ; =0x00000688 - strb r2, [r1, r0] - pop {r3-r7, pc} - .balign 4 -_0202F7D4: .word UNK_021C59F4 -_0202F7D8: .word 0x0000062C -_0202F7DC: .word 0x00000658 -_0202F7E0: .word 0x00000458 -_0202F7E4: .word 0x000004E8 -_0202F7E8: .word 0x00000454 -_0202F7EC: .word 0x0000047C -_0202F7F0: .word 0x000004DC -_0202F7F4: .word 0x00000464 -_0202F7F8: .word 0x0000045C -_0202F7FC: .word 0x00000684 -_0202F800: .word 0x0000065F -_0202F804: .word 0x00000667 -_0202F808: .word 0x00000596 -_0202F80C: .word 0x0000FFFF -_0202F810: .word 0x00000594 -_0202F814: .word 0x0000058C -_0202F818: .word 0x0000056C -_0202F81C: .word 0x00000688 - thumb_func_start FUN_0202F820 -FUN_0202F820: ; 0x0202F820 - push {r4-r6, lr} - add r5, r0, #0x0 - ldr r0, _0202F8B8 ; =UNK_021C59F4 - ldr r3, _0202F8BC ; =0x0000065F - ldr r1, [r0, #0x4] - mov r2, #0x0 - add r1, r1, r5 - strb r2, [r1, r3] - ldr r4, [r0, #0x4] - mov r1, #0x1 - add r6, r4, r5 - add r4, r3, #0x0 - add r4, #0x8 - strb r1, [r6, r4] - ldr r6, [r0, #0x4] - lsl r4, r5, #0x2 - add r6, r6, r4 - add r4, r3, #0x0 - sub r4, #0x27 - str r2, [r6, r4] - ldr r2, [r0, #0x4] - add r4, r2, r5 - add r2, r3, #0x0 - add r2, #0x10 - strb r1, [r4, r2] - ldr r1, [r0, #0x4] - sub r0, r3, #0x7 - ldr r2, [r1, r0] - ldr r3, _0202F8C0 ; =0x0000047C - mov r0, #0xc - add r4, r5, #0x0 - mul r4, r0 - add r0, r1, r3 - sub r3, #0x28 - ldr r3, [r1, r3] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - ldr r0, _0202F8B8 ; =UNK_021C59F4 - ldr r3, _0202F8C4 ; =0x000004E8 - ldr r1, [r0, #0x4] - ldr r0, _0202F8C8 ; =0x00000658 - ldr r2, [r1, r0] - add r0, r1, r3 - sub r3, #0x90 - ldr r3, [r1, r3] - add r1, r5, #0x0 - mul r1, r2 - add r0, r0, r4 - add r1, r3, r1 - bl FUN_0202D394 - ldr r3, _0202F8B8 ; =UNK_021C59F4 - ldr r2, _0202F8CC ; =0x00000596 - ldr r0, [r3, #0x4] - mov r1, #0xee - add r0, r0, r4 - strb r1, [r0, r2] - ldr r0, [r3, #0x4] - ldr r5, _0202F8D0 ; =0x0000FFFF - add r1, r0, r4 - sub r0, r2, #0x2 - strh r5, [r1, r0] - ldr r1, [r3, #0x4] - mov r0, #0x0 - add r5, r1, r4 - sub r1, r2, #0x6 - str r0, [r5, r1] - ldr r1, [r3, #0x4] - sub r2, #0xa - add r1, r1, r4 - str r0, [r1, r2] - pop {r4-r6, pc} - .balign 4 -_0202F8B8: .word UNK_021C59F4 -_0202F8BC: .word 0x0000065F -_0202F8C0: .word 0x0000047C -_0202F8C4: .word 0x000004E8 -_0202F8C8: .word 0x00000658 -_0202F8CC: .word 0x00000596 -_0202F8D0: .word 0x0000FFFF - thumb_func_start FUN_0202F8D4 -FUN_0202F8D4: ; 0x0202F8D4 - push {r4-r6, lr} - ldr r4, _0202F908 ; =UNK_021C59F4 - ldr r6, _0202F90C ; =0x00000667 - mov r5, #0x1 -_0202F8DC: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202F900 - ldr r0, [r4, #0x4] - add r0, r0, r5 - ldrb r0, [r0, r6] - cmp r0, #0x0 - bne _0202F900 - bl FUN_02031280 - cmp r0, #0x0 - bne _0202F900 - add r0, r5, #0x0 - bl FUN_0202F820 -_0202F900: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _0202F8DC - pop {r4-r6, pc} - .balign 4 -_0202F908: .word UNK_021C59F4 -_0202F90C: .word 0x00000667 - thumb_func_start FUN_0202F910 -FUN_0202F910: ; 0x0202F910 - ldr r3, _0202F914 ; =FUN_0202F820 - bx r3 - .balign 4 -_0202F914: .word FUN_0202F820 - thumb_func_start FUN_0202F918 -FUN_0202F918: ; 0x0202F918 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x0] - mov r4, #0x1 - bl FUN_02033534 - cmp r0, #0x13 - bge _0202F93E - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_0202E5F8 - add r4, r0, #0x0 - ldr r0, _0202F94C ; =FUN_0202F910 - bl FUN_0202D330 -_0202F93E: - add r0, r5, #0x0 - add r1, r7, #0x0 - bl FUN_0202F150 - add r0, r4, #0x0 - pop {r3-r7, pc} - nop -_0202F94C: .word FUN_0202F910 + + + + + thumb_func_start FUN_0202F950 FUN_0202F950: ; 0x0202F950 diff --git a/arm9/global.inc b/arm9/global.inc index a00970de..2e1926cd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8517,3 +8517,12 @@ .extern FUN_02025490 .extern FUN_020254A0 .extern FUN_020254B4 +.extern UNK_021C59F4 +.extern UNK_02105D58 +.extern FUN_0202F150 +.extern FUN_0202F2F0 +.extern FUN_0202F5A4 +.extern FUN_0202F820 +.extern FUN_0202F8D4 +.extern FUN_0202F910 +.extern FUN_0202F918 diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c new file mode 100644 index 00000000..e618469a --- /dev/null +++ b/arm9/src/unk_0202F150_c.c @@ -0,0 +1,417 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + +// struct UnkStruct2 { +// u8 unk00; +// u8 unk01; +// }; + +u8 UNK_02105D58 = 4; +u8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[38]; + u8 unk026[38]; + u8 unk04c[264]; + u8 unk154[192]; + u8 unk214[192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + u32 unk5F8; + u8 unk5FC[0x14]; + u16 unk610[8]; + u8 unk620[0xc]; + u8 unk62C; + u8 unk62D; + u8 unk62E[0x2]; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B[0x2]; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689[0x3]; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0] = 0xff; + UNK_021C59F4.unk04->unk026[0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0] = 0xff; + UNK_021C59F4.unk04->unk026[0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u32 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} \ No newline at end of file -- cgit v1.2.3 From c0dc03771119177fed8cf15d12bebcc1b3aa9206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 8 Apr 2021 22:26:10 +0200 Subject: first nonmatching --- arm9/asm/unk_0202F150.s | 723 ---------------------------------------------- arm9/global.inc | 6 + arm9/src/unk_0202F150_c.c | 549 +++++++++++++++++++++++++++++++++-- 3 files changed, 535 insertions(+), 743 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s index 873f7d0b..395ebd44 100644 --- a/arm9/asm/unk_0202F150.s +++ b/arm9/asm/unk_0202F150.s @@ -12,729 +12,6 @@ .text - - - - - - - - - - - - - thumb_func_start FUN_0202F950 -FUN_0202F950: ; 0x0202F950 - push {r3-r7, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r7, r2, #0x0 - mov r4, #0x1 - bl FUN_02033534 - cmp r0, #0x13 - bge _0202F96C - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_0202E66C - add r4, r0, #0x0 -_0202F96C: - add r0, r5, #0x0 - add r1, r7, #0x0 - bl FUN_0202F150 - ldr r0, _0202F980 ; =UNK_02105D58 - mov r1, #0x4 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - pop {r3-r7, pc} - nop -_0202F980: .word UNK_02105D58 - - thumb_func_start FUN_0202F984 -FUN_0202F984: ; 0x0202F984 - push {r4, lr} - mov r4, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _0202F99A - ldr r0, _0202F9D4 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - beq _0202F9A2 - pop {r4, pc} -_0202F99A: - ldr r0, _0202F9D4 ; =UNK_02105D58 - ldrb r0, [r0, #0x0] - cmp r0, #0x4 - bne _0202F9D0 -_0202F9A2: - ldr r0, _0202F9D8 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _0202F9DC ; =0x0000067D - ldrb r1, [r2, r0] - cmp r1, #0x2 - bne _0202F9B4 - mov r1, #0x0 - strb r1, [r2, r0] - mov r4, #0x1 -_0202F9B4: - ldr r0, _0202F9D8 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _0202F9DC ; =0x0000067D - ldrb r1, [r2, r0] - cmp r1, #0x3 - bne _0202F9C4 - mov r4, #0x1 - strb r4, [r2, r0] -_0202F9C4: - cmp r4, #0x0 - beq _0202F9CC - bl FUN_0202F5A4 -_0202F9CC: - bl FUN_02031088 -_0202F9D0: - pop {r4, pc} - nop -_0202F9D4: .word UNK_02105D58 -_0202F9D8: .word UNK_021C59F4 -_0202F9DC: .word 0x0000067D - - thumb_func_start FUN_0202F9E0 -FUN_0202F9E0: ; 0x0202F9E0 - ldr r1, _0202FA08 ; =UNK_021C59F4 - ldr r3, [r1, #0x4] - ldr r1, _0202FA0C ; =0x0000067D - ldrb r2, [r3, r1] - cmp r2, #0x0 - bne _0202F9F6 - cmp r0, #0x1 - bne _0202F9F6 - mov r0, #0x3 - strb r0, [r3, r1] - bx lr -_0202F9F6: - cmp r2, #0x1 - bne _0202FA04 - cmp r0, #0x0 - bne _0202FA04 - ldr r0, _0202FA0C ; =0x0000067D - mov r1, #0x2 - strb r1, [r3, r0] -_0202FA04: - bx lr - nop -_0202FA08: .word UNK_021C59F4 -_0202FA0C: .word 0x0000067D - - thumb_func_start FUN_0202FA10 -FUN_0202FA10: ; 0x0202FA10 - ldr r3, _0202FA18 ; =FUN_0202F9E0 - mov r0, #0x1 - bx r3 - nop -_0202FA18: .word FUN_0202F9E0 - - thumb_func_start FUN_0202FA1C -FUN_0202FA1C: ; 0x0202FA1C - ldr r3, _0202FA24 ; =FUN_0202F9E0 - mov r0, #0x0 - bx r3 - nop -_0202FA24: .word FUN_0202F9E0 - - thumb_func_start FUN_0202FA28 -FUN_0202FA28: ; 0x0202FA28 - ldr r0, _0202FA40 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FA44 ; =0x0000067D - ldrb r0, [r1, r0] - cmp r0, #0x2 - bne _0202FA38 - mov r0, #0x1 - bx lr -_0202FA38: - cmp r0, #0x3 - bne _0202FA3E - mov r0, #0x0 -_0202FA3E: - bx lr - .balign 4 -_0202FA40: .word UNK_021C59F4 -_0202FA44: .word 0x0000067D - - thumb_func_start FUN_0202FA48 -FUN_0202FA48: ; 0x0202FA48 - push {r3, lr} - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0202FA56 - mov r0, #0x1 - pop {r3, pc} -_0202FA56: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202FA5C -FUN_0202FA5C: ; 0x0202FA5C - push {r4, lr} - ldr r0, _0202FB00 ; =UNK_021C59F4 - mov r4, #0x0 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202FA82 - bl FUN_02033534 - cmp r0, #0x13 - blt _0202FA78 - bl MOD04_021D83C0 - mov r4, #0x1 - b _0202FA82 -_0202FA78: - bl FUN_0202E784 - cmp r0, #0x0 - beq _0202FA82 - mov r4, #0x1 -_0202FA82: - cmp r4, #0x0 - beq _0202FAFE - bl FUN_020314D0 - bl FUN_0202DBA4 - ldr r0, _0202FB00 ; =UNK_021C59F4 - mov r1, #0x0 - strb r1, [r0, #0x0] - ldr r1, [r0, #0x4] - ldr r0, _0202FB04 ; =0x00000548 - ldr r0, [r1, r0] - bl FUN_0200CAB4 - ldr r1, _0202FB00 ; =UNK_021C59F4 - ldr r0, _0202FB04 ; =0x00000548 - ldr r2, [r1, #0x4] - mov r3, #0x0 - str r3, [r2, r0] - ldr r1, [r1, #0x4] - sub r0, #0xec - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x46 - lsl r0, r0, #0x4 - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FB08 ; =0x00000458 - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FB0C ; =0x00000454 - ldr r0, [r1, r0] - bl FreeToHeap - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FB10 ; =0x0000056C - add r0, r1, r0 - bl FUN_0202D824 - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FB14 ; =0x0000054C - add r0, r1, r0 - bl FUN_0202D824 - ldr r0, _0202FB00 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - bl FreeToHeap - ldr r0, _0202FB00 ; =UNK_021C59F4 - mov r1, #0x0 - str r1, [r0, #0x4] -_0202FAFE: - pop {r4, pc} - .balign 4 -_0202FB00: .word UNK_021C59F4 -_0202FB04: .word 0x00000548 -_0202FB08: .word 0x00000458 -_0202FB0C: .word 0x00000454 -_0202FB10: .word 0x0000056C -_0202FB14: .word 0x0000054C - - thumb_func_start FUN_0202FB18 -FUN_0202FB18: ; 0x0202FB18 - ldr r3, _0202FB1C ; =FUN_0202E9E8 - bx r3 - .balign 4 -_0202FB1C: .word FUN_0202E9E8 - - thumb_func_start FUN_0202FB20 -FUN_0202FB20: ; 0x0202FB20 - push {r3, lr} - ldr r0, _0202FB54 ; =UNK_021C59F4 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0202FB52 - bl FUN_0203050C - bl FUN_02031190 - cmp r0, #0x0 - bne _0202FB40 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202FB48 -_0202FB40: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FB4C -_0202FB48: - bl FUN_0202FEEC -_0202FB4C: - ldr r0, _0202FB54 ; =UNK_021C59F4 - mov r1, #0x0 - strb r1, [r0, #0x0] -_0202FB52: - pop {r3, pc} - .balign 4 -_0202FB54: .word UNK_021C59F4 - - thumb_func_start FUN_0202FB58 -FUN_0202FB58: ; 0x0202FB58 - push {r3, lr} - bl FUN_0202F03C - cmp r0, #0x0 - beq _0202FB7C - bl FUN_02031190 - cmp r0, #0x0 - bne _0202FB78 - bl FUN_0202EE24 - cmp r0, #0x0 - bne _0202FB7C - bl FUN_0202FA5C - pop {r3, pc} -_0202FB78: - bl FUN_0202FA5C -_0202FB7C: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0202FB80 -FUN_0202FB80: ; 0x0202FB80 - push {r4, lr} - bl FUN_02031CDC - ldr r1, _0202FC48 ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - cmp r2, #0x0 - beq _0202FC34 - ldr r0, _0202FC4C ; =0x0000068A - ldrb r0, [r2, r0] - cmp r0, #0x0 - bne _0202FC16 - mov r0, #0x0 - strb r0, [r1, #0x0] - bl FUN_0202F984 - ldr r0, _0202FC48 ; =UNK_021C59F4 - ldr r1, _0202FC50 ; =gMain - ldr r0, [r0, #0x4] - ldr r2, _0202FC54 ; =0x00000628 - ldr r3, [r1, #0x44] - ldr r1, _0202FC58 ; =0x00007FFF - ldrh r4, [r0, r2] - and r1, r3 - orr r1, r4 - strh r1, [r0, r2] - bl FUN_02030674 - bl FUN_0202FCCC - ldr r0, _0202FC48 ; =UNK_021C59F4 - ldr r1, _0202FC54 ; =0x00000628 - ldr r3, [r0, #0x4] - mov r0, #0x2 - ldrh r2, [r3, r1] - lsl r0, r0, #0xe - and r0, r2 - strh r0, [r3, r1] - bl FUN_0202FA28 - cmp r0, #0x0 - bne _0202FBD6 - bl FUN_02030DA4 -_0202FBD6: - bl FUN_02031190 - cmp r0, #0x0 - bne _0202FBE8 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202FBF0 -_0202FBE8: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FBF4 -_0202FBF0: - bl FUN_02030074 -_0202FBF4: - bl FUN_02031190 - cmp r0, #0x0 - beq _0202FC0C - bl FUN_0202FA28 - cmp r0, #0x1 - beq _0202FC0C - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FC10 -_0202FC0C: - bl FUN_02030DFC -_0202FC10: - ldr r0, _0202FC48 ; =UNK_021C59F4 - mov r1, #0x1 - strb r1, [r0, #0x0] -_0202FC16: - ldr r0, _0202FC48 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FC5C ; =0x0000065C - ldrh r0, [r1, r0] - bl FUN_0202ED70 - bl FUN_02031190 - cmp r0, #0x0 - bne _0202FC2E - bl FUN_0202F8D4 -_0202FC2E: - bl FUN_0202FB58 - b _0202FC3A -_0202FC34: - mov r0, #0x0 - bl FUN_0202ED70 -_0202FC3A: - mov r0, #0x0 - bl FUN_020335F4 - bl FUN_020315A4 - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0202FC48: .word UNK_021C59F4 -_0202FC4C: .word 0x0000068A -_0202FC50: .word gMain -_0202FC54: .word 0x00000628 -_0202FC58: .word 0x00007FFF -_0202FC5C: .word 0x0000065C - - thumb_func_start FUN_0202FC60 -FUN_0202FC60: ; 0x0202FC60 - push {r4, lr} - ldr r0, _0202FC7C ; =UNK_021C59F4 - mov r1, #0x0 - ldrb r4, [r0, #0x0] - strb r1, [r0, #0x0] - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202FC74 - bl FUN_0202F2F0 -_0202FC74: - ldr r0, _0202FC7C ; =UNK_021C59F4 - strb r4, [r0, #0x0] - pop {r4, pc} - nop -_0202FC7C: .word UNK_021C59F4 - - thumb_func_start FUN_0202FC80 -FUN_0202FC80: ; 0x0202FC80 - push {r4, lr} - ldr r0, _0202FCA0 ; =UNK_021C59F4 - mov r1, #0x0 - ldrb r4, [r0, #0x0] - strb r1, [r0, #0x0] - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _0202FC9A - ldr r0, _0202FCA4 ; =0x0000067D - mov r1, #0x1 - strb r1, [r2, r0] - bl FUN_0202F2F0 -_0202FC9A: - ldr r0, _0202FCA0 ; =UNK_021C59F4 - strb r4, [r0, #0x0] - pop {r4, pc} - .balign 4 -_0202FCA0: .word UNK_021C59F4 -_0202FCA4: .word 0x0000067D - - thumb_func_start FUN_0202FCA8 -FUN_0202FCA8: ; 0x0202FCA8 - push {r4, lr} - ldr r0, _0202FCC8 ; =UNK_021C59F4 - mov r1, #0x0 - ldrb r4, [r0, #0x0] - strb r1, [r0, #0x0] - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202FCC0 - bl FUN_0202F2F0 - bl FUN_0202E538 -_0202FCC0: - ldr r0, _0202FCC8 ; =UNK_021C59F4 - strb r4, [r0, #0x0] - pop {r4, pc} - nop -_0202FCC8: .word UNK_021C59F4 - - thumb_func_start FUN_0202FCCC -FUN_0202FCCC: ; 0x0202FCCC - push {r3, lr} - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FE18 ; =0x00000683 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0202FD40 - bl FUN_02033534 - cmp r0, #0x13 - blt _0202FD06 - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r1, _0202FE1C ; =0x00000687 - ldr r0, [r0, #0x4] - ldrb r1, [r0, r1] - cmp r1, #0x0 - beq _0202FCF8 - mov r1, #0x26 - bl MOD04_021D78FC - cmp r0, #0x0 - bne _0202FCFA -_0202FCF8: - b _0202FE10 -_0202FCFA: - ldr r0, _0202FE14 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202FE18 ; =0x00000683 - strb r2, [r1, r0] - pop {r3, pc} -_0202FD06: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0202FD1A - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202FD22 -_0202FD1A: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FE10 -_0202FD22: - ldr r0, _0202FE20 ; =UNK_02105D58 - mov r1, #0x0 - strb r1, [r0, #0x0] - bl FUN_0203050C - ldr r0, _0202FE20 ; =UNK_02105D58 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0202FE10 - ldr r0, _0202FE14 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0202FE18 ; =0x00000683 - strb r2, [r1, r0] - pop {r3, pc} -_0202FD40: - bl FUN_02033534 - cmp r0, #0x13 - blt _0202FDB2 - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r2, _0202FE1C ; =0x00000687 - ldr r0, [r0, #0x4] - ldrb r1, [r0, r2] - cmp r1, #0x0 - beq _0202FE10 - add r1, r2, #0x0 - sub r1, #0x57 - ldr r1, [r0, r1] - cmp r1, #0x0 - beq _0202FD7A - sub r2, #0x53 - ldr r1, [r0, r2] - cmp r1, #0x3 - bgt _0202FE10 - ldr r1, _0202FE20 ; =UNK_02105D58 - ldrb r1, [r1, #0x0] - cmp r1, #0x4 - bne _0202FD90 - bl FUN_02030930 - ldr r0, _0202FE20 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x0] - b _0202FD90 -_0202FD7A: - ldr r1, _0202FE20 ; =UNK_02105D58 - ldrb r1, [r1, #0x0] - cmp r1, #0x4 - bne _0202FD90 - bl FUN_02030930 - cmp r0, #0x0 - beq _0202FE10 - ldr r0, _0202FE20 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x0] -_0202FD90: - ldr r0, _0202FE14 ; =UNK_021C59F4 - mov r1, #0x26 - ldr r0, [r0, #0x4] - bl MOD04_021D78FC - cmp r0, #0x0 - beq _0202FE10 - ldr r0, _0202FE20 ; =UNK_02105D58 - mov r1, #0x4 - strb r1, [r0, #0x0] - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _0202FE24 ; =0x00000634 - ldr r1, [r2, r0] - add r1, r1, #0x1 - str r1, [r2, r0] - pop {r3, pc} -_0202FDB2: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0202FDC6 - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _0202FDCE -_0202FDC6: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FE10 -_0202FDCE: - ldr r0, _0202FE20 ; =UNK_02105D58 - ldrb r0, [r0, #0x0] - cmp r0, #0x4 - bne _0202FE10 - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _0202FE24 ; =0x00000634 - ldr r1, [r2, r0] - cmp r1, #0x3 - bgt _0202FE10 - add r0, #0x4b - ldrb r1, [r2, r0] - mov r0, #0x26 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030930 - ldr r0, _0202FE14 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _0202FE28 ; =0x0000067F - ldrb r1, [r2, r0] - mov r0, #0x1 - sub r1, r0, r1 - mov r0, #0x26 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030930 - ldr r0, _0202FE20 ; =UNK_02105D58 - mov r1, #0x0 - strb r1, [r0, #0x0] - bl FUN_0203050C -_0202FE10: - pop {r3, pc} - nop -_0202FE14: .word UNK_021C59F4 -_0202FE18: .word 0x00000683 -_0202FE1C: .word 0x00000687 -_0202FE20: .word UNK_02105D58 -_0202FE24: .word 0x00000634 -_0202FE28: .word 0x0000067F - - thumb_func_start FUN_0202FE2C -FUN_0202FE2C: ; 0x0202FE2C - push {r3-r7, lr} - sub sp, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0xc] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0202FED0 - ldr r0, [sp, #0x0] - mov r1, #0xc0 - add r6, r0, #0x0 - add r4, r7, #0x0 - add r5, r7, #0x0 - mul r6, r1 -_0202FE66: - ldr r0, _0202FEE4 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0202FEE8 ; =0x0000047C - add r0, r1, r0 - add r0, r0, r4 - bl FUN_0202D4BC - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FE90 - ldr r0, _0202FEE4 ; =UNK_021C59F4 - mov r1, #0xe - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r2, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r1, [r2, r0] -_0202FE90: - ldr r0, _0202FEE4 ; =UNK_021C59F4 - mov r2, #0x55 - ldr r1, [r0, #0x4] - ldr r0, _0202FEE8 ; =0x0000047C - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, r1, r2 - add r1, r1, r6 - ldr r2, [sp, #0xc] - add r0, r0, r4 - add r1, r1, r5 - bl FUN_0202D400 - ldr r0, _0202FEE4 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r1, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - cmp r0, #0xe - bne _0202FEC2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0202FEC2: - ldr r0, [sp, #0xc] - add r7, r7, #0x1 - add r5, r5, r0 - ldr r0, [sp, #0x8] - add r4, #0xc - cmp r7, r0 - blt _0202FE66 -_0202FED0: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - cmp r1, r0 - bne _0202FEDE - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202FEDE: - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_0202FEE4: .word UNK_021C59F4 -_0202FEE8: .word 0x0000047C - thumb_func_start FUN_0202FEEC FUN_0202FEEC: ; 0x0202FEEC push {r3-r7, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 2e1926cd..1fc85f18 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8526,3 +8526,9 @@ .extern FUN_0202F8D4 .extern FUN_0202F910 .extern FUN_0202F918 +.extern FUN_0202F984 +.extern FUN_0202F9E0 +.extern FUN_0202FA28 +.extern FUN_0202FB58 +.extern FUN_0202FB80 +.extern FUN_0202FE2C diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c index e618469a..b0a249cf 100644 --- a/arm9/src/unk_0202F150_c.c +++ b/arm9/src/unk_0202F150_c.c @@ -1,6 +1,7 @@ #include "global.h" #include "MI_memory.h" #include "heap.h" +#include "main.h" struct { @@ -17,7 +18,7 @@ u8 UNK_02105D58 = 4; u8 UNK_02105D59 = 4; extern int FUN_02033534(); -extern u32 FUN_0202D858(u16 param0); +extern int FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); extern void FUN_0202F2F0(); @@ -32,11 +33,11 @@ extern u32 FUN_02030E7C(u16 param0); struct UnkStruct1 { - u8 unk000[38]; - u8 unk026[38]; + u8 unk000[2][38]; + // u8 unk026[38]; u8 unk04c[264]; - u8 unk154[192]; - u8 unk214[192]; + u8 unk154[2][192]; + // u8 unk214[192]; u8 unk2D4[384]; u32 unk454; u32 unk458; @@ -79,7 +80,9 @@ struct UnkStruct1 u32 unk5F8; u8 unk5FC[0x14]; u16 unk610[8]; - u8 unk620[0xc]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A[0x2]; u8 unk62C; u8 unk62D; u8 unk62E[0x2]; @@ -106,7 +109,9 @@ struct UnkStruct1 u8 unk686; u8 unk687; u8 unk688; - u8 unk689[0x3]; + u8 unk689; + u8 unk68A; + u8 unk68B; }; THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) @@ -219,20 +224,20 @@ THUMB_FUNC void FUN_0202F2F0() for (i = 0; i < 0xc0; i++) { - UNK_021C59F4.unk04->unk154[i] = 0xee; - UNK_021C59F4.unk04->unk214[i] = 0xee; + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - UNK_021C59F4.unk04->unk000[0] = 0xff; - UNK_021C59F4.unk04->unk026[0] = 0xff; + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; for (i = 1; i < 0x26; i++) { - UNK_021C59F4.unk04->unk000[i] = 0xee; - UNK_021C59F4.unk04->unk026[i] = 0xee; + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; } MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); @@ -307,20 +312,20 @@ THUMB_FUNC void FUN_0202F5A4() for (i = 0; i < 0xc0; i++) { - UNK_021C59F4.unk04->unk154[i] = 0xee; - UNK_021C59F4.unk04->unk214[i] = 0xee; + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - UNK_021C59F4.unk04->unk000[0] = 0xff; - UNK_021C59F4.unk04->unk026[0] = 0xff; + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; for (i = 1; i < 0x26; i++) { - UNK_021C59F4.unk04->unk000[i] = 0xee; - UNK_021C59F4.unk04->unk026[i] = 0xee; + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; } MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); @@ -414,4 +419,508 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) FUN_0202F150(param0, param2); return ret; -} \ No newline at end of file +} + +extern u32 FUN_0202E66C(u32 param0, u32 param1); + +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E66C(param0, param1); + } + + FUN_0202F150(param0, param2); + + UNK_02105D58 = 4; + + return ret; +} + +extern u16 FUN_02031190(); +extern void FUN_02031088(); + + + + + +THUMB_FUNC void FUN_0202F984() { + u32 r4 = 0; + if (FUN_02031190() == 0 ) { + if (UNK_02105D59 != 4) { + return; + } + } else { + if (UNK_02105D58 != 4) { + return; + } + } + + if (UNK_021C59F4.unk04->unk67D == 2) { + UNK_021C59F4.unk04->unk67D = 0; + r4 = 1; + } + + if (UNK_021C59F4.unk04->unk67D == 3) { + UNK_021C59F4.unk04->unk67D = 1; + r4 = 1; + } + + if (r4 != 0) { + FUN_0202F5A4(); + } + FUN_02031088(); +} + + + + +THUMB_FUNC void FUN_0202F9E0(u32 param0) { + u8 r2 = UNK_021C59F4.unk04->unk67D; + if (r2 == 0 && param0 == 1) { + UNK_021C59F4.unk04->unk67D = 3; + } else if (r2 == 1 && param0 == 0) { + UNK_021C59F4.unk04->unk67D = 2; + } +} + + +THUMB_FUNC void FUN_0202FA10() { + FUN_0202F9E0(1); +} + + +THUMB_FUNC void FUN_0202FA1C() { + FUN_0202F9E0(0); +} + + + +THUMB_FUNC u8 FUN_0202FA28() { + u8 ret = UNK_021C59F4.unk04->unk67D; + if (ret == 2){ + return 1; + } else if (ret == 3) { + return 0; + } + + return ret; +} + +THUMB_FUNC u32 FUN_0202FA48() { + if (FUN_0202FA28() == 1) { + return 1; + } + + return 0; +} + +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u32 *param0); + +THUMB_FUNC void FUN_0202FA5C() { + u32 r4 = 0; + if (UNK_021C59F4.unk04 != 0) { + if (FUN_02033534() >= 0x13) { + MOD04_021D83C0(); + r4 = 1; + } else { + if (FUN_0202E784() != 0) { + r4 = 1; + } + } + } + + if (r4 != 0) { + FUN_020314D0(); + FUN_0202DBA4(); + UNK_021C59F4.unk00 = 0; + + FUN_0200CAB4(UNK_021C59F4.unk04->unk548); + UNK_021C59F4.unk04->unk548 = 0; + FreeToHeap(UNK_021C59F4.unk04->unk45C); + FreeToHeap(UNK_021C59F4.unk04->unk460); + FreeToHeap(UNK_021C59F4.unk04->unk458); + FreeToHeap(UNK_021C59F4.unk04->unk454); + FUN_0202D824(UNK_021C59F4.unk04->unk56C); + FUN_0202D824(UNK_021C59F4.unk04->unk54C); + FreeToHeap(UNK_021C59F4.unk04); + UNK_021C59F4.unk04 = NULL; + } +} + +extern u32 FUN_0202E9E8(u32 param0); + +THUMB_FUNC u32 FUN_0202FB18(u32 param0) { + return FUN_0202E9E8(param0); +} + + +extern void FUN_0203050C(); +extern void FUN_0202FEEC(); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); + + + +THUMB_FUNC void FUN_0202FB20() { + if (UNK_021C59F4.unk00 != 0) { + FUN_0203050C(); + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_0202FEEC(); + } + + UNK_021C59F4.unk00 = 0; + } +} + +THUMB_FUNC void FUN_0202FB58() { + if (FUN_0202F03C() != 0) { + if (FUN_02031190() == 0 ) { + if (FUN_0202EE24() == 0) { + FUN_0202FA5C(); + } + } else { + FUN_0202FA5C(); + } + } +} + +extern void FUN_02031CDC(); +extern void FUN_02030674(); +extern void FUN_0202FCCC(); +extern void FUN_02030DA4(); +extern void FUN_02030074(); +extern void FUN_02030DFC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); + + + +THUMB_FUNC u32 FUN_0202FB80() { + FUN_02031CDC(); + + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68A == 0) { + UNK_021C59F4.unk00 = 0; + FUN_0202F984(); + UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; + FUN_02030674(); + FUN_0202FCCC(); + + UNK_021C59F4.unk04->unk628 &= 2<<0xe; + if (FUN_0202FA28() == 0) { + FUN_02030DA4(); + } + + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_02030074(); + } + + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + FUN_02030DFC(); + } + + UNK_021C59F4.unk00 = 1; + } + + + FUN_0202ED70(UNK_021C59F4.unk04->unk65C); + + if (FUN_02031190() == 0) { + FUN_0202F8D4(); + } + + FUN_0202FB58(); + } else { + FUN_0202ED70(0); + } + + + FUN_020335F4(0); + FUN_020315A4(); + + return 1; +} + + +THUMB_FUNC void FUN_0202FC60() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +THUMB_FUNC void FUN_0202FC80() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk67D = 1; + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern void FUN_0202E538(); + + +THUMB_FUNC void FUN_0202FCA8() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + FUN_0202E538(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_02030930(void *param0); + + + +THUMB_FUNC void FUN_0202FCCC() { + if (UNK_021C59F4.unk04->unk683 != 0 ) { + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + UNK_02105D58 = 0; + FUN_0203050C(); + if (UNK_02105D58 == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk630 != 0){ + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + if (UNK_02105D58 == 4) { + FUN_02030930(UNK_021C59F4.unk04); + UNK_02105D58 = 2; + } + } else { + if (UNK_02105D58 == 4) { + if (FUN_02030930(UNK_021C59F4.unk04) == 0) { + return; + } + + UNK_02105D58 = 2; + } + } + + + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_02105D58 = 4; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + if (UNK_02105D58 != 4) { + return; + } + + + + //nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + FUN_02030930(&UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); + + FUN_02030930(&UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + + UNK_02105D58 = 0; + FUN_0203050C(); +} + +extern int FUN_02031228(u16 param0); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); + + + + + + +#ifdef NONMATCHING +THUMB_FUNC u32 FUN_0202FE2C(int param0) { + + // these 3 variables are shuffled on the stack, everything else matches + int st4 = 0; + int stc = FUN_02031228(FUN_02033534()); + int st8 = FUN_0202D858(FUN_02033534()) + 1; + + + for (int r7 = 0; r7 < st8 ; r7++) { + + FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); + + if (FUN_02030E7C(r7) != 0) { + UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + } + + FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + + if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + st4++; + } + } + + if (st4 == st8) { + return 0; + } + + return 1; +} +#else +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} +} +#endif + + + -- cgit v1.2.3 From cbe18ecb3e513a30da11aaef1ef22cd855c60d7a Mon Sep 17 00:00:00 2001 From: tgsm Date: Thu, 8 Apr 2021 21:31:13 -0400 Subject: Decompile scrcmd_4 -> scrcmd_names --- arm9/arm9.lsf | 2 +- arm9/asm/scrcmd_4.s | 1313 ----------------------------------------------- arm9/asm/unk_02038C78.s | 82 +-- arm9/global.inc | 82 +-- arm9/src/scrcmd_names.c | 540 +++++++++++++++++++ 5 files changed, 623 insertions(+), 1396 deletions(-) delete mode 100644 arm9/asm/scrcmd_4.s create mode 100644 arm9/src/scrcmd_names.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b0bb0a55..dee43fd0 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -155,7 +155,7 @@ Static arm9 Object scrcmd_asm.o Object scrcmd_2.o Object scrcmd_3.o - Object scrcmd_4.o + Object scrcmd_names.o Object scrcmd_5.o Object scrcmd_6.o Object scrcmd_7.o diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s deleted file mode 100644 index 3bad9d50..00000000 --- a/arm9/asm/scrcmd_4.s +++ /dev/null @@ -1,1313 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gGameLanguage - - .text - - thumb_func_start FUN_020406CC -FUN_020406CC: ; 0x020406CC - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0xf - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r4, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r5, [r1, #0x0] - add r0, r6, #0x0 - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r2, r0, #0x0 - ldr r0, [r4, #0x0] - add r1, r5, #0x0 - bl BufferPlayersName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040700 -FUN_02040700: ; 0x02040700 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0xf - add r0, r4, #0x0 - bl FUN_02039438 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r2, [r4, #0xc] - bl BufferRivalsName - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02040724 -FUN_02040724: ; 0x02040724 - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - mov r1, #0xf - add r0, r4, #0x0 - bl FUN_02039438 - ldr r2, [r5, #0x8] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - ldr r2, [r4, #0xc] - bl BufferFriendsName - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02040748 -FUN_02040748: ; 0x02040748 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0xf - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - ldr r0, [r6, #0xc] - bl SavArray_PlayerParty_get - add r1, r5, #0x0 - bl GetPartyMonByIndex - add r2, r0, #0x0 - ldr r0, [r7, #0x0] - add r1, r4, #0x0 - bl BufferBoxMonSpeciesName - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02040790 -FUN_02040790: ; 0x02040790 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferItemName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020407C8 -FUN_020407C8: ; 0x020407C8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferPocketName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040800 -FUN_02040800: ; 0x02040800 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - bl TMHMGetMove - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferMoveName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0204083C -FUN_0204083C: ; 0x0204083C - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferMoveName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040874 -FUN_02040874: ; 0x02040874 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - bl FUN_02054C14 - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - add r2, r5, #0x0 - bl BufferIntegerAsString - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - - thumb_func_start FUN_020408BC -FUN_020408BC: ; 0x020408BC - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r6, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x8] - ldr r1, [r5, #0x8] - add r2, r1, #0x1 - str r2, [r5, #0x8] - ldrb r4, [r1, #0x0] - add r1, r2, #0x1 - str r1, [r5, #0x8] - ldrb r3, [r2, #0x0] - cmp r4, #0x0 - bne _02040904 - bl FUN_02054C14 - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 -_02040904: - str r4, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - ldr r2, [sp, #0x8] - add r1, r6, #0x0 - bl BufferIntegerAsString - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0204091C -FUN_0204091C: ; 0x0204091C - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0xf - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - ldr r0, [r6, #0xc] - bl SavArray_PlayerParty_get - add r1, r5, #0x0 - bl GetPartyMonByIndex - add r2, r0, #0x0 - ldr r0, [r7, #0x0] - add r1, r4, #0x0 - bl BufferBoxMonNickname - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02040964 -FUN_02040964: ; 0x02040964 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r4, [r0, #0x0] - ldr r0, [r4, #0xc] - bl GetStoragePCPointer - str r0, [sp, #0x0] - add r0, r4, #0x0 - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - mov r1, #0x1e - bl _s32_div_f - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x1e - bl _s32_div_f - add r2, r1, #0x0 - ldr r0, [sp, #0x0] - add r1, r7, #0x0 - bl PCStorage_GetMonByIndexPair - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferBoxMonNickname - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020409C0 -FUN_020409C0: ; 0x020409C0 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferPoketchAppName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020409F8 -FUN_020409F8: ; 0x020409F8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferTrainerClassName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040A30 -FUN_02040A30: ; 0x02040A30 - push {r3-r7, lr} - add r7, r0, #0x0 - add r0, #0x80 - ldr r5, [r0, #0x0] - add r0, r5, #0x0 - bl ScriptEnvironment_GetSav2Ptr - bl Sav2_PlayerData_GetProfileAddr - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r7, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r7, #0x8] - add r0, r4, #0x0 - ldrb r5, [r1, #0x0] - bl PlayerProfile_GetTrainerGender - add r7, r0, #0x0 - add r0, r4, #0x0 - bl PlayerProfile_GetAvatar - add r1, r0, #0x0 - add r0, r7, #0x0 - mov r2, #0x2 - bl FUN_020536D0 - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r5, #0x0 - bl BufferTrainerClassNameWithArticle - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02040A7C -FUN_02040A7C: ; 0x02040A7C - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - ldr r1, [r5, #0x8] - str r0, [sp, #0x8] - add r0, r1, #0x1 - str r0, [r5, #0x8] - ldrb r5, [r1, #0x0] - add r0, r6, #0x0 - mov r1, #0x4 - bl FUN_02040AE4 - add r6, r0, #0x0 - str r5, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - ldr r3, [sp, #0x8] - add r1, r4, #0x0 - add r2, r6, #0x0 - bl BufferString - add r0, r6, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02040AE4 -FUN_02040AE4: ; 0x02040AE4 - push {r3-r5, lr} - ldr r2, _02040B08 ; =0x0000016A - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r0, #0x1 - mov r1, #0x1a - bl NewMsgDataFromNarc - add r5, r0, #0x0 - add r1, r4, #0x0 - bl NewString_ReadMsgData - add r4, r0, #0x0 - add r0, r5, #0x0 - bl DestroyMsgData - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 -_02040B08: .word 0x0000016A - - thumb_func_start FUN_02040B0C -FUN_02040B0C: ; 0x02040B0C - push {r4-r6, lr} - sub sp, #0x8 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r4, #0x8] - add r4, #0x80 - ldr r0, [r4, #0x0] - ldrb r5, [r1, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F388 - mov r1, #0x4 - bl FUN_02040AE4 - add r4, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r6, #0x0] - add r1, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl BufferString - add r0, r4, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - - thumb_func_start FUN_02040B5C -FUN_02040B5C: ; 0x02040B5C - push {r4-r6, lr} - sub sp, #0x8 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r4, #0x8] - add r4, #0x80 - ldr r0, [r4, #0x0] - ldrb r5, [r1, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F398 - mov r1, #0x4 - bl FUN_02040AE4 - add r4, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r6, #0x0] - add r1, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl BufferString - add r0, r4, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - - thumb_func_start FUN_02040BAC -FUN_02040BAC: ; 0x02040BAC - push {r4-r6, lr} - sub sp, #0x8 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r4, #0x8] - add r4, #0x80 - ldr r0, [r4, #0x0] - ldrb r5, [r1, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F3C0 - mov r1, #0x4 - bl FUN_02040AE4 - add r4, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r6, #0x0] - add r1, r5, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl BufferString - add r0, r4, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - - thumb_func_start FUN_02040BFC -FUN_02040BFC: ; 0x02040BFC - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferDecorationName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040C34 -FUN_02040C34: ; 0x02040C34 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferUndergroundTrapName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040C6C -FUN_02040C6C: ; 0x02040C6C - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferUndergroundItemName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040CA4 -FUN_02040CA4: ; 0x02040CA4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x16 - mov r1, #0x4 - bl String_ctor - add r4, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r6, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - mov r1, #0x4 - add r2, r4, #0x0 - bl FUN_02064E60 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - add r1, r6, #0x0 - add r2, r4, #0x0 - mov r3, #0x0 - bl BufferString - add r0, r4, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02040D04 -FUN_02040D04: ; 0x02040D04 - push {r3-r7, lr} - sub sp, #0x8 - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r4, #0x8] - add r0, r4, #0x0 - ldrb r6, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - sub r5, #0x95 - add r4, r0, #0x0 - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x20 - bl GetNutName - add r5, r0, #0x0 - cmp r4, #0x2 - bhs _02040D5A - mov r0, #0x1 - b _02040D5C -_02040D5A: - mov r0, #0x0 -_02040D5C: - str r0, [sp, #0x0] - mov r0, #0x2 - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - add r1, r6, #0x0 - add r2, r5, #0x0 - mov r3, #0x0 - bl BufferString - add r0, r5, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02040D7C -FUN_02040D7C: ; 0x02040D7C - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferNatureName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040DB4 -FUN_02040DB4: ; 0x02040DB4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferFashionName - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040DEC -FUN_02040DEC: ; 0x02040DEC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - mov r0, #0xb - ldrb r6, [r1, #0x0] - add r1, r0, #0x0 - bl String_ctor - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02024EB4 - bl FUN_02024F0C - add r1, r0, #0x0 - add r0, r4, #0x0 - bl CopyU16ArrayToString - ldr r0, _02040E48 ; =gGameLanguage - mov r3, #0x0 - ldrb r0, [r0, #0x0] - str r3, [sp, #0x0] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [r7, #0x0] - add r2, r4, #0x0 - bl BufferString - add r0, r4, #0x0 - bl String_dtor - mov r0, #0x0 - add sp, #0x8 - pop {r3-r7, pc} - nop -_02040E48: .word gGameLanguage - - thumb_func_start FUN_02040E4C -FUN_02040E4C: ; 0x02040E4C - push {r3-r7, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0xf - add r0, r6, #0x0 - bl FUN_02039438 - ldr r1, [r4, #0x8] - add r7, r0, #0x0 - add r0, r1, #0x1 - str r0, [r4, #0x8] - add r0, r4, #0x0 - ldrb r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - add r4, r0, #0x0 - ldr r0, [r6, #0xc] - bl SavArray_PlayerParty_get - ldr r1, [sp, #0x0] - bl GetPartyMonByIndex - add r4, #0x36 - add r1, r4, #0x0 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - ldr r0, [r7, #0x0] - add r1, r5, #0x0 - bl BufferMoveName - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02040EB4 -FUN_02040EB4: ; 0x02040EB4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x3 - bl FUN_0207FC5C - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferRibbonNameOrDesc - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040EF8 -FUN_02040EF8: ; 0x02040EF8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - sub r2, r2, #0x1 - lsl r2, r2, #0x10 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - bl BufferSealName - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02040F34 -FUN_02040F34: ; 0x02040F34 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferItemNameWithIndefArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040F6C -FUN_02040F6C: ; 0x02040F6C - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferItemNamePlural - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040FA4 -FUN_02040FA4: ; 0x02040FA4 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferDecorationNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02040FDC -FUN_02040FDC: ; 0x02040FDC - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferUndergroundTrapNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02041014 -FUN_02041014: ; 0x02041014 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferUndergroundItemNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0204104C -FUN_0204104C: ; 0x0204104C - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - ldr r0, [r5, #0x8] - add r1, r4, #0x0 - add r0, r0, #0x1 - str r0, [r5, #0x8] - ldr r0, [r6, #0x0] - add r2, r7, #0x0 - bl BufferSpeciesNameWithArticle - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02041094 -FUN_02041094: ; 0x02041094 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r5, #0x80 - ldr r0, [r5, #0x0] - ldrb r4, [r1, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F3C0 - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferSpeciesNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_020410C8 -FUN_020410C8: ; 0x020410C8 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferFashionNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02041100 -FUN_02041100: ; 0x02041100 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - bl BufferTrainerClassNameWithArticle - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02041138 -FUN_02041138: ; 0x02041138 - push {r4-r6, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r1, [r5, #0x8] - add r6, r0, #0x0 - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r2, r0, #0x0 - sub r2, r2, #0x1 - lsl r2, r2, #0x10 - ldr r0, [r6, #0x0] - add r1, r4, #0x0 - lsr r2, r2, #0x10 - bl BufferSealNamePlural - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02041174 -FUN_02041174: ; 0x02041174 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0xf - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl ScrStrBufs_UpperFirstChar - mov r0, #0x0 - pop {r4, pc} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index b79288ca..a4b7aa12 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -354,28 +354,28 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203CB20 .word FUN_0203CB48 .word FUN_0203CB60 - .word FUN_020406CC - .word FUN_02040700 - .word FUN_02040724 - .word FUN_02040748 - .word FUN_02040790 - .word FUN_020407C8 - .word FUN_02040800 - .word FUN_0204083C - .word FUN_02040874 - .word FUN_0204091C - .word FUN_020409C0 - .word FUN_020409F8 - .word FUN_02040A30 - .word FUN_02040A7C - .word FUN_02040B0C - .word FUN_02040B5C - .word FUN_02040BAC + .word ScrCmd_GetPlayerName + .word ScrCmd_GetRivalName + .word ScrCmd_GetFriendName + .word ScrCmd_Unk00D0 + .word ScrCmd_GetItemName + .word ScrCmd_GetPocketName + .word ScrCmd_GetTMHMMoveName + .word ScrCmd_GetMoveName + .word ScrCmd_Unk00D5 + .word ScrCmd_Unk00D6 + .word ScrCmd_GetPoketchAppName + .word ScrCmd_GetTrainerClassName + .word ScrCmd_Unk00D9 + .word ScrCmd_Unk00DA + .word ScrCmd_Unk00DB + .word ScrCmd_Unk00DC + .word ScrCmd_Unk00DD .word FUN_0203CBBC - .word FUN_02040BFC - .word FUN_02040C34 - .word FUN_02040C6C - .word FUN_02040CA4 + .word ScrCmd_GetDecorationName + .word ScrCmd_GetUndergroundTrapName + .word ScrCmd_GetUndergroundItemName + .word ScrCmd_Unk00E2 .word FUN_0203CB70 .word FUN_0204185C .word FUN_0204188C @@ -528,8 +528,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203C460 .word FUN_0203C4B0 .word FUN_0203D958 - .word FUN_02040D04 - .word FUN_02040D7C + .word ScrCmd_Unk017B + .word ScrCmd_GetNatureName .word ScrCmd_Unk017D .word ScrCmd_Unk017E .word ScrCmd_Unk017F @@ -608,7 +608,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02044D8C .word FUN_02044E34 .word FUN_02044E78 - .word FUN_02040E4C + .word ScrCmd_GetPokemonMoveName .word FUN_0203E138 .word FUN_0203E168 .word FUN_0203E254 @@ -711,7 +711,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0204505C .word FUN_02045104 .word FUN_02045170 - .word FUN_02040EB4 + .word ScrCmd_Unk0232 .word FUN_0203E9CC .word FUN_0203EA68 .word FUN_02041E40 @@ -742,7 +742,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02041194 .word FUN_020411C4 .word FUN_02041340 - .word FUN_02040964 + .word ScrCmd_Unk0251 .word ScrCmd_pcfreespace .word ScrCmd_Unk0253 .word ScrCmd_Unk0254 @@ -758,7 +758,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203EE58 .word FUN_0203EE68 .word FUN_0203EE78 - .word FUN_02040DB4 + .word ScrCmd_GetFashionName .word FUN_0203EE98 .word FUN_0203EED8 .word FUN_0203EF58 @@ -775,7 +775,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203F254 .word FUN_0203F26C .word FUN_0203C58C - .word FUN_02040DEC + .word ScrCmd_Unk0272 .word FUN_0203F2AC .word ScrCmd_HasEnoughCoinsImmediate .word FUN_0203F2E4 @@ -789,7 +789,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203F3AC .word FUN_0203F44C .word FUN_0203F418 - .word FUN_020408BC + .word ScrCmd_Unk0280 .word FUN_02044A0C .word FUN_0203F484 .word FUN_02041674 @@ -840,7 +840,7 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203FB94 .word FUN_0203FBA0 .word FUN_0203FBAC - .word FUN_02040EF8 + .word ScrCmd_GetSealName .word FUN_0203B2E0 .word FUN_0203FBBC .word FUN_0203FC1C @@ -857,17 +857,17 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203FC80 .word FUN_0203FCB0 .word FUN_0203FCDC - .word FUN_02040F34 - .word FUN_02040F6C - .word FUN_02040FA4 - .word FUN_02040FDC - .word FUN_02041014 - .word FUN_0204104C - .word FUN_02041094 - .word FUN_020410C8 - .word FUN_02041100 - .word FUN_02041138 - .word FUN_02041174 + .word ScrCmd_GetItemNameWithIndefArticle + .word ScrCmd_GetItemNamePlural + .word ScrCmd_GetDecorationNameWithArticle + .word ScrCmd_GetUndergroundTrapNameWithArticle + .word ScrCmd_GetUndergroundItemNameWithArticle + .word ScrCmd_Unk02C9 + .word ScrCmd_Unk02CA + .word ScrCmd_GetFashionNameWithArticle + .word ScrCmd_Unk02CC + .word ScrCmd_GetSealNamePlural + .word ScrCmd_CapitalizeFirstChar .word ScrCmd_Unk02CF .word ScrCmd_Unk02D0 diff --git a/arm9/global.inc b/arm9/global.inc index 0da3fadd..bda86b74 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3152,47 +3152,47 @@ .extern FUN_0204064C .extern FUN_02040660 .extern FUN_020406C0 -.extern FUN_020406CC -.extern FUN_02040700 -.extern FUN_02040724 -.extern FUN_02040748 -.extern FUN_02040790 -.extern FUN_020407C8 -.extern FUN_02040800 -.extern FUN_0204083C -.extern FUN_02040874 -.extern FUN_020408BC -.extern FUN_0204091C -.extern FUN_02040964 -.extern FUN_020409C0 -.extern FUN_020409F8 -.extern FUN_02040A30 -.extern FUN_02040A7C -.extern FUN_02040B0C -.extern FUN_02040B5C -.extern FUN_02040BAC -.extern FUN_02040BFC -.extern FUN_02040C34 -.extern FUN_02040C6C -.extern FUN_02040CA4 -.extern FUN_02040D04 -.extern FUN_02040D7C -.extern FUN_02040DB4 -.extern FUN_02040DEC -.extern FUN_02040E4C -.extern FUN_02040EB4 -.extern FUN_02040EF8 -.extern FUN_02040F34 -.extern FUN_02040F6C -.extern FUN_02040FA4 -.extern FUN_02040FDC -.extern FUN_02041014 -.extern FUN_0204104C -.extern FUN_02041094 -.extern FUN_020410C8 -.extern FUN_02041100 -.extern FUN_02041138 -.extern FUN_02041174 +.extern ScrCmd_GetPlayerName +.extern ScrCmd_GetRivalName +.extern ScrCmd_GetFriendName +.extern ScrCmd_Unk00D0 +.extern ScrCmd_GetItemName +.extern ScrCmd_GetPocketName +.extern ScrCmd_GetTMHMMoveName +.extern ScrCmd_GetMoveName +.extern ScrCmd_Unk00D5 +.extern ScrCmd_Unk0280 +.extern ScrCmd_Unk00D6 +.extern ScrCmd_Unk0251 +.extern ScrCmd_GetPoketchAppName +.extern ScrCmd_GetTrainerClassName +.extern ScrCmd_Unk00D9 +.extern ScrCmd_Unk00DA +.extern ScrCmd_Unk00DB +.extern ScrCmd_Unk00DC +.extern ScrCmd_Unk00DD +.extern ScrCmd_GetDecorationName +.extern ScrCmd_GetUndergroundTrapName +.extern ScrCmd_GetUndergroundItemName +.extern ScrCmd_Unk00E2 +.extern ScrCmd_Unk017B +.extern ScrCmd_GetNatureName +.extern ScrCmd_GetFashionName +.extern ScrCmd_Unk0272 +.extern ScrCmd_GetPokemonMoveName +.extern ScrCmd_Unk0232 +.extern ScrCmd_GetSealName +.extern ScrCmd_GetItemNameWithIndefArticle +.extern ScrCmd_GetItemNamePlural +.extern ScrCmd_GetDecorationNameWithArticle +.extern ScrCmd_GetUndergroundTrapNameWithArticle +.extern ScrCmd_GetUndergroundItemNameWithArticle +.extern ScrCmd_Unk02C9 +.extern ScrCmd_Unk02CA +.extern ScrCmd_GetFashionNameWithArticle +.extern ScrCmd_Unk02CC +.extern ScrCmd_GetSealNamePlural +.extern ScrCmd_CapitalizeFirstChar .extern FUN_02041194 .extern FUN_020411C4 .extern FUN_02041340 diff --git a/arm9/src/scrcmd_names.c b/arm9/src/scrcmd_names.c new file mode 100644 index 00000000..cf721328 --- /dev/null +++ b/arm9/src/scrcmd_names.c @@ -0,0 +1,540 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "itemtool.h" +#include "nutdata.h" +#include "party.h" +#include "player_data.h" +#include "script_buffers.h" +#include "unk_02024E64.h" +#include "unk_02064E4C.h" +#include "unk_0207FC5C.h" + +extern void* FUN_02039438(struct UnkSavStruct80* sav_ptr, int idx); + +extern u32 FUN_020536D0(u32 gender, u32 avatar, u32 a2); +extern u32 FUN_0205F388(struct ScriptState* state); +extern u32 FUN_0205F398(struct ScriptState* state); +extern struct PCStorage* GetStoragePCPointer(struct SaveBlock2* sav2); +extern u32 FUN_0205F3C0(struct ScriptState* state); +extern u32 FUN_02054C14(u32 number); + +THUMB_FUNC BOOL ScrCmd_GetPlayerName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + + BufferPlayersName(*mgr, idx, player); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetRivalName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + + BufferRivalsName(*mgr, idx, sav_ptr->saveBlock2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + + BufferFriendsName(*mgr, idx, sav_ptr->saveBlock2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* mon = GetPartyMonByIndex(party, mon_idx); + + BufferBoxMonSpeciesName(*mgr, idx, &mon->box); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemName(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPocketName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 pocket = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferPocketName(*mgr, idx, pocket); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTMHMMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 tmhm = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 move = TMHMGetMove(tmhm); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 move = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D5(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 digits = FUN_02054C14(unk); + + BufferIntegerAsString(*mgr, idx, unk, digits, 1, TRUE); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0280(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u8 unk2 = ScriptReadByte(ctx); + u8 digits = ScriptReadByte(ctx); + if (unk2 == 0) + { + digits = (u8)FUN_02054C14(unk); + } + + BufferIntegerAsString(*mgr, idx, unk, digits, unk2, TRUE); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx); + + BufferBoxMonNickname(*mgr, idx, &pokemon->box); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0251(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct PCStorage* pc = GetStoragePCPointer(sav_ptr->saveBlock2); + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 box_mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + s32 box_no = box_mon_idx / 30; + s32 slot_no = box_mon_idx % 30; + struct BoxPokemon* box_mon = PCStorage_GetMonByIndexPair(pc, box_no, slot_no); + + BufferBoxMonNickname(*mgr, idx, box_mon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPoketchAppName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 app = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferPoketchAppName(*mgr, idx, app); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTrainerClassName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 trainer_class = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferTrainerClassName(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D9(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u32 gender = PlayerProfile_GetTrainerGender(player); + u32 avatar = PlayerProfile_GetAvatar(player); + u32 trainer_class = FUN_020536D0(gender, avatar, 2); + + BufferTrainerClassNameWithArticle(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DA(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 msg_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk1 = ScriptReadHalfword(ctx); + u8 unk2 = ScriptReadByte(ctx); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, unk1, unk2, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC struct String* FUN_02040AE4(u32 msg_no, u32 heap_id) +{ + struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 362, heap_id); + struct String* ret = NewString_ReadMsgData(msg_data, msg_no); + DestroyMsgData(msg_data); + + return ret; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F388(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F398(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F3C0(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetDecorationName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 decoration = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferDecorationName(*mgr, idx, decoration); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundTrapName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_trap = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundTrapName(*mgr, idx, underground_trap); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundItemName(*mgr, idx, underground_item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx) +{ + struct String* str = String_ctor(22, 4); + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 map_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_02064E60(map_no, 4, str); + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017B(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 berry = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct String* nut_name = GetNutName((u16)(berry - FIRST_BERRY_IDX), 32); + + BufferString(*mgr, idx, nut_name, 0, unk < 2, 2); + String_dtor(nut_name); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetNatureName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 nature = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferNatureName(*mgr, idx, nature); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 fashion = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferFashionName(*mgr, idx, fashion); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0272(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct String* str = String_ctor(11, 11); + struct UnkStruct_02024E64* unk = FUN_02024EB4(ctx->unk80->saveBlock2); + u16* unk_buffer = FUN_02024F0C(unk); + + CopyU16ArrayToString(str, unk_buffer); + BufferString(*mgr, idx, str, 0, 0, gGameLanguage); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 mon_move_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx); + u16 move = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + mon_move_idx, NULL); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0232(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u8 unk = (u8)VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 ribbon = (u16)FUN_0207FC5C(unk, 3); + + BufferRibbonNameOrDesc(*mgr, idx, ribbon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSealName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 seal = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferSealName(*mgr, idx, (u16)(seal - 1)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemNameWithIndefArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemNameWithIndefArticle(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemNamePlural(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemNamePlural(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetDecorationNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 decoration = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferDecorationNameWithArticle(*mgr, idx, decoration); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundTrapNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_trap = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundTrapNameWithArticle(*mgr, idx, underground_trap); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundItemNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundItemNameWithArticle(*mgr, idx, underground_item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02C9(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused1 = ScriptReadHalfword(ctx); + u8 unused2 = ScriptReadByte(ctx); + + BufferSpeciesNameWithArticle(*mgr, idx, species); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CA(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 species = FUN_0205F3C0(state); + + BufferSpeciesNameWithArticle(*mgr, idx, species); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFashionNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 fashion = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferFashionNameWithArticle(*mgr, idx, fashion); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 trainer_class = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferTrainerClassNameWithArticle(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 seal = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferSealNamePlural(*mgr, idx, (u16)(seal - 1)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + + ScrStrBufs_UpperFirstChar(*mgr, idx); + + return FALSE; +} -- cgit v1.2.3 From 419991733b49432fbd2f130e960736469af85400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 9 Apr 2021 20:12:14 +0200 Subject: more decomp --- arm9/asm/unk_0202F150.s | 948 ---------------------------------------------- arm9/global.inc | 5 + arm9/src/unk_0202F150_c.c | 368 +++++++++++++++++- 3 files changed, 371 insertions(+), 950 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s index 395ebd44..802807f5 100644 --- a/arm9/asm/unk_0202F150.s +++ b/arm9/asm/unk_0202F150.s @@ -12,954 +12,6 @@ .text - thumb_func_start FUN_0202FEEC -FUN_0202FEEC: ; 0x0202FEEC - push {r3-r7, lr} - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0202FEFE - bl FUN_02033534 - cmp r0, #0x13 - blt _0202FF00 -_0202FEFE: - b _02030062 -_0202FF00: - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0x0] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r6, r0, #0x1 - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - cmp r1, #0x2 - beq _0202FF2C - ldrb r0, [r0, #0x1] - cmp r0, #0x0 - beq _0202FF2C - b _02030062 -_0202FF2C: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0202FF4A - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r0, [r1, r0] - bl FUN_0202FE2C -_0202FF4A: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0202FF86 - bl FUN_02031280 - cmp r0, #0x0 - bne _0202FF86 - ldr r0, _02030064 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r3, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r0, [r1, r0] - mov r1, #0xc0 - add r2, r0, #0x0 - mul r2, r1 - add r0, r3, r2 - ldr r3, _0203006C ; =FUN_020304F0 - mov r2, #0xe - bl FUN_0202D0D0 - cmp r0, #0x0 - bne _0202FF86 - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - sub r1, r1, #0x1 - strb r1, [r0, #0x1] -_0202FF86: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - cmp r1, #0x1 - beq _0202FF94 - ldrb r0, [r0, #0x1] - cmp r0, #0x3 - bne _0203000A -_0202FF94: - mov r4, #0x0 - cmp r6, #0x0 - ble _0202FFDC - ldr r7, _02030064 ; =UNK_021C59F4 - add r5, r4, #0x0 -_0202FF9E: - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FFBA - ldr r0, [r7, #0x4] - ldr r1, _02030070 ; =0x00000638 - add r0, r0, r5 - ldr r1, [r0, r1] - add r2, r1, #0x1 - ldr r1, _02030070 ; =0x00000638 - str r2, [r0, r1] - b _0202FFD4 -_0202FFBA: - bl FUN_02031280 - cmp r0, #0x0 - beq _0202FFD4 - cmp r4, #0x0 - bne _0202FFD4 - ldr r0, [r7, #0x4] - ldr r1, _02030070 ; =0x00000638 - add r0, r0, r5 - ldr r1, [r0, r1] - add r2, r1, #0x1 - ldr r1, _02030070 ; =0x00000638 - str r2, [r0, r1] -_0202FFD4: - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, r6 - blt _0202FF9E -_0202FFDC: - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x55 - ldr r2, [r0, #0x4] - lsl r1, r1, #0x2 - add r4, r2, r1 - mov r1, #0x1a - lsl r1, r1, #0x6 - ldrb r1, [r2, r1] - mov r2, #0xc0 - mov r0, #0x0 - add r3, r1, #0x0 - mul r3, r2 - add r1, r4, r3 - bl FUN_0203026C - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x1a - ldr r3, [r0, #0x4] - lsl r1, r1, #0x6 - ldrb r2, [r3, r1] - mov r0, #0x1 - sub r0, r0, r2 - strb r0, [r3, r1] -_0203000A: - mov r5, #0x0 - cmp r6, #0x0 - ble _0203004A - add r4, r5, #0x0 - mov r7, #0xff -_02030014: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030040 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030040 - ldr r0, _02030064 ; =UNK_021C59F4 - mov r1, #0x1a - ldr r0, [r0, #0x4] - lsl r1, r1, #0x6 - ldrb r2, [r0, r1] - mov r1, #0xc0 - mul r1, r2 - add r0, r0, r1 - add r1, r4, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r7, [r1, r0] -_02030040: - ldr r0, [sp, #0x0] - add r5, r5, #0x1 - add r4, r4, r0 - cmp r5, r6 - blt _02030014 -_0203004A: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0203005A - bl FUN_02031280 - cmp r0, #0x0 - beq _02030062 -_0203005A: - ldr r0, _02030068 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] -_02030062: - pop {r3-r7, pc} - .balign 4 -_02030064: .word UNK_021C59F4 -_02030068: .word UNK_02105D58 -_0203006C: .word FUN_020304F0 -_02030070: .word 0x00000638 - - thumb_func_start FUN_02030074 -FUN_02030074: ; 0x02030074 - push {r3-r7, lr} - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _020300DC - bl FUN_02033534 - cmp r0, #0x13 - blt _020300B4 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - beq _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x4c - bl MOD04_021D79B4 - cmp r0, #0x0 - beq _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - strb r2, [r1, r0] - pop {r3-r7, pc} -_020300B4: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _020300C4 - bl FUN_02031280 - cmp r0, #0x0 - beq _020300DC -_020300C4: - bl FUN_0202FEEC - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x2 - bne _020300DC - ldr r0, _02030228 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203022C ; =0x00000683 - strb r2, [r1, r0] - pop {r3-r7, pc} -_020300DC: - bl FUN_02033534 - cmp r0, #0x13 - blt _02030184 - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _020300F0 - b _02030224 -_020300F0: - ldr r0, _02030228 ; =UNK_021C59F4 - mov r1, #0x63 - ldr r2, [r0, #0x4] - lsl r1, r1, #0x4 - ldr r0, [r2, r1] - cmp r0, #0x0 - beq _02030130 - add r0, r1, #0x0 - add r0, #0xc - ldr r0, [r2, r0] - cmp r0, #0x3 - bgt _02030110 - add r1, #0x8 - ldr r0, [r2, r1] - cmp r0, #0x3 - ble _02030112 -_02030110: - b _02030224 -_02030112: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _02030150 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030128 - mov r0, #0x0 - bl FUN_0202FE2C -_02030128: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x1] - b _02030150 -_02030130: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _0203014A - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0203014A - mov r0, #0x0 - bl FUN_0202FE2C - cmp r0, #0x0 - beq _02030224 -_0203014A: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x2 - strb r1, [r0, #0x1] -_02030150: - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r0, r1, r0 - mov r1, #0x4c - bl MOD04_021D79B4 - cmp r0, #0x0 - beq _02030224 - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x4 - strb r1, [r0, #0x1] - ldr r1, _02030228 ; =UNK_021C59F4 - ldr r0, _02030234 ; =0x00000638 - ldr r3, [r1, #0x4] - ldr r2, [r3, r0] - add r2, r2, #0x1 - str r2, [r3, r0] - ldr r2, [r1, #0x4] - add r1, r0, #0x4 - ldr r1, [r2, r1] - add r0, r0, #0x4 - add r1, r1, #0x1 - str r1, [r2, r0] - pop {r3-r7, pc} -_02030184: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _02030194 - bl FUN_02031280 - cmp r0, #0x0 - beq _02030224 -_02030194: - ldr r0, _02030230 ; =UNK_02105D58 - ldrb r0, [r0, #0x1] - cmp r0, #0x4 - bne _02030224 - ldr r6, _02030228 ; =UNK_021C59F4 - ldr r7, _02030234 ; =0x00000638 - mov r4, #0x1 - mov r5, #0x4 -_020301A4: - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _020301BC - ldr r0, [r6, #0x4] - add r0, r0, r5 - ldr r0, [r0, r7] - cmp r0, #0x3 - ble _020301D2 - pop {r3-r7, pc} -_020301BC: - cmp r4, #0x0 - bne _020301D2 - bl FUN_02031280 - cmp r0, #0x0 - beq _020301D2 - ldr r1, [r6, #0x4] - ldr r0, _02030234 ; =0x00000638 - ldr r0, [r1, r0] - cmp r0, #0x3 - bgt _02030224 -_020301D2: - add r4, r4, #0x1 - add r5, r5, #0x4 - cmp r4, #0x8 - blt _020301A4 - bl FUN_0202FA28 - cmp r0, #0x0 - bne _0203021A - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r2, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r1, [r1, r0] - mov r0, #0xc0 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030A00 - ldr r0, _02030228 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x55 - lsl r0, r0, #0x2 - add r2, r1, r0 - mov r0, #0x1a - lsl r0, r0, #0x6 - ldrb r1, [r1, r0] - mov r0, #0x1 - sub r1, r0, r1 - mov r0, #0xc0 - mul r0, r1 - add r0, r2, r0 - bl FUN_02030A00 -_0203021A: - ldr r0, _02030230 ; =UNK_02105D58 - mov r1, #0x0 - strb r1, [r0, #0x1] - bl FUN_0202FEEC -_02030224: - pop {r3-r7, pc} - nop -_02030228: .word UNK_021C59F4 -_0203022C: .word 0x00000683 -_02030230: .word UNK_02105D58 -_02030234: .word 0x00000638 - - thumb_func_start FUN_02030238 -FUN_02030238: ; 0x02030238 - push {r4-r6, lr} - ldr r4, _02030264 ; =UNK_021C59F4 - ldr r3, _02030268 ; =0x0000066F - ldr r5, [r4, #0x4] - ldrb r6, [r5, r3] - cmp r6, #0x0 - beq _0203025C - add r0, r3, #0x0 - sub r0, #0x3b - ldr r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r3, #0x0 - sub r0, #0x3b - str r1, [r5, r0] - ldr r0, [r4, #0x4] - mov r1, #0x0 - strb r1, [r0, r3] - pop {r4-r6, pc} -_0203025C: - bl FUN_0203026C - pop {r4-r6, pc} - nop -_02030264: .word UNK_021C59F4 -_02030268: .word 0x0000066F - - thumb_func_start FUN_0203026C -FUN_0203026C: ; 0x0203026C - push {r3-r7, lr} - sub sp, #0x8 - ldr r0, _020303A0 ; =UNK_021C59F4 - add r5, r1, #0x0 - ldr r2, [r0, #0x4] - ldr r0, _020303A4 ; =0x00000634 - ldr r1, [r2, r0] - sub r1, r1, #0x1 - str r1, [r2, r0] - cmp r5, #0x0 - beq _02030290 - ldrb r0, [r5, #0x0] - cmp r0, #0xb - bne _02030296 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030292 -_02030290: - b _0203039C -_02030292: - add r5, r5, #0x1 - b _0203029E -_02030296: - bl FUN_0202FA28 - cmp r0, #0x0 - beq _0203039C -_0203029E: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r1, _020303A8 ; =0x00000682 - ldr r0, [r0, #0x4] - ldrb r1, [r0, r1] - cmp r1, #0x0 - beq _020302B2 - ldrb r2, [r5, #0x0] - mov r1, #0x1 - tst r1, r2 - bne _0203039C -_020302B2: - ldr r1, _020303A8 ; =0x00000682 - mov r2, #0x0 - strb r2, [r0, r1] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _0203036E - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r6, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r4, #0x0 - str r0, [sp, #0x4] - cmp r0, #0x0 - ble _0203039C - sub r0, r6, #0x1 - add r7, r4, #0x0 - str r0, [sp, #0x0] -_020302EA: - ldrb r0, [r5, #0x0] - cmp r0, #0xff - bne _02030302 - ldr r0, _020303A0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020303AC ; =0x0000065C - lsl r2, r4 - ldrh r0, [r1, r0] - mvn r2, r2 - and r2, r0 - b _02030310 -_02030302: - ldr r0, _020303A0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020303AC ; =0x0000065C - lsl r2, r4 - ldrh r0, [r1, r0] - orr r2, r0 -_02030310: - ldr r0, _020303AC ; =0x0000065C - strh r2, [r1, r0] - ldrb r2, [r5, #0x0] - cmp r2, #0xff - bne _0203031E - add r5, r5, r6 - b _02030360 -_0203031E: - cmp r2, #0xe - bne _02030326 - add r5, r5, r6 - b _02030360 -_02030326: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r3, [r0, #0x4] - ldr r0, _020303B0 ; =0x00000667 - add r1, r3, r4 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0203033E - mov r0, #0x1 - tst r0, r2 - beq _0203033E - add r5, r5, r6 - b _02030360 -_0203033E: - ldr r0, _020303B4 ; =0x000004E8 - add r5, r5, #0x1 - add r0, r3, r0 - ldr r2, [sp, #0x0] - ldr r3, _020303B8 ; =0x000005E6 - add r0, r0, r7 - add r1, r5, #0x0 - bl FUN_0202D3A4 - ldr r0, [sp, #0x0] - mov r1, #0x0 - add r5, r5, r0 - ldr r0, _020303A0 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r2, r0, r4 - ldr r0, _020303B0 ; =0x00000667 - strb r1, [r2, r0] -_02030360: - ldr r0, [sp, #0x4] - add r4, r4, #0x1 - add r7, #0xc - cmp r4, r0 - blt _020302EA - add sp, #0x8 - pop {r3-r7, pc} -_0203036E: - ldr r0, _020303A0 ; =UNK_021C59F4 - ldrb r2, [r5, #0x1] - ldr r1, [r0, #0x4] - ldr r3, _020303AC ; =0x0000065C - strh r2, [r1, r3] - ldr r2, [r0, #0x4] - ldrh r1, [r2, r3] - lsl r1, r1, #0x8 - strh r1, [r2, r3] - ldr r4, [r0, #0x4] - ldrb r1, [r5, #0x2] - ldrh r2, [r4, r3] - add r1, r2, r1 - strh r1, [r4, r3] - ldr r1, [r0, #0x4] - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - ldrb r2, [r5, #0x3] - add r1, r5, #0x4 - sub r3, #0x5d - bl FUN_0202D3A4 -_0203039C: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020303A0: .word UNK_021C59F4 -_020303A4: .word 0x00000634 -_020303A8: .word 0x00000682 -_020303AC: .word 0x0000065C -_020303B0: .word 0x00000667 -_020303B4: .word 0x000004E8 -_020303B8: .word 0x000005E6 - - thumb_func_start FUN_020303BC -FUN_020303BC: ; 0x020303BC - push {r4-r6, lr} - ldr r3, _020303EC ; =UNK_021C59F4 - ldr r6, _020303F0 ; =0x0000066F - ldr r5, [r3, #0x4] - add r4, r5, r0 - ldrb r4, [r4, r6] - cmp r4, #0x0 - beq _020303E4 - add r1, r6, #0x0 - sub r1, #0x37 - add r4, r5, r1 - lsl r2, r0, #0x2 - ldr r1, [r4, r2] - sub r1, r1, #0x1 - str r1, [r4, r2] - ldr r1, [r3, #0x4] - mov r2, #0x0 - add r0, r1, r0 - strb r2, [r0, r6] - pop {r4-r6, pc} -_020303E4: - bl FUN_020303F4 - pop {r4-r6, pc} - nop -_020303EC: .word UNK_021C59F4 -_020303F0: .word 0x0000066F - - thumb_func_start FUN_020303F4 -FUN_020303F4: ; 0x020303F4 - push {r4-r6, lr} - ldr r3, _020304B8 ; =UNK_021C59F4 - add r5, r0, #0x0 - ldr r0, [r3, #0x4] - ldr r2, _020304BC ; =0x00000638 - add r4, r1, #0x0 - add r1, r0, r2 - lsl r0, r5, #0x2 - ldr r6, [r1, r0] - sub r6, r6, #0x1 - str r6, [r1, r0] - cmp r4, #0x0 - beq _020304B4 - ldr r0, [r3, #0x4] - add r2, #0x2f - add r0, r0, r2 - ldrb r1, [r0, r5] - cmp r1, #0x0 - beq _02030422 - ldrb r2, [r4, #0x0] - mov r1, #0x1 - tst r1, r2 - bne _020304B4 -_02030422: - mov r1, #0x0 - strb r1, [r0, r5] - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030478 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r6, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - ldrb r1, [r4, #0x0] - mov r0, #0x2 - tst r0, r1 - bne _02030468 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r3, _020304C0 ; =0x0000065E - ldr r1, [r0, #0x4] - ldr r0, _020304C4 ; =0x0000047C - add r2, r6, #0x0 - add r1, r1, r0 - mov r0, #0xc - mul r0, r5 - add r0, r1, r0 - add r1, r4, #0x0 - bl FUN_0202D3A4 -_02030468: - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020304C8 ; =0x0000065F - add r1, r1, r0 - ldrb r0, [r1, r5] - add r0, r0, #0x1 - strb r0, [r1, r5] - pop {r4-r6, pc} -_02030478: - add r0, r4, #0x0 - add r1, r5, #0x0 - bl FUN_020307E4 - ldrb r1, [r4, #0x0] - mov r0, #0x2 - tst r0, r1 - bne _020304B4 - mov r0, #0xc - add r6, r5, #0x0 - mul r6, r0 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020304CC ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r6 - bl FUN_0202D498 - cmp r0, #0xb - blt _020304B4 - ldr r0, _020304B8 ; =UNK_021C59F4 - ldr r3, _020304D0 ; =0x0000066E - ldr r1, [r0, #0x4] - ldr r0, _020304CC ; =0x000004E8 - mov r2, #0xb - add r0, r1, r0 - add r0, r0, r6 - add r1, r4, #0x1 - bl FUN_0202D3A4 -_020304B4: - pop {r4-r6, pc} - nop -_020304B8: .word UNK_021C59F4 -_020304BC: .word 0x00000638 -_020304C0: .word 0x0000065E -_020304C4: .word 0x0000047C -_020304C8: .word 0x0000065F -_020304CC: .word 0x000004E8 -_020304D0: .word 0x0000066E - - thumb_func_start FUN_020304D4 -FUN_020304D4: ; 0x020304D4 - push {r3, lr} - cmp r0, #0x0 - beq _020304E4 - ldr r0, _020304EC ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - pop {r3, pc} -_020304E4: - bl ErrorHandling - pop {r3, pc} - nop -_020304EC: .word UNK_02105D58 - - thumb_func_start FUN_020304F0 -FUN_020304F0: ; 0x020304F0 - push {r3, lr} - cmp r0, #0x0 - beq _02030500 - ldr r0, _02030508 ; =UNK_02105D58 - ldrb r1, [r0, #0x1] - add r1, r1, #0x1 - strb r1, [r0, #0x1] - pop {r3, pc} -_02030500: - bl ErrorHandling - pop {r3, pc} - nop -_02030508: .word UNK_02105D58 - - thumb_func_start FUN_0203050C -FUN_0203050C: ; 0x0203050C - push {r4, lr} - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _0203051E - bl FUN_02033534 - cmp r0, #0x13 - blt _02030520 -_0203051E: - b _0203065E -_02030520: - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r4, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - bl FUN_02031280 - cmp r0, #0x0 - beq _02030594 - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - cmp r1, #0x2 - beq _02030550 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _02030594 -_02030550: - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x1 - bl FUN_020304D4 - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r3, [r0, #0x4] - mov r0, #0x0 - ldrb r2, [r3, r1] - mov r1, #0x26 - mul r1, r2 - lsl r2, r4, #0x10 - add r1, r3, r1 - lsr r2, r2, #0x10 - bl FUN_020303F4 - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] - pop {r4, pc} -_02030594: - bl FUN_0202CBD4 - cmp r0, #0x4 - bne _0203065E - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _020305AE - bl FUN_02031190 - pop {r4, pc} -_020305AE: - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - cmp r1, #0x2 - beq _020305BC - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _0203065E -_020305BC: - bl FUN_02031190 - cmp r0, #0x0 - beq _02030612 - ldr r0, _02030664 ; =UNK_02105D58 - ldr r3, _0203066C ; =FUN_020304D4 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _02030668 ; =0x0000067F - ldrb r1, [r2, r0] - mov r0, #0x26 - mul r0, r1 - lsl r1, r4, #0x10 - add r0, r2, r0 - lsr r1, r1, #0x10 - mov r2, #0xe - bl FUN_0202D0D0 - cmp r0, #0x0 - bne _020305F4 - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - sub r1, r1, #0x1 - strb r1, [r0, #0x0] - pop {r4, pc} -_020305F4: - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] - pop {r4, pc} -_02030612: - bl FUN_0202CB8C - ldr r1, _02030670 ; =0x0000FFFE - tst r0, r1 - beq _0203065E - ldr r0, _02030664 ; =UNK_02105D58 - ldrb r1, [r0, #0x0] - add r1, r1, #0x1 - strb r1, [r0, #0x0] - mov r0, #0x1 - bl FUN_020304D4 - ldr r0, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r3, [r0, #0x4] - mov r0, #0x0 - ldrb r2, [r3, r1] - mov r1, #0x26 - mul r1, r2 - lsl r2, r4, #0x10 - add r1, r3, r1 - lsr r2, r2, #0x10 - bl FUN_020303F4 - ldr r2, _02030660 ; =UNK_021C59F4 - ldr r1, _02030668 ; =0x0000067F - ldr r4, [r2, #0x4] - mov r0, #0x1 - ldrb r3, [r4, r1] - sub r0, r0, r3 - strb r0, [r4, r1] - add r0, r1, #0x0 - ldr r2, [r2, #0x4] - sub r0, #0x4b - ldr r0, [r2, r0] - sub r1, #0x4b - add r0, r0, #0x1 - str r0, [r2, r1] -_0203065E: - pop {r4, pc} - .balign 4 -_02030660: .word UNK_021C59F4 -_02030664: .word UNK_02105D58 -_02030668: .word 0x0000067F -_0203066C: .word FUN_020304D4 -_02030670: .word 0x0000FFFE - thumb_func_start FUN_02030674 FUN_02030674: ; 0x02030674 push {r3-r7, lr} diff --git a/arm9/global.inc b/arm9/global.inc index 1fc85f18..5700a247 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8532,3 +8532,8 @@ .extern FUN_0202FB58 .extern FUN_0202FB80 .extern FUN_0202FE2C +.extern FUN_0202FEEC +.extern FUN_02030074 +.extern FUN_020303F4 +.extern FUN_020304D4 +.extern FUN_020304F0 diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c index b0a249cf..162761a8 100644 --- a/arm9/src/unk_0202F150_c.c +++ b/arm9/src/unk_0202F150_c.c @@ -14,8 +14,8 @@ struct // u8 unk01; // }; -u8 UNK_02105D58 = 4; -u8 UNK_02105D59 = 4; +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern int FUN_0202D858(u16 param0); @@ -796,6 +796,7 @@ extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_0202FE2C(int param0); #ifdef NONMATCHING THUMB_FUNC u32 FUN_0202FE2C(int param0) { @@ -923,4 +924,367 @@ _0202FEDE: #endif +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(void *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern void FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} \ No newline at end of file -- cgit v1.2.3 From f37e674e468b37a6f30abdbdf4f68ead98c3afb1 Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 9 Apr 2021 13:41:02 -0400 Subject: scrcmd_25: Fix naming --- arm9/asm/unk_02038C78.s | 8 ++++---- arm9/global.inc | 8 ++++---- arm9/src/scrcmd_25.c | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'arm9') diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index a4b7aa12..dbdfba49 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -724,10 +724,10 @@ gScriptCmdTable: ; 0x020F355C .word FUN_0203EB48 .word FUN_0203EB88 .word FUN_02042D1C - .word ScrCmd_Unk02EF - .word ScrCmd_Unk02F0 - .word ScrCmd_Unk02F1 - .word ScrCmd_Unk02F2 + .word ScrCmd_Unk023F + .word ScrCmd_Unk0240 + .word ScrCmd_Unk0241 + .word ScrCmd_Unk0242 .word FUN_0203C5BC .word FUN_0203C614 .word FUN_0203C680 diff --git a/arm9/global.inc b/arm9/global.inc index bda86b74..084ddd40 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3412,10 +3412,10 @@ .extern FUN_02045F84 .extern FUN_02045F88 .extern FUN_02045FCC -.extern ScrCmd_Unk02EF -.extern ScrCmd_Unk02F0 -.extern ScrCmd_Unk02F1 -.extern ScrCmd_Unk02F2 +.extern ScrCmd_Unk023F +.extern ScrCmd_Unk0240 +.extern ScrCmd_Unk0241 +.extern ScrCmd_Unk0242 .extern FUN_02046030 .extern SavArray_Flags_sizeof .extern SavArray_Flags_init diff --git a/arm9/src/scrcmd_25.c b/arm9/src/scrcmd_25.c index e3638675..5124ad9a 100644 --- a/arm9/src/scrcmd_25.c +++ b/arm9/src/scrcmd_25.c @@ -1,26 +1,26 @@ #include "scrcmd.h" -THUMB_FUNC BOOL ScrCmd_Unk02EF(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk023F(struct ScriptContext * ctx) { #pragma unused(ctx) GF_ASSERT(FALSE); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F0(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0240(struct ScriptContext * ctx) { #pragma unused(ctx) GF_ASSERT(FALSE); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F1(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0241(struct ScriptContext * ctx) { #pragma unused(ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F2(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0242(struct ScriptContext * ctx) { #pragma unused(ctx) return FALSE; -- cgit v1.2.3 From 91ba9c6177680893e43d7f59a04858950aaf069a Mon Sep 17 00:00:00 2001 From: tgsm Date: Sat, 10 Apr 2021 00:24:56 -0400 Subject: Decompile scrcmd_23 --- arm9/asm/scrcmd_23.s | 483 ------------------------------------------------ arm9/asm/unk_02038C78.s | 32 ++-- arm9/global.inc | 32 ++-- arm9/src/scrcmd_23.c | 169 +++++++++++++++++ 4 files changed, 201 insertions(+), 515 deletions(-) delete mode 100644 arm9/asm/scrcmd_23.s create mode 100644 arm9/src/scrcmd_23.c (limited to 'arm9') diff --git a/arm9/asm/scrcmd_23.s b/arm9/asm/scrcmd_23.s deleted file mode 100644 index 3d38b510..00000000 --- a/arm9/asm/scrcmd_23.s +++ /dev/null @@ -1,483 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02045958 -FUN_02045958: ; 0x02045958 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r5, [r1, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02026CC4 - add r1, r6, #0x0 - bl FUN_02025D6C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_020459AC -FUN_020459AC: ; 0x020459AC - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_020459E8 -FUN_020459E8: ; 0x020459E8 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r5, [r1, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02026CC4 - add r1, r6, #0x0 - bl FUN_02025D94 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02045A3C -FUN_02045A3C: ; 0x02045A3C - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045A78 -FUN_02045A78: ; 0x02045A78 - push {r4-r6, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r5, [r1, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02026CC4 - add r1, r6, #0x0 - bl FUN_02026298 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02045ACC -FUN_02045ACC: ; 0x02045ACC - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045B08 -FUN_02045B08: ; 0x02045B08 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045B44 -FUN_02045B44: ; 0x02045B44 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045B80 -FUN_02045B80: ; 0x02045B80 - push {r3-r5, lr} - add r5, r0, #0x0 - add r1, r5, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r4, [r1, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r0, r4, #0x0 - bl FUN_02026CC4 - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02045BC8 -FUN_02045BC8: ; 0x02045BC8 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045C04 -FUN_02045C04: ; 0x02045C04 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045C40 -FUN_02045C40: ; 0x02045C40 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045C7C -FUN_02045C7C: ; 0x02045C7C - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r1, [r1, #0x0] - ldr r5, [r1, #0xc] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FUN_02026CC4 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl FUN_020260C4 - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02045CD4 -FUN_02045CD4: ; 0x02045CD4 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045D10 -FUN_02045D10: ; 0x02045D10 - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02045D4C -FUN_02045D4C: ; 0x02045D4C - push {r4, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r0, #0x0 - pop {r4, pc} - .balign 4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index dbdfba49..08416fc7 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -280,22 +280,22 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetItemPocketId .word ScrCmd_Unk0081 .word ScrCmd_Unk0082 - .word FUN_02045958 - .word FUN_020459AC - .word FUN_020459E8 - .word FUN_02045A3C - .word FUN_02045A78 - .word FUN_02045ACC - .word FUN_02045B08 - .word FUN_02045B44 - .word FUN_02045B80 - .word FUN_02045BC8 - .word FUN_02045C04 - .word FUN_02045C40 - .word FUN_02045C7C - .word FUN_02045CD4 - .word FUN_02045D10 - .word FUN_02045D4C + .word ScrCmd_Unk0083 + .word ScrCmd_Unk0084 + .word ScrCmd_Unk0085 + .word ScrCmd_Unk0086 + .word ScrCmd_Unk0087 + .word ScrCmd_Unk0088 + .word ScrCmd_Unk0089 + .word ScrCmd_Unk008A + .word ScrCmd_Unk008B + .word ScrCmd_Unk008C + .word ScrCmd_Unk008D + .word ScrCmd_Unk008E + .word ScrCmd_Unk008F + .word ScrCmd_Unk0090 + .word ScrCmd_Unk0091 + .word ScrCmd_Unk0092 .word FUN_0203B81C .word FUN_0203B85C .word FUN_0203B8A0 diff --git a/arm9/global.inc b/arm9/global.inc index 084ddd40..9df9973e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3386,22 +3386,22 @@ .extern ScrCmd_GetItemPocketId .extern ScrCmd_Unk0081 .extern ScrCmd_Unk0082 -.extern FUN_02045958 -.extern FUN_020459AC -.extern FUN_020459E8 -.extern FUN_02045A3C -.extern FUN_02045A78 -.extern FUN_02045ACC -.extern FUN_02045B08 -.extern FUN_02045B44 -.extern FUN_02045B80 -.extern FUN_02045BC8 -.extern FUN_02045C04 -.extern FUN_02045C40 -.extern FUN_02045C7C -.extern FUN_02045CD4 -.extern FUN_02045D10 -.extern FUN_02045D4C +.extern ScrCmd_Unk0083 +.extern ScrCmd_Unk0084 +.extern ScrCmd_Unk0085 +.extern ScrCmd_Unk0086 +.extern ScrCmd_Unk0087 +.extern ScrCmd_Unk0088 +.extern ScrCmd_Unk0089 +.extern ScrCmd_Unk008A +.extern ScrCmd_Unk008B +.extern ScrCmd_Unk008C +.extern ScrCmd_Unk008D +.extern ScrCmd_Unk008E +.extern ScrCmd_Unk008F +.extern ScrCmd_Unk0090 +.extern ScrCmd_Unk0091 +.extern ScrCmd_Unk0092 .extern FUN_02045D88 .extern FUN_02045DD0 .extern FUN_02045E1C diff --git a/arm9/src/scrcmd_23.c b/arm9/src/scrcmd_23.c new file mode 100644 index 00000000..0c9907a5 --- /dev/null +++ b/arm9/src/scrcmd_23.c @@ -0,0 +1,169 @@ +#include "scrcmd.h" + +extern BOOL FUN_02025D6C(void*, u16); +extern BOOL FUN_02025D94(void*, u16); +extern BOOL FUN_02026298(void*, u16); +extern void* FUN_02026CC4(struct SaveBlock2* sav2); +extern BOOL FUN_020260C4(void*, u16, u16); + +THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02025D6C(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02025D94(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02026298(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unused3 = FUN_02026CC4(sav2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk3 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_020260C4(unk3, unk1, unk2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0092(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} -- cgit v1.2.3 From 405d77ac981ce6ece1c529ab153543d118014661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:26:38 +0200 Subject: decomp finished --- arm9/arm9.lsf | 1 - arm9/asm/unk_0202F150.s | 1898 ------------------------------------ arm9/global.inc | 25 +- arm9/src/unk_0202F150.c | 2382 +++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0202F150_c.c | 1290 ------------------------ 5 files changed, 2383 insertions(+), 3213 deletions(-) delete mode 100644 arm9/asm/unk_0202F150.s create mode 100644 arm9/src/unk_0202F150.c delete mode 100644 arm9/src/unk_0202F150_c.c (limited to 'arm9') diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 7aad650f..05a905ee 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -127,7 +127,6 @@ Static arm9 Object unk_0202D8D0.o Object unk_0202DB14.o Object unk_0202E29C.o - Object unk_0202F150_c.o Object unk_0202F150.o Object unk_02031480.o Object unk_02031734.o diff --git a/arm9/asm/unk_0202F150.s b/arm9/asm/unk_0202F150.s deleted file mode 100644 index 802807f5..00000000 --- a/arm9/asm/unk_0202F150.s +++ /dev/null @@ -1,1898 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .bss - - - .section .data - - - - .text - - thumb_func_start FUN_02030674 -FUN_02030674: ; 0x02030674 - push {r3-r7, lr} - ldr r7, _02030798 ; =UNK_021C59F4 - mov r6, #0x0 - ldr r5, [r7, #0x4] - ldr r2, _0203079C ; =0x0000062C - add r4, r6, #0x0 - ldrb r0, [r5, r2] - cmp r0, #0x0 - beq _02030690 - sub r1, r2, #0x4 - ldrh r1, [r5, r1] - mov r3, #0xf0 - tst r3, r1 - bne _02030692 -_02030690: - b _02030794 -_02030692: - cmp r0, #0x2 - bne _020306D0 - mov r0, #0x20 - tst r0, r1 - beq _020306A4 - mov r0, #0x10 - orr r0, r6 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306A4: - mov r0, #0x10 - tst r0, r1 - beq _020306B2 - mov r0, #0x20 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306B2: - mov r0, #0x40 - tst r0, r1 - beq _020306C0 - mov r0, #0x80 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306C0: - mov r0, #0x80 - tst r0, r1 - beq _0203077E - mov r0, #0x40 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - b _0203077E -_020306D0: - add r0, r2, #0x2 - ldrh r0, [r5, r0] - cmp r0, #0x0 - beq _020306F2 - add r4, r0, #0x0 - add r0, r2, #0x1 - ldrsb r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r2, #0x1 - strb r1, [r5, r0] - ldr r1, [r7, #0x4] - ldrsb r0, [r1, r0] - cmp r0, #0x0 - bge _0203077E - add r0, r2, #0x2 - strh r6, [r1, r0] - b _0203077E -_020306F2: - add r0, r2, #0x0 - sub r0, #0x34 - add r6, r5, r0 - sub r2, #0x34 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r5, r2] - ldr r3, [r6, #0x4] - bl _ll_mul - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r6, #0x10] - ldr r1, [r6, #0x14] - add r0, r0, r3 - adc r1, r2 - ldr r2, _020307A0 ; =0x000005F8 - str r0, [r5, r2] - mov r2, #0x0 - str r1, [r6, #0x4] - lsr r0, r1, #0x1e - lsl r1, r2, #0x2 - orr r1, r0 - cmp r1, #0x3 - bhi _02030746 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02030730: ; jump table (using 16-bit offset) - .short _02030738 - _02030730 - 2; case 0 - .short _0203073C - _02030730 - 2; case 1 - .short _02030740 - _02030730 - 2; case 2 - .short _02030744 - _02030730 - 2; case 3 -_02030738: - mov r4, #0x20 - b _02030746 -_0203073C: - mov r4, #0x10 - b _02030746 -_02030740: - mov r4, #0x40 - b _02030746 -_02030744: - mov r4, #0x80 -_02030746: - ldr r0, _02030798 ; =UNK_021C59F4 - ldr r5, [r0, #0x4] - ldr r0, _020307A0 ; =0x000005F8 - add r6, r5, r0 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - bl _ll_mul - ldr r3, [r6, #0x10] - ldr r2, [r6, #0x14] - add r0, r3, r0 - adc r2, r1 - ldr r1, _020307A0 ; =0x000005F8 - mov r3, #0x0 - str r0, [r5, r1] - str r2, [r6, #0x4] - lsr r0, r2, #0x1c - lsl r2, r3, #0x4 - orr r2, r0 - add r0, r1, #0x0 - add r0, #0x35 - strb r2, [r5, r0] - ldr r0, _02030798 ; =UNK_021C59F4 - add r1, #0x36 - ldr r0, [r0, #0x4] - strh r4, [r0, r1] -_0203077E: - ldr r2, _02030798 ; =UNK_021C59F4 - ldr r1, _020307A4 ; =0x00000628 - ldr r5, [r2, #0x4] - mov r0, #0xf0 - ldrh r3, [r5, r1] - bic r3, r0 - strh r3, [r5, r1] - ldr r2, [r2, #0x4] - ldrh r0, [r2, r1] - add r0, r0, r4 - strh r0, [r2, r1] -_02030794: - pop {r3-r7, pc} - nop -_02030798: .word UNK_021C59F4 -_0203079C: .word 0x0000062C -_020307A0: .word 0x000005F8 -_020307A4: .word 0x00000628 - - thumb_func_start FUN_020307A8 -FUN_020307A8: ; 0x020307A8 - ldr r0, _020307B4 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020307B8 ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307B4: .word UNK_021C59F4 -_020307B8: .word 0x0000062C - - thumb_func_start FUN_020307BC -FUN_020307BC: ; 0x020307BC - ldr r0, _020307C8 ; =UNK_021C59F4 - mov r2, #0x2 - ldr r1, [r0, #0x4] - ldr r0, _020307CC ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307C8: .word UNK_021C59F4 -_020307CC: .word 0x0000062C - - thumb_func_start FUN_020307D0 -FUN_020307D0: ; 0x020307D0 - ldr r0, _020307DC ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _020307E0 ; =0x0000062C - strb r2, [r1, r0] - bx lr - .balign 4 -_020307DC: .word UNK_021C59F4 -_020307E0: .word 0x0000062C - - thumb_func_start FUN_020307E4 -FUN_020307E4: ; 0x020307E4 - push {r4-r7} - ldr r4, _02030868 ; =UNK_021C59F4 - lsl r6, r1, #0x1 - ldr r2, [r4, #0x4] - mov r5, #0x0 - add r3, r2, r6 - mov r2, #0x61 - lsl r2, r2, #0x4 - strh r5, [r3, r2] - ldrb r5, [r0, #0x0] - mov r3, #0x10 - add r7, r5, #0x0 - and r7, r3 - cmp r7, #0x10 - bne _02030860 - mov r7, #0xc - and r5, r7 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - bne _0203081A - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x40 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203081A: - cmp r5, #0x4 - bne _0203082C - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x80 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203082C: - cmp r5, #0x8 - bne _0203083E - ldr r3, [r4, #0x4] - add r4, r3, r2 - ldrh r3, [r4, r6] - mov r2, #0x20 - orr r2, r3 - strh r2, [r4, r6] - b _0203084C -_0203083E: - cmp r5, #0xc - bne _0203084C - ldr r4, [r4, #0x4] - add r4, r4, r2 - ldrh r2, [r4, r6] - orr r2, r3 - strh r2, [r4, r6] -_0203084C: - ldrb r0, [r0, #0x0] - asr r2, r0, #0x5 - mov r0, #0x7 - and r2, r0 - ldr r0, _02030868 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r1, r0, r1 - mov r0, #0x62 - lsl r0, r0, #0x4 - strb r2, [r1, r0] -_02030860: - mov r0, #0x1 - pop {r4-r7} - bx lr - nop -_02030868: .word UNK_021C59F4 - - thumb_func_start FUN_0203086C -FUN_0203086C: ; 0x0203086C - bx lr - .balign 4 - - thumb_func_start FUN_02030870 -FUN_02030870: ; 0x02030870 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _0203091C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030920 ; =0x0000062A - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02030884 - mov r0, #0x0 - pop {r4, pc} -_02030884: - bl FUN_02030FE0 - cmp r0, #0x0 - bne _02030890 - mov r0, #0x0 - pop {r4, pc} -_02030890: - ldr r0, _0203091C ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - ldr r0, _02030924 ; =0x00000681 - ldrb r1, [r2, r0] - cmp r1, #0x0 - beq _020308A0 - sub r1, r1, #0x1 - strb r1, [r2, r0] -_020308A0: - ldr r1, _0203091C ; =UNK_021C59F4 - ldr r0, _02030928 ; =0x00000628 - ldr r2, [r1, #0x4] - mov r3, #0x40 - ldrh r2, [r2, r0] - tst r3, r2 - beq _020308C0 - ldrb r3, [r4, #0x0] - mov r2, #0x10 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308C0: - mov r3, #0x80 - tst r3, r2 - beq _020308D8 - ldrb r3, [r4, #0x0] - mov r2, #0x14 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308D8: - mov r3, #0x20 - tst r3, r2 - beq _020308F0 - ldrb r3, [r4, #0x0] - mov r2, #0x18 - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] - b _02030906 -_020308F0: - mov r3, #0x10 - tst r2, r3 - beq _02030906 - ldrb r3, [r4, #0x0] - mov r2, #0x1c - add r0, #0x59 - orr r2, r3 - strb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - mov r2, #0x8 - strb r2, [r1, r0] -_02030906: - ldr r0, _0203091C ; =UNK_021C59F4 - ldrb r2, [r4, #0x0] - ldr r1, [r0, #0x4] - ldr r0, _0203092C ; =0x0000062B - ldrb r0, [r1, r0] - lsl r0, r0, #0x5 - orr r0, r2 - strb r0, [r4, #0x0] - mov r0, #0x0 - pop {r4, pc} - nop -_0203091C: .word UNK_021C59F4 -_02030920: .word 0x0000062A -_02030924: .word 0x00000681 -_02030928: .word 0x00000628 -_0203092C: .word 0x0000062B - - thumb_func_start FUN_02030930 -FUN_02030930: ; 0x02030930 - push {r3-r5, lr} - sub sp, #0x8 - add r4, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - add r5, r0, #0x0 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - ldr r0, _020309F0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _020309F4 ; =0x00000684 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030960 - mov r0, #0x0 - b _02030962 -_02030960: - mov r0, #0x1 -_02030962: - strb r0, [r4, #0x0] - bl FUN_0202FA28 - cmp r0, #0x0 - bne _02030972 - add r0, r4, #0x0 - bl FUN_02030870 -_02030972: - ldr r1, _020309F0 ; =UNK_021C59F4 - ldr r0, _020309F4 ; =0x00000684 - ldr r2, [r1, #0x4] - mov r3, #0x0 - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - ldr r0, _020309F8 ; =0x0000054C - add r0, r1, r0 - bl FUN_0202D4E4 - cmp r0, #0x0 - beq _0203099E - ldrb r1, [r4, #0x0] - mov r0, #0x2 - orr r0, r1 - strb r0, [r4, #0x0] - ldrb r0, [r4, #0x0] - cmp r0, #0x2 - bne _020309E8 - add sp, #0x8 - mov r0, #0x0 - pop {r3-r5, pc} -_0203099E: - sub r0, r5, #0x1 - str r0, [sp, #0x4] - add r0, r4, #0x1 - str r0, [sp, #0x0] - ldr r0, _020309F0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020309F8 ; =0x0000054C - add r0, r1, r0 - add r1, sp, #0x0 - bl FUN_0202D760 - cmp r0, #0x0 - bne _020309C4 - ldr r0, _020309F0 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _020309F4 ; =0x00000684 - strb r2, [r1, r0] -_020309C4: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _020309E8 - ldr r2, _020309F0 ; =UNK_021C59F4 - ldr r1, _020309FC ; =0x0000065E - ldr r3, [r2, #0x4] - ldrb r0, [r3, r1] - add r0, r0, #0x1 - strb r0, [r3, r1] - ldr r2, [r2, #0x4] - ldrb r0, [r4, #0x0] - ldrb r1, [r2, r1] - lsl r2, r1, #0x4 - mov r1, #0xf0 - and r1, r2 - orr r0, r1 - strb r0, [r4, #0x0] -_020309E8: - mov r0, #0x1 - add sp, #0x8 - pop {r3-r5, pc} - nop -_020309F0: .word UNK_021C59F4 -_020309F4: .word 0x00000684 -_020309F8: .word 0x0000054C -_020309FC: .word 0x0000065E - - thumb_func_start FUN_02030A00 -FUN_02030A00: ; 0x02030A00 - push {r4, lr} - sub sp, #0x8 - add r4, r0, #0x0 - mov r0, #0xb - strb r0, [r4, #0x0] - ldr r0, _02030A6C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030A1A - mov r0, #0x0 - b _02030A1C -_02030A1A: - mov r0, #0x1 -_02030A1C: - strb r0, [r4, #0x1] - bl FUN_0202CB8C - asr r1, r0, #0x8 - strb r1, [r4, #0x2] - strb r0, [r4, #0x3] - mov r0, #0xbb - str r0, [sp, #0x4] - add r0, r4, #0x5 - str r0, [sp, #0x0] - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030A74 ; =0x0000056C - add r0, r1, r0 - add r1, sp, #0x0 - bl FUN_0202D760 - cmp r0, #0x0 - beq _02030A5A - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - strb r2, [r1, r0] - ldr r1, [sp, #0x4] - mov r0, #0xbb - sub r0, r0, r1 - add sp, #0x8 - strb r0, [r4, #0x4] - pop {r4, pc} -_02030A5A: - ldr r0, _02030A6C ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _02030A70 ; =0x00000685 - strb r2, [r1, r0] - mov r0, #0xbb - strb r0, [r4, #0x4] - add sp, #0x8 - pop {r4, pc} - .balign 4 -_02030A6C: .word UNK_021C59F4 -_02030A70: .word 0x00000685 -_02030A74: .word 0x0000056C - - thumb_func_start FUN_02030A78 -FUN_02030A78: ; 0x02030A78 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030A9C - bl FUN_02031280 - cmp r0, #0x0 - bne _02030A9C - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030A9C: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02030AD4 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030AD8 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030AC0 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030AC0: - bl FUN_02033534 - cmp r0, #0xa - bne _02030ACC - bl FUN_02031454 -_02030ACC: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02030AD4: .word UNK_021C59F4 -_02030AD8: .word 0x0000054C - - thumb_func_start FUN_02030ADC -FUN_02030ADC: ; 0x02030ADC - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030B00 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030B00 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B00: - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02030B34 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030B38 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030B22 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030B22: - bl FUN_02033534 - cmp r0, #0xa - bne _02030B2E - bl FUN_02031454 -_02030B2E: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 -_02030B34: .word UNK_021C59F4 -_02030B38: .word 0x0000054C - - thumb_func_start FUN_02030B3C -FUN_02030B3C: ; 0x02030B3C - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02030B58 - bl ErrorHandling - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B58: - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030B70 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030B70 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030B70: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030B86 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02030A78 - add sp, #0x8 - pop {r4-r6, pc} -_02030B86: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02030BBC ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030BC0 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030BAA - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030BAA: - bl FUN_02033534 - cmp r0, #0xa - bne _02030BB6 - bl FUN_02031454 -_02030BB6: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 -_02030BBC: .word UNK_021C59F4 -_02030BC0: .word 0x0000056C - - thumb_func_start FUN_02030BC4 -FUN_02030BC4: ; 0x02030BC4 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02030BE0 - bl FUN_02031454 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030BE0: - mov r0, #0x0 - bl FUN_02030E7C - cmp r0, #0x0 - bne _02030BF8 - bl FUN_02031280 - cmp r0, #0x0 - bne _02030BF8 - add sp, #0x8 - mov r0, #0x0 - pop {r4-r6, pc} -_02030BF8: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02030C0E - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_02030ADC - add sp, #0x8 - pop {r4-r6, pc} -_02030C0E: - mov r0, #0x1 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02030C44 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02030C48 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - cmp r0, #0x0 - beq _02030C30 - add sp, #0x8 - mov r0, #0x1 - pop {r4-r6, pc} -_02030C30: - bl FUN_02033534 - cmp r0, #0xa - bne _02030C3C - bl FUN_02031454 -_02030C3C: - mov r0, #0x0 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02030C44: .word UNK_021C59F4 -_02030C48: .word 0x0000056C - - thumb_func_start FUN_02030C4C -FUN_02030C4C: ; 0x02030C4C - ldr r3, _02030C54 ; =FUN_02030BC4 - mov r2, #0x0 - bx r3 - nop -_02030C54: .word FUN_02030BC4 - - thumb_func_start FUN_02030C58 -FUN_02030C58: ; 0x02030C58 - ldr r0, _02030C64 ; =UNK_021C59F4 - ldr r3, _02030C68 ; =FUN_0202D498 - ldr r1, [r0, #0x4] - ldr r0, _02030C6C ; =0x00000464 - add r0, r1, r0 - bx r3 - .balign 4 -_02030C64: .word UNK_021C59F4 -_02030C68: .word FUN_0202D498 -_02030C6C: .word 0x00000464 - - thumb_func_start FUN_02030C70 -FUN_02030C70: ; 0x02030C70 - push {r4, lr} - ldr r4, [sp, #0x8] - bl FUN_0202D934 - mov r0, #0xee - strb r0, [r4, #0xa] - ldr r0, _02030C88 ; =0x0000FFFF - strh r0, [r4, #0x8] - mov r0, #0x0 - str r0, [r4, #0x4] - str r0, [r4, #0x0] - pop {r4, pc} - .balign 4 -_02030C88: .word 0x0000FFFF - - thumb_func_start FUN_02030C8C -FUN_02030C8C: ; 0x02030C8C - push {r4-r7, lr} - sub sp, #0x14 - add r6, r0, #0x0 - str r1, [sp, #0x4] - str r2, [sp, #0x8] - ldr r5, [sp, #0x28] - bl FUN_0202D478 - cmp r0, #0x0 - beq _02030D94 -_02030CA0: - ldrb r7, [r5, #0xa] - cmp r7, #0xee - bne _02030CB2 - add r0, r6, #0x0 - bl FUN_0202D41C - add r7, r0, #0x0 - cmp r7, #0xee - beq _02030D8A -_02030CB2: - mov r0, #0x4 - ldrsh r0, [r6, r0] - strb r7, [r5, #0xa] - ldrh r4, [r5, #0x8] - str r0, [sp, #0x10] - ldr r0, _02030D98 ; =0x0000FFFF - cmp r4, r0 - bne _02030D06 - add r0, r7, #0x0 - bl FUN_0202D9A0 - add r4, r0, #0x0 - ldr r0, _02030D9C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030DA0 ; =0x00000689 - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030D94 - ldr r0, _02030D98 ; =0x0000FFFF - cmp r4, r0 - bne _02030D04 - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, #0x1 - bge _02030CEE - ldr r0, [sp, #0x10] - add sp, #0x14 - strh r0, [r6, #0x4] - pop {r4-r7, pc} -_02030CEE: - add r0, r6, #0x0 - bl FUN_0202D41C - lsl r4, r0, #0x8 - add r0, r6, #0x0 - bl FUN_0202D41C - add r4, r4, r0 - mov r0, #0x4 - ldrsh r0, [r6, r0] - str r0, [sp, #0x10] -_02030D04: - strh r4, [r5, #0x8] -_02030D06: - add r0, r7, #0x0 - bl FUN_0202DA04 - cmp r0, #0x0 - beq _02030D5E - ldr r0, [r5, #0x4] - cmp r0, #0x0 - bne _02030D22 - ldrh r2, [r5, #0x8] - ldr r1, [sp, #0x4] - add r0, r7, #0x0 - bl FUN_0202DA40 - str r0, [r5, #0x4] -_02030D22: - ldr r2, [r5, #0x0] - ldr r1, [sp, #0x8] - add r0, r6, #0x0 - sub r2, r4, r2 - bl FUN_0202D400 - ldr r2, [r5, #0x4] - str r0, [sp, #0xc] - cmp r2, #0x0 - beq _02030D42 - ldr r1, [r5, #0x0] - ldr r0, [sp, #0x8] - add r1, r2, r1 - ldr r2, [sp, #0xc] - bl MI_CpuCopy8 -_02030D42: - ldr r1, [r5, #0x0] - ldr r0, [sp, #0xc] - add r0, r1, r0 - str r0, [r5, #0x0] - cmp r0, r4 - blt _02030D8A - str r5, [sp, #0x0] - ldr r0, [sp, #0x4] - ldr r3, [r5, #0x4] - add r1, r7, #0x0 - add r2, r4, #0x0 - bl FUN_02030C70 - b _02030D8A -_02030D5E: - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, r4 - blt _02030D82 - ldr r1, [sp, #0x8] - add r0, r6, #0x0 - add r2, r4, #0x0 - bl FUN_0202D400 - ldr r0, [sp, #0x4] - ldr r3, [sp, #0x8] - add r1, r7, #0x0 - add r2, r4, #0x0 - str r5, [sp, #0x0] - bl FUN_02030C70 - b _02030D8A -_02030D82: - ldr r0, [sp, #0x10] - add sp, #0x14 - strh r0, [r6, #0x4] - pop {r4-r7, pc} -_02030D8A: - add r0, r6, #0x0 - bl FUN_0202D478 - cmp r0, #0x0 - bne _02030CA0 -_02030D94: - add sp, #0x14 - pop {r4-r7, pc} - .balign 4 -_02030D98: .word 0x0000FFFF -_02030D9C: .word UNK_021C59F4 -_02030DA0: .word 0x00000689 - - thumb_func_start FUN_02030DA4 -FUN_02030DA4: ; 0x02030DA4 - push {r3, lr} - ldr r0, _02030DF0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030DEE - ldr r0, _02030DF4 ; =0x0000068B - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030DEE - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - bl FUN_0202D4BC - ldr r0, _02030DF0 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - mov r0, #0x47 - lsl r0, r0, #0x4 - add r0, r1, r0 - bl FUN_0202D478 - cmp r0, #0x0 - ble _02030DEE - ldr r0, _02030DF0 ; =UNK_021C59F4 - mov r2, #0x47 - ldr r3, [r0, #0x4] - ldr r0, _02030DF8 ; =0x000005EC - lsl r2, r2, #0x4 - add r0, r3, r0 - str r0, [sp, #0x0] - add r0, r3, r2 - sub r2, #0x10 - ldr r2, [r3, r2] - mov r1, #0x0 - mov r3, #0x1 - bl FUN_02030C8C -_02030DEE: - pop {r3, pc} - .balign 4 -_02030DF0: .word UNK_021C59F4 -_02030DF4: .word 0x0000068B -_02030DF8: .word 0x000005EC - - thumb_func_start FUN_02030DFC -FUN_02030DFC: ; 0x02030DFC - push {r3-r7, lr} - ldr r0, _02030E6C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030E68 - ldr r0, _02030E70 ; =0x0000068B - ldrb r0, [r1, r0] - cmp r0, #0x0 - bne _02030E68 - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r7, r0, #0x1 - mov r4, #0x0 - cmp r7, #0x0 - ble _02030E68 - ldr r6, _02030E6C ; =UNK_021C59F4 - add r5, r4, #0x0 -_02030E26: - ldr r1, [r6, #0x4] - ldr r0, _02030E74 ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r5 - bl FUN_0202D4BC - ldr r1, [r6, #0x4] - ldr r0, _02030E74 ; =0x000004E8 - add r0, r1, r0 - add r0, r0, r5 - bl FUN_0202D478 - cmp r0, #0x0 - ble _02030E60 - ldr r3, [r6, #0x4] - ldr r0, _02030E78 ; =0x0000058C - mov r2, #0x46 - add r0, r3, r0 - add r0, r0, r5 - str r0, [sp, #0x0] - ldr r0, _02030E74 ; =0x000004E8 - lsl r2, r2, #0x4 - add r0, r3, r0 - ldr r2, [r3, r2] - add r0, r0, r5 - add r1, r4, #0x0 - mov r3, #0x0 - bl FUN_02030C8C -_02030E60: - add r4, r4, #0x1 - add r5, #0xc - cmp r4, r7 - blt _02030E26 -_02030E68: - pop {r3-r7, pc} - nop -_02030E6C: .word UNK_021C59F4 -_02030E70: .word 0x0000068B -_02030E74: .word 0x000004E8 -_02030E78: .word 0x0000058C - - thumb_func_start FUN_02030E7C -FUN_02030E7C: ; 0x02030E7C - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - bne _02030E8C - mov r0, #0x0 - pop {r4, pc} -_02030E8C: - bl FUN_02033534 - cmp r0, #0x13 - blt _02030EC0 - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030F18 ; =0x00000687 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02030EBC - bl MOD04_021D8018 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _02030EBC - cmp r4, #0x0 - bne _02030EB4 - mov r0, #0x1 - pop {r4, pc} -_02030EB4: - cmp r4, #0x1 - bne _02030EBC - mov r0, #0x1 - pop {r4, pc} -_02030EBC: - mov r0, #0x0 - pop {r4, pc} -_02030EC0: - bl FUN_02030F40 - cmp r0, #0x0 - bne _02030ECC - mov r0, #0x0 - pop {r4, pc} -_02030ECC: - bl FUN_0202CBD4 - cmp r0, #0x4 - beq _02030ED8 - mov r0, #0x0 - pop {r4, pc} -_02030ED8: - bl FUN_02031190 - cmp r4, r0 - bne _02030EE4 - mov r0, #0x1 - pop {r4, pc} -_02030EE4: - bl FUN_02031190 - cmp r0, #0x0 - bne _02030EFE - bl FUN_0202CB8C - mov r1, #0x1 - add r2, r1, #0x0 - lsl r2, r4 - tst r0, r2 - beq _02030F10 - add r0, r1, #0x0 - pop {r4, pc} -_02030EFE: - ldr r0, _02030F14 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02030F1C ; =0x0000065C - ldrh r2, [r1, r0] - mov r0, #0x1 - add r1, r0, #0x0 - lsl r1, r4 - tst r1, r2 - bne _02030F12 -_02030F10: - mov r0, #0x0 -_02030F12: - pop {r4, pc} - .balign 4 -_02030F14: .word UNK_021C59F4 -_02030F18: .word 0x00000687 -_02030F1C: .word 0x0000065C - - thumb_func_start FUN_02030F20 -FUN_02030F20: ; 0x02030F20 - push {r3-r5, lr} - mov r4, #0x0 - add r5, r4, #0x0 -_02030F26: - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _02030F34 - add r4, r4, #0x1 -_02030F34: - add r5, r5, #0x1 - cmp r5, #0x8 - blt _02030F26 - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02030F40 -FUN_02030F40: ; 0x02030F40 - push {r3, lr} - ldr r0, _02030F5C ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _02030F56 - bl FUN_02033534 - cmp r0, #0x13 - blt _02030F56 - mov r0, #0x1 - pop {r3, pc} -_02030F56: - bl FUN_0202EDF8 - pop {r3, pc} - .balign 4 -_02030F5C: .word UNK_021C59F4 - - thumb_func_start FUN_02030F60 -FUN_02030F60: ; 0x02030F60 - ldr r1, _02030F6C ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _02030F70 ; =0x0000062B - strb r0, [r2, r1] - bx lr - nop -_02030F6C: .word UNK_021C59F4 -_02030F70: .word 0x0000062B - - thumb_func_start FUN_02030F74 -FUN_02030F74: ; 0x02030F74 - ldr r1, _02030F84 ; =UNK_021C59F4 - ldr r1, [r1, #0x4] - add r1, r1, r0 - mov r0, #0x62 - lsl r0, r0, #0x4 - ldrb r0, [r1, r0] - bx lr - nop -_02030F84: .word UNK_021C59F4 - - thumb_func_start FUN_02030F88 -FUN_02030F88: ; 0x02030F88 - ldr r1, _02030FA4 ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - cmp r2, #0x0 - bne _02030F94 - mov r0, #0x0 - bx lr -_02030F94: - mov r1, #0x61 - lsl r1, r1, #0x4 - add r3, r2, r1 - lsl r2, r0, #0x1 - ldrh r0, [r3, r2] - mov r1, #0x0 - strh r1, [r3, r2] - bx lr - .balign 4 -_02030FA4: .word UNK_021C59F4 - - thumb_func_start FUN_02030FA8 -FUN_02030FA8: ; 0x02030FA8 - ldr r0, _02030FC0 ; =UNK_021C59F4 - ldr r3, [r0, #0x4] - cmp r3, #0x0 - beq _02030FBC - ldr r1, _02030FC4 ; =0x00000628 - mov r0, #0x2 - ldrh r2, [r3, r1] - lsl r0, r0, #0xe - orr r0, r2 - strh r0, [r3, r1] -_02030FBC: - bx lr - nop -_02030FC0: .word UNK_021C59F4 -_02030FC4: .word 0x00000628 - - thumb_func_start FUN_02030FC8 -FUN_02030FC8: ; 0x02030FC8 - ldr r0, _02030FD8 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _02030FD6 - ldr r0, _02030FDC ; =0x00000628 - mov r1, #0x0 - strh r1, [r2, r0] -_02030FD6: - bx lr - .balign 4 -_02030FD8: .word UNK_021C59F4 -_02030FDC: .word 0x00000628 - - thumb_func_start FUN_02030FE0 -FUN_02030FE0: ; 0x02030FE0 - ldr r0, _02030FF8 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _02030FF4 - ldr r0, _02030FFC ; =0x00000628 - ldrh r1, [r1, r0] - mov r0, #0x2 - lsl r0, r0, #0xe - and r0, r1 - bx lr -_02030FF4: - mov r0, #0x1 - bx lr - .balign 4 -_02030FF8: .word UNK_021C59F4 -_02030FFC: .word 0x00000628 - - thumb_func_start FUN_02031000 -FUN_02031000: ; 0x02031000 - push {r4-r6, lr} - sub sp, #0x8 - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r2, #0x0 - bl FUN_0202FA28 - cmp r0, #0x1 - bne _02031030 - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02031050 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031054 ; =0x0000054C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r4-r6, pc} -_02031030: - mov r0, #0x1 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - ldr r0, _02031050 ; =UNK_021C59F4 - add r2, r4, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031058 ; =0x0000056C - add r3, r6, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r4-r6, pc} - nop -_02031050: .word UNK_021C59F4 -_02031054: .word 0x0000054C -_02031058: .word 0x0000056C - - thumb_func_start FUN_0203105C -FUN_0203105C: ; 0x0203105C - push {r3-r5, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x4] - ldr r0, _02031080 ; =UNK_021C59F4 - add r4, r1, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031084 ; =0x0000054C - add r3, r2, #0x0 - add r0, r1, r0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl FUN_0202D684 - add sp, #0x8 - pop {r3-r5, pc} - .balign 4 -_02031080: .word UNK_021C59F4 -_02031084: .word 0x0000054C - - thumb_func_start FUN_02031088 -FUN_02031088: ; 0x02031088 - push {r3, lr} - ldr r0, _02031100 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _020310FC - ldr r1, _02031104 ; =0x0000067B - ldrb r0, [r2, r1] - cmp r0, #0x1 - beq _020310A0 - cmp r0, #0x3 - beq _020310D8 - pop {r3, pc} -_020310A0: - bl FUN_0202FA28 - cmp r0, #0x1 - bne _020310B8 - ldr r1, _02031100 ; =UNK_021C59F4 - mov r0, #0xb - ldr r2, [r1, #0x4] - ldr r1, _02031108 ; =0x0000067C - add r1, r2, r1 - bl FUN_020311D0 - b _020310C8 -_020310B8: - ldr r1, _02031100 ; =UNK_021C59F4 - mov r0, #0xb - ldr r2, [r1, #0x4] - ldr r1, _02031108 ; =0x0000067C - add r1, r2, r1 - mov r2, #0x1 - bl FUN_02030BC4 -_020310C8: - cmp r0, #0x0 - beq _020310FC - ldr r0, _02031100 ; =UNK_021C59F4 - mov r2, #0x2 - ldr r1, [r0, #0x4] - ldr r0, _02031104 ; =0x0000067B - strb r2, [r1, r0] - pop {r3, pc} -_020310D8: - add r1, r1, #0x1 - mov r0, #0xc - add r1, r2, r1 - bl FUN_020311D0 - cmp r0, #0x0 - beq _020310FC - ldr r0, _02031100 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02031108 ; =0x0000067C - ldrb r0, [r1, r0] - bl FUN_0202F9E0 - ldr r0, _02031100 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _02031104 ; =0x0000067B - strb r2, [r1, r0] -_020310FC: - pop {r3, pc} - nop -_02031100: .word UNK_021C59F4 -_02031104: .word 0x0000067B -_02031108: .word 0x0000067C - - thumb_func_start FUN_0203110C -FUN_0203110C: ; 0x0203110C - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _0203112A - ldr r1, _0203112C ; =UNK_021C59F4 - ldr r0, _02031130 ; =0x0000067B - ldr r2, [r1, #0x4] - mov r3, #0x1 - strb r3, [r2, r0] - ldrb r2, [r4, #0x0] - ldr r1, [r1, #0x4] - add r0, r0, #0x1 - strb r2, [r1, r0] -_0203112A: - pop {r4, pc} - .balign 4 -_0203112C: .word UNK_021C59F4 -_02031130: .word 0x0000067B - - thumb_func_start FUN_02031134 -FUN_02031134: ; 0x02031134 - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - beq _02031152 - ldr r1, _02031154 ; =UNK_021C59F4 - ldrb r3, [r4, #0x0] - ldr r2, [r1, #0x4] - ldr r0, _02031158 ; =0x0000067C - strb r3, [r2, r0] - ldr r1, [r1, #0x4] - mov r2, #0x3 - sub r0, r0, #0x1 - strb r2, [r1, r0] -_02031152: - pop {r4, pc} - .balign 4 -_02031154: .word UNK_021C59F4 -_02031158: .word 0x0000067C - - thumb_func_start FUN_0203115C -FUN_0203115C: ; 0x0203115C - push {r4, lr} - add r4, r2, #0x0 - bl FUN_02031190 - cmp r0, #0x0 - bne _02031184 - ldr r0, _02031188 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _0203118C ; =0x0000067B - ldrb r0, [r1, r0] - cmp r0, #0x2 - bne _02031184 - ldrb r0, [r4, #0x0] - bl FUN_0202F9E0 - ldr r0, _02031188 ; =UNK_021C59F4 - mov r2, #0x0 - ldr r1, [r0, #0x4] - ldr r0, _0203118C ; =0x0000067B - strb r2, [r1, r0] -_02031184: - pop {r4, pc} - nop -_02031188: .word UNK_021C59F4 -_0203118C: .word 0x0000067B - - thumb_func_start FUN_02031190 -FUN_02031190: ; 0x02031190 - push {r3, lr} - ldr r0, _020311CC ; =UNK_021C59F4 - ldr r0, [r0, #0x4] - cmp r0, #0x0 - beq _020311C6 - bl FUN_02033534 - cmp r0, #0x13 - blt _020311B4 - bl MOD04_021D8018 - mov r1, #0x0 - mvn r1, r1 - cmp r0, r1 - beq _020311C6 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r3, pc} -_020311B4: - bl FUN_02031280 - cmp r0, #0x0 - beq _020311C0 - mov r0, #0x0 - pop {r3, pc} -_020311C0: - bl FUN_0202D19C - pop {r3, pc} -_020311C6: - mov r0, #0x0 - pop {r3, pc} - nop -_020311CC: .word UNK_021C59F4 - - thumb_func_start FUN_020311D0 -FUN_020311D0: ; 0x020311D0 - ldr r3, _020311D8 ; =FUN_02030ADC - mov r2, #0x0 - bx r3 - nop -_020311D8: .word FUN_02030ADC - - thumb_func_start FUN_020311DC -FUN_020311DC: ; 0x020311DC - ldr r3, _020311E4 ; =FUN_02030ADC - mov r1, #0x0 - add r2, r1, #0x0 - bx r3 - .balign 4 -_020311E4: .word FUN_02030ADC - - thumb_func_start FUN_020311E8 -FUN_020311E8: ; 0x020311E8 - ldr r3, _020311EC ; =FUN_0202EE24 - bx r3 - .balign 4 -_020311EC: .word FUN_0202EE24 - - thumb_func_start FUN_020311F0 -FUN_020311F0: ; 0x020311F0 - push {r3, lr} - bl FUN_02031280 - cmp r0, #0x0 - beq _020311FE - mov r0, #0x0 - pop {r3, pc} -_020311FE: - ldr r0, _02031220 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _0203121A - ldr r0, _02031224 ; =0x00000689 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _0203121A - mov r0, #0x1 - add r1, r0, #0x0 - bl FUN_020334E8 - mov r0, #0x1 - pop {r3, pc} -_0203121A: - bl FUN_0202EE60 - pop {r3, pc} - .balign 4 -_02031220: .word UNK_021C59F4 -_02031224: .word 0x00000689 - - thumb_func_start FUN_02031228 -FUN_02031228: ; 0x02031228 - push {r3, lr} - bl FUN_0202D858 - cmp r0, #0x5 - blo _02031236 - mov r0, #0xc - pop {r3, pc} -_02031236: - bl FUN_0202FA28 - cmp r0, #0x0 - bne _02031242 - mov r0, #0xc - pop {r3, pc} -_02031242: - mov r0, #0x26 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031248 -FUN_02031248: ; 0x02031248 - push {r3, lr} - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031258 -FUN_02031258: ; 0x02031258 - push {r3, lr} - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D884 - add r0, r0, #0x1 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02031268 -FUN_02031268: ; 0x02031268 - ldr r1, _02031278 ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - cmp r2, #0x0 - beq _02031274 - ldr r1, _0203127C ; =0x00000686 - strb r0, [r2, r1] -_02031274: - bx lr - nop -_02031278: .word UNK_021C59F4 -_0203127C: .word 0x00000686 - - thumb_func_start FUN_02031280 -FUN_02031280: ; 0x02031280 - ldr r0, _02031294 ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - cmp r1, #0x0 - beq _0203128E - ldr r0, _02031298 ; =0x00000686 - ldrb r0, [r1, r0] - bx lr -_0203128E: - mov r0, #0x0 - bx lr - nop -_02031294: .word UNK_021C59F4 -_02031298: .word 0x00000686 - - thumb_func_start FUN_0203129C -FUN_0203129C: ; 0x0203129C - push {r3, lr} - bl FUN_0202F03C - cmp r0, #0x0 - bne _020312B6 - bl FUN_02031190 - cmp r0, #0x0 - bne _020312B6 - mov r0, #0x2 - add r1, sp, #0x0 - bl FUN_02030C4C -_020312B6: - bl FUN_0202F05C - pop {r3, pc} - - thumb_func_start FUN_020312BC -FUN_020312BC: ; 0x020312BC - push {r3-r7, lr} - sub sp, #0x20 - add r4, r0, #0x0 - add r0, sp, #0x10 - add r1, sp, #0x4 - bl GF_RTC_CopyDateTime - ldr r0, _02031340 ; =gMain - ldr r6, [sp, #0x10] - mov r5, #0x0 - lsr r7, r6, #0x1c - lsl r5, r5, #0x4 - ldr r1, [sp, #0xc] - ldr r0, [r0, #0x2c] - lsl r6, r6, #0x4 - add r3, r1, r0 - ldr r0, [sp, #0x18] - orr r5, r7 - str r0, [sp, #0x0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r6, r0, r6 - ldr r0, _02031344 ; =0x00000000 - ldr r2, [sp, #0x8] - adc r0, r5 - lsr r5, r6, #0x1b - lsl r0, r0, #0x5 - orr r0, r5 - ldr r5, [sp, #0x0] - lsl r6, r6, #0x5 - add r6, r5, r6 - ldr r5, _02031344 ; =0x00000000 - adc r5, r0 - lsr r0, r6, #0x1b - lsl r5, r5, #0x5 - orr r5, r0 - lsl r0, r6, #0x5 - add r6, r1, r0 - ldr r1, _02031344 ; =0x00000000 - adc r1, r5 - lsr r0, r6, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - lsl r0, r6, #0x6 - add r5, r2, r0 - ldr r2, _02031344 ; =0x00000000 - adc r2, r1 - lsr r0, r5, #0x1a - lsl r1, r2, #0x6 - orr r1, r0 - lsl r0, r5, #0x6 - add r2, r3, r0 - ldr r0, _02031344 ; =0x00000000 - str r2, [r4, #0x0] - adc r0, r1 - str r0, [r4, #0x4] - ldr r1, _02031348 ; =0x6C078965 - ldr r0, _0203134C ; =0x5D588B65 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, _02031350 ; =0x00269EC3 - str r0, [r4, #0x10] - mov r0, #0x0 - str r0, [r4, #0x14] - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 -_02031340: .word gMain -_02031344: .word 0x00000000 -_02031348: .word 0x6C078965 -_0203134C: .word 0x5D588B65 -_02031350: .word 0x00269EC3 - - thumb_func_start FUN_02031354 -FUN_02031354: ; 0x02031354 - add r1, r0, #0x0 - ldr r0, _02031364 ; =UNK_021C59F4 - ldr r3, _02031368 ; =FUN_0202D830 - ldr r2, [r0, #0x4] - ldr r0, _0203136C ; =0x0000056C - add r0, r2, r0 - bx r3 - nop -_02031364: .word UNK_021C59F4 -_02031368: .word FUN_0202D830 -_0203136C: .word 0x0000056C - - thumb_func_start FUN_02031370 -FUN_02031370: ; 0x02031370 - ldr r0, _0203137C ; =UNK_021C59F4 - ldr r3, _02031380 ; =FUN_0202D4E4 - ldr r1, [r0, #0x4] - ldr r0, _02031384 ; =0x0000056C - add r0, r1, r0 - bx r3 - .balign 4 -_0203137C: .word UNK_021C59F4 -_02031380: .word FUN_0202D4E4 -_02031384: .word 0x0000056C - - thumb_func_start FUN_02031388 -FUN_02031388: ; 0x02031388 - ldr r0, _02031394 ; =UNK_021C59F4 - ldr r3, _02031398 ; =FUN_0202D4E4 - ldr r1, [r0, #0x4] - ldr r0, _0203139C ; =0x0000054C - add r0, r1, r0 - bx r3 - .balign 4 -_02031394: .word UNK_021C59F4 -_02031398: .word FUN_0202D4E4 -_0203139C: .word 0x0000054C - - thumb_func_start FUN_020313A0 -FUN_020313A0: ; 0x020313A0 - ldr r1, _020313AC ; =UNK_021C59F4 - ldr r2, [r1, #0x4] - ldr r1, _020313B0 ; =0x00000687 - strb r0, [r2, r1] - bx lr - nop -_020313AC: .word UNK_021C59F4 -_020313B0: .word 0x00000687 - - thumb_func_start FUN_020313B4 -FUN_020313B4: ; 0x020313B4 - ldr r2, _020313C4 ; =UNK_021C59F4 - ldr r2, [r2, #0x4] - cmp r2, #0x0 - beq _020313C2 - add r2, r2, r1 - ldr r1, _020313C8 ; =0x00000677 - strb r0, [r2, r1] -_020313C2: - bx lr - .balign 4 -_020313C4: .word UNK_021C59F4 -_020313C8: .word 0x00000677 - - thumb_func_start FUN_020313CC -FUN_020313CC: ; 0x020313CC - ldr r1, _020313E4 ; =UNK_021C59F4 - ldr r1, [r1, #0x4] - cmp r1, #0x0 - beq _020313E0 - add r2, r1, r0 - ldr r1, _020313E8 ; =0x00000677 - ldrb r1, [r2, r1] - cmp r1, #0xff - beq _020313E0 - add r0, r1, #0x0 -_020313E0: - bx lr - nop -_020313E4: .word UNK_021C59F4 -_020313E8: .word 0x00000677 - - thumb_func_start FUN_020313EC -FUN_020313EC: ; 0x020313EC - push {r3, lr} - bl FUN_02033534 - cmp r0, #0x13 - bge _020313FA - mov r0, #0x0 - pop {r3, pc} -_020313FA: - bl MOD04_021D8624 - pop {r3, pc} - - thumb_func_start FUN_02031400 -FUN_02031400: ; 0x02031400 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02033534 - cmp r0, #0x13 - blt _02031430 - ldr r2, _02031434 ; =UNK_021C59F4 - mov r1, #0x63 - ldr r0, [r2, #0x4] - lsl r1, r1, #0x4 - str r4, [r0, r1] - cmp r4, #0x0 - beq _02031430 - ldr r3, [r2, #0x4] - mov r4, #0x0 - add r0, r1, #0x4 - str r4, [r3, r0] - add r0, r1, #0x0 - ldr r3, [r2, #0x4] - add r0, #0x8 - str r4, [r3, r0] - ldr r0, [r2, #0x4] - add r1, #0xc - str r4, [r0, r1] -_02031430: - pop {r4, pc} - nop -_02031434: .word UNK_021C59F4 - - thumb_func_start FUN_02031438 -FUN_02031438: ; 0x02031438 - ldr r0, _0203144C ; =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, _02031450 ; =0x00000681 - ldrb r0, [r1, r0] - cmp r0, #0x0 - beq _02031448 - mov r0, #0x1 - bx lr -_02031448: - mov r0, #0x0 - bx lr - .balign 4 -_0203144C: .word UNK_021C59F4 -_02031450: .word 0x00000681 - - thumb_func_start FUN_02031454 -FUN_02031454: ; 0x02031454 - ldr r0, _02031460 ; =UNK_021C59F4 - mov r2, #0x1 - ldr r1, [r0, #0x4] - ldr r0, _02031464 ; =0x00000689 - strb r2, [r1, r0] - bx lr - .balign 4 -_02031460: .word UNK_021C59F4 -_02031464: .word 0x00000689 - - thumb_func_start FUN_02031468 -FUN_02031468: ; 0x02031468 - ldr r0, _02031478 ; =UNK_021C59F4 - ldr r2, [r0, #0x4] - cmp r2, #0x0 - beq _02031476 - ldr r0, _0203147C ; =0x0000068A - mov r1, #0x1 - strb r1, [r2, r0] -_02031476: - bx lr - .balign 4 -_02031478: .word UNK_021C59F4 -_0203147C: .word 0x0000068A diff --git a/arm9/global.inc b/arm9/global.inc index 5700a247..c28b0d53 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8513,27 +8513,4 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon -.extern FUN_02025484 -.extern FUN_02025490 -.extern FUN_020254A0 -.extern FUN_020254B4 -.extern UNK_021C59F4 -.extern UNK_02105D58 -.extern FUN_0202F150 -.extern FUN_0202F2F0 -.extern FUN_0202F5A4 -.extern FUN_0202F820 -.extern FUN_0202F8D4 -.extern FUN_0202F910 -.extern FUN_0202F918 -.extern FUN_0202F984 -.extern FUN_0202F9E0 -.extern FUN_0202FA28 -.extern FUN_0202FB58 -.extern FUN_0202FB80 -.extern FUN_0202FE2C -.extern FUN_0202FEEC -.extern FUN_02030074 -.extern FUN_020303F4 -.extern FUN_020304D4 -.extern FUN_020304F0 + diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c new file mode 100644 index 00000000..dd86b10d --- /dev/null +++ b/arm9/src/unk_0202F150.c @@ -0,0 +1,2382 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" +#include "main.h" +#include "RTC_api.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + + +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[2][38]; + u8 unk04c[264]; + u8 unk154[2][192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + s64 unk5F8[3]; + u16 unk610[8]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A; + u8 unk62B; + u8 unk62C; + s8 unk62D; + u16 unk62E; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B; + u8 unk67C; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689; + u8 unk68A; + u8 unk68B; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u8 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} + +extern u32 FUN_0202E66C(u32 param0, u32 param1); + +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E66C(param0, param1); + } + + FUN_0202F150(param0, param2); + + UNK_02105D58 = 4; + + return ret; +} + +extern u16 FUN_02031190(); +extern void FUN_02031088(); + + + + + +THUMB_FUNC void FUN_0202F984() { + u32 r4 = 0; + if (FUN_02031190() == 0 ) { + if (UNK_02105D59 != 4) { + return; + } + } else { + if (UNK_02105D58 != 4) { + return; + } + } + + if (UNK_021C59F4.unk04->unk67D == 2) { + UNK_021C59F4.unk04->unk67D = 0; + r4 = 1; + } + + if (UNK_021C59F4.unk04->unk67D == 3) { + UNK_021C59F4.unk04->unk67D = 1; + r4 = 1; + } + + if (r4 != 0) { + FUN_0202F5A4(); + } + FUN_02031088(); +} + + + + +THUMB_FUNC void FUN_0202F9E0(u32 param0) { + u8 r2 = UNK_021C59F4.unk04->unk67D; + if (r2 == 0 && param0 == 1) { + UNK_021C59F4.unk04->unk67D = 3; + } else if (r2 == 1 && param0 == 0) { + UNK_021C59F4.unk04->unk67D = 2; + } +} + + +THUMB_FUNC void FUN_0202FA10() { + FUN_0202F9E0(1); +} + + +THUMB_FUNC void FUN_0202FA1C() { + FUN_0202F9E0(0); +} + + + +THUMB_FUNC u8 FUN_0202FA28() { + u8 ret = UNK_021C59F4.unk04->unk67D; + if (ret == 2){ + return 1; + } else if (ret == 3) { + return 0; + } + + return ret; +} + +THUMB_FUNC u32 FUN_0202FA48() { + if (FUN_0202FA28() == 1) { + return 1; + } + + return 0; +} + +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u32 *param0); + +THUMB_FUNC void FUN_0202FA5C() { + u32 r4 = 0; + if (UNK_021C59F4.unk04 != 0) { + if (FUN_02033534() >= 0x13) { + MOD04_021D83C0(); + r4 = 1; + } else { + if (FUN_0202E784() != 0) { + r4 = 1; + } + } + } + + if (r4 != 0) { + FUN_020314D0(); + FUN_0202DBA4(); + UNK_021C59F4.unk00 = 0; + + FUN_0200CAB4(UNK_021C59F4.unk04->unk548); + UNK_021C59F4.unk04->unk548 = 0; + FreeToHeap(UNK_021C59F4.unk04->unk45C); + FreeToHeap(UNK_021C59F4.unk04->unk460); + FreeToHeap(UNK_021C59F4.unk04->unk458); + FreeToHeap(UNK_021C59F4.unk04->unk454); + FUN_0202D824(UNK_021C59F4.unk04->unk56C); + FUN_0202D824(UNK_021C59F4.unk04->unk54C); + FreeToHeap(UNK_021C59F4.unk04); + UNK_021C59F4.unk04 = NULL; + } +} + +extern u32 FUN_0202E9E8(u32 param0); + +THUMB_FUNC u32 FUN_0202FB18(u32 param0) { + return FUN_0202E9E8(param0); +} + + +extern void FUN_0203050C(); +extern void FUN_0202FEEC(); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); + + + +THUMB_FUNC void FUN_0202FB20() { + if (UNK_021C59F4.unk00 != 0) { + FUN_0203050C(); + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_0202FEEC(); + } + + UNK_021C59F4.unk00 = 0; + } +} + +THUMB_FUNC void FUN_0202FB58() { + if (FUN_0202F03C() != 0) { + if (FUN_02031190() == 0 ) { + if (FUN_0202EE24() == 0) { + FUN_0202FA5C(); + } + } else { + FUN_0202FA5C(); + } + } +} + +extern void FUN_02031CDC(); +extern void FUN_02030674(); +extern void FUN_0202FCCC(); +extern void FUN_02030DA4(); +extern void FUN_02030074(); +extern void FUN_02030DFC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); + + + +THUMB_FUNC u32 FUN_0202FB80() { + FUN_02031CDC(); + + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68A == 0) { + UNK_021C59F4.unk00 = 0; + FUN_0202F984(); + UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; + FUN_02030674(); + FUN_0202FCCC(); + + UNK_021C59F4.unk04->unk628 &= 2<<0xe; + if (FUN_0202FA28() == 0) { + FUN_02030DA4(); + } + + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_02030074(); + } + + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + FUN_02030DFC(); + } + + UNK_021C59F4.unk00 = 1; + } + + + FUN_0202ED70(UNK_021C59F4.unk04->unk65C); + + if (FUN_02031190() == 0) { + FUN_0202F8D4(); + } + + FUN_0202FB58(); + } else { + FUN_0202ED70(0); + } + + + FUN_020335F4(0); + FUN_020315A4(); + + return 1; +} + + +THUMB_FUNC void FUN_0202FC60() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +THUMB_FUNC void FUN_0202FC80() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk67D = 1; + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern void FUN_0202E538(); + + +THUMB_FUNC void FUN_0202FCA8() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + FUN_0202E538(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_02030930(u8 *param0); + + + +THUMB_FUNC void FUN_0202FCCC() { + if (UNK_021C59F4.unk04->unk683 != 0 ) { + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + UNK_02105D58 = 0; + FUN_0203050C(); + if (UNK_02105D58 == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk630 != 0){ + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + if (UNK_02105D58 == 4) { + FUN_02030930(UNK_021C59F4.unk04->unk000[0]); + UNK_02105D58 = 2; + } + } else { + if (UNK_02105D58 == 4) { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) { + return; + } + + UNK_02105D58 = 2; + } + } + + + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_02105D58 = 4; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + if (UNK_02105D58 != 4) { + return; + } + + + + //nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + FUN_02030930(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); + + FUN_02030930(UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + + UNK_02105D58 = 0; + FUN_0203050C(); +} + +extern int FUN_02031228(u16 param0); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); + + + + + +THUMB_FUNC u32 FUN_0202FE2C(int param0); + +#ifdef NONMATCHING +THUMB_FUNC u32 FUN_0202FE2C(int param0) { + + // these 3 variables are shuffled on the stack, everything else matches + int st4 = 0; + int stc = FUN_02031228(FUN_02033534()); + int st8 = FUN_0202D858(FUN_02033534()) + 1; + + + for (int r7 = 0; r7 < st8 ; r7++) { + + FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); + + if (FUN_02030E7C(r7) != 0) { + UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + } + + FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + + if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + st4++; + } + } + + if (st4 == st8) { + return 0; + } + + return 1; +} +#else +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} +} +#endif + + +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(u8 *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern u32 FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} + +extern s64 _ll_mul(s64, s64); + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02030674() { + u16 r4 = 0; + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk62C == 2) { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + r4 = r4 | 0x10; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + r4 = r4 | 0x20; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + r4 = r4 | 0x80; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + r4 = r4 | 0x40; + } + } else { + if (UNK_021C59F4.unk04->unk62E != 0) { + r4 = UNK_021C59F4.unk04->unk62E; + UNK_021C59F4.unk04->unk62D--; + + if (UNK_021C59F4.unk04->unk62D < 0) { + UNK_021C59F4.unk04->unk62E = 0; + } + + } else { + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; + + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { + case 0: + r4 = 0x20; + break; + case 1: + r4 = 0x10; + break; + case 2: + r4 = 0x40; + break; + case 3: + r4 = 0x80; + break; + } + + + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk62E = r4; + } + } + + + UNK_021C59F4.unk04->unk628 &= ~0xf0; + UNK_021C59F4.unk04->unk628 += r4; +} +#else +THUMB_FUNC asm void FUN_02030674() { + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} +} +#endif + + +THUMB_FUNC void FUN_020307A8() { + UNK_021C59F4.unk04->unk62C = 1; +} + + +THUMB_FUNC void FUN_020307BC() { + UNK_021C59F4.unk04->unk62C = 2; +} + + +THUMB_FUNC void FUN_020307D0() { + UNK_021C59F4.unk04->unk62C = 0; +} + + + +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { + UNK_021C59F4.unk04->unk610[param1] = 0; + + u32 r7 = param0[0] & 0x10; + if (r7 == 0x10) { + + + u8 r5 = param0[0] & 0xc; + if (r5 == 0) { + UNK_021C59F4.unk04->unk610[param1] |= 0x40; + } else if (r5 == 4) { + UNK_021C59F4.unk04->unk610[param1] |= 0x80; + } else if (r5 == 8) { + UNK_021C59F4.unk04->unk610[param1] |= 0x20; + } else if (r5 == 0xc) { + UNK_021C59F4.unk04->unk610[param1] |= 0x10; + } + + UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + } + + + return 1; +} + +THUMB_FUNC void FUN_0203086C() { +} + +extern u32 FUN_02030FE0(); + + +THUMB_FUNC u32 FUN_02030870(u8 *param0) { + if (UNK_021C59F4.unk04->unk62A != 0){ + return 0; + } + + if (FUN_02030FE0() == 0) { + return 0; + } + + if (UNK_021C59F4.unk04->unk681 != 0) { + UNK_021C59F4.unk04->unk681--; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + param0[0] |= 0x10; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + param0[0] |= 0x14; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + param0[0] |= 0x18; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + param0[0] |= 0x1c; + UNK_021C59F4.unk04->unk681 = 8; + } + + + param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + + return 0; +} + + +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); + + +THUMB_FUNC u32 FUN_02030930(u8 *param0) { + int r5 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + u8 r0; + if (UNK_021C59F4.unk04->unk684 == 0) { + param0[0] = 0; + } else { + param0[0] = 1; + } + + if (FUN_0202FA28() == 0) { + FUN_02030870(param0); + } + + UNK_021C59F4.unk04->unk684 = 0; + + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + param0[0] |= 2; + if (param0[0] == 2) { + return 0; + } + } else { + int st0[2]; + st0[1] = r5-1; + st0[0] = param0+1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + UNK_021C59F4.unk04->unk684 = 1; + } + + + if (FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk65E++; + + param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + } + } + + return 1; + +} + + +THUMB_FUNC void FUN_02030A00(u8 *param0) { + param0[0] = 0xb; + if (UNK_021C59F4.unk04->unk685 == 0) { + param0[1] = 0; + } else { + param0[1] = 1; + } + + u16 res = FUN_0202CB8C(); + param0[2] = res >>8; + param0[3] = res; + + + int st0[2]; + st0[1] = 0xbb; + st0[0] = param0+5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + UNK_021C59F4.unk04->unk685 = 0; + param0[4] = 0xbb - st0[1]; + + return; + } + + UNK_021C59F4.unk04->unk685 = 1; + param0[4] = 0xbb; +} + +extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_02031454(); + +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + ErrorHandling(); + return 0; + } + + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030A78(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + FUN_02031454(); + return 0; + } + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030ADC(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { + return FUN_02030BC4(param0, param1, 0); +} + + +THUMB_FUNC int FUN_02030C58() { + return FUN_0202D498(&UNK_021C59F4.unk04->unk464); +} + +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); + +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { + FUN_0202D934(param0, param1, param2, param3); + + *(u8 *)(param4+0xa) = 0xee; + *(u16 *)(param4+0x8) = 0xffff; + *(u32 *)(param4+0x4) = 0; + *(u32 *)(param4) = 0; +} + + +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); + +struct UnkStruct2 { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; +}; + + + +THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { + while (FUN_0202D478(param0) != 0) { + + + u32 r7 = param4->unk0a; + if (r7 == 0xee) { + r7 = FUN_0202D41C(param0); + if (r7 == 0xee) { + continue; + } + } + + int st10 = param0[2]; + param4->unk0a = r7; + int r4 = param4->unk08; + if (r4 == 0xffff) { + r4 = FUN_0202D9A0(r7); + + if (UNK_021C59F4.unk04->unk689 != 0) { + return; + } + + if (r4 == 0xffff) { + if (FUN_0202D478(param0) < 1) { + param0[2] = st10; + return; + } + + + r4 = FUN_0202D41C(param0) <<8; + r4 += FUN_0202D41C(param0); + + st10 = param0[2]; + } + + param4->unk08 = r4; + } + + + if (FUN_0202DA04(r7) != 0) { + if (param4->unk04 == 0) { + param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); + } + + int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); + + if (param4->unk04 != 0) { + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + } + + + if ((int)(param4->unk00 += stc) < (int)r4) { + continue; + } + + FUN_02030C70(param1, r7, r4, param4->unk04, param4); + } else { + if (FUN_0202D478(param0) >= r4) { + FUN_0202D400(param0, param2, r4); + FUN_02030C70(param1, r7, r4, param2, param4); + } else { + param0[2] = st10; + return; + } + } + + } +} + + + +THUMB_FUNC void FUN_02030DA4() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + UNK_021C59F4.unk04->unk470; + + + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + } + } + } +} + + +THUMB_FUNC void FUN_02030DFC() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r4; + for (r4 = 0; r4 < r7; r4++) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { + + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + } + } + } + } +} + +extern u32 MOD04_021D8018(); +extern u32 FUN_02030F40(); + + + +THUMB_FUNC u32 FUN_02030E7C(u16 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { + if (param0 == 0) { + return 1; + } + + if (param0 == 1) { + return 1; + } + } + + return 0; + } + + if (FUN_02030F40() == 0) { + return 0; + } + + if (FUN_0202CBD4() != 4) { + return 0; + } + + if (FUN_02031190() == param0) { + return 1; + } + + if (FUN_02031190() == 0) { + u16 r0 = FUN_0202CB8C(); + + if ((r0 & (1<unk65C & (1<= 0x13) { + return 1; + } + + return FUN_0202EDF8(); +} + + + +THUMB_FUNC void FUN_02030F60(u8 param0) { + UNK_021C59F4.unk04->unk62B = param0; +} + + +THUMB_FUNC u8 FUN_02030F74(u32 param0) { + return UNK_021C59F4.unk04->unk620[param0]; +} + + +THUMB_FUNC u32 FUN_02030F88(u32 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + u32 ret = UNK_021C59F4.unk04->unk610[param0]; + UNK_021C59F4.unk04->unk610[param0] = 0; + + return ret; +} + +THUMB_FUNC void FUN_02030FA8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 |= 0x8000; + } +} + + +THUMB_FUNC void FUN_02030FC8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 = 0; + } +} + + +THUMB_FUNC u32 FUN_02030FE0() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk628 & 0x8000; + } + + return 1; +} + + + +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { + if (FUN_0202FA28() == 1) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); + return; + } + + + FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); + +} + + +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); +} + + +extern u32 FUN_020311D0(u32 param0, u8 *param1); + + + +THUMB_FUNC void FUN_02031088() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk67B != 1) { + if (UNK_021C59F4.unk04->unk67B != 3) { + return; + } + } else { + u32 res; + if (FUN_0202FA28() == 1) { + res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); + } else { + res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); + } + + if (res == 0) { + return; + } + UNK_021C59F4.unk04->unk67B = 2; + return; + + + } + + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); + UNK_021C59F4.unk04->unk67B = 0; + } + + } +} + + +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0) { + UNK_021C59F4.unk04->unk67B = 1; + UNK_021C59F4.unk04->unk67C = param2[0]; + } +} + +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() != 0) { + UNK_021C59F4.unk04->unk67C = param2[0]; + UNK_021C59F4.unk04->unk67B = 3; + } +} + + +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { + FUN_0202F9E0(*param2); + UNK_021C59F4.unk04->unk67B = 0; + } +} + + +extern u16 FUN_0202D19C(); + +THUMB_FUNC u16 FUN_02031190() { + if (UNK_021C59F4.unk04 != NULL) { + if (FUN_02033534() >= 0x13) { + u32 res = MOD04_021D8018(); + if (res != 0xffffffff) { + return res; + } + } else { + if (FUN_02031280() != 0) { + return 0; + } + + return FUN_0202D19C(); + } + } + + return 0; +} + + +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { + return FUN_02030ADC(param0, param1, 0); +} + + +THUMB_FUNC u32 FUN_020311DC(u32 param0) { + return FUN_02030ADC(param0, 0, 0); +} + + +THUMB_FUNC u32 FUN_020311E8() { + return FUN_0202EE24(); +} + + +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); + +THUMB_FUNC u32 FUN_020311F0() { + if (FUN_02031280() != 0) { + return 0; + } + + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + FUN_020334E8(1, 1); + return 1; + } + + return FUN_0202EE60(); +} + + + +THUMB_FUNC int FUN_02031228(u16 param0) { + if (FUN_0202D858(param0) >= 5) { + return 0xc; + } + + if (FUN_0202FA28() == 0) { + return 0xc; + } + + return 0x26; +} + +THUMB_FUNC u32 FUN_02031248(u32 param0) { + return FUN_0202D858(param0) +1; +} + +extern u32 FUN_0202D884(u16 param0); + + + +THUMB_FUNC u32 FUN_02031258(u32 param0) { + return FUN_0202D884(param0) +1; +} + +THUMB_FUNC void FUN_02031268(u8 param0) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk686 = param0; + } +} + +THUMB_FUNC u8 FUN_02031280() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk686; + } + + return 0; +} + +extern void FUN_0202F05C(); + +THUMB_FUNC void FUN_0203129C() { + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { + u32 st0; + FUN_02030C4C(2, &st0); + } + + FUN_0202F05C(); +} + +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); + + +#ifdef NONMATCHING +THUMB_FUNC void FUN_020312BC(u32 param0) { + RTCDate st10; + RTCTime st4; + GF_RTC_CopyDateTime(&st10, &st4); + + gMain.unk2C + st4.second; + u32 r6 = st10.year<<4 + st10.month; + u32 r5 = 0<<4 | st10.year>>0x1c; + st4.second; + + u32 st0 = st10.day; + st4.hour; + st4.minute; + + 0x00000000; + (0x00000000 + r5) <<5; + + +} +#else +THUMB_FUNC asm void FUN_020312BC(u32 param0) { + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} +} +#endif + +extern void FUN_0202D830(u8 *param0, u32 param1); + +THUMB_FUNC void FUN_02031354(u32 param0) { + FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); +} + + +THUMB_FUNC u32 FUN_02031370() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); +} + +THUMB_FUNC u32 FUN_02031388() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); +} + +THUMB_FUNC void FUN_020313A0(u8 param0) { + UNK_021C59F4.unk04->unk687 = param0; +} + +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk677[param1] = param0; + } +} + +THUMB_FUNC u32 FUN_020313CC(u32 param0) { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { + return UNK_021C59F4.unk04->unk677[param0]; + } + } + + return param0; +} + +extern u32 MOD04_021D8624(); + +THUMB_FUNC u32 FUN_020313EC() { + if (FUN_02033534() < 0x13) { + return 0; + } + + return MOD04_021D8624(); +} + +THUMB_FUNC void FUN_02031400(u32 param0) { + if (FUN_02033534() >= 0x13) { + UNK_021C59F4.unk04->unk630 = param0; + if (param0 != 0) { + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk638[0] = 0; + UNK_021C59F4.unk04->unk638[1] = 0; + } + } +} + + +THUMB_FUNC u32 FUN_02031438() { + if (UNK_021C59F4.unk04->unk681 != 0) { + return 1; + } + + return 0; +} + + +THUMB_FUNC void FUN_02031454() { + UNK_021C59F4.unk04->unk689 = 1; +} + +THUMB_FUNC void FUN_02031468() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk68A = 1; + } +} \ No newline at end of file diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c deleted file mode 100644 index 162761a8..00000000 --- a/arm9/src/unk_0202F150_c.c +++ /dev/null @@ -1,1290 +0,0 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" - -struct -{ - u8 unk00; - struct UnkStruct1 *unk04; -} UNK_021C59F4; - -// struct UnkStruct2 { -// u8 unk00; -// u8 unk01; -// }; - -vu8 UNK_02105D58 = 4; -vu8 UNK_02105D59 = 4; - -extern int FUN_02033534(); -extern int FUN_0202D858(u16 param0); -extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); -extern void FUN_0202F2F0(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - -extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - -extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - // u8 unk026[38]; - u8 unk04c[264]; - u8 unk154[2][192]; - // u8 unk214[192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - u32 unk5F8; - u8 unk5FC[0x14]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A[0x2]; - u8 unk62C; - u8 unk62D; - u8 unk62E[0x2]; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B[0x2]; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; - -THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) -{ - u32 r4 = 0; - UNK_021C59F4.unk00 = 0; - if (param0 != 0) - { - u32 res = FUN_0202D858(FUN_02033534()) + 1; - - if (UNK_021C59F4.unk04 != 0) - { - return 1; - } - - FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); - UNK_021C59F4.unk04 = ptr; - MI_CpuFill8(ptr, 0, 0x68C); - - UNK_021C59F4.unk04->unk658 = param1 + 0x40; - UNK_021C59F4.unk04->unk67D = 0; - UNK_021C59F4.unk04->unk67E = 0x1b; - - UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); - - UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - if (FUN_02033534() == 0xa) - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); - } - else - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); - } - } - else - { - - r4 = 1; - if (UNK_021C59F4.unk04 == 0) - { - ErrorHandling(); - } - } - - UNK_021C59F4.unk04->unk65C = 0; - - for (int i = 0; i < 4; i++) - { - UNK_021C59F4.unk04->unk677[i] = 0xff; - } - - if (r4 == 0) - { - FUN_0202F2F0(); - } - - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); - - if (r4 == 0) - { - u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); - - UNK_021C59F4.unk04->unk548 = res2; - } - - UNK_021C59F4.unk04->unk687 = 0; - - return 1; -} - -THUMB_FUNC void FUN_0202F2F0() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - UNK_021C59F4.unk04->unk67F = 0; - UNK_021C59F4.unk04->unk680 = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - UNK_021C59F4.unk04->unk154[0][i] = 0xee; - UNK_021C59F4.unk04->unk154[1][i] = 0xee; - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - - UNK_021C59F4.unk04->unk000[0][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - UNK_021C59F4.unk04->unk000[0][i] = 0xee; - UNK_021C59F4.unk04->unk000[1][i] = 0xee; - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); - - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - - UNK_021C59F4.unk04->unk638[i] = 0; - } - - UNK_021C59F4.unk04->unk634 = 0; - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - UNK_02105D59 = 4; - UNK_02105D58 = 4; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F5A4() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - UNK_021C59F4.unk04->unk154[0][i] = 0xee; - UNK_021C59F4.unk04->unk154[1][i] = 0xee; - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - - UNK_021C59F4.unk04->unk000[0][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - UNK_021C59F4.unk04->unk000[0][i] = 0xee; - UNK_021C59F4.unk04->unk000[1][i] = 0xee; - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - } - - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F820(u32 param0) -{ - UNK_021C59F4.unk04->unk65F[param0] = 0; - - UNK_021C59F4.unk04->unk667[param0] = 1; - - UNK_021C59F4.unk04->unk638[param0] = 0; - - UNK_021C59F4.unk04->unk66F[param0] = 1; - - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], - UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], - UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; - UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; -} - -extern u32 FUN_02031280(); - -THUMB_FUNC void FUN_0202F8D4() -{ - for (int i = 1; i < 8; i++) - { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) - { - FUN_0202F820(i); - } - } -} - -THUMB_FUNC void FUN_0202F910(u32 param0) -{ - FUN_0202F820(param0); -} - -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - -THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) -{ - u32 ret = 1; - if (FUN_02033534() < 0x13) - { - ret = FUN_0202E5F8(param0, param1, param3); - FUN_0202D330(FUN_0202F910); - } - - FUN_0202F150(param0, param2); - - return ret; -} - -extern u32 FUN_0202E66C(u32 param0, u32 param1); - -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { - u32 ret = 1; - if (FUN_02033534() < 0x13) - { - ret = FUN_0202E66C(param0, param1); - } - - FUN_0202F150(param0, param2); - - UNK_02105D58 = 4; - - return ret; -} - -extern u16 FUN_02031190(); -extern void FUN_02031088(); - - - - - -THUMB_FUNC void FUN_0202F984() { - u32 r4 = 0; - if (FUN_02031190() == 0 ) { - if (UNK_02105D59 != 4) { - return; - } - } else { - if (UNK_02105D58 != 4) { - return; - } - } - - if (UNK_021C59F4.unk04->unk67D == 2) { - UNK_021C59F4.unk04->unk67D = 0; - r4 = 1; - } - - if (UNK_021C59F4.unk04->unk67D == 3) { - UNK_021C59F4.unk04->unk67D = 1; - r4 = 1; - } - - if (r4 != 0) { - FUN_0202F5A4(); - } - FUN_02031088(); -} - - - - -THUMB_FUNC void FUN_0202F9E0(u32 param0) { - u8 r2 = UNK_021C59F4.unk04->unk67D; - if (r2 == 0 && param0 == 1) { - UNK_021C59F4.unk04->unk67D = 3; - } else if (r2 == 1 && param0 == 0) { - UNK_021C59F4.unk04->unk67D = 2; - } -} - - -THUMB_FUNC void FUN_0202FA10() { - FUN_0202F9E0(1); -} - - -THUMB_FUNC void FUN_0202FA1C() { - FUN_0202F9E0(0); -} - - - -THUMB_FUNC u8 FUN_0202FA28() { - u8 ret = UNK_021C59F4.unk04->unk67D; - if (ret == 2){ - return 1; - } else if (ret == 3) { - return 0; - } - - return ret; -} - -THUMB_FUNC u32 FUN_0202FA48() { - if (FUN_0202FA28() == 1) { - return 1; - } - - return 0; -} - -extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); -extern void FUN_020314D0(); -extern void FUN_0202DBA4(); -extern void FUN_0200CAB4(u32 param0); -extern void FUN_0202D824(u32 *param0); - -THUMB_FUNC void FUN_0202FA5C() { - u32 r4 = 0; - if (UNK_021C59F4.unk04 != 0) { - if (FUN_02033534() >= 0x13) { - MOD04_021D83C0(); - r4 = 1; - } else { - if (FUN_0202E784() != 0) { - r4 = 1; - } - } - } - - if (r4 != 0) { - FUN_020314D0(); - FUN_0202DBA4(); - UNK_021C59F4.unk00 = 0; - - FUN_0200CAB4(UNK_021C59F4.unk04->unk548); - UNK_021C59F4.unk04->unk548 = 0; - FreeToHeap(UNK_021C59F4.unk04->unk45C); - FreeToHeap(UNK_021C59F4.unk04->unk460); - FreeToHeap(UNK_021C59F4.unk04->unk458); - FreeToHeap(UNK_021C59F4.unk04->unk454); - FUN_0202D824(UNK_021C59F4.unk04->unk56C); - FUN_0202D824(UNK_021C59F4.unk04->unk54C); - FreeToHeap(UNK_021C59F4.unk04); - UNK_021C59F4.unk04 = NULL; - } -} - -extern u32 FUN_0202E9E8(u32 param0); - -THUMB_FUNC u32 FUN_0202FB18(u32 param0) { - return FUN_0202E9E8(param0); -} - - -extern void FUN_0203050C(); -extern void FUN_0202FEEC(); -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); - - - -THUMB_FUNC void FUN_0202FB20() { - if (UNK_021C59F4.unk00 != 0) { - FUN_0203050C(); - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ - FUN_0202FEEC(); - } - - UNK_021C59F4.unk00 = 0; - } -} - -THUMB_FUNC void FUN_0202FB58() { - if (FUN_0202F03C() != 0) { - if (FUN_02031190() == 0 ) { - if (FUN_0202EE24() == 0) { - FUN_0202FA5C(); - } - } else { - FUN_0202FA5C(); - } - } -} - -extern void FUN_02031CDC(); -extern void FUN_02030674(); -extern void FUN_0202FCCC(); -extern void FUN_02030DA4(); -extern void FUN_02030074(); -extern void FUN_02030DFC(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); - - - -THUMB_FUNC u32 FUN_0202FB80() { - FUN_02031CDC(); - - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68A == 0) { - UNK_021C59F4.unk00 = 0; - FUN_0202F984(); - UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; - FUN_02030674(); - FUN_0202FCCC(); - - UNK_021C59F4.unk04->unk628 &= 2<<0xe; - if (FUN_0202FA28() == 0) { - FUN_02030DA4(); - } - - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ - FUN_02030074(); - } - - if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { - FUN_02030DFC(); - } - - UNK_021C59F4.unk00 = 1; - } - - - FUN_0202ED70(UNK_021C59F4.unk04->unk65C); - - if (FUN_02031190() == 0) { - FUN_0202F8D4(); - } - - FUN_0202FB58(); - } else { - FUN_0202ED70(0); - } - - - FUN_020335F4(0); - FUN_020315A4(); - - return 1; -} - - -THUMB_FUNC void FUN_0202FC60() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - FUN_0202F2F0(); - } - - UNK_021C59F4.unk00 = r4; -} - - -THUMB_FUNC void FUN_0202FC80() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - UNK_021C59F4.unk04->unk67D = 1; - FUN_0202F2F0(); - } - - UNK_021C59F4.unk00 = r4; -} - - -extern void FUN_0202E538(); - - -THUMB_FUNC void FUN_0202FCA8() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - FUN_0202F2F0(); - FUN_0202E538(); - } - - UNK_021C59F4.unk00 = r4; -} - - -extern u32 MOD04_021D78FC(void *param0, u32 param1); -extern u32 FUN_0202CBD4(); -extern u32 FUN_02030930(void *param0); - - - -THUMB_FUNC void FUN_0202FCCC() { - if (UNK_021C59F4.unk04->unk683 != 0 ) { - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { - return; - } - - UNK_021C59F4.unk04->unk683 = 0; - return; - } - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; - } - } - - UNK_02105D58 = 0; - FUN_0203050C(); - if (UNK_02105D58 == 0) { - return; - } - - UNK_021C59F4.unk04->unk683 = 0; - return; - } - - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0) { - return; - } - - if (UNK_021C59F4.unk04->unk630 != 0){ - if ((int)UNK_021C59F4.unk04->unk634 > 3) { - return; - } - - if (UNK_02105D58 == 4) { - FUN_02030930(UNK_021C59F4.unk04); - UNK_02105D58 = 2; - } - } else { - if (UNK_02105D58 == 4) { - if (FUN_02030930(UNK_021C59F4.unk04) == 0) { - return; - } - - UNK_02105D58 = 2; - } - } - - - if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { - return; - } - - UNK_02105D58 = 4; - UNK_021C59F4.unk04->unk634++; - return; - } - - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; - } - } - - if (UNK_02105D58 != 4) { - return; - } - - - - //nonmatching - if ((int)UNK_021C59F4.unk04->unk634 > 3) { - return; - } - - FUN_02030930(&UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); - - FUN_02030930(&UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); - - UNK_02105D58 = 0; - FUN_0203050C(); -} - -extern int FUN_02031228(u16 param0); -extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - -#ifdef NONMATCHING -THUMB_FUNC u32 FUN_0202FE2C(int param0) { - - // these 3 variables are shuffled on the stack, everything else matches - int st4 = 0; - int stc = FUN_02031228(FUN_02033534()); - int st8 = FUN_0202D858(FUN_02033534()) + 1; - - - for (int r7 = 0; r7 < st8 ; r7++) { - - FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); - - if (FUN_02030E7C(r7) != 0) { - UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; - } - - FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); - - if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { - st4++; - } - } - - if (st4 == st8) { - return 0; - } - - return 1; -} -#else -THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push {r3-r7, lr} - sub sp, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0xc] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0202FED0 - ldr r0, [sp, #0x0] - mov r1, #0xc0 - add r6, r0, #0x0 - add r4, r7, #0x0 - add r5, r7, #0x0 - mul r6, r1 -_0202FE66: - ldr r0, =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - add r0, r1, r0 - add r0, r0, r4 - bl FUN_0202D4BC - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FE90 - ldr r0, =UNK_021C59F4 - mov r1, #0xe - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r2, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r1, [r2, r0] -_0202FE90: - ldr r0, =UNK_021C59F4 - mov r2, #0x55 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, r1, r2 - add r1, r1, r6 - ldr r2, [sp, #0xc] - add r0, r0, r4 - add r1, r1, r5 - bl FUN_0202D400 - ldr r0, =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r1, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - cmp r0, #0xe - bne _0202FEC2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0202FEC2: - ldr r0, [sp, #0xc] - add r7, r7, #0x1 - add r5, r5, r0 - ldr r0, [sp, #0x8] - add r4, #0xc - cmp r7, r0 - blt _0202FE66 -_0202FED0: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - cmp r1, r0 - bne _0202FEDE - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202FEDE: - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} -} -#endif - - -extern void FUN_020304F0(u32 param0); -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { - return; - } - - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; - - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ - - UNK_02105D59++; - - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(UNK_021C59F4.unk04->unk680); - } - - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { - UNK_02105D59--; - } - } - - int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { - UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { - UNK_021C59F4.unk04->unk638[i]++; - } - } - - - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; - } - - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; - } - } - - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { - UNK_02105D59++; - } - } -} - - -extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(void *param0); - - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - FUN_0202FEEC(); - if (UNK_02105D59 == 2) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } - } - - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(0); - } - - UNK_02105D59 = 2; - } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { - return; - } - } - } - - - UNK_02105D59 = 2; - } - - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { - return; - } - - UNK_02105D59 = 4; - UNK_021C59F4.unk04->unk638[0]++; - UNK_021C59F4.unk04->unk638[1]++; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { - for (int r4 = 1; r4 < 8; r4++) - { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { - return; - } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - } - } - } - - - if (FUN_0202FA28() == 0) { - FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); - } - - - UNK_02105D59 = 0; - FUN_0202FEEC(); - } - } -} - - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { - UNK_021C59F4.unk04->unk634--; - UNK_021C59F4.unk04->unk66F[0] = 0; - return; - } - - FUN_0203026C(param0, param1, param2); -} - -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { - UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { - return; - } - - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { - return; - } - param1++; - } else { - if (FUN_0202FA28() == 0) { - return; - } - } - - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { - return; - } - } - - UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; - - int r4 = 0; - while (r4 < st4) { - u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; - - if (param1[0] == 0xff) { - param1 += r6; - } else if (param1[0] == 0xe){ - param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { - param1 += r6; - } else { - param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); - - param1 += r6-1; - UNK_021C59F4.unk04->unk667[r4] = 0; - } - - - r4++; - } - - return; - } - - - UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; - - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); -} - -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { - - UNK_021C59F4.unk04->unk638[param0]--; - UNK_021C59F4.unk04->unk66F[param0] = 0; - return; - } - - FUN_020303F4(param0, param1, param2); -} - -extern void FUN_020307E4(u8 *param0, u32 param1); -extern int FUN_0202D498(void *param0); - - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { - UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { - return; - } - - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { - return; - } - - UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); - } - - UNK_021C59F4.unk04->unk65F[param0]++; - return; - } - - - FUN_020307E4(param1, param0); - - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); - } -} - - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { - UNK_02105D58++; - return; - } - - ErrorHandling(); -} - -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { - UNK_02105D59++; - return; - } - - ErrorHandling(); -} - -extern u16 FUN_0202CB8C(); - - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { - return; - } - - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - if (FUN_0202CBD4() != 4) { - return; - } - - if (FUN_02030E7C(FUN_02031190()) == 0) { - FUN_02031190(); - return; - } - - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { - return; - } - - - if (FUN_02031190() != 0) { - UNK_02105D58++; - - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { - UNK_02105D58--; - return; - } - - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - } -} \ No newline at end of file -- cgit v1.2.3 From 8e3505c4162c51c3870fbe371fa46c061e6d8b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:47:33 +0200 Subject: headers --- arm9/src/unk_0202F150.c | 2011 ++++++++++++++++++++++++----------------------- 1 file changed, 1034 insertions(+), 977 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index dd86b10d..15a67f8d 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,16 +1,10 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" -#include "RTC_api.h" - +#include "unk_0202F150.h" struct { u8 unk00; struct UnkStruct1 *unk04; } UNK_021C59F4; - vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; @@ -18,97 +12,9 @@ extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); -extern void FUN_0202F2F0(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - u8 unk04c[264]; - u8 unk154[2][192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - s64 unk5F8[3]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A; - u8 unk62B; - u8 unk62C; - s8 unk62D; - u16 unk62E; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B; - u8 unk67C; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -382,8 +288,6 @@ THUMB_FUNC void FUN_0202F820(u32 param0) UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; } -extern u8 FUN_02031280(); - THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) @@ -419,7 +323,8 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) extern u32 FUN_0202E66C(u32 param0, u32 param1); -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) +{ u32 ret = 1; if (FUN_02033534() < 0x13) { @@ -430,81 +335,88 @@ THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { UNK_02105D58 = 4; - return ret; + return ret; } -extern u16 FUN_02031190(); -extern void FUN_02031088(); - - - - - -THUMB_FUNC void FUN_0202F984() { +THUMB_FUNC void FUN_0202F984() +{ u32 r4 = 0; - if (FUN_02031190() == 0 ) { - if (UNK_02105D59 != 4) { + if (FUN_02031190() == 0) + { + if (UNK_02105D59 != 4) + { return; } - } else { - if (UNK_02105D58 != 4) { + } + else + { + if (UNK_02105D58 != 4) + { return; } } - if (UNK_021C59F4.unk04->unk67D == 2) { + if (UNK_021C59F4.unk04->unk67D == 2) + { UNK_021C59F4.unk04->unk67D = 0; r4 = 1; } - if (UNK_021C59F4.unk04->unk67D == 3) { + if (UNK_021C59F4.unk04->unk67D == 3) + { UNK_021C59F4.unk04->unk67D = 1; r4 = 1; } - if (r4 != 0) { + if (r4 != 0) + { FUN_0202F5A4(); } FUN_02031088(); } - - - -THUMB_FUNC void FUN_0202F9E0(u32 param0) { +THUMB_FUNC void FUN_0202F9E0(u32 param0) +{ u8 r2 = UNK_021C59F4.unk04->unk67D; - if (r2 == 0 && param0 == 1) { + if (r2 == 0 && param0 == 1) + { UNK_021C59F4.unk04->unk67D = 3; - } else if (r2 == 1 && param0 == 0) { + } + else if (r2 == 1 && param0 == 0) + { UNK_021C59F4.unk04->unk67D = 2; } } - -THUMB_FUNC void FUN_0202FA10() { +THUMB_FUNC void FUN_0202FA10() +{ FUN_0202F9E0(1); } - -THUMB_FUNC void FUN_0202FA1C() { +THUMB_FUNC void FUN_0202FA1C() +{ FUN_0202F9E0(0); } - - -THUMB_FUNC u8 FUN_0202FA28() { +THUMB_FUNC u8 FUN_0202FA28() +{ u8 ret = UNK_021C59F4.unk04->unk67D; - if (ret == 2){ + if (ret == 2) + { return 1; - } else if (ret == 3) { + } + else if (ret == 3) + { return 0; } return ret; } -THUMB_FUNC u32 FUN_0202FA48() { - if (FUN_0202FA28() == 1) { +THUMB_FUNC u32 FUN_0202FA48() +{ + if (FUN_0202FA28() == 1) + { return 1; } @@ -518,20 +430,27 @@ extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u32 *param0); -THUMB_FUNC void FUN_0202FA5C() { +THUMB_FUNC void FUN_0202FA5C() +{ u32 r4 = 0; - if (UNK_021C59F4.unk04 != 0) { - if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04 != 0) + { + if (FUN_02033534() >= 0x13) + { MOD04_021D83C0(); r4 = 1; - } else { - if (FUN_0202E784() != 0) { + } + else + { + if (FUN_0202E784() != 0) + { r4 = 1; } } } - if (r4 != 0) { + if (r4 != 0) + { FUN_020314D0(); FUN_0202DBA4(); UNK_021C59F4.unk00 = 0; @@ -551,22 +470,21 @@ THUMB_FUNC void FUN_0202FA5C() { extern u32 FUN_0202E9E8(u32 param0); -THUMB_FUNC u32 FUN_0202FB18(u32 param0) { +THUMB_FUNC u32 FUN_0202FB18(u32 param0) +{ return FUN_0202E9E8(param0); } - -extern void FUN_0203050C(); -extern void FUN_0202FEEC(); extern u32 FUN_0202F03C(); extern u32 FUN_0202EE24(); - - -THUMB_FUNC void FUN_0202FB20() { - if (UNK_021C59F4.unk00 != 0) { +THUMB_FUNC void FUN_0202FB20() +{ + if (UNK_021C59F4.unk00 != 0) + { FUN_0203050C(); - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_0202FEEC(); } @@ -574,97 +492,105 @@ THUMB_FUNC void FUN_0202FB20() { } } -THUMB_FUNC void FUN_0202FB58() { - if (FUN_0202F03C() != 0) { - if (FUN_02031190() == 0 ) { - if (FUN_0202EE24() == 0) { +THUMB_FUNC void FUN_0202FB58() +{ + if (FUN_0202F03C() != 0) + { + if (FUN_02031190() == 0) + { + if (FUN_0202EE24() == 0) + { FUN_0202FA5C(); } - } else { + } + else + { FUN_0202FA5C(); } } } extern void FUN_02031CDC(); -extern void FUN_02030674(); -extern void FUN_0202FCCC(); -extern void FUN_02030DA4(); -extern void FUN_02030074(); -extern void FUN_02030DFC(); extern void FUN_0202EBD0(u16 param0); extern void FUN_0202ED70(u32 param0); extern void FUN_020335F4(u32 param0); extern void FUN_020315A4(); - - -THUMB_FUNC u32 FUN_0202FB80() { +THUMB_FUNC u32 FUN_0202FB80() +{ FUN_02031CDC(); - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68A == 0) { + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68A == 0) + { UNK_021C59F4.unk00 = 0; FUN_0202F984(); UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; FUN_02030674(); FUN_0202FCCC(); - UNK_021C59F4.unk04->unk628 &= 2<<0xe; - if (FUN_0202FA28() == 0) { + UNK_021C59F4.unk04->unk628 &= 2 << 0xe; + if (FUN_0202FA28() == 0) + { FUN_02030DA4(); } - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_02030074(); } - if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) + { FUN_02030DFC(); } UNK_021C59F4.unk00 = 1; } - FUN_0202ED70(UNK_021C59F4.unk04->unk65C); - if (FUN_02031190() == 0) { + if (FUN_02031190() == 0) + { FUN_0202F8D4(); } FUN_0202FB58(); - } else { + } + else + { FUN_0202ED70(0); } - FUN_020335F4(0); FUN_020315A4(); return 1; } - -THUMB_FUNC void FUN_0202FC60() { +THUMB_FUNC void FUN_0202FC60() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); } UNK_021C59F4.unk00 = r4; } - -THUMB_FUNC void FUN_0202FC80() { +THUMB_FUNC void FUN_0202FC80() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk67D = 1; FUN_0202F2F0(); } @@ -672,16 +598,16 @@ THUMB_FUNC void FUN_0202FC80() { UNK_021C59F4.unk00 = r4; } - extern void FUN_0202E538(); - -THUMB_FUNC void FUN_0202FCA8() { +THUMB_FUNC void FUN_0202FCA8() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); FUN_0202E538(); } @@ -689,17 +615,17 @@ THUMB_FUNC void FUN_0202FCA8() { UNK_021C59F4.unk00 = r4; } - extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); -extern u32 FUN_02030930(u8 *param0); - - -THUMB_FUNC void FUN_0202FCCC() { - if (UNK_021C59F4.unk04->unk683 != 0 ) { - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { +THUMB_FUNC void FUN_0202FCCC() +{ + if (UNK_021C59F4.unk04->unk683 != 0) + { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) + { return; } @@ -707,15 +633,18 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { return; } } UNK_02105D58 = 0; FUN_0203050C(); - if (UNK_02105D58 == 0) { + if (UNK_02105D58 == 0) + { return; } @@ -723,24 +652,32 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 == 0) + { return; } - if (UNK_021C59F4.unk04->unk630 != 0){ - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk634 > 3) + { return; } - if (UNK_02105D58 == 4) { + if (UNK_02105D58 == 4) + { FUN_02030930(UNK_021C59F4.unk04->unk000[0]); UNK_02105D58 = 2; } - } else { - if (UNK_02105D58 == 4) { - if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) { + } + else + { + if (UNK_02105D58 == 4) + { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) + { return; } @@ -748,8 +685,8 @@ THUMB_FUNC void FUN_0202FCCC() { } } - - if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) + { return; } @@ -758,279 +695,291 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { + return; } } - if (UNK_02105D58 != 4) { + if (UNK_02105D58 != 4) + { return; } - - - //nonmatching - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + // nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) + { return; } FUN_02030930(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); - FUN_02030930(UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + FUN_02030930(UNK_021C59F4.unk04->unk000[1 - UNK_021C59F4.unk04->unk67F]); UNK_02105D58 = 0; FUN_0203050C(); } -extern int FUN_02031228(u16 param0); extern void FUN_0202D4BC(void *param0); extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - #ifdef NONMATCHING -THUMB_FUNC u32 FUN_0202FE2C(int param0) { +THUMB_FUNC u32 FUN_0202FE2C(int param0) +{ // these 3 variables are shuffled on the stack, everything else matches int st4 = 0; int stc = FUN_02031228(FUN_02033534()); int st8 = FUN_0202D858(FUN_02033534()) + 1; - - for (int r7 = 0; r7 < st8 ; r7++) { + for (int r7 = 0; r7 < st8; r7++) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); - if (FUN_02030E7C(r7) != 0) { - UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + if (FUN_02030E7C(r7) != 0) + { + UNK_021C59F4.unk04->unk154[param0][r7 * stc] = 0xe; } - FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + FUN_0202D400( + &UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7 * stc], stc); - if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + if (UNK_021C59F4.unk04->unk154[param0][r7 * stc] == 0xe) + { st4++; } } - if (st4 == st8) { + if (st4 == st8) + { return 0; } return 1; } #else -THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push {r3-r7, lr} - sub sp, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0xc] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0202FED0 - ldr r0, [sp, #0x0] - mov r1, #0xc0 - add r6, r0, #0x0 - add r4, r7, #0x0 - add r5, r7, #0x0 - mul r6, r1 -_0202FE66: - ldr r0, =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - add r0, r1, r0 - add r0, r0, r4 - bl FUN_0202D4BC - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FE90 - ldr r0, =UNK_021C59F4 - mov r1, #0xe - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r2, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r1, [r2, r0] -_0202FE90: - ldr r0, =UNK_021C59F4 - mov r2, #0x55 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, r1, r2 - add r1, r1, r6 - ldr r2, [sp, #0xc] - add r0, r0, r4 - add r1, r1, r5 - bl FUN_0202D400 - ldr r0, =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r1, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - cmp r0, #0xe - bne _0202FEC2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0202FEC2: - ldr r0, [sp, #0xc] - add r7, r7, #0x1 - add r5, r5, r0 - ldr r0, [sp, #0x8] - add r4, #0xc - cmp r7, r0 - blt _0202FE66 -_0202FED0: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - cmp r1, r0 - bne _0202FEDE - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202FEDE: - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) +{ + push{ r3 - r7, lr } sub sp, #0x10 str r0, [ sp, #0x0 ] mov r0, #0x0 str r0, + [ sp, #0x4 ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02031228 str r0, + [ sp, #0xc ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0202D858 add r0, r0, + #0x1 mov r7, #0x0 str r0, [ sp, #0x8 ] cmp r0, #0x0 ble _0202FED0 ldr r0, + [ sp, #0x0 ] mov r1, #0xc0 add r6, r0, #0x0 add r4, r7, #0x0 add r5, r7, #0x0 mul r6, + r1 _0202FE66 : ldr r0, + = UNK_021C59F4 ldr r1, + [ r0, #0x4 ] ldr r0, + = 0x0000047C add r0, + r1, + r0 add r0, + r0, + r4 bl FUN_0202D4BC lsl r0, + r7, + #0x10 lsr r0, + r0, + #0x10 bl FUN_02030E7C cmp r0, + #0x0 beq _0202FE90 ldr r0, + = UNK_021C59F4 mov r1, + #0xe ldr r0, + [ r0, #0x4 ] add r0, + r6, + r0 add r2, + r5, + r0 mov r0, + #0x55 lsl r0, + r0, + #0x2 strb r1, + [ r2, r0 ] _0202FE90 : ldr r0, + = UNK_021C59F4 mov r2, + #0x55 ldr r1, + [ r0, #0x4 ] ldr r0, + = 0x0000047C lsl r2, + r2, + #0x2 add r0, + r1, + r0 add r1, + r1, + r2 add r1, + r1, + r6 ldr r2, + [ sp, #0xc ] add r0, + r0, + r4 add r1, + r1, + r5 bl FUN_0202D400 ldr r0, + = UNK_021C59F4 ldr r0, + [ r0, #0x4 ] add r0, + r6, + r0 add r1, + r5, + r0 mov r0, + #0x55 lsl r0, + r0, + #0x2 ldrb r0, + [ r1, r0 ] cmp r0, + #0xe bne _0202FEC2 ldr r0, + [ sp, #0x4 ] add r0, + r0, + #0x1 str r0, + [ sp, #0x4 ] _0202FEC2 : ldr r0, + [ sp, #0xc ] add r7, + r7, + #0x1 add r5, + r5, + r0 ldr r0, + [ sp, #0x8 ] add r4, + #0xc cmp r7, + r0 blt _0202FE66 _0202FED0 + : ldr r1, + [ sp, #0x4 ] ldr r0, + [ sp, #0x8 ] cmp r1, + r0 bne _0202FEDE add sp, + #0x10 mov r0, + #0x0 pop{ r3 - r7, pc } _0202FEDE : mov r0, + #0x1 add sp, + #0x10 pop + { + r3 - r7, pc + } } #endif - -extern void FUN_020304F0(u32 param0); extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0202FEEC() +{ + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) + { return; } int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; + int r6 = FUN_0202D858(FUN_02033534()) + 1; - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + if (UNK_02105D59 == 2 || UNK_02105D59 == 0) + { UNK_02105D59++; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(UNK_021C59F4.unk04->unk680); } - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) + { - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], + 0xc0, + 0xe, + FUN_020304F0) == 0) + { UNK_02105D59--; } } int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) + { + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) != 0) + { UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { + } + else if (FUN_02031280() != 0 && i == 0) + { UNK_021C59F4.unk04->unk638[i]++; } } - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; } - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } } - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) + { UNK_02105D59++; } } } - extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(u8 *param0); - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { +THUMB_FUNC void FUN_02030074() +{ + if (UNK_021C59F4.unk04->unk683 != 0) + { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) + { UNK_021C59F4.unk04->unk683 = 0; return; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { FUN_0202FEEC(); - if (UNK_02105D59 == 2) { + if (UNK_02105D59 == 2) + { UNK_021C59F4.unk04->unk683 = 0; return; } } } - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0) + { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || + (int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(0); } UNK_02105D59 = 2; } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { + } + else + { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { + if (FUN_0202FE2C(0) == 0) + { return; } } } - UNK_02105D59 = 2; } - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) + { return; } @@ -1038,40 +987,48 @@ THUMB_FUNC void FUN_02030074() { UNK_021C59F4.unk04->unk638[0]++; UNK_021C59F4.unk04->unk638[1]++; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { + if (UNK_02105D59 == 4) + { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + if (FUN_02030E7C(r4) != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) + { return; } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + } + else if (r4 == 0) + { + if (FUN_02031280() != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } } } } - - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1 - UNK_021C59F4.unk04->unk680]); } - UNK_02105D59 = 0; FUN_0202FEEC(); } } } - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) +{ + if (UNK_021C59F4.unk04->unk66F[0] != 0) + { UNK_021C59F4.unk04->unk634--; UNK_021C59F4.unk04->unk66F[0] = 0; return; @@ -1082,81 +1039,97 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) +{ UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { + if (param1[0] == 0xb) + { + if (FUN_0202FA28() == 1) + { return; } param1++; - } else { - if (FUN_0202FA28() == 0) { + } + else + { + if (FUN_0202FA28() == 0) + { return; } } - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk682 != 0) + { + if ((param1[0] & 1) != 0) + { return; } } UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; + int st4 = FUN_0202D858(FUN_02033534()) + 1; int r4 = 0; - while (r4 < st4) { + while (r4 < st4) + { u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C & ~(1 << r4); + } + else + { + new = UNK_021C59F4.unk04->unk65C | (1 << r4); } UNK_021C59F4.unk04->unk65C = new; - if (param1[0] == 0xff) { + if (param1[0] == 0xff) + { param1 += r6; - } else if (param1[0] == 0xe){ + } + else if (param1[0] == 0xe) + { param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + } + else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) + { param1 += r6; - } else { + } + else + { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); - param1 += r6-1; + param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; } - r4++; } return; } - UNK_021C59F4.unk04->unk65C = param1[1]; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +{ + if (UNK_021C59F4.unk04->unk66F[param0] != 0) + { UNK_021C59F4.unk04->unk638[param0]--; UNK_021C59F4.unk04->unk66F[param0] = 0; @@ -1166,27 +1139,29 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { FUN_020303F4(param0, param1, param2); } -extern u32 FUN_020307E4(u8 *param0, u32 param1); extern int FUN_0202D498(void *param0); - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) +{ UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) + { return; } UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if ((param1[0] & 2) == 0) { + if ((param1[0] & 2) == 0) + { FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); } @@ -1194,17 +1169,18 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { return; } - FUN_020307E4(param1, param0); - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) + { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 + 1, 0xb, 0x66E); } } - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304D4(u32 param0) +{ + if (param0 != 0) + { UNK_02105D58++; return; } @@ -1212,8 +1188,10 @@ THUMB_FUNC void FUN_020304D4(u32 param0) { ErrorHandling(); } -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304F0(u32 param0) +{ + if (param0 != 0) + { UNK_02105D59++; return; } @@ -1223,46 +1201,51 @@ THUMB_FUNC void FUN_020304F0(u32 param0) { extern u16 FUN_0202CB8C(); - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0203050C() +{ + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) + { return; } int r4 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; return; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return; } - if (FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02030E7C(FUN_02031190()) == 0) + { FUN_02031190(); return; } - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) + { return; } - - if (FUN_02031190() != 0) { + if (FUN_02031190() != 0) + { UNK_02105D58++; - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + if (FUN_0202D0D0( + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + { UNK_02105D58--; return; } @@ -1272,15 +1255,14 @@ THUMB_FUNC void FUN_0203050C() { return; } - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { + if ((FUN_0202CB8C() & 0xFFFE) != 0) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; } } @@ -1288,382 +1270,424 @@ THUMB_FUNC void FUN_0203050C() { extern s64 _ll_mul(s64, s64); #ifdef NONMATCHING -THUMB_FUNC void FUN_02030674() { +THUMB_FUNC void FUN_02030674() +{ u16 r4 = 0; - if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) + { return; } - if (UNK_021C59F4.unk04->unk62C == 2) { - if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + if (UNK_021C59F4.unk04->unk62C == 2) + { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { r4 = r4 | 0x10; } - if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { r4 = r4 | 0x20; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { r4 = r4 | 0x80; } - if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { r4 = r4 | 0x40; } - } else { - if (UNK_021C59F4.unk04->unk62E != 0) { + } + else + { + if (UNK_021C59F4.unk04->unk62E != 0) + { r4 = UNK_021C59F4.unk04->unk62E; UNK_021C59F4.unk04->unk62D--; - if (UNK_021C59F4.unk04->unk62D < 0) { + if (UNK_021C59F4.unk04->unk62D < 0) + { UNK_021C59F4.unk04->unk62E = 0; } + } + else + { + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + + UNK_021C59F4.unk04->unk5F8[2]; - } else { - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; - - switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { - case 0: - r4 = 0x20; + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) + { + case 0: + r4 = 0x20; break; - case 1: - r4 = 0x10; + case 1: + r4 = 0x10; break; - case 2: - r4 = 0x40; + case 2: + r4 = 0x40; break; - case 3: - r4 = 0x80; + case 3: + r4 = 0x80; break; } - - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; - UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[2] + + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0] >> 0x3c | (0 << 4); UNK_021C59F4.unk04->unk62E = r4; } } - UNK_021C59F4.unk04->unk628 &= ~0xf0; UNK_021C59F4.unk04->unk628 += r4; } #else -THUMB_FUNC asm void FUN_02030674() { - push {r3-r7, lr} - ldr r7, =UNK_021C59F4 - mov r6, #0x0 - ldr r5, [r7, #0x4] - ldr r2, =0x0000062C - add r4, r6, #0x0 - ldrb r0, [r5, r2] - cmp r0, #0x0 - beq _02030690 - sub r1, r2, #0x4 - ldrh r1, [r5, r1] - mov r3, #0xf0 - tst r3, r1 - bne _02030692 -_02030690: - b _02030794 -_02030692: - cmp r0, #0x2 - bne _020306D0 - mov r0, #0x20 - tst r0, r1 - beq _020306A4 - mov r0, #0x10 - orr r0, r6 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306A4: - mov r0, #0x10 - tst r0, r1 - beq _020306B2 - mov r0, #0x20 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306B2: - mov r0, #0x40 - tst r0, r1 - beq _020306C0 - mov r0, #0x80 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306C0: - mov r0, #0x80 - tst r0, r1 - beq _0203077E - mov r0, #0x40 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - b _0203077E -_020306D0: - add r0, r2, #0x2 - ldrh r0, [r5, r0] - cmp r0, #0x0 - beq _020306F2 - add r4, r0, #0x0 - add r0, r2, #0x1 - ldrsb r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r2, #0x1 - strb r1, [r5, r0] - ldr r1, [r7, #0x4] - ldrsb r0, [r1, r0] - cmp r0, #0x0 - bge _0203077E - add r0, r2, #0x2 - strh r6, [r1, r0] - b _0203077E -_020306F2: - add r0, r2, #0x0 - sub r0, #0x34 - add r6, r5, r0 - sub r2, #0x34 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r5, r2] - ldr r3, [r6, #0x4] - bl _ll_mul - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r6, #0x10] - ldr r1, [r6, #0x14] - add r0, r0, r3 - adc r1, r2 - ldr r2, =0x000005F8 - str r0, [r5, r2] - mov r2, #0x0 - str r1, [r6, #0x4] - lsr r0, r1, #0x1e - lsl r1, r2, #0x2 - orr r1, r0 - cmp r1, #0x3 - bhi _02030746 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02030730: // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, r0, #0x0 // case 0 - lsl r2, r1, #0x0 // case 1 - lsl r6, r1, #0x0 // case 2 - lsl r2, r2, #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 -_02030738: - mov r4, #0x20 - b _02030746 -_0203073C: - mov r4, #0x10 - b _02030746 -_02030740: - mov r4, #0x40 - b _02030746 -_02030744: - mov r4, #0x80 -_02030746: - ldr r0, =UNK_021C59F4 - ldr r5, [r0, #0x4] - ldr r0, =0x000005F8 - add r6, r5, r0 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - bl _ll_mul - ldr r3, [r6, #0x10] - ldr r2, [r6, #0x14] - add r0, r3, r0 - adc r2, r1 - ldr r1, =0x000005F8 - mov r3, #0x0 - str r0, [r5, r1] - str r2, [r6, #0x4] - lsr r0, r2, #0x1c - lsl r2, r3, #0x4 - orr r2, r0 - add r0, r1, #0x0 - add r0, #0x35 - strb r2, [r5, r0] - ldr r0, =UNK_021C59F4 - add r1, #0x36 - ldr r0, [r0, #0x4] - strh r4, [r0, r1] -_0203077E: - ldr r2, =UNK_021C59F4 - ldr r1, =0x00000628 - ldr r5, [r2, #0x4] - mov r0, #0xf0 - ldrh r3, [r5, r1] - bic r3, r0 - strh r3, [r5, r1] - ldr r2, [r2, #0x4] - ldrh r0, [r2, r1] - add r0, r0, r4 - strh r0, [r2, r1] -_02030794: - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_02030674() +{ + push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, + = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, + #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, + #0xf0 tst r3, + r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, + #0x2 bne _020306D0 mov r0, + #0x20 tst r0, + r1 beq _020306A4 mov r0, + #0x10 orr r0, + r6 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306A4 : mov r0, + #0x10 tst r0, + r1 beq _020306B2 mov r0, + #0x20 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306B2 : mov r0, + #0x40 tst r0, + r1 beq _020306C0 mov r0, + #0x80 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306C0 : mov r0, + #0x80 tst r0, + r1 beq _0203077E mov r0, + #0x40 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 b _0203077E _020306D0 : add r0, + r2, + #0x2 ldrh r0, + [ r5, r0 ] cmp r0, + #0x0 beq _020306F2 add r4, + r0, + #0x0 add r0, + r2, + #0x1 ldrsb r0, + [ r5, r0 ] sub r1, + r0, + #0x1 add r0, + r2, + #0x1 strb r1, + [ r5, r0 ] ldr r1, + [ r7, #0x4 ] ldrsb r0, + [ r1, r0 ] cmp r0, + #0x0 bge _0203077E add r0, + r2, + #0x2 strh r6, + [ r1, r0 ] b _0203077E _020306F2 : add r0, + r2, + #0x0 sub r0, + #0x34 add r6, + r5, + r0 sub r2, + #0x34 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r5, r2 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul add r3, + r0, + #0x0 add r2, + r1, + #0x0 ldr r0, + [ r6, #0x10 ] ldr r1, + [ r6, #0x14 ] add r0, + r0, + r3 adc r1, + r2 ldr r2, + = 0x000005F8 str r0, + [ r5, r2 ] mov r2, + #0x0 str r1, + [ r6, #0x4 ] lsr r0, + r1, + #0x1e lsl r1, + r2, + #0x2 orr r1, + r0 cmp r1, + #0x3 bhi _02030746 add r0, + r1, + r1 add r0, + pc ldrh r0, + [ r0, #0x6 ] lsl r0, + r0, + #0x10 asr r0, + r0, + #0x10 add pc, + r0 _02030730 + : // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, + r0, + #0x0 // case 0 + lsl r2, + r1, + #0x0 // case 1 + lsl r6, + r1, + #0x0 // case 2 + lsl r2, + r2, + #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 + _02030738 : mov r4, + #0x20 b _02030746 _0203073C : mov r4, + #0x10 b _02030746 _02030740 : mov r4, + #0x40 b _02030746 _02030744 : mov r4, + #0x80 _02030746 : ldr r0, + = UNK_021C59F4 ldr r5, + [ r0, #0x4 ] ldr r0, + = 0x000005F8 add r6, + r5, + r0 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r6, #0x0 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul ldr r3, + [ r6, #0x10 ] ldr r2, + [ r6, #0x14 ] add r0, + r3, + r0 adc r2, + r1 ldr r1, + = 0x000005F8 mov r3, + #0x0 str r0, + [ r5, r1 ] str r2, + [ r6, #0x4 ] lsr r0, + r2, + #0x1c lsl r2, + r3, + #0x4 orr r2, + r0 add r0, + r1, + #0x0 add r0, + #0x35 strb r2, + [ r5, r0 ] ldr r0, + = UNK_021C59F4 add r1, + #0x36 ldr r0, + [ r0, #0x4 ] strh r4, + [ r0, r1 ] _0203077E : ldr r2, + = UNK_021C59F4 ldr r1, + = 0x00000628 ldr r5, + [ r2, #0x4 ] mov r0, + #0xf0 ldrh r3, + [ r5, r1 ] bic r3, + r0 strh r3, + [ r5, r1 ] ldr r2, + [ r2, #0x4 ] ldrh r0, + [ r2, r1 ] add r0, + r0, + r4 strh r0, + [ r2, r1 ] _02030794 : pop + { + r3 - r7, pc + } } #endif - -THUMB_FUNC void FUN_020307A8() { +THUMB_FUNC void FUN_020307A8() +{ UNK_021C59F4.unk04->unk62C = 1; } - -THUMB_FUNC void FUN_020307BC() { +THUMB_FUNC void FUN_020307BC() +{ UNK_021C59F4.unk04->unk62C = 2; } - -THUMB_FUNC void FUN_020307D0() { +THUMB_FUNC void FUN_020307D0() +{ UNK_021C59F4.unk04->unk62C = 0; } - - -THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) +{ UNK_021C59F4.unk04->unk610[param1] = 0; u32 r7 = param0[0] & 0x10; - if (r7 == 0x10) { - + if (r7 == 0x10) + { u8 r5 = param0[0] & 0xc; - if (r5 == 0) { + if (r5 == 0) + { UNK_021C59F4.unk04->unk610[param1] |= 0x40; - } else if (r5 == 4) { + } + else if (r5 == 4) + { UNK_021C59F4.unk04->unk610[param1] |= 0x80; - } else if (r5 == 8) { + } + else if (r5 == 8) + { UNK_021C59F4.unk04->unk610[param1] |= 0x20; - } else if (r5 == 0xc) { + } + else if (r5 == 0xc) + { UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; } - return 1; } -THUMB_FUNC void FUN_0203086C() { +THUMB_FUNC void FUN_0203086C() +{ } -extern u32 FUN_02030FE0(); - -THUMB_FUNC u32 FUN_02030870(u8 *param0) { - if (UNK_021C59F4.unk04->unk62A != 0){ +THUMB_FUNC u32 FUN_02030870(u8 *param0) +{ + if (UNK_021C59F4.unk04->unk62A != 0) + { return 0; } - if (FUN_02030FE0() == 0) { + if (FUN_02030FE0() == 0) + { return 0; } - if (UNK_021C59F4.unk04->unk681 != 0) { + if (UNK_021C59F4.unk04->unk681 != 0) + { UNK_021C59F4.unk04->unk681--; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { param0[0] |= 0x10; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { param0[0] |= 0x14; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { param0[0] |= 0x18; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { param0[0] |= 0x1c; UNK_021C59F4.unk04->unk681 = 8; } - - param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + param0[0] |= UNK_021C59F4.unk04->unk62B << 5; return 0; } - extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - -THUMB_FUNC u32 FUN_02030930(u8 *param0) { +THUMB_FUNC u32 FUN_02030930(u8 *param0) +{ int r5 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); u8 r0; - if (UNK_021C59F4.unk04->unk684 == 0) { + if (UNK_021C59F4.unk04->unk684 == 0) + { param0[0] = 0; - } else { + } + else + { param0[0] = 1; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030870(param0); } UNK_021C59F4.unk04->unk684 = 0; - if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) + { param0[0] |= 2; - if (param0[0] == 2) { + if (param0[0] == 2) + { return 0; } - } else { + } + else + { int st0[2]; - st0[1] = r5-1; - st0[0] = param0+1; - if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + st0[1] = r5 - 1; + st0[0] = param0 + 1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) + { UNK_021C59F4.unk04->unk684 = 1; } - - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { UNK_021C59F4.unk04->unk65E++; - param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + param0[0] |= UNK_021C59F4.unk04->unk65E << 4 & 0xf0; } } return 1; - } - -THUMB_FUNC void FUN_02030A00(u8 *param0) { +THUMB_FUNC void FUN_02030A00(u8 *param0) +{ param0[0] = 0xb; - if (UNK_021C59F4.unk04->unk685 == 0) { + if (UNK_021C59F4.unk04->unk685 == 0) + { param0[1] = 0; - } else { + } + else + { param0[1] = 1; } u16 res = FUN_0202CB8C(); - param0[2] = res >>8; + param0[2] = res >> 8; param0[3] = res; - int st0[2]; st0[1] = 0xbb; - st0[0] = param0+5; - if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + st0[0] = param0 + 5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) + { UNK_021C59F4.unk04->unk685 = 0; param0[4] = 0xbb - st0[1]; @@ -1675,143 +1699,151 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) { } extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02031454(); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { ErrorHandling(); return 0; } - - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030A78(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { FUN_02031454(); return 0; } - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030ADC(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +{ return FUN_02030BC4(param0, param1, 0); } - -THUMB_FUNC int FUN_02030C58() { +THUMB_FUNC int FUN_02030C58() +{ return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +{ FUN_0202D934(param0, param1, param2, param3); - *(u8 *)(param4+0xa) = 0xee; - *(u16 *)(param4+0x8) = 0xffff; - *(u32 *)(param4+0x4) = 0; + *(u8 *)(param4 + 0xa) = 0xee; + *(u16 *)(param4 + 0x8) = 0xffff; + *(u32 *)(param4 + 0x4) = 0; *(u32 *)(param4) = 0; } - extern int FUN_0202D478(s16 *param0); extern u32 FUN_0202D41C(s16 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); -struct UnkStruct2 { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; -}; - - -THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { - while (FUN_0202D478(param0) != 0) { +THUMB_FUNC void FUN_02030C8C( + s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) +{ + while (FUN_0202D478(param0) != 0) + { u32 r7 = param4->unk0a; - if (r7 == 0xee) { + if (r7 == 0xee) + { r7 = FUN_0202D41C(param0); - if (r7 == 0xee) { + if (r7 == 0xee) + { continue; } } @@ -1819,21 +1851,24 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st int st10 = param0[2]; param4->unk0a = r7; int r4 = param4->unk08; - if (r4 == 0xffff) { + if (r4 == 0xffff) + { r4 = FUN_0202D9A0(r7); - if (UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04->unk689 != 0) + { return; } - if (r4 == 0xffff) { - if (FUN_0202D478(param0) < 1) { + if (r4 == 0xffff) + { + if (FUN_0202D478(param0) < 1) + { param0[2] = st10; return; } - - r4 = FUN_0202D41C(param0) <<8; + r4 = FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; @@ -1842,65 +1877,83 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st param4->unk08 = r4; } - - if (FUN_0202DA04(r7) != 0) { - if (param4->unk04 == 0) { + if (FUN_0202DA04(r7) != 0) + { + if (param4->unk04 == 0) + { param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); } int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); - if (param4->unk04 != 0) { + if (param4->unk04 != 0) + { MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); } - - if ((int)(param4->unk00 += stc) < (int)r4) { + if ((int)(param4->unk00 += stc) < (int)r4) + { continue; } FUN_02030C70(param1, r7, r4, param4->unk04, param4); - } else { - if (FUN_0202D478(param0) >= r4) { + } + else + { + if (FUN_0202D478(param0) >= r4) + { FUN_0202D400(param0, param2, r4); FUN_02030C70(param1, r7, r4, param2, param4); - } else { + } + else + { param0[2] = st10; return; } } - } } - - -THUMB_FUNC void FUN_02030DA4() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DA4() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + { UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + 0, + UNK_021C59F4.unk04->unk460, + 1, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); } } } } - -THUMB_FUNC void FUN_02030DFC() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DFC() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { int r7 = FUN_0202D858(FUN_02033534()) + 1; int r4; - for (r4 = 0; r4 < r7; r4++) { + for (r4 = 0; r4 < r7; r4++) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - - - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + { + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + r4, + UNK_021C59F4.unk04->unk460, + 0, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); } } } @@ -1908,23 +1961,25 @@ THUMB_FUNC void FUN_02030DFC() { } extern u32 MOD04_021D8018(); -extern u32 FUN_02030F40(); - - -THUMB_FUNC u32 FUN_02030E7C(u16 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030E7C(u16 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { - if (param0 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) + { + if (param0 == 0) + { return 1; } - if (param0 == 1) { + if (param0 == 1) + { return 1; } } @@ -1932,26 +1987,34 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - if (FUN_02030F40() == 0) { + if (FUN_02030F40() == 0) + { return 0; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return 0; } - if (FUN_02031190() == param0) { + if (FUN_02031190() == param0) + { return 1; } - if (FUN_02031190() == 0) { + if (FUN_02031190() == 0) + { u16 r0 = FUN_0202CB8C(); - if ((r0 & (1<unk65C & (1<unk65C & (1 << param0)) != 0) + { return 1; } } @@ -1959,46 +2022,46 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - - -THUMB_FUNC u32 FUN_02030F20() { +THUMB_FUNC u32 FUN_02030F20() +{ u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) { + if (FUN_02030E7C(i) != 0) + { r4++; } } - return r4; - } extern u32 FUN_0202EDF8(); -THUMB_FUNC u32 FUN_02030F40() { - if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) { - return 1; +THUMB_FUNC u32 FUN_02030F40() +{ + if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) + { + return 1; } return FUN_0202EDF8(); } - - -THUMB_FUNC void FUN_02030F60(u8 param0) { +THUMB_FUNC void FUN_02030F60(u8 param0) +{ UNK_021C59F4.unk04->unk62B = param0; } - -THUMB_FUNC u8 FUN_02030F74(u32 param0) { +THUMB_FUNC u8 FUN_02030F74(u32 param0) +{ return UNK_021C59F4.unk04->unk620[param0]; } - -THUMB_FUNC u32 FUN_02030F88(u32 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030F88(u32 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } @@ -2008,117 +2071,133 @@ THUMB_FUNC u32 FUN_02030F88(u32 param0) { return ret; } -THUMB_FUNC void FUN_02030FA8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FA8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 |= 0x8000; } } - -THUMB_FUNC void FUN_02030FC8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FC8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 = 0; } } - -THUMB_FUNC u32 FUN_02030FE0() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u32 FUN_02030FE0() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk628 & 0x8000; } return 1; } - - -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { - if (FUN_0202FA28() == 1) { +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +{ + if (FUN_0202FA28() == 1) + { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); return; } - FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); - } - -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +{ FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } -extern u32 FUN_020311D0(u32 param0, u8 *param1); - - - -THUMB_FUNC void FUN_02031088() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk67B != 1) { - if (UNK_021C59F4.unk04->unk67B != 3) { +THUMB_FUNC void FUN_02031088() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk67B != 1) + { + if (UNK_021C59F4.unk04->unk67B != 3) + { return; } - } else { + } + else + { u32 res; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); - } else { + } + else + { res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); } - if (res == 0) { + if (res == 0) + { return; } UNK_021C59F4.unk04->unk67B = 2; return; - - } - if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) + { FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); UNK_021C59F4.unk04->unk67B = 0; } - } } - -THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0) + { UNK_021C59F4.unk04->unk67B = 1; UNK_021C59F4.unk04->unk67C = param2[0]; } } -THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() != 0) + { UNK_021C59F4.unk04->unk67C = param2[0]; UNK_021C59F4.unk04->unk67B = 3; - } + } } - -THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) + { FUN_0202F9E0(*param2); UNK_021C59F4.unk04->unk67B = 0; } } - extern u16 FUN_0202D19C(); -THUMB_FUNC u16 FUN_02031190() { - if (UNK_021C59F4.unk04 != NULL) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC u16 FUN_02031190() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (FUN_02033534() >= 0x13) + { u32 res = MOD04_021D8018(); - if (res != 0xffffffff) { + if (res != 0xffffffff) + { return res; } - } else { - if (FUN_02031280() != 0) { + } + else + { + if (FUN_02031280() != 0) + { return 0; } @@ -2129,31 +2208,33 @@ THUMB_FUNC u16 FUN_02031190() { return 0; } - -THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) +{ return FUN_02030ADC(param0, param1, 0); } - -THUMB_FUNC u32 FUN_020311DC(u32 param0) { +THUMB_FUNC u32 FUN_020311DC(u32 param0) +{ return FUN_02030ADC(param0, 0, 0); } - -THUMB_FUNC u32 FUN_020311E8() { +THUMB_FUNC u32 FUN_020311E8() +{ return FUN_0202EE24(); } - extern void FUN_020334E8(u32 param0, u32 param1); extern u32 FUN_0202EE60(); -THUMB_FUNC u32 FUN_020311F0() { - if (FUN_02031280() != 0) { +THUMB_FUNC u32 FUN_020311F0() +{ + if (FUN_02031280() != 0) + { return 0; } - if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) + { FUN_020334E8(1, 1); return 1; } @@ -2161,40 +2242,45 @@ THUMB_FUNC u32 FUN_020311F0() { return FUN_0202EE60(); } - - -THUMB_FUNC int FUN_02031228(u16 param0) { - if (FUN_0202D858(param0) >= 5) { +THUMB_FUNC int FUN_02031228(u16 param0) +{ + if (FUN_0202D858(param0) >= 5) + { return 0xc; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { return 0xc; } return 0x26; } -THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) +1; +THUMB_FUNC u32 FUN_02031248(u32 param0) +{ + return FUN_0202D858(param0) + 1; } extern u32 FUN_0202D884(u16 param0); - - -THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) +1; +THUMB_FUNC u32 FUN_02031258(u32 param0) +{ + return FUN_0202D884(param0) + 1; } -THUMB_FUNC void FUN_02031268(u8 param0) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02031268(u8 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk686 = param0; } } -THUMB_FUNC u8 FUN_02031280() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u8 FUN_02031280() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk686; } @@ -2203,8 +2289,10 @@ THUMB_FUNC u8 FUN_02031280() { extern void FUN_0202F05C(); -THUMB_FUNC void FUN_0203129C() { - if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203129C() +{ + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) + { u32 st0; FUN_02030C4C(2, &st0); } @@ -2214,16 +2302,16 @@ THUMB_FUNC void FUN_0203129C() { extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) { +THUMB_FUNC void FUN_020312BC(u32 param0) +{ RTCDate st10; RTCTime st4; GF_RTC_CopyDateTime(&st10, &st4); gMain.unk2C + st4.second; - u32 r6 = st10.year<<4 + st10.month; - u32 r5 = 0<<4 | st10.year>>0x1c; + u32 r6 = st10.year << 4 + st10.month; + u32 r5 = 0 << 4 | st10.year >> 0x1c; st4.second; u32 st0 = st10.day; @@ -2231,108 +2319,69 @@ THUMB_FUNC void FUN_020312BC(u32 param0) { st4.minute; 0x00000000; - (0x00000000 + r5) <<5; - - + (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push {r3-r7, lr} - sub sp, #0x20 - add r4, r0, #0x0 - add r0, sp, #0x10 - add r1, sp, #0x4 - bl GF_RTC_CopyDateTime - ldr r0, =gMain - ldr r6, [sp, #0x10] - mov r5, #0x0 - lsr r7, r6, #0x1c - lsl r5, r5, #0x4 - ldr r1, [sp, #0xc] - ldr r0, [r0, #0x2c] - lsl r6, r6, #0x4 - add r3, r1, r0 - ldr r0, [sp, #0x18] - orr r5, r7 - str r0, [sp, #0x0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r6, r0, r6 - ldr r0, =0x00000000 - ldr r2, [sp, #0x8] - adc r0, r5 - lsr r5, r6, #0x1b - lsl r0, r0, #0x5 - orr r0, r5 - ldr r5, [sp, #0x0] - lsl r6, r6, #0x5 - add r6, r5, r6 - ldr r5, =0x00000000 - adc r5, r0 - lsr r0, r6, #0x1b - lsl r5, r5, #0x5 - orr r5, r0 - lsl r0, r6, #0x5 - add r6, r1, r0 - ldr r1, =0x00000000 - adc r1, r5 - lsr r0, r6, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - lsl r0, r6, #0x6 - add r5, r2, r0 - ldr r2, =0x00000000 - adc r2, r1 - lsr r0, r5, #0x1a - lsl r1, r2, #0x6 - orr r1, r0 - lsl r0, r5, #0x6 - add r2, r3, r0 - ldr r0, =0x00000000 - str r2, [r4, #0x0] - adc r0, r1 - str r0, [r4, #0x4] - ldr r1, =0x6C078965 - ldr r0, =0x5D588B65 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, =0x00269EC3 - str r0, [r4, #0x10] - mov r0, #0x0 - str r0, [r4, #0x14] - add sp, #0x20 - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_020312BC(u32 param0) +{ + push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, + #0x4 bl GF_RTC_CopyDateTime ldr r0, + = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, + [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, + [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, + [ sp, #0x4 ] add r6, r0, + r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, + #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, + = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, + #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, + #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, + r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, + r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, + = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, + = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, + #0x20 pop + { + r3 - r7, pc + } } #endif extern void FUN_0202D830(u8 *param0, u32 param1); -THUMB_FUNC void FUN_02031354(u32 param0) { +THUMB_FUNC void FUN_02031354(u32 param0) +{ FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); } - -THUMB_FUNC u32 FUN_02031370() { +THUMB_FUNC u32 FUN_02031370() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); } -THUMB_FUNC u32 FUN_02031388() { +THUMB_FUNC u32 FUN_02031388() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); } -THUMB_FUNC void FUN_020313A0(u8 param0) { +THUMB_FUNC void FUN_020313A0(u8 param0) +{ UNK_021C59F4.unk04->unk687 = param0; } -THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk677[param1] = param0; } } -THUMB_FUNC u32 FUN_020313CC(u32 param0) { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { +THUMB_FUNC u32 FUN_020313CC(u32 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) + { return UNK_021C59F4.unk04->unk677[param0]; } } @@ -2342,18 +2391,23 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) { extern u32 MOD04_021D8624(); -THUMB_FUNC u32 FUN_020313EC() { - if (FUN_02033534() < 0x13) { +THUMB_FUNC u32 FUN_020313EC() +{ + if (FUN_02033534() < 0x13) + { return 0; } return MOD04_021D8624(); } -THUMB_FUNC void FUN_02031400(u32 param0) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_02031400(u32 param0) +{ + if (FUN_02033534() >= 0x13) + { UNK_021C59F4.unk04->unk630 = param0; - if (param0 != 0) { + if (param0 != 0) + { UNK_021C59F4.unk04->unk634 = 0; UNK_021C59F4.unk04->unk638[0] = 0; UNK_021C59F4.unk04->unk638[1] = 0; @@ -2361,22 +2415,25 @@ THUMB_FUNC void FUN_02031400(u32 param0) { } } - -THUMB_FUNC u32 FUN_02031438() { - if (UNK_021C59F4.unk04->unk681 != 0) { +THUMB_FUNC u32 FUN_02031438() +{ + if (UNK_021C59F4.unk04->unk681 != 0) + { return 1; } return 0; } - -THUMB_FUNC void FUN_02031454() { +THUMB_FUNC void FUN_02031454() +{ UNK_021C59F4.unk04->unk689 = 1; } -THUMB_FUNC void FUN_02031468() { - if (UNK_021C59F4.unk04 != NULL) { - UNK_021C59F4.unk04->unk68A = 1; +THUMB_FUNC void FUN_02031468() +{ + if (UNK_021C59F4.unk04 != NULL) + { + UNK_021C59F4.unk04->unk68A = 1; } } \ No newline at end of file -- cgit v1.2.3 From 8e5d36dc053928ecc36028e818c8a3f8fd2cc9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:55:22 +0200 Subject: fix asm functions --- arm9/src/unk_0202F150.c | 597 ++++++++++++++++++++++++++---------------------- 1 file changed, 326 insertions(+), 271 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 15a67f8d..7973702c 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -763,86 +763,98 @@ THUMB_FUNC u32 FUN_0202FE2C(int param0) #else THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push{ r3 - r7, lr } sub sp, #0x10 str r0, [ sp, #0x0 ] mov r0, #0x0 str r0, - [ sp, #0x4 ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02031228 str r0, - [ sp, #0xc ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0202D858 add r0, r0, - #0x1 mov r7, #0x0 str r0, [ sp, #0x8 ] cmp r0, #0x0 ble _0202FED0 ldr r0, - [ sp, #0x0 ] mov r1, #0xc0 add r6, r0, #0x0 add r4, r7, #0x0 add r5, r7, #0x0 mul r6, - r1 _0202FE66 : ldr r0, - = UNK_021C59F4 ldr r1, - [ r0, #0x4 ] ldr r0, - = 0x0000047C add r0, - r1, - r0 add r0, - r0, - r4 bl FUN_0202D4BC lsl r0, - r7, - #0x10 lsr r0, - r0, - #0x10 bl FUN_02030E7C cmp r0, - #0x0 beq _0202FE90 ldr r0, - = UNK_021C59F4 mov r1, - #0xe ldr r0, - [ r0, #0x4 ] add r0, - r6, - r0 add r2, - r5, - r0 mov r0, - #0x55 lsl r0, - r0, - #0x2 strb r1, - [ r2, r0 ] _0202FE90 : ldr r0, - = UNK_021C59F4 mov r2, - #0x55 ldr r1, - [ r0, #0x4 ] ldr r0, - = 0x0000047C lsl r2, - r2, - #0x2 add r0, - r1, - r0 add r1, - r1, - r2 add r1, - r1, - r6 ldr r2, - [ sp, #0xc ] add r0, - r0, - r4 add r1, - r1, - r5 bl FUN_0202D400 ldr r0, - = UNK_021C59F4 ldr r0, - [ r0, #0x4 ] add r0, - r6, - r0 add r1, - r5, - r0 mov r0, - #0x55 lsl r0, - r0, - #0x2 ldrb r0, - [ r1, r0 ] cmp r0, - #0xe bne _0202FEC2 ldr r0, - [ sp, #0x4 ] add r0, - r0, - #0x1 str r0, - [ sp, #0x4 ] _0202FEC2 : ldr r0, - [ sp, #0xc ] add r7, - r7, - #0x1 add r5, - r5, - r0 ldr r0, - [ sp, #0x8 ] add r4, - #0xc cmp r7, - r0 blt _0202FE66 _0202FED0 - : ldr r1, - [ sp, #0x4 ] ldr r0, - [ sp, #0x8 ] cmp r1, - r0 bne _0202FEDE add sp, - #0x10 mov r0, - #0x0 pop{ r3 - r7, pc } _0202FEDE : mov r0, - #0x1 add sp, - #0x10 pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + // clang-format on } #endif @@ -1125,7 +1137,6 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } - THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) @@ -1348,173 +1359,173 @@ THUMB_FUNC void FUN_02030674() #else THUMB_FUNC asm void FUN_02030674() { - push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, - = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, - #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, - #0xf0 tst r3, - r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, - #0x2 bne _020306D0 mov r0, - #0x20 tst r0, - r1 beq _020306A4 mov r0, - #0x10 orr r0, - r6 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306A4 : mov r0, - #0x10 tst r0, - r1 beq _020306B2 mov r0, - #0x20 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306B2 : mov r0, - #0x40 tst r0, - r1 beq _020306C0 mov r0, - #0x80 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306C0 : mov r0, - #0x80 tst r0, - r1 beq _0203077E mov r0, - #0x40 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 b _0203077E _020306D0 : add r0, - r2, - #0x2 ldrh r0, - [ r5, r0 ] cmp r0, - #0x0 beq _020306F2 add r4, - r0, - #0x0 add r0, - r2, - #0x1 ldrsb r0, - [ r5, r0 ] sub r1, - r0, - #0x1 add r0, - r2, - #0x1 strb r1, - [ r5, r0 ] ldr r1, - [ r7, #0x4 ] ldrsb r0, - [ r1, r0 ] cmp r0, - #0x0 bge _0203077E add r0, - r2, - #0x2 strh r6, - [ r1, r0 ] b _0203077E _020306F2 : add r0, - r2, - #0x0 sub r0, - #0x34 add r6, - r5, - r0 sub r2, - #0x34 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r5, r2 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul add r3, - r0, - #0x0 add r2, - r1, - #0x0 ldr r0, - [ r6, #0x10 ] ldr r1, - [ r6, #0x14 ] add r0, - r0, - r3 adc r1, - r2 ldr r2, - = 0x000005F8 str r0, - [ r5, r2 ] mov r2, - #0x0 str r1, - [ r6, #0x4 ] lsr r0, - r1, - #0x1e lsl r1, - r2, - #0x2 orr r1, - r0 cmp r1, - #0x3 bhi _02030746 add r0, - r1, - r1 add r0, - pc ldrh r0, - [ r0, #0x6 ] lsl r0, - r0, - #0x10 asr r0, - r0, - #0x10 add pc, - r0 _02030730 - : // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, - r0, - #0x0 // case 0 - lsl r2, - r1, - #0x0 // case 1 - lsl r6, - r1, - #0x0 // case 2 - lsl r2, - r2, - #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 - _02030738 : mov r4, - #0x20 b _02030746 _0203073C : mov r4, - #0x10 b _02030746 _02030740 : mov r4, - #0x40 b _02030746 _02030744 : mov r4, - #0x80 _02030746 : ldr r0, - = UNK_021C59F4 ldr r5, - [ r0, #0x4 ] ldr r0, - = 0x000005F8 add r6, - r5, - r0 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r6, #0x0 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul ldr r3, - [ r6, #0x10 ] ldr r2, - [ r6, #0x14 ] add r0, - r3, - r0 adc r2, - r1 ldr r1, - = 0x000005F8 mov r3, - #0x0 str r0, - [ r5, r1 ] str r2, - [ r6, #0x4 ] lsr r0, - r2, - #0x1c lsl r2, - r3, - #0x4 orr r2, - r0 add r0, - r1, - #0x0 add r0, - #0x35 strb r2, - [ r5, r0 ] ldr r0, - = UNK_021C59F4 add r1, - #0x36 ldr r0, - [ r0, #0x4 ] strh r4, - [ r0, r1 ] _0203077E : ldr r2, - = UNK_021C59F4 ldr r1, - = 0x00000628 ldr r5, - [ r2, #0x4 ] mov r0, - #0xf0 ldrh r3, - [ r5, r1 ] bic r3, - r0 strh r3, - [ r5, r1 ] ldr r2, - [ r2, #0x4 ] ldrh r0, - [ r2, r1 ] add r0, - r0, - r4 strh r0, - [ r2, r1 ] _02030794 : pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} + // clang-format on } #endif @@ -1569,7 +1580,6 @@ THUMB_FUNC void FUN_0203086C() { } - THUMB_FUNC u32 FUN_02030870(u8 *param0) { if (UNK_021C59F4.unk04->unk62A != 0) @@ -1830,8 +1840,6 @@ extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - - THUMB_FUNC void FUN_02030C8C( s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { @@ -2113,7 +2121,6 @@ THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } - THUMB_FUNC void FUN_02031088() { if (UNK_021C59F4.unk04 != NULL) @@ -2324,25 +2331,73 @@ THUMB_FUNC void FUN_020312BC(u32 param0) #else THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, - #0x4 bl GF_RTC_CopyDateTime ldr r0, - = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, - [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, - [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, - [ sp, #0x4 ] add r6, r0, - r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, - #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, - = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, - #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, - #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, - r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, - r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, - = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, - = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, - #0x20 pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on } #endif -- cgit v1.2.3 From f85c9d736760dace9ce94560747c9985a3e93ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:21:51 +0200 Subject: fix warnings --- arm9/src/unk_0202F150.c | 307 ++++++++++++++++++++++-------------------------- 1 file changed, 142 insertions(+), 165 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 7973702c..62ae9437 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -11,10 +11,57 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D804(u32 *param0); +extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D804(u8 *param0); +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(int)); +extern u32 FUN_0202E66C(u32 param0, u32 param1); +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u8 *param0); +extern u32 FUN_0202E9E8(u32 param0); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); +extern void FUN_02031CDC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); +extern void FUN_0202E538(); +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern int FUN_0202D498(void *param0); +extern u16 FUN_0202CB8C(); +extern s64 _ll_mul(s64, s64); +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); +extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); +extern u32 MOD04_021D8018(); +extern u32 FUN_0202EDF8(); +extern u16 FUN_0202D19C(); +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); +extern u32 FUN_0202D884(u16 param0); +extern void FUN_0202F05C(); +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); +extern void FUN_0202D830(u8 *param0, u32 param1); +extern u32 MOD04_021D8624(); THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -22,7 +69,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) UNK_021C59F4.unk00 = 0; if (param0 != 0) { - u32 res = FUN_0202D858(FUN_02033534()) + 1; + u32 res = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_021C59F4.unk04 != 0) { @@ -79,7 +126,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) FUN_0202F2F0(); } - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + FUN_020312BC(UNK_021C59F4.unk04->unk5F8); if (r4 == 0) { @@ -100,7 +147,7 @@ THUMB_FUNC void FUN_0202F2F0() UNK_021C59F4.unk04->unk67F = 0; UNK_021C59F4.unk04->unk680 = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -122,7 +169,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -131,7 +178,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -188,7 +235,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk62C = 0; UNK_021C59F4.unk04->unk62D = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -210,7 +257,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -219,7 +266,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -264,7 +311,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk688 = 0; } -THUMB_FUNC void FUN_0202F820(u32 param0) +THUMB_FUNC void FUN_0202F820(int param0) { UNK_021C59F4.unk04->unk65F[param0] = 0; @@ -292,21 +339,18 @@ THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + if (FUN_02030E7C((u16)i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) { FUN_0202F820(i); } } } -THUMB_FUNC void FUN_0202F910(u32 param0) +THUMB_FUNC void FUN_0202F910(int param0) { FUN_0202F820(param0); } -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) { u32 ret = 1; @@ -321,8 +365,6 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) return ret; } -extern u32 FUN_0202E66C(u32 param0, u32 param1); - THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { u32 ret = 1; @@ -423,13 +465,6 @@ THUMB_FUNC u32 FUN_0202FA48() return 0; } -extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); -extern void FUN_020314D0(); -extern void FUN_0202DBA4(); -extern void FUN_0200CAB4(u32 param0); -extern void FUN_0202D824(u32 *param0); - THUMB_FUNC void FUN_0202FA5C() { u32 r4 = 0; @@ -468,16 +503,11 @@ THUMB_FUNC void FUN_0202FA5C() } } -extern u32 FUN_0202E9E8(u32 param0); - THUMB_FUNC u32 FUN_0202FB18(u32 param0) { return FUN_0202E9E8(param0); } -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); - THUMB_FUNC void FUN_0202FB20() { if (UNK_021C59F4.unk00 != 0) @@ -510,12 +540,6 @@ THUMB_FUNC void FUN_0202FB58() } } -extern void FUN_02031CDC(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); - THUMB_FUNC u32 FUN_0202FB80() { FUN_02031CDC(); @@ -598,8 +622,6 @@ THUMB_FUNC void FUN_0202FC80() UNK_021C59F4.unk00 = r4; } -extern void FUN_0202E538(); - THUMB_FUNC void FUN_0202FCA8() { u8 r4 = UNK_021C59F4.unk00; @@ -615,9 +637,6 @@ THUMB_FUNC void FUN_0202FCA8() UNK_021C59F4.unk00 = r4; } -extern u32 MOD04_021D78FC(void *param0, u32 param1); -extern u32 FUN_0202CBD4(); - THUMB_FUNC void FUN_0202FCCC() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -722,9 +741,6 @@ THUMB_FUNC void FUN_0202FCCC() FUN_0203050C(); } -extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - #ifdef NONMATCHING THUMB_FUNC u32 FUN_0202FE2C(int param0) { @@ -858,8 +874,6 @@ _0202FEDE: } #endif -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); - THUMB_FUNC void FUN_0202FEEC() { if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) @@ -867,8 +881,8 @@ THUMB_FUNC void FUN_0202FEEC() return; } - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534()) + 1; + int st0 = FUN_02031228((u16)FUN_02033534()); + int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_02105D59 == 2 || UNK_02105D59 == 0) { @@ -897,7 +911,7 @@ THUMB_FUNC void FUN_0202FEEC() { for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { UNK_021C59F4.unk04->unk638[i]++; } @@ -909,12 +923,12 @@ THUMB_FUNC void FUN_0202FEEC() FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + UNK_021C59F4.unk04->unk680 = (u8)(1 - UNK_021C59F4.unk04->unk680); } for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + if (FUN_02030E7C((u16)i) == 0 && FUN_0202FA28() == 1) { UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } @@ -927,8 +941,6 @@ THUMB_FUNC void FUN_0202FEEC() } } -extern u32 MOD04_021D79B4(void *param0, u32 param1); - THUMB_FUNC void FUN_02030074() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -1006,7 +1018,7 @@ THUMB_FUNC void FUN_02030074() { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) + if (FUN_02030E7C((u16)r4) != 0) { if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { @@ -1049,10 +1061,10 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) FUN_0203026C(param0, param1, param2); } -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +#pragma unused(param0) +#pragma unused(param2) UNK_021C59F4.unk04->unk634--; if (param1 == 0) { @@ -1086,22 +1098,21 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) UNK_021C59F4.unk04->unk682 = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534()) + 1; + int r6 = FUN_02031228((u16)FUN_02033534()); + int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4 = 0; while (r4 < st4) { - u32 new; + if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1 << r4); + UNK_021C59F4.unk04->unk65C &= ~(1 << r4); } else { - new = UNK_021C59F4.unk04->unk65C | (1 << r4); + UNK_021C59F4.unk04->unk65C |= (1 << r4); } - UNK_021C59F4.unk04->unk65C = new; if (param1[0] == 0xff) { @@ -1118,7 +1129,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) else { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, (u32)(r6 - 1), 0x5E6); param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; @@ -1131,13 +1142,13 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) } UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + UNK_021C59F4.unk04->unk65C <<= 8; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + UNK_021C59F4.unk04->unk65C += param1[2]; FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) { @@ -1150,10 +1161,9 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) FUN_020303F4(param0, param1, param2); } -extern int FUN_0202D498(void *param0); - THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +#pragma unused(param2) UNK_021C59F4.unk04->unk638[param0]--; if (param1 == 0) { @@ -1168,12 +1178,12 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) UNK_021C59F4.unk04->unk667[param0] = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r6 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, (u32)r6, 0x65E); } UNK_021C59F4.unk04->unk65F[param0]++; @@ -1210,8 +1220,6 @@ THUMB_FUNC void FUN_020304F0(u32 param0) ErrorHandling(); } -extern u16 FUN_0202CB8C(); - THUMB_FUNC void FUN_0203050C() { if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) @@ -1219,17 +1227,17 @@ THUMB_FUNC void FUN_0203050C() return; } - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r4 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1255,13 +1263,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) { UNK_02105D58--; return; } - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1271,15 +1279,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; } } -extern s64 _ll_mul(s64, s64); - #ifdef NONMATCHING THUMB_FUNC void FUN_02030674() { @@ -1548,11 +1554,11 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { UNK_021C59F4.unk04->unk610[param1] = 0; - u32 r7 = param0[0] & 0x10; + int r7 = param0[0] & 0x10; if (r7 == 0x10) { - u8 r5 = param0[0] & 0xc; + u8 r5 = (u8)(param0[0] & 0xc); if (r5 == 0) { UNK_021C59F4.unk04->unk610[param1] |= 0x40; @@ -1570,7 +1576,7 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (u8)((param0[0] >> 5) & 0x7); } return 1; @@ -1623,15 +1629,11 @@ THUMB_FUNC u32 FUN_02030870(u8 *param0) return 0; } -extern u32 FUN_0202D4E4(u8 *param0); -extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - THUMB_FUNC u32 FUN_02030930(u8 *param0) { - int r5 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r5 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); - u8 r0; if (UNK_021C59F4.unk04->unk684 == 0) { param0[0] = 0; @@ -1660,7 +1662,7 @@ THUMB_FUNC u32 FUN_02030930(u8 *param0) { int st0[2]; st0[1] = r5 - 1; - st0[0] = param0 + 1; + st0[0] = (int)param0 + 1; if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { UNK_021C59F4.unk04->unk684 = 1; @@ -1690,16 +1692,16 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) } u16 res = FUN_0202CB8C(); - param0[2] = res >> 8; - param0[3] = res; + param0[2] = (u8)(res >> 8); + param0[3] = (u8)res; int st0[2]; st0[1] = 0xbb; - st0[0] = param0 + 5; + st0[0] = (int)param0 + 5; if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { UNK_021C59F4.unk04->unk685 = 0; - param0[4] = 0xbb - st0[1]; + param0[4] = (u8)(0xbb - st0[1]); return; } @@ -1708,9 +1710,7 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) param0[4] = 0xbb; } -extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); - -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1730,7 +1730,7 @@ THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1750,7 +1750,7 @@ THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1781,7 +1781,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1812,7 +1812,7 @@ THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1) { return FUN_02030BC4(param0, param1, 0); } @@ -1822,27 +1822,19 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); - -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) { FUN_0202D934(param0, param1, param2, param3); - - *(u8 *)(param4 + 0xa) = 0xee; - *(u16 *)(param4 + 0x8) = 0xffff; - *(u32 *)(param4 + 0x4) = 0; - *(u32 *)(param4) = 0; + param4->unk0a = 0xee; + param4->unk08 = 0xffff; + param4->unk04 = 0; + param4->unk00 = 0; } -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); -extern s16 FUN_0202D9A0(u32 param0); -extern u32 FUN_0202DA04(u32 param0); -extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) + s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) { +#pragma unused(param3) while (FUN_0202D478(param0) != 0) { @@ -1857,7 +1849,7 @@ THUMB_FUNC void FUN_02030C8C( } int st10 = param0[2]; - param4->unk0a = r7; + param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) { @@ -1872,17 +1864,17 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = st10; + param0[2] = (s16)st10; return; } - r4 = FUN_0202D41C(param0) << 8; + r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; } - param4->unk08 = r4; + param4->unk08 = (u16)r4; } if (FUN_0202DA04(r7) != 0) @@ -1896,7 +1888,7 @@ THUMB_FUNC void FUN_02030C8C( if (param4->unk04 != 0) { - MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, (u32)stc); } if ((int)(param4->unk00 += stc) < (int)r4) @@ -1904,18 +1896,18 @@ THUMB_FUNC void FUN_02030C8C( continue; } - FUN_02030C70(param1, r7, r4, param4->unk04, param4); + FUN_02030C70(param1, r7, (u32)r4, param4->unk04, param4); } else { if (FUN_0202D478(param0) >= r4) { - FUN_0202D400(param0, param2, r4); - FUN_02030C70(param1, r7, r4, param2, param4); + FUN_0202D400(param0, param2, (u32)r4); + FUN_02030C70(param1, r7, (u32)r4, param2, param4); } else { - param0[2] = st10; + param0[2] = (s16)st10; return; } } @@ -1929,11 +1921,9 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) { - UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, @@ -1949,7 +1939,7 @@ THUMB_FUNC void FUN_02030DFC() { if (UNK_021C59F4.unk04->unk68B == 0) { - int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4; for (r4 = 0; r4 < r7; r4++) { @@ -1958,18 +1948,16 @@ THUMB_FUNC void FUN_02030DFC() { FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], - r4, + (u32)r4, UNK_021C59F4.unk04->unk460, 0, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + &UNK_021C59F4.unk04->unk58C[r4]); } } } } } -extern u32 MOD04_021D8018(); - THUMB_FUNC u32 FUN_02030E7C(u16 param0) { if (UNK_021C59F4.unk04 == NULL) @@ -2035,7 +2023,7 @@ THUMB_FUNC u32 FUN_02030F20() u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { r4++; } @@ -2044,8 +2032,6 @@ THUMB_FUNC u32 FUN_02030F20() return r4; } -extern u32 FUN_0202EDF8(); - THUMB_FUNC u32 FUN_02030F40() { if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) @@ -2099,13 +2085,13 @@ THUMB_FUNC u32 FUN_02030FE0() { if (UNK_021C59F4.unk04 != NULL) { - return UNK_021C59F4.unk04->unk628 & 0x8000; + return (u32)(UNK_021C59F4.unk04->unk628 & 0x8000); } return 1; } -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2) { if (FUN_0202FA28() == 1) { @@ -2116,7 +2102,7 @@ THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); } -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2) { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } @@ -2162,6 +2148,8 @@ THUMB_FUNC void FUN_02031088() THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0) { UNK_021C59F4.unk04->unk67B = 1; @@ -2171,6 +2159,8 @@ THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() != 0) { UNK_021C59F4.unk04->unk67C = param2[0]; @@ -2180,6 +2170,8 @@ THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { FUN_0202F9E0(*param2); @@ -2187,8 +2179,6 @@ THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) } } -extern u16 FUN_0202D19C(); - THUMB_FUNC u16 FUN_02031190() { if (UNK_021C59F4.unk04 != NULL) @@ -2198,7 +2188,7 @@ THUMB_FUNC u16 FUN_02031190() u32 res = MOD04_021D8018(); if (res != 0xffffffff) { - return res; + return (u16)res; } } else @@ -2230,9 +2220,6 @@ THUMB_FUNC u32 FUN_020311E8() return FUN_0202EE24(); } -extern void FUN_020334E8(u32 param0, u32 param1); -extern u32 FUN_0202EE60(); - THUMB_FUNC u32 FUN_020311F0() { if (FUN_02031280() != 0) @@ -2266,14 +2253,12 @@ THUMB_FUNC int FUN_02031228(u16 param0) THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) + 1; + return FUN_0202D858((u16)param0) + 1; } -extern u32 FUN_0202D884(u16 param0); - THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) + 1; + return FUN_0202D884((u16)param0) + 1; } THUMB_FUNC void FUN_02031268(u8 param0) @@ -2294,23 +2279,19 @@ THUMB_FUNC u8 FUN_02031280() return 0; } -extern void FUN_0202F05C(); - THUMB_FUNC void FUN_0203129C() { if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { - u32 st0; + u8 st0; FUN_02030C4C(2, &st0); } FUN_0202F05C(); } -extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) +THUMB_FUNC void FUN_020312BC(s64 *param0) { RTCDate st10; RTCTime st4; @@ -2329,7 +2310,7 @@ THUMB_FUNC void FUN_020312BC(u32 param0) (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) +THUMB_FUNC asm void FUN_020312BC(s64 *param0) { // clang-format off push {r3-r7, lr} @@ -2401,8 +2382,6 @@ THUMB_FUNC asm void FUN_020312BC(u32 param0) } #endif -extern void FUN_0202D830(u8 *param0, u32 param1); - THUMB_FUNC void FUN_02031354(u32 param0) { FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); @@ -2444,8 +2423,6 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) return param0; } -extern u32 MOD04_021D8624(); - THUMB_FUNC u32 FUN_020313EC() { if (FUN_02033534() < 0x13) -- cgit v1.2.3 From f5eabfb0d118057d2533d3bd2558a560bd15a5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:38:22 +0200 Subject: polish struct usage --- arm9/src/unk_0202F150.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 62ae9437..df7b3d37 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -2,7 +2,7 @@ struct { u8 unk00; - struct UnkStruct1 *unk04; + struct UnkStruct0202F150 *unk04; } UNK_021C59F4; vu8 UNK_02105D58 = 4; @@ -11,9 +11,9 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); extern void FUN_0202D804(u8 *param0); extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); extern void FUN_0202D330(void (*param0)(int)); @@ -36,10 +36,10 @@ extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern int FUN_0202D400(struct UnkStruct0202F150_sub1 *param0, void *param1, u32 param2); extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern void FUN_0202D3A4(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2, u32 param3); extern int FUN_0202D498(void *param0); extern u16 FUN_0202CB8C(); extern s64 _ll_mul(s64, s64); @@ -47,8 +47,8 @@ extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); +extern int FUN_0202D478(struct UnkStruct0202F150_sub1 *param0); +extern u32 FUN_0202D41C(struct UnkStruct0202F150_sub1 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); @@ -77,7 +77,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1822,7 +1822,7 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1832,7 +1832,7 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s } THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) + struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) @@ -1848,7 +1848,7 @@ THUMB_FUNC void FUN_02030C8C( } } - int st10 = param0[2]; + int st10 = param0->unk04; param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) @@ -1864,14 +1864,14 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); - st10 = param0[2]; + st10 = param0->unk04; } param4->unk08 = (u16)r4; @@ -1907,7 +1907,7 @@ THUMB_FUNC void FUN_02030C8C( } else { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } } @@ -1921,13 +1921,13 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + (struct UnkStruct0202F150_sub2 *)&UNK_021C59F4.unk04->unk5EC); } } } @@ -1944,10 +1944,10 @@ THUMB_FUNC void FUN_02030DFC() for (r4 = 0; r4 < r7; r4++) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + FUN_02030C8C(&UNK_021C59F4.unk04->unk4E8[r4], (u32)r4, UNK_021C59F4.unk04->unk460, 0, -- cgit v1.2.3 From 228f18356cffa8cf51bc7cc655569b50d5e7bf13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 20:57:11 +0200 Subject: fix global.inc --- arm9/global.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'arm9') diff --git a/arm9/global.inc b/arm9/global.inc index cfb7de83..9df9973e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8513,4 +8513,7 @@ .extern CARDi_InitCommon .extern MonNotFaintedOrEgg .extern CountAlivePokemon - +.extern FUN_02025484 +.extern FUN_02025490 +.extern FUN_020254A0 +.extern FUN_020254B4 -- cgit v1.2.3 From c34e74ae7cdd91bef14cf5f160329b5cbf3c9504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 23:24:10 +0200 Subject: formatting --- arm9/src/unk_0202F150.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'arm9') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index df7b3d37..23a7de85 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -77,7 +77,8 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); + struct UnkStruct0202F150 *ptr = + (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1262,8 +1263,10 @@ THUMB_FUNC void FUN_0203050C() { UNK_02105D58++; - if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], + (u16)r4, + 0xe, + FUN_020304D4) == 0) { UNK_02105D58--; return; @@ -1822,7 +1825,8 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C70( + u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1831,8 +1835,11 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s param4->unk00 = 0; } -THUMB_FUNC void FUN_02030C8C( - struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, + u32 param1, + void *param2, + u32 param3, + struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) -- cgit v1.2.3