diff --git a/asm/overlay117/ov117_02260440.inc b/asm/overlay117/ov117_02260440.inc deleted file mode 100644 index 645e7a391a..0000000000 --- a/asm/overlay117/ov117_02260440.inc +++ /dev/null @@ -1,22 +0,0 @@ -.public sub_020067E8 -.public sub_02006814 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006844 -.public sub_02017FC8 -.public sub_0201807C -.public sub_02032E64 -.public sub_02032EE8 -.public sub_02035E18 -.public sub_0203608C -.public sub_020364F0 -.public sub_02036540 -.public sub_020388F4 -.public MI_CpuFill8 -.public ov4_021D1F18 -.public ov114_0225C700 -.public ov114_0225CA54 -.public ov117_022605D8 -.public ov117_02260630 diff --git a/asm/overlay117/ov117_02260440.s b/asm/overlay117/ov117_02260440.s deleted file mode 100644 index 3c4171683e..0000000000 --- a/asm/overlay117/ov117_02260440.s +++ /dev/null @@ -1,300 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_02260440.inc" - - .text - - thumb_func_start ov117_02260440 -ov117_02260440: ; 0x02260440 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl sub_02006840 - add r5, r0, #0 - mov r0, #3 - mov r1, #0x6e - lsl r2, r0, #0x11 - bl sub_02017FC8 - add r0, r4, #0 - mov r1, #0x40 - mov r2, #0x6e - bl sub_0200681C - add r4, r0, #0 - mov r1, #0 - mov r2, #0x40 - bl MI_CpuFill8 - add r0, r4, #0 - add r1, r5, #0 - bl ov117_022605D8 - mov r0, #1 - pop {r3, r4, r5, pc} - thumb_func_end ov117_02260440 - - thumb_func_start ov117_02260474 -ov117_02260474: ; 0x02260474 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r4, r1, #0 - bl sub_0200682C - add r5, r0, #0 - add r0, r6, #0 - bl sub_02006840 - add r6, r0, #0 - add r0, r5, #0 - bl ov117_02260630 - cmp r0, #1 - bne _02260496 - mov r0, #1 - pop {r4, r5, r6, pc} -_02260496: - ldr r0, [r4, #0] - cmp r0, #8 - bls _0226049E - b _022605B0 -_0226049E: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022604AA: ; jump table - .short _022604BC - _022604AA - 2 ; case 0 - .short _022604D8 - _022604AA - 2 ; case 1 - .short _022604F4 - _022604AA - 2 ; case 2 - .short _02260510 - _022604AA - 2 ; case 3 - .short _0226052C - _022604AA - 2 ; case 4 - .short _02260554 - _022604AA - 2 ; case 5 - .short _0226057A - _022604AA - 2 ; case 6 - .short _02260590 - _022604AA - 2 ; case 7 - .short _022605B0 - _022604AA - 2 ; case 8 -_022604BC: - add r0, r5, #0 - mov r1, #0 - add r0, #0x31 - strb r1, [r0] - ldr r0, _022605B8 ; =0x02266908 - add r1, r5, #0 - mov r2, #0x6e - bl sub_020067E8 - str r0, [r5, #0x28] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_022604D8: - ldr r0, [r5, #0x28] - bl sub_02006844 - cmp r0, #1 - bne _022605B4 - ldr r0, [r5, #0x28] - bl sub_02006814 - mov r0, #0 - str r0, [r5, #0x28] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_022604F4: - add r0, r5, #0 - mov r1, #1 - add r0, #0x31 - strb r1, [r0] - ldr r0, _022605BC ; =0x022668F8 - add r1, r5, #0 - mov r2, #0x6e - bl sub_020067E8 - str r0, [r5, #0x28] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_02260510: - ldr r0, [r5, #0x28] - bl sub_02006844 - cmp r0, #1 - bne _022605B4 - ldr r0, [r5, #0x28] - bl sub_02006814 - mov r0, #0 - str r0, [r5, #0x28] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_0226052C: - add r6, #0x38 - ldrb r0, [r6] - cmp r0, #0 - beq _02260538 - bl ov4_021D1F18 -_02260538: - add r0, r5, #0 - mov r1, #2 - add r0, #0x31 - strb r1, [r0] - ldr r0, _022605B8 ; =0x02266908 - add r1, r5, #0 - mov r2, #0x6e - bl sub_020067E8 - str r0, [r5, #0x28] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_02260554: - ldr r0, [r5, #0x28] - bl sub_02006844 - cmp r0, #1 - bne _022605B4 - ldr r0, [r5, #0x28] - bl sub_02006814 - mov r1, #0 - str r1, [r5, #0x28] - ldr r0, [r5, #0x38] - cmp r0, #1 - bne _02260572 - str r1, [r4, #0] - b _022605B4 -_02260572: - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_0226057A: - mov r0, #0 - mov r1, #1 - bl sub_020388F4 - mov r0, #0xde - bl sub_020364F0 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_02260590: - mov r0, #0xde - bl sub_02036540 - cmp r0, #1 - beq _022605A8 - bl sub_02035E18 - add r5, r0, #0 - bl sub_02032E64 - cmp r5, r0 - bge _022605B4 -_022605A8: - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _022605B4 -_022605B0: - mov r0, #1 - pop {r4, r5, r6, pc} -_022605B4: - mov r0, #0 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_022605B8: .word 0x02266908 -_022605BC: .word 0x022668F8 - thumb_func_end ov117_02260474 - - thumb_func_start ov117_022605C0 -ov117_022605C0: ; 0x022605C0 - push {r4, lr} - add r4, r0, #0 - bl sub_0200682C - add r0, r4, #0 - bl sub_02006830 - mov r0, #0x6e - bl sub_0201807C - mov r0, #1 - pop {r4, pc} - thumb_func_end ov117_022605C0 - - thumb_func_start ov117_022605D8 -ov117_022605D8: ; 0x022605D8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - bl sub_0203608C - mov r5, #0 - add r4, r5, #0 -_022605E6: - add r0, r4, #0 - bl sub_02032EE8 - cmp r0, #0 - beq _022605FA - add r0, r6, r5 - add r0, #0x2c - strb r4, [r0] - add r5, r5, #1 - b _02260602 -_022605FA: - add r1, r6, r4 - add r1, #0x2c - mov r0, #0xff - strb r0, [r1] -_02260602: - add r4, r4, #1 - cmp r4, #4 - blt _022605E6 - add r0, r6, #0 - add r0, #0x30 - strb r5, [r0] - add r0, r7, #0 - add r0, #0x38 - ldrb r1, [r0] - add r0, r6, #0 - add r0, #0x3c - strb r1, [r0] - str r7, [sp] - add r1, r7, #0 - add r1, #0x39 - ldr r2, [r7, #0x34] - add r7, #0x38 - ldrb r1, [r1] - ldrb r3, [r7] - add r0, r6, #0 - bl ov114_0225C700 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov117_022605D8 - - thumb_func_start ov117_02260630 -ov117_02260630: ; 0x02260630 - push {r4, lr} - add r4, r0, #0 - add r1, r4, #0 - add r1, #0x3d - ldrb r1, [r1] - cmp r1, #0 - bne _0226064E - bl ov114_0225CA54 - cmp r0, #1 - bne _0226064E - add r0, r4, #0 - mov r1, #1 - add r0, #0x3d - strb r1, [r0] -_0226064E: - add r0, r4, #0 - add r0, #0x3d - ldrb r0, [r0] - cmp r0, #1 - bne _02260662 - ldr r0, [r4, #0x28] - cmp r0, #0 - bne _02260662 - mov r0, #1 - pop {r4, pc} -_02260662: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02260630 - - .rodata - - .global Unk_ov117_022668F8 -Unk_ov117_022668F8: ; 0x022668F8 - .incbin "incbin/overlay117_rodata.bin", 0x0, 0x10 - - .global Unk_ov117_02266908 -Unk_ov117_02266908: ; 0x02266908 - .incbin "incbin/overlay117_rodata.bin", 0x10, 0x20 - 0x10 \ No newline at end of file diff --git a/asm/overlay117/ov117_02260668.inc b/asm/overlay117/ov117_02260668.inc deleted file mode 100644 index b85dcf8a08..0000000000 --- a/asm/overlay117/ov117_02260668.inc +++ /dev/null @@ -1,261 +0,0 @@ -.public sub_02002AC8 -.public sub_02002AE4 -.public sub_02002B20 -.public sub_02002D7C -.public sub_02002F38 -.public sub_02002F54 -.public sub_02002F70 -.public sub_02002FA0 -.public sub_02002FEC -.public sub_02003050 -.public sub_02003070 -.public sub_02003694 -.public sub_02003858 -.public sub_020038B0 -.public sub_02005748 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006C24 -.public sub_02006CA8 -.public sub_020070E8 -.public sub_0200710C -.public sub_0200964C -.public sub_0200966C -.public sub_02009704 -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B1EC -.public sub_0200B358 -.public sub_0200B3F0 -.public sub_0200C6E4 -.public sub_0200C704 -.public sub_0200C738 -.public sub_0200C73C -.public sub_0200C7C0 -.public sub_0200C7EC -.public sub_0200C800 -.public sub_0200C808 -.public sub_0200C8D4 -.public sub_0200CB30 -.public sub_0200CBDC -.public sub_0200CC3C -.public sub_0200CD7C -.public sub_0200CDC4 -.public sub_0200CE0C -.public sub_0200CE24 -.public sub_0200CE3C -.public sub_0200CE54 -.public sub_0200D0B0 -.public sub_0200D9B0 -.public sub_0200D9E8 -.public sub_0200DA58 -.public sub_0200DAA4 -.public sub_0200DC48 -.public sub_0200F174 -.public sub_0200F2AC -.public sub_0200F2C0 -.public sub_0200F370 -.public sub_02012744 -.public sub_020127BC -.public sub_02014000 -.public sub_02014014 -.public sub_0201411C -.public sub_020144C4 -.public sub_020144CC -.public sub_020145B4 -.public sub_020145F4 -.public sub_0201469C -.public sub_020146C0 -.public sub_020146F4 -.public sub_02014730 -.public sub_02014784 -.public sub_020170D8 -.public sub_02017110 -.public sub_02017164 -.public sub_02017190 -.public sub_020171A0 -.public sub_02017204 -.public sub_02017240 -.public sub_02017258 -.public sub_0201727C -.public sub_02017288 -.public sub_02017294 -.public sub_02017348 -.public sub_02017350 -.public sub_0201736C -.public sub_02017798 -.public sub_02017DD4 -.public sub_02018144 -.public sub_020181C4 -.public sub_020182CC -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019120 -.public sub_02019184 -.public sub_02019690 -.public sub_02019CB8 -.public sub_02019EBC -.public sub_0201A7E8 -.public sub_0201A8FC -.public sub_0201A9A4 -.public sub_0201ADA4 -.public sub_0201C2B8 -.public sub_0201C3C0 -.public sub_0201D78C -.public sub_0201DBEC -.public sub_0201DC3C -.public sub_0201DCAC -.public sub_0201E3D8 -.public sub_0201E450 -.public sub_0201E530 -.public sub_0201FE94 -.public sub_0201FF00 -.public sub_0201FF0C -.public sub_0201FF68 -.public sub_0201FF74 -.public sub_0201FFD0 -.public sub_0201FFE8 -.public sub_020203AC -.public sub_020203B8 -.public sub_020203D4 -.public sub_020203EC -.public sub_020206BC -.public sub_020206D0 -.public sub_02020854 -.public GF_AssertFail -.public sub_02023790 -.public sub_020237BC -.public sub_020241B4 -.public sub_020241BC -.public sub_02024220 -.public sub_020242C4 -.public sub_02025F04 -.public sub_0203608C -.public sub_020364F0 -.public sub_02036540 -.public sub_02038A1C -.public sub_02039734 -.public sub_02039794 -.public NNS_G3dGlbFlushP -.public NNS_G3dGlbSetBaseTrans -.public NNS_G3dGlbSetBaseScale -.public NNS_G3dGlbLightVector -.public NNS_G3dGlbLightColor -.public NNS_G3dGlbMaterialColorDiffAmb -.public NNS_G3dGlbMaterialColorSpecEmi -.public NNS_G3dGeBufferOP_N -.public MTX_Identity33_ -.public G2x_SetBlendAlpha_ -.public G3X_SetFog -.public G3X_SetClearColor -.public MIi_CpuClear32 -.public MI_Copy36B -.public MI_CpuFill8 -.public _s32_div_f -.public ov4_021D1E74 -.public ov114_0225C7A4 -.public ov114_0225C7CC -.public ov114_0225CA98 -.public ov114_0225CAD4 -.public ov114_0225CB38 -.public ov114_0225CB74 -.public ov114_0225CB8C -.public ov114_0225CBB0 -.public ov114_0225CBE0 -.public ov117_02260DA0 -.public ov117_02260E14 -.public ov117_02260E34 -.public ov117_02260EB8 -.public ov117_02260EC0 -.public ov117_02260F64 -.public ov117_02260F7C -.public ov117_022610D8 -.public ov117_02261280 -.public ov117_02261368 -.public ov117_022613B8 -.public ov117_022613EC -.public ov117_022614AC -.public ov117_02261574 -.public ov117_022615E0 -.public ov117_02261644 -.public ov117_02261668 -.public ov117_0226168C -.public ov117_022618E8 -.public ov117_02261940 -.public ov117_022619F8 -.public ov117_02261A2C -.public ov117_02261AC4 -.public ov117_02261AC8 -.public ov117_02261C28 -.public ov117_02261C2C -.public ov117_02261DD0 -.public ov117_02261F08 -.public ov117_02261F3C -.public ov117_02261FA4 -.public ov117_02261FF4 -.public ov117_0226200C -.public ov117_022620A0 -.public ov117_022620E0 -.public ov117_0226217C -.public ov117_022621D4 -.public ov117_02262200 -.public ov117_02262270 -.public ov117_022622B8 -.public ov117_022622C4 -.public ov117_0226235C -.public ov117_022623B0 -.public ov117_02262448 -.public ov117_02262664 -.public ov117_022626AC -.public ov117_022626B0 -.public ov117_02262760 -.public ov117_02262798 -.public ov117_02262950 -.public ov117_02263CF4 -.public ov117_02263D80 -.public ov117_02263EF8 -.public ov117_022641E4 -.public ov117_02264508 -.public ov117_02264560 -.public ov117_022648E0 -.public ov117_02264914 -.public ov117_02264930 -.public ov117_02264AB0 -.public ov117_02264AF0 -.public ov117_02264BF8 -.public ov117_02264D1C -.public ov117_02264FB0 -.public ov117_0226504C -.public ov117_02265064 -.public ov117_022651E0 -.public ov117_02265210 -.public ov117_02265254 -.public ov117_02265ABC -.public ov117_02265B3C -.public ov117_02265C1C -.public ov117_02265DB8 -.public ov117_02265EB0 -.public ov117_02265EC8 -.public ov117_02265F34 -.public ov117_02266130 -.public ov117_02266150 -.public ov117_02266210 -.public ov117_02266238 -.public ov117_02266244 -.public ov117_02266268 -.public ov117_02266274 -.public ov117_022665FC -.public ov117_02266624 -.public ov117_02266648 -.public ov117_022666A4 -.public ov117_022666C0 -.public ov117_02266730 -.public ov117_02266784 -.public ov117_022667F4 -.public ov117_02266834 -.public ov117_0226687C -.public ov117_022668B8 diff --git a/asm/overlay117/ov117_02260668.s b/asm/overlay117/ov117_02260668.s deleted file mode 100644 index 52815b373a..0000000000 --- a/asm/overlay117/ov117_02260668.s +++ /dev/null @@ -1,4061 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_02260668.inc" - - .text - - thumb_func_start ov117_02260668 -ov117_02260668: ; 0x02260668 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - bl sub_0201FF00 - bl sub_0201FF68 - mov r0, #1 - lsl r0, r0, #0x1a - ldr r1, [r0, #0] - ldr r2, _02260954 ; =0xFFFFE0FF - and r1, r2 - str r1, [r0, #0] - ldr r1, _02260958 ; =0x04001000 - ldr r3, [r1, #0] - and r2, r3 - str r2, [r1, #0] - ldr r3, [r0, #0] - ldr r2, _0226095C ; =0xFFFF1FFF - and r3, r2 - str r3, [r0, #0] - ldr r3, [r1, #0] - add r0, #0x50 - and r2, r3 - str r2, [r1, #0] - mov r3, #0x10 - mov r1, #1 - mov r2, #0x3f - str r3, [sp] - bl G2x_SetBlendAlpha_ - mov r0, #3 - str r0, [sp] - ldr r0, _02260960 ; =0x04001050 - mov r1, #8 - mov r2, #0x1f - mov r3, #0xd - bl G2x_SetBlendAlpha_ - ldr r1, _02260964 ; =0x00003850 - add r0, r4, #0 - mov r2, #0x6e - bl sub_0200681C - ldr r2, _02260964 ; =0x00003850 - add r5, r0, #0 - mov r1, #0 - bl MI_CpuFill8 - add r0, r5, #0 - add r0, #0xa8 - mov r1, #0x6e - mov r2, #0x20 - bl sub_020182CC - mov r0, #0x6e - bl ov117_02260E14 - add r1, r5, #0 - add r1, #0x98 - str r0, [r1, #0] - add r0, r4, #0 - bl sub_02006840 - str r0, [r5, #0] - add r0, r5, #0 - bl ov117_022665FC - mov r0, #0x6e - bl sub_02002F38 - add r1, r5, #0 - add r1, #0x8c - str r0, [r1, #0] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #1 - bl sub_02003858 - add r0, r5, #0 - add r0, #0x8c - mov r2, #2 - ldr r0, [r0, #0] - mov r1, #0 - lsl r2, r2, #8 - mov r3, #0x6e - bl sub_02002F70 - add r0, r5, #0 - add r0, #0x8c - mov r1, #1 - ldr r0, [r0, #0] - lsl r2, r1, #9 - mov r3, #0x6e - bl sub_02002F70 - add r0, r5, #0 - add r0, #0x8c - mov r2, #7 - ldr r0, [r0, #0] - mov r1, #2 - lsl r2, r2, #6 - mov r3, #0x6e - bl sub_02002F70 - add r0, r5, #0 - add r0, #0x8c - mov r2, #2 - ldr r0, [r0, #0] - mov r1, #3 - lsl r2, r2, #8 - mov r3, #0x6e - bl sub_02002F70 - mov r0, #0x6e - bl sub_02018340 - str r0, [r5, #0x2c] - mov r0, #0x40 - mov r1, #0x6e - bl sub_0201DBEC - mov r0, #4 - mov r1, #8 - bl sub_02017DD4 - ldr r0, [r5, #0x2c] - bl ov117_022610D8 - bl sub_0201E3D8 - mov r0, #4 - bl sub_0201E450 - add r0, r5, #0 - bl ov117_02260EC0 - mov r0, #0x6e - bl sub_0200C6E4 - ldr r1, _02260968 ; =0x022669A8 - ldr r2, _0226096C ; =0x0226697C - mov r3, #0x20 - str r0, [r5, #0x24] - bl sub_0200C73C - ldr r1, _02260970 ; =0x00100010 - mov r0, #1 - bl sub_0200966C - mov r0, #1 - bl sub_02009704 - ldr r0, [r5, #0x24] - bl sub_0200C704 - str r0, [r5, #0x28] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r2, #0xe0 - bl sub_0200C7C0 - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - ldr r2, _02260974 ; =0x02266990 - bl sub_0200CB30 - ldr r0, [r5, #0x24] - bl sub_0200C738 - mov r2, #0x16 - mov r1, #0 - lsl r2, r2, #0x10 - bl sub_0200964C - add r0, r5, #0 - bl ov117_02261574 - mov r0, #0 - mov r1, #0x1a - mov r2, #9 - mov r3, #0x6e - bl sub_0200B144 - add r1, r5, #0 - add r1, #0x80 - str r0, [r1, #0] - mov r0, #0x6e - bl sub_0200B358 - add r1, r5, #0 - add r1, #0x84 - str r0, [r1, #0] - mov r0, #5 - lsl r0, r0, #6 - mov r1, #0x6e - bl sub_02023790 - add r1, r5, #0 - add r1, #0x88 - str r0, [r1, #0] - mov r0, #0x13 - mov r1, #0x6e - bl sub_02012744 - add r1, r5, #0 - add r1, #0x90 - str r0, [r1, #0] - ldr r1, _02260978 ; =0x00001468 - add r0, r5, #0 - add r1, r5, r1 - bl ov117_02265210 - mov r0, #0xad - mov r1, #0x6e - bl sub_02006C24 - add r4, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl ov117_02261A2C - add r0, r5, #0 - add r1, r4, #0 - bl ov117_02261AC8 - add r0, r5, #0 - bl ov117_02261280 - add r0, r5, #0 - add r1, r4, #0 - bl ov117_0226168C - add r0, r5, #0 - add r1, r4, #0 - bl ov117_02261940 - add r0, r5, #0 - add r1, r4, #0 - bl ov117_02261C2C - add r0, r4, #0 - bl sub_02006CA8 - mov r0, #0 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0xe0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #0xe - mov r2, #6 - mov r3, #0x6e - bl sub_02003050 - mov r0, #1 - str r0, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x50 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #0xe - mov r2, #6 - mov r3, #0x6e - bl sub_02003050 - add r0, r5, #0 - bl ov117_022613EC - add r0, r5, #0 - mov r1, #0 - bl ov117_022614AC - add r0, r5, #0 - bl ov117_02261368 - bl sub_02039734 - add r0, r5, #0 - bl ov117_022626B0 - add r1, r5, #0 - add r1, #0xd4 - str r0, [r1, #0] - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x6e - str r0, [sp, #8] - mov r0, #0 - mov r1, #0x1b - add r2, r1, #0 - add r3, r0, #0 - bl sub_0200F174 - ldr r0, _0226097C ; =ov117_02260F7C - ldr r2, _02260980 ; =0x0000EA60 - add r1, r5, #0 - bl sub_0200D9E8 - add r1, r5, #0 - add r1, #0x94 - str r0, [r1, #0] - ldr r0, _02260984 ; =0x021BF6DC - mov r1, #1 - strb r1, [r0, #5] - bl sub_0201FFE8 - bl sub_0201FFD0 - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF0C - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF74 - mov r0, #1 - bl sub_02002AE4 - mov r0, #0 - bl sub_02002AC8 - mov r0, #0 - bl sub_02002B20 - ldr r0, [r5, #0x28] - bl sub_0200D9B0 - mov r1, #0x6e - bl ov114_0225CAD4 - str r0, [r5, #0x1c] - bl ov114_0225CB74 - add r2, r0, #0 - add r0, r5, #0 - add r0, #0x8c - lsl r2, r2, #0x14 - ldr r0, [r0, #0] - mov r1, #2 - lsr r2, r2, #0x10 - mov r3, #0x60 - bl sub_02003070 - ldr r0, _02260988 ; =ov117_02260DA0 - add r1, r5, #0 - bl sub_02017798 - ldr r0, [r5, #0] - add r0, #0x3c - ldrb r0, [r0] - cmp r0, #0 - beq _0226094C - mov r0, #0x6e - bl ov4_021D1E74 -_0226094C: - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - nop -_02260954: .word 0xFFFFE0FF -_02260958: .word 0x04001000 -_0226095C: .word 0xFFFF1FFF -_02260960: .word 0x04001050 -_02260964: .word 0x00003850 -_02260968: .word 0x022669A8 -_0226096C: .word 0x0226697C -_02260970: .word 0x00100010 -_02260974: .word 0x02266990 -_02260978: .word 0x00001468 -_0226097C: .word ov117_02260F7C -_02260980: .word 0x0000EA60 -_02260984: .word 0x021BF6DC -_02260988: .word ov117_02260DA0 - thumb_func_end ov117_02260668 - - thumb_func_start ov117_0226098C -ov117_0226098C: ; 0x0226098C - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r1, [r4, #0] - add r2, r1, #0 - add r2, #0x3d - ldrb r2, [r2] - cmp r2, #1 - bne _022609F6 - add r0, r1, #0 - add r0, #0x3e - ldrb r0, [r0] - cmp r0, #0 - beq _022609B2 - cmp r0, #1 - b _022609E0 -_022609B2: - bl sub_0200F2AC - cmp r0, #1 - bne _022609BE - bl sub_0200F2C0 -_022609BE: - mov r0, #0 - bl sub_0200F370 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _02260BE0 ; =0xFFFF1FFF - and r0, r1 - str r0, [r2, #0] - ldr r1, [r4, #0] - add r0, r1, #0 - add r0, #0x3e - ldrb r0, [r0] - add r1, #0x3e - add r0, r0, #1 - strb r0, [r1] - b _022609F0 -_022609E0: - add r0, r1, #0 - bl ov114_0225CA98 - cmp r0, #1 - bne _022609F0 - add sp, #0xc - mov r0, #1 - pop {r4, r5, pc} -_022609F0: - add sp, #0xc - mov r0, #0 - pop {r4, r5, pc} -_022609F6: - ldr r2, [r5, #0] - cmp r2, #6 - bhi _02260A60 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02260A08: ; jump table - .short _02260A16 - _02260A08 - 2 ; case 0 - .short _02260A26 - _02260A08 - 2 ; case 1 - .short _02260A34 - _02260A08 - 2 ; case 2 - .short _02260A46 - _02260A08 - 2 ; case 3 - .short _02260A56 - _02260A08 - 2 ; case 4 - .short _02260A6E - _02260A08 - 2 ; case 5 - .short _02260BBA - _02260A08 - 2 ; case 6 -_02260A16: - bl sub_0200F2AC - cmp r0, #1 - bne _02260A60 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02260BC8 -_02260A26: - mov r0, #0xd3 - bl sub_020364F0 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02260BC8 -_02260A34: - mov r0, #0xd3 - bl sub_02036540 - cmp r0, #1 - bne _02260A60 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02260BC8 -_02260A46: - bl ov117_022666A4 - cmp r0, #1 - bne _02260A60 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02260BC8 -_02260A56: - add r1, #0x30 - ldrb r1, [r1] - ldr r2, [r4, #8] - cmp r2, r1 - bhs _02260A62 -_02260A60: - b _02260BC8 -_02260A62: - bl ov117_0226200C - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02260BC8 -_02260A6E: - mov r1, #0xbf - lsl r1, r1, #6 - ldr r1, [r4, r1] - cmp r1, #1 - bne _02260A9A - bl ov117_02266150 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x6e - str r0, [sp, #8] - mov r0, #0 - mov r1, #0x1a - add r2, r1, #0 - add r3, r0, #0 - bl sub_0200F174 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] -_02260A9A: - add r0, r4, #0 - bl ov117_02262664 - ldr r0, [r4, #0x20] - cmp r0, #7 - bhi _02260B78 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02260AB2: ; jump table - .short _02260B78 - _02260AB2 - 2 ; case 0 - .short _02260AC2 - _02260AB2 - 2 ; case 1 - .short _02260B0E - _02260AB2 - 2 ; case 2 - .short _02260B28 - _02260AB2 - 2 ; case 3 - .short _02260B34 - _02260AB2 - 2 ; case 4 - .short _02260B78 - _02260AB2 - 2 ; case 5 - .short _02260B5E - _02260AB2 - 2 ; case 6 - .short _02260B6A - _02260AB2 - 2 ; case 7 -_02260AC2: - mov r0, #1 - lsl r0, r0, #0x1a - ldr r2, [r0, #0] - ldr r1, _02260BE0 ; =0xFFFF1FFF - add r3, r0, #0 - and r2, r1 - lsr r1, r0, #0xc - orr r1, r2 - str r1, [r0, #0] - add r1, r0, #0 - ldr r2, _02260BE4 ; =0x0000044C - add r1, #0x42 - strh r2, [r1] - add r1, r0, #0 - ldr r2, _02260BE8 ; =0x0000A8B8 - add r1, #0x46 - strh r2, [r1] - add r3, #0x48 - ldrh r2, [r3] - ldr r1, _02260BEC ; =0xFFFFC0FF - and r2, r1 - lsr r1, r0, #0xe - orr r1, r2 - strh r1, [r3] - add r0, #0x4a - ldrh r2, [r0] - mov r1, #0x3f - bic r2, r1 - mov r1, #0x1f - orr r2, r1 - mov r1, #0x20 - orr r1, r2 - strh r1, [r0] - add r0, r4, #0 - bl ov117_02266210 - mov r0, #2 - str r0, [r4, #0x20] -_02260B0E: - ldr r1, _02260BF0 ; =0x0000174C - add r0, r4, #0 - add r1, r4, r1 - bl ov117_02266274 - cmp r0, #1 - bne _02260B78 - ldr r0, _02260BF4 ; =0x00001768 - mov r1, #1 - str r1, [r4, r0] - mov r0, #0 - str r0, [r4, #0x20] - b _02260B78 -_02260B28: - ldr r0, [r4, #0x1c] - bl ov114_0225CB8C - mov r0, #4 - str r0, [r4, #0x20] - b _02260B78 -_02260B34: - ldr r0, [r4, #0x1c] - bl ov114_0225CBE0 - cmp r0, #1 - bne _02260B78 - ldr r0, _02260BF8 ; =0x00002FB8 - mov r1, #1 - str r1, [r4, r0] - ldr r0, _02260BFC ; =0x00001559 - mov r1, #0 - strb r1, [r4, r0] - mov r0, #5 - str r0, [r4, #0x20] - add r0, r4, #0 - bl ov117_022613B8 - add r0, r4, #0 - mov r1, #1 - bl ov117_022614AC - b _02260B78 -_02260B5E: - ldr r0, [r4, #0x1c] - bl ov114_0225CBB0 - mov r0, #7 - str r0, [r4, #0x20] - b _02260B78 -_02260B6A: - ldr r0, [r4, #0x1c] - bl ov114_0225CBE0 - cmp r0, #1 - bne _02260B78 - mov r0, #8 - str r0, [r4, #0x20] -_02260B78: - add r0, r4, #0 - bl ov117_022623B0 - add r0, r4, #0 - bl ov117_02262270 - ldr r0, _02260C00 ; =0x00002FBC - ldr r0, [r4, r0] - cmp r0, #1 - beq _02260BC8 - add r0, r4, #0 - bl ov117_02262200 - cmp r0, #1 - bne _02260B9C - ldr r0, _02260C04 ; =0x00002FC4 - mov r1, #0xd - str r1, [r4, r0] -_02260B9C: - ldr r1, _02260BF8 ; =0x00002FB8 - ldr r0, [r4, r1] - cmp r0, #1 - bne _02260BC8 - sub r0, r1, #4 - ldr r2, [r4, r0] - ldr r0, _02260C08 ; =0x00000516 - cmp r2, r0 - bhi _02260BC8 - sub r0, r1, #4 - ldr r0, [r4, r0] - add r2, r0, #1 - sub r0, r1, #4 - str r2, [r4, r0] - b _02260BC8 -_02260BBA: - bl sub_0200F2AC - cmp r0, #1 - bne _02260BC8 - add sp, #0xc - mov r0, #1 - pop {r4, r5, pc} -_02260BC8: - add r0, r4, #0 - add r0, #0x9c - ldr r0, [r0, #0] - bl ov117_022626AC - ldr r0, _02260C0C ; =0x0000384C - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - ; .align 2, 0 -_02260BE0: .word 0xFFFF1FFF -_02260BE4: .word 0x0000044C -_02260BE8: .word 0x0000A8B8 -_02260BEC: .word 0xFFFFC0FF -_02260BF0: .word 0x0000174C -_02260BF4: .word 0x00001768 -_02260BF8: .word 0x00002FB8 -_02260BFC: .word 0x00001559 -_02260C00: .word 0x00002FBC -_02260C04: .word 0x00002FC4 -_02260C08: .word 0x00000516 -_02260C0C: .word 0x0000384C - thumb_func_end ov117_0226098C - - thumb_func_start ov117_02260C10 -ov117_02260C10: ; 0x02260C10 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r0, _02260D94 ; =0x00002FD0 - ldr r1, [r4, r0] - ldr r0, [r4, #0] - str r1, [r0, #0x24] - ldr r0, [r4, #0x1c] - bl ov114_0225CB38 - add r0, r4, #0 - bl ov117_022641E4 - add r0, r4, #0 - bl ov117_02264508 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - add r0, r4, #0 - bl ov117_022615E0 - add r0, r4, #0 - bl ov117_022618E8 - add r0, r4, #0 - bl ov117_022619F8 - add r0, r4, #0 - bl ov117_02261AC4 - add r0, r4, #0 - bl ov117_02261C28 - add r0, r4, #0 - bl ov117_02261DD0 - add r1, r4, #0 - add r1, #0xd4 - ldr r1, [r1, #0] - add r0, r4, #0 - bl ov117_02262760 - add r5, r4, #0 - mov r6, #0 - add r5, #0x30 -_02260C72: - add r0, r5, #0 - bl sub_0201A8FC - add r6, r6, #1 - add r5, #0x10 - cmp r6, #5 - blt _02260C72 - mov r0, #1 - mov r1, #0 - bl sub_0201FF0C - mov r0, #2 - mov r1, #0 - bl sub_0201FF0C - ldr r0, [r4, #0x2c] - mov r1, #1 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #2 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #3 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #4 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #5 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #6 - bl sub_02019044 - ldr r0, [r4, #0x2c] - mov r1, #7 - bl sub_02019044 - add r0, r4, #0 - add r0, #0x90 - ldr r0, [r0, #0] - bl sub_020127BC - ldr r0, [r4, #0x24] - ldr r1, [r4, #0x28] - bl sub_0200D0B0 - ldr r0, [r4, #0x24] - bl sub_0200C8D4 - bl sub_0201DC3C - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #0 - bl sub_02002FA0 - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #1 - bl sub_02002FA0 - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #2 - bl sub_02002FA0 - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #3 - bl sub_02002FA0 - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - bl sub_02002F54 - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0, #0] - bl sub_020237BC - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - bl sub_0200B3F0 - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - bl sub_0200B190 - ldr r0, [r4, #0x2c] - bl sub_020181C4 - add r0, r4, #0 - bl ov117_02260F64 - add r0, r4, #0 - add r0, #0x94 - ldr r0, [r0, #0] - bl sub_0200DA58 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _02260D98 ; =0xFFFF1FFF - and r1, r0 - str r1, [r2, #0] - ldr r2, _02260D9C ; =0x04001000 - add r4, #0x98 - ldr r1, [r2, #0] - and r0, r1 - str r0, [r2, #0] - ldr r0, [r4, #0] - bl ov117_02260EB8 - bl sub_0201E530 - add r0, r7, #0 - bl sub_02006830 - mov r0, #0 - bl sub_02002AC8 - mov r0, #0 - bl sub_02002AE4 - mov r0, #0 - bl sub_02002B20 - bl sub_02039794 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - nop -_02260D94: .word 0x00002FD0 -_02260D98: .word 0xFFFF1FFF -_02260D9C: .word 0x04001000 - thumb_func_end ov117_02260C10 - - thumb_func_start ov117_02260DA0 -ov117_02260DA0: ; 0x02260DA0 - push {r4, lr} - add r4, r0, #0 - add r1, r4, #0 - add r1, #0xd4 - ldr r1, [r1, #0] - bl ov117_02262950 - bl sub_0201DCAC - bl sub_0200C800 - add r0, r4, #0 - add r0, #0x8c - ldr r0, [r0, #0] - bl sub_02003694 - ldr r0, _02260E04 ; =0x00001454 - ldrb r1, [r4, r0] - cmp r1, #1 - bne _02260DD8 - mov r0, #7 - mov r1, #1 - bl sub_02019120 - ldr r0, _02260E04 ; =0x00001454 - mov r1, #0 - strb r1, [r4, r0] - b _02260DEE -_02260DD8: - add r0, r0, #1 - ldrb r0, [r4, r0] - cmp r0, #1 - bne _02260DEE - mov r0, #7 - mov r1, #0 - bl sub_02019120 - ldr r0, _02260E08 ; =0x00001455 - mov r1, #0 - strb r1, [r4, r0] -_02260DEE: - ldr r0, [r4, #0x2c] - bl sub_0201C2B8 - ldr r3, _02260E0C ; =0x027E0000 - ldr r1, _02260E10 ; =0x00003FF8 - mov r0, #1 - ldr r2, [r3, r1] - orr r0, r2 - str r0, [r3, r1] - pop {r4, pc} - nop -_02260E04: .word 0x00001454 -_02260E08: .word 0x00001455 -_02260E0C: .word 0x027E0000 -_02260E10: .word 0x00003FF8 - thumb_func_end ov117_02260DA0 - - thumb_func_start ov117_02260E14 -ov117_02260E14: ; 0x02260E14 - push {r3, lr} - sub sp, #8 - mov r1, #2 - str r1, [sp] - ldr r1, _02260E30 ; =ov117_02260E34 - mov r2, #1 - str r1, [sp, #4] - mov r1, #0 - add r3, r1, #0 - bl sub_02024220 - add sp, #8 - pop {r3, pc} - nop -_02260E30: .word ov117_02260E34 - thumb_func_end ov117_02260E14 - - thumb_func_start ov117_02260E34 -ov117_02260E34: ; 0x02260E34 - push {r3, lr} - mov r0, #1 - add r1, r0, #0 - bl sub_0201FF0C - ldr r0, _02260EA0 ; =0x04000008 - mov r1, #3 - ldrh r2, [r0] - bic r2, r1 - mov r1, #1 - orr r1, r2 - strh r1, [r0] - add r0, #0x58 - ldrh r2, [r0] - ldr r1, _02260EA4 ; =0xFFFFCFFD - and r2, r1 - strh r2, [r0] - add r2, r1, #2 - ldrh r3, [r0] - add r1, r1, #2 - and r3, r2 - mov r2, #0x10 - orr r2, r3 - strh r2, [r0] - ldrh r3, [r0] - ldr r2, _02260EA8 ; =0x0000CFFB - and r3, r2 - strh r3, [r0] - ldrh r3, [r0] - sub r2, #0x1c - and r3, r1 - mov r1, #8 - orr r1, r3 - strh r1, [r0] - ldrh r1, [r0] - and r1, r2 - strh r1, [r0] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl G3X_SetFog - mov r0, #0 - ldr r2, _02260EAC ; =0x00007FFF - add r1, r0, #0 - mov r3, #0x3f - str r0, [sp] - bl G3X_SetClearColor - ldr r1, _02260EB0 ; =0xBFFF0000 - ldr r0, _02260EB4 ; =0x04000580 - str r1, [r0, #0] - pop {r3, pc} - ; .align 2, 0 -_02260EA0: .word 0x04000008 -_02260EA4: .word 0xFFFFCFFD -_02260EA8: .word 0x0000CFFB -_02260EAC: .word 0x00007FFF -_02260EB0: .word 0xBFFF0000 -_02260EB4: .word 0x04000580 - thumb_func_end ov117_02260E34 - - thumb_func_start ov117_02260EB8 -ov117_02260EB8: ; 0x02260EB8 - ldr r3, _02260EBC ; =sub_020242C4 - bx r3 - ; .align 2, 0 -_02260EBC: .word sub_020242C4 - thumb_func_end ov117_02260EB8 - - thumb_func_start ov117_02260EC0 -ov117_02260EC0: ; 0x02260EC0 - push {r4, lr} - sub sp, #0x18 - ldr r3, _02260F58 ; =0x02266938 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - mov r0, #0x6e - bl sub_020203AC - add r1, r4, #0 - add r1, #0x9c - str r0, [r1, #0] - mov r0, #1 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x9c - ldr r0, [r0, #0] - mov r1, #0x7b - str r0, [sp, #8] - ldr r2, _02260F5C ; =0x02266918 - ldr r3, _02260F60 ; =0x00000FA4 - add r0, sp, #0xc - lsl r1, r1, #0xc - bl sub_020206D0 - add r2, r4, #0 - add r2, #0x9c - mov r0, #1 - mov r1, #0xe1 - ldr r2, [r2, #0] - lsl r0, r0, #0xc - lsl r1, r1, #0xe - bl sub_020206BC - add r0, r4, #0 - add r0, #0x9c - ldr r0, [r0, #0] - bl sub_020203D4 - mov r0, #0x6e - bl sub_020203AC - add r1, r4, #0 - add r1, #0xa0 - str r0, [r1, #0] - mov r0, #1 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0xa0 - ldr r0, [r0, #0] - mov r1, #5 - str r0, [sp, #8] - ldr r2, _02260F5C ; =0x02266918 - ldr r3, _02260F60 ; =0x00000FA4 - add r0, sp, #0xc - lsl r1, r1, #0x10 - bl sub_020206D0 - add r4, #0xa0 - mov r0, #1 - mov r1, #0xe1 - ldr r2, [r4, #0] - lsl r0, r0, #0xc - lsl r1, r1, #0xe - bl sub_020206BC - add sp, #0x18 - pop {r4, pc} - nop -_02260F58: .word 0x02266938 -_02260F5C: .word 0x02266918 -_02260F60: .word 0x00000FA4 - thumb_func_end ov117_02260EC0 - - thumb_func_start ov117_02260F64 -ov117_02260F64: ; 0x02260F64 - push {r4, lr} - add r4, r0, #0 - add r0, #0x9c - ldr r0, [r0, #0] - bl sub_020203B8 - add r4, #0xa0 - ldr r0, [r4, #0] - bl sub_020203B8 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02260F64 - - thumb_func_start ov117_02260F7C -ov117_02260F7C: ; 0x02260F7C - push {r4, lr} - sub sp, #0x40 - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp, #0x34] - str r0, [sp, #0x38] - str r0, [sp, #0x3c] - mov r0, #0 - str r0, [sp, #0x28] - str r0, [sp, #0x2c] - str r0, [sp, #0x30] - add r0, sp, #4 - add r4, r1, #0 - bl MTX_Identity33_ - ldr r1, _022610B0 ; =0x000015A8 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_02265F34 - ldr r1, _022610B4 ; =0x00001468 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_02265254 - ldr r1, _022610B8 ; =0x00001560 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_02265C1C - add r0, r4, #0 - bl ov117_02263EF8 - ldr r2, _022610BC ; =0x00001428 - ldr r1, [r4, #0x2c] - add r0, r4, #0 - add r2, r4, r2 - bl ov117_02263D80 - add r0, r4, #0 - bl ov117_02264560 - add r0, r4, #0 - bl ov117_02261F3C - add r0, r4, #0 - bl ov117_02264930 - bl sub_020241B4 - add r0, r4, #0 - add r0, #0x9c - ldr r0, [r0, #0] - bl sub_020203D4 - add r1, r4, #0 - add r1, #0x9c - ldr r1, [r1, #0] - mov r0, #1 - bl sub_02020854 - bl sub_020203EC - mov r0, #0 - ldr r2, _022610C0 ; =0xFFFFF000 - add r1, r0, #0 - add r3, r0, #0 - bl NNS_G3dGlbLightVector - ldr r1, _022610C4 ; =0x0000739C - mov r0, #0 - bl NNS_G3dGlbLightColor - ldr r0, _022610C8 ; =0x00007FFF - mov r2, #0 - add r1, r0, #0 - bl NNS_G3dGlbMaterialColorDiffAmb - ldr r0, _022610C8 ; =0x00007FFF - mov r2, #0 - add r1, r0, #0 - bl NNS_G3dGlbMaterialColorSpecEmi - add r0, sp, #0x28 - bl NNS_G3dGlbSetBaseTrans - ldr r1, _022610CC ; =0x021C5B48 - add r0, sp, #4 - bl MI_Copy36B - ldr r1, _022610D0 ; =0x021C5B0C - mov r0, #0xa4 - ldr r2, [r1, #0x7c] - bic r2, r0 - add r0, sp, #0x34 - str r2, [r1, #0x7c] - bl NNS_G3dGlbSetBaseScale - bl NNS_G3dGlbFlushP - add r1, r4, #0 - add r1, #0xd4 - ldr r1, [r1, #0] - add r0, r4, #0 - bl ov117_02262798 - mov r1, #0 - mov r0, #0x11 - add r2, r1, #0 - bl NNS_G3dGeBufferOP_N - ldr r0, _022610D4 ; =0x000013B0 - add r0, r4, r0 - bl sub_02017294 - add r0, r4, #0 - add r0, #0xe8 - bl sub_02017294 - add r0, r4, #0 - bl ov117_02261FA4 - mov r2, #1 - mov r0, #0x12 - add r1, sp, #0 - str r2, [sp] - bl NNS_G3dGeBufferOP_N - bl sub_020241B4 - bl sub_0201469C - cmp r0, #0 - ble _0226108C - bl sub_020241B4 -_0226108C: - bl sub_020146C0 - ldr r0, [r4, #0x28] - bl sub_0200C7EC - bl sub_0200C808 - mov r0, #0 - add r1, r0, #0 - bl sub_020241BC - ldr r1, [r4, #0x2c] - mov r0, #0x6e - bl sub_02038A1C - add sp, #0x40 - pop {r4, pc} - nop -_022610B0: .word 0x000015A8 -_022610B4: .word 0x00001468 -_022610B8: .word 0x00001560 -_022610BC: .word 0x00001428 -_022610C0: .word 0xFFFFF000 -_022610C4: .word 0x0000739C -_022610C8: .word 0x00007FFF -_022610CC: .word 0x021C5B48 -_022610D0: .word 0x021C5B0C -_022610D4: .word 0x000013B0 - thumb_func_end ov117_02260F7C - - thumb_func_start ov117_022610D8 -ov117_022610D8: ; 0x022610D8 - push {r4, r5, r6, r7, lr} - sub sp, #0x8c - add r5, r0, #0 - bl sub_0201FF00 - ldr r4, _0226126C ; =0x022669C8 - add r3, sp, #0x10 - mov r2, #5 -_022610E8: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _022610E8 - add r0, sp, #0x10 - bl sub_0201FE94 - mov r1, #6 - mov r2, #2 - mov r0, #0 - lsl r1, r1, #0x18 - lsl r2, r2, #0x12 - bl MIi_CpuClear32 - mov r1, #0x62 - mov r2, #2 - mov r0, #0 - lsl r1, r1, #0x14 - lsl r2, r2, #0x10 - bl MIi_CpuClear32 - mov r1, #0x19 - mov r2, #1 - mov r0, #0 - lsl r1, r1, #0x16 - lsl r2, r2, #0x12 - bl MIi_CpuClear32 - mov r1, #0x66 - mov r2, #2 - mov r0, #0 - lsl r1, r1, #0x14 - lsl r2, r2, #0x10 - bl MIi_CpuClear32 - ldr r4, _02261270 ; =0x02266944 - add r3, sp, #0 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl sub_02018368 - ldr r4, _02261274 ; =0x02266A40 - add r3, sp, #0x38 - mov r2, #0xa -_02261148: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _02261148 - ldr r0, [r4, #0] - mov r1, #1 - str r0, [r3, #0] - add r0, r5, #0 - add r2, sp, #0x38 - mov r3, #0 - bl sub_020183C4 - add r0, r5, #0 - mov r1, #1 - bl sub_02019EBC - mov r2, #0 - add r0, r5, #0 - mov r1, #1 - add r3, r2, #0 - bl sub_02019184 - add r0, r5, #0 - mov r1, #1 - mov r2, #3 - mov r3, #0 - bl sub_02019184 - add r0, r5, #0 - mov r1, #2 - add r2, sp, #0x54 - mov r3, #0 - bl sub_020183C4 - add r0, r5, #0 - mov r1, #2 - bl sub_02019EBC - mov r2, #0 - add r0, r5, #0 - mov r1, #2 - add r3, r2, #0 - bl sub_02019184 - add r0, r5, #0 - mov r1, #2 - mov r2, #3 - mov r3, #0 - bl sub_02019184 - add r0, r5, #0 - mov r1, #3 - add r2, sp, #0x70 - mov r3, #0 - bl sub_020183C4 - add r0, r5, #0 - mov r1, #3 - bl sub_02019EBC - mov r2, #0 - add r0, r5, #0 - mov r1, #3 - add r3, r2, #0 - bl sub_02019184 - mov r1, #3 - add r0, r5, #0 - add r2, r1, #0 - mov r3, #0 - bl sub_02019184 - ldr r1, _02261278 ; =0x04000008 - mov r0, #3 - ldrh r2, [r1] - bic r2, r0 - mov r0, #2 - orr r0, r2 - strh r0, [r1] - mov r0, #1 - add r1, r0, #0 - bl sub_0201FF0C - mov r4, #0 - ldr r6, _0226127C ; =0x02266A94 - add r7, r4, #0 -_022611F4: - cmp r4, #3 - bge _0226120A - add r1, r4, #4 - lsl r1, r1, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - add r2, r6, #0 - add r3, r7, #0 - bl sub_020183C4 - b _0226121A -_0226120A: - add r1, r4, #4 - lsl r1, r1, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - add r2, r6, #0 - mov r3, #1 - bl sub_020183C4 -_0226121A: - add r0, r4, #4 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #0x20 - mov r2, #0 - mov r3, #0x6e - bl sub_02019690 - add r1, r4, #4 - lsl r1, r1, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - bl sub_02019EBC - add r1, r4, #4 - lsl r1, r1, #0x18 - mov r2, #0 - add r0, r5, #0 - lsr r1, r1, #0x18 - add r3, r2, #0 - bl sub_02019184 - add r1, r4, #4 - lsl r1, r1, #0x18 - add r0, r5, #0 - lsr r1, r1, #0x18 - mov r2, #3 - mov r3, #0 - bl sub_02019184 - add r4, r4, #1 - add r6, #0x1c - cmp r4, #4 - blo _022611F4 - mov r0, #7 - mov r1, #0 - bl sub_02019120 - add sp, #0x8c - pop {r4, r5, r6, r7, pc} - nop -_0226126C: .word 0x022669C8 -_02261270: .word 0x02266944 -_02261274: .word 0x02266A40 -_02261278: .word 0x04000008 -_0226127C: .word 0x02266A94 - thumb_func_end ov117_022610D8 - - thumb_func_start ov117_02261280 -ov117_02261280: ; 0x02261280 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - mov r0, #0x13 - str r0, [sp] - mov r0, #0x14 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp, #8] - mov r0, #0xe - str r0, [sp, #0xc] - mov r0, #3 - lsl r0, r0, #8 - str r0, [sp, #0x10] - add r1, r4, #0 - ldr r0, [r4, #0x2c] - add r1, #0x30 - mov r2, #1 - mov r3, #0xb - bl sub_0201A7E8 - mov r0, #1 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - mov r0, #5 - str r0, [sp, #0xc] - mov r0, #0xc5 - lsl r0, r0, #2 - str r0, [sp, #0x10] - add r1, r4, #0 - ldr r0, [r4, #0x2c] - add r1, #0x40 - mov r2, #4 - mov r3, #0x12 - bl sub_0201A7E8 - mov r0, #0xe - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - mov r0, #5 - str r0, [sp, #0xc] - mov r0, #0xca - lsl r0, r0, #2 - str r0, [sp, #0x10] - add r1, r4, #0 - ldr r0, [r4, #0x2c] - add r1, #0x50 - mov r2, #4 - mov r3, #0x15 - bl sub_0201A7E8 - mov r0, #0xe - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #2 - str r0, [sp, #8] - mov r0, #5 - str r0, [sp, #0xc] - mov r0, #0xcf - lsl r0, r0, #2 - str r0, [sp, #0x10] - add r1, r4, #0 - ldr r0, [r4, #0x2c] - add r1, #0x60 - mov r2, #4 - mov r3, #1 - bl sub_0201A7E8 - add r0, r4, #0 - add r0, #0x40 - mov r1, #0xf - bl sub_0201ADA4 - add r0, r4, #0 - add r0, #0x50 - mov r1, #0xf - bl sub_0201ADA4 - add r0, r4, #0 - add r0, #0x60 - mov r1, #0xf - bl sub_0201ADA4 - mov r0, #0x13 - str r0, [sp] - mov r0, #0x1c - str r0, [sp, #4] - mov r2, #4 - add r1, r4, #0 - str r2, [sp, #8] - mov r0, #5 - str r0, [sp, #0xc] - ldr r0, _02261364 ; =0x00000359 - add r1, #0x70 - str r0, [sp, #0x10] - ldr r0, [r4, #0x2c] - mov r3, #2 - bl sub_0201A7E8 - add r4, #0x70 - add r0, r4, #0 - mov r1, #0xf - bl sub_0201ADA4 - add sp, #0x14 - pop {r3, r4, pc} - nop -_02261364: .word 0x00000359 - thumb_func_end ov117_02261280 - - thumb_func_start ov117_02261368 -ov117_02261368: ; 0x02261368 - push {r3, r4, r5, lr} - sub sp, #0x10 - mov r2, #0x35 - add r5, r0, #0 - add r0, #0x70 - mov r1, #1 - lsl r2, r2, #4 - mov r3, #6 - bl sub_0200DC48 - add r0, r5, #0 - add r0, #0x80 - ldr r0, [r0, #0] - mov r1, #3 - bl sub_0200B1EC - mov r1, #0 - add r4, r0, #0 - str r1, [sp] - ldr r0, _022613B4 ; =0x0001020F - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x70 - add r2, r4, #0 - add r3, r1, #0 - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r4, #0 - bl sub_020237BC - add r5, #0x70 - add r0, r5, #0 - bl sub_0201A9A4 - add sp, #0x10 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022613B4: .word 0x0001020F - thumb_func_end ov117_02261368 - - thumb_func_start ov117_022613B8 -ov117_022613B8: ; 0x022613B8 - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - mov r0, #0x12 - str r0, [sp] - mov r0, #0x1e - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #0x11 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _022613E8 ; =0x000003FF - mov r1, #4 - mov r3, #1 - bl sub_02019CB8 - ldr r0, [r4, #0x2c] - mov r1, #4 - bl sub_0201C3C0 - add sp, #0x10 - pop {r4, pc} - nop -_022613E8: .word 0x000003FF - thumb_func_end ov117_022613B8 - - thumb_func_start ov117_022613EC -ov117_022613EC: ; 0x022613EC - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r5, r0, #0 - bl sub_0203608C - str r0, [sp, #0x10] - add r0, r5, #0 - str r0, [sp, #0x18] - add r0, #0x30 - mov r4, #0 - str r0, [sp, #0x18] - b _02261490 -_02261404: - ldr r0, [r5, #0] - ldr r2, [sp, #0x10] - add r1, r0, r4 - add r1, #0x2c - ldrb r1, [r1] - cmp r2, r1 - beq _0226148E - bl ov114_0225C7CC - mov r1, #0x6e - bl sub_02025F04 - ldr r1, [r5, #0] - add r6, r0, #0 - add r1, r1, r4 - add r1, #0x2c - ldrb r1, [r1] - add r0, r5, #0 - bl ov117_022622C4 - str r0, [sp, #0x14] - ldr r0, [r5, #0] - add r1, r0, r4 - add r1, #0x2c - ldrb r1, [r1] - bl ov114_0225C7A4 - cmp r0, #1 - bne _02261442 - ldr r7, _022614A0 ; =0x0007080F - b _02261444 -_02261442: - ldr r7, _022614A4 ; =0x0001020F -_02261444: - mov r0, #0 - add r1, r6, #0 - add r2, r0, #0 - bl sub_02002D7C - lsr r1, r0, #0x1f - add r1, r0, r1 - asr r2, r1, #1 - mov r1, #0x28 - sub r3, r1, r2 - mov r1, #1 - tst r0, r1 - beq _02261460 - sub r3, r3, #1 -_02261460: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r5, #0] - add r2, r6, #0 - add r0, #0x30 - ldrb r0, [r0] - lsl r1, r0, #2 - ldr r0, _022614A8 ; =0x02266968 - add r1, r0, r1 - ldr r0, [sp, #0x14] - ldrb r0, [r0, r1] - lsl r1, r0, #4 - ldr r0, [sp, #0x18] - add r0, r0, r1 - mov r1, #0 - bl sub_0201D78C - add r0, r6, #0 - bl sub_020181C4 -_0226148E: - add r4, r4, #1 -_02261490: - ldr r0, [r5, #0] - add r0, #0x30 - ldrb r0, [r0] - cmp r4, r0 - blt _02261404 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - nop -_022614A0: .word 0x0007080F -_022614A4: .word 0x0001020F -_022614A8: .word 0x02266968 - thumb_func_end ov117_022613EC - - thumb_func_start ov117_022614AC -ov117_022614AC: ; 0x022614AC - push {r4, lr} - sub sp, #0x10 - add r4, r0, #0 - cmp r1, #1 - bne _02261504 - mov r0, #0xd - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r0, #0x11 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - mov r3, #0 - bl sub_02019CB8 - mov r0, #0 - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r3, #0x11 - str r3, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - bl sub_02019CB8 - mov r0, #0xd - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r0, #0x11 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - mov r3, #0x14 - bl sub_02019CB8 - b _02261562 -_02261504: - ldr r0, [r4, #0] - add r0, #0x30 - ldrb r0, [r0] - cmp r0, #2 - beq _02261514 - cmp r0, #3 - beq _0226154A - b _02261562 -_02261514: - mov r0, #0xd - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r0, #0x11 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - mov r3, #0 - bl sub_02019CB8 - mov r0, #0xd - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r0, #0x11 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - mov r3, #0x14 - bl sub_02019CB8 - b _02261562 -_0226154A: - mov r0, #0 - str r0, [sp] - mov r0, #0xc - str r0, [sp, #4] - mov r1, #4 - str r1, [sp, #8] - mov r3, #0x11 - str r3, [sp, #0xc] - ldr r0, [r4, #0x2c] - ldr r2, _02261570 ; =0x000003FF - bl sub_02019CB8 -_02261562: - ldr r0, [r4, #0x2c] - mov r1, #4 - bl sub_0201C3C0 - add sp, #0x10 - pop {r4, pc} - nop -_02261570: .word 0x000003FF - thumb_func_end ov117_022614AC - - thumb_func_start ov117_02261574 -ov117_02261574: ; 0x02261574 - push {r4, lr} - sub sp, #8 - add r4, r0, #0 - bl sub_02014000 - mov r1, #0x12 - mov r0, #0x6e - lsl r1, r1, #0xa - bl sub_02018144 - add r2, r0, #0 - mov r0, #1 - str r0, [sp] - mov r0, #0x6e - str r0, [sp, #4] - mov r3, #0x12 - ldr r0, _022615D8 ; =ov117_02261644 - ldr r1, _022615DC ; =ov117_02261668 - lsl r3, r3, #0xa - bl sub_02014014 - add r1, r4, #0 - add r1, #0xa4 - str r0, [r1, #0] - add r0, r4, #0 - add r0, #0xa4 - ldr r0, [r0, #0] - bl sub_02014784 - add r2, r0, #0 - mov r0, #1 - mov r1, #0xe1 - lsl r0, r0, #0xc - lsl r1, r1, #0xe - bl sub_020206BC - mov r0, #0xbe - mov r1, #0 - mov r2, #0x6e - bl sub_020144C4 - add r4, #0xa4 - add r1, r0, #0 - ldr r0, [r4, #0] - mov r2, #0xa - mov r3, #1 - bl sub_020144CC - add sp, #8 - pop {r4, pc} - ; .align 2, 0 -_022615D8: .word ov117_02261644 -_022615DC: .word ov117_02261668 - thumb_func_end ov117_02261574 - - thumb_func_start ov117_022615E0 -ov117_022615E0: ; 0x022615E0 - push {r3, r4, r5, lr} - add r4, r0, #0 - add r0, #0xa4 - ldr r0, [r0, #0] - bl sub_02014730 - add r4, #0xa4 - add r5, r0, #0 - ldr r0, [r4, #0] - bl sub_0201411C - add r0, r5, #0 - bl sub_020181C4 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_022615E0 - - thumb_func_start ov117_02261600 -ov117_02261600: ; 0x02261600 - push {r3, lr} - add r3, r0, #0 - cmp r1, #0 - beq _02261612 - cmp r1, #1 - beq _02261620 - cmp r1, #2 - beq _0226162E - b _0226163C -_02261612: - add r0, #0xa4 - mov r1, #0 - ldr r0, [r0, #0] - add r2, r1, #0 - bl sub_020146F4 - pop {r3, pc} -_02261620: - add r0, #0xa4 - ldr r0, [r0, #0] - mov r1, #1 - mov r2, #0 - bl sub_020146F4 - pop {r3, pc} -_0226162E: - add r0, #0xa4 - ldr r0, [r0, #0] - mov r1, #2 - mov r2, #0 - bl sub_020146F4 - pop {r3, pc} -_0226163C: - bl GF_AssertFail - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov117_02261600 - - thumb_func_start ov117_02261644 -ov117_02261644: ; 0x02261644 - push {r4, lr} - ldr r3, _02261664 ; =0x02100DEC - mov r2, #0 - ldr r3, [r3, #0] - blx r3 - add r4, r0, #0 - bne _02261656 - bl GF_AssertFail -_02261656: - add r0, r4, #0 - bl sub_020145B4 - lsl r0, r4, #0x10 - lsr r0, r0, #0xd - pop {r4, pc} - nop -_02261664: .word 0x02100DEC - thumb_func_end ov117_02261644 - - thumb_func_start ov117_02261668 -ov117_02261668: ; 0x02261668 - push {r4, lr} - ldr r3, _02261688 ; =0x02100DF4 - mov r2, #1 - ldr r3, [r3, #0] - blx r3 - add r4, r0, #0 - bne _0226167A - bl GF_AssertFail -_0226167A: - add r0, r4, #0 - bl sub_020145F4 - lsl r0, r4, #0x10 - lsr r0, r0, #0xd - pop {r4, pc} - nop -_02261688: .word 0x02100DF4 - thumb_func_end ov117_02261668 - - thumb_func_start ov117_0226168C -ov117_0226168C: ; 0x0226168C - push {r4, r5, r6, r7, lr} - sub sp, #0x3c - add r5, r0, #0 - str r1, [sp] - mov r0, #0x1b - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, _022618C4 ; =0x00002713 - str r1, [sp, #0x2c] - str r0, [sp, #0x14] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - ldr r2, [r5, #0x24] - ldr r3, [r5, #0x28] - mov r1, #2 - bl sub_0200CDC4 - add r0, r5, #0 - add r0, #0x80 - ldr r0, [r0, #0] - mov r1, #2 - bl sub_0200B1EC - add r6, r0, #0 - mov r0, #0 - add r1, r6, #0 - add r2, r0, #0 - bl sub_02002D7C - mov r1, #0x1e - sub r0, r1, r0 - lsr r0, r0, #1 - add r4, r0, #6 - add r2, r5, #0 - ldr r3, _022618C8 ; =0x0000169C - str r6, [sp] - mov r0, #0 - ldr r1, _022618CC ; =0x000E0F00 - str r0, [sp, #4] - str r1, [sp, #8] - ldr r1, _022618C4 ; =0x00002713 - str r0, [sp, #0xc] - str r1, [sp, #0x10] - add r1, r4, #0 - add r1, #0x24 - str r1, [sp, #0x14] - mov r1, #0xa8 - str r1, [sp, #0x18] - str r0, [sp, #0x1c] - mov r0, #1 - str r0, [sp, #0x20] - mov r0, #0xc - str r0, [sp, #0x24] - mov r0, #2 - str r0, [sp, #0x28] - add r2, #0x90 - ldr r0, [r5, #0x2c] - ldr r1, [r5, #0x28] - ldr r2, [r2, #0] - add r3, r5, r3 - bl ov117_02265DB8 - add r0, r6, #0 - bl sub_020237BC - add r0, r5, #0 - add r0, #0x80 - ldr r0, [r0, #0] - mov r1, #0 - bl sub_0200B1EC - str r0, [sp, #0x30] - add r0, r5, #0 - add r0, #0x80 - ldr r0, [r0, #0] - mov r1, #1 - bl sub_0200B1EC - str r0, [sp, #0x38] - mov r0, #0 - str r0, [sp, #0x34] - ldr r0, _022618D0 ; =0x000015AC - add r7, r5, r0 - add r0, #0x14 - add r6, r5, r0 -_02261740: - ldr r0, [sp, #0x30] - add r2, r5, #0 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _022618CC ; =0x000E0F00 - add r2, #0x90 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, _022618C4 ; =0x00002713 - add r3, r7, #0 - str r0, [sp, #0x10] - str r4, [sp, #0x14] - mov r0, #0xa8 - str r0, [sp, #0x18] - mov r0, #0 - str r0, [sp, #0x1c] - mov r0, #3 - str r0, [sp, #0x20] - mov r0, #0xc - str r0, [sp, #0x24] - mov r0, #0xa - str r0, [sp, #0x28] - ldr r0, [r5, #0x2c] - ldr r1, [r5, #0x28] - ldr r2, [r2, #0] - bl ov117_02265DB8 - ldr r0, [sp, #0x38] - add r2, r5, #0 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _022618CC ; =0x000E0F00 - add r2, #0x90 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, _022618C4 ; =0x00002713 - add r3, r6, #0 - str r0, [sp, #0x10] - str r4, [sp, #0x14] - mov r0, #0xa8 - str r0, [sp, #0x18] - mov r0, #0 - str r0, [sp, #0x1c] - mov r0, #3 - str r0, [sp, #0x20] - mov r0, #0xc - str r0, [sp, #0x24] - mov r0, #0xa - str r0, [sp, #0x28] - ldr r0, [r5, #0x2c] - ldr r1, [r5, #0x28] - ldr r2, [r2, #0] - bl ov117_02265DB8 - ldr r0, [sp, #0x34] - add r4, r4, #6 - add r0, r0, #1 - add r7, #0x28 - add r6, #0x28 - str r0, [sp, #0x34] - cmp r0, #6 - blt _02261740 - ldr r0, [sp, #0x30] - bl sub_020237BC - ldr r0, [sp, #0x38] - bl sub_020237BC - ldr r0, _022618D4 ; =0x000015A8 - add r0, r5, r0 - bl ov117_02265EC8 - add r0, r5, #0 - bl ov117_02266150 - ldr r0, [sp, #0x2c] - mov r1, #2 - str r0, [sp] - mov r0, #0x1b - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, _022618D8 ; =0x00002714 - str r0, [sp, #0x14] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - ldr r2, [r5, #0x24] - ldr r3, [r5, #0x28] - bl sub_0200CDC4 - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, _022618DC ; =0x00002712 - ldr r2, [sp, #0x2c] - str r0, [sp, #8] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x18 - bl sub_0200CC3C - mov r0, #0 - str r0, [sp] - ldr r0, _022618DC ; =0x00002712 - ldr r2, [sp, #0x2c] - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x1a - bl sub_0200CE24 - mov r0, #0 - str r0, [sp] - ldr r0, _022618DC ; =0x00002712 - ldr r2, [sp, #0x2c] - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x19 - bl sub_0200CE54 - add r0, r5, #0 - bl ov117_02266130 - ldr r1, _022618D4 ; =0x000015A8 - str r0, [r5, r1] - mov r0, #0xab - str r0, [sp] - mov r0, #0x14 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldr r0, _022618DC ; =0x00002712 - mov r1, #2 - str r0, [sp, #0x14] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - ldr r2, [r5, #0x24] - ldr r3, [r5, #0x28] - bl sub_0200CD7C - mov r0, #0 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, _022618E0 ; =0x00002711 - mov r2, #0xab - str r0, [sp, #8] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x15 - bl sub_0200CBDC - mov r0, #0 - str r0, [sp] - ldr r0, _022618E0 ; =0x00002711 - mov r2, #0xab - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x16 - bl sub_0200CE0C - mov r0, #0 - str r0, [sp] - ldr r0, _022618E0 ; =0x00002711 - mov r2, #0xab - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x17 - bl sub_0200CE3C - add r0, r5, #0 - bl ov117_02266244 - ldr r1, _022618E4 ; =0x0000174C - str r0, [r5, r1] - add sp, #0x3c - pop {r4, r5, r6, r7, pc} - nop -_022618C4: .word 0x00002713 -_022618C8: .word 0x0000169C -_022618CC: .word 0x000E0F00 -_022618D0: .word 0x000015AC -_022618D4: .word 0x000015A8 -_022618D8: .word 0x00002714 -_022618DC: .word 0x00002712 -_022618E0: .word 0x00002711 -_022618E4: .word 0x0000174C - thumb_func_end ov117_0226168C - - thumb_func_start ov117_022618E8 -ov117_022618E8: ; 0x022618E8 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - ldr r0, _02261930 ; =0x000015AC - mov r6, #0 - add r4, r7, r0 - add r0, #0x14 - add r5, r7, r0 -_022618F6: - add r0, r4, #0 - bl ov117_02265EB0 - add r0, r5, #0 - bl ov117_02265EB0 - add r6, r6, #1 - add r4, #0x28 - add r5, #0x28 - cmp r6, #6 - blt _022618F6 - ldr r0, _02261934 ; =0x0000169C - add r0, r7, r0 - bl ov117_02265EB0 - add r0, r7, #0 - bl ov117_02266210 - ldr r1, _02261938 ; =0x000015A8 - add r0, r7, #0 - ldr r1, [r7, r1] - bl ov117_02266238 - ldr r1, _0226193C ; =0x0000174C - add r0, r7, #0 - ldr r1, [r7, r1] - bl ov117_02266268 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02261930: .word 0x000015AC -_02261934: .word 0x0000169C -_02261938: .word 0x000015A8 -_0226193C: .word 0x0000174C - thumb_func_end ov117_022618E8 - - thumb_func_start ov117_02261940 -ov117_02261940: ; 0x02261940 - push {r3, r4, r5, lr} - sub sp, #0x18 - add r4, r1, #0 - add r5, r0, #0 - str r4, [sp] - mov r0, #0x17 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r0, #9 - str r0, [sp, #0xc] - mov r0, #2 - str r0, [sp, #0x10] - ldr r0, _022619E4 ; =0x00002716 - mov r1, #3 - str r0, [sp, #0x14] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - ldr r2, [r5, #0x24] - ldr r3, [r5, #0x28] - bl sub_0200CDC4 - mov r0, #0 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r0, _022619E8 ; =0x00002714 - add r2, r4, #0 - str r0, [sp, #8] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x14 - bl sub_0200CC3C - mov r0, #0 - str r0, [sp] - ldr r0, _022619E8 ; =0x00002714 - add r2, r4, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x16 - bl sub_0200CE24 - mov r0, #0 - str r0, [sp] - ldr r0, _022619E8 ; =0x00002714 - add r2, r4, #0 - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x15 - bl sub_0200CE54 - add r0, r5, #0 - bl ov117_022648E0 - ldr r1, _022619EC ; =0x00001458 - add r0, r5, #0 - add r1, r5, r1 - bl ov117_02264FB0 - ldr r1, _022619F0 ; =0x00001468 - add r0, r5, #0 - add r1, r5, r1 - bl ov117_02265064 - ldr r1, _022619F4 ; =0x00001560 - add r0, r5, #0 - add r1, r5, r1 - bl ov117_02265ABC - add r0, r5, #0 - bl ov117_02264BF8 - add r0, r5, #0 - bl ov117_02264D1C - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_022619E4: .word 0x00002716 -_022619E8: .word 0x00002714 -_022619EC: .word 0x00001458 -_022619F0: .word 0x00001468 -_022619F4: .word 0x00001560 - thumb_func_end ov117_02261940 - - thumb_func_start ov117_022619F8 -ov117_022619F8: ; 0x022619F8 - push {r4, lr} - add r4, r0, #0 - bl ov117_02264914 - ldr r1, _02261A20 ; =0x00001458 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_0226504C - ldr r1, _02261A24 ; =0x00001468 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_022651E0 - ldr r1, _02261A28 ; =0x00001560 - add r0, r4, #0 - add r1, r4, r1 - bl ov117_02265B3C - pop {r4, pc} - ; .align 2, 0 -_02261A20: .word 0x00001458 -_02261A24: .word 0x00001468 -_02261A28: .word 0x00001560 - thumb_func_end ov117_022619F8 - - thumb_func_start ov117_02261A2C -ov117_02261A2C: ; 0x02261A2C - push {r3, r4, r5, lr} - sub sp, #0x10 - add r5, r0, #0 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x8c - add r4, r1, #0 - ldr r0, [r0, #0] - mov r1, #0xad - mov r2, #4 - mov r3, #0x6e - bl sub_02003050 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #2 - mov r3, #3 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - mov r1, #3 - ldr r2, [r5, #0x2c] - add r0, r4, #0 - add r3, r1, #0 - bl sub_0200710C - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r3, #2 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #1 - mov r3, #2 - bl sub_0200710C - mov r1, #0 - str r1, [sp] - mov r0, #1 - add r5, #0x8c - str r0, [sp, #4] - ldr r0, [r5, #0] - mov r2, #2 - add r3, r1, #0 - bl sub_020038B0 - add sp, #0x10 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_02261A2C - - thumb_func_start ov117_02261AC4 -ov117_02261AC4: ; 0x02261AC4 - bx lr - ; .align 2, 0 - thumb_func_end ov117_02261AC4 - - thumb_func_start ov117_02261AC8 -ov117_02261AC8: ; 0x02261AC8 - push {r3, r4, r5, lr} - sub sp, #0x10 - add r5, r0, #0 - mov r0, #1 - str r0, [sp] - mov r0, #0xa0 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x8c - add r4, r1, #0 - ldr r0, [r0, #0] - mov r1, #0xad - mov r2, #5 - mov r3, #0x6e - bl sub_02003050 - mov r0, #1 - str r0, [sp] - mov r0, #5 - lsl r0, r0, #6 - str r0, [sp, #4] - mov r0, #0x60 - str r0, [sp, #8] - str r0, [sp, #0xc] - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #0xad - mov r2, #6 - mov r3, #0x6e - bl sub_02002FEC - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0xd - mov r3, #6 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0xe - mov r3, #6 - bl sub_0200710C - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0x12 - mov r3, #5 - bl sub_020070E8 - ldr r0, [r5, #0] - add r0, #0x30 - ldrb r0, [r0] - cmp r0, #2 - beq _02261B64 - cmp r0, #3 - beq _02261B7E - b _02261B98 -_02261B64: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0xf - mov r3, #5 - bl sub_0200710C - b _02261BB0 -_02261B7E: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0x10 - mov r3, #5 - bl sub_0200710C - b _02261BB0 -_02261B98: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0x11 - mov r3, #5 - bl sub_0200710C -_02261BB0: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0x12 - mov r3, #4 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0x6e - str r0, [sp, #0xc] - ldr r2, [r5, #0x2c] - add r0, r4, #0 - mov r1, #0x13 - mov r3, #4 - bl sub_0200710C - add r0, r5, #0 - bl ov117_02264AF0 - add r0, r5, #0 - bl ov117_02264AB0 - mov r0, #0 - str r0, [sp] - mov r0, #0x6e - str r0, [sp, #4] - mov r2, #0x35 - ldr r0, [r5, #0x2c] - mov r1, #4 - lsl r2, r2, #4 - mov r3, #6 - bl sub_0200DAA4 - add r0, r5, #0 - add r0, #0x8c - ldr r0, [r0, #0] - mov r1, #1 - mov r2, #0x60 - mov r3, #0x20 - bl sub_02003070 - mov r3, #0 - str r3, [sp] - mov r1, #1 - str r1, [sp, #4] - add r5, #0x8c - ldr r0, [r5, #0] - mov r2, #2 - bl sub_020038B0 - add sp, #0x10 - pop {r3, r4, r5, pc} - thumb_func_end ov117_02261AC8 - - thumb_func_start ov117_02261C28 -ov117_02261C28: ; 0x02261C28 - bx lr - ; .align 2, 0 - thumb_func_end ov117_02261C28 - - thumb_func_start ov117_02261C2C -ov117_02261C2C: ; 0x02261C2C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - str r0, [sp, #8] - str r0, [sp, #0x10] - add r0, #0xd8 - str r1, [sp, #0xc] - str r0, [sp, #0x10] - mov r7, #0 - bl sub_0203608C - add r1, r0, #0 - ldr r0, [sp, #8] - bl ov117_0226235C - add r4, r0, #0 - mov r1, #0x14 - mul r4, r1 - ldr r2, _02261DB4 ; =0x022669F0 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r2, [r2, r4] - mov r3, #0x6e - bl sub_020170D8 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x10] - add r0, #0x10 - bl sub_02017258 - ldr r0, [sp, #0x10] - add r1, r7, #0 - ldr r2, _02261DB8 ; =0xFFFE7000 - add r0, #0x10 - add r3, r1, #0 - bl sub_02017350 - ldr r0, [sp, #0x10] - mov r1, #1 - lsl r1, r1, #0xc - add r0, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201736C - ldr r0, [sp, #0x10] - mov r1, #1 - add r0, #0x10 - bl sub_02017348 - ldr r2, _02261DBC ; =0x022669F4 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r2, [r2, r4] - add r0, #0x88 - mov r3, #0x6e - bl sub_020170D8 - ldr r2, _02261DC0 ; =0x022669F8 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r2, [r2, r4] - add r0, #0x98 - mov r3, #0x6e - bl sub_020170D8 - ldr r2, _02261DC4 ; =0x022669FC - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r2, [r2, r4] - add r0, #0xa8 - mov r3, #0x6e - bl sub_020170D8 - ldr r2, _02261DC8 ; =0x02266A00 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r2, [r2, r4] - add r0, #0xb8 - mov r3, #0x6e - bl sub_020170D8 - add r0, r7, #0 - str r0, [sp, #0x1c] - mov r1, #0x51 - ldr r0, [sp, #0x10] - lsl r1, r1, #2 - add r0, r0, r1 - str r0, [sp, #0x14] - ldr r0, [sp, #8] - str r0, [sp, #0x24] - add r0, #0xa8 - str r0, [sp, #0x24] - ldr r0, [sp, #0x10] - str r0, [sp, #0x20] - add r0, #0x88 - str r0, [sp, #0x20] -_02261CEC: - mov r0, #0 - ldr r4, [sp, #0x20] - ldr r5, [sp, #0x14] - ldr r6, [sp, #0x10] - str r0, [sp, #0x18] -_02261CF6: - cmp r7, #0 - bne _02261D18 - mov r0, #0x6e - str r0, [sp] - ldr r0, [sp, #0x24] - ldr r3, [sp, #0x18] - str r0, [sp, #4] - ldr r2, [sp, #0xc] - add r0, r5, #0 - add r1, r4, #0 - add r3, #0x23 - bl sub_02017164 - mov r0, #0x51 - lsl r0, r0, #2 - ldr r7, [r6, r0] - b _02261D24 -_02261D18: - ldr r3, [sp, #0x24] - add r0, r5, #0 - add r1, r4, #0 - add r2, r7, #0 - bl sub_02017190 -_02261D24: - add r0, r5, #0 - mov r1, #0 - bl sub_02017240 - ldr r0, [sp, #0x18] - add r4, #0x10 - add r0, r0, #1 - add r5, #0x90 - add r6, #0x90 - str r0, [sp, #0x18] - cmp r0, #4 - blt _02261CF6 - mov r0, #9 - ldr r1, [sp, #0x14] - lsl r0, r0, #6 - add r0, r1, r0 - str r0, [sp, #0x14] - mov r0, #9 - ldr r1, [sp, #0x10] - lsl r0, r0, #6 - add r0, r1, r0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] - cmp r0, #8 - blt _02261CEC - ldr r1, [sp, #8] - ldr r0, _02261DCC ; =0x000013A0 - mov r2, #0x1e - add r0, r1, r0 - ldr r1, [sp, #0xc] - mov r3, #0x6e - bl sub_020170D8 - ldr r1, [sp, #8] - ldr r0, _02261DCC ; =0x000013A0 - add r2, r1, #0 - add r0, r1, r0 - ldr r1, _02261DCC ; =0x000013A0 - add r0, #0x10 - add r1, r2, r1 - bl sub_02017258 - ldr r1, [sp, #8] - ldr r0, _02261DCC ; =0x000013A0 - ldr r2, _02261DB8 ; =0xFFFE7000 - add r0, r1, r0 - mov r1, #0 - add r0, #0x10 - add r3, r1, #0 - bl sub_02017350 - ldr r1, [sp, #8] - ldr r0, _02261DCC ; =0x000013A0 - add r0, r1, r0 - mov r1, #1 - lsl r1, r1, #0xc - add r0, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201736C - ldr r1, [sp, #8] - ldr r0, _02261DCC ; =0x000013A0 - add r0, r1, r0 - add r0, #0x10 - mov r1, #1 - bl sub_02017348 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02261DB4: .word 0x022669F0 -_02261DB8: .word 0xFFFE7000 -_02261DBC: .word 0x022669F4 -_02261DC0: .word 0x022669F8 -_02261DC4: .word 0x022669FC -_02261DC8: .word 0x02266A00 -_02261DCC: .word 0x000013A0 - thumb_func_end ov117_02261C2C - - thumb_func_start ov117_02261DD0 -ov117_02261DD0: ; 0x02261DD0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r0, #0 - add r6, #0xd8 - str r0, [sp] - add r0, r6, #0 - bl sub_02017110 - add r5, r6, #0 - mov r4, #0 - add r5, #0x88 -_02261DE6: - add r0, r5, #0 - bl sub_02017110 - add r4, r4, #1 - add r5, #0x10 - cmp r4, #4 - blt _02261DE6 - mov r0, #0 - str r0, [sp, #4] - mov r0, #0x51 - lsl r0, r0, #2 - add r7, r6, r0 - ldr r6, [sp] - add r6, #0xa8 -_02261E02: - mov r4, #0 - add r5, r7, #0 -_02261E06: - add r0, r5, #0 - add r1, r6, #0 - bl sub_020171A0 - add r4, r4, #1 - add r5, #0x90 - cmp r4, #4 - blt _02261E06 - mov r0, #9 - lsl r0, r0, #6 - add r7, r7, r0 - ldr r0, [sp, #4] - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #8 - blt _02261E02 - ldr r1, _02261E34 ; =0x000013A0 - ldr r0, [sp] - add r0, r0, r1 - bl sub_02017110 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02261E34: .word 0x000013A0 - thumb_func_end ov117_02261DD0 - - thumb_func_start ov117_02261E38 -ov117_02261E38: ; 0x02261E38 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - mov r0, #0x4b - lsl r0, r0, #4 - add r5, #0xd8 - cmp r1, r0 - ble _02261E4C - mov r2, #3 - b _02261E5E -_02261E4C: - cmp r1, #2 - ble _02261E54 - mov r2, #2 - b _02261E5E -_02261E54: - cmp r1, #1 - ble _02261E5C - mov r2, #1 - b _02261E5E -_02261E5C: - mov r2, #0 -_02261E5E: - add r0, r5, #0 - str r0, [sp, #4] - add r0, #0x88 - mov r1, #0x90 - str r0, [sp, #4] - lsl r0, r2, #4 - mul r1, r2 - mov r3, #9 - mov ip, r0 - mov r0, #0 - add r1, r5, r1 - lsl r3, r3, #6 -_02261E76: - add r4, r1, #0 - add r4, #0xc8 - ldr r4, [r4, #0] - cmp r4, #0 - bne _02261EF2 - add r4, r2, #0 - mov r1, #0x90 - mul r4, r1 - lsl r1, r0, #3 - add r0, r0, r1 - lsl r7, r0, #6 - add r0, r5, #0 - add r0, #0xcc - add r6, r0, r7 - ldr r1, [sp, #4] - mov r2, ip - add r0, r6, r4 - add r1, r1, r2 - bl sub_02017258 - mov r1, #0 - ldr r2, _02261F00 ; =0xFFFE7000 - add r0, r6, r4 - add r3, r1, #0 - bl sub_02017350 - mov r1, #1 - lsl r1, r1, #0xc - add r0, r6, r4 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201736C - add r0, r6, r4 - mov r1, #1 - bl sub_02017348 - mov r0, #0x51 - lsl r0, r0, #2 - add r0, r5, r0 - add r0, r0, r7 - str r0, [sp] - add r0, r0, r4 - mov r1, #0 - bl sub_02017240 - ldr r1, [sp] - add r0, r6, r4 - add r1, r1, r4 - bl sub_0201727C - add r0, r5, r7 - add r0, r0, r4 - mov r1, #1 - add r0, #0xc8 - str r1, [r0, #0] - ldr r0, _02261F04 ; =0x00000579 - bl sub_02005748 - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02261EF2: - add r0, r0, #1 - add r1, r1, r3 - cmp r0, #8 - blt _02261E76 - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02261F00: .word 0xFFFE7000 -_02261F04: .word 0x00000579 - thumb_func_end ov117_02261E38 - - thumb_func_start ov117_02261F08 -ov117_02261F08: ; 0x02261F08 - push {r4, r5, r6, lr} - add r4, r0, #0 - lsl r0, r1, #3 - add r0, r1, r0 - add r4, #0xd8 - lsl r6, r0, #6 - add r0, r4, #0 - add r0, #0xcc - mov r3, #0x90 - add r5, r2, #0 - mul r5, r3 - add r3, #0xb4 - add r1, r4, r3 - add r0, r0, r6 - add r1, r1, r6 - add r0, r0, r5 - add r1, r1, r5 - bl sub_02017288 - add r0, r4, r6 - add r0, r0, r5 - mov r1, #0 - add r0, #0xc8 - str r1, [r0, #0] - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov117_02261F08 - - thumb_func_start ov117_02261F3C -ov117_02261F3C: ; 0x02261F3C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - mov r1, #0x51 - str r0, [sp] - str r0, [sp, #8] - add r0, #0xd8 - lsl r1, r1, #2 - str r0, [sp, #8] - add r0, r0, r1 - mov r7, #0 - str r0, [sp, #4] -_02261F52: - ldr r4, [sp, #8] - ldr r5, [sp, #4] - mov r6, #0 -_02261F58: - add r0, r4, #0 - add r0, #0xc8 - ldr r0, [r0, #0] - cmp r0, #1 - bne _02261F7A - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #0xc - bl sub_02017204 - cmp r0, #1 - bne _02261F7A - ldr r0, [sp] - add r1, r7, #0 - add r2, r6, #0 - bl ov117_02261F08 -_02261F7A: - add r6, r6, #1 - add r4, #0x90 - add r5, #0x90 - cmp r6, #4 - blt _02261F58 - mov r0, #9 - ldr r1, [sp, #8] - lsl r0, r0, #6 - add r0, r1, r0 - str r0, [sp, #8] - mov r0, #9 - ldr r1, [sp, #4] - lsl r0, r0, #6 - add r0, r1, r0 - add r7, r7, #1 - str r0, [sp, #4] - cmp r7, #8 - blt _02261F52 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov117_02261F3C - - thumb_func_start ov117_02261FA4 -ov117_02261FA4: ; 0x02261FA4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - add r0, #0xd8 - str r0, [sp] - ldr r7, [sp] - mov r0, #0 - str r0, [sp, #4] - add r7, #0xcc -_02261FB6: - ldr r4, [sp] - mov r6, #0 - add r5, r7, #0 -_02261FBC: - add r0, r4, #0 - add r0, #0xc8 - ldr r0, [r0, #0] - cmp r0, #1 - bne _02261FCC - add r0, r5, #0 - bl sub_02017294 -_02261FCC: - add r6, r6, #1 - add r4, #0x90 - add r5, #0x90 - cmp r6, #4 - blt _02261FBC - mov r0, #9 - ldr r1, [sp] - lsl r0, r0, #6 - add r0, r1, r0 - str r0, [sp] - mov r0, #9 - lsl r0, r0, #6 - add r7, r7, r0 - ldr r0, [sp, #4] - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #8 - blt _02261FB6 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov117_02261FA4 - - thumb_func_start ov117_02261FF4 -ov117_02261FF4: ; 0x02261FF4 - push {r4, lr} - add r4, r0, #0 - bl sub_0203608C - ldr r1, [r4, #4] - cmp r1, r0 - bne _02262006 - mov r0, #1 - pop {r4, pc} -_02262006: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02261FF4 - - thumb_func_start ov117_0226200C -ov117_0226200C: ; 0x0226200C - push {r4, r5, r6, r7} - ldr r5, [r0, #0] - ldr r3, [r0, #0xc] - add r4, r5, #0 - add r4, #0x30 - ldrb r6, [r4] - add r1, r5, #0 - add r1, #0x2c - mov r2, #1 - ldrb r1, [r1] - cmp r6, #1 - ble _0226203C - add r4, r0, #4 -_02262026: - ldr r7, [r4, #0xc] - cmp r3, r7 - bhs _02262034 - add r1, r5, r2 - add r1, #0x2c - ldrb r1, [r1] - add r3, r7, #0 -_02262034: - add r2, r2, #1 - add r4, r4, #4 - cmp r2, r6 - blt _02262026 -_0226203C: - str r1, [r0, #4] - add r0, r1, #0 - pop {r4, r5, r6, r7} - bx lr - thumb_func_end ov117_0226200C - - thumb_func_start ov117_02262044 -ov117_02262044: ; 0x02262044 - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - str r1, [sp] - add r5, r2, #0 - bl ov117_022620E0 - cmp r0, #1 - beq _02262096 - ldr r0, _02262098 ; =0x00002F04 - mov r1, #0x3c - add r6, r4, r0 - ldr r0, [sp] - lsl r7, r0, #2 - ldr r0, [r6, r7] - bl _s32_div_f - add r0, r1, #0 - ldr r1, _0226209C ; =0x00001C1C - mov r3, #0x4b - ldr r2, [sp] - lsl r3, r3, #4 - add r1, r4, r1 - mul r3, r2 - add r2, r1, r3 - mov r1, #0x14 - mul r1, r0 - ldr r0, [r6, r7] - add r4, r2, r1 - add r0, r0, #1 - str r0, [r6, r7] - ldr r0, [r2, r1] - cmp r0, #0 - beq _0226208A - bl GF_AssertFail -_0226208A: - ldmia r5!, {r0, r1} - stmia r4!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - str r0, [r4, #0] -_02262096: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02262098: .word 0x00002F04 -_0226209C: .word 0x00001C1C - thumb_func_end ov117_02262044 - - thumb_func_start ov117_022620A0 -ov117_022620A0: ; 0x022620A0 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - ldr r0, _022620D8 ; =0x00002F14 - lsl r4, r7, #2 - add r5, r6, r0 - ldr r0, [r5, r4] - mov r1, #0x3c - bl _s32_div_f - ldr r0, _022620DC ; =0x00001C1C - add r2, r6, r0 - mov r0, #0x4b - lsl r0, r0, #4 - mul r0, r7 - add r0, r2, r0 - mov r2, #0x14 - mul r2, r1 - ldr r1, [r0, r2] - cmp r1, #0 - beq _022620D4 - ldr r1, [r5, r4] - add r0, r0, r2 - add r1, r1, #1 - str r1, [r5, r4] - pop {r3, r4, r5, r6, r7, pc} -_022620D4: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022620D8: .word 0x00002F14 -_022620DC: .word 0x00001C1C - thumb_func_end ov117_022620A0 - - thumb_func_start ov117_022620E0 -ov117_022620E0: ; 0x022620E0 - push {r3, r4, r5, lr} - add r4, r2, #0 - add r5, r0, #0 - ldr r0, [r4, #0] - cmp r0, #7 - bhi _02262128 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022620F8: ; jump table - .short _02262128 - _022620F8 - 2 ; case 0 - .short _02262128 - _022620F8 - 2 ; case 1 - .short _02262108 - _022620F8 - 2 ; case 2 - .short _02262108 - _022620F8 - 2 ; case 3 - .short _02262108 - _022620F8 - 2 ; case 4 - .short _02262108 - _022620F8 - 2 ; case 5 - .short _02262108 - _022620F8 - 2 ; case 6 - .short _02262108 - _022620F8 - 2 ; case 7 -_02262108: - ldr r0, _0226212C ; =0x00002EF0 - ldr r0, [r5, r0] - cmp r0, #0 - beq _02262114 - bl GF_AssertFail -_02262114: - ldr r0, _0226212C ; =0x00002EF0 - add r2, r5, r0 - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r4, #0] - str r0, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, pc} -_02262128: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0226212C: .word 0x00002EF0 - thumb_func_end ov117_022620E0 - - thumb_func_start ov117_02262130 -ov117_02262130: ; 0x02262130 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - bl ov117_0226217C - cmp r0, #1 - beq _02262170 - ldr r0, _02262174 ; =0x00002F24 - mov r1, #0x3c - ldr r0, [r5, r0] - bl _s32_div_f - ldr r0, _02262178 ; =0x0000176C - add r2, r5, r0 - mov r0, #0x14 - mul r0, r1 - ldr r1, _02262174 ; =0x00002F24 - add r6, r2, r0 - ldr r3, [r5, r1] - add r3, r3, #1 - str r3, [r5, r1] - ldr r0, [r2, r0] - cmp r0, #0 - beq _02262164 - bl GF_AssertFail -_02262164: - ldmia r4!, {r0, r1} - stmia r6!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r6!, {r0, r1} - ldr r0, [r4, #0] - str r0, [r6, #0] -_02262170: - pop {r4, r5, r6, pc} - nop -_02262174: .word 0x00002F24 -_02262178: .word 0x0000176C - thumb_func_end ov117_02262130 - - thumb_func_start ov117_0226217C -ov117_0226217C: ; 0x0226217C - push {r4, lr} - add r2, r1, #0 - ldr r1, [r2, #0] - cmp r1, #7 - bhi _022621CC - add r3, r1, r1 - add r3, pc - ldrh r3, [r3, #6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_02262192: ; jump table - .short _022621CC - _02262192 - 2 ; case 0 - .short _022621CC - _02262192 - 2 ; case 1 - .short _022621A2 - _02262192 - 2 ; case 2 - .short _022621A2 - _02262192 - 2 ; case 3 - .short _022621A2 - _02262192 - 2 ; case 4 - .short _022621A2 - _02262192 - 2 ; case 5 - .short _022621A2 - _02262192 - 2 ; case 6 - .short _022621A2 - _02262192 - 2 ; case 7 -_022621A2: - ldr r3, _022621D0 ; =0x00002EDC - ldr r4, [r0, r3] - cmp r4, #0 - bne _022621BC - add r3, r0, r3 - ldmia r2!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r2!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r2, #0] - str r0, [r3, #0] - mov r0, #1 - pop {r4, pc} -_022621BC: - cmp r1, r4 - bne _022621C4 - mov r0, #1 - pop {r4, pc} -_022621C4: - bl GF_AssertFail - mov r0, #0 - pop {r4, pc} -_022621CC: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_022621D0: .word 0x00002EDC - thumb_func_end ov117_0226217C - - thumb_func_start ov117_022621D4 -ov117_022621D4: ; 0x022621D4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _022621F8 ; =0x00002F28 - mov r1, #0x3c - ldr r0, [r4, r0] - bl _s32_div_f - ldr r0, _022621FC ; =0x0000176C - add r2, r1, #0 - add r3, r4, r0 - mov r0, #0x14 - mul r2, r0 - ldr r1, [r3, r2] - add r0, r3, r2 - cmp r1, #0 - bne _022621F6 - mov r0, #0 -_022621F6: - pop {r4, pc} - ; .align 2, 0 -_022621F8: .word 0x00002F28 -_022621FC: .word 0x0000176C - thumb_func_end ov117_022621D4 - - thumb_func_start ov117_02262200 -ov117_02262200: ; 0x02262200 - push {r3, r4, r5, lr} - ldr r2, _02262264 ; =0x00002FC4 - add r5, r0, #0 - ldr r1, [r5, r2] - cmp r1, #0 - ble _02262214 - sub r0, r1, #1 - str r0, [r5, r2] - mov r0, #0 - pop {r3, r4, r5, pc} -_02262214: - add r1, r2, #0 - sub r1, #0xe8 - ldr r1, [r5, r1] - cmp r1, #0 - beq _02262238 - sub r2, #0xe8 - add r1, r5, r2 - bl ov117_02266624 - cmp r0, #1 - bne _02262234 - ldr r0, _02262268 ; =0x00002EDC - mov r1, #0 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_02262234: - mov r0, #0 - pop {r3, r4, r5, pc} -_02262238: - bl ov117_022621D4 - add r4, r0, #0 - bne _02262244 - mov r0, #0 - pop {r3, r4, r5, pc} -_02262244: - add r0, r5, #0 - add r1, r4, #0 - bl ov117_02266624 - cmp r0, #1 - bne _02262260 - mov r0, #0 - str r0, [r4, #0] - ldr r0, _0226226C ; =0x00002F28 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_02262260: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_02262264: .word 0x00002FC4 -_02262268: .word 0x00002EDC -_0226226C: .word 0x00002F28 - thumb_func_end ov117_02262200 - - thumb_func_start ov117_02262270 -ov117_02262270: ; 0x02262270 - push {r3, r4, r5, lr} - ldr r1, _022622B4 ; =0x00002EF0 - add r5, r0, #0 - add r1, r5, r1 - bl ov117_022666C0 - cmp r0, #1 - beq _022622B2 - ldr r0, [r5, #0] - mov r4, #0 - add r0, #0x30 - ldrb r0, [r0] - cmp r0, #0 - ble _022622B2 -_0226228C: - ldr r1, [r5, #0] - add r0, r5, #0 - add r1, r1, r4 - add r1, #0x2c - ldrb r1, [r1] - bl ov117_022620A0 - add r1, r0, #0 - beq _022622A6 - add r0, r5, #0 - bl ov117_022666C0 - b _0226228C -_022622A6: - ldr r0, [r5, #0] - add r4, r4, #1 - add r0, #0x30 - ldrb r0, [r0] - cmp r4, r0 - blt _0226228C -_022622B2: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022622B4: .word 0x00002EF0 - thumb_func_end ov117_02262270 - - thumb_func_start ov117_022622B8 -ov117_022622B8: ; 0x022622B8 - ldr r1, _022622C0 ; =0x00002FC8 - ldr r0, [r0, r1] - bx lr - nop -_022622C0: .word 0x00002FC8 - thumb_func_end ov117_022622B8 - - thumb_func_start ov117_022622C4 -ov117_022622C4: ; 0x022622C4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - add r7, r1, #0 - bl sub_0203608C - mov r6, #0xff - add r4, r6, #0 - mov r1, #0 - b _022622F6 -_022622D8: - ldr r2, [r5, #0] - add r2, r2, r1 - add r2, #0x2c - ldrb r2, [r2] - cmp r0, r2 - bne _022622E6 - add r4, r1, #0 -_022622E6: - ldr r2, [r5, #0] - add r2, r2, r1 - add r2, #0x2c - ldrb r2, [r2] - cmp r7, r2 - bne _022622F4 - add r6, r1, #0 -_022622F4: - add r1, r1, #1 -_022622F6: - ldr r2, [r5, #0] - add r2, #0x30 - ldrb r2, [r2] - cmp r1, r2 - blt _022622D8 - mov r0, #0 - cmp r6, #0xff - beq _0226230C - cmp r4, #0xff - beq _0226230C - mov r0, #1 -_0226230C: - cmp r0, #0 - bne _02262314 - bl GF_AssertFail -_02262314: - mov r1, #0 - ldr r0, _02262358 ; =0x02266954 - b _02262340 -_0226231A: - ldr r2, [r5, #0] - add r2, #0x30 - ldrb r2, [r2] - lsl r2, r2, #2 - add r2, r0, r2 - ldrb r2, [r1, r2] - cmp r4, r2 - bne _0226232C - str r1, [sp] -_0226232C: - ldr r2, [r5, #0] - add r2, #0x30 - ldrb r2, [r2] - lsl r2, r2, #2 - add r2, r0, r2 - ldrb r2, [r1, r2] - cmp r6, r2 - bne _0226233E - str r1, [sp, #4] -_0226233E: - add r1, r1, #1 -_02262340: - ldr r2, [r5, #0] - add r2, #0x30 - ldrb r2, [r2] - cmp r1, r2 - blt _0226231A - ldr r1, [sp, #4] - ldr r0, [sp] - sub r0, r1, r0 - bpl _02262354 - add r0, r0, r2 -_02262354: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02262358: .word 0x02266954 - thumb_func_end ov117_022622C4 - - thumb_func_start ov117_0226235C -ov117_0226235C: ; 0x0226235C - push {r4, lr} - ldr r3, [r0, #0] - mov r2, #0 - add r0, r3, #0 - add r0, #0x30 - ldrb r4, [r0] - cmp r4, #0 - ble _02262382 -_0226236C: - add r0, r3, #0 - add r0, #0x2c - ldrb r0, [r0] - cmp r1, r0 - bne _0226237A - add r0, r2, #0 - pop {r4, pc} -_0226237A: - add r2, r2, #1 - add r3, r3, #1 - cmp r2, r4 - blt _0226236C -_02262382: - bl GF_AssertFail - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_0226235C - - thumb_func_start ov117_0226238C -ov117_0226238C: ; 0x0226238C - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _022623AC ; =0x00002FD4 - add r4, r1, #0 - ldr r0, [r5, r0] - add r6, r2, #0 - cmp r0, #0 - beq _022623A0 - bl GF_AssertFail -_022623A0: - ldr r0, _022623AC ; =0x00002FD4 - str r4, [r5, r0] - add r0, r0, #4 - str r6, [r5, r0] - pop {r4, r5, r6, pc} - nop -_022623AC: .word 0x00002FD4 - thumb_func_end ov117_0226238C - - thumb_func_start ov117_022623B0 -ov117_022623B0: ; 0x022623B0 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02262438 ; =0x00002FD4 - mov r1, #0 - ldr r2, [r4, r0] - cmp r2, #6 - bhi _02262408 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_022623CA: ; jump table - .short _02262408 - _022623CA - 2 ; case 0 - .short _022623D8 - _022623CA - 2 ; case 1 - .short _022623DC - _022623CA - 2 ; case 2 - .short _022623E0 - _022623CA - 2 ; case 3 - .short _022623E4 - _022623CA - 2 ; case 4 - .short _022623F0 - _022623CA - 2 ; case 5 - .short _022623FC - _022623CA - 2 ; case 6 -_022623D8: - mov r1, #1 - b _0226240C -_022623DC: - mov r1, #1 - b _0226240C -_022623E0: - mov r1, #1 - b _0226240C -_022623E4: - sub r0, #8 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0226240C - mov r1, #1 - b _0226240C -_022623F0: - ldr r0, _0226243C ; =0x0000339C - ldr r0, [r4, r0] - cmp r0, #0 - bne _0226240C - mov r1, #1 - b _0226240C -_022623FC: - ldr r0, _02262440 ; =0x00001768 - ldr r0, [r4, r0] - cmp r0, #1 - bne _0226240C - mov r1, #1 - b _0226240C -_02262408: - mov r0, #0 - pop {r4, pc} -_0226240C: - cmp r1, #1 - bne _02262434 - ldr r0, _02262444 ; =0x00002FD8 - ldr r0, [r4, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_020364F0 - add r0, r4, #0 - bl ov117_02261FF4 - cmp r0, #1 - bne _0226242A - mov r1, #7 - b _0226242C -_0226242A: - mov r1, #0 -_0226242C: - ldr r0, _02262438 ; =0x00002FD4 - str r1, [r4, r0] - mov r0, #1 - pop {r4, pc} -_02262434: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_02262438: .word 0x00002FD4 -_0226243C: .word 0x0000339C -_02262440: .word 0x00001768 -_02262444: .word 0x00002FD8 - thumb_func_end ov117_022623B0 - - thumb_func_start ov117_02262448 -ov117_02262448: ; 0x02262448 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02262480 ; =0x00002FD4 - ldr r2, [r4, r0] - cmp r2, #7 - beq _02262458 - mov r0, #0 - pop {r4, pc} -_02262458: - add r0, r0, #4 - ldr r0, [r4, r0] - cmp r0, r1 - beq _02262464 - mov r0, #0 - pop {r4, pc} -_02262464: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_02036540 - cmp r0, #1 - bne _0226247A - ldr r0, _02262480 ; =0x00002FD4 - mov r1, #0 - str r1, [r4, r0] - mov r0, #1 - pop {r4, pc} -_0226247A: - mov r0, #0 - pop {r4, pc} - nop -_02262480: .word 0x00002FD4 - thumb_func_end ov117_02262448 - - thumb_func_start ov117_02262484 -ov117_02262484: ; 0x02262484 - push {r4, lr} - add r4, r1, #0 - ldr r1, [r4, #0xc] - cmp r1, #5 - bhi _02262516 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0226249A: ; jump table - .short _022624A6 - _0226249A - 2 ; case 0 - .short _022624B6 - _0226249A - 2 ; case 1 - .short _022624CE - _0226249A - 2 ; case 2 - .short _022624DC - _0226249A - 2 ; case 3 - .short _022624F4 - _0226249A - 2 ; case 4 - .short _02262502 - _0226249A - 2 ; case 5 -_022624A6: - ldrb r2, [r4, #0x18] - mov r1, #1 - bl ov117_0226687C - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02262516 -_022624B6: - ldrb r1, [r4, #0x18] - bl ov117_02262448 - cmp r0, #1 - bne _02262516 - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02262516 -_022624CE: - ldrb r1, [r4, #0x18] - bl ov117_022668B8 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02262516 -_022624DC: - ldrb r1, [r4, #0x18] - bl ov117_02262448 - cmp r0, #1 - bne _02262516 - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02262516 -_022624F4: - ldrb r1, [r4, #0x18] - bl ov117_022667F4 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _02262516 -_02262502: - ldrb r1, [r4, #0x18] - bl ov117_02262448 - cmp r0, #1 - bne _02262516 - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - mov r0, #1 - pop {r4, pc} -_02262516: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02262484 - - thumb_func_start ov117_0226251C -ov117_0226251C: ; 0x0226251C - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r1, _022625E8 ; =0x00002FB4 - ldr r0, _022625EC ; =0x00000516 - ldr r2, [r5, r1] - cmp r2, r0 - bls _0226254C - add r0, r1, #0 - add r0, #0x20 - ldr r0, [r5, r0] - cmp r0, #0 - bne _0226254C - add r0, r1, #0 - sub r0, #0xd8 - ldr r0, [r5, r0] - cmp r0, #0 - bne _0226254C - sub r1, #0xc4 - ldr r0, [r5, r1] - cmp r0, #0 - bne _0226254C - mov r0, #1 - pop {r3, r4, r5, pc} -_0226254C: - ldr r0, [r4, #0xc] - cmp r0, #3 - bhi _022625E4 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0226255E: ; jump table - .short _02262566 - _0226255E - 2 ; case 0 - .short _02262584 - _0226255E - 2 ; case 1 - .short _0226259E - _0226255E - 2 ; case 2 - .short _022625CE - _0226255E - 2 ; case 3 -_02262566: - ldr r0, _022625F0 ; =0x00002FC8 - ldr r0, [r5, r0] - bl ov117_02263CF4 - ldr r1, _022625F0 ; =0x00002FC8 - add r2, r0, #0 - ldrb r3, [r4, #0x18] - ldr r1, [r5, r1] - add r0, r5, #0 - bl ov117_02266784 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _022625E4 -_02262584: - ldrb r1, [r4, #0x18] - add r0, r5, #0 - bl ov117_02262448 - cmp r0, #1 - bne _022625E4 - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _022625E4 -_0226259E: - ldr r0, _022625F4 ; =0x00001434 - ldr r1, [r5, r0] - cmp r1, #0 - beq _022625E4 - sub r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, r1 - blt _022625E4 - ldr r0, _022625F0 ; =0x00002FC8 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - add r0, r5, #0 - bl ov117_022622B8 - add r1, r0, #0 - ldrb r2, [r4, #0x18] - add r0, r5, #0 - bl ov117_02266730 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _022625E4 -_022625CE: - ldrb r1, [r4, #0x18] - add r0, r5, #0 - bl ov117_02262448 - cmp r0, #1 - bne _022625E4 - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - mov r0, #0 - str r0, [r4, #0xc] -_022625E4: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022625E8: .word 0x00002FB4 -_022625EC: .word 0x00000516 -_022625F0: .word 0x00002FC8 -_022625F4: .word 0x00001434 - thumb_func_end ov117_0226251C - - thumb_func_start ov117_022625F8 -ov117_022625F8: ; 0x022625F8 - push {r4, lr} - add r4, r1, #0 - ldr r1, [r4, #0xc] - cmp r1, #3 - bhi _0226265E - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0226260E: ; jump table - .short _02262616 - _0226260E - 2 ; case 0 - .short _02262624 - _0226260E - 2 ; case 1 - .short _0226263C - _0226260E - 2 ; case 2 - .short _02262648 - _0226260E - 2 ; case 3 -_02262616: - ldrb r1, [r4, #0x18] - bl ov117_02266834 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _0226265E -_02262624: - ldrb r1, [r4, #0x18] - bl ov117_02262448 - cmp r0, #1 - bne _0226265E - ldrb r0, [r4, #0x18] - add r0, r0, #1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - b _0226265E -_0226263C: - ldr r0, [r0, #0x20] - cmp r0, #8 - bne _0226265E - add r0, r1, #1 - str r0, [r4, #0xc] - b _0226265E -_02262648: - ldr r1, [r4, #0x14] - add r1, r1, #1 - str r1, [r4, #0x14] - cmp r1, #0x5a - blt _0226265E - bl ov117_02266648 - cmp r0, #1 - bne _0226265E - mov r0, #1 - pop {r4, pc} -_0226265E: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_022625F8 - - thumb_func_start ov117_02262664 -ov117_02262664: ; 0x02262664 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov117_02261FF4 - cmp r0, #0 - bne _02262674 - mov r0, #0 - pop {r3, r4, r5, pc} -_02262674: - add r0, r5, #0 - add r0, #0xb8 - ldr r2, [r0, #0] - add r4, r5, #0 - add r4, #0xb8 - cmp r2, #3 - blo _02262686 - mov r0, #1 - pop {r3, r4, r5, pc} -_02262686: - lsl r3, r2, #2 - ldr r2, _022626A8 ; =0x02266920 - add r0, r5, #0 - ldr r2, [r2, r3] - add r1, r4, #0 - blx r2 - cmp r0, #1 - bne _022626A4 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - mov r0, #0 - str r0, [r4, #0xc] - str r0, [r4, #0x14] - str r0, [r4, #0x10] -_022626A4: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022626A8: .word 0x02266920 - thumb_func_end ov117_02262664 - - thumb_func_start ov117_022626AC -ov117_022626AC: ; 0x022626AC - bx lr - ; .align 2, 0 - thumb_func_end ov117_022626AC - - .rodata - - .global Unk_ov117_02266918 -Unk_ov117_02266918: ; 0x02266918 - .incbin "incbin/overlay117_rodata.bin", 0x20, 0x28 - 0x20 - - .global Unk_ov117_02266920 -Unk_ov117_02266920: ; 0x02266920 - .incbin "incbin/overlay117_rodata.bin", 0x28, 0x34 - 0x28 - - .global Unk_ov117_0226692C -Unk_ov117_0226692C: ; 0x226692C - .incbin "incbin/overlay117_rodata.bin", 0x34, 0x40 - 0x34 - - .global Unk_ov117_02266938 -Unk_ov117_02266938: ; 0x226692C - .incbin "incbin/overlay117_rodata.bin", 0x40, 0x4C - 0x40 - - .global Unk_ov117_02266944 -Unk_ov117_02266944: ; 0x2266944 - .incbin "incbin/overlay117_rodata.bin", 0x4C, 0x5C - 0x4C - - .global Unk_ov117_02266954 -Unk_ov117_02266954: ; 0x02266954 - .incbin "incbin/overlay117_rodata.bin", 0x5C, 0x70 - 0x5C - - .global Unk_ov117_02266968 -Unk_ov117_02266968: ; 0x02266968 - .incbin "incbin/overlay117_rodata.bin", 0x70, 0x84 - 0x70 - - .global Unk_ov117_0226697C -Unk_ov117_0226697C: ; 0x0226697C - .incbin "incbin/overlay117_rodata.bin", 0x84, 0x98 - 0x84 - - .global Unk_ov117_02266990 -Unk_ov117_02266990: ; 0x02266990 - .incbin "incbin/overlay117_rodata.bin", 0x98, 0xB0 - 0x98 - - .global Unk_ov117_022669A8 -Unk_ov117_022669A8: ; 0x022669A8 - .incbin "incbin/overlay117_rodata.bin", 0xB0, 0xD0 - 0xB0 - - .global Unk_ov117_022669C8 -Unk_ov117_022669C8: ; 0x022669C8 - .incbin "incbin/overlay117_rodata.bin", 0xD0, 0xF8 - 0xD0 - - .global Unk_ov117_022669F0 -Unk_ov117_022669F0: ; 0x022669F0 - .incbin "incbin/overlay117_rodata.bin", 0xF8, 0x148 - 0xF8 - - .global Unk_ov117_02266A40 -Unk_ov117_02266A40: ; 0x02266A40 - .incbin "incbin/overlay117_rodata.bin", 0x148, 0x19C - 0x148 - - .global Unk_ov117_02266A94 -Unk_ov117_02266A94: ; 0x02266A94 - .incbin "incbin/overlay117_rodata.bin", 0x19C, 0x20C - 0x19C diff --git a/asm/overlay117/ov117_022626B0_arm.inc b/asm/overlay117/ov117_022626B0_arm.inc deleted file mode 100644 index 8d046e3dd9..0000000000 --- a/asm/overlay117/ov117_022626B0_arm.inc +++ /dev/null @@ -1,29 +0,0 @@ -.public sub_02005748 -.public sub_020057D4 -.public sub_02006C24 -.public sub_02006CA8 -.public sub_0200CC3C -.public sub_0200CDC4 -.public sub_0200CE24 -.public sub_0200CE54 -.public sub_0200CE6C -.public sub_0200D070 -.public sub_0200D080 -.public sub_0200D090 -.public sub_0200D0A0 -.public sub_0200D0F4 -.public sub_0200D324 -.public sub_0200D364 -.public sub_0200D3F4 -.public sub_0200D500 -.public GF_AssertFail -.public NNS_G3dGeBufferOP_N -.public FX_Atan2Idx -.public _ll_sdiv -.public ov117_02262A38 -.public ov117_02263168 -.public ov117_02263448 -.public ov117_022637AC -.public ov117_022637E4 -.public ov117_0226384C -.public ov117_022638AC diff --git a/asm/overlay117/ov117_022626B0_arm.s b/asm/overlay117/ov117_022626B0_arm.s deleted file mode 100644 index 7f724ad06d..0000000000 --- a/asm/overlay117/ov117_022626B0_arm.s +++ /dev/null @@ -1,986 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_022626B0_arm.inc" - - .text - - arm_func_start ov117_02262D98 -ov117_02262D98: ; 0x02262D98 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x80 - add r3, sp, #0 - mov r6, #0 -_02262DA8: - mov r0, r6, lsl #1 - add r5, r0, #1 - smull r1, r0, r5, r5 - umull ip, r2, r5, r1 - mla r2, r5, r0, r2 - mov r4, r5, asr #0x1f - umull lr, r0, r5, ip - mla r2, r4, r1, r2 - mla r0, r5, r2, r0 - mla r0, r4, ip, r0 - mov r1, lr, lsr #0x18 - orr r1, r1, r0, lsl #8 - add r0, r6, #1 - strb r1, [r3, r6] - and r6, r0, #0xff - cmp r6, #0x7f - blo _02262DA8 - mov ip, #0xff - add r1, sp, #0 - mov r0, #0x34 - mov r2, #0x20 - strb ip, [r3, #0x7f] - bl NNS_G3dGeBufferOP_N - add sp, sp, #0x80 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov117_02262D98 - - arm_func_start ov117_02262E0C -ov117_02262E0C: ; 0x02262E0C - stmfd sp!, {r4, lr} - mov lr, #0 - mov r4, lr - mov ip, lr - mov r1, #0x80000 -_02262E20: - add r3, r0, lr, lsl #5 - str ip, [r3, #0xc] - str r4, [r3, #0x10] - str ip, [r3, #0x14] - sub r2, r4, #0x10000 - str r2, [r3, #0x18] - str r1, [r3, #0x1c] - str r4, [r3, #0x20] - str r1, [r3, #0x24] - add lr, lr, #1 - str r2, [r3, #0x28] - cmp lr, #8 - sub r4, r4, #0x10000 - blt _02262E20 - ldmia sp!, {r4, pc} - arm_func_end ov117_02262E0C - - arm_func_start ov117_02262E5C -ov117_02262E5C: ; 0x02262E5C - stmfd sp!, {r4, lr} - mov lr, #0 - mov r4, lr - mov ip, lr - mov r1, #0x80000 -_02262E70: - add r3, r0, lr, lsl #5 - str ip, [r3, #0x10c] - str r4, [r3, #0x110] - str ip, [r3, #0x114] - add r2, r4, #0x10000 - str r2, [r3, #0x118] - str r1, [r3, #0x11c] - str r4, [r3, #0x120] - str r1, [r3, #0x124] - add lr, lr, #1 - mov r4, r2 - str r2, [r3, #0x128] - cmp lr, #8 - blt _02262E70 - ldmia sp!, {r4, pc} - arm_func_end ov117_02262E5C - - arm_func_start ov117_02262EAC -ov117_02262EAC: ; 0x02262EAC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x48 - mov sb, #0 - ldr r6, _02263164 ; =0x1FF00000 - mov sl, r0 - mov r4, sb - add r8, sp, #2 - add r7, sp, #0 - mov fp, sb - mov r5, sb -_02262ED4: - mov r0, #1 - str r0, [sp, #0x44] - mov r0, #0x40 - add r1, sp, #0x44 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0xc] - ldr r1, [r1, #0x10] - mov r2, r8 - mov r3, r7 - bl ov117_02263168 - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x10c] - ldr r1, [r1, #0x110] - mov r0, r0, lsl #8 - mov r1, r1, lsl #8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r0, r1, r0, lsr #16 - str r0, [sp, #0x40] - mov r0, #0x22 - add r1, sp, #0x40 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r0, #0x21 - add r1, sp, #0x3c - mov r2, #1 - str r6, [sp, #0x3c] - bl NNS_G3dGeBufferOP_N - ldrh r3, [sp, #2] - ldrh r2, [sp] - mov r0, #0x23 - add r1, sp, #0x34 - orr r2, r3, r2, lsl #16 - str r2, [sp, #0x34] - mov r2, #2 - str r5, [sp, #0x38] - bl NNS_G3dGeBufferOP_N - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x14] - ldr r1, [r1, #0x18] - mov r2, r8 - mov r3, r7 - bl ov117_02263168 - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x114] - ldr r1, [r1, #0x118] - mov r0, r0, lsl #8 - mov r1, r1, lsl #8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r0, r1, r0, lsr #16 - str r0, [sp, #0x30] - mov r0, #0x22 - add r1, sp, #0x30 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r0, #0x21 - add r1, sp, #0x2c - mov r2, #1 - str r6, [sp, #0x2c] - bl NNS_G3dGeBufferOP_N - ldrh r3, [sp, #2] - ldrh r2, [sp] - mov r0, #0x23 - add r1, sp, #0x24 - orr r2, r3, r2, lsl #16 - str r2, [sp, #0x24] - mov r2, #2 - str r4, [sp, #0x28] - bl NNS_G3dGeBufferOP_N - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x24] - ldr r1, [r1, #0x28] - mov r2, r8 - mov r3, r7 - bl ov117_02263168 - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x124] - ldr r1, [r1, #0x128] - mov r0, r0, lsl #8 - mov r1, r1, lsl #8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r0, r1, r0, lsr #16 - str r0, [sp, #0x20] - mov r0, #0x22 - add r1, sp, #0x20 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r0, #0x21 - add r1, sp, #0x1c - mov r2, #1 - str r6, [sp, #0x1c] - bl NNS_G3dGeBufferOP_N - ldrh r3, [sp, #2] - ldrh r2, [sp] - mov r0, #0x23 - add r1, sp, #0x14 - orr r2, r3, r2, lsl #16 - str r2, [sp, #0x14] - mov r2, #2 - str fp, [sp, #0x18] - bl NNS_G3dGeBufferOP_N - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x1c] - ldr r1, [r1, #0x20] - mov r2, r8 - mov r3, r7 - bl ov117_02263168 - add r1, sl, sb, lsl #5 - ldr r0, [r1, #0x11c] - ldr r1, [r1, #0x120] - mov r0, r0, lsl #8 - mov r1, r1, lsl #8 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - orr r0, r1, r0, lsr #16 - str r0, [sp, #0x10] - mov r0, #0x22 - add r1, sp, #0x10 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r0, #0x21 - add r1, sp, #0xc - mov r2, #1 - str r6, [sp, #0xc] - bl NNS_G3dGeBufferOP_N - mov r0, #0 - str r0, [sp, #8] - ldrh r3, [sp, #2] - ldrh r2, [sp] - mov r0, #0x23 - add r1, sp, #4 - orr r2, r3, r2, lsl #16 - str r2, [sp, #4] - mov r2, #2 - bl NNS_G3dGeBufferOP_N - mov r1, #0 - mov r0, #0x41 - mov r2, r1 - bl NNS_G3dGeBufferOP_N - add sb, sb, #1 - cmp sb, #8 - blt _02262ED4 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02263164: .word 0x1FF00000 - arm_func_end ov117_02262EAC - - arm_func_start ov117_02263168 -ov117_02263168: ; 0x02263168 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0, asr #0x1f - mov r5, r1 - mov r1, r4, lsl #0xc - mov r7, r2 - mov r6, r3 - orr r1, r1, r0, lsr #20 - mov r0, r0, lsl #0xc - mov r2, #0x80000 - mov r3, #0 - bl _ll_sdiv - mov r1, r5, asr #0x1f - mov r1, r1, lsl #0xc - mov r4, r0 - orr r1, r1, r5, lsr #20 - mov r0, r5, lsl #0xc - mov r2, #0x80000 - mov r3, #0 - bl _ll_sdiv - mov r5, r0 - ldr r0, _0226326C ; =0x00007FFF - cmp r4, r0 - ble _022631C8 - bl GF_AssertFail -_022631C8: - mov r0, #0x8000 - rsb r0, r0, #0 - cmp r4, r0 - bge _022631DC - bl GF_AssertFail -_022631DC: - ldr r0, _0226326C ; =0x00007FFF - cmp r5, r0 - ble _022631EC - bl GF_AssertFail -_022631EC: - mov r0, #0x8000 - rsb r0, r0, #0 - cmp r5, r0 - bge _02263200 - bl GF_AssertFail -_02263200: - ldr r0, _0226326C ; =0x00007FFF - sub r1, r4, #0x800 - cmp r1, r0 - ble _02263214 - bl GF_AssertFail -_02263214: - mov r0, #0x8000 - sub r1, r4, #0x800 - rsb r0, r0, #0 - cmp r1, r0 - bge _0226322C - bl GF_AssertFail -_0226322C: - ldr r0, _0226326C ; =0x00007FFF - add r1, r5, #0x800 - cmp r1, r0 - ble _02263240 - bl GF_AssertFail -_02263240: - mov r0, #0x8000 - add r1, r5, #0x800 - rsb r0, r0, #0 - cmp r1, r0 - bge _02263258 - bl GF_AssertFail -_02263258: - sub r0, r4, #0x800 - strh r0, [r7] - add r0, r5, #0x800 - strh r0, [r6] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0226326C: .word 0x00007FFF - arm_func_end ov117_02263168 - - arm_func_start ov117_02263270 -ov117_02263270: ; 0x02263270 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r1, [r4, #0x238] - cmp r1, #1 - ldrne r1, [r4, #0x218] - cmpne r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r4, #0x270] - ldr r3, _0226333C ; =0x02266B07 - ldr r1, _02263340 ; =0x02266B05 - ldrb lr, [r3, r2, lsl #2] - ldr r5, [r4, #0x230] - ldrb r3, [r1, r2, lsl #2] - ldr ip, [r4, #0x20c] - add r1, lr, r5, asr #12 - cmp ip, r3 - blt _022632E4 - ldr r3, _02263344 ; =0x02266B06 - ldrb r3, [r3, r2, lsl #2] - cmp ip, r3 - bgt _022632E4 - ldr ip, [r4, #0x210] - cmp ip, r1 - blt _022632E4 - ldr r3, _02263348 ; =0x02266B08 - ldrb r2, [r3, r2, lsl #2] - cmp ip, r2 - ble _022632EC -_022632E4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022632EC: - mov r2, #1 - str r2, [r4, #0x238] - ldr r2, [r4, #0x20c] - str r2, [r4, #0x224] - ldr r2, [r4, #0x210] - str r2, [r4, #0x228] - ldr r2, [r4, #0x210] - sub r1, r2, r1 - str r1, [r4, #0x22c] - ldr r2, [r4, #0x20] - ldr r1, [r4, #0x10] - sub r1, r1, r2 - add r1, r1, r1, lsr #31 - add r1, r2, r1, asr #1 - rsb r1, r1, #0 - str r1, [r4, #0x230] - bl ov117_022638AC - str r0, [r4, #0x240] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0226333C: .word 0x02266B07 -_02263340: .word 0x02266B05 -_02263344: .word 0x02266B06 -_02263348: .word 0x02266B08 - arm_func_end ov117_02263270 - - arm_func_start ov117_0226334C -ov117_0226334C: ; 0x0226334C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x238] - mov r4, #0 - cmp r0, #1 - bne _022633E8 - ldr r2, [r5, #0x23c] - ldr r1, [r5, #0x210] - cmp r1, r2 - movlt r0, r4 - strltb r4, [r5, #0x274] - ldmltia sp!, {r3, r4, r5, pc} - streqb r4, [r5, #0x274] - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - sub r0, r4, #1 - cmp r2, r0 - beq _022633BC - cmp r1, r2 - ble _022633BC - ldr r0, _02263440 ; =0x00000577 - bl sub_020057D4 - cmp r0, #0 - bne _022633BC - ldr r0, _02263440 ; =0x00000577 - bl sub_02005748 - mov r0, #1 - strb r0, [r5, #0x274] -_022633BC: - ldr r1, [r5, #0x270] - ldr r0, _02263444 ; =0x02266B07 - ldr ip, [r5, #0x210] - ldr r3, [r5, #0x22c] - ldr r2, [r5, #0x230] - ldrb r0, [r0, r1, lsl #2] - sub r1, ip, r3 - str ip, [r5, #0x23c] - add r0, r2, r0, lsl #12 - rsb r2, r0, r1, lsl #12 - b _022633F4 -_022633E8: - ldr r0, [r5, #0x248] - mov r4, #1 - rsb r2, r0, #0 -_022633F4: - mov r0, r5 - mov r1, r4 - bl ov117_02263448 - cmp r0, #0 - beq _0226341C - cmp r0, #1 - cmpne r0, #2 - bne _0226341C - mov r0, r5 - blx ov117_02262A38 -_0226341C: - ldr r2, [r5, #0x20] - ldr r1, [r5, #0x10] - mov r0, #1 - sub r1, r1, r2 - add r1, r1, r1, lsr #31 - add r1, r2, r1, asr #1 - rsb r1, r1, #0 - str r1, [r5, #0x230] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02263440: .word 0x00000577 -_02263444: .word 0x02266B07 - arm_func_end ov117_0226334C - - arm_func_start ov117_02263448 -ov117_02263448: ; 0x02263448 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r4, r0 - ldr r5, [r4, #0x10] - ldr r3, [r4, #0x20] - rsb r6, r5, #0 - rsb r7, r3, #0 - sub r3, r6, r7 - add r3, r3, r3, lsr #31 - mov r5, r2 - mov r2, #0 - mov sb, r1 - add r8, r7, r3, asr #1 - str r2, [sp, #8] - bl ov117_022637AC - cmp r0, #0 - beq _022634A0 - cmp r0, #1 - beq _022634B4 - cmp r0, #2 - beq _022634E0 - b _02263508 -_022634A0: - add r1, r6, r5 - add r0, r7, r5 - str r1, [sp, #0x10] - str r0, [sp, #0xc] - b _02263508 -_022634B4: - add r0, sp, #0x10 - str r0, [sp] - add sl, sp, #0xc - mov r0, r4 - mov r1, r5 - mov r2, r6 - mov r3, r7 - str sl, [sp, #4] - bl ov117_022637E4 - str r0, [sp, #8] - b _02263508 -_022634E0: - add r0, sp, #0xc - str r0, [sp] - add sl, sp, #0x10 - mov r0, r4 - mov r1, r5 - mov r2, r7 - mov r3, r6 - str sl, [sp, #4] - bl ov117_022637E4 - str r0, [sp, #8] -_02263508: - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - sub r0, r2, r1 - add r0, r0, r0, lsr #31 - add r5, r1, r0, asr #1 - cmp r8, r5 - cmpeq r6, r2 - cmpeq r7, r1 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #0 - movlt r5, #0 - cmp r2, #0 - movlt r0, #0 - strlt r0, [sp, #0x10] - cmp r1, #0 - movlt r0, #0 - strlt r0, [sp, #0xc] - cmp r5, #0x64000 - movgt r0, #1 - strgt r0, [sp, #8] - ldr r0, [sp, #0x10] - movgt r5, #0x64000 - cmp r0, #0x64000 - ble _02263580 - mov r0, #0x64000 - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #8] -_02263580: - ldr r0, [sp, #0xc] - cmp r0, #0x64000 - ble _0226359C - mov r0, #0x64000 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #8] -_0226359C: - mov r0, r4 - mov r1, sb - bl ov117_022637AC - cmp r0, #0 - beq _022635C0 - cmp r0, #1 - beq _02263600 - cmp r0, #2 - beq _022635E0 -_022635C0: - ldr r0, [sp, #0xc] - mov r1, #0x40000 - sub r0, r0, r5 - bl FX_Atan2Idx - add r1, r0, #0x8000 - mov r1, r1, lsl #0x10 - mov fp, r1, lsr #0x10 - b _02263624 -_022635E0: - ldr r0, [sp, #0xc] - mov r1, #0x40000 - sub r0, r0, r5 - bl FX_Atan2Idx - add r1, r0, #0x8000 - mov r1, r1, lsl #0x10 - mov fp, r1, lsr #0x10 - b _02263624 -_02263600: - ldr r0, [sp, #0x10] - mov r1, #0x40000 - sub r0, r0, r5 - rsb r1, r1, #0 - bl FX_Atan2Idx - mov fp, r0 - add r0, fp, #0x8000 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 -_02263624: - mov r1, fp, asr #4 - mov r7, r1, lsl #1 - add r2, r7, #1 - ldr r1, _022637A4 ; =0x020F983C - mov r2, r2, lsl #1 - ldrsh r3, [r1, r2] - mov r2, r0, asr #4 - mov r6, r2, lsl #1 - mov r2, r3, lsl #6 - add r2, r2, #0x40000 - str r2, [r4, #0xc] - mov r2, r7, lsl #1 - ldrsh r7, [r1, r2] - add r2, r6, #1 - mov r2, r2, lsl #1 - add r7, r5, r7, lsl #6 - rsb r7, r7, #0 - str r7, [r4, #0x10] - ldrsh r7, [r1, r2] - ldr r2, _022637A8 ; =0x92492493 - rsb r3, r5, #0x70000 - mov r7, r7, lsl #6 - add r7, r7, #0x40000 - mov r6, r6, lsl #1 - str r7, [r4, #0x1c] - ldrsh r6, [r1, r6] - smull r1, lr, r2, r3 - add r1, r5, r6, lsl #6 - rsb r6, r1, #0 - add lr, r3, lr - mov r1, r3, lsr #0x1f - str r6, [r4, #0x20] - cmp r0, #0x8000 - add lr, r1, lr, asr #2 - smullls r1, r6, r2, r0 - addls r6, r0, r6 - movls r1, r0, lsr #0x1f - bls _022636D0 - rsb r1, r0, #0x10000 - rsb r3, r1, #0 - smull r1, r6, r2, r3 - add r6, r3, r6 - mov r1, r3, lsr #0x1f -_022636D0: - add r6, r1, r6, asr #2 - ldr r3, _022637A4 ; =0x020F983C - mov r7, r6 - mov r8, lr - mov ip, #1 -_022636E4: - sub r1, fp, r7 - mov r1, r1, asr #4 - mov r1, r1, lsl #1 - add r2, r3, r1, lsl #1 - ldrsh sb, [r2, #2] - sub r2, r0, r7 - mov r1, r1, lsl #1 - mov sb, sb, lsl #6 - add sl, sb, #0x40000 - mov r2, r2, asr #4 - mov sb, r2, lsl #1 - add r2, r4, ip, lsl #5 - str sl, [r2, #0xc] - ldrsh r1, [r3, r1] - mov sl, sb, lsl #1 - add sb, r3, sb, lsl #1 - add r1, r5, r1, lsl #6 - add r1, r8, r1 - rsb r1, r1, #0 - str r1, [r2, #0x10] - ldrsh r1, [sb, #2] - add r7, r7, r6 - add ip, ip, #1 - mov r1, r1, lsl #6 - add r1, r1, #0x40000 - str r1, [r2, #0x1c] - ldrsh r1, [r3, sl] - cmp ip, #7 - add r1, r5, r1, lsl #6 - add r1, r8, r1 - rsb r1, r1, #0 - str r1, [r2, #0x20] - ldr r1, [r2, #0xc] - add r8, r8, lr - str r1, [r2, #-0xc] - ldr r1, [r2, #0x10] - str r1, [r2, #-8] - ldr r1, [r2, #0x1c] - str r1, [r2, #4] - ldr r1, [r2, #0x20] - str r1, [r2, #8] - blt _022636E4 - ldr r0, [sp, #8] - cmp r0, #1 - moveq r0, #2 - movne r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022637A4: .word 0x020F983C -_022637A8: .word 0x92492493 - arm_func_end ov117_02263448 - - arm_func_start ov117_022637AC -ov117_022637AC: ; 0x022637AC - cmp r1, #1 - moveq r0, #0 - bxeq lr - ldr r2, [r0, #0x21c] - ldr r1, [r0, #0x224] - sub r0, r2, #0x10 - cmp r1, r0 - movlt r0, #1 - bxlt lr - add r0, r2, #0x10 - cmp r1, r0 - movgt r0, #2 - movle r0, #0 - bx lr - arm_func_end ov117_022637AC - - arm_func_start ov117_022637E4 -ov117_022637E4: ; 0x022637E4 - stmfd sp!, {r4, lr} - ldr lr, [sp, #8] - add r4, r2, r1 - mov r0, #0 - cmp r4, #0x64000 - subgt r0, r4, #0x64000 - subgt r1, r1, r0 - movgt r0, #1 - ldr ip, [sp, #0xc] - str r2, [lr] - str r3, [ip] - add r4, r2, r1 - str r4, [lr] - cmp r3, r2 - strgt r3, [ip] - ldmgtia sp!, {r4, pc} - mov r2, #0x19 - mul r2, r1, r2 - ldr lr, _02263848 ; =0x51EB851F - mov r1, r2, lsr #0x1f - smull r2, r4, lr, r2 - add r4, r1, r4, asr #5 - sub r1, r3, r4 - str r1, [ip] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02263848: .word 0x51EB851F - arm_func_end ov117_022637E4 - - arm_func_start ov117_0226384C -ov117_0226384C: ; 0x0226384C - stmfd sp!, {r3, r4, r5, lr} - ldr r5, [r0, #0x20] - ldr r1, [r0, #0x10] - ldr r4, [r0, #0x1c] - sub r1, r1, r5 - add r1, r1, r1, lsr #31 - ldr lr, [r0, #0xc] - ldr ip, [r0, #0xe4] - ldr r3, [r0, #0xd4] - ldr r2, [r0, #0xd8] - add r0, r5, r1, asr #1 - sub r0, r2, r0 - sub r2, r4, lr - sub r1, ip, r3 - add r1, r2, r1 - rsb r0, r0, #0 - smull r2, r0, r1, r0 - adds r1, r2, #0x800 - adc r0, r0, #0 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #20 - add r0, r1, r1, lsr #31 - mov r0, r0, asr #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov117_0226384C - - arm_func_start ov117_022638AC -ov117_022638AC: ; 0x022638AC - stmfd sp!, {r3, lr} - bl ov117_0226384C - mov r2, #0x64 - umull r3, r1, r0, r2 - mov r0, r0, asr #0x1f - mla r1, r0, r2, r1 - mov r0, r3 - mov r3, #0 - mov r2, #0x3200000 - bl _ll_sdiv - ldmia sp!, {r3, pc} - arm_func_end ov117_022638AC - - arm_func_start ov117_022638D8 -ov117_022638D8: ; 0x022638D8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r0 - mov r0, #0xad - mov r1, #0x6e - bl sub_02006C24 - mov r4, r0 - str r4, [sp] - mov r0, #0x3a - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r1, #1 - str r1, [sp, #0xc] - ldr r0, _022639B4 ; =0x00002715 - str r1, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [r5, #0x8c] - ldr r2, [r5, #0x24] - ldr r3, [r5, #0x28] - mov r1, #2 - bl sub_0200CDC4 - mov r0, #0 - str r0, [sp] - mov r1, #1 - ldr r0, _022639B8 ; =0x00002713 - str r1, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r2, r4 - mov r3, #0x37 - bl sub_0200CC3C - mov r0, #0 - str r0, [sp] - ldr r0, _022639B8 ; =0x00002713 - mov r2, r4 - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x39 - bl sub_0200CE24 - mov r0, #0 - str r0, [sp] - ldr r0, _022639B8 ; =0x00002713 - mov r2, r4 - str r0, [sp, #4] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - mov r3, #0x38 - bl sub_0200CE54 - mov r0, r4 - bl sub_02006CA8 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022639B4: .word 0x00002715 -_022639B8: .word 0x00002713 - arm_func_end ov117_022638D8 - - arm_func_start ov117_022639BC -ov117_022639BC: ; 0x022639BC - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x28] - ldr r1, _022639F8 ; =0x00002713 - bl sub_0200D070 - ldr r0, [r4, #0x28] - ldr r1, _022639F8 ; =0x00002713 - bl sub_0200D090 - ldr r0, [r4, #0x28] - ldr r1, _022639F8 ; =0x00002713 - bl sub_0200D0A0 - ldr r0, [r4, #0x28] - ldr r1, _022639FC ; =0x00002715 - bl sub_0200D080 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022639F8: .word 0x00002713 -_022639FC: .word 0x00002715 - arm_func_end ov117_022639BC - - arm_func_start ov117_02263A00 -ov117_02263A00: ; 0x02263A00 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x34 - ldr lr, _02263A68 ; =0x02266B38 - mov r5, r0 - ldmia lr!, {r0, r1, r2, r3} - add ip, sp, #0 - mov r4, ip - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r0, [lr] - mov r2, r4 - str r0, [ip] - ldr r0, [r5, #0x24] - ldr r1, [r5, #0x28] - bl sub_0200CE6C - mov r4, r0 - mov r1, #0 - bl sub_0200D3F4 - ldr r0, [r4, #0] - bl sub_0200D324 - mov r0, r4 - add sp, sp, #0x34 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02263A68: .word 0x02266B38 - arm_func_end ov117_02263A00 - - arm_func_start ov117_02263A6C -ov117_02263A6C: ; 0x02263A6C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r2, [r6, #0x238] - mov r5, r1 - cmp r2, #0 - moveq r4, #0 - beq _02263A94 - mov r1, #0 - bl ov117_022637AC - add r4, r0, #1 -_02263A94: - ldr r1, [r6, #0x270] - ldr r0, _02263AE0 ; =0x02266B07 - ldr r3, [r6, #0x21c] - ldrb r0, [r0, r1, lsl #2] - ldr r2, [r6, #0x230] - mov r1, r3, lsl #0x10 - add r0, r0, r2, asr #12 - mov r2, r0, lsl #0x10 - mov r0, r5 - mov r1, r1, asr #0x10 - mov r2, r2, asr #0x10 - mov r3, #0x160000 - bl sub_0200D500 - mov r0, r5 - mov r1, r4 - bl sub_0200D364 - ldr r0, [r5, #0] - bl sub_0200D324 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02263AE0: .word 0x02266B07 - arm_func_end ov117_02263A6C - - arm_func_start ov117_02263AE4 -ov117_02263AE4: ; 0x02263AE4 - ldr ip, _02263AEC ; =sub_0200D0F4 - bx ip - ; .align 2, 0 -_02263AEC: .word sub_0200D0F4 - arm_func_end ov117_02263AE4 - - .rodata - - .global Unk_ov117_02266B04 -Unk_ov117_02266B04: ; 0x02266B04 - .incbin "incbin/overlay117_rodata.bin", 0x20C, 0x20D - 0x20C - - .global Unk_ov117_02266B05 -Unk_ov117_02266B05: ; 0x02266B05 - .incbin "incbin/overlay117_rodata.bin", 0x20D, 0x21A - 0x20D - - .global Unk_ov117_02266B12 -Unk_ov117_02266B12: ; 0x02266B12 - .incbin "incbin/overlay117_rodata.bin", 0x21A, 0x240 - 0x21A - - .global Unk_ov117_02266B38 -Unk_ov117_02266B38: ; 0x02266B38 - .incbin "incbin/overlay117_rodata.bin", 0x240, 0x274 - 0x240 diff --git a/asm/overlay117/ov117_022626B0_thumb.inc b/asm/overlay117/ov117_022626B0_thumb.inc deleted file mode 100644 index 22e7d50faf..0000000000 --- a/asm/overlay117/ov117_022626B0_thumb.inc +++ /dev/null @@ -1,46 +0,0 @@ -.public sub_0200393C -.public sub_02005748 -.public sub_02006AC0 -.public sub_02018144 -.public sub_020181C4 -.public sub_020182F0 -.public sub_0201CBCC -.public GF_AssertFail -.public NNS_G3dGeFlushBuffer -.public NNS_G3dGeBufferOP_N -.public NNS_G3dGetTex -.public GX_BeginLoadTexPltt -.public GX_LoadTexPltt -.public GX_EndLoadTexPltt -.public DC_FlushRange -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public _s32_div_f -.public ov117_02261600 -.public ov117_0226296C -.public ov117_02262998 -.public ov117_022629E0 -.public ov117_02262A38 -.public ov117_02262A70 -.public ov117_02262B98 -.public ov117_02262C3C -.public ov117_02262C60 -.public ov117_02262CB8 -.public ov117_02262CE8 -.public ov117_02262CFC -.public ov117_02262D4C -.public ov117_02262D98 -.public ov117_02262E0C -.public ov117_02262E5C -.public ov117_02262EAC -.public ov117_02263270 -.public ov117_0226334C -.public ov117_022638AC -.public ov117_022638D8 -.public ov117_022639BC -.public ov117_02263A00 -.public ov117_02263A6C -.public ov117_02263AE4 -.public ov117_02263DC4 -.public ov117_02264E14 -.public ov117_02264E3C diff --git a/asm/overlay117/ov117_022626B0_thumb.s b/asm/overlay117/ov117_022626B0_thumb.s deleted file mode 100644 index b7b58a2c88..0000000000 --- a/asm/overlay117/ov117_022626B0_thumb.s +++ /dev/null @@ -1,891 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_022626B0_thumb.inc" - - .text - - thumb_func_start ov117_022626B0 -ov117_022626B0: ; 0x022626B0 - push {r3, r4, r5, lr} - mov r1, #0x9e - add r5, r0, #0 - mov r0, #0x6e - lsl r1, r1, #2 - bl sub_02018144 - mov r2, #0x9e - mov r1, #0 - lsl r2, r2, #2 - add r4, r0, #0 - bl MI_CpuFill8 - ldr r0, [r5, #0] - ldr r1, [r0, #0x34] - mov r0, #0x27 - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r4, #0 - bl ov117_02262B98 - add r0, r4, #0 - blx ov117_02262E0C - add r0, r4, #0 - blx ov117_02262E5C - ldr r0, [r5, #0] - ldr r0, [r0, #0x34] - cmp r0, #1 - beq _02262706 - cmp r0, #2 - bne _0226271A - mov r1, #1 - mov r0, #0x26 - lsl r1, r1, #0x12 - lsl r0, r0, #4 - str r1, [r4, r0] - mov r1, #0x1a - lsl r1, r1, #0xe - add r0, r0, #4 - str r1, [r4, r0] - b _02262728 -_02262706: - mov r1, #9 - mov r0, #0x26 - lsl r1, r1, #0x10 - lsl r0, r0, #4 - str r1, [r4, r0] - mov r1, #7 - lsl r1, r1, #0x10 - add r0, r0, #4 - str r1, [r4, r0] - b _02262728 -_0226271A: - mov r1, #6 - mov r0, #0x26 - lsl r1, r1, #0x10 - lsl r0, r0, #4 - str r1, [r4, r0] - add r0, r0, #4 - str r1, [r4, r0] -_02262728: - mov r0, #0x87 - mov r1, #0x80 - lsl r0, r0, #2 - str r1, [r4, r0] - mov r1, #0x28 - add r0, r0, #4 - str r1, [r4, r0] - add r0, r5, #0 - blx ov117_022638D8 - add r0, r5, #0 - blx ov117_02263A00 - mov r1, #0x8d - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r1, [r4, r1] - add r0, r4, #0 - blx ov117_02263A6C - mov r1, #2 - mov r0, #0x92 - lsl r1, r1, #0xc - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, r4, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_022626B0 - - thumb_func_start ov117_02262760 -ov117_02262760: ; 0x02262760 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x8d - add r4, r1, #0 - lsl r0, r0, #2 - ldr r0, [r4, r0] - blx ov117_02263AE4 - add r0, r5, #0 - blx ov117_022639BC - ldr r0, [r4, #0] - bl sub_020181C4 - mov r0, #0x93 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_020181C4 - mov r0, #0x25 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_020181C4 - add r0, r4, #0 - bl sub_020181C4 - pop {r3, r4, r5, pc} - thumb_func_end ov117_02262760 - - thumb_func_start ov117_02262798 -ov117_02262798: ; 0x02262798 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r1, #0 - mov r1, #0x91 - add r5, r0, #0 - mov r0, #0 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r5, #0x20] - cmp r0, #2 - bne _022627D8 - ldr r0, _02262938 ; =0x00001758 - add r2, r1, #0 - ldr r3, [r5, r0] - sub r2, #0x38 - str r3, [r4, r2] - add r2, r0, #4 - ldr r3, [r5, r2] - add r2, r1, #0 - sub r2, #0x34 - str r3, [r4, r2] - add r2, r0, #0 - add r2, #8 - ldr r3, [r5, r2] - add r2, r1, #0 - sub r2, #0x30 - str r3, [r4, r2] - add r0, #0xc - ldr r0, [r5, r0] - sub r1, #0x2c - str r0, [r4, r1] - b _02262820 -_022627D8: - ldr r0, _0226293C ; =0x00002FB8 - ldr r2, [r5, r0] - cmp r2, #0 - beq _022627E8 - add r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #1 - bne _02262800 -_022627E8: - mov r1, #0x83 - lsl r1, r1, #2 - mov r2, #0 - str r2, [r4, r1] - add r0, r1, #4 - str r2, [r4, r0] - add r0, r1, #0 - add r0, #8 - str r2, [r4, r0] - add r1, #0xc - str r2, [r4, r1] - b _02262820 -_02262800: - ldr r2, _02262940 ; =0x021BF6BC - add r0, r1, #0 - ldrh r3, [r2, #0x1c] - sub r0, #0x38 - str r3, [r4, r0] - add r0, r1, #0 - ldrh r3, [r2, #0x1e] - sub r0, #0x34 - str r3, [r4, r0] - add r0, r1, #0 - ldrh r3, [r2, #0x22] - sub r0, #0x30 - sub r1, #0x2c - str r3, [r4, r0] - ldrh r0, [r2, #0x20] - str r0, [r4, r1] -_02262820: - add r0, r4, #0 - blx ov117_02263270 - mov r0, #0x85 - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - bne _02262846 - add r0, r4, #0 - bl ov117_02262A38 - ldr r0, [r4, #0x20] - cmp r0, #0 - bne _02262846 - bne _02262846 - mov r0, #0x9d - mov r1, #0 - lsl r0, r0, #2 - strb r1, [r4, r0] -_02262846: - add r0, r4, #0 - blx ov117_0226334C - add r0, r4, #0 - bl ov117_02262A70 - mov r1, #0x8d - lsl r1, r1, #2 - ldr r1, [r4, r1] - add r0, r4, #0 - blx ov117_02263A6C - mov r0, #0x9a - lsl r0, r0, #2 - ldrsh r1, [r4, r0] - cmp r1, #0 - ble _0226287C - add r1, #8 - strh r1, [r4, r0] - ldrsh r1, [r4, r0] - cmp r1, #0x1e - ble _02262876 - mov r1, #0x1e - strh r1, [r4, r0] -_02262876: - add r0, r4, #0 - bl ov117_02262CFC -_0226287C: - ldr r0, _02262944 ; =0x00002FBC - ldr r1, [r5, r0] - cmp r1, #0 - bne _02262934 - sub r0, r0, #4 - ldr r0, [r5, r0] - cmp r0, #1 - bne _02262934 - mov r2, #0x91 - lsl r2, r2, #2 - ldr r1, [r4, r2] - cmp r1, #0 - ble _02262934 - add r0, r2, #0 - add r0, #0x18 - ldr r0, [r4, r0] - add r2, #0xdc - mov r7, #0 - cmp r0, r2 - bge _022628C4 - add r0, r4, #0 - bl ov117_02262CB8 - cmp r0, #1 - bne _022628D4 - mov r0, #0x9a - mov r1, #8 - lsl r0, r0, #2 - strh r1, [r4, r0] - add r1, r7, #0 - add r0, #0xd - strb r1, [r4, r0] - ldr r0, _02262948 ; =0x00000576 - bl sub_02005748 - b _022628D4 -_022628C4: - add r0, r4, #0 - bl ov117_02262CE8 - mov r0, #0x9a - add r1, r7, #0 - lsl r0, r0, #2 - strh r1, [r4, r0] - mov r7, #1 -_022628D4: - mov r1, #0x91 - lsl r1, r1, #2 - ldr r1, [r4, r1] - add r0, r4, #0 - bl ov117_0226296C - add r6, r0, #0 - cmp r7, #1 - bne _022628F2 - mov r0, #0x19 - mul r0, r6 - mov r1, #0x64 - bl _s32_div_f - add r6, r6, r0 -_022628F2: - ldr r1, _0226294C ; =0x00002FC8 - add r0, r5, #0 - ldr r1, [r5, r1] - add r2, r6, #0 - add r3, sp, #0 - bl ov117_02264E14 - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02264E3C - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02263DC4 - mov r1, #0x91 - lsl r1, r1, #2 - ldr r1, [r4, r1] - add r0, r4, #0 - bl ov117_02262998 - mov r2, #0x91 - lsl r2, r2, #2 - ldr r2, [r4, r2] - add r0, r5, #0 - add r1, r4, #0 - add r3, r7, #0 - bl ov117_022629E0 - mov r0, #0x91 - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] -_02262934: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02262938: .word 0x00001758 -_0226293C: .word 0x00002FB8 -_02262940: .word 0x021BF6BC -_02262944: .word 0x00002FBC -_02262948: .word 0x00000576 -_0226294C: .word 0x00002FC8 - thumb_func_end ov117_02262798 - - thumb_func_start ov117_02262950 -ov117_02262950: ; 0x02262950 - push {r3, lr} - ldr r0, _02262968 ; =0x00000276 - ldrb r2, [r1, r0] - cmp r2, #1 - bne _02262964 - mov r2, #0 - strb r2, [r1, r0] - add r0, r1, #0 - bl ov117_02262C3C -_02262964: - pop {r3, pc} - nop -_02262968: .word 0x00000276 - thumb_func_end ov117_02262950 - - thumb_func_start ov117_0226296C -ov117_0226296C: ; 0x0226296C - cmp r1, #0x62 - blt _02262976 - mov r2, #0x4b - lsl r2, r2, #4 - b _0226297A -_02262976: - mov r2, #0xa - mul r2, r1 -_0226297A: - mov r1, #0x27 - lsl r1, r1, #4 - ldr r0, [r0, r1] - ldr r3, _02262990 ; =_s32_div_f - lsl r1, r0, #2 - ldr r0, _02262994 ; =0x02266FD8 - ldr r0, [r0, r1] - mov r1, #0x64 - mul r0, r2 - bx r3 - nop -_02262990: .word _s32_div_f -_02262994: .word 0x02266FD8 - thumb_func_end ov117_0226296C - - thumb_func_start ov117_02262998 -ov117_02262998: ; 0x02262998 - mov r2, #0x91 - lsl r2, r2, #2 - ldr r1, [r0, r2] - cmp r1, #0x62 - blt _022629B2 - add r1, r2, #4 - ldr r3, [r0, r1] - mov r1, #1 - lsl r1, r1, #0xc - add r3, r3, r1 - add r1, r2, #4 - str r3, [r0, r1] - b _022629CC -_022629B2: - blt _022629C4 - add r1, r2, #4 - ldr r3, [r0, r1] - mov r1, #1 - lsl r1, r1, #0xc - add r3, r3, r1 - add r1, r2, #4 - str r3, [r0, r1] - b _022629CC -_022629C4: - mov r3, #2 - lsl r3, r3, #0xc - add r1, r2, #4 - str r3, [r0, r1] -_022629CC: - mov r1, #0x92 - lsl r1, r1, #2 - mov r2, #0x11 - ldr r3, [r0, r1] - lsl r2, r2, #0xc - cmp r3, r2 - ble _022629DC - str r2, [r0, r1] -_022629DC: - bx lr - ; .align 2, 0 - thumb_func_end ov117_02262998 - - thumb_func_start ov117_022629E0 -ov117_022629E0: ; 0x022629E0 - push {r3, lr} - cmp r3, #1 - bne _022629FE - mov r2, #0x91 - lsl r2, r2, #2 - ldr r2, [r1, r2] - cmp r2, #0x62 - blt _022629FE - mov r1, #0 - bl ov117_02261600 - ldr r0, _02262A30 ; =0x0000057A - bl sub_02005748 - pop {r3, pc} -_022629FE: - mov r2, #0x91 - lsl r2, r2, #2 - ldr r2, [r1, r2] - cmp r2, #0x62 - bge _02262A2E - ldr r2, [r1, #0x20] - ldr r1, [r1, #0x10] - cmp r1, r2 - bge _02262A1E - mov r1, #2 - bl ov117_02261600 - ldr r0, _02262A34 ; =0x00000578 - bl sub_02005748 - pop {r3, pc} -_02262A1E: - cmp r1, r2 - ble _02262A2E - mov r1, #1 - bl ov117_02261600 - ldr r0, _02262A34 ; =0x00000578 - bl sub_02005748 -_02262A2E: - pop {r3, pc} - ; .align 2, 0 -_02262A30: .word 0x0000057A -_02262A34: .word 0x00000578 - thumb_func_end ov117_022629E0 - - thumb_func_start ov117_02262A38 -ov117_02262A38: ; 0x02262A38 - push {r4, lr} - mov r1, #0x8e - add r4, r0, #0 - lsl r1, r1, #2 - ldr r2, [r4, r1] - cmp r2, #0 - beq _02262A6C - mov r2, #0 - str r2, [r4, r1] - sub r2, r2, #1 - add r1, r1, #4 - str r2, [r4, r1] - blx ov117_022638AC - mov r1, #9 - lsl r1, r1, #6 - ldr r2, [r4, r1] - sub r2, r2, r0 - add r0, r1, #4 - str r2, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0x19 - bge _02262A6C - mov r2, #0 - add r0, r1, #4 - str r2, [r4, r0] -_02262A6C: - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02262A38 - - thumb_func_start ov117_02262A70 -ov117_02262A70: ; 0x02262A70 - push {r4, r5, r6, lr} - sub sp, #0x38 - add r5, r0, #0 - ldr r0, _02262B80 ; =0x2D8B6127 - add r1, sp, #0x1c - str r0, [sp, #0x1c] - mov r0, #0x32 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - ldr r0, _02262B84 ; =0x00007FFF - add r1, sp, #0x18 - str r0, [sp, #0x18] - mov r0, #0x33 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r1, #0 - mov r0, #0x11 - add r2, r1, #0 - bl NNS_G3dGeBufferOP_N - mov r0, #0 - str r0, [sp, #0x2c] - mov r0, #0x13 - lsl r0, r0, #0xc - str r0, [sp, #0x30] - ldr r0, _02262B88 ; =0xFFFFB000 - add r1, sp, #0x2c - str r0, [sp, #0x34] - mov r0, #0x1c - mov r2, #3 - bl NNS_G3dGeBufferOP_N - mov r0, #0x99 - lsl r0, r0, #2 - ldr r4, [r5, r0] - add r0, r0, #6 - ldrsh r0, [r5, r0] - mov r1, #0x64 - mul r0, r4 - bl _s32_div_f - mov r1, #0x26 - lsl r1, r1, #4 - add r6, r4, r0 - add r0, r1, #0 - ldr r4, [r5, r1] - add r0, #8 - add r1, #0xc - ldrsh r2, [r5, r0] - ldrsh r0, [r5, r1] - mov r1, #0x64 - add r0, r2, r0 - mul r0, r4 - bl _s32_div_f - add r0, r4, r0 - str r0, [sp, #0x20] - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp, #0x28] - mov r0, #0x1b - add r1, sp, #0x20 - mov r2, #3 - str r6, [sp, #0x24] - bl NNS_G3dGeBufferOP_N - mov r0, #3 - str r0, [sp, #0x14] - mov r0, #0x10 - add r1, sp, #0x14 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r1, #0 - mov r0, #0x15 - add r2, r1, #0 - bl NNS_G3dGeBufferOP_N - mov r0, #2 - str r0, [sp, #0x10] - mov r0, #0x10 - add r1, sp, #0x10 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - mov r0, #1 - add r1, r0, #0 - bl ov117_02262D4C - blx ov117_02262D98 - ldr r1, [r5, #4] - mov r2, #1 - ldr r0, [r1, #0x2c] - lsl r4, r0, #0x10 - ldr r0, [r1, #8] - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - ldr r0, _02262B8C ; =0x1FFFFFFF - and r1, r0 - ldr r0, _02262B90 ; =0x72400000 - orr r0, r1 - str r0, [sp, #0xc] - mov r0, #0x2a - add r1, sp, #0xc - bl NNS_G3dGeBufferOP_N - lsr r0, r4, #0x11 - str r0, [sp, #8] - mov r0, #0x2b - add r1, sp, #8 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - ldr r0, _02262B94 ; =0x001F00C1 - add r1, sp, #4 - str r0, [sp, #4] - mov r0, #0x29 - mov r2, #1 - bl NNS_G3dGeBufferOP_N - add r0, r5, #0 - blx ov117_02262EAC - mov r2, #1 - mov r0, #0x12 - add r1, sp, #0 - str r2, [sp] - bl NNS_G3dGeBufferOP_N - bl NNS_G3dGeFlushBuffer - add sp, #0x38 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_02262B80: .word 0x2D8B6127 -_02262B84: .word 0x00007FFF -_02262B88: .word 0xFFFFB000 -_02262B8C: .word 0x1FFFFFFF -_02262B90: .word 0x72400000 -_02262B94: .word 0x001F00C1 - thumb_func_end ov117_02262A70 - - thumb_func_start ov117_02262B98 -ov117_02262B98: ; 0x02262B98 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0xad - mov r1, #0x1d - mov r2, #0x6e - bl sub_02006AC0 - str r0, [r5, #0] - bl NNS_G3dGetTex - str r0, [r5, #4] - bl sub_0201CBCC - ldr r6, [r5, #4] - ldrh r0, [r6, #0x30] - ldr r7, [r6, #0x38] - lsl r4, r0, #3 - ldr r0, [r6, #0x2c] - lsl r0, r0, #0x10 - lsr r0, r0, #0xd - str r0, [sp] - mov r0, #0x93 - lsl r0, r0, #2 - ldr r0, [r5, r0] - cmp r0, #0 - beq _02262BD0 - bl GF_AssertFail -_02262BD0: - mov r0, #0x6e - add r1, r4, #0 - bl sub_02018144 - mov r1, #0x93 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #0x6e - add r1, r4, #0 - bl sub_02018144 - mov r1, #0x25 - lsl r1, r1, #4 - str r0, [r5, r1] - sub r1, r1, #4 - ldr r1, [r5, r1] - add r0, r6, r7 - add r2, r4, #0 - bl MI_CpuCopy8 - mov r1, #0x25 - lsl r1, r1, #4 - ldr r1, [r5, r1] - add r0, r6, r7 - add r2, r4, #0 - bl MI_CpuCopy8 - mov r0, #0x25 - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, r4, #0 - bl DC_FlushRange - mov r1, #0x96 - ldr r0, [sp] - lsl r1, r1, #2 - str r0, [r5, r1] - sub r0, r1, #4 - str r4, [r5, r0] - ldr r0, [r5, #4] - ldr r0, [r0, #0x14] - cmp r0, #0 - bne _02262C2A - bl GF_AssertFail -_02262C2A: - ldr r2, [r5, #4] - ldr r0, [r5, #0] - ldr r1, [r2, #0x14] - add r1, r2, r1 - sub r1, r1, r0 - bl sub_020182F0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov117_02262B98 - - thumb_func_start ov117_02262C3C -ov117_02262C3C: ; 0x02262C3C - push {r4, lr} - add r4, r0, #0 - bl GX_BeginLoadTexPltt - mov r2, #0x25 - lsl r2, r2, #4 - add r1, r2, #0 - ldr r0, [r4, r2] - add r1, #8 - add r2, r2, #4 - ldr r1, [r4, r1] - ldr r2, [r4, r2] - bl GX_LoadTexPltt - bl GX_EndLoadTexPltt - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02262C3C - - thumb_func_start ov117_02262C60 -ov117_02262C60: ; 0x02262C60 - push {r3, r4, lr} - sub sp, #4 - add r4, r0, #0 - lsl r0, r1, #1 - add r0, r1, r0 - mov r1, #0x32 - lsl r0, r0, #0xa - lsl r1, r1, #4 - bl _s32_div_f - add r0, #0x80 - asr r3, r0, #8 - cmp r3, #0x10 - ble _02262C7E - mov r3, #0x10 -_02262C7E: - mov r2, #0x93 - mov r0, #0x1f - lsl r2, r2, #2 - str r0, [sp] - add r1, r2, #4 - ldr r0, [r4, r2] - add r2, #8 - ldr r2, [r4, r2] - lsl r3, r3, #0x18 - lsl r2, r2, #0xf - ldr r1, [r4, r1] - lsr r2, r2, #0x10 - lsr r3, r3, #0x18 - bl sub_0200393C - mov r1, #0x25 - lsl r1, r1, #4 - ldr r0, [r4, r1] - add r1, r1, #4 - ldr r1, [r4, r1] - bl DC_FlushRange - ldr r0, _02262CB4 ; =0x00000276 - mov r1, #1 - strb r1, [r4, r0] - add sp, #4 - pop {r3, r4, pc} - ; .align 2, 0 -_02262CB4: .word 0x00000276 - thumb_func_end ov117_02262C60 - - thumb_func_start ov117_02262CB8 -ov117_02262CB8: ; 0x02262CB8 - push {r4, lr} - mov r2, #0x97 - lsl r2, r2, #2 - ldr r3, [r0, r2] - mov r4, #0 - add r1, r3, r1 - str r1, [r0, r2] - add r1, r2, #0 - ldr r3, [r0, r2] - add r1, #0xc4 - cmp r3, r1 - blt _02262CD8 - add r1, r2, #0 - add r1, #0xc4 - str r1, [r0, r2] - mov r4, #1 -_02262CD8: - mov r1, #0x97 - lsl r1, r1, #2 - ldr r1, [r0, r1] - bl ov117_02262C60 - add r0, r4, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_02262CB8 - - thumb_func_start ov117_02262CE8 -ov117_02262CE8: ; 0x02262CE8 - mov r1, #0x97 - ldr r3, _02262CF8 ; =ov117_02262C60 - mov r2, #0 - lsl r1, r1, #2 - str r2, [r0, r1] - ldr r1, [r0, r1] - bx r3 - nop -_02262CF8: .word ov117_02262C60 - thumb_func_end ov117_02262CE8 - - thumb_func_start ov117_02262CFC -ov117_02262CFC: ; 0x02262CFC - push {r4, lr} - mov r2, #0x9a - add r4, r0, #0 - lsl r2, r2, #2 - ldrsh r1, [r4, r2] - cmp r1, #0 - beq _02262D44 - add r1, r2, #0 - add r1, #0xd - ldrb r1, [r4, r1] - add r3, r1, #1 - add r1, r2, #0 - add r1, #0xd - strb r3, [r4, r1] - add r1, r2, #0 - add r1, #0xd - ldrb r1, [r4, r1] - cmp r1, #4 - bne _02262D32 - sub r2, #0xc - ldr r2, [r4, r2] - lsr r1, r2, #0x1f - add r1, r2, r1 - asr r1, r1, #1 - bl ov117_02262C60 - pop {r4, pc} -_02262D32: - cmp r1, #8 - bne _02262D44 - sub r2, #0xc - ldr r1, [r4, r2] - bl ov117_02262C60 - ldr r0, _02262D48 ; =0x00000275 - mov r1, #0 - strb r1, [r4, r0] -_02262D44: - pop {r4, pc} - nop -_02262D48: .word 0x00000275 - thumb_func_end ov117_02262CFC - - thumb_func_start ov117_02262D4C -ov117_02262D4C: ; 0x02262D4C - push {r4, lr} - sub sp, #8 - add r4, r1, #0 - cmp r0, #0 - beq _02262D5A - mov r0, #1 - b _02262D5C -_02262D5A: - mov r0, #0 -_02262D5C: - lsl r1, r0, #0xf - ldr r0, _02262D90 ; =0x21085EF7 - mov r2, #1 - orr r0, r1 - str r0, [sp, #4] - mov r0, #0x30 - add r1, sp, #4 - bl NNS_G3dGeBufferOP_N - cmp r4, #0 - beq _02262D76 - mov r0, #1 - b _02262D78 -_02262D76: - mov r0, #0 -_02262D78: - lsl r1, r0, #0xf - ldr r0, _02262D94 ; =0x00007FFF - mov r2, #1 - orr r0, r1 - str r0, [sp] - mov r0, #0x31 - add r1, sp, #0 - bl NNS_G3dGeBufferOP_N - add sp, #8 - pop {r4, pc} - nop -_02262D90: .word 0x21085EF7 -_02262D94: .word 0x00007FFF - thumb_func_end ov117_02262D4C diff --git a/asm/overlay117/ov117_02263AF0.s b/asm/overlay117/ov117_02263AF0.s index 3f1c392c03..d89231dd65 100644 --- a/asm/overlay117/ov117_02263AF0.s +++ b/asm/overlay117/ov117_02263AF0.s @@ -5423,193 +5423,6 @@ _02266494: ; .align 2, 0 thumb_func_end ov117_02266440 - thumb_func_start ov117_02266498 -ov117_02266498: ; 0x02266498 - push {r3, r4, r5, lr} - mov r1, #0xc - mov r2, #0x6e - add r5, r0, #0 - bl sub_0200681C - mov r1, #0 - mov r2, #0xc - add r4, r0, #0 - bl MI_CpuFill8 - add r0, r5, #0 - bl sub_02006840 - str r0, [r4, #0] - mov r0, #1 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_02266498 - - thumb_func_start ov117_022664BC -ov117_022664BC: ; 0x022664BC - push {r3, r4, r5, lr} - add r5, r1, #0 - bl sub_0200682C - add r4, r0, #0 - ldr r0, [r4, #0] - add r1, r0, #0 - add r1, #0x3d - ldrb r1, [r1] - cmp r1, #1 - bne _02266542 - add r1, r0, #0 - add r1, #0x3e - ldrb r1, [r1] - cmp r1, #0 - beq _022664E4 - cmp r1, #1 - beq _02266506 - cmp r1, #2 - b _0226651E -_022664E4: - bl sub_0200F2AC - cmp r0, #1 - bne _022664F0 - bl sub_0200F2C0 -_022664F0: - mov r0, #0 - bl sub_0200F370 - ldr r1, [r4, #0] - add r0, r1, #0 - add r0, #0x3e - ldrb r0, [r0] - add r1, #0x3e - add r0, r0, #1 - strb r0, [r1] - b _0226653E -_02266506: - bl ov114_0225CA98 - cmp r0, #1 - bne _0226653E - ldr r1, [r4, #0] - add r0, r1, #0 - add r0, #0x3e - ldrb r0, [r0] - add r1, #0x3e - add r0, r0, #1 - strb r0, [r1] - b _0226653E -_0226651E: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0226652C - bl ov114_0225C838 - mov r0, #0 - str r0, [r4, #4] -_0226652C: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0226653A - bl ov114_0225C904 - mov r0, #0 - str r0, [r4, #8] -_0226653A: - mov r0, #1 - pop {r3, r4, r5, pc} -_0226653E: - mov r0, #0 - pop {r3, r4, r5, pc} -_02266542: - ldr r1, [r5, #0] - cmp r1, #5 - bhi _022665E0 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02266554: ; jump table - .short _02266560 - _02266554 - 2 ; case 0 - .short _02266574 - _02266554 - 2 ; case 1 - .short _02266584 - _02266554 - 2 ; case 2 - .short _022665A8 - _02266554 - 2 ; case 3 - .short _022665BC - _02266554 - 2 ; case 4 - .short _022665E0 - _02266554 - 2 ; case 5 -_02266560: - add r0, #0x31 - ldrb r0, [r0] - cmp r0, #0 - bne _0226656E - mov r0, #1 - str r0, [r5, #0] - b _022665E4 -_0226656E: - mov r0, #3 - str r0, [r5, #0] - b _022665E4 -_02266574: - mov r1, #0x6e - bl ov114_0225C82C - str r0, [r4, #4] - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _022665E4 -_02266584: - ldr r0, [r4, #4] - bl ov114_0225C8BC - cmp r0, #1 - bne _022665E4 - ldr r0, [r4, #4] - bl ov114_0225C8CC - ldr r1, [r4, #0] - str r0, [r1, #0x34] - ldr r0, [r4, #4] - bl ov114_0225C838 - mov r0, #0 - str r0, [r4, #4] - mov r0, #5 - str r0, [r5, #0] - b _022665E4 -_022665A8: - add r1, r0, #0 - add r1, #0x10 - mov r2, #0x6e - bl ov114_0225C8F8 - str r0, [r4, #8] - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _022665E4 -_022665BC: - ldr r0, [r4, #8] - bl ov114_0225C9A0 - cmp r0, #1 - bne _022665E4 - ldr r0, [r4, #8] - bl ov114_0225C9A4 - ldr r1, [r4, #0] - str r0, [r1, #0x38] - ldr r0, [r4, #8] - bl ov114_0225C904 - mov r0, #0 - str r0, [r4, #8] - mov r0, #5 - str r0, [r5, #0] - b _022665E4 -_022665E0: - mov r0, #1 - pop {r3, r4, r5, pc} -_022665E4: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov117_022664BC - - thumb_func_start ov117_022665E8 -ov117_022665E8: ; 0x022665E8 - push {r4, lr} - add r4, r0, #0 - bl sub_0200682C - add r0, r4, #0 - bl sub_02006830 - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov117_022665E8 - .rodata .global Unk_ov117_02266B6C diff --git a/asm/overlay117/ov117_022665FC.inc b/asm/overlay117/ov117_022665FC.inc deleted file mode 100644 index 43d810fde5..0000000000 --- a/asm/overlay117/ov117_022665FC.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public GF_AssertFail -.public sub_02032798 -.public sub_020359DC -.public ov117_02262044 diff --git a/asm/overlay117/ov117_022665FC.s b/asm/overlay117/ov117_022665FC.s deleted file mode 100644 index 7cd15536c0..0000000000 --- a/asm/overlay117/ov117_022665FC.s +++ /dev/null @@ -1,145 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_022665FC.inc" - - .text - - thumb_func_start ov117_022665FC -ov117_022665FC: ; 0x022665FC - ldr r3, _02266608 ; =sub_02032798 - add r2, r0, #0 - ldr r0, _0226660C ; =0x02266FE4 - mov r1, #4 - bx r3 - nop -_02266608: .word sub_02032798 -_0226660C: .word 0x02266FE4 - thumb_func_end ov117_022665FC - - thumb_func_start ov117_02266610 -ov117_02266610: ; 0x02266610 - mov r0, #0x14 - bx lr - thumb_func_end ov117_02266610 - - thumb_func_start ov117_02266614 -ov117_02266614: ; 0x02266614 - mov r0, #4 - bx lr - thumb_func_end ov117_02266614 - - thumb_func_start ov117_02266618 -ov117_02266618: ; 0x02266618 - add r1, r0, #0 - add r0, r3, #0 - ldr r3, _02266620 ; =ov117_02262044 - bx r3 - ; .align 2, 0 -_02266620: .word ov117_02262044 - thumb_func_end ov117_02266618 - - thumb_func_start ov117_02266624 -ov117_02266624: ; 0x02266624 - push {r3, lr} - mov r0, #0x18 - mov r2, #0x14 - bl sub_020359DC - cmp r0, #1 - bne _02266636 - mov r0, #1 - pop {r3, pc} -_02266636: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov117_02266624 - - thumb_func_start ov117_0226663C -ov117_0226663C: ; 0x0226663C - mov r0, #0xbf - mov r1, #1 - lsl r0, r0, #6 - str r1, [r3, r0] - bx lr - ; .align 2, 0 - thumb_func_end ov117_0226663C - - thumb_func_start ov117_02266648 -ov117_02266648: ; 0x02266648 - push {r3, lr} - mov r1, #0 - mov r0, #0x19 - add r2, r1, #0 - bl sub_020359DC - cmp r0, #1 - bne _0226665C - mov r0, #1 - pop {r3, pc} -_0226665C: - mov r0, #0 - pop {r3, pc} - thumb_func_end ov117_02266648 - - thumb_func_start ov117_02266660 -ov117_02266660: ; 0x02266660 - push {r4, r5, r6, lr} - add r4, r3, #0 - ldr r3, [r4, #0] - ldr r1, [r2, #0] - add r5, r3, #0 - add r5, #0x30 - ldrb r5, [r5] - mov r2, #0 - cmp r5, #0 - ble _0226668E -_02266674: - add r6, r3, #0 - add r6, #0x2c - ldrb r6, [r6] - cmp r0, r6 - bne _02266686 - lsl r0, r2, #2 - add r0, r4, r0 - str r1, [r0, #0xc] - b _0226668E -_02266686: - add r2, r2, #1 - add r3, r3, #1 - cmp r2, r5 - blt _02266674 -_0226668E: - ldr r0, [r4, #0] - add r0, #0x30 - ldrb r0, [r0] - cmp r2, r0 - blt _0226669C - bl GF_AssertFail -_0226669C: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - pop {r4, r5, r6, pc} - thumb_func_end ov117_02266660 - - thumb_func_start ov117_022666A4 -ov117_022666A4: ; 0x022666A4 - push {r3, lr} - mov r0, #0x64 - str r0, [sp] - mov r0, #0x17 - add r1, sp, #0 - mov r2, #4 - bl sub_020359DC - cmp r0, #1 - bne _022666BC - mov r0, #1 - pop {r3, pc} -_022666BC: - mov r0, #0 - pop {r3, pc} - thumb_func_end ov117_022666A4 - - .rodata - - .global Unk_ov117_02266FE4 -Unk_ov117_02266FE4: ; 0x02266FE4 - .incbin "incbin/overlay117_rodata.bin", 0x6EC, 0x71C - 0x6EC \ No newline at end of file diff --git a/asm/overlay117/ov117_022666C0.inc b/asm/overlay117/ov117_022666C0.inc deleted file mode 100644 index 94653f3a52..0000000000 --- a/asm/overlay117/ov117_022666C0.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public sub_0203608C -.public MI_CpuFill8 -.public ov117_02262130 -.public ov117_0226238C -.public ov117_02263AF0 -.public ov117_02263DC4 -.public ov117_02264808 diff --git a/asm/overlay117/ov117_022666C0.s b/asm/overlay117/ov117_022666C0.s deleted file mode 100644 index 6e2721e75c..0000000000 --- a/asm/overlay117/ov117_022666C0.s +++ /dev/null @@ -1,333 +0,0 @@ - .include "macros/function.inc" - .include "overlay117/ov117_022666C0.inc" - - .text - - thumb_func_start ov117_022666C0 -ov117_022666C0: ; 0x022666C0 - push {r4, lr} - add r4, r1, #0 - ldr r2, [r4, #0] - lsl r3, r2, #2 - ldr r2, _022666E4 ; =0x02267014 - ldr r2, [r2, r3] - cmp r2, #0 - beq _022666E0 - blx r2 - add r0, r4, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #1 - pop {r4, pc} -_022666E0: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_022666E4: .word 0x02267014 - thumb_func_end ov117_022666C0 - - thumb_func_start ov117_022666E8 -ov117_022666E8: ; 0x022666E8 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #1 - str r0, [sp] - add r2, sp, #4 - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r2!, {r0, r1} - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r4, r5, pc} - thumb_func_end ov117_022666E8 - - thumb_func_start ov117_02266714 -ov117_02266714: ; 0x02266714 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - bl sub_0203608C - ldrb r1, [r4, #4] - cmp r1, r0 - beq _0226672C - add r0, r5, #0 - add r1, r4, #4 - bl ov117_02263DC4 -_0226672C: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_02266714 - - thumb_func_start ov117_02266730 -ov117_02266730: ; 0x02266730 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - add r5, r1, #0 - add r4, r2, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #2 - str r0, [sp] - add r0, sp, #0 - strh r5, [r0, #4] - mov r1, #5 - strb r1, [r0, #6] - strb r4, [r0, #7] - add r0, r6, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov117_02266730 - - thumb_func_start ov117_02266760 -ov117_02266760: ; 0x02266760 - push {r3, r4, r5, lr} - add r4, r1, #0 - ldr r1, _02266780 ; =0x00002FD0 - add r5, r0, #0 - ldr r2, [r5, r1] - add r2, r2, #1 - str r2, [r5, r1] - bl ov117_02264808 - ldrb r1, [r4, #6] - ldrb r2, [r4, #7] - add r0, r5, #0 - bl ov117_0226238C - pop {r3, r4, r5, pc} - nop -_02266780: .word 0x00002FD0 - thumb_func_end ov117_02266760 - - thumb_func_start ov117_02266784 -ov117_02266784: ; 0x02266784 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r7, r0, #0 - add r5, r1, #0 - add r4, r2, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - add r6, r3, #0 - bl MI_CpuFill8 - mov r0, #3 - str r0, [sp] - add r0, sp, #0 - strh r5, [r0, #4] - strb r4, [r0, #6] - mov r1, #4 - strb r1, [r0, #7] - strb r6, [r0, #8] - add r0, r7, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov117_02266784 - - thumb_func_start ov117_022667B8 -ov117_022667B8: ; 0x022667B8 - push {r3, r4, r5, lr} - add r4, r1, #0 - ldrh r1, [r4, #4] - add r5, r0, #0 - ldr r0, _022667E8 ; =0x00002FC8 - ldr r3, _022667EC ; =0x00001428 - str r1, [r5, r0] - ldr r1, [r5, #0] - ldrb r2, [r4, #6] - add r1, #0x30 - ldrb r1, [r1] - ldr r0, [r5, #0x2c] - add r3, r5, r3 - bl ov117_02263AF0 - ldr r0, _022667F0 ; =0x00002FCC - mov r1, #1 - str r1, [r5, r0] - ldrb r1, [r4, #7] - ldrb r2, [r4, #8] - add r0, r5, #0 - bl ov117_0226238C - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022667E8: .word 0x00002FC8 -_022667EC: .word 0x00001428 -_022667F0: .word 0x00002FCC - thumb_func_end ov117_022667B8 - - thumb_func_start ov117_022667F4 -ov117_022667F4: ; 0x022667F4 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #4 - str r0, [sp] - mov r1, #2 - add r0, sp, #0 - strb r1, [r0, #4] - strb r4, [r0, #5] - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_022667F4 - - thumb_func_start ov117_02266820 -ov117_02266820: ; 0x02266820 - add r2, r1, #0 - mov r1, #3 - str r1, [r0, #0x20] - ldrb r1, [r2, #4] - ldr r3, _02266830 ; =ov117_0226238C - ldrb r2, [r2, #5] - bx r3 - nop -_02266830: .word ov117_0226238C - thumb_func_end ov117_02266820 - - thumb_func_start ov117_02266834 -ov117_02266834: ; 0x02266834 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #5 - str r0, [sp] - mov r1, #3 - add r0, sp, #0 - strb r1, [r0, #4] - strb r4, [r0, #5] - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_02266834 - - thumb_func_start ov117_02266860 -ov117_02266860: ; 0x02266860 - add r3, r1, #0 - ldr r1, _02266874 ; =0x00002FBC - mov r2, #1 - str r2, [r0, r1] - mov r1, #6 - str r1, [r0, #0x20] - ldrb r1, [r3, #4] - ldrb r2, [r3, #5] - ldr r3, _02266878 ; =ov117_0226238C - bx r3 - ; .align 2, 0 -_02266874: .word 0x00002FBC -_02266878: .word ov117_0226238C - thumb_func_end ov117_02266860 - - thumb_func_start ov117_0226687C -ov117_0226687C: ; 0x0226687C - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r6, r0, #0 - add r5, r1, #0 - add r4, r2, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #6 - str r0, [sp] - add r0, sp, #0 - strb r5, [r0, #4] - strb r4, [r0, #5] - add r0, r6, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov117_0226687C - - thumb_func_start ov117_022668A8 -ov117_022668A8: ; 0x022668A8 - ldr r3, _022668B4 ; =ov117_0226238C - add r2, r1, #0 - ldrb r1, [r2, #4] - ldrb r2, [r2, #5] - bx r3 - nop -_022668B4: .word ov117_0226238C - thumb_func_end ov117_022668A8 - - thumb_func_start ov117_022668B8 -ov117_022668B8: ; 0x022668B8 - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - mov r0, #7 - str r0, [sp] - mov r1, #6 - add r0, sp, #0 - strb r1, [r0, #4] - strb r4, [r0, #5] - add r0, r5, #0 - add r1, sp, #0 - bl ov117_02262130 - add sp, #0x14 - pop {r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov117_022668B8 - - thumb_func_start ov117_022668E4 -ov117_022668E4: ; 0x022668E4 - add r2, r1, #0 - mov r1, #1 - str r1, [r0, #0x20] - ldrb r1, [r2, #4] - ldr r3, _022668F4 ; =ov117_0226238C - ldrb r2, [r2, #5] - bx r3 - nop -_022668F4: .word ov117_0226238C - thumb_func_end ov117_022668E4 - ; 0x022668F8 - - - .rodata - - .global Unk_ov117_02267014 -Unk_ov117_02267014: ; 0x02267014 - .incbin "incbin/overlay117_rodata.bin", 0x71C, 0x73C - 0x71C - - .bss - .space 0x0 diff --git a/main.lsf b/main.lsf index b8fe25ece6..2daafedbcd 100644 --- a/main.lsf +++ b/main.lsf @@ -2166,13 +2166,13 @@ Overlay overlay116 Overlay overlay117 { After overlay114 - Object asm/overlay117/ov117_02260440.o - Object asm/overlay117/ov117_02260668.o - Object asm/overlay117/ov117_022626B0_thumb.o - Object asm/overlay117/ov117_022626B0_arm.o + Object src/overlay117/ov117_02260440.o + Object src/overlay117/ov117_02260668.o + Object src/overlay117/ov117_022626B0.o Object asm/overlay117/ov117_02263AF0.o - Object asm/overlay117/ov117_022665FC.o - Object asm/overlay117/ov117_022666C0.o + Object src/overlay117/ov117_02266498.o + Object src/overlay117/ov117_022665FC.o + Object src/overlay117/ov117_022666C0.o } Overlay overlay118 diff --git a/src/overlay117/ov117_02260440.c b/src/overlay117/ov117_02260440.c new file mode 100644 index 0000000000..3a1a2809f3 --- /dev/null +++ b/src/overlay117/ov117_02260440.c @@ -0,0 +1,181 @@ +#include +#include +#include + +#include "struct_decls/struct_020067E8_decl.h" + +#include "struct_defs/struct_0208BE5C.h" +#include "overlay117/struct_ov117_02260440.h" +#include "overlay117/struct_ov117_022605C0.h" + +#include "unk_020067E8.h" +#include "unk_02017E74.h" +#include "unk_020329E0.h" +#include "unk_02034198.h" +#include "unk_020363E8.h" +#include "unk_020366A0.h" +#include "overlay004/ov4_021D0D80.h" +#include "overlay114/ov114_0225C700.h" +#include "overlay117/ov117_02260440.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_02266498.h" + +static const UnkStruct_0208BE5C Unk_ov117_022668F8 = { + ov117_02260668, + ov117_0226098C, + ov117_02260C10, + 0xFFFFFFFF +}; + +static const UnkStruct_0208BE5C Unk_ov117_02266908 = { + ov117_02266498, + ov117_022664BC, + ov117_022665E8, + 0xFFFFFFFF +}; + +static void ov117_022605D8(UnkStruct_ov117_022605C0 * param0, UnkStruct_ov117_02260440 * param1); +static BOOL ov117_02260630(UnkStruct_ov117_022605C0 * param0); + +int ov117_02260440 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02260440 * v0 = sub_02006840(param0); + UnkStruct_ov117_022605C0 * v1; + + sub_02017FC8(3, 110, 0x60000); + + v1 = sub_0200681C(param0, sizeof(UnkStruct_ov117_022605C0), 110); + MI_CpuClear8(v1, sizeof(UnkStruct_ov117_022605C0)); + ov117_022605D8(v1, v0); + + return 1; +} + +int ov117_02260474 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_022605C0 * v0 = sub_0200682C(param0); + UnkStruct_ov117_02260440 * v1 = sub_02006840(param0); + + if (ov117_02260630(v0) == 1) { + return 1; + } + + switch (*param1) { + case 0: + v0->unk_31 = 0; + v0->unk_28 = sub_020067E8(&Unk_ov117_02266908, v0, 110); + (*param1)++; + break; + case 1: + if (sub_02006844(v0->unk_28) == 1) { + sub_02006814(v0->unk_28); + v0->unk_28 = NULL; + (*param1)++; + } + break; + case 2: + v0->unk_31 = 1; + v0->unk_28 = sub_020067E8(&Unk_ov117_022668F8, v0, 110); + (*param1)++; + break; + case 3: + if (sub_02006844(v0->unk_28) == 1) { + sub_02006814(v0->unk_28); + v0->unk_28 = NULL; + (*param1)++; + } + break; + case 4: + if (v1->unk_38) { + ov4_021D1F18(); + } + + v0->unk_31 = 2; + v0->unk_28 = sub_020067E8(&Unk_ov117_02266908, v0, 110); + (*param1)++; + break; + case 5: + if (sub_02006844(v0->unk_28) == 1) { + sub_02006814(v0->unk_28); + v0->unk_28 = NULL; + + if (v0->unk_38 == 1) { + (*param1) = 0; + } else { + (*param1)++; + } + } + break; + case 6: + sub_020388F4(0, 1); + sub_020364F0(222); + (*param1)++; + break; + case 7: + if ((sub_02036540(222) == 1) || (sub_02035E18() < sub_02032E64())) { + (*param1)++; + } + + break; + case 8: + default: + return 1; + } + + return 0; +} + +int ov117_022605C0 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_022605C0 * v0 = sub_0200682C(param0); + + sub_02006830(param0); + sub_0201807C(110); + + return 1; +} + +static void ov117_022605D8 (UnkStruct_ov117_022605C0 * param0, UnkStruct_ov117_02260440 * param1) +{ + int v0, v1, v2, v3; + + v3 = sub_0203608C(); + v2 = 0; + v1 = 0; + + for (v0 = 0; v0 < 4; v0++) { + if (sub_02032EE8(v0) != NULL) { + param0->unk_2C[v1] = v0; + + if (v0 == v3) { + v2 = v1; + } + + v1++; + } else { + param0->unk_2C[v0] = 0xffff; + } + } + + param0->unk_30 = v1; + param0->unk_3C = param1->unk_38; + + ov114_0225C700(¶m0->unk_00, param1->unk_39, param1->unk_34, param1->unk_38, ¶m1->unk_00); +} + +static BOOL ov117_02260630 (UnkStruct_ov117_022605C0 * param0) +{ + if (param0->unk_3D == 0) { + if (ov114_0225CA54(¶m0->unk_00) == 1) { + param0->unk_3D = 1; + } + } + + if (param0->unk_3D == 1) { + if (param0->unk_28 == NULL) { + return 1; + } + } + + return 0; +} diff --git a/src/overlay117/ov117_02260668.c b/src/overlay117/ov117_02260668.c new file mode 100644 index 0000000000..f75adc1763 --- /dev/null +++ b/src/overlay117/ov117_02260668.c @@ -0,0 +1,1959 @@ +#include +#include + +#include "data_021BF67C.h" +#include "enums.h" + +#include "struct_decls/struct_020067E8_decl.h" +#include "struct_decls/struct_02006C24_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_0201CD38_decl.h" +#include "struct_decls/struct_020203AC_decl.h" +#include "struct_decls/struct_02023790_decl.h" +#include "struct_decls/struct_02025E6C_decl.h" + +#include "struct_defs/struct_020170F4.h" +#include "struct_defs/struct_0207C690.h" +#include "struct_defs/struct_02099F80.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay097/struct_ov97_0222DB78.h" +#include "overlay104/struct_ov104_022412F4.h" +#include "overlay104/struct_ov104_02241308.h" +#include "overlay104/struct_ov104_0224133C.h" +#include "overlay115/struct_ov115_0226527C.h" +#include "overlay117/struct_ov117_02261280.h" +#include "overlay117/struct_ov117_02261C2C.h" +#include "overlay117/struct_ov117_02261F08.h" +#include "overlay117/struct_ov117_022621D4.h" +#include "overlay117/struct_ov117_02262664.h" + +#include "unk_02002328.h" +#include "unk_02002B7C.h" +#include "unk_02002F38.h" +#include "unk_02005474.h" +#include "unk_020067E8.h" +#include "unk_020068C8.h" +#include "unk_02006E3C.h" +#include "unk_020093B4.h" +#include "unk_0200AC5C.h" +#include "unk_0200B358.h" +#include "unk_0200C6E4.h" +#include "unk_0200D9E8.h" +#include "unk_0200DA60.h" +#include "unk_0200F174.h" +#include "unk_02012744.h" +#include "unk_02014000.h" +#include "unk_020170BC.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D670.h" +#include "unk_0201DBEC.h" +#include "unk_0201E3D8.h" +#include "unk_0201FE94.h" +#include "unk_02020020.h" +#include "unk_02023790.h" +#include "unk_0202419C.h" +#include "unk_02024220.h" +#include "unk_02025E68.h" +#include "unk_02034198.h" +#include "unk_020363E8.h" +#include "unk_020366A0.h" +#include "unk_020393C8.h" +#include "overlay004/ov4_021D0D80.h" +#include "overlay114/ov114_0225C700.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_022626B0.h" +#include "overlay117/ov117_02263AF0.h" +#include "overlay117/ov117_022665FC.h" +#include "overlay117/ov117_022666C0.h" + +static void ov117_02260DA0(void * param0); +static UnkStruct_0207C690 * ov117_02260E14(int param0); +static void ov117_02260E34(void); +static void ov117_02260EB8(UnkStruct_0207C690 * param0); +static void ov117_02260F7C(UnkStruct_0201CD38 * param0, void * param1); +static void ov117_022610D8(UnkStruct_02018340 * param0); +static void ov117_02261280(UnkStruct_ov117_02261280 * param0); +static void ov117_02261574(UnkStruct_ov117_02261280 * param0); +static void ov117_022615E0(UnkStruct_ov117_02261280 * param0); +static void ov117_0226168C(UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1); +static void ov117_022618E8(UnkStruct_ov117_02261280 * param0); +static void ov117_02261940(UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1); +static void ov117_022619F8(UnkStruct_ov117_02261280 * param0); +static void ov117_02261A2C(UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1); +static void ov117_02261AC4(UnkStruct_ov117_02261280 * param0); +static void ov117_02261AC8(UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1); +static void ov117_02261C28(UnkStruct_ov117_02261280 * param0); +static void ov117_02261C2C(UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1); +static void ov117_02261DD0(UnkStruct_ov117_02261280 * param0); +static void ov117_02260EC0(UnkStruct_ov117_02261280 * param0); +static void ov117_02260F64(UnkStruct_ov117_02261280 * param0); +BOOL ov117_02261FF4(UnkStruct_ov117_02261280 * param0); +void ov117_02262044(UnkStruct_ov117_02261280 * param0, int param1, const UnkStruct_ov117_022621D4 * param2); +UnkStruct_ov117_022621D4 * ov117_022620A0(UnkStruct_ov117_02261280 * param0, int param1); +static BOOL ov117_022620E0(UnkStruct_ov117_02261280 * param0, int param1, const UnkStruct_ov117_022621D4 * param2); +void ov117_02262130(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static BOOL ov117_0226217C(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +UnkStruct_ov117_022621D4 * ov117_022621D4(UnkStruct_ov117_02261280 * param0); +static int ov117_02262200(UnkStruct_ov117_02261280 * param0); +static void ov117_02262270(UnkStruct_ov117_02261280 * param0); +int ov117_022622B8(UnkStruct_ov117_02261280 * param0); +int ov117_0226200C(UnkStruct_ov117_02261280 * param0); +static BOOL ov117_022623B0(UnkStruct_ov117_02261280 * param0); +static int ov117_02262448(UnkStruct_ov117_02261280 * param0, int param1); +static int ov117_02262484(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1); +static int ov117_0226251C(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1); +static int ov117_022625F8(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1); +static BOOL ov117_02262664(UnkStruct_ov117_02261280 * param0); +static void ov117_02261368(UnkStruct_ov117_02261280 * param0); +static void ov117_022613B8(UnkStruct_ov117_02261280 * param0); +static void ov117_022613EC(UnkStruct_ov117_02261280 * param0); +static void ov117_022614AC(UnkStruct_ov117_02261280 * param0, int param1); +BOOL ov117_02261E38(UnkStruct_ov117_02261280 * param0, int param1); +void ov117_02261F08(UnkStruct_ov117_02261280 * param0, int param1, int param2); +void ov117_02261F3C(UnkStruct_ov117_02261280 * param0); +void ov117_02261FA4(UnkStruct_ov117_02261280 * param0); +static void ov117_022626AC(UnkStruct_020203AC * param0); +static u32 ov117_02261644(u32 param0, BOOL param1); +static u32 ov117_02261668(u32 param0, BOOL param1); + +static const UnkStruct_ov115_0226527C Unk_ov117_02266918 = { + 0x0, + 0x0, + 0x0 +}; + +static int(*const Unk_ov117_02266920[])(UnkStruct_ov117_02261280 *, UnkStruct_ov117_02262664 *) = { + ov117_02262484, ov117_0226251C, ov117_022625F8, +}; + +__attribute__((aligned(4))) static const u8 Unk_ov117_02266954[][4] = { + {0x0}, + {0x0}, + {0x0, 0x1}, + {0x0, 0x2, 0x1}, + {0x0, 0x3, 0x1, 0x2} +}; + +__attribute__((aligned(4))) static const u8 Unk_ov117_02266968[][4] = { + {0x0}, + {0x0}, + {0x0, 0x1}, + {0x0, 0x3, 0x2}, + {0x0, 0x3, 0x1, 0x2} +}; + +static const UnkStruct_ov104_0224133C Unk_ov117_022669A8 = { + 0x0, + 0x80, + 0x0, + 0x20, + 0x0, + 0x80, + 0x0, + 0x20 +}; + +static const UnkStruct_ov104_022412F4 Unk_ov117_0226697C = { + 0x60, + 0x10000, + 0x4000, + GX_OBJVRAMMODE_CHAR_1D_128K, + GX_OBJVRAMMODE_CHAR_1D_32K +}; + +static const UnkStruct_ov104_02241308 Unk_ov117_02266990 = { + 0x60, + 0x20, + 0x40, + 0x40, + 0x2, + 0x2 +}; + +static const struct { + u32 unk_00; + u32 unk_04; + u32 unk_08; + u32 unk_0C; + u32 unk_10; +} Unk_ov117_022669F0[] = { + {0x20, 0x27, 0x28, 0x29, 0x2A}, + {0x21, 0x2F, 0x30, 0x31, 0x32}, + {0x22, 0x33, 0x34, 0x35, 0x36}, + {0x1F, 0x2B, 0x2C, 0x2D, 0x2E} +}; + +int ov117_02260668 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02261280 * v0; + + sub_02017798(NULL, NULL); + sub_0201FF00(); + sub_0201FF68(); + GX_SetVisiblePlane(0); + GXS_SetVisiblePlane(0); + GX_SetVisibleWnd(GX_WNDMASK_NONE); + GXS_SetVisibleWnd(GX_WNDMASK_NONE); + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG0, GX_BLEND_ALL, 16, 16); + G2S_SetBlendAlpha((GX_BLEND_PLANEMASK_BG3), (GX_BLEND_BGALL | GX_BLEND_PLANEMASK_OBJ), 13, 3); + + v0 = sub_0200681C(param0, sizeof(UnkStruct_ov117_02261280), 110); + MI_CpuClear8(v0, sizeof(UnkStruct_ov117_02261280)); + sub_020182CC(&v0->unk_A8, 110, 32); + + v0->unk_98 = ov117_02260E14(110); + v0->unk_00 = sub_02006840(param0); + ov117_022665FC(v0); + v0->unk_8C = sub_02002F38(110); + + sub_02003858(v0->unk_8C, 1); + sub_02002F70(v0->unk_8C, 0, 0x200, 110); + sub_02002F70(v0->unk_8C, 1, 0x200, 110); + sub_02002F70(v0->unk_8C, 2, (((16 - 2) * 16) * sizeof(u16)), 110); + sub_02002F70(v0->unk_8C, 3, 0x200, 110); + + v0->unk_2C = sub_02018340(110); + + sub_0201DBEC(64, 110); + sub_02017DD4(4, 8); + ov117_022610D8(v0->unk_2C); + sub_0201E3D8(); + sub_0201E450(4); + ov117_02260EC0(v0); + + v0->unk_24 = sub_0200C6E4(110); + + sub_0200C73C(v0->unk_24, &Unk_ov117_022669A8, &Unk_ov117_0226697C, (16 + 16)); + sub_0200966C(NNS_G2D_VRAM_TYPE_2DMAIN, GX_OBJVRAMMODE_CHAR_1D_64K); + sub_02009704(NNS_G2D_VRAM_TYPE_2DMAIN); + + v0->unk_28 = sub_0200C704(v0->unk_24); + + sub_0200C7C0(v0->unk_24, v0->unk_28, (96 + 128)); + sub_0200CB30(v0->unk_24, v0->unk_28, &Unk_ov117_02266990); + sub_0200964C(sub_0200C738(v0->unk_24), 0, ((192 + 160) << FX32_SHIFT)); + ov117_02261574(v0); + + v0->unk_80 = sub_0200B144(0, 26, 9, 110); + v0->unk_84 = sub_0200B358(110); + v0->unk_88 = sub_02023790((2 * 160), 110); + v0->unk_90 = sub_02012744((2 * 6 + 6 + 1), 110); + + ov117_02265210(v0, &v0->unk_1468); + + { + UnkStruct_02006C24 * v1; + v1 = sub_02006C24(173, 110); + + ov117_02261A2C(v0, v1); + ov117_02261AC8(v0, v1); + ov117_02261280(v0); + ov117_0226168C(v0, v1); + ov117_02261940(v0, v1); + ov117_02261C2C(v0, v1); + sub_02006CA8(v1); + } + + sub_02003050(v0->unk_8C, 14, 6, 110, 0, 0x20, 0xe * 16); + sub_02003050(v0->unk_8C, 14, 6, 110, 1, 0x20, 5 * 16); + ov117_022613EC(v0); + ov117_022614AC(v0, 0); + ov117_02261368(v0); + sub_02039734(); + + v0->unk_D4 = ov117_022626B0(v0); + sub_0200F174(0, 27, 27, 0x0, 6, 1, 110); + v0->unk_94 = sub_0200D9E8(ov117_02260F7C, v0, 60000); + + Unk_021BF67C.unk_65 = 1; + + sub_0201FFE8(); + sub_0201FFD0(); + sub_0201FF0C(GX_PLANEMASK_OBJ, 1); + sub_0201FF74(GX_PLANEMASK_OBJ, 1); + + { + sub_02002AE4(1); + sub_02002AC8(0); + sub_02002B20(0); + } + + v0->unk_1C = ov114_0225CAD4(sub_0200D9B0(v0->unk_28), 110); + + { + int v2; + + v2 = ov114_0225CB74(v0->unk_1C); + sub_02003070(v0->unk_8C, 2, v2 * 16, 3 * 0x20); + } + + sub_02017798(ov117_02260DA0, v0); + + if (v0->unk_00->unk_3C) { + ov4_021D1E74(110); + } + + return 1; +} + +int ov117_0226098C (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02261280 * v0 = sub_0200682C(param0); + int v1; + + if (v0->unk_00->unk_3D == 1) { + switch (v0->unk_00->unk_3E) { + case 0: + if (sub_0200F2AC() == 1) { + sub_0200F2C0(); + } + + sub_0200F370(0x0); + GX_SetVisibleWnd(GX_WNDMASK_NONE); + v0->unk_00->unk_3E++; + break; + + default: + case 1: + if (ov114_0225CA98(&v0->unk_00->unk_00) == 1) { + return 1; + } + break; + } + + return 0; + } + + switch (*param1) { + case 0: + if (sub_0200F2AC() == 1) { + (*param1)++; + } + break; + case 1: + sub_020364F0(211); + (*param1)++; + break; + case 2: + if (sub_02036540(211) == 1) { + (*param1)++; + } + break; + case 3: + if (ov117_022666A4(v0) == 1) { + (*param1)++; + } + break; + case 4: + if (v0->unk_08 >= v0->unk_00->unk_30) { + ov117_0226200C(v0); + (*param1)++; + } + break; + case 5: + if (v0->unk_2FC0 == 1) { + ov117_02266150(v0); + sub_0200F174(0, 26, 26, 0x0, 6, 1, 110); + (*param1)++; + } + + ov117_02262664(v0); + + switch (v0->unk_20) { + case 1: + GX_SetVisibleWnd(GX_WNDMASK_W1); + G2_SetWnd1Position(4, 192 - 32 + 8, 8 * 9 + 4, 192 - 8); + G2_SetWnd1InsidePlane(GX_WND_PLANEMASK_OBJ, 0); + G2_SetWndOutsidePlane(GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | GX_WND_PLANEMASK_OBJ, 1); + ov117_02266210(v0); + v0->unk_20 = 2; + case 2: + if (ov117_02266274(v0, &v0->unk_174C) == 1) { + v0->unk_174C.unk_1C = 1; + v0->unk_20 = 0; + } + break; + case 3: + ov114_0225CB8C(v0->unk_1C); + v0->unk_20 = 4; + break; + case 4: + if (ov114_0225CBE0(v0->unk_1C) == 1) { + v0->unk_2FB8 = 1; + v0->unk_1468.unk_F1 = 0; + v0->unk_20 = 5; + ov117_022613B8(v0); + ov117_022614AC(v0, 1); + } + break; + case 6: + ov114_0225CBB0(v0->unk_1C); + v0->unk_20 = 7; + break; + case 7: + if (ov114_0225CBE0(v0->unk_1C) == 1) { + v0->unk_20 = 8; + } + break; + } + + ov117_022623B0(v0); + ov117_02262270(v0); + + if (v0->unk_2FBC == 1) { + break; + } + + if (ov117_02262200(v0) == 1) { + v0->unk_2FC4 = 13; + } + + if (v0->unk_2FB4 == (3 * 30)) { + (void)0; + } + + if ((v0->unk_2FB8 == 1) && (v0->unk_2FB4 <= (43 * 30 + 12))) { + v0->unk_2FB4++; + } + break; + case 6: + if (sub_0200F2AC() == 1) { + return 1; + } + break; + } + + ov117_022626AC(v0->unk_9C); + v0->unk_3D50++; + + return 0; +} + +int ov117_02260C10 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02261280 * v0 = sub_0200682C(param0); + int v1; + + v0->unk_00->unk_10.unk_14 = v0->unk_2FD0; + + ov114_0225CB38(v0->unk_1C); + ov117_022641E4(v0); + ov117_02264508(v0); + + sub_02017798(NULL, NULL); + + ov117_022615E0(v0); + ov117_022618E8(v0); + ov117_022619F8(v0); + ov117_02261AC4(v0); + ov117_02261C28(v0); + ov117_02261DD0(v0); + ov117_02262760(v0, v0->unk_D4); + + for (v1 = 0; v1 < 5; v1++) { + sub_0201A8FC(&v0->unk_30[v1]); + } + + sub_0201FF0C(GX_PLANEMASK_BG0, 0); + sub_0201FF0C(GX_PLANEMASK_BG1, 0); + sub_02019044(v0->unk_2C, 1); + sub_02019044(v0->unk_2C, 2); + sub_02019044(v0->unk_2C, 3); + sub_02019044(v0->unk_2C, 4); + sub_02019044(v0->unk_2C, 5); + sub_02019044(v0->unk_2C, 6); + sub_02019044(v0->unk_2C, 7); + sub_020127BC(v0->unk_90); + sub_0200D0B0(v0->unk_24, v0->unk_28); + sub_0200C8D4(v0->unk_24); + sub_0201DC3C(); + sub_02002FA0(v0->unk_8C, 0); + sub_02002FA0(v0->unk_8C, 1); + sub_02002FA0(v0->unk_8C, 2); + sub_02002FA0(v0->unk_8C, 3); + sub_02002F54(v0->unk_8C); + sub_020237BC(v0->unk_88); + sub_0200B3F0(v0->unk_84); + sub_0200B190(v0->unk_80); + sub_020181C4(v0->unk_2C); + ov117_02260F64(v0); + sub_0200DA58(v0->unk_94); + + GX_SetVisibleWnd(GX_WNDMASK_NONE); + GXS_SetVisibleWnd(GX_WNDMASK_NONE); + + ov117_02260EB8(v0->unk_98); + sub_0201E530(); + sub_02006830(param0); + sub_02002AC8(0); + sub_02002AE4(0); + sub_02002B20(0); + sub_02039794(); + + return 1; +} + +static void ov117_02260DA0 (void * param0) +{ + UnkStruct_ov117_02261280 * v0 = param0; + + ov117_02262950(v0, v0->unk_D4); + + sub_0201DCAC(); + sub_0200C800(); + sub_02003694(v0->unk_8C); + + if (v0->unk_1428.unk_2C == 1) { + sub_02019120(7, 1); + v0->unk_1428.unk_2C = 0; + } else if (v0->unk_1428.unk_2D == 1) { + sub_02019120(7, 0); + v0->unk_1428.unk_2D = 0; + } + + sub_0201C2B8(v0->unk_2C); + OS_SetIrqCheckFlag(OS_IE_V_BLANK); +} + +static UnkStruct_0207C690 * ov117_02260E14 (int param0) +{ + UnkStruct_0207C690 * v0; + + v0 = sub_02024220(param0, 0, 1, 0, 2, ov117_02260E34); + return v0; +} + +static void ov117_02260E34 (void) +{ + sub_0201FF0C(GX_PLANEMASK_BG0, 1); + + G2_SetBG0Priority(1); + G3X_SetShading(GX_SHADING_TOON); + G3X_AntiAlias(1); + G3X_AlphaTest(0, 0); + G3X_AlphaBlend(1); + G3X_EdgeMarking(0); + G3X_SetFog(0, GX_FOGBLEND_COLOR_ALPHA, GX_FOGSLOPE_0x8000, 0); + G3X_SetClearColor(GX_RGB(0, 0, 0), 0, 0x7fff, 63, 0); + G3_ViewPort(0, 0, 255, 191); +} + +static void ov117_02260EB8 (UnkStruct_0207C690 * param0) +{ + sub_020242C4(param0); +} + +static void ov117_02260EC0 (UnkStruct_ov117_02261280 * param0) +{ + VecFx32 v0 = {0, 0x1881e, 0}; + VecFx32 v1 = {0, 0x1881e, (FX32_ONE * 5)}; + + param0->unk_9C = sub_020203AC(110); + + sub_020206D0(&v0, (0x7b << FX32_SHIFT), &Unk_ov117_02266918, (((22 * 0xffff) / 360)), 1, 0, param0->unk_9C); + sub_020206BC((FX32_ONE), (FX32_ONE * 900), param0->unk_9C); + sub_020203D4(param0->unk_9C); + + param0->unk_A0 = sub_020203AC(110); + + sub_020206D0(&v0, (80 << FX32_SHIFT), &Unk_ov117_02266918, (((22 * 0xffff) / 360)), 1, 0, param0->unk_A0); + sub_020206BC((FX32_ONE), (FX32_ONE * 900), param0->unk_A0); +} + +static void ov117_02260F64 (UnkStruct_ov117_02261280 * param0) +{ + sub_020203B8(param0->unk_9C); + sub_020203B8(param0->unk_A0); +} + +static void ov117_02260F7C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov117_02261280 * v0 = param1; + VecFx32 v1, v2; + MtxFx33 v3; + + v1.x = FX32_ONE; + v1.y = FX32_ONE; + v1.z = FX32_ONE; + + v2.x = 0; + v2.y = 0; + v2.z = 0; + + MTX_Identity33(&v3); + + ov117_02265F34(v0, &v0->unk_15A8); + ov117_02265254(v0, &v0->unk_1468); + ov117_02265C1C(v0, &v0->unk_1560); + ov117_02263EF8(v0); + ov117_02263D80(v0, v0->unk_2C, &v0->unk_1428); + ov117_02264560(v0); + ov117_02261F3C(v0); + ov117_02264930(v0); + + { + sub_020241B4(); + sub_020203D4(v0->unk_9C); + sub_02020854(1, v0->unk_9C); + sub_020203EC(); + + NNS_G3dGlbLightVector(0, 0, -FX32_ONE, 0); + NNS_G3dGlbLightColor(0, GX_RGB(28, 28, 28)); + NNS_G3dGlbMaterialColorDiffAmb(GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), 0); + NNS_G3dGlbMaterialColorSpecEmi(GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), 0); + NNS_G3dGlbSetBaseTrans(&v2); + NNS_G3dGlbSetBaseRot(&v3); + NNS_G3dGlbSetBaseScale(&v1); + NNS_G3dGlbFlush(); + + ov117_02262798(v0, v0->unk_D4); + NNS_G3dGePushMtx(); + + { + sub_02017294(&v0->unk_13A0.unk_10); + sub_02017294(&v0->unk_D8.unk_10); + ov117_02261FA4(v0); + } + + NNS_G3dGePopMtx(1); + } + + { + int v4; + + sub_020241B4(); + v4 = sub_0201469C(); + + if (v4 > 0) { + sub_020241B4(); + } + + sub_020146C0(); + } + + sub_0200C7EC(v0->unk_28); + sub_0200C808(); + sub_020241BC(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z); + sub_02038A1C(110, v0->unk_2C); +} + +static void ov117_022610D8 (UnkStruct_02018340 * param0) +{ + sub_0201FF00(); + + { + UnkStruct_02099F80 v0 = { + GX_VRAM_BG_128_B, + GX_VRAM_BGEXTPLTT_NONE, + GX_VRAM_SUB_BG_128_C, + GX_VRAM_SUB_BGEXTPLTT_NONE, + GX_VRAM_OBJ_64_E, + GX_VRAM_OBJEXTPLTT_NONE, + GX_VRAM_SUB_OBJ_16_I, + GX_VRAM_SUB_OBJEXTPLTT_NONE, + GX_VRAM_TEX_0_A, + GX_VRAM_TEXPLTT_01_FG + }; + + sub_0201FE94(&v0); + + MI_CpuClear32((void *)HW_BG_VRAM, HW_BG_VRAM_SIZE); + MI_CpuClear32((void *)HW_DB_BG_VRAM, HW_DB_BG_VRAM_SIZE); + MI_CpuClear32((void *)HW_OBJ_VRAM, HW_OBJ_VRAM_SIZE); + MI_CpuClear32((void *)HW_DB_OBJ_VRAM, HW_DB_OBJ_VRAM_SIZE); + } + + { + UnkStruct_ov84_0223BA5C v1 = { + GX_DISPMODE_GRAPHICS, + GX_BGMODE_0, + GX_BGMODE_1, + GX_BG0_AS_3D, + }; + + sub_02018368(&v1); + } + + { + UnkStruct_ov97_0222DB78 v2[] = { + { + 0, + 0, + 0x1000, + 0, + 3, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0000, + GX_BG_CHARBASE_0x04000, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }, + + { + 0, + 0, + 0x2000, + 0, + 4, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x1000, + GX_BG_CHARBASE_0x0c000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }, + + { + 0, + 0, + 0x1000, + 0, + 3, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x3000, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 2, + 0, + 0, + 0 + }, + }; + + sub_020183C4(param0, 1, &v2[0], 0); + sub_02019EBC(param0, 1); + sub_02019184(param0, 1, 0, 0); + sub_02019184(param0, 1, 3, 0); + sub_020183C4(param0, 2, &v2[1], 0); + sub_02019EBC(param0, 2); + sub_02019184(param0, 2, 0, 0); + sub_02019184(param0, 2, 3, 0); + sub_020183C4(param0, 3, &v2[2], 0); + sub_02019EBC(param0, 3); + sub_02019184(param0, 3, 0, 0); + sub_02019184(param0, 3, 3, 0); + + G2_SetBG0Priority(2); + sub_0201FF0C(GX_PLANEMASK_BG0, 1); + } + + { + int v3; + static const UnkStruct_ov97_0222DB78 v4[] = { + { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0000, + GX_BG_CHARBASE_0x08000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }, + + { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x2000, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 3, + 0, + 0, + 0 + }, + + { + 0, + 0, + 0x1000, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x4000, + GX_BG_CHARBASE_0x14000, + GX_BG_EXTPLTT_01, + 3, + 0, + 0, + 0 + }, + + { + 0, + 0, + 0x400, + 0, + 1, + GX_BG_COLORMODE_256, + GX_BG_SCRBASE_0x6000, + GX_BG_CHARBASE_0x18000, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }, + }; + + for (v3 = 0; v3 < NELEMS(v4); v3++) { + if (v3 < 3) { + sub_020183C4(param0, 4 + v3, &v4[v3], 0); + } else { + sub_020183C4(param0, 4 + v3, &v4[v3], 1); + } + + sub_02019690(4 + v3, 0x20, 0, 110); + sub_02019EBC(param0, 4 + v3); + sub_02019184(param0, 4 + v3, 0, 0); + sub_02019184(param0, 4 + v3, 3, 0); + } + + sub_02019120(7, 0); + } +} + +static void ov117_02261280 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + + sub_0201A7E8(param0->unk_2C, ¶m0->unk_30[0], 1, 11, 0x13, 20, 4, 0xe, (((0x8000 - 0x2000) / 32))); + sub_0201A7E8(param0->unk_2C, ¶m0->unk_30[1], 4, 0x12, 1, 10, 2, 5, (((0x8000 - 0x2000) / 32) + (10 * 2))); + sub_0201A7E8(param0->unk_2C, ¶m0->unk_30[2], 4, 0x15, 0xe, 10, 2, 5, ((((0x8000 - 0x2000) / 32) + (10 * 2)) + (10 * 2))); + sub_0201A7E8(param0->unk_2C, ¶m0->unk_30[3], 4, 1, 14, 10, 2, 5, (((((0x8000 - 0x2000) / 32) + (10 * 2)) + (10 * 2)) + (10 * 2))); + sub_0201ADA4(¶m0->unk_30[1], 0xf); + sub_0201ADA4(¶m0->unk_30[2], 0xf); + sub_0201ADA4(¶m0->unk_30[3], 0xf); + sub_0201A7E8(param0->unk_2C, ¶m0->unk_30[4], 4, 2, 0x13, 0x1c, 4, 5, (((((((0x8000 - 0x2000) / 32) + (10 * 2)) + (10 * 2)) + (10 * 2)) + (10 * 2)) + 9)); + sub_0201ADA4(¶m0->unk_30[4], 0xf); +} + +static void ov117_02261368 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_02023790 * v0; + + sub_0200DC48(¶m0->unk_30[4], 1, ((((((0x8000 - 0x2000) / 32) + (10 * 2)) + (10 * 2)) + (10 * 2)) + (10 * 2)), 6); + + v0 = sub_0200B1EC(param0->unk_80, 3); + sub_0201D78C(¶m0->unk_30[4], 0, v0, 0, 0, 0, ((u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((15 & 0xff) << 0))), NULL); + sub_020237BC(v0); + + sub_0201A9A4(¶m0->unk_30[4]); +} + +static void ov117_022613B8 (UnkStruct_ov117_02261280 * param0) +{ + sub_02019CB8(param0->unk_2C, 4, 1023, 2 - 1, 0x13 - 1, 0x1c + 2, 4 + 2, 17); + sub_0201C3C0(param0->unk_2C, 4); +} + +static void ov117_022613EC (UnkStruct_ov117_02261280 * param0) +{ + int v0, v1; + UnkStruct_02025E6C * v2; + UnkStruct_02023790 * v3; + int v4; + u32 v5; + int v6, v7; + + v4 = sub_0203608C(); + + for (v0 = 0; v0 < param0->unk_00->unk_30; v0++) { + if (v4 != param0->unk_00->unk_2C[v0]) { + v2 = ov114_0225C7CC(¶m0->unk_00->unk_00, param0->unk_00->unk_2C[v0]); + v3 = sub_02025F04(v2, 110); + v1 = ov117_022622C4(param0, param0->unk_00->unk_2C[v0]); + + if (ov114_0225C7A4(¶m0->unk_00->unk_00, param0->unk_00->unk_2C[v0]) == 1) { + v5 = ((u32)(((7 & 0xff) << 16) | ((8 & 0xff) << 8) | ((15 & 0xff) << 0))); + } else { + v5 = ((u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((15 & 0xff) << 0))); + } + + v6 = sub_02002D7C(0, v3, 0); + v7 = 8 * 10 / 2 - v6 / 2; + + if (v6 & 1) { + v7--; + } + + sub_0201D78C(¶m0->unk_30[Unk_ov117_02266968[param0->unk_00->unk_30][v1]], 0, v3, v7, 0, 0, v5, NULL); + sub_020181C4(v3); + } + } +} + +static void ov117_022614AC (UnkStruct_ov117_02261280 * param0, int param1) +{ + if (param1 == 1) { + sub_02019CB8(param0->unk_2C, 4, 1023, 0, 13, 12, 4, 17); + sub_02019CB8(param0->unk_2C, 4, 1023, 0x11, 0, 12, 4, 17); + sub_02019CB8(param0->unk_2C, 4, 1023, 0x14, 13, 12, 4, 17); + } else { + switch (param0->unk_00->unk_30) { + case 2: + sub_02019CB8(param0->unk_2C, 4, 1023, 0, 13, 12, 4, 17); + sub_02019CB8(param0->unk_2C, 4, 1023, 0x14, 13, 12, 4, 17); + break; + case 3: + sub_02019CB8(param0->unk_2C, 4, 1023, 0x11, 0, 12, 4, 17); + break; + } + } + + sub_0201C3C0(param0->unk_2C, 4); +} + +static void ov117_02261574 (UnkStruct_ov117_02261280 * param0) +{ + void * v0; + UnkStruct_020203AC * v1; + void * v2; + + sub_02014000(); + + v0 = sub_02018144(110, 0x4800); + param0->unk_A4 = sub_02014014(ov117_02261644, ov117_02261668, v0, 0x4800, 1, 110); + v1 = sub_02014784(param0->unk_A4); + + sub_020206BC((FX32_ONE), (FX32_ONE * 900), v1); + v2 = sub_020144C4(190, 0, 110); + sub_020144CC(param0->unk_A4, v2, (1 << 1) | (1 << 3), 1); +} + +static void ov117_022615E0 (UnkStruct_ov117_02261280 * param0) +{ + void * v0; + + v0 = sub_02014730(param0->unk_A4); + + sub_0201411C(param0->unk_A4); + sub_020181C4(v0); +} + +void ov117_02261600 (UnkStruct_ov117_02261280 * param0, int param1) +{ + switch (param1) { + case 0: + sub_020146F4(param0->unk_A4, 0, NULL, param0); + break; + case 1: + sub_020146F4(param0->unk_A4, 1, NULL, param0); + break; + case 2: + sub_020146F4(param0->unk_A4, 2, NULL, param0); + break; + default: + GF_ASSERT(0); + return; + } +} + +static u32 ov117_02261644 (u32 param0, BOOL param1) +{ + NNSGfdTexKey v0; + + v0 = NNS_GfdAllocTexVram(param0, param1, 0); + GF_ASSERT(v0 != NNS_GFD_ALLOC_ERROR_TEXKEY); + sub_020145B4(v0); + + return NNS_GfdGetTexKeyAddr(v0); +} + +static u32 ov117_02261668 (u32 param0, BOOL param1) +{ + NNSGfdPlttKey v0; + + v0 = NNS_GfdAllocPlttVram(param0, param1, NNS_GFD_ALLOC_FROM_LOW); + GF_ASSERT(v0 != NNS_GFD_ALLOC_ERROR_PLTTKEY); + + sub_020145F4(v0); + + return NNS_GfdGetPlttKeyAddr(v0); +} + +asm static void ov117_0226168C (UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1) +{ + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + str r1, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, = 0x2713 + str r1, [sp, #0x2c] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0, #0] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + mov r1, #2 + bl sub_0200CDC4 + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0, #0] + mov r1, #2 + bl sub_0200B1EC + add r6, r0, #0 + mov r0, #0 + add r1, r6, #0 + add r2, r0, #0 + bl sub_02002D7C + mov r1, #0x1e + sub r0, r1, r0 + lsr r0, r0, #1 + add r4, r0, #6 + add r2, r5, #0 + ldr r3, = 0x169C + str r6, [sp] + mov r0, #0 + ldr r1, = 0xE0F00 + str r0, [sp, #4] + str r1, [sp, #8] + ldr r1, = 0x2713 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r1, r4, #0 + add r1, #0x24 + str r1, [sp, #0x14] + mov r1, #0xa8 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + mov r0, #0xc + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp, #0x28] + add r2, #0x90 + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x28] + ldr r2, [r2, #0] + add r3, r5, r3 + bl ov117_02265DB8 + add r0, r6, #0 + bl sub_020237BC + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0, #0] + mov r1, #0 + bl sub_0200B1EC + str r0, [sp, #0x30] + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0, #0] + mov r1, #1 + bl sub_0200B1EC + str r0, [sp, #0x38] + mov r0, #0 + str r0, [sp, #0x34] + ldr r0, = 0x15AC + add r7, r5, r0 + add r0, #0x14 + add r6, r5, r0 + _02261740: + ldr r0, [sp, #0x30] + add r2, r5, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, = 0xE0F00 + add r2, #0x90 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, = 0x2713 + add r3, r7, #0 + str r0, [sp, #0x10] + str r4, [sp, #0x14] + mov r0, #0xa8 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + mov r0, #3 + str r0, [sp, #0x20] + mov r0, #0xc + str r0, [sp, #0x24] + mov r0, #0xa + str r0, [sp, #0x28] + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x28] + ldr r2, [r2, #0] + bl ov117_02265DB8 + ldr r0, [sp, #0x38] + add r2, r5, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, = 0xE0F00 + add r2, #0x90 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, = 0x2713 + add r3, r6, #0 + str r0, [sp, #0x10] + str r4, [sp, #0x14] + mov r0, #0xa8 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + mov r0, #3 + str r0, [sp, #0x20] + mov r0, #0xc + str r0, [sp, #0x24] + mov r0, #0xa + str r0, [sp, #0x28] + ldr r0, [r5, #0x2c] + ldr r1, [r5, #0x28] + ldr r2, [r2, #0] + bl ov117_02265DB8 + ldr r0, [sp, #0x34] + add r4, r4, #6 + add r0, r0, #1 + add r7, #0x28 + add r6, #0x28 + str r0, [sp, #0x34] + cmp r0, #6 + blt _02261740 + ldr r0, [sp, #0x30] + bl sub_020237BC + ldr r0, [sp, #0x38] + bl sub_020237BC + ldr r0, = 0x15A8 + add r0, r5, r0 + bl ov117_02265EC8 + add r0, r5, #0 + bl ov117_02266150 + ldr r0, [sp, #0x2c] + mov r1, #2 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, = 0x2714 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0, #0] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl sub_0200CDC4 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, = 0x2712 + ldr r2, [sp, #0x2c] + str r0, [sp, #8] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x18 + bl sub_0200CC3C + mov r0, #0 + str r0, [sp] + ldr r0, = 0x2712 + ldr r2, [sp, #0x2c] + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x1a + bl sub_0200CE24 + mov r0, #0 + str r0, [sp] + ldr r0, = 0x2712 + ldr r2, [sp, #0x2c] + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x19 + bl sub_0200CE54 + add r0, r5, #0 + bl ov117_02266130 + ldr r1, = 0x15A8 + str r0, [r5, r1] + mov r0, #0xab + str r0, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, = 0x2712 + mov r1, #2 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0, #0] + ldr r2, [r5, #0x24] + ldr r3, [r5, #0x28] + bl sub_0200CD7C + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, = 0x2711 + mov r2, #0xab + str r0, [sp, #8] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x15 + bl sub_0200CBDC + mov r0, #0 + str r0, [sp] + ldr r0, = 0x2711 + mov r2, #0xab + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x16 + bl sub_0200CE0C + mov r0, #0 + str r0, [sp] + ldr r0, = 0x2711 + mov r2, #0xab + str r0, [sp, #4] + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x28] + mov r3, #0x17 + bl sub_0200CE3C + add r0, r5, #0 + bl ov117_02266244 + ldr r1, = 0x174C + str r0, [r5, r1] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +} + +static void ov117_022618E8 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + + for (v0 = 0; v0 < 6; v0++) { + ov117_02265EB0(¶m0->unk_15A8.unk_04[v0][0]); + ov117_02265EB0(¶m0->unk_15A8.unk_04[v0][1]); + } + + ov117_02265EB0(¶m0->unk_15A8.unk_F4); + ov117_02266210(param0); + ov117_02266238(param0, param0->unk_15A8.unk_00); + ov117_02266268(param0, param0->unk_174C.unk_00); +} + +static void ov117_02261940 (UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1) +{ + sub_0200CDC4(param0->unk_8C, 3, param0->unk_24, param0->unk_28, param1, 23, 0, 9, NNS_G2D_VRAM_TYPE_2DSUB, 10006); + sub_0200CC3C(param0->unk_24, param0->unk_28, param1, 20, 0, NNS_G2D_VRAM_TYPE_2DSUB, 10004); + sub_0200CE24(param0->unk_24, param0->unk_28, param1, 22, 0, 10004); + sub_0200CE54(param0->unk_24, param0->unk_28, param1, 21, 0, 10004); + + ov117_022648E0(param0); + ov117_02264FB0(param0, ¶m0->unk_1458); + ov117_02265064(param0, ¶m0->unk_1468); + ov117_02265ABC(param0, ¶m0->unk_1560); + ov117_02264BF8(param0); + ov117_02264D1C(param0); +} + +static void ov117_022619F8 (UnkStruct_ov117_02261280 * param0) +{ + ov117_02264914(param0); + ov117_0226504C(param0, ¶m0->unk_1458); + ov117_022651E0(param0, ¶m0->unk_1468); + ov117_02265B3C(param0, ¶m0->unk_1560); +} + +static void ov117_02261A2C (UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1) +{ + sub_02003050(param0->unk_8C, 173, 4, 110, 0, 0, 0); + sub_020070E8(param1, 2, param0->unk_2C, 3, 0, 0, 0, 110); + sub_0200710C(param1, 3, param0->unk_2C, 3, 0, 0, 0, 110); + sub_020070E8(param1, 0, param0->unk_2C, 2, 0, 0, 0, 110); + sub_0200710C(param1, 1, param0->unk_2C, 2, 0, 0, 0, 110); + sub_020038B0(param0->unk_8C, 0, 2, 0x0, 0, 1); +} + +static void ov117_02261AC4 (UnkStruct_ov117_02261280 * param0) +{ + return; +} + +static void ov117_02261AC8 (UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1) +{ + sub_02003050(param0->unk_8C, 173, 5, 110, 1, 5 * 0x20, 0); + sub_02002FEC(param0->unk_8C, 173, 6, 110, 1, (0x20 * 10), 6 * 16, 6 * 16); + sub_020070E8(param1, 13, param0->unk_2C, 6, 0, 0, 0, 110); + sub_0200710C(param1, 14, param0->unk_2C, 6, 0, 0, 0, 110); + sub_020070E8(param1, 18, param0->unk_2C, 5, 0, 0, 0, 110); + + switch (param0->unk_00->unk_30) { + case 2: + sub_0200710C(param1, 15, param0->unk_2C, 5, 0, 0, 0, 110); + break; + case 3: + sub_0200710C(param1, 16, param0->unk_2C, 5, 0, 0, 0, 110); + break; + default: + sub_0200710C(param1, 17, param0->unk_2C, 5, 0, 0, 0, 110); + break; + } + + sub_020070E8(param1, 18, param0->unk_2C, 4, 0, 0, 0, 110); + sub_0200710C(param1, 19, param0->unk_2C, 4, 0, 0, 0, 110); + + ov117_02264AF0(param0); + ov117_02264AB0(param0); + + sub_0200DAA4(param0->unk_2C, 4, ((((((0x8000 - 0x2000) / 32) + (10 * 2)) + (10 * 2)) + (10 * 2)) + (10 * 2)), 6, 0, 110); + sub_02003070(param0->unk_8C, 1, 6 * 16, 0x20); + sub_020038B0(param0->unk_8C, 1, 2, 0x0, 0, 1); +} + +static void ov117_02261C28 (UnkStruct_ov117_02261280 * param0) +{ + return; +} + +static void ov117_02261C2C (UnkStruct_ov117_02261280 * param0, UnkStruct_02006C24 * param1) +{ + int v0, v1; + UnkStruct_ov117_02261F08 * v2 = ¶m0->unk_D8; + UnkStruct_ov117_02261C2C * v3 = ¶m0->unk_13A0; + int v4; + void * v5 = NULL; + + v4 = ov117_0226235C(param0, sub_0203608C()); + + sub_020170D8(&v2->unk_00, param1, Unk_ov117_022669F0[v4].unk_00, 110); + sub_02017258(&v2->unk_10, &v2->unk_00); + sub_02017350(&v2->unk_10, (FX32_CONST(0)), (FX32_CONST(-25)), (FX32_CONST(0))); + sub_0201736C(&v2->unk_10, (FX32_CONST(1.00f)), (FX32_CONST(1.00f)), (FX32_CONST(1.00f))); + sub_02017348(&v2->unk_10, 1); + sub_020170D8(&v2->unk_88[0], param1, Unk_ov117_022669F0[v4].unk_04, 110); + sub_020170D8(&v2->unk_88[1], param1, Unk_ov117_022669F0[v4].unk_08, 110); + sub_020170D8(&v2->unk_88[2], param1, Unk_ov117_022669F0[v4].unk_0C, 110); + sub_020170D8(&v2->unk_88[3], param1, Unk_ov117_022669F0[v4].unk_10, 110); + + for (v0 = 0; v0 < 8; v0++) { + for (v1 = 0; v1 < 4; v1++) { + if (v5 == NULL) { + sub_02017164(&v2->unk_C8[v0][v1].unk_7C, &v2->unk_88[v1], param1, 35 + v1, 110, ¶m0->unk_A8); + v5 = v2->unk_C8[v0][v1].unk_7C.unk_00; + } else { + sub_02017190(&v2->unk_C8[v0][v1].unk_7C, &v2->unk_88[v1], v5, ¶m0->unk_A8); + } + + sub_02017240(&v2->unk_C8[v0][v1].unk_7C, 0); + } + } + + sub_020170D8(&v3->unk_00, param1, 30, 110); + sub_02017258(&v3->unk_10, &v3->unk_00); + sub_02017350(&v3->unk_10, (FX32_CONST(0)), (FX32_CONST(-25)), (FX32_CONST(0))); + sub_0201736C(&v3->unk_10, (FX32_CONST(1.00f)), (FX32_CONST(1.00f)), (FX32_CONST(1.00f))); + sub_02017348(&v3->unk_10, 1); +} + +static void ov117_02261DD0 (UnkStruct_ov117_02261280 * param0) +{ + int v0, v1; + UnkStruct_ov117_02261F08 * v2 = ¶m0->unk_D8; + + sub_02017110(&v2->unk_00); + + for (v0 = 0; v0 < 4; v0++) { + sub_02017110(&v2->unk_88[v0]); + } + + for (v0 = 0; v0 < 8; v0++) { + for (v1 = 0; v1 < 4; v1++) { + sub_020171A0(&v2->unk_C8[v0][v1].unk_7C, ¶m0->unk_A8); + } + } + + sub_02017110(¶m0->unk_13A0.unk_00); +} + +BOOL ov117_02261E38 (UnkStruct_ov117_02261280 * param0, int param1) +{ + UnkStruct_ov117_02261F08 * v0 = ¶m0->unk_D8; + UnkStruct_020170F4 * v1; + int v2, v3; + + if (param1 > 1200) { + v3 = 3; + } else if (param1 > 3 / 3 * 2) { + v3 = 2; + } else if (param1 > 3 / 3 * 1) { + v3 = 1; + } else { + v3 = 0; + } + + v1 = &v0->unk_88[v3]; + + for (v2 = 0; v2 < 8; v2++) { + if (v0->unk_C8[v2][v3].unk_00 == 0) { + sub_02017258(&v0->unk_C8[v2][v3].unk_04, v1); + sub_02017350(&v0->unk_C8[v2][v3].unk_04, (FX32_CONST(0)), (FX32_CONST(-25)), (FX32_CONST(0))); + sub_0201736C(&v0->unk_C8[v2][v3].unk_04, (FX32_CONST(1.00f)), (FX32_CONST(1.00f)), (FX32_CONST(1.00f))); + sub_02017348(&v0->unk_C8[v2][v3].unk_04, 1); + sub_02017240(&v0->unk_C8[v2][v3].unk_7C, 0); + sub_0201727C(&v0->unk_C8[v2][v3].unk_04, &v0->unk_C8[v2][v3].unk_7C); + + v0->unk_C8[v2][v3].unk_00 = 1; + + sub_02005748(1401); + return 1; + } + } + + return 0; +} + +void ov117_02261F08 (UnkStruct_ov117_02261280 * param0, int param1, int param2) +{ + UnkStruct_ov117_02261F08 * v0 = ¶m0->unk_D8; + + sub_02017288(&v0->unk_C8[param1][param2].unk_04, &v0->unk_C8[param1][param2].unk_7C); + v0->unk_C8[param1][param2].unk_00 = 0; +} + +void ov117_02261F3C (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02261F08 * v0 = ¶m0->unk_D8; + int v1, v2; + + for (v1 = 0; v1 < 8; v1++) { + for (v2 = 0; v2 < 4; v2++) { + if (v0->unk_C8[v1][v2].unk_00 == 1) { + if (sub_02017204(&v0->unk_C8[v1][v2].unk_7C, FX32_ONE) == 1) { + ov117_02261F08(param0, v1, v2); + } + } + } + } +} + +void ov117_02261FA4 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02261F08 * v0 = ¶m0->unk_D8; + int v1, v2; + + for (v1 = 0; v1 < 8; v1++) { + for (v2 = 0; v2 < 4; v2++) { + if (v0->unk_C8[v1][v2].unk_00 == 1) { + sub_02017294(&v0->unk_C8[v1][v2].unk_04); + } + } + } +} + +BOOL ov117_02261FF4 (UnkStruct_ov117_02261280 * param0) +{ + if (param0->unk_04 == sub_0203608C()) { + return 1; + } + + return 0; +} + +int ov117_0226200C (UnkStruct_ov117_02261280 * param0) +{ + int v0, v1; + u32 v2; + + v0 = param0->unk_00->unk_2C[0]; + v2 = param0->unk_0C[0]; + + for (v1 = 1; v1 < param0->unk_00->unk_30; v1++) { + if (v2 < param0->unk_0C[v1]) { + v2 = param0->unk_0C[v1]; + v0 = param0->unk_00->unk_2C[v1]; + } + } + + param0->unk_04 = v0; + return param0->unk_04; +} + +void ov117_02262044 (UnkStruct_ov117_02261280 * param0, int param1, const UnkStruct_ov117_022621D4 * param2) +{ + UnkStruct_ov117_022621D4 * v0; + int v1; + + if (ov117_022620E0(param0, param1, param2) == 1) { + return; + } + + v1 = param0->unk_2F04[param1] % 60; + v0 = ¶m0->unk_1C1C[param1].unk_00[v1]; + + param0->unk_2F04[param1]++; + + GF_ASSERT(v0->unk_00 == 0); + + *v0 = *param2; +} + +UnkStruct_ov117_022621D4 * ov117_022620A0 (UnkStruct_ov117_02261280 * param0, int param1) +{ + UnkStruct_ov117_022621D4 * v0; + int v1; + + v1 = param0->unk_2F14[param1] % 60; + v0 = ¶m0->unk_1C1C[param1].unk_00[v1]; + + if (v0->unk_00 != 0) { + param0->unk_2F14[param1]++; + return v0; + } + + return NULL; +} + +static BOOL ov117_022620E0 (UnkStruct_ov117_02261280 * param0, int param1, const UnkStruct_ov117_022621D4 * param2) +{ + switch (param2->unk_00) { + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + GF_ASSERT(param0->unk_2EF0.unk_00 == 0); + param0->unk_2EF0 = *param2; + return 1; + } + + return 0; +} + +void ov117_02262130 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + UnkStruct_ov117_022621D4 * v0; + int v1; + + if (ov117_0226217C(param0, param1) == 1) { + return; + } + + v1 = param0->unk_2F24 % 60; + v0 = ¶m0->unk_176C.unk_00[v1]; + + param0->unk_2F24++; + + GF_ASSERT(v0->unk_00 == 0); + + *v0 = *param1; +} + +static BOOL ov117_0226217C (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + switch (param1->unk_00) { + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + if (param0->unk_2EDC.unk_00 == 0) { + param0->unk_2EDC = *param1; + return 1; + } else if (param1->unk_00 == param0->unk_2EDC.unk_00) { + return 1; + } else { + GF_ASSERT(0); + return 0; + } + break; + } + + return 0; +} + +UnkStruct_ov117_022621D4 * ov117_022621D4 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_022621D4 * v0; + int v1; + + v1 = param0->unk_2F28 % 60; + v0 = ¶m0->unk_176C.unk_00[v1]; + if (v0->unk_00 != 0) { + return v0; + } + + return NULL; +} + +static int ov117_02262200 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_022621D4 * v0; + + if (param0->unk_2FC4 > 0) { + param0->unk_2FC4--; + return 0; + } + + if (param0->unk_2EDC.unk_00 != 0) { + if (ov117_02266624(param0, ¶m0->unk_2EDC) == 1) { + param0->unk_2EDC.unk_00 = 0; + return 1; + } else { + return 0; + } + } + + v0 = ov117_022621D4(param0); + + if (v0 == NULL) { + return 0; + } + + if (ov117_02266624(param0, v0) == 1) { + v0->unk_00 = 0; + param0->unk_2F28++; + return 1; + } + + return 0; +} + +static void ov117_02262270 (UnkStruct_ov117_02261280 * param0) +{ + int v0, v1; + UnkStruct_ov117_022621D4 * v2; + int v3, v4; + + v4 = param0->unk_2EF0.unk_00; + + if (ov117_022666C0(param0, ¶m0->unk_2EF0) == 1) { + return; + } + + v2 = ¶m0->unk_2EF0; + + for (v1 = 0; v1 < param0->unk_00->unk_30; v1++) { + while (TRUE) { + v2 = ov117_022620A0(param0, param0->unk_00->unk_2C[v1]); + + if (v2 == NULL) { + break; + } + + v4 = v2->unk_00; + v3 = ov117_022666C0(param0, v2); + + if (v3 == 1) { + (void)0; + } + } + } +} + +int ov117_022622B8 (UnkStruct_ov117_02261280 * param0) +{ + return param0->unk_2FC8; +} + +int ov117_022622C4 (UnkStruct_ov117_02261280 * param0, int param1) +{ + int v0, v1, v2; + int v3, v4; + int v5, v6; + int v7; + const u8 * v8; + + v6 = sub_0203608C(); + v3 = 0xff; + v4 = 0xff; + + for (v5 = 0; v5 < param0->unk_00->unk_30; v5++) { + if (param0->unk_00->unk_2C[v5] == v6) { + v4 = v5; + } + + if (param0->unk_00->unk_2C[v5] == param1) { + v3 = v5; + } + } + + GF_ASSERT(v3 != 0xff && v4 != 0xff); + + for (v5 = 0; v5 < param0->unk_00->unk_30; v5++) { + if (Unk_ov117_02266954[param0->unk_00->unk_30][v5] == v4) { + v1 = v5; + } + + if (Unk_ov117_02266954[param0->unk_00->unk_30][v5] == v3) { + v0 = v5; + } + } + + v2 = v0 - v1; + + if (v2 < 0) { + v2 += param0->unk_00->unk_30; + } + + return v2; +} + +int ov117_0226235C (UnkStruct_ov117_02261280 * param0, int param1) +{ + int v0; + + for (v0 = 0; v0 < param0->unk_00->unk_30; v0++) { + if (param0->unk_00->unk_2C[v0] == param1) { + return v0; + } + } + + GF_ASSERT(0); + return 0; +} + +void ov117_0226238C (UnkStruct_ov117_02261280 * param0, int param1, u8 param2) +{ + GF_ASSERT(param0->unk_2FD4 == 0); + + param0->unk_2FD4 = param1; + param0->unk_2FD8 = param2; +} + +static BOOL ov117_022623B0 (UnkStruct_ov117_02261280 * param0) +{ + int v0 = 0; + + switch (param0->unk_2FD4) { + case 1: + v0 = 1; + break; + case 2: + v0 = 1; + break; + case 3: + v0 = 1; + break; + case 4: + if (param0->unk_2FCC == 1) { + v0 = 1; + } + break; + case 5: + if (param0->unk_339C.unk_00 == 0) { + v0 = 1; + } + break; + case 6: + if (param0->unk_174C.unk_1C == 1) { + v0 = 1; + } + break; + default: + return 0; + } + + if (v0 == 1) { + sub_020364F0(param0->unk_2FD8); + + if (ov117_02261FF4(param0) == 1) { + param0->unk_2FD4 = 7; + } else { + param0->unk_2FD4 = 0; + } + + return 1; + } + + return 0; +} + +static int ov117_02262448 (UnkStruct_ov117_02261280 * param0, int param1) +{ + if (param0->unk_2FD4 != 7) { + return 0; + } + + if (param0->unk_2FD8 != param1) { + return 0; + } + + if (sub_02036540(param0->unk_2FD8) == 1) { + param0->unk_2FD4 = 0; + return 1; + } + + return 0; +} + +static int ov117_02262484 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1) +{ + switch (param1->unk_0C) { + case 0: + ov117_0226687C(param0, 1, param1->unk_18); + param1->unk_0C++; + break; + case 1: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + param1->unk_0C++; + } + break; + case 2: + ov117_022668B8(param0, param1->unk_18); + param1->unk_0C++; + break; + case 3: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + param1->unk_0C++; + } + break; + case 4: + ov117_022667F4(param0, param1->unk_18); + param1->unk_0C++; + break; + case 5: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + return 1; + } + break; + } + return 0; +} + +static int ov117_0226251C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1) +{ + if (param0->unk_2FB4 > (43 * 30 + 12)) { + if ((param0->unk_2FD4 == 0) && (param0->unk_2EDC.unk_00 == 0) && (param0->unk_2EF0.unk_00 == 0)) { + return 1; + } else { + (void)0; + } + } + + switch (param1->unk_0C) { + case 0: + ov117_02266784(param0, param0->unk_2FC8, ov117_02263CF4(param0->unk_2FC8), param1->unk_18); + param1->unk_0C++; + break; + case 1: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + param1->unk_0C++; + } + break; + case 2: + if ((param0->unk_1428.unk_0C != 0) && (param0->unk_1428.unk_08 >= param0->unk_1428.unk_0C)) { + param0->unk_2FC8++; + ov117_02266730(param0, ov117_022622B8(param0), param1->unk_18); + param1->unk_0C++; + } + break; + case 3: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + param1->unk_0C = 0; + } + break; + } + + return 0; +} + +static int ov117_022625F8 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02262664 * param1) +{ + switch (param1->unk_0C) { + case 0: + ov117_02266834(param0, param1->unk_18); + param1->unk_0C++; + break; + case 1: + if (ov117_02262448(param0, param1->unk_18) == 1) { + param1->unk_18++; + param1->unk_0C++; + } + break; + case 2: + if (param0->unk_20 == 8) { + param1->unk_0C++; + } + break; + case 3: + param1->unk_14++; + + if (param1->unk_14 < 90) { + break; + } + + if (ov117_02266648(param0) == 1) { + return 1; + } + break; + } + + return 0; +} + +static BOOL ov117_02262664 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02262664 * v1; + + if (ov117_02261FF4(param0) == 0) { + return 0; + } + + v1 = ¶m0->unk_B8; + + if (v1->unk_00 >= NELEMS(Unk_ov117_02266920)) { + return 1; + } + + v0 = Unk_ov117_02266920[v1->unk_00](param0, v1); + + if (v0 == 1) { + v1->unk_00++; + v1->unk_0C = 0; + v1->unk_14 = 0; + v1->unk_10 = 0; + } + + return 0; +} + +static void ov117_022626AC (UnkStruct_020203AC * param0) +{ + return; +} diff --git a/src/overlay117/ov117_022626B0.c b/src/overlay117/ov117_022626B0.c new file mode 100644 index 0000000000..0be873c8cc --- /dev/null +++ b/src/overlay117/ov117_022626B0.c @@ -0,0 +1,970 @@ +#include +#include + +#include "data_021BF67C.h" +#include "inlines.h" + +#include "struct_decls/struct_02006C24_decl.h" + +#include "struct_defs/struct_0200D0F4.h" +#include "overlay104/struct_ov104_0223F9E0.h" +#include "overlay117/struct_ov117_02261280.h" +#include "overlay117/struct_ov117_02264E84.h" + +#include "unk_02002F38.h" +#include "unk_02005474.h" +#include "unk_020068C8.h" +#include "unk_0200C6E4.h" +#include "unk_02017E74.h" +#include "unk_0201C970.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_022626B0.h" +#include "overlay117/ov117_02263AF0.h" + +typedef struct { + fx32 unk_00; + fx32 unk_04; +} UnkStruct_ov117_022626B0_sub1_sub1; + +typedef struct { + UnkStruct_ov117_022626B0_sub1_sub1 unk_00; + UnkStruct_ov117_022626B0_sub1_sub1 unk_08; + UnkStruct_ov117_022626B0_sub1_sub1 unk_10; + UnkStruct_ov117_022626B0_sub1_sub1 unk_18; +} UnkStruct_ov117_022626B0_sub1; + +typedef struct { + UnkStruct_ov117_022626B0_sub1_sub1 unk_00; + UnkStruct_ov117_022626B0_sub1_sub1 unk_08; + UnkStruct_ov117_022626B0_sub1_sub1 unk_10; + UnkStruct_ov117_022626B0_sub1_sub1 unk_18; +} UnkStruct_ov117_022626B0_sub2; + +typedef struct UnkStruct_ov117_022626B0_t { + NNSG3dResFileHeader * unk_00; + NNSG3dResTex * unk_04; + u16 unk_08; + UnkStruct_ov117_022626B0_sub1 unk_0C[8]; + UnkStruct_ov117_022626B0_sub2 unk_10C[8]; + int unk_20C; + int unk_210; + int unk_214; + int unk_218; + int unk_21C; + int unk_220; + int unk_224; + int unk_228; + int unk_22C; + fx32 unk_230; + UnkStruct_0200D0F4 * unk_234; + int unk_238; + int unk_23C; + int unk_240; + int unk_244; + fx32 unk_248; + u16 * unk_24C; + u16 * unk_250; + u32 unk_254; + u32 unk_258; + s32 unk_25C; + fx32 unk_260; + fx32 unk_264; + s16 unk_268; + s16 unk_26A; + s16 unk_26C; + int unk_270; + u8 unk_274; + u8 unk_275; + u8 unk_276; +} UnkStruct_ov117_022626B0; + +static void ov117_02262B98(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262E0C(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262E5C(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262EAC(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262A70(UnkStruct_ov117_022626B0 * param0); +static BOOL ov117_02263270(UnkStruct_ov117_022626B0 * param0); +static int ov117_0226334C(UnkStruct_ov117_022626B0 * param0); +static int ov117_02263448(UnkStruct_ov117_022626B0 * param0, int param1, fx32 param2); +static int ov117_022637AC(UnkStruct_ov117_022626B0 * param0, int param1); +static int ov117_022637E4(UnkStruct_ov117_022626B0 * param0, fx32 param1, fx32 param2, fx32 param3, fx32 * param4, fx32 * param5); +static fx32 ov117_0226384C(UnkStruct_ov117_022626B0 * param0); +static int ov117_022638AC(UnkStruct_ov117_022626B0 * param0); +static void ov117_02263168(fx32 param0, fx32 param1, fx16 * param2, fx16 * param3); +static void ov117_02262A38(UnkStruct_ov117_022626B0 * param0); +static int ov117_0226296C(UnkStruct_ov117_022626B0 * param0, int param1); +static void ov117_02262998(UnkStruct_ov117_022626B0 * param0, int param1); +static void ov117_02262C3C(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262C60(UnkStruct_ov117_022626B0 * param0, int param1); +static BOOL ov117_02262CB8(UnkStruct_ov117_022626B0 * param0, int param1); +static void ov117_02262CE8(UnkStruct_ov117_022626B0 * param0); +static void ov117_02262CFC(UnkStruct_ov117_022626B0 * param0); +static void ov117_022629E0(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022626B0 * param1, int param2, int param3); +void ov117_02262D4C(BOOL param0, BOOL param1); +void ov117_02262D98(); +static void ov117_022638D8(UnkStruct_ov117_02261280 * param0); +static void ov117_022639BC(UnkStruct_ov117_02261280 * param0); +static UnkStruct_0200D0F4 * ov117_02263A00(UnkStruct_ov117_02261280 * param0); +static void ov117_02263A6C(UnkStruct_ov117_022626B0 * param0, UnkStruct_0200D0F4 * param1); +static void ov117_02263AE4(UnkStruct_0200D0F4 * param0); + +static const fx16 Unk_ov117_02266B12[3 * 6] = { + 0x0, + 0x0, + FX16_ONE - 1, + 0x0, + FX16_ONE - 1, + 0x0, + FX16_ONE - 1, + 0x0, + 0x0, + 0x0, + 0x0, + -FX16_ONE + 1, + 0x0, + -FX16_ONE + 1, + 0x0, + -FX16_ONE + 1, + 0x0, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266B38 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0xE, + 0x0, + NNS_G2D_VRAM_TYPE_2DMAIN, + {0x2713, 0x2715, 0x2713, 0x2713, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x1, + 0x0 +}; + +static const struct { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; +} Unk_ov117_02266B05[] = { + {0x40, 0xC0, 0x10, 0xA8}, + {0x28, 0xD8, 0x0, 0xA8}, + {0x54, 0xAC, 0x8, 0xA8} +}; + +extern const s32 Unk_ov117_02266FD8[]; + +inline void inline_ov117_02262EAC (int param0) +{ + NNS_G3dGeNormal(Unk_ov117_02266B12[param0 * 3], Unk_ov117_02266B12[param0 * 3 + 1], Unk_ov117_02266B12[param0 * 3 + 2]); +} + +UnkStruct_ov117_022626B0 * ov117_022626B0 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_022626B0 * v0; + + v0 = sub_02018144(110, sizeof(UnkStruct_ov117_022626B0)); + MI_CpuClear8(v0, sizeof(UnkStruct_ov117_022626B0)); + v0->unk_270 = param0->unk_00->unk_34; + + ov117_02262B98(v0); + ov117_02262E0C(v0); + ov117_02262E5C(v0); + + switch (param0->unk_00->unk_34) { + case 2: + v0->unk_260 = ((6 * 16 * FX32_ONE) - 2 * 16 * FX32_ONE); + v0->unk_264 = ((6 * 16 * FX32_ONE) + 1 * 16 * FX32_ONE / 2); + break; + case 1: + v0->unk_260 = ((6 * 16 * FX32_ONE) + 3 * 16 * FX32_ONE); + v0->unk_264 = ((6 * 16 * FX32_ONE) + 1 * 16 * FX32_ONE); + break; + default: + v0->unk_260 = (6 * 16 * FX32_ONE); + v0->unk_264 = (6 * 16 * FX32_ONE); + break; + } + + v0->unk_21C = 128; + v0->unk_220 = 40; + + ov117_022638D8(param0); + v0->unk_234 = ov117_02263A00(param0); + ov117_02263A6C(v0, v0->unk_234); + + v0->unk_248 = 0x2000; + + return v0; +} + +void ov117_02262760 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022626B0 * param1) +{ + ov117_02263AE4(param1->unk_234); + ov117_022639BC(param0); + + sub_020181C4(param1->unk_00); + sub_020181C4(param1->unk_24C); + sub_020181C4(param1->unk_250); + sub_020181C4(param1); +} + +void ov117_02262798 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022626B0 * param1) +{ + param1->unk_244 = 0; + + if (param0->unk_20 == 2) { + param1->unk_20C = param0->unk_174C.unk_0C; + param1->unk_210 = param0->unk_174C.unk_10; + param1->unk_214 = param0->unk_174C.unk_14; + param1->unk_218 = param0->unk_174C.unk_18; + } else if ((param0->unk_2FB8 == 0) || (param0->unk_2FBC == 1)) { + param1->unk_20C = 0; + param1->unk_210 = 0; + param1->unk_214 = 0; + param1->unk_218 = 0; + } else { + param1->unk_20C = Unk_021BF67C.unk_5C; + param1->unk_210 = Unk_021BF67C.unk_5E; + param1->unk_214 = Unk_021BF67C.unk_62; + param1->unk_218 = Unk_021BF67C.unk_60; + } + + ov117_02263270(param1); + + if (param1->unk_214 == 0) { + ov117_02262A38(param1); + if ((param1->unk_0C[0].unk_10.unk_04 == 0) && (param1->unk_0C[0].unk_10.unk_04 == 0)) { + param1->unk_274 = 0; + } + } + + ov117_0226334C(param1); + ov117_02262A70(param1); + ov117_02263A6C(param1, param1->unk_234); + + if (param1->unk_268 > 0) { + param1->unk_268 += 8; + + if (param1->unk_268 > 30) { + param1->unk_268 = 30; + } + + ov117_02262CFC(param1); + } + + if ((param0->unk_2FBC == 0) && (param0->unk_2FB8 == 1)) { + if (param1->unk_244 > 0) { + UnkStruct_ov117_02264E84 v0; + int v1 = 0, v2 = 0; + s32 v3; + + if (param1->unk_25C < 800) { + v1 = ov117_02262CB8(param1, param1->unk_244); + + if (v1 == 1) { + param1->unk_268 = 8; + param1->unk_275 = 0; + sub_02005748(1398); + } + } else { + ov117_02262CE8(param1); + param1->unk_268 = 0; + v2 = 1; + } + + v3 = ov117_0226296C(param1, param1->unk_244); + + if (v2 == 1) { + v3 += v3 * 25 / 100; + } + + ov117_02264E14(param0, param0->unk_2FC8, v3, &v0); + ov117_02264E3C(param0, &v0); + ov117_02263DC4(param0, &v0); + ov117_02262998(param1, param1->unk_244); + ov117_022629E0(param0, param1, param1->unk_244, v2); + param1->unk_244 = 0; + } + } +} + +void ov117_02262950 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022626B0 * param1) +{ + if (param1->unk_276 == 1) { + param1->unk_276 = 0; + ov117_02262C3C(param1); + } +} + +static int ov117_0226296C (UnkStruct_ov117_022626B0 * param0, int param1) +{ + int v0; + + if (param1 >= 98) { + v0 = 1200; + } else { + v0 = param1 * 10; + } + + v0 = v0 * Unk_ov117_02266FD8[param0->unk_270] / 100; + return v0; +} + +static void ov117_02262998 (UnkStruct_ov117_022626B0 * param0, int param1) +{ + if (param0->unk_244 >= 98) { + param0->unk_248 += 0x1000; + } else if (param0->unk_244 >= 98) { + param0->unk_248 += 0x1000; + } else { + param0->unk_248 = 0x2000; + } + + if (param0->unk_248 > 0x11000) { + param0->unk_248 = 0x11000; + } +} + +static void ov117_022629E0 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022626B0 * param1, int param2, int param3) +{ + if ((param3 == 1) && (param1->unk_244 >= 98)) { + ov117_02261600(param0, 0); + sub_02005748(1402); + } else if (param1->unk_244 >= 98) { + (void)0; + } else { + if (param1->unk_0C[0].unk_00.unk_04 < param1->unk_0C[0].unk_10.unk_04) { + ov117_02261600(param0, 2); + sub_02005748(1400); + } else if (param1->unk_0C[0].unk_00.unk_04 > param1->unk_0C[0].unk_10.unk_04) { + ov117_02261600(param0, 1); + sub_02005748(1400); + } + } +} + +static void ov117_02262A38 (UnkStruct_ov117_022626B0 * param0) +{ + if (param0->unk_238 == 0) { + return; + } + + param0->unk_238 = 0; + param0->unk_23C = -1; + + { + int v0; + + v0 = ov117_022638AC(param0); + param0->unk_244 = param0->unk_240 - v0; + + if (param0->unk_244 < 25) { + param0->unk_244 = 0; + } + } +} + +static void ov117_02262A70 (UnkStruct_ov117_022626B0 * param0) +{ + u32 v0, v1; + + NNS_G3dGeLightVector(GX_LIGHTID_0, FX16_SQRT1_3, -FX16_SQRT1_3, -FX16_SQRT1_3); + NNS_G3dGeLightColor(GX_LIGHTID_0, GX_RGB(31, 31, 31)); + NNS_G3dGePushMtx(); + + { + fx16 v2 = FX_SinIdx(param0->unk_08); + fx16 v3 = FX_CosIdx(param0->unk_08); + + NNS_G3dGeTranslate(0, (9 + 10) * FX32_ONE, -5 * FX32_ONE); + NNS_G3dGeScale(param0->unk_260 + param0->unk_260 * (param0->unk_268 + param0->unk_26C) / 100, param0->unk_264 + param0->unk_264 * param0->unk_26A / 100, (FX32_ONE)); + } + + { + NNS_G3dGeMtxMode(GX_MTXMODE_TEXTURE); + NNS_G3dGeIdentity(); + NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); + } + + ov117_02262D4C(1, 1); + ov117_02262D98(); + + v0 = NNS_GfdGetTexKeyAddr(param0->unk_04->texInfo.vramKey); + v1 = NNS_GfdGetPlttKeyAddr(param0->unk_04->plttInfo.vramKey); + + NNS_G3dGeTexImageParam(GX_TEXFMT_PLTT256, GX_TEXGEN_TEXCOORD, GX_TEXSIZE_S128, GX_TEXSIZE_T128, GX_TEXREPEAT_NONE, GX_TEXFLIP_NONE, GX_TEXPLTTCOLOR0_TRNS, v0); + NNS_G3dGeTexPlttBase(v1, GX_TEXFMT_PLTT256); + NNS_G3dGePolygonAttr(GX_LIGHTMASK_0, GX_POLYGONMODE_MODULATE, GX_CULL_NONE, 0, 31, GX_POLYGON_ATTR_MISC_NONE); + + ov117_02262EAC(param0); + + NNS_G3dGePopMtx(1); + NNS_G3dGeFlushBuffer(); +} + +static void ov117_02262B98 (UnkStruct_ov117_022626B0 * param0) +{ + param0->unk_00 = sub_02006AC0(173, 29, 110); + param0->unk_04 = NNS_G3dGetTex(param0->unk_00); + + sub_0201CBCC(param0->unk_04); + + { + u32 v0; + void * v1; + u32 v2; + + v0 = (u32)param0->unk_04->plttInfo.sizePltt << 3; + v1 = (u8 *)param0->unk_04 + param0->unk_04->plttInfo.ofsPlttData; + v2 = (param0->unk_04->plttInfo.vramKey & 0xffff) << 3; + + GF_ASSERT(param0->unk_24C == NULL); + + param0->unk_24C = sub_02018144(110, v0); + param0->unk_250 = sub_02018144(110, v0); + + MI_CpuCopy8(v1, param0->unk_24C, v0); + MI_CpuCopy8(v1, param0->unk_250, v0); + + DC_FlushRange(param0->unk_250, v0); + + param0->unk_258 = v2; + param0->unk_254 = v0; + } + + { + u8 * v3; + u32 v4; + + GF_ASSERT(param0->unk_04->texInfo.ofsTex != 0); + + v3 = (u8 *)param0->unk_04 + param0->unk_04->texInfo.ofsTex; + v4 = (u32)(v3 - (u8 *)param0->unk_00); + + sub_020182F0(param0->unk_00, v4); + } +} + +static void ov117_02262C3C (UnkStruct_ov117_022626B0 * param0) +{ + GX_BeginLoadTexPltt(); + GX_LoadTexPltt(param0->unk_250, param0->unk_258, param0->unk_254); + GX_EndLoadTexPltt(); +} + +static void ov117_02262C60 (UnkStruct_ov117_022626B0 * param0, int param1) +{ + int v0; + + v0 = (12 << 8) * param1 / 800; + v0 = (v0 + 0x80) >> 8; + + if (v0 > 16) { + v0 = 16; + } + + sub_0200393C(param0->unk_24C, param0->unk_250, param0->unk_254 / 2, v0, 0x1f); + DC_FlushRange(param0->unk_250, param0->unk_254); + + param0->unk_276 = 1; +} + +static BOOL ov117_02262CB8 (UnkStruct_ov117_022626B0 * param0, int param1) +{ + BOOL v0 = 0; + + param0->unk_25C += param1; + + if (param0->unk_25C >= 800) { + param0->unk_25C = 800; + v0 = 1; + } + + ov117_02262C60(param0, param0->unk_25C); + + return v0; +} + +static void ov117_02262CE8 (UnkStruct_ov117_022626B0 * param0) +{ + param0->unk_25C = 0; + ov117_02262C60(param0, param0->unk_25C); +} + +static void ov117_02262CFC (UnkStruct_ov117_022626B0 * param0) +{ + if (param0->unk_268 == 0) { + return; + } + + param0->unk_275++; + + if (param0->unk_275 == 4) { + ov117_02262C60(param0, param0->unk_25C / 2); + } else if (param0->unk_275 == 4 * 2) { + ov117_02262C60(param0, param0->unk_25C); + param0->unk_275 = 0; + } +} + +static const GXRgb DEMO_DIFFUSE_COL = GX_RGB(23, 23, 23); +static const GXRgb DEMO_AMBIENT_COL = GX_RGB(8, 8, 8); +static const GXRgb DEMO_SPECULAR_COL = GX_RGB(31, 31, 31); +static const GXRgb DEMO_EMISSION_COL = GX_RGB(0, 0, 0); +static const u32 LIGHTING_L_DOT_S_SHIFT = 8; + +void ov117_02262D4C (BOOL param0, BOOL param1) +{ + NNS_G3dGeMaterialColorDiffAmb(DEMO_DIFFUSE_COL, DEMO_AMBIENT_COL, param0); + NNS_G3dGeMaterialColorSpecEmi(DEMO_SPECULAR_COL, DEMO_EMISSION_COL, param1); +} + +#include +void ov117_02262D98 () +{ + u8 i; + u32 v0[32]; + u8 * v1 = (u8 *)&v0[0]; + const u8 v2 = 32 * sizeof(u32); + + for (i = 0; i < v2 - 1; i++) { + v1[i] = (u8)(((s64)(i * 2 + 1) * (i * 2 + 1) * (i * 2 + 1) * (i * 2 + 1)) >> (LIGHTING_L_DOT_S_SHIFT * (4 - 1))); + } + + v1[v2 - 1] = 0xFF; + + NNS_G3dGeShininess(&v0[0]); +} + +#include +static void ov117_02262E0C (UnkStruct_ov117_022626B0 * param0) +{ + int v0; + fx32 v1; + fx32 v2; + + v2 = ((-(128 * FX32_ONE)) - 0) / 8; + + for (v0 = 0; v0 < 8; v0++) { + v1 = 0 + v0 * v2; + + param0->unk_0C[v0].unk_00.unk_00 = 0; + param0->unk_0C[v0].unk_00.unk_04 = v1; + param0->unk_0C[v0].unk_08.unk_00 = 0; + param0->unk_0C[v0].unk_08.unk_04 = v1 + v2; + param0->unk_0C[v0].unk_10.unk_00 = ((128 * FX32_ONE)); + param0->unk_0C[v0].unk_10.unk_04 = v1; + param0->unk_0C[v0].unk_18.unk_00 = ((128 * FX32_ONE)); + param0->unk_0C[v0].unk_18.unk_04 = v1 + v2; + } +} + +static void ov117_02262E5C (UnkStruct_ov117_022626B0 * param0) +{ + int v0; + fx32 v1; + fx32 v2; + + v2 = 128 * FX32_ONE / 8; + + for (v0 = 0; v0 < 8; v0++) { + v1 = v0 * v2; + + param0->unk_10C[v0].unk_00.unk_00 = 0; + param0->unk_10C[v0].unk_00.unk_04 = v1; + param0->unk_10C[v0].unk_08.unk_00 = 0; + param0->unk_10C[v0].unk_08.unk_04 = v1 + v2; + param0->unk_10C[v0].unk_10.unk_00 = 128 * FX32_ONE; + param0->unk_10C[v0].unk_10.unk_04 = v1; + param0->unk_10C[v0].unk_18.unk_00 = 128 * FX32_ONE; + param0->unk_10C[v0].unk_18.unk_04 = v1 + v2; + } +} + +static void ov117_02262EAC (UnkStruct_ov117_022626B0 * param0) +{ + int v0; + fx64 v1, v2; + fx16 v3, v4; + + for (v0 = 0; v0 < 8; v0++) { + NNS_G3dGeBegin(GX_BEGIN_QUADS); + + ov117_02263168(param0->unk_0C[v0].unk_00.unk_00, param0->unk_0C[v0].unk_00.unk_04, &v3, &v4); + NNS_G3dGeTexCoord(param0->unk_10C[v0].unk_00.unk_00, param0->unk_10C[v0].unk_00.unk_04); + inline_ov117_02262EAC(0); + NNS_G3dGeVtx(v3, v4, 0); + + ov117_02263168(param0->unk_0C[v0].unk_08.unk_00, param0->unk_0C[v0].unk_08.unk_04, &v3, &v4); + NNS_G3dGeTexCoord(param0->unk_10C[v0].unk_08.unk_00, param0->unk_10C[v0].unk_08.unk_04); + inline_ov117_02262EAC(0); + NNS_G3dGeVtx(v3, v4, 0); + + ov117_02263168(param0->unk_0C[v0].unk_18.unk_00, param0->unk_0C[v0].unk_18.unk_04, &v3, &v4); + NNS_G3dGeTexCoord(param0->unk_10C[v0].unk_18.unk_00, param0->unk_10C[v0].unk_18.unk_04); + inline_ov117_02262EAC(0); + NNS_G3dGeVtx(v3, v4, 0); + + ov117_02263168(param0->unk_0C[v0].unk_10.unk_00, param0->unk_0C[v0].unk_10.unk_04, &v3, &v4); + NNS_G3dGeTexCoord(param0->unk_10C[v0].unk_10.unk_00, param0->unk_10C[v0].unk_10.unk_04); + inline_ov117_02262EAC(0); + NNS_G3dGeVtx(v3, v4, 0); + + NNS_G3dGeEnd(); + } +} + +static void ov117_02263168 (fx32 param0, fx32 param1, fx16 * param2, fx16 * param3) +{ + fx32 v0, v1; + + v0 = (FX16_ONE)*(fx64)param0 / (128 * FX32_ONE); + v1 = (FX16_ONE)*(fx64)param1 / (128 * FX32_ONE); + + GF_ASSERT(v0 <= FX16_MAX); + GF_ASSERT(v0 >= FX16_MIN); + GF_ASSERT(v1 <= FX16_MAX); + GF_ASSERT(v1 >= FX16_MIN); + + v0 -= ((FX16_ONE) / 2); + v1 += ((FX16_ONE) / 2); + + GF_ASSERT(v0 <= FX16_MAX); + GF_ASSERT(v0 >= FX16_MIN); + GF_ASSERT(v1 <= FX16_MAX); + GF_ASSERT(v1 >= FX16_MIN); + + *param2 = v0; + *param3 = v1; +} + +static BOOL ov117_02263270 (UnkStruct_ov117_022626B0 * param0) +{ + int v0; + + if ((param0->unk_238 == 1) || (param0->unk_218 == 0)) { + return 0; + } + + v0 = (param0->unk_230 >> FX32_SHIFT) + Unk_ov117_02266B05[param0->unk_270].unk_02; + + if ((param0->unk_20C < Unk_ov117_02266B05[param0->unk_270].unk_00) || (param0->unk_20C > Unk_ov117_02266B05[param0->unk_270].unk_01) || (param0->unk_210 < v0) || (param0->unk_210 > Unk_ov117_02266B05[param0->unk_270].unk_03)) { + return 0; + } + + param0->unk_238 = 1; + param0->unk_224 = param0->unk_20C; + param0->unk_228 = param0->unk_210; + param0->unk_22C = param0->unk_210 - v0; + param0->unk_230 = -(param0->unk_0C[0].unk_10.unk_04 + (param0->unk_0C[0].unk_00.unk_04 - param0->unk_0C[0].unk_10.unk_04) / 2); + param0->unk_240 = ov117_022638AC(param0); + + return 1; +} + +static int ov117_0226334C (UnkStruct_ov117_022626B0 * param0) +{ + int v0 = 0; + fx32 v1; + int v2; + int v3; + + if (param0->unk_238 == 1) { + if (param0->unk_210 < param0->unk_23C) { + param0->unk_274 = 0; + return 0; + } else if (param0->unk_210 == param0->unk_23C) { + param0->unk_274 = 0; + return 1; + } + + if ((param0->unk_23C != -1) && (param0->unk_210 > param0->unk_23C) && (sub_020057D4(1399) == 0)) { + sub_02005748(1399); + param0->unk_274 = 1; + } + + v3 = param0->unk_210 - param0->unk_22C; + v1 = (v3 << FX32_SHIFT) - (param0->unk_230 + (Unk_ov117_02266B05[param0->unk_270].unk_02 << FX32_SHIFT)); + param0->unk_23C = param0->unk_210; + } else { + v0 = 1; + v1 = -param0->unk_248; + } + + v2 = ov117_02263448(param0, v0, v1); + + switch (v2) { + case 0: + default: + break; + case 1: + case 2: + ov117_02262A38(param0); + break; + } + + param0->unk_230 = -(param0->unk_0C[0].unk_10.unk_04 + (param0->unk_0C[0].unk_00.unk_04 - param0->unk_0C[0].unk_10.unk_04) / 2); + return 1; +} + +static int ov117_02263448 (UnkStruct_ov117_022626B0 * param0, int param1, fx32 param2) +{ + fx32 v0, v1, v2, v3, v4, v5, v6; + fx32 v7, v8; + fx32 v9, v10; + u16 v11, v12; + int v13 = 0; + + if ((param1 == 0) && (param2 < 0)) { + (void)0; + } + + v0 = param0->unk_210 << FX32_SHIFT; + v3 = -param0->unk_0C[0].unk_00.unk_04; + v4 = -param0->unk_0C[0].unk_10.unk_04; + v7 = v4 + (v3 - v4) / 2; + + switch (ov117_022637AC(param0, param1)) { + case 0: + v5 = v3 + param2; + v6 = v4 + param2; + break; + case 1: + v13 = ov117_022637E4(param0, param2, v3, v4, &v5, &v6); + break; + case 2: + v13 = ov117_022637E4(param0, param2, v4, v3, &v6, &v5); + break; + } + + v8 = v6 + (v5 - v6) / 2; + + if ((v7 == v8) && (v3 == v5) && (v4 == v6)) { + return 0; + } + + if (v8 < 0) { + v8 = 0; + } + + if (v5 < 0) { + v5 = 0; + } + + if (v6 < 0) { + v6 = 0; + } + + if (v8 > (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE)) { + v8 = (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE); + v13 = 1; + } + + if (v5 > (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE)) { + v5 = (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE); + v13 = 1; + } + + if (v6 > (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE)) { + v6 = (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE); + v13 = 1; + } + + { + fx32 v14, v15; + int v16; + + v16 = 64; + + switch (ov117_022637AC(param0, param1)) { + case 0: + default: + if (v5 < v6) { + v14 = v16 * FX32_ONE; + } else if (v5 > v6) { + v14 = -v16 * FX32_ONE; + } else { + v14 = 0; + } + + v14 = v16 * FX32_ONE; + v15 = v6 - v8; + v11 = FX_Atan2Idx(v15, v14); + v12 = v11 + 0x8000; + break; + case 2: + v14 = v16 * FX32_ONE; + v15 = (v6 - v8); + v11 = FX_Atan2Idx(v15, v14); + v12 = v11 + 0x8000; + break; + case 1: + v14 = -v16 * FX32_ONE; + v15 = v5 - v8; + v12 = FX_Atan2Idx(v15, v14); + v11 = v12 + 0x8000; + break; + } + } + + { + fx32 v17 = ((128 * FX32_ONE) / 2) / FX32_ONE; + + param0->unk_0C[0].unk_00.unk_00 = v17 * FX_CosIdx(v12) + ((128 * FX32_ONE) / 2); + param0->unk_0C[0].unk_00.unk_04 = -(v17 * FX_SinIdx(v12) + v8); + param0->unk_0C[0].unk_10.unk_00 = v17 * FX_CosIdx(v11) + ((128 * FX32_ONE) / 2); + param0->unk_0C[0].unk_10.unk_04 = -(v17 * FX_SinIdx(v11) + v8); + + { + int v18; + fx32 v19; + s32 v20; + + v19 = (((128 * FX32_ONE) / 8 * (8 - 1)) - v8) / (8 - 1); + + if (v11 > 0x8000) { + v20 = -(0x10000 - v11) / (8 - 1); + } else { + v20 = v11 / (8 - 1); + } + + for (v18 = 1; v18 < (8 - 1); v18++) { + param0->unk_0C[v18].unk_00.unk_00 = v17 * FX_CosIdx(v12 - v20 * v18) + ((128 * FX32_ONE) / 2); + param0->unk_0C[v18].unk_00.unk_04 = -(v17 * FX_SinIdx(v12 - v20 * v18) + v8 + v19 * v18); + param0->unk_0C[v18].unk_10.unk_00 = v17 * FX_CosIdx(v11 - v20 * v18) + ((128 * FX32_ONE) / 2); + param0->unk_0C[v18].unk_10.unk_04 = -(v17 * FX_SinIdx(v11 - v20 * v18) + v8 + v19 * v18); + param0->unk_0C[v18 - 1].unk_08.unk_00 = param0->unk_0C[v18].unk_00.unk_00; + param0->unk_0C[v18 - 1].unk_08.unk_04 = param0->unk_0C[v18].unk_00.unk_04; + param0->unk_0C[v18 - 1].unk_18.unk_00 = param0->unk_0C[v18].unk_10.unk_00; + param0->unk_0C[v18 - 1].unk_18.unk_04 = param0->unk_0C[v18].unk_10.unk_04; + } + } + } + if (v13 == 1) { + return 2; + } + + return 0; +} + +static int ov117_022637AC (UnkStruct_ov117_022626B0 * param0, int param1) +{ + if (param1 == 1) { + return 0; + } + if (param0->unk_224 < param0->unk_21C - 16) { + return 1; + } + if (param0->unk_224 > param0->unk_21C + 16) { + return 2; + } + + return 0; +} + +static int ov117_022637E4 (UnkStruct_ov117_022626B0 * param0, fx32 param1, fx32 param2, fx32 param3, fx32 * param4, fx32 * param5) +{ + int v0 = 0; + + *param4 = param2; + *param5 = param3; + + if (param2 + param1 > (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE)) { + param1 -= (param2 + param1) - (((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE); + v0 = 1; + } + + *param4 = param2 + param1; + + if (param3 <= param2) { + *param5 = param3 - (param1 * 25 / 100); + } else { + *param5 = param3; + } + + return v0; +} + +static fx32 ov117_0226384C (UnkStruct_ov117_022626B0 * param0) +{ + fx32 v0, v1, v2; + fx32 v3, v4, v5; + fx32 v6; + int v7 = (8 - 1) - 1; + + v3 = param0->unk_0C[0].unk_10.unk_04 + (param0->unk_0C[0].unk_00.unk_04 - param0->unk_0C[0].unk_10.unk_04) / 2; + v2 = -(param0->unk_0C[v7].unk_08.unk_04 - v3); + v4 = param0->unk_0C[0].unk_10.unk_00 - param0->unk_0C[0].unk_00.unk_00; + v5 = param0->unk_0C[v7].unk_18.unk_00 - param0->unk_0C[v7].unk_08.unk_00; + v6 = FX_Mul(v4 + v5, v2) / 2; + + return v6; +} + +static int ov117_022638AC (UnkStruct_ov117_022626B0 * param0) +{ + fx32 v0; + int v1; + + v0 = ov117_0226384C(param0); + v1 = 100 * (fx64)v0 / (((((((128 * FX32_ONE)) - 0) + (((128 * FX32_ONE)) - 0)) * (fx64)((((128 * FX32_ONE) / 8 * (8 - 1)) - 12 * FX32_ONE))) >> FX32_SHIFT) / 2); + + return v1; +} + +static void ov117_022638D8 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_02006C24 * v0; + + v0 = sub_02006C24(173, 110); + + sub_0200CDC4(param0->unk_8C, 2, param0->unk_24, param0->unk_28, v0, 58, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 10005); + sub_0200CC3C(param0->unk_24, param0->unk_28, v0, 55, 0, NNS_G2D_VRAM_TYPE_2DMAIN, 10003); + sub_0200CE24(param0->unk_24, param0->unk_28, v0, 57, 0, 10003); + sub_0200CE54(param0->unk_24, param0->unk_28, v0, 56, 0, 10003); + sub_02006CA8(v0); +} + +static void ov117_022639BC (UnkStruct_ov117_02261280 * param0) +{ + sub_0200D070(param0->unk_28, 10003); + sub_0200D090(param0->unk_28, 10003); + sub_0200D0A0(param0->unk_28, 10003); + sub_0200D080(param0->unk_28, 10005); +} + +static UnkStruct_0200D0F4 * ov117_02263A00 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_0200D0F4 * v0; + UnkStruct_ov104_0223F9E0 v1; + + v1 = Unk_ov117_02266B38; + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v1); + + sub_0200D3F4(v0, 0); + sub_0200D324(v0->unk_00); + + return v0; +} + +static void ov117_02263A6C (UnkStruct_ov117_022626B0 * param0, UnkStruct_0200D0F4 * param1) +{ + int v0; + + if (param0->unk_238 == 0) { + v0 = 0; + } else { + v0 = ov117_022637AC(param0, 0) + 1; + } + + sub_0200D500(param1, param0->unk_21C, (param0->unk_230 >> FX32_SHIFT) + Unk_ov117_02266B05[param0->unk_270].unk_02, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1, v0); + sub_0200D324(param1->unk_00); +} + +static void ov117_02263AE4 (UnkStruct_0200D0F4 * param0) +{ + sub_0200D0F4(param0); +} diff --git a/src/overlay117/ov117_02263AF0.c b/src/overlay117/ov117_02263AF0.c new file mode 100644 index 0000000000..e3ea5293f2 --- /dev/null +++ b/src/overlay117/ov117_02263AF0.c @@ -0,0 +1,2496 @@ +#include +#include + +#include "struct_decls/struct_02006C24_decl.h" +#include "struct_decls/struct_0200C704_decl.h" +#include "struct_decls/struct_02012744_decl.h" +#include "struct_decls/struct_02012CE0_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_02023790_decl.h" + +#include "struct_defs/struct_0200D0F4.h" +#include "struct_defs/struct_020127E8.h" +#include "struct_defs/struct_0201EE28.h" +#include "struct_defs/struct_0205AA50.h" +#include "overlay104/struct_ov104_0223F9E0.h" +#include "overlay117/struct_ov117_02261280.h" +#include "overlay117/struct_ov117_02263DAC.h" +#include "overlay117/struct_ov117_02263EF8.h" +#include "overlay117/struct_ov117_02264508.h" +#include "overlay117/struct_ov117_02264808.h" +#include "overlay117/struct_ov117_02264930.h" +#include "overlay117/struct_ov117_02264E84.h" +#include "overlay117/struct_ov117_0226504C.h" +#include "overlay117/struct_ov117_022653F4.h" +#include "overlay117/struct_ov117_02265428.h" +#include "overlay117/struct_ov117_02265C1C.h" +#include "overlay117/struct_ov117_02265C3C.h" +#include "overlay117/struct_ov117_02265EB0.h" +#include "overlay117/struct_ov117_02265EC8.h" +#include "overlay117/struct_ov117_02266274.h" +#include "overlay117/struct_ov117_02266344.h" +#include "overlay117/struct_ov117_02266F10.h" + +#include "unk_02002B7C.h" +#include "unk_02002F38.h" +#include "unk_02005474.h" +#include "unk_020068C8.h" +#include "unk_02006E3C.h" +#include "unk_0200AC5C.h" +#include "unk_0200C6E4.h" +#include "unk_02012744.h" +#include "unk_02018340.h" +#include "unk_0201D15C.h" +#include "unk_0201D670.h" +#include "unk_0201E86C.h" +#include "unk_02022974.h" +#include "unk_02023790.h" +#include "unk_02034198.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_02263AF0.h" +#include "overlay117/ov117_022666C0.h" + +typedef struct { + u16 unk_00; + u16 unk_02; + fx32 unk_04; +} UnkStruct_ov117_02266BEC; + +typedef struct { + s32 unk_00[3]; +} UnkStruct_ov117_02266ED4; + +typedef struct { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; +} UnkStruct_ov117_02266BC4; + +static void ov117_02263BA4(UnkStruct_02018340 * param0, UnkStruct_ov117_02263DAC * param1, int param2); +int ov117_02263DAC(UnkStruct_ov117_02261280 * param0); +static void ov117_02263C8C(int param0, int param1, int param2, fx32 * param3, fx32 * param4); +static int ov117_02263D08(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02263DAC * param1, int param2, int param3, int param4); +static int ov117_02263E1C(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02264E84 * param1, UnkStruct_ov117_02263EF8 * param2); +static BOOL ov117_02263F80(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02263EF8 * param1); +static UnkStruct_0200D0F4 * ov117_0226417C(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02266F10 * param1); +static void ov117_02264214(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264808 * param1, UnkStruct_ov117_02263DAC * param2); +static void ov117_02263B8C(UnkStruct_02018340 * param0, UnkStruct_ov117_02263DAC * param1); +static UnkStruct_0200D0F4 * ov117_02264884(UnkStruct_ov117_02261280 * param0, int param1, int param2); +void ov117_022648E0(UnkStruct_ov117_02261280 * param0); +BOOL ov117_02264930(UnkStruct_ov117_02261280 * param0); +static BOOL ov117_02264958(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264930 * param1, int param2, int param3); +static void ov117_0226498C(UnkStruct_ov117_02264930 * param0); +static void ov117_022649D8(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264930 * param1); +static int ov117_02264A70(int param0); +static void ov117_02264A84(UnkStruct_ov117_02261280 * param0); +static void ov117_02265438(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2); +static void ov117_02265428(UnkStruct_ov117_02265428 * param0, int param1); +static int ov117_0226544C(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2); +static int ov117_02265454(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2); +static int ov117_02265644(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2); +static int ov117_022657C4(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2); +static int ov117_022653F4(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 ** param1); +static BOOL ov117_02265C3C(UnkStruct_ov117_02265C3C * param0, UnkStruct_ov117_02265C1C * param1); +static void ov117_02265FD4(UnkStruct_ov117_02265EC8 * param0); +static BOOL ov117_02266008(UnkStruct_ov117_02265EC8 * param0); +static BOOL ov117_02266030(UnkStruct_ov117_02265EC8 * param0); +static void ov117_02266344(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02266344 * param1); +static void ov117_02266384(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02266344 * param1); +static void ov117_0226639C(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 * param1, UnkStruct_ov117_02266344 * param2); +static void ov117_02266440(UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 * param1, UnkStruct_ov117_02266344 * param2); + +static const u16 Unk_ov117_02266C7C[][4] = { + {0x16, 0x15, 0x17, 0x18}, + {0x16, 0x15, 0x17, 0x18}, + {0x16, 0x17}, + {0x16, 0x18, 0x17}, + {0x16, 0x15, 0x17, 0x18} +}; + +__attribute__((aligned(4))) static const u16 Unk_ov117_02266B6C[] = { + 0x6, + 0x8, + 0x7 +}; + +static const UnkStruct_ov117_02266F10 Unk_ov117_02266F10[][4] = { + { + {0x80, 0xD0, 0x7, 0x2, 0x2} + }, + { + {0x80, 0xD0, 0x7, 0x2, 0x2} + }, + { + {0x80, 0xD0, 0x7, 0x2, 0x2}, + {0x80, 0xFFFFFFFFFFFFFFF0, 0xA, 0x1, 0x0} + }, + { + {0x80, 0xD0, 0x7, 0x2, 0x2}, + {0xFFFFFFFFFFFFFFF0, 0x60, 0x9, 0x3, 0x3}, + {0x110, 0x60, 0x8, 0x1, 0x1} + }, + { + {0x80, 0xD0, 0x7, 0x2, 0x2}, + {0xFFFFFFFFFFFFFFF0, 0x60, 0x9, 0x4, 0x3}, + {0x80, 0xFFFFFFFFFFFFFFF0, 0xA, 0x1, 0x0}, + {0x100, 0x60, 0x8, 0x3, 0x1} + } +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266CCC = { + 0x0, + 0x0, + 0x0, + 0x0, + 0x14, + 0x1, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266D00 = { + 0x80, + 0x60, + 0x0, + 0x0, + 0xC, + 0x5, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x1, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266D34 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0xB, + 0x0, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x1, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266D68 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0x13, + 0x0, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266D9C = { + 0x0, + 0x0, + 0x0, + 0x0, + 0x10, + 0x2, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266DD0 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0xF, + 0x0, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266E04 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0x12, + 0x1, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266E38 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0x11, + 0x0, + NNS_G2D_VRAM_TYPE_2DSUB, + {0x2714, 0x2716, 0x2714, 0x2714, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266E6C = { + 0x28, + 0xB0, + 0x0, + 0x0, + 0xD, + 0x0, + NNS_G2D_VRAM_TYPE_2DMAIN, + {0x2712, 0x2714, 0x2712, 0x2712, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x3, + 0x0 +}; + +static const UnkStruct_ov104_0223F9E0 Unk_ov117_02266EA0 = { + 0x0, + 0x0, + 0x0, + 0x0, + 0xB, + 0x0, + NNS_G2D_VRAM_TYPE_2DMAIN, + {0x2711, 0x2712, 0x2711, 0x2711, 0xFFFFFFFF, 0xFFFFFFFF}, + 0x0, + 0x0 +}; + +static const u16 Unk_ov117_02266CA4[][4] = { + {0x1D, 0x2D, 0xD, 0x3D}, + {0x1D, 0x2D, 0xD, 0x3D}, + {0x1D, 0xD}, + {0x1D, 0x3D, 0xD}, + {0x1D, 0x2D, 0xD, 0x3D} +}; + +static const u16 Unk_ov117_02266B72[4] = { + 0x1D, + 0xD, + 0x3D, + 0x2D +}; + +static const u16 Unk_ov117_02266C04[][4] = { + {0x20, 0x10, 0x30, 0x40}, + {0x20, 0x10, 0x30, 0x40}, + {0x20, 0x10}, + {0x20, 0x30, 0x10}, + {0x20, 0x40, 0x10, 0x30} +}; + +static const u16 Unk_ov117_02266B8A[4] = { + 0x20, + 0x10, + 0x30, + 0x40 +}; + +static const fx32 Unk_ov117_02266BA4[] = { + FX32_ONE, + 0x1800, + 0xA00, + 0x2000 +}; + +static const u16 Unk_ov117_02266C54[][4] = { + {0x52, 0x51, 0x53, 0x54}, + {0x52, 0x51, 0x53, 0x54}, + {0x52, 0x51}, + {0x52, 0x53, 0x51}, + {0x52, 0x54, 0x51, 0x53} +}; + +static const u16 Unk_ov117_02266B82[4] = { + 0x52, + 0x51, + 0x53, + 0x54 +}; + +static const struct { + s16 unk_00; + s16 unk_02; +} Unk_ov117_02266BB4[] = { + {0x80, 0xA4}, + {0x80, 0x1C}, + {0x34, 0x60}, + {0xCC, 0x60} +}; + +static const u16 Unk_ov117_02266B7A[] = { + 0xC, + 0xC, + 0xF, + 0x12 +}; + +static const u16 Unk_ov117_02266C2C[][4] = { + {0x2, 0x4, 0x1, 0x3}, + {0x2, 0x4, 0x1, 0x3}, + {0x2, 0x1}, + {0x2, 0x3, 0x1}, + {0x2, 0x4, 0x1, 0x3} +}; + +static const u8 Unk_ov117_02266BD8[][4] = { + {0x0}, + {0x0, 0x2, 0x1, 0x3}, + {0x0, 0x1}, + {0x0, 0x2, 0x3}, + {0x0, 0x2, 0x1, 0x3} +}; + +static const UnkStruct_ov117_02266ED4 Unk_ov117_02266ED4[] = { + { 0xBB8, 0x1770, 0x1F40 }, + { 0x3E8, 0x3E8, 0x3E8 }, + { 0x19A6, 0x20FA, 0x284E }, + { 0x20EC, 0x2A54, 0x33BC }, + { 0x2648, 0x3138, 0x3C28 } +}; + +static const UnkStruct_ov117_02266BEC Unk_ov117_02266BEC[] = { + { 0xB, 0xC, 0x1100 }, + { 0x9, 0xA, 0x1700 }, + { 0x7, 0x8, 0x1D00 } +}; + +static const UnkStruct_ov117_02266BC4 Unk_ov117_02266BC4[] = { + { 0x8, 0x14, 0x7 }, + { 0x8, 0x11, 0x7 }, + { 0x8, 0xE, 0x6 }, + { 0x8, 0xA, 0x6 }, + { 0x8, 0x6, 0x5 } +}; + +const s32 Unk_ov117_02266FD8[] = { + 0x64, + 0x7D, + 0x58 +}; + +static int(*const Unk_ov117_02266B94[])(UnkStruct_ov117_02261280 *, UnkStruct_ov117_022653F4 *, UnkStruct_ov117_02265428 *) = { + ov117_0226544C, + ov117_02265454, + ov117_02265644, + ov117_022657C4, +}; + +void ov117_02263AF0 (UnkStruct_02018340 * param0, int param1, int param2, UnkStruct_ov117_02263DAC * param3) +{ + UnkStruct_02006C24 * v0; + + v0 = sub_02006C24(173, 110); + + sub_020070E8(v0, Unk_ov117_02266BEC[param2].unk_00, param0, 7, 0, 0, 0, 110); + sub_0200710C(v0, Unk_ov117_02266BEC[param2].unk_02, param0, 7, 0, 0, 0, 110); + sub_02006CA8(v0); + + MI_CpuClear8(param3, sizeof(UnkStruct_ov117_02263DAC)); + + param3->unk_0C = Unk_ov117_02266ED4[param1].unk_00[param2]; + param3->unk_04 = param2; + param3->unk_00 = 1; + param3->unk_2C = 1; + + ov117_02263BA4(param0, param3, param1); + sub_02005748(1515); +} + +static void ov117_02263B8C (UnkStruct_02018340 * param0, UnkStruct_ov117_02263DAC * param1) +{ + sub_02019EBC(param0, 7); + param1->unk_00 = 0; + param1->unk_2D = 1; +} + +static void ov117_02263BA4 (UnkStruct_02018340 * param0, UnkStruct_ov117_02263DAC * param1, int param2) +{ + fx32 v0, v1; + int v2, v3; + + if (param1->unk_00 == 0) { + return; + } + + ov117_02263C8C(param2, param1->unk_04, param1->unk_08, &v0, &v1); + + v2 = 0; + v3 = 0; + + if (v0 == FX32_ONE) { + v2 = 0; + } else if (v0 < FX32_ONE) { + v2 = 128 - (128 * v0 / FX32_ONE); + } else { + v2 = -(128 * (v0 - FX32_ONE) / FX32_ONE); + } + + if (v1 == FX32_ONE) { + v3 = 0; + } else if (v1 < FX32_ONE) { + v3 = 128 - (128 * v1 / FX32_ONE); + } else { + v3 = -(128 * (v1 - FX32_ONE) / FX32_ONE); + } + + { + MtxFx22 v4; + fx32 v5, v6; + int v7; + + if (param1->unk_10 == 0) { + v7 = 0; + } else { + v7 = (sub_0201D2E8() & 7) + 1; + + if (param1->unk_28 & 1) { + v7 = -v7; + } + + param1->unk_28 ^= 1; + } + + v5 = FX_Inv(v0); + v6 = FX_Inv(v1); + + sub_0201C6A8(param0, 7, 3, v5); + sub_0201C6A8(param0, 7, 6, v6); + sub_0201C63C(param0, 7, 0, 0 - v2 + v7); + sub_0201C63C(param0, 7, 3, (256 - 192) / 2 + 7 - v3); + } +} + +static void ov117_02263C8C (int param0, int param1, int param2, fx32 * param3, fx32 * param4) +{ + fx32 v0; + + v0 = Unk_ov117_02266BEC[param1].unk_04 * param2 / Unk_ov117_02266ED4[param0].unk_00[param1]; + v0 += 0x300; + + *param3 = v0; + *param4 = v0; + + if (v0 > (FX32_ONE)) { + *param3 += FX_Mul((v0 - (FX32_ONE)), (FX32_CONST(1.1))); + } +} + +int ov117_02263CF4 (int param0) +{ + if (10 <= param0) { + return 2; + } else if (5 <= param0) { + return 1; + } + + return 0; +} + +static int ov117_02263D08 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02263DAC * param1, int param2, int param3, int param4) +{ + param1->unk_10 += param2; + param1->unk_14 = param1->unk_10 / 6; + param1->unk_18[ov117_022622C4(param0, param3)] += param2; + + if (param3 == sub_0203608C()) { + param0->unk_3D4C += param2; + ov117_02265F98(¶m0->unk_15A8, param0->unk_3D4C); + } + + return param1->unk_10; +} + +static int ov117_02263D5C (UnkStruct_ov117_02263DAC * param0) +{ + int v0; + + if (param0->unk_10 == 0) { + return 0; + } + + if (param0->unk_10 >= param0->unk_14) { + v0 = param0->unk_14; + } else { + v0 = param0->unk_10; + } + + param0->unk_10 -= v0; + param0->unk_08 += v0; + + return 1; +} + +void ov117_02263D80 (UnkStruct_ov117_02261280 * param0, UnkStruct_02018340 * param1, UnkStruct_ov117_02263DAC * param2) +{ + if (param0->unk_2FCC == 0) { + return; + } + + ov117_02263D5C(param2); + ov117_02263BA4(param1, param2, param0->unk_00->unk_30); +} + +int ov117_02263DAC (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02263DAC * v0 = ¶m0->unk_1428; + return 100 * v0->unk_08 / v0->unk_0C; +} + +BOOL ov117_02263DC4 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02264E84 * param1) +{ + int v0, v1; + + if (param0->unk_2FC8 != param1->unk_02) { + (void)0; + } + + for (v0 = 0; v0 < 40; v0++) { + if (param0->unk_2FDC[v0].unk_00 == 0) { + v1 = ov117_02263E1C(param0, param1, ¶m0->unk_2FDC[v0]); + ov117_02265B58(param0, ¶m0->unk_1560, param1->unk_01, param1->unk_00, v1); + + return 1; + } + } + + GF_ASSERT(0); + return 0; +} + +static int ov117_02263E1C (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02264E84 * param1, UnkStruct_ov117_02263EF8 * param2) +{ + int v0; + const UnkStruct_ov117_02266F10 * v1; + int v2; + + GF_ASSERT(param2->unk_00 == 0); + + MI_CpuClear8(param2, sizeof(UnkStruct_ov117_02263EF8)); + + v0 = ov117_022622C4(param0, param1->unk_00); + v1 = &Unk_ov117_02266F10[param0->unk_00->unk_30][v0]; + + param2->unk_04 = param1->unk_00; + param2->unk_06 = param1->unk_02; + param2->unk_08 = param1->unk_08; + param2->unk_14 = v1; + param2->unk_0E = param1->unk_01; + param2->unk_10 = ov117_0226417C(param0, v1); + + if (param1->unk_00 == sub_0203608C()) { + ov117_02261E38(param0, param1->unk_04); + param2->unk_0C = 25; + sub_0200D3F4(param2->unk_10, 0); + } + + param2->unk_00 = 1; + + { + s16 v3, v4; + s32 v5 = 0; + + sub_0200D5A0(param2->unk_10, &v3, &v4, ((192 + 160) << FX32_SHIFT)); + + switch (v1->unk_07) { + case 0: + v5 = Unk_ov117_02266BB4[1].unk_02 - v4; + break; + case 1: + v5 = v3 - Unk_ov117_02266BB4[3].unk_00; + break; + case 2: + v5 = v4 - Unk_ov117_02266BB4[0].unk_02; + break; + case 3: + v5 = Unk_ov117_02266BB4[2].unk_00 - v3; + break; + } + + v2 = (v5 * FX32_ONE) / (FX32_CONST(5.0)); + } + return v2; +} + +void ov117_02263EF8 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02263EF8 * v1; + + v1 = param0->unk_2FDC; + + for (v0 = 0; v0 < 40; v0++) { + if (v1->unk_00 == 1) { + if (v1->unk_0C > 0) { + v1->unk_0C--; + + if (v1->unk_0C == 0) { + sub_0200D3F4(v1->unk_10, 1); + } + } else if (ov117_02263F80(param0, v1) == 1) { + if ((param0->unk_2FCC == 1) && (param0->unk_2FBC == 0)) { + ov117_02263D08(param0, ¶m0->unk_1428, v1->unk_08, v1->unk_04, v1->unk_0E); + } + + sub_0200D0F4(v1->unk_10); + v1->unk_00 = 0; + } + } + + v1++; + } +} + +static BOOL ov117_02263F80 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02263EF8 * param1) +{ + s16 v0, v1, v2, v3; + int v4 = 0; + s32 v5, v6; + f32 v7; + fx32 v8; + + sub_0200D5A0(param1->unk_10, &v2, &v3, ((192 + 160) << FX32_SHIFT)); + + switch (param1->unk_14->unk_07) { + case 0: + v6 = Unk_ov117_02266BB4[1].unk_02 - v3; + + sub_0200D5E8(param1->unk_10, 0, (FX32_CONST(5.0))); + sub_0200D5A0(param1->unk_10, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + + v5 = Unk_ov117_02266BB4[1].unk_02 - v1; + + if (v1 > (98 - 24)) { + v4 = 1; + } + break; + case 1: + v6 = v2 - Unk_ov117_02266BB4[3].unk_00; + + sub_0200D5E8(param1->unk_10, -(FX32_CONST(5.0)), 0); + sub_0200D5A0(param1->unk_10, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + + v5 = v0 - Unk_ov117_02266BB4[3].unk_00; + + if (v0 < (128 + 24)) { + v4 = 1; + } + break; + case 2: + v6 = v3 - Unk_ov117_02266BB4[0].unk_02; + + sub_0200D5E8(param1->unk_10, 0, -(FX32_CONST(5.0))); + sub_0200D5A0(param1->unk_10, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + + v5 = v1 - Unk_ov117_02266BB4[0].unk_02; + + if (v1 < (98 + 16)) { + v4 = 1; + } + break; + case 3: + v6 = Unk_ov117_02266BB4[2].unk_00 - v2; + + sub_0200D5E8(param1->unk_10, (FX32_CONST(5.0)), 0); + sub_0200D5A0(param1->unk_10, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + + v5 = Unk_ov117_02266BB4[2].unk_00 - v0; + + if (v0 > (128 - 24)) { + v4 = 1; + } + break; + } + if (v5 >= 0) { + if (v5 < (24 / 2 + 2)) { + v8 = FX32_ONE * v5 / (24 / 2 + 2); + + if (v8 < 0x400) { + v8 = 0x400; + } + + v7 = FX_FX32_TO_F32(v8); + sub_0200D6E8(param1->unk_10, v7, v7); + } + } else { + if (v5 > -(24 / 2 + 2)) { + v8 = Unk_ov117_02266BA4[param1->unk_0E] * (-v5) / (24 / 2 + 2); + + if (v8 < 0x400) { + v8 = 0x400; + } + + v7 = FX_FX32_TO_F32(v8); + sub_0200D6E8(param1->unk_10, v7, v7); + } + } + if ((param1->unk_04 == sub_0203608C()) && (v6 >= 0) && (v5 <= 0)) { + UnkStruct_ov117_02265428 * v9; + + param1->unk_0E = ov117_022653F4(param0, &v9); + + switch (param1->unk_0E) { + case 1: + param1->unk_08 *= 2; + break; + case 2: + param1->unk_08 /= 2; + break; + case 3: + param1->unk_08 *= 3; + break; + } + + ov117_02264EB8(param0, param1->unk_0E); + + if (param1->unk_0E != 0) { + ov117_02265428(v9, 3); + } + + { + UnkStruct_ov117_02264E84 * v10; + + v10 = ov117_02264E84(param0); + + if (v10 != NULL) { + ov117_022666E8(param0, v10); + } else { + (void)0; + } + } + } + + if (v4 == 1) { + return 1; + } + + return 0; +} + +static UnkStruct_0200D0F4 * ov117_0226417C (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02266F10 * param1) +{ + UnkStruct_0200D0F4 * v0; + UnkStruct_ov104_0223F9E0 v1; + + v1 = Unk_ov117_02266CCC; + v1.unk_00 = param1->unk_00; + v1.unk_02 = param1->unk_02; + v1.unk_0C = param1->unk_06; + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v1); + + sub_0200D500(v0, param1->unk_00, param1->unk_02, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(v0, param1->unk_04); + sub_0200D6A4(v0, 2); + sub_0200D324(v0->unk_00); + + return v0; +} + +void ov117_022641E4 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + + for (v0 = 0; v0 < 40; v0++) { + if (param0->unk_2FDC[v0].unk_00 == 1) { + sub_0200D0F4(param0->unk_2FDC[v0].unk_10); + param0->unk_2FDC[v0].unk_00 = 0; + } + } +} + +static void ov117_02264214 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264808 * param1, UnkStruct_ov117_02263DAC * param2) +{ + UnkStruct_ov104_0223F9E0 v0; + UnkStruct_0200D0F4 * v1; + int v2; + int v3[4]; + int v4, v5, v6; + int v7 = 0; + int v8, v9; + + v0 = Unk_ov117_02266D00; + v4 = param2->unk_08 + param2->unk_10; + + for (v8 = 0; v8 < param0->unk_00->unk_30; v8++) { + v2 = ov117_022622C4(param0, param0->unk_00->unk_2C[v8]); + v3[v8] = param2->unk_18[v2] * 36 / v4; + v6 = Unk_ov117_02266C7C[param0->unk_00->unk_30][v2]; + + for (v9 = 0; v9 < v3[v8]; v9++) { + UnkStruct_ov117_02264508 * v10 = ¶m1->unk_04[v7]; + + v1 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v0); + + if (v1 == NULL) { + break; + } + + sub_0200D500(v1, 128, 96, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(v1, v6); + sub_0200D324(v1->unk_00); + + v10->unk_04 = sub_0201D2E8() % 0x2000 + 0x2000; + v10->unk_08 = sub_0201D2E8() % 0x4000 + 0x2000; + v10->unk_0C = (sub_0201D2E8() % 360) << FX32_SHIFT; + v10->unk_10 = sub_0201D2E8() % 0x14000 + 0xa000; + v10->unk_14 = sub_0201D2E8() % 15 + 20; + + param1->unk_04[v7].unk_00 = v1; + + v7++; + } + } + + v0.unk_08 = 14; + v0.unk_0C = 0; + + for (v8 = 0; v8 < 8; v8++) { + UnkStruct_ov117_02264508 * v11 = ¶m1->unk_868[v8]; + + v1 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v0); + + if (v1 == NULL) { + break; + } + + sub_0200D500(v1, 128, 96, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(v1, 28 + sub_0201D2E8() % 3); + sub_0200D324(v1->unk_00); + + v11->unk_04 = sub_0201D2E8() % 0x2000 + 0x2000; + v11->unk_08 = sub_0201D2E8() % 0x4000 + 0x2000; + v11->unk_0C = (sub_0201D2E8() % 360) << FX32_SHIFT; + v11->unk_10 = sub_0201D2E8() % 0x14000 + 0x10000; + v11->unk_14 = sub_0201D2E8() % 15 + 20; + + param1->unk_868[v8].unk_00 = v1; + } + + v0.unk_08 = 13; + v0.unk_0C = Unk_ov117_02266B6C[param2->unk_04]; + + for (v8 = 0; v8 < 3; v8++) { + UnkStruct_ov117_02264508 * v12 = ¶m1->unk_928[v8]; + + v1 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v0); + + if (v1 == NULL) { + break; + } + + sub_0200D500(v1, 128, 96, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(v1, 11); + sub_0200D324(v1->unk_00); + + v12->unk_04 = sub_0201D2E8() % 0x2000 + 0x2000; + v12->unk_08 = sub_0201D2E8() % 0x4000 + 0x2000; + v12->unk_0C = (sub_0201D2E8() % 360) << FX32_SHIFT; + v12->unk_10 = sub_0201D2E8() % 0x14000 + 0x10000; + v12->unk_14 = sub_0201D2E8() % 15 + 20; + + param1->unk_928[v8].unk_00 = v1; + } +} + +void ov117_02264508 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02264508 * v1, * v2, * v3; + + for (v0 = 0; v0 < 36; v0++) { + v1 = ¶m0->unk_339C.unk_04[v0]; + + if (v1->unk_00 != NULL) { + sub_0200D0F4(v1->unk_00); + } + } + + for (v0 = 0; v0 < 8; v0++) { + v2 = ¶m0->unk_339C.unk_868[v0]; + + if (v2->unk_00 != NULL) { + sub_0200D0F4(v2->unk_00); + } + } + + for (v0 = 0; v0 < 3; v0++) { + v3 = ¶m0->unk_339C.unk_928[v0]; + + if (v3->unk_00 != NULL) { + sub_0200D0F4(v3->unk_00); + } + } +} + +BOOL ov117_02264560 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02264808 * v0 = ¶m0->unk_339C; + UnkStruct_ov117_02264508 * v1, * v2, * v3; + s16 v4, v5; + int v6 = 0; + int v7; + + if (v0->unk_00 == 0) { + return 0; + } + + for (v7 = 0; v7 < 36; v7++) { + v1 = &v0->unk_04[v7]; + + if (v1->unk_00 != NULL) { + if (v1->unk_14 == 0) { + sub_0200D0F4(v1->unk_00); + v1->unk_00 = NULL; + continue; + } + + v1->unk_0C += v1->unk_10; + v1->unk_04 += v1->unk_08; + + if (v1->unk_04 >= (128 + 32) << FX32_SHIFT) { + v1->unk_04 = (128 + 32) << FX32_SHIFT; + } + + v4 = 128 + (FX_Mul(sub_0201D2B8(v1->unk_0C), v1->unk_04)) / FX32_ONE; + v5 = 96 + (-FX_Mul(sub_0201D2C4(v1->unk_0C), v1->unk_04)) / FX32_ONE; + + sub_0200D500(v1->unk_00, v4, v5, ((192 + 160) << FX32_SHIFT)); + + v1->unk_14--; + v6++; + } + } + + for (v7 = 0; v7 < 8; v7++) { + v2 = &v0->unk_868[v7]; + + if (v2->unk_00 != NULL) { + if (v2->unk_14 == 0) { + sub_0200D0F4(v2->unk_00); + v2->unk_00 = NULL; + continue; + } + + v2->unk_0C += v2->unk_10; + v2->unk_04 += v2->unk_08; + + if (v2->unk_04 >= (128 + 32) << FX32_SHIFT) { + v2->unk_04 = (128 + 32) << FX32_SHIFT; + } + + v4 = 128 + (FX_Mul(sub_0201D2B8(v2->unk_0C), v2->unk_04)) / FX32_ONE; + v5 = 96 + (-FX_Mul(sub_0201D2C4(v2->unk_0C), v2->unk_04)) / FX32_ONE; + + sub_0200D500(v2->unk_00, v4, v5, ((192 + 160) << FX32_SHIFT)); + + v2->unk_14--; + v6++; + } + } + + for (v7 = 0; v7 < 3; v7++) { + v3 = &v0->unk_928[v7]; + + if (v3->unk_00 != NULL) { + if (v3->unk_14 == 0) { + sub_0200D0F4(v3->unk_00); + v3->unk_00 = NULL; + continue; + } + + v3->unk_0C += v3->unk_10; + v3->unk_04 += v3->unk_08; + + if (v3->unk_04 >= (128 + 32) << FX32_SHIFT) { + v3->unk_04 = (128 + 32) << FX32_SHIFT; + } + + v4 = 128 + (FX_Mul(sub_0201D2B8(v3->unk_0C), v3->unk_04)) / FX32_ONE; + v5 = 96 + (-FX_Mul(sub_0201D2C4(v3->unk_0C), v3->unk_04)) / FX32_ONE; + + sub_0200D500(v3->unk_00, v4, v5, ((192 + 160) << FX32_SHIFT)); + + v3->unk_14--; + v6++; + } + } + + if (v6 == 0) { + v0->unk_00 = 0; + } + + return 1; +} + +BOOL ov117_02264808 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02264808 * v0 = ¶m0->unk_339C; + int v1; + + if (v0->unk_00 == 1) { + return 0; + } + + MI_CpuClear8(v0, sizeof(UnkStruct_ov117_02264808)); + + ov117_02264214(param0, ¶m0->unk_339C, ¶m0->unk_1428); + ov117_02263B8C(param0->unk_2C, ¶m0->unk_1428); + ov117_02264A84(param0); + + param0->unk_2FCC = 0; + param0->unk_1428.unk_08 = 0; + param0->unk_1428.unk_10 = 0; + + for (v1 = 0; v1 < 4; v1++) { + param0->unk_1428.unk_18[v1] = 0; + } + + sub_02005748(1404); + v0->unk_00 = 1; + return 1; +} + +static UnkStruct_0200D0F4 * ov117_02264884 (UnkStruct_ov117_02261280 * param0, int param1, int param2) +{ + UnkStruct_0200D0F4 * v0; + UnkStruct_ov104_0223F9E0 v1; + + v1 = Unk_ov117_02266D34; + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v1); + + sub_0200D500(v0, (9 * 8) - param2 * 16, (4 * 8), ((192 + 160) << FX32_SHIFT)); + sub_0200D364(v0, 0 + param1); + sub_0200D324(v0->unk_00); + sub_0200D390(v0, 1); + + return v0; +} + +void ov117_022648E0 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02264930 * v1; + + for (v0 = 0; v0 < 5; v0++) { + v1 = ¶m0->unk_3D10[v0]; + ov117_02264958(param0, v1, v0, v0); + sub_0200D34C(v1->unk_00, FX32_ONE * 4 * v0); + } +} + +void ov117_02264914 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02264930 * v1; + + for (v0 = 0; v0 < 5; v0++) { + v1 = ¶m0->unk_3D10[v0]; + sub_0200D0F4(v1->unk_00); + } +} + +BOOL ov117_02264930 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02264930 * v0; + int v1; + + for (v1 = 0; v1 < 5; v1++) { + v0 = ¶m0->unk_3D10[v1]; + ov117_0226498C(v0); + ov117_022649D8(param0, v0); + } + + return 1; +} + +static BOOL ov117_02264958 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264930 * param1, int param2, int param3) +{ + MI_CpuClear8(param1, sizeof(UnkStruct_ov117_02264930)); + + param1->unk_04 = ov117_02264A70(param3); + param1->unk_05 = 1; + param1->unk_00 = ov117_02264884(param0, param1->unk_04, param2); + param1->unk_06 = param2; + param1->unk_08 = param3; + + return 1; +} + +static void ov117_0226498C (UnkStruct_ov117_02264930 * param0) +{ + s16 v0, v1, v2; + + v0 = (9 * 8) - param0->unk_06 * 16; + + sub_0200D5A0(param0->unk_00, &v1, &v2, ((192 + 160) << FX32_SHIFT)); + + if (v0 > v1) { + v1 += 2; + if (v1 > v0) { + v1 = v0; + } + + sub_0200D500(param0->unk_00, v1, v2, ((192 + 160) << FX32_SHIFT)); + } +} + +static void ov117_022649D8 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264930 * param1) +{ + int v0, v1; + UnkStruct_ov117_02264930 * v2; + + if (param1->unk_06 != 0) { + return; + } + + switch (param1->unk_05) { + case 3: + if (sub_0200D3B8(param1->unk_00) == 0) { + param1->unk_08 += 5; + param1->unk_04 = ov117_02264A70(param1->unk_08); + param1->unk_05 = 1; + + sub_0200D364(param1->unk_00, 0 + param1->unk_04); + sub_0200D500(param1->unk_00, (9 * 8) - 5 * 16, (4 * 8), ((192 + 160) << FX32_SHIFT)); + + for (v1 = 0; v1 < 5; v1++) { + v2 = ¶m0->unk_3D10[v1]; + + if (v2->unk_06 == 0) { + v2->unk_06 = 5 - 1; + } else { + v2->unk_06--; + } + } + } + break; + + case 1: + v0 = ov117_02263DAC(param0); + + if ((param1->unk_05 == 1) && (v0 > 75)) { + param1->unk_05 = 2; + sub_0200D364(param1->unk_00, 3 + param1->unk_04); + sub_02005748(1406); + } + + break; + } +} + +static int ov117_02264A70 (int param0) +{ + if (param0 >= 10) { + return 2; + } + + if (param0 >= 5) { + return 1; + } + + return 0; +} + +static void ov117_02264A84 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + UnkStruct_ov117_02264930 * v1; + + for (v0 = 0; v0 < 5; v0++) { + v1 = ¶m0->unk_3D10[v0]; + + if (v1->unk_06 == 0) { + v1->unk_05 = 3; + sub_0200D364(v1->unk_00, 6); + return; + } + } +} + +void ov117_02264AB0 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + + switch (param0->unk_00->unk_30) { + case 3: + sub_02019E2C(param0->unk_2C, 4, 0, 13, 12, 4, 3); + sub_02019E2C(param0->unk_2C, 4, 0x14, 13, 12, 4, 0); + break; + } +} + +void ov117_02264AF0 (UnkStruct_ov117_02261280 * param0) +{ + u16 v0[4][3]; + int v1, v2; + int v3 = 0; + int v4, v5, v6, v7; + u16 * v8, * v9; + + for (v2 = 0; v2 < param0->unk_00->unk_30; v2++) { + v4 = Unk_ov117_02266B72[v2]; + + for (v1 = 0; v1 < 3; v1++) { + v0[v2][v1] = sub_02003910(param0->unk_8C, 1, 1, v4 + v1); + } + } + + v7 = sub_0203608C(); + + for (v3 = 0; v3 < param0->unk_00->unk_30; v3++) { + if (param0->unk_00->unk_2C[v3] == v7) { + break; + } + } + + v8 = sub_02003164(param0->unk_8C, 1); + v9 = sub_0200316C(param0->unk_8C, 1); + + for (v1 = 0; v1 < param0->unk_00->unk_30; v1++) { + v4 = v1; + v5 = Unk_ov117_02266CA4[param0->unk_00->unk_30][ov117_022622C4(param0, param0->unk_00->unk_2C[v1])]; + + for (v6 = 0; v6 < 3; v6++) { + v8[v5 + v6] = v0[v4][v6]; + v9[v5 + v6] = v0[v4][v6]; + } + } +} + +void ov117_02264BF8 (UnkStruct_ov117_02261280 * param0) +{ + u16 v0[4][16]; + int v1, v2; + int v3 = 0; + int v4, v5, v6, v7; + u16 * v8, * v9; + int v10; + + v10 = sub_0200D05C(param0->unk_28, 10006, NNS_G2D_VRAM_TYPE_2DSUB); + + for (v2 = 0; v2 < param0->unk_00->unk_30; v2++) { + v4 = Unk_ov117_02266B8A[v2]; + + for (v1 = 0; v1 < 16; v1++) { + v0[v2][v1] = sub_02003910(param0->unk_8C, 3, 1, v10 * 16 + v4 + v1); + } + } + + v7 = sub_0203608C(); + + for (v3 = 0; v3 < param0->unk_00->unk_30; v3++) { + if (param0->unk_00->unk_2C[v3] == v7) { + break; + } + } + + v8 = sub_02003164(param0->unk_8C, 3); + v9 = sub_0200316C(param0->unk_8C, 3); + + for (v1 = 0; v1 < param0->unk_00->unk_30; v1++) { + v4 = v1; + v5 = Unk_ov117_02266C04[param0->unk_00->unk_30][ov117_022622C4(param0, param0->unk_00->unk_2C[v1])] + v10 * 16; + + for (v6 = 0; v6 < 16; v6++) { + v8[v5 + v6] = v0[v4][v6]; + v9[v5 + v6] = v0[v4][v6]; + } + } +} + +void ov117_02264D1C (UnkStruct_ov117_02261280 * param0) +{ + u16 v0[4][1]; + int v1, v2; + int v3 = 0; + int v4, v5, v6, v7; + u16 * v8, * v9; + int v10; + + v10 = sub_0200D05C(param0->unk_28, 10006, NNS_G2D_VRAM_TYPE_2DSUB); + + for (v2 = 0; v2 < param0->unk_00->unk_30; v2++) { + v4 = Unk_ov117_02266B82[v2]; + + for (v1 = 0; v1 < 1; v1++) { + v0[v2][v1] = sub_02003910(param0->unk_8C, 3, 1, v10 * 16 + v4 + v1); + } + } + + v7 = sub_0203608C(); + + for (v3 = 0; v3 < param0->unk_00->unk_30; v3++) { + if (param0->unk_00->unk_2C[v3] == v7) { + break; + } + } + + v8 = sub_02003164(param0->unk_8C, 3); + v9 = sub_0200316C(param0->unk_8C, 3); + + for (v1 = 0; v1 < param0->unk_00->unk_30; v1++) { + v4 = v1; + v5 = Unk_ov117_02266C54[param0->unk_00->unk_30][ov117_022622C4(param0, param0->unk_00->unk_2C[v1])] + v10 * 16; + + for (v6 = 0; v6 < 1; v6++) { + v8[v5 + v6] = v0[v4][v6]; + v9[v5 + v6] = v0[v4][v6]; + } + } +} + +void ov117_02264E14 (UnkStruct_ov117_02261280 * param0, int param1, s32 param2, UnkStruct_ov117_02264E84 * param3) +{ + MI_CpuClear8(param3, sizeof(UnkStruct_ov117_02264E84)); + + param3->unk_00 = sub_0203608C(); + param3->unk_02 = param1; + param3->unk_04 = param2; + param3->unk_08 = param2; + param3->unk_01 = 0; + param3->unk_0C = 0; +} + +BOOL ov117_02264E3C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02264E84 * param1) +{ + if (param0->unk_2FB0 - param0->unk_2FAC >= 8) { + return 0; + } + + param0->unk_2F2C[param0->unk_2FB0 % 8] = *param1; + param0->unk_2FB0++; + return 1; +} + +UnkStruct_ov117_02264E84 * ov117_02264E84 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_ov117_02264E84 * v0; + + if (param0->unk_2FAC >= param0->unk_2FB0) { + return NULL; + } + + v0 = ¶m0->unk_2F2C[param0->unk_2FAC % 8]; + param0->unk_2FAC++; + return v0; +} + +BOOL ov117_02264EB8 (UnkStruct_ov117_02261280 * param0, int param1) +{ + UnkStruct_ov117_02264E84 * v0 = NULL; + int v1, v2, v3; + + if ((param0->unk_2FAC == param0->unk_2FB0) || (param1 == 0)) { + return 0; + } + + v2 = param0->unk_2FAC % 8; + v3 = param0->unk_2FB0 % 8; + + if (v2 < v3) { + for (v1 = v2; v1 < v3; v1++) { + if (param0->unk_2F2C[v1].unk_0C == 0) { + v0 = ¶m0->unk_2F2C[v1]; + break; + } + } + } else { + for (v1 = v2; v1 < 8; v1++) { + if (param0->unk_2F2C[v1].unk_0C == 0) { + v0 = ¶m0->unk_2F2C[v1]; + break; + } + } + + if (v0 == NULL) { + for (v1 = 0; v1 < v3; v1++) { + if (param0->unk_2F2C[v1].unk_0C == 0) { + v0 = ¶m0->unk_2F2C[v1]; + break; + } + } + } + } + + if (v0 == NULL) { + GF_ASSERT(0); + return 0; + } + + GF_ASSERT(v0->unk_01 == 0); + + v0->unk_01 = param1; + v0->unk_0C = 1; + + switch (param1) { + case 1: + v0->unk_08 = v0->unk_04 * 2; + break; + case 2: + v0->unk_08 = v0->unk_04 / 2; + break; + case 3: + v0->unk_08 = v0->unk_04 * 3; + break; + } + + return 1; +} + +void ov117_02264FB0 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_0226504C * param1) +{ + UnkStruct_0200D0F4 * v0; + UnkStruct_ov104_0223F9E0 v1; + int v2; + + v1 = Unk_ov117_02266D68; + + for (v2 = 0; v2 < 4; v2++) { + param1->unk_00[v2] = sub_0200CE6C(param0->unk_24, param0->unk_28, &v1); + sub_0200D500(param1->unk_00[v2], Unk_ov117_02266BB4[v2].unk_00, Unk_ov117_02266BB4[v2].unk_02, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1->unk_00[v2], 31 + v2 / 2); + sub_0200D324(param1->unk_00[v2]->unk_00); + } + + switch (param0->unk_00->unk_30) { + case 2: + sub_0200D3F4(param1->unk_00[2], 0); + sub_0200D3F4(param1->unk_00[3], 0); + break; + case 3: + sub_0200D3F4(param1->unk_00[1], 0); + break; + } +} + +void ov117_0226504C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_0226504C * param1) +{ + int v0; + + for (v0 = 0; v0 < 4; v0++) { + sub_0200D0F4(param1->unk_00[v0]); + } +} + +void ov117_02265064 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1) +{ + UnkStruct_ov104_0223F9E0 v0; + int v1, v2; + fx32 v3, v4; + + v0 = Unk_ov117_02266D9C; + + for (v1 = 0; v1 < 3; v1++) { + v3 = 256 / 2 + FX_Mul(sub_0201D2B8(param1->unk_E4 + param1->unk_00[v1].unk_0C), 76); + v4 = 196 / 2 + (-FX_Mul(sub_0201D2C4(param1->unk_E4 + param1->unk_00[v1].unk_0C), (64 + 4))); + + param1->unk_00[v1].unk_00 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v0); + sub_0200D500(param1->unk_00[v1].unk_00, v3, v4 + -24, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1->unk_00[v1].unk_00, Unk_ov117_02266B7A[v1 + 1]); + sub_0200D324(param1->unk_00[v1].unk_00->unk_00); + sub_0200D3F4(param1->unk_00[v1].unk_00, 0); + + param1->unk_00[v1].unk_04 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266DD0); + sub_0200D500(param1->unk_00[v1].unk_04, 0, 0, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1->unk_00[v1].unk_04, 33); + sub_0200D324(param1->unk_00[v1].unk_04->unk_00); + sub_0200D3F4(param1->unk_00[v1].unk_04, 0); + + param1->unk_00[v1].unk_08 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266E04); + sub_0200D500(param1->unk_00[v1].unk_08, v3, v4 + -24 + 24, ((192 + 160) << FX32_SHIFT)); + sub_0200D810(param1->unk_00[v1].unk_08, GX_OAM_MODE_XLU); + sub_0200D6A4(param1->unk_00[v1].unk_08, 1); + sub_0200D6E8(param1->unk_00[v1].unk_08, 1.0f, 1.0f); + sub_0200D364(param1->unk_00[v1].unk_08, 34 + v1); + sub_0200D324(param1->unk_00[v1].unk_08->unk_00); + sub_0200D3F4(param1->unk_00[v1].unk_08, 0); + + ov117_02266344(param0, ¶m1->unk_00[v1].unk_30); + } + + sub_0200D3F4(param1->unk_00[0].unk_00, 1); + sub_0200D3F4(param1->unk_00[0].unk_08, 1); +} + +void ov117_022651E0 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1) +{ + int v0; + + for (v0 = 0; v0 < 3; v0++) { + sub_0200D0F4(param1->unk_00[v0].unk_00); + sub_0200D0F4(param1->unk_00[v0].unk_04); + sub_0200D0F4(param1->unk_00[v0].unk_08); + ov117_02266384(param0, ¶m1->unk_00[v0].unk_30); + } +} + +void ov117_02265210 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1) +{ + int v0; + + param1->unk_E8 = (360 << FX32_SHIFT) / 12 / Unk_ov117_02266BC4[param1->unk_F4].unk_00; + + for (v0 = 0; v0 < 3; v0++) { + param1->unk_00[v0].unk_0C = (v0 * 90) << FX32_SHIFT; + param1->unk_00[v0].unk_14 = 1 + v0; + } + + param1->unk_00[0].unk_10 = 2; + param1->unk_F1 = 1; +} + +void ov117_02265254 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1) +{ + int v0, v1, v2 = 0; + + if (param1->unk_F1 == 1) { + return; + } + + param1->unk_EC++; + + if (param1->unk_F2 == 0) { + param1->unk_E4 += param1->unk_E8; + param1->unk_F3++; + + if (param1->unk_F3 >= Unk_ov117_02266BC4[param1->unk_F4].unk_00) { + param1->unk_F3 = 0; + param1->unk_F0++; + param1->unk_E4 = (360 << FX32_SHIFT) / 12 * param1->unk_F0; + param1->unk_F2 = Unk_ov117_02266BC4[param1->unk_F4].unk_01; + } + } else { + param1->unk_F2--; + + if (param1->unk_F2 == 0) { + if (param1->unk_F0 >= 12) { + param1->unk_F0 = 0; + param1->unk_F4++; + + if (param1->unk_F4 >= NELEMS(Unk_ov117_02266BC4)) { + param1->unk_F4 = NELEMS(Unk_ov117_02266BC4) - 1; + } + + param1->unk_E8 = (360 << FX32_SHIFT) / 12 / Unk_ov117_02266BC4[param1->unk_F4].unk_00; + } + } + } + + if (param1->unk_F4 == 2 - 1) { + for (v0 = 0; v0 < 2; v0++) { + v2 += Unk_ov117_02266BC4[v0].unk_00 * 12 + Unk_ov117_02266BC4[v0].unk_01 * 12; + } + + if (v2 - 15 == param1->unk_EC) { + ov117_02265428(¶m1->unk_00[1], 1); + } + } else if (param1->unk_F4 == 3 - 1) { + for (v0 = 0; v0 < 3; v0++) { + v2 += Unk_ov117_02266BC4[v0].unk_00 * 12 + Unk_ov117_02266BC4[v0].unk_01 * 12; + } + + if (v2 - 15 == param1->unk_EC) { + ov117_02265428(¶m1->unk_00[2], 1); + } + } + + for (v0 = 0; v0 < 3; v0++) { + ov117_02265438(param0, param1, ¶m1->unk_00[v0]); + ov117_02266440(param0, ¶m1->unk_00[v0], ¶m1->unk_00[v0].unk_30); + } +} + +static int ov117_022653F4 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 ** param1) +{ + UnkStruct_ov117_022653F4 * v0 = ¶m0->unk_1468; + int v1; + + for (v1 = 0; v1 < 3; v1++) { + if (v0->unk_00[v1].unk_15 == 1) { + *param1 = &v0->unk_00[v1]; + return v0->unk_00[v1].unk_14; + } + } + + *param1 = NULL; + return 0; +} + +static void ov117_02265428 (UnkStruct_ov117_02265428 * param0, int param1) +{ + param0->unk_10 = param1; + param0->unk_11 = 0; + param0->unk_12 = 0; + param0->unk_18 = 0; + param0->unk_15 = 0; +} + +static void ov117_02265438 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2) +{ + Unk_ov117_02266B94[param2->unk_10](param0, param1, param2); +} + +static int ov117_0226544C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2) +{ + param2->unk_15 = 0; + return 1; +} + +static int ov117_02265454 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2) +{ + s16 v0, v1, v2, v3, v4, v5; + fx32 v6; + int v7 = 0; + fx32 v8; + f32 v9; + + v2 = 0; + v3 = 0; + v0 = param2->unk_1C; + v1 = param2->unk_1E; + + switch (param2->unk_11) { + case 0: + sub_0200D3F4(param2->unk_00, 1); + sub_0200D3F4(param2->unk_08, 1); + sub_0200D5A0(param2->unk_00, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + param2->unk_1C = v0; + param2->unk_1E = v1; + param2->unk_11++; + + case 1: + switch (param2->unk_0C) { + case 0: + v4 = param2->unk_1E - -32; + v3 = param2->unk_12 * v4 / 15; + v1 = -32 + v3; + break; + case 90 << FX32_SHIFT: + v5 = param2->unk_1C - (256 + 32); + v2 = param2->unk_12 * v5 / 15; + v0 = (256 + 32) + v2; + break; + case 180 << FX32_SHIFT: + v4 = param2->unk_1E - (196 + 32); + v3 = param2->unk_12 * v4 / 15; + v1 = (196 + 32) + v3; + break; + case 270 << FX32_SHIFT: + v5 = param2->unk_1C - -32; + v2 = param2->unk_12 * v5 / 15; + v0 = -32 + v2; + break; + default: + GF_ASSERT(0); + break; + } + if (param2->unk_12 >= 15) { + sub_0200D500(param2->unk_00, param2->unk_1C, param2->unk_1E, ((192 + 160) << FX32_SHIFT)); + sub_0200D500(param2->unk_08, param2->unk_1C, param2->unk_1E + 24, ((192 + 160) << FX32_SHIFT)); + ov117_02265428(param2, 2); + ov117_0226639C(param0, param2, ¶m2->unk_30); + + return 1; + } + + v6 = ((180 * param2->unk_12) << FX32_SHIFT) / 15; + v7 = -(FX_Mul(sub_0201D2B8(v6), (24 << FX32_SHIFT))) / FX32_ONE; + + sub_0200D500(param2->unk_00, v0, v1 + v7, ((192 + 160) << FX32_SHIFT)); + sub_0200D500(param2->unk_08, v0, v1 + 24, ((192 + 160) << FX32_SHIFT)); + + v8 = FX32_ONE - (FX32_ONE * (-v7 / 3) / ((24 << FX32_SHIFT) >> FX32_SHIFT)); + v9 = FX_FX32_TO_F32(v8); + + sub_0200D6E8(param2->unk_08, v9, v9); + break; + } + + param2->unk_12++; + return 1; +} + +static int ov117_02265644 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2) +{ + fx32 v0, v1; + fx32 v2; + int v3 = 0; + fx32 v4; + f32 v5; + + if (param1->unk_F3 > 0) { + sub_0200D34C(param2->unk_00, ((8 + 8 + 12 + 8 + 8) << FX32_SHIFT) / Unk_ov117_02266BC4[param1->unk_F4].unk_00); + } else { + sub_0200D3CC(param2->unk_00, 0); + } + + v2 = ((180 * param1->unk_F3) << FX32_SHIFT) / Unk_ov117_02266BC4[param1->unk_F4].unk_00; + v3 = -(FX_Mul(sub_0201D2B8(v2), (12 << FX32_SHIFT))) / FX32_ONE; + v0 = 256 / 2 + FX_Mul(sub_0201D2B8(param1->unk_E4 + param2->unk_0C), 76); + v1 = 196 / 2 + (-FX_Mul(sub_0201D2C4(param1->unk_E4 + param2->unk_0C), (64 + 4))); + + sub_0200D500(param2->unk_00, v0, v1 + -24 + v3, ((192 + 160) << FX32_SHIFT)); + sub_0200D500(param2->unk_08, v0, v1 + -24 + 24, ((192 + 160) << FX32_SHIFT)); + + v4 = FX32_ONE - (FX32_ONE * (-v3 / 3) / ((12 << FX32_SHIFT) >> FX32_SHIFT)); + v5 = FX_FX32_TO_F32(v4); + + sub_0200D6E8(param2->unk_08, v5, v5); + + if (param1->unk_F3 == Unk_ov117_02266BC4[param1->unk_F4].unk_00 - 1) { + ov117_0226639C(param0, param2, ¶m2->unk_30); + } + + if (((param1->unk_E4 + param2->unk_0C) >> FX32_SHIFT) % 360 == 180) { + param2->unk_15 = 1; + } else { + param2->unk_15 = 0; + } + + return 1; +} + +static int ov117_022657C4 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022653F4 * param1, UnkStruct_ov117_02265428 * param2) +{ + s16 v0, v1; + int v2, v3; + s16 v4, v5, v6, v7; + fx32 v8; + int v9 = 0; + + switch (param2->unk_11) { + case 0: + sub_02005748(1403); + sub_0200D5A0(param2->unk_00, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + sub_0200D500(param2->unk_04, v0, v1 + -32, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param2->unk_04, 33); + sub_0200D3F4(param2->unk_04, 1); + sub_0200D364(param2->unk_00, Unk_ov117_02266B7A[param2->unk_14] + 2); + + param2->unk_12 = Unk_ov117_02266BC4[param1->unk_F4].unk_02; + param2->unk_13 = Unk_ov117_02266BC4[param1->unk_F4].unk_02 / 2; + param2->unk_11++; + break; + case 1: + if (param2->unk_12 == param2->unk_13) { + sub_0200D364(param2->unk_00, Unk_ov117_02266B7A[param2->unk_14] + 1); + sub_0200D3F4(param2->unk_04, 0); + sub_0200D34C(param2->unk_04, (4 * FX32_ONE)); + } + + if (param2->unk_12 == 0) { + sub_0200D3F4(param2->unk_04, 0); + sub_0200D364(param2->unk_00, Unk_ov117_02266B7A[param2->unk_14] + 0); + param2->unk_11++; + break; + } + param2->unk_12--; + break; + case 2: + v2 = 0; + + if (param1->unk_F2 == 0) { + v2 += Unk_ov117_02266BC4[param1->unk_F4].unk_00 - param1->unk_F3; + v2 += Unk_ov117_02266BC4[param1->unk_F4].unk_01; + v2 += Unk_ov117_02266BC4[param1->unk_F4].unk_00; + v3 = param1->unk_F0 + 2; + } else { + v2 += param1->unk_F2; + + if (param1->unk_F0 >= 12) { + v2 += Unk_ov117_02266BC4[param1->unk_F4 + 1].unk_00; + v3 = 1; + } else { + v2 += Unk_ov117_02266BC4[param1->unk_F4].unk_00; + v3 = param1->unk_F0 + 1; + + if (v3 >= 12) { + (void)0; + } + } + } + + v3 += param2->unk_0C / ((360 / 12) << FX32_SHIFT); + v3 %= 12; + v4 = 256 / 2 + FX_Mul(sub_0201D2B8((360 << FX32_SHIFT) / 12 * v3), 76); + v5 = 196 / 2 + (-FX_Mul(sub_0201D2C4((360 << FX32_SHIFT) / 12 * v3), (64 + 4))); + + sub_0200D5A0(param2->unk_00, &v6, &v7, ((192 + 160) << FX32_SHIFT)); + + v7 -= -24; + + param2->unk_20 = (v4 - v6) * FX32_ONE / v2; + param2->unk_24 = (v5 - v7) * FX32_ONE / v2; + param2->unk_28 = v6 * FX32_ONE; + param2->unk_2C = v7 * FX32_ONE; + param2->unk_12 = v2; + param2->unk_18 = v2; + param2->unk_11++; + + case 3: + param2->unk_28 += param2->unk_20; + param2->unk_2C += param2->unk_24; + + v8 = ((180 * param2->unk_12) << FX32_SHIFT) / param2->unk_18; + v9 = -(FX_Mul(sub_0201D2B8(v8), (12 << FX32_SHIFT))) / FX32_ONE; + + sub_0200D500(param2->unk_00, param2->unk_28 / FX32_ONE, param2->unk_2C / FX32_ONE + -24 + v9, ((192 + 160) << FX32_SHIFT)); + sub_0200D34C(param2->unk_00, ((8 + 8 + 12 + 8 + 8) << FX32_SHIFT) / param2->unk_18); + sub_0200D500(param2->unk_08, param2->unk_28 / FX32_ONE, param2->unk_2C / FX32_ONE + -24 + 24, ((192 + 160) << FX32_SHIFT)); + + param2->unk_12--; + + if (param2->unk_12 <= 0) { + sub_0200D364(param2->unk_00, Unk_ov117_02266B7A[param2->unk_14] + 0); + sub_0200D3CC(param2->unk_00, 0); + ov117_02265428(param2, 2); + return 1; + } + + break; + } + + return 1; +} + +void ov117_02265ABC (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265C3C * param1) +{ + UnkStruct_ov104_0223F9E0 v0; + int v1; + + v0 = Unk_ov117_02266D9C; + + for (v1 = 0; v1 < 3; v1++) { + param1->unk_00[v1].unk_00 = sub_0200CE6C(param0->unk_24, param0->unk_28, &v0); + + sub_0200D500(param1->unk_00[v1].unk_00, 0, 0, ((192 + 160) << FX32_SHIFT)); + sub_0200D3F4(param1->unk_00[v1].unk_00, 0); + + param1->unk_00[v1].unk_04 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266DD0); + + sub_0200D500(param1->unk_00[v1].unk_04, 0, 0, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1->unk_00[v1].unk_04, 33); + sub_0200D324(param1->unk_00[v1].unk_04->unk_00); + sub_0200D3F4(param1->unk_00[v1].unk_04, 0); + } +} + +void ov117_02265B3C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265C3C * param1) +{ + int v0; + + for (v0 = 0; v0 < 3; v0++) { + sub_0200D0F4(param1->unk_00[v0].unk_00); + sub_0200D0F4(param1->unk_00[v0].unk_04); + } +} + +void ov117_02265B58 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265C3C * param1, int param2, int param3, int param4) +{ + int v0, v1, v2, v3; + UnkStruct_ov117_02265C1C * v4 = NULL; + + if ((param2 == 0) || (param3 == sub_0203608C())) { + return; + } + + for (v0 = 0; v0 < 3; v0++) { + if (param1->unk_00[v0].unk_15 == 0) { + v4 = ¶m1->unk_00[v0]; + break; + } + } + + if (v4 == NULL) { + return; + } + + v2 = ov117_022622C4(param0, param3); + v1 = Unk_ov117_02266C2C[param0->unk_00->unk_30][v2]; + + sub_0200D41C(v4->unk_00, v1); + sub_0200D364(v4->unk_00, Unk_ov117_02266B7A[param2] + 0); + + v3 = Unk_ov117_02266BD8[param0->unk_00->unk_30][v2]; + v4->unk_10 = Unk_ov117_02266BB4[v3].unk_02 + -24; + + sub_0200D500(v4->unk_00, Unk_ov117_02266BB4[v3].unk_00, v4->unk_10 + -96, ((192 + 160) << FX32_SHIFT)); + sub_0200D324(v4->unk_00->unk_00); + + v4->unk_12 = param2; + v4->unk_16 = param4 - (MATH_ABS(-96) * FX32_ONE) / 0x8000; + v4->unk_13 = 0; + v4->unk_15 = 1; +} + +void ov117_02265C1C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265C3C * param1) +{ + int v0; + UnkStruct_ov117_02265C1C * v1; + + for (v0 = 0; v0 < 3; v0++) { + if (param1->unk_00[v0].unk_15 == 1) { + v1 = ¶m1->unk_00[v0]; + ov117_02265C3C(param1, v1); + } + } +} + +static BOOL ov117_02265C3C (UnkStruct_ov117_02265C3C * param0, UnkStruct_ov117_02265C1C * param1) +{ + s16 v0, v1; + + switch (param1->unk_13) { + case 0: + sub_0200D5A0(param1->unk_00, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + param1->unk_08 = v0 * FX32_ONE; + param1->unk_0C = v1 * FX32_ONE; + param1->unk_13++; + case 1: + if (param1->unk_16 > 0) { + param1->unk_16--; + break; + } + + sub_0200D3F4(param1->unk_00, 1); + param1->unk_0C += 0x8000; + + if ((param1->unk_0C / FX32_ONE) >= param1->unk_10) { + param1->unk_0C = param1->unk_10 * FX32_ONE; + param1->unk_13++; + } + break; + case 2: + sub_0200D5A0(param1->unk_00, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + sub_0200D500(param1->unk_04, v0, v1 + -32, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param1->unk_04, 33); + sub_0200D3F4(param1->unk_04, 1); + sub_02005748(1403); + sub_0200D364(param1->unk_00, Unk_ov117_02266B7A[param1->unk_12] + 2); + + param1->unk_14 = 8; + param1->unk_13++; + break; + case 3: + param1->unk_14--; + + if (param1->unk_14 == 3) { + sub_0200D34C(param1->unk_04, (4 * FX32_ONE)); + } + + if (param1->unk_14 == 0) { + sub_0200D3F4(param1->unk_04, 0); + sub_0200D364(param1->unk_00, Unk_ov117_02266B7A[param1->unk_12] + 0); + param1->unk_13++; + } + break; + case 4: + param1->unk_0C -= 0x8000; + + if ((param1->unk_0C / FX32_ONE) <= param1->unk_10 + -96) { + sub_0200D3F4(param1->unk_00, 0); + param1->unk_13 = 0; + param1->unk_15 = 0; + return 0; + } + break; + } + + sub_0200D500(param1->unk_00, param1->unk_08 / FX32_ONE, param1->unk_0C / FX32_ONE, ((192 + 160) << FX32_SHIFT)); + return 1; +} + +void ov117_02265DB8 (UnkStruct_02018340 * param0, UnkStruct_0200C704 * param1, UnkStruct_02012744 * param2, UnkStruct_ov117_02265EB0 * param3, const UnkStruct_02023790 * param4, int param5, u32 param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14) +{ + UnkStruct_020127E8 v0; + UnkStruct_0205AA50 v1; + UnkStruct_0201EE28 v2; + int v3; + UnkStruct_02012CE0 * v4; + int v5, v6; + int v7 = 0; + + { + v5 = sub_02002EB4(param5, param4, v7); + v6 = v5 / 8; + + if (FX_ModS32(v5, 8) != 0) { + v6++; + } + } + + { + sub_0201A7A0(&v1); + sub_0201A870(param0, &v1, v6, param14, 0, 0); + sub_0201D7E0(&v1, param5, param4, 0, 0, 0xff, param6, v7, 0, NULL); + } + + v3 = sub_02012898(&v1, NNS_G2D_VRAM_TYPE_2DMAIN, 110); + sub_0201ED94(v3, 1, NNS_G2D_VRAM_TYPE_2DMAIN, &v2); + + if (param11 == 1) { + param9 -= v5 / 2; + } + + param10 += 0; + + v0.unk_00 = param2; + v0.unk_04 = &v1; + v0.unk_08 = sub_0200D9B0(param1); + v0.unk_0C = sub_0200D04C(param1, param8); + v0.unk_10 = NULL; + v0.unk_14 = v2.unk_04; + v0.unk_18 = param9; + v0.unk_1C = param10; + v0.unk_20 = param12; + v0.unk_24 = param13; + v0.unk_28 = NNS_G2D_VRAM_TYPE_2DMAIN; + v0.unk_2C = 110; + + v4 = sub_020127E8(&v0); + + if (param7 != 0) { + sub_02012A90(v4, param7); + } + + sub_020128C4(v4, param9, param10); + sub_0201A8FC(&v1); + + param3->unk_00 = v4; + param3->unk_04 = v2; + param3->unk_10 = v5; +} + +void ov117_02265EB0 (UnkStruct_ov117_02265EB0 * param0) +{ + sub_02012870(param0->unk_00); + sub_0201EE28(¶m0->unk_04); + param0->unk_00 = NULL; +} + +void ov117_02265EC8 (UnkStruct_ov117_02265EC8 * param0) +{ + int v0, v1; + int v2 = 16 * 5; + int v3, v4, v5, v6; + + for (v0 = 0; v0 < 6; v0++) { + v1 = param0->unk_180[v0]; + + if (v1 < v2 - 16) { + v5 = v2 - 16 - v1; + v6 = v5 - v2; + } else if (v1 < 160 - 32) { + v6 = v2 - 16 - (v1 - v2); + v5 = v6 - v2; + } else { + v5 = v2 - 16 - (v1 - 160); + v6 = v5 - v2; + } + + sub_020129A4(param0->unk_04[v0][0].unk_00, &v3, &v4); + sub_020128C4(param0->unk_04[v0][0].unk_00, v3, 168 - v5); + sub_020128C4(param0->unk_04[v0][1].unk_00, v3, 168 - v6); + } +} + +void ov117_02265F34 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265EC8 * param1) +{ + int v0; + BOOL v1; + + if (param1->unk_19E > 0) { + param1->unk_19E--; + return; + } + + switch (param1->unk_1A0) { + case 0: + if (ov117_02266008(param1) == 1) { + ov117_02265FD4(param1); + break; + } else { + param1->unk_1A0++; + } + + case 1: + v1 = ov117_02266030(param1); + ov117_02265EC8(param1); + + if (v1 == 1) { + param1->unk_19E = 15; + param1->unk_1A0--; + } + break; + } +} + +void ov117_02265F98 (UnkStruct_ov117_02265EC8 * param0, int param1) +{ + int v0, v1, v2; + + v1 = 100000; + GF_ASSERT(6 == 6); + + for (v0 = 0; v0 < 6; v0++) { + v2 = param1 / v1; + param0->unk_18C[v0] = v2 * 16; + param1 -= v2 * v1; + v1 /= 10; + } +} + +static void ov117_02265FD4 (UnkStruct_ov117_02265EC8 * param0) +{ + int v0; + + for (v0 = 0; v0 < 6; v0++) { + param0->unk_186[v0] = param0->unk_18C[v0]; + param0->unk_198[v0] = 2 * (6 - v0 - 1); + param0->unk_192[v0] = 0; + } + + param0->unk_19F = 0; +} + +static BOOL ov117_02266008 (UnkStruct_ov117_02265EC8 * param0) +{ + int v0; + + for (v0 = 0; v0 < 6; v0++) { + if (param0->unk_180[v0] != param0->unk_186[v0]) { + return 0; + } + } + + return 1; +} + +static BOOL ov117_02266030 (UnkStruct_ov117_02265EC8 * param0) +{ + int v0; + int v1 = 6 - 1; + int v2, v3, v4, v5; + + if (param0->unk_19F > 6) { + return 1; + } + + v3 = 0; + v4 = 0; + + for (v0 = 0; v0 < 6; v0++, v1--) { + v3 = v4; + + if (param0->unk_198[v1] > 0) { + param0->unk_198[v1]--; + v4 = 0; + continue; + } + + if ((param0->unk_192[v1] > 1) && (param0->unk_180[v1] == param0->unk_186[v1])) { + v4 = 1; + continue; + } + + v4 = 0; + v2 = param0->unk_180[v1]; + param0->unk_180[v1] += 23; + v5 = param0->unk_186[v1] + 16 * 10; + + if (((v2 <= param0->unk_186[v1]) && (param0->unk_180[v1] >= param0->unk_186[v1])) || ((v2 <= v5) && (param0->unk_180[v1] >= v5))) { + if (param0->unk_192[v1] < 1) { + param0->unk_192[v1]++; + } else if ((v1 == 6 - 1) || (v3 == 1)) { + param0->unk_192[v1]++; + param0->unk_180[v1] = param0->unk_186[v1]; + param0->unk_19F++; + + if (param0->unk_19F >= 6) { + return 1; + } + } + } + + param0->unk_180[v1] %= 10 * 16; + } + + return 0; +} + +UnkStruct_0200D0F4 * ov117_02266130 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_0200D0F4 * v0; + + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266E6C); + sub_0200D324(v0->unk_00); + return v0; +} + +extern void _u32_div_f(void); + +asm void ov117_02266150 (UnkStruct_ov117_02261280 * param0) +{ + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r7, r0, #0 + ldr r0, = 0x3848 + add r6, r7, #0 + ldr r0, [r7, r0] + add r4, r7, #0 + str r0, [sp, #0x2c] + mov r0, #5 + str r0, [sp, #0x30] + ldr r0, = 0x16B0 + add r6, #0x64 + add r5, r7, r0 + add r4, #0xc8 + add r5, #0x64 + _0226616E: + ldr r0, = 0x16B0 + ldr r0, [r6, r0] + cmp r0, #0 + beq _0226617A + bl GF_AssertFail + _0226617A: + ldr r0, [sp, #0x2c] + mov r1, #0xa + bl _u32_div_f + add r0, r7, #0 + add r0, #0x80 + ldr r0, [r0, #0] + add r1, r1, #4 + bl sub_0200B1EC + str r0, [sp, #0x34] + ldr r0, [sp, #0x2c] + mov r1, #0xa + bl _u32_div_f + str r0, [sp, #0x2c] + ldr r0, = 0x15AC + add r1, sp, #0x3c + ldr r0, [r4, r0] + add r2, sp, #0x38 + bl sub_020129A4 + ldr r0, [sp, #0x34] + add r2, r7, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, = 0xE0F00 + add r2, #0x90 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, = 0x2713 + add r3, r5, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x14] + mov r0, #0xa8 + str r0, [sp, #0x18] + mov r0, #0 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x20] + mov r0, #0xc + str r0, [sp, #0x24] + mov r0, #2 + str r0, [sp, #0x28] + ldr r0, [r7, #0x2c] + ldr r1, [r7, #0x28] + ldr r2, [r2, #0] + bl ov117_02265DB8 + ldr r0, [sp, #0x34] + bl sub_020237BC + ldr r0, [sp, #0x30] + sub r6, #0x14 + sub r4, #0x28 + sub r5, #0x14 + sub r0, r0, #1 + str r0, [sp, #0x30] + bpl _0226616E + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +} + +void ov117_02266210 (UnkStruct_ov117_02261280 * param0) +{ + int v0; + + for (v0 = 0; v0 < 6; v0++) { + if (param0->unk_15A8.unk_108[v0].unk_00 != NULL) { + ov117_02265EB0(¶m0->unk_15A8.unk_108[v0]); + } + } +} + +void ov117_02266238 (UnkStruct_ov117_02261280 * param0, UnkStruct_0200D0F4 * param1) +{ + sub_0200D0F4(param1); +} + +UnkStruct_0200D0F4 * ov117_02266244 (UnkStruct_ov117_02261280 * param0) +{ + UnkStruct_0200D0F4 * v0; + + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266EA0); + + sub_0200D3F4(v0, 0); + sub_0200D324(v0->unk_00); + + return v0; +} + +void ov117_02266268 (UnkStruct_ov117_02261280 * param0, UnkStruct_0200D0F4 * param1) +{ + sub_0200D0F4(param1); +} + +BOOL ov117_02266274 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02266274 * param1) +{ + switch (param1->unk_04) { + case 0: + case 5: + sub_0200D500(param1->unk_00, 128, 16, ((192 + 160) << FX32_SHIFT)); + sub_0200D3F4(param1->unk_00, 1); + param1->unk_04++; + break; + case 1: + case 6: + param1->unk_06++; + + if (param1->unk_06 > 15) { + param1->unk_06 = 0; + param1->unk_14 = 1; + param1->unk_18 = 1; + param1->unk_0C = 128; + param1->unk_10 = 32; + param1->unk_04++; + } + + break; + case 2: + case 7: + param1->unk_18 = 0; + param1->unk_10 += 6; + + sub_0200D5DC(param1->unk_00, 0, 6); + + if (param1->unk_10 > 192 - 96) { + param1->unk_04++; + } + + break; + case 3: + case 8: + param1->unk_14 = 0; + sub_0200D3F4(param1->unk_00, 0); + param1->unk_04++; + + case 4: + case 9: + param1->unk_06++; + + if (param1->unk_06 > 30) { + param1->unk_06 = 0; + param1->unk_04++; + } + + break; + case 10: + return 1; + } + + return 0; +} + +static void ov117_02266344 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02266344 * param1) +{ + UnkStruct_0200D0F4 * v0; + int v1; + + for (v1 = 0; v1 < 2; v1++) { + v0 = sub_0200CE6C(param0->unk_24, param0->unk_28, &Unk_ov117_02266E38); + + sub_0200D364(v0, 27); + sub_0200D810(v0, GX_OAM_MODE_XLU); + sub_0200D3F4(v0, 0); + sub_0200D324(v0->unk_00); + + param1->unk_00[v1] = v0; + } +} + +static void ov117_02266384 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02266344 * param1) +{ + int v0; + + for (v0 = 0; v0 < 2; v0++) { + sub_0200D0F4(param1->unk_00[v0]); + } +} + +static void ov117_0226639C (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 * param1, UnkStruct_ov117_02266344 * param2) +{ + s16 v0, v1; + int v2; + + sub_0200D5A0(param1->unk_00, &v0, &v1, ((192 + 160) << FX32_SHIFT)); + + for (v2 = 0; v2 < 2; v2++) { + sub_0200D500(param2->unk_00[v2], v0, v1 + 28, ((192 + 160) << FX32_SHIFT)); + sub_0200D364(param2->unk_00[v2], 27); + sub_0200D810(param2->unk_00[v2], GX_OAM_MODE_XLU); + sub_0200D3F4(param2->unk_00[v2], 1); + + param2->unk_08[v2] = sub_0201D2E8() % 0x1000 + 0x1000; + param2->unk_10[v2] = sub_0201D2E8() % 0x400 + 0x400; + + if (v2 & 1) { + param2->unk_08[v2] *= -1; + } + } + + param2->unk_19 = 0; + param2->unk_18 = 1; +} + +static void ov117_02266440 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_02265428 * param1, UnkStruct_ov117_02266344 * param2) +{ + int v0; + + switch (param2->unk_18) { + case 0: + break; + case 1: + for (v0 = 0; v0 < 2; v0++) { + sub_0200D5E8(param2->unk_00[v0], param2->unk_08[v0], -param2->unk_10[v0]); + sub_0200D324(param2->unk_00[v0]->unk_00); + } + + param2->unk_19++; + + if (param2->unk_19 > 8) { + for (v0 = 0; v0 < 2; v0++) { + sub_0200D3F4(param2->unk_00[v0], 0); + } + + param2->unk_18 = 0; + } + + break; + } +} diff --git a/src/overlay117/ov117_02266498.c b/src/overlay117/ov117_02266498.c new file mode 100644 index 0000000000..bc6c7949f4 --- /dev/null +++ b/src/overlay117/ov117_02266498.c @@ -0,0 +1,117 @@ +#include +#include +#include + +#include "struct_decls/struct_020067E8_decl.h" +#include "overlay114/struct_ov114_0225D678_decl.h" +#include "overlay114/struct_ov114_0225E854_decl.h" + +#include "overlay117/struct_ov117_022605C0.h" + +#include "unk_020067E8.h" +#include "unk_0200F174.h" +#include "overlay114/ov114_0225C700.h" +#include "overlay117/ov117_02266498.h" + +typedef struct { + UnkStruct_ov117_022605C0 * unk_00; + UnkStruct_ov114_0225D678 * unk_04; + UnkStruct_ov114_0225E854 * unk_08; +} UnkStruct_ov117_02266498; + +int ov117_02266498 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02266498 * v0; + + v0 = sub_0200681C(param0, sizeof(UnkStruct_ov117_02266498), 110); + MI_CpuClear8(v0, sizeof(UnkStruct_ov117_02266498)); + v0->unk_00 = sub_02006840(param0); + + return 1; +} + +int ov117_022664BC (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02266498 * v0 = sub_0200682C(param0); + + if (v0->unk_00->unk_3D == 1) { + switch (v0->unk_00->unk_3E) { + case 0: + if (sub_0200F2AC() == 1) { + sub_0200F2C0(); + } + + sub_0200F370(0x0); + v0->unk_00->unk_3E++; + break; + case 1: + if (ov114_0225CA98(&v0->unk_00->unk_00) == 1) { + v0->unk_00->unk_3E++; + } + break; + default: + case 2: + if (v0->unk_04 != NULL) { + ov114_0225C838(v0->unk_04); + v0->unk_04 = NULL; + } + + if (v0->unk_08 != NULL) { + ov114_0225C904(v0->unk_08); + v0->unk_08 = NULL; + } + + return 1; + } + + return 0; + } + + switch (*param1) { + case 0: + if (v0->unk_00->unk_31 == 0) { + *param1 = 1; + } else { + *param1 = 3; + } + break; + case 1: + v0->unk_04 = ov114_0225C82C(&v0->unk_00->unk_00, 110); + (*param1)++; + break; + case 2: + if (ov114_0225C8BC(v0->unk_04) == 1) { + v0->unk_00->unk_34 = ov114_0225C8CC(v0->unk_04); + ov114_0225C838(v0->unk_04); + v0->unk_04 = NULL; + (*param1) = 5; + } + break; + case 3: + v0->unk_08 = ov114_0225C8F8(&v0->unk_00->unk_00, &v0->unk_00->unk_10, 110); + (*param1)++; + break; + case 4: + if (ov114_0225C9A0(v0->unk_08) == 1) { + v0->unk_00->unk_38 = ov114_0225C9A4(v0->unk_08); + ov114_0225C904(v0->unk_08); + v0->unk_08 = NULL; + (*param1) = 5; + } + + break; + case 5: + default: + return 1; + } + + return 0; +} + +int ov117_022665E8 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov117_02266498 * v0 = sub_0200682C(param0); + sub_02006830(param0); + + return 1; +} diff --git a/src/overlay117/ov117_022665FC.c b/src/overlay117/ov117_022665FC.c new file mode 100644 index 0000000000..3caeea4919 --- /dev/null +++ b/src/overlay117/ov117_022665FC.c @@ -0,0 +1,103 @@ +#include +#include + +#include "struct_defs/struct_02039A58.h" +#include "overlay117/struct_ov117_02261280.h" +#include "overlay117/struct_ov117_022621D4.h" + +#include "unk_02032798.h" +#include "unk_02034198.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_022665FC.h" + +static void ov117_02266618(int param0, int param1, void * param2, void * param3); +static void ov117_0226663C(int param0, int param1, void * param2, void * param3); +static void ov117_02266660(int param0, int param1, void * param2, void * param3); +static int ov117_02266610(void); +static int ov117_02266614(void); + +static const UnkStruct_02039A58 Unk_ov117_02266FE4[] = { + {NULL, sub_0203294C, NULL}, + {ov117_02266660, ov117_02266614, NULL}, + {ov117_02266618, ov117_02266610, NULL}, + {ov117_0226663C, sub_0203294C, NULL} +}; + +void ov117_022665FC (void * param0) +{ + int v0 = sizeof(Unk_ov117_02266FE4) / sizeof(UnkStruct_02039A58); + + sub_02032798(Unk_ov117_02266FE4, v0, param0); + GF_ASSERT(sizeof(UnkStruct_ov117_022621D4) < 256); +} + +static int ov117_02266610 (void) +{ + return sizeof(UnkStruct_ov117_022621D4); +} + +static int ov117_02266614 (void) +{ + return sizeof(u32); +} + +static void ov117_02266618 (int param0, int param1, void * param2, void * param3) +{ + UnkStruct_ov117_02261280 * v0 = param3; + ov117_02262044(v0, param0, param2); +} + +BOOL ov117_02266624 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022621D4 * param1) +{ + if (sub_020359DC(24, param1, sizeof(UnkStruct_ov117_022621D4)) == 1) { + return 1; + } + + return 0; +} + +static void ov117_0226663C (int param0, int param1, void * param2, void * param3) +{ + UnkStruct_ov117_02261280 * v0 = param3; + v0->unk_2FC0 = 1; +} + +BOOL ov117_02266648 (UnkStruct_ov117_02261280 * param0) +{ + if (sub_020359DC(25, NULL, 0) == 1) { + return 1; + } + + return 0; +} + +static void ov117_02266660 (int param0, int param1, void * param2, void * param3) +{ + UnkStruct_ov117_02261280 * v0 = param3; + u32 * v1 = param2; + u32 v2; + int v3; + + v2 = v1[0]; + + for (v3 = 0; v3 < v0->unk_00->unk_30; v3++) { + if (v0->unk_00->unk_2C[v3] == param0) { + v0->unk_0C[v3] = v2; + break; + } + } + + GF_ASSERT(v3 < v0->unk_00->unk_30); + v0->unk_08++; +} + +BOOL ov117_022666A4 (UnkStruct_ov117_02261280 * param0) +{ + u32 v0 = 100; + + if (sub_020359DC(23, &v0, sizeof(u32)) == 1) { + return 1; + } + + return 0; +} diff --git a/src/overlay117/ov117_022666C0.c b/src/overlay117/ov117_022666C0.c new file mode 100644 index 0000000000..41ca091723 --- /dev/null +++ b/src/overlay117/ov117_022666C0.c @@ -0,0 +1,188 @@ +#include +#include + +#include "overlay117/struct_ov117_02261280.h" +#include "overlay117/struct_ov117_022621D4.h" +#include "overlay117/struct_ov117_02264E84.h" + +#include "unk_02034198.h" +#include "overlay117/ov117_02260668.h" +#include "overlay117/ov117_02263AF0.h" +#include "overlay117/ov117_022666C0.h" + +static void ov117_022668A8(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_02266714(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_02266760(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_022667B8(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_02266820(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_02266860(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); +static void ov117_022668E4(UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1); + +static void(*const Unk_ov117_02267014[])(UnkStruct_ov117_02261280 *, const UnkStruct_ov117_022621D4 *) = { + NULL, + ov117_02266714, + ov117_02266760, + ov117_022667B8, + ov117_02266820, + ov117_02266860, + ov117_022668A8, + ov117_022668E4, +}; + +#ifdef _NITRO +SDK_COMPILER_ASSERT(NELEMS(Unk_ov117_02267014) == 8); +#endif + +BOOL ov117_022666C0 (UnkStruct_ov117_02261280 * param0, UnkStruct_ov117_022621D4 * param1) +{ + if (Unk_ov117_02267014[param1->unk_00] != NULL) { + Unk_ov117_02267014[param1->unk_00](param0, param1); + MI_CpuClear8(param1, sizeof(UnkStruct_ov117_022621D4)); + return 1; + } + + return 0; +} + +void ov117_022666E8 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_02264E84 * param1) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 1; + v0.unk_04_val4 = *param1; + + ov117_02262130(param0, &v0); +} + +static void ov117_02266714 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + if (param1->unk_04_val4.unk_00 == sub_0203608C()) { + return; + } + + ov117_02263DC4(param0, ¶m1->unk_04_val4); +} + +void ov117_02266730 (UnkStruct_ov117_02261280 * param0, int param1, u8 param2) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 2; + v0.unk_04_val5.unk_00 = param1; + v0.unk_04_val5.unk_02 = 5; + v0.unk_04_val5.unk_03 = param2; + + ov117_02262130(param0, &v0); +} + +static void ov117_02266760 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + param0->unk_2FD0++; + + ov117_02264808(param0); + ov117_0226238C(param0, param1->unk_04_val5.unk_02, param1->unk_04_val5.unk_03); +} + +void ov117_02266784 (UnkStruct_ov117_02261280 * param0, int param1, int param2, u8 param3) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 3; + v0.unk_04_val6.unk_00 = param1; + v0.unk_04_val6.unk_02 = param2; + v0.unk_04_val6.unk_03 = 4; + v0.unk_04_val6.unk_04 = param3; + + ov117_02262130(param0, &v0); +} + +static void ov117_022667B8 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + param0->unk_2FC8 = param1->unk_04_val6.unk_00; + ov117_02263AF0(param0->unk_2C, param0->unk_00->unk_30, param1->unk_04_val6.unk_02, ¶m0->unk_1428); + param0->unk_2FCC = 1; + + ov117_0226238C(param0, param1->unk_04_val6.unk_03, param1->unk_04_val6.unk_04); +} + +void ov117_022667F4 (UnkStruct_ov117_02261280 * param0, u8 param1) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 4; + v0.unk_04_val1.unk_00 = 2; + v0.unk_04_val1.unk_01 = param1; + + ov117_02262130(param0, &v0); +} + +static void ov117_02266820 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + param0->unk_20 = 3; + ov117_0226238C(param0, param1->unk_04_val2.unk_00, param1->unk_04_val2.unk_01); +} + +void ov117_02266834 (UnkStruct_ov117_02261280 * param0, u8 param1) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 5; + v0.unk_04_val3.unk_00 = 3; + v0.unk_04_val3.unk_01 = param1; + + ov117_02262130(param0, &v0); +} + +static void ov117_02266860 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + param0->unk_2FBC = 1; + param0->unk_20 = 6; + ov117_0226238C(param0, param1->unk_04_val3.unk_00, param1->unk_04_val3.unk_01); +} + +void ov117_0226687C (UnkStruct_ov117_02261280 * param0, int param1, u8 param2) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 6; + v0.unk_04_val1.unk_00 = param1; + v0.unk_04_val1.unk_01 = param2; + + ov117_02262130(param0, &v0); +} + +static void ov117_022668A8 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + ov117_0226238C(param0, param1->unk_04_val1.unk_00, param1->unk_04_val1.unk_01); +} + +void ov117_022668B8 (UnkStruct_ov117_02261280 * param0, u8 param1) +{ + UnkStruct_ov117_022621D4 v0; + + MI_CpuClear8(&v0, sizeof(UnkStruct_ov117_022621D4)); + + v0.unk_00 = 7; + v0.unk_04_val1.unk_00 = 6; + v0.unk_04_val1.unk_01 = param1; + + ov117_02262130(param0, &v0); +} + +static void ov117_022668E4 (UnkStruct_ov117_02261280 * param0, const UnkStruct_ov117_022621D4 * param1) +{ + param0->unk_20 = 1; + ov117_0226238C(param0, param1->unk_04_val2.unk_00, param1->unk_04_val2.unk_01); +}