From a3c4cc486e6f67c1beb5d84e45fb979cc744fba3 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Wed, 28 Jun 2023 14:54:53 +0300 Subject: [PATCH] Work on d_com_static --- Progress.md | 8 +- .../checkArea__13daTagStream_cFPC4cXyz.s | 41 --- .../check__7daSus_cFP10fopAc_ac_c.s | 58 ---- .../d_com_static/check__7daSus_cFScRC4cXyz.s | 45 --- .../deleteRoomFlower__9daGrass_cFi.s | 24 -- .../deleteRoomGrass__9daGrass_cFi.s | 24 -- .../entry__10daMirror_cFP8J3DModel.s | 20 -- asm/d/com/d_com_static/execute__7daSus_cFv.s | 30 -- .../d_com_static/getPos__12daObjCarry_cFi.s | 6 - .../com/d_com_static/remove__10daMirror_cFv.s | 17 -- asm/d/com/d_com_static/reset__7daSus_cFv.s | 33 --- .../savePos__12daObjCarry_cFi4cXyz.s | 12 - include/rel/d/a/d_a_suspend/d_a_suspend.h | 5 +- .../rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h | 6 +- src/d/com/d_com_static.cpp | 263 ++++++++++-------- 15 files changed, 157 insertions(+), 435 deletions(-) delete mode 100644 asm/d/com/d_com_static/checkArea__13daTagStream_cFPC4cXyz.s delete mode 100644 asm/d/com/d_com_static/check__7daSus_cFP10fopAc_ac_c.s delete mode 100644 asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s delete mode 100644 asm/d/com/d_com_static/deleteRoomFlower__9daGrass_cFi.s delete mode 100644 asm/d/com/d_com_static/deleteRoomGrass__9daGrass_cFi.s delete mode 100644 asm/d/com/d_com_static/entry__10daMirror_cFP8J3DModel.s delete mode 100644 asm/d/com/d_com_static/execute__7daSus_cFv.s delete mode 100644 asm/d/com/d_com_static/getPos__12daObjCarry_cFi.s delete mode 100644 asm/d/com/d_com_static/remove__10daMirror_cFv.s delete mode 100644 asm/d/com/d_com_static/reset__7daSus_cFv.s delete mode 100644 asm/d/com/d_com_static/savePos__12daObjCarry_cFi4cXyz.s diff --git a/Progress.md b/Progress.md index 0cc4d098d96..180ee9be64b 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 27.738852% | 997640 | 3596544 +.text | 27.769659% | 998748 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 35.356677% | 1421576 | 4020672 +Total | 35.384234% | 1422684 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 35.356677% | 1421576 | 4020672 +main.dol | 35.384234% | 1422684 | 4020672 RELs | 33.657973% | 3870776 | 11500324 -Total | 34.098018% | 5292352 | 15520996 +Total | 34.105157% | 5293460 | 15520996 ## RELs diff --git a/asm/d/com/d_com_static/checkArea__13daTagStream_cFPC4cXyz.s b/asm/d/com/d_com_static/checkArea__13daTagStream_cFPC4cXyz.s deleted file mode 100644 index 2f81d832a78..00000000000 --- a/asm/d/com/d_com_static/checkArea__13daTagStream_cFPC4cXyz.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_800318B4: -/* 800318B4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800318B8 7C 08 02 A6 */ mflr r0 -/* 800318BC 90 01 00 24 */ stw r0, 0x24(r1) -/* 800318C0 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 800318C4 7C 7F 1B 78 */ mr r31, r3 -/* 800318C8 38 A1 00 08 */ addi r5, r1, 8 -/* 800318CC 4B FE C0 35 */ bl fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz -/* 800318D0 C0 21 00 0C */ lfs f1, 0xc(r1) -/* 800318D4 C0 02 83 54 */ lfs f0, lit_4338(r2) -/* 800318D8 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 800318DC 4C 41 13 82 */ cror 2, 1, 2 -/* 800318E0 40 82 00 54 */ bne lbl_80031934 -/* 800318E4 C0 1F 04 F0 */ lfs f0, 0x4f0(r31) -/* 800318E8 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 800318EC 4C 40 13 82 */ cror 2, 0, 2 -/* 800318F0 40 82 00 44 */ bne lbl_80031934 -/* 800318F4 C0 01 00 08 */ lfs f0, 8(r1) -/* 800318F8 FC 00 02 10 */ fabs f0, f0 -/* 800318FC FC 20 00 18 */ frsp f1, f0 -/* 80031900 C0 1F 04 EC */ lfs f0, 0x4ec(r31) -/* 80031904 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80031908 4C 40 13 82 */ cror 2, 0, 2 -/* 8003190C 40 82 00 28 */ bne lbl_80031934 -/* 80031910 C0 01 00 10 */ lfs f0, 0x10(r1) -/* 80031914 FC 00 02 10 */ fabs f0, f0 -/* 80031918 FC 20 00 18 */ frsp f1, f0 -/* 8003191C C0 1F 04 F4 */ lfs f0, 0x4f4(r31) -/* 80031920 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80031924 4C 40 13 82 */ cror 2, 0, 2 -/* 80031928 40 82 00 0C */ bne lbl_80031934 -/* 8003192C 38 60 00 01 */ li r3, 1 -/* 80031930 48 00 00 08 */ b lbl_80031938 -lbl_80031934: -/* 80031934 38 60 00 00 */ li r3, 0 -lbl_80031938: -/* 80031938 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8003193C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80031940 7C 08 03 A6 */ mtlr r0 -/* 80031944 38 21 00 20 */ addi r1, r1, 0x20 -/* 80031948 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/check__7daSus_cFP10fopAc_ac_c.s b/asm/d/com/d_com_static/check__7daSus_cFP10fopAc_ac_c.s deleted file mode 100644 index a89ff143655..00000000000 --- a/asm/d/com/d_com_static/check__7daSus_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_800314D4: -/* 800314D4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800314D8 7C 08 02 A6 */ mflr r0 -/* 800314DC 90 01 00 24 */ stw r0, 0x24(r1) -/* 800314E0 39 61 00 20 */ addi r11, r1, 0x20 -/* 800314E4 48 33 0C F5 */ bl _savegpr_28 -/* 800314E8 7C 7F 1B 78 */ mr r31, r3 -/* 800314EC 88 03 04 96 */ lbz r0, 0x496(r3) -/* 800314F0 28 00 00 01 */ cmplwi r0, 1 -/* 800314F4 41 82 00 98 */ beq lbl_8003158C -/* 800314F8 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 800314FC 28 00 00 05 */ cmplwi r0, 5 -/* 80031500 41 82 00 8C */ beq lbl_8003158C -/* 80031504 3C 60 80 42 */ lis r3, mData__7daSus_c@ha /* 0x80423FFC@ha */ -/* 80031508 38 03 3F FC */ addi r0, r3, mData__7daSus_c@l /* 0x80423FFC@l */ -/* 8003150C 7C 1E 03 78 */ mr r30, r0 -/* 80031510 3B A0 00 00 */ li r29, 0 -/* 80031514 3B 80 00 00 */ li r28, 0 -/* 80031518 48 00 00 34 */ b lbl_8003154C -lbl_8003151C: -/* 8003151C 88 1E 00 00 */ lbz r0, 0(r30) -/* 80031520 7C 00 07 75 */ extsb. r0, r0 -/* 80031524 41 80 00 20 */ blt lbl_80031544 -/* 80031528 88 1E 00 04 */ lbz r0, 4(r30) -/* 8003152C 28 00 00 00 */ cmplwi r0, 0 -/* 80031530 40 82 00 14 */ bne lbl_80031544 -/* 80031534 7F C3 F3 78 */ mr r3, r30 -/* 80031538 7F E4 FB 78 */ mr r4, r31 -/* 8003153C 4B FF FB 8D */ bl check__Q27daSus_c6data_cFP10fopAc_ac_c -/* 80031540 7F BD 1B 78 */ or r29, r29, r3 -lbl_80031544: -/* 80031544 3B DE 00 24 */ addi r30, r30, 0x24 -/* 80031548 3B 9C 00 01 */ addi r28, r28, 1 -lbl_8003154C: -/* 8003154C 7F 80 07 34 */ extsh r0, r28 -/* 80031550 2C 00 00 20 */ cmpwi r0, 0x20 -/* 80031554 41 80 FF C8 */ blt lbl_8003151C -/* 80031558 57 A3 06 3E */ clrlwi r3, r29, 0x18 -/* 8003155C 57 A0 06 31 */ rlwinm. r0, r29, 0, 0x18, 0x18 -/* 80031560 41 82 00 2C */ beq lbl_8003158C -/* 80031564 54 60 07 BE */ clrlwi r0, r3, 0x1e -/* 80031568 2C 00 00 03 */ cmpwi r0, 3 -/* 8003156C 40 82 00 14 */ bne lbl_80031580 -/* 80031570 80 1F 04 9C */ lwz r0, 0x49c(r31) -/* 80031574 64 00 20 00 */ oris r0, r0, 0x2000 -/* 80031578 90 1F 04 9C */ stw r0, 0x49c(r31) -/* 8003157C 48 00 00 10 */ b lbl_8003158C -lbl_80031580: -/* 80031580 80 1F 04 9C */ lwz r0, 0x49c(r31) -/* 80031584 54 00 00 C2 */ rlwinm r0, r0, 0, 3, 1 -/* 80031588 90 1F 04 9C */ stw r0, 0x49c(r31) -lbl_8003158C: -/* 8003158C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80031590 48 33 0C 95 */ bl _restgpr_28 -/* 80031594 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80031598 7C 08 03 A6 */ mtlr r0 -/* 8003159C 38 21 00 20 */ addi r1, r1, 0x20 -/* 800315A0 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s b/asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s deleted file mode 100644 index 49d28c962d4..00000000000 --- a/asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80031434: -/* 80031434 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80031438 7C 08 02 A6 */ mflr r0 -/* 8003143C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80031440 39 61 00 20 */ addi r11, r1, 0x20 -/* 80031444 48 33 0D 95 */ bl _savegpr_28 -/* 80031448 7C 9C 23 78 */ mr r28, r4 -/* 8003144C 3C 80 80 42 */ lis r4, mData__7daSus_c@ha /* 0x80423FFC@ha */ -/* 80031450 38 04 3F FC */ addi r0, r4, mData__7daSus_c@l /* 0x80423FFC@l */ -/* 80031454 7C 1E 03 78 */ mr r30, r0 -/* 80031458 3B A0 00 00 */ li r29, 0 -/* 8003145C 7C 7F 07 74 */ extsb r31, r3 -/* 80031460 48 00 00 4C */ b lbl_800314AC -lbl_80031464: -/* 80031464 88 7E 00 00 */ lbz r3, 0(r30) -/* 80031468 7C 60 07 75 */ extsb. r0, r3 -/* 8003146C 41 80 00 38 */ blt lbl_800314A4 -/* 80031470 7C 60 07 74 */ extsb r0, r3 -/* 80031474 7C 1F 00 00 */ cmpw r31, r0 -/* 80031478 40 82 00 2C */ bne lbl_800314A4 -/* 8003147C 88 1E 00 04 */ lbz r0, 4(r30) -/* 80031480 28 00 00 00 */ cmplwi r0, 0 -/* 80031484 41 82 00 20 */ beq lbl_800314A4 -/* 80031488 7F C3 F3 78 */ mr r3, r30 -/* 8003148C 7F 84 E3 78 */ mr r4, r28 -/* 80031490 4B FF FB A9 */ bl check__Q27daSus_c6data_cFRC4cXyz -/* 80031494 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80031498 41 82 00 0C */ beq lbl_800314A4 -/* 8003149C 38 60 00 01 */ li r3, 1 -/* 800314A0 48 00 00 1C */ b lbl_800314BC -lbl_800314A4: -/* 800314A4 3B DE 00 24 */ addi r30, r30, 0x24 -/* 800314A8 3B BD 00 01 */ addi r29, r29, 1 -lbl_800314AC: -/* 800314AC 7F A0 07 34 */ extsh r0, r29 -/* 800314B0 2C 00 00 20 */ cmpwi r0, 0x20 -/* 800314B4 41 80 FF B0 */ blt lbl_80031464 -/* 800314B8 38 60 00 00 */ li r3, 0 -lbl_800314BC: -/* 800314BC 39 61 00 20 */ addi r11, r1, 0x20 -/* 800314C0 48 33 0D 65 */ bl _restgpr_28 -/* 800314C4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800314C8 7C 08 03 A6 */ mtlr r0 -/* 800314CC 38 21 00 20 */ addi r1, r1, 0x20 -/* 800314D0 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/deleteRoomFlower__9daGrass_cFi.s b/asm/d/com/d_com_static/deleteRoomFlower__9daGrass_cFi.s deleted file mode 100644 index df4108cb9c3..00000000000 --- a/asm/d/com/d_com_static/deleteRoomFlower__9daGrass_cFi.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80031A20: -/* 80031A20 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80031A24 7C 08 02 A6 */ mflr r0 -/* 80031A28 90 01 00 24 */ stw r0, 0x24(r1) -/* 80031A2C 7C 64 1B 78 */ mr r4, r3 -/* 80031A30 80 6D 88 34 */ lwz r3, m_flower__9daGrass_c(r13) -/* 80031A34 28 03 00 00 */ cmplwi r3, 0 -/* 80031A38 41 82 00 30 */ beq lbl_80031A68 -/* 80031A3C 3C A0 80 42 */ lis r5, m_deleteRoom__16dFlower_packet_c@ha /* 0x80424594@ha */ -/* 80031A40 38 C5 45 94 */ addi r6, r5, m_deleteRoom__16dFlower_packet_c@l /* 0x80424594@l */ -/* 80031A44 80 A6 00 00 */ lwz r5, 0(r6) -/* 80031A48 80 06 00 04 */ lwz r0, 4(r6) -/* 80031A4C 90 A1 00 08 */ stw r5, 8(r1) -/* 80031A50 90 01 00 0C */ stw r0, 0xc(r1) -/* 80031A54 80 06 00 08 */ lwz r0, 8(r6) -/* 80031A58 90 01 00 10 */ stw r0, 0x10(r1) -/* 80031A5C 39 81 00 08 */ addi r12, r1, 8 -/* 80031A60 48 33 06 25 */ bl __ptmf_scall -/* 80031A64 60 00 00 00 */ nop -lbl_80031A68: -/* 80031A68 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80031A6C 7C 08 03 A6 */ mtlr r0 -/* 80031A70 38 21 00 20 */ addi r1, r1, 0x20 -/* 80031A74 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/deleteRoomGrass__9daGrass_cFi.s b/asm/d/com/d_com_static/deleteRoomGrass__9daGrass_cFi.s deleted file mode 100644 index 072464b587a..00000000000 --- a/asm/d/com/d_com_static/deleteRoomGrass__9daGrass_cFi.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_800319C8: -/* 800319C8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800319CC 7C 08 02 A6 */ mflr r0 -/* 800319D0 90 01 00 24 */ stw r0, 0x24(r1) -/* 800319D4 7C 64 1B 78 */ mr r4, r3 -/* 800319D8 80 6D 88 30 */ lwz r3, m_grass__9daGrass_c(r13) -/* 800319DC 28 03 00 00 */ cmplwi r3, 0 -/* 800319E0 41 82 00 30 */ beq lbl_80031A10 -/* 800319E4 3C A0 80 42 */ lis r5, m_deleteRoom__15dGrass_packet_c@ha /* 0x80424588@ha */ -/* 800319E8 38 C5 45 88 */ addi r6, r5, m_deleteRoom__15dGrass_packet_c@l /* 0x80424588@l */ -/* 800319EC 80 A6 00 00 */ lwz r5, 0(r6) -/* 800319F0 80 06 00 04 */ lwz r0, 4(r6) -/* 800319F4 90 A1 00 08 */ stw r5, 8(r1) -/* 800319F8 90 01 00 0C */ stw r0, 0xc(r1) -/* 800319FC 80 06 00 08 */ lwz r0, 8(r6) -/* 80031A00 90 01 00 10 */ stw r0, 0x10(r1) -/* 80031A04 39 81 00 08 */ addi r12, r1, 8 -/* 80031A08 48 33 06 7D */ bl __ptmf_scall -/* 80031A0C 60 00 00 00 */ nop -lbl_80031A10: -/* 80031A10 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80031A14 7C 08 03 A6 */ mtlr r0 -/* 80031A18 38 21 00 20 */ addi r1, r1, 0x20 -/* 80031A1C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/entry__10daMirror_cFP8J3DModel.s b/asm/d/com/d_com_static/entry__10daMirror_cFP8J3DModel.s deleted file mode 100644 index aadc7774280..00000000000 --- a/asm/d/com/d_com_static/entry__10daMirror_cFP8J3DModel.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8003194C: -/* 8003194C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031950 7C 08 02 A6 */ mflr r0 -/* 80031954 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031958 7C 64 1B 78 */ mr r4, r3 -/* 8003195C 80 6D 88 28 */ lwz r3, m_myObj__10daMirror_c(r13) -/* 80031960 28 03 00 00 */ cmplwi r3, 0 -/* 80031964 40 82 00 0C */ bne lbl_80031970 -/* 80031968 38 60 00 00 */ li r3, 0 -/* 8003196C 48 00 00 14 */ b lbl_80031980 -lbl_80031970: -/* 80031970 3C A0 80 42 */ lis r5, m_entryModel__10daMirror_c@ha /* 0x8042457C@ha */ -/* 80031974 39 85 45 7C */ addi r12, r5, m_entryModel__10daMirror_c@l /* 0x8042457C@l */ -/* 80031978 48 33 07 0D */ bl __ptmf_scall -/* 8003197C 60 00 00 00 */ nop -lbl_80031980: -/* 80031980 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031984 7C 08 03 A6 */ mtlr r0 -/* 80031988 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003198C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/execute__7daSus_cFv.s b/asm/d/com/d_com_static/execute__7daSus_cFv.s deleted file mode 100644 index 521afc10cad..00000000000 --- a/asm/d/com/d_com_static/execute__7daSus_cFv.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_800315A4: -/* 800315A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800315A8 7C 08 02 A6 */ mflr r0 -/* 800315AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800315B0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800315B4 93 C1 00 08 */ stw r30, 8(r1) -/* 800315B8 3C 60 80 42 */ lis r3, mData__7daSus_c@ha /* 0x80423FFC@ha */ -/* 800315BC 38 03 3F FC */ addi r0, r3, mData__7daSus_c@l /* 0x80423FFC@l */ -/* 800315C0 7C 1F 03 78 */ mr r31, r0 -/* 800315C4 3B C0 00 00 */ li r30, 0 -/* 800315C8 48 00 00 20 */ b lbl_800315E8 -lbl_800315CC: -/* 800315CC 88 1F 00 00 */ lbz r0, 0(r31) -/* 800315D0 7C 00 07 75 */ extsb. r0, r0 -/* 800315D4 41 80 00 0C */ blt lbl_800315E0 -/* 800315D8 7F E3 FB 78 */ mr r3, r31 -/* 800315DC 4B FF FB 75 */ bl execute__Q27daSus_c6data_cFv -lbl_800315E0: -/* 800315E0 3B FF 00 24 */ addi r31, r31, 0x24 -/* 800315E4 3B DE 00 01 */ addi r30, r30, 1 -lbl_800315E8: -/* 800315E8 7F C0 07 34 */ extsh r0, r30 -/* 800315EC 2C 00 00 20 */ cmpwi r0, 0x20 -/* 800315F0 41 80 FF DC */ blt lbl_800315CC -/* 800315F4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800315F8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800315FC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031600 7C 08 03 A6 */ mtlr r0 -/* 80031604 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031608 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/getPos__12daObjCarry_cFi.s b/asm/d/com/d_com_static/getPos__12daObjCarry_cFi.s deleted file mode 100644 index 7dc1fa770c0..00000000000 --- a/asm/d/com/d_com_static/getPos__12daObjCarry_cFi.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80031D24: -/* 80031D24 1C 83 00 0C */ mulli r4, r3, 0xc -/* 80031D28 3C 60 80 42 */ lis r3, mPos__12daObjCarry_c@ha /* 0x804245AC@ha */ -/* 80031D2C 38 03 45 AC */ addi r0, r3, mPos__12daObjCarry_c@l /* 0x804245AC@l */ -/* 80031D30 7C 60 22 14 */ add r3, r0, r4 -/* 80031D34 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/remove__10daMirror_cFv.s b/asm/d/com/d_com_static/remove__10daMirror_cFv.s deleted file mode 100644 index 0885c28c7e6..00000000000 --- a/asm/d/com/d_com_static/remove__10daMirror_cFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80031990: -/* 80031990 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031994 7C 08 02 A6 */ mflr r0 -/* 80031998 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003199C 80 6D 88 28 */ lwz r3, m_myObj__10daMirror_c(r13) -/* 800319A0 28 03 00 00 */ cmplwi r3, 0 -/* 800319A4 40 82 00 0C */ bne lbl_800319B0 -/* 800319A8 38 60 00 00 */ li r3, 0 -/* 800319AC 48 00 00 0C */ b lbl_800319B8 -lbl_800319B0: -/* 800319B0 4B FE 82 CD */ bl fopAcM_delete__FP10fopAc_ac_c -/* 800319B4 38 60 00 01 */ li r3, 1 -lbl_800319B8: -/* 800319B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800319BC 7C 08 03 A6 */ mtlr r0 -/* 800319C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800319C4 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/reset__7daSus_cFv.s b/asm/d/com/d_com_static/reset__7daSus_cFv.s deleted file mode 100644 index abce034d48e..00000000000 --- a/asm/d/com/d_com_static/reset__7daSus_cFv.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_800313BC: -/* 800313BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800313C0 7C 08 02 A6 */ mflr r0 -/* 800313C4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800313C8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800313CC 93 C1 00 08 */ stw r30, 8(r1) -/* 800313D0 3C 60 80 42 */ lis r3, mData__7daSus_c@ha /* 0x80423FFC@ha */ -/* 800313D4 38 03 3F FC */ addi r0, r3, mData__7daSus_c@l /* 0x80423FFC@l */ -/* 800313D8 7C 1F 03 78 */ mr r31, r0 -/* 800313DC 3B C0 00 00 */ li r30, 0 -lbl_800313E0: -/* 800313E0 7F E3 FB 78 */ mr r3, r31 -/* 800313E4 4B FF FB D9 */ bl reset__Q27daSus_c6data_cFv -/* 800313E8 3B DE 00 01 */ addi r30, r30, 1 -/* 800313EC 2C 1E 00 20 */ cmpwi r30, 0x20 -/* 800313F0 3B FF 00 24 */ addi r31, r31, 0x24 -/* 800313F4 41 80 FF EC */ blt lbl_800313E0 -/* 800313F8 3C 60 80 42 */ lis r3, mRoom__7daSus_c@ha /* 0x8042447C@ha */ -/* 800313FC 38 03 44 7C */ addi r0, r3, mRoom__7daSus_c@l /* 0x8042447C@l */ -/* 80031400 7C 04 03 78 */ mr r4, r0 -/* 80031404 38 60 00 00 */ li r3, 0 -/* 80031408 38 00 00 40 */ li r0, 0x40 -/* 8003140C 7C 09 03 A6 */ mtctr r0 -lbl_80031410: -/* 80031410 90 64 00 00 */ stw r3, 0(r4) -/* 80031414 38 84 00 04 */ addi r4, r4, 4 -/* 80031418 42 00 FF F8 */ bdnz lbl_80031410 -/* 8003141C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80031420 83 C1 00 08 */ lwz r30, 8(r1) -/* 80031424 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031428 7C 08 03 A6 */ mtlr r0 -/* 8003142C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031430 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/savePos__12daObjCarry_cFi4cXyz.s b/asm/d/com/d_com_static/savePos__12daObjCarry_cFi4cXyz.s deleted file mode 100644 index ebb8d6c7b1f..00000000000 --- a/asm/d/com/d_com_static/savePos__12daObjCarry_cFi4cXyz.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80031D38: -/* 80031D38 C0 04 00 00 */ lfs f0, 0(r4) -/* 80031D3C 1C 03 00 0C */ mulli r0, r3, 0xc -/* 80031D40 3C 60 80 42 */ lis r3, mPos__12daObjCarry_c@ha /* 0x804245AC@ha */ -/* 80031D44 38 63 45 AC */ addi r3, r3, mPos__12daObjCarry_c@l /* 0x804245AC@l */ -/* 80031D48 7C 03 05 2E */ stfsx f0, r3, r0 -/* 80031D4C C0 04 00 04 */ lfs f0, 4(r4) -/* 80031D50 7C 63 02 14 */ add r3, r3, r0 -/* 80031D54 D0 03 00 04 */ stfs f0, 4(r3) -/* 80031D58 C0 04 00 08 */ lfs f0, 8(r4) -/* 80031D5C D0 03 00 08 */ stfs f0, 8(r3) -/* 80031D60 4E 80 00 20 */ blr diff --git a/include/rel/d/a/d_a_suspend/d_a_suspend.h b/include/rel/d/a/d_a_suspend/d_a_suspend.h index 97eb0a4a7d4..4449d0580a7 100644 --- a/include/rel/d/a/d_a_suspend/d_a_suspend.h +++ b/include/rel/d/a/d_a_suspend/d_a_suspend.h @@ -19,6 +19,8 @@ public: void setNext(data_c* i_next) { mpNext = i_next; } data_c* getNext() { return mpNext; } u8 getType() { return mType; } + bool isUsed() { return mRoomNo < 0; } + s8 getRoomNo() { return mRoomNo; } /* 0x00 */ s8 mRoomNo; /* 0x01 */ bool field_0x1; @@ -35,11 +37,12 @@ public: /* 80031190 */ void add(daSus_c::data_c*); /* 800311FC */ void reset(); /* 80031EE4 */ room_c(); + void init() { mpData = NULL; } /* 0x0 */ data_c* mpData; }; // Size: 0x4 - /* 80031248 */ static void newData(s8, cXyz const&, cXyz const&, u8, u8, u8); + /* 80031248 */ static int newData(s8, cXyz const&, cXyz const&, u8, u8, u8); /* 800313BC */ void reset(); /* 800314D4 */ static void check(fopAc_ac_c*); /* 80031434 */ static bool check(s8 i_roomNo, cXyz const& i_pos); diff --git a/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h b/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h index 47be9da007f..edb85d9da91 100644 --- a/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h +++ b/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h @@ -29,8 +29,8 @@ public: /* 80031CF8 */ static void clrSaveFlag(); /* 80031D04 */ static void setSaveFlag(); /* 80031D10 */ static bool chkSaveFlag(); - /* 80031D24 */ void getPos(int); - /* 80031D38 */ void savePos(int, cXyz); + /* 80031D24 */ static const cXyz& getPos(int); + /* 80031D38 */ static void savePos(int, cXyz); /* 80031D64 */ static void onSttsFlag(int, u8); /* 80031D78 */ static void offSttsFlag(int, u8); /* 80031D8C */ static u8 chkSttsFlag(int, u8); @@ -185,7 +185,7 @@ public: s32 getType() { return mType; } static u8 const mData[2072]; - static u8 mPos[60]; + static Vec mPos[5]; static u8 mSttsFlag[5]; static s8 mRoomNo[5]; static bool mSaveFlag; diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp index f26a49b1752..cbb4dff884e 100644 --- a/src/d/com/d_com_static.cpp +++ b/src/d/com/d_com_static.cpp @@ -13,6 +13,7 @@ #include "rel/d/a/d_a_movie_player/d_a_movie_player.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/tag/d_a_tag_stream/d_a_tag_stream.h" // // Types: @@ -24,12 +25,6 @@ struct daYkgr_c { static u8 m_emitter[4]; }; -struct daTagStream_c { - /* 800318B4 */ void checkArea(cXyz const*); - - static u8 m_top[4]; -}; - struct daTagMist_c { /* 80031CF0 */ static u8 getPlayerNo(); @@ -46,21 +41,35 @@ struct daObjMovebox { }; }; -struct daMirror_c { - /* 8003194C */ void entry(J3DModel*); - /* 80031990 */ void remove(); +struct dMirror_packet_c { +}; - static u8 m_entryModel[12]; - static u8 m_myObj[4]; +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; +}; + +struct dGrass_packet_c { + typedef void (dGrass_packet_c::*DeleteRoomFunc)(int); + static DeleteRoomFunc m_deleteRoom; }; struct daGrass_c { - /* 800319C8 */ void deleteRoomGrass(int); - /* 80031A20 */ void deleteRoomFlower(int); + /* 800319C8 */ static void deleteRoomGrass(int); + /* 80031A20 */ static void deleteRoomFlower(int); static u8 m_myObj[4]; - static u8 m_grass[4]; - static u8 m_flower[4]; + static dGrass_packet_c* m_grass; + static dFlower_packet_c* m_flower; }; struct daDsh_c { @@ -75,14 +84,6 @@ struct daDsh_c { static f32 CLOSE_BOUND_RATIO; }; -struct dGrass_packet_c { - static u8 m_deleteRoom[12]; -}; - -struct dFlower_packet_c { - static u8 m_deleteRoom[12]; -}; - // // Forward References: // @@ -327,55 +328,102 @@ s16 m_count__9daArrow_c; s16 daSus_c::mSetTop; /* 80031248-800313BC 02BB88 0174+00 0/0 0/0 1/1 .text newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc */ +// Issues with mSetTop and m_count__9daArrow_c relocation +#ifdef NONMATCHING +int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, + u8 param_4, u8 i_type) { + s16 setTop = mSetTop; + daSus_c::data_c* pData = ((daSus_c::data_c*)mData) + setTop; + for (s16 i = setTop; i < 32; pData++, i++) { + if (pData->isUsed()) { + pData->set(i_roomNo, param_1, param_2, param_3, param_4, i_type); + daSus_c::room_c* pRoom = ((daSus_c::room_c*)mRoom) + i_roomNo; + pRoom->add(pData); + mSetTop = (i + 1) % 32; + return 1; + } + } + + pData = ((daSus_c::data_c*)mData); + for (s16 i = 0; i < setTop; pData++, i++) { + if (pData->isUsed()) { + pData->set(i_roomNo, param_1, param_2, param_3, param_4, i_type); + ((daSus_c::room_c*)mRoom)[i_roomNo].add(pData); + mSetTop = (i + 1) % 32; + return 1; + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSus_c::newData(s8 param_0, cXyz const& param_1, cXyz const& param_2, u8 param_3, +asm int daSus_c::newData(s8 param_0, cXyz const& param_1, cXyz const& param_2, u8 param_3, u8 param_4, u8 param_5) { nofralloc #include "asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s" } #pragma pop +#endif /* 800313BC-80031434 02BCFC 0078+00 0/0 1/1 0/0 .text reset__7daSus_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::reset() { - nofralloc -#include "asm/d/com/d_com_static/reset__7daSus_cFv.s" +void daSus_c::reset() { + daSus_c::data_c* pData = (daSus_c::data_c*)mData; + for (int i = 0; i < 0x20; i++, pData++) { + pData->reset(); + } + + daSus_c::room_c* pRoom = (daSus_c::room_c*)mRoom; + for (int i = 0; i < 0x40; i++, pRoom++) { + pRoom->init(); + } } -#pragma pop /* 80031434-800314D4 02BD74 00A0+00 0/0 4/4 0/0 .text check__7daSus_cFScRC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daSus_c::check(s8 i_roomNo, cXyz const& i_pos) { - nofralloc -#include "asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s" +bool daSus_c::check(s8 i_roomNo, cXyz const& i_pos) { + daSus_c::data_c* pData = (daSus_c::data_c*)mData; + for (s16 i = 0; i < 0x20; pData++, i++) { + if (!pData->isUsed() && i_roomNo == pData->getRoomNo() && pData->getType()) { + if (pData->check(i_pos)) { + return true; + } + } + } + return false; } -#pragma pop /* 800314D4-800315A4 02BE14 00D0+00 0/0 1/1 0/0 .text check__7daSus_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::check(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/com/d_com_static/check__7daSus_cFP10fopAc_ac_c.s" +void daSus_c::check(fopAc_ac_c* i_actor) { + if (fopAcM_GetGroup(i_actor) != 1 && fopAcM_GetGroup(i_actor) != 5) { + daSus_c::data_c* pData = (daSus_c::data_c*)mData; + u8 res = 0; + for (s16 i = 0; i < 0x20; pData++, i++) { + if (!pData->isUsed() && pData->getType() == 0) { + res |= pData->check(i_actor); + } + } + + if ((res & 0x80) != 0) { + if ((res & 3) == 3) { + fopAcM_OnStatus(i_actor, 0x20000000); + } else { + fopAcM_OffStatus(i_actor, 0x20000000); + } + } + } } -#pragma pop /* 800315A4-8003160C 02BEE4 0068+00 0/0 2/2 0/0 .text execute__7daSus_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::execute() { - nofralloc -#include "asm/d/com/d_com_static/execute__7daSus_cFv.s" +void daSus_c::execute() { + daSus_c::data_c* pData = (daSus_c::data_c*)mData; + for (s16 i = 0; i < 0x20; pData++, i++) { + if (!pData->isUsed()) { + pData->execute(); + } + } } -#pragma pop /* 8003160C-80031648 02BF4C 003C+00 0/0 0/0 1/1 .text daNpcMsg_setEvtNum__FUc */ int daNpcMsg_setEvtNum(u8 iEvtNum) { @@ -503,91 +551,80 @@ SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_SPEED = 30.0f; /* 80451D50-80451D54 000350 0004+00 0/0 0/0 1/1 .sdata2 CLOSE_BOUND_RATIO__7daDsh_c */ SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_RATIO = -0.4f; -/* 80451D54-80451D58 000354 0004+00 1/1 0/0 0/0 .sdata2 @4338 */ -SECTION_SDATA2 static u8 lit_4338[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - /* 800318B4-8003194C 02C1F4 0098+00 0/0 1/1 0/0 .text checkArea__13daTagStream_cFPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagStream_c::checkArea(cXyz const* param_0) { - nofralloc -#include "asm/d/com/d_com_static/checkArea__13daTagStream_cFPC4cXyz.s" +int daTagStream_c::checkArea(cXyz const* param_0) { + cXyz relativePos; + fpoAcM_relativePos(this, param_0, &relativePos); + if (relativePos.y >= 0.0f && relativePos.y <= mScale.y && + fabsf(relativePos.x) <= mScale.x && + fabsf(relativePos.z) <= mScale.z) + { + return 1; + } + return 0; } -#pragma pop /* ############################################################################################## */ /* 8042457C-80424588 05129C 000C+00 1/2 0/0 1/1 .bss m_entryModel__10daMirror_c */ -u8 daMirror_c::m_entryModel[12]; +daMirror_c::entryModelFunc daMirror_c::m_entryModel; /* 80450DA4-80450DA8 0002A4 0004+00 0/0 1/1 2/2 .sbss m_top__13daTagStream_c */ -u8 daTagStream_c::m_top[4]; +daTagStream_c* daTagStream_c::m_top; /* 80450DA8-80450DAC 0002A8 0004+00 2/2 0/0 4/4 .sbss m_myObj__10daMirror_c */ -u8 daMirror_c::m_myObj[4]; +daMirror_c* daMirror_c::m_myObj; /* 8003194C-80031990 02C28C 0044+00 0/0 1/1 9/9 .text entry__10daMirror_cFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMirror_c::entry(J3DModel* param_0) { - nofralloc -#include "asm/d/com/d_com_static/entry__10daMirror_cFP8J3DModel.s" +int daMirror_c::entry(J3DModel* param_0) { + if (m_myObj == NULL) { + return 0; + } + return (m_myObj->*(daMirror_c::m_entryModel))(param_0); } -#pragma pop /* 80031990-800319C8 02C2D0 0038+00 0/0 0/0 2/2 .text remove__10daMirror_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMirror_c::remove() { - nofralloc -#include "asm/d/com/d_com_static/remove__10daMirror_cFv.s" +int daMirror_c::remove() { + if (m_myObj == NULL) { + return 0; + } + + fopAcM_delete(m_myObj); + return 1; } -#pragma pop /* ############################################################################################## */ /* 80424588-80424594 0512A8 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__15dGrass_packet_c */ -u8 dGrass_packet_c::m_deleteRoom[12]; +dGrass_packet_c::DeleteRoomFunc dGrass_packet_c::m_deleteRoom; /* 80450DAC-80450DB0 0002AC 0004+00 0/0 0/0 2/2 .sbss m_myObj__9daGrass_c */ u8 daGrass_c::m_myObj[4]; /* 80450DB0-80450DB4 0002B0 0004+00 1/1 0/0 11/11 .sbss m_grass__9daGrass_c */ -u8 daGrass_c::m_grass[4]; +dGrass_packet_c* daGrass_c::m_grass; /* 800319C8-80031A20 02C308 0058+00 0/0 0/0 1/1 .text deleteRoomGrass__9daGrass_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daGrass_c::deleteRoomGrass(int param_0) { - nofralloc -#include "asm/d/com/d_com_static/deleteRoomGrass__9daGrass_cFi.s" +void daGrass_c::deleteRoomGrass(int param_0) { + if (m_grass) { + dGrass_packet_c::DeleteRoomFunc func = dGrass_packet_c::m_deleteRoom; + (m_grass->*(func))(param_0); + } } -#pragma pop /* ############################################################################################## */ /* 80424594-804245A0 0512B4 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__16dFlower_packet_c */ -u8 dFlower_packet_c::m_deleteRoom[12]; +dFlower_packet_c::DeleteRoomFunc dFlower_packet_c::m_deleteRoom; /* 80450DB4-80450DB8 0002B4 0004+00 1/1 0/0 9/9 .sbss m_flower__9daGrass_c */ -u8 daGrass_c::m_flower[4]; +dFlower_packet_c* daGrass_c::m_flower; /* 80031A20-80031A78 02C360 0058+00 0/0 0/0 1/1 .text deleteRoomFlower__9daGrass_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daGrass_c::deleteRoomFlower(int param_0) { - nofralloc -#include "asm/d/com/d_com_static/deleteRoomFlower__9daGrass_cFi.s" +void daGrass_c::deleteRoomFlower(int param_0) { + if (m_flower) { + dFlower_packet_c::DeleteRoomFunc func = dFlower_packet_c::m_deleteRoom; + (m_flower->*(func))(param_0); + } } -#pragma pop /* ############################################################################################## */ /* 80450DB8-80450DBC 0002B8 0004+00 4/4 0/0 2/2 .sbss m_myObj__6daMP_c */ @@ -702,27 +739,19 @@ static u8 lit_4480[12]; #pragma pop /* 804245AC-804245E8 0512CC 003C+00 3/4 0/0 0/0 .bss mPos__12daObjCarry_c */ -u8 daObjCarry_c::mPos[60]; +Vec daObjCarry_c::mPos[5]; /* 80031D24-80031D38 02C664 0014+00 0/0 0/0 1/1 .text getPos__12daObjCarry_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCarry_c::getPos(int param_0) { - nofralloc -#include "asm/d/com/d_com_static/getPos__12daObjCarry_cFi.s" +const cXyz& daObjCarry_c::getPos(int param_0) { + return *(cXyz*)&mPos[param_0]; } -#pragma pop /* 80031D38-80031D64 02C678 002C+00 0/0 0/0 2/2 .text savePos__12daObjCarry_cFi4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCarry_c::savePos(int param_0, cXyz param_1) { - nofralloc -#include "asm/d/com/d_com_static/savePos__12daObjCarry_cFi4cXyz.s" +void daObjCarry_c::savePos(int param_0, cXyz param_1) { + mPos[param_0].x = param_1.x; + mPos[param_0].y = param_1.y; + mPos[param_0].z = param_1.z; } -#pragma pop /* ############################################################################################## */ /* 80450DC4-80450DCC 0002C4 0005+03 3/3 0/0 0/0 .sbss mSttsFlag__12daObjCarry_c */