diff --git a/Progress.md b/Progress.md index 47400bc8aa8..df3bcbb0119 100644 --- a/Progress.md +++ b/Progress.md @@ -21,8 +21,8 @@ Total | 52.689899% | 2118488 | 4020672 Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- main.dol | 52.689899% | 2118488 | 4020672 -RELs | 36.662828% | 4216344 | 11500324 -Total | 40.814597% | 6334832 | 15520996 +RELs | 36.707175% | 4221444 | 11500324 +Total | 40.847456% | 6339932 | 15520996 ## RELs @@ -214,7 +214,7 @@ d_a_mg_fish | 26.024167% | 17660 | 67860 d_a_mg_fshop | 39.425019% | 10148 | 25740 d_a_mg_rod | 24.484345% | 23836 | 97352 d_a_midna | 22.953368% | 12404 | 54040 -d_a_mirror | 48.001631% | 4708 | 9808 +d_a_mirror | 100.000000% | 9808 | 9808 d_a_movie_player | 23.696790% | 8328 | 35144 d_a_myna | 44.792592% | 14124 | 31532 d_a_nbomb | 28.739233% | 8808 | 30648 @@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244 d_a_warp_bug | 100.000000% | 2024 | 2024 d_a_ykgr | 44.400631% | 2252 | 5072 f_pc_profile_lst | 100.000000% | 28156 | 28156 -Total | 36.662828% | 4216344 | 11500324 +Total | 36.707175% | 4221444 | 11500324 diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__4cXyzFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__4cXyzFv.s deleted file mode 100644 index 2e2ae1844c2..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__4cXyzFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80870C54: -/* 80870C54 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80870C58 7C 08 02 A6 */ mflr r0 -/* 80870C5C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80870C60 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80870C64 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80870C68 41 82 00 10 */ beq lbl_80870C78 -/* 80870C6C 7C 80 07 35 */ extsh. r0, r4 -/* 80870C70 40 81 00 08 */ ble lbl_80870C78 -/* 80870C74 4B A5 E0 C9 */ bl __dl__FPv -lbl_80870C78: -/* 80870C78 7F E3 FB 78 */ mr r3, r31 -/* 80870C7C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80870C80 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80870C84 7C 08 03 A6 */ mtlr r0 -/* 80870C88 38 21 00 10 */ addi r1, r1, 0x10 -/* 80870C8C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/create__10daMirror_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/create__10daMirror_cFv.s deleted file mode 100644 index a0b4f27be4f..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/create__10daMirror_cFv.s +++ /dev/null @@ -1,197 +0,0 @@ -lbl_8087206C: -/* 8087206C 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80872070 7C 08 02 A6 */ mflr r0 -/* 80872074 90 01 00 44 */ stw r0, 0x44(r1) -/* 80872078 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 8087207C 93 C1 00 38 */ stw r30, 0x38(r1) -/* 80872080 7C 7F 1B 78 */ mr r31, r3 -/* 80872084 3C 60 80 87 */ lis r3, lit_3884@ha /* 0x8087258C@ha */ -/* 80872088 3B C3 25 8C */ addi r30, r3, lit_3884@l /* 0x8087258C@l */ -/* 8087208C 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80872090 54 04 C6 3E */ rlwinm r4, r0, 0x18, 0x18, 0x1f -/* 80872094 2C 04 00 FF */ cmpwi r4, 0xff -/* 80872098 41 82 00 28 */ beq lbl_808720C0 -/* 8087209C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 808720A0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 808720A4 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 808720A8 7C 05 07 74 */ extsb r5, r0 -/* 808720AC 4B 7C 32 B5 */ bl isSwitch__10dSv_info_cCFii -/* 808720B0 2C 03 00 00 */ cmpwi r3, 0 -/* 808720B4 40 82 00 0C */ bne lbl_808720C0 -/* 808720B8 38 60 00 04 */ li r3, 4 -/* 808720BC 48 00 02 70 */ b lbl_8087232C -lbl_808720C0: -/* 808720C0 3C 60 80 45 */ lis r3, m_myObj__10daMirror_c@ha /* 0x80450DA8@ha */ -/* 808720C4 80 03 0D A8 */ lwz r0, m_myObj__10daMirror_c@l(r3) /* 0x80450DA8@l */ -/* 808720C8 28 00 00 00 */ cmplwi r0, 0 -/* 808720CC 41 82 00 0C */ beq lbl_808720D8 -/* 808720D0 38 60 00 00 */ li r3, 0 -/* 808720D4 48 00 02 58 */ b lbl_8087232C -lbl_808720D8: -/* 808720D8 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 808720DC 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 808720E0 2C 00 00 02 */ cmpwi r0, 2 -/* 808720E4 40 82 01 08 */ bne lbl_808721EC -/* 808720E8 7F E3 FB 78 */ mr r3, r31 -/* 808720EC 28 1F 00 00 */ cmplwi r31, 0 -/* 808720F0 41 82 00 08 */ beq lbl_808720F8 -/* 808720F4 38 7F 05 68 */ addi r3, r31, 0x568 -lbl_808720F8: -/* 808720F8 3C 80 80 87 */ lis r4, l_arcName@ha /* 0x80872660@ha */ -/* 808720FC 38 84 26 60 */ addi r4, r4, l_arcName@l /* 0x80872660@l */ -/* 80872100 80 84 00 00 */ lwz r4, 0(r4) -/* 80872104 4B 7B AD B9 */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc -/* 80872108 2C 03 00 04 */ cmpwi r3, 4 -/* 8087210C 41 82 00 08 */ beq lbl_80872114 -/* 80872110 48 00 02 1C */ b lbl_8087232C -lbl_80872114: -/* 80872114 7F E3 FB 78 */ mr r3, r31 -/* 80872118 3C 80 80 87 */ lis r4, daMirror_c_createHeap__FP10fopAc_ac_c@ha /* 0x80870BB8@ha */ -/* 8087211C 38 84 0B B8 */ addi r4, r4, daMirror_c_createHeap__FP10fopAc_ac_c@l /* 0x80870BB8@l */ -/* 80872120 38 A0 15 40 */ li r5, 0x1540 -/* 80872124 4B 7A 83 8D */ bl fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl -/* 80872128 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8087212C 40 82 00 0C */ bne lbl_80872138 -/* 80872130 38 60 00 05 */ li r3, 5 -/* 80872134 48 00 01 F8 */ b lbl_8087232C -lbl_80872138: -/* 80872138 7F E3 FB 78 */ mr r3, r31 -/* 8087213C 4B FF FE 3D */ bl setModelMtx__10daMirror_cFv -/* 80872140 3C 60 80 87 */ lis r3, l_arcName@ha /* 0x80872660@ha */ -/* 80872144 38 63 26 60 */ addi r3, r3, l_arcName@l /* 0x80872660@l */ -/* 80872148 80 63 00 00 */ lwz r3, 0(r3) -/* 8087214C 38 80 00 07 */ li r4, 7 -/* 80872150 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80872154 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80872158 3C A5 00 02 */ addis r5, r5, 2 -/* 8087215C 38 C0 00 80 */ li r6, 0x80 -/* 80872160 38 A5 C2 F8 */ addi r5, r5, -15624 -/* 80872164 4B 7C A1 89 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80872168 38 9F 05 80 */ addi r4, r31, 0x580 -/* 8087216C 38 A0 00 00 */ li r5, 0 -/* 80872170 38 C0 00 00 */ li r6, 0 -/* 80872174 4B 7A 2F C9 */ bl mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj -/* 80872178 38 A1 00 04 */ addi r5, r1, 4 -/* 8087217C 38 9E 00 4C */ addi r4, r30, 0x4c -/* 80872180 38 00 00 06 */ li r0, 6 -/* 80872184 7C 09 03 A6 */ mtctr r0 -lbl_80872188: -/* 80872188 80 64 00 04 */ lwz r3, 4(r4) -/* 8087218C 84 04 00 08 */ lwzu r0, 8(r4) -/* 80872190 90 65 00 04 */ stw r3, 4(r5) -/* 80872194 94 05 00 08 */ stwu r0, 8(r5) -/* 80872198 42 00 FF F0 */ bdnz lbl_80872188 -/* 8087219C 38 7F 04 EC */ addi r3, r31, 0x4ec -/* 808721A0 4B 79 AC 61 */ bl scaleS__14mDoMtx_stack_cFRC4cXyz -/* 808721A4 80 7F 06 F8 */ lwz r3, 0x6f8(r31) -/* 808721A8 38 63 00 24 */ addi r3, r3, 0x24 -/* 808721AC 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808721B0 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808721B4 7C 85 23 78 */ mr r5, r4 -/* 808721B8 4B AD 43 2D */ bl PSMTXConcat -/* 808721BC 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808721C0 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808721C4 38 81 00 08 */ addi r4, r1, 8 -/* 808721C8 38 BF 06 A4 */ addi r5, r31, 0x6a4 -/* 808721CC 38 C0 00 04 */ li r6, 4 -/* 808721D0 4B AD 4B F1 */ bl PSMTXMultVecArray -/* 808721D4 C0 1E 00 40 */ lfs f0, 0x40(r30) -/* 808721D8 D0 1F 06 EC */ stfs f0, 0x6ec(r31) -/* 808721DC C0 1E 00 14 */ lfs f0, 0x14(r30) -/* 808721E0 D0 1F 06 F0 */ stfs f0, 0x6f0(r31) -/* 808721E4 D0 1F 06 F4 */ stfs f0, 0x6f4(r31) -/* 808721E8 48 00 01 18 */ b lbl_80872300 -lbl_808721EC: -/* 808721EC 2C 00 00 01 */ cmpwi r0, 1 -/* 808721F0 40 82 00 2C */ bne lbl_8087221C -/* 808721F4 38 7F 04 EC */ addi r3, r31, 0x4ec -/* 808721F8 7C 64 1B 78 */ mr r4, r3 -/* 808721FC C0 3E 00 BC */ lfs f1, 0xbc(r30) -/* 80872200 4B AD 4E D9 */ bl PSVECScale -/* 80872204 C0 3E 00 14 */ lfs f1, 0x14(r30) -/* 80872208 D0 3F 06 EC */ stfs f1, 0x6ec(r31) -/* 8087220C C0 1E 00 40 */ lfs f0, 0x40(r30) -/* 80872210 D0 1F 06 F0 */ stfs f0, 0x6f0(r31) -/* 80872214 D0 3F 06 F4 */ stfs f1, 0x6f4(r31) -/* 80872218 48 00 00 84 */ b lbl_8087229C -lbl_8087221C: -/* 8087221C 2C 00 00 03 */ cmpwi r0, 3 -/* 80872220 40 82 00 68 */ bne lbl_80872288 -/* 80872224 7F E3 FB 78 */ mr r3, r31 -/* 80872228 28 1F 00 00 */ cmplwi r31, 0 -/* 8087222C 41 82 00 08 */ beq lbl_80872234 -/* 80872230 38 7F 05 68 */ addi r3, r31, 0x568 -lbl_80872234: -/* 80872234 3C 80 80 87 */ lis r4, l_arcName2@ha /* 0x80872664@ha */ -/* 80872238 38 84 26 64 */ addi r4, r4, l_arcName2@l /* 0x80872664@l */ -/* 8087223C 80 84 00 00 */ lwz r4, 0(r4) -/* 80872240 4B 7B AC 7D */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc -/* 80872244 2C 03 00 04 */ cmpwi r3, 4 -/* 80872248 41 82 00 08 */ beq lbl_80872250 -/* 8087224C 48 00 00 E0 */ b lbl_8087232C -lbl_80872250: -/* 80872250 3C 60 80 87 */ lis r3, l_arcName2@ha /* 0x80872664@ha */ -/* 80872254 38 63 26 64 */ addi r3, r3, l_arcName2@l /* 0x80872664@l */ -/* 80872258 80 63 00 00 */ lwz r3, 0(r3) -/* 8087225C 38 80 00 25 */ li r4, 0x25 -/* 80872260 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80872264 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80872268 3C A5 00 02 */ addis r5, r5, 2 -/* 8087226C 38 C0 00 80 */ li r6, 0x80 -/* 80872270 38 A5 C2 F8 */ addi r5, r5, -15624 -/* 80872274 4B 7C A0 79 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80872278 38 9F 05 80 */ addi r4, r31, 0x580 -/* 8087227C 38 A0 00 00 */ li r5, 0 -/* 80872280 38 C0 00 00 */ li r6, 0 -/* 80872284 4B 7A 2E B9 */ bl mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj -lbl_80872288: -/* 80872288 C0 1E 00 40 */ lfs f0, 0x40(r30) -/* 8087228C D0 1F 06 EC */ stfs f0, 0x6ec(r31) -/* 80872290 C0 1E 00 14 */ lfs f0, 0x14(r30) -/* 80872294 D0 1F 06 F0 */ stfs f0, 0x6f0(r31) -/* 80872298 D0 1F 06 F4 */ stfs f0, 0x6f4(r31) -lbl_8087229C: -/* 8087229C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808722A0 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808722A4 C0 3F 04 D0 */ lfs f1, 0x4d0(r31) -/* 808722A8 C0 5F 04 D4 */ lfs f2, 0x4d4(r31) -/* 808722AC C0 7F 04 D8 */ lfs f3, 0x4d8(r31) -/* 808722B0 4B AD 46 39 */ bl PSMTXTrans -/* 808722B4 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808722B8 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808722BC A8 9F 04 E6 */ lha r4, 0x4e6(r31) -/* 808722C0 4B 79 A1 75 */ bl mDoMtx_YrotM__FPA4_fs -/* 808722C4 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808722C8 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808722CC A8 9F 04 E4 */ lha r4, 0x4e4(r31) -/* 808722D0 4B 79 A0 CD */ bl mDoMtx_XrotM__FPA4_fs -/* 808722D4 C0 3F 04 EC */ lfs f1, 0x4ec(r31) -/* 808722D8 C0 5F 04 F0 */ lfs f2, 0x4f0(r31) -/* 808722DC C0 7F 04 F4 */ lfs f3, 0x4f4(r31) -/* 808722E0 4B 79 AB 59 */ bl scaleM__14mDoMtx_stack_cFfff -/* 808722E4 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 808722E8 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 808722EC 3C 80 80 87 */ lis r4, data_8087260C@ha /* 0x8087260C@ha */ -/* 808722F0 38 84 26 0C */ addi r4, r4, data_8087260C@l /* 0x8087260C@l */ -/* 808722F4 38 BF 06 A4 */ addi r5, r31, 0x6a4 -/* 808722F8 38 C0 00 04 */ li r6, 4 -/* 808722FC 4B AD 4A C5 */ bl PSMTXMultVecArray -lbl_80872300: -/* 80872300 3C 60 80 45 */ lis r3, m_myObj__10daMirror_c@ha /* 0x80450DA8@ha */ -/* 80872304 93 E3 0D A8 */ stw r31, m_myObj__10daMirror_c@l(r3) /* 0x80450DA8@l */ -/* 80872308 38 7F 05 70 */ addi r3, r31, 0x570 -/* 8087230C 4B FF E9 95 */ bl calcMinMax__16dMirror_packet_cFv -/* 80872310 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80872314 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80872318 3C 80 80 87 */ lis r4, data_8087263C@ha /* 0x8087263C@ha */ -/* 8087231C 38 84 26 3C */ addi r4, r4, data_8087263C@l /* 0x8087263C@l */ -/* 80872320 38 BF 05 38 */ addi r5, r31, 0x538 -/* 80872324 4B AD 4A 49 */ bl PSMTXMultVec -/* 80872328 38 60 00 04 */ li r3, 4 -lbl_8087232C: -/* 8087232C 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 80872330 83 C1 00 38 */ lwz r30, 0x38(r1) -/* 80872334 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80872338 7C 08 03 A6 */ mtlr r0 -/* 8087233C 38 21 00 40 */ addi r1, r1, 0x40 -/* 80872340 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/execute__10daMirror_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/execute__10daMirror_cFv.s deleted file mode 100644 index 5595909ddba..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/execute__10daMirror_cFv.s +++ /dev/null @@ -1,60 +0,0 @@ -lbl_808723E4: -/* 808723E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 808723E8 7C 08 02 A6 */ mflr r0 -/* 808723EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 808723F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 808723F4 93 C1 00 08 */ stw r30, 8(r1) -/* 808723F8 7C 7E 1B 78 */ mr r30, r3 -/* 808723FC 3C 80 80 45 */ lis r4, m_myObj__10daMirror_c@ha /* 0x80450DA8@ha */ -/* 80872400 80 04 0D A8 */ lwz r0, m_myObj__10daMirror_c@l(r4) /* 0x80450DA8@l */ -/* 80872404 7C 1E 00 40 */ cmplw r30, r0 -/* 80872408 41 82 00 28 */ beq lbl_80872430 -/* 8087240C 28 00 00 00 */ cmplwi r0, 0 -/* 80872410 40 82 00 18 */ bne lbl_80872428 -/* 80872414 4B FF FC 59 */ bl create__10daMirror_cFv -/* 80872418 2C 03 00 05 */ cmpwi r3, 5 -/* 8087241C 40 82 00 0C */ bne lbl_80872428 -/* 80872420 7F C3 F3 78 */ mr r3, r30 -/* 80872424 4B 7A 78 59 */ bl fopAcM_delete__FP10fopAc_ac_c -lbl_80872428: -/* 80872428 38 60 00 01 */ li r3, 1 -/* 8087242C 48 00 00 7C */ b lbl_808724A8 -lbl_80872430: -/* 80872430 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80872434 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80872438 83 E3 5D B4 */ lwz r31, 0x5db4(r3) -/* 8087243C C0 3E 06 F0 */ lfs f1, 0x6f0(r30) -/* 80872440 3C 60 80 87 */ lis r3, lit_3945@ha /* 0x80872598@ha */ -/* 80872444 C0 03 25 98 */ lfs f0, lit_3945@l(r3) /* 0x80872598@l */ -/* 80872448 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8087244C 40 81 00 58 */ ble lbl_808724A4 -/* 80872450 7F E3 FB 78 */ mr r3, r31 -/* 80872454 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 80872458 81 8C 01 C8 */ lwz r12, 0x1c8(r12) -/* 8087245C 7D 89 03 A6 */ mtctr r12 -/* 80872460 4E 80 04 21 */ bctrl -/* 80872464 28 03 00 00 */ cmplwi r3, 0 -/* 80872468 41 82 00 3C */ beq lbl_808724A4 -/* 8087246C 7F C3 F3 78 */ mr r3, r30 -/* 80872470 7F E4 FB 78 */ mr r4, r31 -/* 80872474 4B 7A 84 A1 */ bl fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c -/* 80872478 3C 60 80 87 */ lis r3, lit_4574@ha /* 0x8087264C@ha */ -/* 8087247C C0 03 26 4C */ lfs f0, lit_4574@l(r3) /* 0x8087264C@l */ -/* 80872480 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80872484 40 80 00 20 */ bge lbl_808724A4 -/* 80872488 7F C3 F3 78 */ mr r3, r30 -/* 8087248C 7F E4 FB 78 */ mr r4, r31 -/* 80872490 4B 7A 83 0D */ bl fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c -/* 80872494 2C 03 40 00 */ cmpwi r3, 0x4000 -/* 80872498 40 80 00 0C */ bge lbl_808724A4 -/* 8087249C 38 7E 05 38 */ addi r3, r30, 0x538 -/* 808724A0 4B 8E D0 51 */ bl setLookPos__9daPy_py_cFP4cXyz -lbl_808724A4: -/* 808724A4 38 60 00 01 */ li r3, 1 -lbl_808724A8: -/* 808724A8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 808724AC 83 C1 00 08 */ lwz r30, 8(r1) -/* 808724B0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 808724B4 7C 08 03 A6 */ mtlr r0 -/* 808724B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 808724BC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/mainDraw__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/mainDraw__16dMirror_packet_cFv.s deleted file mode 100644 index b46e00a9cca..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/mainDraw__16dMirror_packet_cFv.s +++ /dev/null @@ -1,612 +0,0 @@ -lbl_8087146C: -/* 8087146C 94 21 FD 30 */ stwu r1, -0x2d0(r1) -/* 80871470 7C 08 02 A6 */ mflr r0 -/* 80871474 90 01 02 D4 */ stw r0, 0x2d4(r1) -/* 80871478 DB E1 02 C0 */ stfd f31, 0x2c0(r1) -/* 8087147C F3 E1 02 C8 */ psq_st f31, 712(r1), 0, 0 /* qr0 */ -/* 80871480 DB C1 02 B0 */ stfd f30, 0x2b0(r1) -/* 80871484 F3 C1 02 B8 */ psq_st f30, 696(r1), 0, 0 /* qr0 */ -/* 80871488 DB A1 02 A0 */ stfd f29, 0x2a0(r1) -/* 8087148C F3 A1 02 A8 */ psq_st f29, 680(r1), 0, 0 /* qr0 */ -/* 80871490 DB 81 02 90 */ stfd f28, 0x290(r1) -/* 80871494 F3 81 02 98 */ psq_st f28, 664(r1), 0, 0 /* qr0 */ -/* 80871498 DB 61 02 80 */ stfd f27, 0x280(r1) -/* 8087149C F3 61 02 88 */ psq_st f27, 648(r1), 0, 0 /* qr0 */ -/* 808714A0 DB 41 02 70 */ stfd f26, 0x270(r1) -/* 808714A4 F3 41 02 78 */ psq_st f26, 632(r1), 0, 0 /* qr0 */ -/* 808714A8 DB 21 02 60 */ stfd f25, 0x260(r1) -/* 808714AC F3 21 02 68 */ psq_st f25, 616(r1), 0, 0 /* qr0 */ -/* 808714B0 DB 01 02 50 */ stfd f24, 0x250(r1) -/* 808714B4 F3 01 02 58 */ psq_st f24, 600(r1), 0, 0 /* qr0 */ -/* 808714B8 DA E1 02 40 */ stfd f23, 0x240(r1) -/* 808714BC F2 E1 02 48 */ psq_st f23, 584(r1), 0, 0 /* qr0 */ -/* 808714C0 DA C1 02 30 */ stfd f22, 0x230(r1) -/* 808714C4 F2 C1 02 38 */ psq_st f22, 568(r1), 0, 0 /* qr0 */ -/* 808714C8 39 61 02 30 */ addi r11, r1, 0x230 -/* 808714CC 4B AF 0C F1 */ bl _savegpr_21 -/* 808714D0 7C 7A 1B 78 */ mr r26, r3 -/* 808714D4 3C 60 80 87 */ lis r3, lit_3884@ha /* 0x8087258C@ha */ -/* 808714D8 3B E3 25 8C */ addi r31, r3, lit_3884@l /* 0x8087258C@l */ -/* 808714DC 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 808714E0 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 808714E4 4B A9 F2 59 */ bl reinitGX__6J3DSysFv -/* 808714E8 38 61 01 50 */ addi r3, r1, 0x150 -/* 808714EC 4B AE ED 19 */ bl GXGetProjectionv -/* 808714F0 38 61 01 38 */ addi r3, r1, 0x138 -/* 808714F4 4B AE EF B9 */ bl GXGetViewportv -/* 808714F8 38 61 01 28 */ addi r3, r1, 0x128 -/* 808714FC 38 81 01 2C */ addi r4, r1, 0x12c -/* 80871500 38 A1 01 30 */ addi r5, r1, 0x130 -/* 80871504 38 C1 01 34 */ addi r6, r1, 0x134 -/* 80871508 4B AE F0 41 */ bl GXGetScissor -/* 8087150C 3C 60 80 45 */ lis r3, __float_max@ha /* 0x80450AE8@ha */ -/* 80871510 C0 03 0A E8 */ lfs f0, __float_max@l(r3) /* 0x80450AE8@l */ -/* 80871514 FF E0 00 90 */ fmr f31, f0 -/* 80871518 FF C0 00 90 */ fmr f30, f0 -/* 8087151C FC 00 00 50 */ fneg f0, f0 -/* 80871520 FF A0 00 90 */ fmr f29, f0 -/* 80871524 FF 80 00 90 */ fmr f28, f0 -/* 80871528 FF 60 00 90 */ fmr f27, f0 -/* 8087152C 80 01 01 28 */ lwz r0, 0x128(r1) -/* 80871530 C8 3F 00 48 */ lfd f1, 0x48(r31) -/* 80871534 90 01 01 DC */ stw r0, 0x1dc(r1) -/* 80871538 3C 60 43 30 */ lis r3, 0x4330 -/* 8087153C 90 61 01 D8 */ stw r3, 0x1d8(r1) -/* 80871540 C8 01 01 D8 */ lfd f0, 0x1d8(r1) -/* 80871544 EF 40 08 28 */ fsubs f26, f0, f1 -/* 80871548 80 01 01 30 */ lwz r0, 0x130(r1) -/* 8087154C 90 01 01 E4 */ stw r0, 0x1e4(r1) -/* 80871550 90 61 01 E0 */ stw r3, 0x1e0(r1) -/* 80871554 C8 01 01 E0 */ lfd f0, 0x1e0(r1) -/* 80871558 EC 00 08 28 */ fsubs f0, f0, f1 -/* 8087155C EF 3A 00 2A */ fadds f25, f26, f0 -/* 80871560 80 01 01 2C */ lwz r0, 0x12c(r1) -/* 80871564 90 01 01 EC */ stw r0, 0x1ec(r1) -/* 80871568 90 61 01 E8 */ stw r3, 0x1e8(r1) -/* 8087156C C8 01 01 E8 */ lfd f0, 0x1e8(r1) -/* 80871570 EF 00 08 28 */ fsubs f24, f0, f1 -/* 80871574 80 01 01 34 */ lwz r0, 0x134(r1) -/* 80871578 90 01 01 F4 */ stw r0, 0x1f4(r1) -/* 8087157C 90 61 01 F0 */ stw r3, 0x1f0(r1) -/* 80871580 C8 01 01 F0 */ lfd f0, 0x1f0(r1) -/* 80871584 EC 00 08 28 */ fsubs f0, f0, f1 -/* 80871588 EE F8 00 2A */ fadds f23, f24, f0 -/* 8087158C 3B A0 00 04 */ li r29, 4 -/* 80871590 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80871594 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80871598 83 C3 61 B0 */ lwz r30, 0x61b0(r3) -/* 8087159C C0 1E 00 C8 */ lfs f0, 0xc8(r30) -/* 808715A0 FE C0 00 50 */ fneg f22, f0 -/* 808715A4 3A BA 01 34 */ addi r21, r26, 0x134 -/* 808715A8 3A C1 01 9C */ addi r22, r1, 0x19c -/* 808715AC 3A E0 00 00 */ li r23, 0 -/* 808715B0 3B 80 00 00 */ li r28, 0 -/* 808715B4 3B 00 00 00 */ li r24, 0 -lbl_808715B8: -/* 808715B8 38 7E 01 40 */ addi r3, r30, 0x140 -/* 808715BC 7E A4 AB 78 */ mr r4, r21 -/* 808715C0 7E C5 B3 78 */ mr r5, r22 -/* 808715C4 4B AD 57 A9 */ bl PSMTXMultVec -/* 808715C8 C0 16 00 08 */ lfs f0, 8(r22) -/* 808715CC FC 00 B0 40 */ fcmpo cr0, f0, f22 -/* 808715D0 4C 41 13 82 */ cror 2, 1, 2 -/* 808715D4 40 82 00 08 */ bne lbl_808715DC -/* 808715D8 3A F7 00 01 */ addi r23, r23, 1 -lbl_808715DC: -/* 808715DC C0 16 00 08 */ lfs f0, 8(r22) -/* 808715E0 FC 00 B0 40 */ fcmpo cr0, f0, f22 -/* 808715E4 4C 41 13 82 */ cror 2, 1, 2 -/* 808715E8 7C 00 00 26 */ mfcr r0 -/* 808715EC 54 00 1F FF */ rlwinm. r0, r0, 3, 0x1f, 0x1f -/* 808715F0 40 82 00 08 */ bne lbl_808715F8 -/* 808715F4 7F 1C C3 78 */ mr r28, r24 -lbl_808715F8: -/* 808715F8 3B 18 00 01 */ addi r24, r24, 1 -/* 808715FC 2C 18 00 04 */ cmpwi r24, 4 -/* 80871600 3A B5 00 0C */ addi r21, r21, 0xc -/* 80871604 3A D6 00 0C */ addi r22, r22, 0xc -/* 80871608 41 80 FF B0 */ blt lbl_808715B8 -/* 8087160C 2C 17 00 04 */ cmpwi r23, 4 -/* 80871610 40 80 07 0C */ bge lbl_80871D1C -/* 80871614 2C 17 00 00 */ cmpwi r23, 0 -/* 80871618 41 82 01 D8 */ beq lbl_808717F0 -/* 8087161C 3B 60 FF FF */ li r27, -1 -/* 80871620 38 00 00 04 */ li r0, 4 -/* 80871624 7C 09 03 A6 */ mtctr r0 -lbl_80871628: -/* 80871628 38 7C 00 01 */ addi r3, r28, 1 -/* 8087162C 54 60 F0 02 */ slwi r0, r3, 0x1e -/* 80871630 54 63 0F FE */ srwi r3, r3, 0x1f -/* 80871634 7C 03 00 50 */ subf r0, r3, r0 -/* 80871638 54 00 10 3E */ rotlwi r0, r0, 2 -/* 8087163C 7C A0 1A 14 */ add r5, r0, r3 -/* 80871640 2C 1B 00 00 */ cmpwi r27, 0 -/* 80871644 40 80 00 28 */ bge lbl_8087166C -/* 80871648 1C 85 00 0C */ mulli r4, r5, 0xc -/* 8087164C 38 61 01 9C */ addi r3, r1, 0x19c -/* 80871650 38 04 00 08 */ addi r0, r4, 8 -/* 80871654 7C 03 04 2E */ lfsx f0, r3, r0 -/* 80871658 FC 00 B0 40 */ fcmpo cr0, f0, f22 -/* 8087165C 4C 41 13 82 */ cror 2, 1, 2 -/* 80871660 40 82 01 88 */ bne lbl_808717E8 -/* 80871664 7C BB 2B 78 */ mr r27, r5 -/* 80871668 48 00 01 80 */ b lbl_808717E8 -lbl_8087166C: -/* 8087166C 1E E5 00 0C */ mulli r23, r5, 0xc -/* 80871670 3B 01 01 9C */ addi r24, r1, 0x19c -/* 80871674 7F 18 BA 14 */ add r24, r24, r23 -/* 80871678 C0 18 00 08 */ lfs f0, 8(r24) -/* 8087167C FC 00 B0 40 */ fcmpo cr0, f0, f22 -/* 80871680 40 80 01 68 */ bge lbl_808717E8 -/* 80871684 38 7B 00 03 */ addi r3, r27, 3 -/* 80871688 54 60 F0 02 */ slwi r0, r3, 0x1e -/* 8087168C 54 63 0F FE */ srwi r3, r3, 0x1f -/* 80871690 7C 03 00 50 */ subf r0, r3, r0 -/* 80871694 54 00 10 3E */ rotlwi r0, r0, 2 -/* 80871698 7C A0 1A 14 */ add r5, r0, r3 -/* 8087169C 38 61 00 C8 */ addi r3, r1, 0xc8 -/* 808716A0 1C 1B 00 0C */ mulli r0, r27, 0xc -/* 808716A4 38 81 01 9C */ addi r4, r1, 0x19c -/* 808716A8 7C 84 02 14 */ add r4, r4, r0 -/* 808716AC 1F A5 00 0C */ mulli r29, r5, 0xc -/* 808716B0 3B 21 01 9C */ addi r25, r1, 0x19c -/* 808716B4 7F 39 EA 14 */ add r25, r25, r29 -/* 808716B8 7F 25 CB 78 */ mr r5, r25 -/* 808716BC 4B 9F 54 79 */ bl __mi__4cXyzCFRC3Vec -/* 808716C0 C0 01 00 C8 */ lfs f0, 0xc8(r1) -/* 808716C4 D0 01 01 1C */ stfs f0, 0x11c(r1) -/* 808716C8 C0 01 00 CC */ lfs f0, 0xcc(r1) -/* 808716CC D0 01 01 20 */ stfs f0, 0x120(r1) -/* 808716D0 C0 21 00 D0 */ lfs f1, 0xd0(r1) -/* 808716D4 D0 21 01 24 */ stfs f1, 0x124(r1) -/* 808716D8 3A C1 01 A4 */ addi r22, r1, 0x1a4 -/* 808716DC 7C 16 EC 2E */ lfsx f0, r22, r29 -/* 808716E0 EC 16 00 28 */ fsubs f0, f22, f0 -/* 808716E4 EC 20 08 24 */ fdivs f1, f0, f1 -/* 808716E8 38 61 01 1C */ addi r3, r1, 0x11c -/* 808716EC 7C 64 1B 78 */ mr r4, r3 -/* 808716F0 4B AD 59 E9 */ bl PSVECScale -/* 808716F4 38 61 00 BC */ addi r3, r1, 0xbc -/* 808716F8 7F 24 CB 78 */ mr r4, r25 -/* 808716FC 38 A1 01 1C */ addi r5, r1, 0x11c -/* 80871700 4B 9F 53 E5 */ bl __pl__4cXyzCFRC3Vec -/* 80871704 C0 01 00 BC */ lfs f0, 0xbc(r1) -/* 80871708 D0 01 01 CC */ stfs f0, 0x1cc(r1) -/* 8087170C C0 01 00 C0 */ lfs f0, 0xc0(r1) -/* 80871710 D0 01 01 D0 */ stfs f0, 0x1d0(r1) -/* 80871714 C0 01 00 C4 */ lfs f0, 0xc4(r1) -/* 80871718 D0 01 01 D4 */ stfs f0, 0x1d4(r1) -/* 8087171C 38 61 00 B0 */ addi r3, r1, 0xb0 -/* 80871720 1E BC 00 0C */ mulli r21, r28, 0xc -/* 80871724 3B 21 01 9C */ addi r25, r1, 0x19c -/* 80871728 7F 39 AA 14 */ add r25, r25, r21 -/* 8087172C 7F 24 CB 78 */ mr r4, r25 -/* 80871730 7F 05 C3 78 */ mr r5, r24 -/* 80871734 3B A0 00 05 */ li r29, 5 -/* 80871738 4B 9F 53 FD */ bl __mi__4cXyzCFRC3Vec -/* 8087173C C0 01 00 B0 */ lfs f0, 0xb0(r1) -/* 80871740 D0 01 01 1C */ stfs f0, 0x11c(r1) -/* 80871744 C0 01 00 B4 */ lfs f0, 0xb4(r1) -/* 80871748 D0 01 01 20 */ stfs f0, 0x120(r1) -/* 8087174C C0 21 00 B8 */ lfs f1, 0xb8(r1) -/* 80871750 D0 21 01 24 */ stfs f1, 0x124(r1) -/* 80871754 38 61 01 1C */ addi r3, r1, 0x11c -/* 80871758 7C 64 1B 78 */ mr r4, r3 -/* 8087175C 7C 16 BC 2E */ lfsx f0, r22, r23 -/* 80871760 EC 16 00 28 */ fsubs f0, f22, f0 -/* 80871764 EC 20 08 24 */ fdivs f1, f0, f1 -/* 80871768 4B AD 59 71 */ bl PSVECScale -/* 8087176C 38 61 00 A4 */ addi r3, r1, 0xa4 -/* 80871770 7F 04 C3 78 */ mr r4, r24 -/* 80871774 38 A1 01 1C */ addi r5, r1, 0x11c -/* 80871778 4B 9F 53 6D */ bl __pl__4cXyzCFRC3Vec -/* 8087177C C0 01 00 A4 */ lfs f0, 0xa4(r1) -/* 80871780 D0 19 00 00 */ stfs f0, 0(r25) -/* 80871784 C0 01 00 A8 */ lfs f0, 0xa8(r1) -/* 80871788 38 61 01 A0 */ addi r3, r1, 0x1a0 -/* 8087178C 7C 03 AD 2E */ stfsx f0, r3, r21 -/* 80871790 C0 01 00 AC */ lfs f0, 0xac(r1) -/* 80871794 7C 16 AD 2E */ stfsx f0, r22, r21 -/* 80871798 7F 64 DB 78 */ mr r4, r27 -/* 8087179C 48 00 00 40 */ b lbl_808717DC -lbl_808717A0: -/* 808717A0 C0 19 00 00 */ lfs f0, 0(r25) -/* 808717A4 1C 04 00 0C */ mulli r0, r4, 0xc -/* 808717A8 38 61 01 9C */ addi r3, r1, 0x19c -/* 808717AC 7C 63 02 14 */ add r3, r3, r0 -/* 808717B0 D0 03 00 00 */ stfs f0, 0(r3) -/* 808717B4 C0 19 00 04 */ lfs f0, 4(r25) -/* 808717B8 D0 03 00 04 */ stfs f0, 4(r3) -/* 808717BC C0 19 00 08 */ lfs f0, 8(r25) -/* 808717C0 D0 03 00 08 */ stfs f0, 8(r3) -/* 808717C4 38 64 00 01 */ addi r3, r4, 1 -/* 808717C8 54 60 F0 02 */ slwi r0, r3, 0x1e -/* 808717CC 54 63 0F FE */ srwi r3, r3, 0x1f -/* 808717D0 7C 03 00 50 */ subf r0, r3, r0 -/* 808717D4 54 00 10 3E */ rotlwi r0, r0, 2 -/* 808717D8 7C 80 1A 14 */ add r4, r0, r3 -lbl_808717DC: -/* 808717DC 7C 04 E0 00 */ cmpw r4, r28 -/* 808717E0 40 82 FF C0 */ bne lbl_808717A0 -/* 808717E4 48 00 00 0C */ b lbl_808717F0 -lbl_808717E8: -/* 808717E8 7C BC 2B 78 */ mr r28, r5 -/* 808717EC 42 00 FE 3C */ bdnz lbl_80871628 -lbl_808717F0: -/* 808717F0 C2 DE 00 D4 */ lfs f22, 0xd4(r30) -/* 808717F4 C0 5F 00 20 */ lfs f2, 0x20(r31) -/* 808717F8 C0 3F 00 24 */ lfs f1, 0x24(r31) -/* 808717FC C0 1E 00 D0 */ lfs f0, 0xd0(r30) -/* 80871800 EC 01 00 32 */ fmuls f0, f1, f0 -/* 80871804 EC 22 00 32 */ fmuls f1, f2, f0 -/* 80871808 4B AF AE 61 */ bl tan -/* 8087180C FC 00 08 18 */ frsp f0, f1 -/* 80871810 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80871814 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80871818 80 63 61 AC */ lwz r3, 0x61ac(r3) -/* 8087181C C0 3F 00 0C */ lfs f1, 0xc(r31) -/* 80871820 C0 43 00 00 */ lfs f2, 0(r3) -/* 80871824 FC 01 10 00 */ fcmpu cr0, f1, f2 -/* 80871828 41 82 00 2C */ beq lbl_80871854 -/* 8087182C C0 7F 00 24 */ lfs f3, 0x24(r31) -/* 80871830 C0 3F 00 28 */ lfs f1, 0x28(r31) -/* 80871834 EC 41 00 B2 */ fmuls f2, f1, f2 -/* 80871838 C0 23 00 08 */ lfs f1, 8(r3) -/* 8087183C EC 22 08 2A */ fadds f1, f2, f1 -/* 80871840 EC 43 00 72 */ fmuls f2, f3, f1 -/* 80871844 C0 3F 00 2C */ lfs f1, 0x2c(r31) -/* 80871848 EC 62 08 28 */ fsubs f3, f2, f1 -/* 8087184C C0 BF 00 30 */ lfs f5, 0x30(r31) -/* 80871850 48 00 00 0C */ b lbl_8087185C -lbl_80871854: -/* 80871854 FC 60 10 90 */ fmr f3, f2 -/* 80871858 C0 A3 00 08 */ lfs f5, 8(r3) -lbl_8087185C: -/* 8087185C C0 3F 00 0C */ lfs f1, 0xc(r31) -/* 80871860 C0 43 00 04 */ lfs f2, 4(r3) -/* 80871864 FC 01 10 00 */ fcmpu cr0, f1, f2 -/* 80871868 41 82 00 2C */ beq lbl_80871894 -/* 8087186C C0 9F 00 24 */ lfs f4, 0x24(r31) -/* 80871870 C0 3F 00 28 */ lfs f1, 0x28(r31) -/* 80871874 EC 41 00 B2 */ fmuls f2, f1, f2 -/* 80871878 C0 23 00 0C */ lfs f1, 0xc(r3) -/* 8087187C EC 22 08 2A */ fadds f1, f2, f1 -/* 80871880 EC 44 00 72 */ fmuls f2, f4, f1 -/* 80871884 C0 3F 00 34 */ lfs f1, 0x34(r31) -/* 80871888 EC 82 08 28 */ fsubs f4, f2, f1 -/* 8087188C C0 DF 00 38 */ lfs f6, 0x38(r31) -/* 80871890 48 00 00 0C */ b lbl_8087189C -lbl_80871894: -/* 80871894 FC 80 10 90 */ fmr f4, f2 -/* 80871898 C0 C3 00 0C */ lfs f6, 0xc(r3) -lbl_8087189C: -/* 8087189C 38 61 01 9C */ addi r3, r1, 0x19c -/* 808718A0 C0 5F 00 24 */ lfs f2, 0x24(r31) -/* 808718A4 EC 22 01 72 */ fmuls f1, f2, f5 -/* 808718A8 EC 42 01 B2 */ fmuls f2, f2, f6 -/* 808718AC C0 DF 00 14 */ lfs f6, 0x14(r31) -/* 808718B0 7F A9 03 A6 */ mtctr r29 -/* 808718B4 2C 1D 00 00 */ cmpwi r29, 0 -/* 808718B8 40 81 00 F4 */ ble lbl_808719AC -lbl_808718BC: -/* 808718BC C0 E3 00 04 */ lfs f7, 4(r3) -/* 808718C0 C0 A3 00 08 */ lfs f5, 8(r3) -/* 808718C4 EC A5 00 32 */ fmuls f5, f5, f0 -/* 808718C8 EC A7 28 24 */ fdivs f5, f7, f5 -/* 808718CC D0 A3 00 04 */ stfs f5, 4(r3) -/* 808718D0 C0 E3 00 00 */ lfs f7, 0(r3) -/* 808718D4 C0 A3 00 08 */ lfs f5, 8(r3) -/* 808718D8 FC A0 28 50 */ fneg f5, f5 -/* 808718DC EC A5 00 32 */ fmuls f5, f5, f0 -/* 808718E0 EC B6 01 72 */ fmuls f5, f22, f5 -/* 808718E4 EC A7 28 24 */ fdivs f5, f7, f5 -/* 808718E8 D0 A3 00 00 */ stfs f5, 0(r3) -/* 808718EC C0 A3 00 00 */ lfs f5, 0(r3) -/* 808718F0 EC A6 28 2A */ fadds f5, f6, f5 -/* 808718F4 EC A5 00 72 */ fmuls f5, f5, f1 -/* 808718F8 EC A3 28 2A */ fadds f5, f3, f5 -/* 808718FC D0 A3 00 00 */ stfs f5, 0(r3) -/* 80871900 C0 A3 00 04 */ lfs f5, 4(r3) -/* 80871904 EC A6 28 2A */ fadds f5, f6, f5 -/* 80871908 EC A5 00 B2 */ fmuls f5, f5, f2 -/* 8087190C EC A4 28 2A */ fadds f5, f4, f5 -/* 80871910 D0 A3 00 04 */ stfs f5, 4(r3) -/* 80871914 C0 A3 00 00 */ lfs f5, 0(r3) -/* 80871918 FC 05 D0 40 */ fcmpo cr0, f5, f26 -/* 8087191C 40 80 00 0C */ bge lbl_80871928 -/* 80871920 FC A0 D0 90 */ fmr f5, f26 -/* 80871924 48 00 00 10 */ b lbl_80871934 -lbl_80871928: -/* 80871928 FC 05 C8 40 */ fcmpo cr0, f5, f25 -/* 8087192C 40 81 00 08 */ ble lbl_80871934 -/* 80871930 FC A0 C8 90 */ fmr f5, f25 -lbl_80871934: -/* 80871934 D0 A3 00 00 */ stfs f5, 0(r3) -/* 80871938 C0 A3 00 04 */ lfs f5, 4(r3) -/* 8087193C FC 05 C0 40 */ fcmpo cr0, f5, f24 -/* 80871940 40 80 00 0C */ bge lbl_8087194C -/* 80871944 FC A0 C0 90 */ fmr f5, f24 -/* 80871948 48 00 00 10 */ b lbl_80871958 -lbl_8087194C: -/* 8087194C FC 05 B8 40 */ fcmpo cr0, f5, f23 -/* 80871950 40 81 00 08 */ ble lbl_80871958 -/* 80871954 FC A0 B8 90 */ fmr f5, f23 -lbl_80871958: -/* 80871958 D0 A3 00 04 */ stfs f5, 4(r3) -/* 8087195C C0 A3 00 00 */ lfs f5, 0(r3) -/* 80871960 FC 05 F8 40 */ fcmpo cr0, f5, f31 -/* 80871964 40 80 00 08 */ bge lbl_8087196C -/* 80871968 FF E0 28 90 */ fmr f31, f5 -lbl_8087196C: -/* 8087196C FC 05 E8 40 */ fcmpo cr0, f5, f29 -/* 80871970 40 81 00 08 */ ble lbl_80871978 -/* 80871974 FF A0 28 90 */ fmr f29, f5 -lbl_80871978: -/* 80871978 C0 A3 00 04 */ lfs f5, 4(r3) -/* 8087197C FC 05 F0 40 */ fcmpo cr0, f5, f30 -/* 80871980 40 80 00 08 */ bge lbl_80871988 -/* 80871984 FF C0 28 90 */ fmr f30, f5 -lbl_80871988: -/* 80871988 FC 05 E0 40 */ fcmpo cr0, f5, f28 -/* 8087198C 40 81 00 08 */ ble lbl_80871994 -/* 80871990 FF 80 28 90 */ fmr f28, f5 -lbl_80871994: -/* 80871994 C0 A3 00 08 */ lfs f5, 8(r3) -/* 80871998 FC 05 D8 40 */ fcmpo cr0, f5, f27 -/* 8087199C 40 81 00 08 */ ble lbl_808719A4 -/* 808719A0 FF 60 28 90 */ fmr f27, f5 -lbl_808719A4: -/* 808719A4 38 63 00 0C */ addi r3, r3, 0xc -/* 808719A8 42 00 FF 14 */ bdnz lbl_808718BC -lbl_808719AC: -/* 808719AC EE DD F8 28 */ fsubs f22, f29, f31 -/* 808719B0 FC 00 B2 10 */ fabs f0, f22 -/* 808719B4 FC 00 00 18 */ frsp f0, f0 -/* 808719B8 C0 5F 00 3C */ lfs f2, 0x3c(r31) -/* 808719BC FC 00 10 40 */ fcmpo cr0, f0, f2 -/* 808719C0 41 80 03 5C */ blt lbl_80871D1C -/* 808719C4 EC 3C F0 28 */ fsubs f1, f28, f30 -/* 808719C8 FC 00 0A 10 */ fabs f0, f1 -/* 808719CC FC 00 00 18 */ frsp f0, f0 -/* 808719D0 FC 00 10 40 */ fcmpo cr0, f0, f2 -/* 808719D4 40 80 00 08 */ bge lbl_808719DC -/* 808719D8 48 00 03 44 */ b lbl_80871D1C -lbl_808719DC: -/* 808719DC 4B AF 06 D1 */ bl __cvt_fp2unsigned -/* 808719E0 7C 7D 1B 78 */ mr r29, r3 -/* 808719E4 FC 20 B0 90 */ fmr f1, f22 -/* 808719E8 4B AF 06 C5 */ bl __cvt_fp2unsigned -/* 808719EC 7C 7C 1B 78 */ mr r28, r3 -/* 808719F0 FC 20 F0 90 */ fmr f1, f30 -/* 808719F4 4B AF 06 B9 */ bl __cvt_fp2unsigned -/* 808719F8 7C 7B 1B 78 */ mr r27, r3 -/* 808719FC FC 20 F8 90 */ fmr f1, f31 -/* 80871A00 4B AF 06 AD */ bl __cvt_fp2unsigned -/* 80871A04 7F 64 DB 78 */ mr r4, r27 -/* 80871A08 7F 85 E3 78 */ mr r5, r28 -/* 80871A0C 7F A6 EB 78 */ mr r6, r29 -/* 80871A10 4B AE EA C1 */ bl GXSetScissor -/* 80871A14 38 61 00 98 */ addi r3, r1, 0x98 -/* 80871A18 38 9A 01 40 */ addi r4, r26, 0x140 -/* 80871A1C 38 BA 01 34 */ addi r5, r26, 0x134 -/* 80871A20 4B 9F 51 15 */ bl __mi__4cXyzCFRC3Vec -/* 80871A24 C0 01 00 98 */ lfs f0, 0x98(r1) -/* 80871A28 D0 01 01 10 */ stfs f0, 0x110(r1) -/* 80871A2C C0 01 00 9C */ lfs f0, 0x9c(r1) -/* 80871A30 D0 01 01 14 */ stfs f0, 0x114(r1) -/* 80871A34 C0 01 00 A0 */ lfs f0, 0xa0(r1) -/* 80871A38 D0 01 01 18 */ stfs f0, 0x118(r1) -/* 80871A3C 38 61 00 8C */ addi r3, r1, 0x8c -/* 80871A40 38 9A 01 4C */ addi r4, r26, 0x14c -/* 80871A44 38 BA 01 40 */ addi r5, r26, 0x140 -/* 80871A48 4B 9F 50 ED */ bl __mi__4cXyzCFRC3Vec -/* 80871A4C C0 01 00 8C */ lfs f0, 0x8c(r1) -/* 80871A50 D0 01 01 04 */ stfs f0, 0x104(r1) -/* 80871A54 C0 01 00 90 */ lfs f0, 0x90(r1) -/* 80871A58 D0 01 01 08 */ stfs f0, 0x108(r1) -/* 80871A5C C0 01 00 94 */ lfs f0, 0x94(r1) -/* 80871A60 D0 01 01 0C */ stfs f0, 0x10c(r1) -/* 80871A64 38 61 00 80 */ addi r3, r1, 0x80 -/* 80871A68 38 81 01 10 */ addi r4, r1, 0x110 -/* 80871A6C 38 A1 01 04 */ addi r5, r1, 0x104 -/* 80871A70 4B 9F 52 4D */ bl outprod__4cXyzCFRC3Vec -/* 80871A74 C0 01 00 80 */ lfs f0, 0x80(r1) -/* 80871A78 D0 01 00 F8 */ stfs f0, 0xf8(r1) -/* 80871A7C C0 01 00 84 */ lfs f0, 0x84(r1) -/* 80871A80 D0 01 00 FC */ stfs f0, 0xfc(r1) -/* 80871A84 C0 01 00 88 */ lfs f0, 0x88(r1) -/* 80871A88 D0 01 01 00 */ stfs f0, 0x100(r1) -/* 80871A8C 38 61 00 74 */ addi r3, r1, 0x74 -/* 80871A90 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 80871A94 4B 9F 54 B5 */ bl normalizeZP__4cXyzFv -/* 80871A98 C0 C1 01 00 */ lfs f6, 0x100(r1) -/* 80871A9C C0 1A 01 3C */ lfs f0, 0x13c(r26) -/* 80871AA0 EC 46 00 32 */ fmuls f2, f6, f0 -/* 80871AA4 C0 A1 00 F8 */ lfs f5, 0xf8(r1) -/* 80871AA8 C0 1A 01 34 */ lfs f0, 0x134(r26) -/* 80871AAC EC 25 00 32 */ fmuls f1, f5, f0 -/* 80871AB0 C0 81 00 FC */ lfs f4, 0xfc(r1) -/* 80871AB4 C0 1A 01 38 */ lfs f0, 0x138(r26) -/* 80871AB8 EC 04 00 32 */ fmuls f0, f4, f0 -/* 80871ABC EC 01 00 2A */ fadds f0, f1, f0 -/* 80871AC0 EC E2 00 2A */ fadds f7, f2, f0 -/* 80871AC4 C0 1E 00 EC */ lfs f0, 0xec(r30) -/* 80871AC8 EC 46 00 32 */ fmuls f2, f6, f0 -/* 80871ACC C0 1E 00 E4 */ lfs f0, 0xe4(r30) -/* 80871AD0 EC 25 00 32 */ fmuls f1, f5, f0 -/* 80871AD4 C0 1E 00 E8 */ lfs f0, 0xe8(r30) -/* 80871AD8 EC 04 00 32 */ fmuls f0, f4, f0 -/* 80871ADC EC 01 00 2A */ fadds f0, f1, f0 -/* 80871AE0 EC 02 00 2A */ fadds f0, f2, f0 -/* 80871AE4 EE C0 38 28 */ fsubs f22, f0, f7 -/* 80871AE8 38 61 00 68 */ addi r3, r1, 0x68 -/* 80871AEC 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 80871AF0 C0 7F 00 28 */ lfs f3, 0x28(r31) -/* 80871AF4 C0 1E 00 E0 */ lfs f0, 0xe0(r30) -/* 80871AF8 EC 46 00 32 */ fmuls f2, f6, f0 -/* 80871AFC C0 1E 00 D8 */ lfs f0, 0xd8(r30) -/* 80871B00 EC 25 00 32 */ fmuls f1, f5, f0 -/* 80871B04 C0 1E 00 DC */ lfs f0, 0xdc(r30) -/* 80871B08 EC 04 00 32 */ fmuls f0, f4, f0 -/* 80871B0C EC 01 00 2A */ fadds f0, f1, f0 -/* 80871B10 EC 02 00 2A */ fadds f0, f2, f0 -/* 80871B14 EC 00 38 28 */ fsubs f0, f0, f7 -/* 80871B18 EC 23 00 32 */ fmuls f1, f3, f0 -/* 80871B1C 4B 9F 50 69 */ bl __ml__4cXyzCFf -/* 80871B20 38 61 00 5C */ addi r3, r1, 0x5c -/* 80871B24 38 9E 00 D8 */ addi r4, r30, 0xd8 -/* 80871B28 38 A1 00 68 */ addi r5, r1, 0x68 -/* 80871B2C 4B 9F 50 09 */ bl __mi__4cXyzCFRC3Vec -/* 80871B30 C0 01 00 5C */ lfs f0, 0x5c(r1) -/* 80871B34 D0 01 00 EC */ stfs f0, 0xec(r1) -/* 80871B38 C0 01 00 60 */ lfs f0, 0x60(r1) -/* 80871B3C D0 01 00 F0 */ stfs f0, 0xf0(r1) -/* 80871B40 C0 01 00 64 */ lfs f0, 0x64(r1) -/* 80871B44 D0 01 00 F4 */ stfs f0, 0xf4(r1) -/* 80871B48 38 61 00 50 */ addi r3, r1, 0x50 -/* 80871B4C 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 80871B50 C0 1F 00 28 */ lfs f0, 0x28(r31) -/* 80871B54 EC 20 05 B2 */ fmuls f1, f0, f22 -/* 80871B58 4B 9F 50 2D */ bl __ml__4cXyzCFf -/* 80871B5C 38 61 00 44 */ addi r3, r1, 0x44 -/* 80871B60 38 9E 00 E4 */ addi r4, r30, 0xe4 -/* 80871B64 38 A1 00 50 */ addi r5, r1, 0x50 -/* 80871B68 4B 9F 4F CD */ bl __mi__4cXyzCFRC3Vec -/* 80871B6C C0 01 00 44 */ lfs f0, 0x44(r1) -/* 80871B70 D0 01 00 E0 */ stfs f0, 0xe0(r1) -/* 80871B74 C0 01 00 48 */ lfs f0, 0x48(r1) -/* 80871B78 D0 01 00 E4 */ stfs f0, 0xe4(r1) -/* 80871B7C C0 01 00 4C */ lfs f0, 0x4c(r1) -/* 80871B80 D0 01 00 E8 */ stfs f0, 0xe8(r1) -/* 80871B84 C0 3F 00 0C */ lfs f1, 0xc(r31) -/* 80871B88 D0 21 00 D4 */ stfs f1, 0xd4(r1) -/* 80871B8C C0 1F 00 14 */ lfs f0, 0x14(r31) -/* 80871B90 D0 01 00 D8 */ stfs f0, 0xd8(r1) -/* 80871B94 D0 21 00 DC */ stfs f1, 0xdc(r1) -/* 80871B98 C0 1A 01 80 */ lfs f0, 0x180(r26) -/* 80871B9C FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80871BA0 40 81 00 BC */ ble lbl_80871C5C -/* 80871BA4 38 61 00 38 */ addi r3, r1, 0x38 -/* 80871BA8 38 81 00 EC */ addi r4, r1, 0xec -/* 80871BAC 38 BE 00 D8 */ addi r5, r30, 0xd8 -/* 80871BB0 4B 9F 4F 85 */ bl __mi__4cXyzCFRC3Vec -/* 80871BB4 C0 01 00 38 */ lfs f0, 0x38(r1) -/* 80871BB8 D0 01 01 10 */ stfs f0, 0x110(r1) -/* 80871BBC C0 01 00 3C */ lfs f0, 0x3c(r1) -/* 80871BC0 D0 01 01 14 */ stfs f0, 0x114(r1) -/* 80871BC4 C0 01 00 40 */ lfs f0, 0x40(r1) -/* 80871BC8 D0 01 01 18 */ stfs f0, 0x118(r1) -/* 80871BCC 38 61 00 2C */ addi r3, r1, 0x2c -/* 80871BD0 38 81 01 10 */ addi r4, r1, 0x110 -/* 80871BD4 38 BE 00 F0 */ addi r5, r30, 0xf0 -/* 80871BD8 4B 9F 50 E5 */ bl outprod__4cXyzCFRC3Vec -/* 80871BDC C0 01 00 2C */ lfs f0, 0x2c(r1) -/* 80871BE0 D0 01 01 04 */ stfs f0, 0x104(r1) -/* 80871BE4 C0 01 00 30 */ lfs f0, 0x30(r1) -/* 80871BE8 D0 01 01 08 */ stfs f0, 0x108(r1) -/* 80871BEC C0 01 00 34 */ lfs f0, 0x34(r1) -/* 80871BF0 D0 01 01 0C */ stfs f0, 0x10c(r1) -/* 80871BF4 38 61 00 20 */ addi r3, r1, 0x20 -/* 80871BF8 38 81 01 10 */ addi r4, r1, 0x110 -/* 80871BFC 38 A1 01 04 */ addi r5, r1, 0x104 -/* 80871C00 4B 9F 50 BD */ bl outprod__4cXyzCFRC3Vec -/* 80871C04 C0 01 00 20 */ lfs f0, 0x20(r1) -/* 80871C08 D0 01 00 D4 */ stfs f0, 0xd4(r1) -/* 80871C0C C0 01 00 24 */ lfs f0, 0x24(r1) -/* 80871C10 D0 01 00 D8 */ stfs f0, 0xd8(r1) -/* 80871C14 C0 01 00 28 */ lfs f0, 0x28(r1) -/* 80871C18 D0 01 00 DC */ stfs f0, 0xdc(r1) -/* 80871C1C 38 61 00 14 */ addi r3, r1, 0x14 -/* 80871C20 38 81 00 D4 */ addi r4, r1, 0xd4 -/* 80871C24 4B 9F 53 25 */ bl normalizeZP__4cXyzFv -/* 80871C28 C0 3F 00 40 */ lfs f1, 0x40(r31) -/* 80871C2C D0 21 00 08 */ stfs f1, 8(r1) -/* 80871C30 D0 21 00 0C */ stfs f1, 0xc(r1) -/* 80871C34 D0 21 00 10 */ stfs f1, 0x10(r1) -/* 80871C38 C0 01 00 D4 */ lfs f0, 0xd4(r1) -/* 80871C3C EC 00 00 72 */ fmuls f0, f0, f1 -/* 80871C40 D0 01 00 D4 */ stfs f0, 0xd4(r1) -/* 80871C44 C0 01 00 D8 */ lfs f0, 0xd8(r1) -/* 80871C48 EC 00 00 72 */ fmuls f0, f0, f1 -/* 80871C4C D0 01 00 D8 */ stfs f0, 0xd8(r1) -/* 80871C50 C0 01 00 DC */ lfs f0, 0xdc(r1) -/* 80871C54 EC 00 00 72 */ fmuls f0, f0, f1 -/* 80871C58 D0 01 00 DC */ stfs f0, 0xdc(r1) -lbl_80871C5C: -/* 80871C5C 38 61 01 6C */ addi r3, r1, 0x16c -/* 80871C60 38 81 00 EC */ addi r4, r1, 0xec -/* 80871C64 38 A1 00 E0 */ addi r5, r1, 0xe0 -/* 80871C68 38 C1 00 D4 */ addi r6, r1, 0xd4 -/* 80871C6C A8 FE 00 FC */ lha r7, 0xfc(r30) -/* 80871C70 4B 79 AA A1 */ bl mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs -/* 80871C74 38 7A 01 7C */ addi r3, r26, 0x17c -/* 80871C78 4B 79 B1 89 */ bl scaleS__14mDoMtx_stack_cFRC4cXyz -/* 80871C7C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871C80 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871C84 38 81 01 6C */ addi r4, r1, 0x16c -/* 80871C88 7C 65 1B 78 */ mr r5, r3 -/* 80871C8C 4B AD 48 59 */ bl PSMTXConcat -/* 80871C90 3B 80 00 00 */ li r28, 0 -/* 80871C94 3C 60 80 45 */ lis r3, sOldVcdVatCmd__8J3DShape@ha /* 0x804515D0@ha */ -/* 80871C98 93 83 15 D0 */ stw r28, sOldVcdVatCmd__8J3DShape@l(r3) /* 0x804515D0@l */ -/* 80871C9C 3A A0 00 00 */ li r21, 0 -/* 80871CA0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871CA4 3B 63 D4 70 */ addi r27, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871CA8 48 00 00 20 */ b lbl_80871CC8 -lbl_80871CAC: -/* 80871CAC 7F 43 D3 78 */ mr r3, r26 -/* 80871CB0 38 1C 00 34 */ addi r0, r28, 0x34 -/* 80871CB4 7C 9A 00 2E */ lwzx r4, r26, r0 -/* 80871CB8 7F 65 DB 78 */ mr r5, r27 -/* 80871CBC 4B FF F5 AD */ bl modelDraw__16dMirror_packet_cFP8J3DModelPA4_f -/* 80871CC0 3A B5 00 01 */ addi r21, r21, 1 -/* 80871CC4 3B 9C 00 04 */ addi r28, r28, 4 -lbl_80871CC8: -/* 80871CC8 88 1A 00 30 */ lbz r0, 0x30(r26) -/* 80871CCC 7C 15 00 00 */ cmpw r21, r0 -/* 80871CD0 41 80 FF DC */ blt lbl_80871CAC -/* 80871CD4 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80871CD8 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80871CDC 4B A9 EA 61 */ bl reinitGX__6J3DSysFv -/* 80871CE0 80 61 01 28 */ lwz r3, 0x128(r1) -/* 80871CE4 80 81 01 2C */ lwz r4, 0x12c(r1) -/* 80871CE8 80 A1 01 30 */ lwz r5, 0x130(r1) -/* 80871CEC 80 C1 01 34 */ lwz r6, 0x134(r1) -/* 80871CF0 4B AE E7 E1 */ bl GXSetScissor -/* 80871CF4 7F 43 D3 78 */ mr r3, r26 -/* 80871CF8 38 81 01 50 */ addi r4, r1, 0x150 -/* 80871CFC 38 A1 01 38 */ addi r5, r1, 0x138 -/* 80871D00 C0 3E 00 CC */ lfs f1, 0xcc(r30) -/* 80871D04 FC 40 F8 90 */ fmr f2, f31 -/* 80871D08 FC 60 F0 90 */ fmr f3, f30 -/* 80871D0C FC 80 E8 90 */ fmr f4, f29 -/* 80871D10 FC A0 E0 90 */ fmr f5, f28 -/* 80871D14 FC C0 D8 90 */ fmr f6, f27 -/* 80871D18 4B FF F0 71 */ bl mirrorZdraw__16dMirror_packet_cFPfPfffffff -lbl_80871D1C: -/* 80871D1C E3 E1 02 C8 */ psq_l f31, 712(r1), 0, 0 /* qr0 */ -/* 80871D20 CB E1 02 C0 */ lfd f31, 0x2c0(r1) -/* 80871D24 E3 C1 02 B8 */ psq_l f30, 696(r1), 0, 0 /* qr0 */ -/* 80871D28 CB C1 02 B0 */ lfd f30, 0x2b0(r1) -/* 80871D2C E3 A1 02 A8 */ psq_l f29, 680(r1), 0, 0 /* qr0 */ -/* 80871D30 CB A1 02 A0 */ lfd f29, 0x2a0(r1) -/* 80871D34 E3 81 02 98 */ psq_l f28, 664(r1), 0, 0 /* qr0 */ -/* 80871D38 CB 81 02 90 */ lfd f28, 0x290(r1) -/* 80871D3C E3 61 02 88 */ psq_l f27, 648(r1), 0, 0 /* qr0 */ -/* 80871D40 CB 61 02 80 */ lfd f27, 0x280(r1) -/* 80871D44 E3 41 02 78 */ psq_l f26, 632(r1), 0, 0 /* qr0 */ -/* 80871D48 CB 41 02 70 */ lfd f26, 0x270(r1) -/* 80871D4C E3 21 02 68 */ psq_l f25, 616(r1), 0, 0 /* qr0 */ -/* 80871D50 CB 21 02 60 */ lfd f25, 0x260(r1) -/* 80871D54 E3 01 02 58 */ psq_l f24, 600(r1), 0, 0 /* qr0 */ -/* 80871D58 CB 01 02 50 */ lfd f24, 0x250(r1) -/* 80871D5C E2 E1 02 48 */ psq_l f23, 584(r1), 0, 0 /* qr0 */ -/* 80871D60 CA E1 02 40 */ lfd f23, 0x240(r1) -/* 80871D64 E2 C1 02 38 */ psq_l f22, 568(r1), 0, 0 /* qr0 */ -/* 80871D68 CA C1 02 30 */ lfd f22, 0x230(r1) -/* 80871D6C 39 61 02 30 */ addi r11, r1, 0x230 -/* 80871D70 4B AF 04 99 */ bl _restgpr_21 -/* 80871D74 80 01 02 D4 */ lwz r0, 0x2d4(r1) -/* 80871D78 7C 08 03 A6 */ mtlr r0 -/* 80871D7C 38 21 02 D0 */ addi r1, r1, 0x2d0 -/* 80871D80 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/mirrorZdraw__16dMirror_packet_cFPfPfffffff.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/mirrorZdraw__16dMirror_packet_cFPfPfffffff.s deleted file mode 100644 index 4a57667202e..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/mirrorZdraw__16dMirror_packet_cFPfPfffffff.s +++ /dev/null @@ -1,319 +0,0 @@ -lbl_80870D88: -/* 80870D88 94 21 FF 60 */ stwu r1, -0xa0(r1) -/* 80870D8C 7C 08 02 A6 */ mflr r0 -/* 80870D90 90 01 00 A4 */ stw r0, 0xa4(r1) -/* 80870D94 DB E1 00 90 */ stfd f31, 0x90(r1) -/* 80870D98 F3 E1 00 98 */ psq_st f31, 152(r1), 0, 0 /* qr0 */ -/* 80870D9C DB C1 00 80 */ stfd f30, 0x80(r1) -/* 80870DA0 F3 C1 00 88 */ psq_st f30, 136(r1), 0, 0 /* qr0 */ -/* 80870DA4 DB A1 00 70 */ stfd f29, 0x70(r1) -/* 80870DA8 F3 A1 00 78 */ psq_st f29, 120(r1), 0, 0 /* qr0 */ -/* 80870DAC DB 81 00 60 */ stfd f28, 0x60(r1) -/* 80870DB0 F3 81 00 68 */ psq_st f28, 104(r1), 0, 0 /* qr0 */ -/* 80870DB4 39 61 00 60 */ addi r11, r1, 0x60 -/* 80870DB8 4B AF 14 21 */ bl _savegpr_28 -/* 80870DBC 7C 7D 1B 78 */ mr r29, r3 -/* 80870DC0 7C 9E 23 78 */ mr r30, r4 -/* 80870DC4 7C BC 2B 78 */ mr r28, r5 -/* 80870DC8 FF 80 10 90 */ fmr f28, f2 -/* 80870DCC FF A0 18 90 */ fmr f29, f3 -/* 80870DD0 FF C0 20 90 */ fmr f30, f4 -/* 80870DD4 FF E0 28 90 */ fmr f31, f5 -/* 80870DD8 3C 60 80 87 */ lis r3, lit_3884@ha /* 0x8087258C@ha */ -/* 80870DDC 3B E3 25 8C */ addi r31, r3, lit_3884@l /* 0x8087258C@l */ -/* 80870DE0 38 60 00 01 */ li r3, 1 -/* 80870DE4 4B AE CD 4D */ bl GXSetNumChans -/* 80870DE8 38 60 00 00 */ li r3, 0 -/* 80870DEC 38 80 00 00 */ li r4, 0 -/* 80870DF0 38 A0 00 00 */ li r5, 0 -/* 80870DF4 38 C0 00 00 */ li r6, 0 -/* 80870DF8 38 E0 00 00 */ li r7, 0 -/* 80870DFC 39 00 00 00 */ li r8, 0 -/* 80870E00 39 20 00 02 */ li r9, 2 -/* 80870E04 4B AE CD 69 */ bl GXSetChanCtrl -/* 80870E08 38 60 00 00 */ li r3, 0 -/* 80870E0C 4B AE AF F1 */ bl GXSetNumTexGens -/* 80870E10 38 60 00 01 */ li r3, 1 -/* 80870E14 4B AE EA 7D */ bl GXSetNumTevStages -/* 80870E18 38 60 00 00 */ li r3, 0 -/* 80870E1C 38 80 00 FF */ li r4, 0xff -/* 80870E20 38 A0 00 FF */ li r5, 0xff -/* 80870E24 38 C0 00 04 */ li r6, 4 -/* 80870E28 4B AE E8 CD */ bl GXSetTevOrder -/* 80870E2C 80 1F 00 00 */ lwz r0, 0(r31) -/* 80870E30 90 01 00 0C */ stw r0, 0xc(r1) -/* 80870E34 38 60 00 01 */ li r3, 1 -/* 80870E38 38 81 00 0C */ addi r4, r1, 0xc -/* 80870E3C 4B AE E5 41 */ bl GXSetTevColor -/* 80870E40 38 60 00 00 */ li r3, 0 -/* 80870E44 38 80 00 0F */ li r4, 0xf -/* 80870E48 38 A0 00 0F */ li r5, 0xf -/* 80870E4C 38 C0 00 0F */ li r6, 0xf -/* 80870E50 38 E0 00 02 */ li r7, 2 -/* 80870E54 4B AE E3 D1 */ bl GXSetTevColorIn -/* 80870E58 38 60 00 00 */ li r3, 0 -/* 80870E5C 38 80 00 00 */ li r4, 0 -/* 80870E60 38 A0 00 00 */ li r5, 0 -/* 80870E64 38 C0 00 00 */ li r6, 0 -/* 80870E68 38 E0 00 01 */ li r7, 1 -/* 80870E6C 39 00 00 00 */ li r8, 0 -/* 80870E70 4B AE E4 3D */ bl GXSetTevColorOp -/* 80870E74 38 60 00 00 */ li r3, 0 -/* 80870E78 38 80 00 07 */ li r4, 7 -/* 80870E7C 38 A0 00 07 */ li r5, 7 -/* 80870E80 38 C0 00 07 */ li r6, 7 -/* 80870E84 38 E0 00 01 */ li r7, 1 -/* 80870E88 4B AE E3 E1 */ bl GXSetTevAlphaIn -/* 80870E8C 38 60 00 00 */ li r3, 0 -/* 80870E90 38 80 00 00 */ li r4, 0 -/* 80870E94 38 A0 00 00 */ li r5, 0 -/* 80870E98 38 C0 00 00 */ li r6, 0 -/* 80870E9C 38 E0 00 01 */ li r7, 1 -/* 80870EA0 39 00 00 00 */ li r8, 0 -/* 80870EA4 4B AE E4 71 */ bl GXSetTevAlphaOp -/* 80870EA8 38 60 00 01 */ li r3, 1 -/* 80870EAC 4B AE EE 25 */ bl GXSetZCompLoc -/* 80870EB0 38 60 00 01 */ li r3, 1 -/* 80870EB4 38 80 00 04 */ li r4, 4 -/* 80870EB8 38 A0 00 05 */ li r5, 5 -/* 80870EBC 38 C0 00 07 */ li r6, 7 -/* 80870EC0 4B AE ED 31 */ bl GXSetBlendMode -/* 80870EC4 38 60 00 04 */ li r3, 4 -/* 80870EC8 38 80 00 00 */ li r4, 0 -/* 80870ECC 38 A0 00 01 */ li r5, 1 -/* 80870ED0 38 C0 00 04 */ li r6, 4 -/* 80870ED4 38 E0 00 00 */ li r7, 0 -/* 80870ED8 4B AE E7 4D */ bl GXSetAlphaCompare -/* 80870EDC 3C 60 80 45 */ lis r3, g_clearColor@ha /* 0x80450600@ha */ -/* 80870EE0 80 03 06 00 */ lwz r0, g_clearColor@l(r3) /* 0x80450600@l */ -/* 80870EE4 90 01 00 08 */ stw r0, 8(r1) -/* 80870EE8 38 60 00 00 */ li r3, 0 -/* 80870EEC C0 3F 00 0C */ lfs f1, 0xc(r31) -/* 80870EF0 FC 40 08 90 */ fmr f2, f1 -/* 80870EF4 FC 60 08 90 */ fmr f3, f1 -/* 80870EF8 FC 80 08 90 */ fmr f4, f1 -/* 80870EFC 38 81 00 08 */ addi r4, r1, 8 -/* 80870F00 4B AE E9 B9 */ bl GXSetFog -/* 80870F04 38 60 00 00 */ li r3, 0 -/* 80870F08 38 80 00 00 */ li r4, 0 -/* 80870F0C 38 A0 00 00 */ li r5, 0 -/* 80870F10 4B AE EB BD */ bl GXSetFogRangeAdj -/* 80870F14 38 60 00 02 */ li r3, 2 -/* 80870F18 4B AE BA 6D */ bl GXSetCullMode -/* 80870F1C 38 60 00 00 */ li r3, 0 -/* 80870F20 4B AE E1 B5 */ bl GXSetNumIndStages -/* 80870F24 4B AE A6 69 */ bl GXClearVtxDesc -/* 80870F28 38 60 00 09 */ li r3, 9 -/* 80870F2C 38 80 00 01 */ li r4, 1 -/* 80870F30 4B AE 9F 89 */ bl GXSetVtxDesc -/* 80870F34 38 60 00 00 */ li r3, 0 -/* 80870F38 38 80 00 09 */ li r4, 9 -/* 80870F3C 38 A0 00 01 */ li r5, 1 -/* 80870F40 38 C0 00 04 */ li r6, 4 -/* 80870F44 38 E0 00 00 */ li r7, 0 -/* 80870F48 4B AE A6 7D */ bl GXSetVtxAttrFmt -/* 80870F4C 38 60 00 01 */ li r3, 1 -/* 80870F50 38 80 00 06 */ li r4, 6 -/* 80870F54 38 A0 00 01 */ li r5, 1 -/* 80870F58 4B AE ED 45 */ bl GXSetZMode -/* 80870F5C 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80870F60 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80870F64 38 80 00 00 */ li r4, 0 -/* 80870F68 4B AE F2 E5 */ bl GXLoadPosMtxImm -/* 80870F6C 38 60 00 00 */ li r3, 0 -/* 80870F70 4B AE F3 7D */ bl GXSetCurrentMtx -/* 80870F74 38 60 00 80 */ li r3, 0x80 -/* 80870F78 38 80 00 00 */ li r4, 0 -/* 80870F7C 38 A0 00 04 */ li r5, 4 -/* 80870F80 4B AE B7 E5 */ bl GXBegin -/* 80870F84 38 60 00 00 */ li r3, 0 -/* 80870F88 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 80870F8C 38 00 00 04 */ li r0, 4 -/* 80870F90 7C 09 03 A6 */ mtctr r0 -lbl_80870F94: -/* 80870F94 7C BD 1A 14 */ add r5, r29, r3 -/* 80870F98 C0 45 01 3C */ lfs f2, 0x13c(r5) -/* 80870F9C C0 25 01 38 */ lfs f1, 0x138(r5) -/* 80870FA0 C0 05 01 34 */ lfs f0, 0x134(r5) -/* 80870FA4 D0 04 80 00 */ stfs f0, 0x8000(r4) /* 0xCC008000@l */ -/* 80870FA8 D0 24 80 00 */ stfs f1, -0x8000(r4) -/* 80870FAC D0 44 80 00 */ stfs f2, -0x8000(r4) -/* 80870FB0 38 63 00 0C */ addi r3, r3, 0xc -/* 80870FB4 42 00 FF E0 */ bdnz lbl_80870F94 -/* 80870FB8 C0 3D 01 80 */ lfs f1, 0x180(r29) -/* 80870FBC C0 1F 00 0C */ lfs f0, 0xc(r31) -/* 80870FC0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870FC4 40 81 02 54 */ ble lbl_80871218 -/* 80870FC8 38 60 00 01 */ li r3, 1 -/* 80870FCC 38 80 00 07 */ li r4, 7 -/* 80870FD0 38 A0 00 01 */ li r5, 1 -/* 80870FD4 4B AE EC C9 */ bl GXSetZMode -/* 80870FD8 38 60 00 00 */ li r3, 0 -/* 80870FDC 4B AE EC 69 */ bl GXSetColorUpdate -/* 80870FE0 38 60 00 00 */ li r3, 0 -/* 80870FE4 4B AE EC 8D */ bl GXSetAlphaUpdate -/* 80870FE8 C0 7C 00 00 */ lfs f3, 0(r28) -/* 80870FEC C0 3C 00 04 */ lfs f1, 4(r28) -/* 80870FF0 38 61 00 10 */ addi r3, r1, 0x10 -/* 80870FF4 C0 1C 00 0C */ lfs f0, 0xc(r28) -/* 80870FF8 EC 41 00 2A */ fadds f2, f1, f0 -/* 80870FFC C0 1C 00 08 */ lfs f0, 8(r28) -/* 80871000 EC 83 00 2A */ fadds f4, f3, f0 -/* 80871004 C0 BF 00 0C */ lfs f5, 0xc(r31) -/* 80871008 C0 DF 00 10 */ lfs f6, 0x10(r31) -/* 8087100C 4B AD 5F ED */ bl C_MTXOrtho -/* 80871010 38 61 00 10 */ addi r3, r1, 0x10 -/* 80871014 38 80 00 01 */ li r4, 1 -/* 80871018 4B AE F0 BD */ bl GXSetProjection -/* 8087101C 3C 60 80 3A */ lis r3, g_mDoMtx_identity@ha /* 0x803A2FD8@ha */ -/* 80871020 38 63 2F D8 */ addi r3, r3, g_mDoMtx_identity@l /* 0x803A2FD8@l */ -/* 80871024 38 80 00 00 */ li r4, 0 -/* 80871028 4B AE F2 25 */ bl GXLoadPosMtxImm -/* 8087102C C0 1F 00 14 */ lfs f0, 0x14(r31) -/* 80871030 EF 9C 00 28 */ fsubs f28, f28, f0 -/* 80871034 EF BD 00 28 */ fsubs f29, f29, f0 -/* 80871038 EF DE 00 2A */ fadds f30, f30, f0 -/* 8087103C EF FF 00 2A */ fadds f31, f31, f0 -/* 80871040 38 60 00 80 */ li r3, 0x80 -/* 80871044 38 80 00 00 */ li r4, 0 -/* 80871048 38 A0 00 04 */ li r5, 4 -/* 8087104C 4B AE B7 19 */ bl GXBegin -/* 80871050 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 80871054 D3 83 80 00 */ stfs f28, 0x8000(r3) /* 0xCC008000@l */ -/* 80871058 D3 A3 80 00 */ stfs f29, -0x8000(r3) -/* 8087105C C0 1F 00 18 */ lfs f0, 0x18(r31) -/* 80871060 D0 03 80 00 */ stfs f0, -0x8000(r3) -/* 80871064 D3 C3 80 00 */ stfs f30, -0x8000(r3) -/* 80871068 D3 A3 80 00 */ stfs f29, -0x8000(r3) -/* 8087106C C0 1F 00 18 */ lfs f0, 0x18(r31) -/* 80871070 D0 03 80 00 */ stfs f0, -0x8000(r3) -/* 80871074 D3 C3 80 00 */ stfs f30, -0x8000(r3) -/* 80871078 D3 E3 80 00 */ stfs f31, -0x8000(r3) -/* 8087107C C0 1F 00 18 */ lfs f0, 0x18(r31) -/* 80871080 D0 03 80 00 */ stfs f0, -0x8000(r3) -/* 80871084 D3 83 80 00 */ stfs f28, -0x8000(r3) -/* 80871088 D3 E3 80 00 */ stfs f31, -0x8000(r3) -/* 8087108C C0 1F 00 18 */ lfs f0, 0x18(r31) -/* 80871090 D0 03 80 00 */ stfs f0, -0x8000(r3) -/* 80871094 7F C3 F3 78 */ mr r3, r30 -/* 80871098 4B AE F0 E1 */ bl GXSetProjectionv -/* 8087109C 38 60 00 01 */ li r3, 1 -/* 808710A0 38 80 00 07 */ li r4, 7 -/* 808710A4 38 A0 00 01 */ li r5, 1 -/* 808710A8 4B AE EB F5 */ bl GXSetZMode -/* 808710AC 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 808710B0 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 808710B4 38 80 00 00 */ li r4, 0 -/* 808710B8 4B AE F1 95 */ bl GXLoadPosMtxImm -/* 808710BC 38 7D 00 10 */ addi r3, r29, 0x10 -/* 808710C0 4B AE D1 79 */ bl GXGetTexObjWidth -/* 808710C4 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 808710C8 41 82 01 0C */ beq lbl_808711D4 -/* 808710CC 38 7D 00 10 */ addi r3, r29, 0x10 -/* 808710D0 38 80 00 00 */ li r4, 0 -/* 808710D4 4B AE D3 41 */ bl GXLoadTexObj -/* 808710D8 38 60 00 00 */ li r3, 0 -/* 808710DC 38 80 00 01 */ li r4, 1 -/* 808710E0 38 A0 00 04 */ li r5, 4 -/* 808710E4 38 C0 00 3C */ li r6, 0x3c -/* 808710E8 38 E0 00 00 */ li r7, 0 -/* 808710EC 39 00 00 7D */ li r8, 0x7d -/* 808710F0 4B AE AA 8D */ bl GXSetTexCoordGen2 -/* 808710F4 38 60 00 00 */ li r3, 0 -/* 808710F8 38 80 00 00 */ li r4, 0 -/* 808710FC 38 A0 00 00 */ li r5, 0 -/* 80871100 38 C0 00 FF */ li r6, 0xff -/* 80871104 4B AE E5 F1 */ bl GXSetTevOrder -/* 80871108 38 60 00 00 */ li r3, 0 -/* 8087110C 38 80 00 07 */ li r4, 7 -/* 80871110 38 A0 00 07 */ li r5, 7 -/* 80871114 38 C0 00 07 */ li r6, 7 -/* 80871118 38 E0 00 04 */ li r7, 4 -/* 8087111C 4B AE E1 4D */ bl GXSetTevAlphaIn -/* 80871120 38 60 00 00 */ li r3, 0 -/* 80871124 38 80 00 00 */ li r4, 0 -/* 80871128 38 A0 00 00 */ li r5, 0 -/* 8087112C 38 C0 00 00 */ li r6, 0 -/* 80871130 38 E0 00 01 */ li r7, 1 -/* 80871134 39 00 00 00 */ li r8, 0 -/* 80871138 4B AE E1 DD */ bl GXSetTevAlphaOp -/* 8087113C 38 60 00 00 */ li r3, 0 -/* 80871140 4B AE C9 F1 */ bl GXSetNumChans -/* 80871144 38 60 00 01 */ li r3, 1 -/* 80871148 4B AE AC B5 */ bl GXSetNumTexGens -/* 8087114C 38 60 00 00 */ li r3, 0 -/* 80871150 4B AE EB 81 */ bl GXSetZCompLoc -/* 80871154 38 60 00 0D */ li r3, 0xd -/* 80871158 38 80 00 01 */ li r4, 1 -/* 8087115C 4B AE 9D 5D */ bl GXSetVtxDesc -/* 80871160 38 60 00 00 */ li r3, 0 -/* 80871164 38 80 00 0D */ li r4, 0xd -/* 80871168 38 A0 00 01 */ li r5, 1 -/* 8087116C 38 C0 00 01 */ li r6, 1 -/* 80871170 38 E0 00 00 */ li r7, 0 -/* 80871174 4B AE A4 51 */ bl GXSetVtxAttrFmt -/* 80871178 38 60 00 80 */ li r3, 0x80 -/* 8087117C 38 80 00 00 */ li r4, 0 -/* 80871180 38 A0 00 04 */ li r5, 4 -/* 80871184 4B AE B5 E1 */ bl GXBegin -/* 80871188 38 BD 01 34 */ addi r5, r29, 0x134 -/* 8087118C 38 DF 00 04 */ addi r6, r31, 4 -/* 80871190 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 80871194 38 00 00 04 */ li r0, 4 -/* 80871198 7C 09 03 A6 */ mtctr r0 -lbl_8087119C: -/* 8087119C C0 45 00 08 */ lfs f2, 8(r5) -/* 808711A0 C0 25 00 04 */ lfs f1, 4(r5) -/* 808711A4 C0 05 00 00 */ lfs f0, 0(r5) -/* 808711A8 D0 03 80 00 */ stfs f0, 0x8000(r3) /* 0xCC008000@l */ -/* 808711AC D0 23 80 00 */ stfs f1, -0x8000(r3) -/* 808711B0 D0 43 80 00 */ stfs f2, -0x8000(r3) -/* 808711B4 88 86 00 01 */ lbz r4, 1(r6) -/* 808711B8 88 06 00 00 */ lbz r0, 0(r6) -/* 808711BC 98 03 80 00 */ stb r0, -0x8000(r3) -/* 808711C0 98 83 80 00 */ stb r4, -0x8000(r3) -/* 808711C4 38 A5 00 0C */ addi r5, r5, 0xc -/* 808711C8 38 C6 00 02 */ addi r6, r6, 2 -/* 808711CC 42 00 FF D0 */ bdnz lbl_8087119C -/* 808711D0 48 00 00 50 */ b lbl_80871220 -lbl_808711D4: -/* 808711D4 38 60 00 80 */ li r3, 0x80 -/* 808711D8 38 80 00 00 */ li r4, 0 -/* 808711DC 38 A0 00 04 */ li r5, 4 -/* 808711E0 4B AE B5 85 */ bl GXBegin -/* 808711E4 38 9D 01 34 */ addi r4, r29, 0x134 -/* 808711E8 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 808711EC 38 00 00 04 */ li r0, 4 -/* 808711F0 7C 09 03 A6 */ mtctr r0 -lbl_808711F4: -/* 808711F4 C0 44 00 08 */ lfs f2, 8(r4) -/* 808711F8 C0 24 00 04 */ lfs f1, 4(r4) -/* 808711FC C0 04 00 00 */ lfs f0, 0(r4) -/* 80871200 D0 03 80 00 */ stfs f0, 0x8000(r3) /* 0xCC008000@l */ -/* 80871204 D0 23 80 00 */ stfs f1, -0x8000(r3) -/* 80871208 D0 43 80 00 */ stfs f2, -0x8000(r3) -/* 8087120C 38 84 00 0C */ addi r4, r4, 0xc -/* 80871210 42 00 FF E4 */ bdnz lbl_808711F4 -/* 80871214 48 00 00 0C */ b lbl_80871220 -lbl_80871218: -/* 80871218 7F C3 F3 78 */ mr r3, r30 -/* 8087121C 4B AE EF 5D */ bl GXSetProjectionv -lbl_80871220: -/* 80871220 38 60 00 01 */ li r3, 1 -/* 80871224 4B AE EA 21 */ bl GXSetColorUpdate -/* 80871228 38 60 00 00 */ li r3, 0 -/* 8087122C 4B AE EA 45 */ bl GXSetAlphaUpdate -/* 80871230 E3 E1 00 98 */ psq_l f31, 152(r1), 0, 0 /* qr0 */ -/* 80871234 CB E1 00 90 */ lfd f31, 0x90(r1) -/* 80871238 E3 C1 00 88 */ psq_l f30, 136(r1), 0, 0 /* qr0 */ -/* 8087123C CB C1 00 80 */ lfd f30, 0x80(r1) -/* 80871240 E3 A1 00 78 */ psq_l f29, 120(r1), 0, 0 /* qr0 */ -/* 80871244 CB A1 00 70 */ lfd f29, 0x70(r1) -/* 80871248 E3 81 00 68 */ psq_l f28, 104(r1), 0, 0 /* qr0 */ -/* 8087124C CB 81 00 60 */ lfd f28, 0x60(r1) -/* 80871250 39 61 00 60 */ addi r11, r1, 0x60 -/* 80871254 4B AF 0F D1 */ bl _restgpr_28 -/* 80871258 80 01 00 A4 */ lwz r0, 0xa4(r1) -/* 8087125C 7C 08 03 A6 */ mtlr r0 -/* 80871260 38 21 00 A0 */ addi r1, r1, 0xa0 -/* 80871264 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/modelDraw__16dMirror_packet_cFP8J3DModelPA4_f.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/modelDraw__16dMirror_packet_cFP8J3DModelPA4_f.s deleted file mode 100644 index 34e5b343ef2..00000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/modelDraw__16dMirror_packet_cFP8J3DModelPA4_f.s +++ /dev/null @@ -1,136 +0,0 @@ -lbl_80871268: -/* 80871268 94 21 FF 90 */ stwu r1, -0x70(r1) -/* 8087126C 7C 08 02 A6 */ mflr r0 -/* 80871270 90 01 00 74 */ stw r0, 0x74(r1) -/* 80871274 39 61 00 70 */ addi r11, r1, 0x70 -/* 80871278 4B AF 0F 39 */ bl _savegpr_18 -/* 8087127C 7C 72 1B 78 */ mr r18, r3 -/* 80871280 7C 9B 23 78 */ mr r27, r4 -/* 80871284 7C BC 2B 78 */ mr r28, r5 -/* 80871288 C0 44 00 50 */ lfs f2, 0x50(r4) -/* 8087128C C0 24 00 40 */ lfs f1, 0x40(r4) -/* 80871290 C0 04 00 30 */ lfs f0, 0x30(r4) -/* 80871294 D0 01 00 28 */ stfs f0, 0x28(r1) -/* 80871298 D0 21 00 2C */ stfs f1, 0x2c(r1) -/* 8087129C D0 41 00 30 */ stfs f2, 0x30(r1) -/* 808712A0 7F 83 E3 78 */ mr r3, r28 -/* 808712A4 38 81 00 28 */ addi r4, r1, 0x28 -/* 808712A8 38 A1 00 1C */ addi r5, r1, 0x1c -/* 808712AC 4B AD 5A C1 */ bl PSMTXMultVec -/* 808712B0 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 808712B4 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 808712B8 38 81 00 28 */ addi r4, r1, 0x28 -/* 808712BC 38 A1 00 10 */ addi r5, r1, 0x10 -/* 808712C0 4B AD 5A AD */ bl PSMTXMultVec -/* 808712C4 C0 32 01 80 */ lfs f1, 0x180(r18) -/* 808712C8 3C 60 80 87 */ lis r3, lit_3945@ha /* 0x80872598@ha */ -/* 808712CC C0 03 25 98 */ lfs f0, lit_3945@l(r3) /* 0x80872598@l */ -/* 808712D0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 808712D4 40 81 00 14 */ ble lbl_808712E8 -/* 808712D8 C0 21 00 24 */ lfs f1, 0x24(r1) -/* 808712DC C0 01 00 18 */ lfs f0, 0x18(r1) -/* 808712E0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 808712E4 41 81 01 70 */ bgt lbl_80871454 -lbl_808712E8: -/* 808712E8 3C 60 80 87 */ lis r3, lit_3956@ha /* 0x808725A8@ha */ -/* 808712EC 80 03 25 A8 */ lwz r0, lit_3956@l(r3) /* 0x808725A8@l */ -/* 808712F0 90 01 00 0C */ stw r0, 0xc(r1) -/* 808712F4 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 808712F8 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 808712FC A8 03 11 08 */ lha r0, 0x1108(r3) -/* 80871300 98 01 00 0C */ stb r0, 0xc(r1) -/* 80871304 A8 03 11 0A */ lha r0, 0x110a(r3) -/* 80871308 98 01 00 0D */ stb r0, 0xd(r1) -/* 8087130C A8 03 11 0C */ lha r0, 0x110c(r3) -/* 80871310 98 01 00 0E */ stb r0, 0xe(r1) -/* 80871314 A8 03 11 0E */ lha r0, 0x110e(r3) -/* 80871318 98 01 00 0F */ stb r0, 0xf(r1) -/* 8087131C 83 FB 00 04 */ lwz r31, 4(r27) -/* 80871320 A3 5F 00 5C */ lhz r26, 0x5c(r31) -/* 80871324 3B A0 00 00 */ li r29, 0 -/* 80871328 3C 60 80 45 */ lis r3, sOldVcdVatCmd__8J3DShape@ha /* 0x804515D0@ha */ -/* 8087132C 3B 23 15 D0 */ addi r25, r3, sOldVcdVatCmd__8J3DShape@l /* 0x804515D0@l */ -/* 80871330 48 00 01 18 */ b lbl_80871448 -lbl_80871334: -/* 80871334 80 7B 00 C0 */ lwz r3, 0xc0(r27) -/* 80871338 57 A4 04 3E */ clrlwi r4, r29, 0x10 -/* 8087133C 57 A0 32 B2 */ rlwinm r0, r29, 6, 0xa, 0x19 -/* 80871340 7E A3 02 14 */ add r21, r3, r0 -/* 80871344 83 D5 00 2C */ lwz r30, 0x2c(r21) -/* 80871348 82 9E 00 28 */ lwz r20, 0x28(r30) -/* 8087134C 80 14 00 0C */ lwz r0, 0xc(r20) -/* 80871350 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80871354 40 82 00 E8 */ bne lbl_8087143C -/* 80871358 80 7F 00 60 */ lwz r3, 0x60(r31) -/* 8087135C 54 80 10 3A */ slwi r0, r4, 2 -/* 80871360 7E 63 00 2E */ lwzx r19, r3, r0 -/* 80871364 80 73 00 28 */ lwz r3, 0x28(r19) -/* 80871368 81 83 00 00 */ lwz r12, 0(r3) -/* 8087136C 81 8C 00 40 */ lwz r12, 0x40(r12) -/* 80871370 7D 89 03 A6 */ mtctr r12 -/* 80871374 4E 80 04 21 */ bctrl -/* 80871378 7C 76 1B 78 */ mr r22, r3 -/* 8087137C 80 73 00 24 */ lwz r3, 0x24(r19) -/* 80871380 81 83 00 00 */ lwz r12, 0(r3) -/* 80871384 81 8C 00 58 */ lwz r12, 0x58(r12) -/* 80871388 7D 89 03 A6 */ mtctr r12 -/* 8087138C 4E 80 04 21 */ bctrl -/* 80871390 7C 77 1B 78 */ mr r23, r3 -/* 80871394 80 73 00 2C */ lwz r3, 0x2c(r19) -/* 80871398 81 83 00 00 */ lwz r12, 0(r3) -/* 8087139C 81 8C 00 98 */ lwz r12, 0x98(r12) -/* 808713A0 7D 89 03 A6 */ mtctr r12 -/* 808713A4 4E 80 04 21 */ bctrl -/* 808713A8 7C 78 1B 78 */ mr r24, r3 -/* 808713AC 80 73 00 30 */ lwz r3, 0x30(r19) -/* 808713B0 81 83 00 00 */ lwz r12, 0(r3) -/* 808713B4 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 808713B8 7D 89 03 A6 */ mtctr r12 -/* 808713BC 4E 80 04 21 */ bctrl -/* 808713C0 7C 72 1B 78 */ mr r18, r3 -/* 808713C4 7E 63 9B 78 */ mr r3, r19 -/* 808713C8 81 93 00 00 */ lwz r12, 0(r19) -/* 808713CC 81 8C 00 18 */ lwz r12, 0x18(r12) -/* 808713D0 7D 89 03 A6 */ mtctr r12 -/* 808713D4 4E 80 04 21 */ bctrl -/* 808713D8 80 75 00 20 */ lwz r3, 0x20(r21) -/* 808713DC 4B AA 12 3D */ bl callDL__17J3DDisplayListObjCFv -/* 808713E0 7E 83 A3 78 */ mr r3, r20 -/* 808713E4 4B AA 3F 1D */ bl loadPreDrawSetting__8J3DShapeCFv -/* 808713E8 80 7E 00 20 */ lwz r3, 0x20(r30) -/* 808713EC 28 03 00 00 */ cmplwi r3, 0 -/* 808713F0 41 82 00 08 */ beq lbl_808713F8 -/* 808713F4 4B AA 12 25 */ bl callDL__17J3DDisplayListObjCFv -lbl_808713F8: -/* 808713F8 56 C3 06 3E */ clrlwi r3, r22, 0x18 -/* 808713FC 56 E4 06 3E */ clrlwi r4, r23, 0x18 -/* 80871400 57 05 06 3E */ clrlwi r5, r24, 0x18 -/* 80871404 7E 46 93 78 */ mr r6, r18 -/* 80871408 38 E0 00 01 */ li r7, 1 -/* 8087140C 4B A5 C9 BD */ bl GFSetGenMode2__FUcUcUcUc11_GXCullMode -/* 80871410 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80871414 90 01 00 08 */ stw r0, 8(r1) -/* 80871418 38 60 00 00 */ li r3, 0 -/* 8087141C 38 81 00 08 */ addi r4, r1, 8 -/* 80871420 4B A5 CA 35 */ bl GFSetChanAmbColor__F12_GXChannelID8_GXColor -/* 80871424 93 9E 00 30 */ stw r28, 0x30(r30) -/* 80871428 7F C3 F3 78 */ mr r3, r30 -/* 8087142C 4B AA 1B 91 */ bl drawFast__14J3DShapePacketFv -/* 80871430 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80871434 38 03 4A C8 */ addi r0, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80871438 90 1E 00 30 */ stw r0, 0x30(r30) -lbl_8087143C: -/* 8087143C 38 00 00 00 */ li r0, 0 -/* 80871440 90 19 00 00 */ stw r0, 0(r25) -/* 80871444 3B BD 00 01 */ addi r29, r29, 1 -lbl_80871448: -/* 80871448 57 A0 04 3E */ clrlwi r0, r29, 0x10 -/* 8087144C 7C 00 D0 40 */ cmplw r0, r26 -/* 80871450 41 80 FE E4 */ blt lbl_80871334 -lbl_80871454: -/* 80871454 39 61 00 70 */ addi r11, r1, 0x70 -/* 80871458 4B AF 0D A5 */ bl _restgpr_18 -/* 8087145C 80 01 00 74 */ lwz r0, 0x74(r1) -/* 80871460 7C 08 03 A6 */ mtlr r0 -/* 80871464 38 21 00 70 */ addi r1, r1, 0x70 -/* 80871468 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DU/J3DUClipper.h b/include/JSystem/J3DU/J3DUClipper.h index e5df65b1925..119490e4725 100644 --- a/include/JSystem/J3DU/J3DUClipper.h +++ b/include/JSystem/J3DU/J3DUClipper.h @@ -10,8 +10,8 @@ public: virtual ~J3DUClipper() {} /* 80273778 */ void init(); /* 8027378C */ void calcViewFrustum(); - /* 802738FC */ u32 clip(f32 const (*)[4], Vec, f32) const; - /* 80273A44 */ u32 clip(f32 const (*)[4], Vec*, Vec*) const; + /* 802738FC */ int clip(f32 const (*)[4], Vec, f32) const; + /* 80273A44 */ int clip(f32 const (*)[4], Vec*, Vec*) const; void setFovy(f32 fovy) { mFovY = fovy; } void setAspect(f32 aspect) { mAspect = aspect; } diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 7e1104bbd7a..4a9d3cb5c00 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -102,6 +102,7 @@ public: u8 getGroupID() const { return mGroupID; } u8 getDrawTimes() const { return mDrawTimes; } void setRate(f32 rate) { mRate = rate; } + void setDirectionalSpeed(f32 i_speed) { mDirSpeed = i_speed; } void setEmitterCallBackPtr(JPAEmitterCallBack* ptr) { mpEmtrCallBack = ptr; } void setGlobalRTMatrix(const Mtx m) { JPASetRMtxTVecfromMtx(m, mGlobalRot, &mGlobalTrs); } void setGlobalTranslation(f32 x, f32 y, f32 z) { mGlobalTrs.set(x, y, z); } diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index 54d717a73d7..4a3e7ba4025 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -52,6 +52,13 @@ struct cXyz : Vec { y -= f; z -= f; } + + void operator*=(const Vec& other) { + x *= other.x; + y *= other.y; + z *= other.z; + } + void operator-=(const Vec& other) { VECSubtract(this, &other, this); } void operator+=(const Vec& other) { VECAdd(this, &other, this); } void operator*=(f32 scale) { VECScale(this, this, scale); } diff --git a/include/d/cc/d_cc_uty.h b/include/d/cc/d_cc_uty.h index 25c0f79a721..41a732de5a2 100644 --- a/include/d/cc/d_cc_uty.h +++ b/include/d/cc/d_cc_uty.h @@ -30,5 +30,6 @@ struct dCcU_AtInfo { }; fopAc_ac_c* cc_at_check(fopAc_ac_c*,dCcU_AtInfo*); +fopAc_ac_c* at_power_check(dCcU_AtInfo* i_AtInfo); #endif /* D_CC_D_CC_UTY_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 465b3accbc0..bf3401f9288 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -489,7 +489,7 @@ public: void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; } bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; } - s8 getPlayerCameraID(int i) { return mPlayerCameraID[i]; } + int getPlayerCameraID(int i) { return mPlayerCameraID[i]; } void setCameraParamFileName(int i, char* name) { mCameraInfo[i].mCameraParamFileName = name; } void setCamera(int i, camera_class* cam) { mCameraInfo[i].mCamera = cam; } const char* getCameraParamFileName(int i) { return mCameraInfo[i].mCameraParamFileName; } @@ -1982,7 +1982,7 @@ inline fopAc_ac_c* dComIfGp_getPlayer(int idx) { return g_dComIfG_gameInfo.play.getPlayer(idx); } -inline s8 i_dComIfGp_getPlayerCameraID(int idx) { +inline int i_dComIfGp_getPlayerCameraID(int idx) { return g_dComIfG_gameInfo.play.getPlayerCameraID(idx); } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 1f786ac2d08..1402429be29 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -160,6 +160,7 @@ enum fopAcM_CARRY { /* 0x10 */ fopAcM_CARRY_LIGHT = 16, // guess based on context /* 0x20 */ fopAcM_CARRY_ITEM = 32, /* 0x30 */ fopAcM_CARRY_UNK_30 = 0x30, + /* 0x80 */ fopAcM_CARRY_CHICKEN = 0x80, }; inline u32 fopAcM_CheckCarryType(fopAc_ac_c* actor, fopAcM_CARRY type) { diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 0a44f912675..8fda612d6ad 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -339,7 +339,7 @@ public: int, void*, u32, u32); /* 8000FD94 */ int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32); - /* 8001037C */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*); + /* 8001037C */ void setAnm(J3DAnmTransform* i_bck, int i_mode, f32 i_morf, f32 i_speed, f32 i_startF, f32 i_endF, void* i_bas); /* 800105C8 */ u32 play(Vec*, u32, s8); /* 80010680 */ void entryDL(); /* 800106AC */ void modelCalc(); diff --git a/include/m_Do/m_Do_lib.h b/include/m_Do/m_Do_lib.h index feb722be30e..8a30d5c78ee 100644 --- a/include/m_Do/m_Do_lib.h +++ b/include/m_Do/m_Do_lib.h @@ -16,7 +16,7 @@ struct mDoLib_clipper { mClipper.calcViewFrustum(); } - static u32 clip(const Mtx m, const Vec* param_1, const Vec* param_2) { + static int clip(const Mtx m, const Vec* param_1, const Vec* param_2) { return mClipper.clip(m, (Vec*)param_1, (Vec*)param_2); } diff --git a/include/rel/d/a/d_a_mirror/d_a_mirror.h b/include/rel/d/a/d_a_mirror/d_a_mirror.h index 900bc42ba2e..108064c8189 100644 --- a/include/rel/d/a/d_a_mirror/d_a_mirror.h +++ b/include/rel/d/a/d_a_mirror/d_a_mirror.h @@ -3,7 +3,8 @@ #include "f_op/f_op_actor_mng.h" -struct dMirror_packet_c : public J3DPacket { +class dMirror_packet_c : public J3DPacket { +public: /* 80870BD8 */ dMirror_packet_c(); /* 80870C94 */ void reset(); /* 80870CA0 */ void calcMinMax(); @@ -17,36 +18,39 @@ struct dMirror_packet_c : public J3DPacket { GXTexObj& getTexObj() { return mTexObj; } cXyz* getQuad() { return mQuad; } - /* 0x10 */ GXTexObj mTexObj; - /* 0x30 */ u8 mModelCount; - /* 0x31 */ u8 field_0x31[3]; - /* 0x34 */ J3DModel* mModels[0x40]; + /* 0x010 */ GXTexObj mTexObj; + /* 0x030 */ u8 mModelCount; + /* 0x034 */ J3DModel* mModels[0x40]; /* 0x134 */ cXyz mQuad[4]; /* 0x164 */ cXyz mMinVal; /* 0x170 */ cXyz mMaxVal; - /* 0x17c */ cXyz mViewScale; + /* 0x17C */ cXyz mViewScale; }; -struct daMirror_c : public fopAc_ac_c { +class daMirror_c : public fopAc_ac_c, public request_of_phase_process_class { +public: /* 80871E24 */ daMirror_c(); - /* 80871F08 */ bool createHeap(); + /* 80871F08 */ BOOL createHeap(); /* 80871F78 */ void setModelMtx(); - /* 8087206C */ int create(); + /* 8087206C */ inline int create(); /* 808723E4 */ int execute(); /* 80872560 */ int entryModel(J3DModel*); /* 8003194C */ static int entry(J3DModel*); /* 80031990 */ static int remove(); + + inline int Delete(); + inline int draw(); + s32 getType() { return fopAcM_GetParamBit(this, 0, 8); } s32 getSw() { return fopAcM_GetParamBit(this, 8, 8); } - static u32 getMirrorRoomPrm() { return 0xff03; } + static u32 getMirrorRoomPrm() { return 0xFF03; } typedef int (daMirror_c::*entryModelFunc)(J3DModel*); static entryModelFunc m_entryModel; static daMirror_c* m_myObj; - /* 0x568 */ request_of_phase_process_class mPhase; /* 0x570 */ dMirror_packet_c mPacket; - /* 0x6f8 */ J3DModel* field_0x6f8; + /* 0x6f8 */ J3DModel* mpModel; }; diff --git a/include/rel/d/a/d_a_ni/d_a_ni.h b/include/rel/d/a/d_a_ni/d_a_ni.h index 3913eb7a026..7ed39d41c7e 100644 --- a/include/rel/d/a/d_a_ni/d_a_ni.h +++ b/include/rel/d/a/d_a_ni/d_a_ni.h @@ -1,6 +1,6 @@ #ifndef D_A_NI_H #define D_A_NI_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" #endif /* D_A_NI_H */ diff --git a/libs/JSystem/J3DU/J3DUClipper.cpp b/libs/JSystem/J3DU/J3DUClipper.cpp index 95edb61a2cd..c215769d02b 100644 --- a/libs/JSystem/J3DU/J3DUClipper.cpp +++ b/libs/JSystem/J3DU/J3DUClipper.cpp @@ -47,7 +47,7 @@ void J3DUClipper::calcViewFrustum() { } /* 802738FC-80273A44 26E23C 0148+00 0/0 3/3 2/2 .text clip__11J3DUClipperCFPA4_Cf3Vecf */ -u32 J3DUClipper::clip(f32 const (*param_0)[4], Vec param_1, f32 param_2) const { +int J3DUClipper::clip(f32 const (*param_0)[4], Vec param_1, f32 param_2) const { Vec vec1; MTXMultVec(param_0, ¶m_1, &vec1); if (-vec1.z < mNear - param_2) { @@ -80,7 +80,7 @@ u32 J3DUClipper::clip(f32 const (*param_0)[4], Vec param_1, f32 param_2) const { /* ############################################################################################## */ /* 80273A44-80273E08 26E384 03C4+00 0/0 3/3 2/2 .text clip__11J3DUClipperCFPA4_CfP3VecP3Vec */ -u32 J3DUClipper::clip(f32 const (*param_1)[4], Vec* param_2, Vec* param_3) const { +int J3DUClipper::clip(f32 const (*param_1)[4], Vec* param_2, Vec* param_3) const { s32 local_98[6]; for (int i = 0; i < 6; i++) { local_98[i] = 0; diff --git a/libs/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h b/libs/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h index ca4310d273b..2beaeba9fdd 100644 --- a/libs/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h +++ b/libs/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h @@ -81,6 +81,7 @@ inline float atan2f(float y, float x) { inline float i_sinf(float x) { return sin(x); } inline float i_cosf(float x) { return cos(x); } +inline float i_tanf(float x) { return tan(x); } #ifdef __cplusplus }; diff --git a/rel/d/a/d_a_mirror/d_a_mirror.cpp b/rel/d/a/d_a_mirror/d_a_mirror.cpp index d578948609e..2659cf95398 100644 --- a/rel/d/a/d_a_mirror/d_a_mirror.cpp +++ b/rel/d/a/d_a_mirror/d_a_mirror.cpp @@ -1,157 +1,35 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_mirror -// +/** + * d_a_mirror.cpp + * Mirror of Twilight + */ #include "rel/d/a/d_a_mirror/d_a_mirror.h" -#include "dol2asm.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "d/a/d_a_player.h" #include "d/com/d_com_inf_game.h" #include "d/d_procname.h" -#include "d/a/d_a_player.h" -#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" -#include "JSystem/JKernel/JKRHeap.h" -#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "dolphin/gf/GFGeometry.h" +#include "dolphin/gf/GFLight.h" #include "m_Do/m_Do_lib.h" -// -// Types: -// - -// -// Forward References: -// - -extern "C" static void daMirror_c_createHeap__FP10fopAc_ac_c(); -extern "C" void __ct__16dMirror_packet_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void reset__16dMirror_packet_cFv(); -extern "C" void calcMinMax__16dMirror_packet_cFv(); -extern "C" void entryModel__16dMirror_packet_cFP8J3DModel(); -extern "C" void mirrorZdraw__16dMirror_packet_cFPfPfffffff(); -extern "C" void modelDraw__16dMirror_packet_cFP8J3DModelPA4_f(); -extern "C" void mainDraw__16dMirror_packet_cFv(); -extern "C" void draw__16dMirror_packet_cFv(); -extern "C" void __ct__10daMirror_cFv(); -extern "C" void __dt__16dMirror_packet_cFv(); -extern "C" void createHeap__10daMirror_cFv(); -extern "C" void setModelMtx__10daMirror_cFv(); -extern "C" static void daMirror_create__FP10daMirror_c(); -extern "C" void create__10daMirror_cFv(); -extern "C" static void daMirror_Delete__FP10daMirror_c(); -extern "C" static void daMirror_execute__FP10daMirror_c(); -extern "C" void execute__10daMirror_cFv(); -extern "C" static void daMirror_draw__FP10daMirror_c(); -extern "C" void entryModel__10daMirror_cFP8J3DModel(); -extern "C" extern char const* const d_a_mirror__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs(); -extern "C" void scaleS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void setLookPos__9daPy_py_cFP4cXyz(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void outprod__4cXyzCFRC3Vec(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void calcViewFrustum__11J3DUClipperFv(); -extern "C" void clip__11J3DUClipperCFPA4_CfP3VecP3Vec(); -extern "C" void GFSetGenMode2__FUcUcUcUc11_GXCullMode(); -extern "C" void GFSetChanAmbColor__F12_GXChannelID8_GXColor(); -extern "C" void __dl__FPv(); -extern "C" void reinitGX__6J3DSysFv(); -extern "C" void callDL__17J3DDisplayListObjCFv(); -extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); -extern "C" void drawFast__14J3DShapePacketFv(); -extern "C" void loadPreDrawSetting__8J3DShapeCFv(); -extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); - -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_18(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_18(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__9J3DPacket[5]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mClipper__14mDoLib_clipper[92]; -extern "C" u8 m_entryModel__10daMirror_c[12]; -extern "C" f32 mSystemFar__14mDoLib_clipper; -extern "C" u8 m_myObj__10daMirror_c[4]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; - -// -// Declarations: -// - /* 80870BB8-80870BD8 000078 0020+00 1/1 0/0 0/0 .text daMirror_c_createHeap__FP10fopAc_ac_c */ -static bool daMirror_c_createHeap(fopAc_ac_c* param_0) { - return ((daMirror_c*)param_0)->createHeap(); +static BOOL daMirror_c_createHeap(fopAc_ac_c* i_this) { + return ((daMirror_c*)i_this)->createHeap(); } -/* ############################################################################################## */ /* 80872660-80872664 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ static char* l_arcName = "Mirror"; /* 80872664-80872668 -00001 0004+00 2/2 0/0 0/0 .data l_arcName2 */ static char* l_arcName2 = "MR-Table"; -/* 808726C4-808726D8 000064 0014+00 2/2 0/0 0/0 .data __vt__16dMirror_packet_c */ -SECTION_DATA extern void* __vt__16dMirror_packet_c[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__16dMirror_packet_cFv, - (void*)__dt__16dMirror_packet_cFv, -}; - /* 80870BD8-80870C54 000098 007C+00 1/1 0/0 0/0 .text __ct__16dMirror_packet_cFv */ dMirror_packet_c::dMirror_packet_c() { reset(); } - -/* 80870C54-80870C90 000114 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -//asm cXyz::~cXyz() { -asm void __dt__4cXyzFv() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__4cXyzFv.s" -} -#pragma pop - -/* 80870C90-80870C94 000150 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -//cXyz::cXyz() { -void __ct__4cXyzFv() { - /* empty function */ -} - /* 80870C94-80870CA0 000154 000C+00 2/2 0/0 0/0 .text reset__16dMirror_packet_cFv */ void dMirror_packet_c::reset() { mModelCount = 0; @@ -161,34 +39,35 @@ void dMirror_packet_c::reset() { void dMirror_packet_c::calcMinMax() { mMinVal.set(FLT_MAX, FLT_MAX, FLT_MAX); mMaxVal.set(-FLT_MAX, -FLT_MAX, -FLT_MAX); - cXyz* ptr = mQuad; - for (int i = 0; i < 4; i++, ptr++) { - f32 val = ptr->x; + + cXyz* quad = mQuad; + for (int i = 0; i < 4; i++, quad++) { + f32 val = quad->x; if (val < mMinVal.x) { mMinVal.x = val; } - val = ptr->x; + val = quad->x; if (val > mMaxVal.x) { mMaxVal.x = val; } - val = ptr->y; + val = quad->y; if (val < mMinVal.y) { mMinVal.y = val; } - val = ptr->y; + val = quad->y; if (val > mMaxVal.y) { mMaxVal.y = val; } - val = ptr->z; + val = quad->z; if (val < mMinVal.z) { mMinVal.z = val; } - val = ptr->z; + val = quad->z; if (val > mMaxVal.z) { mMaxVal.z = val; } @@ -196,81 +75,31 @@ void dMirror_packet_c::calcMinMax() { } /* 80870D58-80870D88 000218 0030+00 1/1 0/0 0/0 .text entryModel__16dMirror_packet_cFP8J3DModel */ -int dMirror_packet_c::entryModel(J3DModel* param_0) { +int dMirror_packet_c::entryModel(J3DModel* i_model) { if (mModelCount >= 0x40) { return 0; } - mModels[mModelCount++] = param_0; + mModels[mModelCount++] = i_model; return 1; } -/* ############################################################################################## */ -/* 8087258C-80872590 000000 0004+00 3/3 0/0 0/0 .rodata @3884 */ -SECTION_RODATA static u32 const lit_3884 = 0x000000FF; -COMPILER_STRIP_GATE(0x8087258C, &lit_3884); - -/* 80872590-80872598 000004 0008+00 0/1 0/0 0/0 .rodata l_texCoord$3899 */ -#pragma push -#pragma force_active on -SECTION_RODATA static s8 const l_texCoord[4][2] = { - {0x00, 0x00}, {0x01, 0x00}, {0x01, 0x01}, {0x00, 0x01}, -}; -COMPILER_STRIP_GATE(0x80872590, &l_texCoord); -#pragma pop - -/* 80872598-8087259C 00000C 0004+00 2/4 0/0 0/0 .rodata @3945 */ -SECTION_RODATA static u8 const lit_3945[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80872598, &lit_3945); - -/* 8087259C-808725A0 000010 0004+00 0/1 0/0 0/0 .rodata @3946 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3946 = 100.0f; -COMPILER_STRIP_GATE(0x8087259C, &lit_3946); -#pragma pop - -/* 808725A0-808725A4 000014 0004+00 0/3 0/0 0/0 .rodata @3947 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3947 = 1.0f; -COMPILER_STRIP_GATE(0x808725A0, &lit_3947); -#pragma pop - -/* 808725A4-808725A8 000018 0004+00 0/1 0/0 0/0 .rodata @3948 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3948 = -100.0f; -COMPILER_STRIP_GATE(0x808725A4, &lit_3948); -#pragma pop - -inline static void damirror_GXEnd() { - GXEnd(); -} - /* 80870D88-80871268 000248 04E0+00 1/1 0/0 0/0 .text mirrorZdraw__16dMirror_packet_cFPfPfffffff */ -// Matches with literals (Maybe l_texCoord should be inside) -#ifdef NONMATCHING void dMirror_packet_c::mirrorZdraw(f32* param_0, f32* param_1, f32 param_2, f32 param_3, - f32 param_4, f32 param_5, f32 param_6, f32 param_7) { + f32 param_4, f32 param_5, f32 param_6, f32 param_7) { GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, 0, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXColor color = {0xff,0,0,0}; + GXColor color = {0, 0, 0, 0xFF}; GXSetTevColor(GX_TEVREG0, color); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); - GXSetZCompLoc(1); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetZCompLoc(GX_TRUE); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_OR); GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); @@ -280,22 +109,23 @@ void dMirror_packet_c::mirrorZdraw(f32* param_0, f32* param_1, f32 param_2, f32 GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXSetZMode(1, GX_GEQUAL, 1); + GXSetZMode(GX_ENABLE, GX_GEQUAL, GX_ENABLE); GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); GXSetCurrentMtx(0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); for (int i = 0; i < 4; i++) { GXPosition3f32(mQuad[i].x, mQuad[i].y, mQuad[i].z); } - damirror_GXEnd(); - + GXEnd(); + if (mViewScale.y > 0.0f) { - GXSetZMode(1, GX_ALWAYS, 1); - GXSetColorUpdate(0); - GXSetAlphaUpdate(0); + GXSetZMode(GX_ENABLE, GX_ALWAYS, GX_ENABLE); + GXSetColorUpdate(GX_DISABLE); + GXSetAlphaUpdate(GX_DISABLE); Mtx44 mtx; - C_MTXOrtho(mtx, param_1[1], param_1[1] + param_1[3], param_1[0], - param_1[0] + param_1[2], 0, 100.0f); + C_MTXOrtho(mtx, param_1[1], param_1[1] + param_1[3], param_1[0], param_1[0] + param_1[2], 0, + 100.0f); GXSetProjection(mtx, GX_ORTHOGRAPHIC); GXLoadPosMtxImm(mDoMtx_getIdentity(), 0); @@ -303,112 +133,111 @@ void dMirror_packet_c::mirrorZdraw(f32* param_0, f32* param_1, f32 param_2, f32 param_4 -= 1.0f; param_5 += 1.0f; param_6 += 1.0f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(param_3, param_4, -100.0f); GXPosition3f32(param_5, param_4, -100.0f); GXPosition3f32(param_5, param_6, -100.0f); GXPosition3f32(param_3, param_6, -100.0f); - damirror_GXEnd(); + GXEnd(); + GXSetProjectionv(param_0); GXSetZMode(1, GX_ALWAYS, 1); GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); + if (GXGetTexObjWidth(&mTexObj)) { GXLoadTexObj(&mTexObj, GX_TEXMAP0); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, + GX_TEVPREV); GXSetNumChans(0); GXSetNumTexGens(1); - GXSetZCompLoc(0); + GXSetZCompLoc(GX_FALSE); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_S8, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - cXyz* ptr = mQuad; - s8* texPtr = (s8*)l_texCoord; - for (int i = 0; i < 4; ptr++, texPtr += 2, i++) { - GXPosition3f32(ptr->x, ptr->y, ptr->z); + + static s8 const l_texCoord[4][2] = { + {0x00, 0x00}, + {0x01, 0x00}, + {0x01, 0x01}, + {0x00, 0x01}, + }; + + cXyz* quad = mQuad; + const s8* texPtr = &l_texCoord[0][0]; + for (int i = 0; i < 4; quad++, texPtr += 2, i++) { + GXPosition3f32(quad->x, quad->y, quad->z); GXTexCoord2s8(texPtr[0], texPtr[1]); } } else { GXBegin(GX_QUADS, GX_VTXFMT0, 4); - cXyz* ptr = mQuad; - for (int i = 0; i < 4; ptr++, i++) { - GXPosition3f32(ptr->x, ptr->y, ptr->z); + cXyz* quad = mQuad; + for (int i = 0; i < 4; quad++, i++) { + GXPosition3f32(quad->x, quad->y, quad->z); } } - damirror_GXEnd(); + + GXEnd(); } else { GXSetProjectionv(param_0); } - GXSetColorUpdate(1); - GXSetAlphaUpdate(0); + GXSetColorUpdate(GX_ENABLE); + GXSetAlphaUpdate(GX_DISABLE); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::mirrorZdraw(f32* param_0, f32* param_1, f32 param_2, f32 param_3, - f32 param_4, f32 param_5, f32 param_6, f32 param_7) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/mirrorZdraw__16dMirror_packet_cFPfPfffffff.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 808725A8-808725AC 00001C 0004+00 1/1 0/0 0/0 .rodata @3956 */ -SECTION_RODATA static u8 const lit_3956[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x808725A8, &lit_3956); /* 80871268-8087146C 000728 0204+00 1/1 0/0 0/0 .text * modelDraw__16dMirror_packet_cFP8J3DModelPA4_f */ -// Matches with literals -#ifdef NONMATCHING -void dMirror_packet_c::modelDraw(J3DModel* param_0, f32 (*param_1)[4]) { - Mtx& baseMtx = param_0->getBaseTRMtx(); - cXyz acStack_3c(baseMtx[0][3], baseMtx[1][3], baseMtx[2][3]); - cXyz cStack_48; - cMtx_multVec(param_1, &acStack_3c, &cStack_48); - cXyz cStack_54; - cMtx_multVec(j3dSys.getViewMtx(), &acStack_3c, &cStack_54); +void dMirror_packet_c::modelDraw(J3DModel* i_model, Mtx param_1) { + Mtx& model_mtx = i_model->getBaseTRMtx(); + cXyz sp28(model_mtx[0][3], model_mtx[1][3], model_mtx[2][3]); - if (mViewScale.y > 0.0f && cStack_48.z > cStack_54.z) { + cXyz sp1C; + cMtx_multVec(param_1, &sp28, &sp1C); + + cXyz sp10; + cMtx_multVec(j3dSys.getViewMtx(), &sp28, &sp10); + + if (mViewScale.y > 0.0f && sp1C.z > sp10.z) { return; } - + + dScnKy_env_light_c* kankyo = i_dKy_getEnvlight(); + JUT_ASSERT(kankyo != 0); + GXColor color = {0}; - color.r = i_dKy_getEnvlight()->mTerrainAmbienceBG0.r; - color.g = i_dKy_getEnvlight()->mTerrainAmbienceBG0.g; - color.b = i_dKy_getEnvlight()->mTerrainAmbienceBG0.b; - color.a = i_dKy_getEnvlight()->mTerrainAmbienceBG0.a; - J3DModelData* modelData = param_0->getModelData(); + color.r = kankyo->mTerrainAmbienceBG[0].r; + color.g = kankyo->mTerrainAmbienceBG[0].g; + color.b = kankyo->mTerrainAmbienceBG[0].b; + color.a = kankyo->mTerrainAmbienceBG[0].a; + + J3DModelData* modelData = i_model->getModelData(); u16 materialNum = modelData->getMaterialNum(); for (u16 i = 0; i < materialNum; i++) { - J3DMatPacket* matPacket = param_0->getMatPacket(i); + J3DMatPacket* matPacket = i_model->getMatPacket(i); J3DShapePacket* shapePacket = matPacket->getShapePacket(); J3DShape* shape = shapePacket->getShape(); + if (!shape->checkFlag(1)) { J3DMaterial* material = modelData->getMaterialNodePointer(i); u32 texGenNum = material->getTexGenBlock()->getTexGenNum(); u8 colorChanNum = material->getColorBlock()->getColorChanNum(); u8 tevStageNum = material->getTevBlock()->getTevStageNum(); u8 indTexStageNum = material->getIndBlock()->getIndTexStageNum(); + material->load(); matPacket->callDL(); shape->loadPreDrawSetting(); if (shapePacket->getDisplayListObj() != NULL) { shapePacket->getDisplayListObj()->callDL(); } - GFSetGenMode2(texGenNum, (_GXChannelID)colorChanNum, (_GXTevStageID)tevStageNum, indTexStageNum, GX_CULL_FRONT); - GXColor ambColor = *(GXColor*)&color; - GFSetChanAmbColor(GX_COLOR0, ambColor); + + GFSetGenMode2(texGenNum, (GXChannelID)colorChanNum, (GXTevStageID)tevStageNum, + indTexStageNum, GX_CULL_FRONT); + GFSetChanAmbColor(GX_COLOR0, color); shapePacket->setBaseMtxPtr((Mtx*)param_1); shapePacket->drawFast(); shapePacket->setBaseMtxPtr((Mtx*)j3dSys.getViewMtx()); @@ -416,111 +245,207 @@ void dMirror_packet_c::modelDraw(J3DModel* param_0, f32 (*param_1)[4]) { shape->resetVcdVatCache(); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::modelDraw(J3DModel* param_0, f32 (*param_1)[4]) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/modelDraw__16dMirror_packet_cFP8J3DModelPA4_f.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 808725AC-808725B0 000020 0004+00 0/1 0/0 0/0 .rodata @4345 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4345 = 0x3C8EFA35; -COMPILER_STRIP_GATE(0x808725AC, &lit_4345); -#pragma pop - -/* 808725B0-808725B4 000024 0004+00 0/1 0/0 0/0 .rodata @4346 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4346 = 0.5f; -COMPILER_STRIP_GATE(0x808725B0, &lit_4346); -#pragma pop - -/* 808725B4-808725B8 000028 0004+00 0/1 0/0 0/0 .rodata @4347 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4347 = 2.0f; -COMPILER_STRIP_GATE(0x808725B4, &lit_4347); -#pragma pop - -/* 808725B8-808725BC 00002C 0004+00 0/1 0/0 0/0 .rodata @4348 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4348 = 304.0f; -COMPILER_STRIP_GATE(0x808725B8, &lit_4348); -#pragma pop - -/* 808725BC-808725C0 000030 0004+00 0/1 0/0 0/0 .rodata @4349 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4349 = 608.0f; -COMPILER_STRIP_GATE(0x808725BC, &lit_4349); -#pragma pop - -/* 808725C0-808725C4 000034 0004+00 0/1 0/0 0/0 .rodata @4350 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4350 = 224.0f; -COMPILER_STRIP_GATE(0x808725C0, &lit_4350); -#pragma pop - -/* 808725C4-808725C8 000038 0004+00 0/1 0/0 0/0 .rodata @4351 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4351 = 448.0f; -COMPILER_STRIP_GATE(0x808725C4, &lit_4351); -#pragma pop - -/* 808725C8-808725CC 00003C 0004+00 0/1 0/0 0/0 .rodata @4352 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4352 = 8.0f; -COMPILER_STRIP_GATE(0x808725C8, &lit_4352); -#pragma pop - -/* 808725CC-808725D4 000040 0004+04 0/2 0/0 0/0 .rodata @4353 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4353[1 + 1 /* padding */] = { - -1.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x808725CC, &lit_4353); -#pragma pop - -/* 808725D4-808725DC 000048 0008+00 0/1 0/0 0/0 .rodata @4355 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4355[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808725D4, &lit_4355); -#pragma pop /* 8087146C-80871D84 00092C 0918+00 1/1 0/0 0/1 .text mainDraw__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::mainDraw() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/mainDraw__16dMirror_packet_cFv.s" +void dMirror_packet_c::mainDraw() { + j3dSys.reinitGX(); + + cXyz sp19C[5]; + + Mtx sp16C; + + f32 sp150[7]; + GXGetProjectionv(sp150); + + f32 sp138[6]; + GXGetViewportv(sp138); + + u32 scissor[4]; + GXGetScissor(&scissor[0], &scissor[1], &scissor[2], &scissor[3]); + + f32 var_f31 = FLT_MAX; + f32 var_f30 = FLT_MAX; + f32 temp_f0 = -FLT_MAX; + f32 var_f29 = temp_f0; + f32 var_f28 = temp_f0; + f32 var_f27 = temp_f0; + + f32 temp_f26 = scissor[0]; + f32 temp_f25 = temp_f26 + scissor[2]; + f32 temp_f24 = scissor[1]; + f32 temp_f23 = temp_f24 + scissor[3]; + + int prjPosNum = 4; + + view_class* view = dComIfGd_getView(); + f32 temp_f22 = -view->mNear; + cXyz* var_r21 = mQuad; + cXyz* var_r22 = sp19C; + int var_r23 = 0; + int var_r28 = 0; + for (int i = 0; i < 4; i++) { + cMtx_multVec(view->mViewMtx, var_r21, var_r22); + if (var_r22->z >= temp_f22) { + var_r23++; + } else { + var_r28 = i; + } + + var_r21++; + var_r22++; + } + + if (var_r23 < 4) { + if (var_r23 != 0) { + int var_r27 = -1; + + for (int i = 0; i < 4; i++) { + int temp_r5 = (var_r28 + 1) % 4; + if (var_r27 < 0) { + if (sp19C[temp_r5].z >= temp_f22) { + var_r27 = temp_r5; + } + } else if (sp19C[temp_r5].z < temp_f22) { + int temp_r29 = (var_r27 + 3) % 4; + cXyz sp11C = sp19C[var_r27] - sp19C[temp_r29]; + f32 temp_f1 = sp11C.z; + temp_f1 = (temp_f22 - sp19C[temp_r29].z) / temp_f1; + sp11C *= temp_f1; + + JUT_ASSERT(0 <= prjPosNum && prjPosNum < (4 + 1)); + + sp19C[4] = sp19C[temp_r29] + sp11C; + + prjPosNum++; + + sp11C = sp19C[var_r28] - sp19C[temp_r5]; + sp11C *= (temp_f22 - sp19C[temp_r5].z) / sp11C.z; + sp19C[var_r28] = sp19C[temp_r5] + sp11C; + + for (int j = var_r27; j != var_r28; j = (j + 1) % 4) { + sp19C[j] = sp19C[var_r28]; + temp_r29++; + } + break; + } + + var_r28 = temp_r5; + } + } + + f32 aspect = view->mAspect; + f32 temp_f0_2 = i_tanf(MTXDegToRad(view->mFovy * 0.5f)); + view_port_class* view_port = dComIfGd_getViewport(); + + f32 var_f3; + f32 var_f4; + f32 var_f5; + f32 var_f6; + if (view_port->mXOrig != 0.0f) { + var_f3 = (((view_port->mXOrig * 2.0f) + view_port->mWidth) * 0.5f) - (608.0f / 2); + var_f5 = 608.0f; + } else { + var_f3 = view_port->mXOrig; + var_f5 = view_port->mWidth; + } + + if (view_port->mYOrig != 0.0f) { + var_f4 = (((view_port->mYOrig * 2.0f) + view_port->mHeight) * 0.5f) - (448.0f / 2); + var_f6 = 448.0f; + } else { + var_f4 = view_port->mYOrig; + var_f6 = view_port->mHeight; + } + + Vec* var_r3 = sp19C; + for (int i = 0; i < prjPosNum; i++) { + var_r3->y = (var_r3->y / (var_r3->z * temp_f0_2)); + var_r3->x = (var_r3->x / (aspect * (-var_r3->z * temp_f0_2))); + var_r3->x = (var_f3 + ((1.0f + var_r3->x) * (var_f5 * 0.5f))); + var_r3->y = (var_f4 + ((1.0f + var_r3->y) * (var_f6 * 0.5f))); + + var_r3->x = cLib_minMaxLimit(var_r3->x, temp_f26, temp_f25); + var_r3->y = cLib_minMaxLimit(var_r3->y, temp_f24, temp_f23); + + if (var_r3->x < var_f31) { + var_f31 = var_r3->x; + } + + if (var_r3->x > var_f29) { + var_f29 = var_r3->x; + } + + if (var_r3->y < var_f30) { + var_f30 = var_r3->y; + } + + if (var_r3->y > var_f28) { + var_f28 = var_r3->y; + } + + if (var_r3->z > var_f27) { + var_f27 = var_r3->z; + } + + var_r3++; + } + + if (fabsf(var_f29 - var_f31) < 8.0f || fabsf(var_f28 - var_f30) < 8.0f) { + return; + } + + GXSetScissor((u32)var_f31, (u32)var_f30, (u32)(var_f29 - var_f31), + (u32)(var_f28 - var_f30)); + + cXyz sp110 = mQuad[1] - mQuad[0]; + cXyz sp104 = mQuad[2] - mQuad[1]; + cXyz spF8 = sp110.outprod(sp104); + spF8.normalizeZP(); + + f32 temp_f7 = (spF8.x * mQuad[0].x) + (spF8.y * mQuad[0].y) + (spF8.z * mQuad[0].z); + f32 temp_f22_4 = + ((spF8.z * view->mLookat.mCenter.z) + + ((spF8.x * view->mLookat.mCenter.x) + (spF8.y * view->mLookat.mCenter.y))) - + temp_f7; + + cXyz spEC = + view->mLookat.mEye - + (spF8 * (2.0f * (((spF8.z * view->mLookat.mEye.z) + + ((spF8.x * view->mLookat.mEye.x) + (spF8.y * view->mLookat.mEye.y))) - + temp_f7))); + cXyz spE0 = view->mLookat.mCenter - (spF8 * (2.0f * temp_f22_4)); + + cXyz spD4(0.0f, 1.0f, 0.0f); + if (mViewScale.y > 0.0f) { + sp110 = spEC - view->mLookat.mEye; + sp104 = sp110.outprod(view->mLookat.mUp); + spD4 = sp110.outprod(sp104); + spD4.normalizeZP(); + spD4 *= cXyz(-1.0f, -1.0f, -1.0f); + } + + mDoMtx_lookAt(sp16C, &spEC, &spE0, &spD4, view->mBank); + mDoMtx_stack_c::scaleS(mViewScale); + mDoMtx_stack_c::concat(sp16C); + J3DShape::resetVcdVatCache(); + + for (int i = 0; i < mModelCount; i++) { + modelDraw(mModels[i], mDoMtx_stack_c::get()); + } + + j3dSys.reinitGX(); + GXSetScissor(scissor[0], scissor[1], scissor[2], scissor[3]); + mirrorZdraw(sp150, sp138, view->mFar, var_f31, var_f30, var_f29, var_f28, var_f27); + } } -#pragma pop /* 80871D84-80871E24 001244 00A0+00 1/0 0/0 0/0 .text draw__16dMirror_packet_cFv */ void dMirror_packet_c::draw() { mDoLib_clipper::changeFar(dComIfGd_getView()->mFar); - s32 clipRes = mDoLib_clipper::clip(j3dSys.getViewMtx(), &mMaxVal, &mMinVal); - if (clipRes == 0) { + if (!mDoLib_clipper::clip(j3dSys.getViewMtx(), &mMaxVal, &mMinVal)) { mainDraw(); } + mDoLib_clipper::resetFar(); reset(); } @@ -531,24 +456,28 @@ daMirror_c::daMirror_c() { } /* 80871E84-80871F08 001344 0084+00 1/0 0/0 0/0 .text __dt__16dMirror_packet_cFv */ -dMirror_packet_c::~dMirror_packet_c() { -} +dMirror_packet_c::~dMirror_packet_c() {} /* 80871F08-80871F78 0013C8 0070+00 1/1 0/0 0/0 .text createHeap__10daMirror_cFv */ -bool daMirror_c::createHeap() { +BOOL daMirror_c::createHeap() { J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); - field_0x6f8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); - return (field_0x6f8 != NULL); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return false; + } + + return true; } /* 80871F78-80872018 001438 00A0+00 1/1 0/0 0/0 .text setModelMtx__10daMirror_cFv */ void daMirror_c::setModelMtx() { - field_0x6f8->setBaseScale(scale); + mpModel->setBaseScale(scale); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::XrotM(shape_angle.x); mDoMtx_stack_c::ZrotM(0x2000); - field_0x6f8->i_setBaseTRMtx(mDoMtx_stack_c::get()); + mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get()); } /* 80872018-8087206C 0014D8 0054+00 1/0 0/0 0/0 .text daMirror_create__FP10daMirror_c */ @@ -557,219 +486,160 @@ static int daMirror_create(daMirror_c* i_this) { return i_this->daMirror_c::create(); } -/* ############################################################################################## */ -/* 808725DC-8087260C 000050 0030+00 0/0 0/0 0/0 .rodata @4406 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4406[48] = { - 0xC2, 0x91, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, - 0x43, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC2, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808725DC, &lit_4406); -#pragma pop - -/* 8087260C-8087263C 000080 0030+00 1/1 0/0 0/0 .rodata - * l_mirrorQuad$localstatic3$create__10daMirror_cFv */ -SECTION_RODATA static Vec const data_8087260C[4] = { - {-50.0f, 100.0f, 0.0f}, {50.0f, 100.0f, 0.0f}, - {50.0f, 0.0f, 0.0f}, {-50.0f, 0.0f, 0.0f}, -}; -COMPILER_STRIP_GATE(0x8087260C, &data_8087260C); - -/* 8087263C-80872648 0000B0 000C+00 1/1 0/0 0/0 .rodata - * l_mirrorLook$localstatic4$create__10daMirror_cFv */ -SECTION_RODATA static Vec const data_8087263C = { - 0.0f, 50.0f, 0.0f, -}; -COMPILER_STRIP_GATE(0x8087263C, &data_8087263C); - -/* 80872648-8087264C 0000BC 0004+00 0/1 0/0 0/0 .rodata @4544 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4544 = 10.0f; -COMPILER_STRIP_GATE(0x80872648, &lit_4544); -#pragma pop - /* 8087206C-80872344 00152C 02D8+00 2/2 0/0 0/0 .text create__10daMirror_cFv */ -// regalloc, static var load -#ifdef NONMATCHING int daMirror_c::create() { - if (getSw() != 0xff && !i_fopAcM_isSwitch(this, getSw())) { - return 4; + if (getSw() != 0xFF && !i_fopAcM_isSwitch(this, getSw())) { + return cPhs_COMPLEATE_e; } if (m_myObj != NULL) { - return 0; + return cPhs_INIT_e; } - s32 type = getType(); + int type = getType(); if (type == 2) { - request_of_phase_process_class* phase = (request_of_phase_process_class*)this; - if (this) { - phase = &mPhase; - } - int res = dComIfG_resLoad(phase, l_arcName); - switch (res) { + int phase_state = dComIfG_resLoad(this, l_arcName); + switch (phase_state) { default: - return res; + return phase_state; case cPhs_COMPLEATE_e: - if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)daMirror_c_createHeap, 0x1540)) { - return 5; + if (!fopAcM_entrySolidHeap(this, daMirror_c_createHeap, 0x1540)) { + return cPhs_ERROR_e; } break; } setModelMtx(); - void* uVar2 = dComIfG_getObjectRes(l_arcName, 7); - GXTexObj& texObj = mPacket.getTexObj(); - mDoLib_setResTimgObj((ResTIMG*)uVar2, &texObj, 0, NULL); + mDoLib_setResTimgObj((ResTIMG*)dComIfG_getObjectRes(l_arcName, 7), &mPacket.getTexObj(), 0, + NULL); Vec src[4] = { - {-72.5f, 145.0f, 0.0f}, {72.5f, 145.0f, 0.0f}, - {72.5f, 0.0f, 0.0f}, {-72.5f, 0.0f, 0.0f}, + {-72.5f, 145.0f, 0.0f}, + {72.5f, 145.0f, 0.0f}, + {72.5f, 0.0f, 0.0f}, + {-72.5f, 0.0f, 0.0f}, }; mDoMtx_stack_c::scaleS(scale); - mDoMtx_stack_c::revConcat(field_0x6f8->getBaseTRMtx()); + mDoMtx_stack_c::revConcat(mpModel->getBaseTRMtx()); cMtx_multVecArray(mDoMtx_stack_c::get(), src, mPacket.getQuad(), 4); mPacket.getViewScale().set(-1.0f, 1.0f, 1.0f); } else { if (type == 1) { scale *= 10.0f; - mPacket.getViewScale().set(1.0,-1.0,1.0); + mPacket.getViewScale().set(1.0, -1.0, 1.0); } else { if (type == 3) { - request_of_phase_process_class* phase = (request_of_phase_process_class*)this; - if (this) { - phase = &mPhase; - } - int res = dComIfG_resLoad(phase, l_arcName2); - switch (res) { + int phase_state = dComIfG_resLoad(this, l_arcName2); + switch (phase_state) { default: - return res; + return phase_state; case cPhs_COMPLEATE_e: - void* objRes = dComIfG_getObjectRes(l_arcName2, 0x25); - mDoLib_setResTimgObj((ResTIMG*)objRes, &mPacket.getTexObj(), 0, NULL); + mDoLib_setResTimgObj((ResTIMG*)dComIfG_getObjectRes(l_arcName2, 0x25), + &mPacket.getTexObj(), 0, NULL); break; } } + mPacket.getViewScale().set(-1.0f, 1.0f, 1.0f); } + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(shape_angle.y); mDoMtx_stack_c::XrotM(shape_angle.x); mDoMtx_stack_c::scaleM(scale.x, scale.y, scale.z); - static Vec const data_8087260Cb[4] = { - {-50.0f, 100.0f, 0.0f}, {50.0f, 100.0f, 0.0f}, - {50.0f, 0.0f, 0.0f}, {-50.0f, 0.0f, 0.0f}, + static Vec const l_mirrorQuad[4] = { + {-50.0f, 100.0f, 0.0f}, + {50.0f, 100.0f, 0.0f}, + {50.0f, 0.0f, 0.0f}, + {-50.0f, 0.0f, 0.0f}, }; - mDoMtx_stack_c::multVecArray(data_8087260Cb, - mPacket.getQuad(), 4); + mDoMtx_stack_c::multVecArray(l_mirrorQuad, mPacket.getQuad(), 4); } + m_myObj = this; mPacket.calcMinMax(); - static Vec const data_8087263C_a = { - 0.0f, 50.0f, 0.0f, - }; - mDoMtx_stack_c::multVec(&data_8087263C_a, &eyePos); - return 4; + static const Vec l_mirrorLook = {0.0f, 50.0f, 0.0f}; + mDoMtx_stack_c::multVec(&l_mirrorLook, &eyePos); + return cPhs_COMPLEATE_e; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daMirror_c::create() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/create__10daMirror_cFv.s" -} -#pragma pop -#endif -/* 80872344-808723C4 001804 0080+00 1/0 0/0 0/0 .text daMirror_Delete__FP10daMirror_c */ -static int daMirror_Delete(daMirror_c* param_0) { - s32 mirrorType = param_0->getType(); - if (mirrorType == 2) { - dComIfG_resDelete(param_0 ? ¶m_0->mPhase : (request_of_phase_process_class*)param_0, l_arcName); - } else if (mirrorType == 3) { - dComIfG_resDelete(param_0 ? ¶m_0->mPhase: (request_of_phase_process_class*)param_0, l_arcName2); +int daMirror_c::Delete() { + int type = getType(); + if (type == 2) { + dComIfG_resDelete(this, l_arcName); + } else if (type == 3) { + dComIfG_resDelete(this, l_arcName2); } - daMirror_c::m_myObj = NULL; + + m_myObj = NULL; return 1; } -/* 808723C4-808723E4 001884 0020+00 1/0 0/0 0/0 .text daMirror_execute__FP10daMirror_c */ -static int daMirror_execute(daMirror_c* param_0) { - return param_0->execute(); +/* 80872344-808723C4 001804 0080+00 1/0 0/0 0/0 .text daMirror_Delete__FP10daMirror_c */ +static int daMirror_Delete(daMirror_c* i_this) { + return i_this->Delete(); } -/* ############################################################################################## */ -/* 8087264C-80872650 0000C0 0004+00 1/1 0/0 0/0 .rodata @4574 */ -SECTION_RODATA static f32 const lit_4574 = 40000.0f; -COMPILER_STRIP_GATE(0x8087264C, &lit_4574); +/* 808723C4-808723E4 001884 0020+00 1/0 0/0 0/0 .text daMirror_execute__FP10daMirror_c */ +static int daMirror_execute(daMirror_c* i_this) { + return i_this->execute(); +} /* 808723E4-808724C0 0018A4 00DC+00 1/1 0/0 0/0 .text execute__10daMirror_cFv */ -// Matches with literals -#ifdef NONMATCHING int daMirror_c::execute() { if (this != m_myObj) { if (m_myObj == NULL) { - if (create() == 5) { + if (create() == cPhs_ERROR_e) { fopAcM_delete(this); } } + return 1; } daPy_py_c* player = daPy_getLinkPlayerActorClass(); - if (mPacket.getViewScale().y > 0.0f && - player->getKandelaarFlamePos() && + JUT_ASSERT(player != 0); + + if (mPacket.getViewScale().y > 0.0f && player->getKandelaarFlamePos() && fopAcM_searchActorDistance2(this, player) < 40000.0f) { if (fopAcM_seenActorAngleY(this, player) < 0x4000) { daPy_py_c::setLookPos(&eyePos); } } + return 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daMirror_c::execute() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/execute__10daMirror_cFv.s" -} -#pragma pop -#endif -/* 808724C0-80872560 001980 00A0+00 1/0 0/0 0/0 .text daMirror_draw__FP10daMirror_c */ -static int daMirror_draw(daMirror_c* param_0) { - if (param_0 != daMirror_c::m_myObj) { +int daMirror_c::draw() { + if (this != daMirror_c::m_myObj) { return 1; } - if (param_0->field_0x6f8) { - g_env_light.settingTevStruct(0x10, ¶m_0->current.pos, ¶m_0->tevStr); - g_env_light.setLightTevColorType(param_0->field_0x6f8->mModelData, ¶m_0->tevStr); - mDoExt_modelUpdateDL(param_0->field_0x6f8); + if (mpModel != NULL) { + g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType(mpModel->mModelData, &tevStr); + mDoExt_modelUpdateDL(mpModel); } - dComIfGd_getOpaListBG()->entryImm(¶m_0->mPacket, 0); + dComIfGd_getOpaListBG()->entryImm(&mPacket, 0); return 1; } +/* 808724C0-80872560 001980 00A0+00 1/0 0/0 0/0 .text daMirror_draw__FP10daMirror_c */ +static int daMirror_draw(daMirror_c* i_this) { + return i_this->draw(); +} + /* 80872560-80872584 001A20 0024+00 1/0 0/0 0/0 .text entryModel__10daMirror_cFP8J3DModel */ -int daMirror_c::entryModel(J3DModel* param_0) { - return mPacket.entryModel(param_0); +int daMirror_c::entryModel(J3DModel* i_model) { + return mPacket.entryModel(i_model); } -/* 80872650-80872650 0000C4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ /* 80872674-80872694 -00001 0020+00 1/0 0/0 0/0 .data daMirror_METHODS */ static actor_method_class daMirror_METHODS = { - (process_method_func)daMirror_create, - (process_method_func)daMirror_Delete, - (process_method_func)daMirror_execute, - (process_method_func)NULL, + (process_method_func)daMirror_create, (process_method_func)daMirror_Delete, + (process_method_func)daMirror_execute, (process_method_func)NULL, (process_method_func)daMirror_draw, }; @@ -780,13 +650,13 @@ extern actor_process_profile_definition g_profile_MIRROR = { fpcPi_CURRENT_e, PROC_MIRROR, &g_fpcLf_Method.mBase, - sizeof(daMirror_c), + sizeof(daMirror_c), 0, 0, &g_fopAc_Method.base, - 757, + 757, &daMirror_METHODS, - 0x00060000, - 5, + 0x60000, + fopAc_UNK_GROUP_5_e, fopAc_CULLBOX_0_e, }; diff --git a/rel/d/a/d_a_ni/d_a_ni.cpp b/rel/d/a/d_a_ni/d_a_ni.cpp index 6c0bc9f16dc..bb333eb49d6 100644 --- a/rel/d/a/d_a_ni/d_a_ni.cpp +++ b/rel/d/a/d_a_ni/d_a_ni.cpp @@ -3,7 +3,7 @@ // Translation Unit: d_a_ni // -#include "rel/d/a/d_a_ni/d_a_ni.h" +// #include "rel/d/a/d_a_ni/d_a_ni.h" #include "d/cc/d_cc_d.h" #include "dol2asm.h" diff --git a/rel/d/a/d_a_ni/d_a_ni_NONMATCHING.cpp b/rel/d/a/d_a_ni/d_a_ni_NONMATCHING.cpp new file mode 100644 index 00000000000..c7307bce0ce --- /dev/null +++ b/rel/d/a/d_a_ni/d_a_ni_NONMATCHING.cpp @@ -0,0 +1,2670 @@ +// +// Generated By: dol2asm +// Translation Unit: d_a_ni +// + +/** + * Basically entirely matching except for ONE float reg alloc in play_camera, + * and some extra dtors being emitted that shouldnt be after daNi_Create + */ + +#include "SSystem/SComponent/c_math.h" +#include "c/c_damagereaction.h" +#include "d/a/d_a_player.h" +#include "d/cc/d_cc_d.h" +#include "d/cc/d_cc_uty.h" +#include "d/com/d_com_inf_game.h" +#include "d/msg/d_msg_flow.h" +#include "d/s/d_s_play.h" +#include "dol2asm.h" +#include "m_Do/m_Do_controller_pad.h" +#include "m_Do/m_Do_graphic.h" +#include "rel/d/a/d_a_ni/d_a_ni.h" + +#define BCK_FALL 5 +#define BCK_FLY 6 +#define BCK_IKAKU 7 +#define BCK_MIWATASI 8 +#define BCK_MOGAKU 9 +#define BCK_NAKU 10 +#define BCK_WAIT1 11 +#define BCK_WALK_A 12 +#define BCK_WALK_B 13 + +#define JNT_WAIST 0 +#define JNT_LEGL 1 +#define JNT_FOOTL 2 +#define JNT_LEGR 3 +#define JNT_FOOTR 4 +#define JNT_NECK 5 +#define JNT_HEAD 6 +#define JNT_WINGL 7 +#define JNT_WINGR 8 + +enum daNi_color { + COLOR_WHITE, + COLOR_BLACK, + COLOR_BROWN, + COLOR_GOLD, + COLOR_RANDOM = 0xFF, +}; + +// +// Types: +// + +enum daNi_action { + ACTION_NORMAL_e, + ACTION_AWAY_e, + ACTION_SWIM_e, + ACTION_CARRY_e, + ACTION_FLY_e, + ACTION_DROP_e, + ACTION_RETURN_e, + ACTION_MESSAGE_e, + ACTION_DAMAGE_e, + ACTION_WINDSPIN_e, + ACTION_DEMO0_e, + ACTION_PLAY_e = 15, +}; + +class ni_class : public fopEn_enemy_c { +public: + bool checkGold() { return mColor == COLOR_GOLD; } + + /* 0x5AC */ request_of_phase_process_class mPhase; + /* 0x5B4 */ u8 field_0x5b4; + /* 0x5B5 */ u8 mType; + /* 0x5B6 */ u8 field_0x5b6[0x5C0 - 0x5B6]; + /* 0x5C0 */ cXyz field_0x5c0; + /* 0x5CC */ cXyz mDemoInitPos; + /* 0x5D8 */ f32 field_0x5d8; + /* 0x5DC */ s16 mMoveAngle; + /* 0x5E0 */ f32 mDistToPlayer; + /* 0x5E4 */ s16 mAngleToPlayer; + /* 0x5E8 */ mDoExt_McaMorf* mpMorf; + /* 0x5EC */ mDoExt_btkAnm* mpBtk; + /* 0x5F0 */ s8 mColor; + /* 0x5F4 */ int mAnmID; + /* 0x5F8 */ s16 mCounter; + /* 0x5FA */ s16 mAction; + /* 0x5FC */ s16 mMode; + /* 0x5FE */ s16 field_0x5fe; + /* 0x600 */ u32 mShadowKey; + /* 0x604 */ s16 mTimers[4]; + /* 0x60C */ s16 field_0x60c; + /* 0x60E */ s16 field_0x60e; + /* 0x610 */ f32 field_0x610; + /* 0x614 */ s16 field_0x614; + /* 0x616 */ s16 field_0x616; + /* 0x618 */ s16 field_0x618; + /* 0x61A */ s16 field_0x61a; + /* 0x61C */ s16 field_0x61c; + /* 0x61E */ s16 field_0x61e; + /* 0x620 */ s16 field_0x620; + /* 0x622 */ s16 field_0x622; + /* 0x624 */ s16 field_0x624; + /* 0x626 */ s16 field_0x626; + /* 0x628 */ s16 field_0x628; + /* 0x62A */ s16 field_0x62a; + /* 0x62C */ int mTargetActorID; + /* 0x630 */ dBgS_AcchCir mAcchCir; + /* 0x670 */ dBgS_ObjAcch mAcch; + /* 0x848 */ s8 field_0x848; + /* 0x84C */ dCcD_Stts mCcStts; + /* 0x888 */ dCcD_Sph mCcSph; + /* 0x9C0 */ dCcU_AtInfo mAtInfo; + /* 0x9E4 */ s8 field_0x9e4; + /* 0x9E6 */ s16 field_0x9e6; + /* 0x9E8 */ f32 field_0x9e8; + /* 0x9EC */ s16 field_0x9ec; + /* 0x9EE */ s16 field_0x9ee[4]; + /* 0x9F8 */ f32 mSplGroundH; + /* 0x9FC */ f32 mBoomerangMoveMaxStep; + /* 0xA00 */ f32 field_0xa00; + /* 0xA04 */ s16 field_0xa04; + /* 0xA06 */ s8 field_0xa06; + /* 0xA08 */ u32 field_0xa08[4]; + /* 0xA18 */ u32 mHamonEmtrID; + /* 0xA1C */ u8 field_0xA1C[0xA20 - 0xA1C]; + /* 0xA20 */ u32 mEnoEmtrIDs[2]; + /* 0xA28 */ Z2SoundObjSimple mSound; + /* 0xA48 */ s8 field_0xa48; + /* 0xA4C */ u32 mHaneEmitterID; + /* 0xA50 */ s8 field_0xa50; + /* 0xA52 */ s16 field_0xa52; + /* 0xA54 */ s16 mFlowNo; + /* 0xA58 */ dMsgFlow_c mMsgFlow; + /* 0xAA4 */ f32 mPadMainStickX; + /* 0xAA8 */ f32 mPadMainStickY; + /* 0xAAC */ f32 mPadSubStickX; + /* 0xAB0 */ f32 mPadSubStickY; + /* 0xAB4 */ f32 mPadAnalogL; + /* 0xAB8 */ u32 mPadHoldL; + /* 0xABC */ f32 field_0xabc; + /* 0xAC0 */ f32 mPlayAnmSpeed; + /* 0xAC4 */ s16 mPlayCamMode; + /* 0xAC6 */ s16 mPlayCamModeTimer; + /* 0xAC8 */ cXyz field_0xac8; + /* 0xAD4 */ cXyz field_0xad4; + /* 0xAE0 */ u8 field_0xAE0[0xAEC - 0xAE0]; + /* 0xAEC */ f32 field_0xaec; + /* 0xAF0 */ f32 field_0xaf0; + /* 0xAF4 */ s16 field_0xaf4; + /* 0xAF8 */ f32 field_0xaf8; + /* 0xAFC */ f32 field_0xafc; + /* 0xB00 */ f32 field_0xb00; + /* 0xB04 */ f32 field_0xb04; + /* 0xB08 */ u8 field_0xb08; + /* 0xB09 */ u8 mInitHIO; +}; + +class daNi_HIO_c { +public: + /* 8094BC2C */ daNi_HIO_c(); + /* 80951118 */ virtual ~daNi_HIO_c() {} + + /* 0x04 */ s8 field_0x04; + /* 0x08 */ f32 mBaseSize; + /* 0x0C */ f32 mMoveSpeed; + /* 0x10 */ f32 mMotionSpeed; + /* 0x14 */ u8 mRecognizeLink; + /* 0x18 */ f32 mRecognizeRange; + /* 0x1C */ f32 mFleeWalkSpeed; + /* 0x20 */ f32 mFleeFlySpeed; + /* 0x24 */ f32 mFleeJumpPower; + /* 0x28 */ f32 mFleeJumpGravity; + /* 0x2C */ f32 mThrowSpeed; + /* 0x30 */ f32 mThrowJumpPower; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ u8 mMogakuModelShake; + /* 0x39 */ u8 field_0x39; +}; + +// +// Forward References: +// + +extern "C" void __ct__10daNi_HIO_cFv(); +extern "C" static void anm_init__FP8ni_classifUcf(); +extern "C" static void hane_set__FP8ni_classff(); +extern "C" static void nodeCallBack__FP8J3DJointi(); +extern "C" static void daNi_Draw__FP8ni_class(); +extern "C" void __dt__4cXyzFv(); +extern "C" static void s_play_sub__FPvPv(); +extern "C" static void damage_check__FP8ni_class(); +extern "C" static void s_t_sub__FPvPv(); +extern "C" static void search_test__FP8ni_class(); +extern "C" static void ni_carry_check__FP8ni_class(); +extern "C" static void move_gake_check__FP8ni_classf(); +extern "C" static void ni_normal__FP8ni_class(); +extern "C" static void ni_away__FP8ni_class(); +extern "C" static void ni_swim__FP8ni_class(); +extern "C" static void ni_carry__FP8ni_class(); +extern "C" static void ni_fly__FP8ni_class(); +extern "C" static void ni_drop__FP8ni_class(); +extern "C" static void ni_return__FP8ni_class(); +extern "C" static void ni_damage__FP8ni_class(); +extern "C" static void s_b_sub__FPvPv(); +extern "C" static void ni_windspin__FP8ni_class(); +extern "C" static void ni_demo0__FP8ni_class(); +extern "C" static void ni_message__FP8ni_class(); +extern "C" static void playwallcheck__FP8ni_class(); +extern "C" static void ni_play__FP8ni_class(); +extern "C" static void play_camera__FP8ni_class(); +extern "C" static void action__FP8ni_class(); +extern "C" static void message__FP8ni_class(); +extern "C" static void daNi_Execute__FP8ni_class(); +extern "C" static bool daNi_IsDelete__FP8ni_class(); +extern "C" static void daNi_Delete__FP8ni_class(); +extern "C" static void useHeapInit__FP10fopAc_ac_c(); +extern "C" void __dt__12J3DFrameCtrlFv(); +extern "C" static void daNi_Create__FP10fopAc_ac_c(); +extern "C" void __dt__8cM3dGSphFv(); +extern "C" void __dt__8cM3dGAabFv(); +extern "C" void __dt__10dCcD_GSttsFv(); +extern "C" void __dt__12dBgS_ObjAcchFv(); +extern "C" void __dt__12dBgS_AcchCirFv(); +extern "C" void __dt__10cCcD_GSttsFv(); +extern "C" void __dt__10daNi_HIO_cFv(); +extern "C" void __sinit_d_a_ni_cpp(); +extern "C" static void func_8095119C(); +extern "C" static void func_809511A4(); +extern "C" extern char const* const d_a_ni__stringBase0; + +// +// External References: +// + +extern "C" void fadeOut__13mDoGph_gInf_cFfR8_GXColor(); +extern "C" void mDoMtx_XrotM__FPA4_fs(); +extern "C" void mDoMtx_YrotS__FPA4_fs(); +extern "C" void mDoMtx_YrotM__FPA4_fs(); +extern "C" void mDoMtx_ZrotM__FPA4_fs(); +extern "C" void transM__14mDoMtx_stack_cFfff(); +extern "C" void scaleM__14mDoMtx_stack_cFfff(); +extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss(); +extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef(); +extern "C" void +__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl(); +extern "C" void setAnm__14mDoExt_McaMorfFP15J3DAnmTransformiffffPv(); +extern "C" void play__14mDoExt_McaMorfFP3VecUlSc(); +extern "C" void entryDL__14mDoExt_McaMorfFv(); +extern "C" void modelCalc__14mDoExt_McaMorfFv(); +extern "C" void cDmrNowMidnaTalk__Fv(); +extern "C" void __ct__10fopAc_ac_cFv(); +extern "C" void fopAc_IsActor__FPv(); +extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); +extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); +extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); +extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); +extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); +extern "C" void fopAcM_wayBgCheck__FPC10fopAc_ac_cff(); +extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); +extern "C" bool fopAcM_riverStream__FP4cXyzPsPff(); +extern "C" void fopAcM_carryOffRevise__FP10fopAc_ac_c(); +extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); +extern "C" void fpcEx_Search__FPFPvPv_PvPv(); +extern "C" void fpcSch_JudgeForPName__FPvPv(); +extern "C" void fpcSch_JudgeByID__FPvPv(); +extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); +extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); +extern "C" void dComIfGp_getReverb__Fi(); +extern "C" void +dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); +extern "C" void isEventBit__11dSv_event_cCFUs(); +extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); +extern "C" void reset__14dEvt_control_cFv(); +extern "C" void forceOnEventMove__Q213dPa_control_c7level_cFUl(); +extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); +extern "C" void +set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); +extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); +extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); +extern "C" void __ct__12dBgS_AcchCirFv(); +extern "C" void SetWall__12dBgS_AcchCirFff(); +extern "C" void __dt__9dBgS_AcchFv(); +extern "C" void __ct__9dBgS_AcchFv(); +extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); +extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); +extern "C" void __ct__11dBgS_GndChkFv(); +extern "C" void __dt__11dBgS_GndChkFv(); +extern "C" void __ct__18dBgS_ObjGndChk_SplFv(); +extern "C" void __dt__18dBgS_ObjGndChk_SplFv(); +extern "C" void __ct__11dBgS_LinChkFv(); +extern "C" void __dt__11dBgS_LinChkFv(); +extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); +extern "C" void __ct__14dBgS_CamLinChkFv(); +extern "C" void __dt__14dBgS_CamLinChkFv(); +extern "C" void SetObj__16dBgS_PolyPassChkFv(); +extern "C" void __ct__10dCcD_GSttsFv(); +extern "C" void Move__10dCcD_GSttsFv(); +extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); +extern "C" void __ct__12dCcD_GObjInfFv(); +extern "C" void ChkTgHit__12dCcD_GObjInfFv(); +extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); +extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); +extern "C" void at_power_check__FP11dCcU_AtInfo(); +extern "C" void checkBoomerangCharge__9daPy_py_cFv(); +extern "C" void Start__9dCamera_cFv(); +extern "C" void Stop__9dCamera_cFv(); +extern "C" void SetTrimSize__9dCamera_cFl(); +extern "C" void Set__9dCamera_cF4cXyz4cXyzfs(); +extern "C" void Reset__9dCamera_cF4cXyz4cXyzfs(); +extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); +extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); +extern "C" void __ct__10dMsgFlow_cFv(); +extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); +extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); +extern "C" void Set__4cCcSFP8cCcD_Obj(); +extern "C" void __mi__4cXyzCFRC3Vec(); +extern "C" void cM_atan2s__Fff(); +extern "C" void cM_rndF__Ff(); +extern "C" void cM_rndFX__Ff(); +extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); +extern "C" void __dt__13cBgS_PolyInfoFv(); +extern "C" void __dt__8cM3dGCirFv(); +extern "C" void SetC__8cM3dGSphFRC4cXyz(); +extern "C" void SetR__8cM3dGSphFf(); +extern "C" void cLib_addCalc2__FPffff(); +extern "C" void cLib_addCalc0__FPfff(); +extern "C" void cLib_addCalcAngleS2__FPssss(); +extern "C" void MtxPosition__FP4cXyzP4cXyz(); +extern "C" void deleteObject__14Z2SoundObjBaseFv(); +extern "C" void __ct__16Z2SoundObjSimpleFv(); +extern "C" void* __nw__FUl(); +extern "C" void __dl__FPv(); +extern "C" void init__12J3DFrameCtrlFs(); +extern "C" void checkPass__12J3DFrameCtrlFf(); +extern "C" void _savegpr_22(); +extern "C" void _savegpr_24(); +extern "C" void _savegpr_26(); +extern "C" void _savegpr_27(); +extern "C" void _savegpr_28(); +extern "C" void _savegpr_29(); +extern "C" void _restgpr_22(); +extern "C" void _restgpr_24(); +extern "C" void _restgpr_26(); +extern "C" void _restgpr_27(); +extern "C" void _restgpr_28(); +extern "C" void _restgpr_29(); +extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; +extern "C" extern void* __vt__8dCcD_Sph[36]; +extern "C" extern void* __vt__9dCcD_Stts[11]; +extern "C" extern void* __vt__12cCcD_SphAttr[25]; +extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; +extern "C" extern void* __vt__9cCcD_Stts[8]; +extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; +extern "C" u8 now__14mDoMtx_stack_c[48]; +extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; +extern "C" u8 mCurrentMtx__6J3DSys[48]; +extern "C" u8 sincosTable___5JMath[65536]; +extern "C" f32 mGroundY__11fopAcM_gc_c; +extern "C" void __register_global_object(); + +// +// Declarations: +// + +/* 80951330-8095133C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ +SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +/* 8095133C-80951350 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ +#pragma push +#pragma force_active on +SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { + 0x02000201, + /* padding */ + 0x40080000, + 0x00000000, + 0x3FE00000, + 0x00000000, +}; +#pragma pop + +/* 8094BC2C-8094BCA8 0000EC 007C+00 1/1 0/0 0/0 .text __ct__10daNi_HIO_cFv */ +daNi_HIO_c::daNi_HIO_c() { + field_0x04 = -1; + mBaseSize = 1.2f; + mMoveSpeed = 4.0f; + mMotionSpeed = 1.5f; + mRecognizeLink = 1; + mRecognizeRange = 200.0f; + mFleeWalkSpeed = 15.0f; + mFleeFlySpeed = 20.0f; + mFleeJumpPower = 40.0f; + mFleeJumpGravity = -1.0f; + mThrowSpeed = 20.0f; + mThrowJumpPower = 15.0f; + mMogakuModelShake = 0; + field_0x39 = 1; +} + +/* 8094BCA8-8094BD68 000168 00C0+00 13/13 0/0 0/0 .text anm_init__FP8ni_classifUcf */ +static void anm_init(ni_class* i_this, int i_resID, f32 i_morf, u8 i_mode, f32 i_speed) { + if (!(i_this->field_0x610 > 1.0f)) { + J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes("Ni", i_resID); + i_this->mpMorf->setAnm(pbck, i_mode, i_morf, i_speed, 0.0f, -1.0f, NULL); + i_this->mAnmID = i_resID; + } +} + +/* 8094BD68-8094BE60 000228 00F8+00 10/10 0/0 0/0 .text hane_set__FP8ni_classff */ +static void hane_set(ni_class* i_this, f32 i_rate, f32 i_speed) { + static u16 hane_id[] = {0x82C2, 0x82C0, 0x82C1, 0x82C3}; + + i_this->mHaneEmitterID = dComIfGp_particle_set(i_this->mHaneEmitterID, hane_id[i_this->mColor], + &i_this->current.pos, NULL, NULL); + dComIfGp_particle_levelEmitterOnEventMove(i_this->mHaneEmitterID); + + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mHaneEmitterID); + if (emitter != NULL) { + emitter->setRate(i_rate); + emitter->setDirectionalSpeed(i_speed); + } +} + +/* 8094BE60-8094C110 000320 02B0+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */ +static int nodeCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + int joint_no = i_joint->getJntNo(); + + J3DModel* model = j3dSys.getModel(); + ni_class* a_this = (ni_class*)model->getUserArea(); + if (a_this != NULL) { + MTXCopy(model->i_getAnmMtx(joint_no), *calc_mtx); + if (joint_no == JNT_HEAD) { + cMtx_YrotM(*calc_mtx, a_this->field_0x61c); + cMtx_XrotM(*calc_mtx, a_this->field_0x61a); + } else if (joint_no == JNT_NECK) { + cMtx_XrotM(*calc_mtx, a_this->field_0x61a / 2); + cMtx_ZrotM(*calc_mtx, a_this->field_0x618); + } else if (joint_no == JNT_WINGL) { + cMtx_YrotM(*calc_mtx, a_this->field_0x626); + } else if (joint_no == JNT_WINGR) { + cMtx_YrotM(*calc_mtx, a_this->field_0x624); + } else if (joint_no >= JNT_LEGL && joint_no <= JNT_FOOTR) { + cMtx_ZrotM(*calc_mtx, a_this->field_0x9ee[joint_no - 1]); + } + + model->i_setAnmMtx(joint_no, *calc_mtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); + + if (joint_no == TREG_S(0)) { + MTXCopy(model->i_getAnmMtx(joint_no), *calc_mtx); + cMtx_YrotM(*calc_mtx, TREG_S(1)); + cMtx_XrotM(*calc_mtx, TREG_S(2)); + cMtx_ZrotM(*calc_mtx, TREG_S(3)); + + model->i_setAnmMtx(joint_no, *calc_mtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); + } + + if (joint_no == TREG_S(4)) { + MTXCopy(model->i_getAnmMtx(joint_no), *calc_mtx); + cMtx_YrotM(*calc_mtx, TREG_S(5)); + cMtx_XrotM(*calc_mtx, TREG_S(6)); + cMtx_ZrotM(*calc_mtx, TREG_S(7)); + + model->i_setAnmMtx(joint_no, *calc_mtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); + } + } + } + + return 1; +} + +/* 8094C110-8094C204 0005D0 00F4+00 1/0 0/0 0/0 .text daNi_Draw__FP8ni_class */ +static int daNi_Draw(ni_class* i_this) { + J3DModel* model = i_this->mpMorf->getModel(); + g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr); + g_env_light.setLightTevColorType_MAJI(model, &i_this->tevStr); + + i_this->mpBtk->entry(model->getModelData()); + i_this->mpMorf->entryDL(); + + if (!fopAcM_checkCarryNow(i_this)) { + cXyz pos; + pos.set(i_this->current.pos.x, i_this->current.pos.y + 100.0f, i_this->current.pos.z); + + i_this->mShadowKey = dComIfGd_setShadow(i_this->mShadowKey, 1, model, &pos, 400.0f, 40.0f, + i_this->current.pos.y, i_this->mAcch.GetGroundH(), + i_this->mAcch.m_gnd, &i_this->tevStr, 0, 1.0f, + dDlst_shadowControl_c::getSimpleTex()); + } + + return 1; +} + +/* 8094C240-8094C298 000700 0058+00 1/1 0/0 0/0 .text s_play_sub__FPvPv */ +static void* s_play_sub(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_NI) { + ni_class* a_actor = (ni_class*)i_actor; + + if (a_actor->mAction == ACTION_PLAY_e) { + return i_actor; + } + } + + return NULL; +} + +/* 8094C298-8094C4B0 000758 0218+00 1/1 0/0 0/0 .text damage_check__FP8ni_class */ +static void damage_check(ni_class* i_this) { + dComIfGp_getPlayer(0); + + if (i_this->field_0x60c == 0) { + i_this->mCcStts.Move(); + + if (i_this->mCcSph.ChkTgHit()) { + i_this->field_0x60c = 6; + i_this->mAtInfo.mpCollider = i_this->mCcSph.GetTgHitObj(); + + anm_init(i_this, BCK_MOGAKU, 1.5f, J3DFrameCtrl::LOOP_REPEAT_e, 1.5f); + + if (i_this->mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG)) { + i_this->mAction = ACTION_WINDSPIN_e; + i_this->mMode = 0; + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + } else { + at_power_check(&i_this->mAtInfo); + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + + i_this->field_0x614 = (f32)i_this->mAngleToPlayer + cM_rndFX(2000); + + if (i_this->mAction == ACTION_PLAY_e) { + i_this->field_0x560 = 1; + i_this->field_0x60c = 0; + } else { + if (i_this->mAtInfo.mHitType == 1) { + i_this->field_0x610 = 40.0f; + hane_set(i_this, 15.0f, 30.0f); + } else { + i_this->field_0x610 = 30.0f; + hane_set(i_this, 10.0f, 30.0f); + } + + i_this->mAction = ACTION_DAMAGE_e; + i_this->mMode = 0; + i_this->health--; + + if (i_this->mAtInfo.mHitType == 1 && i_this->health <= 0) { + i_this->health = 0; + + if (!i_dComIfGp_event_runCheck() && + i_fpcM_Search(s_play_sub, i_this) == NULL) + { + i_this->mAction = ACTION_PLAY_e; + i_this->mMode = 0; + } + } + } + } + } + } +} + +/* ############################################################################################## */ +/* 80951550-80951554 000008 0001+03 1/1 0/0 0/0 .bss @1109 */ +static u8 lit_1109[1 + 3 /* padding */]; + +/* 80951554-80951558 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ +#pragma push +#pragma force_active on +static u8 lit_1107[1 + 3 /* padding */]; +#pragma pop + +/* 80951558-8095155C 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ +#pragma push +#pragma force_active on +static u8 lit_1105[1 + 3 /* padding */]; +#pragma pop + +/* 8095155C-80951560 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ +#pragma push +#pragma force_active on +static u8 lit_1104[1 + 3 /* padding */]; +#pragma pop + +/* 80951560-80951564 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ +#pragma push +#pragma force_active on +static u8 lit_1099[1 + 3 /* padding */]; +#pragma pop + +/* 80951564-80951568 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ +#pragma push +#pragma force_active on +static u8 lit_1097[1 + 3 /* padding */]; +#pragma pop + +/* 80951568-8095156C 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ +#pragma push +#pragma force_active on +static u8 lit_1095[1 + 3 /* padding */]; +#pragma pop + +/* 8095156C-80951570 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ +#pragma push +#pragma force_active on +static u8 lit_1094[1 + 3 /* padding */]; +#pragma pop + +/* 80951570-80951574 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ +#pragma push +#pragma force_active on +static u8 lit_1057[1 + 3 /* padding */]; +#pragma pop + +/* 80951574-80951578 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ +#pragma push +#pragma force_active on +static u8 lit_1055[1 + 3 /* padding */]; +#pragma pop + +/* 80951578-8095157C 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ +#pragma push +#pragma force_active on +static u8 lit_1053[1 + 3 /* padding */]; +#pragma pop + +/* 8095157C-80951580 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ +#pragma push +#pragma force_active on +static u8 lit_1052[1 + 3 /* padding */]; +#pragma pop + +/* 80951580-80951584 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ +#pragma push +#pragma force_active on +static u8 lit_1014[1 + 3 /* padding */]; +#pragma pop + +/* 80951584-80951588 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ +#pragma push +#pragma force_active on +static u8 lit_1012[1 + 3 /* padding */]; +#pragma pop + +/* 80951588-8095158C 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ +#pragma push +#pragma force_active on +static u8 lit_1010[1 + 3 /* padding */]; +#pragma pop + +/* 8095158C-80951590 -00001 0004+00 2/2 0/0 0/0 .bss None */ +/* 8095158C 0001+00 data_8095158C @1009 */ +/* 8095158D 0003+00 data_8095158D None */ +#pragma push +#pragma force_active on +static u8 struct_8095158C; +#pragma pop + +static u8 data_8095158d; + +/* 8095159C-809515D8 000054 003C+00 9/9 0/0 0/0 .bss l_HIO */ +static daNi_HIO_c l_HIO; + +/* 809515D8-80951600 000090 0028+00 2/2 0/0 0/0 .bss target_info */ +static fopAc_ac_c* target_info[10]; + +/* 80951600-80951604 0000B8 0004+00 2/2 0/0 0/0 .bss target_info_count */ +static int target_info_count; + +/* 8094C4B0-8094C520 000970 0070+00 1/1 0/0 0/0 .text s_t_sub__FPvPv */ +static void* s_t_sub(void* i_actor, void* i_data) { + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_NPC_NE && target_info_count < 10) + { + target_info[target_info_count] = (fopAc_ac_c*)i_actor; + target_info_count++; + } + + return NULL; +} + +/* 8094C520-8094C688 0009E0 0168+00 1/1 0/0 0/0 .text search_test__FP8ni_class */ +static fopAc_ac_c* search_test(ni_class* i_this) { + target_info_count = 0; + + for (int i = 0; i < 10; i++) { + target_info[i] = NULL; + } + + i_fpcM_Search(s_t_sub, i_this); + + f32 search_range = 100.0f; + if (target_info_count != 0) { + cXyz dist; + + fopAc_ac_c* target; + int i = 0; + while (i < target_info_count) { + target = target_info[i]; + + dist = target->current.pos - i_this->current.pos; + if (JMAFastSqrt(dist.x * dist.x + dist.z * dist.z) < search_range) { + return target; + } + + i++; + + if (i == target_info_count) { + i = 0; + search_range += 100.0f; + + if (search_range > 1000.0f) { + return NULL; + } + } + } + } else { + return NULL; + } + + return NULL; +} + +/* 8094C688-8094C6C4 000B48 003C+00 1/1 0/0 0/0 .text ni_carry_check__FP8ni_class */ +static void ni_carry_check(ni_class* i_this) { + dComIfGp_getPlayer(0); + + if (fopAcM_checkCarryNow(i_this)) { + cLib_offBit(i_this->attention_info.flags, 0x10); + i_this->mAction = ACTION_CARRY_e; + i_this->mMode = 0; + i_this->speed.y = 0.0f; + i_this->speedF = 0.0f; + + OS_REPORT("//////////////NI CARRY ON! \n"); + } +} + +/* 8094C6C4-8094C7B4 000B84 00F0+00 1/1 0/0 0/0 .text move_gake_check__FP8ni_classf */ +static BOOL move_gake_check(ni_class* i_this, f32 param_1) { + dBgS_GndChk gnd_chk; + cXyz sp74; + cXyz sp80; + + cMtx_YrotS(*calc_mtx, i_this->shape_angle.y); + + sp74.x = 0.0f; + sp74.y = 100.0f; + sp74.z = param_1; + MtxPosition(&sp74, &sp80); + sp80 += i_this->current.pos; + + gnd_chk.SetPos(&sp80); + + if (i_this->current.pos.y - dComIfG_Bgsp().GroundCross(&gnd_chk) > 300.0f) { + return true; + } + + return false; +} + +/* 8094C7B4-8094CE7C 000C74 06C8+00 1/1 0/0 0/0 .text ni_normal__FP8ni_class */ +static void ni_normal(ni_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; // temp var and casts necessary atm. fake match? + fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); + cXyz sp50; + cXyz sp5C; + + f32 move_speed = 0.0f; + switch (i_this->mMode) { + case 0: + i_this->mTimers[0] = cM_rndF(70) + 50.0f; + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, move_speed); + i_this->mMode++; + break; + case 1: + if (i_this->mTimers[0] == 0) { + i_this->mMode = 10; + + if (fopAcM_wayBgCheck(a_this, 100.0f, 30.0f) || move_gake_check(i_this, 100.0f)) { + i_this->mMoveAngle = + (a_this->current.angle.y + 0x10000 + (s16)cM_rndFX(8000)) - 0x8000; + i_this->mTimers[1] = 30; + } else { + sp50 = a_this->home.pos - a_this->current.pos; + sp50.x += cM_rndFX(500); + sp50.z += cM_rndFX(500); + + i_this->mMoveAngle = cM_atan2s(sp50.x, sp50.z); + } + + i_this->mTimers[0] = cM_rndF(60) + 30.0f; + anm_init(i_this, BCK_WALK_A, 5.0f, J3DFrameCtrl::LOOP_REPEAT_e, l_HIO.mMotionSpeed); + } + break; + case 10: + move_speed = l_HIO.mMoveSpeed; + cLib_addCalcAngleS2(&a_this->current.angle.y, i_this->mMoveAngle, 4, 0x400); + + if (i_this->mTimers[0] == 0 || + ((fopAcM_wayBgCheck(a_this, 100.0f, 30.0f) || move_gake_check(i_this, 100.0f)) && + i_this->mTimers[1] == 0)) + { + i_this->mMode = 0; + } + + if (i_this->mpMorf->checkFrame(1.0f) || i_this->mpMorf->checkFrame(16.0f)) { + i_this->mSound.startSound(Z2SE_CHICKEN_WALK, 0, -1); + } + break; + } + + cLib_addCalc2(&a_this->speedF, move_speed, 1.0f, 5.0f); + + if (fabsf(player->speedF) < 20.0f && i_this->field_0x60e == 0) { + i_this->field_0x60e = 1; + } + + if (i_dComIfGp_checkPlayerStatus0(0, 0x8000000)) { + i_this->field_0x60e = 30; + } + + if ((s16)(a_this->shape_angle.y - i_this->mAngleToPlayer) < 0x2000 && + (s16)(a_this->shape_angle.y - i_this->mAngleToPlayer) > 0x2000) + { + i_this->field_0x60e = 0; + } + + s8 var_r29 = false; + i_this->mTargetActorID = -1; + + if (!(i_this->mCounter & 31)) { + fopAc_ac_c* target = search_test(i_this); + if (target != NULL) { + sp50 = target->current.pos - a_this->current.pos; + + if (sp50.abs() < l_HIO.mRecognizeRange) { + i_this->mTargetActorID = fopAcM_GetID(target); + var_r29 = true; + } + } + } + + fopAc_ac_c* cow = i_fopAcM_SearchByName(PROC_COW); + if (cow != NULL && cow->speedF > 1.0f) { + sp50 = cow->current.pos - a_this->current.pos; + f32 var_f30 = sp50.abs(); + + if (i_this->field_0xa48 == 0 && i_this->mDistToPlayer < 3000.0f && var_f30 < 2000.0f) { + i_this->field_0xa48 = 1; + + a_this->current.pos.x = cM_rndFX(200) + -914.0f; + a_this->current.pos.y = 160.0f; + a_this->current.pos.z = cM_rndFX(200) + 3931.0f; + } + + if (var_f30 < 400.0f) { + var_r29 = true; + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + } + } + + if (!i_this->checkGold() && (var_r29 || (l_HIO.mRecognizeLink && i_this->field_0x60e == 0 && + i_this->mDistToPlayer < l_HIO.mRecognizeRange))) + { + i_this->mAction = ACTION_AWAY_e; + i_this->mMode = 0; + } +} + +/* 8094CE7C-8094D2A4 00133C 0428+00 1/1 0/0 0/0 .text ni_away__FP8ni_class */ +static void ni_away(ni_class* i_this) { + ni_class* a_this = (ni_class*)i_this; // temp var and cast necessary to match atm. fake match? + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp4C; + cXyz sp58; + + f32 move_speed = 0.0f; + f32 speed_max_step = 2.0f; + s16 angle_max_step = 0x1800; + + fopAc_ac_c* target = fopAcM_SearchByID(a_this->mTargetActorID); + if (target != NULL) { + sp4C = i_this->current.pos - target->current.pos; + a_this->mDistToPlayer = sp4C.abs(); + } else { + sp4C = i_this->current.pos - player->current.pos; + } + + switch (a_this->mMode) { + case 0: + anm_init(a_this, BCK_WALK_B, 5.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.5f); + a_this->mMode++; + + if (target == NULL) { + a_this->mTimers[0] = 20; + } else { + a_this->mTimers[0] = 20; + } + case 1: + move_speed = l_HIO.mFleeWalkSpeed; + + if (a_this->mpMorf->checkFrame(1.0f) || a_this->mpMorf->checkFrame(8.0f)) { + a_this->mSound.startSound(Z2SE_CHICKEN_WALK, 0, -1); + } + + if (a_this->mTimers[0] == 0) { + if (a_this->mDistToPlayer > l_HIO.mRecognizeRange + 50.0f) { + a_this->mAction = ACTION_NORMAL_e; + a_this->mMode = 0; + } else if (a_this->mAcch.i_ChkGroundHit() && + (target != NULL || a_this->mDistToPlayer < l_HIO.mRecognizeRange - 100.0f)) + { + anm_init(a_this, BCK_FLY, 1.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + a_this->speed.y = l_HIO.mFleeJumpPower; + a_this->mMode++; + hane_set(a_this, 5.0f, 25.0f); + } + } + + if (a_this->mTimers[1] == 0) { + a_this->mMoveAngle = cM_atan2s(sp4C.x, sp4C.z); + + if (fopAcM_wayBgCheck(a_this, 100.0f, 30.0f)) { + a_this->mTimers[1] = 30; + a_this->mMoveAngle = + (i_this->current.angle.y + 0x10000 + (s16)cM_rndFX(10000)) - 0x8000; + } + } + break; + case 2: + move_speed = l_HIO.mFleeFlySpeed; + angle_max_step = 0x400; + speed_max_step = 10.0f; + + if (i_this->speed.y <= 0.0f) { + i_this->gravity = l_HIO.mFleeJumpGravity; + + if (a_this->mAcch.i_ChkGroundHit() || a_this->field_0x848 != 0) { + a_this->mMode = 0; + } + } + break; + } + + cLib_addCalc2(&i_this->speedF, move_speed, 1.0f, speed_max_step); + cLib_addCalcAngleS2(&i_this->current.angle.y, a_this->mMoveAngle, 2, angle_max_step); +} + +/* 8094D2A4-8094D60C 001764 0368+00 1/1 0/0 0/0 .text ni_swim__FP8ni_class */ +static void ni_swim(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp48; + cXyz sp54; + + f32 move_speed = 0.0f; + + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, move_speed); + i_this->mMode++; + i_this->field_0x9e8 = move_speed; + case 1: + if (fopAcM_wayBgCheck(i_this, 100.0f, 30.0f)) { + i_this->mMoveAngle = (i_this->current.angle.y + 0x10000 + (s16)cM_rndFX(8000)) - 0x8000; + i_this->mTimers[1] = 128; + i_this->mTimers[0] = 128; + } else { + sp48 = i_this->home.pos - i_this->current.pos; + sp48.x += cM_rndFX(500); + sp48.z += cM_rndFX(500); + + i_this->mMoveAngle = cM_atan2s(sp48.x, sp48.z); + i_this->mTimers[0] = cM_rndF(60) + 30.0f; + } + + i_this->mMode++; + break; + case 2: + move_speed = 2.0f; + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mMoveAngle, 4, 0x100); + + if (i_this->mTimers[0] == 0 || + (fopAcM_wayBgCheck(i_this, 100.0f, 30.0f) && i_this->mTimers[1] == 0)) + { + i_this->mMode = 1; + } + + if (i_this->field_0x560 != 0) { + i_this->field_0x560 = 0; + i_this->mMode++; + + anm_init(i_this, BCK_MOGAKU, 1.0f, 2, 1.0f); + i_this->field_0x60c = 10; + i_this->mTimers[2] = cM_rndF(10) + 5.0f; + + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + hane_set(i_this, 5.0f, 25.0f); + i_this->mMoveAngle = cM_rndF(0x10000); + } + break; + case 3: + move_speed = 2.0f; + i_this->current.angle.z = cM_ssin(i_this->mCounter * 9000) * 3000.0f; + + if (i_this->mTimers[2] == 0) { + i_this->mMode = 1; + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 0.0f); + } + + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mMoveAngle, 4, 0x400); + break; + } + + cLib_addCalc2(&i_this->speedF, move_speed, 1.0f, 1.0f); + + if (i_this->field_0x9e4 == 0 && i_this->field_0x848 == 0) { + i_this->mAction = ACTION_AWAY_e; + i_this->mMode = 2; + + anm_init(i_this, BCK_FLY, 1.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + i_this->speed.y = 20.0f; + hane_set(i_this, 5.0f, 25.0f); + i_this->field_0x9e4 = 30; + } +} + +/* 8094D60C-8094D7BC 001ACC 01B0+00 1/1 0/0 0/0 .text ni_carry__FP8ni_class */ +static int ni_carry(ni_class* i_this) { + ni_class* a_this = (ni_class*)i_this; // temp var and cast necessary to match atm. fake match? + cXyz sp40; + cXyz sp4C; + cXyz sp58; + + cLib_addCalcAngleS2(&a_this->current.angle.y, dComIfGp_getPlayer(0)->shape_angle.y, 1, 0x2000); + i_this->mCcSph.OffCoSetBit(); + i_this->speed.y = 0.0f; + + BOOL update_position = false; + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_MOGAKU, 1.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + i_this->mMode++; + // fallthrough + case 1: + hane_set(i_this, 0.1f, 20.0f); + break; + } + + if (l_HIO.mMogakuModelShake) { + f32 var_f1; + if (daPy_getPlayerActorClass()->checkPlayerFly()) { + var_f1 = 1000.0f; + } else { + var_f1 = 2500.0f; + } + + a_this->current.angle.z = var_f1 * cM_ssin(i_this->mCounter * 9000); + } + + if (!fopAcM_checkCarryNow(a_this)) { + OS_REPORT("//////////////NI CARRY OFF ! \n"); + + if (fopAcM_GetSpeedF(a_this) > 0.0f) { + i_this->mMode = 0; + a_this->speedF = l_HIO.mThrowSpeed; + a_this->speed.y = l_HIO.mThrowJumpPower; + + i_this->mAction = ACTION_FLY_e; + i_this->mMode = 0; + } else if (i_this->checkGold()) { + i_this->mAction = ACTION_NORMAL_e; + i_this->mMode = 0; + } else { + i_this->mAction = ACTION_AWAY_e; + i_this->mMode = 0; + } + + fopAcM_carryOffRevise(a_this); + update_position = true; + } + + return update_position; +} + +/* 8094D7BC-8094D8EC 001C7C 0130+00 1/1 0/0 0/0 .text ni_fly__FP8ni_class */ +static void ni_fly(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_FALL, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f); + i_this->mMode++; + i_this->mTimers[0] = 40; + i_this->field_0x5c0 = player->current.pos; + // fallthrough + case 1: + hane_set(i_this, 0.1f, 20.0f); + break; + } + + i_this->gravity = l_HIO.mFleeJumpGravity; + if (i_this->speed.y < -20.0f) { + i_this->speed.y = -20.0f; + } + + if (i_this->checkGold() && i_this->mTimers[0] == 0) { + i_this->mAction = ACTION_RETURN_e; + i_this->mMode = 0; + } else if (i_this->mAcch.i_ChkGroundHit() || i_this->mAcch.ChkWallHit() || + i_this->field_0x848 != 0) + { + i_this->mAction = ACTION_DAMAGE_e; + i_this->mMode = 0; + } +} + +/* 8094D8EC-8094DA0C 001DAC 0120+00 1/1 0/0 0/0 .text ni_drop__FP8ni_class */ +static void ni_drop(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_FALL, 1.0f, 0, 1.0f); + i_this->mMode++; + // fallthrough + case 1: + hane_set(i_this, 0.1f, 20.0f); + break; + } + + i_this->gravity = l_HIO.mFleeJumpGravity; + if (i_this->mAcch.i_ChkGroundHit() || i_this->field_0x848 != 0) { + i_this->mAction = ACTION_NORMAL_e; + i_this->mMode = 0; + } + + if (i_this->checkGold() && i_this->current.pos.y < player->current.pos.y - 100.0f && + i_this->mAcch.GetGroundH() < -20000.0f) + { + i_this->mAction = ACTION_RETURN_e; + i_this->mMode = 0; + i_this->field_0x5c0 = player->current.pos; + } +} + +/* 8094DA0C-8094DB98 001ECC 018C+00 1/1 0/0 0/0 .text ni_return__FP8ni_class */ +static void ni_return(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + cXyz sp38; + sp38.x = i_this->field_0x5c0.x - i_this->current.pos.x; + sp38.z = i_this->field_0x5c0.z - i_this->current.pos.z; + + i_this->mMoveAngle = cM_atan2s(sp38.x, sp38.z); + f32 var_f31 = JMAFastSqrt(sp38.x * sp38.x + sp38.z * sp38.z); + + switch (i_this->mMode) { + case 1: + break; + case 0: + i_this->mMode++; + i_this->mTimers[0] = 200; + anm_init(i_this, BCK_FLY, 2.0f, J3DFrameCtrl::LOOP_REPEAT_e, 2.0f); + break; + } + + cLib_addCalc2(&i_this->speedF, 20.0f, 1.0f, 10.0f); + + if (i_this->current.pos.y < player->current.pos.y + 50.0f) { + i_this->gravity = 2.0f; + if (i_this->speed.y > 20.0f) { + i_this->speed.y = 20.0f; + } + } else { + i_this->gravity = -1.0f; + if (i_this->speed.y < -20.0f) { + i_this->speed.y = -20.0f; + } + } + + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mMoveAngle, 4, 0x400); + + if (i_this->mTimers[0] == 0 || var_f31 < 100.0f) { + i_this->mAction = ACTION_DROP_e; + i_this->mMode = 0; + } +} + +/* 8094DB98-8094DD10 002058 0178+00 1/1 0/0 0/0 .text ni_damage__FP8ni_class */ +static void ni_damage(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_WALK_B, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + i_this->mMode++; + + i_this->mTimers[0] = cM_rndF(20.0f) + 40.0f; + i_this->mTimers[1] = 10; + i_this->current.angle.y = i_this->mAngleToPlayer + 0x8000; + // fallthrough + case 1: + if (i_this->mTimers[1] == 0) { + i_this->mMoveAngle = i_this->current.angle.y + (s16)cM_rndFX(10000.0f); + i_this->mTimers[1] = cM_rndF(15.0f) + 5.0f; + + if (cM_rndF(1.0f) < 0.35f) { + i_this->speed.y = cM_rndF(15.0f) + 15.0f; + } + } + + hane_set(i_this, 0.1f, 20.0f); + + if (i_this->mTimers[0] == 0) { + i_this->mAction = 0; + i_this->mMode = 0; + } + break; + } + + cLib_addCalc2(&i_this->speedF, l_HIO.mFleeWalkSpeed, 1.0f, 2.0f); + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mMoveAngle, 2, 0x2000); +} + +/* 8094DD10-8094DD74 0021D0 0064+00 1/1 0/0 0/0 .text s_b_sub__FPvPv */ +static void* s_b_sub(void* i_actor, void* i_data) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + + if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_BOOMERANG && + daPy_py_c::checkBoomerangCharge() && fopAcM_GetParam(i_actor) == 1) + { + return i_actor; + } + + return NULL; +} + +/* 8094DD74-8094DED0 002234 015C+00 1/1 0/0 0/0 .text ni_windspin__FP8ni_class */ +static void ni_windspin(ni_class* i_this) { + fopAc_ac_c* player = dComIfGp_getPlayer(0); + fopAc_ac_c* boomerang = (fopAc_ac_c*)i_fpcM_Search(s_b_sub, i_this); + + switch (i_this->mMode) { + case 0: + anm_init(i_this, BCK_FALL, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f); + i_this->mMode++; + + hane_set(i_this, 0.1f, 20.0f); + i_this->mBoomerangMoveMaxStep = 0.0f; + // fallthrough + case 1: + i_this->current.angle.y -= 0x2200; + i_this->shape_angle.y = i_this->current.angle.y; + break; + } + + if (boomerang == NULL) { + i_this->mAction = ACTION_DAMAGE_e; + i_this->mMode = 0; + return; + } + + if (i_this->mBoomerangMoveMaxStep >= 100.0f) { + i_this->current.pos.x = boomerang->current.pos.x; + i_this->current.pos.z = boomerang->current.pos.z; + } else { + cLib_addCalc2(&i_this->current.pos.x, boomerang->current.pos.x, 1.0f, + i_this->mBoomerangMoveMaxStep); + cLib_addCalc2(&i_this->current.pos.z, boomerang->current.pos.z, 1.0f, + i_this->mBoomerangMoveMaxStep); + cLib_addCalc2(&i_this->mBoomerangMoveMaxStep, 200.0f, 1.0f, 20.0f); + } + + cLib_addCalc2(&i_this->current.pos.y, boomerang->current.pos.y - 60.0f, 0.2f, 10.0f); + i_this->gravity = 0.0f; + i_this->speed.y = 0.0f; +} + +class daNpcMoiR_c : public fopAc_ac_c { +public: + MtxP getHandRMtx() { return mpMorf->getModel()->i_getAnmMtx(0x11); } + + /* 0x568 */ mDoExt_McaMorfSO* mpMorf; +}; + +/* 8094DED0-8094E2B0 002390 03E0+00 1/2 0/0 0/0 .text ni_demo0__FP8ni_class */ +static int ni_demo0(ni_class* i_this) { + cXyz sp28; + cXyz sp34; + daNpcMoiR_c* moi = (daNpcMoiR_c*)i_fopAcM_SearchByName(PROC_NPC_MOIR); + + if (i_this->mTimers[0] == 0 && moi != NULL) { + mDoMtx_stack_c::copy(moi->getHandRMtx()); + mDoMtx_stack_c::transM(-5.0f, 0.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&sp34); + } else { + return 0; + } + + int var_r30 = 0; + + switch (i_this->mMode) { + case 0: + i_this->current.pos.y = i_this->home.pos.y + 20000.0f; + i_this->speed.y = 0.0f; + + if (i_this->field_0x5fe == 0) { + break; + } + + i_this->mMode = 1; + i_this->field_0x5fe = 0; + i_this->mDemoInitPos.set(-37864.0f, 1012.0f, -22106.0f); + i_this->current.pos = i_this->mDemoInitPos; + anm_init(i_this, BCK_FLY, 1.0f, 2, 1.0f); + // fallthrough + case 1: + i_this->field_0x5c0 = sp34; + var_r30 = 2; + i_this->speedF = 20.0f; + + sp28 = i_this->field_0x5c0 - i_this->current.pos; + sp28.y += 50.0f; + + i_this->current.angle.y = cM_atan2s(sp28.x, sp28.z); + i_this->current.angle.x = + -cM_atan2s(sp28.y, JMAFastSqrt(sp28.x * sp28.x + sp28.z * sp28.z)); + + if (sp28.abs() < 30.0f) { + i_this->mMode = 2; + i_this->mTimers[1] = 20; + } + break; + case 2: + i_this->field_0x5c0 = sp34; + if (i_this->mTimers[1] != 0) { + cLib_addCalc2(&i_this->current.pos.x, i_this->field_0x5c0.x, 0.1f, 5.0f); + cLib_addCalc2(&i_this->current.pos.y, i_this->field_0x5c0.y, 0.1f, 5.0f); + cLib_addCalc2(&i_this->current.pos.z, i_this->field_0x5c0.z, 0.1f, 5.0f); + + if (i_this->mTimers[1] == 1) { + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 0.0f); + } + } else { + i_this->current.pos = i_this->field_0x5c0; + } + + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mAngleToPlayer, 2, 0x1000); + if (i_this->field_0x5fe != 0) { + i_this->field_0x5fe = 0; + i_this->mAction = ACTION_DROP_e; + i_this->mMode = 0; + i_this->speedF = 0.0f; + } + break; + } + + return var_r30; +} + +/* 8094E2B0-8094E378 002770 00C8+00 1/1 0/0 0/0 .text ni_message__FP8ni_class */ +static void ni_message(ni_class* i_this) { + switch (i_this->mMode) { + case 1: + break; + case 0: + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 0.0f); + i_this->mMode++; + break; + } + + cLib_addCalc0(&i_this->speedF, 1.0f, 2.0f); + cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mAngleToPlayer, 2, 0x1000); + + if (!i_dComIfGp_event_runCheck() && i_this->mDistToPlayer > 400.0f) { + i_this->mAction = ACTION_NORMAL_e; + i_this->mMode = 0; + } +} + +/* 8094E378-8094E4FC 002838 0184+00 1/1 0/0 0/0 .text playwallcheck__FP8ni_class */ +static BOOL playwallcheck(ni_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; + dBgS_LinChk lin_chk; + f32 x_diff = a_this->current.pos.x - a_this->old.pos.x; + f32 z_diff = a_this->current.pos.z - a_this->old.pos.z; + + if (x_diff * x_diff + z_diff * z_diff > 0.0f) { + cXyz offset; + cXyz line_start; + cXyz line_end; + line_start = a_this->current.pos; + line_start.y += 100.0f; + + cMtx_YrotS(*calc_mtx, cM_atan2s(x_diff, z_diff)); + offset.x = 0.0f; + offset.y = 0.0f; + offset.z = 50.0f; + MtxPosition(&offset, &line_end); + line_end += line_start; + + for (int i = 0; i < 2; i++) { + lin_chk.Set(&line_start, &line_end, a_this); + if (dComIfG_Bgsp().LineCross(&lin_chk)) { + a_this->current.pos.x = a_this->old.pos.x; + a_this->current.pos.z = a_this->old.pos.z; + a_this->speedF = 0.0f; + return true; + } + + line_start.y += 50.0f; + line_end.y += 50.0f; + } + } + + return false; +} + +/* 8094E4FC-8094ED90 0029BC 0894+00 2/1 0/0 0/0 .text ni_play__FP8ni_class */ +static int ni_play(ni_class* i_this) { + cXyz sp78; + cXyz sp84; + + int var_r30 = 0; + int var_r29 = 1; + s16 var_r28 = 0x4000; + + i_this->mPadMainStickX = mDoCPd_c::getStickX3D(PAD_1); + i_this->mPadMainStickY = mDoCPd_c::getStickY(PAD_1); + i_this->mPadSubStickY = mDoCPd_c::getSubStickY(PAD_1); + i_this->mPadSubStickX = mDoCPd_c::getSubStickX(PAD_1); + i_this->mPadAnalogL = mDoCPd_c::getAnalogL(PAD_1); + i_this->mPadHoldL = mDoCPd_c::getHoldL(PAD_1); + + if (fabsf(i_this->mPadMainStickX) < 0.05f) { + i_this->mPadMainStickX = 0.0f; + } + + if (fabsf(i_this->mPadMainStickY) < 0.05f) { + i_this->mPadMainStickY = 0.0f; + } + + if (fabsf(i_this->mPadSubStickY) < 0.05f) { + i_this->mPadSubStickY = 0.0f; + } + + if (fabsf(i_this->mPadSubStickX) < 0.05f) { + i_this->mPadSubStickX = 0.0f; + } + + switch (i_this->mMode) { + case 0: + i_this->mPlayAnmSpeed = 0.0f; + anm_init(i_this, BCK_WALK_A, 5.0f, J3DFrameCtrl::LOOP_REPEAT_e, i_this->mPlayAnmSpeed); + i_this->mMode++; + // fallthrough + case 1: + if (i_this->mpMorf->checkFrame(1.0f) || i_this->mpMorf->checkFrame(16.0f)) { + i_this->mSound.startSound(Z2SE_CHICKEN_WALK, 0, -1); + } + + if (i_this->speedF > 10.0f) { + i_this->mPlayAnmSpeed = 1.0f; + anm_init(i_this, BCK_WALK_B, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, i_this->mPlayAnmSpeed); + i_this->mMode++; + } + break; + case 2: + if (i_this->mpMorf->checkFrame(1.0f) || i_this->mpMorf->checkFrame(8.0f)) { + i_this->mSound.startSound(Z2SE_CHICKEN_WALK, 0, -1); + } + + if (i_this->speedF < 10.0f) { + i_this->mPlayAnmSpeed = 1.5f; + anm_init(i_this, BCK_WALK_A, 5.0f, J3DFrameCtrl::LOOP_REPEAT_e, i_this->mPlayAnmSpeed); + i_this->mMode = 1; + } + break; + case 5: + if (i_this->mpMorf->isStop()) { + i_this->mMode = 0; + } + break; + case 10: + var_r28 = 0x800; + + if (mDoCPd_c::getHoldA(PAD_1)) { + i_this->gravity = -1.0f; + if (i_this->speed.y < -10.0f) { + i_this->speed.y = -10.0f; + } + } else { + i_this->gravity = -2.0f; + } + + if (i_this->mAcch.i_ChkGroundHit() || i_this->field_0x848) { + i_this->mMode = 0; + i_this->field_0xaf0 = 0.0f; + } + + var_r29 = 0; + break; + case 20: + var_r30 = 1; + var_r28 = 0x400; + + if (i_this->field_0x848 == 0) { + i_this->mMode = 0; + } + break; + case 30: + var_r30 = 1; + i_this->current.angle.z = cM_ssin(i_this->mCounter * 9000) * 3000.0f; + + if (i_this->field_0x60c == 0) { + i_this->mMode = 1; + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 0.0f); + } + break; + } + + sp78.x = i_this->mPadMainStickX; + sp78.y = 0.0f; + sp78.z = -i_this->mPadMainStickY; + + camera_class* camera = dComIfGp_getCamera(0); + sp84 = camera->mLookat.mCenter - camera->mLookat.mEye; + + cMtx_YrotS(*calc_mtx, cM_atan2s(-sp84.x, -sp84.z)); + MtxPosition(&sp78, &sp84); + f32 var_f31 = sp84.x; + f32 var_f30 = sp84.z; + + if (fabsf(var_f31) >= 0.1f || fabsf(var_f30) >= 0.1f) { + cLib_addCalcAngleS2(&i_this->current.angle.y, cM_atan2s(var_f31, var_f30), 2, var_r28); + } + + f32 temp_f1 = JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30); + if (temp_f1 > 0.3f) { + cLib_addCalc2(&i_this->field_0xabc, temp_f1, 1.0f, 0.2f); + } else { + cLib_addCalc0(&i_this->field_0xabc, 1.0f, 0.2f); + } + + f32 var_f30_2 = i_this->field_0xabc * (i_this->field_0xabc * i_this->field_0xabc); + if (var_f30_2 > 1.0f) { + var_f30_2 = 1.0f; + } + + if (var_r30 != 0) { + cLib_addCalc2(&i_this->speedF, var_f30_2 * 2.0f, 1.0f, 0.05f); + } else { + f32 var_f1_2 = var_f30_2; + if (i_this->field_0xa04 <= -0x2000) { + var_f1_2 = 0.0f; + } else if (i_this->field_0xa04 <= -0x1800) { + var_f1_2 = var_f30_2 / 4; + } else if (i_this->field_0xa04 <= -0x1000) { + var_f1_2 = var_f30_2 / 2; + } else if (i_this->field_0xa04 <= -0x800) { + f32 temp = 0.75f; // temp needed for reg alloc + var_f1_2 = var_f30_2 * temp; + } + + i_this->speedF = var_f1_2 * 15.0f; + } + + if (i_this->mMode < 5) { + if (i_this->mAnmID == BCK_WALK_A) { + i_this->mPlayAnmSpeed = var_f30_2 * 5.0f; + } else { + i_this->mPlayAnmSpeed = var_f30_2 * 2.0f; + } + + i_this->mpMorf->setPlaySpeed(i_this->mPlayAnmSpeed); + + if (i_this->speed.y <= -15.0f) { + i_this->speed.y = 0.0f; + i_this->mMode = 10; + anm_init(i_this, BCK_MOGAKU, 2.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + hane_set(i_this, 5.0f, 25.0f); + } + } + + if (i_this->mMode < 20 && i_this->field_0x848 != 0) { + i_this->mMode = 20; + anm_init(i_this, BCK_WAIT1, 3.0f, J3DFrameCtrl::LOOP_REPEAT_e, 0.0f); + i_this->speedF *= 0.5f; + } + + if ((var_r29 != 0 || var_r30 != 0) && mDoCPd_c::getTrigA(PAD_1)) { + i_this->speed.y = 20.0f; + i_this->mMode = 10; + anm_init(i_this, BCK_MOGAKU, 2.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + hane_set(i_this, 5.0f, 25.0f); + } + + if (i_this->field_0x560 != 0) { + i_this->field_0x560 = 0; + + if (i_this->field_0x60c == 0) { + i_this->field_0x60c = cM_rndF(10.0f) + 5.0f; + i_this->mMode = 30; + anm_init(i_this, BCK_MOGAKU, 1.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + hane_set(i_this, 5.0f, 25.0f); + } + } + + if (fabsf(i_this->current.pos.y - i_this->mAcch.GetGroundH()) < 5.0f) { + i_this->field_0xa00 = i_this->mAcch.GetGroundH(); + } else if (fabsf(i_this->current.pos.y - i_this->mSplGroundH) < 40.0f) { + i_this->field_0xa00 = i_this->mSplGroundH; + } + + if (i_this->field_0xa00 >= i_this->current.pos.y) { + i_this->field_0xa00 = i_this->current.pos.y; + } + + cMtx_YrotS(*calc_mtx, i_this->shape_angle.y); + sp78.x = 0.0f; + sp78.y = 50.0f; + sp78.z = 10.0f; + MtxPosition(&sp78, &sp84); + sp84 += i_this->current.pos; + + if (fopAcM_gc_c::gndCheck(&sp84) != 0) { + sp84.y = fopAcM_gc_c::getGroundY(); + sp78 = sp84 - i_this->current.pos; + + i_this->field_0xa04 = -cM_atan2s(sp78.y, JMAFastSqrt(sp78.x * sp78.x + sp78.z * sp78.z)); + if (i_this->field_0xa04 > 0) { + i_this->field_0xa04 = 0; + } + } else { + i_this->field_0xa04 = 0; + } + + return var_r30; +} + +/* 8094ED90-8094F5D8 003250 0848+00 1/1 0/0 0/0 .text play_camera__FP8ni_class */ +static void play_camera(ni_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; // necessary for reg alloc + + camera_class* camera = dComIfGp_getCamera(i_dComIfGp_getPlayerCameraID(0)); + camera_class* camera0 = (camera_class*)dComIfGp_getCamera(0); + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + cXyz sp1D8; + cXyz sp1E4; + cXyz sp1F0; + cXyz sp1FC; + + int var_r27 = 0; + + f32 analog_l = i_this->mPadAnalogL; + f32 var_f31; + + BOOL hold_l = i_this->mPadHoldL; + cXyz sp208(0.0f, 0.0f, 0.0f); + + int var_r25 = 0; + switch (i_this->mPlayCamMode) { + case 0: + i_this->mPlayCamMode = 1; + i_this->field_0xa00 = a_this->current.pos.y; + // fallthrough + case 1: + if (!a_this->eventInfo.i_checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(a_this, 2, 0xFFFF, 0); + a_this->eventInfo.i_onCondition(2); + return; + } + + i_this->mPlayCamMode = 2; + i_this->mPlayCamModeTimer = 0; + camera->mCamera.Stop(); + + i_this->field_0xafc = 500.0f; + i_this->field_0xac8 = camera0->mLookat.mEye; + i_this->field_0xad4 = camera0->mLookat.mCenter; + i_this->field_0xaec = dComIfGd_getView()->mFovy; + + player->i_changeOriginalDemo(); + player->i_changeDemoMode(1, 1, 0, 0); + + mDoGph_gInf_c::fadeOut(0.1f, g_blackColor); + // fallthrough + case 2: + if (i_this->mPlayCamModeTimer != 30) { + break; + } + + mDoGph_gInf_c::fadeOut(-0.05f, g_blackColor); + i_this->mPlayCamMode = 3; + i_this->mPlayCamModeTimer = 0; + // fallthrough + case 3: + var_r25 = 1; + i_this->field_0xaec = 55.0f; + sp1D8 = i_this->field_0xac8 - a_this->current.pos; + + s16 var_r4_2 = cM_atan2s(-sp1D8.x, -sp1D8.z); + var_f31 = TREG_F(12) + 0.3f; + f32 var_f29 = i_this->field_0xafc; + f32 var_f28 = 180.0f; + f32 var_f27 = 100.0f; + + if (analog_l > TREG_F(12) + 0.5f) { + var_r4_2 = a_this->shape_angle.y; + var_f31 = NREG_F(5) + 0.5f; + + if (hold_l) { + var_r27 = 1; + var_f29 = 300.0f; + var_f28 = 230.0f; + var_f27 = 150.0f; + i_this->field_0xafc = 500.0f; + } + } else { + f32 temp = i_this->mPadSubStickX; + + temp *= TREG_F(3) + 5000.0f; + i_this->field_0xaf4 += (s16)temp; + i_this->field_0xafc += i_this->mPadSubStickY * (TREG_F(7) + -25.0f); + + if (i_this->field_0xafc > (TREG_F(8) + 800.0f)) { + i_this->field_0xafc = (TREG_F(8) + 800.0f); + } else if (i_this->field_0xafc < (TREG_F(9) + 300.0f)) { + i_this->field_0xafc = (TREG_F(9) + 300.0f); + } + } + + cLib_addCalcAngleS2(&i_this->field_0xaf4, var_r4_2, 2, 0x2000); + cLib_addCalc2(&i_this->field_0xaf8, var_f29, 0.5f, 30.0f); + cLib_addCalc2(&i_this->field_0xb00, var_f28, 0.5f, 5.0f); + cLib_addCalc2(&i_this->field_0xb04, var_f27, 0.5f, 5.0f); + + cMtx_YrotS(*calc_mtx, i_this->field_0xaf4); + sp1D8.x = 0.0f; + sp1D8.y = 0.0f; + sp1D8.z = -i_this->field_0xaf8; + MtxPosition(&sp1D8, &sp1F0); + sp1F0 += a_this->current.pos; + + cLib_addCalc2(&i_this->field_0xac8.x, sp1F0.x, var_f31, 1000.0f); + cLib_addCalc2(&i_this->field_0xac8.z, sp1F0.z, var_f31, 1000.0f); + + f32 var_f3; + if (i_this->field_0xac8.y < sp1F0.y) { + var_f3 = 1000.0f; + } else { + var_f31 = 0.1f; + var_f3 = 10.0f; + } + cLib_addCalc2(&i_this->field_0xac8.y, sp1F0.y, var_f31, var_f3); + + sp1FC = a_this->current.pos; + sp1FC.y = i_this->field_0xb04 + + (i_this->field_0xa00 + + ((a_this->current.pos.y - i_this->field_0xa00) * (AREG_F(11) + 0.3f))); + i_this->field_0xad4.y = sp1FC.y; + + cLib_addCalc2(&i_this->field_0xaf0, 1.0f, 1.0f, NREG_F(8) + 0.01f); + cLib_addCalc2(&i_this->field_0xad4.x, sp1FC.x, NREG_F(4) + 0.3f, 200.0f); + cLib_addCalc2(&i_this->field_0xad4.y, sp1FC.y, NREG_F(5) + 0.2f, + 200.0f * i_this->field_0xaf0); + cLib_addCalc2(&i_this->field_0xad4.z, sp1FC.z, NREG_F(4) + 0.3f, 200.0f); + + if (i_this->mPlayCamModeTimer < 2) { + i_this->field_0xac8 = sp1F0; + i_this->field_0xad4 = sp1FC; + } + + if (i_this->mPlayCamModeTimer == 350 || (a_this->home.pos.y - a_this->current.pos.y) > 2000.0f) { + i_this->mPlayCamMode = 4; + i_this->mPlayCamModeTimer = 0; + mDoGph_gInf_c::fadeOut(0.05f, g_blackColor); + } + break; + case 4: + var_r25 = 1; + if (i_this->mPlayCamModeTimer == 30) { + player = (daPy_py_c*)dComIfGp_getPlayer(0); + mDoGph_gInf_c::fadeOut(-0.05f, g_blackColor); + + cMtx_YrotS(*calc_mtx, player->shape_angle.y); + sp1D8.x = 0.0f; + sp1D8.y = JREG_F(1) + 200.0f; + sp1D8.z = JREG_F(2) + -250.0f; + MtxPosition(&sp1D8, &i_this->field_0xac8); + i_this->field_0xac8 += player->current.pos; + + i_this->field_0xad4 = player->current.pos; + i_this->field_0xad4.y += 120.0f; + + camera->mCamera.Reset(i_this->field_0xad4, i_this->field_0xac8, i_this->field_0xaec, 0); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + i_dComIfGp_event_reset(); + + player->i_cancelOriginalDemo(); + + i_this->mPlayCamMode = 0; + i_this->mAction = ACTION_NORMAL_e; + i_this->mMode = 0; + a_this->health = 10; + } + break; + } + + if (i_this->mPlayCamMode != 0) { + i_this->mPlayCamModeTimer++; + + cXyz sp214(i_this->field_0xac8); + cXyz sp220(i_this->field_0xad4); + + if (var_r25 != 0) { + dBgS_CamLinChk cam_line_chk; + cam_line_chk.Set(&i_this->field_0xad4, &i_this->field_0xac8, a_this); + + if (dComIfG_Bgsp().LineCross(&cam_line_chk)) { + sp1D8.x = sp214.x - sp220.x; + sp1D8.z = sp214.z - sp220.z; + + s16 sp8 = (s16)cM_atan2s(sp1D8.x, sp1D8.z); + cMtx_YrotS(*calc_mtx, sp8); + sp1D8.x = 0.0f; + sp1D8.y = 0.0f; + sp1D8.z = hREG_F(10) + 50.0f; + MtxPosition(&sp1D8, &sp1E4); + sp214 = cam_line_chk.i_GetCross() - sp1E4; + } + + if (var_r27 == 0) { + dBgS_GndChk gnd_chk; + dBgS_ObjGndChk_Spl gnd_chk_spl; + + sp1E4.x = sp214.x; + sp1E4.y = sp214.y + 200.0f + nREG_F(8); + sp1E4.z = sp214.z; + + gnd_chk.SetPos(&sp1E4); + f32 temp_f30_2 = dComIfG_Bgsp().GroundCross(&gnd_chk); + temp_f30_2 = temp_f30_2; + + gnd_chk_spl.SetPos(&sp1E4); + f32 temp_f1_4 = dComIfG_Bgsp().GroundCross(&gnd_chk_spl); + + if (temp_f30_2 < temp_f1_4) { + sp214.y = temp_f1_4; + } else { + sp214.y = temp_f30_2; + } + + sp214.y += i_this->field_0xb00; + if (sp214.y < a_this->current.pos.y + nREG_F(9)) { + sp214.y = a_this->current.pos.y + nREG_F(9); + } + } else { + sp214.y += NREG_F(18) + 250.0f; + } + } + + camera->mCamera.Set(sp220, sp214, i_this->field_0xaec, 0); + } +} + +/* 8094F5D8-809502B4 003A98 0CDC+00 2/1 0/0 0/0 .text action__FP8ni_class */ +static void action(ni_class* i_this) { + fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; // necessary for reg alloc + cXyz sp148; + cXyz sp154; + + a_this->gravity = -5.0f; + i_this->mCcSph.OnCoSetBit(); + + i_this->mDistToPlayer = fopAcM_searchPlayerDistance(a_this); + i_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(a_this); + a_this->current.angle.z = 0; + + damage_check(i_this); + + BOOL var_r27 = false; + BOOL var_r26 = false; + BOOL var_r25 = false; + BOOL var_r24 = false; + BOOL update_position = true; + int demo_state = 1; + + if (i_this->field_0x610 < 1.0f) { + i_this->field_0xa50 = 0; + + switch (i_this->mAction) { + case ACTION_NORMAL_e: + ni_normal(i_this); + var_r27 = true; + var_r26 = true; + var_r25 = true; + i_this->field_0xa50 = 1; + break; + case ACTION_AWAY_e: + ni_away(i_this); + var_r27 = true; + var_r26 = true; + var_r25 = true; + break; + case ACTION_SWIM_e: + ni_swim(i_this); + i_this->field_0xa50 = 1; + var_r25 = true; + var_r24 = true; + break; + case ACTION_CARRY_e: + update_position = ni_carry(i_this); + break; + case ACTION_FLY_e: + ni_fly(i_this); + var_r25 = true; + break; + case ACTION_DROP_e: + ni_drop(i_this); + var_r25 = true; + break; + case ACTION_RETURN_e: + ni_return(i_this); + break; + case ACTION_DAMAGE_e: + ni_damage(i_this); + var_r27 = true; + var_r26 = true; + break; + case ACTION_WINDSPIN_e: + ni_windspin(i_this); + var_r25 = true; + break; + case ACTION_DEMO0_e: + demo_state = ni_demo0(i_this); + break; + case ACTION_MESSAGE_e: + ni_message(i_this); + var_r27 = true; + var_r25 = true; + var_r26 = true; + i_this->field_0xa50 = 2; + break; + case ACTION_PLAY_e: + var_r24 = ni_play(i_this); + break; + } + + if (var_r27 && a_this->speed.y <= -15.0f) { + i_this->mAction = ACTION_DROP_e; + i_this->mMode = 0; + a_this->speed.y = 0.0f; + var_r25 = true; + } + + if (i_this->field_0x9e4 == 0 && var_r26 && i_this->field_0x848 != 0) { + i_this->mAction = ACTION_SWIM_e; + i_this->mMode = 0; + i_this->field_0x9e4 = 30; + a_this->speedF *= 0.5f; + var_r25 = true; + } + + if (i_this->field_0xa50 == 1 && daPy_py_c::i_checkNowWolf() && + i_this->mDistToPlayer < 300.0f) + { + i_this->mAction = ACTION_MESSAGE_e; + i_this->mMode = 0; + var_r25 = true; + } + + if (var_r25) { + cLib_onBit(a_this->attention_info.flags, 0x10); + ni_carry_check(i_this); + } else { + cLib_offBit(a_this->attention_info.flags, 0x10); + } + } + + cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 2, 0x2000); + a_this->shape_angle.z = a_this->current.angle.z; + + if (i_this->mAcch.ChkWallHit()) { + a_this->speedF *= 0.5f; + i_this->field_0x610 = 0.0f; + } + + if (demo_state == 1) { + cMtx_YrotS(*calc_mtx, a_this->current.angle.y); + sp148.x = 0.0f; + sp148.y = 0.0f; + sp148.z = a_this->speedF; + + MtxPosition(&sp148, &sp154); + + if (i_this->field_0x610 > 1.0f) { + cXyz sp160; + sp148.x = 0.0f; + sp148.y = 0.0f; + sp148.z = -i_this->field_0x610; + + cMtx_YrotS(*calc_mtx, i_this->field_0x614); + MtxPosition(&sp148, &sp160); + sp154 += sp160; + } + + i_this->speed.x = sp154.x; + i_this->speed.z = sp154.z; + a_this->current.pos += a_this->speed; + + a_this->speed.y += a_this->gravity; + if (a_this->speed.y < -80.0f) { + a_this->speed.y = -80.0f; + } + + cLib_addCalc0(&i_this->field_0x5d8, 1.0f, 5.0f); + } else if (demo_state == 2) { + cMtx_YrotS(*calc_mtx, i_this->current.angle.y); + cMtx_XrotM(*calc_mtx, i_this->current.angle.x); + + sp148.x = 0.0f; + sp148.y = 0.0f; + sp148.z = a_this->speedF; + + MtxPosition(&sp148, &sp154); + a_this->current.pos += sp154; + + sp148 = i_this->field_0x5c0 - i_this->mDemoInitPos; + f32 var_f31 = sp148.abs(); + + sp148 = i_this->field_0x5c0 - a_this->current.pos; + f32 var_f1 = sp148.abs(); + + f32 var_f3 = var_f31 * 0.2f; + if (var_f3 > 100.0f) { + var_f3 = 100.0f; + } + + i_this->field_0x5d8 = var_f3 * cM_ssin((var_f1 / var_f31) * (f32)0x8000); + } else { + cLib_addCalc0(&i_this->field_0x5d8, 1.0f, 5.0f); + } + + if (i_this->field_0x610 > 1.0f) { + cLib_addCalc0(&i_this->field_0x610, 1.0f, 5.0f); + a_this->speedF = 0.0f; + hane_set(i_this, 1.0f, 25.0f); + } + + if (!fopAcM_checkCarryNow(a_this)) { + cXyz* cc_move = i_this->mCcStts.GetCCMoveP(); + + if (cc_move != NULL) { + a_this->current.pos.x += cc_move->x * 0.5f; + a_this->current.pos.z += cc_move->z * 0.5f; + } + } + + if (update_position) { + if (i_this->mAction == ACTION_PLAY_e) { + playwallcheck(i_this); + } else if (strcmp(dComIfGp_getStartStageName(), "F_SP103") == 0) { + sp148.x = 1076.0f - a_this->current.pos.x; + sp148.z = 4128.0f - a_this->current.pos.z; + + if (sp148.x * sp148.x + sp148.z * sp148.z < 50000.0f) { + playwallcheck(i_this); + } + } + + i_this->mAcch.CrrPos(dComIfG_Bgsp()); + if (i_this->mAcch.i_ChkGroundHit()) { + a_this->home.pos.y = a_this->current.pos.y; + } + } + + if (!(i_this->mCounter & 3)) { + if (cM_rndF(1.0f) < 0.3f) { + i_this->field_0x620 = cM_rndFX(5000.0f); + } + + if (cM_rndF(1.0f) < 0.3f) { + i_this->field_0x61e = cM_rndFX(1000.0f); + } + + if (cM_rndF(1.0f) < 0.3f) { + i_this->field_0x622 = cM_rndFX(1000.0f); + } + + if (cM_rndF(1.0f) < 0.3f) { + i_this->field_0x628 = cM_rndFX(1000.0f); + } + + if (cM_rndF(1.0f) < 0.3f) { + i_this->field_0x62a = cM_rndFX(1000.0f); + } + } + + cLib_addCalcAngleS2(&i_this->field_0x61a, i_this->field_0x620, 2, 0x1000); + cLib_addCalcAngleS2(&i_this->field_0x618, i_this->field_0x61e, 2, 0x1000); + cLib_addCalcAngleS2(&i_this->field_0x61c, i_this->field_0x622, 2, 0x1000); + cLib_addCalcAngleS2(&i_this->field_0x626, i_this->field_0x62a, 4, 500); + cLib_addCalcAngleS2(&i_this->field_0x624, i_this->field_0x628, 4, 500); + + for (int i = 0; i < 4; i++) { + static f32 j_w[] = {6000.0f, 10000.0f, 6000.0f, 10000.0f}; + + static f32 j_a[] = {-1000.0f, 10000.0f, -1000.0f, 10000.0f}; + + if (var_r24 != 0) { + i_this->field_0x9ee[i] = + j_a[i] + (j_w[i] * (0.5f * a_this->speedF * + cM_ssin(i_this->mCounter * 0x1000 + (s32)-(i * 0x4000)))); + } else { + i_this->field_0x9ee[i] = 0; + } + } + + if (var_r24 != 0) { + i_this->field_0x9ec = + (a_this->speedF * (cM_ssin(i_this->mCounter * 0x1000) * 800.0f)) * 0.5f; + + cXyz hamon_pos(a_this->current.pos); + hamon_pos.y = i_this->mSplGroundH; + + f32 emit_rate; + if (a_this->speedF >= 10.0f) { + emit_rate = 0.2f; + } else { + emit_rate = 0.05f; + } + + fopAcM_effHamonSet(&i_this->mHamonEmtrID, &hamon_pos, 1.0f, emit_rate); + fopAcM_riverStream(&a_this->current.pos, &i_this->field_0x9e6, &i_this->field_0x9e8, 0.5f); + } else { + i_this->field_0x9ec = 0; + } + + dBgS_ObjGndChk_Spl gnd_chk_spl; + i_this->field_0x848 = 0; + + dBgS_LinChk line_chk; + sp148.x = a_this->current.pos.x; + sp148.y = a_this->current.pos.y + 3000.0f; + sp148.z = a_this->current.pos.z; + line_chk.Set(&a_this->current.pos, &sp148, a_this); + + if (dComIfG_Bgsp().LineCross(&line_chk)) { + sp148.y = line_chk.i_GetCross().y - 10.0f; + } + + gnd_chk_spl.SetPos(&sp148); + i_this->mSplGroundH = dComIfG_Bgsp().GroundCross(&gnd_chk_spl); + + if (a_this->current.pos.y <= i_this->mSplGroundH - 30.0f) { + cLib_addCalc2(&a_this->current.pos.y, i_this->mSplGroundH - 30.0f, 0.5f, 5.0f); + + if (a_this->speed.y <= -10.0f) { + i_this->field_0xa06 = 1; + } + + a_this->speed.y = 0.0f; + i_this->field_0x848 = 1; + } + + if (i_this->field_0xa06) { + cXyz sp178(a_this->current.pos); + sp178.y = i_this->mSplGroundH; + + static cXyz sc(0.5f, 0.5f, 0.5f); + + static u16 w_eff_id[] = {0x01B8, 0x01B9, 0x01BA, 0x01BB}; + + for (int i = 0; i < 4; i++) { + i_this->field_0xa08[i] = + dComIfGp_particle_set(i_this->field_0xa08[i], w_eff_id[i], &sp178, &a_this->tevStr, + 0, &sc, 0xFF, NULL, -1, NULL, NULL, NULL); + } + + i_this->mSound.startSound(Z2SE_CM_BODYFALL_WATER_S, 0, -1); + i_this->field_0xa06 = 0; + } +} + +/* 809502B4-809503D8 004774 0124+00 1/1 0/0 0/0 .text message__FP8ni_class */ +static int message(ni_class* i_this) { + if (i_this->field_0xa52) { + i_this->field_0x60c = 10; + + if (i_this->mMsgFlow.doFlow(i_this, NULL, 0)) { + i_dComIfGp_event_reset(); + i_this->field_0xa52 = 0; + } + return 1; + } + + if (i_dComIfGp_event_runCheck() && i_this->eventInfo.checkCommandTalk()) { + i_this->mMsgFlow.init(i_this, i_this->mFlowNo, 0, NULL); + i_this->field_0xa52 = 1; + OS_REPORT("////////NI MSG FNO %d\n", i_this->mFlowNo); + } + + if (i_this->field_0xa50 == 2 && i_this->mFlowNo != -1 && daPy_py_c::i_checkNowWolf()) { + fopAcM_OnStatus(i_this, 0); + cLib_onBit(i_this->attention_info.flags, 10); + i_this->eventInfo.i_onCondition(1); + } else { + fopAcM_OffStatus(i_this, 0); + cLib_offBit(i_this->attention_info.flags, 10); + } + + return 0; +} + +/* 809503D8-80950870 004898 0498+00 2/1 0/0 0/0 .text daNi_Execute__FP8ni_class */ +static int daNi_Execute(ni_class* i_this) { + if (cDmrNowMidnaTalk() && !fopAcM_checkCarryNow(i_this)) { + return 1; + } + + cXyz sp30(0.0f, 0.0f, 0.0f); + cXyz eno_pos; + + i_this->mCounter++; + i_this->field_0xa50 = 0; + + for (int i = 0; i < 4; i++) { + if (i_this->mTimers[i] != 0) { + i_this->mTimers[i]--; + } + } + + if (i_this->field_0x60c != 0) { + i_this->field_0x60c--; + } + + if (i_this->field_0x60e != 0) { + i_this->field_0x60e--; + } + + if (i_this->field_0x9e4 != 0) { + i_this->field_0x9e4--; + } + + action(i_this); + + J3DModel* model = i_this->mpMorf->getModel(); + if (i_this->field_0xb08) { + fopAcM_OnCarryType(i_this, fopAcM_CARRY_CHICKEN); + i_this->field_0xb08 = 0; + } else { + mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + i_this->field_0x5d8, + i_this->current.pos.z); + mDoMtx_stack_c::YrotM(i_this->shape_angle.y + i_this->field_0x9ec); + mDoMtx_stack_c::ZrotM(i_this->shape_angle.z); + mDoMtx_stack_c::scaleM(l_HIO.mBaseSize, l_HIO.mBaseSize, l_HIO.mBaseSize); + model->i_setBaseTRMtx(mDoMtx_stack_c::get()); + } + + i_this->mpMorf->play(&i_this->eyePos, 0, 0); + i_this->mpBtk->setFrame(i_this->mColor); + i_this->mpMorf->modelCalc(); + + MTXCopy(model->i_getAnmMtx(5), *calc_mtx); + MtxPosition(&sp30, &i_this->eyePos); + i_this->attention_info.position = i_this->eyePos; + i_this->attention_info.position.y += 30.0f; + + if (i_this->mAction != ACTION_DEMO0_e) { + i_this->mCcSph.SetC(i_this->eyePos); + i_this->mCcSph.SetR(l_HIO.mBaseSize * 23.0f); + dComIfG_Ccsp()->Set(&i_this->mCcSph); + } + + i_this->mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this))); + + if (i_this->mAnmID == BCK_MOGAKU || i_this->mAnmID == BCK_FLY || i_this->mAnmID == BCK_FALL) { + if (i_this->mpMorf->checkFrame(1) || i_this->mpMorf->checkFrame(5) || + i_this->mpMorf->checkFrame(9) || i_this->mpMorf->checkFrame(13) || + i_this->mpMorf->checkFrame(17) || i_this->mpMorf->checkFrame(21) || + i_this->mpMorf->checkFrame(25)) + { + i_this->mSound.startSound(Z2SE_CHICKEN_WING, 0, -1); + } + + if (i_this->mpMorf->checkFrame(1)) { + i_this->mSound.startSound(Z2SE_CHICKEN_CRY, 0, -1); + } + } + + message(i_this); + + if (i_this->mAction == ACTION_PLAY_e) { + play_camera(i_this); + } + + if (i_this->mColor == COLOR_GOLD) { + eno_pos = i_this->current.pos; + eno_pos.y += 40.0f; + + static u16 key_eno[] = {0x827A, 0x827B}; + + for (int i = 0; i < 2; i++) { + i_this->mEnoEmtrIDs[i] = + dComIfGp_particle_set(i_this->mEnoEmtrIDs[i], key_eno[i], &eno_pos, NULL, NULL); + } + } + + return 1; +} + +/* 80950870-80950878 004D30 0008+00 1/0 0/0 0/0 .text daNi_IsDelete__FP8ni_class */ +static int daNi_IsDelete(ni_class* i_this) { + return 1; +} + +/* 80950878-809508E0 004D38 0068+00 1/0 0/0 0/0 .text daNi_Delete__FP8ni_class */ +static int daNi_Delete(ni_class* i_this) { + dComIfG_resDelete(&i_this->mPhase, "Ni"); + + if (i_this->mInitHIO) { + data_8095158d = 0; + } + + if (i_this->heap != NULL) { + i_this->mSound.deleteObject(); + } + + return 1; +} + +/* 809508E0-80950AE8 004DA0 0208+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static BOOL useHeapInit(fopAc_ac_c* i_this) { + ni_class* a_this = (ni_class*)i_this; + + a_this->mpMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("Ni", 16), NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("Ni", 11), 0, 1.0f, + 0, -1, 1, NULL, 0x80000, 0x11000284); + + if (a_this->mpMorf == NULL || a_this->mpMorf->getModel() == NULL) { + return false; + } + + J3DModel* model = a_this->mpMorf->getModel(); + a_this->model = model; + model->setUserArea((u32)a_this); + + for (u16 i = 0; i < model->getModelData()->getJointNum(); i++) { + model->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack); + } + + a_this->mpBtk = new mDoExt_btkAnm(); + if (a_this->mpBtk == NULL) { + return false; + } + + if (!a_this->mpBtk->init(a_this->mpMorf->getModel()->getModelData(), + (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("Ni", 0x13), TRUE, + J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1)) + { + return false; + } + + a_this->mSound.init(&a_this->current.pos, 2); + return true; +} + +/* 80950B30-80950F04 004FF0 03D4+00 1/0 0/0 0/0 .text daNi_Create__FP10fopAc_ac_c */ +static int daNi_Create(fopAc_ac_c* i_this) { + ni_class* a_this = (ni_class*)i_this; + fopAcM_SetupActor(a_this, ni_class); + + int phase_state = dComIfG_resLoad(&a_this->mPhase, "Ni"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("NI PARAM %x\n", fopAcM_GetParam(a_this)); + + a_this->field_0x5b4 = fopAcM_GetParam(a_this); + a_this->mType = fopAcM_GetParam(a_this) >> 8; + + if (a_this->mType == COLOR_RANDOM) { + a_this->mColor = cM_rndF(2.999f); + } else { + a_this->mColor = a_this->mType; + if (a_this->mColor > COLOR_GOLD) { + a_this->mColor = COLOR_GOLD; + } + } + + u32 params = fopAcM_GetParam(i_this); + params &= 0xFFFF00FF; + params |= (a_this->mColor << 8); + fopAcM_SetParam(i_this, params); + + a_this->mFlowNo = i_this->current.angle.x; + i_this->shape_angle.x = 0; + i_this->current.angle.x = 0; + + OS_REPORT("NI//////////////NI SET 1 !!\n"); + + if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0xDE0)) { + OS_REPORT("//////////////NI SET NON !!\n"); + return cPhs_ERROR_e; + } + + OS_REPORT("NI//////////////NI SET 2 !!\n"); + + if (data_8095158d == 0) { + a_this->mInitHIO = true; + data_8095158d = 1; + l_HIO.field_0x04 = -1; + } + + i_this->attention_info.flags = 0; + a_this->mAction = ACTION_NORMAL_e; + fopAcM_SetMtx(i_this, a_this->mpMorf->getModel()->getBaseTRMtx()); + + a_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, + &a_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); + a_this->mAcchCir.SetWall(55.0f, 45.0f); + + a_this->field_0x560 = 0; + i_this->health = 10; + + a_this->mCcStts.Init(10, 0, i_this); + + static dCcD_SrcSph cc_sph_src = { + { + {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 20.0f} // mSph + } // mSphAttr + }; + + a_this->mCcSph.Set(cc_sph_src); + a_this->mCcSph.SetStts(&a_this->mCcStts); + + if (a_this->checkGold()) { + a_this->mCcSph.OffTgSetBit(); + } + + i_this->attention_info.field_0x0[4] = 7; + a_this->mCounter = cM_rndF(0x10000); + + cXyz sp34(i_this->current.pos); + sp34.y += 50.0f; + + if (fopAcM_gc_c::gndCheck(&sp34)) { + i_this->current.pos.y = fopAcM_gc_c::getGroundY(); + i_this->old = i_this->current; + } + + if (strcmp(dComIfGp_getStartStageName(), "F_SP108") == 0 && + !i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[528])) + { + a_this->mAction = ACTION_DEMO0_e; + a_this->mTimers[0] = 10; + } + + a_this->mSplGroundH = -1000000000.0f; + + daNi_Execute(a_this); + } + + return phase_state; +} + +/* 80951620-80951624 0000D8 0004+00 0/0 0/0 0/0 .bss + * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ +#pragma push +#pragma force_active on +static u8 data_80951620[4]; +#pragma pop + +/* 80951624-80951628 0000DC 0004+00 0/0 0/0 0/0 .bss + * sInstance__35JASGlobalInstance<14JASAudioThread> */ +#pragma push +#pragma force_active on +static u8 data_80951624[4]; +#pragma pop + +/* 80951628-8095162C 0000E0 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ +#pragma push +#pragma force_active on +static u8 data_80951628[4]; +#pragma pop + +/* 8095162C-80951630 0000E4 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ +#pragma push +#pragma force_active on +static u8 data_8095162C[4]; +#pragma pop + +/* 80951630-80951634 0000E8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80951630[4]; +#pragma pop + +/* 80951634-80951638 0000EC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80951634[4]; +#pragma pop + +/* 80951638-8095163C 0000F0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> + */ +#pragma push +#pragma force_active on +static u8 data_80951638[4]; +#pragma pop + +/* 8095163C-80951640 0000F4 0004+00 0/0 0/0 0/0 .bss + * sInstance__36JASGlobalInstance<15JAISoundStarter> */ +#pragma push +#pragma force_active on +static u8 data_8095163C[4]; +#pragma pop + +/* 80951640-80951644 0000F8 0004+00 0/0 0/0 0/0 .bss + * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ +#pragma push +#pragma force_active on +static u8 data_80951640[4]; +#pragma pop + +/* 80951644-80951648 0000FC 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ +#pragma push +#pragma force_active on +static u8 data_80951644[4]; +#pragma pop + +/* 80951648-8095164C 000100 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ +#pragma push +#pragma force_active on +static u8 data_80951648[4]; +#pragma pop + +/* 8095164C-80951650 000104 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ +#pragma push +#pragma force_active on +static u8 data_8095164C[4]; +#pragma pop + +/* 80951650-80951654 000108 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ +#pragma push +#pragma force_active on +static u8 data_80951650[4]; +#pragma pop + +/* 80951654-80951658 00010C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80951654[4]; +#pragma pop + +/* 80951658-8095165C 000110 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAISoundInfo> */ +#pragma push +#pragma force_active on +static u8 data_80951658[4]; +#pragma pop + +/* 8095165C-80951660 000114 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13JAUSoundTable> */ +#pragma push +#pragma force_active on +static u8 data_8095165C[4]; +#pragma pop + +/* 80951660-80951664 000118 0004+00 0/0 0/0 0/0 .bss + * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ +#pragma push +#pragma force_active on +static u8 data_80951660[4]; +#pragma pop + +/* 80951664-80951668 00011C 0004+00 0/0 0/0 0/0 .bss + * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ +#pragma push +#pragma force_active on +static u8 data_80951664[4]; +#pragma pop + +/* 80951668-8095166C 000120 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> + */ +#pragma push +#pragma force_active on +static u8 data_80951668[4]; +#pragma pop + +/* 8095166C-80951670 000124 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ +#pragma push +#pragma force_active on +static u8 data_8095166C[4]; +#pragma pop + +/* 80951670-80951674 000128 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> + */ +#pragma push +#pragma force_active on +static u8 data_80951670[4]; +#pragma pop + +/* 80951674-80951678 00012C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80951674[4]; +#pragma pop + +/* 80951678-8095167C 000130 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> + */ +#pragma push +#pragma force_active on +static u8 data_80951678[4]; +#pragma pop + +/* 8095167C-80951680 000134 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> + */ +#pragma push +#pragma force_active on +static u8 data_8095167C[4]; +#pragma pop + +/* 80951680-80951684 000138 0004+00 0/0 0/0 0/0 .bss + * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ +#pragma push +#pragma force_active on +static u8 data_80951680[4]; +#pragma pop + +/* 8095131C-8095131C 00015C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ + +/* 80951480-809514A0 -00001 0020+00 1/0 0/0 0/0 .data l_daNi_Method */ +SECTION_DATA static void* l_daNi_Method[8] = { + (void*)daNi_Create__FP10fopAc_ac_c, + (void*)daNi_Delete__FP8ni_class, + (void*)daNi_Execute__FP8ni_class, + (void*)daNi_IsDelete__FP8ni_class, + (void*)daNi_Draw__FP8ni_class, + (void*)NULL, + (void*)NULL, + (void*)NULL, +}; + +/* 809514A0-809514D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NI */ +SECTION_DATA extern void* g_profile_NI[12] = { + (void*)0xFFFFFFFD, (void*)0x0007FFFD, (void*)0x01080000, (void*)&g_fpcLf_Method, + (void*)0x00000B0C, (void*)NULL, (void*)NULL, (void*)&g_fopAc_Method, + (void*)0x02B70000, (void*)&l_daNi_Method, (void*)0x080C4000, (void*)0x04000000, +}; \ No newline at end of file