summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-03-13 23:28:01 -0700
committerGitHub <noreply@github.com>2024-03-14 08:28:01 +0200
commite4d6e610f644e919928579256d925d83c8e28684 (patch)
treedd332040fe27d1e7c478148d5660c6d9147e4c50
parent42418393d5f5b28dad412641747f5e5c8967f290 (diff)
d_a_mirror done, d_a_ni 99% done (#2095)
* d_a_mirror done * d_a_ni 99.9% done * remove asm * some d_a_ni doc * progress
-rw-r--r--Progress.md8
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__4cXyzFv.s17
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/create__10daMirror_cFv.s197
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/execute__10daMirror_cFv.s60
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/mainDraw__16dMirror_packet_cFv.s612
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/mirrorZdraw__16dMirror_packet_cFPfPfffffff.s319
-rw-r--r--asm/rel/d/a/d_a_mirror/d_a_mirror/modelDraw__16dMirror_packet_cFP8J3DModelPA4_f.s136
-rw-r--r--include/JSystem/J3DU/J3DUClipper.h4
-rw-r--r--include/JSystem/JParticle/JPAEmitter.h1
-rw-r--r--include/SSystem/SComponent/c_xyz.h7
-rw-r--r--include/d/cc/d_cc_uty.h1
-rw-r--r--include/d/com/d_com_inf_game.h4
-rw-r--r--include/f_op/f_op_actor_mng.h1
-rw-r--r--include/m_Do/m_Do_ext.h2
-rw-r--r--include/m_Do/m_Do_lib.h2
-rw-r--r--include/rel/d/a/d_a_mirror/d_a_mirror.h28
-rw-r--r--include/rel/d/a/d_a_ni/d_a_ni.h2
-rw-r--r--libs/JSystem/J3DU/J3DUClipper.cpp4
-rw-r--r--libs/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h1
-rw-r--r--rel/d/a/d_a_mirror/d_a_mirror.cpp870
-rw-r--r--rel/d/a/d_a_ni/d_a_ni.cpp2
-rw-r--r--rel/d/a/d_a_ni/d_a_ni_NONMATCHING.cpp2670
22 files changed, 3081 insertions, 1867 deletions
diff --git a/Progress.md b/Progress.md
index 47400bc8aa..df3bcbb011 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 2e2ae1844c..0000000000
--- 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 a0b4f27be4..0000000000
--- 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 5595909ddb..0000000000
--- 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 b46e00a9cc..0000000000
--- 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 4a57667202..0000000000
--- 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 34e5b343ef..0000000000
--- 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 e5df65b192..119490e472 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 7e1104bbd7..4a9d3cb5c0 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 54d717a73d..4a3e7ba402 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 25c0f79a72..41a732de5a 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 465b3accbc..bf3401f928 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 1f786ac2d0..1402429be2 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 0a44f91267..8fda612d6a 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 feb722be30..8a30d5c78e 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 900bc42ba2..108064c818 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 3913eb7a02..7ed39d41c7 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 95edb61a2c..c215769d02 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, &param_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 ca4310d273..2beaeba9fd 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 d578948609..2659cf9539 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 "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 "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 "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);
-
- if (mViewScale.y > 0.0f && cStack_48.z > cStack_54.z) {
+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]);
+
+ 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<f32>(var_r3->x, temp_f26, temp_f25);
+ var_r3->y = cLib_minMaxLimit<f32>(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 ? &param_0->mPhase : (request_of_phase_process_class*)param_0, l_arcName);
- } else if (mirrorType == 3) {
- dComIfG_resDelete(param_0 ? &param_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, &param_0->current.pos, &param_0->tevStr);
- g_env_light.setLightTevColorType(param_0->field_0x6f8->mModelData, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x6f8);
+ if (mpModel != NULL) {
+ g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType(mpModel->mModelData, &tevStr);
+ mDoExt_modelUpdateDL(mpModel);
}
- dComIfGd_getOpaListBG()->entryImm(&param_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 6c0bc9f16d..bb333eb49d 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 0000000000..c7307bce0c
--- /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<u32>(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<u32>(a_this->attention_info.flags, 0x10);
+ ni_carry_check(i_this);
+ } else {
+ cLib_offBit<u32>(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<u32>(i_this->attention_info.flags, 10);
+ i_this->eventInfo.i_onCondition(1);
+ } else {
+ fopAcM_OffStatus(i_this, 0);
+ cLib_offBit<u32>(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