mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-10 04:46:48 -04:00
Merge pull request #363 from TakaRikka/kytag10
d_a_warp_bug OK, d_a_kytag10 almost
This commit is contained in:
@@ -1,20 +0,0 @@
|
||||
lbl_80D68000:
|
||||
/* 80D68000 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80D68004 7C 08 02 A6 */ mflr r0
|
||||
/* 80D68008 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80D6800C 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80D68010 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80D68014 41 82 00 1C */ beq lbl_80D68030
|
||||
/* 80D68018 3C A0 80 D7 */ lis r5, __vt__12J3DFrameCtrl@ha /* 0x80D6825C@ha */
|
||||
/* 80D6801C 38 05 82 5C */ addi r0, r5, __vt__12J3DFrameCtrl@l /* 0x80D6825C@l */
|
||||
/* 80D68020 90 1F 00 00 */ stw r0, 0(r31)
|
||||
/* 80D68024 7C 80 07 35 */ extsh. r0, r4
|
||||
/* 80D68028 40 81 00 08 */ ble lbl_80D68030
|
||||
/* 80D6802C 4B 56 6D 11 */ bl __dl__FPv
|
||||
lbl_80D68030:
|
||||
/* 80D68030 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80D68034 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80D68038 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80D6803C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D68040 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80D68044 4E 80 00 20 */ blr
|
||||
@@ -1,120 +0,0 @@
|
||||
lbl_80D67E3C:
|
||||
/* 80D67E3C 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80D67E40 7C 08 02 A6 */ mflr r0
|
||||
/* 80D67E44 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 80D67E48 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80D67E4C 4B 5F A3 89 */ bl _savegpr_27
|
||||
/* 80D67E50 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80D67E54 3C 60 80 D7 */ lis r3, l_arcName@ha /* 0x80D68208@ha */
|
||||
/* 80D67E58 38 63 82 08 */ addi r3, r3, l_arcName@l /* 0x80D68208@l */
|
||||
/* 80D67E5C 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 80D67E60 3C 80 80 D7 */ lis r4, d_a_warp_bug__stringBase0@ha /* 0x80D681E0@ha */
|
||||
/* 80D67E64 38 84 81 E0 */ addi r4, r4, d_a_warp_bug__stringBase0@l /* 0x80D681E0@l */
|
||||
/* 80D67E68 38 84 00 08 */ addi r4, r4, 8
|
||||
/* 80D67E6C 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
|
||||
/* 80D67E70 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */
|
||||
/* 80D67E74 3F 85 00 02 */ addis r28, r5, 2
|
||||
/* 80D67E78 3B 9C C2 F8 */ addi r28, r28, -15624
|
||||
/* 80D67E7C 7F 85 E3 78 */ mr r5, r28
|
||||
/* 80D67E80 38 C0 00 80 */ li r6, 0x80
|
||||
/* 80D67E84 4B 2D 44 F9 */ bl getRes__14dRes_control_cFPCcPCcP11dRes_info_ci
|
||||
/* 80D67E88 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80D67E8C 3C 80 00 08 */ lis r4, 8
|
||||
/* 80D67E90 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000284@ha */
|
||||
/* 80D67E94 38 A5 02 84 */ addi r5, r5, 0x0284 /* 0x11000284@l */
|
||||
/* 80D67E98 4B 2A CD BD */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl
|
||||
/* 80D67E9C 90 7E 05 68 */ stw r3, 0x568(r30)
|
||||
/* 80D67EA0 3C 60 80 D7 */ lis r3, l_arcName@ha /* 0x80D68208@ha */
|
||||
/* 80D67EA4 38 63 82 08 */ addi r3, r3, l_arcName@l /* 0x80D68208@l */
|
||||
/* 80D67EA8 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 80D67EAC 3C 80 80 D7 */ lis r4, d_a_warp_bug__stringBase0@ha /* 0x80D681E0@ha */
|
||||
/* 80D67EB0 38 84 81 E0 */ addi r4, r4, d_a_warp_bug__stringBase0@l /* 0x80D681E0@l */
|
||||
/* 80D67EB4 38 84 00 12 */ addi r4, r4, 0x12
|
||||
/* 80D67EB8 7F 85 E3 78 */ mr r5, r28
|
||||
/* 80D67EBC 38 C0 00 80 */ li r6, 0x80
|
||||
/* 80D67EC0 4B 2D 44 BD */ bl getRes__14dRes_control_cFPCcPCcP11dRes_info_ci
|
||||
/* 80D67EC4 7C 7B 1B 78 */ mr r27, r3
|
||||
/* 80D67EC8 3C 60 80 D7 */ lis r3, l_arcName@ha /* 0x80D68208@ha */
|
||||
/* 80D67ECC 38 63 82 08 */ addi r3, r3, l_arcName@l /* 0x80D68208@l */
|
||||
/* 80D67ED0 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 80D67ED4 3C 80 80 D7 */ lis r4, d_a_warp_bug__stringBase0@ha /* 0x80D681E0@ha */
|
||||
/* 80D67ED8 38 84 81 E0 */ addi r4, r4, d_a_warp_bug__stringBase0@l /* 0x80D681E0@l */
|
||||
/* 80D67EDC 38 84 00 1C */ addi r4, r4, 0x1c
|
||||
/* 80D67EE0 7F 85 E3 78 */ mr r5, r28
|
||||
/* 80D67EE4 38 C0 00 80 */ li r6, 0x80
|
||||
/* 80D67EE8 4B 2D 44 95 */ bl getRes__14dRes_control_cFPCcPCcP11dRes_info_ci
|
||||
/* 80D67EEC 7C 7C 1B 78 */ mr r28, r3
|
||||
/* 80D67EF0 28 1B 00 00 */ cmplwi r27, 0
|
||||
/* 80D67EF4 41 82 00 6C */ beq lbl_80D67F60
|
||||
/* 80D67EF8 38 60 00 18 */ li r3, 0x18
|
||||
/* 80D67EFC 4B 56 6D 51 */ bl __nw__FUl
|
||||
/* 80D67F00 7C 7D 1B 79 */ or. r29, r3, r3
|
||||
/* 80D67F04 41 82 00 20 */ beq lbl_80D67F24
|
||||
/* 80D67F08 3C 80 80 D7 */ lis r4, __vt__12J3DFrameCtrl@ha /* 0x80D6825C@ha */
|
||||
/* 80D67F0C 38 04 82 5C */ addi r0, r4, __vt__12J3DFrameCtrl@l /* 0x80D6825C@l */
|
||||
/* 80D67F10 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 80D67F14 38 80 00 00 */ li r4, 0
|
||||
/* 80D67F18 4B 5C 04 E5 */ bl init__12J3DFrameCtrlFs
|
||||
/* 80D67F1C 38 00 00 00 */ li r0, 0
|
||||
/* 80D67F20 90 1D 00 14 */ stw r0, 0x14(r29)
|
||||
lbl_80D67F24:
|
||||
/* 80D67F24 93 BE 05 6C */ stw r29, 0x56c(r30)
|
||||
/* 80D67F28 80 7E 05 6C */ lwz r3, 0x56c(r30)
|
||||
/* 80D67F2C 38 9F 00 58 */ addi r4, r31, 0x58
|
||||
/* 80D67F30 7F 65 DB 78 */ mr r5, r27
|
||||
/* 80D67F34 38 C0 00 01 */ li r6, 1
|
||||
/* 80D67F38 38 E0 00 02 */ li r7, 2
|
||||
/* 80D67F3C 3D 00 80 D7 */ lis r8, lit_3709@ha /* 0x80D681DC@ha */
|
||||
/* 80D67F40 C0 28 81 DC */ lfs f1, lit_3709@l(r8) /* 0x80D681DC@l */
|
||||
/* 80D67F44 39 00 00 00 */ li r8, 0
|
||||
/* 80D67F48 39 20 FF FF */ li r9, -1
|
||||
/* 80D67F4C 4B 2A 57 C1 */ bl init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss
|
||||
/* 80D67F50 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80D67F54 40 82 00 0C */ bne lbl_80D67F60
|
||||
/* 80D67F58 38 60 00 00 */ li r3, 0
|
||||
/* 80D67F5C 48 00 00 8C */ b lbl_80D67FE8
|
||||
lbl_80D67F60:
|
||||
/* 80D67F60 28 1C 00 00 */ cmplwi r28, 0
|
||||
/* 80D67F64 41 82 00 6C */ beq lbl_80D67FD0
|
||||
/* 80D67F68 38 60 00 18 */ li r3, 0x18
|
||||
/* 80D67F6C 4B 56 6C E1 */ bl __nw__FUl
|
||||
/* 80D67F70 7C 7D 1B 79 */ or. r29, r3, r3
|
||||
/* 80D67F74 41 82 00 20 */ beq lbl_80D67F94
|
||||
/* 80D67F78 3C 80 80 D7 */ lis r4, __vt__12J3DFrameCtrl@ha /* 0x80D6825C@ha */
|
||||
/* 80D67F7C 38 04 82 5C */ addi r0, r4, __vt__12J3DFrameCtrl@l /* 0x80D6825C@l */
|
||||
/* 80D67F80 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 80D67F84 38 80 00 00 */ li r4, 0
|
||||
/* 80D67F88 4B 5C 04 75 */ bl init__12J3DFrameCtrlFs
|
||||
/* 80D67F8C 38 00 00 00 */ li r0, 0
|
||||
/* 80D67F90 90 1D 00 14 */ stw r0, 0x14(r29)
|
||||
lbl_80D67F94:
|
||||
/* 80D67F94 93 BE 05 70 */ stw r29, 0x570(r30)
|
||||
/* 80D67F98 80 7E 05 70 */ lwz r3, 0x570(r30)
|
||||
/* 80D67F9C 38 9F 00 58 */ addi r4, r31, 0x58
|
||||
/* 80D67FA0 7F 85 E3 78 */ mr r5, r28
|
||||
/* 80D67FA4 38 C0 00 01 */ li r6, 1
|
||||
/* 80D67FA8 38 E0 00 02 */ li r7, 2
|
||||
/* 80D67FAC 3D 00 80 D7 */ lis r8, lit_3709@ha /* 0x80D681DC@ha */
|
||||
/* 80D67FB0 C0 28 81 DC */ lfs f1, lit_3709@l(r8) /* 0x80D681DC@l */
|
||||
/* 80D67FB4 39 00 00 00 */ li r8, 0
|
||||
/* 80D67FB8 39 20 FF FF */ li r9, -1
|
||||
/* 80D67FBC 4B 2A 56 81 */ bl init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss
|
||||
/* 80D67FC0 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80D67FC4 40 82 00 0C */ bne lbl_80D67FD0
|
||||
/* 80D67FC8 38 60 00 00 */ li r3, 0
|
||||
/* 80D67FCC 48 00 00 1C */ b lbl_80D67FE8
|
||||
lbl_80D67FD0:
|
||||
/* 80D67FD0 80 1E 05 68 */ lwz r0, 0x568(r30)
|
||||
/* 80D67FD4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 80D67FD8 40 82 00 0C */ bne lbl_80D67FE4
|
||||
/* 80D67FDC 38 60 00 00 */ li r3, 0
|
||||
/* 80D67FE0 48 00 00 08 */ b lbl_80D67FE8
|
||||
lbl_80D67FE4:
|
||||
/* 80D67FE4 38 60 00 01 */ li r3, 1
|
||||
lbl_80D67FE8:
|
||||
/* 80D67FE8 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80D67FEC 4B 5F A2 35 */ bl _restgpr_27
|
||||
/* 80D67FF0 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80D67FF4 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D67FF8 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 80D67FFC 4E 80 00 20 */ blr
|
||||
@@ -1,46 +0,0 @@
|
||||
lbl_80D68130:
|
||||
/* 80D68130 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80D68134 7C 08 02 A6 */ mflr r0
|
||||
/* 80D68138 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80D6813C 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80D68140 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 80D68144 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80D68148 80 03 04 A0 */ lwz r0, 0x4a0(r3)
|
||||
/* 80D6814C 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c
|
||||
/* 80D68150 40 82 00 1C */ bne lbl_80D6816C
|
||||
/* 80D68154 28 1E 00 00 */ cmplwi r30, 0
|
||||
/* 80D68158 41 82 00 08 */ beq lbl_80D68160
|
||||
/* 80D6815C 4B 2B 0A 09 */ bl __ct__10fopAc_ac_cFv
|
||||
lbl_80D68160:
|
||||
/* 80D68160 80 1E 04 A0 */ lwz r0, 0x4a0(r30)
|
||||
/* 80D68164 60 00 00 08 */ ori r0, r0, 8
|
||||
/* 80D68168 90 1E 04 A0 */ stw r0, 0x4a0(r30)
|
||||
lbl_80D6816C:
|
||||
/* 80D6816C 38 7E 05 74 */ addi r3, r30, 0x574
|
||||
/* 80D68170 3C 80 80 D7 */ lis r4, l_arcName@ha /* 0x80D68208@ha */
|
||||
/* 80D68174 38 84 82 08 */ addi r4, r4, l_arcName@l /* 0x80D68208@l */
|
||||
/* 80D68178 80 84 00 00 */ lwz r4, 0(r4)
|
||||
/* 80D6817C 4B 2C 4D 41 */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc
|
||||
/* 80D68180 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80D68184 2C 1F 00 04 */ cmpwi r31, 4
|
||||
/* 80D68188 40 82 00 30 */ bne lbl_80D681B8
|
||||
/* 80D6818C 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80D68190 3C 80 80 D6 */ lis r4, createSolidHeap__FP10fopAc_ac_c@ha /* 0x80D67E3C@ha */
|
||||
/* 80D68194 38 84 7E 3C */ addi r4, r4, createSolidHeap__FP10fopAc_ac_c@l /* 0x80D67E3C@l */
|
||||
/* 80D68198 38 A0 40 00 */ li r5, 0x4000
|
||||
/* 80D6819C 4B 2B 23 15 */ bl fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl
|
||||
/* 80D681A0 54 60 06 3F */ clrlwi. r0, r3, 0x18
|
||||
/* 80D681A4 40 82 00 0C */ bne lbl_80D681B0
|
||||
/* 80D681A8 3B E0 00 05 */ li r31, 5
|
||||
/* 80D681AC 48 00 00 0C */ b lbl_80D681B8
|
||||
lbl_80D681B0:
|
||||
/* 80D681B0 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80D681B4 4B FF FC 85 */ bl create_init__11daWarpBug_cFv
|
||||
lbl_80D681B8:
|
||||
/* 80D681B8 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80D681BC 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80D681C0 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 80D681C4 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80D681C8 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D681CC 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80D681D0 4E 80 00 20 */ blr
|
||||
@@ -1,22 +0,0 @@
|
||||
lbl_80D680E0:
|
||||
/* 80D680E0 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80D680E4 7C 08 02 A6 */ mflr r0
|
||||
/* 80D680E8 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80D680EC 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80D680F0 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80D680F4 41 82 00 24 */ beq lbl_80D68118
|
||||
/* 80D680F8 38 7F 05 74 */ addi r3, r31, 0x574
|
||||
/* 80D680FC 3C 80 80 D7 */ lis r4, l_arcName@ha /* 0x80D68208@ha */
|
||||
/* 80D68100 38 84 82 08 */ addi r4, r4, l_arcName@l /* 0x80D68208@l */
|
||||
/* 80D68104 80 84 00 00 */ lwz r4, 0(r4)
|
||||
/* 80D68108 4B 2C 4F 01 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc
|
||||
/* 80D6810C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80D68110 38 80 00 00 */ li r4, 0
|
||||
/* 80D68114 4B 2B 0B 79 */ bl __dt__10fopAc_ac_cFv
|
||||
lbl_80D68118:
|
||||
/* 80D68118 38 60 00 01 */ li r3, 1
|
||||
/* 80D6811C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80D68120 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80D68124 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D68128 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80D6812C 4E 80 00 20 */ blr
|
||||
@@ -1,9 +0,0 @@
|
||||
lbl_80D68048:
|
||||
/* 80D68048 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80D6804C 7C 08 02 A6 */ mflr r0
|
||||
/* 80D68050 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80D68054 48 00 00 15 */ bl draw__11daWarpBug_cFv
|
||||
/* 80D68058 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80D6805C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D68060 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80D68064 4E 80 00 20 */ blr
|
||||
@@ -1,25 +0,0 @@
|
||||
lbl_80D68078:
|
||||
/* 80D68078 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80D6807C 7C 08 02 A6 */ mflr r0
|
||||
/* 80D68080 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80D68084 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80D68088 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80D6808C 80 63 05 68 */ lwz r3, 0x568(r3)
|
||||
/* 80D68090 38 63 00 24 */ addi r3, r3, 0x24
|
||||
/* 80D68094 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
|
||||
/* 80D68098 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
|
||||
/* 80D6809C 4B 5D E4 15 */ bl PSMTXCopy
|
||||
/* 80D680A0 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
|
||||
/* 80D680A4 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
|
||||
/* 80D680A8 C0 03 00 0C */ lfs f0, 0xc(r3)
|
||||
/* 80D680AC D0 1F 04 D0 */ stfs f0, 0x4d0(r31)
|
||||
/* 80D680B0 C0 03 00 1C */ lfs f0, 0x1c(r3)
|
||||
/* 80D680B4 D0 1F 04 D4 */ stfs f0, 0x4d4(r31)
|
||||
/* 80D680B8 C0 03 00 2C */ lfs f0, 0x2c(r3)
|
||||
/* 80D680BC D0 1F 04 D8 */ stfs f0, 0x4d8(r31)
|
||||
/* 80D680C0 38 60 00 01 */ li r3, 1
|
||||
/* 80D680C4 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80D680C8 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80D680CC 7C 08 03 A6 */ mtlr r0
|
||||
/* 80D680D0 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80D680D4 4E 80 00 20 */ blr
|
||||
@@ -1,5 +0,0 @@
|
||||
lbl_80D68068:
|
||||
/* 80D68068 38 00 00 00 */ li r0, 0
|
||||
/* 80D6806C B0 03 05 7C */ sth r0, 0x57c(r3)
|
||||
/* 80D68070 38 60 00 01 */ li r3, 1
|
||||
/* 80D68074 4E 80 00 20 */ blr
|
||||
@@ -1,54 +0,0 @@
|
||||
lbl_8052917C:
|
||||
/* 8052917C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80529180 7C 08 02 A6 */ mflr r0
|
||||
/* 80529184 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80529188 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8052918C 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80529190 38 00 00 00 */ li r0, 0
|
||||
/* 80529194 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */
|
||||
/* 80529198 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */
|
||||
/* 8052919C 98 03 0F 21 */ stb r0, 0xf21(r3)
|
||||
/* 805291A0 80 7F 05 6C */ lwz r3, 0x56c(r31)
|
||||
/* 805291A4 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 805291A8 41 82 00 40 */ beq lbl_805291E8
|
||||
/* 805291AC 4B D5 5A B5 */ bl deleteAllParticle__14JPABaseEmitterFv
|
||||
/* 805291B0 80 7F 05 6C */ lwz r3, 0x56c(r31)
|
||||
/* 805291B4 80 03 00 F4 */ lwz r0, 0xf4(r3)
|
||||
/* 805291B8 60 00 00 01 */ ori r0, r0, 1
|
||||
/* 805291BC 90 03 00 F4 */ stw r0, 0xf4(r3)
|
||||
/* 805291C0 38 00 00 01 */ li r0, 1
|
||||
/* 805291C4 90 03 00 24 */ stw r0, 0x24(r3)
|
||||
/* 805291C8 80 7F 05 6C */ lwz r3, 0x56c(r31)
|
||||
/* 805291CC 80 03 00 F4 */ lwz r0, 0xf4(r3)
|
||||
/* 805291D0 54 00 06 B0 */ rlwinm r0, r0, 0, 0x1a, 0x18
|
||||
/* 805291D4 90 03 00 F4 */ stw r0, 0xf4(r3)
|
||||
/* 805291D8 38 00 00 00 */ li r0, 0
|
||||
/* 805291DC 80 7F 05 6C */ lwz r3, 0x56c(r31)
|
||||
/* 805291E0 90 03 00 EC */ stw r0, 0xec(r3)
|
||||
/* 805291E4 90 1F 05 6C */ stw r0, 0x56c(r31)
|
||||
lbl_805291E8:
|
||||
/* 805291E8 80 7F 05 70 */ lwz r3, 0x570(r31)
|
||||
/* 805291EC 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 805291F0 41 82 00 40 */ beq lbl_80529230
|
||||
/* 805291F4 4B D5 5A 6D */ bl deleteAllParticle__14JPABaseEmitterFv
|
||||
/* 805291F8 80 7F 05 70 */ lwz r3, 0x570(r31)
|
||||
/* 805291FC 80 03 00 F4 */ lwz r0, 0xf4(r3)
|
||||
/* 80529200 60 00 00 01 */ ori r0, r0, 1
|
||||
/* 80529204 90 03 00 F4 */ stw r0, 0xf4(r3)
|
||||
/* 80529208 38 00 00 01 */ li r0, 1
|
||||
/* 8052920C 90 03 00 24 */ stw r0, 0x24(r3)
|
||||
/* 80529210 80 7F 05 70 */ lwz r3, 0x570(r31)
|
||||
/* 80529214 80 03 00 F4 */ lwz r0, 0xf4(r3)
|
||||
/* 80529218 54 00 06 B0 */ rlwinm r0, r0, 0, 0x1a, 0x18
|
||||
/* 8052921C 90 03 00 F4 */ stw r0, 0xf4(r3)
|
||||
/* 80529220 38 00 00 00 */ li r0, 0
|
||||
/* 80529224 80 7F 05 70 */ lwz r3, 0x570(r31)
|
||||
/* 80529228 90 03 00 EC */ stw r0, 0xec(r3)
|
||||
/* 8052922C 90 1F 05 70 */ stw r0, 0x570(r31)
|
||||
lbl_80529230:
|
||||
/* 80529230 38 60 00 01 */ li r3, 1
|
||||
/* 80529234 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80529238 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8052923C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80529240 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80529244 4E 80 00 20 */ blr
|
||||
@@ -1,10 +0,0 @@
|
||||
lbl_80529150:
|
||||
/* 80529150 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80529154 7C 08 02 A6 */ mflr r0
|
||||
/* 80529158 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8052915C 4B FF FC 1D */ bl sparks_move__FP13kytag10_class
|
||||
/* 80529160 38 60 00 01 */ li r3, 1
|
||||
/* 80529164 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80529168 7C 08 03 A6 */ mtlr r0
|
||||
/* 8052916C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80529170 4E 80 00 20 */ blr
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
lbl_80528D64:
|
||||
/* 80528D64 A0 64 00 00 */ lhz r3, 0(r4)
|
||||
/* 80528D68 38 03 FF FF */ addi r0, r3, -1
|
||||
/* 80528D6C 90 06 00 00 */ stw r0, 0(r6)
|
||||
/* 80528D70 7C 83 23 78 */ mr r3, r4
|
||||
/* 80528D74 4E 80 00 20 */ blr
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
lbl_80528D54:
|
||||
/* 80528D54 38 00 00 00 */ li r0, 0
|
||||
/* 80528D58 90 06 00 00 */ stw r0, 0(r6)
|
||||
/* 80528D5C 7C 83 23 78 */ mr r3, r4
|
||||
/* 80528D60 4E 80 00 20 */ blr
|
||||
@@ -1,20 +0,0 @@
|
||||
lbl_80528D0C:
|
||||
/* 80528D0C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80528D10 7C 08 02 A6 */ mflr r0
|
||||
/* 80528D14 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80528D18 7C 65 1B 78 */ mr r5, r3
|
||||
/* 80528D1C 38 80 00 00 */ li r4, 0
|
||||
/* 80528D20 80 03 00 B0 */ lwz r0, 0xb0(r3)
|
||||
/* 80528D24 54 03 86 3E */ rlwinm r3, r0, 0x10, 0x18, 0x1f
|
||||
/* 80528D28 28 03 00 FF */ cmplwi r3, 0xff
|
||||
/* 80528D2C 41 82 00 14 */ beq lbl_80528D40
|
||||
/* 80528D30 88 05 04 E2 */ lbz r0, 0x4e2(r5)
|
||||
/* 80528D34 7C 04 07 74 */ extsb r4, r0
|
||||
/* 80528D38 4B B2 8A B5 */ bl dPath_GetRoomPath__Fii
|
||||
/* 80528D3C 7C 64 1B 78 */ mr r4, r3
|
||||
lbl_80528D40:
|
||||
/* 80528D40 7C 83 23 78 */ mr r3, r4
|
||||
/* 80528D44 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80528D48 7C 08 03 A6 */ mtlr r0
|
||||
/* 80528D4C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80528D50 4E 80 00 20 */ blr
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); }
|
||||
u32 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); }
|
||||
GXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
|
||||
GXColorS10* getTevColor(u32 param_0) { return mTevBlock->getTevColor(param_0); }
|
||||
J3DFog* getFog() { return mPEBlock->getFog(); }
|
||||
J3DTexMtx* getTexMtx(u32 idx) { return mTexGenBlock->getTexMtx(idx); }
|
||||
u16 getIndex() { return mIndex; }
|
||||
|
||||
@@ -31,12 +31,33 @@ struct TVec3<s16> {
|
||||
}
|
||||
};
|
||||
|
||||
inline void setTVec3f(const f32* vec_a, f32* vec_b) {
|
||||
const register f32* v_a = vec_a;
|
||||
register f32* v_b = vec_b;
|
||||
|
||||
register f32 a_x;
|
||||
register f32 b_x;
|
||||
|
||||
asm {
|
||||
psq_l a_x, 0(v_a), 0, 0 /* qr0 */
|
||||
lfs b_x, 8(v_a)
|
||||
psq_st a_x, 0(v_b), 0, 0 /* qr0 */
|
||||
stfs b_x, 8(v_b)
|
||||
};
|
||||
}
|
||||
|
||||
template <>
|
||||
struct TVec3<f32> {
|
||||
f32 x;
|
||||
f32 y;
|
||||
f32 z;
|
||||
|
||||
/* TVec3(const Vec& i_vec) {
|
||||
setTVec3f(&i_vec.x, &x);
|
||||
} */
|
||||
|
||||
/* TVec3() {} */
|
||||
|
||||
operator Vec*() { return (Vec*)&x; }
|
||||
operator const Vec*() const { return (Vec*)&x; }
|
||||
|
||||
|
||||
@@ -250,6 +250,13 @@ public:
|
||||
void setGlobalRTMatrix(const Mtx m) { JPASetRMtxTVecfromMtx(m, mGlobalRot, &mGlobalTrs); }
|
||||
void setGlobalTranslation(f32 x, f32 y, f32 z) { mGlobalTrs.set(x, y, z); }
|
||||
void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; }
|
||||
void setVolumeSize(u16 size) { mVolumeSize = size; }
|
||||
void setLifeTime(s16 lifetime) { mLifeTime = lifetime; }
|
||||
|
||||
void setGlobalParticleScale(const JGeometry::TVec3<f32>& scale) {
|
||||
mGlobalPScl.set(scale.x, scale.y);
|
||||
}
|
||||
|
||||
// void setGlobalScale(const JGeometry::TVec3<f32>& scale) {
|
||||
// mGlobalScl = scale;
|
||||
// mGlobalPScl = scale;
|
||||
|
||||
@@ -722,6 +722,8 @@ public:
|
||||
s16 getBodyAngleX() const { return mBodyAngle.x; }
|
||||
s16 getBodyAngleY() const { return mBodyAngle.y; }
|
||||
|
||||
BOOL checkMidnaWarp() const { return 0; }
|
||||
|
||||
// some functions use these function as an inline
|
||||
// is there a better way to handle this?
|
||||
int i_checkNoResetFlg0(daPy_FLG0 pFlag) const { return mNoResetFlg0 & pFlag; }
|
||||
|
||||
@@ -3372,6 +3372,11 @@ inline void dComIfGd_setListDark() {
|
||||
g_dComIfG_gameInfo.drawlist.setXluListDark();
|
||||
}
|
||||
|
||||
inline void dComIfGd_setListDarkBG() {
|
||||
g_dComIfG_gameInfo.drawlist.setOpaListDarkBG();
|
||||
g_dComIfG_gameInfo.drawlist.setXluListDarkBG();
|
||||
}
|
||||
|
||||
inline void dComIfGd_setList() {
|
||||
g_dComIfG_gameInfo.drawlist.setOpaList();
|
||||
g_dComIfG_gameInfo.drawlist.setXluList();
|
||||
|
||||
@@ -315,6 +315,8 @@ public:
|
||||
void setOpaListSky() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_SKY]); }
|
||||
void setXluListDark() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_DARK]); }
|
||||
void setOpaListDark() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_DARK]); }
|
||||
void setXluListDarkBG() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_DARK_BG]); }
|
||||
void setOpaListDarkBG() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_DARK_BG]); }
|
||||
void setOpaList() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST]); }
|
||||
void setXluList() { setXluDrawList(mDrawBuffers[DB_XLU_LIST]); }
|
||||
void setOpaListItem3D() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_ITEM3D]); }
|
||||
|
||||
@@ -1,6 +1,25 @@
|
||||
#ifndef D_A_WARP_BUG_H
|
||||
#define D_A_WARP_BUG_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
class daWarpBug_c : public fopAc_ac_c {
|
||||
public:
|
||||
inline ~daWarpBug_c();
|
||||
|
||||
/* 80D67E38 */ void create_init();
|
||||
/* 80D68068 */ int draw();
|
||||
|
||||
inline int createHeap();
|
||||
inline int execute();
|
||||
inline int create();
|
||||
|
||||
/* 0x568 */ J3DModel* mpModel;
|
||||
/* 0x56C */ mDoExt_brkAnm* mpBrk;
|
||||
/* 0x570 */ mDoExt_btkAnm* mpBtk;
|
||||
/* 0x574 */ request_of_phase_process_class mPhase;
|
||||
/* 0x57C */ s16 field_0x57c;
|
||||
/* 0x57E */ u8 field_0x57e;
|
||||
};
|
||||
|
||||
#endif /* D_A_WARP_BUG_H */
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
#ifndef D_A_KYTAG10_H
|
||||
#define D_A_KYTAG10_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
struct dPath;
|
||||
|
||||
class kytag10_class : public fopAc_ac_c {
|
||||
public:
|
||||
/* 0x568 */ dPath* mpPath;
|
||||
/* 0x56C */ JPABaseEmitter* mpEmitter1;
|
||||
/* 0x570 */ JPABaseEmitter* mpEmitter2;
|
||||
/* 0x574 */ cXyz mEmitterPtclScale;
|
||||
/* 0x580 */ s16 mEmitterVolSize;
|
||||
/* 0x582 */ s16 mEmitterLifeTime;
|
||||
/* 0x584 */ u8 field_0x584;
|
||||
/* 0x588 */ cXyz field_0x588;
|
||||
/* 0x594 */ f32 field_0x594;
|
||||
/* 0x598 */ int mPathPoint;
|
||||
};
|
||||
|
||||
#endif /* D_A_KYTAG10_H */
|
||||
|
||||
@@ -144,6 +144,7 @@ COMPILER_STRIP_GATE(0x80485CA8, &lit_3842);
|
||||
|
||||
/* 80485A50-80485C90 000290 0240+00 1/1 0/0 0/0 .text execute__8daScex_cFv */
|
||||
// regalloc
|
||||
// this matches debug but not retail :/
|
||||
#ifdef NONMATCHING
|
||||
int daScex_c::execute() {
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
|
||||
@@ -1,229 +1,195 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d_a_warp_bug
|
||||
//
|
||||
/**
|
||||
* d_a_warp_bug.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "rel/d/a/d_a_warp_bug/d_a_warp_bug.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct request_of_phase_process_class {};
|
||||
|
||||
struct mDoMtx_stack_c {
|
||||
static u8 now[48];
|
||||
};
|
||||
|
||||
struct J3DMaterialTable {};
|
||||
|
||||
struct J3DAnmTextureSRTKey {};
|
||||
|
||||
struct mDoExt_btkAnm {
|
||||
/* 8000D63C */ void init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16);
|
||||
};
|
||||
|
||||
struct J3DAnmTevRegKey {};
|
||||
|
||||
struct mDoExt_brkAnm {
|
||||
/* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
|
||||
};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
/* 80018C8C */ ~fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct daWarpBug_c {
|
||||
/* 80D67E38 */ void create_init();
|
||||
/* 80D68068 */ void draw();
|
||||
};
|
||||
|
||||
struct dRes_info_c {};
|
||||
|
||||
struct dRes_control_c {
|
||||
/* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int);
|
||||
};
|
||||
|
||||
struct J3DModelData {};
|
||||
|
||||
struct J3DFrameCtrl {
|
||||
/* 803283FC */ void init(s16);
|
||||
/* 80D68000 */ ~J3DFrameCtrl();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void create_init__11daWarpBug_cFv();
|
||||
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
|
||||
extern "C" void __dt__12J3DFrameCtrlFv();
|
||||
extern "C" static void daWarpBug_Draw__FP11daWarpBug_c();
|
||||
extern "C" void draw__11daWarpBug_cFv();
|
||||
extern "C" static void daWarpBug_Execute__FP11daWarpBug_c();
|
||||
extern "C" static bool daWarpBug_IsDelete__FP11daWarpBug_c();
|
||||
extern "C" static void daWarpBug_Delete__FP11daWarpBug_c();
|
||||
extern "C" static void daWarpBug_Create__FP10fopAc_ac_c();
|
||||
extern "C" extern char const* const d_a_warp_bug__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
|
||||
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
|
||||
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void __dt__10fopAc_ac_cFv();
|
||||
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void init__12J3DFrameCtrlFs();
|
||||
extern "C" void PSMTXCopy();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
|
||||
/* 80D67E38-80D67E3C 000078 0004+00 1/1 0/0 0/0 .text create_init__11daWarpBug_cFv */
|
||||
void daWarpBug_c::create_init() {
|
||||
/* empty function */
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80D681DC-80D681E0 000000 0004+00 1/1 0/0 0/0 .rodata @3709 */
|
||||
SECTION_RODATA static f32 const lit_3709 = 1.0f;
|
||||
COMPILER_STRIP_GATE(0x80D681DC, &lit_3709);
|
||||
|
||||
/* 80D681E0-80D681E0 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80D681E0 = "WarpBug";
|
||||
SECTION_DEAD static char const* const stringBase_80D681E8 = "kisei.bmd";
|
||||
SECTION_DEAD static char const* const stringBase_80D681F2 = "kisei.brk";
|
||||
SECTION_DEAD static char const* const stringBase_80D681FC = "kisei.btk";
|
||||
#pragma pop
|
||||
void daWarpBug_c::create_init() {}
|
||||
|
||||
/* 80D68208-80D6820C -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
|
||||
SECTION_DATA static void* l_arcName = (void*)&d_a_warp_bug__stringBase0;
|
||||
static char* l_arcName = "WarpBug";
|
||||
|
||||
/* 80D6820C-80D6822C -00001 0020+00 1/0 0/0 0/0 .data l_daWarpBug_Method */
|
||||
SECTION_DATA static void* l_daWarpBug_Method[8] = {
|
||||
(void*)daWarpBug_Create__FP10fopAc_ac_c,
|
||||
(void*)daWarpBug_Delete__FP11daWarpBug_c,
|
||||
(void*)daWarpBug_Execute__FP11daWarpBug_c,
|
||||
(void*)daWarpBug_IsDelete__FP11daWarpBug_c,
|
||||
(void*)daWarpBug_Draw__FP11daWarpBug_c,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
};
|
||||
int daWarpBug_c::createHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, "kisei.bmd");
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
|
||||
|
||||
/* 80D6822C-80D6825C -00001 0030+00 0/0 0/0 1/0 .data g_profile_WarpBug */
|
||||
SECTION_DATA extern void* g_profile_WarpBug[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x01560000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x00000580, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x02D60000, (void*)&l_daWarpBug_Method,
|
||||
(void*)0x00040000, (void*)0x000E0000,
|
||||
};
|
||||
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, "kisei.brk");
|
||||
J3DAnmTextureSRTKey* pbtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, "kisei.btk");
|
||||
|
||||
/* 80D6825C-80D68268 000054 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
|
||||
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__12J3DFrameCtrlFv,
|
||||
};
|
||||
if (pbrk != NULL) {
|
||||
mpBrk = new mDoExt_brkAnm();
|
||||
|
||||
if (!mpBrk->init(modelData, pbrk, TRUE, 2, 1.0f, 0, -1)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (pbtk != NULL) {
|
||||
mpBtk = new mDoExt_btkAnm();
|
||||
|
||||
if (!mpBtk->init(modelData, pbtk, TRUE, 2, 1.0f, 0, -1)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (mpModel == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80D67E3C-80D68000 00007C 01C4+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void createSolidHeap(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/createSolidHeap__FP10fopAc_ac_c.s"
|
||||
static int createSolidHeap(fopAc_ac_c* i_this) {
|
||||
return static_cast<daWarpBug_c*>(i_this)->createHeap();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D68000-80D68048 000240 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DFrameCtrl::~J3DFrameCtrl() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/__dt__12J3DFrameCtrlFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D68048-80D68068 000288 0020+00 1/0 0/0 0/0 .text daWarpBug_Draw__FP11daWarpBug_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daWarpBug_Draw(daWarpBug_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/daWarpBug_Draw__FP11daWarpBug_c.s"
|
||||
static int daWarpBug_Draw(daWarpBug_c* i_this) {
|
||||
return i_this->draw();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D68068-80D68078 0002A8 0010+00 1/1 0/0 0/0 .text draw__11daWarpBug_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daWarpBug_c::draw() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/draw__11daWarpBug_cFv.s"
|
||||
int daWarpBug_c::draw() {
|
||||
#ifdef DEBUG
|
||||
daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0);
|
||||
if (!player_p->checkMidnaWarp()) {
|
||||
#endif
|
||||
|
||||
field_0x57c = 0;
|
||||
return 1;
|
||||
|
||||
#ifdef DEBUG
|
||||
}
|
||||
|
||||
cLib_chaseS(&field_0x57c, 255, 25);
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel, &mTevStr);
|
||||
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
|
||||
GXColorS10* color = modelData->getMaterialNodePointer(i)->getTevColor(1);
|
||||
|
||||
if (field_0x57e != 0) {
|
||||
color->r = 0;
|
||||
color->g = 255;
|
||||
color->b = 0;
|
||||
} else {
|
||||
color->r = 250;
|
||||
color->g = 50;
|
||||
color->b = 50;
|
||||
}
|
||||
|
||||
color->a = field_0x57c;
|
||||
}
|
||||
|
||||
if (field_0x57e != 0) {
|
||||
field_0x57e = 0;
|
||||
}
|
||||
|
||||
dComIfGd_setListDarkBG();
|
||||
mpBrk->entry(modelData);
|
||||
mpBtk->entry(modelData);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
dComIfGd_setList();
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
int daWarpBug_c::execute() {
|
||||
#ifdef DEBUG
|
||||
daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0);
|
||||
#endif
|
||||
|
||||
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
|
||||
mDoMtx_stack_c::multVecZero(¤t.pos);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (player_p->checkMidnaWarp()) {
|
||||
mpBrk->play();
|
||||
mpBtk->play();
|
||||
Z2GetAudioMgr()->mSeMgr.seStartLevel(Z2SE_EN_YM_WAIT, ¤t.pos, NULL, 0, 1.0f, 1.0f,
|
||||
-1.0f, -1.0f, 0);
|
||||
}
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D68078-80D680D8 0002B8 0060+00 1/0 0/0 0/0 .text daWarpBug_Execute__FP11daWarpBug_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daWarpBug_Execute(daWarpBug_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/daWarpBug_Execute__FP11daWarpBug_c.s"
|
||||
static int daWarpBug_Execute(daWarpBug_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D680D8-80D680E0 000318 0008+00 1/0 0/0 0/0 .text daWarpBug_IsDelete__FP11daWarpBug_c
|
||||
*/
|
||||
static bool daWarpBug_IsDelete(daWarpBug_c* param_0) {
|
||||
return true;
|
||||
static int daWarpBug_IsDelete(daWarpBug_c* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
daWarpBug_c::~daWarpBug_c() {
|
||||
dComIfG_resDelete(&mPhase, l_arcName);
|
||||
}
|
||||
|
||||
/* 80D680E0-80D68130 000320 0050+00 1/0 0/0 0/0 .text daWarpBug_Delete__FP11daWarpBug_c
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daWarpBug_Delete(daWarpBug_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/daWarpBug_Delete__FP11daWarpBug_c.s"
|
||||
static int daWarpBug_Delete(daWarpBug_c* i_this) {
|
||||
i_this->~daWarpBug_c();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daWarpBug_c::create() {
|
||||
if (!fopAcM_CheckCondition(this, 8)) {
|
||||
new (this) daWarpBug_c();
|
||||
fopAcM_OnCondition(this, 8);
|
||||
}
|
||||
|
||||
int phase = dComIfG_resLoad(&mPhase, l_arcName);
|
||||
if (phase == cPhs_COMPLEATE_e) {
|
||||
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x4000)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
create_init();
|
||||
}
|
||||
|
||||
return phase;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D68130-80D681D4 000370 00A4+00 1/0 0/0 0/0 .text daWarpBug_Create__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daWarpBug_Create(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/d_a_warp_bug/d_a_warp_bug/daWarpBug_Create__FP10fopAc_ac_c.s"
|
||||
static int daWarpBug_Create(fopAc_ac_c* i_this) {
|
||||
return static_cast<daWarpBug_c*>(i_this)->create();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80D681E0-80D681E0 000004 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
/* 80D6820C-80D6822C -00001 0020+00 1/0 0/0 0/0 .data l_daWarpBug_Method */
|
||||
static actor_method_class l_daWarpBug_Method = {
|
||||
(process_method_func)daWarpBug_Create, (process_method_func)daWarpBug_Delete,
|
||||
(process_method_func)daWarpBug_Execute, (process_method_func)daWarpBug_IsDelete,
|
||||
(process_method_func)daWarpBug_Draw,
|
||||
};
|
||||
|
||||
/* 80D6822C-80D6825C -00001 0030+00 0/0 0/0 1/0 .data g_profile_WarpBug */
|
||||
extern actor_process_profile_definition g_profile_WarpBug = {
|
||||
-3,
|
||||
7,
|
||||
-3,
|
||||
PROC_WarpBug,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daWarpBug_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
726,
|
||||
&l_daWarpBug_Method,
|
||||
0x40000,
|
||||
0,
|
||||
14,
|
||||
};
|
||||
|
||||
@@ -1,43 +1,17 @@
|
||||
//
|
||||
// Generated By: dol2asm
|
||||
// Translation Unit: d_a_kytag10
|
||||
//
|
||||
/**
|
||||
* d_a_kytag10.cpp
|
||||
* Sparks Particle Emitter on a Path
|
||||
*/
|
||||
|
||||
#include "rel/d/a/kytag/d_a_kytag10/d_a_kytag10.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_path.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/kankyo/d_kankyo_rain.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct kytag10_class {};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
};
|
||||
|
||||
struct dPath {};
|
||||
|
||||
struct dPa_levelEcallBack {};
|
||||
|
||||
struct dKy_tevstr_c {};
|
||||
|
||||
struct csXyz {};
|
||||
|
||||
struct _GXColor {};
|
||||
|
||||
struct cXyz {};
|
||||
|
||||
struct dPa_control_c {
|
||||
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
|
||||
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
|
||||
cXyz const*, f32);
|
||||
};
|
||||
|
||||
struct JPABaseEmitter {
|
||||
/* 8027EC60 */ void deleteAllParticle();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
@@ -53,7 +27,6 @@ extern "C" static void daKytag10_Execute__FP13kytag10_class();
|
||||
extern "C" static bool daKytag10_IsDelete__FP13kytag10_class();
|
||||
extern "C" static void daKytag10_Delete__FP13kytag10_class();
|
||||
extern "C" static void daKytag10_Create__FP10fopAc_ac_c();
|
||||
extern "C" extern void* g_profile_KYTAG10[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
@@ -66,16 +39,10 @@ extern "C" void dPath_GetRoomPath__Fii();
|
||||
extern "C" void dKyr_get_vectle_calc__FP4cXyzP4cXyzP4cXyz();
|
||||
extern "C" void cM_atan2s__Fff();
|
||||
extern "C" void deleteAllParticle__14JPABaseEmitterFv();
|
||||
extern "C" void PSVECSquareDistance();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 g_env_light[4880];
|
||||
extern "C" extern u32 __float_nan;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
@@ -93,49 +60,74 @@ COMPILER_STRIP_GATE(0x80529400, &lit_3788);
|
||||
|
||||
/* 80528BF8-80528D0C 000078 0114+00 1/1 0/0 0/0 .text get_rail_ratio_pos__FP5dPathifPsPs
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static cXyz get_rail_ratio_pos(dPath* i_path, int i_pointIdx, f32 param_2, s16* param_3,
|
||||
s16* param_4) {
|
||||
cXyz point_a;
|
||||
cXyz point_b;
|
||||
cXyz ret;
|
||||
cXyz calc_vec;
|
||||
|
||||
point_a.x = i_path->m_points[i_pointIdx].m_position.x;
|
||||
point_a.y = i_path->m_points[i_pointIdx].m_position.y;
|
||||
point_a.z = i_path->m_points[i_pointIdx].m_position.z;
|
||||
|
||||
point_b.x = i_path->m_points[i_pointIdx + 1].m_position.x;
|
||||
point_b.y = i_path->m_points[i_pointIdx + 1].m_position.y;
|
||||
point_b.z = i_path->m_points[i_pointIdx + 1].m_position.z;
|
||||
|
||||
ret.x = point_a.x + param_2 * (point_b.x - point_a.x);
|
||||
ret.y = point_a.y + param_2 * (point_b.y - point_a.y);
|
||||
ret.z = point_a.z + param_2 * (point_b.z - point_a.z);
|
||||
|
||||
dKyr_get_vectle_calc(&point_a, &point_b, &calc_vec);
|
||||
|
||||
*param_3 =
|
||||
cM_atan2s(JMAFastSqrt(calc_vec.x * calc_vec.x + calc_vec.z * calc_vec.z), calc_vec.y);
|
||||
*param_4 = cM_atan2s(calc_vec.x, calc_vec.z);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_rail_ratio_pos(dPath* param_0, int param_1, f32 param_2, s16* param_3,
|
||||
static asm cXyz get_rail_ratio_pos(dPath* param_0, int param_1, f32 param_2, s16* param_3,
|
||||
s16* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_rail_ratio_pos__FP5dPathifPsPs.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80528D0C-80528D54 00018C 0048+00 1/1 0/0 0/0 .text set_path_info__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void set_path_info(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/set_path_info__FP10fopAc_ac_c.s"
|
||||
static dPath* set_path_info(fopAc_ac_c* i_actor) {
|
||||
dPath* path_p = NULL;
|
||||
u8 path_id = fopAcM_GetParam(i_actor) >> 0x10;
|
||||
|
||||
if (path_id != 0xFF) {
|
||||
path_p = dPath_GetRoomPath(path_id, fopAcM_GetRoomNo(i_actor));
|
||||
}
|
||||
|
||||
return path_p;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80528D54-80528D64 0001D4 0010+00 1/1 0/0 0/0 .text
|
||||
* get_Extent_pos_start_get__FP13kytag10_classP5dPathP4cXyzfPi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_Extent_pos_start_get(kytag10_class* param_0, dPath* param_1, cXyz* param_2,
|
||||
f32 param_3, int* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_Extent_pos_start_get__FP13kytag10_classP5dPathP4cXyzfPi.s"
|
||||
static dPath* get_Extent_pos_start_get(kytag10_class* i_this, dPath* i_path, cXyz*, f32,
|
||||
int* param_4) {
|
||||
*param_4 = 0;
|
||||
return i_path;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80528D64-80528D78 0001E4 0014+00 1/1 0/0 0/0 .text
|
||||
* get_Extent_pos_end_get__FP13kytag10_classP5dPathP4cXyzfPi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void get_Extent_pos_end_get(kytag10_class* param_0, dPath* param_1, cXyz* param_2,
|
||||
f32 param_3, int* param_4) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/get_Extent_pos_end_get__FP13kytag10_classP5dPathP4cXyzfPi.s"
|
||||
static dPath* get_Extent_pos_end_get(kytag10_class* param_0, dPath* i_path, cXyz*, f32,
|
||||
int* param_4) {
|
||||
*param_4 = i_path->m_num - 1;
|
||||
return i_path;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529404-80529408 000004 0004+00 0/1 0/0 0/0 .rodata @3950 */
|
||||
@@ -218,6 +210,72 @@ COMPILER_STRIP_GATE(0x80529438, &lit_3959);
|
||||
#pragma pop
|
||||
|
||||
/* 80528D78-80529148 0001F8 03D0+00 1/1 0/0 0/0 .text sparks_move__FP13kytag10_class */
|
||||
// TVec3<f32> constructors need to be setup
|
||||
#ifdef NONMATCHING
|
||||
static void sparks_move(kytag10_class* i_this) {
|
||||
camera_class* camera_p = dComIfGp_getCamera(0);
|
||||
|
||||
cXyz ratio_pos_1;
|
||||
cXyz ratio_pos_2;
|
||||
cXyz ratio_pos_5;
|
||||
cXyz ratio_pos_3;
|
||||
cXyz ratio_pos_4;
|
||||
|
||||
dPath* path_p = i_this->mpPath;
|
||||
|
||||
if (path_p != NULL) {
|
||||
int start_point_idx;
|
||||
dPath* path_start = get_Extent_pos_start_get(i_this, path_p, &camera_p->mLookat.mEye,
|
||||
1000.0f, &start_point_idx);
|
||||
|
||||
int end_point_idx;
|
||||
dPath* path_end = get_Extent_pos_end_get(i_this, path_p, &camera_p->mLookat.mEye, 1000.0f,
|
||||
&end_point_idx);
|
||||
|
||||
s16 spD6;
|
||||
s16 spD8;
|
||||
ratio_pos_1 = get_rail_ratio_pos(path_start, 0, 0.0f, &spD6, &spD8);
|
||||
ratio_pos_2 = get_rail_ratio_pos(path_end, end_point_idx - 1, 1.0f, &spD6, &spD8);
|
||||
ratio_pos_3 = get_rail_ratio_pos(path_start, i_this->mPathPoint, 0.0f, &spD6, &spD8);
|
||||
ratio_pos_4 = get_rail_ratio_pos(path_start, i_this->mPathPoint, 1.0f, &spD6, &spD8);
|
||||
|
||||
f32 temp_f = 250.0f / ratio_pos_3.abs(ratio_pos_4);
|
||||
|
||||
ratio_pos_5 =
|
||||
get_rail_ratio_pos(path_start, i_this->mPathPoint, i_this->field_0x594, &spD6, &spD8);
|
||||
i_this->field_0x588 = ratio_pos_5;
|
||||
|
||||
i_this->mpEmitter1->setGlobalTranslation(ratio_pos_5.x, ratio_pos_5.y, ratio_pos_5.z);
|
||||
i_this->mpEmitter2->setGlobalTranslation(ratio_pos_5.x, ratio_pos_5.y, ratio_pos_5.z);
|
||||
|
||||
i_this->mpEmitter1->setVolumeSize(i_this->mEmitterVolSize);
|
||||
i_this->mpEmitter1->setLifeTime(i_this->mEmitterLifeTime);
|
||||
|
||||
i_this->mpEmitter2->setVolumeSize(i_this->mEmitterVolSize);
|
||||
i_this->mpEmitter2->setLifeTime(i_this->mEmitterLifeTime);
|
||||
|
||||
i_this->mpEmitter1->setGlobalParticleScale(i_this->mEmitterPtclScale);
|
||||
i_this->mpEmitter2->setGlobalParticleScale(i_this->mEmitterPtclScale);
|
||||
|
||||
if (i_this->field_0x584 != 0xFF) {
|
||||
f32 rate = i_this->field_0x584 / 100.0f;
|
||||
i_this->mpEmitter1->setRate(rate);
|
||||
i_this->mpEmitter2->setRate(rate);
|
||||
}
|
||||
|
||||
if (i_this->field_0x594 <= 1.0f - (250.0f * temp_f)) {
|
||||
i_this->field_0x594 += temp_f;
|
||||
return;
|
||||
} else if (i_this->mPathPoint >= end_point_idx - 1) {
|
||||
i_this->mPathPoint = start_point_idx;
|
||||
} else {
|
||||
i_this->mPathPoint++;
|
||||
}
|
||||
|
||||
i_this->field_0x594 = 0.0f;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -226,38 +284,48 @@ static asm void sparks_move(kytag10_class* param_0) {
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/sparks_move__FP13kytag10_class.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80529148-80529150 0005C8 0008+00 1/0 0/0 0/0 .text daKytag10_Draw__FP13kytag10_class
|
||||
*/
|
||||
static bool daKytag10_Draw(kytag10_class* param_0) {
|
||||
return true;
|
||||
static int daKytag10_Draw(kytag10_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80529150-80529174 0005D0 0024+00 1/0 0/0 0/0 .text daKytag10_Execute__FP13kytag10_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Execute(kytag10_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Execute__FP13kytag10_class.s"
|
||||
static int daKytag10_Execute(kytag10_class* i_this) {
|
||||
sparks_move(i_this);
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80529174-8052917C 0005F4 0008+00 1/0 0/0 0/0 .text daKytag10_IsDelete__FP13kytag10_class */
|
||||
static bool daKytag10_IsDelete(kytag10_class* param_0) {
|
||||
return true;
|
||||
static int daKytag10_IsDelete(kytag10_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8052917C-80529248 0005FC 00CC+00 1/0 0/0 0/0 .text daKytag10_Delete__FP13kytag10_class
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Delete(kytag10_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Delete__FP13kytag10_class.s"
|
||||
static int daKytag10_Delete(kytag10_class* i_this) {
|
||||
g_env_light.field_0xf21 = 0;
|
||||
|
||||
if (i_this->mpEmitter1 != NULL) {
|
||||
i_this->mpEmitter1->deleteAllParticle();
|
||||
i_this->mpEmitter1->becomeInvalidEmitter();
|
||||
i_this->mpEmitter1->quitImmortalEmitter();
|
||||
i_this->mpEmitter1->setEmitterCallBackPtr(NULL);
|
||||
i_this->mpEmitter1 = NULL;
|
||||
}
|
||||
|
||||
if (i_this->mpEmitter2 != NULL) {
|
||||
i_this->mpEmitter2->deleteAllParticle();
|
||||
i_this->mpEmitter2->becomeInvalidEmitter();
|
||||
i_this->mpEmitter2->quitImmortalEmitter();
|
||||
i_this->mpEmitter2->setEmitterCallBackPtr(NULL);
|
||||
i_this->mpEmitter2 = NULL;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529440-80529444 000040 0004+00 0/0 0/0 0/0 .rodata @3971 */
|
||||
@@ -275,34 +343,82 @@ COMPILER_STRIP_GATE(0x80529444, &lit_4058);
|
||||
#pragma pop
|
||||
|
||||
/* 80529248-805293F8 0006C8 01B0+00 1/0 0/0 0/0 .text daKytag10_Create__FP10fopAc_ac_c */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
static int daKytag10_Create(fopAc_ac_c* i_this) {
|
||||
if (!fopAcM_CheckCondition(i_this, 8)) {
|
||||
new (i_this) kytag10_class();
|
||||
fopAcM_OnCondition(i_this, 8);
|
||||
}
|
||||
|
||||
u8 prm0 = fopAcM_GetParam(i_this);
|
||||
if (prm0 == 0xFF) {
|
||||
prm0 = 10;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.z = prm0 * 0.1f;
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.y = prm0 * 0.1f;
|
||||
((kytag10_class*)i_this)->mEmitterPtclScale.x = prm0 * 0.1f;
|
||||
|
||||
s16 prm1 = (fopAcM_GetParam(i_this) >> 8) & 0xFF;
|
||||
if (prm1 == 0xFF) {
|
||||
prm1 = 0;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterVolSize = prm1 * 10;
|
||||
|
||||
s16 prm3 = (fopAcM_GetParam(i_this) >> 0x18) & 0xFF;
|
||||
if (prm3 == 0xFF) {
|
||||
prm3 = 15;
|
||||
}
|
||||
|
||||
((kytag10_class*)i_this)->mEmitterLifeTime = prm3 * 10;
|
||||
((kytag10_class*)i_this)->field_0x584 = i_this->current.angle.x & 0xFF;
|
||||
((kytag10_class*)i_this)->mpEmitter1 = NULL;
|
||||
((kytag10_class*)i_this)->mpEmitter2 = NULL;
|
||||
((kytag10_class*)i_this)->field_0x594 = 0.0f;
|
||||
((kytag10_class*)i_this)->mPathPoint = 0;
|
||||
((kytag10_class*)i_this)->mpPath = set_path_info(i_this);
|
||||
((kytag10_class*)i_this)->mpEmitter1 =
|
||||
dComIfGp_particle_set(0x852B, &i_this->current.pos, NULL, NULL);
|
||||
((kytag10_class*)i_this)->mpEmitter2 =
|
||||
dComIfGp_particle_set(0x852C, &i_this->current.pos, NULL, NULL);
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daKytag10_Create(fopAc_ac_c* param_0) {
|
||||
static asm int daKytag10_Create(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/kytag/d_a_kytag10/d_a_kytag10/daKytag10_Create__FP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80529448-80529468 -00001 0020+00 1/0 0/0 0/0 .data l_daKytag10_Method */
|
||||
SECTION_DATA static void* l_daKytag10_Method[8] = {
|
||||
(void*)daKytag10_Create__FP10fopAc_ac_c,
|
||||
(void*)daKytag10_Delete__FP13kytag10_class,
|
||||
(void*)daKytag10_Execute__FP13kytag10_class,
|
||||
(void*)daKytag10_IsDelete__FP13kytag10_class,
|
||||
(void*)daKytag10_Draw__FP13kytag10_class,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
static actor_method_class l_daKytag10_Method = {
|
||||
(process_method_func)daKytag10_Create, (process_method_func)daKytag10_Delete,
|
||||
(process_method_func)daKytag10_Execute, (process_method_func)daKytag10_IsDelete,
|
||||
(process_method_func)daKytag10_Draw,
|
||||
};
|
||||
|
||||
/* 80529468-80529498 -00001 0030+00 0/0 0/0 1/0 .data g_profile_KYTAG10 */
|
||||
SECTION_DATA extern void* g_profile_KYTAG10[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x02B40000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x0000059C, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x00680000, (void*)&l_daKytag10_Method,
|
||||
(void*)0x00044000, (void*)NULL,
|
||||
extern actor_process_profile_definition g_profile_KYTAG10 = {
|
||||
-3,
|
||||
7,
|
||||
-3,
|
||||
PROC_KYTAG10,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(kytag10_class),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
104,
|
||||
&l_daKytag10_Method,
|
||||
0x44000,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
@@ -200,91 +200,87 @@ COMPILER_STRIP_GATE(0x805A6980, &lit_4059);
|
||||
#pragma pop
|
||||
|
||||
/* 805A63F8-805A693C 000338 0544+00 1/1 0/0 0/0 .text execute__12daTagMstop_cFv */
|
||||
// one small block with issues
|
||||
#ifdef NONMATCHING
|
||||
// inline function nightmare
|
||||
int daTagMstop_c::execute() {
|
||||
if (field_0x56c) {
|
||||
fopAcM_seStartCurrentLevel(this, Z2SE_OBJ_DARK_GATE, 0);
|
||||
}
|
||||
|
||||
daMidna_c* midna = daPy_py_c::getMidnaActor();
|
||||
daMidna_c* midna_p = daPy_py_c::getMidnaActor();
|
||||
|
||||
if (!midna) {
|
||||
if (midna_p == NULL) {
|
||||
return 1;
|
||||
} else {
|
||||
daAlink_c* link = (daAlink_c*)daPy_getLinkPlayerActorClass();
|
||||
|
||||
if (checkNoAttention()) {
|
||||
mAttentionInfo.mPosition = midna->mAttentionInfo.mPosition;
|
||||
shape_angle.y = midna->shape_angle.y;
|
||||
mEyePos = midna->mAttentionInfo.mPosition;
|
||||
|
||||
} else {
|
||||
shape_angle.y = fopAcM_searchPlayerAngleY(this);
|
||||
}
|
||||
|
||||
if (field_0x56e == 4) {
|
||||
if (field_0x5c8.abs2(link->current.pos) < 2500.0f) {
|
||||
i_dComIfGp_event_reset();
|
||||
link->i_cancelOriginalDemo();
|
||||
field_0x56e = 0;
|
||||
}
|
||||
} else if (field_0x56e == 3) {
|
||||
if (link->checkHorseRide()) {
|
||||
link->setPlayerPosAndAngle(&field_0x5c8, link->shape_angle.y, 0);
|
||||
i_dComIfGp_event_reset();
|
||||
field_0x56e = 0;
|
||||
} else {
|
||||
field_0x56e = 4;
|
||||
link->i_changeOriginalDemo();
|
||||
|
||||
field_0x56a == 0 ? link->i_changeDemoMode(3, 0, 0, 0) :
|
||||
link->i_changeDemoMode(2, 0, 0, 0);
|
||||
link->i_changeDemoPos0(&field_0x5c8);
|
||||
}
|
||||
} else if (mEvtInfo.checkCommandTalk()) {
|
||||
if (field_0x56e == 2) {
|
||||
int shadowmode = midna->checkShadowModelDraw();
|
||||
if (midna->checkShadowReturnEnd()) {
|
||||
i_dComIfGp_getEvent().reset(this);
|
||||
fopAcM_orderPotentialEvent(this, 0x400, 0x14f, 1);
|
||||
field_0x56e = 3;
|
||||
} else if (shadowmode == 0) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
} else if (mSwitch != 0xFF || i_fopAcM_isSwitch(this, mSwitch) && field_0x572 == -1 ||
|
||||
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572]))
|
||||
{
|
||||
fopAcM_delete(this);
|
||||
|
||||
} else if (field_0x568 == 0xFF ||
|
||||
i_fopAcM_isSwitch(this, field_0x568) && field_0x570 == -1 ||
|
||||
dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572]) &&
|
||||
current.pos.y <= link->current.pos.y && link->current.pos.y <= field_0x5c4 &&
|
||||
fopAcM_searchPlayerDistanceXZ2(this) < field_0x5c0)
|
||||
{
|
||||
eventOrder();
|
||||
|
||||
} else {
|
||||
if (midna->checkShadowModeTalkWait()) {
|
||||
if (field_0x56e == 0) {
|
||||
mMsgFlow.init(this, shape_angle.z, 0, 0);
|
||||
mDoAud_seStart(16, 0, 0, 0);
|
||||
field_0x56e = 1;
|
||||
} else {
|
||||
if (mMsgFlow.doFlow(this, 0, 0)) {
|
||||
field_0x56e = 2;
|
||||
mDoAud_seStart(17, 0, 0, 0);
|
||||
|
||||
if (midna->checkShadowModelDraw()) {
|
||||
midna->setShadowReturn();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
daPy_py_c* player_p = daPy_getLinkPlayerActorClass();
|
||||
|
||||
if (checkNoAttention()) {
|
||||
mAttentionInfo.mPosition = midna_p->mAttentionInfo.mPosition;
|
||||
shape_angle.y = midna_p->shape_angle.y;
|
||||
mEyePos = mAttentionInfo.mPosition;
|
||||
} else {
|
||||
shape_angle.y = fopAcM_searchPlayerAngleY(this);
|
||||
}
|
||||
|
||||
if (field_0x56e == 4) {
|
||||
if (field_0x5c8.abs2(player_p->current.pos) < 2500.0f) {
|
||||
i_dComIfGp_event_reset();
|
||||
player_p->i_cancelOriginalDemo();
|
||||
field_0x56e = 0;
|
||||
}
|
||||
} else if (field_0x56e == 3) {
|
||||
if (player_p->checkHorseRide()) {
|
||||
player_p->setPlayerPosAndAngle(&field_0x5c8, player_p->shape_angle.y, 0);
|
||||
i_dComIfGp_event_reset();
|
||||
field_0x56e = 0;
|
||||
} else {
|
||||
field_0x56e = 4;
|
||||
player_p->i_changeOriginalDemo();
|
||||
field_0x56a == 0 ? player_p->i_changeDemoMode(3, 0, 0, 0) :
|
||||
player_p->i_changeDemoMode(2, 0, 0, 0);
|
||||
|
||||
player_p->i_changeDemoPos0(&field_0x5c8);
|
||||
}
|
||||
} else if (mEvtInfo.checkCommandTalk()) {
|
||||
if (field_0x56e == 2) {
|
||||
if (!midna_p->checkShadowModelDraw() || midna_p->checkShadowReturnEnd()) {
|
||||
i_dComIfGp_getEvent().reset(this);
|
||||
fopAcM_orderPotentialEvent(this, 0x400, 0x14f, 1);
|
||||
field_0x56e = 3;
|
||||
}
|
||||
} else if (!midna_p->checkShadowModeTalkWait()) {
|
||||
if (field_0x56e == 0) {
|
||||
mMsgFlow.init(this, (u16)shape_angle.z, 0, 0);
|
||||
mDoAud_seStart(Z2SE_NAVI_TALK_START, 0, 0, 0);
|
||||
field_0x56e = 1;
|
||||
} else if (mMsgFlow.doFlow(this, 0, 0)) {
|
||||
field_0x56e = 2;
|
||||
mDoAud_seStart(Z2SE_NAVI_TALK_END, 0, 0, 0);
|
||||
|
||||
if (midna_p->checkShadowModelDraw()) {
|
||||
midna_p->setShadowReturn();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ((mSwitch != 0xFF && i_fopAcM_isSwitch(this, mSwitch)) ||
|
||||
(field_0x572 != 0xFFFF &&
|
||||
i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x572])))
|
||||
{
|
||||
fopAcM_delete(this);
|
||||
return 1;
|
||||
} else if ((field_0x568 != 0xFF && !i_fopAcM_isSwitch(this, field_0x568)) ||
|
||||
(field_0x570 != 0xFFFF &&
|
||||
!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[field_0x570])))
|
||||
{
|
||||
return 1;
|
||||
} else if (current.pos.y <= player_p->current.pos.y && field_0x5c4 >= player_p->current.pos.y &&
|
||||
fopAcM_searchPlayerDistanceXZ2(this) < field_0x5c0)
|
||||
{
|
||||
eventOrder();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
|
||||
Reference in New Issue
Block a user