.include "asm/macros.inc" .include "global.inc" .rodata .public _020FA15C _020FA15C: .word sub_0203DEA4, sub_0203DEBC, sub_0203DED4, 0xFFFFFFFF .public _020FA16C _020FA16C: .word sub_0203DE74, sub_0203DEBC, sub_0203DED4, 0xFFFFFFFF .bss _021D4158: .space 0x4 .text thumb_func_start sub_0203DE74 sub_0203DE74: ; 0x0203DE74 push {r3, r4, r5, lr} add r5, r0, #0 bl OverlayManager_GetParentWork add r4, r0, #0 add r0, r5, #0 bl sub_0203DFE0 ldr r1, _0203DEA0 ; =_021D4158 str r0, [r1] ldr r1, [r4, #4] cmp r1, #0 beq _0203DE94 bl sub_02053620 b _0203DE98 _0203DE94: bl sub_0205353C _0203DE98: mov r0, #0 str r0, [r4, #4] mov r0, #1 pop {r3, r4, r5, pc} .balign 4, 0 _0203DEA0: .word _021D4158 thumb_func_end sub_0203DE74 thumb_func_start sub_0203DEA4 sub_0203DEA4: ; 0x0203DEA4 push {r3, lr} bl sub_0203DFE0 ldr r1, _0203DEB8 ; =_021D4158 str r0, [r1] bl sub_02053470 mov r0, #1 pop {r3, pc} nop _0203DEB8: .word _021D4158 thumb_func_end sub_0203DEA4 thumb_func_start sub_0203DEBC sub_0203DEBC: ; 0x0203DEBC push {r3, lr} bl OverlayManager_GetData bl sub_0203E0CC cmp r0, #0 beq _0203DECE mov r0, #1 pop {r3, pc} _0203DECE: mov r0, #0 pop {r3, pc} .balign 4, 0 thumb_func_end sub_0203DEBC .public ov60_021EAFE0 thumb_func_start sub_0203DED4 sub_0203DED4: ; 0x0203DED4 push {r3, lr} bl sub_0203E058 ldr r0, _0203DEE8 ; =SDK_OVERLAY_OVY_60_ID ldr r1, _0203DEEC ; =ov60_021EAFE0 bl RegisterMainOverlay mov r0, #1 pop {r3, pc} nop _0203DEE8: .word SDK_OVERLAY_OVY_60_ID _0203DEEC: .word ov60_021EAFE0 thumb_func_end sub_0203DED4 .public ov01_02206378 thumb_func_start sub_0203DEF0 sub_0203DEF0: ; 0x0203DEF0 push {r4, lr} add r4, r0, #0 ldr r0, [r4] ldr r0, [r0, #4] cmp r0, #0 beq _0203DF00 bl GF_AssertFail _0203DF00: ldr r0, [r4] ldr r0, [r0] cmp r0, #0 beq _0203DF0C bl GF_AssertFail _0203DF0C: ldr r0, _0203DF2C ; =SDK_OVERLAY_OVY_1_ID mov r1, #2 bl HandleLoadOverlay mov r1, #0 str r1, [r4, #0x6c] ldr r0, [r4] mov r2, #0xb str r1, [r0, #8] ldr r0, _0203DF30 ; =ov01_02206378 add r1, r4, #0 bl OverlayManager_new ldr r1, [r4] str r0, [r1] pop {r4, pc} .balign 4, 0 _0203DF2C: .word SDK_OVERLAY_OVY_1_ID _0203DF30: .word ov01_02206378 thumb_func_end sub_0203DEF0 thumb_func_start sub_0203DF34 sub_0203DF34: ; 0x0203DF34 mov r1, #0 str r1, [r0, #0x6c] bx lr .balign 4, 0 thumb_func_end sub_0203DF34 thumb_func_start sub_0203DF3C sub_0203DF3C: ; 0x0203DF3C push {r4, lr} add r4, r0, #0 mov r0, #0x11 lsl r0, r0, #4 ldrb r0, [r4, r0] mov r1, #1 cmp r0, #0 beq _0203DF52 cmp r0, #1 beq _0203DF52 mov r1, #0 _0203DF52: cmp r1, #0 bne _0203DF5A bl GF_AssertFail _0203DF5A: mov r0, #0x11 lsl r0, r0, #4 ldrb r0, [r4, r0] pop {r4, pc} .balign 4, 0 thumb_func_end sub_0203DF3C thumb_func_start sub_0203DF64 sub_0203DF64: ; 0x0203DF64 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 beq _0203DF74 cmp r4, #1 beq _0203DF74 bl GF_AssertFail _0203DF74: mov r0, #0x11 lsl r0, r0, #4 strb r4, [r5, r0] pop {r3, r4, r5, pc} thumb_func_end sub_0203DF64 thumb_func_start sub_0203DF7C sub_0203DF7C: ; 0x0203DF7C ldr r0, [r0] ldr r0, [r0] cmp r0, #0 beq _0203DF88 mov r0, #1 bx lr _0203DF88: mov r0, #0 bx lr thumb_func_end sub_0203DF7C thumb_func_start sub_0203DF8C sub_0203DF8C: ; 0x0203DF8C ldr r1, [r0] ldr r1, [r1] cmp r1, #0 beq _0203DF9E ldr r0, [r0, #0x6c] cmp r0, #0 beq _0203DF9E mov r0, #1 bx lr _0203DF9E: mov r0, #0 bx lr .balign 4, 0 thumb_func_end sub_0203DF8C thumb_func_start sub_0203DFA4 sub_0203DFA4: ; 0x0203DFA4 ldr r0, [r0] ldr r0, [r0, #4] cmp r0, #0 beq _0203DFB0 mov r0, #1 bx lr _0203DFB0: mov r0, #0 bx lr thumb_func_end sub_0203DFA4 thumb_func_start ScrUnk80_AddOvyMan ScrUnk80_AddOvyMan: ; 0x0203DFB4 push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 ldr r0, [r0, #4] add r6, r2, #0 cmp r0, #0 beq _0203DFC8 bl GF_AssertFail _0203DFC8: add r0, r5, #0 bl sub_0203DF34 add r0, r4, #0 add r1, r6, #0 mov r2, #0xb bl OverlayManager_new ldr r1, [r5] str r0, [r1, #4] pop {r4, r5, r6, pc} .balign 4, 0 thumb_func_end ScrUnk80_AddOvyMan thumb_func_start sub_0203DFE0 sub_0203DFE0: ; 0x0203DFE0 push {r4, r5, r6, lr} mov r2, #7 add r5, r0, #0 mov r0, #3 mov r1, #0xb lsl r2, r2, #0xe bl CreateHeap mov r1, #0x20 mov r0, #3 lsl r2, r1, #9 bl CreateHeap mov r2, #0x57 mov r0, #0 mov r1, #0x59 lsl r2, r2, #4 bl CreateHeap mov r1, #0x4a add r0, r5, #0 lsl r1, r1, #2 mov r2, #0xb bl OverlayManager_CreateAndGetData mov r2, #0x4a mov r1, #0 lsl r2, r2, #2 add r4, r0, #0 bl MI_CpuFill8 mov r0, #0xb mov r1, #0x10 bl AllocFromHeap str r0, [r4] mov r1, #0 str r1, [r0] ldr r0, [r4] ldr r6, _0203E054 ; =SDK_OVERLAY_OVY_124_ID str r1, [r0, #4] ldr r0, [r4] str r1, [r0, #8] ldr r0, [r4] str r1, [r0, #0xc] add r0, r6, #0 mov r1, #2 bl HandleLoadOverlay add r0, r5, #0 add r1, r4, #0 bl ov124_02260C20 add r0, r6, #0 bl UnloadOverlayByID add r0, r4, #0 pop {r4, r5, r6, pc} .balign 4, 0 _0203E054: .word SDK_OVERLAY_OVY_124_ID thumb_func_end sub_0203DFE0 thumb_func_start sub_0203E058 sub_0203E058: ; 0x0203E058 push {r3, r4, r5, lr} add r5, r0, #0 bl OverlayManager_GetData add r4, r0, #0 ldr r0, [r4, #0x30] bl MapMatrix_Free add r0, r4, #0 bl Field_FreeMapEvents add r0, r4, #0 add r0, #0x94 ldr r0, [r0] bl FreeToHeap add r0, r4, #0 add r0, #0xa8 ldr r0, [r0] bl sub_02092BD0 mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] bl sub_02092DD8 ldr r0, [r4] bl FreeToHeap add r0, r5, #0 bl OverlayManager_FreeData mov r0, #0x59 bl DestroyHeap mov r0, #0xb bl DestroyHeap mov r0, #0x20 bl DestroyHeap pop {r3, r4, r5, pc} thumb_func_end sub_0203E058 thumb_func_start sub_0203E0AC sub_0203E0AC: ; 0x0203E0AC push {r4, lr} add r4, r0, #0 ldr r0, [r4] cmp r0, #0 beq _0203E0C8 bl OverlayManager_run cmp r0, #0 beq _0203E0C8 ldr r0, [r4] bl OverlayManager_delete mov r0, #0 str r0, [r4] _0203E0C8: pop {r4, pc} .balign 4, 0 thumb_func_end sub_0203E0AC thumb_func_start sub_0203E0CC sub_0203E0CC: ; 0x0203E0CC push {r4, lr} add r4, r0, #0 bl sub_0203E15C add r0, r4, #0 bl sub_02050544 cmp r0, #1 bne _0203E0EE ldr r0, [r4, #4] cmp r0, #0 beq _0203E0EE mov r1, #0 add r0, r4, #0 add r2, r1, #0 bl ov01_021F6830 _0203E0EE: ldr r0, [r4] ldr r1, [r0] cmp r1, #0 beq _0203E10A bl sub_0203E0AC ldr r0, [r4] ldr r0, [r0] cmp r0, #0 bne _0203E116 ldr r0, _0203E138 ; =SDK_OVERLAY_OVY_1_ID bl UnloadOverlayByID b _0203E116 _0203E10A: ldr r1, [r0, #4] cmp r1, #0 beq _0203E116 add r0, r0, #4 bl sub_0203E0AC _0203E116: ldr r1, [r4] ldr r0, [r1, #0xc] cmp r0, #0 beq _0203E134 ldr r0, [r4, #0x10] cmp r0, #0 bne _0203E134 ldr r0, [r1] cmp r0, #0 bne _0203E134 ldr r0, [r1, #4] cmp r0, #0 bne _0203E134 mov r0, #1 pop {r4, pc} _0203E134: mov r0, #0 pop {r4, pc} .balign 4, 0 _0203E138: .word SDK_OVERLAY_OVY_1_ID thumb_func_end sub_0203E0CC thumb_func_start sub_0203E13C sub_0203E13C: ; 0x0203E13C push {r3, lr} ldr r1, [r0] ldr r1, [r1, #8] cmp r1, #0 bne _0203E158 ldr r1, [r0, #0x6c] cmp r1, #0 beq _0203E158 bl sub_02050590 cmp r0, #0 bne _0203E158 mov r0, #1 pop {r3, pc} _0203E158: mov r0, #0 pop {r3, pc} thumb_func_end sub_0203E13C thumb_func_start sub_0203E15C sub_0203E15C: ; 0x0203E15C push {r4, r5, lr} sub sp, #0x14 add r4, r0, #0 bl sub_0203E13C add r5, r0, #0 beq _0203E186 ldr r0, [r4, #0x40] bl sub_0205CE68 ldr r3, _0203E2EC ; =gSystem add r0, sp, #8 ldr r2, [r3, #0x48] ldr r3, [r3, #0x44] lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r1, r4, #0 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl ov01_021E6928 _0203E186: ldr r0, [r4, #0x20] ldr r2, [r4, #0x70] ldr r1, [r0] ldr r0, _0203E2F0 ; =0x00000109 cmp r1, r0 bne _0203E194 mov r2, #0 _0203E194: cmp r2, #2 beq _0203E1CC cmp r2, #3 beq _0203E1A2 cmp r2, #4 beq _0203E1F8 b _0203E268 _0203E1A2: cmp r5, #0 beq _0203E1C0 bl sub_02057A0C cmp r0, #0 beq _0203E1BE add r0, sp, #8 add r1, r4, #0 bl ov01_021E6E00 cmp r0, #1 bne _0203E1C0 mov r5, #0 b _0203E1C0 _0203E1BE: mov r5, #0 _0203E1C0: add r0, r4, #0 add r1, r5, #0 bl sub_020573F0 add sp, #0x14 pop {r4, r5, pc} _0203E1CC: cmp r5, #0 beq _0203E1DC add r0, sp, #8 add r1, r4, #0 bl ov01_021E6EFC cmp r0, #1 bne _0203E1DE _0203E1DC: b _0203E2E8 _0203E1DE: add r3, sp, #8 ldrh r0, [r3, #8] mov r2, #0 str r0, [sp] str r2, [sp, #4] ldrh r3, [r3, #6] ldr r0, [r4, #0x40] ldr r1, [r4, #0x2c] sub r2, r2, #1 bl sub_0205CB48 add sp, #0x14 pop {r4, r5, pc} _0203E1F8: cmp r5, #0 beq _0203E2E8 add r0, sp, #8 add r1, r4, #0 bl ov01_021E6FD4 cmp r0, #1 bne _0203E22C ldr r0, [r4, #4] ldr r0, [r0, #8] bl ov01_021EFACC add r0, r4, #0 mov r1, #4 bl ov01_021F3DFC ldr r0, [r4, #0x40] bl ov01_021F2F24 add r0, r4, #0 mov r1, #0 mov r2, #1 bl ov01_021F6830 add sp, #0x14 pop {r4, r5, pc} _0203E22C: ldr r0, _0203E2EC ; =gSystem ldr r1, [r0, #0x48] mov r0, #1 tst r0, r1 beq _0203E23E ldr r0, [r4, #4] ldr r0, [r0, #8] bl ov01_021EFACC _0203E23E: mov r5, #0 bl sub_0203E324 cmp r0, #0 beq _0203E24E bl ov35_02259DB8 add r5, r0, #0 _0203E24E: add r3, sp, #8 ldrh r0, [r3, #8] mov r2, #0 mvn r2, r2 str r0, [sp] str r5, [sp, #4] ldrh r3, [r3, #6] ldr r0, [r4, #0x40] ldr r1, [r4, #0x2c] bl sub_0205CB48 add sp, #0x14 pop {r4, r5, pc} _0203E268: cmp r5, #0 beq _0203E2E8 add r0, sp, #8 add r1, r4, #0 bl ov01_021E6AF4 add r5, r0, #0 beq _0203E2B0 ldr r0, [r4, #4] ldr r0, [r0, #8] bl ov01_021EFACC add r0, r4, #0 mov r1, #4 bl ov01_021F3DFC ldr r0, [r4, #0x40] bl sub_0205CF44 ldr r0, [r4, #0x40] bl ov01_021F2F24 add r0, r4, #0 mov r1, #0 mov r2, #1 bl ov01_021F6830 cmp r5, #2 beq _0203E2E8 mov r0, #0x45 lsl r0, r0, #2 ldr r0, [r4, r0] bl sub_02092FA8 add sp, #0x14 pop {r4, r5, pc} _0203E2B0: ldr r0, _0203E2EC ; =gSystem ldr r1, [r0, #0x48] mov r0, #1 tst r0, r1 beq _0203E2C2 ldr r0, [r4, #4] ldr r0, [r0, #8] bl ov01_021EFACC _0203E2C2: mov r5, #0 bl sub_0203E324 cmp r0, #0 beq _0203E2D2 bl ov35_02259DB8 add r5, r0, #0 _0203E2D2: add r3, sp, #8 ldrh r0, [r3, #8] mov r2, #0 mvn r2, r2 str r0, [sp] str r5, [sp, #4] ldrh r3, [r3, #6] ldr r0, [r4, #0x40] ldr r1, [r4, #0x2c] bl sub_0205CB48 _0203E2E8: add sp, #0x14 pop {r4, r5, pc} .balign 4, 0 _0203E2EC: .word gSystem _0203E2F0: .word 0x00000109 thumb_func_end sub_0203E15C thumb_func_start sub_0203E2F4 sub_0203E2F4: ; 0x0203E2F4 ldr r0, _0203E304 ; =_021D4158 ldr r3, _0203E308 ; =sub_02037504 ldr r0, [r0] mov r1, #1 ldr r0, [r0] str r1, [r0, #8] bx r3 nop _0203E304: .word _021D4158 _0203E308: .word sub_02037504 thumb_func_end sub_0203E2F4 thumb_func_start sub_0203E30C sub_0203E30C: ; 0x0203E30C ldr r0, _0203E31C ; =_021D4158 ldr r3, _0203E320 ; =sub_020374E4 ldr r0, [r0] mov r1, #0 ldr r0, [r0] str r1, [r0, #8] bx r3 nop _0203E31C: .word _021D4158 _0203E320: .word sub_020374E4 thumb_func_end sub_0203E30C thumb_func_start sub_0203E324 sub_0203E324: ; 0x0203E324 ldr r0, _0203E338 ; =_021D4158 ldr r0, [r0] ldr r0, [r0, #4] cmp r0, #0 bne _0203E332 mov r0, #0 bx lr _0203E332: ldr r0, [r0, #0x14] bx lr nop _0203E338: .word _021D4158 thumb_func_end sub_0203E324 thumb_func_start sub_0203E33C sub_0203E33C: ; 0x0203E33C str r1, [r0, #0x1c] bx lr thumb_func_end sub_0203E33C thumb_func_start sub_0203E340 sub_0203E340: ; 0x0203E340 ldr r0, [r0, #8] bx lr thumb_func_end sub_0203E340 thumb_func_start ScriptEnvironment_GetSav2Ptr ScriptEnvironment_GetSav2Ptr: ; 0x0203E344 ldr r0, [r0, #0xc] bx lr thumb_func_end ScriptEnvironment_GetSav2Ptr thumb_func_start sub_0203E348 sub_0203E348: ; 0x0203E348 push {r3, lr} bl LCRandom bl LCRandom pop {r3, pc} thumb_func_end sub_0203E348 thumb_func_start sub_0203E354 sub_0203E354: ; 0x0203E354 ldr r0, _0203E364 ; =_021D4158 mov r1, #1 ldr r0, [r0] mvn r1, r1 add r0, #0xc4 str r1, [r0] bx lr nop _0203E364: .word _021D4158 thumb_func_end sub_0203E354