From f46b5d3879afa1709c3cdb00153204bcdde82988 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 30 Jun 2023 19:29:50 +0300 Subject: [PATCH] Work on d_a_mirror --- Progress.md | 8 +- .../d_a_mirror/__ct__10daMirror_cFv.s | 25 - .../d_a_mirror/__ct__16dMirror_packet_cFv.s | 32 - .../d_a_mirror/__dt__16dMirror_packet_cFv.s | 36 - .../calcMinMax__16dMirror_packet_cFv.s | 54 -- .../d_a_mirror/createHeap__10daMirror_cFv.s | 29 - .../daMirror_Delete__FP10daMirror_c.s | 37 - .../daMirror_c_createHeap__FP10fopAc_ac_c.s | 9 - .../daMirror_create__FP10daMirror_c.s | 24 - .../daMirror_draw__FP10daMirror_c.s | 44 -- .../daMirror_execute__FP10daMirror_c.s | 9 - .../d_a_mirror/draw__16dMirror_packet_cFv.s | 42 - .../entryModel__10daMirror_cFP8J3DModel.s | 10 - ...ntryModel__16dMirror_packet_cFP8J3DModel.s | 14 - .../d_a_mirror/reset__16dMirror_packet_cFv.s | 4 - .../d_a_mirror/setModelMtx__10daMirror_cFv.s | 41 - include/JSystem/J3DGraphBase/J3DMatBlock.h | 10 +- include/JSystem/J3DGraphBase/J3DMaterial.h | 1 + include/d/com/d_com_inf_game.h | 4 + include/d/d_drawlist.h | 1 + include/dolphin/gf/GFGeometry.h | 3 + include/dolphin/gf/GFLight.h | 4 + include/m_Do/m_Do_mtx.h | 4 + include/rel/d/a/d_a_boomerang/d_a_boomerang.h | 1 - include/rel/d/a/d_a_mirror/d_a_mirror.h | 48 ++ libs/JSystem/J3DGraphBase/J3DMatBlock.cpp | 6 +- .../J3DGraphLoader/J3DMaterialFactory.cpp | 2 +- libs/dolphin/gf/GFGeometry.cpp | 1 - libs/dolphin/gf/GFLight.cpp | 2 - rel/d/a/d_a_boomerang/d_a_boomerang.cpp | 5 +- rel/d/a/d_a_mirror/d_a_mirror.cpp | 740 ++++++++++-------- rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp | 5 +- src/d/a/d_a_alink.cpp | 5 +- src/d/com/d_com_static.cpp | 13 +- src/m_Do/m_Do_ext.cpp | 8 +- 35 files changed, 497 insertions(+), 784 deletions(-) delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__10daMirror_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__16dMirror_packet_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__16dMirror_packet_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/calcMinMax__16dMirror_packet_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/createHeap__10daMirror_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_Delete__FP10daMirror_c.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_c_createHeap__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_create__FP10daMirror_c.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_draw__FP10daMirror_c.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_execute__FP10daMirror_c.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/draw__16dMirror_packet_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__10daMirror_cFP8J3DModel.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__16dMirror_packet_cFP8J3DModel.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/reset__16dMirror_packet_cFv.s delete mode 100644 asm/rel/d/a/d_a_mirror/d_a_mirror/setModelMtx__10daMirror_cFv.s diff --git a/Progress.md b/Progress.md index ea5881b52c..4b2940e43d 100644 --- a/Progress.md +++ b/Progress.md @@ -21,8 +21,8 @@ Total | 35.593453% | 1431096 | 4020672 Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- main.dol | 35.593453% | 1431096 | 4020672 -RELs | 33.667817% | 3871908 | 11500324 -Total | 34.166648% | 5303004 | 15520996 +RELs | 33.680860% | 3873408 | 11500324 +Total | 34.176312% | 5304504 | 15520996 ## RELs @@ -214,7 +214,7 @@ d_a_mg_fish | 26.024167% | 17660 | 67860 d_a_mg_fshop | 36.363636% | 9360 | 25740 d_a_mg_rod | 24.484345% | 23836 | 97352 d_a_midna | 22.953368% | 12404 | 54040 -d_a_mirror | 32.707993% | 3208 | 9808 +d_a_mirror | 48.001631% | 4708 | 9808 d_a_movie_player | 23.696790% | 8328 | 35144 d_a_myna | 30.876570% | 9736 | 31532 d_a_nbomb | 28.739233% | 8808 | 30648 @@ -785,4 +785,4 @@ d_a_vrbox2 | 34.977578% | 2184 | 6244 d_a_warp_bug | 54.940711% | 1112 | 2024 d_a_ykgr | 44.400631% | 2252 | 5072 f_pc_profile_lst | 100.000000% | 28156 | 28156 -Total | 33.667817% | 3871908 | 11500324 +Total | 33.680860% | 3873408 | 11500324 diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__10daMirror_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__10daMirror_cFv.s deleted file mode 100644 index ce9116ea09..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__10daMirror_cFv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80871E24: -/* 80871E24 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80871E28 7C 08 02 A6 */ mflr r0 -/* 80871E2C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80871E30 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80871E34 7C 7F 1B 78 */ mr r31, r3 -/* 80871E38 4B 7A 6D 2D */ bl __ct__10fopAc_ac_cFv -/* 80871E3C 38 7F 05 70 */ addi r3, r31, 0x570 -/* 80871E40 4B FF ED 99 */ bl __ct__16dMirror_packet_cFv -/* 80871E44 3C 60 80 42 */ lis r3, m_entryModel__10daMirror_c@ha /* 0x8042457C@ha */ -/* 80871E48 38 A3 45 7C */ addi r5, r3, m_entryModel__10daMirror_c@l /* 0x8042457C@l */ -/* 80871E4C 3C 60 80 87 */ lis r3, lit_4377@ha /* 0x80872668@ha */ -/* 80871E50 38 83 26 68 */ addi r4, r3, lit_4377@l /* 0x80872668@l */ -/* 80871E54 80 64 00 00 */ lwz r3, 0(r4) -/* 80871E58 80 04 00 04 */ lwz r0, 4(r4) -/* 80871E5C 90 65 00 00 */ stw r3, 0(r5) -/* 80871E60 90 05 00 04 */ stw r0, 4(r5) -/* 80871E64 80 04 00 08 */ lwz r0, 8(r4) -/* 80871E68 90 05 00 08 */ stw r0, 8(r5) -/* 80871E6C 7F E3 FB 78 */ mr r3, r31 -/* 80871E70 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80871E74 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80871E78 7C 08 03 A6 */ mtlr r0 -/* 80871E7C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80871E80 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__16dMirror_packet_cFv.s deleted file mode 100644 index fef3a25f94..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__16dMirror_packet_cFv.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_80870BD8: -/* 80870BD8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80870BDC 7C 08 02 A6 */ mflr r0 -/* 80870BE0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80870BE4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80870BE8 7C 7F 1B 78 */ mr r31, r3 -/* 80870BEC 3C 60 80 3D */ lis r3, __vt__9J3DPacket@ha /* 0x803CD97C@ha */ -/* 80870BF0 38 03 D9 7C */ addi r0, r3, __vt__9J3DPacket@l /* 0x803CD97C@l */ -/* 80870BF4 90 1F 00 00 */ stw r0, 0(r31) -/* 80870BF8 38 00 00 00 */ li r0, 0 -/* 80870BFC 90 1F 00 04 */ stw r0, 4(r31) -/* 80870C00 90 1F 00 08 */ stw r0, 8(r31) -/* 80870C04 90 1F 00 0C */ stw r0, 0xc(r31) -/* 80870C08 3C 60 80 87 */ lis r3, __vt__16dMirror_packet_c@ha /* 0x808726C4@ha */ -/* 80870C0C 38 03 26 C4 */ addi r0, r3, __vt__16dMirror_packet_c@l /* 0x808726C4@l */ -/* 80870C10 90 1F 00 00 */ stw r0, 0(r31) -/* 80870C14 38 7F 01 34 */ addi r3, r31, 0x134 -/* 80870C18 3C 80 80 87 */ lis r4, __ct__4cXyzFv@ha /* 0x80870C90@ha */ -/* 80870C1C 38 84 0C 90 */ addi r4, r4, __ct__4cXyzFv@l /* 0x80870C90@l */ -/* 80870C20 3C A0 80 87 */ lis r5, __dt__4cXyzFv@ha /* 0x80870C54@ha */ -/* 80870C24 38 A5 0C 54 */ addi r5, r5, __dt__4cXyzFv@l /* 0x80870C54@l */ -/* 80870C28 38 C0 00 0C */ li r6, 0xc -/* 80870C2C 38 E0 00 04 */ li r7, 4 -/* 80870C30 4B AF 11 31 */ bl __construct_array -/* 80870C34 7F E3 FB 78 */ mr r3, r31 -/* 80870C38 48 00 00 5D */ bl reset__16dMirror_packet_cFv -/* 80870C3C 7F E3 FB 78 */ mr r3, r31 -/* 80870C40 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80870C44 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80870C48 7C 08 03 A6 */ mtlr r0 -/* 80870C4C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80870C50 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__16dMirror_packet_cFv.s deleted file mode 100644 index 74027da481..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__16dMirror_packet_cFv.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_80871E84: -/* 80871E84 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80871E88 7C 08 02 A6 */ mflr r0 -/* 80871E8C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80871E90 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80871E94 93 C1 00 08 */ stw r30, 8(r1) -/* 80871E98 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80871E9C 7C 9F 23 78 */ mr r31, r4 -/* 80871EA0 41 82 00 4C */ beq lbl_80871EEC -/* 80871EA4 3C 60 80 87 */ lis r3, __vt__16dMirror_packet_c@ha /* 0x808726C4@ha */ -/* 80871EA8 38 03 26 C4 */ addi r0, r3, __vt__16dMirror_packet_c@l /* 0x808726C4@l */ -/* 80871EAC 90 1E 00 00 */ stw r0, 0(r30) -/* 80871EB0 38 7E 01 34 */ addi r3, r30, 0x134 -/* 80871EB4 3C 80 80 87 */ lis r4, __dt__4cXyzFv@ha /* 0x80870C54@ha */ -/* 80871EB8 38 84 0C 54 */ addi r4, r4, __dt__4cXyzFv@l /* 0x80870C54@l */ -/* 80871EBC 38 A0 00 0C */ li r5, 0xc -/* 80871EC0 38 C0 00 04 */ li r6, 4 -/* 80871EC4 4B AE FE 25 */ bl __destroy_arr -/* 80871EC8 28 1E 00 00 */ cmplwi r30, 0 -/* 80871ECC 41 82 00 10 */ beq lbl_80871EDC -/* 80871ED0 3C 60 80 3D */ lis r3, __vt__9J3DPacket@ha /* 0x803CD97C@ha */ -/* 80871ED4 38 03 D9 7C */ addi r0, r3, __vt__9J3DPacket@l /* 0x803CD97C@l */ -/* 80871ED8 90 1E 00 00 */ stw r0, 0(r30) -lbl_80871EDC: -/* 80871EDC 7F E0 07 35 */ extsh. r0, r31 -/* 80871EE0 40 81 00 0C */ ble lbl_80871EEC -/* 80871EE4 7F C3 F3 78 */ mr r3, r30 -/* 80871EE8 4B A5 CE 55 */ bl __dl__FPv -lbl_80871EEC: -/* 80871EEC 7F C3 F3 78 */ mr r3, r30 -/* 80871EF0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80871EF4 83 C1 00 08 */ lwz r30, 8(r1) -/* 80871EF8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80871EFC 7C 08 03 A6 */ mtlr r0 -/* 80871F00 38 21 00 10 */ addi r1, r1, 0x10 -/* 80871F04 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/calcMinMax__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/calcMinMax__16dMirror_packet_cFv.s deleted file mode 100644 index 4f33bed91e..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/calcMinMax__16dMirror_packet_cFv.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_80870CA0: -/* 80870CA0 3C 80 80 45 */ lis r4, __float_max@ha /* 0x80450AE8@ha */ -/* 80870CA4 C4 04 0A E8 */ lfsu f0, __float_max@l(r4) /* 0x80450AE8@l */ -/* 80870CA8 D0 03 01 64 */ stfs f0, 0x164(r3) -/* 80870CAC D0 03 01 68 */ stfs f0, 0x168(r3) -/* 80870CB0 D0 03 01 6C */ stfs f0, 0x16c(r3) -/* 80870CB4 C0 04 00 00 */ lfs f0, 0(r4) -/* 80870CB8 FC 00 00 50 */ fneg f0, f0 -/* 80870CBC D0 03 01 70 */ stfs f0, 0x170(r3) -/* 80870CC0 D0 03 01 74 */ stfs f0, 0x174(r3) -/* 80870CC4 D0 03 01 78 */ stfs f0, 0x178(r3) -/* 80870CC8 38 83 01 34 */ addi r4, r3, 0x134 -/* 80870CCC 38 00 00 04 */ li r0, 4 -/* 80870CD0 7C 09 03 A6 */ mtctr r0 -lbl_80870CD4: -/* 80870CD4 C0 24 00 00 */ lfs f1, 0(r4) -/* 80870CD8 C0 03 01 64 */ lfs f0, 0x164(r3) -/* 80870CDC FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870CE0 40 80 00 08 */ bge lbl_80870CE8 -/* 80870CE4 D0 23 01 64 */ stfs f1, 0x164(r3) -lbl_80870CE8: -/* 80870CE8 C0 24 00 00 */ lfs f1, 0(r4) -/* 80870CEC C0 03 01 70 */ lfs f0, 0x170(r3) -/* 80870CF0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870CF4 40 81 00 08 */ ble lbl_80870CFC -/* 80870CF8 D0 23 01 70 */ stfs f1, 0x170(r3) -lbl_80870CFC: -/* 80870CFC C0 24 00 04 */ lfs f1, 4(r4) -/* 80870D00 C0 03 01 68 */ lfs f0, 0x168(r3) -/* 80870D04 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870D08 40 80 00 08 */ bge lbl_80870D10 -/* 80870D0C D0 23 01 68 */ stfs f1, 0x168(r3) -lbl_80870D10: -/* 80870D10 C0 24 00 04 */ lfs f1, 4(r4) -/* 80870D14 C0 03 01 74 */ lfs f0, 0x174(r3) -/* 80870D18 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870D1C 40 81 00 08 */ ble lbl_80870D24 -/* 80870D20 D0 23 01 74 */ stfs f1, 0x174(r3) -lbl_80870D24: -/* 80870D24 C0 24 00 08 */ lfs f1, 8(r4) -/* 80870D28 C0 03 01 6C */ lfs f0, 0x16c(r3) -/* 80870D2C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870D30 40 80 00 08 */ bge lbl_80870D38 -/* 80870D34 D0 23 01 6C */ stfs f1, 0x16c(r3) -lbl_80870D38: -/* 80870D38 C0 24 00 08 */ lfs f1, 8(r4) -/* 80870D3C C0 03 01 78 */ lfs f0, 0x178(r3) -/* 80870D40 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80870D44 40 81 00 08 */ ble lbl_80870D4C -/* 80870D48 D0 23 01 78 */ stfs f1, 0x178(r3) -lbl_80870D4C: -/* 80870D4C 38 84 00 0C */ addi r4, r4, 0xc -/* 80870D50 42 00 FF 84 */ bdnz lbl_80870CD4 -/* 80870D54 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/createHeap__10daMirror_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/createHeap__10daMirror_cFv.s deleted file mode 100644 index cf52a3b3b4..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/createHeap__10daMirror_cFv.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_80871F08: -/* 80871F08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80871F0C 7C 08 02 A6 */ mflr r0 -/* 80871F10 90 01 00 14 */ stw r0, 0x14(r1) -/* 80871F14 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80871F18 7C 7F 1B 78 */ mr r31, r3 -/* 80871F1C 3C 60 80 87 */ lis r3, l_arcName@ha /* 0x80872660@ha */ -/* 80871F20 38 63 26 60 */ addi r3, r3, l_arcName@l /* 0x80872660@l */ -/* 80871F24 80 63 00 00 */ lwz r3, 0(r3) -/* 80871F28 38 80 00 04 */ li r4, 4 -/* 80871F2C 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80871F30 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80871F34 3C A5 00 02 */ addis r5, r5, 2 -/* 80871F38 38 C0 00 80 */ li r6, 0x80 -/* 80871F3C 38 A5 C2 F8 */ addi r5, r5, -15624 -/* 80871F40 4B 7C A3 AD */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80871F44 3C 80 00 08 */ lis r4, 8 -/* 80871F48 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000084@ha */ -/* 80871F4C 38 A5 00 84 */ addi r5, r5, 0x0084 /* 0x11000084@l */ -/* 80871F50 4B 7A 2D 05 */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 80871F54 90 7F 06 F8 */ stw r3, 0x6f8(r31) -/* 80871F58 80 7F 06 F8 */ lwz r3, 0x6f8(r31) -/* 80871F5C 30 03 FF FF */ addic r0, r3, -1 -/* 80871F60 7C 60 19 10 */ subfe r3, r0, r3 -/* 80871F64 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80871F68 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80871F6C 7C 08 03 A6 */ mtlr r0 -/* 80871F70 38 21 00 10 */ addi r1, r1, 0x10 -/* 80871F74 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_Delete__FP10daMirror_c.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_Delete__FP10daMirror_c.s deleted file mode 100644 index ef9ea7f53d..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_Delete__FP10daMirror_c.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80872344: -/* 80872344 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80872348 7C 08 02 A6 */ mflr r0 -/* 8087234C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80872350 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 80872354 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80872358 2C 00 00 02 */ cmpwi r0, 2 -/* 8087235C 40 82 00 24 */ bne lbl_80872380 -/* 80872360 28 03 00 00 */ cmplwi r3, 0 -/* 80872364 41 82 00 08 */ beq lbl_8087236C -/* 80872368 38 63 05 68 */ addi r3, r3, 0x568 -lbl_8087236C: -/* 8087236C 3C 80 80 87 */ lis r4, l_arcName@ha /* 0x80872660@ha */ -/* 80872370 38 84 26 60 */ addi r4, r4, l_arcName@l /* 0x80872660@l */ -/* 80872374 80 84 00 00 */ lwz r4, 0(r4) -/* 80872378 4B 7B AC 91 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc -/* 8087237C 48 00 00 28 */ b lbl_808723A4 -lbl_80872380: -/* 80872380 2C 00 00 03 */ cmpwi r0, 3 -/* 80872384 40 82 00 20 */ bne lbl_808723A4 -/* 80872388 28 03 00 00 */ cmplwi r3, 0 -/* 8087238C 41 82 00 08 */ beq lbl_80872394 -/* 80872390 38 63 05 68 */ addi r3, r3, 0x568 -lbl_80872394: -/* 80872394 3C 80 80 87 */ lis r4, l_arcName2@ha /* 0x80872664@ha */ -/* 80872398 38 84 26 64 */ addi r4, r4, l_arcName2@l /* 0x80872664@l */ -/* 8087239C 80 84 00 00 */ lwz r4, 0(r4) -/* 808723A0 4B 7B AC 69 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc -lbl_808723A4: -/* 808723A4 38 00 00 00 */ li r0, 0 -/* 808723A8 3C 60 80 45 */ lis r3, m_myObj__10daMirror_c@ha /* 0x80450DA8@ha */ -/* 808723AC 90 03 0D A8 */ stw r0, m_myObj__10daMirror_c@l(r3) /* 0x80450DA8@l */ -/* 808723B0 38 60 00 01 */ li r3, 1 -/* 808723B4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 808723B8 7C 08 03 A6 */ mtlr r0 -/* 808723BC 38 21 00 10 */ addi r1, r1, 0x10 -/* 808723C0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_c_createHeap__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_c_createHeap__FP10fopAc_ac_c.s deleted file mode 100644 index 3240dcfbde..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_c_createHeap__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80870BB8: -/* 80870BB8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80870BBC 7C 08 02 A6 */ mflr r0 -/* 80870BC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80870BC4 48 00 13 45 */ bl createHeap__10daMirror_cFv -/* 80870BC8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80870BCC 7C 08 03 A6 */ mtlr r0 -/* 80870BD0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80870BD4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_create__FP10daMirror_c.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_create__FP10daMirror_c.s deleted file mode 100644 index 5023736b9b..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_create__FP10daMirror_c.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80872018: -/* 80872018 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8087201C 7C 08 02 A6 */ mflr r0 -/* 80872020 90 01 00 14 */ stw r0, 0x14(r1) -/* 80872024 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80872028 7C 7F 1B 78 */ mr r31, r3 -/* 8087202C 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80872030 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80872034 40 82 00 1C */ bne lbl_80872050 -/* 80872038 28 1F 00 00 */ cmplwi r31, 0 -/* 8087203C 41 82 00 08 */ beq lbl_80872044 -/* 80872040 4B FF FD E5 */ bl __ct__10daMirror_cFv -lbl_80872044: -/* 80872044 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80872048 60 00 00 08 */ ori r0, r0, 8 -/* 8087204C 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80872050: -/* 80872050 7F E3 FB 78 */ mr r3, r31 -/* 80872054 48 00 00 19 */ bl create__10daMirror_cFv -/* 80872058 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8087205C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80872060 7C 08 03 A6 */ mtlr r0 -/* 80872064 38 21 00 10 */ addi r1, r1, 0x10 -/* 80872068 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_draw__FP10daMirror_c.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_draw__FP10daMirror_c.s deleted file mode 100644 index 5c35814d2f..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_draw__FP10daMirror_c.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_808724C0: -/* 808724C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 808724C4 7C 08 02 A6 */ mflr r0 -/* 808724C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 808724CC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 808724D0 7C 7F 1B 78 */ mr r31, r3 -/* 808724D4 3C 60 80 45 */ lis r3, m_myObj__10daMirror_c@ha /* 0x80450DA8@ha */ -/* 808724D8 80 03 0D A8 */ lwz r0, m_myObj__10daMirror_c@l(r3) /* 0x80450DA8@l */ -/* 808724DC 7C 1F 00 40 */ cmplw r31, r0 -/* 808724E0 41 82 00 0C */ beq lbl_808724EC -/* 808724E4 38 60 00 01 */ li r3, 1 -/* 808724E8 48 00 00 64 */ b lbl_8087254C -lbl_808724EC: -/* 808724EC 80 1F 06 F8 */ lwz r0, 0x6f8(r31) -/* 808724F0 28 00 00 00 */ cmplwi r0, 0 -/* 808724F4 41 82 00 3C */ beq lbl_80872530 -/* 808724F8 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 808724FC 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80872500 38 80 00 10 */ li r4, 0x10 -/* 80872504 38 BF 04 D0 */ addi r5, r31, 0x4d0 -/* 80872508 38 DF 01 0C */ addi r6, r31, 0x10c -/* 8087250C 4B 93 12 B9 */ bl settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c -/* 80872510 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80872514 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80872518 80 9F 06 F8 */ lwz r4, 0x6f8(r31) -/* 8087251C 80 84 00 04 */ lwz r4, 4(r4) -/* 80872520 38 BF 01 0C */ addi r5, r31, 0x10c -/* 80872524 4B 93 1E F9 */ bl setLightTevColorType__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c -/* 80872528 80 7F 06 F8 */ lwz r3, 0x6f8(r31) -/* 8087252C 4B 79 B7 99 */ bl mDoExt_modelUpdateDL__FP8J3DModel -lbl_80872530: -/* 80872530 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80872534 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80872538 80 63 5F 70 */ lwz r3, 0x5f70(r3) -/* 8087253C 38 9F 05 70 */ addi r4, r31, 0x570 -/* 80872540 38 A0 00 00 */ li r5, 0 -/* 80872544 4B AB 2F 49 */ bl entryImm__13J3DDrawBufferFP9J3DPacketUs -/* 80872548 38 60 00 01 */ li r3, 1 -lbl_8087254C: -/* 8087254C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80872550 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80872554 7C 08 03 A6 */ mtlr r0 -/* 80872558 38 21 00 10 */ addi r1, r1, 0x10 -/* 8087255C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_execute__FP10daMirror_c.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_execute__FP10daMirror_c.s deleted file mode 100644 index 28a9ac5317..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_execute__FP10daMirror_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_808723C4: -/* 808723C4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 808723C8 7C 08 02 A6 */ mflr r0 -/* 808723CC 90 01 00 14 */ stw r0, 0x14(r1) -/* 808723D0 48 00 00 15 */ bl execute__10daMirror_cFv -/* 808723D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 808723D8 7C 08 03 A6 */ mtlr r0 -/* 808723DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 808723E0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/draw__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/draw__16dMirror_packet_cFv.s deleted file mode 100644 index 1bc5ab6dbc..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/draw__16dMirror_packet_cFv.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_80871D84: -/* 80871D84 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80871D88 7C 08 02 A6 */ mflr r0 -/* 80871D8C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80871D90 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80871D94 93 C1 00 08 */ stw r30, 8(r1) -/* 80871D98 7C 7E 1B 78 */ mr r30, r3 -/* 80871D9C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80871DA0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80871DA4 80 63 61 B0 */ lwz r3, 0x61b0(r3) -/* 80871DA8 C0 03 00 CC */ lfs f0, 0xcc(r3) -/* 80871DAC 3C 60 80 3E */ lis r3, mClipper__14mDoLib_clipper@ha /* 0x803DD8E4@ha */ -/* 80871DB0 3B E3 D8 E4 */ addi r31, r3, mClipper__14mDoLib_clipper@l /* 0x803DD8E4@l */ -/* 80871DB4 D0 1F 00 58 */ stfs f0, 0x58(r31) -/* 80871DB8 7F E3 FB 78 */ mr r3, r31 -/* 80871DBC 4B A0 19 D1 */ bl calcViewFrustum__11J3DUClipperFv -/* 80871DC0 3C 60 80 3E */ lis r3, mClipper__14mDoLib_clipper@ha /* 0x803DD8E4@ha */ -/* 80871DC4 38 63 D8 E4 */ addi r3, r3, mClipper__14mDoLib_clipper@l /* 0x803DD8E4@l */ -/* 80871DC8 3C 80 80 43 */ lis r4, j3dSys@ha /* 0x80434AC8@ha */ -/* 80871DCC 38 84 4A C8 */ addi r4, r4, j3dSys@l /* 0x80434AC8@l */ -/* 80871DD0 38 BE 01 70 */ addi r5, r30, 0x170 -/* 80871DD4 38 DE 01 64 */ addi r6, r30, 0x164 -/* 80871DD8 4B A0 1C 6D */ bl clip__11J3DUClipperCFPA4_CfP3VecP3Vec -/* 80871DDC 2C 03 00 00 */ cmpwi r3, 0 -/* 80871DE0 40 82 00 0C */ bne lbl_80871DEC -/* 80871DE4 7F C3 F3 78 */ mr r3, r30 -/* 80871DE8 4B FF F6 85 */ bl mainDraw__16dMirror_packet_cFv -lbl_80871DEC: -/* 80871DEC 3C 60 80 45 */ lis r3, mSystemFar__14mDoLib_clipper@ha /* 0x80450C70@ha */ -/* 80871DF0 C0 03 0C 70 */ lfs f0, mSystemFar__14mDoLib_clipper@l(r3) /* 0x80450C70@l */ -/* 80871DF4 D0 1F 00 58 */ stfs f0, 0x58(r31) -/* 80871DF8 3C 60 80 3E */ lis r3, mClipper__14mDoLib_clipper@ha /* 0x803DD8E4@ha */ -/* 80871DFC 38 63 D8 E4 */ addi r3, r3, mClipper__14mDoLib_clipper@l /* 0x803DD8E4@l */ -/* 80871E00 4B A0 19 8D */ bl calcViewFrustum__11J3DUClipperFv -/* 80871E04 7F C3 F3 78 */ mr r3, r30 -/* 80871E08 4B FF EE 8D */ bl reset__16dMirror_packet_cFv -/* 80871E0C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80871E10 83 C1 00 08 */ lwz r30, 8(r1) -/* 80871E14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80871E18 7C 08 03 A6 */ mtlr r0 -/* 80871E1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80871E20 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__10daMirror_cFP8J3DModel.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__10daMirror_cFP8J3DModel.s deleted file mode 100644 index e912d848d6..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__10daMirror_cFP8J3DModel.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80872560: -/* 80872560 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80872564 7C 08 02 A6 */ mflr r0 -/* 80872568 90 01 00 14 */ stw r0, 0x14(r1) -/* 8087256C 38 63 05 70 */ addi r3, r3, 0x570 -/* 80872570 4B FF E7 E9 */ bl entryModel__16dMirror_packet_cFP8J3DModel -/* 80872574 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80872578 7C 08 03 A6 */ mtlr r0 -/* 8087257C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80872580 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__16dMirror_packet_cFP8J3DModel.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__16dMirror_packet_cFP8J3DModel.s deleted file mode 100644 index 1e1a37dd71..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__16dMirror_packet_cFP8J3DModel.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80870D58: -/* 80870D58 88 A3 00 30 */ lbz r5, 0x30(r3) -/* 80870D5C 28 05 00 40 */ cmplwi r5, 0x40 -/* 80870D60 41 80 00 0C */ blt lbl_80870D6C -/* 80870D64 38 60 00 00 */ li r3, 0 -/* 80870D68 4E 80 00 20 */ blr -lbl_80870D6C: -/* 80870D6C 38 05 00 01 */ addi r0, r5, 1 -/* 80870D70 98 03 00 30 */ stb r0, 0x30(r3) -/* 80870D74 54 A0 15 BA */ rlwinm r0, r5, 2, 0x16, 0x1d -/* 80870D78 7C 63 02 14 */ add r3, r3, r0 -/* 80870D7C 90 83 00 34 */ stw r4, 0x34(r3) -/* 80870D80 38 60 00 01 */ li r3, 1 -/* 80870D84 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/reset__16dMirror_packet_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/reset__16dMirror_packet_cFv.s deleted file mode 100644 index 699dd514e5..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/reset__16dMirror_packet_cFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_80870C94: -/* 80870C94 38 00 00 00 */ li r0, 0 -/* 80870C98 98 03 00 30 */ stb r0, 0x30(r3) -/* 80870C9C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_mirror/d_a_mirror/setModelMtx__10daMirror_cFv.s b/asm/rel/d/a/d_a_mirror/d_a_mirror/setModelMtx__10daMirror_cFv.s deleted file mode 100644 index a432284426..0000000000 --- a/asm/rel/d/a/d_a_mirror/d_a_mirror/setModelMtx__10daMirror_cFv.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_80871F78: -/* 80871F78 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80871F7C 7C 08 02 A6 */ mflr r0 -/* 80871F80 90 01 00 14 */ stw r0, 0x14(r1) -/* 80871F84 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80871F88 7C 7F 1B 78 */ mr r31, r3 -/* 80871F8C 80 63 06 F8 */ lwz r3, 0x6f8(r3) -/* 80871F90 C0 1F 04 EC */ lfs f0, 0x4ec(r31) -/* 80871F94 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80871F98 C0 1F 04 F0 */ lfs f0, 0x4f0(r31) -/* 80871F9C D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80871FA0 C0 1F 04 F4 */ lfs f0, 0x4f4(r31) -/* 80871FA4 D0 03 00 20 */ stfs f0, 0x20(r3) -/* 80871FA8 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871FAC 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871FB0 C0 3F 04 D0 */ lfs f1, 0x4d0(r31) -/* 80871FB4 C0 5F 04 D4 */ lfs f2, 0x4d4(r31) -/* 80871FB8 C0 7F 04 D8 */ lfs f3, 0x4d8(r31) -/* 80871FBC 4B AD 49 2D */ bl PSMTXTrans -/* 80871FC0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871FC4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871FC8 A8 9F 04 E6 */ lha r4, 0x4e6(r31) -/* 80871FCC 4B 79 A4 69 */ bl mDoMtx_YrotM__FPA4_fs -/* 80871FD0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871FD4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871FD8 A8 9F 04 E4 */ lha r4, 0x4e4(r31) -/* 80871FDC 4B 79 A3 C1 */ bl mDoMtx_XrotM__FPA4_fs -/* 80871FE0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871FE4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871FE8 38 80 20 00 */ li r4, 0x2000 -/* 80871FEC 4B 79 A4 E1 */ bl mDoMtx_ZrotM__FPA4_fs -/* 80871FF0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80871FF4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80871FF8 80 9F 06 F8 */ lwz r4, 0x6f8(r31) -/* 80871FFC 38 84 00 24 */ addi r4, r4, 0x24 -/* 80872000 4B AD 44 B1 */ bl PSMTXCopy -/* 80872004 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80872008 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8087200C 7C 08 03 A6 */ mtlr r0 -/* 80872010 38 21 00 10 */ addi r1, r1, 0x10 -/* 80872014 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index 73209b64a0..c7c28056f5 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -727,7 +727,7 @@ public: /* 80317314 */ virtual s32 countDLSize(); virtual u32 getType() = 0; /* 8000E0A0 */ virtual void setIndTexStageNum(u8); - /* 8000DF7C */ virtual bool getIndTexStageNum() const; + /* 8000DF7C */ virtual u8 getIndTexStageNum() const; /* 80317410 */ virtual void setIndTexOrder(u32, J3DIndTexOrder); /* 8031740C */ virtual void setIndTexOrder(u32, J3DIndTexOrder const*); /* 8000DF74 */ virtual bool getIndTexOrder(u32); @@ -750,7 +750,7 @@ public: /* 80317BDC */ virtual s32 countDLSize(); /* 80323390 */ virtual u32 getType(); /* 8032339C */ virtual void setIndTexStageNum(u8); - /* 803233A4 */ virtual bool getIndTexStageNum() const; + /* 803233A4 */ virtual u8 getIndTexStageNum() const; /* 803233AC */ virtual void setIndTexOrder(u32, J3DIndTexOrder); /* 803233C0 */ virtual void setIndTexOrder(u32, J3DIndTexOrder const*); /* 803233D4 */ virtual bool getIndTexOrder(u32); @@ -820,7 +820,7 @@ public: /* 8000DFF0 */ virtual bool getAmbColor(u32); /* 8000E0E0 */ virtual void setColorChanNum(u8); /* 8031744C */ virtual void setColorChanNum(u8 const*); - /* 8000E008 */ virtual bool getColorChanNum() const; + /* 8000E008 */ virtual u8 getColorChanNum() const; /* 8000E0D8 */ virtual void setColorChan(u32, J3DColorChan const&); /* 80317450 */ virtual void setColorChan(u32, J3DColorChan const*); /* 8000DFF8 */ virtual J3DColorChan* getColorChan(u32); @@ -860,7 +860,7 @@ public: /* 80322F50 */ virtual bool getAmbColor(u32); /* 80322F70 */ virtual void setColorChanNum(u8); /* 80322F64 */ virtual void setColorChanNum(u8 const*); - /* 80322F78 */ virtual bool getColorChanNum() const; + /* 80322F78 */ virtual u8 getColorChanNum() const; /* 80322F94 */ virtual void setColorChan(u32, J3DColorChan const&); /* 80322F80 */ virtual void setColorChan(u32, J3DColorChan const*); /* 80322FA8 */ virtual J3DColorChan* getColorChan(u32); @@ -905,7 +905,7 @@ public: /* 803231B0 */ virtual GXColor* getMatColor(u32); /* 803231D0 */ virtual void setColorChanNum(u8); /* 803231C4 */ virtual void setColorChanNum(u8 const*); - /* 803231D8 */ virtual bool getColorChanNum() const; + /* 803231D8 */ virtual u8 getColorChanNum() const; /* 803231F4 */ virtual void setColorChan(u32, J3DColorChan const&); /* 803231E0 */ virtual void setColorChan(u32, J3DColorChan const*); /* 80323208 */ virtual J3DColorChan* getColorChan(u32); diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index b2f67574c5..d3696d5a78 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -50,6 +50,7 @@ public: J3DColorBlock* getColorBlock() const { return mColorBlock; } J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; } J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; } + J3DIndBlock* getIndBlock() const { return mIndBlock; } J3DShape* getShape() { return mShape; } J3DJoint* getJoint() { return mJoint; } J3DMaterialAnm* getMaterialAnm() const { diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index ae2994b76c..4e466c922b 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -3401,6 +3401,10 @@ inline void dComIfGd_setListBG() { g_dComIfG_gameInfo.drawlist.setXluListBG(); } +inline J3DDrawBuffer* dComIfGd_getOpaListBG() { + return g_dComIfG_gameInfo.drawlist.getOpaListBG(); +} + inline void dComIfGd_init() { g_dComIfG_gameInfo.drawlist.init(); } diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 5443d858f0..bfef45fd5f 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -308,6 +308,7 @@ public: J3DDrawBuffer* getOpaListFilter() { return mDrawBuffers[DB_LIST_FILTER]; } J3DDrawBuffer* getOpaListP0() { return mDrawBuffers[DB_LIST_P0]; } J3DDrawBuffer* getOpaListPacket() { return mDrawBuffers[DB_OPA_LIST_PACKET]; } + J3DDrawBuffer* getOpaListBG() { return mDrawBuffers[DB_OPA_LIST_BG]; } void setXluDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, XLU_BUFFER); } void setOpaDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, OPA_BUFFER); } void setXluListSky() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_SKY]); } diff --git a/include/dolphin/gf/GFGeometry.h b/include/dolphin/gf/GFGeometry.h index 8b64a7a038..90063919f0 100644 --- a/include/dolphin/gf/GFGeometry.h +++ b/include/dolphin/gf/GFGeometry.h @@ -2,5 +2,8 @@ #define GFGEOMETRY_H #include "dolphin/types.h" +#include "dolphin/gx/GX.h" + +void GFSetGenMode2(u8 param_0, u8 param_1, u8 param_2, u8 param_3, _GXCullMode param_4); #endif /* GFGEOMETRY_H */ diff --git a/include/dolphin/gf/GFLight.h b/include/dolphin/gf/GFLight.h index dabbe464ff..64c7cc43fd 100644 --- a/include/dolphin/gf/GFLight.h +++ b/include/dolphin/gf/GFLight.h @@ -2,5 +2,9 @@ #define GFLIGHT_H #include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" + +void GFSetChanAmbColor(_GXChannelID param_0, _GXColor param_1); #endif /* GFLIGHT_H */ diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index c849395597..c45e5fd334 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -138,6 +138,10 @@ public: extern Mtx g_mDoMtx_identity; +inline MtxP mDoMtx_getIdentity() { + return g_mDoMtx_identity; +} + class mDoMtx_quatStack_c { public: ~mDoMtx_quatStack_c(); // inline diff --git a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h index 63cf4daeb9..7b3cb99789 100644 --- a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h +++ b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h @@ -57,7 +57,6 @@ private: /* 0xC8 */ cXyz field_0xc8[6]; }; // Size: 0x110 -struct daMirror_c; class daAlink_c; class daBoomerang_c : public fopAc_ac_c { 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 7af194a0e1..5cf68c51b0 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 @@ -2,5 +2,53 @@ #define D_A_MIRROR_H #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" + +struct dMirror_packet_c : public J3DPacket { + /* 80870BD8 */ dMirror_packet_c(); + /* 80870C94 */ void reset(); + /* 80870CA0 */ void calcMinMax(); + /* 80870D58 */ int entryModel(J3DModel*); + /* 80870D88 */ void mirrorZdraw(f32*, f32*, f32, f32, f32, f32, f32, f32); + /* 80871268 */ void modelDraw(J3DModel*, f32 (*)[4]); + /* 8087146C */ void mainDraw(); + /* 80871D84 */ virtual void draw(); + /* 80871E84 */ virtual ~dMirror_packet_c(); + cXyz& getViewScale() { return mViewScale; } + GXTexObj& getTexObj() { return mTexObj; } + cXyz* getQuad() { return mQuad; } + + /* 0x10 */ GXTexObj mTexObj; + /* 0x30 */ u8 mModelCount; + /* 0x31 */ u8 field_0x31[3]; + /* 0x34 */ J3DModel* mModels[0x40]; + /* 0x134 */ cXyz mQuad[4]; + /* 0x164 */ cXyz mMinVal; + /* 0x170 */ cXyz mMaxVal; + /* 0x17c */ cXyz mViewScale; +}; + +struct daMirror_c : public fopAc_ac_c { + /* 80871E24 */ daMirror_c(); + /* 80871F08 */ bool createHeap(); + /* 80871F78 */ void setModelMtx(); + /* 8087206C */ int create(); + /* 808723E4 */ int execute(); + /* 80872560 */ int entryModel(J3DModel*); + /* 8003194C */ static int entry(J3DModel*); + /* 80031990 */ static int remove(); + s32 getType() { return fopAcM_GetParamBit(this, 0, 8); } + s32 getSw() { return fopAcM_GetParamBit(this, 8, 8); } + + 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; +}; + #endif /* D_A_MIRROR_H */ diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index 8230388584..8acc4b81cc 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -5195,7 +5195,7 @@ void J3DColorBlockLightOn::setColorChanNum(u8 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool J3DColorBlockLightOn::getColorChanNum() const { +asm u8 J3DColorBlockLightOn::getColorChanNum() const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getColorChanNum__20J3DColorBlockLightOnCFv.s" } @@ -5469,7 +5469,7 @@ void J3DColorBlockLightOff::setColorChanNum(u8 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool J3DColorBlockLightOff::getColorChanNum() const { +asm u8 J3DColorBlockLightOff::getColorChanNum() const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getColorChanNum__21J3DColorBlockLightOffCFv.s" } @@ -5625,7 +5625,7 @@ void J3DIndBlockFull::setIndTexStageNum(u8 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool J3DIndBlockFull::getIndTexStageNum() const { +asm u8 J3DIndBlockFull::getIndTexStageNum() const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getIndTexStageNum__15J3DIndBlockFullCFv.s" } diff --git a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index 38a042e239..3a6c970840 100644 --- a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -291,7 +291,7 @@ struct J3DColorBlock { /* 8000DFF0 */ bool getAmbColor(u32); /* 8000DFF8 */ bool getColorChan(u32); /* 8000E000 */ bool getMatColor(u32); - /* 8000E008 */ bool getColorChanNum() const; + /* 8000E008 */ u8 getColorChanNum() const; /* 801A4C0C */ void setAmbColor(u32, J3DGXColor const*); /* 8000E0D4 */ void setAmbColor(u32, J3DGXColor); /* 80317450 */ void setColorChan(u32, J3DColorChan const*); diff --git a/libs/dolphin/gf/GFGeometry.cpp b/libs/dolphin/gf/GFGeometry.cpp index a71b6b23d9..2c62f21f8b 100644 --- a/libs/dolphin/gf/GFGeometry.cpp +++ b/libs/dolphin/gf/GFGeometry.cpp @@ -6,7 +6,6 @@ #include "dolphin/gf/GFGeometry.h" #include "dol2asm.h" #include "dolphin/types.h" -#include "dolphin/gx/GX.h" // // Types: diff --git a/libs/dolphin/gf/GFLight.cpp b/libs/dolphin/gf/GFLight.cpp index dcac87387c..03ee9fd47e 100644 --- a/libs/dolphin/gf/GFLight.cpp +++ b/libs/dolphin/gf/GFLight.cpp @@ -5,8 +5,6 @@ #include "dolphin/gf/GFLight.h" #include "dolphin/types.h" -#include "dolphin/gx/GXEnum.h" -#include "dolphin/gx/GXStruct.h" #include "dolphin/gx/GX.h" // diff --git a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp index fd5b377f69..d3a11d5dee 100644 --- a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp +++ b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp @@ -4,6 +4,7 @@ // #include "rel/d/a/d_a_boomerang/d_a_boomerang.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" #include "d/com/d_com_inf_game.h" #include "d/d_procname.h" #include "dol2asm.h" @@ -14,10 +15,6 @@ // Types: // -struct daMirror_c { - /* 8003194C */ void entry(J3DModel*); -}; - struct daBoomerang_HIO_c0 { static u16 const m_lockWaitTime; static f32 const m_minCircleR; 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 4ae0f9c655..3cd62ee141 100644 --- a/rel/d/a/d_a_mirror/d_a_mirror.cpp +++ b/rel/d/a/d_a_mirror/d_a_mirror.cpp @@ -6,134 +6,20 @@ #include "rel/d/a/d_a_mirror/d_a_mirror.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "dolphin/gf/GFGeometry.h" +#include "dolphin/gf/GFLight.h" +#include "MSL_C/float.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" // // Types: // -struct request_of_phase_process_class {}; - -struct Vec {}; - -struct cXyz { - /* 80266AE4 */ void operator+(Vec const&) const; - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266B84 */ void operator*(f32) const; - /* 80266CBC */ void outprod(Vec const&) const; - /* 80266F48 */ void normalizeZP(); - /* 80870C54 */ ~cXyz(); - /* 80870C90 */ cXyz(); -}; - -struct mDoMtx_stack_c { - /* 8000CE00 */ void scaleS(cXyz const&); - /* 8000CE38 */ void scaleM(f32, f32, f32); - - static u8 now[48]; -}; - -struct mDoLib_clipper { - static u8 mClipper[92]; - static f32 mSystemFar; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daPy_py_c { - /* 8015F4F0 */ void setLookPos(cXyz*); -}; - -struct J3DModel {}; - -struct daMirror_c { - /* 80871E24 */ daMirror_c(); - /* 80871F08 */ void createHeap(); - /* 80871F78 */ void setModelMtx(); - /* 8087206C */ void create(); - /* 808723E4 */ void execute(); - /* 80872560 */ void entryModel(J3DModel*); - - static u8 m_entryModel[12]; - static u8 m_myObj[4]; -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A441C */ void setLightTevColorType(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dMirror_packet_c { - /* 80870BD8 */ dMirror_packet_c(); - /* 80870C94 */ void reset(); - /* 80870CA0 */ void calcMinMax(); - /* 80870D58 */ void entryModel(J3DModel*); - /* 80870D88 */ void mirrorZdraw(f32*, f32*, f32, f32, f32, f32, f32, f32); - /* 80871268 */ void modelDraw(J3DModel*, f32 (*)[4]); - /* 8087146C */ void mainDraw(); - /* 80871D84 */ void draw(); - /* 80871E84 */ ~dMirror_packet_c(); -}; - -struct _GXTlutObj {}; - -struct _GXTexObj {}; - -struct _GXCullMode {}; - -struct _GXColor {}; - -struct _GXChannelID {}; - -struct ResTIMG {}; - -struct J3DUClipper { - /* 8027378C */ void calcViewFrustum(); - /* 80273A44 */ void clip(f32 const (*)[4], Vec*, Vec*) const; -}; - -struct J3DSys { - /* 8031073C */ void reinitGX(); -}; - -struct J3DShapePacket { - /* 80312FBC */ void drawFast(); -}; - -struct J3DShape { - /* 80315300 */ void loadPreDrawSetting() const; - - static u8 sOldVcdVatCmd[4]; -}; - -struct J3DPacket; -struct J3DDrawBuffer { - /* 8032548C */ void entryImm(J3DPacket*, u16); -}; - -struct J3DPacket { - /* 80312750 */ bool entry(J3DDrawBuffer*); -}; - -struct J3DDisplayListObj { - /* 80312618 */ void callDL() const; -}; - // // Forward References: // @@ -203,48 +89,7 @@ extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); extern "C" void drawFast__14J3DShapePacketFv(); extern "C" void loadPreDrawSetting__8J3DShapeCFv(); extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXConcat(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSMTXMultVecArray(); -extern "C" void C_MTXOrtho(); -extern "C" void PSVECScale(); -extern "C" void GXSetVtxDesc(); -extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmt(); -extern "C" void GXSetTexCoordGen2(); -extern "C" void GXSetNumTexGens(); -extern "C" void GXBegin(); -extern "C" void GXSetCullMode(); -extern "C" void GXSetNumChans(); -extern "C" void GXSetChanCtrl(); -extern "C" void GXGetTexObjWidth(); -extern "C" void GXLoadTexObj(); -extern "C" void GXSetNumIndStages(); -extern "C" void GXSetTevColorIn(); -extern "C" void GXSetTevAlphaIn(); -extern "C" void GXSetTevColorOp(); -extern "C" void GXSetTevAlphaOp(); -extern "C" void GXSetTevColor(); -extern "C" void GXSetAlphaCompare(); -extern "C" void GXSetTevOrder(); -extern "C" void GXSetNumTevStages(); -extern "C" void GXSetFog(); -extern "C" void GXSetFogRangeAdj(); -extern "C" void GXSetBlendMode(); -extern "C" void GXSetColorUpdate(); -extern "C" void GXSetAlphaUpdate(); -extern "C" void GXSetZMode(); -extern "C" void GXSetZCompLoc(); -extern "C" void GXSetProjection(); -extern "C" void GXSetProjectionv(); -extern "C" void GXGetProjectionv(); -extern "C" void GXLoadPosMtxImm(); -extern "C" void GXSetCurrentMtx(); -extern "C" void GXGetViewportv(); -extern "C" void GXSetScissor(); -extern "C" void GXGetScissor(); + extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __cvt_fp2unsigned(); @@ -254,19 +99,10 @@ extern "C" void _savegpr_28(); extern "C" void _restgpr_18(); extern "C" void _restgpr_21(); extern "C" void _restgpr_28(); -extern "C" void tan(); -extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */]; -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__9J3DPacket[5]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mClipper__14mDoLib_clipper[92]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 m_entryModel__10daMirror_c[12]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; -extern "C" extern u8 g_clearColor[4]; -extern "C" extern u32 __float_max; extern "C" f32 mSystemFar__14mDoLib_clipper; extern "C" u8 m_myObj__10daMirror_c[4]; extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; @@ -276,57 +112,16 @@ extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; // /* 80870BB8-80870BD8 000078 0020+00 1/1 0/0 0/0 .text daMirror_c_createHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daMirror_c_createHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_c_createHeap__FP10fopAc_ac_c.s" +static bool daMirror_c_createHeap(fopAc_ac_c* param_0) { + return ((daMirror_c*)param_0)->createHeap(); } -#pragma pop /* ############################################################################################## */ -/* 80872650-80872650 0000C4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80872650 = "Mirror"; -SECTION_DEAD static char const* const stringBase_80872657 = "MR-Table"; -#pragma pop - /* 80872660-80872664 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_mirror__stringBase0; +static char* l_arcName = "Mirror"; /* 80872664-80872668 -00001 0004+00 2/2 0/0 0/0 .data l_arcName2 */ -SECTION_DATA static void* l_arcName2 = (void*)(((char*)&d_a_mirror__stringBase0) + 0x7); - -/* 80872668-80872674 -00001 000C+00 1/1 0/0 0/0 .data @4377 */ -SECTION_DATA static void* lit_4377[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryModel__10daMirror_cFP8J3DModel, -}; - -/* 80872674-80872694 -00001 0020+00 1/0 0/0 0/0 .data daMirror_METHODS */ -SECTION_DATA static void* daMirror_METHODS[8] = { - (void*)daMirror_create__FP10daMirror_c, - (void*)daMirror_Delete__FP10daMirror_c, - (void*)daMirror_execute__FP10daMirror_c, - (void*)NULL, - (void*)daMirror_draw__FP10daMirror_c, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - -/* 80872694-808726C4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_MIRROR */ -SECTION_DATA extern void* g_profile_MIRROR[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x02DF0000, (void*)&g_fpcLf_Method, - (void*)0x000006FC, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x02F50000, (void*)&daMirror_METHODS, - (void*)0x00060000, (void*)0x05000000, -}; +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] = { @@ -338,59 +133,80 @@ SECTION_DATA extern void* __vt__16dMirror_packet_c[5] = { }; /* 80870BD8-80870C54 000098 007C+00 1/1 0/0 0/0 .text __ct__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMirror_packet_c::dMirror_packet_c() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__16dMirror_packet_cFv.s" +dMirror_packet_c::dMirror_packet_c() { + reset(); } -#pragma pop + /* 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 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() { +//cXyz::cXyz() { +void __ct__4cXyzFv() { /* empty function */ } /* 80870C94-80870CA0 000154 000C+00 2/2 0/0 0/0 .text reset__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::reset() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/reset__16dMirror_packet_cFv.s" +void dMirror_packet_c::reset() { + mModelCount = 0; } -#pragma pop /* 80870CA0-80870D58 000160 00B8+00 1/1 0/0 0/0 .text calcMinMax__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::calcMinMax() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/calcMinMax__16dMirror_packet_cFv.s" +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; + if (val < mMinVal.x) { + mMinVal.x = val; + } + + val = ptr->x; + if (val > mMaxVal.x) { + mMaxVal.x = val; + } + + val = ptr->y; + if (val < mMinVal.y) { + mMinVal.y = val; + } + + val = ptr->y; + if (val > mMaxVal.y) { + mMaxVal.y = val; + } + + val = ptr->z; + if (val < mMinVal.z) { + mMinVal.z = val; + } + + val = ptr->z; + if (val > mMaxVal.z) { + mMaxVal.z = val; + } + } } -#pragma pop /* 80870D58-80870D88 000218 0030+00 1/1 0/0 0/0 .text entryModel__16dMirror_packet_cFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::entryModel(J3DModel* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__16dMirror_packet_cFP8J3DModel.s" +int dMirror_packet_c::entryModel(J3DModel* param_0) { + if (mModelCount >= 0x40) { + return 0; + } + + mModels[mModelCount++] = param_0; + return 1; } -#pragma pop /* ############################################################################################## */ /* 8087258C-80872590 000000 0004+00 3/3 0/0 0/0 .rodata @3884 */ @@ -400,8 +216,8 @@ 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 u8 const l_texCoord[8] = { - 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, +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 @@ -436,8 +252,107 @@ SECTION_RODATA static f32 const lit_3948 = -100.0f; COMPILER_STRIP_GATE(0x808725A4, &lit_3948); #pragma pop +inline static void GXSetTexCoordGen(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx) { + GXSetTexCoordGen2(dst, type, src, mtx, 0, 125); +} + +inline static void damirror_GXEnd() { + i_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) { + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0, 0, 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}; + 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); + 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); + 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); + GXSetFogRangeAdj(0, 0, NULL); + GXSetCullMode(GX_CULL_BACK); + GXSetNumIndStages(0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetZMode(1, GX_GEQUAL, 1); + 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(); + + if (mViewScale.y > 0.0f) { + GXSetZMode(1, GX_ALWAYS, 1); + GXSetColorUpdate(0); + GXSetAlphaUpdate(0); + 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); + GXSetProjection(mtx, GX_ORTHOGRAPHIC); + GXLoadPosMtxImm(mDoMtx_getIdentity(), 0); + + param_3 -= 1.0f; + 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(); + 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); + GXSetNumChans(0); + GXSetNumTexGens(1); + GXSetZCompLoc(0); + 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); + 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); + } + } + damirror_GXEnd(); + } else { + GXSetProjectionv(param_0); + } + + GXSetColorUpdate(1); + GXSetAlphaUpdate(0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -447,6 +362,7 @@ asm void dMirror_packet_c::mirrorZdraw(f32* param_0, f32* param_1, f32 param_2, #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 */ @@ -460,6 +376,54 @@ 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) { + return; + } + + 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(); + u16 materialNum = modelData->getMaterialNum(); + for (u16 i = 0; i < materialNum; i++) { + J3DMatPacket* matPacket = param_0->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); + shapePacket->setBaseMtxPtr((Mtx*)param_1); + shapePacket->drawFast(); + shapePacket->setBaseMtxPtr((Mtx*)j3dSys.getViewMtx()); + } + shape->resetVcdVatCache(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -468,6 +432,7 @@ asm void dMirror_packet_c::modelDraw(J3DModel* param_0, f32 (*param_1)[4]) { #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 */ @@ -557,64 +522,50 @@ asm void dMirror_packet_c::mainDraw() { #pragma pop /* 80871D84-80871E24 001244 00A0+00 1/0 0/0 0/0 .text draw__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMirror_packet_c::draw() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/draw__16dMirror_packet_cFv.s" +void dMirror_packet_c::draw() { + mDoLib_clipper::changeFar(dComIfGd_getView()->mFar); + s32 clipRes = mDoLib_clipper::clip(j3dSys.getViewMtx(), &mMaxVal, &mMinVal); + if (clipRes == 0) { + mainDraw(); + } + mDoLib_clipper::resetFar(); + reset(); } -#pragma pop /* 80871E24-80871E84 0012E4 0060+00 1/1 0/0 0/0 .text __ct__10daMirror_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daMirror_c::daMirror_c() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/__ct__10daMirror_cFv.s" +daMirror_c::daMirror_c() { + m_entryModel = &daMirror_c::entryModel; } -#pragma pop /* 80871E84-80871F08 001344 0084+00 1/0 0/0 0/0 .text __dt__16dMirror_packet_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dMirror_packet_c::~dMirror_packet_c() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/__dt__16dMirror_packet_cFv.s" +dMirror_packet_c::~dMirror_packet_c() { } -#pragma pop /* 80871F08-80871F78 0013C8 0070+00 1/1 0/0 0/0 .text createHeap__10daMirror_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMirror_c::createHeap() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/createHeap__10daMirror_cFv.s" +bool daMirror_c::createHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + field_0x6f8 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + return (field_0x6f8 != NULL); } -#pragma pop /* 80871F78-80872018 001438 00A0+00 1/1 0/0 0/0 .text setModelMtx__10daMirror_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMirror_c::setModelMtx() { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/setModelMtx__10daMirror_cFv.s" +void daMirror_c::setModelMtx() { + field_0x6f8->setBaseScale(mScale); + 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()); } -#pragma pop /* 80872018-8087206C 0014D8 0054+00 1/0 0/0 0/0 .text daMirror_create__FP10daMirror_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daMirror_create(daMirror_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_create__FP10daMirror_c.s" +static int daMirror_create(daMirror_c* param_0) { + if (fopAcM_CheckCondition(param_0, 8) == 0) { + new (param_0) daMirror_c(); + fopAcM_OnCondition(param_0, 8); + } + return param_0->daMirror_c::create(); } -#pragma pop /* ############################################################################################## */ /* 808725DC-8087260C 000050 0030+00 0/0 0/0 0/0 .rodata @4406 */ @@ -630,17 +581,16 @@ COMPILER_STRIP_GATE(0x808725DC, &lit_4406); /* 8087260C-8087263C 000080 0030+00 1/1 0/0 0/0 .rodata * l_mirrorQuad$localstatic3$create__10daMirror_cFv */ -SECTION_RODATA static u8 const data_8087260C[48] = { - 0xC2, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +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 u8 const data_8087263C[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const data_8087263C = { + 0.0f, 50.0f, 0.0f, }; COMPILER_STRIP_GATE(0x8087263C, &data_8087263C); @@ -652,34 +602,114 @@ 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 (m_myObj != NULL) { + return 0; + } + + s32 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) { + default: + return res; + case cPhs_COMPLEATE_e: + if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)daMirror_c_createHeap, 0x1540)) { + return 5; + } + break; + } + + setModelMtx(); + void* uVar2 = dComIfG_getObjectRes(l_arcName, 7); + GXTexObj& texObj = mPacket.getTexObj(); + mDoLib_setResTimgObj((ResTIMG*)uVar2, &texObj, 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}, + }; + mDoMtx_stack_c::scaleS(mScale); + mDoMtx_stack_c::revConcat(field_0x6f8->getBaseTRMtx()); + cMtx_multVecArray(mDoMtx_stack_c::get(), src, mPacket.getQuad(), 4); + mPacket.getViewScale().set(-1.0f, 1.0f, 1.0f); + } else { + if (type == 1) { + mScale *= 10.0f; + 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) { + default: + return res; + case cPhs_COMPLEATE_e: + void* objRes = dComIfG_getObjectRes(l_arcName2, 0x25); + mDoLib_setResTimgObj((ResTIMG*)objRes, &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(mScale.x, mScale.y, mScale.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}, + }; + mDoMtx_stack_c::multVecArray(data_8087260Cb, + 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, &mEyePos); + return 4; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daMirror_c::create() { +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 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daMirror_Delete(daMirror_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_Delete__FP10daMirror_c.s" +static int daMirror_Delete(daMirror_c* param_0) { + s32 mirrorType = param_0->getType(); + if (mirrorType == 2) { + dComIfG_resDelete(param_0 ? ¶m_0->mPhase : (request_of_phase_process_class*)param_0, l_arcName); + } else if (mirrorType == 3) { + dComIfG_resDelete(param_0 ? ¶m_0->mPhase: (request_of_phase_process_class*)param_0, l_arcName2); + } + daMirror_c::m_myObj = NULL; + return 1; } -#pragma pop /* 808723C4-808723E4 001884 0020+00 1/0 0/0 0/0 .text daMirror_execute__FP10daMirror_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daMirror_execute(daMirror_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_execute__FP10daMirror_c.s" +static int daMirror_execute(daMirror_c* param_0) { + return param_0->execute(); } -#pragma pop /* ############################################################################################## */ /* 8087264C-80872650 0000C0 0004+00 1/1 0/0 0/0 .rodata @4574 */ @@ -687,34 +717,86 @@ SECTION_RODATA static f32 const lit_4574 = 40000.0f; COMPILER_STRIP_GATE(0x8087264C, &lit_4574); /* 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) { + fopAcM_delete(this); + } + } + return 1; + } + + daPy_py_c* player = daPy_getLinkPlayerActorClass(); + if (mPacket.getViewScale().y > 0.0f && + player->getKandelaarFlamePos() && + fopAcM_searchActorDistance2(this, player) < 40000.0f) + { + if (fopAcM_seenActorAngleY(this, player) < 0x4000) { + daPy_py_c::setLookPos(&mEyePos); + } + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daMirror_c::execute() { +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 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daMirror_draw(daMirror_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/daMirror_draw__FP10daMirror_c.s" +static int daMirror_draw(daMirror_c* param_0) { + if (param_0 != daMirror_c::m_myObj) { + return 1; + } + + if (param_0->field_0x6f8) { + g_env_light.settingTevStruct(0x10, ¶m_0->current.pos, ¶m_0->mTevStr); + g_env_light.setLightTevColorType(param_0->field_0x6f8->mModelData, ¶m_0->mTevStr); + mDoExt_modelUpdateDL(param_0->field_0x6f8); + } + + dComIfGd_getOpaListBG()->entryImm(¶m_0->mPacket, 0); + return 1; } -#pragma pop /* 80872560-80872584 001A20 0024+00 1/0 0/0 0/0 .text entryModel__10daMirror_cFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMirror_c::entryModel(J3DModel* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_mirror/d_a_mirror/entryModel__10daMirror_cFP8J3DModel.s" +int daMirror_c::entryModel(J3DModel* param_0) { + return mPacket.entryModel(param_0); } -#pragma pop /* 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_draw, +}; + +/* 80872694-808726C4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_MIRROR */ +extern actor_process_profile_definition g_profile_MIRROR = { + -3, + 7, + -3, + PROC_MIRROR, + &g_fpcLf_Method.mBase, + sizeof(daMirror_c), + 0, + 0, + &g_fopAc_Method.base, + 0x02F5, + &daMirror_METHODS, + 0x00060000, + 5, + 0, +}; diff --git a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp index b03a7c4662..5adb1afdee 100644 --- a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp +++ b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp @@ -4,6 +4,7 @@ // #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" #include "MSL_C/string.h" #include "d/d_stage.h" #include "dol2asm.h" @@ -14,10 +15,6 @@ // Types: // -struct daMirror_c { - /* 8003194C */ void entry(J3DModel*); -}; - struct dTres_c { /* 8009C3CC */ void setPosition(int, u8, Vec const*, int); }; diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index 44eb658438..479d1da91a 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -35,6 +35,7 @@ #include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h" #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" #include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" // // Types: @@ -66,10 +67,6 @@ struct daNpcT_ActorMngr_c { /* 80145708 */ void getActorP(); }; -struct daMirror_c { - /* 8003194C */ static void entry(J3DModel*); -}; - struct dPaPoF_c { /* 800512E8 */ void setEffectFour(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*, cXyz const*, cXyz const*, cXyz const*, cXyz const*, diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp index cbb4dff884..5e01c9b6e1 100644 --- a/src/d/com/d_com_static.cpp +++ b/src/d/com/d_com_static.cpp @@ -14,6 +14,7 @@ #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" #include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h" #include "rel/d/a/tag/d_a_tag_stream/d_a_tag_stream.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" // // Types: @@ -41,18 +42,6 @@ struct daObjMovebox { }; }; -struct dMirror_packet_c { -}; - -struct daMirror_c: fopAc_ac_c { - /* 8003194C */ static int entry(J3DModel*); - /* 80031990 */ static int remove(); - - typedef int (daMirror_c::*entryModelFunc)(J3DModel*); - static entryModelFunc m_entryModel; - static daMirror_c* m_myObj; -}; - struct dFlower_packet_c { typedef void (dFlower_packet_c::*DeleteRoomFunc)(int); static DeleteRoomFunc m_deleteRoom; diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 1d803049d6..6699dbbe7f 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1646,8 +1646,8 @@ bool J3DIndBlock::getIndTexOrder(u32 param_0) { /* 8000DF7C-8000DF84 0088BC 0008+00 0/0 2/0 0/0 .text getIndTexStageNum__11J3DIndBlockCFv */ -bool J3DIndBlock::getIndTexStageNum() const { - return false; +u8 J3DIndBlock::getIndTexStageNum() const { + return 0; } /* 8000DF84-8000DF8C 0088C4 0008+00 0/0 2/0 0/0 .text getIndTevStage__11J3DTevBlockFUl */ @@ -1740,8 +1740,8 @@ GXColor* J3DColorBlock::getMatColor(u32 param_0) { /* 8000E008-8000E010 008948 0008+00 0/0 2/0 0/0 .text getColorChanNum__13J3DColorBlockCFv */ -bool J3DColorBlock::getColorChanNum() const { - return false; +u8 J3DColorBlock::getColorChanNum() const { + return 0; } /* 8000E010-8000E014 008950 0004+00 0/0 5/0 0/0 .text setZCompLoc__10J3DPEBlockFUc */