From 166d6fc0e59b85fe0ab7136cb55c795891788bf6 Mon Sep 17 00:00:00 2001 From: Trueffeloot Date: Sat, 5 Aug 2023 22:58:21 +0200 Subject: [PATCH] work on d_a_spinner --- Progress.md | 8 +- ...kLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s | 36 - .../clearSpreadEffect__11daSpinner_cFv.s | 33 - .../daSpinner_Create__FP10fopAc_ac_c.s | 9 - .../daSpinner_Delete__FP11daSpinner_c.s | 11 - .../daSpinner_Draw__FP11daSpinner_c.s | 9 - .../daSpinner_Execute__FP11daSpinner_c.s | 9 - .../daSpinner_createHeap__FP10fopAc_ac_c.s | 9 - .../getPathNextPos__11daSpinner_cFv.s | 27 - .../d_a_spinner/setMatrix__11daSpinner_cFv.s | 43 -- .../setNextPathNum__11daSpinner_cFv.s | 35 - .../setReflectAngle__11daSpinner_cFv.s | 62 -- .../setRoomInfo__11daSpinner_cFv.s | 41 -- include/SSystem/SComponent/c_cc_d.h | 3 +- include/rel/d/a/d_a_spinner/d_a_spinner.h | 30 +- rel/d/a/d_a_spinner/d_a_spinner.cpp | 628 ++++++------------ src/d/a/d_a_alink.cpp | 2 +- 17 files changed, 209 insertions(+), 786 deletions(-) delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s delete mode 100644 asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s diff --git a/Progress.md b/Progress.md index e7f0a4cf24a..4954c2c5bb7 100644 --- a/Progress.md +++ b/Progress.md @@ -21,8 +21,8 @@ Total | 37.746227% | 1517652 | 4020672 Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- main.dol | 37.746227% | 1517652 | 4020672 -RELs | 34.092883% | 3920792 | 11500324 -Total | 35.039272% | 5438444 | 15520996 +RELs | 34.103178% | 3921976 | 11500324 +Total | 35.046900% | 5439628 | 15520996 ## RELs @@ -694,7 +694,7 @@ d_a_scene_exit2 | 99.075297% | 3000 | 3028 d_a_set_bgobj | 100.000000% | 1108 | 1108 d_a_shop_item | 43.088737% | 2020 | 4688 d_a_skip_2D | 100.000000% | 1332 | 1332 -d_a_spinner | 27.874187% | 5140 | 18440 +d_a_spinner | 34.295011% | 6324 | 18440 d_a_sq | 35.488722% | 3776 | 10640 d_a_startAndGoal | 41.918528% | 1276 | 3044 d_a_suspend | 100.000000% | 896 | 896 @@ -785,4 +785,4 @@ d_a_vrbox2 | 34.977578% | 2184 | 6244 d_a_warp_bug | 100.000000% | 2024 | 2024 d_a_ykgr | 44.400631% | 2252 | 5072 f_pc_profile_lst | 100.000000% | 28156 | 28156 -Total | 34.092883% | 3920792 | 11500324 +Total | 34.103178% | 3921976 | 11500324 diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s deleted file mode 100644 index 545c5bae0fe..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_804D36F4: -/* 804D36F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D36F8 7C 08 02 A6 */ mflr r0 -/* 804D36FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D3700 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D3704 7C 7F 1B 78 */ mr r31, r3 -/* 804D3708 38 7F 08 24 */ addi r3, r31, 0x824 -/* 804D370C 7F E6 FB 78 */ mr r6, r31 -/* 804D3710 4B BA 46 55 */ bl Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c -/* 804D3714 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D3718 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D371C 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 804D3720 38 9F 08 24 */ addi r4, r31, 0x824 -/* 804D3724 4B BA 0C 91 */ bl LineCross__4cBgSFP11cBgS_LinChk -/* 804D3728 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 804D372C 41 82 00 30 */ beq lbl_804D375C -/* 804D3730 38 7F 08 38 */ addi r3, r31, 0x838 -/* 804D3734 4B BA 25 D9 */ bl dBgS_CheckBWallPoly__FRC13cBgS_PolyInfo -/* 804D3738 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 804D373C 40 82 00 18 */ bne lbl_804D3754 -/* 804D3740 3C 60 80 4D */ lis r3, d_a_spinner__stringBase0@ha /* 0x804D4EA0@ha */ -/* 804D3744 38 63 4E A0 */ addi r3, r3, d_a_spinner__stringBase0@l /* 0x804D4EA0@l */ -/* 804D3748 4B BC A3 19 */ bl checkStageName__9daAlink_cFPCc -/* 804D374C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 804D3750 41 82 00 0C */ beq lbl_804D375C -lbl_804D3754: -/* 804D3754 38 60 00 01 */ li r3, 1 -/* 804D3758 48 00 00 08 */ b lbl_804D3760 -lbl_804D375C: -/* 804D375C 38 60 00 00 */ li r3, 0 -lbl_804D3760: -/* 804D3760 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D3764 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D3768 7C 08 03 A6 */ mtlr r0 -/* 804D376C 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D3770 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s deleted file mode 100644 index 7b2eaee751e..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_804D3F14: -/* 804D3F14 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 804D3F18 7C 08 02 A6 */ mflr r0 -/* 804D3F1C 90 01 00 24 */ stw r0, 0x24(r1) -/* 804D3F20 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D3F24 4B E8 E2 B5 */ bl _savegpr_28 -/* 804D3F28 7C 7C 1B 78 */ mr r28, r3 -/* 804D3F2C 3B A0 00 00 */ li r29, 0 -/* 804D3F30 3B E0 00 00 */ li r31, 0 -/* 804D3F34 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D3F38 3B C3 61 C0 */ addi r30, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -lbl_804D3F3C: -/* 804D3F3C 80 7E 5D 3C */ lwz r3, 0x5d3c(r30) -/* 804D3F40 38 63 02 10 */ addi r3, r3, 0x210 -/* 804D3F44 38 1F 0A 8C */ addi r0, r31, 0xa8c -/* 804D3F48 7C 9C 00 2E */ lwzx r4, r28, r0 -/* 804D3F4C 4B B7 79 CD */ bl getEmitter__Q213dPa_control_c7level_cFUl -/* 804D3F50 28 03 00 00 */ cmplwi r3, 0 -/* 804D3F54 41 82 00 10 */ beq lbl_804D3F64 -/* 804D3F58 80 03 00 F4 */ lwz r0, 0xf4(r3) -/* 804D3F5C 60 00 00 04 */ ori r0, r0, 4 -/* 804D3F60 90 03 00 F4 */ stw r0, 0xf4(r3) -lbl_804D3F64: -/* 804D3F64 3B BD 00 01 */ addi r29, r29, 1 -/* 804D3F68 2C 1D 00 02 */ cmpwi r29, 2 -/* 804D3F6C 3B FF 00 04 */ addi r31, r31, 4 -/* 804D3F70 41 80 FF CC */ blt lbl_804D3F3C -/* 804D3F74 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D3F78 4B E8 E2 AD */ bl _restgpr_28 -/* 804D3F7C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 804D3F80 7C 08 03 A6 */ mtlr r0 -/* 804D3F84 38 21 00 20 */ addi r1, r1, 0x20 -/* 804D3F88 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 3eb43f221f1..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_804D1FB0: -/* 804D1FB0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D1FB4 7C 08 02 A6 */ mflr r0 -/* 804D1FB8 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D1FBC 4B FF FA B5 */ bl create__11daSpinner_cFv -/* 804D1FC0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D1FC4 7C 08 03 A6 */ mtlr r0 -/* 804D1FC8 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D1FCC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s deleted file mode 100644 index 8257024d6f7..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_804D21B8: -/* 804D21B8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D21BC 7C 08 02 A6 */ mflr r0 -/* 804D21C0 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D21C4 38 80 FF FF */ li r4, -1 -/* 804D21C8 4B FF FE 09 */ bl __dt__11daSpinner_cFv -/* 804D21CC 38 60 00 01 */ li r3, 1 -/* 804D21D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D21D4 7C 08 03 A6 */ mtlr r0 -/* 804D21D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D21DC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s deleted file mode 100644 index 3a28223e541..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_804D4D08: -/* 804D4D08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D4D0C 7C 08 02 A6 */ mflr r0 -/* 804D4D10 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D4D14 4B FF FE A1 */ bl draw__11daSpinner_cFv -/* 804D4D18 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D4D1C 7C 08 03 A6 */ mtlr r0 -/* 804D4D20 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D4D24 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s deleted file mode 100644 index 38ff9ed5ce5..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_804D4B94: -/* 804D4B94 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D4B98 7C 08 02 A6 */ mflr r0 -/* 804D4B9C 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D4BA0 4B FF F3 ED */ bl execute__11daSpinner_cFv -/* 804D4BA4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D4BA8 7C 08 03 A6 */ mtlr r0 -/* 804D4BAC 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D4BB0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s deleted file mode 100644 index 99535f0bebb..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_804D1A50: -/* 804D1A50 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D1A54 7C 08 02 A6 */ mflr r0 -/* 804D1A58 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D1A5C 4B FF FF 31 */ bl createHeap__11daSpinner_cFv -/* 804D1A60 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D1A64 7C 08 03 A6 */ mtlr r0 -/* 804D1A68 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D1A6C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s deleted file mode 100644 index 9dbfd922b2d..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_804D3694: -/* 804D3694 88 83 0A 72 */ lbz r4, 0xa72(r3) -/* 804D3698 88 03 0A 73 */ lbz r0, 0xa73(r3) -/* 804D369C 7C 00 07 74 */ extsb r0, r0 -/* 804D36A0 7C 84 02 15 */ add. r4, r4, r0 -/* 804D36A4 40 80 00 20 */ bge lbl_804D36C4 -/* 804D36A8 80 63 0A 64 */ lwz r3, 0xa64(r3) -/* 804D36AC 80 83 00 08 */ lwz r4, 8(r3) -/* 804D36B0 A0 03 00 00 */ lhz r0, 0(r3) -/* 804D36B4 54 03 20 36 */ slwi r3, r0, 4 -/* 804D36B8 38 63 FF F4 */ addi r3, r3, -12 -/* 804D36BC 7C 64 1A 14 */ add r3, r4, r3 -/* 804D36C0 4E 80 00 20 */ blr -lbl_804D36C4: -/* 804D36C4 80 63 0A 64 */ lwz r3, 0xa64(r3) -/* 804D36C8 A0 03 00 00 */ lhz r0, 0(r3) -/* 804D36CC 7C 04 00 00 */ cmpw r4, r0 -/* 804D36D0 41 80 00 10 */ blt lbl_804D36E0 -/* 804D36D4 80 63 00 08 */ lwz r3, 8(r3) -/* 804D36D8 38 63 00 04 */ addi r3, r3, 4 -/* 804D36DC 4E 80 00 20 */ blr -lbl_804D36E0: -/* 804D36E0 80 03 00 08 */ lwz r0, 8(r3) -/* 804D36E4 54 83 20 36 */ slwi r3, r4, 4 -/* 804D36E8 38 63 00 04 */ addi r3, r3, 4 -/* 804D36EC 7C 60 1A 14 */ add r3, r0, r3 -/* 804D36F0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s deleted file mode 100644 index 6012c0f9ad6..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_804D2278: -/* 804D2278 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D227C 7C 08 02 A6 */ mflr r0 -/* 804D2280 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D2284 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D2288 7C 7F 1B 78 */ mr r31, r3 -/* 804D228C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 804D2290 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 804D2294 C0 3F 04 D0 */ lfs f1, 0x4d0(r31) -/* 804D2298 3C 80 80 4D */ lis r4, lit_4429@ha /* 0x804D4DCC@ha */ -/* 804D229C C0 64 4D CC */ lfs f3, lit_4429@l(r4) /* 0x804D4DCC@l */ -/* 804D22A0 C0 5F 04 D4 */ lfs f2, 0x4d4(r31) -/* 804D22A4 C0 1F 0A 84 */ lfs f0, 0xa84(r31) -/* 804D22A8 EC 02 00 2A */ fadds f0, f2, f0 -/* 804D22AC EC 43 00 2A */ fadds f2, f3, f0 -/* 804D22B0 C0 7F 04 D8 */ lfs f3, 0x4d8(r31) -/* 804D22B4 4B E7 46 35 */ bl PSMTXTrans -/* 804D22B8 38 7F 04 E4 */ addi r3, r31, 0x4e4 -/* 804D22BC 4B B3 AC 89 */ bl ZXYrotM__14mDoMtx_stack_cFRC5csXyz -/* 804D22C0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 804D22C4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 804D22C8 A8 9F 0A 7E */ lha r4, 0xa7e(r31) -/* 804D22CC 4B B3 A1 69 */ bl mDoMtx_YrotM__FPA4_fs -/* 804D22D0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 804D22D4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 804D22D8 80 9F 05 68 */ lwz r4, 0x568(r31) -/* 804D22DC 38 84 00 24 */ addi r4, r4, 0x24 -/* 804D22E0 4B E7 41 D1 */ bl PSMTXCopy -/* 804D22E4 80 7F 05 68 */ lwz r3, 0x568(r31) -/* 804D22E8 80 83 00 04 */ lwz r4, 4(r3) -/* 804D22EC 38 7F 05 6C */ addi r3, r31, 0x56c -/* 804D22F0 C0 3F 05 7C */ lfs f1, 0x57c(r31) -/* 804D22F4 4B B3 B6 D9 */ bl entry__13mDoExt_bckAnmFP12J3DModelDataf -/* 804D22F8 80 7F 05 68 */ lwz r3, 0x568(r31) -/* 804D22FC 81 83 00 00 */ lwz r12, 0(r3) -/* 804D2300 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 804D2304 7D 89 03 A6 */ mtctr r12 -/* 804D2308 4E 80 04 21 */ bctrl -/* 804D230C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D2310 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D2314 7C 08 03 A6 */ mtlr r0 -/* 804D2318 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D231C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s deleted file mode 100644 index 49290bc473a..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_804D3618: -/* 804D3618 88 A3 0A 72 */ lbz r5, 0xa72(r3) -/* 804D361C 28 05 00 00 */ cmplwi r5, 0 -/* 804D3620 40 82 00 28 */ bne lbl_804D3648 -/* 804D3624 88 03 0A 73 */ lbz r0, 0xa73(r3) -/* 804D3628 7C 00 07 74 */ extsb r0, r0 -/* 804D362C 2C 00 FF FF */ cmpwi r0, -1 -/* 804D3630 40 82 00 18 */ bne lbl_804D3648 -/* 804D3634 80 83 0A 64 */ lwz r4, 0xa64(r3) -/* 804D3638 A0 84 00 00 */ lhz r4, 0(r4) -/* 804D363C 38 04 FF FF */ addi r0, r4, -1 -/* 804D3640 98 03 0A 72 */ stb r0, 0xa72(r3) -/* 804D3644 48 00 00 48 */ b lbl_804D368C -lbl_804D3648: -/* 804D3648 80 83 0A 64 */ lwz r4, 0xa64(r3) -/* 804D364C A0 84 00 00 */ lhz r4, 0(r4) -/* 804D3650 38 04 FF FF */ addi r0, r4, -1 -/* 804D3654 7C 05 00 00 */ cmpw r5, r0 -/* 804D3658 40 82 00 1C */ bne lbl_804D3674 -/* 804D365C 88 03 0A 73 */ lbz r0, 0xa73(r3) -/* 804D3660 2C 00 00 01 */ cmpwi r0, 1 -/* 804D3664 40 82 00 10 */ bne lbl_804D3674 -/* 804D3668 38 00 00 00 */ li r0, 0 -/* 804D366C 98 03 0A 72 */ stb r0, 0xa72(r3) -/* 804D3670 48 00 00 1C */ b lbl_804D368C -lbl_804D3674: -/* 804D3674 88 83 0A 72 */ lbz r4, 0xa72(r3) -/* 804D3678 88 03 0A 73 */ lbz r0, 0xa73(r3) -/* 804D367C 7C 04 02 14 */ add r0, r4, r0 -/* 804D3680 98 03 0A 72 */ stb r0, 0xa72(r3) -/* 804D3684 38 60 00 01 */ li r3, 1 -/* 804D3688 4E 80 00 20 */ blr -lbl_804D368C: -/* 804D368C 38 60 00 00 */ li r3, 0 -/* 804D3690 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s deleted file mode 100644 index 8f073b2ea56..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s +++ /dev/null @@ -1,62 +0,0 @@ -lbl_804D3090: -/* 804D3090 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D3094 7C 08 02 A6 */ mflr r0 -/* 804D3098 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D309C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D30A0 93 C1 00 08 */ stw r30, 8(r1) -/* 804D30A4 7C 7F 1B 78 */ mr r31, r3 -/* 804D30A8 80 03 0A 64 */ lwz r0, 0xa64(r3) -/* 804D30AC 28 00 00 00 */ cmplwi r0, 0 -/* 804D30B0 41 82 00 40 */ beq lbl_804D30F0 -/* 804D30B4 A8 9F 04 DE */ lha r4, 0x4de(r31) -/* 804D30B8 3C 84 00 01 */ addis r4, r4, 1 -/* 804D30BC 38 04 80 00 */ addi r0, r4, -32768 -/* 804D30C0 B0 1F 04 DE */ sth r0, 0x4de(r31) -/* 804D30C4 A8 1F 04 DC */ lha r0, 0x4dc(r31) -/* 804D30C8 1C 00 FF FF */ mulli r0, r0, -1 -/* 804D30CC B0 1F 04 DC */ sth r0, 0x4dc(r31) -/* 804D30D0 48 00 05 49 */ bl setNextPathNum__11daSpinner_cFv -/* 804D30D4 88 1F 0A 73 */ lbz r0, 0xa73(r31) -/* 804D30D8 1C 00 FF FF */ mulli r0, r0, -1 -/* 804D30DC 98 1F 0A 73 */ stb r0, 0xa73(r31) -/* 804D30E0 88 1F 0A 76 */ lbz r0, 0xa76(r31) -/* 804D30E4 1C 00 FF FF */ mulli r0, r0, -1 -/* 804D30E8 98 1F 0A 76 */ stb r0, 0xa76(r31) -/* 804D30EC 48 00 00 70 */ b lbl_804D315C -lbl_804D30F0: -/* 804D30F0 A8 7F 0A 80 */ lha r3, 0xa80(r31) -/* 804D30F4 A8 1F 04 DE */ lha r0, 0x4de(r31) -/* 804D30F8 7C 03 00 50 */ subf r0, r3, r0 -/* 804D30FC 7C 1E 07 34 */ extsh r30, r0 -/* 804D3100 7F C3 F3 78 */ mr r3, r30 -/* 804D3104 4B E9 1F CD */ bl abs -/* 804D3108 2C 03 48 00 */ cmpwi r3, 0x4800 -/* 804D310C 40 81 00 24 */ ble lbl_804D3130 -/* 804D3110 A8 7F 04 DE */ lha r3, 0x4de(r31) -/* 804D3114 3C 63 00 01 */ addis r3, r3, 1 -/* 804D3118 38 63 80 00 */ addi r3, r3, -32768 -/* 804D311C A8 1F 0A 80 */ lha r0, 0xa80(r31) -/* 804D3120 54 00 08 3C */ slwi r0, r0, 1 -/* 804D3124 7C 03 00 50 */ subf r0, r3, r0 -/* 804D3128 B0 1F 04 DE */ sth r0, 0x4de(r31) -/* 804D312C 48 00 00 30 */ b lbl_804D315C -lbl_804D3130: -/* 804D3130 2C 1E 38 00 */ cmpwi r30, 0x3800 -/* 804D3134 40 81 00 14 */ ble lbl_804D3148 -/* 804D3138 A8 7F 0A 80 */ lha r3, 0xa80(r31) -/* 804D313C 38 03 38 00 */ addi r0, r3, 0x3800 -/* 804D3140 B0 1F 04 DE */ sth r0, 0x4de(r31) -/* 804D3144 48 00 00 18 */ b lbl_804D315C -lbl_804D3148: -/* 804D3148 2C 1E C8 00 */ cmpwi r30, -14336 -/* 804D314C 40 80 00 10 */ bge lbl_804D315C -/* 804D3150 A8 7F 0A 80 */ lha r3, 0xa80(r31) -/* 804D3154 38 03 C8 00 */ addi r0, r3, -14336 -/* 804D3158 B0 1F 04 DE */ sth r0, 0x4de(r31) -lbl_804D315C: -/* 804D315C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D3160 83 C1 00 08 */ lwz r30, 8(r1) -/* 804D3164 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D3168 7C 08 03 A6 */ mtlr r0 -/* 804D316C 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D3170 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s b/asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s deleted file mode 100644 index c9e1f687a37..00000000000 --- a/asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_804D21E0: -/* 804D21E0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 804D21E4 7C 08 02 A6 */ mflr r0 -/* 804D21E8 90 01 00 24 */ stw r0, 0x24(r1) -/* 804D21EC 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D21F0 4B E8 FF ED */ bl _savegpr_29 -/* 804D21F4 7C 7D 1B 78 */ mr r29, r3 -/* 804D21F8 3C 60 80 4D */ lis r3, lit_4409@ha /* 0x804D4DC8@ha */ -/* 804D21FC C0 23 4D C8 */ lfs f1, lit_4409@l(r3) /* 0x804D4DC8@l */ -/* 804D2200 C0 1D 06 E4 */ lfs f0, 0x6e4(r29) -/* 804D2204 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 804D2208 41 82 00 34 */ beq lbl_804D223C -/* 804D220C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D2210 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D2214 3B E3 0F 38 */ addi r31, r3, 0xf38 -/* 804D2218 7F E3 FB 78 */ mr r3, r31 -/* 804D221C 38 9D 07 3C */ addi r4, r29, 0x73c -/* 804D2220 4B BA 2E E1 */ bl GetRoomId__4dBgSFRC13cBgS_PolyInfo -/* 804D2224 7C 7E 1B 78 */ mr r30, r3 -/* 804D2228 7F E3 FB 78 */ mr r3, r31 -/* 804D222C 38 9D 07 3C */ addi r4, r29, 0x73c -/* 804D2230 4B BA 29 B9 */ bl GetPolyColor__4dBgSFRC13cBgS_PolyInfo -/* 804D2234 98 7D 04 8D */ stb r3, 0x48d(r29) -/* 804D2238 48 00 00 10 */ b lbl_804D2248 -lbl_804D223C: -/* 804D223C 3C 60 80 45 */ lis r3, mStayNo__20dStage_roomControl_c+0x0@ha /* 0x80450D64@ha */ -/* 804D2240 8B C3 0D 64 */ lbz r30, mStayNo__20dStage_roomControl_c+0x0@l(r3) /* 0x80450D64@l */ -/* 804D2244 7F DE 07 74 */ extsb r30, r30 -lbl_804D2248: -/* 804D2248 9B DD 04 8C */ stb r30, 0x48c(r29) -/* 804D224C 7F C3 F3 78 */ mr r3, r30 -/* 804D2250 4B B5 AE 1D */ bl dComIfGp_getReverb__Fi -/* 804D2254 98 7D 0A 6E */ stb r3, 0xa6e(r29) -/* 804D2258 9B DD 09 0E */ stb r30, 0x90e(r29) -/* 804D225C 9B DD 04 E2 */ stb r30, 0x4e2(r29) -/* 804D2260 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D2264 4B E8 FF C5 */ bl _restgpr_29 -/* 804D2268 80 01 00 24 */ lwz r0, 0x24(r1) -/* 804D226C 7C 08 03 A6 */ mtlr r0 -/* 804D2270 38 21 00 20 */ addi r1, r1, 0x20 -/* 804D2274 4E 80 00 20 */ blr diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index baaa513365d..f123a414f8f 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -38,7 +38,8 @@ enum cCcD_ObjAtType { /* 0x00002000 */ AT_TYPE_ARROW = (1 << 13), /* 0x00004000 */ AT_TYPE_HOOKSHOT = (1 << 14), /* 0x00010000 */ AT_TYPE_BOOMERANG = (1 << 16), - /* 0x00040000 */ AT_TYPE_SPINNER = (1 << 18), + /* 0x00040000 */ AT_TYPE_40000 = (1 << 18), + /* 0x00080000 */ AT_TYPE_SPINNER = (1 << 19), /* 0x00100000 */ AT_TYPE_CSTATUE_BOSS_SWING = (1 << 20), /* 0x00200000 */ AT_TYPE_HEAVY_BOOTS = (1 << 21), /* 0x00400000 */ AT_TYPE_IRON_BALL = (1 << 22), diff --git a/include/rel/d/a/d_a_spinner/d_a_spinner.h b/include/rel/d/a/d_a_spinner/d_a_spinner.h index 31f85cc4041..21b0f15b25d 100644 --- a/include/rel/d/a/d_a_spinner/d_a_spinner.h +++ b/include/rel/d/a/d_a_spinner/d_a_spinner.h @@ -4,31 +4,33 @@ #include "d/com/d_com_inf_game.h" #include "d/particle/d_particle_copoly.h" #include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" +#include "d/d_path.h" class daSpinner_c : public fopAc_ac_c { public: - /* 804D198C */ void createHeap(); - /* 804D1A70 */ void create(); + /* 804D198C */ int createHeap(); + /* 804D1A70 */ int create(); /* 804D1FD0 */ ~daSpinner_c(); /* 804D21E0 */ void setRoomInfo(); /* 804D2278 */ void setMatrix(); /* 804D2320 */ void setEffect(); - /* 804D25F4 */ void posMove(); + /* 804D25F4 */ int posMove(); /* 804D3090 */ void setReflectAngle(); /* 804D3174 */ void setWallHit(s16, u32); /* 804D34B0 */ void setAnm(); - /* 804D3618 */ void setNextPathNum(); - /* 804D3694 */ void getPathNextPos(); - /* 804D36F4 */ void checkLineWallHit(cXyz*, cXyz*); - /* 804D3774 */ void checkPathMove(); + /* 804D3618 */ int setNextPathNum(); + /* 804D3694 */ cXyz* getPathNextPos(); + /* 804D36F4 */ int checkLineWallHit(cXyz*, cXyz*); + /* 804D3774 */ int checkPathMove(); /* 804D3D60 */ void setSpreadEffect(); /* 804D3F14 */ void clearSpreadEffect(); - /* 804D3F8C */ void execute(); - /* 804D4BB4 */ void draw(); + /* 804D3F8C */ int execute(); + /* 804D4BB4 */ int draw(); void onPathForceRemove() { mPathForceRemove = true; } - void* checkPathMoveNow() { return mpPathMove; } + dPath* checkPathMoveNow() { return mpPathMove; } static u32 getWaitArg() { return 0; } @@ -82,16 +84,16 @@ private: /* 0x8CC */ Z2SoundObjSimple field_0x8cc; /* 0x8EC */ dCcD_Stts mStts; /* 0x928 */ dCcD_Cyl mCyl; - /* 0xA64 */ void* mpPathMove; - /* 0xA68 */ void* field_0xa68; + /* 0xA64 */ dPath* mpPathMove; + /* 0xA68 */ dPath* field_0xa68; /* 0xA6C */ u8 field_0xa6c; /* 0xA6D */ u8 mJumpFlg; - /* 0xA6E */ u8 field_0xa6e; + /* 0xA6E */ s8 field_0xa6e; /* 0xA6F */ u8 mSpinnerTag; /* 0xA70 */ u8 mButtonJump; /* 0xA71 */ u8 mDeleteFlg; /* 0xA72 */ u8 field_0xa72; - /* 0xA73 */ u8 field_0xa73; + /* 0xA73 */ s8 field_0xa73; /* 0xA74 */ u8 field_0xa74; /* 0xA75 */ u8 field_0xa75; /* 0xA76 */ u8 field_0xa76; diff --git a/rel/d/a/d_a_spinner/d_a_spinner.cpp b/rel/d/a/d_a_spinner/d_a_spinner.cpp index 43e4f2f187c..abf7a6f4c48 100644 --- a/rel/d/a/d_a_spinner/d_a_spinner.cpp +++ b/rel/d/a/d_a_spinner/d_a_spinner.cpp @@ -3,287 +3,15 @@ // Translation Unit: d_a_spinner // -// #include "rel/d/a/d_a_spinner/d_a_spinner.h" +#include "rel/d/a/d_a_spinner/d_a_spinner.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct csXyz {}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266F48 */ void normalizeZP(); - /* 80267128 */ void atan2sX_Z() const; - /* 80267150 */ void atan2sY_XZ() const; - /* 804D1E4C */ ~cXyz(); -}; - -struct mDoMtx_stack_c { - /* 8000CD64 */ void transS(cXyz const&); - /* 8000CF44 */ void ZXYrotM(csXyz const&); - - static u8 now[48]; -}; - -struct J3DModelData {}; - -struct J3DAnmTransform {}; - -struct mDoExt_bckAnm { - /* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool); - /* 8000D9CC */ void entry(J3DModelData*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daSpinner_c { - /* 804D198C */ void createHeap(); - /* 804D1A70 */ void create(); - /* 804D1FD0 */ ~daSpinner_c(); - /* 804D21E0 */ void setRoomInfo(); - /* 804D2278 */ void setMatrix(); - /* 804D2320 */ void setEffect(); - /* 804D25F4 */ void posMove(); - /* 804D3090 */ void setReflectAngle(); - /* 804D3174 */ void setWallHit(s16, u32); - /* 804D34B0 */ void setAnm(); - /* 804D3618 */ void setNextPathNum(); - /* 804D3694 */ void getPathNextPos(); - /* 804D36F4 */ void checkLineWallHit(cXyz*, cXyz*); - /* 804D3774 */ void checkPathMove(); - /* 804D3D60 */ void setSpreadEffect(); - /* 804D3F14 */ void clearSpreadEffect(); - /* 804D3F8C */ void execute(); - /* 804D4BB4 */ void draw(); -}; - -struct J3DModel {}; - -struct daMirror_c { - /* 8003194C */ void entry(J3DModel*); -}; - -struct daAlink_c { - /* 8009D884 */ void getAlinkArcName(); - /* 8009DA60 */ void checkStageName(char const*); - /* 8010D93C */ void getSpinnerGravity() const; - /* 8010D94C */ void getSpinnerMaxFallSpeed() const; - /* 8010D95C */ void getSpinnerJumpRate() const; - /* 8010D96C */ void getSpinnerRideMoveTime(); - /* 8010D9B0 */ void getSpinnerRideSpeedF(); - /* 8010D9F4 */ void getSpinnerRideDecSpeedMax() const; - /* 8010DA04 */ void getSpinnerRideDecSpeedMin() const; - /* 8010DA14 */ void getSpinnerRideDecSpeedRate() const; - /* 8010DA24 */ void getSpinnerRideRotAngleMax() const; - /* 8010DA34 */ void getSpinnerRideRotAngleMin() const; -}; - -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); -}; - -struct dKy_tevstr_c {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dPa_levelEcallBack {}; - -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct _GXColor {}; - -struct dPa_control_c { - struct level_c { - /* 8004B918 */ void getEmitter(u32); - }; - - /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32); - /* 8004D068 */ void setPoly(u16, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, int, dPa_levelEcallBack*, s8, cXyz const*); - /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, - _GXColor const*, cXyz const*, f32); -}; - -struct dBgS { - /* 80074BE8 */ void GetPolyColor(cBgS_PolyInfo const&); - /* 80074CBC */ void GetSpecialCode(cBgS_PolyInfo const&); - /* 80074E50 */ void GetPolyAtt0(cBgS_PolyInfo const&); - /* 80074EF0 */ void GetGroundCode(cBgS_PolyInfo const&); - /* 80075100 */ void GetRoomId(cBgS_PolyInfo const&); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F40 */ void SetWallR(f32); - /* 80075F58 */ void SetWall(f32, f32); - /* 804D1EF8 */ ~dBgS_AcchCir(); -}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct dPaPo_c { - /* 80050C9C */ void init(dBgS_Acch*, f32, f32); - /* 80051008 */ void setEffectCenter(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*, - csXyz const*, cXyz const*, s8, f32, f32); -}; - -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - -struct cCcD_Obj {}; - -struct dCcMassS_Mng { - /* 80085D98 */ void Set(cCcD_Obj*, u8); -}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcCyl {}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 804D1DF0 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); - /* 800842C0 */ void ChkAtHit(); - /* 800843A8 */ void GetAtHitGObj(); -}; - -struct dCcD_GAtTgCoCommonBase { - /* 80083688 */ void GetAc(); -}; - -struct dCcD_Cyl { - /* 800848B4 */ void Set(dCcD_SrcCyl const&); - /* 80084908 */ void StartCAt(cXyz&); - /* 80084954 */ void MoveCAt(cXyz&); -}; - -struct dBgS_PolyPassChk { - /* 80078E98 */ void SetLink(); -}; - -struct dBgS_LinkLinChk { - /* 80078030 */ dBgS_LinkLinChk(); - /* 8007808C */ ~dBgS_LinkLinChk(); -}; - -struct dBgS_LinkAcch { - /* 804D1E88 */ ~dBgS_LinkAcch(); -}; - -struct dBgS_LinChk { - /* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*); -}; - -struct camera_class {}; - -struct cM3dGPla { - /* 804D3468 */ ~cM3dGPla(); -}; - -struct cM3dGLin { - /* 8026F31C */ void SetStartEnd(Vec const&, Vec const&); - /* 804D3048 */ ~cM3dGLin(); -}; - -struct cM3dGCyl { - /* 8026F200 */ void SetR(f32); - /* 804D1D60 */ ~cM3dGCyl(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 804D1DA8 */ ~cM3dGAab(); -}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cCcD_GStts { - /* 804D4D28 */ ~cCcD_GStts(); -}; - -struct cBgS_LinChk {}; - -struct cBgS { - /* 800743B4 */ void LineCross(cBgS_LinChk*); - /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; -}; - -struct _GXTexObj {}; - -struct Z2SoundObjSimple { - /* 802BE844 */ Z2SoundObjSimple(); -}; - -struct Z2SoundObjBase { - /* 802BDF48 */ ~Z2SoundObjBase(); - /* 802BDFF8 */ void deleteObject(); -}; - -struct Z2CreatureLink { - /* 802C4814 */ void startHitItemSE(u32, u32, Z2SoundObjBase*, f32); -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 804D1F68 */ ~J3DFrameCtrl(); -}; +#include "d/bg/d_bg_w.h" +#include "d/cc/d_cc_d.h" +#include "d/a/d_a_alink.h" +#include "m_Do/m_Do_controller_pad.h" +#include "rel/d/a/d_a_mirror/d_a_mirror.h" +#include "SSystem/SComponent/c_math.h" // // Forward References: @@ -432,13 +160,6 @@ extern "C" void __ct__16Z2SoundObjSimpleFv(); extern "C" void startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef(); extern "C" void __dl__FPv(); extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECScale(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECSquareDistance(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void _savegpr_21(); @@ -452,10 +173,7 @@ extern "C" void _restgpr_24(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" void abs(); -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; +extern "C" void _restgpr_29();; extern "C" extern void* __vt__8dCcD_Cyl[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; extern "C" extern void* __vt__12cCcD_CylAttr[25]; @@ -464,12 +182,8 @@ extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" extern void* __vt__16Z2SoundObjSimple[8]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; -extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; extern "C" void __register_global_object(); // @@ -488,24 +202,32 @@ SECTION_RODATA static f32 const lit_4168 = 1.0f; COMPILER_STRIP_GATE(0x804D4D9C, &lit_4168); /* 804D198C-804D1A50 0000EC 00C4+00 1/1 0/0 0/0 .text createHeap__11daSpinner_cFv */ +#ifdef NONMATCHING +// Matches with literals +int daSpinner_c::createHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x21); + mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mpModel == NULL) { + return 0; + } + field_0x588 = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16); + return mBck.init(field_0x588, 1, 2, 1.0f, 0, -1, false) != 0 ? 1 : 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::createHeap() { +asm int daSpinner_c::createHeap() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/createHeap__11daSpinner_cFv.s" } #pragma pop +#endif /* 804D1A50-804D1A70 0001B0 0020+00 1/1 0/0 0/0 .text daSpinner_createHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSpinner_createHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s" +static int daSpinner_createHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); } -#pragma pop /* ############################################################################################## */ /* 804D4DA0-804D4DA4 000010 0004+00 0/1 0/0 0/0 .rodata @4241 */ @@ -577,12 +299,18 @@ COMPILER_STRIP_GATE(0x804D4DC0, &lit_4249); #pragma pop /* 804D4EA8-804D4EEC 000000 0044+00 1/1 0/0 0/0 .data l_cylSrc */ -SECTION_DATA static u8 l_cylSrc[68] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, - 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xAA, 0x00, 0x00, +static dCcD_SrcCyl l_cylSrc = { + { + {0, {{AT_TYPE_SPINNER, 1, 0x12}, {0, 0}, 0x69}}, + {dCcD_SE_SPINNER, 1, 0, 0, {0}}, + {dCcD_SE_NONE, 0, 0, 0, {0}}, + {0}, + }, + { + {0.0f, 0.0f, 0.0f}, + 40.0f, + 85.0f, + } }; /* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */ @@ -680,7 +408,7 @@ SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::create() { +asm int daSpinner_c::create() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/create__11daSpinner_cFv.s" } @@ -690,7 +418,8 @@ asm void daSpinner_c::create() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +// cM3dGCyl::~cM3dGCyl() +extern "C" asm void __dt__8cM3dGCylFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGCylFv.s" } @@ -700,7 +429,8 @@ asm cM3dGCyl::~cM3dGCyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// cM3dGAab::~cM3dGAab() +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGAabFv.s" } @@ -710,7 +440,8 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// dCcD_GStts::~dCcD_GStts() +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__10dCcD_GSttsFv.s" } @@ -720,7 +451,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// cXyz::~cXyz() +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__4cXyzFv.s" } @@ -730,7 +462,8 @@ asm cXyz::~cXyz() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_LinkAcch::~dBgS_LinkAcch() { +// dBgS_LinkAcch::~dBgS_LinkAcch() +extern "C" asm void __dt__13dBgS_LinkAcchFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__13dBgS_LinkAcchFv.s" } @@ -740,7 +473,8 @@ asm dBgS_LinkAcch::~dBgS_LinkAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// dBgS_AcchCir::~dBgS_AcchCir() +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__12dBgS_AcchCirFv.s" } @@ -750,21 +484,17 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// J3DFrameCtrl::~J3DFrameCtrl() +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__12J3DFrameCtrlFv.s" } #pragma pop /* 804D1FB0-804D1FD0 000710 0020+00 1/0 0/0 0/0 .text daSpinner_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSpinner_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s" +static int daSpinner_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 804D1FD0-804D21B8 000730 01E8+00 1/1 0/0 0/0 .text __dt__11daSpinner_cFv */ #pragma push @@ -778,44 +508,36 @@ asm daSpinner_c::~daSpinner_c() { /* 804D21B8-804D21E0 000918 0028+00 1/0 0/0 0/0 .text daSpinner_Delete__FP11daSpinner_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSpinner_Delete(daSpinner_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s" +static int daSpinner_Delete(daSpinner_c* i_this) { + i_this->~daSpinner_c(); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 804D4DC8-804D4DCC 000038 0004+00 1/1 0/0 0/0 .rodata @4409 */ -SECTION_RODATA static f32 const lit_4409 = -1000000000.0f; -COMPILER_STRIP_GATE(0x804D4DC8, &lit_4409); /* 804D21E0-804D2278 000940 0098+00 2/2 0/0 0/0 .text setRoomInfo__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::setRoomInfo() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s" +void daSpinner_c::setRoomInfo() { + int roomNo; + if (mAcch.GetGroundH() != -1000000000.0f) { + roomNo = dComIfG_Bgsp().GetRoomId(mAcch.m_gnd); + mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mAcch.m_gnd); + } else { + roomNo = dComIfGp_roomControl_getStayNo(); + + } + mTevStr.mRoomNo = roomNo; + field_0xa6e = dComIfGp_getReverb(roomNo); + mStts.SetRoomId(roomNo); + fopAcM_SetRoomNo(this, roomNo); } -#pragma pop - -/* ############################################################################################## */ -/* 804D4DCC-804D4DD0 00003C 0004+00 1/1 0/0 0/0 .rodata @4429 */ -SECTION_RODATA static f32 const lit_4429 = 90.0f; -COMPILER_STRIP_GATE(0x804D4DCC, &lit_4429); /* 804D2278-804D2320 0009D8 00A8+00 2/2 0/0 0/0 .text setMatrix__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::setMatrix() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s" +void daSpinner_c::setMatrix() { + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0xa84 + 90.0f, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::YrotM(field_0xa7e); + PSMTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx); + mBck.entry(mpModel->getModelData()); + mpModel->calc(); } -#pragma pop /* ############################################################################################## */ /* 804D4DD0-804D4DD4 000040 0004+00 0/1 0/0 0/0 .rodata @4591 */ @@ -1038,7 +760,7 @@ COMPILER_STRIP_GATE(0x804D4E0C, &lit_4938); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::posMove() { +asm int daSpinner_c::posMove() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/posMove__11daSpinner_cFv.s" } @@ -1048,21 +770,35 @@ asm void daSpinner_c::posMove() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGLin::~cM3dGLin() { +// cM3dGLin::~cM3dGLin() +extern "C" asm void __dt__8cM3dGLinFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGLinFv.s" } #pragma pop /* 804D3090-804D3174 0017F0 00E4+00 3/3 0/0 0/0 .text setReflectAngle__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::setReflectAngle() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s" +void daSpinner_c::setReflectAngle() { + if (mpPathMove != NULL) { + current.angle.y += 0x8000; + current.angle.x *= -1; + setNextPathNum(); + field_0xa73 *= -1; + field_0xa76 *= -1; + } else { + s16 angle = current.angle.y - field_0xa80; + int l_abs = abs(angle); + if (l_abs > 0x4800) { + current.angle.y = (field_0xa80 << 1) - (current.angle.y + 0x8000); + } + else if (angle > 0x3800) { + current.angle.y = field_0xa80 + 0x3800; + } + else if (angle < -0x3800) { + current.angle.y = field_0xa80 - 0x3800; + } + } } -#pragma pop /* ############################################################################################## */ /* 804D4E10-804D4E14 000080 0004+00 0/1 0/0 0/0 .rodata @5053 */ @@ -1086,7 +822,8 @@ asm void daSpinner_c::setWallHit(s16 param_0, u32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGPla::~cM3dGPla() { +// cM3dGPla::~cM3dGPla() +extern "C" asm void __dt__8cM3dGPlaFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGPlaFv.s" } @@ -1101,6 +838,31 @@ COMPILER_STRIP_GATE(0x804D4E14, &lit_5091); #pragma pop /* 804D34B0-804D3618 001C10 0168+00 1/1 0/0 0/0 .text setAnm__11daSpinner_cFv */ +#ifdef NONMATCHING +// Matches with literals +void daSpinner_c::setAnm() { + if (mBck.isStop() && field_0xa75 != 0) { + mBck.init(field_0x588, 1, -1, 1.0f, 0, -1, true); + daAlink_getAlinkActorClass()->seStartOnlyReverb(Z2SE_AL_SPINNER_EXTEND); + dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f)); + if (mJumpFlg == 0) { + speed.y = 20.0f; + mJumpFlg = 1; + mButtonJump = 1; + } + if (mpPathMove != NULL) { + s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[field_0xa72].m_position, ¤t.pos); + if (s16(targetAngle - current.angle.y) > 0) { + current.angle.y += 0x3000; + } else { + current.angle.y -= 0x3000; + } + clearPathMove(); + mAcch.ClrWallHit(); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1109,98 +871,92 @@ asm void daSpinner_c::setAnm() { #include "asm/rel/d/a/d_a_spinner/d_a_spinner/setAnm__11daSpinner_cFv.s" } #pragma pop +#endif /* 804D3618-804D3694 001D78 007C+00 2/2 0/0 0/0 .text setNextPathNum__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::setNextPathNum() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s" +int daSpinner_c::setNextPathNum() { + if (field_0xa72 == 0 && field_0xa73 == -1) { + field_0xa72 = mpPathMove->m_num - 1; + } else if (field_0xa72 == mpPathMove->m_num - 1 && field_0xa73 == 1) { + field_0xa72 = 0; + } else { + field_0xa72 += field_0xa73; + return 1; + } + return 0; } -#pragma pop /* 804D3694-804D36F4 001DF4 0060+00 1/1 0/0 0/0 .text getPathNextPos__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::getPathNextPos() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s" +cXyz* daSpinner_c::getPathNextPos() { + s32 add = field_0xa72 + field_0xa73; + if (add < 0) { + return &(mpPathMove->m_points + mpPathMove->m_num - 1)->m_position; + } + if (add >= mpPathMove->m_num) { + return &mpPathMove->m_points->m_position; + } + return &mpPathMove->m_points[add].m_position; } -#pragma pop - -/* ############################################################################################## */ -/* 804D4EA0-804D4EA0 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_804D4EA0 = "D_MN10A"; -#pragma pop /* 804D36F4-804D3774 001E54 0080+00 1/1 0/0 0/0 .text checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::checkLineWallHit(cXyz* param_0, cXyz* param_1) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s" +int daSpinner_c::checkLineWallHit(cXyz* i_start, cXyz* i_end) { + mLinChk.Set(i_start, i_end, this); + if (dComIfG_Bgsp().LineCross(&mLinChk) != 0) { + if (dBgS_CheckBWallPoly(mLinChk) != 0 || daAlink_c::checkStageName("D_MN10A") != 0) { + return 1; + } + } + return 0; } -#pragma pop /* ############################################################################################## */ /* 804D4E18-804D4E24 000088 000C+00 0/1 0/0 0/0 .rodata sideCheckVec0$5143 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const sideCheckVec0[12] = { - 0x41, 0xF0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, +static const Vec sideCheckVec0 = { + 30.0f, 10.0f, 5.0f, }; -COMPILER_STRIP_GATE(0x804D4E18, &sideCheckVec0); #pragma pop /* 804D4E24-804D4E30 000094 000C+00 0/1 0/0 0/0 .rodata sideCheckVec1$5144 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const sideCheckVec1[12] = { - 0xC1, 0xF0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, +static const Vec sideCheckVec1 = { + -30.0f, 10.0f, 5.0f, }; -COMPILER_STRIP_GATE(0x804D4E24, &sideCheckVec1); #pragma pop /* 804D4E30-804D4E3C 0000A0 000C+00 0/1 0/0 0/0 .rodata initSide0$5145 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const initSide0[12] = { - 0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static const Vec initSide0 = { + 53.0f, 0.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x804D4E30, &initSide0); #pragma pop /* 804D4E3C-804D4E48 0000AC 000C+00 0/1 0/0 0/0 .rodata initSide1$5146 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const initSide1[12] = { - 0xC2, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static const Vec initSide1 = { + -53.0f, 0.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x804D4E3C, &initSide1); #pragma pop /* 804D4E48-804D4E54 0000B8 000C+00 0/1 0/0 0/0 .rodata initSideOld0$5147 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const initSideOld0[12] = { - 0x42, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static const Vec initSideOld0 = { + 78.0f, 0.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x804D4E48, &initSideOld0); #pragma pop /* 804D4E54-804D4E60 0000C4 000C+00 0/1 0/0 0/0 .rodata initSideOld1$5148 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const initSideOld1[12] = { - 0xC2, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static const Vec initSideOld1 = { + -78.0f, 0.0f, 0.0f, }; -COMPILER_STRIP_GATE(0x804D4E54, &initSideOld1); #pragma pop /* 804D4E60-804D4E68 0000D0 0008+00 0/1 0/0 0/0 .rodata @5295 */ @@ -1216,23 +972,20 @@ COMPILER_STRIP_GATE(0x804D4E60, &lit_5295); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::checkPathMove() { +asm int daSpinner_c::checkPathMove() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/checkPathMove__11daSpinner_cFv.s" } #pragma pop -/* ############################################################################################## */ /* 804D4E68-804D4E6C 0000D8 0004+00 0/1 0/0 0/0 .rodata effName$5299 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const effName[4] = { - 0x08, - 0xC5, - 0x08, - 0xC6, +static const u16 effName[2] = { + 2245, + 2246, }; -COMPILER_STRIP_GATE(0x804D4E68, &effName); + #pragma pop /* 804D4E6C-804D4E70 0000DC 0004+00 0/1 0/0 0/0 .rodata @5361 */ @@ -1254,14 +1007,14 @@ asm void daSpinner_c::setSpreadEffect() { /* 804D3F14-804D3F8C 002674 0078+00 2/2 0/0 0/0 .text clearSpreadEffect__11daSpinner_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSpinner_c::clearSpreadEffect() { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s" +void daSpinner_c::clearSpreadEffect() { + for (int i = 0; i < 2; i++) { + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xa8c[i]); + if (emitter != NULL) { + emitter->stopDrawParticle(); + } + } } -#pragma pop /* ############################################################################################## */ /* 804D4E70-804D4E74 0000E0 0004+00 0/1 0/0 0/0 .rodata @5671 */ @@ -1338,7 +1091,7 @@ COMPILER_STRIP_GATE(0x804D4E94, &lit_5680); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::execute() { +asm int daSpinner_c::execute() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/execute__11daSpinner_cFv.s" } @@ -1346,14 +1099,9 @@ asm void daSpinner_c::execute() { /* 804D4B94-804D4BB4 0032F4 0020+00 1/0 0/0 0/0 .text daSpinner_Execute__FP11daSpinner_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSpinner_Execute(daSpinner_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s" +static int daSpinner_Execute(daSpinner_c* i_this) { + return i_this->execute(); } -#pragma pop /* ############################################################################################## */ /* 804D4E98-804D4E9C 000108 0004+00 0/1 0/0 0/0 .rodata @5723 */ @@ -1374,27 +1122,23 @@ COMPILER_STRIP_GATE(0x804D4E9C, &lit_5724); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSpinner_c::draw() { +asm int daSpinner_c::draw() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/draw__11daSpinner_cFv.s" } #pragma pop /* 804D4D08-804D4D28 003468 0020+00 1/0 0/0 0/0 .text daSpinner_Draw__FP11daSpinner_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSpinner_Draw(daSpinner_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s" +static int daSpinner_Draw(daSpinner_c* i_this) { + return i_this->draw(); } -#pragma pop /* 804D4D28-804D4D70 003488 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// cCcD_GStts::~cCcD_GStts() +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__10cCcD_GSttsFv.s" } diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index 5b6cb2ebd4b..4e10be47e0a 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -3258,7 +3258,7 @@ bool daAlink_c::checkStageName(const char* stage) { /* 8009DA98-8009DB64 0983D8 00CC+00 1/1 0/0 0/0 .text * tgHitCallback__9daAlink_cFP10fopAc_ac_cP12dCcD_GObjInfP12dCcD_GObjInf */ void daAlink_c::tgHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, dCcD_GObjInf* param_2) { - if (param_2->ChkAtType(AT_TYPE_SPINNER)) { + if (param_2->ChkAtType(AT_TYPE_40000)) { field_0x369c = *param_2->GetAtVecP(); for (int i = 0; i < 3; i++) { if (param_1 == &field_0x850[i]) {