From e0c2562a22b40d65a262e23d71d0adb1636cdaf9 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 16 Apr 2026 09:49:01 -0500 Subject: [PATCH] Start decomp/overlay_44_02232E9C --- asm/include/overlay_44.inc | 89 +- asm/overlay_44.s | 2958 +----------------------------------- include/overlay_00_thumb.h | 2 + include/overlay_42.h | 35 +- include/overlay_44.h | 209 +++ include/unk_0202C034.h | 1 + include/unk_02030A98.h | 2 +- include/unk_02037C94.h | 2 +- main.lsf | 1 + src/overlay_44_02232E9C.c | 995 ++++++++++++ src/overlay_44_02235340.c | 3 +- 11 files changed, 1341 insertions(+), 2956 deletions(-) create mode 100644 src/overlay_44_02232E9C.c diff --git a/asm/include/overlay_44.inc b/asm/include/overlay_44.inc index 1d60af97d..64f3e6d05 100644 --- a/asm/include/overlay_44.inc +++ b/asm/include/overlay_44.inc @@ -444,4 +444,91 @@ .public ov44_02234028 .public ov44_022331B0 .public ov44_022331C4 -.public ov44_0223319C \ No newline at end of file +.public ov44_0223319C + +.public ov44_02232724 +.public ov44_02232798 +.public ov44_022327C8 +.public ov44_02232800 +.public ov44_02232838 +.public ov44_02232864 +.public ov44_02232884 +.public ov44_022328A0 +.public ov44_022328E4 +.public ov44_02232910 +.public ov44_02232914 +.public ov44_022329B0 +.public ov44_02232A60 +.public ov44_02232B74 +.public ov44_02232BCC +.public ov44_02232BE4 +.public ov44_02232C30 +.public ov44_02232C48 +.public ov44_02232C4C +.public ov44_02232C6C +.public ov44_02232C94 +.public ov44_02232CA8 +.public ov44_02232CCC +.public ov44_02232D08 +.public ov44_02232D20 +.public ov44_02232E5C +.public ov44_02232E80 +.public ov44_02232E90 +.public ov44_02232E9C +.public ov44_02232680 + +.public ov44_02232248 +.public ov44_02232288 +.public ov44_02232298 +.public ov44_022322E8 +.public ov44_02232334 +.public ov44_02232338 +.public ov44_0223233C +.public ov44_0223254C +.public ov44_02232594 +.public ov44_022325A4 +.public ov44_022325F4 +.public ov44_02232604 + +.public ov44_02231CE8 +.public ov44_02231D48 +.public ov44_02231D8C +.public ov44_02231D94 +.public ov44_02231D98 +.public ov44_02231D9C +.public ov44_02231E08 +.public ov44_02231E94 +.public ov44_02231ED4 +.public ov44_02231EF4 +.public ov44_02231F04 +.public ov44_02231F14 +.public ov44_02231F88 +.public ov44_02231FA8 +.public ov44_02231FCC +.public ov44_02232008 +.public ov44_02232018 +.public ov44_02232028 +.public ov44_02232050 +.public ov44_02232070 +.public ov44_02232104 +.public ov44_02232158 +.public ov44_02232194 +.public ov44_022321C4 +.public ov44_02232204 +.public ov44_02232238 +.public ov44_02231C8C + +.public ov44_02231918 +.public ov44_02231958 +.public ov44_02231974 +.public ov44_0223197C +.public ov44_022319BC +.public ov44_022319EC +.public ov44_02231A14 +.public ov44_02231A28 +.public ov44_02231A7C +.public ov44_02231B4C +.public ov44_02231BB0 +.public ov44_02231BB4 +.public ov44_02231C60 +.public ov44_02231C70 \ No newline at end of file diff --git a/asm/overlay_44.s b/asm/overlay_44.s index 254c9671d..ac4d183cc 100644 --- a/asm/overlay_44.s +++ b/asm/overlay_44.s @@ -15288,2956 +15288,6 @@ _02231910: .word ov44_0223536C _02231914: .word _0223535C thumb_func_end ov44_0223183C - thumb_func_start ov44_02231918 -ov44_02231918: ; 0x02231918 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #0 - add r6, r1, #0 - mvn r0, r0 - cmp r6, r0 - beq _02231950 - mov r0, #0x35 - bl PlayerProfile_New - add r4, r0, #0 - ldr r0, [r5] - add r1, r6, #0 - bl sub_0202C254 - add r1, r0, #0 - add r0, r4, #0 - bl Save_Profile_PlayerName_Set - ldr r0, _02231954 ; =0x00000B1C - mov r1, #0 - ldr r0, [r5, r0] - add r2, r4, #0 - bl BufferPlayersName - add r0, r4, #0 - bl Heap_Free -_02231950: - pop {r4, r5, r6, pc} - nop -_02231954: .word 0x00000B1C - thumb_func_end ov44_02231918 - - thumb_func_start ov44_02231958 -ov44_02231958: ; 0x02231958 - cmp r1, #0x20 - blo _02231962 - ldr r1, _02231970 ; =0x00001098 - add r0, r0, r1 - bx lr -_02231962: - ldr r2, [r0, #4] - mov r0, #0x24 - add r2, #0x24 - mul r0, r1 - add r0, r2, r0 - bx lr - nop -_02231970: .word 0x00001098 - thumb_func_end ov44_02231958 - - thumb_func_start ov44_02231974 -ov44_02231974: ; 0x02231974 - ldr r3, _02231978 ; =ov00_021E6D68 - bx r3 - .balign 4, 0 -_02231978: .word ov00_021E6D68 - thumb_func_end ov44_02231974 - - thumb_func_start ov44_0223197C -ov44_0223197C: ; 0x0223197C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #0xf - add r4, r1, #0 - add r6, r2, #0 - bl sub_020379A0 - ldr r0, [r5, #4] - add r0, #0x21 - ldrb r0, [r0] - bl ov00_021E70B8 - add r0, r6, #0 - bl ov44_02229F44 - cmp r0, #1 - bne _022319A8 - mov r0, #1 - mov r1, #0x80 - bl ov00_021E714C - b _022319B0 -_022319A8: - mov r0, #0 - mov r1, #0x80 - bl ov00_021E714C -_022319B0: - bl sub_02097214 - add r0, r4, #0 - bl sub_02039080 - pop {r4, r5, r6, pc} - thumb_func_end ov44_0223197C - - thumb_func_start ov44_022319BC -ov44_022319BC: ; 0x022319BC - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _022319E8 ; =0x00000D64 - add r4, r1, #0 - ldr r1, [r5, r0] - cmp r1, #0 - bne _022319E6 - mov r1, #1 - str r1, [r5, r0] - mov r0, #0xe3 - lsl r0, r0, #2 - add r0, r5, r0 - bl ov44_02231D94 - cmp r4, #1 - bne _022319E6 - add r0, r5, #0 - mov r1, #9 - mov r2, #0 - bl ov44_0222F510 -_022319E6: - pop {r3, r4, r5, pc} - .balign 4, 0 -_022319E8: .word 0x00000D64 - thumb_func_end ov44_022319BC - - thumb_func_start ov44_022319EC -ov44_022319EC: ; 0x022319EC - push {r4, lr} - ldr r1, _02231A10 ; =0x00000D64 - add r4, r0, #0 - ldr r2, [r4, r1] - cmp r2, #1 - bne _02231A0C - mov r2, #0 - str r2, [r4, r1] - bl ov44_0222F7BC - mov r0, #0xe3 - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #0 - bl ov44_02231D94 -_02231A0C: - pop {r4, pc} - nop -_02231A10: .word 0x00000D64 - thumb_func_end ov44_022319EC - - thumb_func_start ov44_02231A14 -ov44_02231A14: ; 0x02231A14 - push {r4, lr} - bl ov44_02231A28 - mov r1, #1 - add r4, r0, #0 - bl YesNoPrompt_SetIgnoreTouch - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_02231A14 - - thumb_func_start ov44_02231A28 -ov44_02231A28: ; 0x02231A28 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - mov r0, #0x35 - add r4, r1, #0 - add r6, r2, #0 - bl YesNoPrompt_Create - str r5, [sp] - ldrb r1, [r4] - add r7, r0, #0 - str r1, [sp, #4] - ldrh r1, [r4, #6] - str r1, [sp, #8] - ldrb r1, [r4, #5] - str r1, [sp, #0xc] - ldrb r2, [r4, #1] - add r1, sp, #0 - strb r2, [r1, #0x10] - ldrb r2, [r4, #2] - strb r2, [r1, #0x11] - ldrb r3, [r1, #0x12] - mov r2, #0xf - bic r3, r2 - strb r3, [r1, #0x12] - ldrb r2, [r1, #0x12] - mov r3, #0xf0 - bic r2, r3 - lsl r3, r6, #0x18 - lsr r3, r3, #0x18 - lsl r3, r3, #0x1c - lsr r3, r3, #0x18 - orr r2, r3 - strb r2, [r1, #0x12] - mov r2, #0 - strb r2, [r1, #0x13] - add r1, sp, #0 - bl YesNoPrompt_InitFromTemplate - add r0, r7, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - thumb_func_end ov44_02231A28 - - thumb_func_start ov44_02231A7C -ov44_02231A7C: ; 0x02231A7C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r6, r2, #0 - add r4, r1, #0 - ldr r2, _02231B3C ; =0x000006FC - mov r1, #0 - add r5, r0, #0 - str r3, [sp] - bl memset - ldr r0, [sp, #0x24] - str r4, [r5, #4] - sub r0, r0, #1 - lsr r7, r0, #3 - ldr r0, [sp] - add r2, r6, #0 - str r0, [r5, #0x10] - add r0, r5, #0 - ldr r1, [r5, #4] - add r0, #0x14 - bl ov44_02232298 - ldr r0, [r5, #0x10] - add r1, r4, #0 - bl ov44_02232334 - add r0, r7, #0 - bl ov44_02232E90 - add r2, sp, #4 - strh r0, [r2] - lsr r0, r0, #0x10 - strh r0, [r2, #2] - ldrh r0, [r2] - strh r0, [r2, #4] - ldrh r1, [r2, #2] - strh r1, [r2, #6] - ldrh r0, [r2, #4] - add r2, r4, #0 - bl ov42_02227EE0 - ldr r1, _02231B40 ; =0x000006E4 - str r0, [r5, r1] - add r0, r7, #0 - bl ov44_02232E9C - add r1, r0, #0 - ldr r0, _02231B40 ; =0x000006E4 - ldr r0, [r5, r0] - bl ov42_02227F48 - mov r0, #0x30 - add r1, r4, #0 - bl ov42_02228010 - ldr r1, _02231B44 ; =0x000006E8 - add r2, r4, #0 - str r0, [r5, r1] - ldr r1, [sp, #0x20] - add r0, r5, #0 - bl ov44_02232204 - mov r0, #0x6f - lsl r0, r0, #4 - add r0, r5, r0 - bl ov42_02229394 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - add r3, r7, #0 - bl ov44_02232248 - ldr r0, [r5, #0x10] - add r1, r4, #0 - add r2, r6, #0 - bl ov44_0223233C - mov r1, #0x6d - lsl r1, r1, #4 - add r0, r5, #0 - add r1, r5, r1 - add r2, r6, #0 - bl ov44_02232CCC - mov r0, #0x80 - add r1, r4, #0 - bl ov42_02229A40 - ldr r1, _02231B48 ; =0x000006F8 - str r0, [r5, r1] - mov r0, #1 - str r0, [r5] - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_02231B3C: .word 0x000006FC -_02231B40: .word 0x000006E4 -_02231B44: .word 0x000006E8 -_02231B48: .word 0x000006F8 - thumb_func_end ov44_02231A7C - - thumb_func_start ov44_02231B4C -ov44_02231B4C: ; 0x02231B4C - push {r4, lr} - add r4, r0, #0 - ldr r0, _02231BA0 ; =0x000006F8 - ldr r0, [r4, r0] - bl ov42_02229A78 - add r0, r4, #0 - bl ov44_02232288 - mov r1, #0x6d - lsl r1, r1, #4 - add r0, r4, #0 - add r1, r4, r1 - bl ov44_02232D08 - add r0, r4, #0 - bl ov44_02232028 - add r0, r4, #0 - bl ov44_02232238 - ldr r0, _02231BA4 ; =0x000006E8 - ldr r0, [r4, r0] - bl ov42_02228050 - ldr r0, _02231BA8 ; =0x000006E4 - ldr r0, [r4, r0] - bl ov42_02227F28 - add r0, r4, #0 - add r0, #0x14 - bl ov44_022322E8 - ldr r0, [r4, #0x10] - bl ov44_02232338 - ldr r2, _02231BAC ; =0x000006FC - add r0, r4, #0 - mov r1, #0 - bl memset - pop {r4, pc} - .balign 4, 0 -_02231BA0: .word 0x000006F8 -_02231BA4: .word 0x000006E8 -_02231BA8: .word 0x000006E4 -_02231BAC: .word 0x000006FC - thumb_func_end ov44_02231B4C - - thumb_func_start ov44_02231BB0 -ov44_02231BB0: ; 0x02231BB0 - ldr r0, [r0] - bx lr - thumb_func_end ov44_02231BB0 - - thumb_func_start ov44_02231BB4 -ov44_02231BB4: ; 0x02231BB4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02231C50 ; =0x000006E8 - ldr r0, [r4, r0] - bl ov42_0222807C - add r0, r4, #0 - bl ov44_02232158 - add r0, r4, #0 - bl ov44_02232104 - mov r1, #0x6f - lsl r1, r1, #4 - add r0, r4, r1 - sub r1, #0x24 - ldr r1, [r4, r1] - ldr r1, [r1] - bl ov42_02229358 - ldr r1, _02231C54 ; =0x000006F4 - ldr r0, [r4, r1] - sub r1, r1, #4 - add r1, r4, r1 - bl ov42_02229420 - ldr r0, _02231C58 ; =0x000006EC - ldr r0, [r4, r0] - bl ov42_022290DC - add r0, r4, #0 - bl ov44_02232194 - add r0, r4, #0 - bl ov44_02232594 - add r0, r4, #0 - bl ov44_02232050 - cmp r0, #1 - bne _02231C4A - add r0, r4, #0 - bl ov44_02232604 - cmp r0, #1 - bne _02231C24 - add r0, r4, #0 - bl ov44_0223254C - ldr r0, _02231C5C ; =gSystem - ldr r1, [r0, #0x44] - mov r0, #0x80 - tst r0, r1 - beq _02231C24 - mov r0, #1 - pop {r4, pc} -_02231C24: - ldr r0, _02231C5C ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #1 - tst r0, r1 - beq _02231C4A - add r0, r4, #0 - bl ov44_02231C70 - cmp r0, #0 - beq _02231C3C - mov r0, #2 - pop {r4, pc} -_02231C3C: - add r0, r4, #0 - bl ov44_02232070 - cmp r0, #1 - bne _02231C4A - mov r0, #3 - pop {r4, pc} -_02231C4A: - mov r0, #0 - pop {r4, pc} - nop -_02231C50: .word 0x000006E8 -_02231C54: .word 0x000006F4 -_02231C58: .word 0x000006EC -_02231C5C: .word gSystem - thumb_func_end ov44_02231BB4 - - thumb_func_start ov44_02231C60 -ov44_02231C60: ; 0x02231C60 - push {r3, lr} - ldr r1, [r0] - cmp r1, #0 - beq _02231C6E - ldr r0, [r0, #0x14] - bl SpriteList_RenderAndAnimateSprites -_02231C6E: - pop {r3, pc} - thumb_func_end ov44_02231C60 - - thumb_func_start ov44_02231C70 -ov44_02231C70: ; 0x02231C70 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02231C88 ; =0x000006CC - ldr r0, [r4, r0] - cmp r0, #0 - bne _02231C80 - bl GF_AssertFail -_02231C80: - ldr r0, _02231C88 ; =0x000006CC - ldr r0, [r4, r0] - ldrb r0, [r0, #0xa] - pop {r4, pc} - .balign 4, 0 -_02231C88: .word 0x000006CC - thumb_func_end ov44_02231C70 - - thumb_func_start ov44_02231C8C -ov44_02231C8C: ; 0x02231C8C - push {r4, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, _02231CE0 ; =0x000006CC - ldr r0, [r4, r0] - cmp r0, #0 - bne _02231C9E - bl GF_AssertFail -_02231C9E: - ldr r0, _02231CE0 ; =0x000006CC - ldr r0, [r4, r0] - ldr r0, [r0] - bl ov42_022282DC - add r2, sp, #0 - strh r0, [r2] - lsr r0, r0, #0x10 - strh r0, [r2, #2] - ldrh r0, [r2] - mov r1, #4 - strh r0, [r2, #4] - ldrh r0, [r2, #2] - strh r0, [r2, #6] - ldrsh r3, [r2, r1] - ldr r0, _02231CE4 ; =0x000006E4 - asr r1, r3, #3 - lsr r1, r1, #0x1c - add r1, r3, r1 - mov r3, #6 - ldrsh r3, [r2, r3] - lsl r1, r1, #0xc - ldr r0, [r4, r0] - asr r2, r3, #3 - lsr r2, r2, #0x1c - add r2, r3, r2 - lsl r2, r2, #0xc - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl ov42_02227FDC - add sp, #8 - pop {r4, pc} - .balign 4, 0 -_02231CE0: .word 0x000006CC -_02231CE4: .word 0x000006E4 - thumb_func_end ov44_02231C8C - - thumb_func_start ov44_02231CE8 -ov44_02231CE8: ; 0x02231CE8 - push {r4, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, _02231D40 ; =0x000006CC - ldr r0, [r4, r0] - cmp r0, #0 - bne _02231CFA - bl GF_AssertFail -_02231CFA: - ldr r0, _02231D40 ; =0x000006CC - ldr r0, [r4, r0] - ldr r0, [r0] - bl ov42_022282DC - add r2, sp, #0 - strh r0, [r2] - lsr r0, r0, #0x10 - strh r0, [r2, #2] - ldrh r0, [r2] - mov r1, #4 - strh r0, [r2, #4] - ldrh r0, [r2, #2] - strh r0, [r2, #6] - ldrsh r3, [r2, r1] - ldr r0, _02231D44 ; =0x000006E4 - asr r1, r3, #3 - lsr r1, r1, #0x1c - add r1, r3, r1 - mov r3, #6 - ldrsh r3, [r2, r3] - lsl r1, r1, #0xc - ldr r0, [r4, r0] - asr r2, r3, #3 - lsr r2, r2, #0x1c - add r2, r3, r2 - asr r2, r2, #4 - add r2, r2, #1 - lsl r2, r2, #0x10 - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl ov42_02227FDC - add sp, #8 - pop {r4, pc} - .balign 4, 0 -_02231D40: .word 0x000006CC -_02231D44: .word 0x000006E4 - thumb_func_end ov44_02231CE8 - - thumb_func_start ov44_02231D48 -ov44_02231D48: ; 0x02231D48 - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r1, #0 - add r4, r0, #0 - ldr r0, [r5] - bl ov42_022282DC - add r1, sp, #0 - strh r0, [r1] - lsr r0, r0, #0x10 - strh r0, [r1, #2] - ldrh r0, [r1] - strh r0, [r1, #4] - ldrh r0, [r1, #2] - strh r0, [r1, #6] - ldr r0, [r5, #4] - bl ov42_0222920C - add r2, r0, #0 - add r1, sp, #0 - add r0, r4, #0 - mov r4, sp - ldrh r3, [r1, #4] - sub r4, r4, #4 - sub r2, r2, #2 - strh r3, [r4] - ldrh r1, [r1, #6] - strh r1, [r4, #2] - ldr r1, [r4] - bl ov44_022325A4 - add sp, #8 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov44_02231D48 - - thumb_func_start ov44_02231D8C -ov44_02231D8C: ; 0x02231D8C - ldr r3, _02231D90 ; =ov44_022325F4 - bx r3 - .balign 4, 0 -_02231D90: .word ov44_022325F4 - thumb_func_end ov44_02231D8C - - thumb_func_start ov44_02231D94 -ov44_02231D94: ; 0x02231D94 - str r1, [r0, #0xc] - bx lr - thumb_func_end ov44_02231D94 - - thumb_func_start ov44_02231D98 -ov44_02231D98: ; 0x02231D98 - ldr r0, [r0, #0xc] - bx lr - thumb_func_end ov44_02231D98 - - thumb_func_start ov44_02231D9C -ov44_02231D9C: ; 0x02231D9C - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r1, #0 - bl ov44_02232798 - add r4, r0, #0 - ldr r0, _02231E00 ; =0x000006CC - add r1, sp, #0xc - str r4, [r5, r0] - add r0, r5, #0 - bl ov44_02232724 - lsl r0, r6, #0x10 - lsr r0, r0, #0x10 - str r0, [sp] - mov r3, #0 - str r3, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0xc - str r3, [sp, #8] - bl ov44_02232800 - add r0, r5, #0 - add r1, r4, #0 - bl ov44_02232864 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #1 - bl ov44_022327C8 - mov r1, #0x6f - lsl r1, r1, #4 - add r0, r5, r1 - sub r1, #0x24 - ldr r1, [r5, r1] - ldr r1, [r1] - bl ov42_02229358 - ldr r1, _02231E04 ; =0x000006F4 - ldr r0, [r5, r1] - sub r1, r1, #4 - add r1, r5, r1 - bl ov42_02229420 - add r0, r4, #0 - add sp, #0x10 - pop {r4, r5, r6, pc} - .balign 4, 0 -_02231E00: .word 0x000006CC -_02231E04: .word 0x000006F4 - thumb_func_end ov44_02231D9C - - thumb_func_start ov44_02231E08 -ov44_02231E08: ; 0x02231E08 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - add r6, r2, #0 - add r7, r1, #0 - bl ov44_02232798 - add r4, r0, #0 - add r0, r5, #0 - add r1, sp, #0x14 - sub r2, r6, #1 - bl ov44_02232680 - ldr r0, _02231E90 ; =0x000006CC - ldr r0, [r5, r0] - cmp r0, #0 - beq _02231E5E - ldr r0, [r0] - bl ov42_022282DC - add r1, sp, #0xc - strh r0, [r1] - lsr r0, r0, #0x10 - strh r0, [r1, #2] - ldrh r0, [r1] - mov r2, #8 - strh r0, [r1, #4] - ldrh r0, [r1, #2] - strh r0, [r1, #6] - mov r0, #4 - ldrsh r0, [r1, r0] - ldrsh r2, [r1, r2] - cmp r0, r2 - bne _02231E5E - mov r0, #6 - mov r2, #0xa - ldrsh r0, [r1, r0] - ldrsh r1, [r1, r2] - cmp r0, r1 - bne _02231E5E - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02231E5E: - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - add r0, r5, #0 - add r1, r4, #0 - add r2, sp, #0x14 - add r3, r6, #0 - bl ov44_02232800 - add r0, r5, #0 - add r1, r4, #0 - bl ov44_02232884 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0 - bl ov44_022327C8 - add r0, r4, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02231E90: .word 0x000006CC - thumb_func_end ov44_02231E08 - - thumb_func_start ov44_02231E94 -ov44_02231E94: ; 0x02231E94 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - mov r1, #6 - bl ov42_02228188 - ldr r0, _02231ECC ; =ov44_02232BCC - mov r1, #0 - str r0, [r4, #0x10] - ldr r0, _02231ED0 ; =ov44_02232914 - str r0, [r4, #0x18] - mov r0, #2 - strh r0, [r4, #0xc] - strh r1, [r4, #8] - ldr r0, [r4, #4] - bl ov42_0222919C - ldr r0, [r4, #4] - bl ov42_022291A0 - add r0, r5, #0 - mov r1, #4 - add r2, r4, #0 - bl ov44_02232C6C - pop {r3, r4, r5, pc} - nop -_02231ECC: .word ov44_02232BCC -_02231ED0: .word ov44_02232914 - thumb_func_end ov44_02231E94 - - thumb_func_start ov44_02231ED4 -ov44_02231ED4: ; 0x02231ED4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - bl ov42_022290C4 - ldr r0, [r4] - bl ov42_02228100 - mov r1, #0x1c - mov r0, #0 -_02231EE8: - strb r0, [r4] - add r4, r4, #1 - sub r1, r1, #1 - bne _02231EE8 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_02231ED4 - - thumb_func_start ov44_02231EF4 -ov44_02231EF4: ; 0x02231EF4 - push {r3, lr} - ldr r0, [r0] - mov r1, #4 - bl ov42_02228188 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - thumb_func_end ov44_02231EF4 - - thumb_func_start ov44_02231F04 -ov44_02231F04: ; 0x02231F04 - push {r3, lr} - ldr r0, [r0] - mov r1, #6 - bl ov42_02228188 - bl ov42_022282A4 - pop {r3, pc} - thumb_func_end ov44_02231F04 - - thumb_func_start ov44_02231F14 -ov44_02231F14: ; 0x02231F14 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5, #0x10] - add r4, r2, #0 - str r0, [r5, #0x14] - ldr r0, _02231F84 ; =ov44_02232C48 - mov r1, #4 - str r0, [r5, #0x10] - ldrh r0, [r5, #0xc] - strh r0, [r5, #0xe] - mov r0, #5 - strh r0, [r5, #0xc] - ldr r0, [r5] - bl ov42_02228188 - add r3, r0, #0 - add r0, r6, #0 - mov r1, #0 - add r2, r4, #0 - bl ov44_02232C4C - ldr r0, [r5, #4] - mov r1, #0 - bl ov42_0222919C - ldr r0, [r5, #4] - add r1, r4, #0 - bl ov42_02229218 - ldr r0, [r5] - mov r1, #0 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1] - ldr r0, [r5] - mov r1, #1 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1, #2] - mov r3, sp - ldrh r2, [r1] - ldr r0, [r5, #4] - sub r3, r3, #4 - strh r2, [r3] - ldrh r1, [r1, #2] - strh r1, [r3, #2] - ldr r1, [r3] - bl ov42_022291D8 - add sp, #4 - pop {r3, r4, r5, r6, pc} - nop -_02231F84: .word ov44_02232C48 - thumb_func_end ov44_02231F14 - - thumb_func_start ov44_02231F88 -ov44_02231F88: ; 0x02231F88 - push {r3, lr} - cmp r1, #0 - beq _02231FA6 - ldr r0, [r1, #0x14] - cmp r0, #0 - beq _02231FA6 - str r0, [r1, #0x10] - mov r0, #0 - str r0, [r1, #0x14] - ldrh r0, [r1, #0xe] - strh r0, [r1, #0xc] - ldr r0, [r1, #4] - mov r1, #1 - bl ov42_0222919C -_02231FA6: - pop {r3, pc} - thumb_func_end ov44_02231F88 - - thumb_func_start ov44_02231FA8 -ov44_02231FA8: ; 0x02231FA8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - add r0, r5, #0 - add r4, r2, #0 - bl ov44_02232C94 - cmp r0, #0 - bne _02231FBE - strb r4, [r5, #0xb] - pop {r4, r5, r6, pc} -_02231FBE: - add r0, r6, #0 - add r1, r5, #0 - add r2, r4, #0 - bl ov44_02232CA8 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov44_02231FA8 - - thumb_func_start ov44_02231FCC -ov44_02231FCC: ; 0x02231FCC - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov44_02232070 - cmp r0, #1 - bne _02232002 - add r0, r5, #0 - bl ov44_02231CE8 - lsl r0, r0, #0x18 - asr r0, r0, #0x18 - sub r0, r0, #3 - lsl r0, r0, #0x18 - asr r4, r0, #0x18 - bmi _02231FEE - cmp r4, #4 - blt _02231FF2 -_02231FEE: - bl GF_AssertFail -_02231FF2: - mov r0, #0x6d - lsl r0, r0, #4 - lsl r1, r4, #0x18 - add r0, r5, r0 - lsr r1, r1, #0x18 - bl ov44_02232E5C - pop {r3, r4, r5, pc} -_02232002: - bl GF_AssertFail - pop {r3, r4, r5, pc} - thumb_func_end ov44_02231FCC - - thumb_func_start ov44_02232008 -ov44_02232008: ; 0x02232008 - mov r1, #0x6d - lsl r1, r1, #4 - ldr r3, _02232014 ; =ov44_02232E80 - add r0, r0, r1 - bx r3 - nop -_02232014: .word ov44_02232E80 - thumb_func_end ov44_02232008 - - thumb_func_start ov44_02232018 -ov44_02232018: ; 0x02232018 - mov r1, #0x6d - lsl r1, r1, #4 - ldr r3, _02232024 ; =ov44_02232D20 - add r1, r0, r1 - bx r3 - nop -_02232024: .word ov44_02232D20 - thumb_func_end ov44_02232018 - - thumb_func_start ov44_02232028 -ov44_02232028: ; 0x02232028 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0x63 - lsl r0, r0, #2 - mov r6, #0 - add r4, r5, r0 - add r7, r0, #0 -_02232036: - ldr r0, [r5, r7] - cmp r0, #0 - beq _02232042 - add r0, r4, #0 - bl ov44_02231ED4 -_02232042: - add r6, r6, #1 - add r5, #0x1c - add r4, #0x1c - cmp r6, #0x30 - blt _02232036 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov44_02232028 - - thumb_func_start ov44_02232050 -ov44_02232050: ; 0x02232050 - push {r3, lr} - ldr r1, _0223206C ; =0x000006CC - ldr r0, [r0, r1] - mov r1, #5 - ldr r0, [r0] - bl ov42_02228188 - cmp r0, #0 - bne _02232066 - mov r0, #1 - pop {r3, pc} -_02232066: - mov r0, #0 - pop {r3, pc} - nop -_0223206C: .word 0x000006CC - thumb_func_end ov44_02232050 - - thumb_func_start ov44_02232070 -ov44_02232070: ; 0x02232070 - push {r3, r4, r5, lr} - sub sp, #0x10 - add r5, r0, #0 - ldr r0, _022320FC ; =0x000006CC - ldr r0, [r5, r0] - ldr r0, [r0] - bl ov42_022282DC - add r1, sp, #0 - strh r0, [r1, #4] - lsr r0, r0, #0x10 - strh r0, [r1, #6] - ldrh r0, [r1, #4] - strh r0, [r1, #0xc] - ldrh r0, [r1, #6] - strh r0, [r1, #0xe] - ldr r0, _022320FC ; =0x000006CC - mov r1, #6 - ldr r0, [r5, r0] - ldr r0, [r0] - bl ov42_02228188 - add r4, r0, #0 - add r0, sp, #0 - mov r2, sp - ldrh r1, [r0, #0xc] - sub r2, r2, #4 - strh r1, [r2] - ldrh r0, [r0, #0xe] - add r1, r4, #0 - strh r0, [r2, #2] - ldr r0, [r2] - bl ov42_02228270 - add r2, sp, #0 - strh r0, [r2] - lsr r0, r0, #0x10 - strh r0, [r2, #2] - ldrh r0, [r2] - mov r1, #8 - strh r0, [r2, #8] - ldrh r0, [r2, #2] - strh r0, [r2, #0xa] - ldrsh r3, [r2, r1] - ldr r0, _02232100 ; =0x000006E4 - asr r1, r3, #3 - lsr r1, r1, #0x1c - add r1, r3, r1 - mov r3, #0xa - ldrsh r3, [r2, r3] - lsl r1, r1, #0xc - ldr r0, [r5, r0] - asr r2, r3, #3 - lsr r2, r2, #0x1c - add r2, r3, r2 - lsl r2, r2, #0xc - lsr r1, r1, #0x10 - lsr r2, r2, #0x10 - bl ov42_02227FDC - cmp r4, #0 - bne _022320F6 - cmp r0, #2 - bne _022320F6 - add sp, #0x10 - mov r0, #1 - pop {r3, r4, r5, pc} -_022320F6: - mov r0, #0 - add sp, #0x10 - pop {r3, r4, r5, pc} - .balign 4, 0 -_022320FC: .word 0x000006CC -_02232100: .word 0x000006E4 - thumb_func_end ov44_02232070 - - thumb_func_start ov44_02232104 -ov44_02232104: ; 0x02232104 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _0223214C ; =0x000006F8 - add r1, sp, #8 - ldr r0, [r5, r0] - bl ov42_02229AC8 - cmp r0, #1 - bne _02232148 - ldr r7, _02232150 ; =0x000006E8 - add r6, sp, #0 - add r4, sp, #8 -_0223211E: - ldr r0, _02232154 ; =0x000006E4 - ldr r1, [r5, r7] - ldr r0, [r5, r0] - add r2, r4, #0 - add r3, r6, #0 - bl ov42_02228C80 - cmp r0, #1 - bne _0223213A - ldr r0, _02232150 ; =0x000006E8 - add r1, r6, #0 - ldr r0, [r5, r0] - bl ov42_02228068 -_0223213A: - ldr r0, _0223214C ; =0x000006F8 - add r1, r4, #0 - ldr r0, [r5, r0] - bl ov42_02229AC8 - cmp r0, #1 - beq _0223211E -_02232148: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_0223214C: .word 0x000006F8 -_02232150: .word 0x000006E8 -_02232154: .word 0x000006E4 - thumb_func_end ov44_02232104 - - thumb_func_start ov44_02232158 -ov44_02232158: ; 0x02232158 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r0, #0x63 - lsl r0, r0, #2 - mov r6, #0 - add r4, r7, #0 - add r5, r7, r0 -_02232166: - mov r0, #0x63 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _02232186 - mov r2, #0x67 - lsl r2, r2, #2 - ldr r2, [r4, r2] - add r0, r7, #0 - add r1, r5, #0 - blx r2 - cmp r0, #1 - bne _02232186 - add r0, r5, #0 - bl ov44_02231ED4 -_02232186: - add r6, r6, #1 - add r4, #0x1c - add r5, #0x1c - cmp r6, #0x30 - blt _02232166 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end ov44_02232158 - - thumb_func_start ov44_02232194 -ov44_02232194: ; 0x02232194 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r0, #0x63 - lsl r0, r0, #2 - mov r6, #0 - add r4, r7, #0 - add r5, r7, r0 -_022321A2: - mov r0, #0x63 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _022321B8 - mov r2, #0x69 - lsl r2, r2, #2 - ldr r2, [r4, r2] - add r0, r7, #0 - add r1, r5, #0 - blx r2 -_022321B8: - add r6, r6, #1 - add r4, #0x1c - add r5, #0x1c - cmp r6, #0x30 - blt _022321A2 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov44_02232194 - - thumb_func_start ov44_022321C4 -ov44_022321C4: ; 0x022321C4 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldr r0, [r1] - ldr r1, _02232200 ; =0x000006E8 - ldr r1, [r4, r1] - bl ov42_022283BC - cmp r0, #0 - beq _022321FA - mov r2, #0x63 - mov r1, #0 - add r5, r4, #0 - lsl r2, r2, #2 -_022321DE: - ldr r3, [r5, r2] - cmp r3, r0 - bne _022321F2 - mov r0, #0x63 - lsl r0, r0, #2 - add r2, r4, r0 - mov r0, #0x1c - mul r0, r1 - add r0, r2, r0 - pop {r3, r4, r5, pc} -_022321F2: - add r1, r1, #1 - add r5, #0x1c - cmp r1, #0x30 - blt _022321DE -_022321FA: - mov r0, #0 - pop {r3, r4, r5, pc} - nop -_02232200: .word 0x000006E8 - thumb_func_end ov44_022321C4 - - thumb_func_start ov44_02232204 -ov44_02232204: ; 0x02232204 - push {r4, r5, lr} - sub sp, #0xc - add r3, r1, #0 - mov r1, #0 - add r5, r0, #0 - add r4, r2, #0 - str r1, [sp] - mov r0, #1 - str r0, [sp, #4] - str r4, [sp, #8] - ldr r0, [r5, #0x14] - mov r2, #0x30 - bl ov42_02228F24 - ldr r1, _02232234 ; =0x000006EC - add r2, r4, #0 - str r0, [r5, r1] - ldr r0, [r5, r1] - mov r1, #2 - bl ov42_02229028 - add sp, #0xc - pop {r4, r5, pc} - nop -_02232234: .word 0x000006EC - thumb_func_end ov44_02232204 - - thumb_func_start ov44_02232238 -ov44_02232238: ; 0x02232238 - ldr r1, _02232240 ; =0x000006EC - ldr r3, _02232244 ; =ov42_02228F94 - ldr r0, [r0, r1] - bx r3 - .balign 4, 0 -_02232240: .word 0x000006EC -_02232244: .word ov42_02228F94 - thumb_func_end ov44_02232238 - - thumb_func_start ov44_02232248 -ov44_02232248: ; 0x02232248 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - ldr r6, _02232280 ; =ov44_02235604 - add r4, r1, #0 - add r5, r0, #0 - add r2, sp, #0 - mov r1, #0xb -_02232256: - ldrb r0, [r6] - add r6, r6, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02232256 - add r0, sp, #0 - ldrb r1, [r0, #9] - add r2, sp, #0 - add r1, r1, r3 - strb r1, [r0, #9] - add r0, r5, #0 - ldr r1, [r5, #0x10] - add r0, #0x18 - add r3, r4, #0 - bl ov42_022293B8 - ldr r1, _02232284 ; =0x000006F4 - str r0, [r5, r1] - add sp, #0xc - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_02232280: .word ov44_02235604 -_02232284: .word 0x000006F4 - thumb_func_end ov44_02232248 - - thumb_func_start ov44_02232288 -ov44_02232288: ; 0x02232288 - ldr r1, _02232290 ; =0x000006F4 - ldr r3, _02232294 ; =ov42_0222940C - ldr r0, [r0, r1] - bx r3 - .balign 4, 0 -_02232290: .word 0x000006F4 -_02232294: .word ov42_0222940C - thumb_func_end ov44_02232288 - - thumb_func_start ov44_02232298 -ov44_02232298: ; 0x02232298 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r6, r1, #0 - str r2, [sp] - mov r0, #0x60 - add r1, r7, #4 - add r2, r6, #0 - bl G2dRenderer_Init - mov r2, #0x32 - str r0, [r7] - add r0, r7, #4 - mov r1, #0 - lsl r2, r2, #0x10 - bl G2dRenderer_SetSubSurfaceCoords - mov r4, #0 - add r5, r7, #0 -_022322BC: - mov r0, #0x10 - add r1, r4, #0 - add r2, r6, #0 - bl Create2DGfxResObjMan - mov r1, #0x4b - lsl r1, r1, #2 - str r0, [r5, r1] - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _022322BC - ldr r2, [sp] - add r0, r7, #0 - add r1, r6, #0 - bl ov44_02232314 - add r0, r7, #0 - add r1, r6, #0 - bl ov44_02232324 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov44_02232298 - - thumb_func_start ov44_022322E8 -ov44_022322E8: ; 0x022322E8 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl ov44_0223232C - add r0, r7, #0 - bl ov44_0223231C - mov r6, #0x4b - mov r4, #0 - add r5, r7, #0 - lsl r6, r6, #2 -_022322FE: - ldr r0, [r5, r6] - bl Destroy2DGfxResObjMan - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _022322FE - ldr r0, [r7] - bl SpriteList_Delete - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov44_022322E8 - - thumb_func_start ov44_02232314 -ov44_02232314: ; 0x02232314 - ldr r3, _02232318 ; =ov44_0223237C - bx r3 - .balign 4, 0 -_02232318: .word ov44_0223237C - thumb_func_end ov44_02232314 - - thumb_func_start ov44_0223231C -ov44_0223231C: ; 0x0223231C - ldr r3, _02232320 ; =ov44_0223247C - bx r3 - .balign 4, 0 -_02232320: .word ov44_0223247C - thumb_func_end ov44_0223231C - - thumb_func_start ov44_02232324 -ov44_02232324: ; 0x02232324 - ldr r3, _02232328 ; =ov44_022324B0 - bx r3 - .balign 4, 0 -_02232328: .word ov44_022324B0 - thumb_func_end ov44_02232324 - - thumb_func_start ov44_0223232C -ov44_0223232C: ; 0x0223232C - ldr r3, _02232330 ; =ov44_02232530 - bx r3 - .balign 4, 0 -_02232330: .word ov44_02232530 - thumb_func_end ov44_0223232C - - thumb_func_start ov44_02232334 -ov44_02232334: ; 0x02232334 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232334 - - thumb_func_start ov44_02232338 -ov44_02232338: ; 0x02232338 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232338 - - thumb_func_start ov44_0223233C -ov44_0223233C: ; 0x0223233C - push {r4, r5, r6, lr} - sub sp, #0x10 - add r6, r0, #0 - mov r0, #1 - add r4, r2, #0 - lsl r0, r0, #8 - mov r2, #0 - add r5, r1, #0 - str r0, [sp] - add r0, r4, #0 - mov r1, #0x1f - add r3, r2, #0 - str r5, [sp, #4] - bl GfGfxLoader_GXLoadPalFromOpenNarc - mov r0, #0 - add r1, r0, #0 - bl BG_SetMaskColor - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - add r0, r4, #0 - mov r1, #0x1e - add r2, r6, #0 - str r5, [sp, #0xc] - bl GfGfxLoader_LoadCharDataFromOpenNarc - add sp, #0x10 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov44_0223233C - - thumb_func_start ov44_0223237C -ov44_0223237C: ; 0x0223237C - push {r3, r4, r5, r6, lr} - sub sp, #0x2c - add r4, r1, #0 - mov r1, #0x32 - add r5, r0, #0 - str r1, [sp] - mov r0, #1 - str r0, [sp, #4] - add r6, r2, #0 - str r4, [sp, #8] - add r1, #0xfa - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0x26 - mov r3, #0 - bl AddCharResObjFromOpenNarc - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [r5, r1] - mov r1, #0x32 - str r1, [sp] - mov r0, #1 - str r0, [sp, #4] - str r0, [sp, #8] - str r4, [sp, #0xc] - add r1, #0xfe - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0x25 - mov r3, #0 - bl AddPlttResObjFromOpenNarc - mov r1, #5 - lsl r1, r1, #6 - str r0, [r5, r1] - mov r0, #0x32 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - str r4, [sp, #8] - sub r1, #0xc - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0x27 - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x51 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #0x32 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - str r4, [sp, #8] - sub r1, #0xc - ldr r0, [r5, r1] - add r1, r6, #0 - mov r2, #0x28 - mov r3, #0 - bl AddCellOrAnimResObjFromOpenNarc - mov r1, #0x52 - lsl r1, r1, #2 - str r0, [r5, r1] - sub r1, #0xc - ldr r0, [r5, r1] - bl sub_0200ADA4 - cmp r0, #1 - beq _02232410 - bl GF_AssertFail -_02232410: - mov r0, #5 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl sub_0200B00C - cmp r0, #1 - beq _02232422 - bl GF_AssertFail -_02232422: - mov r0, #0x4f - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0200A740 - mov r0, #5 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl sub_0200A740 - mov r1, #0x32 - add r0, r1, #0 - str r1, [sp] - sub r0, #0x33 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - mov r3, #0x4d - str r0, [sp, #0xc] - mov r2, #2 - str r2, [sp, #0x10] - add r2, r1, #0 - add r2, #0xfa - ldr r2, [r5, r2] - lsl r3, r3, #2 - str r2, [sp, #0x14] - add r2, r1, #0 - add r2, #0xfe - ldr r2, [r5, r2] - str r2, [sp, #0x18] - ldr r2, [r5, r3] - str r2, [sp, #0x1c] - add r2, r3, #4 - ldr r2, [r5, r2] - add r3, #0x18 - str r2, [sp, #0x20] - str r0, [sp, #0x24] - str r0, [sp, #0x28] - add r0, r5, r3 - add r2, r1, #0 - add r3, r1, #0 - bl CreateSpriteResourcesHeader - add sp, #0x2c - pop {r3, r4, r5, r6, pc} - thumb_func_end ov44_0223237C - - thumb_func_start ov44_0223247C -ov44_0223247C: ; 0x0223247C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0x4f - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0200AEB0 - mov r0, #5 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl sub_0200B0A8 - mov r7, #0x4b - lsl r7, r7, #2 - add r6, r7, #0 - mov r4, #0 - add r6, #0x10 -_0223249E: - ldr r0, [r5, r7] - ldr r1, [r5, r6] - bl DestroySingle2DGfxResObj - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _0223249E - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov44_0223247C - - thumb_func_start ov44_022324B0 -ov44_022324B0: ; 0x022324B0 - push {r3, r4, r5, lr} - sub sp, #0x30 - add r4, r0, #0 - add r2, sp, #0 - mov r0, #0 - add r3, r1, #0 - add r5, r2, #0 - add r1, r0, #0 - stmia r5!, {r0, r1} - stmia r5!, {r0, r1} - stmia r5!, {r0, r1} - stmia r5!, {r0, r1} - stmia r5!, {r0, r1} - stmia r5!, {r0, r1} - ldr r1, [r4] - str r1, [sp] - mov r1, #0x53 - lsl r1, r1, #2 - add r1, r4, r1 - str r1, [sp, #4] - mov r1, #1 - str r1, [sp, #0x28] - lsl r1, r1, #0xc - str r0, [sp, #0x24] - add r0, r2, #0 - str r1, [sp, #0x14] - str r1, [sp, #0x18] - str r3, [sp, #0x2c] - bl Sprite_CreateAffine - mov r1, #0x17 - lsl r1, r1, #4 - str r0, [r4, r1] - add r0, sp, #0 - bl Sprite_CreateAffine - mov r1, #0x5d - lsl r1, r1, #2 - str r0, [r4, r1] - sub r0, r1, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl Sprite_SetDrawFlag - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl Sprite_SetDrawFlag - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl Sprite_SetAnimActiveFlag - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl Sprite_SetAnimCtrlSeq - add sp, #0x30 - pop {r3, r4, r5, pc} - thumb_func_end ov44_022324B0 - - thumb_func_start ov44_02232530 -ov44_02232530: ; 0x02232530 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl Sprite_Delete - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Sprite_Delete - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_02232530 - - thumb_func_start ov44_0223254C -ov44_0223254C: ; 0x0223254C - push {r4, lr} - sub sp, #0x10 - add r1, sp, #0 - add r4, r0, #0 - bl ov44_02232724 - add r2, sp, #0 - mov r0, #0 - ldrsh r1, [r2, r0] - add r1, #8 - strh r1, [r2] - mov r1, #2 - ldrsh r3, [r2, r1] - add r3, #0x20 - strh r3, [r2, #2] - ldrsh r0, [r2, r0] - lsl r0, r0, #0xc - str r0, [sp, #4] - ldrsh r0, [r2, r1] - add r1, sp, #4 - lsl r0, r0, #0xc - str r0, [sp, #8] - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl Sprite_SetMatrix - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl Sprite_SetDrawFlag - add sp, #0x10 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_0223254C - - thumb_func_start ov44_02232594 -ov44_02232594: ; 0x02232594 - mov r1, #0x61 - lsl r1, r1, #2 - ldr r0, [r0, r1] - ldr r3, _022325A0 ; =Sprite_SetDrawFlag - mov r1, #0 - bx r3 - .balign 4, 0 -_022325A0: .word Sprite_SetDrawFlag - thumb_func_end ov44_02232594 - - thumb_func_start ov44_022325A4 -ov44_022325A4: ; 0x022325A4 - push {r0, r1, r2, r3} - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - add r1, sp, #0x18 - mov r0, #4 - ldrsh r0, [r1, r0] - add r4, r2, #0 - add r0, #8 - lsl r0, r0, #0x10 - asr r0, r0, #4 - str r0, [sp] - mov r0, #6 - ldrsh r0, [r1, r0] - add r1, sp, #0 - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl Sprite_SetMatrix - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl Sprite_SetDrawPriority - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl Sprite_SetDrawFlag - add sp, #0xc - pop {r4, r5} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4, 0 - thumb_func_end ov44_022325A4 - - thumb_func_start ov44_022325F4 -ov44_022325F4: ; 0x022325F4 - mov r1, #0x62 - lsl r1, r1, #2 - ldr r0, [r0, r1] - ldr r3, _02232600 ; =Sprite_SetDrawFlag - mov r1, #0 - bx r3 - .balign 4, 0 -_02232600: .word Sprite_SetDrawFlag - thumb_func_end ov44_022325F4 - - thumb_func_start ov44_02232604 -ov44_02232604: ; 0x02232604 - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, _02232678 ; =0x000006CC - ldr r0, [r5, r0] - cmp r0, #0 - bne _02232618 - add sp, #8 - mov r0, #0 - pop {r3, r4, r5, pc} -_02232618: - ldr r0, [r0] - bl ov42_022282DC - add r1, sp, #0 - strh r0, [r1] - lsr r0, r0, #0x10 - strh r0, [r1, #2] - ldrh r0, [r1] - strh r0, [r1, #4] - ldrh r0, [r1, #2] - strh r0, [r1, #6] - ldr r0, _02232678 ; =0x000006CC - mov r1, #6 - ldr r0, [r5, r0] - ldr r0, [r0] - bl ov42_02228188 - add r4, r0, #0 - ldr r0, _0223267C ; =0x000006E4 - add r2, sp, #0 - mov r1, #4 - ldrsh r3, [r2, r1] - ldr r0, [r5, r0] - asr r1, r3, #3 - lsr r1, r1, #0x1c - add r1, r3, r1 - mov r3, #6 - ldrsh r3, [r2, r3] - lsl r1, r1, #0xc - lsr r1, r1, #0x10 - asr r2, r3, #3 - lsr r2, r2, #0x1c - add r2, r3, r2 - lsl r2, r2, #0xc - lsr r2, r2, #0x10 - bl ov42_02227FDC - cmp r0, #0xf - bne _02232670 - cmp r4, #1 - bne _02232670 - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, pc} -_02232670: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, pc} - nop -_02232678: .word 0x000006CC -_0223267C: .word 0x000006E4 - thumb_func_end ov44_02232604 - - thumb_func_start ov44_02232680 -ov44_02232680: ; 0x02232680 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - mov r0, #7 - add r4, r2, #0 - and r4, r0 - ldr r0, _02232720 ; =0x000006E4 - str r1, [sp] - ldr r0, [r5, r0] - lsr r7, r2, #3 - bl ov42_02227F40 - add r6, r0, #0 - ldr r0, _02232720 ; =0x000006E4 - ldr r0, [r5, r0] - bl ov42_02227F44 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [sp, #4] - cmp r0, #0 - bls _02232718 - add r0, r7, #3 - str r0, [sp, #0x14] - add r0, r4, #7 - str r0, [sp, #0xc] -_022326B6: - mov r4, #0 - cmp r6, #0 - bls _0223270C - ldr r0, [sp, #8] - add r0, r0, #1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x10] - ldr r0, [sp, #8] - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 -_022326CC: - ldr r0, _02232720 ; =0x000006E4 - lsl r1, r4, #0x10 - ldr r0, [r5, r0] - lsr r1, r1, #0x10 - add r2, r7, #0 - bl ov42_02227FDC - ldr r1, [sp, #0xc] - cmp r0, r1 - bne _02232706 - ldr r0, _02232720 ; =0x000006E4 - lsl r1, r4, #0x10 - ldr r0, [r5, r0] - ldr r2, [sp, #0x10] - lsr r1, r1, #0x10 - bl ov42_02227FDC - ldr r1, [sp, #0x14] - cmp r0, r1 - bne _02232706 - ldr r0, [sp] - lsl r1, r4, #4 - strh r1, [r0] - ldr r0, [sp, #8] - lsl r1, r0, #4 - ldr r0, [sp] - add sp, #0x18 - strh r1, [r0, #2] - pop {r3, r4, r5, r6, r7, pc} -_02232706: - add r4, r4, #1 - cmp r4, r6 - blo _022326CC -_0223270C: - ldr r0, [sp, #8] - add r1, r0, #1 - ldr r0, [sp, #4] - str r1, [sp, #8] - cmp r1, r0 - blo _022326B6 -_02232718: - bl GF_AssertFail - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02232720: .word 0x000006E4 - thumb_func_end ov44_02232680 - - thumb_func_start ov44_02232724 -ov44_02232724: ; 0x02232724 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - ldr r0, _02232794 ; =0x000006E4 - str r1, [sp] - ldr r0, [r7, r0] - bl ov42_02227F40 - add r5, r0, #0 - ldr r0, _02232794 ; =0x000006E4 - ldr r0, [r7, r0] - bl ov42_02227F44 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [sp, #4] - cmp r0, #0 - bls _0223278C -_0223274A: - mov r4, #0 - cmp r5, #0 - bls _02232780 - ldr r0, [sp, #8] - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 -_02232756: - ldr r0, _02232794 ; =0x000006E4 - lsl r1, r4, #0x10 - ldr r0, [r7, r0] - lsr r1, r1, #0x10 - add r2, r6, #0 - bl ov42_02227FDC - cmp r0, #0xf - bne _0223277A - ldr r0, [sp] - lsl r1, r4, #4 - strh r1, [r0] - ldr r0, [sp, #8] - lsl r1, r0, #4 - ldr r0, [sp] - add sp, #0xc - strh r1, [r0, #2] - pop {r4, r5, r6, r7, pc} -_0223277A: - add r4, r4, #1 - cmp r4, r5 - blo _02232756 -_02232780: - ldr r0, [sp, #8] - add r1, r0, #1 - ldr r0, [sp, #4] - str r1, [sp, #8] - cmp r1, r0 - blo _0223274A -_0223278C: - bl GF_AssertFail - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_02232794: .word 0x000006E4 - thumb_func_end ov44_02232724 - - thumb_func_start ov44_02232798 -ov44_02232798: ; 0x02232798 - push {r4, lr} - mov r2, #0x63 - mov r1, #0 - add r4, r0, #0 - lsl r2, r2, #2 -_022327A2: - ldr r3, [r4, r2] - cmp r3, #0 - bne _022327B6 - mov r2, #0x63 - lsl r2, r2, #2 - add r2, r0, r2 - mov r0, #0x1c - mul r0, r1 - add r0, r2, r0 - pop {r4, pc} -_022327B6: - add r1, r1, #1 - add r4, #0x1c - cmp r1, #0x30 - blt _022327A2 - bl GF_AssertFail - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_02232798 - - thumb_func_start ov44_022327C8 -ov44_022327C8: ; 0x022327C8 - push {r3, r4, r5, lr} - add r3, r0, #0 - ldr r0, _022327FC ; =0x000006EC - add r5, r1, #0 - ldr r0, [r3, r0] - ldr r1, [r5] - ldr r3, [r3, #4] - add r4, r2, #0 - bl ov42_0222903C - str r0, [r5, #4] - cmp r4, #0 - bne _022327F8 - ldr r0, [r5, #4] - mov r1, #0 - bl ov42_0222919C - ldr r0, [r5, #4] - bl ov42_022291A0 - ldr r0, [r5, #4] - mov r1, #0 - bl ov42_02229200 -_022327F8: - pop {r3, r4, r5, pc} - nop -_022327FC: .word 0x000006EC - thumb_func_end ov44_022327C8 - - thumb_func_start ov44_02232800 -ov44_02232800: ; 0x02232800 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - mov r1, #0 - ldrsh r1, [r2, r1] - add r5, sp, #0 - strh r1, [r5] - mov r1, #2 - ldrsh r1, [r2, r1] - strh r1, [r5, #2] - ldr r1, [sp, #0x20] - strh r3, [r5, #4] - strh r1, [r5, #6] - add r1, sp, #8 - ldrb r2, [r1, #0x14] - strh r2, [r5, #8] - ldrh r1, [r1, #0x10] - strh r1, [r5, #0xa] - ldr r1, _02232834 ; =0x000006E8 - ldr r0, [r0, r1] - add r1, sp, #0 - bl ov42_022280B8 - str r0, [r4] - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_02232834: .word 0x000006E8 - thumb_func_end ov44_02232800 - - thumb_func_start ov44_02232838 -ov44_02232838: ; 0x02232838 - ldrh r0, [r0, #0xc] - cmp r0, #5 - bhi _0223285E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0223284A: ; jump table - .short _02232856 - _0223284A - 2 ; case 0 - .short _0223285A - _0223284A - 2 ; case 1 - .short _0223285A - _0223284A - 2 ; case 2 - .short _02232856 - _0223284A - 2 ; case 3 - .short _02232856 - _0223284A - 2 ; case 4 - .short _0223285A - _0223284A - 2 ; case 5 -_02232856: - mov r0, #1 - bx lr -_0223285A: - mov r0, #0 - bx lr -_0223285E: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232838 - - thumb_func_start ov44_02232864 -ov44_02232864: ; 0x02232864 - add r2, r1, #0 - ldr r1, _02232878 ; =ov44_02232A60 - ldr r3, _0223287C ; =ov44_02232C6C - str r1, [r2, #0x10] - ldr r1, _02232880 ; =ov44_02232910 - str r1, [r2, #0x18] - mov r1, #0 - strh r1, [r2, #0xc] - bx r3 - nop -_02232878: .word ov44_02232A60 -_0223287C: .word ov44_02232C6C -_02232880: .word ov44_02232910 - thumb_func_end ov44_02232864 - - thumb_func_start ov44_02232884 -ov44_02232884: ; 0x02232884 - ldr r0, _02232898 ; =ov44_02232B74 - str r0, [r1, #0x10] - ldr r0, _0223289C ; =ov44_02232914 - str r0, [r1, #0x18] - mov r0, #0x2d - strh r0, [r1, #8] - mov r0, #1 - strh r0, [r1, #0xc] - bx lr - nop -_02232898: .word ov44_02232B74 -_0223289C: .word ov44_02232914 - thumb_func_end ov44_02232884 - - thumb_func_start ov44_022328A0 -ov44_022328A0: ; 0x022328A0 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _022328D8 ; =ov44_02232BE4 - add r4, r1, #0 - str r0, [r4, #0x10] - ldr r0, _022328DC ; =ov44_02232910 - str r0, [r4, #0x18] - bl MTRandom - ldr r1, _022328E0 ; =0x000003FF - add r2, r4, #0 - and r1, r0 - mov r0, #1 - lsl r0, r0, #8 - add r0, r1, r0 - strh r0, [r4, #8] - mov r0, #3 - strh r0, [r4, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov44_02232C6C - ldr r0, [r4, #4] - mov r1, #1 - bl ov42_0222919C - pop {r3, r4, r5, pc} - nop -_022328D8: .word ov44_02232BE4 -_022328DC: .word ov44_02232910 -_022328E0: .word 0x000003FF - thumb_func_end ov44_022328A0 - - thumb_func_start ov44_022328E4 -ov44_022328E4: ; 0x022328E4 - push {r4, lr} - add r4, r1, #0 - ldr r1, _02232908 ; =ov44_02232C30 - add r2, r4, #0 - str r1, [r4, #0x10] - ldr r1, _0223290C ; =ov44_022329B0 - str r1, [r4, #0x18] - mov r1, #0x1c - strh r1, [r4, #8] - mov r1, #4 - strh r1, [r4, #0xc] - bl ov44_02232C6C - ldr r0, [r4, #4] - mov r1, #0 - bl ov42_0222919C - pop {r4, pc} - .balign 4, 0 -_02232908: .word ov44_02232C30 -_0223290C: .word ov44_022329B0 - thumb_func_end ov44_022328E4 - - thumb_func_start ov44_02232910 -ov44_02232910: ; 0x02232910 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232910 - - thumb_func_start ov44_02232914 -ov44_02232914: ; 0x02232914 - push {r4, r5, r6, lr} - sub sp, #8 - add r4, r1, #0 - ldr r0, [r4, #4] - bl ov42_022291AC - ldr r0, [r4, #4] - bl ov42_022291F4 - cmp r0, #0 - bne _02232932 - ldr r0, [r4, #4] - mov r1, #1 - bl ov42_02229200 -_02232932: - ldr r0, [r4] - mov r1, #0 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1, #4] - ldr r0, [r4] - mov r1, #1 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1, #6] - ldrh r0, [r1, #4] - strh r0, [r1] - ldrh r0, [r1, #6] - strh r0, [r1, #2] - ldrh r0, [r4, #8] - bl GF_SinDegNoWrap - ldr r2, _022329AC ; =0xFFF40000 - asr r1, r0, #0x1f - asr r3, r2, #0x14 - bl _ll_mul - mov r5, #2 - mov r6, #0 - lsl r5, r5, #0xa - mov r3, #6 - add r2, sp, #0 - add r5, r0, r5 - adc r1, r6 - lsl r0, r1, #0x14 - lsr r1, r5, #0xc - orr r1, r0 - ldrsh r3, [r2, r3] - asr r0, r1, #0xc - add r0, r3, r0 - strh r0, [r2, #6] - mov r3, sp - ldrh r1, [r2, #4] - ldr r0, [r4, #4] - sub r3, r3, #4 - strh r1, [r3] - ldrh r1, [r2, #6] - strh r1, [r3, #2] - ldr r1, [r3] - bl ov42_022291D8 - add r1, sp, #0 - mov r3, sp - ldrh r2, [r1] - ldr r0, [r4, #4] - sub r3, r3, #4 - strh r2, [r3] - ldrh r1, [r1, #2] - strh r1, [r3, #2] - ldr r1, [r3] - bl ov42_02229258 - add sp, #8 - pop {r4, r5, r6, pc} - .balign 4, 0 -_022329AC: .word 0xFFF40000 - thumb_func_end ov44_02232914 - - thumb_func_start ov44_022329B0 -ov44_022329B0: ; 0x022329B0 - push {r4, r5, r6, lr} - sub sp, #8 - add r4, r1, #0 - ldr r0, [r4] - mov r1, #0 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1, #4] - ldr r0, [r4] - mov r1, #1 - bl ov42_02228188 - add r1, sp, #0 - strh r0, [r1, #6] - ldrh r0, [r1, #4] - strh r0, [r1] - ldrh r0, [r1, #6] - strh r0, [r1, #2] - mov r0, #8 - ldrsh r0, [r4, r0] - sub r0, #0x10 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - cmp r0, #0 - ble _02232A26 - mov r1, #6 - bl _s32_div_f - lsl r0, r1, #0x10 - asr r1, r0, #0x10 - mov r0, #0xb4 - mul r0, r1 - mov r1, #6 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GF_SinDegNoWrap - add r1, sp, #0 - mov r2, #6 - ldrsh r3, [r1, r2] - asr r2, r0, #0x1f - lsr r5, r0, #0x12 - lsl r2, r2, #0xe - lsl r6, r0, #0xe - mov r0, #2 - orr r2, r5 - mov r5, #0 - lsl r0, r0, #0xa - add r6, r6, r0 - adc r2, r5 - lsl r0, r2, #0x14 - lsr r2, r6, #0xc - orr r2, r0 - asr r0, r2, #0xc - sub r0, r3, r0 - strh r0, [r1, #6] -_02232A26: - add r1, sp, #0 - ldrh r2, [r1, #4] - mov r3, sp - ldr r0, [r4, #4] - sub r3, r3, #4 - strh r2, [r3] - ldrh r1, [r1, #6] - strh r1, [r3, #2] - ldr r1, [r3] - bl ov42_022291D8 - add r1, sp, #0 - mov r3, sp - ldrh r2, [r1] - ldr r0, [r4, #4] - sub r3, r3, #4 - strh r2, [r3] - ldrh r1, [r1, #2] - strh r1, [r3, #2] - ldr r1, [r3] - bl ov42_02229258 - ldr r0, [r4, #4] - mov r1, #1 - bl ov42_02229218 - add sp, #8 - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end ov44_022329B0 - - thumb_func_start ov44_02232A60 -ov44_02232A60: ; 0x02232A60 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r5, r0, #0 - ldr r0, [r6] - mov r1, #6 - bl ov42_02228188 - add r4, r0, #0 - ldr r0, [r6] - mov r1, #4 - bl ov42_02228188 - add r7, r0, #0 - ldr r0, [r6] - mov r1, #5 - bl ov42_02228188 - cmp r0, #0 - beq _02232A8A - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02232A8A: - ldr r0, _02232B70 ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #1 - tst r0, r1 - beq _02232AC4 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov44_022321C4 - str r0, [sp] - cmp r0, #0 - beq _02232AC0 - bl ov44_02232838 - cmp r0, #1 - bne _02232ABA - ldr r0, [sp] - mov r1, #4 - ldr r0, [r0] - bl ov42_02228188 - strb r0, [r6, #0xa] - b _02232AC4 -_02232ABA: - mov r0, #0 - strb r0, [r6, #0xa] - b _02232AC4 -_02232AC0: - mov r0, #0 - strb r0, [r6, #0xa] -_02232AC4: - ldr r0, [r5, #0xc] - cmp r0, #1 - bne _02232ACE - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02232ACE: - ldr r0, _02232B70 ; =gSystem - mov r1, #2 - ldr r0, [r0, #0x44] - add r2, r0, #0 - tst r2, r1 - beq _02232ADC - mov r1, #3 -_02232ADC: - mov r2, #0x40 - tst r2, r0 - beq _02232B00 - cmp r4, #0 - bne _02232AF2 - add r0, r5, #0 - add r2, r4, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232AF2: - add r0, r5, #0 - mov r1, #1 - mov r2, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B00: - mov r2, #0x80 - tst r2, r0 - beq _02232B24 - cmp r4, #1 - bne _02232B16 - add r0, r5, #0 - add r2, r4, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B16: - mov r1, #1 - add r0, r5, #0 - add r2, r1, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B24: - mov r2, #0x20 - tst r2, r0 - beq _02232B48 - cmp r4, #2 - bne _02232B3A - add r0, r5, #0 - add r2, r4, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B3A: - add r0, r5, #0 - mov r1, #1 - mov r2, #2 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B48: - mov r2, #0x10 - tst r0, r2 - beq _02232B6A - cmp r4, #3 - bne _02232B5E - add r0, r5, #0 - add r2, r4, #0 - add r3, r7, #0 - bl ov44_02232C4C - b _02232B6A -_02232B5E: - add r0, r5, #0 - mov r1, #1 - mov r2, #3 - add r3, r7, #0 - bl ov44_02232C4C -_02232B6A: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02232B70: .word gSystem - thumb_func_end ov44_02232A60 - - thumb_func_start ov44_02232B74 -ov44_02232B74: ; 0x02232B74 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #8 - ldrsh r1, [r4, r0] - sub r1, r1, #1 - strh r1, [r4, #8] - ldrsh r0, [r4, r0] - cmp r0, #0 - bgt _02232BC4 - ldr r0, [r4, #4] - bl ov42_022291B8 - ldr r0, [r4, #4] - mov r1, #1 - bl ov42_0222919C - ldr r0, _02232BC8 ; =0x000006CC - mov r1, #4 - ldr r0, [r5, r0] - ldr r0, [r0] - bl ov42_02228188 - add r6, r0, #0 - ldr r0, [r4] - mov r1, #4 - bl ov42_02228188 - cmp r0, r6 - bne _02232BBA - add r0, r5, #0 - add r1, r4, #0 - bl ov44_02232864 - b _02232BC4 -_02232BBA: - ldrb r2, [r4, #0xb] - add r0, r5, #0 - add r1, r4, #0 - bl ov44_02232CA8 -_02232BC4: - mov r0, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_02232BC8: .word 0x000006CC - thumb_func_end ov44_02232B74 - - thumb_func_start ov44_02232BCC -ov44_02232BCC: ; 0x02232BCC - mov r0, #8 - ldrsh r2, [r1, r0] - add r2, r2, #1 - strh r2, [r1, #8] - ldrsh r0, [r1, r0] - cmp r0, #0x2d - ble _02232BDE - mov r0, #1 - bx lr -_02232BDE: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232BCC - - thumb_func_start ov44_02232BE4 -ov44_02232BE4: ; 0x02232BE4 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r1, #0 - mov r0, #8 - ldrsh r1, [r5, r0] - sub r1, r1, #1 - strh r1, [r5, #8] - ldrsh r0, [r5, r0] - cmp r0, #0 - bgt _02232C26 - bl MTRandom - ldr r1, _02232C2C ; =0x000003FF - and r1, r0 - mov r0, #1 - lsl r0, r0, #8 - add r0, r1, r0 - strh r0, [r5, #8] - bl MTRandom - add r4, r0, #0 - mov r1, #3 - and r4, r1 - ldr r0, [r5] - mov r1, #4 - bl ov42_02228188 - add r3, r0, #0 - add r0, r6, #0 - mov r1, #0 - add r2, r4, #0 - bl ov44_02232C4C -_02232C26: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_02232C2C: .word 0x000003FF - thumb_func_end ov44_02232BE4 - - thumb_func_start ov44_02232C30 -ov44_02232C30: ; 0x02232C30 - mov r0, #8 - ldrsh r2, [r1, r0] - sub r2, r2, #1 - strh r2, [r1, #8] - ldrsh r0, [r1, r0] - cmp r0, #0 - bge _02232C42 - mov r0, #0x1c - strh r0, [r1, #8] -_02232C42: - mov r0, #0 - bx lr - .balign 4, 0 - thumb_func_end ov44_02232C30 - - thumb_func_start ov44_02232C48 -ov44_02232C48: ; 0x02232C48 - mov r0, #0 - bx lr - thumb_func_end ov44_02232C48 - - thumb_func_start ov44_02232C4C -ov44_02232C4C: ; 0x02232C4C - push {r3, r4, lr} - sub sp, #4 - add r4, sp, #0 - strh r1, [r4] - strb r2, [r4, #2] - ldr r1, _02232C68 ; =0x000006F8 - strb r3, [r4, #3] - ldr r0, [r0, r1] - add r1, sp, #0 - bl ov42_02229A8C - add sp, #4 - pop {r3, r4, pc} - nop -_02232C68: .word 0x000006F8 - thumb_func_end ov44_02232C4C - - thumb_func_start ov44_02232C6C -ov44_02232C6C: ; 0x02232C6C - push {r3, r4, r5, r6, r7, lr} - add r4, r2, #0 - add r5, r0, #0 - add r6, r1, #0 - ldr r0, [r4] - mov r1, #6 - bl ov42_02228188 - add r7, r0, #0 - ldr r0, [r4] - mov r1, #4 - bl ov42_02228188 - add r3, r0, #0 - add r0, r5, #0 - add r1, r6, #0 - add r2, r7, #0 - bl ov44_02232C4C - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov44_02232C6C - - thumb_func_start ov44_02232C94 -ov44_02232C94: ; 0x02232C94 - ldr r1, [r0, #0x18] - ldr r0, _02232CA4 ; =ov44_02232914 - cmp r1, r0 - beq _02232CA0 - mov r0, #1 - bx lr -_02232CA0: - mov r0, #0 - bx lr - .balign 4, 0 -_02232CA4: .word ov44_02232914 - thumb_func_end ov44_02232C94 - - thumb_func_start ov44_02232CA8 -ov44_02232CA8: ; 0x02232CA8 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r4, r2, #0 - beq _02232CB6 - cmp r4, #1 - beq _02232CBC - b _02232CC2 -_02232CB6: - bl ov44_022328A0 - b _02232CC6 -_02232CBC: - bl ov44_022328E4 - b _02232CC6 -_02232CC2: - bl GF_AssertFail -_02232CC6: - strb r4, [r5, #0xb] - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov44_02232CA8 - - thumb_func_start ov44_02232CCC -ov44_02232CCC: ; 0x02232CCC - push {r3, r4, r5, lr} - add r4, r1, #0 - add r3, r0, #0 - add r5, r4, #0 - mov r1, #0x14 - mov r0, #0 -_02232CD8: - strb r0, [r5] - add r5, r5, #1 - sub r1, r1, #1 - bne _02232CD8 - ldr r3, [r3, #4] - add r0, r2, #0 - mov r1, #0x20 - add r2, r4, #4 - bl GfGfxLoader_GetPlttDataFromOpenNarc - str r0, [r4] - mov r0, #0xf - strb r0, [r4, #8] - mov r0, #0 - strb r0, [r4, #9] - ldrb r0, [r4, #9] - lsl r1, r0, #1 - ldr r0, _02232D04 ; =ov44_02235600 - ldrh r0, [r0, r1] - strh r0, [r4, #0xa] - pop {r3, r4, r5, pc} - nop -_02232D04: .word ov44_02235600 - thumb_func_end ov44_02232CCC - - thumb_func_start ov44_02232D08 -ov44_02232D08: ; 0x02232D08 - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4] - bl Heap_Free - mov r1, #0x14 - mov r0, #0 -_02232D16: - strb r0, [r4] - add r4, r4, #1 - sub r1, r1, #1 - bne _02232D16 - pop {r4, pc} - thumb_func_end ov44_02232D08 - - thumb_func_start ov44_02232D20 -ov44_02232D20: ; 0x02232D20 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #0 - bl ov44_02232D34 - add r0, r4, #0 - bl ov44_02232DA0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov44_02232D20 - - thumb_func_start ov44_02232D34 -ov44_02232D34: ; 0x02232D34 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0xa - ldrsh r1, [r5, r0] - sub r1, r1, #1 - strh r1, [r5, #0xa] - ldrsh r0, [r5, r0] - cmp r0, #0 - bgt _02232D9A - ldrb r0, [r5, #9] - add r0, r0, #1 - lsr r2, r0, #0x1f - lsl r1, r0, #0x1f - sub r1, r1, r2 - mov r0, #0x1f - ror r1, r0 - add r0, r2, r1 - strb r0, [r5, #9] - ldrb r0, [r5, #9] - lsl r1, r0, #1 - ldr r0, _02232D9C ; =ov44_02235600 - ldrh r0, [r0, r1] - strh r0, [r5, #0xa] - ldrb r0, [r5, #9] - cmp r0, #1 - bne _02232D6C - mov r6, #2 - b _02232D6E -_02232D6C: - mov r6, #1 -_02232D6E: - mov r4, #0 - mov r7, #1 -_02232D72: - add r0, r7, #0 - ldrb r1, [r5, #8] - lsl r0, r4 - tst r0, r1 - beq _02232D94 - add r0, r5, #0 - add r1, r6, #0 - bl ov44_02232E2C - add r1, r4, #1 - lsl r1, r1, #1 - add r2, r0, #0 - mov r0, #0xf - add r1, #0xe0 - mov r3, #2 - bl GF_CreateNewVramTransferTask -_02232D94: - add r4, r4, #1 - cmp r4, #4 - blt _02232D72 -_02232D9A: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_02232D9C: .word ov44_02235600 - thumb_func_end ov44_02232D34 - - thumb_func_start ov44_02232DA0 -ov44_02232DA0: ; 0x02232DA0 - push {r3, r4, r5, lr} - add r4, r0, #0 - ldrb r3, [r4, #0xd] - mov r0, #0 - add r1, r0, #0 - lsl r5, r3, #2 - ldr r3, _02232E1C ; =ov44_0223560F - add r2, r0, #0 - ldrb r3, [r3, r5] - cmp r3, #1 - bne _02232DC8 - mov r3, #0xe - ldrsh r5, [r4, r3] - sub r5, r5, #1 - strh r5, [r4, #0xe] - ldrsh r3, [r4, r3] - cmp r3, #0 - bgt _02232DD2 - mov r2, #1 - b _02232DD2 -_02232DC8: - ldrb r3, [r4, #0x10] - cmp r3, #0 - beq _02232DD2 - strb r0, [r4, #0x10] - mov r2, #1 -_02232DD2: - cmp r2, #0 - beq _02232DFE - ldrb r0, [r4, #0xd] - add r0, r0, #1 - strb r0, [r4, #0xd] - ldrb r0, [r4, #0xd] - cmp r0, #8 - blo _02232DEA - add r0, r4, #0 - bl ov44_02232E38 - pop {r3, r4, r5, pc} -_02232DEA: - lsl r1, r0, #2 - ldr r0, _02232E20 ; =ov44_02235610 - ldrb r0, [r0, r1] - ldr r1, _02232E24 ; =ov44_02235612 - strh r0, [r4, #0xe] - ldrb r0, [r4, #0xd] - lsl r2, r0, #2 - ldr r0, _02232E28 ; =ov44_02235611 - ldrb r1, [r1, r2] - ldrb r0, [r0, r2] -_02232DFE: - cmp r0, #0 - beq _02232E1A - add r0, r4, #0 - bl ov44_02232E2C - ldrb r1, [r4, #0xc] - add r2, r0, #0 - mov r0, #0xf - add r1, r1, #1 - lsl r1, r1, #1 - add r1, #0xe0 - mov r3, #2 - bl GF_CreateNewVramTransferTask -_02232E1A: - pop {r3, r4, r5, pc} - .balign 4, 0 -_02232E1C: .word ov44_0223560F -_02232E20: .word ov44_02235610 -_02232E24: .word ov44_02235612 -_02232E28: .word ov44_02235611 - thumb_func_end ov44_02232DA0 - - thumb_func_start ov44_02232E2C -ov44_02232E2C: ; 0x02232E2C - ldr r0, [r0, #4] - ldr r2, [r0, #0xc] - add r0, r1, #1 - lsl r0, r0, #1 - add r0, r2, r0 - bx lr - thumb_func_end ov44_02232E2C - - thumb_func_start ov44_02232E38 -ov44_02232E38: ; 0x02232E38 - ldrb r1, [r0, #0xc] - ldrb r3, [r0, #8] - mov r2, #1 - lsl r2, r1 - add r1, r3, #0 - orr r1, r2 - strb r1, [r0, #8] - mov r1, #0 - strb r1, [r0, #0xc] - strb r1, [r0, #0xd] - strh r1, [r0, #0xe] - strb r1, [r0, #0x10] - bx lr - .balign 4, 0 - thumb_func_end ov44_02232E38 - - thumb_func_start ov44_02232E54 -ov44_02232E54: ; 0x02232E54 - mov r1, #1 - strb r1, [r0, #0x10] - bx lr - .balign 4, 0 - thumb_func_end ov44_02232E54 - - thumb_func_start ov44_02232E5C -ov44_02232E5C: ; 0x02232E5C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - ldrb r1, [r5, #0xd] - cmp r1, #0 - beq _02232E6C - bl ov44_02232E38 -_02232E6C: - mov r0, #1 - ldrb r1, [r5, #8] - lsl r0, r4 - eor r0, r1 - strb r0, [r5, #8] - add r0, r5, #0 - strb r4, [r5, #0xc] - bl ov44_02232E54 - pop {r3, r4, r5, pc} - thumb_func_end ov44_02232E5C - - thumb_func_start ov44_02232E80 -ov44_02232E80: ; 0x02232E80 - push {r3, lr} - ldrb r1, [r0, #0xd] - cmp r1, #0 - beq _02232E8C - bl ov44_02232E54 -_02232E8C: - pop {r3, pc} - .balign 4, 0 - thumb_func_end ov44_02232E80 - - thumb_func_start ov44_02232E90 -ov44_02232E90: ; 0x02232E90 - lsl r1, r0, #2 - ldr r0, _02232E98 ; =ov44_02235630 - ldr r0, [r0, r1] - bx lr - .balign 4, 0 -_02232E98: .word ov44_02235630 - thumb_func_end ov44_02232E90 - - thumb_func_start ov44_02232E9C -ov44_02232E9C: ; 0x02232E9C - lsl r1, r0, #2 - ldr r0, _02232EA4 ; =ov44_0223688C - ldr r0, [r0, r1] - bx lr - .balign 4, 0 -_02232EA4: .word ov44_0223688C - thumb_func_end ov44_02232E9C - .rodata @@ -18362,25 +15412,32 @@ ov44_02235570: ; 0x02235570 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +.public ov44_02235600 ov44_02235600: ; 0x02235600 .byte 0x03, 0x00, 0x02, 0x00 +.public ov44_02235604 ov44_02235604: ; 0x02235604 .byte 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x03, 0x00, 0x58, 0x21, 0x00 +.public ov44_0223560F ov44_0223560F: ; 0x0223560F .byte 0x00 +.public ov44_02235610 ov44_02235610: ; 0x02235610 .byte 0x00 +.public ov44_02235611 ov44_02235611: ; 0x02235611 .byte 0x00 +.public ov44_02235612 ov44_02235612: ; 0x02235612 .byte 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x04, 0x01, 0x01, 0x01, 0x02, 0x01, 0x00, 0x00 .byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x04, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x00 +.public ov44_02235630 ov44_02235630: ; 0x02235630 .byte 0x10, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x16, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x0B, 0x00 @@ -18865,6 +15922,7 @@ ov44_0223676C: ; 0x0223676C .word ov44_0222E5E0 .word ov44_0222BF6C +.public ov44_0223688C ov44_0223688C: ; 0x0223688C .word ov44_02235640 .word ov44_02235900 diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 74804050a..6103577b0 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -12,5 +12,7 @@ void ov00_021E69A8(s32); void ov00_021E6D60(void*, s32); void ov00_021E70B8(u8); void ov00_021EC454(s32); +void ov00_021E714C(s32, s32); +void ov00_021E6D68(); #endif // POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_42.h b/include/overlay_42.h index 22c62bc4b..8ae9135d4 100644 --- a/include/overlay_42.h +++ b/include/overlay_42.h @@ -1,13 +1,15 @@ #ifndef POKEHEARTGOLD_OVY_42_H #define POKEHEARTGOLD_OVY_42_H +#include "overlay_44.h" + u32 ov42_02229248(u32 a0); void ov42_022291AC(u32 a0); void ov42_022291B8(u32 a0); void ov42_0222919C(u32 a0, u32 a1); void ov42_022291A0(u32 a0); void ov42_02229200(u32 a0, u32 a1); -s32 ov42_02228188(u32 a0, u32 a1); +u16 ov42_02228188(u32 a0, u32 a1); void ov42_0222901C(u32 a0); void ov42_022290DC(u32 a0); void ov42_0222807C(u32 a0); @@ -20,4 +22,35 @@ void ov42_02228050(u32 a0); u32 ov42_02228EDC(SpriteList* spriteList, u32 a1, u32 a2, u32 a3, enum HeapID heapID); u32 ov42_02228010(u32 a0, enum HeapID heapID); +u16 ov42_02227F40(u16*); +u16 ov42_02227F44(u16*); +s32 ov42_02227FDC(u16*, u16, u16); +s32 ov42_022282DC(s32); +void ov42_022291D8(s32, UnkStruct_ov44_02232914); +s32 ov42_022291F4(s32); +ov42_02229218(s32, s32); +void ov42_02229258(s32, UnkStruct_ov44_02232914); +s32 ov42_022293B8(G2dRenderer*, BgConfig*, void*, s32); +ov42_0222940C(s32); +ov42_02229A8C(s32, void*); +void ov42_02229028(u32, s32, s32); +u32 ov42_02228F24(SpriteList*, s32, s32, s32, s32, s32, s32); +s32 ov42_022283BC(u32, u32); +void ov42_02228068(u32, u32*); +s32 ov42_02228C80(u16*, u32, u32*, u32*); +s32 ov42_02229AC8(u32, u32*); +u32 ov42_02228270(UnkStruct_ov44_02232914, u16); +void ov42_022282A4(void); +void ov42_02228100(s32); +void ov42_022290C4(s32); +void ov42_02229420(u32, u32*); +void ov42_02229358(u32*, u32); +s32 ov42_0222920C(s32); +void ov42_02227F28(u16*); +void ov42_02229A78(u32); +u32 ov42_02229A40(s32, s32); +void ov42_02229394(u32*); +void ov42_02227F48(u16*, s32); +u16* ov42_02227EE0(u16, u16, enum HeapID); + #endif // POKEHEARTGOLD_OVY_42_H diff --git a/include/overlay_44.h b/include/overlay_44.h index 9bec719dc..e9733b82e 100644 --- a/include/overlay_44.h +++ b/include/overlay_44.h @@ -6,8 +6,217 @@ #include "main.h" #include "list_menu_2d.h" #include "render_window.h" +#include "sprite.h" +#include "yes_no_prompt.h" #include "unk_02009D48.h" +// overlay_44_02232E9C +typedef struct UnkStruct_ov44_02231A28 { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u16 unk6; +} UnkStruct_ov44_02231A28; + +typedef struct UnkStruct_ov44_02232E80 { + void* unk0; + NNSG2dPaletteData* unk4; + u8 unk8; + u8 unk9; + s16 unkA; + u8 unkC; + u8 unkD; + s16 unkE; + u8 unk10; +} UnkStruct_ov44_02232E80; + +typedef struct UnkStruct_ov44_02232914 { + u16 unk0; + u16 unk2; +} UnkStruct_ov44_02232914; + +typedef struct UnkStruct_ov44_02232DA0 UnkStruct_ov44_02232DA0; +typedef struct UnkStruct_ov44_02232B74 UnkStruct_ov44_02232B74; + +typedef s32 (*func_type_022328E4)(UnkStruct_ov44_02232DA0*, UnkStruct_ov44_02232B74*); +typedef void (*func_type_022328A0)(UnkStruct_ov44_02232DA0*, UnkStruct_ov44_02232B74*); + +struct UnkStruct_ov44_02232B74 { + u32 unk0; + u32 unk4; + s16 unk8; + u8 unkA; + u8 unkB; + u16 unkC; + u16 unkE; + func_type_022328E4 unk10; + void* unk14; + func_type_022328A0 unk18; +}; + +typedef struct UnkStruct_ov44_02232C4C { + s16 unk0; + u8 unk2; + u8 unk3; +} UnkStruct_ov44_02232C4C; + +typedef struct UnkStruct_ov44_02231A7C { + SpriteList* unk0; + G2dRenderer unk4; + GF_2DGfxResMan* unk12C[4]; + SpriteResource* unk13C[4]; + SpriteResourcesHeader unk14C; + Sprite* unk170; + Sprite* unk174; +} UnkStruct_ov44_02231A7C; + +struct UnkStruct_ov44_02232DA0 { + u32 unk0; + enum HeapID unk4; + u8 unk8; + u8 unk9; + s16 unkA; + u32 unkC; + BgConfig* unk10; + UnkStruct_ov44_02231A7C unk14; + UnkStruct_ov44_02232B74 unk18C[48]; + UnkStruct_ov44_02232B74* unk6CC; + UnkStruct_ov44_02232E80 unk6D0; + u16* unk6E4; + u32 unk6E8; + u32 unk6EC; + u32 unk6F0; + u32 unk6F4; + u32 unk6F8; +}; + +typedef struct UnkStruct_ov44_0223197C { + u8 unk0[33]; + u8 unk21; + u8 unk22; + u8 unk23; + u32 unk24; +} UnkStruct_ov44_0223197C; + +typedef struct UnkStruct_ov44_022319EC { + u32 unk0; + UnkStruct_ov44_0223197C* unk4; + u8 unk8[0x384]; + UnkStruct_ov44_02232DA0 unk38C; + u8 unkA88[0x94]; + MessageFormat* unkB1C; + u8 unkB20[0x244]; + u32 unkD64; + u8 unkD68[0x330]; + u32 unk1098; +} UnkStruct_ov44_022319EC; + +s32 ov44_02229F44(s32); +void ov44_0222F510(UnkStruct_ov44_022319EC*, s32, s32); +void ov44_0222F7BC(UnkStruct_ov44_022319EC*); +s32 ov44_02231CE8(UnkStruct_ov44_02232DA0* arg0); + +// The following functions are static +void ov44_02231918(UnkStruct_ov44_022319EC* arg0, s32 arg1); +s32* ov44_02231958(UnkStruct_ov44_022319EC* arg0, u32 arg1); +void ov44_02231974(void); +void ov44_0223197C(UnkStruct_ov44_022319EC* arg0, s32 arg1, s32 arg2); +void ov44_022319BC(UnkStruct_ov44_022319EC* arg0, s32 arg1); +void ov44_022319EC(UnkStruct_ov44_022319EC* arg0); +YesNoPrompt* ov44_02231A14(BgConfig* arg0, UnkStruct_ov44_02231A28* arg1, u32 arg2); +YesNoPrompt* ov44_02231A28(BgConfig* arg0, UnkStruct_ov44_02231A28* arg1, u32 arg2); +void ov44_02231A7C(UnkStruct_ov44_02232DA0* arg0, enum HeapID heapID, NARC* arg2, BgConfig* arg3, s32 arg4, u32 arg5); +void ov44_02231B4C(UnkStruct_ov44_02232DA0* arg0); +s32 ov44_02231BB0(s32* arg0); +s32 ov44_02231BB4(UnkStruct_ov44_02232DA0* arg0); +void ov44_02231C60(UnkStruct_ov44_02232DA0* arg0); +u8 ov44_02231C70(UnkStruct_ov44_02232DA0* arg0); +s32 ov44_02231C8C(UnkStruct_ov44_02232DA0* arg0); +void ov44_02231D48(UnkStruct_ov44_02232DA0* arg0, s32* arg1); +void ov44_02231D8C(UnkStruct_ov44_02232DA0* arg0); +void ov44_02231D94(UnkStruct_ov44_02232DA0* arg0, s32 arg1); +s32 ov44_02231D98(UnkStruct_ov44_02232DA0* arg0); +UnkStruct_ov44_02232B74* ov44_02231D9C(UnkStruct_ov44_02232DA0* arg0, s16 arg1); +UnkStruct_ov44_02232B74* ov44_02231E08(UnkStruct_ov44_02232DA0* arg0, s16 arg1, s16 arg2); +void ov44_02231E94(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02231ED4(s32* arg0); +u8 ov44_02231EF4(s32* arg0); +void ov44_02231F04(s32* arg0); +void ov44_02231F14(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s32 arg2); +void ov44_02231F88(s32 arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02231FA8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u8 arg2); +void ov44_02231FCC(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232008(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232018(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232028(UnkStruct_ov44_02232DA0* arg0); +s32 ov44_02232050(UnkStruct_ov44_02232DA0* arg0); +s32 ov44_02232070(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232104(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232158(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232194(UnkStruct_ov44_02232DA0* arg0); +UnkStruct_ov44_02232B74* ov44_022321C4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u16 arg2); +void ov44_02232204(UnkStruct_ov44_02232DA0* arg0, s32 arg1, s32 arg2); +void ov44_02232238(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232248(UnkStruct_ov44_02232DA0* arg0, s32 arg1, NARC* arg2, s32 arg3); +void ov44_02232288(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232298(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID, NARC* narc); +void ov44_022322E8(UnkStruct_ov44_02231A7C* arg0); +void ov44_02232314(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID , NARC* narc); +void ov44_0223231C(UnkStruct_ov44_02231A7C* arg0); +void ov44_02232324(UnkStruct_ov44_02231A7C* arg1, enum HeapID heapID); +void ov44_0223232C(UnkStruct_ov44_02231A7C* arg0); +void ov44_02232334(BgConfig* arg0, enum HeapID heapID); +void ov44_02232338(BgConfig* arg0); +void ov44_0223233C(BgConfig *bgConfig, enum HeapID heapID, NARC* narc); +void ov44_0223237C(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID, NARC* narc); +void ov44_0223247C(UnkStruct_ov44_02231A7C* arg0); +void ov44_022324B0(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID); +void ov44_02232530(UnkStruct_ov44_02231A7C* arg0); +void ov44_0223254C(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232594(UnkStruct_ov44_02232DA0* arg0); +void ov44_022325A4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232914 arg1, s32 arg2); +void ov44_022325F4(UnkStruct_ov44_02232DA0* arg0); +s32 ov44_02232604(UnkStruct_ov44_02232DA0* arg0); +void ov44_02232680(UnkStruct_ov44_02232DA0* arg0, u16* arg1, u32 arg2); +void ov44_02232724(UnkStruct_ov44_02232DA0* arg0, s16* arg1); +UnkStruct_ov44_02232B74* ov44_02232798(UnkStruct_ov44_02232DA0* arg0); +void ov44_022327C8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s32 arg2); +void ov44_02232800(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s16* arg2, s16 arg3, u16 arg4, u8 arg5, s32 arg6); +s32 ov44_02232838(UnkStruct_ov44_02232B74* arg0); +void ov44_02232864(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02232884(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_022328A0(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_022328E4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02232910(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02232914(UnkStruct_ov44_02232DA0 *arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_022329B0(UnkStruct_ov44_02232DA0 *arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232A60(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232B74(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232BCC(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232BE4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232C30(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +s32 ov44_02232C48(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1); +void ov44_02232C4C(UnkStruct_ov44_02232DA0* arg0, s16 arg1, u32 arg2, u16 arg3); +void ov44_02232C6C(UnkStruct_ov44_02232DA0* arg0, s16 arg1, UnkStruct_ov44_02232B74* arg2); +s32 ov44_02232C94(UnkStruct_ov44_02232B74* arg0); +void ov44_02232CA8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u8 arg2); +void ov44_02232CCC(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1, NARC* arg2); +void ov44_02232D08(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1); +void ov44_02232D20(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1); +void ov44_02232D34(UnkStruct_ov44_02232E80* arg0); +void ov44_02232DA0(UnkStruct_ov44_02232E80* arg0); +void* ov44_02232E2C(UnkStruct_ov44_02232E80* arg0, s32 arg1); +void ov44_02232E38(UnkStruct_ov44_02232E80* arg0); +void ov44_02232E54(UnkStruct_ov44_02232E80* arg0); +void ov44_02232E5C(UnkStruct_ov44_02232E80* arg0, u8 arg1); +void ov44_02232E80(UnkStruct_ov44_02232E80* arg0); +s32 ov44_02232E90(s32 arg0); +s32 ov44_02232E9C(u32 arg0); + +// overlay_44_02235340 typedef struct UnkStruct_ov44_022341C0 { u32 unk0; u32 unk4; diff --git a/include/unk_0202C034.h b/include/unk_0202C034.h index c5ca9781f..f33fddc0d 100644 --- a/include/unk_0202C034.h +++ b/include/unk_0202C034.h @@ -10,5 +10,6 @@ void sub_0202C714(SaveData *saveData); UnkStruct_021D2230 *sub_0202C6F4(SaveData *saveData); int sub_0202C2F8(struct UnkStruct_021D2230 *a0); void *sub_0202C08C(UnkStruct_021D2230 *a0); +u16* sub_0202C254(u32 a0, s32 a1); #endif // POKEHEARTGOLD_UNK_0202C034_H diff --git a/include/unk_02030A98.h b/include/unk_02030A98.h index 3d0be45d6..33195e42e 100644 --- a/include/unk_02030A98.h +++ b/include/unk_02030A98.h @@ -24,7 +24,7 @@ void sub_02030FB0(void *, u32, u32, u32, u8 *); u32 sub_02030FE4(void *, u32, u8, u32, u32); FrontierSave *Save_Frontier_GetStatic(SaveData *saveData); void Save_Frontier_Load(SaveData *saveData); -int FrontierSave_GetStat(FrontierSave *, int, int); +u16 FrontierSave_GetStat(FrontierSave *, int, int); void Save_Frontier_Commit(SaveData *saveData); u32 sub_02031108(FrontierSave *, int, int, u16); void sub_0203126C(FrontierSave *a0, u32 a1, u32 a2, u16 a3); diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 3f016f1b6..a250d03e1 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -26,7 +26,7 @@ BOOL sub_020390C4(void); void sub_020378E4(int a0); void sub_02039B18(void); void sub_02039AF8(void); -s32 sub_02039080(void); +s32 sub_02039080(s32); s32 sub_02039264(void); u8* sub_020398C8(void); diff --git a/main.lsf b/main.lsf index 88ce023a4..78a89db57 100644 --- a/main.lsf +++ b/main.lsf @@ -813,6 +813,7 @@ Overlay OVY_44 { After OVY_42 Object asm/overlay_44.o + Object src/overlay_44_02232E9C.o Object src/overlay_44_02235340.o } Overlay OVY_45 diff --git a/src/overlay_44_02232E9C.c b/src/overlay_44_02232E9C.c new file mode 100644 index 000000000..927f8c9b1 --- /dev/null +++ b/src/overlay_44_02232E9C.c @@ -0,0 +1,995 @@ +#include "overlay_44.h" + +#include "vram_transfer_manager.h" +#include "math_util.h" +#include "gf_gfx_loader.h" +#include "global.h" +#include "overlay_42.h" + +#include "obj_pltt_transfer.h" +#include "obj_char_transfer.h" +#include "overlay_manager.h" +#include "vram_transfer_manager.h" +#include "gf_gfx_loader.h" +#include "constants/sndseq.h" +#include "msgdata/msg.naix" + +#include "bg_window.h" +#include "filesystem.h" + +#include "unk_0200ACF0.h" +#include "unk_0200A090.h" +#include "unk_02037C94.h" +#include "unk_020971F8.h" +#include "unk_020379A0.h" +#include "overlay_00_thumb.h" + +// const u16 ov44_02235600[2] = {3, 2}; + +// const u8 ov44_02235604[11] = {0, 0, 0, 28, 0, 0, 3, 0, 88, 22, 0}; + +// const u32 ov44_02235630[4] = {0xB0010, 0xB0010, 0xB0016, 0xB001C}; + +// const void* ov44_0223688C[4]; + +// const u8 ov44_0223560F[1] = {0}; +// const u8 ov44_02235610[1] = {0}; +// const u8 ov44_02235611[1] = {0}; +// const u8 ov44_02235612[30] = {1, 1, 2, 1, 0, 1, 4, 1, 1, 1, 2, 1, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 4, 1, 0, 1, 3, 1, 1, 0}; + +extern u16 ov44_02235600[2]; +extern u8 ov44_02235604[11]; +extern u32 ov44_02235630[4]; +extern u32 ov44_0223688C[4]; + +extern u8 ov44_0223560F[1]; +extern u8 ov44_02235610[1]; +extern u8 ov44_02235611[1]; +extern u8 ov44_02235612[30]; + +void ov44_02231918(UnkStruct_ov44_022319EC* arg0, s32 arg1) { + if (arg1 != -1) { + PlayerProfile* playerProfile = PlayerProfile_New(HEAP_ID_53); + Save_Profile_PlayerName_Set(playerProfile, sub_0202C254(arg0->unk0, arg1)); + BufferPlayersName(arg0->unkB1C, 0, playerProfile); + Heap_Free(playerProfile); + } +} + +s32* ov44_02231958(UnkStruct_ov44_022319EC* arg0, u32 arg1) { + if (arg1 >= 32) { + return &arg0->unk1098; + } + return &arg0->unk4->unk24 + 9 * arg1; +} + + +void ov44_02231974(void) { + ov00_021E6D68(); +} + +void ov44_0223197C(UnkStruct_ov44_022319EC* arg0, s32 arg1, s32 arg2) { + sub_020379A0(HEAP_ID_15); + ov00_021E70B8(arg0->unk4->unk21); + if (ov44_02229F44(arg2) == 1) { + ov00_021E714C(1, 128); + } else { + ov00_021E714C(0, 128); + } + sub_02097214(); + sub_02039080(arg1); +} + +void ov44_022319BC(UnkStruct_ov44_022319EC* arg0, s32 arg1) { + if (arg0->unkD64 == 0) { + arg0->unkD64 = 1; + ov44_02231D94(&arg0->unk38C, 1); + if (arg1 == 1) { + ov44_0222F510(arg0, 9, 0); + } + } +} + +void ov44_022319EC(UnkStruct_ov44_022319EC* arg0) { + if (arg0->unkD64 == 1) { + arg0->unkD64 = 0; + ov44_0222F7BC(arg0); + ov44_02231D94(&arg0->unk38C, 0); + } +} + +YesNoPrompt* ov44_02231A14(BgConfig* arg0, UnkStruct_ov44_02231A28* arg1, u32 arg2) { + YesNoPrompt* yesNoPrompt = ov44_02231A28(arg0, arg1, arg2); + YesNoPrompt_SetIgnoreTouch(yesNoPrompt, 1); + return yesNoPrompt; +} + +YesNoPrompt* ov44_02231A28(BgConfig* arg0, UnkStruct_ov44_02231A28* arg1, u32 arg2) { + YesNoPrompt* yesNoPrompt = YesNoPrompt_Create(HEAP_ID_53); + YesNoPromptTemplate yesNoPromptTemplate; + yesNoPromptTemplate.bgConfig = arg0; + yesNoPromptTemplate.bgId = arg1->unk0; + yesNoPromptTemplate.tileStart = arg1->unk6; + yesNoPromptTemplate.plttSlot = arg1->unk5; + yesNoPromptTemplate.x = arg1->unk1; + yesNoPromptTemplate.y = arg1->unk2; + yesNoPromptTemplate.ignoreTouchFlag = 0; + yesNoPromptTemplate.initialCursorPos = arg2; + yesNoPromptTemplate.shapeParam = 0; + YesNoPrompt_InitFromTemplate(yesNoPrompt, &yesNoPromptTemplate); + return yesNoPrompt; +} + +void ov44_02231A7C(UnkStruct_ov44_02232DA0* arg0, enum HeapID arg1, NARC* arg2, BgConfig* arg3, s32 arg4, u32 arg5) { + memset(arg0, 0, sizeof(UnkStruct_ov44_02232DA0)); + arg0->unk4 = arg1; + u32 temp_r7 = (arg5 - 1) / 8; + arg0->unk10 = arg3; + ov44_02232298(&arg0->unk14, arg0->unk4, arg2); + ov44_02232334(arg0->unk10, arg1); + + u32 temp_r0 = ov44_02232E90(temp_r7); + UnkStruct_ov44_02232914 sp4; + sp4 = (UnkStruct_ov44_02232914){temp_r0, temp_r0 >> 0x10}; + + arg0->unk6E4 = ov42_02227EE0(sp4.unk0, sp4.unk2, arg1); + ov42_02227F48(arg0->unk6E4, ov44_02232E9C(temp_r7)); + arg0->unk6E8 = ov42_02228010(0x30, arg1); + ov44_02232204(arg0, arg4, arg1); + ov42_02229394(&arg0->unk6F0); + ov44_02232248(arg0, arg1, arg2, temp_r7); + ov44_0223233C(arg0->unk10, arg1, arg2); + ov44_02232CCC(arg0, &arg0->unk6D0, arg2); + arg0->unk6F8 = ov42_02229A40(0x80, arg1); + arg0->unk0 = 1; +} + +void ov44_02231B4C(UnkStruct_ov44_02232DA0* arg0) { + ov42_02229A78(arg0->unk6F8); + ov44_02232288(arg0); + ov44_02232D08(arg0, &arg0->unk6D0); + ov44_02232028(arg0); + ov44_02232238(arg0); + ov42_02228050(arg0->unk6E8); + ov42_02227F28(arg0->unk6E4); + ov44_022322E8(&arg0->unk14); + ov44_02232338(arg0->unk10); + memset(arg0, 0, sizeof(UnkStruct_ov44_02232DA0)); +} + +s32 ov44_02231BB0(s32* arg0) { + return arg0[0]; +} + +s32 ov44_02231BB4(UnkStruct_ov44_02232DA0* arg0) { + ov42_0222807C(arg0->unk6E8); + ov44_02232158(arg0); + ov44_02232104(arg0); + ov42_02229358(&arg0->unk6F0, arg0->unk6CC->unk0); + ov42_02229420(arg0->unk6F4, &arg0->unk6F0); + ov42_022290DC(arg0->unk6EC); + ov44_02232194(arg0); + ov44_02232594(arg0); + if (ov44_02232050(arg0) == 1) { + if (ov44_02232604(arg0) == 1) { + ov44_0223254C(arg0); + if (128 & gSystem.heldKeys) { + return 1; + } + } + if (1 & gSystem.newKeys) { + if (ov44_02231C70(arg0) != 0) { + return 2; + } + if (ov44_02232070(arg0) == 1) { + return 3; + } + } + } + return 0; +} + +void ov44_02231C60(UnkStruct_ov44_02232DA0* arg0) { + if (arg0->unk0 != 0) { + SpriteList_RenderAndAnimateSprites(arg0->unk14.unk0); + } +} + +u8 ov44_02231C70(UnkStruct_ov44_02232DA0* arg0) { + if (arg0->unk6CC == NULL) { + GF_AssertFail(); + } + return arg0->unk6CC->unkA; +} + +s32 ov44_02231C8C(UnkStruct_ov44_02232DA0* arg0) { + if (arg0->unk6CC == NULL) { + GF_AssertFail(); + } + u32 temp_r0 = ov42_022282DC(arg0->unk6CC->unk0); + vu16 sp0[4]; + sp0[0] = temp_r0; + sp0[1] = temp_r0 >> 16; + sp0[2] = sp0[0]; + sp0[3] = sp0[1]; + return ov42_02227FDC(arg0->unk6E4, (s16)sp0[2] / 16, (s16)sp0[3] / 16); +} + +s32 ov44_02231CE8(UnkStruct_ov44_02232DA0* arg0) { + if (arg0->unk6CC == NULL) { + GF_AssertFail(); + } + + u32 temp_r0 = ov42_022282DC(arg0->unk6CC->unk0); + UnkStruct_ov44_02232914 sp0; + sp0 = (UnkStruct_ov44_02232914){temp_r0, temp_r0 >> 16}; + ov42_02227FDC(arg0->unk6E4, (s16)sp0.unk0 / 16, ((s16)sp0.unk2 / 16) + 1); +} + +void ov44_02231D48(UnkStruct_ov44_02232DA0* arg0, s32* arg1) { + u32 temp_r0 = ov42_022282DC(arg1[0]); + UnkStruct_ov44_02232914 sp0[2]; + sp0[0].unk0 = temp_r0; + sp0[0].unk2 = temp_r0 >> 16; + sp0[1] = sp0[0]; + ov44_022325A4(arg0, sp0[1], ov42_0222920C(arg1[1]) - 2); +} + +void ov44_02231D8C(UnkStruct_ov44_02232DA0* arg0) { + ov44_022325F4(arg0); +} + +void ov44_02231D94(UnkStruct_ov44_02232DA0* arg0, s32 arg1) { + arg0->unkC = arg1; +} + +s32 ov44_02231D98(UnkStruct_ov44_02232DA0* arg0) { + return arg0->unkC; +} + +UnkStruct_ov44_02232B74* ov44_02231D9C(UnkStruct_ov44_02232DA0* arg0, s16 arg1) { + s16 spC; + UnkStruct_ov44_02232B74* temp_r0 = ov44_02232798(arg0); + arg0->unk6CC = temp_r0; + ov44_02232724(arg0, &spC); + ov44_02232800(arg0, temp_r0, &spC, 0, arg1, 0, 0); + ov44_02232864(arg0, temp_r0); + ov44_022327C8(arg0, temp_r0, 1); + ov42_02229358(&arg0->unk6F0, arg0->unk6CC->unk0); + ov42_02229420(arg0->unk6F4, &arg0->unk6F0); + return temp_r0; +} + +UnkStruct_ov44_02232B74* ov44_02231E08(UnkStruct_ov44_02232DA0* arg0, s16 arg1, s16 arg2) { + u16 spC[6]; + UnkStruct_ov44_02232B74* temp_r4; + + temp_r4 = ov44_02232798(arg0); + ov44_02232680(arg0, &spC[4], arg2 - 1); + if (arg0->unk6CC != NULL) { + u32 temp_r0_2 = ov42_022282DC(arg0->unk6CC->unk0); + spC[0] = temp_r0_2; + spC[1] = temp_r0_2 >> 16; + spC[2] = spC[0]; + spC[3] = spC[1]; + if (((s16) spC[2] == (s16)spC[4]) && ((s16) spC[3] == (s16)spC[5])) { + return NULL; + } + } + ov44_02232800(arg0, temp_r4, &spC[4], arg2, arg1, 1, 4); + ov44_02232884(arg0, temp_r4); + ov44_022327C8(arg0, temp_r4, 0); + return temp_r4; +} + +void ov44_02231E94(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + ov42_02228188(arg1->unk0, 6); + arg1->unk10 = ov44_02232BCC; + arg1->unk18 = ov44_02232914; + arg1->unkC = 2; + arg1->unk8 = 0; + ov42_0222919C(arg1->unk4, 0); + ov42_022291A0(arg1->unk4); + ov44_02232C6C(arg0, 4, arg1); +} + +void ov44_02231ED4(s32* arg0) { + ov42_022290C4(arg0[1]); + ov42_02228100(arg0[0]); + __builtin__clear(arg0, 28); +} + +u8 ov44_02231EF4(s32* arg0) { + return ov42_02228188(arg0[0], 4); +} + +void ov44_02231F04(s32* arg0) { + ov42_02228188(arg0[0], 6); + ov42_022282A4(); +} + +void ov44_02231F14(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s32 arg2) { + arg1->unk14 = arg1->unk10; + arg1->unk10 = ov44_02232C48; + arg1->unkE = arg1->unkC; + arg1->unkC = 5; + ov44_02232C4C(arg0, 0, arg2, ov42_02228188(arg1->unk0, 4)); + ov42_0222919C(arg1->unk4, 0); + ov42_02229218(arg1->unk4, arg2); + + UnkStruct_ov44_02232914 temp_r3 = {ov42_02228188(arg1->unk0, 0), ov42_02228188(arg1->unk0, 1)}; + ov42_022291D8(arg1->unk4, temp_r3); +} + +void ov44_02231F88(s32 arg0, UnkStruct_ov44_02232B74* arg1) { + if (arg1 != NULL) { + if (arg1->unk14 != 0) { + arg1->unk10 = arg1->unk14; + arg1->unk14 = 0; + arg1->unkC = arg1->unkE; + ov42_0222919C(arg1->unk4, 1); + } + } +} + +void ov44_02231FA8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u8 arg2) { + if (ov44_02232C94(arg1) == 0) { + arg1->unkB = arg2; + return; + } + ov44_02232CA8(arg0, arg1, arg2); +} + +void ov44_02231FCC(UnkStruct_ov44_02232DA0* arg0) { + if (ov44_02232070(arg0) == 1) { + s8 temp_r4 = (s8) ov44_02231CE8(arg0) - 3; + if (temp_r4 < 0 || temp_r4 >= 4) { + GF_AssertFail(); + } + ov44_02232E5C(&arg0->unk6D0, temp_r4); + return; + } + GF_AssertFail(); +} + +void ov44_02232008(UnkStruct_ov44_02232DA0* arg0) { + ov44_02232E80(&arg0->unk6D0); +} + +void ov44_02232018(UnkStruct_ov44_02232DA0* arg0) { + ov44_02232D20(arg0, &arg0->unk6D0); +} + +void ov44_02232028(UnkStruct_ov44_02232DA0* arg0) { + for (s32 i = 0; i < 48; i++) { + if (arg0->unk18C[i].unk0 != 0) { + ov44_02231ED4(&arg0->unk18C[i].unk0); + } + } +} + +s32 ov44_02232050(UnkStruct_ov44_02232DA0* arg0) { + if (ov42_02228188(arg0->unk6CC->unk0, 5) == 0) { + return 1; + } + return 0; +} + +s32 ov44_02232070(UnkStruct_ov44_02232DA0* arg0) { + u32 temp = ov42_022282DC(arg0->unk6CC->unk0); + UnkStruct_ov44_02232914 sp0[2]; + sp0[1] = (UnkStruct_ov44_02232914){temp, temp >> 16}; + + u16 temp_r4 = ov42_02228188(arg0->unk6CC->unk0, 6); + temp = ov42_02228270(sp0[1], temp_r4); + sp0[0] = (UnkStruct_ov44_02232914){temp, temp >> 16}; + + s32 temp_r0_3 = ov42_02227FDC(arg0->unk6E4, (s16)sp0[0].unk0 / 16, (s16)sp0[0].unk2 / 16); + if ((temp_r4 == 0) && (temp_r0_3 == 2)) { + return 1; + } + return 0; +} + +void ov44_02232104(UnkStruct_ov44_02232DA0* arg0) { + u32 sp0[3]; + if (ov42_02229AC8(arg0->unk6F8, &sp0[2]) == 1) { + do { + if (ov42_02228C80(arg0->unk6E4, arg0->unk6E8, &sp0[2], &sp0[0]) == 1) { + ov42_02228068(arg0->unk6E8, &sp0[0]); + } + } while (ov42_02229AC8(arg0->unk6F8, &sp0[2]) == 1); + } +} + +void ov44_02232158(UnkStruct_ov44_02232DA0* arg0) { + for (s32 i = 0; i < 48; i++) { + if ((arg0->unk18C[i].unk0 != 0) && (arg0->unk18C[i].unk10(arg0, &arg0->unk18C[i]) == 1)) { + ov44_02231ED4(&arg0->unk18C[i].unk0); + } + } +} + +void ov44_02232194(UnkStruct_ov44_02232DA0* arg0) { + for (s32 i = 0; i < 48; i++) { + if (arg0->unk18C[i].unk0 != 0) { + arg0->unk18C[i].unk18(arg0, &arg0->unk18C[i]); + } + } +} + +UnkStruct_ov44_02232B74* ov44_022321C4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u16 arg2) { + s32 temp_r0 = ov42_022283BC(arg1->unk0, arg0->unk6E8); + if (temp_r0 != 0) { + for (s32 i = 0; i < 48; i++) { + s32 temp_r3 = arg0->unk18C[i].unk0; + if (temp_r3 == temp_r0) { + return &arg0->unk18C[i]; + } + } + } + return NULL; +} + +void ov44_02232204(UnkStruct_ov44_02232DA0* arg0, s32 arg1, s32 arg2) { + arg0->unk6EC = ov42_02228F24(arg0->unk14.unk0, 0, 48, arg1, 0, 1, arg2); + ov42_02229028(arg0->unk6EC, 2, arg2); +} + +void ov44_02232238(UnkStruct_ov44_02232DA0* arg0) { + ov42_02228F94(arg0->unk6EC); +} + +void ov44_02232248(UnkStruct_ov44_02232DA0* arg0, s32 arg1, NARC* arg2, s32 arg3) { + u32 index = 0; + u8 sp0[11]; + sp0 = ov44_02235604; + + sp0[9] += arg3; + arg0->unk6F4 = ov42_022293B8(&arg0->unk14.unk4, arg0->unk10, &sp0, arg1); +} + +void ov44_02232288(UnkStruct_ov44_02232DA0* arg0) { + ov42_0222940C(arg0->unk6F4); +} + +void ov44_02232298(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID, NARC* narc) { + arg0->unk0 = G2dRenderer_Init(96, &arg0->unk4, heapID); + G2dRenderer_SetSubSurfaceCoords(&arg0->unk4, 0, 0x320000); + for (s32 i = 0; i < 4; i ++) { + arg0->unk12C[i] = Create2DGfxResObjMan(16, (GfGfxResType)i, heapID); + } + ov44_02232314(arg0, heapID, narc); + ov44_02232324(arg0, heapID); +} + +void ov44_022322E8(UnkStruct_ov44_02231A7C* arg0) { + ov44_0223232C(arg0); + ov44_0223231C(arg0); + for (s32 i = 0; i < 4; i ++) { + Destroy2DGfxResObjMan(arg0->unk12C[i]); + } + SpriteList_Delete(arg0->unk0); +} + +void ov44_02232314(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID , NARC* narc) { + ov44_0223237C(arg0, heapID, narc); +} + +void ov44_0223231C(UnkStruct_ov44_02231A7C* arg0) { + ov44_0223247C(arg0); +} + +void ov44_02232324(UnkStruct_ov44_02231A7C* arg1, enum HeapID heapID) { + ov44_022324B0(arg1, heapID); +} + +void ov44_0223232C(UnkStruct_ov44_02231A7C* arg0) { + ov44_02232530(arg0); +} + +void ov44_02232334(BgConfig* arg0, enum HeapID heapID) { + +} + +void ov44_02232338(BgConfig* arg0) { + +} + +void ov44_0223233C(BgConfig *bgConfig, enum HeapID heapID, NARC* narc) { + GfGfxLoader_GXLoadPalFromOpenNarc(narc, 31, GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_0_OFFSET, 256, heapID); + BG_SetMaskColor(0, 0); + GfGfxLoader_LoadCharDataFromOpenNarc(narc, 30, bgConfig, GF_BG_LYR_MAIN_0, 0, 0, 0, heapID); +} + +void ov44_0223237C(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID, NARC* narc) { + arg0->unk13C[0] = AddCharResObjFromOpenNarc(arg0->unk12C[0], narc, NARC_a_0_3_8, FALSE, 50, NNS_G2D_VRAM_TYPE_2DMAIN, heapID); + arg0->unk13C[1] = AddPlttResObjFromOpenNarc(arg0->unk12C[1], narc, NARC_fielddata_encountdata_g_enc_data, FALSE, 50, NNS_G2D_VRAM_TYPE_2DMAIN, 1, heapID); + arg0->unk13C[2] = AddCellOrAnimResObjFromOpenNarc(arg0->unk12C[2], narc, NARC_a_0_3_9, FALSE, 50, GF_GFX_RES_TYPE_CELL, heapID); + arg0->unk13C[3] = AddCellOrAnimResObjFromOpenNarc(arg0->unk12C[3], narc, NARC_a_0_4_0, FALSE, 50, GF_GFX_RES_TYPE_ANIM, heapID); + if (sub_0200ADA4(arg0->unk13C[0]) != 1) { + GF_AssertFail(); + } + if (sub_0200B00C(arg0->unk13C[1]) != 1) { + GF_AssertFail(); + } + sub_0200A740(arg0->unk13C[0]); + sub_0200A740(arg0->unk13C[1]); + CreateSpriteResourcesHeader(&arg0->unk14C, 50, 50, 50, 50, -1, -1, 0, 2, arg0->unk12C[0], arg0->unk12C[1], arg0->unk12C[2], arg0->unk12C[3], 0, 0); +} + +void ov44_0223247C(UnkStruct_ov44_02231A7C* arg0) { + sub_0200AEB0(arg0->unk13C[0]); + sub_0200B0A8(arg0->unk13C[1]); + for (s32 i = 0; i < 4; i ++) { + DestroySingle2DGfxResObj(arg0->unk12C[i], arg0->unk13C[i]); + } +} + +void ov44_022324B0(UnkStruct_ov44_02231A7C* arg0, enum HeapID heapID) { + SpriteTemplate spriteTemplate = {}; + spriteTemplate.spriteList = arg0->unk0; + spriteTemplate.header = &arg0->unk14C; + + spriteTemplate.whichScreen = NNS_G2D_VRAM_TYPE_2DMAIN; + + spriteTemplate.scale.x = 4096; + spriteTemplate.scale.y = 4096; + spriteTemplate.heapID = heapID; + + spriteTemplate.drawPriority = 0; + + arg0->unk170 = Sprite_CreateAffine(&spriteTemplate); + arg0->unk174 = Sprite_CreateAffine(&spriteTemplate); + Sprite_SetDrawFlag(arg0->unk170, 0); + Sprite_SetDrawFlag(arg0->unk174, 0); + Sprite_SetAnimActiveFlag(arg0->unk170, 1); + Sprite_SetAnimCtrlSeq(arg0->unk174, 1); +} + +void ov44_02232530(UnkStruct_ov44_02231A7C* arg0) { + Sprite_Delete(arg0->unk170); + Sprite_Delete(arg0->unk174); +} + +void ov44_0223254C(UnkStruct_ov44_02232DA0* arg0) { + VecFx32 vec; + s16 sp0[2]; + + ov44_02232724(arg0, sp0); + sp0[0] = sp0[0] + 8; + sp0[1] = sp0[1] + 32; + vec.x = sp0[0] << 12; + vec.y = sp0[1] << 12; + Sprite_SetMatrix(arg0->unk14.unk170, &vec); + Sprite_SetDrawFlag(arg0->unk14.unk170, 1); +} + +void ov44_02232594(UnkStruct_ov44_02232DA0* arg0) { + Sprite_SetDrawFlag(arg0->unk14.unk170, 0); +} + +void ov44_022325A4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232914 arg1, s32 arg2) { + VecFx32 vec; + vec.x = (s16)arg1.unk0 + 8 << 16 >> 4; + vec.y = (s16)(arg1.unk2) * 4096; + Sprite_SetMatrix(arg0->unk14.unk174, &vec); + Sprite_SetDrawPriority(arg0->unk14.unk174, arg2); + Sprite_SetDrawFlag(arg0->unk14.unk174, 1); +} + +void ov44_022325F4(UnkStruct_ov44_02232DA0* arg0) { + Sprite_SetDrawFlag(arg0->unk14.unk174, 0); +} + +s32 ov44_02232604(UnkStruct_ov44_02232DA0* arg0) { + if (arg0->unk6CC == 0) { + return 0; + } + u32 temp_r0_2 = ov42_022282DC(arg0->unk6CC->unk0); + + s16 sp4[2]; + sp4 = (s16[2]){temp_r0_2, temp_r0_2 >> 16}; + + u16 temp_r4 = ov42_02228188(arg0->unk6CC->unk0, 6); + if (ov42_02227FDC(arg0->unk6E4, sp4[0] / 16, sp4[1] / 16) == 0xF && temp_r4 == 1) { + return 1; + } + return 0; +} + +void ov44_02232680(UnkStruct_ov44_02232DA0* arg0, u16* arg1, u32 arg2) { + u32 r7 = arg2 / 8; + u32 r4 = arg2 % 8; + u16 r6 = ov42_02227F40(arg0->unk6E4); + u16 sp4 = ov42_02227F44(arg0->unk6E4); + + for (u32 i = 0; i < sp4; i++) { + for (u32 j = 0; j < r6; j++) { + s32 temp_r0 = ov42_02227FDC(arg0->unk6E4, j, i); + if (temp_r0 == r4 + 7) { + temp_r0 = ov42_02227FDC(arg0->unk6E4, j, i + 1); + if (temp_r0 == r7 + 3) { + arg1[0] = j << 4; + arg1[1] = i << 4; + return; + } + } + } + } + GF_AssertFail(); +} + +void ov44_02232724(UnkStruct_ov44_02232DA0* arg0, s16* arg1) { + u16 temp_r5 = ov42_02227F40(arg0->unk6E4); + u16 temp_r0 = ov42_02227F44(arg0->unk6E4); + + for (u32 i = 0; i < temp_r0; i++) { + for (u32 j = 0; j < temp_r5; j++) { + if (ov42_02227FDC(arg0->unk6E4, j, i) == 15) { + arg1[0] = j << 4; + arg1[1] = i << 4; + return; + } + } + } + GF_AssertFail(); +} + +UnkStruct_ov44_02232B74* ov44_02232798(UnkStruct_ov44_02232DA0* arg0) { + for (s32 i = 0; i < 48; i++) { + if (arg0->unk18C[i].unk0 == 0) { + return &arg0->unk18C[i]; + } + } + GF_AssertFail(); + return NULL; +} + +void ov44_022327C8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s32 arg2) { + arg1->unk4 = ov42_0222903C(arg0->unk6EC, arg1->unk0, arg2, arg0->unk4); + if (arg2 == 0) { + ov42_0222919C(arg1->unk4, 0); + ov42_022291A0(arg1->unk4); + ov42_02229200(arg1->unk4, 0); + } +} + +void ov44_02232800(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, s16* arg2, s16 arg3, u16 arg4, u8 arg5, s32 arg6) { + u16 sp[6]; + sp[0] = arg2[0]; + sp[1] = arg2[1]; + sp[2] = arg3; + sp[3] = arg6; + sp[4] = arg5; + sp[5] = arg4; + arg1->unk0 = ov42_022280B8(arg0->unk6E8, sp); +} + +s32 ov44_02232838(UnkStruct_ov44_02232B74* arg0) { + switch (arg0->unkC) { + case 0: + case 3: + case 4: + return 1; + case 1: + case 2: + case 5: + return 0; + default: + return 0; + } +} + +void ov44_02232864(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk10 = ov44_02232A60; + arg1->unk18 = ov44_02232910; + arg1->unkC = 0; + ov44_02232C6C(arg0, 0, arg1); +} + +void ov44_02232884(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk10 = ov44_02232B74; + arg1->unk18 = ov44_02232914; + arg1->unk8 = 45; + arg1->unkC = 1; +} + +void ov44_022328A0(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk10 = ov44_02232BE4; + arg1->unk18 = ov44_02232910; + arg1->unk8 = (1023 & MTRandom()) + 256; + arg1->unkC = 3; + ov44_02232C6C(arg0, 0, arg1); + ov42_0222919C(arg1->unk4, 1); +} + +void ov44_022328E4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk10 = ov44_02232C30; + arg1->unk18 = ov44_022329B0; + arg1->unk8 = 28; + arg1->unkC = 4; + ov44_02232C6C(arg0, 4, arg1); + ov42_0222919C(arg1->unk4, 0); +} + +void ov44_02232910(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + +} + +void ov44_02232914(UnkStruct_ov44_02232DA0 *arg0, UnkStruct_ov44_02232B74* arg1) { + ov42_022291AC(arg1->unk4); + if (ov42_022291F4(arg1->unk4) == 0) { + ov42_02229200(arg1->unk4, 1); + } + UnkStruct_ov44_02232914 sp0 = {ov42_02228188(arg1->unk0, 0), ov42_02228188(arg1->unk0, 1)}; + UnkStruct_ov44_02232914 sp4 = sp0; + + s64 temp_ret = (s64)GF_SinDegNoWrap(arg1->unk8) * (signed)0xFFF40000; + temp_ret += 2048; + + s32 r1 = (temp_ret >> 12); + sp0.unk2 = (s16)sp0.unk2 + (r1 >> 12); + + ov42_022291D8(arg1->unk4, sp0); + ov42_02229258(arg1->unk4, sp4); +} + +void ov44_022329B0(UnkStruct_ov44_02232DA0 *arg0, UnkStruct_ov44_02232B74* arg1) { + UnkStruct_ov44_02232914 sp0 = {ov42_02228188(arg1->unk0, 0), ov42_02228188(arg1->unk0, 1)}; + UnkStruct_ov44_02232914 sp4 = sp0; + + s16 temp_r0 = arg1->unk8 - 16; + if (temp_r0 > 0) { + s32 temp_r0_2 = (s16)(temp_r0 % 6)* 180; + s32 temp_r0_3 = GF_SinDegNoWrap(temp_r0_2 / 6); + + s64 r6 = ((s64)temp_r0_3 << 14) + 2048; + sp0.unk2 = (s16)sp0.unk2 - ((s32)(r6 >> 12) >> 12); + } + ov42_022291D8(arg1->unk4, sp0); + ov42_02229258(arg1->unk4, sp4); + + ov42_02229218(arg1->unk4, 1); +} + +s32 ov44_02232A60(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + u16 temp_r4 = ov42_02228188(arg1->unk0, 6); + u16 temp_r7 = ov42_02228188(arg1->unk0, 4); + if (ov42_02228188(arg1->unk0, 5) != 0) { + return 0; + } + if (1 & gSystem.newKeys) { + UnkStruct_ov44_02232B74* temp_r0 = ov44_022321C4(arg0, arg1, temp_r4); + if (temp_r0 != NULL) { + if (ov44_02232838(temp_r0) == 1) { + arg1->unkA = ov42_02228188(temp_r0->unk0, 4); + } else { + arg1->unkA = 0; + } + } else { + arg1->unkA = 0; + } + } + if (arg0->unkC == 1) { + return 0; + } + s16 var_r1 = 2; + if (gSystem.heldKeys & 2) { + var_r1 = 3; + } + if (64 & gSystem.heldKeys) { + if (temp_r4 == 0) { + ov44_02232C4C(arg0, var_r1, temp_r4, temp_r7); + } else { + ov44_02232C4C(arg0, 1, 0, temp_r7); + } + } else if (128 & gSystem.heldKeys) { + if (temp_r4 == 1) { + ov44_02232C4C(arg0, var_r1, temp_r4, temp_r7); + } else { + ov44_02232C4C(arg0, 1, 1, temp_r7); + } + } else if (32 & gSystem.heldKeys) { + if (temp_r4 == 2) { + ov44_02232C4C(arg0, var_r1, temp_r4, temp_r7); + } else { + ov44_02232C4C(arg0, 1, 2, temp_r7); + } + } else if (gSystem.heldKeys & 16) { + if (temp_r4 == 3) { + ov44_02232C4C(arg0, var_r1, temp_r4, temp_r7); + } else { + ov44_02232C4C(arg0, 1, 3, temp_r7); + } + } + return 0; +} + +s32 ov44_02232B74(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk8--; + if (arg1->unk8 <= 0) { + ov42_022291B8(arg1->unk4); + ov42_0222919C(arg1->unk4, 1); + u16 temp_r6 = ov42_02228188(arg0->unk6CC->unk0, 4); + u16 temp_r0 = ov42_02228188(arg1->unk0, 4); + if (temp_r0 == temp_r6) { + ov44_02232864(arg0, arg1); + } else { + ov44_02232CA8(arg0, arg1, arg1->unkB); + } + } + return 0; +} + +s32 ov44_02232BCC(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk8++; + if (arg1->unk8 > 45) { + return 1; + } + return 0; +} + +s32 ov44_02232BE4(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk8--; + if (arg1->unk8 <= 0) { + arg1->unk8 = (1023 & MTRandom()) + 256; + u32 temp_r4 = MTRandom() & 3; + ov44_02232C4C(arg0, 0, temp_r4, ov42_02228188(arg1->unk0, 4)); + } + return 0; +} + +s32 ov44_02232C30(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + arg1->unk8--; + if (arg1->unk8 < 0) { + arg1->unk8 = 28; + } + return 0; +} + +s32 ov44_02232C48(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1) { + return 0; +} + +void ov44_02232C4C(UnkStruct_ov44_02232DA0* arg0, s16 arg1, u32 arg2, u16 arg3) { + UnkStruct_ov44_02232C4C temp; + temp.unk0 = arg1; + temp.unk2 = arg2; + temp.unk3 = arg3; + + ov42_02229A8C(arg0->unk6F8, &temp); +} + +void ov44_02232C6C(UnkStruct_ov44_02232DA0* arg0, s16 arg1, UnkStruct_ov44_02232B74* arg2) { + u16 temp_r7 = ov42_02228188(arg2->unk0, 6); + ov44_02232C4C(arg0, arg1, temp_r7, ov42_02228188(arg2->unk0, 4)); +} + +s32 ov44_02232C94(UnkStruct_ov44_02232B74* arg0) { + if (arg0->unk18 != ov44_02232914) { + return 1; + } + return 0; +} + +void ov44_02232CA8(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232B74* arg1, u8 arg2) { + switch (arg2) { + case 0: + ov44_022328A0(arg0, arg1); + break; + case 1: + ov44_022328E4(arg0, arg1); + break; + default: + GF_AssertFail(); + break; + } + arg1->unkB = arg2; +} + +void ov44_02232CCC(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1, NARC* arg2) { + __builtin__clear(arg1, sizeof(UnkStruct_ov44_02232E80)); + arg1->unk0 = GfGfxLoader_GetPlttDataFromOpenNarc(arg2, 32, &arg1->unk4, arg0->unk4); + arg1->unk8 = 15; + arg1->unk9 = 0; + arg1->unkA = ov44_02235600[arg1->unk9]; +} + +void ov44_02232D08(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1) { + Heap_Free(arg1->unk0); + __builtin__clear(arg1, sizeof(UnkStruct_ov44_02232E80)); +} + +void ov44_02232D20(UnkStruct_ov44_02232DA0* arg0, UnkStruct_ov44_02232E80* arg1) { + ov44_02232D34(arg1); + ov44_02232DA0(arg1); +} + +void ov44_02232D34(UnkStruct_ov44_02232E80* arg0) { + s32 var_r6; + + arg0->unkA--; + if (arg0->unkA <= 0) { + arg0->unk9 = (arg0->unk9 + 1) % 2; + arg0->unkA = ov44_02235600[arg0->unk9]; + if (arg0->unk9 == 1) { + var_r6 = 2; + } else { + var_r6 = 1; + } + for (s32 i = 0; i < 4; i ++) { + if (arg0->unk8 & (1 << i)) { + GF_CreateNewVramTransferTask(NNS_GFD_DST_2D_BG_PLTT_MAIN, ((i + 1) * 2) + 224, ov44_02232E2C(arg0, var_r6), 2); + } + } + } +} + +void ov44_02232DA0(UnkStruct_ov44_02232E80* arg0) { + u32 r0 = 0; + u32 r1 = 0; + u32 r2 = 0; + if (ov44_0223560F[arg0->unkD << 2] == 1) { + arg0->unkE--; + if (arg0->unkE <= 0) { + r2 = 1; + } + } + else if (arg0->unk10 != 0) { + arg0->unk10 = 0; + r2 = 1; + } + if (r2 != 0) { + arg0->unkD++; + if (arg0->unkD >= 8) { + ov44_02232E38(arg0); + return; + } + arg0->unkE = ov44_02235610[arg0->unkD << 2]; + r0 = ov44_02235611[arg0->unkD << 2]; + r1 = ov44_02235612[arg0->unkD << 2]; + } + if (r0 != 0) { + GF_CreateNewVramTransferTask(NNS_GFD_DST_2D_BG_PLTT_MAIN, ((arg0->unkC + 1)* 2) + 224, ov44_02232E2C(arg0, r1), 2); + } +} + +void* ov44_02232E2C(UnkStruct_ov44_02232E80* arg0, s32 arg1) { + return arg0->unk4->pRawData + (arg1 + 1) * 2; +} + +void ov44_02232E38(UnkStruct_ov44_02232E80* arg0) { + arg0->unk8 = (arg0->unk8 | (1 << arg0->unkC)); + arg0->unkC = 0; + arg0->unkD = 0; + arg0->unkE = 0; + arg0->unk10 = 0; +} + +void ov44_02232E54(UnkStruct_ov44_02232E80* arg0) { + arg0->unk10 = 1; +} + +void ov44_02232E5C(UnkStruct_ov44_02232E80* arg0, u8 arg1) { + if (arg0->unkD != 0) { + ov44_02232E38(arg0); + } + arg0->unk8 = arg0->unk8 ^ (1 << arg1); + arg0->unkC = arg1; + ov44_02232E54(arg0); +} + +void ov44_02232E80(UnkStruct_ov44_02232E80* arg0) { + if (arg0->unkD != 0) { + ov44_02232E54(arg0); + } +} + +s32 ov44_02232E90(s32 arg0) { + return ov44_02235630[arg0]; +} + +s32 ov44_02232E9C(u32 arg0) { + return ov44_0223688C[arg0]; +} \ No newline at end of file diff --git a/src/overlay_44_02235340.c b/src/overlay_44_02235340.c index fa3b6bf77..0473f6155 100644 --- a/src/overlay_44_02235340.c +++ b/src/overlay_44_02235340.c @@ -22,7 +22,6 @@ #include "vram_transfer_manager.h" #include "text.h" #include "font.h" -#include "sprite.h" #include "gf_gfx_loader.h" #include "constants/sndseq.h" #include "msgdata/msg.naix" @@ -685,7 +684,7 @@ s32 ov44_02233E6C(UnkStruct_ov44_02235340* arg0) { } s32 ov44_02233E80(u32 arg0, u32 arg1) { - s32 var_r5 = sub_02039080(); + s32 var_r5 = sub_02039080(arg0); if (var_r5 == 1 ) { switch(arg1) { case 0: