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 +- include/scrcmd.h | 28 +- include/script.h | 4 +- 10 files changed, 12333 insertions(+), 12495 deletions(-) delete mode 100644 arm9/asm/scrcmd.s create mode 100644 arm9/asm/scrcmd_asm.s create mode 100644 arm9/src/scrcmd.c 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; diff --git a/include/scrcmd.h b/include/scrcmd.h index 5ebec947..0aa3fd75 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -1,6 +1,32 @@ #ifndef POKEDIAMOND_SCRCMD_H #define POKEDIAMOND_SCRCMD_H -BOOL ScrCmd_givemon(struct ScriptContext* ctx); +#include "global.h" +#include "script.h" + +//scrcmd.c +BOOL ScrCmd_Nop(struct ScriptContext* ctx); +BOOL ScrCmd_Dummy(struct ScriptContext* ctx); +BOOL ScrCmd_End(struct ScriptContext* ctx); +BOOL ScrCmd_Wait(struct ScriptContext* ctx); +BOOL ScrCmd_DebugWatch(struct ScriptContext* ctx); +BOOL ScrCmd_LoadByte(struct ScriptContext* ctx); +BOOL ScrCmd_LoadWord(struct ScriptContext* ctx); +BOOL ScrCmd_LoadByteFromAddr(struct ScriptContext* ctx); +BOOL ScrCmd_WriteByteToAddr(struct ScriptContext* ctx); +BOOL ScrCmd_SetPtrByte(struct ScriptContext* ctx); +BOOL ScrCmd_CopyLocal(struct ScriptContext* ctx); +BOOL ScrCmd_CopyByte(struct ScriptContext* ctx); +BOOL ScrCmd_CompareLocalToLocal(struct ScriptContext* ctx); +BOOL ScrCmd_CompareLocalToValue(struct ScriptContext* ctx); +BOOL ScrCmd_CompareLocalToAddr(struct ScriptContext* ctx); +BOOL ScrCmd_CompareAddrToLocal(struct ScriptContext* ctx); +BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx); +BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx); +BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx); +BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx); + +//scrcmd_18.c +BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); #endif //POKEDIAMOND_SCRCMD_H diff --git a/include/script.h b/include/script.h index 8fd7696f..c25751e4 100644 --- a/include/script.h +++ b/include/script.h @@ -15,7 +15,7 @@ struct ScriptContext u8 stackDepth; u8 mode; u8 comparisonResult; - u8 (*nativePtr)(struct ScriptContext *); + BOOL (*nativePtr)(struct ScriptContext *); const u8 *scriptPtr; const u8 *stack[20]; ScrCmdFunc *cmdTable; @@ -31,7 +31,7 @@ struct ScriptContext void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, u32 cmdCount); u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr); -void SetupNativeScript(struct ScriptContext *ctx, u8 (*ptr)(struct ScriptContext *)); +void SetupNativeScript(struct ScriptContext *ctx, BOOL (*ptr)(struct ScriptContext *)); void StopScript(struct ScriptContext *ctx); void FUN_02038B6C(struct ScriptContext *ctx, s32 r1); u8 RunScriptCommand(struct ScriptContext *ctx); -- 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 +++++++++++++++++++++++ include/scrcmd.h | 25 +++ include/script.h | 2 +- 6 files changed, 330 insertions(+), 580 deletions(-) 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; +} diff --git a/include/scrcmd.h b/include/scrcmd.h index 0aa3fd75..a8c7ee4f 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -25,6 +25,31 @@ BOOL ScrCmd_CompareAddrToValue(struct ScriptContext* ctx); BOOL ScrCmd_CompareAddrToAddr(struct ScriptContext* ctx); BOOL ScrCmd_CompareVarToValue(struct ScriptContext* ctx); BOOL ScrCmd_CompareVarToVar(struct ScriptContext* ctx); +BOOL ScrCmd_RunScript(struct ScriptContext* ctx); +BOOL ScrCmd_RunScriptWait(struct ScriptContext* ctx); +BOOL ScrCmd_RestartCurrentScript(struct ScriptContext* ctx); +BOOL ScrCmd_GoTo(struct ScriptContext* ctx); +BOOL ScrCmd_ObjectGoTo(struct ScriptContext* ctx); +BOOL ScrCmd_BgGoTo(struct ScriptContext* ctx); +BOOL ScrCmd_DirectionGoTo(struct ScriptContext* ctx); +BOOL ScrCmd_Call(struct ScriptContext* ctx); +BOOL ScrCmd_Return(struct ScriptContext* ctx); +BOOL ScrCmd_GoToIf(struct ScriptContext* ctx); +BOOL ScrCmd_CallIf(struct ScriptContext* ctx); +BOOL ScrCmd_SetFlag(struct ScriptContext* ctx); +BOOL ScrCmd_ClearFlag(struct ScriptContext* ctx); +BOOL ScrCmd_CheckFlag(struct ScriptContext* ctx); +BOOL ScrCmd_CheckFlagVar(struct ScriptContext* ctx); +BOOL ScrCmd_SetFlagVar(struct ScriptContext* ctx); +BOOL ScrCmd_SetTrainerFlag(struct ScriptContext* ctx); +BOOL ScrCmd_ClearTrainerFlag(struct ScriptContext* ctx); +BOOL ScrCmd_CheckTrainerFlag(struct ScriptContext* ctx); +BOOL ScrCmd_AddVar(struct ScriptContext* ctx); +BOOL ScrCmd_SubVar(struct ScriptContext* ctx); +BOOL ScrCmd_SetVar(struct ScriptContext* ctx); +BOOL ScrCmd_CopyVar(struct ScriptContext* ctx); +BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx); +BOOL ScrCmd_Message(struct ScriptContext* ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); diff --git a/include/script.h b/include/script.h index c25751e4..de161889 100644 --- a/include/script.h +++ b/include/script.h @@ -22,7 +22,7 @@ struct ScriptContext u32 cmdCount; u32 data[4]; u32 unk74; - struct MsgData * unk78; + struct MsgData * msgData; u8 *unk7C; struct UnkStruct_0204639C * unk80; }; -- cgit v1.2.3 From 8007ef119665c3ce8e17a69d2230df3cfb6c6f10 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 13 Mar 2021 17:29:29 +0000 Subject: fix build --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 582fad70..4e0f34ea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,13 +18,13 @@ jobs: - name: Update and Install Software run: | sudo apt update - sudo ACCEPT_EULA=Y apt -y --fix-missing upgrade - sudo apt -y install g++-8-multilib linux-libc-dev binutils-arm-none-eabi + sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade + sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi sudo dpkg --add-architecture i386 wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport sudo apt-add-repository "deb https://dl.winehq.org/wine-builds/ubuntu $(lsb_release -cs) main" - sudo apt install --install-recommends winehq-stable + sudo apt -y --allow-downgrades install --install-recommends winehq-stable - name: Checkout Repo uses: actions/checkout@v2 - name: Setup Repo -- 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 ++++++++++++++++- include/scrcmd.h | 4 ++ 5 files changed, 61 insertions(+), 152 deletions(-) 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; +} + diff --git a/include/scrcmd.h b/include/scrcmd.h index a8c7ee4f..ece18d9a 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -50,6 +50,10 @@ BOOL ScrCmd_SetVar(struct ScriptContext* ctx); BOOL ScrCmd_CopyVar(struct ScriptContext* ctx); BOOL ScrCmd_SetOrCopyVar(struct ScriptContext* ctx); BOOL ScrCmd_Message(struct ScriptContext* ctx); +BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx); +BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); -- 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 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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 ------------------------------------ include/global.h | 2 + 6 files changed, 687 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 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 diff --git a/include/global.h b/include/global.h index e0e8cb22..be0e1870 100644 --- a/include/global.h +++ b/include/global.h @@ -14,6 +14,8 @@ #define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) +#define UNUSED __attribute__((unused)) + #ifndef IN_MAIN_C extern const u8 gGameLanguage; extern const u8 gGameVersion; -- 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(-) 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 ++-- include/event_data.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) 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 diff --git a/include/event_data.h b/include/event_data.h index e1d46348..1f0f090a 100644 --- a/include/event_data.h +++ b/include/event_data.h @@ -1,6 +1,8 @@ #ifndef GUARD_SCRIPT_STATE_H #define GUARD_SCRIPT_STATE_H +#include "save_block_2.h" + struct ScriptState { u16 vars[288]; -- 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 ++++++-- include/global.h | 2 -- 2 files changed, 6 insertions(+), 4 deletions(-) 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); diff --git a/include/global.h b/include/global.h index be0e1870..e0e8cb22 100644 --- a/include/global.h +++ b/include/global.h @@ -14,8 +14,6 @@ #define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) -#define UNUSED __attribute__((unused)) - #ifndef IN_MAIN_C extern const u8 gGameLanguage; extern const u8 gGameVersion; -- 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 ++++++++++++++++---------------- include/unk_02024E64.h | 27 +++++++++++++++++------ 6 files changed, 44 insertions(+), 31 deletions(-) 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)); } diff --git a/include/unk_02024E64.h b/include/unk_02024E64.h index b5cfaa6e..ed1bd447 100644 --- a/include/unk_02024E64.h +++ b/include/unk_02024E64.h @@ -1,15 +1,28 @@ +#ifndef POKEDIAMOND_UNK_02024E64_H +#define POKEDIAMOND_UNK_02024E64_H + #include "global.h" #include "MI_memory.h" #include "save_block_2.h" #include "string16.h" +struct UnkStruct_02024E64 { + u8 unk0[0xE][0x80]; + u8 unk700[0x24]; + u16 rival_name_buf[0x8]; + u16 unk734[0xB]; + u8 unk74A[2]; // might be padding +}; + THUMB_FUNC u32 FUN_02024E64(); -THUMB_FUNC void FUN_02024E6C(void *param0); -THUMB_FUNC void *FUN_02024EB4(struct SaveBlock2 *sav2); +THUMB_FUNC void FUN_02024E6C(struct UnkStruct_02024E64 *param0); +THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024EB4(struct SaveBlock2 *sav2); THUMB_FUNC void *FUN_02024EC0(struct SaveBlock2 *sav2); -THUMB_FUNC void *FUN_02024ECC(struct SaveBlock2 *sav2); +THUMB_FUNC struct UnkStruct_02024E64 *FUN_02024ECC(struct SaveBlock2 *sav2); THUMB_FUNC void *FUN_02024ED8(struct SaveBlock2 *sav2); -THUMB_FUNC u16 *FUN_02024EE8(void *buf); -THUMB_FUNC void FUN_02024EF4(u16 *buf, struct String *str); -THUMB_FUNC u16 *FUN_02024F0C(void *buf); -THUMB_FUNC void FUN_02024F18(u16 *buf, struct String *str); +THUMB_FUNC u16 *GetRivalNamePtr(struct UnkStruct_02024E64 *unk); +THUMB_FUNC void RivalsNameToU16Array(struct UnkStruct_02024E64 *unk, struct String *str); +THUMB_FUNC u16 *FUN_02024F0C(struct UnkStruct_02024E64 *unk); +THUMB_FUNC void FUN_02024F18(struct UnkStruct_02024E64 *unk, struct String *str); + +#endif -- 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 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(-) 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(-) 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 ++++----- include/scrcmd.h | 1 + include/script.h | 27 ++++++++++++++++++-- 7 files changed, 79 insertions(+), 98 deletions(-) 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; } diff --git a/include/scrcmd.h b/include/scrcmd.h index ece18d9a..16a58556 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -54,6 +54,7 @@ BOOL ScrCmd_MessageFrom(struct ScriptContext* ctx); BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); diff --git a/include/script.h b/include/script.h index de161889..5da251b5 100644 --- a/include/script.h +++ b/include/script.h @@ -10,6 +10,29 @@ struct ScriptContext; typedef u8 (*ScrCmdFunc)(struct ScriptContext *); typedef u8 Script[]; + +struct UnkStruct_020464D4 +{ + u16 unk0[4]; + u8 padding[0x108]; +}; + +struct UnkStruct_02046444 +{ + u8 padding[0x90]; + struct UnkStruct_020464D4 unk90[1]; //todo find size +}; + +struct UnkSavStruct80 +{ + u8 padding[0xC]; + struct SaveBlock2 *saveBlock2; + u8 padding2[0xC]; + u32 *mapId; + u8 padding3[0x88]; + struct UnkStruct_02046444 * unkA8; +}; + struct ScriptContext { u8 stackDepth; @@ -21,10 +44,10 @@ struct ScriptContext ScrCmdFunc *cmdTable; u32 cmdCount; u32 data[4]; - u32 unk74; + struct UnkStruct_0204639C * unk74; struct MsgData * msgData; u8 *unk7C; - struct UnkStruct_0204639C * unk80; + struct UnkSavStruct80 * unk80; }; #define ScriptReadByte(ctx) (*(ctx->scriptPtr++)) -- 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(-) 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 ++++++++++++++++++++-- include/scrcmd.h | 10 ++++ 5 files changed, 69 insertions(+), 128 deletions(-) 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); +} diff --git a/include/scrcmd.h b/include/scrcmd.h index 16a58556..f40f7841 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -4,6 +4,13 @@ #include "global.h" #include "script.h" +struct UnkStruct_0203A288 { + u8 unk0; + u8 unk1; + u8 unk2; + u8 padding[1]; +}; + //scrcmd.c BOOL ScrCmd_Nop(struct ScriptContext* ctx); BOOL ScrCmd_Dummy(struct ScriptContext* ctx); @@ -55,6 +62,9 @@ BOOL ScrCmd_MessageFrom2(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FC(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FD(struct ScriptContext* ctx); BOOL ScrCmd_Unk01FE(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01FF(struct ScriptContext* ctx); +BOOL ScrCmd_Unk026D(struct ScriptContext* ctx); +BOOL ScrCmd_Unk002C(struct ScriptContext* ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); -- 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 ------------------ include/heap.h | 34 ++- 9 files changed, 446 insertions(+), 538 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 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 diff --git a/include/heap.h b/include/heap.h index 6f04c5bc..abea9216 100644 --- a/include/heap.h +++ b/include/heap.h @@ -1,9 +1,37 @@ #ifndef POKEDIAMOND_HEAP_H #define POKEDIAMOND_HEAP_H -void * AllocFromHeap(u32 heap_id, u32 size); -void * AllocFromHeapAtEnd(u32 heap_id, u32 size); -void FreeToHeap(void * ptr); +#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; +}; + + +THUMB_FUNC void FUN_020166C8(u32 *param0, u32 param1, u32 param2, u32 pre_size); +THUMB_FUNC s32 FUN_020167F4(); +THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); +THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); +THUMB_FUNC void FUN_020168D0(u32 heap_id); +THUMB_FUNC u32 FUN_02016944(void *param0, u32 param1, u32 param2, u32 param3); +THUMB_FUNC void FUN_02016988(); +void *AllocFromHeap(u32 heap_id, u32 size); +void *AllocFromHeapAtEnd(u32 heap_id, u32 size); +void FreeToHeap(void *ptr); void FUN_02016A8C(u32 heap_id, void * ptr); +THUMB_FUNC u32 FUN_02016AF8(u32 param0); +THUMB_FUNC void FUN_02016B20(u32 param0, u32 param1, u32 param2); +THUMB_FUNC void FUN_02016B44(void *ptr, u32 param1); +THUMB_FUNC u32 FUN_02016B90(u32 param0); #endif //POKEDIAMOND_HEAP_H -- 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 +++++++++++++++++++++++++++++---------------------------- include/heap.h | 6 +++--- 2 files changed, 36 insertions(+), 35 deletions(-) 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; } diff --git a/include/heap.h b/include/heap.h index abea9216..478c85ea 100644 --- a/include/heap.h +++ b/include/heap.h @@ -5,8 +5,8 @@ struct UnkStruct_020166C8 { - u32 *unk_ptr1; - u32 *unk_ptr2; + void **unk_ptr1; + void **unk_ptr2; void **unk_ptr3; u16 *unk_ptr4; u8 *unk_ptr5; @@ -23,7 +23,7 @@ THUMB_FUNC u32 FUN_0201681C(u32 param0, u32 heap_id, u32 param2); THUMB_FUNC u32 FUN_02016828(u32 param0, u32 param1, u32 param2); THUMB_FUNC u32 FUN_02016834(u32 param0, u32 param1, u32 param2, s32 param3); THUMB_FUNC void FUN_020168D0(u32 heap_id); -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); THUMB_FUNC void FUN_02016988(); void *AllocFromHeap(u32 heap_id, u32 size); void *AllocFromHeapAtEnd(u32 heap_id, u32 size); -- 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(-) 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 ++++++++++++++++++++++++++------------------------------ include/heap.h | 18 ++++---- 2 files changed, 73 insertions(+), 84 deletions(-) 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(); diff --git a/include/heap.h b/include/heap.h index 478c85ea..69aedd9e 100644 --- a/include/heap.h +++ b/include/heap.h @@ -5,15 +5,15 @@ struct UnkStruct_020166C8 { - void **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; + void **unk00; + void **unk04; + void **unk08; + u16 *unk0c; + u8 *unk10; + u16 unk14; + u16 unk16; + u16 unk18; + u16 unk1a; }; -- 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(-) 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 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 ++++++++++++++++++++++++++ include/unk_02015E30.h | 21 +++++++++++++++ 3 files changed, 59 insertions(+), 72 deletions(-) delete mode 100644 arm9/asm/unk_02015E30.s create mode 100644 arm9/src/unk_02015E30.c create mode 100644 include/unk_02015E30.h 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 diff --git a/include/unk_02015E30.h b/include/unk_02015E30.h new file mode 100644 index 00000000..7d565beb --- /dev/null +++ b/include/unk_02015E30.h @@ -0,0 +1,21 @@ +#ifndef POKEDIAMOND_UNK_02015E30_H +#define POKEDIAMOND_UNK_02015E30_H + +#include "global.h" +#include "igt.h" + +struct UnkStruct_02015E30 +{ + u32 unk00; + struct IGT *unk04; + u64 unk08; + u32 unk10; + u32 unk14; + u64 unk18; +}; + +THUMB_FUNC void FUN_02015E30(); +THUMB_FUNC void FUN_02015E3C(struct IGT *igt); +THUMB_FUNC void FUN_02015E60(); + +#endif //POKEDIAMOND_UNK_02015E30_H \ 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 +- include/unk_02015E30.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 +} diff --git a/include/unk_02015E30.h b/include/unk_02015E30.h index 7d565beb..32a46d39 100644 --- a/include/unk_02015E30.h +++ b/include/unk_02015E30.h @@ -18,4 +18,4 @@ THUMB_FUNC void FUN_02015E30(); THUMB_FUNC void FUN_02015E3C(struct IGT *igt); THUMB_FUNC void FUN_02015E60(); -#endif //POKEDIAMOND_UNK_02015E30_H \ No newline at end of file +#endif //POKEDIAMOND_UNK_02015E30_H -- cgit v1.2.3