Merge pull request #357 from hatal175/d_a_mirror

Work on d_a_mirror
This commit is contained in:
hatal175 2023-06-30 21:39:49 +03:00 committed by GitHub
commit 2c06d515d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 497 additions and 784 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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 {

View File

@ -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();
}

View File

@ -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]); }

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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 {

View File

@ -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 */

View File

@ -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"
}

View File

@ -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*);

View File

@ -6,7 +6,6 @@
#include "dolphin/gf/GFGeometry.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "dolphin/gx/GX.h"
//
// Types:

View File

@ -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"
//

View File

@ -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;

View File

@ -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 ? &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);
}
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, &param_0->current.pos, &param_0->mTevStr);
g_env_light.setLightTevColorType(param_0->field_0x6f8->mModelData, &param_0->mTevStr);
mDoExt_modelUpdateDL(param_0->field_0x6f8);
}
dComIfGd_getOpaListBG()->entryImm(&param_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,
};

View File

@ -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);
};

View File

@ -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*,

View File

@ -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;

View File

@ -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 */