work on d_a_spinner

This commit is contained in:
Trueffeloot 2023-08-05 22:58:21 +02:00
parent 044f4753be
commit 166d6fc0e5
17 changed files with 209 additions and 786 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 <typename A1>
struct TVec3 {};
/* TVec3<f32> */
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<daSpinner_c*>(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<daSpinner_c*>(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, &current.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"
}

View File

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