diff --git a/asm/overlay073/ov73_021D3250.inc b/asm/overlay073/ov73_021D3250.inc deleted file mode 100644 index c1e2338c5f..0000000000 --- a/asm/overlay073/ov73_021D3250.inc +++ /dev/null @@ -1,58 +0,0 @@ -.public sub_02002E7C -.public sub_02002EB4 -.public sub_020039F8 -.public sub_02004224 -.public sub_02004550 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006E3C -.public sub_02006E60 -.public sub_02006E84 -.public sub_02006E9C -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B1B8 -.public sub_0200F174 -.public sub_0200F2AC -.public sub_0200F344 -.public sub_02017798 -.public sub_020177BC -.public sub_02017DD4 -.public sub_02017FC8 -.public sub_0201807C -.public sub_020181C4 -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019120 -.public sub_02019184 -.public sub_02019690 -.public sub_0201975C -.public sub_02019EBC -.public sub_0201A8D4 -.public sub_0201A8FC -.public sub_0201A954 -.public sub_0201AE78 -.public sub_0201C2B8 -.public sub_0201D710 -.public sub_0201D78C -.public sub_0201FE94 -.public sub_0201FF00 -.public sub_0201FF68 -.public sub_0201FFD0 -.public sub_02023790 -.public sub_020237BC -.public sub_02023C5C -.public sub_020241F0 -.public G2x_SetBlendAlpha_ -.public GX_LoadBGPltt -.public memset -.public ov73_021D3420 -.public ov73_021D342C -.public ov73_021D35F4 -.public ov73_021D366C -.public ov73_021D368C -.public ov73_021D3698 -.public ov73_021D37AC diff --git a/asm/overlay073/ov73_021D3250.s b/asm/overlay073/ov73_021D3250.s deleted file mode 100644 index 1786d948d1..0000000000 --- a/asm/overlay073/ov73_021D3250.s +++ /dev/null @@ -1,697 +0,0 @@ - .include "macros/function.inc" - .include "overlay073/ov73_021D3250.inc" - - - - .text - - - thumb_func_start ov73_021D3250 -ov73_021D3250: ; 0x021D3250 - push {r4, lr} - mov r2, #1 - add r4, r0, #0 - mov r0, #3 - mov r1, #0x53 - lsl r2, r2, #0x12 - bl sub_02017FC8 - add r0, r4, #0 - mov r1, #0x28 - mov r2, #0x53 - bl sub_0200681C - mov r1, #0 - mov r2, #0x28 - add r4, r0, #0 - bl memset - mov r0, #0x53 - str r0, [r4, #0] - mov r0, #0 - str r0, [r4, #0x24] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov73_021D3250 - - thumb_func_start ov73_021D3280 -ov73_021D3280: ; 0x021D3280 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r1, #0 - bl sub_0200682C - ldr r1, [r5, #0] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bls _021D3296 - b _021D33EA -_021D3296: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D32A2: ; jump table - .short _021D32AE - _021D32A2 - 2 ; case 0 - .short _021D3334 - _021D32A2 - 2 ; case 1 - .short _021D335A - _021D32A2 - 2 ; case 2 - .short _021D3384 - _021D32A2 - 2 ; case 3 - .short _021D3396 - _021D32A2 - 2 ; case 4 - .short _021D33C8 - _021D32A2 - 2 ; case 5 -_021D32AE: - add r0, r6, #0 - add r1, r6, #0 - bl sub_0200F344 - mov r0, #1 - add r1, r6, #0 - bl sub_0200F344 - add r0, r6, #0 - add r1, r0, #0 - bl sub_02017798 - add r0, r6, #0 - add r1, r0, #0 - bl sub_020177BC - bl sub_0201FF00 - bl sub_0201FF68 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _021D33F0 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0] - ldr r2, _021D33F4 ; =0x04001000 - ldr r1, [r2, #0] - and r0, r1 - str r0, [r2, #0] - mov r0, #4 - mov r1, #8 - bl sub_02017DD4 - add r0, r4, #0 - bl ov73_021D342C - add r0, r4, #0 - bl ov73_021D366C - ldr r0, _021D33F8 ; =ov73_021D3420 - add r1, r4, #0 - bl sub_02017798 - bl sub_0201FFD0 - bl sub_020241F0 - add r1, r6, #0 - add r7, r0, #0 - str r1, [sp] - ldr r2, _021D33FC ; =0x0000FFFC - add r1, r7, #0 - mov r3, #7 - bl sub_020039F8 - mov r2, #2 - add r0, r7, #0 - add r1, r6, #0 - lsl r2, r2, #8 - bl GX_LoadBGPltt - mov r0, #0x3c - str r0, [r4, #0x24] - mov r0, #1 - str r0, [r5, #0] - b _021D33EA -_021D3334: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D3340 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D33EA -_021D3340: - ldr r0, _021D3400 ; =0x00000406 - bl sub_02004224 - ldr r1, _021D3400 ; =0x00000406 - mov r0, #4 - mov r2, #1 - bl sub_02004550 - mov r0, #0x5a - str r0, [r4, #0x24] - mov r0, #2 - str r0, [r5, #0] - b _021D33EA -_021D335A: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D3366 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D33EA -_021D3366: - str r6, [r4, #0x24] - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4, #0] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r6, #0 - add r3, r6, #0 - bl sub_0200F174 - mov r0, #3 - str r0, [r5, #0] - b _021D33EA -_021D3384: - bl ov73_021D37AC - bl sub_0200F2AC - cmp r0, #1 - bne _021D33EA - mov r0, #4 - str r0, [r5, #0] - b _021D33EA -_021D3396: - bl ov73_021D37AC - add r0, r4, #0 - add r1, r6, #0 - mov r2, #0x28 - mov r3, #0x30 - bl ov73_021D3698 - cmp r0, #1 - bne _021D33EA - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4, #0] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl sub_0200F174 - mov r0, #5 - str r0, [r5, #0] - b _021D33EA -_021D33C8: - bl ov73_021D37AC - bl sub_0200F2AC - cmp r0, #1 - bne _021D33EA - add r0, r4, #0 - bl ov73_021D368C - add r0, r4, #0 - bl ov73_021D35F4 - add r0, r6, #0 - add r1, r0, #0 - bl sub_02017798 - mov r6, #1 -_021D33EA: - add r0, r6, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D33F0: .word 0xFFFFE0FF -_021D33F4: .word 0x04001000 -_021D33F8: .word ov73_021D3420 -_021D33FC: .word 0x0000FFFC -_021D3400: .word 0x00000406 - thumb_func_end ov73_021D3280 - - thumb_func_start ov73_021D3404 -ov73_021D3404: ; 0x021D3404 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl sub_0200682C - ldr r4, [r0, #0] - add r0, r5, #0 - bl sub_02006830 - add r0, r4, #0 - bl sub_0201807C - mov r0, #1 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov73_021D3404 - - thumb_func_start ov73_021D3420 -ov73_021D3420: ; 0x021D3420 - ldr r3, _021D3428 ; =sub_0201C2B8 - ldr r0, [r0, #4] - bx r3 - nop -_021D3428: .word sub_0201C2B8 - thumb_func_end ov73_021D3420 - - thumb_func_start ov73_021D342C -ov73_021D342C: ; 0x021D342C - push {r3, r4, r5, lr} - sub sp, #0xb8 - ldr r5, _021D35D8 ; =0x021D3AC0 - add r4, r0, #0 - add r3, sp, #0x90 - mov r2, #5 -_021D3438: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D3438 - add r0, sp, #0x90 - bl sub_0201FE94 - ldr r0, [r4, #0] - bl sub_02018340 - add r3, sp, #0x80 - ldr r5, _021D35DC ; =0x021D3A40 - str r0, [r4, #4] - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl sub_02018368 - ldr r5, _021D35E0 ; =0x021D3A6C - add r3, sp, #0x64 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #2 - str r0, [r3, #0] - ldr r0, [r4, #4] - mov r3, #0 - bl sub_020183C4 - ldr r3, [r4, #0] - mov r0, #2 - mov r1, #0x20 - mov r2, #0 - bl sub_02019690 - ldr r0, [r4, #4] - mov r1, #2 - bl sub_02019EBC - ldr r5, _021D35E4 ; =0x021D3A88 - add r3, sp, #0x48 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #0 - str r0, [r3, #0] - ldr r0, [r4, #4] - add r3, r1, #0 - bl sub_020183C4 - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4, #0] - mov r1, #1 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl sub_02006E3C - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4, #0] - mov r1, #4 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl sub_02006E60 - ldr r5, _021D35E8 ; =0x021D3A50 - add r3, sp, #0x2c - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #1 - str r0, [r3, #0] - ldr r0, [r4, #4] - mov r3, #0 - bl sub_020183C4 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4, #0] - mov r1, #2 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl sub_02006E3C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4, #0] - mov r1, #5 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl sub_02006E60 - ldr r5, _021D35EC ; =0x021D3AA4 - add r3, sp, #0x10 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #3 - str r0, [r3, #0] - ldr r0, [r4, #4] - mov r3, #0 - bl sub_020183C4 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4, #0] - mov r1, #8 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #3 - bl sub_02006E3C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4, #0] - mov r1, #7 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #3 - bl sub_02006E60 - mov r2, #0 - str r2, [sp] - ldr r0, [r4, #0] - mov r1, #6 - str r0, [sp, #4] - mov r0, #0x88 - add r3, r2, #0 - bl sub_02006E84 - mov r3, #0x40 - mov r0, #7 - str r3, [sp] - lsl r0, r0, #6 - str r0, [sp, #4] - ldr r0, [r4, #0] - mov r1, #9 - str r0, [sp, #8] - mov r0, #0x88 - mov r2, #0 - bl sub_02006E9C - ldr r2, [r4, #0] - mov r0, #0 - mov r1, #0x20 - bl sub_02002E7C - mov r0, #0 - add r1, r0, #0 - bl sub_0201975C - mov r0, #4 - mov r1, #0 - bl sub_0201975C - mov r2, #0xc - ldr r0, _021D35F0 ; =0x04000050 - mov r1, #2 - mov r3, #4 - str r2, [sp] - bl G2x_SetBlendAlpha_ - add sp, #0xb8 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D35D8: .word 0x021D3AC0 -_021D35DC: .word 0x021D3A40 -_021D35E0: .word 0x021D3A6C -_021D35E4: .word 0x021D3A88 -_021D35E8: .word 0x021D3A50 -_021D35EC: .word 0x021D3AA4 -_021D35F0: .word 0x04000050 - thumb_func_end ov73_021D342C - - thumb_func_start ov73_021D35F4 -ov73_021D35F4: ; 0x021D35F4 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl sub_02019120 - mov r0, #1 - mov r1, #0 - bl sub_02019120 - mov r0, #2 - mov r1, #0 - bl sub_02019120 - mov r0, #3 - mov r1, #0 - bl sub_02019120 - mov r0, #4 - mov r1, #0 - bl sub_02019120 - mov r0, #5 - mov r1, #0 - bl sub_02019120 - mov r0, #6 - mov r1, #0 - bl sub_02019120 - mov r0, #7 - mov r1, #0 - bl sub_02019120 - ldr r0, _021D3668 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r0, [r4, #4] - mov r1, #3 - bl sub_02019044 - ldr r0, [r4, #4] - mov r1, #1 - bl sub_02019044 - ldr r0, [r4, #4] - mov r1, #0 - bl sub_02019044 - ldr r0, [r4, #4] - mov r1, #2 - bl sub_02019044 - ldr r0, [r4, #4] - bl sub_020181C4 - pop {r4, pc} - nop -_021D3668: .word 0x04000050 - thumb_func_end ov73_021D35F4 - - thumb_func_start ov73_021D366C -ov73_021D366C: ; 0x021D366C - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D3688 ; =0x0000025F - ldr r3, [r4, #0] - mov r0, #1 - mov r1, #0x1a - bl sub_0200B144 - str r0, [r4, #8] - bl sub_0201D710 - mov r0, #0 - str r0, [r4, #0xc] - pop {r4, pc} - ; .align 2, 0 -_021D3688: .word 0x0000025F - thumb_func_end ov73_021D366C - - thumb_func_start ov73_021D368C -ov73_021D368C: ; 0x021D368C - ldr r3, _021D3694 ; =sub_0200B190 - ldr r0, [r0, #8] - bx r3 - nop -_021D3694: .word sub_0200B190 - thumb_func_end ov73_021D368C - - thumb_func_start ov73_021D3698 -ov73_021D3698: ; 0x021D3698 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, [r4, #0xc] - add r7, r1, #0 - mov r6, #0 - cmp r0, #3 - bhi _021D3798 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D36B4: ; jump table - .short _021D36BC - _021D36B4 - 2 ; case 0 - .short _021D3756 - _021D36B4 - 2 ; case 1 - .short _021D3768 - _021D36B4 - 2 ; case 2 - .short _021D3782 - _021D36B4 - 2 ; case 3 -_021D36BC: - mov r0, #2 - add r1, r6, #0 - bl sub_02019120 - mov r0, #1 - ldr r1, [r4, #0] - lsl r0, r0, #0xa - bl sub_02023790 - add r5, r0, #0 - ldr r0, [r4, #8] - add r1, r7, #0 - add r2, r5, #0 - bl sub_0200B1B8 - add r1, r4, #0 - ldr r0, [r4, #4] - ldr r2, _021D37A0 ; =0x021D3A38 - add r1, #0x10 - bl sub_0201A8D4 - add r1, r6, #0 - mov r0, #1 - lsl r0, r0, #8 - str r0, [sp] - mov r0, #0xc0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201AE78 - add r0, r6, #0 - add r1, r5, #0 - add r2, r0, #0 - bl sub_02002EB4 - mov r1, #1 - lsl r1, r1, #8 - sub r0, r1, r0 - lsr r7, r0, #1 - add r0, r5, #0 - bl sub_02023C5C - lsl r1, r0, #4 - mov r0, #0xc0 - sub r0, r0, r1 - lsr r0, r0, #1 - str r0, [sp] - add r1, r6, #0 - ldr r0, _021D37A4 ; =0x000F0200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r4, #0 - add r0, #0x10 - add r2, r5, #0 - add r3, r7, #0 - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r5, #0 - bl sub_020237BC - add r0, r4, #0 - add r0, #0x10 - bl sub_0201A954 - mov r0, #2 - mov r1, #1 - bl sub_02019120 - mov r0, #0xf0 - str r0, [r4, #0x24] - mov r0, #1 - str r0, [r4, #0xc] - b _021D3798 -_021D3756: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D3762 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D3798 -_021D3762: - mov r0, #2 - str r0, [r4, #0xc] - b _021D3798 -_021D3768: - ldr r0, _021D37A8 ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D377C - mov r0, #2 - and r0, r1 - cmp r0, #2 - bne _021D3798 -_021D377C: - mov r0, #3 - str r0, [r4, #0xc] - b _021D3798 -_021D3782: - add r0, r4, #0 - add r0, #0x10 - bl sub_0201A8FC - ldr r0, [r4, #4] - mov r1, #2 - bl sub_02019EBC - add r0, r6, #0 - str r0, [r4, #0xc] - mov r6, #1 -_021D3798: - add r0, r6, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D37A0: .word 0x021D3A38 -_021D37A4: .word 0x000F0200 -_021D37A8: .word 0x021BF67C - thumb_func_end ov73_021D3698 - - thumb_func_start ov73_021D37AC -ov73_021D37AC: ; 0x021D37AC - push {r3, lr} - ldr r1, [r0, #0x20] - mov r2, #3 - add r3, r1, #4 - str r3, [r0, #0x20] - ldr r0, [r0, #4] - mov r1, #1 - asr r3, r3, #4 - bl sub_02019184 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov73_021D37AC - - .rodata - - - .global Unk_ov73_021D3A38 -Unk_ov73_021D3A38: ; 0x021D3A38 - .incbin "incbin/overlay73_rodata.bin", 0x274, 0x27C - 0x274 - - .global Unk_ov73_021D3A40 -Unk_ov73_021D3A40: ; 0x021D3A40 - .incbin "incbin/overlay73_rodata.bin", 0x27C, 0x28C - 0x27C - - .global Unk_ov73_021D3A50 -Unk_ov73_021D3A50: ; 0x021D3A50 - .incbin "incbin/overlay73_rodata.bin", 0x28C, 0x2A8 - 0x28C - - .global Unk_ov73_021D3A6C -Unk_ov73_021D3A6C: ; 0x021D3A6C - .incbin "incbin/overlay73_rodata.bin", 0x2A8, 0x2C4 - 0x2A8 - - .global Unk_ov73_021D3A88 -Unk_ov73_021D3A88: ; 0x021D3A88 - .incbin "incbin/overlay73_rodata.bin", 0x2C4, 0x2E0 - 0x2C4 - - .global Unk_ov73_021D3AA4 -Unk_ov73_021D3AA4: ; 0x021D3AA4 - .incbin "incbin/overlay73_rodata.bin", 0x2E0, 0x2FC - 0x2E0 - - .global Unk_ov73_021D3AC0 -Unk_ov73_021D3AC0: ; 0x021D3AC0 - .incbin "incbin/overlay73_rodata.bin", 0x2FC, 0x28 - diff --git a/main.lsf b/main.lsf index 012b73a901..06e7ed46f1 100644 --- a/main.lsf +++ b/main.lsf @@ -1742,7 +1742,7 @@ Overlay overlay73 { After main Object asm/overlay073/ov73_021D0D80.o - Object asm/overlay073/ov73_021D3250.o + Object src/overlay073/ov73_021D3250.o } Overlay overlay74 diff --git a/src/overlay073/ov73_021D3250.c b/src/overlay073/ov73_021D3250.c new file mode 100644 index 0000000000..765055cccd --- /dev/null +++ b/src/overlay073/ov73_021D3250.c @@ -0,0 +1,492 @@ +#include +#include + +#include "data_021BF67C.h" + +#include "struct_decls/struct_020067E8_decl.h" +#include "struct_decls/struct_0200B144_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_02023790_decl.h" + +#include "struct_defs/struct_0205AA50.h" +#include "struct_defs/struct_0208BE5C.h" +#include "struct_defs/struct_02099F80.h" +#include "overlay061/struct_ov61_0222C884.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay097/struct_ov97_0222DB78.h" + +#include "unk_02002B7C.h" +#include "unk_02002F38.h" +#include "unk_020041CC.h" +#include "unk_020067E8.h" +#include "unk_02006E3C.h" +#include "unk_0200AC5C.h" +#include "unk_0200F174.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D670.h" +#include "unk_0201FE94.h" +#include "unk_02023790.h" +#include "unk_020241F0.h" + +typedef struct { + int unk_00; + UnkStruct_02018340 * unk_04; + UnkStruct_0200B144 * unk_08; + int unk_0C; + UnkStruct_0205AA50 unk_10; + int unk_20; + int unk_24; +} UnkStruct_ov73_021D342C; + +void sub_02000EC4(FSOverlayID param0, const UnkStruct_0208BE5C * param1); +int ov73_021D3250(UnkStruct_020067E8 * param0, int * param1); +int ov73_021D3280(UnkStruct_020067E8 * param0, int * param1); +int ov73_021D3404(UnkStruct_020067E8 * param0, int * param1); +static void ov73_021D3420(void * param0); +static void ov73_021D342C(UnkStruct_ov73_021D342C * param0); +static void ov73_021D35F4(UnkStruct_ov73_021D342C * param0); +static void ov73_021D366C(UnkStruct_ov73_021D342C * param0); +static void ov73_021D368C(UnkStruct_ov73_021D342C * param0); +static BOOL ov73_021D3698(UnkStruct_ov73_021D342C * param0, int param1, int param2, int param3); +static void ov73_021D37AC(UnkStruct_ov73_021D342C * param0); + +int ov73_021D3250 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov73_021D342C * v0; + int v1 = 83; + + sub_02017FC8(3, v1, 0x40000); + + v0 = sub_0200681C(param0, sizeof(UnkStruct_ov73_021D342C), v1); + memset(v0, 0, sizeof(UnkStruct_ov73_021D342C)); + + v0->unk_00 = v1; + v0->unk_24 = 0; + + return 1; +} + +int ov73_021D3280 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov73_021D342C * v0 = sub_0200682C(param0); + int v1 = 0; + + switch (*param1) { + case 0: + sub_0200F344(0, 0x0); + sub_0200F344(1, 0x0); + + sub_02017798(NULL, NULL); + sub_020177BC(NULL, NULL); + + sub_0201FF00(); + sub_0201FF68(); + GX_SetVisiblePlane(0); + GXS_SetVisiblePlane(0); + sub_02017DD4(4, 8); + + ov73_021D342C(v0); + ov73_021D366C(v0); + + sub_02017798(ov73_021D3420, (void *)v0); + sub_0201FFD0(); + + { + u16 * v2 = (u16 *)sub_020241F0(); + + sub_020039F8(v2, v2, 0xFFFC, 7, 0x0); + GX_LoadBGPltt((const void *)v2, 0, 16 * 0x20); + } + + v0->unk_24 = 2 * 30; + *param1 = 1; + break; + case 1: + if (v0->unk_24) { + v0->unk_24--; + } else { + sub_02004224(1030); + sub_02004550(4, 1030, 1); + + v0->unk_24 = 3 * 30; + *param1 = 2; + } + break; + case 2: + if (v0->unk_24) { + v0->unk_24--; + } else { + v0->unk_24 = 0; + sub_0200F174(0, 1, 1, 0x0, 6, 1, v0->unk_00); + *param1 = 3; + } + break; + case 3: + ov73_021D37AC(v0); + + if (sub_0200F2AC() == 1) { + *param1 = 4; + } + break; + case 4: + ov73_021D37AC(v0); + + if (ov73_021D3698(v0, 0, 5 * 8, 6 * 8) == 1) { + sub_0200F174(0, 0, 0, 0x0, 6, 1, v0->unk_00); + *param1 = 5; + } + break; + case 5: + ov73_021D37AC(v0); + + if (sub_0200F2AC() == 1) { + ov73_021D368C(v0); + ov73_021D35F4(v0); + sub_02017798(NULL, NULL); + + v1 = 1; + } + break; + } + + return v1; +} + +int ov73_021D3404 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov73_021D342C * v0 = sub_0200682C(param0); + int v1 = v0->unk_00; + + sub_02006830(param0); + sub_0201807C(v1); + + return 1; +} + +static void ov73_021D3420 (void * param0) +{ + UnkStruct_ov73_021D342C * v0 = param0; + sub_0201C2B8(v0->unk_04); +} + +static void ov73_021D342C (UnkStruct_ov73_021D342C * param0) +{ + { + UnkStruct_02099F80 v0 = { + GX_VRAM_BG_256_AB, + GX_VRAM_BGEXTPLTT_NONE, + GX_VRAM_SUB_BG_NONE, + GX_VRAM_SUB_BGEXTPLTT_NONE, + GX_VRAM_OBJ_NONE, + GX_VRAM_OBJEXTPLTT_NONE, + GX_VRAM_SUB_OBJ_NONE, + GX_VRAM_SUB_OBJEXTPLTT_NONE, + GX_VRAM_TEX_NONE, + GX_VRAM_TEXPLTT_NONE + }; + + sub_0201FE94(&v0); + } + + { + param0->unk_04 = sub_02018340(param0->unk_00); + } + { + UnkStruct_ov84_0223BA5C v1 = { + GX_DISPMODE_GRAPHICS, + GX_BGMODE_0, + GX_BGMODE_0, + GX_BG0_AS_2D + }; + + sub_02018368(&v1); + } + { + int v2, v3, v4; + { + UnkStruct_ov97_0222DB78 v5 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0000, + GX_BG_CHARBASE_0x18000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }; + + v2 = 2; + + sub_020183C4(param0->unk_04, v2, &v5, 0); + sub_02019690(v2, 32, 0, param0->unk_00); + sub_02019EBC(param0->unk_04, v2); + } + { + UnkStruct_ov97_0222DB78 v6 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0800, + GX_BG_CHARBASE_0x14000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }; + + v2 = 0; + v3 = 1; + v4 = 4; + + sub_020183C4(param0->unk_04, v2, &v6, 0); + sub_02006E3C(136, v3, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + sub_02006E60(136, v4, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + } + { + UnkStruct_ov97_0222DB78 v7 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x1000, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }; + + v2 = 1; + v3 = 2; + v4 = 5; + + sub_020183C4(param0->unk_04, v2, &v7, 0); + sub_02006E3C(136, v3, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + sub_02006E60(136, v4, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + } + { + UnkStruct_ov97_0222DB78 v8 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_256, + GX_BG_SCRBASE_0x1800, + GX_BG_CHARBASE_0x20000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }; + + v2 = 3; + v3 = 8; + v4 = 7; + + sub_020183C4(param0->unk_04, v2, &v8, 0); + sub_02006E3C(136, v3, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + sub_02006E60(136, v4, param0->unk_04, v2, 0, 0, 0, param0->unk_00); + } + } + sub_02006E84(136, 6, 0, 0, 0, param0->unk_00); + sub_02006E9C(136, 9, 0, 0x20 * 2, 0x20 * 2, 0x20 * 14, param0->unk_00); + sub_02002E7C(0, 1 * (2 * 16), param0->unk_00); + sub_0201975C(0, 0x0); + sub_0201975C(4, 0x0); + + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG1, (GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3), 0x4, 0xc); +} + +static void ov73_021D35F4 (UnkStruct_ov73_021D342C * param0) +{ + sub_02019120(0, 0); + sub_02019120(1, 0); + sub_02019120(2, 0); + sub_02019120(3, 0); + sub_02019120(4, 0); + sub_02019120(5, 0); + sub_02019120(6, 0); + sub_02019120(7, 0); + + G2_BlendNone(); + + sub_02019044(param0->unk_04, 3); + sub_02019044(param0->unk_04, 1); + sub_02019044(param0->unk_04, 0); + sub_02019044(param0->unk_04, 2); + sub_020181C4(param0->unk_04); +} + +static void ov73_021D366C (UnkStruct_ov73_021D342C * param0) +{ + param0->unk_08 = sub_0200B144(1, 26, 607, param0->unk_00); + + sub_0201D710(); + param0->unk_0C = 0; +} + +static void ov73_021D368C (UnkStruct_ov73_021D342C * param0) +{ + sub_0200B190(param0->unk_08); +} + +static const UnkStruct_ov61_0222C884 Unk_ov72_021D3A38 = { + 0x2, + 0x0, + 0x0, + 0x20, + 0x18, + 0x1, + 0x1 +}; + +asm static BOOL ov73_021D3698 (UnkStruct_ov73_021D342C * param0, int param1, int param2, int param3) +{ + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r7, r1, #0 + mov r6, #0 + cmp r0, #3 + bhi _021D3798 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 + _021D36B4: + dcd 0xa00006 + dcd 0xcc00b2 + _021D36BC: + mov r0, #2 + add r1, r6, #0 + bl sub_02019120 + mov r0, #1 + ldr r1, [r4, #0] + lsl r0, r0, #0xa + bl sub_02023790 + add r5, r0, #0 + ldr r0, [r4, #8] + add r1, r7, #0 + add r2, r5, #0 + bl sub_0200B1B8 + add r1, r4, #0 + ldr r0, [r4, #4] + ldr r2, = Unk_ov72_021D3A38 + add r1, #0x10 + bl sub_0201A8D4 + add r1, r6, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl sub_0201AE78 + add r0, r6, #0 + add r1, r5, #0 + add r2, r0, #0 + bl sub_02002EB4 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r7, r0, #1 + add r0, r5, #0 + bl sub_02023C5C + lsl r1, r0, #4 + mov r0, #0xc0 + sub r0, r0, r1 + lsr r0, r0, #1 + str r0, [sp] + add r1, r6, #0 + ldr r0, = 0xF0200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + add r2, r5, #0 + add r3, r7, #0 + str r1, [sp, #0xc] + bl sub_0201D78C + add r0, r5, #0 + bl sub_020237BC + add r0, r4, #0 + add r0, #0x10 + bl sub_0201A954 + mov r0, #2 + mov r1, #1 + bl sub_02019120 + mov r0, #0xf0 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] + b _021D3798 + _021D3756: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D3762 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D3798 + _021D3762: + mov r0, #2 + str r0, [r4, #0xc] + b _021D3798 + _021D3768: + ldr r0, = Unk_021BF67C + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D377C + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D3798 + _021D377C: + mov r0, #3 + str r0, [r4, #0xc] + b _021D3798 + _021D3782: + add r0, r4, #0 + add r0, #0x10 + bl sub_0201A8FC + ldr r0, [r4, #4] + mov r1, #2 + bl sub_02019EBC + add r0, r6, #0 + str r0, [r4, #0xc] + mov r6, #1 + _021D3798: + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +} + +static void ov73_021D37AC (UnkStruct_ov73_021D342C * param0) +{ + param0->unk_20 += 0x4; + sub_02019184(param0->unk_04, 1, 3, param0->unk_20 >> 4); +}