summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-05-24 19:47:15 -0700
committerGitHub <noreply@github.com>2024-05-24 20:47:15 -0600
commit411a832fbb90e6c61a6b5d982b9380533683c301 (patch)
tree6ebb09457b03e4ff4d04a2af4b7113d9bdb3fe71
parent38ac3e9227f05b3b59d1e5bfd3e4df8d2fa48a19 (diff)
d_a_e_vt mostly done (#2158)
-rw-r--r--Progress.md8
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s4
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/DemoSkipCallBack__8daE_VA_cFPvi.s16
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/JointCallBack__8daE_VA_cFP8J3DJointi.s21
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/_delete__8daE_VA_cFv.s54
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointNeck__8daE_VA_cFv.s120
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s4
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s4
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/checkBck__8daE_VA_cFi.s24
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Create__FP8daE_VA_c.s9
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Delete__FP8daE_VA_c.s9
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Draw__FP8daE_VA_c.s9
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Execute__FP8daE_VA_c.s9
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getWolfCutType__8daE_VA_cFv.s28
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s8
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/offSwordShield__8daE_VA_cFv.s26
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onRopeCutStatus__8daE_VA_cFiii.s71
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onSwordAtBit__8daE_VA_cFv.s14
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setActionMode__8daE_VA_cFii.s45
-rw-r--r--asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/useHeapInit__FP10fopAc_ac_c.s9
-rw-r--r--include/JSystem/J3DGraphBase/J3DMatBlock.h18
-rw-r--r--include/JSystem/J3DGraphBase/J3DMaterial.h4
-rw-r--r--include/JSystem/JGeometry.h4
-rw-r--r--include/d/a/d_a_player.h40
-rw-r--r--include/d/com/d_com_inf_game.h8
-rw-r--r--include/d/d_drawlist.h6
-rw-r--r--include/d/save/d_save.h1
-rw-r--r--include/f_op/f_op_actor.h1
-rw-r--r--include/f_op/f_op_actor_mng.h72
-rw-r--r--include/m_Do/m_Do_ext.h4
-rw-r--r--include/rel/d/a/e/d_a_e_vt/d_a_e_vt.h259
-rw-r--r--libs/JSystem/J3DGraphBase/J3DMatBlock.cpp4
-rw-r--r--rel/d/a/e/d_a_e_vt/d_a_e_vt.cpp4348
-rw-r--r--src/m_Do/m_Do_ext.cpp6
34 files changed, 4392 insertions, 875 deletions
diff --git a/Progress.md b/Progress.md
index e1ab55edc6..0c6cec9ad3 100644
--- a/Progress.md
+++ b/Progress.md
@@ -21,8 +21,8 @@ Total | 54.954197% | 2209528 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 54.954197% | 2209528 | 4020672
-RELs | 38.671676% | 4447368 | 11500324
-Total | 42.889619% | 6656896 | 15520996
+RELs | 38.686284% | 4449048 | 11500324
+Total | 42.900443% | 6658576 | 15520996
## RELs
@@ -162,7 +162,7 @@ d_a_e_tk | 32.077326% | 3916 | 12208
d_a_e_tk2 | 33.419577% | 3100 | 9276
d_a_e_tk_ball | 33.349562% | 2740 | 8216
d_a_e_tt | 27.836991% | 7104 | 25520
-d_a_e_vt | 24.313702% | 16332 | 67172
+d_a_e_vt | 26.814744% | 18012 | 67172
d_a_e_warpappear | 28.864569% | 4220 | 14620
d_a_e_wb | 23.058129% | 20008 | 86772
d_a_e_ws | 29.700483% | 6148 | 20700
@@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 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 | 38.671676% | 4447368 | 11500324
+Total | 38.686284% | 4449048 | 11500324
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s
index 25f70ee01d..5128c1b653 100644
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s
+++ b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s
@@ -328,8 +328,8 @@ lbl_807CD4DC:
/* 807CD4F4 41 80 FF D4 */ blt lbl_807CD4C8
/* 807CD4F8 3B 80 00 00 */ li r28, 0
/* 807CD4FC 3B A0 00 00 */ li r29, 0
-/* 807CD500 3C 60 80 7D */ lis r3, data_807CF084@ha /* 0x807CF084@ha */
-/* 807CD504 38 03 F0 84 */ addi r0, r3, data_807CF084@l /* 0x807CF084@l */
+/* 807CD500 3C 60 80 7D */ lis r3, va_tag_set_size@ha /* 0x807CF084@ha */
+/* 807CD504 38 03 F0 84 */ addi r0, r3, va_tag_set_size@l /* 0x807CF084@l */
/* 807CD508 3F 20 11 00 */ lis r25, 0x1100
/* 807CD50C 7C 1A 03 78 */ mr r26, r0
lbl_807CD510:
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/DemoSkipCallBack__8daE_VA_cFPvi.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/DemoSkipCallBack__8daE_VA_cFPvi.s
deleted file mode 100644
index 10e803459b..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/DemoSkipCallBack__8daE_VA_cFPvi.s
+++ /dev/null
@@ -1,16 +0,0 @@
-lbl_807C53A8:
-/* 807C53A8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807C53AC 7C 08 02 A6 */ mflr r0
-/* 807C53B0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807C53B4 28 03 00 00 */ cmplwi r3, 0
-/* 807C53B8 41 82 00 10 */ beq lbl_807C53C8
-/* 807C53BC 4B FF FF 7D */ bl demo_skip__8daE_VA_cFi
-/* 807C53C0 38 60 00 01 */ li r3, 1
-/* 807C53C4 48 00 00 08 */ b lbl_807C53CC
-lbl_807C53C8:
-/* 807C53C8 38 60 00 00 */ li r3, 0
-lbl_807C53CC:
-/* 807C53CC 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807C53D0 7C 08 03 A6 */ mtlr r0
-/* 807C53D4 38 21 00 10 */ addi r1, r1, 0x10
-/* 807C53D8 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/JointCallBack__8daE_VA_cFP8J3DJointi.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/JointCallBack__8daE_VA_cFP8J3DJointi.s
deleted file mode 100644
index 36581f3ed9..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/JointCallBack__8daE_VA_cFP8J3DJointi.s
+++ /dev/null
@@ -1,21 +0,0 @@
-lbl_807C284C:
-/* 807C284C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807C2850 7C 08 02 A6 */ mflr r0
-/* 807C2854 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807C2858 7C 60 1B 78 */ mr r0, r3
-/* 807C285C 2C 04 00 00 */ cmpwi r4, 0
-/* 807C2860 40 82 00 24 */ bne lbl_807C2884
-/* 807C2864 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
-/* 807C2868 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */
-/* 807C286C 80 A3 00 38 */ lwz r5, 0x38(r3)
-/* 807C2870 80 65 00 14 */ lwz r3, 0x14(r5)
-/* 807C2874 28 03 00 00 */ cmplwi r3, 0
-/* 807C2878 41 82 00 0C */ beq lbl_807C2884
-/* 807C287C 7C 04 03 78 */ mr r4, r0
-/* 807C2880 4B FF FD FD */ bl ctrlJoint__8daE_VA_cFP8J3DJointP8J3DModel
-lbl_807C2884:
-/* 807C2884 38 60 00 01 */ li r3, 1
-/* 807C2888 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807C288C 7C 08 03 A6 */ mtlr r0
-/* 807C2890 38 21 00 10 */ addi r1, r1, 0x10
-/* 807C2894 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/_delete__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/_delete__8daE_VA_cFv.s
deleted file mode 100644
index 8290366536..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/_delete__8daE_VA_cFv.s
+++ /dev/null
@@ -1,54 +0,0 @@
-lbl_807CCF64:
-/* 807CCF64 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 807CCF68 7C 08 02 A6 */ mflr r0
-/* 807CCF6C 90 01 00 24 */ stw r0, 0x24(r1)
-/* 807CCF70 39 61 00 20 */ addi r11, r1, 0x20
-/* 807CCF74 4B B9 52 65 */ bl _savegpr_28
-/* 807CCF78 7C 7C 1B 78 */ mr r28, r3
-/* 807CCF7C 38 7C 05 AC */ addi r3, r28, 0x5ac
-/* 807CCF80 3C 80 80 7D */ lis r4, d_a_e_vt__stringBase0@ha /* 0x807CEEFC@ha */
-/* 807CCF84 38 84 EE FC */ addi r4, r4, d_a_e_vt__stringBase0@l /* 0x807CEEFC@l */
-/* 807CCF88 4B 86 00 81 */ bl dComIfG_resDelete__FP30request_of_phase_process_classPCc
-/* 807CCF8C 3C 7C 00 01 */ addis r3, r28, 1
-/* 807CCF90 88 03 0F F8 */ lbz r0, 0xff8(r3)
-/* 807CCF94 28 00 00 00 */ cmplwi r0, 0
-/* 807CCF98 41 82 00 10 */ beq lbl_807CCFA8
-/* 807CCF9C 38 00 00 00 */ li r0, 0
-/* 807CCFA0 3C 60 80 7D */ lis r3, struct_807CF4B4+0x1@ha /* 0x807CF4B5@ha */
-/* 807CCFA4 98 03 F4 B5 */ stb r0, struct_807CF4B4+0x1@l(r3) /* 0x807CF4B5@l */
-lbl_807CCFA8:
-/* 807CCFA8 3B A0 00 00 */ li r29, 0
-/* 807CCFAC 3B E0 00 00 */ li r31, 0
-/* 807CCFB0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 807CCFB4 3B C3 61 C0 */ addi r30, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-lbl_807CCFB8:
-/* 807CCFB8 80 7E 5D 3C */ lwz r3, 0x5d3c(r30)
-/* 807CCFBC 38 63 02 10 */ addi r3, r3, 0x210
-/* 807CCFC0 3C 9F 00 01 */ addis r4, r31, 1
-/* 807CCFC4 38 84 0F 78 */ addi r4, r4, 0xf78
-/* 807CCFC8 7C 9C 20 2E */ lwzx r4, r28, r4
-/* 807CCFCC 4B 87 E9 4D */ bl getEmitter__Q213dPa_control_c7level_cFUl
-/* 807CCFD0 28 03 00 00 */ cmplwi r3, 0
-/* 807CCFD4 41 82 00 08 */ beq lbl_807CCFDC
-/* 807CCFD8 4B AB 1C 89 */ bl deleteAllParticle__14JPABaseEmitterFv
-lbl_807CCFDC:
-/* 807CCFDC 3B BD 00 01 */ addi r29, r29, 1
-/* 807CCFE0 2C 1D 00 02 */ cmpwi r29, 2
-/* 807CCFE4 3B FF 00 04 */ addi r31, r31, 4
-/* 807CCFE8 41 80 FF D0 */ blt lbl_807CCFB8
-/* 807CCFEC 80 1C 00 F0 */ lwz r0, 0xf0(r28)
-/* 807CCFF0 28 00 00 00 */ cmplwi r0, 0
-/* 807CCFF4 41 82 00 18 */ beq lbl_807CD00C
-/* 807CCFF8 38 7C 12 54 */ addi r3, r28, 0x1254
-/* 807CCFFC 81 9C 12 54 */ lwz r12, 0x1254(r28)
-/* 807CD000 81 8C 00 08 */ lwz r12, 8(r12)
-/* 807CD004 7D 89 03 A6 */ mtctr r12
-/* 807CD008 4E 80 04 21 */ bctrl
-lbl_807CD00C:
-/* 807CD00C 38 60 00 01 */ li r3, 1
-/* 807CD010 39 61 00 20 */ addi r11, r1, 0x20
-/* 807CD014 4B B9 52 11 */ bl _restgpr_28
-/* 807CD018 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 807CD01C 7C 08 03 A6 */ mtlr r0
-/* 807CD020 38 21 00 20 */ addi r1, r1, 0x20
-/* 807CD024 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointNeck__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointNeck__8daE_VA_cFv.s
deleted file mode 100644
index 215aea937f..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointNeck__8daE_VA_cFv.s
+++ /dev/null
@@ -1,120 +0,0 @@
-lbl_807C2898:
-/* 807C2898 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807C289C 7C 08 02 A6 */ mflr r0
-/* 807C28A0 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807C28A4 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 807C28A8 93 C1 00 08 */ stw r30, 8(r1)
-/* 807C28AC 7C 7E 1B 78 */ mr r30, r3
-/* 807C28B0 88 03 13 91 */ lbz r0, 0x1391(r3)
-/* 807C28B4 28 00 00 00 */ cmplwi r0, 0
-/* 807C28B8 41 82 01 2C */ beq lbl_807C29E4
-/* 807C28BC 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 807C28C0 3B E4 61 C0 */ addi r31, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 807C28C4 80 9F 5D AC */ lwz r4, 0x5dac(r31)
-/* 807C28C8 4B 85 7E 49 */ bl fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c
-/* 807C28CC A8 1E 04 E6 */ lha r0, 0x4e6(r30)
-/* 807C28D0 7C 00 18 50 */ subf r0, r0, r3
-/* 807C28D4 7C 04 07 34 */ extsh r4, r0
-/* 807C28D8 2C 04 30 00 */ cmpwi r4, 0x3000
-/* 807C28DC 40 81 00 08 */ ble lbl_807C28E4
-/* 807C28E0 38 80 30 00 */ li r4, 0x3000
-lbl_807C28E4:
-/* 807C28E4 7C 80 07 34 */ extsh r0, r4
-/* 807C28E8 2C 00 D0 00 */ cmpwi r0, -12288
-/* 807C28EC 40 80 00 08 */ bge lbl_807C28F4
-/* 807C28F0 38 80 D0 00 */ li r4, -12288
-lbl_807C28F4:
-/* 807C28F4 38 7E 13 94 */ addi r3, r30, 0x1394
-/* 807C28F8 38 A0 00 08 */ li r5, 8
-/* 807C28FC 38 C0 08 00 */ li r6, 0x800
-/* 807C2900 38 E0 00 40 */ li r7, 0x40
-/* 807C2904 4B AA DC 3D */ bl cLib_addCalcAngleS__FPsssss
-/* 807C2908 7F C3 F3 78 */ mr r3, r30
-/* 807C290C 80 9F 5D AC */ lwz r4, 0x5dac(r31)
-/* 807C2910 4B 85 7E 29 */ bl fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c
-/* 807C2914 20 03 14 00 */ subfic r0, r3, 0x1400
-/* 807C2918 7C 04 07 34 */ extsh r4, r0
-/* 807C291C 2C 04 30 00 */ cmpwi r4, 0x3000
-/* 807C2920 40 81 00 08 */ ble lbl_807C2928
-/* 807C2924 38 80 30 00 */ li r4, 0x3000
-lbl_807C2928:
-/* 807C2928 7C 80 07 34 */ extsh r0, r4
-/* 807C292C 2C 00 D0 00 */ cmpwi r0, -12288
-/* 807C2930 40 80 00 08 */ bge lbl_807C2938
-/* 807C2934 38 80 D0 00 */ li r4, -12288
-lbl_807C2938:
-/* 807C2938 38 7E 13 96 */ addi r3, r30, 0x1396
-/* 807C293C 38 A0 00 08 */ li r5, 8
-/* 807C2940 38 C0 08 00 */ li r6, 0x800
-/* 807C2944 38 E0 00 40 */ li r7, 0x40
-/* 807C2948 4B AA DB F9 */ bl cLib_addCalcAngleS__FPsssss
-/* 807C294C 7F C3 F3 78 */ mr r3, r30
-/* 807C2950 38 80 00 1F */ li r4, 0x1f
-/* 807C2954 48 00 0F 69 */ bl checkBck__8daE_VA_cFi
-/* 807C2958 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 807C295C 40 82 00 18 */ bne lbl_807C2974
-/* 807C2960 7F C3 F3 78 */ mr r3, r30
-/* 807C2964 38 80 00 20 */ li r4, 0x20
-/* 807C2968 48 00 0F 55 */ bl checkBck__8daE_VA_cFi
-/* 807C296C 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 807C2970 41 82 00 20 */ beq lbl_807C2990
-lbl_807C2974:
-/* 807C2974 38 7E 13 98 */ addi r3, r30, 0x1398
-/* 807C2978 38 80 F8 00 */ li r4, -2048
-/* 807C297C 38 A0 00 08 */ li r5, 8
-/* 807C2980 38 C0 00 80 */ li r6, 0x80
-/* 807C2984 38 E0 00 40 */ li r7, 0x40
-/* 807C2988 4B AA DB B9 */ bl cLib_addCalcAngleS__FPsssss
-/* 807C298C 48 00 00 4C */ b lbl_807C29D8
-lbl_807C2990:
-/* 807C2990 7F C3 F3 78 */ mr r3, r30
-/* 807C2994 38 80 00 21 */ li r4, 0x21
-/* 807C2998 48 00 0F 25 */ bl checkBck__8daE_VA_cFi
-/* 807C299C 54 60 06 3F */ clrlwi. r0, r3, 0x18
-/* 807C29A0 41 82 00 20 */ beq lbl_807C29C0
-/* 807C29A4 38 7E 13 98 */ addi r3, r30, 0x1398
-/* 807C29A8 38 80 E8 00 */ li r4, -6144
-/* 807C29AC 38 A0 00 08 */ li r5, 8
-/* 807C29B0 38 C0 00 80 */ li r6, 0x80
-/* 807C29B4 38 E0 00 40 */ li r7, 0x40
-/* 807C29B8 4B AA DB 89 */ bl cLib_addCalcAngleS__FPsssss
-/* 807C29BC 48 00 00 1C */ b lbl_807C29D8
-lbl_807C29C0:
-/* 807C29C0 38 7E 13 98 */ addi r3, r30, 0x1398
-/* 807C29C4 38 80 E8 00 */ li r4, -6144
-/* 807C29C8 38 A0 00 08 */ li r5, 8
-/* 807C29CC 38 C0 01 00 */ li r6, 0x100
-/* 807C29D0 38 E0 00 40 */ li r7, 0x40
-/* 807C29D4 4B AA DB 6D */ bl cLib_addCalcAngleS__FPsssss
-lbl_807C29D8:
-/* 807C29D8 88 1E 13 91 */ lbz r0, 0x1391(r30)
-/* 807C29DC 98 1E 13 92 */ stb r0, 0x1392(r30)
-/* 807C29E0 48 00 00 54 */ b lbl_807C2A34
-lbl_807C29E4:
-/* 807C29E4 88 1E 13 92 */ lbz r0, 0x1392(r30)
-/* 807C29E8 98 1E 13 91 */ stb r0, 0x1391(r30)
-/* 807C29EC 38 7E 13 94 */ addi r3, r30, 0x1394
-/* 807C29F0 38 80 00 00 */ li r4, 0
-/* 807C29F4 38 A0 00 08 */ li r5, 8
-/* 807C29F8 38 C0 01 00 */ li r6, 0x100
-/* 807C29FC 38 E0 00 40 */ li r7, 0x40
-/* 807C2A00 4B AA DB 41 */ bl cLib_addCalcAngleS__FPsssss
-/* 807C2A04 38 7E 13 96 */ addi r3, r30, 0x1396
-/* 807C2A08 38 80 00 00 */ li r4, 0
-/* 807C2A0C 38 A0 00 08 */ li r5, 8
-/* 807C2A10 38 C0 01 00 */ li r6, 0x100
-/* 807C2A14 38 E0 00 40 */ li r7, 0x40
-/* 807C2A18 4B AA DB 29 */ bl cLib_addCalcAngleS__FPsssss
-/* 807C2A1C 38 7E 13 98 */ addi r3, r30, 0x1398
-/* 807C2A20 38 80 00 00 */ li r4, 0
-/* 807C2A24 38 A0 00 08 */ li r5, 8
-/* 807C2A28 38 C0 01 00 */ li r6, 0x100
-/* 807C2A2C 38 E0 00 40 */ li r7, 0x40
-/* 807C2A30 4B AA DB 11 */ bl cLib_addCalcAngleS__FPsssss
-lbl_807C2A34:
-/* 807C2A34 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 807C2A38 83 C1 00 08 */ lwz r30, 8(r1)
-/* 807C2A3C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807C2A40 7C 08 03 A6 */ mtlr r0
-/* 807C2A44 38 21 00 10 */ addi r1, r1, 0x10
-/* 807C2A48 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s
index 5774eb0247..9689539e8f 100644
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s
+++ b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s
@@ -554,8 +554,8 @@ lbl_807C5C1C:
/* 807C5C34 41 80 FD 94 */ blt lbl_807C59C8
/* 807C5C38 39 C0 00 00 */ li r14, 0
/* 807C5C3C 39 E0 00 00 */ li r15, 0
-/* 807C5C40 3C 60 80 7D */ lis r3, data_807CF0AC@ha /* 0x807CF0AC@ha */
-/* 807C5C44 38 03 F0 AC */ addi r0, r3, data_807CF0AC@l /* 0x807CF0AC@l */
+/* 807C5C40 3C 60 80 7D */ lis r3, va_tag_set_num@ha /* 0x807CF0AC@ha */
+/* 807C5C44 38 03 F0 AC */ addi r0, r3, va_tag_set_num@l /* 0x807CF0AC@l */
/* 807C5C48 7C 10 03 78 */ mr r16, r0
lbl_807C5C4C:
/* 807C5C4C 88 B0 00 00 */ lbz r5, 0(r16)
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s
index 0b6f4f3357..6506d7974b 100644
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s
+++ b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s
@@ -36,8 +36,8 @@ lbl_807C61D4:
lbl_807C61DC:
/* 807C61DC C3 FF 00 70 */ lfs f31, 0x70(r31)
lbl_807C61E0:
-/* 807C61E0 3C 60 80 7D */ lis r3, data_807CF0AC@ha /* 0x807CF0AC@ha */
-/* 807C61E4 38 63 F0 AC */ addi r3, r3, data_807CF0AC@l /* 0x807CF0AC@l */
+/* 807C61E0 3C 60 80 7D */ lis r3, va_tag_set_num@ha /* 0x807CF0AC@ha */
+/* 807C61E4 38 63 F0 AC */ addi r3, r3, va_tag_set_num@l /* 0x807CF0AC@l */
/* 807C61E8 7C 03 E0 AE */ lbzx r0, r3, r28
/* 807C61EC 1C 60 00 0C */ mulli r3, r0, 0xc
/* 807C61F0 38 03 09 98 */ addi r0, r3, 0x998
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/checkBck__8daE_VA_cFi.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/checkBck__8daE_VA_cFi.s
deleted file mode 100644
index f9dc6c7d6b..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/checkBck__8daE_VA_cFi.s
+++ /dev/null
@@ -1,24 +0,0 @@
-lbl_807C38BC:
-/* 807C38BC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807C38C0 7C 08 02 A6 */ mflr r0
-/* 807C38C4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807C38C8 93 E1 00 0C */ stw r31, 0xc(r1)
-/* 807C38CC 7C 7F 1B 78 */ mr r31, r3
-/* 807C38D0 3C 60 80 7D */ lis r3, d_a_e_vt__stringBase0@ha /* 0x807CEEFC@ha */
-/* 807C38D4 38 63 EE FC */ addi r3, r3, d_a_e_vt__stringBase0@l /* 0x807CEEFC@l */
-/* 807C38D8 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 807C38DC 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 807C38E0 3C A5 00 02 */ addis r5, r5, 2
-/* 807C38E4 38 C0 00 80 */ li r6, 0x80
-/* 807C38E8 38 A5 C2 F8 */ addi r5, r5, -15624
-/* 807C38EC 4B 87 8A 01 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci
-/* 807C38F0 80 9F 05 B4 */ lwz r4, 0x5b4(r31)
-/* 807C38F4 80 04 00 08 */ lwz r0, 8(r4)
-/* 807C38F8 7C 00 18 50 */ subf r0, r0, r3
-/* 807C38FC 7C 00 00 34 */ cntlzw r0, r0
-/* 807C3900 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f
-/* 807C3904 83 E1 00 0C */ lwz r31, 0xc(r1)
-/* 807C3908 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807C390C 7C 08 03 A6 */ mtlr r0
-/* 807C3910 38 21 00 10 */ addi r1, r1, 0x10
-/* 807C3914 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Create__FP8daE_VA_c.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Create__FP8daE_VA_c.s
deleted file mode 100644
index 55b488e644..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Create__FP8daE_VA_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_807CE244:
-/* 807CE244 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807CE248 7C 08 02 A6 */ mflr r0
-/* 807CE24C 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807CE250 4B FF F4 19 */ bl create__8daE_VA_cFv
-/* 807CE254 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807CE258 7C 08 03 A6 */ mtlr r0
-/* 807CE25C 38 21 00 10 */ addi r1, r1, 0x10
-/* 807CE260 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Delete__FP8daE_VA_c.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Delete__FP8daE_VA_c.s
deleted file mode 100644
index b7bac9868c..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Delete__FP8daE_VA_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_807CD028:
-/* 807CD028 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807CD02C 7C 08 02 A6 */ mflr r0
-/* 807CD030 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807CD034 4B FF FF 31 */ bl _delete__8daE_VA_cFv
-/* 807CD038 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807CD03C 7C 08 03 A6 */ mtlr r0
-/* 807CD040 38 21 00 10 */ addi r1, r1, 0x10
-/* 807CD044 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Draw__FP8daE_VA_c.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Draw__FP8daE_VA_c.s
deleted file mode 100644
index 06323d568d..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Draw__FP8daE_VA_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_807C37F8:
-/* 807C37F8 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807C37FC 7C 08 02 A6 */ mflr r0
-/* 807C3800 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807C3804 4B FF FA 61 */ bl draw__8daE_VA_cFv
-/* 807C3808 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807C380C 7C 08 03 A6 */ mtlr r0
-/* 807C3810 38 21 00 10 */ addi r1, r1, 0x10
-/* 807C3814 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Execute__FP8daE_VA_c.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Execute__FP8daE_VA_c.s
deleted file mode 100644
index b1943ec31e..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Execute__FP8daE_VA_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_807CCF3C:
-/* 807CCF3C 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807CCF40 7C 08 02 A6 */ mflr r0
-/* 807CCF44 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807CCF48 4B FF FD DD */ bl execute__8daE_VA_cFv
-/* 807CCF4C 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807CCF50 7C 08 03 A6 */ mtlr r0
-/* 807CCF54 38 21 00 10 */ addi r1, r1, 0x10
-/* 807CCF58 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getWolfCutType__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getWolfCutType__8daE_VA_cFv.s
deleted file mode 100644
index 7073f2f50f..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getWolfCutType__8daE_VA_cFv.s
+++ /dev/null
@@ -1,28 +0,0 @@
-lbl_807C39C4:
-/* 807C39C4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 807C39C8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 807C39CC 80 63 5D AC */ lwz r3, 0x5dac(r3)
-/* 807C39D0 88 03 05 68 */ lbz r0, 0x568(r3)
-/* 807C39D4 2C 00 00 37 */ cmpwi r0, 0x37
-/* 807C39D8 40 80 00 18 */ bge lbl_807C39F0
-/* 807C39DC 2C 00 00 2E */ cmpwi r0, 0x2e
-/* 807C39E0 40 80 00 2C */ bge lbl_807C3A0C
-/* 807C39E4 2C 00 00 2C */ cmpwi r0, 0x2c
-/* 807C39E8 40 80 00 14 */ bge lbl_807C39FC
-/* 807C39EC 48 00 00 28 */ b lbl_807C3A14
-lbl_807C39F0:
-/* 807C39F0 2C 00 00 39 */ cmpwi r0, 0x39
-/* 807C39F4 41 82 00 10 */ beq lbl_807C3A04
-/* 807C39F8 48 00 00 1C */ b lbl_807C3A14
-lbl_807C39FC:
-/* 807C39FC 38 60 00 01 */ li r3, 1
-/* 807C3A00 4E 80 00 20 */ blr
-lbl_807C3A04:
-/* 807C3A04 38 60 00 02 */ li r3, 2
-/* 807C3A08 4E 80 00 20 */ blr
-lbl_807C3A0C:
-/* 807C3A0C 38 60 00 03 */ li r3, 3
-/* 807C3A10 4E 80 00 20 */ blr
-lbl_807C3A14:
-/* 807C3A14 38 60 00 00 */ li r3, 0
-/* 807C3A18 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s
index d3cf3bebae..012f4cb137 100644
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s
+++ b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s
@@ -145,10 +145,10 @@ lbl_807CC6F8:
/* 807CC6F8 3B C0 00 00 */ li r30, 0
/* 807CC6FC 3B 80 00 00 */ li r28, 0
/* 807CC700 3B 60 00 00 */ li r27, 0
-/* 807CC704 3C 60 80 7D */ lis r3, data_807CF0AC@ha /* 0x807CF0AC@ha */
-/* 807CC708 3B 03 F0 AC */ addi r24, r3, data_807CF0AC@l /* 0x807CF0AC@l */
-/* 807CC70C 3C 60 80 7D */ lis r3, data_807CF0D4@ha /* 0x807CF0D4@ha */
-/* 807CC710 3B 23 F0 D4 */ addi r25, r3, data_807CF0D4@l /* 0x807CF0D4@l */
+/* 807CC704 3C 60 80 7D */ lis r3, va_tag_set_num@ha /* 0x807CF0AC@ha */
+/* 807CC708 3B 03 F0 AC */ addi r24, r3, va_tag_set_num@l /* 0x807CF0AC@l */
+/* 807CC70C 3C 60 80 7D */ lis r3, va_tag_offset@ha /* 0x807CF0D4@ha */
+/* 807CC710 3B 23 F0 D4 */ addi r25, r3, va_tag_offset@l /* 0x807CF0D4@l */
/* 807CC714 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */
/* 807CC718 3B 43 D4 70 */ addi r26, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */
lbl_807CC71C:
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/offSwordShield__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/offSwordShield__8daE_VA_cFv.s
deleted file mode 100644
index 3260c5622b..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/offSwordShield__8daE_VA_cFv.s
+++ /dev/null
@@ -1,26 +0,0 @@
-lbl_807C3A50:
-/* 807C3A50 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
-/* 807C3A54 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */
-/* 807C3A58 80 84 5D AC */ lwz r4, 0x5dac(r4)
-/* 807C3A5C 88 04 05 68 */ lbz r0, 0x568(r4)
-/* 807C3A60 28 00 00 39 */ cmplwi r0, 0x39
-/* 807C3A64 4C 82 00 20 */ bnelr
-/* 807C3A68 38 00 00 03 */ li r0, 3
-/* 807C3A6C B0 03 13 3E */ sth r0, 0x133e(r3)
-/* 807C3A70 38 80 00 00 */ li r4, 0
-/* 807C3A74 38 00 00 04 */ li r0, 4
-/* 807C3A78 7C 09 03 A6 */ mtctr r0
-lbl_807C3A7C:
-/* 807C3A7C 7C A3 22 14 */ add r5, r3, r4
-/* 807C3A80 80 05 20 90 */ lwz r0, 0x2090(r5)
-/* 807C3A84 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
-/* 807C3A88 90 05 20 90 */ stw r0, 0x2090(r5)
-/* 807C3A8C 80 05 21 00 */ lwz r0, 0x2100(r5)
-/* 807C3A90 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e
-/* 807C3A94 90 05 21 00 */ stw r0, 0x2100(r5)
-/* 807C3A98 80 05 21 00 */ lwz r0, 0x2100(r5)
-/* 807C3A9C 60 00 00 04 */ ori r0, r0, 4
-/* 807C3AA0 90 05 21 00 */ stw r0, 0x2100(r5)
-/* 807C3AA4 38 84 01 38 */ addi r4, r4, 0x138
-/* 807C3AA8 42 00 FF D4 */ bdnz lbl_807C3A7C
-/* 807C3AAC 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onRopeCutStatus__8daE_VA_cFiii.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onRopeCutStatus__8daE_VA_cFiii.s
deleted file mode 100644
index d814b53818..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onRopeCutStatus__8daE_VA_cFiii.s
+++ /dev/null
@@ -1,71 +0,0 @@
-lbl_807C5CF0:
-/* 807C5CF0 94 21 FF D0 */ stwu r1, -0x30(r1)
-/* 807C5CF4 7C 08 02 A6 */ mflr r0
-/* 807C5CF8 90 01 00 34 */ stw r0, 0x34(r1)
-/* 807C5CFC 39 61 00 30 */ addi r11, r1, 0x30
-/* 807C5D00 4B B9 C4 C9 */ bl _savegpr_24
-/* 807C5D04 7C 7B 1B 78 */ mr r27, r3
-/* 807C5D08 7C BC 2B 78 */ mr r28, r5
-/* 807C5D0C 7C DD 33 78 */ mr r29, r6
-/* 807C5D10 1F E4 00 0A */ mulli r31, r4, 0xa
-/* 807C5D14 3B C0 00 00 */ li r30, 0
-lbl_807C5D18:
-/* 807C5D18 7F 1F F2 14 */ add r24, r31, r30
-/* 807C5D1C 2C 1D 00 00 */ cmpwi r29, 0
-/* 807C5D20 40 82 00 14 */ bne lbl_807C5D34
-/* 807C5D24 38 78 10 9C */ addi r3, r24, 0x109c
-/* 807C5D28 7C 1B 18 AE */ lbzx r0, r27, r3
-/* 807C5D2C 60 00 00 10 */ ori r0, r0, 0x10
-/* 807C5D30 7C 1B 19 AE */ stbx r0, r27, r3
-lbl_807C5D34:
-/* 807C5D34 7C 1E E0 00 */ cmpw r30, r28
-/* 807C5D38 40 80 00 6C */ bge lbl_807C5DA4
-/* 807C5D3C 38 78 10 9C */ addi r3, r24, 0x109c
-/* 807C5D40 7C 1B 18 AE */ lbzx r0, r27, r3
-/* 807C5D44 60 00 00 02 */ ori r0, r0, 2
-/* 807C5D48 7C 1B 19 AE */ stbx r0, r27, r3
-/* 807C5D4C 2C 1D 00 00 */ cmpwi r29, 0
-/* 807C5D50 40 82 00 80 */ bne lbl_807C5DD0
-/* 807C5D54 38 18 FF FF */ addi r0, r24, -1
-/* 807C5D58 1C 60 00 0C */ mulli r3, r0, 0xc
-/* 807C5D5C 3B 23 09 94 */ addi r25, r3, 0x994
-/* 807C5D60 7F 3B CA 14 */ add r25, r27, r25
-/* 807C5D64 7F 23 CB 78 */ mr r3, r25
-/* 807C5D68 1C 98 00 0C */ mulli r4, r24, 0xc
-/* 807C5D6C 3B 44 09 94 */ addi r26, r4, 0x994
-/* 807C5D70 7F 5B D2 14 */ add r26, r27, r26
-/* 807C5D74 7F 44 D3 78 */ mr r4, r26
-/* 807C5D78 4B AA AE FD */ bl cLib_targetAngleX__FPC4cXyzPC4cXyz
-/* 807C5D7C 1C 18 00 06 */ mulli r0, r24, 6
-/* 807C5D80 7F 1B 02 14 */ add r24, r27, r0
-/* 807C5D84 B0 78 0E 44 */ sth r3, 0xe44(r24)
-/* 807C5D88 7F 23 CB 78 */ mr r3, r25
-/* 807C5D8C 7F 44 D3 78 */ mr r4, r26
-/* 807C5D90 4B AA AE 75 */ bl cLib_targetAngleY__FPC3VecPC3Vec
-/* 807C5D94 B0 78 0E 46 */ sth r3, 0xe46(r24)
-/* 807C5D98 38 00 00 00 */ li r0, 0
-/* 807C5D9C B0 18 0E 48 */ sth r0, 0xe48(r24)
-/* 807C5DA0 48 00 00 30 */ b lbl_807C5DD0
-lbl_807C5DA4:
-/* 807C5DA4 2C 1D 00 00 */ cmpwi r29, 0
-/* 807C5DA8 40 82 00 18 */ bne lbl_807C5DC0
-/* 807C5DAC 38 78 10 9C */ addi r3, r24, 0x109c
-/* 807C5DB0 7C 1B 18 AE */ lbzx r0, r27, r3
-/* 807C5DB4 60 00 00 04 */ ori r0, r0, 4
-/* 807C5DB8 7C 1B 19 AE */ stbx r0, r27, r3
-/* 807C5DBC 48 00 00 14 */ b lbl_807C5DD0
-lbl_807C5DC0:
-/* 807C5DC0 38 78 10 9C */ addi r3, r24, 0x109c
-/* 807C5DC4 7C 1B 18 AE */ lbzx r0, r27, r3
-/* 807C5DC8 60 00 00 08 */ ori r0, r0, 8
-/* 807C5DCC 7C 1B 19 AE */ stbx r0, r27, r3
-lbl_807C5DD0:
-/* 807C5DD0 3B DE 00 01 */ addi r30, r30, 1
-/* 807C5DD4 2C 1E 00 0A */ cmpwi r30, 0xa
-/* 807C5DD8 41 80 FF 40 */ blt lbl_807C5D18
-/* 807C5DDC 39 61 00 30 */ addi r11, r1, 0x30
-/* 807C5DE0 4B B9 C4 35 */ bl _restgpr_24
-/* 807C5DE4 80 01 00 34 */ lwz r0, 0x34(r1)
-/* 807C5DE8 7C 08 03 A6 */ mtlr r0
-/* 807C5DEC 38 21 00 30 */ addi r1, r1, 0x30
-/* 807C5DF0 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onSwordAtBit__8daE_VA_cFv.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onSwordAtBit__8daE_VA_cFv.s
deleted file mode 100644
index b01bbc252a..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onSwordAtBit__8daE_VA_cFv.s
+++ /dev/null
@@ -1,14 +0,0 @@
-lbl_807C3A1C:
-/* 807C3A1C 80 03 20 64 */ lwz r0, 0x2064(r3)
-/* 807C3A20 60 00 00 01 */ ori r0, r0, 1
-/* 807C3A24 90 03 20 64 */ stw r0, 0x2064(r3)
-/* 807C3A28 80 03 21 9C */ lwz r0, 0x219c(r3)
-/* 807C3A2C 60 00 00 01 */ ori r0, r0, 1
-/* 807C3A30 90 03 21 9C */ stw r0, 0x219c(r3)
-/* 807C3A34 80 03 22 D4 */ lwz r0, 0x22d4(r3)
-/* 807C3A38 60 00 00 01 */ ori r0, r0, 1
-/* 807C3A3C 90 03 22 D4 */ stw r0, 0x22d4(r3)
-/* 807C3A40 80 03 24 0C */ lwz r0, 0x240c(r3)
-/* 807C3A44 60 00 00 01 */ ori r0, r0, 1
-/* 807C3A48 90 03 24 0C */ stw r0, 0x240c(r3)
-/* 807C3A4C 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setActionMode__8daE_VA_cFii.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setActionMode__8daE_VA_cFii.s
deleted file mode 100644
index 9aab96298f..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setActionMode__8daE_VA_cFii.s
+++ /dev/null
@@ -1,45 +0,0 @@
-lbl_807C3918:
-/* 807C3918 94 21 FF E0 */ stwu r1, -0x20(r1)
-/* 807C391C 7C 08 02 A6 */ mflr r0
-/* 807C3920 90 01 00 24 */ stw r0, 0x24(r1)
-/* 807C3924 39 61 00 20 */ addi r11, r1, 0x20
-/* 807C3928 4B B9 E8 B5 */ bl _savegpr_29
-/* 807C392C 7C 7D 1B 78 */ mr r29, r3
-/* 807C3930 7C 9E 23 78 */ mr r30, r4
-/* 807C3934 7C BF 2B 78 */ mr r31, r5
-/* 807C3938 38 60 00 06 */ li r3, 6
-/* 807C393C 88 1D 04 E2 */ lbz r0, 0x4e2(r29)
-/* 807C3940 7C 04 07 74 */ extsb r4, r0
-/* 807C3944 4B 86 A2 21 */ bl dComIfGs_isOneZoneSwitch__Fii
-/* 807C3948 2C 03 00 00 */ cmpwi r3, 0
-/* 807C394C 41 82 00 4C */ beq lbl_807C3998
-/* 807C3950 2C 1E 00 0D */ cmpwi r30, 0xd
-/* 807C3954 41 82 00 44 */ beq lbl_807C3998
-/* 807C3958 2C 1E 00 0E */ cmpwi r30, 0xe
-/* 807C395C 41 82 00 3C */ beq lbl_807C3998
-/* 807C3960 38 60 00 06 */ li r3, 6
-/* 807C3964 88 1D 04 E2 */ lbz r0, 0x4e2(r29)
-/* 807C3968 7C 04 07 74 */ extsb r4, r0
-/* 807C396C 4B 86 A1 95 */ bl dComIfGs_offOneZoneSwitch__Fii
-/* 807C3970 38 60 00 07 */ li r3, 7
-/* 807C3974 88 1D 04 E2 */ lbz r0, 0x4e2(r29)
-/* 807C3978 7C 04 07 74 */ extsb r4, r0
-/* 807C397C 4B 86 A1 E9 */ bl dComIfGs_isOneZoneSwitch__Fii
-/* 807C3980 2C 03 00 00 */ cmpwi r3, 0
-/* 807C3984 40 82 00 14 */ bne lbl_807C3998
-/* 807C3988 38 60 00 07 */ li r3, 7
-/* 807C398C 88 1D 04 E2 */ lbz r0, 0x4e2(r29)
-/* 807C3990 7C 04 07 74 */ extsb r4, r0
-/* 807C3994 4B 86 A1 09 */ bl dComIfGs_onOneZoneSwitch__Fii
-lbl_807C3998:
-/* 807C3998 38 00 00 00 */ li r0, 0
-/* 807C399C 98 1D 13 81 */ stb r0, 0x1381(r29)
-/* 807C39A0 93 DD 13 1C */ stw r30, 0x131c(r29)
-/* 807C39A4 93 FD 13 20 */ stw r31, 0x1320(r29)
-/* 807C39A8 98 1D 13 7F */ stb r0, 0x137f(r29)
-/* 807C39AC 39 61 00 20 */ addi r11, r1, 0x20
-/* 807C39B0 4B B9 E8 79 */ bl _restgpr_29
-/* 807C39B4 80 01 00 24 */ lwz r0, 0x24(r1)
-/* 807C39B8 7C 08 03 A6 */ mtlr r0
-/* 807C39BC 38 21 00 20 */ addi r1, r1, 0x20
-/* 807C39C0 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/useHeapInit__FP10fopAc_ac_c.s b/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/useHeapInit__FP10fopAc_ac_c.s
deleted file mode 100644
index dba5ab0bd6..0000000000
--- a/asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/useHeapInit__FP10fopAc_ac_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_807CD648:
-/* 807CD648 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 807CD64C 7C 08 02 A6 */ mflr r0
-/* 807CD650 90 01 00 14 */ stw r0, 0x14(r1)
-/* 807CD654 4B FF F9 F5 */ bl CreateHeap__8daE_VA_cFv
-/* 807CD658 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 807CD65C 7C 08 03 A6 */ mtlr r0
-/* 807CD660 38 21 00 10 */ addi r1, r1, 0x10
-/* 807CD664 4E 80 00 20 */ blr
diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h
index 9634fb3b09..c2b125c2ac 100644
--- a/include/JSystem/J3DGraphBase/J3DMatBlock.h
+++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h
@@ -617,6 +617,8 @@ struct J3DZModeInfo {
/* 0x3 */ u8 pad;
};
+extern u8 j3dZModeTable[96];
+
/**
* @ingroup jsystem-j3d
*
@@ -629,6 +631,14 @@ struct J3DZMode {
mZModeID = calcZModeID(info.field_0x0, info.field_0x1, info.field_0x2);
}
+ void setCompareEnable(u8 i_compare) {
+ mZModeID = calcZModeID(i_compare, j3dZModeTable[mZModeID * 3 + 1], j3dZModeTable[mZModeID * 3 + 2]);
+ }
+
+ void setUpdateEnable(u8 i_enable) {
+ mZModeID = calcZModeID(j3dZModeTable[mZModeID * 3], j3dZModeTable[mZModeID * 3 + 1], i_enable);
+ }
+
/* 0x0 */ u16 mZModeID;
};
@@ -655,6 +665,8 @@ extern const J3DBlendInfo j3dDefaultBlendInfo;
struct J3DBlend : public J3DBlendInfo {
J3DBlend() : J3DBlendInfo(j3dDefaultBlendInfo) {}
J3DBlend(J3DBlendInfo const& info) : J3DBlendInfo(info) {}
+
+ void setDstFactor(u8 i_factor) { mDstFactor = i_factor; }
};
extern const J3DFogInfo j3dDefaultFogInfo;
@@ -746,7 +758,7 @@ public:
/* 8000DF54 */ virtual J3DAlphaComp* getAlphaComp();
/* 80317370 */ virtual void setBlend(J3DBlend const*);
/* 8000E018 */ virtual void setBlend(J3DBlend const&);
- /* 8000DF4C */ virtual bool getBlend();
+ /* 8000DF4C */ virtual J3DBlend* getBlend();
/* 80317374 */ virtual void setZMode(J3DZMode const*);
/* 8000E014 */ virtual void setZMode(J3DZMode);
/* 8000DF44 */ virtual J3DZMode* getZMode();
@@ -834,7 +846,7 @@ public:
/* 803219E0 */ virtual J3DAlphaComp* getAlphaComp();
/* 803219F4 */ virtual void setBlend(J3DBlend const*);
/* 803219E8 */ virtual void setBlend(J3DBlend const&);
- /* 80321A00 */ virtual bool getBlend();
+ /* 80321A00 */ virtual J3DBlend* getBlend();
/* 80321A14 */ virtual void setZMode(J3DZMode const*);
/* 80321A08 */ virtual void setZMode(J3DZMode);
/* 80321A20 */ virtual J3DZMode* getZMode();
@@ -879,7 +891,7 @@ public:
/* 80321B44 */ virtual J3DAlphaComp* getAlphaComp();
/* 80321B58 */ virtual void setBlend(J3DBlend const*);
/* 80321B4C */ virtual void setBlend(J3DBlend const&);
- /* 80321B64 */ virtual bool getBlend();
+ /* 80321B64 */ virtual J3DBlend* getBlend();
/* 80321B78 */ virtual void setZMode(J3DZMode const*);
/* 80321B6C */ virtual void setZMode(J3DZMode);
/* 80321B84 */ virtual J3DZMode* getZMode();
diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h
index 79545e01e8..94a4ee3fec 100644
--- a/include/JSystem/J3DGraphBase/J3DMaterial.h
+++ b/include/JSystem/J3DGraphBase/J3DMaterial.h
@@ -76,12 +76,16 @@ public:
u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); }
u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); }
J3DTexCoord* getTexCoord(u32 idx) { return mTexGenBlock->getTexCoord(idx); }
+ J3DZMode* getZMode() { return mPEBlock->getZMode(); }
+ J3DBlend* getBlend() { return mPEBlock->getBlend(); }
void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); }
void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); }
void setMaterialAnm(J3DMaterialAnm* i_anm) { mMaterialAnm = i_anm; }
void setCullMode(u8 i_mode) { mColorBlock->setCullMode(i_mode); }
void setTexMtx(u32 idx, J3DTexMtx* mtx) { mTexGenBlock->setTexMtx(idx, mtx); }
+ void setZCompLoc(u8 i_comploc) { mPEBlock->setZCompLoc(i_comploc); }
+ void setMaterialMode(u32 i_mode) { mMaterialMode = i_mode; }
public:
/* 0x04 */ J3DMaterial* mNext;
diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h
index 9e920f4a1a..bbc4eae903 100644
--- a/include/JSystem/JGeometry.h
+++ b/include/JSystem/JGeometry.h
@@ -100,6 +100,10 @@ struct TVec3<f32> : public Vec {
setTVec3f(&i_vec.x, &x);
}
+ TVec3(f32 x, f32 y, f32 z) {
+ set(x, y, z);
+ }
+
TVec3() {}
operator Vec*() { return (Vec*)&x; }
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 5cc382ba63..b286c50cbb 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -449,11 +449,14 @@ public:
/* 0x06 */ CUT_TYPE_FINISH_LEFT,
/* 0x07 */ CUT_TYPE_FINISH_VERTICAL,
/* 0x08 */ CUT_TYPE_TURN_RIGHT,
- /* 0x0A */ CUT_TYPE_JUMP = 10,
+ /* 0x09 */ CUT_TYPE_UNK_9,
+ /* 0x0A */ CUT_TYPE_JUMP,
/* 0x0B */ CUT_TYPE_DASH_UNK_B,
/* 0x0C */ CUT_TYPE_DASH_UNK_C,
/* 0x0D */ CUT_TYPE_DASH_UNK_D,
- /* 0x10 */ CUT_TYPE_AIR = 0x10,
+ /* 0x0E */ CUT_TYPE_UNK_E,
+ /* 0x0F */ CUT_TYPE_UNK_F,
+ /* 0x10 */ CUT_TYPE_AIR,
/* 0x11 */ CUT_TYPE_DASH_UNK_11,
/* 0x12 */ CUT_TYPE_LARGE_JUMP_INIT,
/* 0x13 */ CUT_TYPE_LARGE_JUMP,
@@ -462,30 +465,39 @@ public:
/* 0x16 */ CUT_TYPE_TURN_LEFT,
/* 0x17 */ CUT_TYPE_LARGE_TURN_LEFT,
/* 0x18 */ CUT_TYPE_LARGE_TURN_RIGHT,
- /* 0x1A */ CUT_TYPE_MORTAL_DRAW_A = 0x1A,
- /* 0x1E */ CUT_TYPE_TWIRL = 0x1E, // Back Slice
+ /* 0x19 */ CUT_TYPE_UNK_19,
+ /* 0x1A */ CUT_TYPE_MORTAL_DRAW_A,
+ /* 0x1B */ CUT_TYPE_UNK_1B,
+ /* 0x1C */ CUT_TYPE_UNK_1C,
+ /* 0x1D */ CUT_TYPE_UNK_1D,
+ /* 0x1E */ CUT_TYPE_TWIRL, // Back Slice
/* 0x1F */ CUT_TYPE_MORTAL_DRAW_B,
/* 0x20 */ CUT_TYPE_FINISH_STAB,
/* 0x21 */ CUT_TYPE_COMBO_STAB,
/* 0x22 */ CUT_TYPE_HORSE_UNK_22,
/* 0x23 */ CUT_TYPE_HORSE_UNK_23,
- /* 0x25 */ CUT_TYPE_DASH_UNK_25 = 0x25,
- /* 0x26 */ CUT_TYPE_DASH_UNK_26 = 0x26,
+ /* 0x24 */ CUT_TYPE_UNK_24,
+ /* 0x25 */ CUT_TYPE_DASH_UNK_25,
+ /* 0x26 */ CUT_TYPE_DASH_UNK_26,
/* 0x27 */ CUT_TYPE_DOWN,
- /* 0x29 */ CUT_TYPE_GUARD_ATTACK = 0x29,
+ /* 0x28 */ CUT_TYPE_UNK_28,
+ /* 0x29 */ CUT_TYPE_GUARD_ATTACK,
/* 0x2A */ CUT_TYPE_HORSE_UNK_2A,
/* 0x2B */ CUT_TYPE_HORSE_TURN,
/* 0x2C */ CUT_TYPE_WOLF_B_LEFT,
/* 0x2D */ CUT_TYPE_WOLF_B_RIGHT,
/* 0x2E */ CUT_TYPE_WOLF_B_FRONT,
/* 0x2F */ CUT_TYPE_WOLF_B_BACK,
- /* 0x31 */ CUT_TYPE_WOLF_UNK_31 = 0x31,
- /* 0x32 */ CUT_TYPE_WOLF_UNK_32,
+ /* 0x30 */ CUT_TYPE_WOLF_UNK_30,
+ /* 0x31 */ CUT_TYPE_WOLF_JUMP_S,
+ /* 0x32 */ CUT_TYPE_WOLF_JUMP_S_FINISH,
/* 0x33 */ CUT_TYPE_WOLF_TURN_LEFT,
/* 0x34 */ CUT_TYPE_WOLF_TURN_RIGHT,
- /* 0x36 */ CUT_TYPE_WOLF_LOCK = 0x36,
- /* 0x38 */ CUT_TYPE_DASH_UNK_38 = 0x38,
- /* 0x39 */ CUT_TYPE_WOLF_UNK_39,
+ /* 0x35 */ CUT_TYPE_WOLF_UNK_35,
+ /* 0x36 */ CUT_TYPE_WOLF_LOCK,
+ /* 0x37 */ CUT_TYPE_WOLF_UNK_37,
+ /* 0x38 */ CUT_TYPE_DASH_UNK_38,
+ /* 0x39 */ CUT_TYPE_WOLF_JUMP,
};
static u32 setParamData(int, int, int, int);
@@ -754,6 +766,7 @@ public:
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
+ bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
void setCanoeSlider() { mSpecialMode = 0x2D; }
@@ -863,7 +876,7 @@ public:
inline BOOL i_checkSwordGet();
inline bool i_checkShieldGet() const;
inline static BOOL checkNowWolf();
- inline static BOOL i_checkNowWolf() { return dComIfGp_getLinkPlayer()->checkWolf(); }
+ inline static u32 i_checkNowWolf() { return dComIfGp_getLinkPlayer()->checkWolf(); }
inline bool checkZoraWearFlg() const;
inline bool checkMagicArmorWearFlg() const;
inline static BOOL i_checkFirstMidnaDemo() { return dComIfGs_isEventBit(0xc10); }
@@ -875,6 +888,7 @@ public:
// static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);}
bool checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); }
+ bool checkWolfEnemyHangBiteOwn(fopAc_ac_c* i_actorP) const { return checkWolfEnemyBiteAllOwn(i_actorP); }
bool checkWolfEnemyLeftThrow() const { return checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); }
static daMidna_c* m_midnaActor;
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index 72f55ba6ca..b7b745a8bd 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -1365,6 +1365,10 @@ inline void dComIfGs_onStageBossEnemy() {
g_dComIfG_gameInfo.info.getMemory().getBit().onStageBossEnemy();
}
+inline void dComIfGs_onStageMiddleBoss() {
+ g_dComIfG_gameInfo.info.getMemory().getBit().onStageBossEnemy2();
+}
+
inline s32 dComIfGs_isDungeonItemWarp() {
return g_dComIfG_gameInfo.info.getMemory().getBit().isDungeonItemWarp();
}
@@ -3996,6 +4000,10 @@ inline void dComIfGd_set3DlineMat(mDoExt_3DlineMat_c *param_0) {
g_dComIfG_gameInfo.drawlist.set3DlineMat(param_0);
}
+inline void dComIfGd_set3DlineMatDark(mDoExt_3DlineMat_c *param_0) {
+ g_dComIfG_gameInfo.drawlist.set3DlineMatDark(param_0);
+}
+
inline daPy_py_c* daPy_getLinkPlayerActorClass() {
return dComIfGp_getLinkPlayer();
}
diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h
index f8311e2468..da554aa11c 100644
--- a/include/d/d_drawlist.h
+++ b/include/d/d_drawlist.h
@@ -348,6 +348,12 @@ public:
#endif
}
+ void set3DlineMatDark(mDoExt_3DlineMat_c *param_1) {
+ #ifndef NON_VIRTUAL_3DLINEMAT
+ m3DLineMatSortPacket[param_1->getMaterialID()].setMatDark(param_1);
+ #endif
+ }
+
void peekZdata() { mPeekZ.peekData(); }
void entryZSortListZxlu(J3DPacket* i_packet, cXyz& param_1) {
entryZSortXluDrawList(mDrawBuffers[DB_LIST_Z_XLU], i_packet, param_1);
diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h
index 70740c8fd6..0374757227 100644
--- a/include/d/save/d_save.h
+++ b/include/d/save/d_save.h
@@ -856,6 +856,7 @@ public:
onDungeonItem(STAGE_BOSS_ENEMY);
onDungeonItem(OOCCOO_NOTE);
}
+ void onStageBossEnemy2() { onDungeonItem(STAGE_BOSS_ENEMY_2); }
s32 isStageBossEnemy() const { return isDungeonItem(STAGE_BOSS_ENEMY); }
s32 isStageBossEnemy2() const { return isDungeonItem(STAGE_BOSS_ENEMY_2); }
s32 isStageLife() const { return isDungeonItem(STAGE_LIFE); }
diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h
index 38fd93e00a..b85b9e99f1 100644
--- a/include/f_op/f_op_actor.h
+++ b/include/f_op/f_op_actor.h
@@ -273,6 +273,7 @@ public:
void offWolfBiteDamage() { mFlags &= ~0x40; }
void offCutDownHitFlg() { mFlags &= ~0x2; }
void offDownFlg() { mFlags &= ~0x17; }
+ void offWolfNoLock() { mFlags &= ~0x200; }
void setMidnaBindMode(u8 i_bindMode) { mMidnaBindMode = i_bindMode; }
void setMidnaBindID(u8 i_idx, u32 i_bindID) { mMidnaBindID[i_idx] = i_bindID; }
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index 66a7ecb317..cf4421bd07 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -727,4 +727,76 @@ inline bool fopAcM_CheckFoodStatus(const fopAc_ac_c* actor, fopAcM_FOOD status)
return actor->field_0x567 == status;
}
+/* static inline int setMidnaBindEffect(fopEn_enemy_c* i_actorP, Z2CreatureEnemy* i_creatureP, cXyz* param_2,
+ cXyz* param_3) {
+ static GXColor e_prim[] = {
+ {0xFF, 0x78, 0x00, 0x00},
+ {0xFF, 0x64, 0x78, 0x00},
+ };
+ static GXColor e_env[] = {
+ {0x5A, 0x2D, 0x2D, 0x00},
+ {0x3C, 0x1E, 0x1E, 0x00},
+ };
+
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ fopAc_ac_c* a_this = (fopAc_ac_c*)i_actorP;
+
+ if (player->getMidnaActor() && player->checkWolfLock(a_this)) {
+ cXyz sp48;
+
+ BOOL darkworld_check;
+ if (dKy_darkworld_check()) {
+ darkworld_check = 1;
+ } else {
+ darkworld_check = 0;
+ }
+
+ if (i_actorP->getMidnaBindMode() == 0) {
+ i_actorP->setMidnaBindMode(1);
+
+ csXyz sp68;
+ MTXCopy(player->getMidnaActor()->getMtxHairTop(), mDoMtx_stack_c::get());
+
+ cXyz sp54(nREG_F(8) + 100.0f, nREG_F(9), nREG_F(10));
+ mDoMtx_stack_c::multVec(&sp54, &sp48);
+
+ cXyz sp60 = sp48 - *param_2;
+
+ sp68.y = cM_atan2s(sp60.x, sp60.z);
+ sp68.x = -cM_atan2s(sp60.y, JMAFastSqrt(sp60.x * sp60.x + sp60.z * sp60.z));
+ sp68.z = 0;
+
+ JPABaseEmitter* emitter = dComIfGp_particle_set(
+ 0x29B, param_2, &a_this->tevStr, &sp68, param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this),
+ &e_prim[darkworld_check], &e_env[darkworld_check], NULL);
+
+ if (emitter != NULL) {
+ emitter->setGlobalParticleHeightScale((JREG_F(7) + 0.01f) * sp60.abs());
+ }
+
+ dComIfGp_particle_set(0x29C, param_2, &a_this->tevStr, &a_this->shape_angle,
+ param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check],
+ &e_env[darkworld_check], NULL);
+
+ i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_ON, 0, -1);
+ }
+
+ for (int i = 0; i < 3; i++) {
+ static u16 eff_id[] = {0x29D, 0x29E, 0x29F};
+
+ u32* bind_id = i_actorP->getMidnaBindID(i);
+ *bind_id = dComIfGp_particle_set(*bind_id, eff_id[i], param_2, &a_this->tevStr,
+ &a_this->shape_angle, param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this),
+ &e_prim[darkworld_check], &e_env[darkworld_check], NULL);
+
+ }
+
+ i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_SUS, 0, -1);
+ return 1;
+ }
+
+ i_actorP->setMidnaBindMode(0);
+ return 0;
+} */
+
#endif
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index 996f68a2f1..55b5dc3a93 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -485,6 +485,7 @@ public:
mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; }
void reset() { mp3DlineMat = NULL; }
+ void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); }
/* 80014738 */ void setMat(mDoExt_3DlineMat_c*);
virtual void draw();
@@ -497,7 +498,7 @@ private:
class dKy_tevstr_c;
class mDoExt_3DlineMat1_c : public mDoExt_3DlineMat_c {
public:
- /* 80013360 */ void init(u16, u16, ResTIMG*, int);
+ /* 80013360 */ int init(u16, u16, ResTIMG*, int);
/* 80013FB0 */ void update(int, GXColor&, dKy_tevstr_c*);
/* 8001373C */ void update(int, f32, GXColor&, u16, dKy_tevstr_c*);
/* 80014E7C */ int getMaterialID();
@@ -505,6 +506,7 @@ public:
/* 800135D0 */ void draw();
cXyz* getPos(int i_idx) { return field_0x38[i_idx].field_0x0; }
+ f32* getSize(int i_idx) { return field_0x38[i_idx].field_0x4; }
private:
/* 0x08 */ GXTexObj field_0x8;
diff --git a/include/rel/d/a/e/d_a_e_vt/d_a_e_vt.h b/include/rel/d/a/e/d_a_e_vt/d_a_e_vt.h
index 6adfd6ed30..e94b2cb476 100644
--- a/include/rel/d/a/e/d_a_e_vt/d_a_e_vt.h
+++ b/include/rel/d/a/e/d_a_e_vt/d_a_e_vt.h
@@ -1,27 +1,97 @@
#ifndef D_A_E_VT_H
#define D_A_E_VT_H
-#include "dolphin/types.h"
+#include "Z2AudioLib/Z2Creature.h"
+#include "d/bg/d_bg_s_acch.h"
+#include "d/cc/d_cc_d.h"
+#include "d/cc/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_VA_c
- * @brief ???
- *
- * @details
- *
+ * @brief Death Sword
+ *
+ * @details
+ *
*/
class daE_VA_c : public fopEn_enemy_c {
- /* 807C267C */ void ctrlJoint(J3DJoint*, J3DModel*);
- /* 807C284C */ void JointCallBack(J3DJoint*, int);
+public:
+ enum daE_VA_ACTION {
+ ACTION_DEMO_OP_WAIT_e,
+ ACTION_DEMO_OP_e,
+ ACTION_CLEAR_WAIT_e,
+ ACTION_CLEAR_CHASE_e,
+ ACTION_CLEAR_ATTACK_e,
+ ACTION_TRANS_WAIT_e,
+ ACTION_TRANS_ATTACK_e,
+ ACTION_TRANS_CHASE_e,
+ ACTION_TRANS_DAMAGE_e,
+ ACTION_TRANS_BITE_DAMAGE_e,
+ ACTION_TRANS_THROUGH_e,
+ ACTION_OPACI_WAIT_e,
+ ACTION_OPACI_FLY_e,
+ ACTION_OPACI_DOWN_e,
+ ACTION_OPACI_DOWN_DAMAGE_e,
+ ACTION_OPACI_CHASE_e,
+ ACTION_OPACI_ATTACK_e,
+ ACTION_OPACI_DAMAGE_e,
+ ACTION_OPACI_FLIP_e,
+ ACTION_OPACI_FADE_AWAY_e,
+ ACTION_OPACI_DEATH_e,
+ };
+
+ enum daE_ANM_e {
+ ANM_END_EF_e = 7,
+ ANM_FLOAT_ATTACK_e,
+ ANM_FLOAT_DMG_A_e,
+ ANM_FLOAT_DMG_B_e,
+ ANM_FLOAT_DMG_C_e,
+ ANM_FLOAT_WAIT_e,
+ ANM_INVI_ATTACK_A_e,
+ ANM_INVI_NOTICE_e,
+ ANM_INVI_WAIT_e,
+ ANM_INVI_WALK_e,
+ ANM_OP_ATTACK_A_e,
+ ANM_SUBS_ATTACK_A1_e,
+ ANM_SUBS_ATTACK_A3_e,
+ ANM_SUBS_ATTACK_B_e,
+ ANM_SUBS_AVOID_e,
+ ANM_SUBS_DOWN_e,
+ ANM_SUBS_DOWN_DMG_A1_e,
+ ANM_SUBS_DOWN_DMG_A2_e,
+ ANM_SUBS_DOWN_DIE_e,
+ ANM_SUBS_DOWN_D_STAND_e,
+ ANM_SUBS_DOWN_STAGGER_e,
+ ANM_SUBS_DOWN_STAND_e,
+ ANM_SUBS_DOWN_WAIT_e,
+ ANM_SUBS_FLY_e,
+ ANM_SUBS_INVITE_A_e,
+ ANM_SUBS_INVITE_B_e,
+ ANM_SUBS_INVITE_C_e,
+ ANM_SUBS_STAGGER_e,
+ ANM_SUBS_TO_TRANS_e,
+ ANM_SUBS_WAIT_e,
+ ANM_TRANS_ATTACK_A1_e,
+ ANM_TRANS_ATTACK_A2_e,
+ ANM_TRANS_ATTACK_A3_e,
+ ANM_TRANS_NECK_DMG_e,
+ ANM_TRANS_NECK_PAT_e,
+ ANM_TRANS_STRUGGLE_e,
+ ANM_TRANS_THROUGH_e,
+ ANM_TRANS_WAIT_e,
+ ANM_TRANS_WALK_e,
+ };
+
+ /* 807C267C */ int ctrlJoint(J3DJoint*, J3DModel*);
+ /* 807C284C */ static int JointCallBack(J3DJoint*, int);
/* 807C2898 */ void calcJointNeck();
/* 807C2A4C */ void calcJointSleeve();
- /* 807C3264 */ void draw();
+ /* 807C3264 */ int draw();
/* 807C3818 */ void setBck(int, u8, f32, f32);
- /* 807C38BC */ void checkBck(int);
+ /* 807C38BC */ bool checkBck(int);
/* 807C3918 */ void setActionMode(int, int);
- /* 807C39C4 */ void getWolfCutType();
+ /* 807C39C4 */ int getWolfCutType();
/* 807C3A1C */ void onSwordAtBit();
/* 807C3A50 */ void offSwordShield();
/* 807C3AB0 */ void setTransDamage(cXyz*);
@@ -36,8 +106,8 @@ class daE_VA_c : public fopEn_enemy_c {
/* 807C5188 */ void setMagicEffect(int);
/* 807C5258 */ void setMagicHitEffect(int);
/* 807C5338 */ void demo_skip(int);
- /* 807C53A8 */ void DemoSkipCallBack(void*, int);
- /* 807C53DC */ void getRopeLength(int);
+ /* 807C53A8 */ static int DemoSkipCallBack(void*, int);
+ /* 807C53DC */ f32 getRopeLength(int);
/* 807C53FC */ void calcOpRopePos();
/* 807C5CF0 */ void onRopeCutStatus(int, int, int);
/* 807C5DF4 */ void setVibRope(f32, f32);
@@ -70,20 +140,167 @@ class daE_VA_c : public fopEn_enemy_c {
/* 807CC004 */ void action();
/* 807CC4D0 */ void mtx_set();
/* 807CC864 */ void cc_set();
- /* 807CCD24 */ void execute();
- /* 807CCF64 */ void _delete();
- /* 807CD048 */ void CreateHeap();
- /* 807CD668 */ void create();
+ /* 807CCD24 */ int execute();
+ /* 807CCF64 */ int _delete();
+ /* 807CD048 */ int CreateHeap();
+ /* 807CD668 */ int create();
/* 807CDAD8 */ daE_VA_c();
-private:
- /* 0x5ac */ u8 field_0x5ac[0x10ffc - 0x5ac];
+
+ /* 0x005AC */ request_of_phase_process_class mPhase;
+ /* 0x005B4 */ mDoExt_McaMorfSO* mpMorf;
+ /* 0x005B8 */ mDoExt_McaMorfSO* mpEndEfMorf;
+ /* 0x005BC */ J3DModel* mpWeaponModel;
+ /* 0x005C0 */ J3DModel* mpCardModels[40];
+ /* 0x00660 */ csXyz field_0x660[40];
+ /* 0x00750 */ csXyz field_0x750[40];
+ /* 0x00840 */ csXyz field_0x840[40];
+ /* 0x00930 */ u8 mCardFlags[40];
+ /* 0x00958 */ mDoExt_3DlineMat1_c mRope;
+ /* 0x00994 */ cXyz field_0x994[100];
+ /* 0x00E44 */ csXyz field_0xe44[100];
+ /* 0x0109C */ u8 mRopeCutStatus[10];
+ /* 0x010A6 */ u8 field_0x10A6[0x01100 - 0x010A6];
+ /* 0x01100 */ u8 mDrawRopes;
+ /* 0x01101 */ u8 field_0x1101[0x01104 - 0x01101];
+ /* 0x01104 */ f32 field_0x1104[10];
+ /* 0x0112C */ s16 field_0x112c[10];
+ /* 0x01140 */ cXyz field_0x1140[10];
+ /* 0x011B8 */ f32 field_0x11b8[10];
+ /* 0x011E0 */ cXyz mMagicPos[2];
+ /* 0x011F8 */ cXyz mMagicOldPos[2];
+ /* 0x01210 */ cXyz mMagicSpeed[2];
+ /* 0x01228 */ u8 field_0x1228[3];
+ /* 0x0122C */ cXyz field_0x122c;
+ /* 0x01238 */ csXyz field_0x1238;
+ /* 0x0123E */ s16 field_0x123e;
+ /* 0x01240 */ u8 field_0x1240;
+ /* 0x01244 */ mDoExt_invisibleModel mInvisModel;
+ /* 0x0124C */ mDoExt_brkAnm* mpWeaponBrk;
+ /* 0x01250 */ mDoExt_brkAnm* mpEndEfBrk;
+ /* 0x01254 */ Z2CreatureEnemy mSound;
+ /* 0x012F8 */ cXyz field_0x12f8;
+ /* 0x01304 */ csXyz field_0x1304;
+ /* 0x0130A */ u8 field_0x130A[0x0130C - 0x0130A];
+ /* 0x0130C */ s16 field_0x130c;
+ /* 0x0130E */ s16 field_0x130e;
+ /* 0x01310 */ f32 field_0x1310;
+ /* 0x01314 */ f32 mKankyoColBlend;
+ /* 0x01318 */ f32 field_0x1318;
+ /* 0x0131C */ int mAction;
+ /* 0x01320 */ int mMode;
+ /* 0x01324 */ int field_0x1324;
+ /* 0x01328 */ u8 field_0x1328[0x0132C - 0x01328];
+ /* 0x0132C */ u32 mShadowKey;
+ /* 0x01330 */ s16 field_0x1330;
+ /* 0x01332 */ s16 field_0x1332;
+ /* 0x01334 */ s16 field_0x1334;
+ /* 0x01336 */ s16 field_0x1336;
+ /* 0x01338 */ s16 mAttackSphIFrameTimer;
+ /* 0x0133A */ s16 mNeckSphIFrameTimer;
+ /* 0x0133C */ s16 mBodyCylIFrameTimer;
+ /* 0x0133E */ s16 mOffTgTimer;
+ /* 0x01340 */ int mDemoModeTimer;
+ /* 0x01344 */ int mDownTimer;
+ /* 0x01348 */ int field_0x1348;
+ /* 0x0134C */ int mFadeAwayTimer;
+ /* 0x01350 */ int field_0x1350;
+ /* 0x01354 */ int field_0x1354;
+ /* 0x01358 */ int field_0x1358;
+ /* 0x0135C */ int field_0x135c;
+ /* 0x01360 */ u8 field_0x1360[0x01364 - 0x01360];
+ /* 0x01364 */ int field_0x1364;
+ /* 0x01368 */ int field_0x1368;
+ /* 0x0136C */ u8 field_0x136C[0x01370 - 0x0136C];
+ /* 0x01370 */ int mAlphaType;
+ /* 0x01374 */ int mKankyoColType;
+ /* 0x01378 */ u8 mGlowLightA;
+ /* 0x01379 */ u8 mFootSmokeAlpha;
+ /* 0x0137A */ u8 mEyeAlpha;
+ /* 0x0137B */ u8 field_0x137b;
+ /* 0x0137C */ u8 mGlowLightR;
+ /* 0x0137D */ u8 mGlowLightG;
+ /* 0x0137E */ u8 mGlowLightB;
+ /* 0x0137F */ u8 mGlowBody;
+ /* 0x01380 */ u8 field_0x1380;
+ /* 0x01381 */ u8 field_0x1381;
+ /* 0x01382 */ u8 field_0x1382;
+ /* 0x01383 */ u8 field_0x1383;
+ /* 0x01384 */ u8 field_0x1384;
+ /* 0x01385 */ u8 field_0x1385;
+ /* 0x01386 */ u8 field_0x1386;
+ /* 0x01387 */ u8 mRopesEnabled;
+ /* 0x01388 */ u8 field_0x1388;
+ /* 0x01389 */ u8 mWeponEfMode;
+ /* 0x0138A */ u8 mPlayEndEf;
+ /* 0x0138B */ u8 field_0x138b;
+ /* 0x0138C */ u8 mSwNo;
+ /* 0x0138D */ u8 field_0x138d;
+ /* 0x0138E */ u8 field_0x138e;
+ /* 0x0138F */ u8 field_0x138f;
+ /* 0x01390 */ u8 field_0x1390;
+ /* 0x01391 */ u8 field_0x1391;
+ /* 0x01392 */ u8 field_0x1392;
+ /* 0x01393 */ u8 field_0x1393;
+ /* 0x01394 */ s16 field_0x1394;
+ /* 0x01396 */ s16 field_0x1396;
+ /* 0x01398 */ s16 field_0x1398;
+ /* 0x0139C */ mDoExt_3DlineMat0_c field_0x139c;
+ /* 0x013B8 */ cXyz field_0x13b8;
+ /* 0x013C4 */ cXyz field_0x13c4;
+ /* 0x013D0 */ cXyz field_0x13d0[5];
+ /* 0x0140C */ cXyz field_0x140c[5];
+ /* 0x01448 */ csXyz field_0x1448[5];
+ /* 0x01466 */ csXyz field_0x1466[5];
+ /* 0x01484 */ u8 field_0x1484;
+ /* 0x01485 */ u8 field_0x1485;
+ /* 0x01486 */ u8 field_0x1486;
+ /* 0x01488 */ cXyz mDemoCamCenter;
+ /* 0x01494 */ cXyz mDemoCamEye;
+ /* 0x014A0 */ f32 mDemoCamBank;
+ /* 0x014A4 */ f32 field_0x14a4;
+ /* 0x014A8 */ f32 field_0x14a8;
+ /* 0x014AC */ s16 field_0x14ac;
+ /* 0x014B0 */ f32 field_0x14b0;
+ /* 0x014B4 */ u8 field_0x14B4[0x014B8 - 0x014B4];
+ /* 0x014B8 */ dBgS_AcchCir mAcchCir;
+ /* 0x014F8 */ dBgS_ObjAcch mAcch;
+ /* 0x016D0 */ dBgS_AcchCir mMagicAcchCir[2];
+ /* 0x01750 */ dBgS_ObjAcch mMagicAcch[2];
+ /* 0x01B00 */ dCcD_Stts mBodyCcStts;
+ /* 0x01B3C */ dCcD_Stts field_0x1b3c;
+ /* 0x01B78 */ dCcD_Sph mNeckSph;
+ /* 0x01CB0 */ dCcD_Cyl mBodyCyls[3];
+ /* 0x02064 */ dCcD_Sph mAttackSphs[4];
+ /* 0x02544 */ dCcD_Sph mLineSphs[190];
+ /* 0x10CD4 */ dCcD_Sph mMagicSphs[2];
+ /* 0x10F44 */ dCcU_AtInfo mAtInfo;
+ /* 0x10F68 */ u32 mWeponEffEmtrIDs[3];
+ /* 0x10F74 */ u32 field_0x10f74;
+ /* 0x10F78 */ u32 mFootSmokeEmtrIDs[2];
+ /* 0x10F80 */ u32 field_0x10f80[30];
+ /* 0x10FF8 */ u8 mInitHIO;
};
-STATIC_ASSERT(sizeof(daE_VA_c) == 0x10ffc);
class daE_VA_HIO_c {
+public:
/* 807C25EC */ daE_VA_HIO_c();
- /* 807CE2AC */ ~daE_VA_HIO_c();
-};
+ /* 807CE2AC */ virtual ~daE_VA_HIO_c();
+ /* 0x04 */ s8 field_0x04;
+ /* 0x08 */ f32 mModelSize;
+ /* 0x0C */ f32 mAttackRange;
+ /* 0x10 */ f32 mBiteCount;
+ /* 0x14 */ f32 mCircleAttackRadius;
+ /* 0x18 */ f32 mFadeAwayTime;
+ /* 0x1C */ f32 mDownTime;
+ /* 0x20 */ f32 mDownHP;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 mKRegLightR;
+ /* 0x34 */ f32 mKRegLightG;
+ /* 0x38 */ f32 mKRegLightB;
+ /* 0x3C */ f32 mKRegLightA;
+};
#endif /* D_A_E_VT_H */
diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp
index 852c27b4db..097a4c8b67 100644
--- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp
+++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp
@@ -2177,7 +2177,7 @@ asm void J3DPEBlockFull::setBlend(J3DBlend const* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm bool J3DPEBlockFull::getBlend() {
+asm J3DBlend* J3DPEBlockFull::getBlend() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getBlend__14J3DPEBlockFullFv.s"
}
@@ -2399,7 +2399,7 @@ asm void J3DPEBlockFogOff::setBlend(J3DBlend const* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm bool J3DPEBlockFogOff::getBlend() {
+asm J3DBlend* J3DPEBlockFogOff::getBlend() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getBlend__16J3DPEBlockFogOffFv.s"
}
diff --git a/rel/d/a/e/d_a_e_vt/d_a_e_vt.cpp b/rel/d/a/e/d_a_e_vt/d_a_e_vt.cpp
index 86d4fd41d3..076884e4d2 100644
--- a/rel/d/a/e/d_a_e_vt/d_a_e_vt.cpp
+++ b/rel/d/a/e/d_a_e_vt/d_a_e_vt.cpp
@@ -1,14 +1,79 @@
/**
* @file d_a_e_vt.cpp
- *
-*/
+ * Variant Enemy (Death Sword)
+ */
#include "rel/d/a/e/d_a_e_vt/d_a_e_vt.h"
+#include "JSystem/J3DGraphBase/J3DMaterial.h"
+#include "SSystem/SComponent/c_math.h"
+#include "c/c_damagereaction.h"
+#include "cmath.h"
+#include "d/a/d_a_player.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/s/d_s_play.h"
#include "dol2asm.h"
-#include "d/d_camera.h"
-
-
+static void setMidnaBindEffect(fopEn_enemy_c*, Z2CreatureEnemy*, cXyz*, cXyz*);
+
+#define WL_CUT_TYPE_SMALL 1
+#define WL_CUT_TYPE_JUMP 2
+#define WL_CUT_TYPE_LARGE 3
+
+enum daE_VA_JOINT {
+ JNT_ROOT,
+ JNT_BACKBONE_01,
+ JNT_BACKBONE_02,
+ JNT_ARM_L01,
+ JNT_ARM_L02,
+ JNT_ARM_L03,
+ JNT_ARM_L04,
+ JNT_ARM_L05,
+ JNT_FINGER_LB,
+ JNT_FINGER_LC,
+ JNT_FINGER_LA,
+ JNT_LEFT_COTH_01,
+ JNT_LEFT_COTH_02,
+ JNT_LEFT_COTH_03,
+ JNT_LEFT_COTH_04,
+ JNT_ARM_R01,
+ JNT_ARM_R02,
+ JNT_ARM_R03,
+ JNT_ARM_R04,
+ JNT_ARM_R05,
+ JNT_FINGER_RB,
+ JNT_FINGER_RC,
+ JNT_KEN_1,
+ JNT_KEN_2,
+ JNT_FINGER_RA,
+ JNT_BUST,
+ JNT_NECK_CLOTH,
+ JNT_NECK_01,
+ JNT_HEAD_CLOTH_01,
+ JNT_HEAD_CLOTH_02,
+ JNT_HEAD_CLOTH_03,
+ JNT_HEAD_CLOTH_04,
+ JNT_HEAD_CLOTH_05,
+ JNT_NECK_02,
+ JNT_HEAD,
+ JNT_JOE,
+ JNT_WAIST,
+ JNT_BACK_CLOTH_01,
+ JNT_BACK_CLOTH_02,
+ JNT_BACK_CLOTH_03,
+ JNT_FRONT_CLOTH_01,
+ JNT_FRONT_CLOTH_02,
+ JNT_FRONT_CLOTH_03,
+ JNT_LEG_L01,
+ JNT_LEG_L02,
+ JNT_LEG_L03,
+ JNT_LEG_R01,
+ JNT_LEG_R02,
+ JNT_LEG_R03,
+ JNT_TAIL_CLOTH_01,
+ JNT_TAIL_CLOTH_02,
+ JNT_TAIL_CLOTH_03,
+ JNT_TAIL_CLOTH_04,
+};
//
// Forward References:
@@ -290,7 +355,6 @@ extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
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" u8 mCurrentMtx__6J3DSys[48];
extern "C" extern u8 j3dZModeTable[96];
@@ -501,23 +565,34 @@ SECTION_DATA static u8 eff_id[6 + 2 /* padding */] = {
/* 807CEF40-807CEF80 000038 0040+00 0/1 0/0 0/0 .data cc_vt_neck_src__22@unnamed@d_a_e_vt_cpp@ */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 data_807CEF40[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
+static dCcD_SrcSph cc_vt_neck_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x80000000, 0x3}, 0x0}}, // mObj
+ {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x4}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
+ } // mSphAttr
};
#pragma pop
/* 807CEF80-807CEFC4 000078 0044+00 0/1 0/0 0/0 .data cc_vt_body_src__22@unnamed@d_a_e_vt_cpp@ */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 data_807CEF80[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75,
- 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x43, 0x1E, 0x00, 0x00,
+static dCcD_SrcCyl cc_vt_body_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x43}, 0x75}}, // mObj
+ {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 150.0f, // mRadius
+ 158.0f // mHeight
+ } // mCyl
};
#pragma pop
@@ -525,138 +600,70 @@ SECTION_DATA static u8 data_807CEF80[68] = {
*/
#pragma push
#pragma force_active on
-SECTION_DATA static u8 data_807CEFC4[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D,
- 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
+static dCcD_SrcSph cc_vt_attack_src = {
+ {
+ {0x0, {{0x100000, 0x2, 0xD}, {0xD8FBFDFF, 0x43}, 0x75}}, // mObj
+ {dCcD_SE_METAL, 0x0, 0x1, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x2, 0x0, 0x0, 0x2}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
+ } // mSphAttr
};
#pragma pop
/* 807CF004-807CF044 0000FC 0040+00 0/1 0/0 0/0 .data cc_vt_line_src__22@unnamed@d_a_e_vt_cpp@ */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 data_807CF004[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
+static dCcD_SrcSph cc_vt_line_src = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0xD8FBFDFF, 0x43}, 0x75}}, // mObj
+ {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
+ } // mSphAttr
};
#pragma pop
/* 807CF044-807CF084 00013C 0040+00 0/1 0/0 0/0 .data cc_vt_magic_src__22@unnamed@d_a_e_vt_cpp@ */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 data_807CF044[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D,
- 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
+static dCcD_SrcSph cc_vt_magic_src = {
+ {
+ {0x0, {{0x400, 0x2, 0xD}, {0xD8FBFDFF, 0x0}, 0x0}}, // mObj
+ {0xD, 0x0, 0x1, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph
+ } // mSphAttr
};
#pragma pop
/* 807CF084-807CF0AC 00017C 0027+01 1/1 0/0 0/0 .data va_tag_set_size__22@unnamed@d_a_e_vt_cpp@ */
-SECTION_DATA static u8 data_807CF084[39 + 1 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x01,
- 0x01,
- 0x01,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- 0x02,
- /* padding */
- 0x00,
+SECTION_DATA static u8 va_tag_set_size[39] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02,
};
/* 807CF0AC-807CF0D4 0001A4 0027+01 3/4 0/0 0/0 .data va_tag_set_num__22@unnamed@d_a_e_vt_cpp@ */
-SECTION_DATA static u8 data_807CF0AC[39 + 1 /* padding */] = {
- 0x01,
- 0x0C,
- 0x16,
- 0x1F,
- 0x21,
- 0x2A,
- 0x2B,
- 0x02,
- 0x04,
- 0x0D,
- 0x0F,
- 0x15,
- 0x18,
- 0x20,
- 0x2C,
- 0x03,
- 0x05,
- 0x06,
- 0x0B,
- 0x10,
- 0x17,
- 0x19,
- 0x1A,
- 0x22,
- 0x24,
- 0x29,
- 0x2D,
- 0x34,
- 0x49,
- 0x52,
- 0x36,
- 0x3E,
- 0x54,
- 0x5C,
- 0x39,
- 0x41,
- 0x4C,
- 0x56,
- 0x5E,
- /* padding */
- 0x00,
+SECTION_DATA static u8 va_tag_set_num[39] = {
+ 0x01, 0x0C, 0x16, 0x1F, 0x21, 0x2A, 0x2B, 0x02, 0x04, 0x0D, 0x0F, 0x15, 0x18,
+ 0x20, 0x2C, 0x03, 0x05, 0x06, 0x0B, 0x10, 0x17, 0x19, 0x1A, 0x22, 0x24, 0x29,
+ 0x2D, 0x34, 0x49, 0x52, 0x36, 0x3E, 0x54, 0x5C, 0x39, 0x41, 0x4C, 0x56, 0x5E,
};
/* 807CF0D4-807CF170 0001CC 009C+00 1/1 0/0 0/0 .data va_tag_offset__22@unnamed@d_a_e_vt_cpp@ */
-SECTION_DATA static u8 data_807CF0D4[156] = {
- 0x41, 0xA0, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00,
- 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x41, 0xF0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00,
- 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00,
- 0x41, 0xA0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00,
- 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00,
- 0x41, 0xA0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+SECTION_DATA static f32 va_tag_offset[39] = {
+ 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 0.0f, 40.0f, 0.0f, 30.0f, 10.0f, 0.0f, 0.0f, 20.0f,
+ 0.0f, 10.0f, 20.0f, 40.0f, 0.0f, 20.0f, 0.0f, 0.0f, 20.0f, 0.0f, 10.0f, 0.0f, 0.0f,
+ 20.0f, 10.0f, 20.0f, 30.0f, 0.0f, 10.0f, 20.0f, 0.0f, 0.0f, 10.0f, 20.0f, 30.0f, 0.0f,
};
/* 807CF170-807CF174 000268 0004+00 1/1 0/0 0/0 .data l_color$4364 */
@@ -673,86 +680,61 @@ SECTION_DATA static u8 va_foot_smoke_id[8] = {
};
/* 807CF17C-807CF184 000274 0006+02 1/1 0/0 0/0 .data va_wepon_eff_id1 */
-SECTION_DATA static u8 va_wepon_eff_id1[6 + 2 /* padding */] = {
- 0x85,
- 0xD8,
- 0x85,
- 0xD9,
- 0x85,
- 0xDA,
- /* padding */
- 0x00,
- 0x00,
+SECTION_DATA static u16 va_wepon_eff_id1[] = {
+ 0x85D8,
+ 0x85D9,
+ 0x85DA,
};
/* 807CF184-807CF18C 00027C 0006+02 1/1 0/0 0/0 .data va_wepon_eff_id2 */
-SECTION_DATA static u8 va_wepon_eff_id2[6 + 2 /* padding */] = {
- 0x85,
- 0xC6,
- 0x85,
- 0xC7,
- 0x85,
- 0xC8,
- /* padding */
- 0x00,
- 0x00,
+SECTION_DATA static u16 va_wepon_eff_id2[] = {
+ 0x85C6,
+ 0x85C7,
+ 0x85C8,
};
/* 807CF18C-807CF1A4 000284 0018+00 1/1 0/0 0/0 .data va_bugs_eff_jnt */
-SECTION_DATA static u8 va_bugs_eff_jnt[24] = {
- 0x00, 0x01, 0x00, 0x02, 0x00, 0x22, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07,
- 0x00, 0x10, 0x00, 0x11, 0x00, 0x13, 0x00, 0x2C, 0x00, 0x2F, 0x00, 0x32,
+SECTION_DATA static u16 va_bugs_eff_jnt[] = {
+ 0x01, 0x02, 0x22, 0x04, 0x05, 0x07, 0x10, 0x11, 0x13, 0x2C, 0x2F, 0x32,
};
/* 807CF1A4-807CF1BC 00029C 0018+00 1/1 0/0 0/0 .data va_bugs_eff_id */
-SECTION_DATA static u8 va_bugs_eff_id[24] = {
- 0x85, 0xE1, 0x85, 0xE2, 0x85, 0xE3, 0x85, 0xDB, 0x85, 0xDC, 0x85, 0xDD,
- 0x85, 0xDE, 0x85, 0xDF, 0x85, 0xE0, 0x85, 0xE4, 0x85, 0xE5, 0x85, 0xE6,
+SECTION_DATA static u16 va_bugs_eff_id[] = {
+ 0x85E1, 0x85E2, 0x85E3, 0x85DB, 0x85DC, 0x85DD, 0x85DE, 0x85DF, 0x85E0, 0x85E4, 0x85E5, 0x85E6,
};
/* 807CF1BC-807CF1C4 0002B4 0006+02 1/1 0/0 0/0 .data va_weapon_land_eff_id */
-SECTION_DATA static u8 va_weapon_land_eff_id[6 + 2 /* padding */] = {
- 0x85,
- 0xC9,
- 0x85,
- 0xCA,
- 0x85,
- 0xCB,
- /* padding */
- 0x00,
- 0x00,
+SECTION_DATA static u16 va_weapon_land_eff_id[] = {
+ 0x85C9,
+ 0x85CA,
+ 0x85CB,
};
/* 807CF1C4-807CF1CC 0002BC 0006+02 1/1 0/0 0/0 .data va_magic_eff_id */
-SECTION_DATA static u8 va_magic_eff_id[6 + 2 /* padding */] = {
- 0x88,
- 0x48,
- 0x88,
- 0x49,
- 0x88,
- 0x4A,
- /* padding */
- 0x00,
- 0x00,
+SECTION_DATA static u16 va_magic_eff_id[] = {
+ 0x8848,
+ 0x8849,
+ 0x884A,
};
/* 807CF1CC-807CF1F8 0002C4 002C+00 1/1 0/0 0/0 .data line_pull_power */
-SECTION_DATA static u8 line_pull_power[44] = {
- 0x00, 0x00, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3E, 0x4C, 0xCC, 0xCD, 0x3E, 0x99, 0x99,
- 0x9A, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x33,
- 0x33, 0x33, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x80, 0x00, 0x00,
+SECTION_DATA static f32 line_pull_power[] = {
+ 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f,
};
/* 807CF1F8-807CF200 0002F0 0008+00 1/2 0/0 0/0 .data TAG_VIB_ANGLE */
-SECTION_DATA static u8 TAG_VIB_ANGLE[8] = {
- 0xF8, 0x00, 0x08, 0x00, 0xF0, 0x00, 0x10, 0x00,
+SECTION_DATA static s16 TAG_VIB_ANGLE[] = {
+ -0x800,
+ 0x800,
+ -0x1000,
+ 0x1000,
};
/* 807CF200-807CF210 0002F8 0010+00 0/1 0/0 0/0 .data TAG_VIB_WIDTH */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 TAG_VIB_WIDTH[16] = {
- 0x01, 0xC0, 0x02, 0x80, 0x01, 0x80, 0x02, 0x40, 0x03, 0x80, 0x05, 0x00, 0x03, 0x00, 0x04, 0x80,
+SECTION_DATA static s16 TAG_VIB_WIDTH[] = {
+ 0x1C0, 0x280, 0x180, 0x240, 0x380, 0x500, 0x300, 0x480,
};
#pragma pop
@@ -874,20 +856,20 @@ static actor_method_class l_daE_VA_Method = {
/* 807CF3A4-807CF3D4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_VT */
extern actor_process_profile_definition g_profile_E_VT = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_E_VT, // mProcName
- &g_fpcLf_Method.mBase, // sub_method
- sizeof(daE_VA_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 756, // mPriority
- &l_daE_VA_Method, // sub_method
- 0x00040000, // mStatus
- fopAc_ENEMY_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_E_VT, // mProcName
+ &g_fpcLf_Method.mBase, // sub_method
+ sizeof(daE_VA_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 756, // mPriority
+ &l_daE_VA_Method, // sub_method
+ 0x00040000, // mStatus
+ fopAc_ENEMY_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 807CF3D4-807CF3E0 0004CC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
@@ -965,6 +947,27 @@ SECTION_DATA extern void* __vt__12daE_VA_HIO_c[3] = {
};
/* 807C25EC-807C267C 0000EC 0090+00 1/1 0/0 0/0 .text __ct__12daE_VA_HIO_cFv */
+// matches with literals
+#ifdef NONMATCHING
+daE_VA_HIO_c::daE_VA_HIO_c() {
+ field_0x04 = -1;
+ mModelSize = 1.2f;
+ mAttackRange = 500.0f;
+ mBiteCount = 7.0f;
+ mFadeAwayTime = 2500.0f;
+ mCircleAttackRadius = 1000.0f;
+ mDownTime = 100.0f;
+ mDownHP = 800.0f;
+ field_0x24 = 0.5f;
+ field_0x28 = 3.0f;
+ field_0x2c = -50.0f;
+
+ mKRegLightR = 40.0f;
+ mKRegLightG = 35.0f;
+ mKRegLightB = 82.0f;
+ mKRegLightA = 210.0f;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -973,6 +976,7 @@ asm daE_VA_HIO_c::daE_VA_HIO_c() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/__ct__12daE_VA_HIO_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CF478-807CF47C 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
@@ -1065,7 +1069,15 @@ static u8 lit_1010[1 + 3 /* padding */];
/* 807CF4B4-807CF4B8 -00001 0004+00 2/2 0/0 0/0 .bss None */
/* 807CF4B4 0001+00 data_807CF4B4 @1009 */
/* 807CF4B5 0003+00 data_807CF4B5 None */
-static u8 struct_807CF4B4[4];
+#pragma push
+#pragma force_active on
+static u8 struct_807CF4B4;
+#pragma pop
+
+#pragma push
+#pragma force_active on
+static u8 init_hio;
+#pragma pop
/* 807CF4B8-807CF4C4 000048 000C+00 0/1 0/0 0/0 .bss @3923 */
#pragma push
@@ -1074,37 +1086,121 @@ static u8 lit_3923[12];
#pragma pop
/* 807CF4C4-807CF504 000054 0040+00 17/18 0/0 0/0 .bss l_HIO */
+#ifdef NONMATCHING
+static daE_VA_HIO_c l_HIO;
+#else
static u8 l_HIO[64];
+#endif
/* 807C267C-807C284C 00017C 01D0+00 1/1 0/0 0/0 .text ctrlJoint__8daE_VA_cFP8J3DJointP8J3DModel */
+// matches with HIO
+#ifdef NONMATCHING
+int daE_VA_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
+ int joint_no = i_joint->getJntNo();
+ mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
+
+ switch (joint_no) {
+ case JNT_LEFT_COTH_01:
+ case JNT_LEFT_COTH_02:
+ case JNT_LEFT_COTH_03:
+ case JNT_LEFT_COTH_04:
+ if (field_0x138b) {
+ mDoMtx_stack_c::transS(field_0x140c[joint_no - JNT_LEFT_COTH_01]);
+ mDoMtx_stack_c::YrotM(field_0x130c);
+ mDoMtx_stack_c::ZrotM(field_0x130e);
+ mDoMtx_stack_c::ZrotM(field_0x1448[joint_no - JNT_LEFT_COTH_01].z);
+ mDoMtx_stack_c::YrotM(field_0x1448[joint_no - JNT_LEFT_COTH_01].y);
+ mDoMtx_stack_c::scaleM(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+ }
+ break;
+ case JNT_NECK_01:
+ mDoMtx_stack_c::YrotM(field_0x1398);
+ if (field_0x1391 == 1) {
+ mDoMtx_stack_c::XrotM(field_0x1394);
+ mDoMtx_stack_c::ZrotM(field_0x1396);
+ }
+ break;
+ case JNT_NECK_02:
+ mDoMtx_stack_c::YrotM(field_0x1398);
+ if (field_0x1391 == 2) {
+ mDoMtx_stack_c::XrotM(field_0x1394);
+ }
+ break;
+ case JNT_HEAD:
+ if (field_0x1391 == 2) {
+ mDoMtx_stack_c::ZrotM(field_0x1396);
+ }
+ break;
+ }
+
+ i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get());
+ cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
+asm int daE_VA_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/ctrlJoint__8daE_VA_cFP8J3DJointP8J3DModel.s"
}
#pragma pop
+#endif
/* 807C284C-807C2898 00034C 004C+00 1/1 0/0 0/0 .text JointCallBack__8daE_VA_cFP8J3DJointi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::JointCallBack(J3DJoint* param_0, int param_1) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/JointCallBack__8daE_VA_cFP8J3DJointi.s"
+int daE_VA_c::JointCallBack(J3DJoint* i_joint, int param_1) {
+ if (param_1 == 0) {
+ J3DModel* model = j3dSys.getModel();
+ daE_VA_c* a_this = (daE_VA_c*)model->getUserArea();
+
+ if (a_this != NULL) {
+ a_this->ctrlJoint(i_joint, model);
+ }
+ }
+
+ return 1;
}
-#pragma pop
/* 807C2898-807C2A4C 000398 01B4+00 1/1 0/0 0/0 .text calcJointNeck__8daE_VA_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::calcJointNeck() {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointNeck__8daE_VA_cFv.s"
+void daE_VA_c::calcJointNeck() {
+ csXyz sp18;
+
+ if (field_0x1391 != 0) {
+ s16 angleY_to_player = fopAcM_searchPlayerAngleY(this) - shape_angle.y;
+ if (angleY_to_player > 0x3000) {
+ angleY_to_player = 0x3000;
+ }
+ if (angleY_to_player < -0x3000) {
+ angleY_to_player = -0x3000;
+ }
+ cLib_addCalcAngleS(&field_0x1394, angleY_to_player, 8, 0x800, 0x40);
+
+ s16 angleX_to_player = 0x1400 - fopAcM_searchPlayerAngleX(this);
+ if (angleX_to_player > 0x3000) {
+ angleX_to_player = 0x3000;
+ }
+ if (angleX_to_player < -0x3000) {
+ angleX_to_player = -0x3000;
+ }
+ cLib_addCalcAngleS(&field_0x1396, angleX_to_player, 8, 0x800, 0x40);
+
+ if (checkBck(ANM_SUBS_INVITE_A_e) || checkBck(ANM_SUBS_INVITE_B_e)) {
+ cLib_addCalcAngleS(&field_0x1398, -0x800, 8, 0x80, 0x40);
+ } else if (checkBck(ANM_SUBS_INVITE_C_e)) {
+ cLib_addCalcAngleS(&field_0x1398, -0x1800, 8, 0x80, 0x40);
+ } else {
+ cLib_addCalcAngleS(&field_0x1398, -0x1800, 8, 0x100, 0x40);
+ }
+
+ field_0x1392 = field_0x1391;
+ } else {
+ field_0x1391 = field_0x1392;
+ cLib_addCalcAngleS(&field_0x1394, 0, 8, 0x100, 0x40);
+ cLib_addCalcAngleS(&field_0x1396, 0, 8, 0x100, 0x40);
+ cLib_addCalcAngleS(&field_0x1398, 0, 8, 0x100, 0x40);
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 807CED08-807CED0C 000060 0004+00 0/1 0/0 0/0 .rodata @4314 */
@@ -1165,14 +1261,151 @@ COMPILER_STRIP_GATE(0x807CED28, &lit_4322);
#pragma pop
/* 807C2A4C-807C3264 00054C 0818+00 1/1 0/0 0/0 .text calcJointSleeve__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::calcJointSleeve() {
+ csXyz sp128;
+ cXyz sp90(field_0x13b8);
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_LEFT_COTH_01));
+ mDoMtx_stack_c::multVecZero(&field_0x13b8);
+ mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &sp128);
+
+ f32 anm_frame = mpMorf->getFrame();
+ if ((checkBck(ANM_SUBS_ATTACK_A1_e) && anm_frame >= 74.0f) ||
+ (checkBck(ANM_SUBS_ATTACK_A3_e) && anm_frame <= 11.0f) ||
+ (checkBck(ANM_TRANS_ATTACK_A1_e) && anm_frame >= 60.0f) ||
+ checkBck(ANM_TRANS_ATTACK_A2_e) || (checkBck(ANM_TRANS_ATTACK_A3_e) && anm_frame <= 60.0f))
+ {
+ sp128.y = field_0x1466[0].y;
+ }
+
+ field_0x13c4 = field_0x13b8 - sp90;
+
+ cXyz sp9C;
+ cXyz spA8;
+ cXyz spB4;
+
+ field_0x13d0[0] = field_0x13c4;
+ field_0x140c[0] = field_0x13b8;
+ cXyz* line_pos = field_0x139c.getPos(0);
+ *line_pos = field_0x140c[0];
+ field_0x1466[0].set(-0x8000, sp128.y, -0x8000);
+ line_pos++;
+ for (int i = 1; i < 5; i++, line_pos++) {
+ f32 var_f29;
+ if (i == 1) {
+ var_f29 = ZREG_F(0) + 80.0f;
+ }
+ if (i == 2) {
+ var_f29 = ZREG_F(1) + 80.0f;
+ }
+ if (i == 3) {
+ var_f29 = ZREG_F(2) + 50.0f;
+ }
+ if (i == 4) {
+ var_f29 = ZREG_F(3) + 50.0f;
+ }
+
+ if (field_0x140c[i].abs(field_0x140c[i - 1]) > (var_f29 + 30.0f) + nREG_F(3)) {
+ spA8 = field_0x140c[i - 1] - field_0x140c[i];
+ f32 temp_f28 = spA8.abs();
+
+ spA8.normalizeZP();
+ spA8 = spA8 * (temp_f28 - var_f29);
+
+ field_0x13d0[i].x = spA8.x;
+ field_0x13d0[i].z = spA8.z;
+
+ if (std::abs(field_0x140c[i].y - field_0x140c[i - 1].y) > var_f29) {
+ field_0x13d0[i].y = spA8.y;
+ } else if (spA8.y >= 0.0f) {
+ if (field_0x13d0[i].y < spA8.y) {
+ field_0x13d0[i].y = spA8.y;
+ }
+ } else {
+ field_0x13d0[i].y -= l_HIO.field_0x28;
+
+ if (field_0x140c[i].y < field_0x140c[i - 1].y - (var_f29 * 0.8f)) {
+ if (field_0x13d0[i].y <= -10.0f) {
+ field_0x13d0[i].y = -10.0f;
+ }
+ } else if (field_0x13d0[i].y <= l_HIO.field_0x2c) {
+ field_0x13d0[i].y = l_HIO.field_0x2c;
+ }
+ }
+ } else {
+ field_0x13d0[i].x *= l_HIO.field_0x24;
+ field_0x13d0[i].z *= l_HIO.field_0x24;
+ field_0x13d0[i].y -= l_HIO.field_0x28;
+
+ if (field_0x140c[i].y < field_0x140c[i - 1].y - (var_f29 * 0.8f)) {
+ if (field_0x13d0[i].y <= -10.0f) {
+ field_0x13d0[i].y = -10.0f;
+ }
+ } else if (field_0x13d0[i].y <= l_HIO.field_0x2c) {
+ field_0x13d0[i].y = l_HIO.field_0x2c;
+ }
+ }
+
+ if (field_0x1354 != 0) {
+ field_0x13d0[i].y -= l_HIO.field_0x28;
+
+ if (field_0x13d0[i].y <= l_HIO.field_0x2c) {
+ field_0x13d0[i].y = l_HIO.field_0x2c;
+ }
+ }
+
+ field_0x140c[i] += field_0x13d0[i];
+ if (field_0x140c[i].y < 0.0f) {
+ field_0x13d0[i] *= 0.1f;
+ field_0x13d0[i].y = 0.0f;
+ field_0x140c[i].y = 0.0f;
+ }
+
+ spA8 = field_0x140c[i] - field_0x140c[i - 1];
+ spA8.normalizeZP();
+
+ field_0x140c[i] = field_0x140c[i - 1] + (spA8 * var_f29);
+
+ line_pos[0] = field_0x140c[i];
+ spA8 = line_pos[0] - line_pos[-1];
+
+ mDoMtx_stack_c::YrotS(-sp128.y);
+ mDoMtx_stack_c::transM(spA8);
+ mDoMtx_stack_c::multVecZero(&spA8);
+
+ field_0x1466[i].x = cM_atan2s(spA8.z, spA8.y);
+ field_0x1466[i].y = cM_atan2s(spA8.x, spA8.z);
+ field_0x1466[i].z = cM_atan2s(spA8.x, spA8.y);
+ }
+
+ field_0x130c = sp128.y;
+ field_0x130e = -0x4000;
+
+ cXyz sp80;
+ cXyz sp74;
+ cXyz sp68;
+ cXyz sp5C;
+
+ for (int i = 0; i < 4; i++) {
+ field_0x1448[i].y = field_0x1466[i + 1].x - field_0x1466[0].x;
+ field_0x1448[i].z = field_0x1466[0].z - field_0x1466[i + 1].z;
+
+ if (abs(field_0x1448[i].z) >= 0x4000) {
+ field_0x1448[i].y = 0x8000 - field_0x1448[i].y;
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::calcJointSleeve() {
- nofralloc
+asm void daE_VA_c::calcJointSleeve(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcJointSleeve__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED2C-807CED30 000084 0004+00 0/1 0/0 0/0 .rodata @4452 */
@@ -1206,24 +1439,132 @@ COMPILER_STRIP_GATE(0x807CED38, &lit_4458);
#pragma pop
/* 807C3264-807C37F8 000D64 0594+00 1/1 0/0 0/0 .text draw__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+int daE_VA_c::draw() {
+ J3DModel* model = mpMorf->getModel();
+ g_env_light.settingTevStruct(0, &current.pos, &tevStr);
+
+ if (!mPlayEndEf) {
+ if (!mRopesEnabled) {
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+
+ J3DModelData* modelData = model->getModelData();
+ for (u16 i = 0; i < modelData->getMaterialNum(); i++) {
+ J3DMaterial* material = modelData->getMaterialNodePointer(i);
+
+ material->getZMode()->setUpdateEnable(1);
+ material->setZCompLoc(1);
+ material->setMaterialMode(4);
+
+ if (i == 0) {
+ material->getTevKColor(3)->a = mEyeAlpha;
+ } else {
+ material->getTevKColor(0)->r = mGlowLightR;
+ material->getTevKColor(0)->g = mGlowLightG;
+ material->getTevKColor(0)->b = mGlowLightB;
+
+ if (!field_0x1318) {
+ material->getTevColor(0)->r = field_0x1380;
+ material->getTevColor(0)->g = field_0x1380;
+ material->getTevColor(0)->b = field_0x1380;
+ } else {
+ material->getTevColor(0)->r = field_0x1318;
+ material->getTevColor(0)->g = field_0x1318;
+ material->getTevColor(0)->b = field_0x1318;
+ }
+
+ material->getTevKColor(3)->a = mGlowLightA;
+ }
+
+ J3DBlend* blend = material->getBlend();
+ if (mAlphaType >= 2) {
+ blend->setDstFactor(5);
+ } else {
+ blend->setDstFactor(1);
+ }
+ }
+
+ mInvisModel.entryDL(NULL);
+ }
+ } else {
+ model = mpEndEfMorf->getModel();
+ g_env_light.setLightTevColorType_MAJI(model, &tevStr);
+ mpEndEfBrk->entry(model->getModelData());
+ mpEndEfMorf->entryDL();
+ }
+
+ f32 var_f31 = tevStr.field_0x344;
+ if (mAlphaType == 2) {
+ f32 temp_f2 = (1000.0f - current.pos.y) / 1000.0f;
+ if (temp_f2 < 0.0f) {
+ temp_f2 = 0.0f;
+ }
+
+ if (temp_f2 > 1.0f) {
+ temp_f2 = 1.0f;
+ }
+
+ tevStr.field_0x344 = temp_f2 * ((var_f31 * (f32)mGlowLightA) / 255.0f);
+ if (tevStr.field_0x344 > 0.4f) {
+ tevStr.field_0x344 = 0.4f;
+ }
+
+ mShadowKey = dComIfGd_setShadow(mShadowKey, 0, model, &current.pos, nREG_F(19) + 2000.0f,
+ 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd,
+ &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ }
+
+ if (mpWeaponModel != NULL && field_0x1240 != 2) {
+ g_env_light.setLightTevColorType_MAJI(mpWeaponModel, &tevStr);
+ mpWeaponBrk->entry(mpWeaponModel->getModelData());
+ fopAcM_setEffectMtx(this, mpWeaponModel->getModelData());
+ mDoExt_modelUpdateDL(mpWeaponModel);
+
+ if (mAlphaType == 2) {
+ dComIfGd_addRealShadow(mShadowKey, mpWeaponModel);
+ } else {
+ tevStr.field_0x344 = var_f31;
+ mShadowKey =
+ dComIfGd_setShadow(mShadowKey, 1, mpWeaponModel, &current.pos, nREG_F(19) + 2000.0f,
+ 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0,
+ 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ }
+ }
+
+ if (mRopesEnabled) {
+ if (mDrawRopes) {
+ static GXColor l_color = {0x64, 0x46, 0x00, 0xFF};
+
+ mRope.update(110, l_color, &tevStr);
+ dComIfGd_set3DlineMatDark(&mRope);
+ }
+
+ for (int i = 0; i < 40; i++) {
+ if (!(mCardFlags[i] & 0x80)) {
+ g_env_light.setLightTevColorType_MAJI(mpCardModels[i], &tevStr);
+ mDoExt_modelUpdateDL(mpCardModels[i]);
+ }
+ }
+ }
+
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::draw() {
+asm int daE_VA_c::draw() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/draw__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C37F8-807C3818 0012F8 0020+00 1/0 0/0 0/0 .text daE_VA_Draw__FP8daE_VA_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daE_VA_Draw(daE_VA_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Draw__FP8daE_VA_c.s"
+static int daE_VA_Draw(daE_VA_c* i_this) {
+ return i_this->draw();
}
-#pragma pop
/* ############################################################################################## */
/* 807CED40-807CED44 000098 0004+00 1/3 0/0 0/0 .rodata @4473 */
@@ -1237,6 +1578,13 @@ SECTION_DEAD static char const* const stringBase_807CEEFC = "E_VA";
#pragma pop
/* 807C3818-807C38BC 001318 00A4+00 19/19 0/0 0/0 .text setBck__8daE_VA_cFiUcff */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setBck(int i_anmID, u8 i_attr, f32 i_morf, f32 i_rate) {
+ mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_VA", i_anmID), i_attr, i_morf, i_rate,
+ 0.0f, -1.0f);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1245,58 +1593,91 @@ asm void daE_VA_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setBck__8daE_VA_cFiUcff.s"
}
#pragma pop
+#endif
/* 807C38BC-807C3918 0013BC 005C+00 8/8 0/0 0/0 .text checkBck__8daE_VA_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::checkBck(int param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/checkBck__8daE_VA_cFi.s"
+bool daE_VA_c::checkBck(int i_anmID) {
+ J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes("E_VA", i_anmID);
+ return mpMorf->getAnm() == pbck ? TRUE : FALSE;
}
-#pragma pop
/* 807C3918-807C39C4 001418 00AC+00 21/21 0/0 0/0 .text setActionMode__8daE_VA_cFii */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::setActionMode(int param_0, int param_1) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setActionMode__8daE_VA_cFii.s"
+void daE_VA_c::setActionMode(int i_action, int i_mode) {
+ if (dComIfGs_isOneZoneSwitch(6, fopAcM_GetRoomNo(this)) && i_action != ACTION_OPACI_DOWN_e &&
+ i_action != ACTION_OPACI_DOWN_DAMAGE_e)
+ {
+ dComIfGs_offOneZoneSwitch(6, fopAcM_GetRoomNo(this));
+
+ if (!dComIfGs_isOneZoneSwitch(7, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onOneZoneSwitch(7, fopAcM_GetRoomNo(this));
+ }
+ }
+
+ field_0x1381 = 0;
+ mAction = i_action;
+ mMode = i_mode;
+ mGlowBody = 0;
}
-#pragma pop
/* 807C39C4-807C3A1C 0014C4 0058+00 1/1 0/0 0/0 .text getWolfCutType__8daE_VA_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::getWolfCutType() {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getWolfCutType__8daE_VA_cFv.s"
+int daE_VA_c::getWolfCutType() {
+ switch (daPy_getPlayerActorClass()->getCutType()) {
+ case daPy_py_c::CUT_TYPE_WOLF_B_LEFT:
+ case daPy_py_c::CUT_TYPE_WOLF_B_RIGHT:
+ return WL_CUT_TYPE_SMALL;
+ case daPy_py_c::CUT_TYPE_WOLF_JUMP:
+ return WL_CUT_TYPE_JUMP;
+ case daPy_py_c::CUT_TYPE_WOLF_B_FRONT:
+ case daPy_py_c::CUT_TYPE_WOLF_B_BACK:
+ case daPy_py_c::CUT_TYPE_WOLF_UNK_30:
+ case daPy_py_c::CUT_TYPE_WOLF_JUMP_S:
+ case daPy_py_c::CUT_TYPE_WOLF_JUMP_S_FINISH:
+ case daPy_py_c::CUT_TYPE_WOLF_TURN_LEFT:
+ case daPy_py_c::CUT_TYPE_WOLF_TURN_RIGHT:
+ case daPy_py_c::CUT_TYPE_WOLF_UNK_35:
+ case daPy_py_c::CUT_TYPE_WOLF_LOCK:
+ return WL_CUT_TYPE_LARGE;
+ }
+
+ return 0;
}
-#pragma pop
/* 807C3A1C-807C3A50 00151C 0034+00 3/3 0/0 0/0 .text onSwordAtBit__8daE_VA_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::onSwordAtBit() {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onSwordAtBit__8daE_VA_cFv.s"
+void daE_VA_c::onSwordAtBit() {
+ mAttackSphs[0].OnAtSetBit();
+ mAttackSphs[1].OnAtSetBit();
+ mAttackSphs[2].OnAtSetBit();
+ mAttackSphs[3].OnAtSetBit();
}
-#pragma pop
/* 807C3A50-807C3AB0 001550 0060+00 3/3 0/0 0/0 .text offSwordShield__8daE_VA_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::offSwordShield() {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/offSwordShield__8daE_VA_cFv.s"
+void daE_VA_c::offSwordShield() {
+ if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_WOLF_JUMP) {
+ mOffTgTimer = 3;
+
+ for (int i = 0; i < 4; i++) {
+ mAttackSphs[i].OffCoSetBit();
+ mAttackSphs[i].OffTgShield();
+ mAttackSphs[i].OnTgNoHitMark();
+ }
+ }
}
-#pragma pop
/* 807C3AB0-807C3B58 0015B0 00A8+00 1/1 0/0 0/0 .text setTransDamage__8daE_VA_cFP4cXyz */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setTransDamage(cXyz* param_0) {
+ u16 hitmark;
+ if (field_0x138f >= 4)
+ hitmark = 3;
+ else
+ hitmark = 1;
+
+ dComIfGp_setHitMark(hitmark, this, param_0, NULL, NULL, 0);
+ dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f));
+ setActionMode(ACTION_TRANS_DAMAGE_e, 0);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1305,8 +1686,235 @@ asm void daE_VA_c::setTransDamage(cXyz* param_0) {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setTransDamage__8daE_VA_cFP4cXyz.s"
}
#pragma pop
+#endif
/* 807C3B58-807C440C 001658 08B4+00 1/1 0/0 0/0 .text damage_check__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::damage_check() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ int cut_type = getWolfCutType();
+ mBodyCcStts.Move();
+
+ if (mAttackSphIFrameTimer == 0) {
+ for (int i = 0; i < 4; i++) {
+ if (mAttackSphs[i].ChkTgHit()) {
+ if (mAttackSphs[i].GetTgHitObj()->ChkAtType(0xD8000000)) {
+ mAttackSphIFrameTimer = 20;
+ } else {
+ mAttackSphIFrameTimer = 10;
+ }
+
+ def_se_set(&mSound, mAttackSphs[i].GetTgHitObj(), 0x2A, this);
+ mAttackSphs[i].ClrTgHit();
+ }
+ }
+ }
+
+ if (mRopesEnabled) {
+ if (mAction == ACTION_DEMO_OP_WAIT_e) {
+ for (int i = 0; i < 190; i++) {
+ if (mLineSphs[i].ChkTgHit()) {
+ if (mLineSphs[i].GetTgHitObj()->ChkAtType(AT_TYPE_NORMAL_SWORD)) {
+ setActionMode(ACTION_DEMO_OP_e, 0);
+ } else {
+ int var_r24 = i / 19;
+ field_0x1104[var_r24] = nREG_F(17) + 1.0f;
+ field_0x112c[var_r24] = 0;
+ setVibTag(0, var_r24);
+ }
+ }
+ }
+ }
+ } else {
+ if (mNeckSphIFrameTimer == 0 && mNeckSph.ChkTgHit()) {
+ mAtInfo.mpCollider = mNeckSph.GetTgHitObj();
+
+ if (mAtInfo.mpCollider->ChkAtType(0xD8000000)) {
+ if (cut_type == WL_CUT_TYPE_SMALL) {
+ mNeckSphIFrameTimer = 15;
+ } else {
+ mNeckSphIFrameTimer = 20;
+ }
+ } else {
+ mNeckSphIFrameTimer = 10;
+ }
+
+ if (mAtInfo.mAttackPower <= 1) {
+ mNeckSphIFrameTimer = KREG_S(8) + 10;
+ }
+
+ mOffTgTimer = mNeckSphIFrameTimer;
+
+ if (cut_type != WL_CUT_TYPE_SMALL &&
+ mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) &&
+ player->onWolfEnemyHangBite(this))
+ {
+ setActionMode(ACTION_TRANS_BITE_DAMAGE_e, 0);
+ mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 31);
+ mBodyCylIFrameTimer = 20;
+ return;
+ }
+
+ if (mAlphaType == 1 && mGlowBody != 0) {
+ mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 32);
+ setTransDamage(mNeckSph.GetTgHitPosP());
+ return;
+ }
+
+ if (cut_type == WL_CUT_TYPE_JUMP) {
+ setActionMode(ACTION_TRANS_THROUGH_e, 0);
+ mNeckSph.ClrTgHit();
+ return;
+ }
+
+ mNeckSphIFrameTimer = 0;
+ mOffTgTimer = 0;
+ }
+
+ if (mBodyCylIFrameTimer == 0) {
+ BOOL body_hit = false;
+ dCcD_Cyl hit_cyl;
+
+ if (mBodyCyls[0].ChkTgHit()) {
+ mAtInfo.mpCollider = mBodyCyls[0].GetTgHitObj();
+ body_hit = true;
+ hit_cyl = mBodyCyls[0];
+ }
+
+ if (mBodyCyls[1].ChkTgHit()) {
+ mAtInfo.mpCollider = mBodyCyls[1].GetTgHitObj();
+ body_hit = true;
+ hit_cyl = mBodyCyls[1];
+ }
+
+ if (body_hit) {
+ if (mAlphaType != 2 && mAtInfo.mpCollider->ChkAtType(0xD8000000) && mGlowBody == 0)
+ {
+ mBodyCyls[0].ClrTgHit();
+ mBodyCyls[1].ClrTgHit();
+ return;
+ }
+
+ mAtInfo.field_0x18 = 0;
+ health = 100;
+ cc_at_check(this, &mAtInfo);
+ field_0x1368 = 100 - health;
+
+ if (mAtInfo.mpCollider->ChkAtType(0xD8000000)) {
+ mBodyCylIFrameTimer = 20;
+ } else {
+ mBodyCylIFrameTimer = 10;
+ }
+
+ if (mAtInfo.mAttackPower <= 1) {
+ mBodyCylIFrameTimer = KREG_S(8) + 10;
+ }
+
+ mOffTgTimer = mBodyCylIFrameTimer;
+
+ if (mAlphaType == 1) {
+ setTransDamage(hit_cyl.GetTgHitPosP());
+ } else if (mAlphaType == 2) {
+ if (field_0x1381 == 0) {
+ field_0x1385 = 0;
+
+ if (mAction == ACTION_OPACI_FLY_e) {
+ if (mAtInfo.mpCollider->ChkAtType(0x16060)) {
+ setActionMode(ACTION_OPACI_DAMAGE_e, 0);
+ }
+ } else if (mAtInfo.mpCollider->ChkAtType(0x14050)) {
+ if (field_0x1386 != 0) {
+ setActionMode(ACTION_OPACI_DOWN_DAMAGE_e, 2);
+ mDownTimer = l_HIO.mDownTime;
+ field_0x1381 = 1;
+ } else {
+ dComIfGp_getVibration().StopQuake(31);
+ setActionMode(ACTION_OPACI_DAMAGE_e, 10);
+ }
+ } else if (mAtInfo.mAttackPower != 0) {
+ setActionMode(ACTION_OPACI_DOWN_e, 0);
+ field_0x1381 = 1;
+ }
+ } else {
+ BOOL var_r26 = false;
+
+ if (player->getCutCount() >= 4) {
+ if (field_0x1383 != 0) {
+ var_r26 = true;
+ }
+ } else if (((dCcD_GObjInf*)mAtInfo.mpCollider)->GetAtSpl() == 1) {
+ field_0x1385++;
+
+ if (field_0x1385 >= 2) {
+ var_r26 = true;
+ }
+ }
+
+ int var_r29 = 0;
+
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_NORMAL_SWORD)) {
+ if (mAtInfo.mpCollider->GetAtAtp() >= 4) {
+ if (player->checkMasterSwordEquip()) {
+ if (player->getSwordAtUpTime() != 0) {
+ var_r29 = 6;
+ } else {
+ var_r29 = 2;
+ }
+ } else if (player->getSwordAtUpTime() != 0) {
+ var_r29 = 2;
+ } else {
+ var_r29 = 1;
+ }
+ } else if (player->checkMasterSwordEquip()) {
+ if (player->getSwordAtUpTime() != 0 || var_r26) {
+ var_r29 = 2;
+ }
+ } else if (var_r26) {
+ if (player->getSwordAtUpTime() != 0) {
+ var_r29 = 2;
+ } else {
+ var_r29 = 1;
+ }
+ }
+ } else if (mAtInfo.mpCollider->ChkAtType(0xD8000000) &&
+ (((dCcD_GObjInf*)mAtInfo.mpCollider)->GetAtSpl() == 1 ||
+ mAtInfo.mpCollider->GetAtAtp() >= 4))
+ {
+ var_r29 = 1;
+ }
+
+ field_0x1383++;
+
+ if (var_r29 != 0) {
+ field_0x1385 = 0;
+ field_0x1384 += var_r29;
+ setActionMode(ACTION_OPACI_DOWN_e, 5);
+ } else if (mAtInfo.mpCollider->ChkAtType(0x4050)) {
+ setActionMode(ACTION_OPACI_DOWN_DAMAGE_e, 2);
+ } else {
+ if (player->getCutCount() > 1) {
+ field_0x1382 ^= 1;
+ } else if (cM_rnd() < 0.5f) {
+ field_0x1382 = 0;
+ } else {
+ field_0x1382 = 1;
+ }
+
+ setActionMode(ACTION_OPACI_DOWN_DAMAGE_e, field_0x1382);
+ }
+
+ field_0x1381 = 1;
+ }
+ }
+
+ mBodyCyls[0].ClrTgHit();
+ mBodyCyls[1].ClrTgHit();
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1315,6 +1923,7 @@ asm void daE_VA_c::damage_check() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/damage_check__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C440C-807C44A0 001F0C 0094+00 1/1 0/0 0/0 .text __as__8dCcD_CylFRC8dCcD_Cyl */
#pragma push
@@ -1372,14 +1981,28 @@ extern "C" asm void __dt__8cM3dGAabFv() {
#pragma pop
/* 807C4844-807C49B4 002344 0170+00 1/1 0/0 0/0 .text setFireEffect__8daE_VA_cFi */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setFireEffect(int param_0) {
+ cXyz scale(1.0f, 1.0f, 1.0f);
+ int idx = param_0 * 3;
+
+ field_0x10f80[idx] =
+ dComIfGp_particle_set(field_0x10f80[idx], 0x3AD, &field_0x1140[param_0], NULL, &scale);
+ field_0x10f80[idx + 1] =
+ dComIfGp_particle_set(field_0x10f80[idx + 1], 0x3AF, &field_0x1140[param_0], NULL, &scale);
+ field_0x10f80[idx + 2] =
+ dComIfGp_particle_set(field_0x10f80[idx + 2], 0x3AE, &field_0x1140[param_0], NULL, &scale);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::setFireEffect(int param_0) {
- nofralloc
+asm void daE_VA_c::setFireEffect(int param_0){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setFireEffect__8daE_VA_cFi.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED44-807CED48 00009C 0004+00 0/0 0/0 0/0 .rodata @5085 */
@@ -1394,14 +2017,46 @@ SECTION_RODATA static f32 const lit_5146 = 10.0f;
COMPILER_STRIP_GATE(0x807CED48, &lit_5146);
/* 807C49B4-807C4B54 0024B4 01A0+00 1/1 0/0 0/0 .text setFootEffect__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setFootEffect() {
+ if (!field_0x1388) {
+ int var_r6 = 0;
+ if (current.pos.y < 10.0f) {
+ var_r6 = 2;
+ }
+
+ cXyz pos(current.pos);
+ cXyz scale(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ static u16 va_foot_smoke_id[] = {0x8891, 0x8892, 0x85C4, 0x85C5};
+ mFootSmokeEmtrIDs[0] =
+ dComIfGp_particle_set(mFootSmokeEmtrIDs[0], va_foot_smoke_id[var_r6], &pos, &tevStr,
+ &shape_angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+ mFootSmokeEmtrIDs[1] =
+ dComIfGp_particle_set(mFootSmokeEmtrIDs[1], va_foot_smoke_id[var_r6 + 1], &pos, &tevStr,
+ &shape_angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mFootSmokeEmtrIDs[0]);
+ if (emitter != NULL) {
+ emitter->setGlobalAlpha(mFootSmokeAlpha);
+ }
+
+ emitter = dComIfGp_particle_getEmitter(mFootSmokeEmtrIDs[1]);
+ if (emitter != NULL) {
+ emitter->setGlobalAlpha(mFootSmokeAlpha);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::setFootEffect() {
- nofralloc
+asm void daE_VA_c::setFootEffect(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setFootEffect__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED4C-807CED50 0000A4 0004+00 0/1 0/0 0/0 .rodata @5224 */
@@ -1412,6 +2067,45 @@ COMPILER_STRIP_GATE(0x807CED4C, &lit_5224);
#pragma pop
/* 807C4B54-807C4DFC 002654 02A8+00 1/1 0/0 0/0 .text setWeponEffect__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setWeponEffect() {
+ cXyz pos;
+ cXyz scale(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ switch (mWeponEfMode) {
+ case 1:
+ pos.set(11.0f, 0.0f, -7.0f);
+ for (int i = 0; i < 3; i++) {
+ mWeponEffEmtrIDs[i] =
+ dComIfGp_particle_set(mWeponEffEmtrIDs[i], va_wepon_eff_id1[i], &pos, &tevStr,
+ &shape_angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+ }
+ break;
+ case 2:
+ pos.set(11.0f, 0.0f, -7.0f);
+ field_0x10f74 = dComIfGp_particle_set(field_0x10f74, 0x8601, &pos, &tevStr, &shape_angle,
+ &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+ /* fallthrough */
+ case 3:
+ pos = current.pos;
+ MtxP model_mtx = mpWeaponModel->getBaseTRMtx();
+ mSound.startCreatureSoundLevel(Z2SE_EN_VA_SWD_FLY, 0, -1);
+
+ for (int i = 0; i < 3; i++) {
+ mWeponEffEmtrIDs[i] =
+ dComIfGp_particle_set(mWeponEffEmtrIDs[i], va_wepon_eff_id2[i], &pos, &tevStr,
+ &shape_angle, &scale, 0xFF, NULL, -1, NULL, NULL, NULL);
+
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mWeponEffEmtrIDs[i]);
+ if (emitter != NULL) {
+ emitter->setGlobalSRTMatrix(model_mtx);
+ }
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1420,8 +2114,25 @@ asm void daE_VA_c::setWeponEffect() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setWeponEffect__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C4DFC-807C4F10 0028FC 0114+00 1/1 0/0 0/0 .text setBugsEffect__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setBugsEffect() {
+ J3DModel* model = mpMorf->getModel();
+ JGeometry::TVec3<f32> scale(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ for (int i = 0; i < 12; i++) {
+ JPABaseEmitter* emitter =
+ dComIfGp_particle_set(va_bugs_eff_id[i], &current.pos, NULL, NULL);
+ if (emitter != NULL) {
+ emitter->setGlobalSRTMatrix(model->getAnmMtx(va_bugs_eff_jnt[i]));
+ emitter->setGlobalParticleScale(scale);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1430,8 +2141,20 @@ asm void daE_VA_c::setBugsEffect() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setBugsEffect__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C4F10-807C4FCC 002A10 00BC+00 4/4 0/0 0/0 .text setWeponLandEffect__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setWeponLandEffect() {
+ cXyz scale(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ for (int i = 0; i < 3; i++) {
+ dComIfGp_particle_set(va_weapon_land_eff_id[i], &current.pos, &tevStr, &shape_angle,
+ &scale);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1440,8 +2163,20 @@ asm void daE_VA_c::setWeponLandEffect() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setWeponLandEffect__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C4FCC-807C50A4 002ACC 00D8+00 1/1 0/0 0/0 .text setWeponGlow__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setWeponGlow() {
+ mWeponEffEmtrIDs[0] = dComIfGp_particle_set(mWeponEffEmtrIDs[0], 0x8600, &current.pos, &tevStr);
+
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mWeponEffEmtrIDs[0]);
+ if (emitter != NULL) {
+ emitter->setGlobalSRTMatrix(mpWeaponModel->getBaseTRMtx());
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1450,8 +2185,17 @@ asm void daE_VA_c::setWeponGlow() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setWeponGlow__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C50A4-807C5188 002BA4 00E4+00 1/1 0/0 0/0 .text setWeponFlashScreen__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setWeponFlashScreen() {
+ cXyz pos(0.0f, 0.0f, 0.0f);
+ dComIfGp_particle_set(0x85FE, &pos, &tevStr, NULL, NULL);
+ dComIfGp_particle_set(0x85FF, &pos, &tevStr, NULL, NULL);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1460,8 +2204,20 @@ asm void daE_VA_c::setWeponFlashScreen() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setWeponFlashScreen__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C5188-807C5258 002C88 00D0+00 1/1 0/0 0/0 .text setMagicEffect__8daE_VA_cFi */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setMagicEffect(int param_0) {
+ int idx = param_0 * 3;
+
+ for (int i = 0; i < 3; i++) {
+ field_0x10f80[idx + i] = dComIfGp_particle_set(field_0x10f80[idx + i], va_magic_eff_id[i],
+ &mMagicPos[param_0], NULL, NULL);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1470,8 +2226,16 @@ asm void daE_VA_c::setMagicEffect(int param_0) {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setMagicEffect__8daE_VA_cFi.s"
}
#pragma pop
+#endif
/* 807C5258-807C5338 002D58 00E0+00 1/1 0/0 0/0 .text setMagicHitEffect__8daE_VA_cFi */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setMagicHitEffect(int param_0) {
+ dComIfGp_particle_set(0x8846, &mMagicPos[param_0], NULL, NULL);
+ dComIfGp_particle_set(0x8847, &mMagicPos[param_0], NULL, NULL);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1480,8 +2244,17 @@ asm void daE_VA_c::setMagicHitEffect(int param_0) {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setMagicHitEffect__8daE_VA_cFi.s"
}
#pragma pop
+#endif
/* 807C5338-807C53A8 002E38 0070+00 1/1 0/0 0/0 .text demo_skip__8daE_VA_cFi */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::demo_skip(int param_0) {
+ Z2GetAudioMgr()->bgmStreamStop(30);
+ cDmr_SkipInfo = 1;
+ dStage_changeScene(1, 0.0f, 0, fopAcM_GetRoomNo(this), 0, -1);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1490,16 +2263,17 @@ asm void daE_VA_c::demo_skip(int param_0) {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/demo_skip__8daE_VA_cFi.s"
}
#pragma pop
+#endif
/* 807C53A8-807C53DC 002EA8 0034+00 1/1 0/0 0/0 .text DemoSkipCallBack__8daE_VA_cFPvi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::DemoSkipCallBack(void* param_0, int param_1) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/DemoSkipCallBack__8daE_VA_cFPvi.s"
+int daE_VA_c::DemoSkipCallBack(void* i_this, int param_1) {
+ if (i_this != NULL) {
+ ((daE_VA_c*)i_this)->demo_skip(param_1);
+ return 1;
+ }
+
+ return 0;
}
-#pragma pop
/* ############################################################################################## */
/* 807CED50-807CED54 0000A8 0004+00 1/1 0/0 0/0 .rodata @5407 */
@@ -1511,14 +2285,24 @@ SECTION_RODATA static f32 const lit_5408 = 65.0f;
COMPILER_STRIP_GATE(0x807CED54, &lit_5408);
/* 807C53DC-807C53FC 002EDC 0020+00 2/2 0/0 0/0 .text getRopeLength__8daE_VA_cFi */
+// matches with literals
+#ifdef NONMATCHING
+f32 daE_VA_c::getRopeLength(int param_0) {
+ if (param_0 < 5) {
+ return nREG_F(18) + 115.0f;
+ } else {
+ return nREG_F(19) + 65.0f;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::getRopeLength(int param_0) {
- nofralloc
+asm f32 daE_VA_c::getRopeLength(int param_0){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/getRopeLength__8daE_VA_cFi.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED58-807CED5C 0000B0 0004+00 0/2 0/0 0/0 .rodata @5833 */
@@ -1655,7 +2439,16 @@ static u8 lit_5418[12];
#pragma pop
/* 807CF57C-807CF5F4 00010C 0078+00 1/2 0/0 0/0 .bss line_end_pos */
+#ifdef NONMATCHING
+static cXyz line_end_pos[] = {
+ cXyz(0.0f, 5.0f, 990.0f), cXyz(971.0f, 5.0f, 326.0f), cXyz(582.0f, 5.0f, -801.0f),
+ cXyz(-582.0f, 5.0f, -801.0f), cXyz(-942.0f, 5.0f, 306.0f), cXyz(202.0f, 5.0f, 501.0f),
+ cXyz(559.0f, 5.0f, -17.0f), cXyz(458.0f, 5.0f, -306.0f), cXyz(-131.0f, 5.0f, -524.0f),
+ cXyz(-414.0f, 5.0f, 347.0f),
+};
+#else
static u8 line_end_pos[120];
+#endif
/* 807CF5F4-807CF600 000184 000C+00 0/1 0/0 0/0 .bss @5419 */
#pragma push
@@ -1718,9 +2511,193 @@ static u8 lit_5428[12];
#pragma pop
/* 807CF66C-807CF6E4 0001FC 0078+00 1/2 0/0 0/0 .bss line_start_pos */
+#ifdef NONMATCHING
+static cXyz line_start_pos[] = {
+ cXyz(-5.0f, -10.0f, -15.0f), cXyz(0.0f, 0.0f, -10.0f), cXyz(0.0f, -10.0f, -10.0f),
+ cXyz(0.0f, 0.0f, -5.0f), cXyz(0.0f, -5.0f, -5.0f), cXyz(0.0f, 25.0f, -15.0f),
+ cXyz(0.0f, 5.0f, -10.0f), cXyz(3.0f, 25.0f, -3.0f), cXyz(8.0f, 25.0f, 0.0f),
+ cXyz(-8.0f, 23.0f, 8.0f),
+};
+#else
static u8 line_start_pos[120];
+#endif
/* 807C53FC-807C5CF0 002EFC 08F4+00 2/2 0/0 0/0 .text calcOpRopePos__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::calcOpRopePos() {
+ cXyz sp60;
+ cXyz sp6C;
+ cXyz sp78;
+ cXyz sp84;
+ cXyz sp90;
+
+ int idx;
+ s16 var_r30;
+
+ for (int i = 0; i < 10; i++) {
+ int temp_3C = i * 10;
+ mDoMtx_stack_c::transS(field_0x122c);
+ mDoMtx_stack_c::transM(0.0f, 150.0f, 0.0f);
+ mDoMtx_stack_c::ZXYrotM(field_0x1238);
+ mDoMtx_stack_c::transM(0.0f, -150.0f, 0.0f);
+ mDoMtx_stack_c::transM(0.0f, 400.0f, 0.0f);
+ mDoMtx_stack_c::XrotM(field_0x123e);
+ mDoMtx_stack_c::transM(0.0f, -400.0f, 0.0f);
+ mDoMtx_stack_c::transM(line_start_pos[i]);
+ mDoMtx_stack_c::multVecZero(&sp60);
+
+ sp6C = line_end_pos[i];
+ if (i == nREG_S(0)) {
+ sp6C.x += nREG_F(8);
+ sp6C.z += nREG_F(9);
+ }
+
+ f32 var_f31 = 0.0f;
+
+ if (field_0x1104[i]) {
+ field_0x112c[i] += nREG_S(0) + 0x800;
+ cLib_chaseF(&field_0x1104[i], 0.0f, nREG_F(19) + 0.01f);
+
+ var_r30 = (s16)cLib_targetAngleY(&sp60, &sp6C);
+ var_f31 = field_0x1104[i] * cM_ssin(field_0x112c[i]);
+ }
+
+ for (int j = 0; j < 10; j++) {
+ idx = temp_3C + j;
+
+ if (mRopeCutStatus[idx] & 2) {
+ if (j == 0) {
+ field_0x994[idx] = sp60;
+ } else {
+ field_0xe44[idx].y = 0x3130;
+
+ if (abs(field_0xe44[idx].z) <= 0x20 && abs(field_0xe44[idx].x + 0x4000) <= 0x20)
+ {
+ field_0xe44[idx].x = -0x4000;
+ field_0xe44[idx].z = 0;
+ } else if (field_0xe44[idx].x < -0x4000) {
+ field_0xe44[idx].z += 0x20;
+ } else {
+ field_0xe44[idx].z -= 0x20;
+ }
+
+ cLib_chaseAngleS(&field_0xe44[idx].z, 0, 8);
+ field_0xe44[idx].x += field_0xe44[idx].z;
+
+ f32 rope_len = getRopeLength(i);
+ sp84.y = rope_len * cM_ssin(field_0xe44[idx].x);
+
+ f32 temp_f31_2 = rope_len * cM_scos(field_0xe44[idx].x);
+ sp84.x = temp_f31_2 * cM_scos(field_0xe44[idx].y);
+ sp84.z = temp_f31_2 * cM_ssin(field_0xe44[idx].y);
+
+ sp78 = field_0x994[idx - 1] + sp84;
+ cLib_chasePos(&field_0x994[idx], sp78, 10.0f);
+ }
+ } else if (mRopeCutStatus[idx] & 4) {
+ field_0x994[idx].y += -5.0f;
+ if (field_0x994[idx].y < 5.0f) {
+ field_0x994[idx].y = 5.0f;
+ }
+ } else if (mRopeCutStatus[idx] & 8) {
+ field_0x994[idx].y += -3.0f;
+ if (field_0x994[idx].y < 5.0f) {
+ field_0x994[idx].y = 5.0f;
+ }
+ } else {
+ if (j == 0) {
+ field_0x994[idx] = sp60;
+ } else if (j == 9) {
+ field_0x994[idx] = sp6C;
+ } else {
+ sp84 = field_0x994[idx] - sp60;
+ sp84.normalizeZP();
+
+ sp90 = sp6C - field_0x994[idx];
+ sp90.normalizeZP();
+
+ sp78 = (sp84 * line_pull_power[10 - j]) * (nREG_F(12) + 300.0f);
+ sp78 += (sp90 * line_pull_power[j]) * (nREG_F(13) + 300.0f);
+ sp78.y += -5.0f;
+ sp78.normalizeZP();
+
+ field_0x994[idx] = field_0x994[idx - 1] + (sp78 * getRopeLength(i));
+ if (field_0x994[idx].y < 5.0f) {
+ field_0x994[idx].y = 5.0f;
+ }
+
+ if (var_f31) {
+ f32 temp_f29 = (nREG_F(16) + 0.2f) * ((f32)(10 - j) * var_f31);
+ field_0x994[idx].x += temp_f29 * cM_scos(var_r30);
+ field_0x994[idx].z += temp_f29 * cM_ssin(var_r30);
+ }
+ }
+ }
+ }
+ }
+
+ cXyz* pos;
+ for (int i = 0; i < 11; i++) {
+ pos = mRope.getPos(i);
+ int temp_r5_2;
+ if (i != 10) {
+ int temp_r5 = i * 10;
+ int sp68 = field_0x11b8[i] / getRopeLength(i);
+
+ for (int j = 0; j < 10; j++, pos++) {
+ temp_r5_2 = temp_r5 + j;
+ *pos = field_0x994[temp_r5_2];
+
+ if (sp68 >= 4) {
+ if (j <= sp68 && field_0x11b8[i]) {
+ *pos = field_0x1140[i];
+ mRopeCutStatus[temp_r5_2] |= 1;
+ } else if ((mRopeCutStatus[temp_r5_2] & 0x10) && j < 4) {
+ *pos = field_0x994[temp_r5 + 4];
+ }
+ } else if ((mRopeCutStatus[temp_r5_2] & 0x10) && j < 4) {
+ *pos = field_0x994[temp_r5 + 4];
+ } else if (j <= sp68 && field_0x11b8[i]) {
+ *pos = field_0x1140[i];
+ mRopeCutStatus[temp_r5_2] |= 1;
+ }
+ }
+
+ } else {
+ int temp_r5 = 50;
+ int sp68 = field_0x11b8[5] / getRopeLength(5);
+
+ for (int j = 0; j < 10; j++, pos++) {
+ temp_r5_2 = temp_r5 + j;
+ *pos = field_0x994[temp_r5_2];
+
+ if (sp68 > 3) {
+ *pos = field_0x994[temp_r5 + 9];
+ } else if (j <= sp68 && field_0x11b8[5]) {
+ *pos = field_0x1140[5];
+ } else if ((mRopeCutStatus[temp_r5_2] & 0x10) && j >= 3) {
+ *pos = field_0x994[temp_r5 + 3];
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < 40; i++) {
+ int idx = va_tag_set_num[i];
+
+ if (mRopeCutStatus[idx] & 1) {
+ mCardFlags[i] |= 0x80;
+ }
+
+ if (mRopeCutStatus[idx] & 0xC) {
+ mCardFlags[i] |= 0x8;
+ }
+
+ field_0x660[i].y = cLib_targetAngleY(&field_0x994[idx - 1], &field_0x994[idx + 1]) + 0x4000;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1729,16 +2706,36 @@ asm void daE_VA_c::calcOpRopePos() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcOpRopePos__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C5CF0-807C5DF4 0037F0 0104+00 1/1 0/0 0/0 .text onRopeCutStatus__8daE_VA_cFiii */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::onRopeCutStatus(int param_0, int param_1, int param_2) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/onRopeCutStatus__8daE_VA_cFiii.s"
+void daE_VA_c::onRopeCutStatus(int param_0, int param_1, int param_2) {
+ int var_r31 = param_0 * 10;
+
+ for (int i = 0; i < 10; i++) {
+ int var_r24 = var_r31 + i;
+
+ if (param_2 == 0) {
+ mRopeCutStatus[var_r24] |= 0x10;
+ }
+
+ if (i < param_1) {
+ mRopeCutStatus[var_r24] |= 2;
+
+ if (param_2 == 0) {
+ field_0xe44[var_r24].x =
+ cLib_targetAngleX(&field_0x994[var_r24 - 1], &field_0x994[var_r24]);
+ field_0xe44[var_r24].y =
+ cLib_targetAngleY(&field_0x994[var_r24 - 1], &field_0x994[var_r24]);
+ field_0xe44[var_r24].z = 0;
+ }
+ } else if (param_2 == 0) {
+ mRopeCutStatus[var_r24] |= 4;
+ } else {
+ mRopeCutStatus[var_r24] |= 8;
+ }
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 807CED88-807CED8C 0000E0 0004+00 1/1 0/0 0/0 .rodata @5877 */
@@ -1746,14 +2743,22 @@ SECTION_RODATA static f32 const lit_5877 = 7168.0f;
COMPILER_STRIP_GATE(0x807CED88, &lit_5877);
/* 807C5DF4-807C5EAC 0038F4 00B8+00 1/1 0/0 0/0 .text setVibRope__8daE_VA_cFff */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setVibRope(f32 param_0, f32 param_1) {
+ field_0x1336 += (s16)(param_1 * 7168.0f);
+ field_0x122c.y += (s16)(param_0 * cM_ssin(field_0x1336));
+ field_0x123e += (s16)(param_0 * 50.0f * cM_ssin(field_0x1336));
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::setVibRope(f32 param_0, f32 param_1) {
- nofralloc
+asm void daE_VA_c::setVibRope(f32 param_0, f32 param_1){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setVibRope__8daE_VA_cFff.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED8C-807CED90 0000E4 0004+00 1/1 0/0 0/0 .rodata @5913 */
@@ -1765,14 +2770,50 @@ SECTION_RODATA static f32 const lit_5914 = 4.0f;
COMPILER_STRIP_GATE(0x807CED90, &lit_5914);
/* 807C5EAC-807C6164 0039AC 02B8+00 2/2 0/0 0/0 .text setVibTag__8daE_VA_cFii */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setVibTag(int param_0, int param_1) {
+ for (int i = 0; i < 40; i++) {
+ if (param_1 == -1 || param_1 == va_tag_set_num[i] / 10) {
+ mCardFlags[i] |= 4;
+
+ if (!(mCardFlags[i] & 8)) {
+ switch (param_0) {
+ case 0:
+ field_0x750[i].x += TAG_VIB_ANGLE[(int)cM_rndF(3.9f)];
+ field_0x750[i].z += TAG_VIB_ANGLE[(int)cM_rndF(3.9f)];
+ field_0x840[i].x = TAG_VIB_WIDTH[(int)(cM_rndF(3.9f) + 4.0f)];
+ field_0x840[i].z = TAG_VIB_WIDTH[(int)(cM_rndF(3.9f) + 4.0f)];
+ break;
+ case 1:
+ field_0x750[i].x += TAG_VIB_ANGLE[i & 3];
+ field_0x750[i].z += TAG_VIB_ANGLE[(i >> 1) & 3];
+ field_0x840[i].x = TAG_VIB_WIDTH[i & 3];
+ field_0x840[i].z = TAG_VIB_WIDTH[(i >> 2) & 3];
+ break;
+ case 2:
+ field_0x750[i].x += TAG_VIB_ANGLE[(i & 1) + 2];
+ field_0x750[i].z += TAG_VIB_ANGLE[((i >> 1) & 1) + 2];
+ field_0x840[i].x = TAG_VIB_WIDTH[(i & 3) + 4];
+ field_0x840[i].z = TAG_VIB_WIDTH[((i >> 2) & 3) + 4];
+ break;
+ }
+
+ field_0x660[i].x = field_0x840[i].x * cM_ssin(field_0x750[i].x);
+ field_0x660[i].z = field_0x840[i].z * cM_ssin(field_0x750[i].z);
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::setVibTag(int param_0, int param_1) {
- nofralloc
+asm void daE_VA_c::setVibTag(int param_0, int param_1){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setVibTag__8daE_VA_cFii.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED94-807CED98 0000EC 0004+00 0/1 0/0 0/0 .rodata @5960 */
@@ -1783,6 +2824,55 @@ COMPILER_STRIP_GATE(0x807CED94, &lit_5960);
#pragma pop
/* 807C6164-807C638C 003C64 0228+00 2/2 0/0 0/0 .text calcTagAngle__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::calcTagAngle() {
+ for (int i = 0; i < 40; i++) {
+ if (mCardFlags[i] & 8) {
+ f32 var_f30;
+ switch (mCardFlags[i] & 3) {
+ case 0:
+ var_f30 = 160.0f;
+ break;
+ case 1:
+ var_f30 = 100.0f;
+ break;
+ case 2:
+ var_f30 = 50.0f;
+ break;
+ }
+
+ f32 var_f31 = field_0x994[va_tag_set_num[i]].y - 5.0f;
+ if (var_f31 < var_f30) {
+ if (var_f31) {
+ f32 var_f29 = JMAFastSqrt(var_f30 * var_f30 - var_f31 * var_f31);
+ if (field_0x660[i].x < 0) {
+ field_0x660[i].x = -cM_atan2s(var_f29, var_f31);
+ } else {
+ field_0x660[i].x = cM_atan2s(var_f29, var_f31);
+ }
+ }
+
+ field_0x660[i].z = 0;
+ mCardFlags[i] |= 4;
+ }
+ }
+
+ if (!(mCardFlags[i] & 4)) {
+ field_0x750[i].x += TAG_VIB_ANGLE[i & 1];
+ field_0x750[i].z += TAG_VIB_ANGLE[(i >> 1) & 1];
+
+ cLib_chaseAngleS(&field_0x840[i].x, 0, 4);
+ cLib_chaseAngleS(&field_0x840[i].z, 0, 4);
+
+ field_0x660[i].x = field_0x840[i].x * cM_ssin(field_0x750[i].x);
+ field_0x660[i].z = field_0x840[i].z * cM_ssin(field_0x750[i].z);
+ }
+
+ mCardFlags[i] &= ~4;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1791,16 +2881,48 @@ asm void daE_VA_c::calcTagAngle() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcTagAngle__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C638C-807C6564 003E8C 01D8+00 1/1 0/0 0/0 .text calcRopeFirePos__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::calcRopeFirePos() {
+ int temp_r28;
+ int var_r24;
+ f32 var_f29;
+ BOOL var_r31;
+
+ cXyz sp48;
+ for (int i = 0; i < 10; i++) {
+ field_0x11b8[i] += nREG_F(15) + 60.0f;
+
+ var_r24 = field_0x11b8[i] / getRopeLength(i);
+ var_f29 = field_0x11b8[i] - ((f32)var_r24 * getRopeLength(i));
+ var_r31 = 1;
+
+ if (var_r24 < 9) {
+ temp_r28 = var_r24 + (i * 10);
+ sp48 = field_0x994[temp_r28 + 1] - field_0x994[temp_r28];
+ sp48.normalizeZP();
+ field_0x1140[i] = field_0x994[temp_r28] + (sp48 * var_f29);
+ } else if (cLib_chasePos(&field_0x1140[i], field_0x994[(i * 10) + 9], nREG_F(15) + 60.0f)) {
+ var_r31 = 0;
+ }
+
+ if (var_r31) {
+ setFireEffect(i);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::calcRopeFirePos() {
- nofralloc
+asm void daE_VA_c::calcRopeFirePos(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcRopeFirePos__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CED98-807CED9C 0000F0 0004+00 0/1 0/0 0/0 .rodata @6069 */
@@ -1825,14 +2947,59 @@ COMPILER_STRIP_GATE(0x807CEDA0, &lit_6071);
#pragma pop
/* 807C6564-807C67A4 004064 0240+00 1/1 0/0 0/0 .text executeDemoOpWait__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeDemoOpWait() {
+ cXyz sp34;
+
+ switch (mMode) {
+ case 0:
+ mRopesEnabled = true;
+ mpWeaponBrk->setPlaySpeed(0.0f);
+ mpWeaponBrk->setFrame(0.0f);
+
+ for (int i = 0; i < 10; i++) {
+ for (int j = 0; j < 10; j++) {
+ if (i < 5) {
+ field_0x994[j + i * 10].x = j * 110.0f * cM_ssin(i * 0x3333);
+ field_0x994[j + i * 10].z = j * 110.0f * cM_scos(i * 0x3333);
+ field_0x994[j + i * 10].y = 275.0f - j * 30.0f;
+ } else {
+ field_0x994[j + i * 10].x = j * 60.0f * cM_ssin(i * 0x3333);
+ field_0x994[j + i * 10].z = j * 60.0f * cM_scos(i * 0x3333);
+ field_0x994[j + i * 10].y = 275.0f - j * 30.0f;
+ }
+ }
+ }
+
+ field_0x122c.set(51.0f, 0.0f, 0.0f);
+ field_0x1238.set(0, -0x5000, -0x8000);
+ field_0x123e = 0;
+ mMode = 1;
+ mDrawRopes = true;
+ case 1:
+ for (int i = 0; i < 190; i++) {
+ if (!daPy_getPlayerActorClass()->i_checkNowWolf()) {
+ mLineSphs[i].OffTgShield();
+ } else {
+ mLineSphs[i].OnTgShield();
+ }
+ }
+ calcOpRopePos();
+ break;
+ }
+
+ calcTagAngle();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeDemoOpWait() {
- nofralloc
+asm void daE_VA_c::executeDemoOpWait(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeDemoOpWait__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEDA4-807CEDA8 0000FC 0004+00 0/1 0/0 0/0 .rodata @6345 */
@@ -1871,14 +3038,309 @@ COMPILER_STRIP_GATE(0x807CEDB4, &lit_6349);
#pragma pop
/* 807C67A4-807C7534 0042A4 0D90+00 2/1 0/0 0/0 .text executeDemoOp__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeDemoOp() {
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ cXyz sp2C;
+ cXyz sp38;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ calcOpRopePos();
+
+ switch (mMode) {
+ case 0:
+ if (!eventInfo.i_checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0);
+ eventInfo.i_onCondition(2);
+ return;
+ }
+
+ dComIfGs_onOneZoneSwitch(9, fopAcM_GetRoomNo(this));
+ player->changeOriginalDemo();
+
+ sp38.set(270.0f, 0.0f, 210.0f);
+ player->setPlayerPosAndAngle(&sp38, -0x6000, 0);
+ player->changeDemoMode(1, 0, 0, 0);
+
+ camera->mCamera.Stop();
+ camera->mCamera.SetTrimSize(3);
+
+ mDemoCamEye.set(300.0f, 300.0f, 600.0f);
+ mDemoCamCenter.set(100.0f, 180.0f, 200.0f);
+ mDemoCamBank = 60.0f;
+ mDemoModeTimer = nREG_S(4) + 60;
+ field_0x14a8 = 2.5f;
+
+ onRopeCutStatus(5, 4, 0);
+
+ Z2GetAudioMgr()->seStart(Z2SE_EN_VA_OPENING1, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ mMode = 1;
+ Z2GetAudioMgr()->bgmStreamPrepare(0x200000A);
+ Z2GetAudioMgr()->bgmStreamPlay();
+ return;
+ case 1:
+ sp38.set(270.0f, 0.0f, 210.0f);
+ player->setPlayerPosAndAngle(&sp38, -0x6000, 0);
+ sp38.set(-50.0f, 90.0f, -100.0f);
+
+ cLib_chasePos(&mDemoCamEye, sp38, field_0x14a8);
+ cLib_chasePos(&mDemoCamCenter, sp38, field_0x14a8);
+
+ if (mDemoModeTimer == 0) {
+ mDownTimer = 98;
+ mpWeaponBrk->setPlaySpeed(nREG_F(1) + 1.0f);
+ mpWeaponBrk->setFrame(0.0f);
+ field_0x1336 = 0;
+ mMode = 2;
+ mDemoModeTimer = 60 - nREG_S(4);
+ }
+ break;
+ case 2:
+ if (mpWeaponBrk->checkFrame(48.0f)) {
+ mpWeaponBrk->setPlaySpeed(0.0f);
+ }
+
+ if (mDemoModeTimer != 0) {
+ sp38.set(-50.0f, 90.0f, -100.0f);
+ cLib_chasePos(&mDemoCamEye, sp38, field_0x14a8);
+ cLib_chasePos(&mDemoCamCenter, sp38, field_0x14a8);
+
+ if (mDemoModeTimer < 25) {
+ cLib_chaseF(&field_0x14a8, 0.0f, 0.1f);
+
+ if (mDemoModeTimer > 15 && mDemoModeTimer < 25) {
+ setVibRope(1.0f, 1.0f);
+ }
+
+ if (mDemoModeTimer > 12 && mDemoModeTimer < 22) {
+ setVibTag(1, -1);
+ }
+
+ if (mDemoModeTimer == 0) {
+ mMode = 3;
+ }
+ }
+ } else if (mDownTimer == 0) {
+ mMode = 4;
+ mDemoModeTimer = 75;
+ }
+ break;
+ case 4:
+ setWeponGlow();
+
+ if (mDemoModeTimer < 50) {
+ setVibRope(1.0f, 1.3f);
+
+ if (mDemoModeTimer < 45) {
+ setVibTag(2, -1);
+ }
+
+ if (mDemoModeTimer == 0) {
+ setWeponFlashScreen();
+ mMode = 5;
+ mDemoModeTimer = 50;
+
+ for (int i = 0; i < 10; i++) {
+ field_0x1140[i] = field_0x994[i * 10];
+ onRopeCutStatus(i, 0, 1);
+ }
+
+ field_0x14a8 = 50.0f;
+
+ dComIfGp_getVibration().StartQuake(6, 31, cXyz(0.0f, 1.0f, 0.0f));
+ sp38.set(400.0f, 0.0f, 300.0f);
+ player->setPlayerPosAndAngle(&sp38, -0x6000, 0);
+ player->changeDemoMode(0x17, 0, 0, 0);
+ return;
+ }
+ }
+ break;
+ case 5:
+ sp38.set(459.0f, 394.0f, 920.0f);
+ cLib_chasePos(&mDemoCamEye, sp38, field_0x14a8);
+
+ sp38.set(259.0f, 275.0f, 519.0f);
+ cLib_chasePos(&mDemoCamCenter, sp38, field_0x14a8);
+ cLib_chaseF(&field_0x14a8, 0.0f, 1.0f);
+
+ if (mDemoModeTimer == 20) {
+ dComIfGp_getVibration().StopQuake(31);
+ }
+
+ setVibRope(1.0f, 1.3f);
+ setVibTag(2, -1);
+ calcRopeFirePos();
+
+ if (mDemoModeTimer == 0) {
+ sp38.set(800.0f, 0.0f, 380.0f);
+ player->setPlayerPosAndAngle(&sp38, -0x5000, 0);
+ mMode = 6;
+
+ mpWeaponBrk->setPlaySpeed(1.0f);
+ mDemoCamCenter.set(field_0x122c.x, 150.0f, field_0x122c.z);
+ field_0x14ac = 0x1800;
+ cLib_chaseAngleS(&field_0x14ac, 0x2800, 0x20);
+
+ sp38.set(0.0f, 150.0f, 0.0f);
+ sp2C.set(0.0f, 50.0f, 400.0f);
+ cLib_offsetPos(&mDemoCamEye, &sp38, field_0x14ac, &sp2C);
+ mDemoCamBank = 60.0f;
+ mWeponEfMode = 1;
+ mDemoModeTimer = 130;
+
+ if (!player->i_checkNowWolf()) {
+ player->changeDemoMode(0x17, 0, 0, 0);
+ }
+
+ Z2GetAudioMgr()->seStart(Z2SE_EN_VA_OPENING2, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ return;
+ }
+ break;
+ case 6:
+ mMode = 7;
+ field_0x122c.y = -100.0f;
+ case 7:
+ if (mDemoModeTimer > 115 || (mDemoModeTimer < 90 && mDemoModeTimer > 60)) {
+ field_0x122c.y += 1.0f;
+ setVibRope(2.0f, 1.0f);
+ } else if (mDemoModeTimer < 10) {
+ field_0x122c.y += 1.0f;
+ setVibRope(2.0f, 1.3f);
+ } else if (mDemoModeTimer < 30) {
+ field_0x122c.y += nREG_F(1) + 5.0f;
+ setVibRope(2.0f, 1.0f);
+ } else {
+ field_0x122c.y += 0.2f;
+ setVibRope(1.0f, 1.0f);
+ }
+
+ mDemoCamCenter.set(field_0x122c.x, 150.0f, field_0x122c.z);
+ cLib_chaseAngleS(&field_0x14ac, 0x2800, 0x20);
+
+ sp38.set(0.0f, 150.0f, 0.0f);
+ sp2C.set(0.0f, 50.0f, 400.0f);
+ cLib_offsetPos(&mDemoCamEye, &sp38, field_0x14ac, &sp2C);
+
+ if (mDemoModeTimer == 0) {
+ mMode = 8;
+ mDemoModeTimer = 300;
+ field_0x14a4 = 600.0f;
+ mWeponEfMode = 2;
+ field_0x1336 = 0x1400;
+ field_0x1334 = 0xA00;
+ field_0x1310 = 28.0f;
+ field_0x123e = 0;
+ mDrawRopes = false;
+ mKankyoColType = 4;
+ }
+ break;
+ case 8:
+ mDemoCamCenter.set(field_0x122c.x, field_0x122c.y + 150.0f, field_0x122c.z);
+ sp38.set(950.0f, 50.0f, 550.0f);
+ cLib_chasePos(&mDemoCamEye, sp38, 15.0f);
+
+ field_0x1310--;
+ if (field_0x1310 < -10.0f) {
+ field_0x1310 = -10.0f;
+ }
+
+ field_0x122c.y += field_0x1310;
+
+ if (mDemoModeTimer < 267) {
+ cLib_chaseAngleS(&field_0x1336, 0, 0x100);
+ }
+
+ if (mDemoModeTimer < 254) {
+ cLib_chaseAngleS(&field_0x1334, 0, 0x100);
+ }
+
+ field_0x1238.z += field_0x1336;
+ field_0x1238.x += field_0x1334;
+
+ if (mDemoModeTimer < 270) {
+ cLib_addCalcAngleS(&field_0x1238.x, -0x0C03, 4, 0x200, 0x100);
+ cLib_addCalcAngleS(&field_0x1238.y, -0x43B1, 4, 0x200, 0x100);
+ cLib_addCalcAngleS(&field_0x1238.z, -0x195D, 4, 0x200, 0x100);
+ }
+
+ sp38.set(26.0f, 187.0f, 236.0f);
+ f32 old = field_0x122c.y;
+
+ if (cLib_chasePosXZ(&field_0x122c, sp38, 4.2f)) {
+ field_0x122c.y = old;
+ }
+
+ if (field_0x1310 < 0.0f && field_0x122c.y < 192.0f) {
+ field_0x122c = sp38;
+ field_0x1238.set(-0x0C03, -0x43B1, -0x195D);
+
+ setBck(ANM_INVI_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 9;
+ field_0x1240 = 1;
+ mDemoModeTimer = 60;
+ mWeponEfMode = 3;
+ }
+ break;
+ case 9:
+ cLib_chaseAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 0x98);
+ current.angle.y = shape_angle.y;
+
+ sp38.set(field_0x122c.x, field_0x122c.y + 150.0f, field_0x122c.z);
+ cLib_chasePos(&mDemoCamCenter, sp38, 5.0f);
+
+ sp38.set(950.0f, 50.0f, 550.0f);
+ cLib_chasePos(&mDemoCamEye, sp38, 15.0f);
+
+ if (mDemoModeTimer == 0) {
+ setBck(ANM_OP_ATTACK_A_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 10;
+ }
+ break;
+ case 10:
+ mDemoCamCenter.set(field_0x122c.x, field_0x122c.y + 150.0f, field_0x122c.z);
+ sp38.set(950.0f, 50.0f, 550.0f);
+ cLib_chasePos(&mDemoCamEye, sp38, nREG_F(19) + 15.0f);
+
+ if (mpMorf->checkFrame(50.0f)) {
+ player->changeDemoMode(0x22, 0, 0, 0);
+ }
+
+ if (mpMorf->checkFrame(67.0f)) {
+ setWeponLandEffect();
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_IMPACT, 0, -1);
+ dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f));
+ }
+
+ if (mpMorf->isStop()) {
+ camera->mCamera.Reset(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+ camera->mCamera.Start();
+ camera->mCamera.SetTrimSize(0);
+ dComIfGp_event_reset();
+
+ mRopesEnabled = false;
+ setActionMode(ACTION_CLEAR_WAIT_e, 0);
+ mDemoModeTimer = 60;
+ Z2GetAudioMgr()->subBgmStart(Z2BGM_VARIANT);
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ return;
+ }
+ }
+
+ calcTagAngle();
+ camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+ dComIfGp_getEvent().onSkipFade();
+ dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 0);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeDemoOp() {
- nofralloc
+asm void daE_VA_c::executeDemoOp(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeDemoOp__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEDB8-807CEDBC 000110 0004+00 0/0 0/0 0/0 .rodata @6350 */
@@ -2036,6 +3498,33 @@ COMPILER_STRIP_GATE(0x807CEE0C, &lit_6394);
#pragma pop
/* 807C7534-807C7640 005034 010C+00 1/1 0/0 0/0 .text executeClearWait__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeClearWait() {
+ switch (mMode) {
+ case 1:
+ mDemoModeTimer = 60;
+ /* fallthrough */
+ case 0:
+ setBck(ANM_INVI_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 20.0f, 1.0f);
+ attention_info.flags = 4;
+ mMode = 2;
+ /* fallthrough */
+ case 2:
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+
+ if (mDemoModeTimer == 0) {
+ if (fopAcM_searchPlayerDistance(this) < 2000.0f) {
+ setActionMode(ACTION_CLEAR_CHASE_e, 0);
+ }
+ }
+
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ setActionMode(ACTION_TRANS_WAIT_e, 0);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2044,16 +3533,60 @@ asm void daE_VA_c::executeClearWait() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeClearWait__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C7640-807C783C 005140 01FC+00 1/1 0/0 0/0 .text executeClearChase__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeClearChase() {
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+
+ switch (mMode) {
+ case 0:
+ setBck(ANM_INVI_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 1;
+ /* fallthrough */
+ case 1:
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x400, 0x40);
+ current.angle.y = shape_angle.y;
+
+ if (fopAcM_searchPlayerDistance(this) > l_HIO.mAttackRange) {
+ cLib_chaseF(&speedF, 10.0f, 1.0f);
+ } else if (fopAcM_searchPlayerDistance(this) < l_HIO.mAttackRange - 200.0f) {
+ cLib_chaseF(&speedF, -10.0f, 1.0f);
+ } else {
+ cLib_chaseF(&speedF, 0.0f, 1.0f);
+
+ if (speedF == 0.0f && mDemoModeTimer == 0) {
+ setActionMode(ACTION_CLEAR_ATTACK_e, 0);
+ return;
+ }
+ }
+
+ if (speedF != 0.0f) {
+ if (!checkBck(ANM_INVI_WALK_e)) {
+ setBck(ANM_INVI_WALK_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ }
+ } else {
+ if (!checkBck(ANM_INVI_WAIT_e)) {
+ setBck(ANM_INVI_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ }
+ }
+ }
+
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ setActionMode(ACTION_TRANS_WAIT_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeClearChase() {
- nofralloc
+asm void daE_VA_c::executeClearChase(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeClearChase__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE10-807CEE14 000168 0004+00 0/1 0/0 0/0 .rodata @6485 */
@@ -2085,6 +3618,47 @@ COMPILER_STRIP_GATE(0x807CEE1C, &lit_6488);
#pragma pop
/* 807C783C-807C7A8C 00533C 0250+00 1/1 0/0 0/0 .text executeClearAttack__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeClearAttack() {
+ f32 anm_frame = mpMorf->getFrame();
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+
+ switch (mMode) {
+ case 0:
+ setBck(ANM_INVI_ATTACK_A_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK_T, 0, -1);
+ mMode = 1;
+ return;
+ case 1:
+ if (mpMorf->checkFrame(32.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK1, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(36.0f)) {
+ setWeponLandEffect();
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_IMPACT, 0, -1);
+ dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f));
+ }
+
+ if (30.0f <= anm_frame && anm_frame <= 43.0f) {
+ onSwordAtBit();
+ } else if (anm_frame > 43.0f && anm_frame < 85.0f) {
+ offSwordShield();
+ }
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_CLEAR_CHASE_e, 0);
+ mDemoModeTimer = 150;
+ }
+ break;
+ }
+
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ setActionMode(ACTION_TRANS_WAIT_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2093,8 +3667,50 @@ asm void daE_VA_c::executeClearAttack() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeClearAttack__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C7A8C-807C7C74 00558C 01E8+00 1/1 0/0 0/0 .text executeTransWait__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransWait() {
+ switch (mMode) {
+ case 0:
+ Z2GetAudioMgr()->changeSubBgmStatus(2);
+ mAlphaType = 1;
+ attention_info.flags = 4;
+ speedF = 0.0f;
+ mMode = 1;
+ setBck(ANM_TRANS_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ mDemoModeTimer = 5;
+
+ if (!dComIfGs_isOneZoneSwitch(5, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onOneZoneSwitch(5, fopAcM_GetRoomNo(this));
+ }
+ /* fallthrough */
+ case 1:
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+ if (mDemoModeTimer == 0) {
+ setBck(ANM_INVI_NOTICE_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_FOUND, -1);
+ mMode = 2;
+ }
+ break;
+ case 2:
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+ field_0x1391 = 1;
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_TRANS_CHASE_e, 0);
+ }
+ break;
+ }
+
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2103,16 +3719,71 @@ asm void daE_VA_c::executeTransWait() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransWait__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C7C74-807C7ED4 005774 0260+00 1/1 0/0 0/0 .text executeTransChase__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransChase() {
+ f32 dist_to_player = fopAcM_searchPlayerDistanceXZ(this);
+ s16 angleY_to_player = fopAcM_searchPlayerAngleY(this);
+
+ switch (mMode) {
+ case 0:
+ setBck(ANM_TRANS_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ mMode = 1;
+ /* fallthrough */
+ case 1:
+ if (abs((s16)(shape_angle.y - angleY_to_player)) > 0x6000) {
+ shape_angle.y += 0x400;
+ } else {
+ cLib_addCalcAngleS(&shape_angle.y, angleY_to_player, 8, 0x400, 0x40);
+ }
+
+ current.angle.y = shape_angle.y;
+
+ if (dist_to_player > l_HIO.mAttackRange) {
+ cLib_chaseF(&speedF, 15.0f, 1.0f);
+ } else if (dist_to_player < l_HIO.mAttackRange - 200.0f) {
+ if (mDemoModeTimer == 0) {
+ cLib_chaseF(&speedF, 0.0f, 1.0f);
+ } else {
+ cLib_chaseF(&speedF, -10.0f, 1.0f);
+ }
+ } else {
+ cLib_chaseF(&speedF, 0.0f, 1.0f);
+ }
+
+ if (speedF == 0.0f && mDemoModeTimer == 0 && dist_to_player <= l_HIO.mAttackRange &&
+ abs((s16)(shape_angle.y - angleY_to_player)) < 0x2000)
+ {
+ setActionMode(ACTION_TRANS_ATTACK_e, 0);
+ return;
+ }
+
+ if (speedF) {
+ if (!checkBck(ANM_TRANS_WALK_e)) {
+ setBck(ANM_TRANS_WALK_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ }
+ } else {
+ setBck(ANM_TRANS_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 10.0f, 1.0f);
+ }
+ }
+
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeTransChase() {
- nofralloc
+asm void daE_VA_c::executeTransChase(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransChase__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE20-807CEE24 000178 0004+00 0/3 0/0 0/0 .rodata @6686 */
@@ -2137,6 +3808,91 @@ COMPILER_STRIP_GATE(0x807CEE28, &lit_6688);
#pragma pop
/* 807C7ED4-807C839C 0059D4 04C8+00 1/1 0/0 0/0 .text executeTransAttack__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransAttack() {
+ f32 anm_frame = mpMorf->getFrame();
+
+ switch (mMode) {
+ case 0:
+ setBck(ANM_TRANS_ATTACK_A1_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK_T, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK1, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK1, 0, -1);
+ mMode = 2;
+ break;
+ case 2:
+ if (mpMorf->checkFrame(22.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK1, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(26.0f)) {
+ setWeponLandEffect();
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_IMPACT, 0, -1);
+ dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f));
+ }
+
+ if (20.0f <= anm_frame && anm_frame <= 33.0f) {
+ onSwordAtBit();
+ } else if (anm_frame > 33.0f) {
+ offSwordShield();
+ }
+
+ if (mpMorf->checkFrame(20.0f)) {
+ mGlowBody = 1;
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ mBodyCyls[0].SetTgType(0xD8FBFDFF);
+ mBodyCyls[1].SetTgType(0xD8FBFDFF);
+ }
+
+ if (mpMorf->isStop()) {
+ setBck(ANM_TRANS_ATTACK_A3_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ mMode = 4;
+ }
+ break;
+ case 4:
+ if (mpMorf->checkFrame(20.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK2, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(53.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK3, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ }
+
+ if (anm_frame <= 20.0f) {
+ offSwordShield();
+ }
+
+ if (mpMorf->checkFrame(40.0f)) {
+ mGlowBody = 0;
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+ }
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_TRANS_CHASE_e, 0);
+ mDemoModeTimer = 90;
+ }
+ break;
+ }
+
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+
+ if (!checkBck(ANM_TRANS_ATTACK_A3_e)) {
+ setBck(ANM_TRANS_ATTACK_A3_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ }
+
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 10);
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2145,9 +3901,103 @@ asm void daE_VA_c::executeTransAttack() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransAttack__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C839C-807C8860 005E9C 04C4+00 1/1 0/0 0/0 .text executeTransBiteDamage__8daE_VA_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransBiteDamage() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz sp38;
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK_02));
+ mDoMtx_stack_c::multVecZero(&sp38);
+
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ setBck(ANM_TRANS_NECK_DMG_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_BITED, -1);
+ mMode = 1;
+ field_0x1324 = 0;
+ field_0x135c = 0;
+ mGlowBody = 1;
+
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+
+ if ((s16)(cLib_targetAngleY(&sp38, &player->current.pos) - shape_angle.y) < 0) {
+ field_0x1390 = 0;
+ } else {
+ field_0x1390 = 1;
+ }
+ /* fallthrough */
+ case 1:
+ s16 var_r4;
+ if (field_0x1390 != 0) {
+ var_r4 = shape_angle.y - 0x4000;
+ } else {
+ var_r4 = shape_angle.y + 0x4000;
+ }
+
+ player->setWolfEnemyHangBiteAngle(var_r4);
+
+ if (checkWolfBiteDamage()) {
+ offWolfBiteDamage();
+ field_0x135c++;
+ field_0x1324++;
+
+ if (field_0x135c >= l_HIO.mBiteCount) {
+ field_0x135c = 0;
+ player->offWolfEnemyHangBite();
+ setActionMode(ACTION_OPACI_WAIT_e, 0);
+ mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 0x20);
+ attention_info.flags = 0;
+ return;
+ }
+
+ setBck(ANM_TRANS_NECK_DMG_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_BITED, -1);
+ mSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 0x1E);
+ }
+
+ if (checkBck(ANM_TRANS_NECK_DMG_e)) {
+ if (mpMorf->isStop()) {
+ setBck(ANM_TRANS_ATTACK_A2_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ }
+ } else if (checkBck(ANM_TRANS_ATTACK_A2_e) && mpMorf->checkFrame(22.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK2, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK2, 0, -1);
+ }
+
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ player->offWolfEnemyHangBite();
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 0);
+ return;
+ }
+
+ if (!player->checkWolfEnemyHangBiteOwn(this)) {
+ setBck(ANM_TRANS_NECK_PAT_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 3;
+ mGlowBody = 0;
+ }
+ break;
+ case 3:
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_TRANS_CHASE_e, 0);
+ return;
+ }
+ }
+
+ setDownPos(&sp38);
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2156,8 +4006,58 @@ asm void daE_VA_c::executeTransBiteDamage() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransBiteDamage__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C8860-807C8A84 006360 0224+00 1/1 0/0 0/0 .text executeTransDamage__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransDamage() {
+ if (checkWolfBiteDamage()) {
+ offWolfBiteDamage();
+ daPy_getPlayerActorClass()->offWolfEnemyHangBite();
+ }
+
+ switch (mMode) {
+ case 0:
+ field_0x138f++;
+ if (field_0x138f >= 5) {
+ setActionMode(ACTION_OPACI_WAIT_e, 0);
+ attention_info.flags = 0;
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+ return;
+ }
+
+ speedF = 0.0f;
+ setBck(ANM_TRANS_NECK_DMG_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_BITED, -1);
+
+ mMode = 1;
+ mGlowBody = 1;
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ mBodyCyls[0].SetTgType(0xD8FBFDFF);
+ mBodyCyls[1].SetTgType(0xD8FBFDFF);
+ /* fallthrough */
+ case 1:
+ if (mpMorf->isStop()) {
+ setBck(ANM_TRANS_NECK_PAT_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 2;
+ }
+ break;
+ case 2:
+ if (mpMorf->checkFrame(30.0f)) {
+ mGlowBody = 0;
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+ }
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_TRANS_CHASE_e, 0);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2166,8 +4066,31 @@ asm void daE_VA_c::executeTransDamage() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransDamage__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C8A84-807C8B78 006584 00F4+00 1/1 0/0 0/0 .text executeTransThrough__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeTransThrough() {
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ setBck(ANM_TRANS_THROUGH_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 1;
+ break;
+ case 1:
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_TRANS_CHASE_e, 0);
+ }
+ break;
+ }
+
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2176,8 +4099,133 @@ asm void daE_VA_c::executeTransThrough() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeTransThrough__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C8B78-807C915C 006678 05E4+00 2/1 0/0 0/0 .text executeOpaciWait__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciWait() {
+ dCamera_c* camera = dCam_getBody();
+ cXyz sp24;
+ cXyz sp30;
+
+ switch (mMode) {
+ case 0:
+ if (field_0x1486 == 0) {
+ field_0x1486 = 1;
+ mMode = 10;
+
+ if (!dComIfGs_isOneZoneSwitch(8, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onOneZoneSwitch(8, fopAcM_GetRoomNo(this));
+ }
+ } else {
+ mAlphaType = 2;
+ field_0x1380 = 30;
+ mGlowLightB = 0;
+ mGlowLightG = 0;
+ mGlowLightR = 0;
+ mKankyoColBlend = 1.0f;
+ mKankyoColType = 1;
+ field_0x1354 = 10;
+ attention_info.flags = 4;
+ mFadeAwayTimer = l_HIO.mFadeAwayTime;
+
+ speedF = 0.0f;
+ setActionMode(ACTION_OPACI_FLY_e, 22);
+ }
+
+ Z2GetAudioMgr()->changeSubBgmStatus(3);
+ break;
+ case 10:
+ if (!eventInfo.i_checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0);
+ eventInfo.i_onCondition(2);
+ } else {
+ mAlphaType = 2;
+ field_0x1380 = 30;
+ mGlowLightB = 0;
+ mGlowLightG = 0;
+ mGlowLightR = 0;
+ mKankyoColBlend = 1.0f;
+ mKankyoColType = 1;
+
+ setBck(ANM_TRANS_STRUGGLE_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_VISUAL, -1);
+ field_0x1354 = 10;
+ speedF = 0.0f;
+ mMode = 12;
+
+ sp24.set(200.0f, 0.0f, 100.0f);
+ daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp24, 0x8000, 0);
+ daPy_getPlayerActorClass()->changeOriginalDemo();
+ daPy_getPlayerActorClass()->changeDemoMode(0x17, 1, 0, 0);
+
+ camera->Stop();
+ camera->SetTrimSize(3);
+ field_0x14ac = -0x1000;
+ mDemoCamCenter.set(15.0f, 291.0f, 201.0f);
+ sp30.set(0.0f, 50.0f, 700.0f);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, field_0x14ac, &sp30);
+ mDemoCamBank = 70.0f;
+ field_0x14a4 = 0.0f;
+ }
+ break;
+ case 12:
+ current.pos.set(0.0f, 0.0f, 0.0f);
+ eyePos.set(15.0f, 291.0f, 201.0f);
+ current.angle.y = 0;
+ shape_angle.y = 0;
+ mMode = 13;
+ /* fallthrough */
+ case 13:
+ field_0x14a4++;
+ mDemoCamCenter = eyePos;
+
+ sp30.set(0.0f, field_0x14a4 + 50.0f, 700.0f);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, field_0x14ac, &sp30);
+ field_0x14ac += 80;
+
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+ cLib_addCalcAngleS(&shape_angle.y, -0x1000, 8, 0x100, 0x100);
+
+ if (mpMorf->checkFrame(90.0f)) {
+ mMode = 14;
+ dComIfGp_getVibration().StartQuake(2, 31, cXyz(0.0f, 1.0f, 0.0f));
+ field_0x14b0 = 180.0f;
+ }
+ break;
+ case 14:
+ cLib_addCalc2(&field_0x14b0, 0.0f, 1.0f, 6.0f);
+ mDemoCamCenter = eyePos;
+ cLib_chaseF(&mDemoCamBank, 30.0f, 5.0f);
+
+ camera->Set(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+
+ if (mpMorf->checkFrame(120.0f)) {
+ dComIfGp_getVibration().StopQuake(31);
+ }
+
+ if (mpMorf->isStop()) {
+ camera->Reset(mDemoCamCenter, mDemoCamEye);
+ camera->Start();
+ camera->SetTrimSize(0);
+ dComIfGp_event_reset();
+
+ mFadeAwayTimer = l_HIO.mFadeAwayTime;
+ attention_info.flags = 4;
+ setBck(ANM_SUBS_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 15;
+ mDemoModeTimer = 30;
+ }
+ break;
+ case 15:
+ if (mDemoModeTimer == 0) {
+ setActionMode(ACTION_OPACI_FLY_e, 0);
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2186,16 +4234,175 @@ asm void daE_VA_c::executeOpaciWait() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciWait__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807C915C-807C9A40 006C5C 08E4+00 2/1 0/0 0/0 .text executeOpaciFly__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciFly() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ s16 var_r31 = cM_atan2s(current.pos.x, current.pos.z);
+
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ mBodyCyls[0].SetTgType(0x16060);
+ mBodyCyls[1].SetTgType(0x16060);
+
+ switch (mMode) {
+ case 0:
+ case 20:
+ case 21:
+ case 22:
+ attention_info.flags = 0;
+
+ if (mMode == 0) {
+ setBck(ANM_FLOAT_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ } else if (mMode == 20) {
+ setBck(ANM_SUBS_DOWN_D_STAND_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DMG_L, -1);
+ } else if (mMode == 21) {
+ setBck(ANM_SUBS_DOWN_STAND_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ } else if (mMode == 22) {
+ setBck(ANM_TRANS_NECK_DMG_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_BITED, -1);
+ }
+
+ mMode = 1;
+ gravity = 0.0f;
+
+ s16 temp_r0 = shape_angle.y + 0x8000;
+ f32 temp_f29 = cM_scos(temp_r0) * 1000.0f;
+ f32 temp_f1 = cM_ssin(temp_r0) * 1000.0f;
+ field_0x12f8.set(temp_f1, 500.0f, temp_f29);
+ current.angle.y = temp_r0;
+
+ mDemoModeTimer = nREG_S(0) + 15;
+ /* fallthrough */
+ case 1:
+ if (mDemoModeTimer == 0 && !checkBck(ANM_FLOAT_WAIT_e)) {
+ setBck(ANM_FLOAT_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, nREG_F(19) + 30.0f, 1.0f);
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x800, 0x80);
+
+ s16 temp_r3 = cLib_targetAngleX(&current.pos, &field_0x12f8);
+ f32 temp_f31 = std::abs(cM_scos(temp_r3) * 20.0f);
+ f32 temp_f30 = cM_ssin(temp_r3) * 20.0f;
+
+ if (current.pos.y >= 500.0f) {
+ cLib_chaseF(&speed.y, 0.0f, 3.0f);
+ cLib_chaseF(&current.pos.y, 500.0f, 1.0f);
+ } else {
+ cLib_chaseF(&speed.y, temp_f30, 1.0f);
+ }
+
+ if (current.pos.absXZ() > 950.0f) {
+ field_0x12f8.set(current.pos.x, 500.0f, current.pos.z);
+ cLib_chaseF(&speedF, 0.0f, 3.0f);
+ } else {
+ cLib_chaseF(&speedF, temp_f31, 1.0f);
+ }
+
+ if (speed.y == 0.0f && speedF == 0.0f) {
+ mMode = 2;
+ }
+ break;
+ case 2:
+ mMode = 3;
+ mDemoModeTimer = 30;
+ field_0x1324 = 0;
+ mDownTimer = cM_rndF(60.0f) + 150.0f;
+ field_0x1348 = cM_rndF(30.0f) + 90.0f;
+ /* fallthrough */
+ case 3:
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x800, 0x80);
+
+ if (field_0x1324 != 0) {
+ current.angle.y = var_r31 + 0x4000;
+ } else {
+ current.angle.y = var_r31 - 0x4000;
+ }
+
+ cLib_chaseF(&speedF, 30.0f, 1.0f);
+
+ if (mDemoModeTimer == 0) {
+ mMode = 4;
+ }
+ break;
+ case 4:
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x800, 0x80);
+
+ if (field_0x1324 != 0) {
+ current.angle.y = var_r31 + 0x4000;
+ } else {
+ current.angle.y = var_r31 - 0x4000;
+ }
+
+ cLib_chaseF(&speedF, 0.0f, 1.0f);
+
+ if (!speedF) {
+ if (mFadeAwayTimer == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 1);
+ } else if (mDownTimer == 0 && current.pos.absXZ(player->current.pos) > 500.0f) {
+ mMode = 10;
+ } else {
+ mDemoModeTimer = 30;
+ mMode = 3;
+
+ if ((s16)(var_r31 - fopAcM_searchPlayerAngleY(this)) < 0) {
+ field_0x1324 = 0;
+ } else {
+ field_0x1324 = 1;
+ }
+ }
+ }
+ break;
+ case 10:
+ mDemoModeTimer = 30;
+ mMode = 11;
+ /* fallthrough */
+ case 11:
+ if (mDemoModeTimer == 0) {
+ setBck(ANM_FLOAT_ATTACK_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 12;
+ }
+ break;
+ case 12:
+ if (mpMorf->checkFrame(42.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_ATK_FLY, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK_FLY, -1);
+ }
+
+ if (mpMorf->checkFrame(62.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK_FLY2, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_ATK_FLY2, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(47.0f)) {
+ field_0x1228[0] = 1;
+ }
+
+ if (mpMorf->checkFrame(67.0f)) {
+ field_0x1228[1] = 1;
+ }
+
+ if (mpMorf->isStop()) {
+ setBck(ANM_FLOAT_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 2;
+ field_0x1348 = cM_rndF(30.0f) + 90.0f;
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeOpaciFly() {
- nofralloc
+asm void daE_VA_c::executeOpaciFly(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciFly__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE2C-807CEE30 000184 0004+00 0/0 0/0 0/0 .rodata @6999 */
@@ -2269,14 +4476,58 @@ COMPILER_STRIP_GATE(0x807CEE50, &lit_7291);
#pragma pop
/* 807C9A40-807C9C8C 007540 024C+00 1/1 0/0 0/0 .text executeOpaciDamage__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciDamage() {
+ switch (mMode) {
+ case 0:
+ attention_info.flags = 0;
+ mBodyCyls[0].SetTgType(0xD8FBFDFF);
+ mBodyCyls[1].SetTgType(0xD8FBFDFF);
+
+ setBck(ANM_FLOAT_DMG_A_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DOWN, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DMG, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_DOWN, 0, -1);
+
+ mMode = 1;
+ speedF = 0.0f;
+ /* fallthrough */
+ case 1:
+ if (mpMorf->isStop()) {
+ gravity = -5.0f;
+ maxFallSpeed = -50.0f;
+ mMode = 2;
+ setBck(ANM_FLOAT_DMG_B_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ }
+ break;
+ case 2:
+ if (mAcch.i_ChkGroundHit() || speed.y <= nREG_F(4) + -30.0f) {
+ setActionMode(ACTION_OPACI_CHASE_e, 0);
+ }
+ break;
+ case 10:
+ attention_info.flags = 0;
+ setBck(ANM_SUBS_STAGGER_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_NO_DMG, -1);
+ mMode = 11;
+ /* fallthrough */
+ case 11:
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_OPACI_FLY_e, 0);
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeOpaciDamage() {
- nofralloc
+asm void daE_VA_c::executeOpaciDamage(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciDamage__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE54-807CEE58 0001AC 0004+00 0/1 0/0 0/0 .rodata @7421 */
@@ -2301,14 +4552,153 @@ COMPILER_STRIP_GATE(0x807CEE5C, &lit_7423);
#pragma pop
/* 807C9C8C-807CA364 00778C 06D8+00 1/1 0/0 0/0 .text executeOpaciChase__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciChase() {
+ cXyz sp44;
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ s16 angleY_to_player = fopAcM_searchPlayerAngleY(this);
+ s16 angle_to_home = cLib_targetAngleY(&home.pos, &current.pos);
+
+ switch (mMode) {
+ case 0:
+ attention_info.flags = 0;
+ field_0x1330 = angle_to_home;
+ field_0x1332 = field_0x1330;
+ field_0x1334 = (f32)field_0x1332 + cM_rndF(3.0f) * 16384.0f;
+
+ if (cM_rnd() < 0.5f) {
+ field_0x1336 = -0x400;
+ } else {
+ field_0x1336 = 0x400;
+ }
+
+ field_0x1330 += field_0x1336;
+ mMode = 10;
+ mDownTimer = 30;
+
+ setBck(ANM_SUBS_FLY_e, J3DFrameCtrl::LOOP_REPEAT_e, 30.0f, 1.0f);
+ gravity = 0.0f;
+ field_0x1324 = 0;
+
+ sp44.set(0.0f, 0.0f, l_HIO.mCircleAttackRadius);
+ cLib_offsetPos(&field_0x12f8, &home.pos, field_0x1330, &sp44);
+ current.angle.y = cLib_targetAngleY(&current.pos, &field_0x12f8);
+ /* fallthrough */
+ case 10:
+ case 11:
+ field_0x1388 = 1;
+ mSound.startCreatureVoiceLevel(Z2SE_EN_VA_V_ROTATE, -1);
+
+ if (mDownTimer == 0 && !player->i_checkNowWolf()) {
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ }
+
+ switch (field_0x1324) {
+ case 0:
+ if (cLib_chaseF(&speed.y, nREG_F(0) + 25.0f, nREG_F(1) + 3.0f)) {
+ field_0x1324 = 1;
+ }
+ break;
+ case 1:
+ if (cLib_chaseF(&speed.y, nREG_F(3) + -40.0f, nREG_F(2) + 3.0f)) {
+ field_0x1324 = 0;
+ }
+
+ if (mAcch.i_ChkGroundHit()) {
+ field_0x1324 = 2;
+ gravity = -5.0f;
+ }
+ break;
+ case 2:
+ break;
+ }
+
+ cLib_chaseF(&speedF, 100.0f, 3.0f);
+
+ sp44.set(0.0f, 0.0f, l_HIO.mCircleAttackRadius);
+ cLib_offsetPos(&field_0x12f8, &home.pos, field_0x1330, &sp44);
+
+ if (current.pos.absXZ() > nREG_F(19) + 1200.0f) {
+ s16 temp_r26 = cM_atan2s(current.pos.x, current.pos.z);
+
+ current.pos.x = (nREG_F(19) + 1200.0f) * cM_ssin(temp_r26);
+ current.pos.z = (nREG_F(19) + 1200.0f) * cM_scos(temp_r26);
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, angleY_to_player, 8, 0x800, 0x80);
+ cLib_addCalcAngleS(&current.angle.y, (s16)cLib_targetAngleY(&current.pos, &field_0x12f8), 8,
+ 0x800, 0x80);
+
+ if (abs((s16)(field_0x1330 - angle_to_home)) < 0x2000) {
+ s16 var_r29 = field_0x1330;
+ field_0x1330 += field_0x1336;
+
+ if (mMode == 10) {
+ if (abs((s16)(field_0x1332 - field_0x1330)) <= abs(field_0x1336)) {
+ if (abs((s16)(field_0x1332 - var_r29)) <= abs(field_0x1336)) {
+ if (field_0x1332 == field_0x1334) {
+ mMode = 12;
+ } else {
+ mMode = 11;
+ }
+ }
+ }
+ } else {
+ if (abs((s16)(field_0x1334 - field_0x1330)) <= abs(field_0x1336)) {
+ mMode = 12;
+ attention_info.flags = 4;
+ }
+ }
+ }
+ break;
+ case 12:
+ mSound.startCreatureVoiceLevel(Z2SE_EN_VA_V_ROTATE, -1);
+
+ if (!player->i_checkNowWolf()) {
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ }
+
+ field_0x1388 = 1;
+ cLib_addCalcAngleS(&shape_angle.y, angleY_to_player, 8, 0x800, 0x80);
+ cLib_addCalcAngleS(&current.angle.y, angleY_to_player, 8, 0x800, 0x80);
+
+ if (fopAcM_searchPlayerDistance(this) > l_HIO.mAttackRange) {
+ cLib_chaseF(&speedF, 100.0f, 3.0f);
+ } else if (fopAcM_searchPlayerDistance(this) < l_HIO.mAttackRange - 300.0f) {
+ cLib_chaseF(&speedF, -30.0f, 3.0f);
+ } else {
+ mMode = 13;
+ }
+ break;
+ case 13:
+ mSound.startCreatureVoiceLevel(Z2SE_EN_VA_V_ROTATE, -1);
+
+ if (!player->i_checkNowWolf()) {
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, angleY_to_player, 8, 0x800, 0x80);
+ cLib_addCalcAngleS(&current.angle.y, angleY_to_player, 8, 0x800, 0x80);
+
+ if (cLib_chaseF(&speedF, 0.0f, 3.0f)) {
+ setActionMode(ACTION_OPACI_ATTACK_e, 0);
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeOpaciChase() {
- nofralloc
+asm void daE_VA_c::executeOpaciChase(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciChase__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE60-807CEE64 0001B8 0004+00 0/0 0/0 0/0 .rodata @7424 */
@@ -2340,6 +4730,75 @@ COMPILER_STRIP_GATE(0x807CEE6C, &lit_7511);
#pragma pop
/* 807CA364-807CA73C 007E64 03D8+00 1/1 0/0 0/0 .text executeOpaciAttack__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciAttack() {
+ f32 anm_frame = mpMorf->getFrame();
+
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OnTgSetBit();
+
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ setBck(ANM_SUBS_ATTACK_A1_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK_T, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK1, -1);
+ mMode = 1;
+ /* fallthrough */
+ case 1:
+ if (mpMorf->checkFrame(22.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK1, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(27.0f)) {
+ setWeponLandEffect();
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_IMPACT, 0, -1);
+ dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f));
+ }
+
+ if (anm_frame < 16.0f) {
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x800, 0x80);
+ current.angle.y = shape_angle.y;
+ }
+
+ if (20.0f <= anm_frame && anm_frame <= 33.0f) {
+ onSwordAtBit();
+ } else if (anm_frame > 33.0f) {
+ offSwordShield();
+ field_0x1386 = 1;
+ }
+
+ if (mpMorf->isStop()) {
+ setBck(ANM_SUBS_ATTACK_A3_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ mMode = 2;
+ }
+ break;
+ case 2:
+ if (mpMorf->checkFrame(12.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK3, 0, -1);
+ }
+
+ if (mpMorf->getFrame() <= 15.0f) {
+ offSwordShield();
+ field_0x1386 = 1;
+ }
+
+ if (mpMorf->isStop()) {
+ if (mFadeAwayTimer == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 1);
+ return;
+ }
+
+ setActionMode(ACTION_OPACI_FLY_e, 0);
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2348,8 +4807,84 @@ asm void daE_VA_c::executeOpaciAttack() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciAttack__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CA73C-807CAA80 00823C 0344+00 1/1 0/0 0/0 .text executeOpaciDown__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciDown() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ mBodyCyls[1].OnTgSetBit();
+
+ switch (mMode) {
+ case 0:
+ setBck(ANM_SUBS_DOWN_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mDownTimer = l_HIO.mDownTime;
+ mMode = 2;
+ speedF = 0.0f;
+ field_0x1383 = 0;
+ attention_info.flags = 4;
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DMG_L, -1);
+ dComIfGs_onOneZoneSwitch(6, fopAcM_GetRoomNo(this));
+ /* fallthrough */
+ case 2:
+ if (mpMorf->getFrame() < 40.0f) {
+ mBodyCyls[1].OffTgSetBit();
+ }
+
+ if (mpMorf->isStop()) {
+ setBck(ANM_SUBS_DOWN_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 3;
+ }
+ break;
+ case 1:
+ setBck(ANM_SUBS_DOWN_WAIT_e, J3DFrameCtrl::LOOP_REPEAT_e, 3.0f, 1.0f);
+ mMode = 3;
+ /* fallthrough */
+ case 3:
+ if (mpMorf->checkFrame(1.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DYING, -1);
+ }
+
+ if (mFadeAwayTimer == 0) {
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ setActionMode(ACTION_OPACI_FADE_AWAY_e, 2);
+ } else if (mDownTimer == 0) {
+ setActionMode(ACTION_OPACI_FLY_e, 21);
+ }
+ break;
+ case 5:
+ field_0x1364 += field_0x1368;
+
+ if ((f32)field_0x1364 > l_HIO.mDownHP || field_0x1384 >= 6) {
+ setActionMode(ACTION_OPACI_DEATH_e, 0);
+ field_0x1381 = 1;
+ return;
+ }
+
+ setActionMode(ACTION_OPACI_FLY_e, 20);
+ break;
+ case 4:
+ mBodyCyls[1].OffTgSetBit();
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_OPACI_FLY_e, 0);
+ return;
+ }
+ break;
+ }
+
+ if (player->getCutCount() > 1 || player->getCutType() == 10) {
+ if (mFadeAwayTimer < 30) {
+ mFadeAwayTimer = 30;
+ }
+
+ if (mDownTimer < 30) {
+ mDownTimer = 30;
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2358,9 +4893,63 @@ asm void daE_VA_c::executeOpaciDown() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciDown__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CAA80-807CACE0 008580 0260+00 1/1 0/0 0/0 .text executeOpaciDownDamage__8daE_VA_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciDownDamage() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+
+ if (player->getCutCount() > 1 || player->getCutType() == 10) {
+ if (mFadeAwayTimer < 30) {
+ mFadeAwayTimer = 30;
+ }
+
+ if (mDownTimer < 30) {
+ mDownTimer = 30;
+ }
+ }
+
+ if (mFadeAwayTimer != 0 && mDownTimer != 0) {
+ mBodyCyls[1].OnTgSetBit();
+ }
+
+ switch (mMode) {
+ case 0:
+ case 1:
+ case 2:
+ speedF = 0.0f;
+ field_0x1364 += field_0x1368;
+
+ if ((f32)field_0x1364 > l_HIO.mDownHP) {
+ setActionMode(ACTION_OPACI_DEATH_e, 0);
+ field_0x1381 = 1;
+ return;
+ }
+
+ if (mMode == 0) {
+ setBck(ANM_SUBS_DOWN_DMG_A1_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DMG, -1);
+ } else if (mMode == 1) {
+ setBck(ANM_SUBS_DOWN_DMG_A2_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DMG, -1);
+ } else {
+ setBck(ANM_SUBS_DOWN_STAGGER_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_NO_DMG, -1);
+ }
+
+ mMode = 5;
+ case 5:
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_OPACI_DOWN_e, 1);
+ field_0x1381 = 1;
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2369,8 +4958,25 @@ asm void daE_VA_c::executeOpaciDownDamage() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciDownDamage__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CACE0-807CADB8 0087E0 00D8+00 1/1 0/0 0/0 .text executeOpaciFlip__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciFlip() {
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ mMode = 1;
+ daPy_getPlayerActorClass()->setThrowDamage(shape_angle.y, 20.0f, 40.0f, 1, 0, 0);
+ /* fallthrough */
+ case 1:
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_OPACI_CHASE_e, 0);
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2379,17 +4985,101 @@ asm void daE_VA_c::executeOpaciFlip() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciFlip__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CADB8-807CB1C4 0088B8 040C+00 2/1 0/0 0/0 .text executeOpaciFadeAway__8daE_VA_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciFadeAway() {
+ attention_info.flags = 0;
+ mBodyCylIFrameTimer = 3;
+ mNeckSphIFrameTimer = 3;
+ mAttackSphIFrameTimer = 3;
+
+ switch (mMode) {
+ case 10:
+ if (checkBck(ANM_TRANS_ATTACK_A3_e)) {
+ if (mpMorf->checkFrame(20.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK2, 0, -1);
+ }
+
+ if (mpMorf->checkFrame(53.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_VA_SWD_ATK3, 0, -1);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_ATK3, -1);
+ }
+ }
+
+ mAlphaType = 0;
+ speedF = 0.0f;
+
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_CLEAR_WAIT_e, 0);
+ }
+ break;
+ case 0:
+ mAlphaType = 0;
+ speedF = 0.0f;
+ setActionMode(ACTION_CLEAR_WAIT_e, 0);
+ break;
+ case 1:
+ if (checkBck(ANM_SUBS_INVITE_B_e)) {
+ setBck(ANM_SUBS_INVITE_C_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mMode = 5;
+ } else {
+ setBck(ANM_SUBS_TO_TRANS_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_VANISH, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_VANISH, 0, -1);
+ mAlphaType = 3;
+ mMode = 4;
+ mKankyoColType = 2;
+ }
+
+ speed.y = 0.0f;
+ speedF = 0.0f;
+ break;
+ case 2:
+ setBck(ANM_SUBS_DOWN_STAND_e, J3DFrameCtrl::LOOP_ONCE_e, 10.0f, 1.0f);
+ mMode = 3;
+ speedF = 0.0f;
+ break;
+ case 3:
+ if (mpMorf->isStop()) {
+ setBck(ANM_SUBS_TO_TRANS_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_VANISH, -1);
+ mSound.startCreatureSound(Z2SE_EN_VA_VANISH, 0, -1);
+ mMode = 4;
+ mAlphaType = 3;
+ mKankyoColType = 2;
+ }
+ break;
+ case 4:
+ cLib_addCalc(&current.pos.y, 0.0f, 0.1f, 10.0f, 1.0f);
+ if (mpMorf->isStop()) {
+ setActionMode(ACTION_CLEAR_WAIT_e, 1);
+ current.pos.y = 0.0f;
+ }
+ break;
+ case 5:
+ if (mpMorf->isStop()) {
+ mMode = 1;
+ }
+ break;
+ }
+
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp() && field_0x1358 == 0) {
+ setActionMode(ACTION_TRANS_WAIT_e, 0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeOpaciFadeAway() {
- nofralloc
+asm void daE_VA_c::executeOpaciFadeAway(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciFadeAway__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE70-807CEE74 0001C8 0004+00 0/2 0/0 0/0 .rodata @7919 */
@@ -2421,14 +5111,161 @@ COMPILER_STRIP_GATE(0x807CEE7C, &lit_7922);
#pragma pop
/* 807CB1C4-807CB8CC 008CC4 0708+00 2/1 0/0 0/0 .text executeOpaciDeath__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::executeOpaciDeath() {
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ cXyz sp24;
+ cXyz sp30;
+
+ mBodyCyls[0].OffTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+
+ switch (mMode) {
+ case 0:
+ if (!eventInfo.i_checkCommandDemoAccrpt()) {
+ fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0);
+ eventInfo.i_onCondition(2);
+ return;
+ }
+
+ Z2GetAudioMgr()->subBgmStop();
+ Z2GetAudioMgr()->i_muteSceneBgm(0, 0.0f);
+
+ dComIfGs_onStageMiddleBoss();
+ field_0x1364 = 0;
+
+ setBck(ANM_SUBS_DOWN_DIE_e, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_VA_V_DEAD, -1);
+ mMode = 10;
+
+ player->changeOriginalDemo();
+
+ sp30.set(0.0f, 0.0f, 350.0f);
+ player->setPlayerPosAndAngle(&sp30, 0x8000, 0);
+ player->changeDemoMode(4, 1, 0, 0);
+
+ camera->mCamera.Stop();
+ camera->mCamera.SetTrimSize(3);
+
+ mDemoCamCenter.set(-54.0f, 168.0f, 207.0f);
+ field_0x14ac = -0x1800;
+ field_0x14a4 = 600.0f;
+
+ sp24.set(0.0f, 0.0f, field_0x14a4);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x14ac, &sp24);
+ mDemoCamEye.y = 50.0f;
+ mDemoCamBank = 70.0f;
+ return;
+ case 10:
+ current.pos.set(0.0f, 0.0f, 0.0f);
+ eyePos.set(-54.0f, 168.0f, 207.0f);
+ shape_angle.y = 0;
+ current.angle.y = 0;
+ mMode = 1;
+ case 1:
+ mDemoCamCenter = eyePos;
+ mDemoCamCenter.y -= 50.0f;
+ field_0x14ac += 0x40;
+
+ sp24.set(0.0f, 0.0f, field_0x14a4);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x14ac, &sp24);
+ mDemoCamEye.y = 50.0f;
+
+ if (mpMorf->checkFrame(155.0f)) {
+ mMode = 2;
+ mDemoModeTimer = 60;
+
+ sp30.set(0.0f, 0.0f, 350.0f);
+ player->setPlayerPosAndAngle(&sp30, 0x8000, 0);
+
+ field_0x14a4 = 400.0f;
+ sp24.set(0.0f, 0.0f, field_0x14a4);
+ cLib_offsetPos(&mDemoCamEye, &current.pos, shape_angle.y + field_0x14ac, &sp24);
+ mDemoCamEye.y = 50.0f;
+ }
+ break;
+ case 2:
+ mDemoCamCenter = eyePos;
+ mDemoCamCenter.y -= 50.0f;
+
+ if (mpMorf->isStop()) {
+ mDoMtx_stack_c::copy(mpWeaponModel->getBaseTRMtx());
+ mDoMtx_stack_c::transM(-10.0f, 160.0f, 15.0f);
+ mDoMtx_stack_c::multVecZero(&sp30);
+
+ fopAcM_createDisappear(this, &sp30, 20, 0, 0xFF);
+ mDemoModeTimer = 120;
+ mMode = 3;
+ mPlayEndEf = true;
+
+ mpEndEfMorf->setFrame(0.0f);
+ mpEndEfBrk->setFrame(0.0f);
+ mpEndEfBrk->setPlaySpeed(1.0f);
+ mDownTimer = 100;
+
+ setBugsEffect();
+ mSound.startCreatureSound(Z2SE_EN_VA_END, 0, -1);
+ mKankyoColBlend = 0.0f;
+ mKankyoColType = 3;
+ }
+ break;
+ case 3:
+ mDemoCamCenter = eyePos;
+ mDemoCamCenter.y -= 50.0f;
+
+ if (mDownTimer == 0) {
+ field_0x1388 = 1;
+ }
+
+ if (mDownTimer == 80) {
+ field_0x1240 = 2;
+ mWeponEfMode = 0;
+ }
+
+ if (mDemoModeTimer == 0) {
+ field_0x122c = mDemoCamCenter;
+ mMode = 4;
+ mDemoModeTimer = 150;
+ }
+ break;
+ case 4:
+ if (mDownTimer == 0) {
+ field_0x1388 = 1;
+ }
+
+ mDemoCamCenter = field_0x122c;
+ mDemoCamCenter.y += 10.0f;
+
+ if (mDemoModeTimer == 0) {
+ camera->mCamera.Reset(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+ camera->mCamera.Start();
+ camera->mCamera.SetTrimSize(0);
+ dComIfGp_event_reset();
+
+ if (mSwNo != 0xFF && !dComIfGs_isSwitch(mSwNo, fopAcM_GetRoomNo(this))) {
+ dComIfGs_onSwitch(mSwNo, fopAcM_GetRoomNo(this));
+ }
+
+ Z2GetAudioMgr()->i_unMuteSceneBgm(45);
+ fopAcM_delete(this);
+ return;
+ }
+ break;
+ }
+
+ camera->mCamera.Set(mDemoCamCenter, mDemoCamEye, mDemoCamBank, 0);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::executeOpaciDeath() {
- nofralloc
+asm void daE_VA_c::executeOpaciDeath(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/executeOpaciDeath__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE80-807CEE84 0001D8 0004+00 0/0 0/0 0/0 .rodata @7923 */
@@ -2446,14 +5283,70 @@ COMPILER_STRIP_GATE(0x807CEE84, &lit_8008);
#pragma pop
/* 807CB8CC-807CBC00 0093CC 0334+00 1/1 0/0 0/0 .text calcMagicMove__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::calcMagicMove() {
+ for (int i = 0; i < 2; i++) {
+ switch (field_0x1228[i]) {
+ case 0:
+ mMagicSphs[i].OffAtSetBit();
+ break;
+ case 1:
+ mMagicSphs[i].OnAtSetBit();
+ field_0x1228[i] = 2;
+
+ mDoMtx_stack_c::copy(mpWeaponModel->getBaseTRMtx());
+ mDoMtx_stack_c::transM(-30.0f, 320.0f, 65.0f);
+ mDoMtx_stack_c::multVecZero(&mMagicPos[i]);
+ mMagicOldPos[i] = mMagicPos[i];
+
+ mMagicAcch[i].i_ClrGroundHit();
+ mMagicAcch[i].ClrWallHit();
+ mMagicSphs[i].ClrAtHit();
+
+ cXyz sp5C(daPy_getPlayerActorClass()->current.pos);
+
+ s16 spA = cLib_targetAngleY(&mMagicPos[i], &sp5C);
+ s16 sp8 = cLib_targetAngleX(&mMagicPos[i], &sp5C);
+
+ f32 temp_f31 = std::abs(cM_scos(sp8) * 50.0f);
+ mMagicSpeed[i].set(temp_f31 * cM_ssin(spA), cM_ssin(sp8) * 50.0f,
+ temp_f31 * cM_scos(spA));
+ /* fallthrough */
+ case 2:
+ Z2GetAudioMgr()->seStartLevel(Z2SE_EN_VA_ATK_BALL, &mMagicPos[i], 0, 0, 1.0f, 1.0f,
+ -1.0f, -1.0f, 0);
+ setMagicEffect(i);
+ mMagicSphs[i].SetC(mMagicPos[i]);
+ mMagicSphs[i].SetR(50.0f);
+ dComIfG_Ccsp()->Set(&mMagicSphs[i]);
+
+ if (mMagicAcch[i].i_ChkGroundHit() || mMagicAcch[i].ChkWallHit() ||
+ mMagicSphs[i].ChkAtHit())
+ {
+ Z2GetAudioMgr()->seStart(Z2SE_EN_VA_FIRE_BURST, &mMagicPos[i], 0, 0, 1.0f, 1.0f,
+ -1.0f, -1.0f, 0);
+ mMagicPos[i].y = 0.0f;
+ setMagicHitEffect(i);
+ field_0x1228[i] = 0;
+ }
+
+ mMagicOldPos[i] = mMagicPos[i];
+ mMagicPos[i] += mMagicSpeed[i];
+ mMagicAcch[i].CrrPos(dComIfG_Bgsp());
+ break;
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::calcMagicMove() {
- nofralloc
+asm void daE_VA_c::calcMagicMove(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/calcMagicMove__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE88-807CEE8C 0001E0 0004+00 0/1 0/0 0/0 .rodata @8089 */
@@ -2464,6 +5357,85 @@ COMPILER_STRIP_GATE(0x807CEE88, &lit_8089);
#pragma pop
/* 807CBC00-807CC004 009700 0404+00 1/1 0/0 0/0 .text setAlphaType__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::setAlphaType() {
+ switch (mAlphaType) {
+ case 0:
+ case 3:
+ cLib_chaseUC(&mGlowLightA, 0, 4);
+ cLib_chaseUC(&mEyeAlpha, 0, 4);
+ field_0x1380 = 0;
+
+ if (mAlphaType == 3 && mGlowLightA == 0) {
+ mAlphaType = 0;
+ }
+
+ cLib_chaseUC(&mGlowLightR, 0, 8);
+ cLib_chaseUC(&mGlowLightG, 0, 8);
+ cLib_chaseUC(&mGlowLightB, 0, 8);
+
+ if (mAlphaType == 0) {
+ cLib_chaseUC(&mFootSmokeAlpha, 0, 27);
+ } else if (mFootSmokeAlpha < 33) {
+ cLib_chaseUC(&mFootSmokeAlpha, 0, 1);
+ } else {
+ cLib_chaseUC(&mFootSmokeAlpha, 0, 10);
+ }
+
+ field_0x138f = 0;
+
+ mNeckSph.OffTgSetBit();
+ for (int i = 0; i < 3; i++) {
+ mBodyCyls[i].OffCoSetBit();
+ mBodyCyls[i].OffTgSetBit();
+ mBodyCyls[i].OnTgNoHitMark();
+ }
+ break;
+ case 1:
+ if (mGlowBody) {
+ cLib_chaseUC(&mGlowLightR, l_HIO.mKRegLightR, (u8)(l_HIO.mKRegLightR / 10.0f));
+ cLib_chaseUC(&mGlowLightG, l_HIO.mKRegLightG, (u8)(l_HIO.mKRegLightG / 10.0f));
+ cLib_chaseUC(&mGlowLightB, l_HIO.mKRegLightB, (u8)(l_HIO.mKRegLightB / 10.0f));
+ cLib_chaseUC(&mGlowLightA, l_HIO.mKRegLightA,
+ (u8)((l_HIO.mKRegLightA - 128.0f) / 10.0f));
+ } else {
+ cLib_chaseUC(&mGlowLightR, 0, (u8)(l_HIO.mKRegLightR / 20.0f));
+ cLib_chaseUC(&mGlowLightG, 0, (u8)(l_HIO.mKRegLightG / 20.0f));
+ cLib_chaseUC(&mGlowLightB, 0, (u8)(l_HIO.mKRegLightB / 20.0f));
+ cLib_chaseUC(&mGlowLightA, 0x80, 8);
+ }
+
+ cLib_chaseUC(&mEyeAlpha, 0, 4);
+ field_0x1380 = 0;
+ cLib_chaseUC(&mFootSmokeAlpha, 180, 8);
+
+ mNeckSph.OnTgSetBit();
+ mBodyCyls[0].OnTgSetBit();
+ mBodyCyls[1].OffTgSetBit();
+ mBodyCyls[2].OffTgSetBit();
+
+ for (int i = 0; i < 3; i++) {
+ mBodyCyls[i].OffCoSetBit();
+ mBodyCyls[i].OnTgNoHitMark();
+ }
+ break;
+ case 2:
+ cLib_chaseUC(&mGlowLightA, 0xFF, 4);
+ cLib_chaseUC(&mEyeAlpha, 0xFF, 8);
+ cLib_chaseUC(&field_0x1380, 0, 1);
+ cLib_chaseUC(&mFootSmokeAlpha, 0xFF, 4);
+
+ mNeckSph.OffTgSetBit();
+ for (int i = 0; i < 3; i++) {
+ mBodyCyls[i].OnCoSetBit();
+ mBodyCyls[i].OffTgNoHitMark();
+ mBodyCyls[i].OffTgSetBit();
+ }
+ break;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2472,16 +5444,190 @@ asm void daE_VA_c::setAlphaType() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setAlphaType__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CC004-807CC4D0 009B04 04CC+00 2/1 0/0 0/0 .text action__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::action() {
+ field_0x1391 = 0;
+ setAlphaType();
+ damage_check();
+
+ for (int i = 0; i < 4; i++) {
+ mAttackSphs[i].OffAtSetBit();
+
+ if (mGlowBody && i == 0) {
+ mAttackSphs[i].OffCoSetBit();
+ mAttackSphs[i].OffTgShield();
+ mAttackSphs[i].OnTgNoHitMark();
+ } else {
+ mAttackSphs[i].OnCoSetBit();
+
+ if (mOffTgTimer != 0) {
+ mAttackSphs[i].OffTgShield();
+ mAttackSphs[i].OnTgNoHitMark();
+ } else {
+ mAttackSphs[i].OnTgShield();
+ mAttackSphs[i].OffTgNoHitMark();
+ }
+ }
+ }
+
+ BOOL var_r29 = true;
+ field_0x1386 = 0;
+ field_0x1388 = 0;
+
+ switch (mAction) {
+ case ACTION_DEMO_OP_WAIT_e:
+ executeDemoOpWait();
+ var_r29 = false;
+ break;
+ case ACTION_DEMO_OP_e:
+ executeDemoOp();
+ var_r29 = false;
+ break;
+ case ACTION_CLEAR_WAIT_e:
+ executeClearWait();
+ break;
+ case ACTION_CLEAR_CHASE_e:
+ executeClearChase();
+ break;
+ case ACTION_CLEAR_ATTACK_e:
+ executeClearAttack();
+ break;
+ case ACTION_TRANS_WAIT_e:
+ executeTransWait();
+ break;
+ case ACTION_TRANS_CHASE_e:
+ executeTransChase();
+ break;
+ case ACTION_TRANS_ATTACK_e:
+ executeTransAttack();
+ break;
+ case ACTION_TRANS_BITE_DAMAGE_e:
+ executeTransBiteDamage();
+ break;
+ case ACTION_TRANS_DAMAGE_e:
+ executeTransDamage();
+ break;
+ case ACTION_TRANS_THROUGH_e:
+ executeTransThrough();
+ break;
+ case ACTION_OPACI_WAIT_e:
+ executeOpaciWait();
+ break;
+ case ACTION_OPACI_FLY_e:
+ executeOpaciFly();
+ break;
+ case ACTION_OPACI_DOWN_e:
+ executeOpaciDown();
+ break;
+ case ACTION_OPACI_DOWN_DAMAGE_e:
+ executeOpaciDownDamage();
+ break;
+ case ACTION_OPACI_CHASE_e:
+ executeOpaciChase();
+ break;
+ case ACTION_OPACI_ATTACK_e:
+ executeOpaciAttack();
+ break;
+ case ACTION_OPACI_DAMAGE_e:
+ executeOpaciDamage();
+ break;
+ case ACTION_OPACI_FLIP_e:
+ executeOpaciFlip();
+ break;
+ case ACTION_OPACI_FADE_AWAY_e:
+ executeOpaciFadeAway();
+ break;
+ case ACTION_OPACI_DEATH_e:
+ executeOpaciDeath();
+ break;
+ }
+
+ if (var_r29) {
+ daPy_getPlayerActorClass()->onBossRoomWait();
+ }
+
+ if (!field_0x138e) {
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp()) {
+ field_0x1358 = 20;
+ field_0x138e = 1;
+ }
+ } else {
+ if (!daPy_getPlayerActorClass()->checkNowWolfEyeUp()) {
+ field_0x1358 = 20;
+ field_0x138e = 0;
+ }
+ }
+
+ fopAcM_posMoveF(this, mBodyCcStts.GetCCMoveP());
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ switch (mKankyoColType) {
+ case 0:
+ if (daPy_getPlayerActorClass()->checkNowWolfEyeUp()) {
+ cLib_chaseF(&mKankyoColBlend, 1.0f, 0.1f);
+ } else {
+ cLib_chaseF(&mKankyoColBlend, 0.0f, 0.1f);
+ }
+
+ dKy_custom_colset(2, 0, mKankyoColBlend);
+ break;
+ case 1:
+ cLib_chaseF(&mKankyoColBlend, 1.0f, 0.1f);
+ dKy_custom_colset(0, 1, mKankyoColBlend);
+ break;
+ case 2:
+ cLib_chaseF(&mKankyoColBlend, 0.0f, 0.1f);
+ dKy_custom_colset(2, 1, mKankyoColBlend);
+
+ if (!mKankyoColBlend) {
+ mKankyoColType = 0;
+ }
+ break;
+ case 3:
+ cLib_chaseF(&mKankyoColBlend, 1.0f, 0.01f);
+ dKy_custom_colset(1, 4, mKankyoColBlend);
+ break;
+ case 4:
+ cLib_chaseF(&mKankyoColBlend, 1.0f, 0.01f);
+ /* fallthrough */
+ case 5:
+ dKy_custom_colset(3, 2, mKankyoColBlend);
+
+ if (mKankyoColBlend == 1.0f) {
+ mKankyoColType = 0;
+ mKankyoColBlend = 0.0f;
+ }
+ break;
+ }
+
+ s16 spC = shape_angle.y - current.angle.y;
+ s16 target_x = (speedF * 128.0f) * cM_scos(spC);
+ s16 target_z = (speedF * 128.0f) * cM_ssin(spC);
+
+ cLib_addCalcAngleS(&field_0x1304.x, target_x, 8, 0x400, 0x40);
+ cLib_addCalcAngleS(&field_0x1304.z, target_z, 8, 0x400, 0x40);
+
+ mpMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ if (mPlayEndEf) {
+ mpEndEfMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+ }
+
+ mpWeaponBrk->play();
+ mpEndEfBrk->play();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::action() {
- nofralloc
+asm void daE_VA_c::action(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/action__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE8C-807CEE90 0001E4 0004+00 0/1 0/0 0/0 .rodata @8318 */
@@ -2492,14 +5638,95 @@ COMPILER_STRIP_GATE(0x807CEE8C, &lit_8318);
#pragma pop
/* 807CC4D0-807CC864 009FD0 0394+00 1/1 0/0 0/0 .text mtx_set__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::mtx_set() {
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::ZXYrotM(shape_angle);
+ mDoMtx_stack_c::transM(0.0f, 300.0f, 0.0f);
+ mDoMtx_stack_c::ZXYrotM(field_0x1304);
+ mDoMtx_stack_c::transM(0.0f, -300.0f, 0.0f);
+ mDoMtx_stack_c::scaleM(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ J3DModel* model = mpMorf->getModel();
+ model->setBaseTRMtx(mDoMtx_stack_c::get());
+
+ if (mPlayEndEf) {
+ mpEndEfMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mpEndEfMorf->modelCalc();
+ }
+
+ field_0x138b = 0;
+ mpMorf->modelCalc();
+ calcJointSleeve();
+
+ field_0x138b = 1;
+ mpMorf->modelCalc();
+
+ if (!mRopesEnabled) {
+ if (mpWeaponModel != NULL) {
+ mpWeaponModel->setBaseTRMtx(model->getAnmMtx(JNT_KEN_2));
+ }
+ } else {
+ if (mpWeaponModel != NULL) {
+ switch (field_0x1240) {
+ case 0:
+ mDoMtx_stack_c::transS(field_0x122c);
+ mDoMtx_stack_c::transM(0.0f, 150.0f, 0.0f);
+ mDoMtx_stack_c::ZXYrotM(field_0x1238);
+ mDoMtx_stack_c::transM(0.0f, -150.0f, 0.0f);
+ mDoMtx_stack_c::transM(0.0f, 400.0f, 0.0f);
+ mDoMtx_stack_c::XrotM(field_0x123e);
+ mDoMtx_stack_c::transM(0.0f, -400.0f, 0.0f);
+ mDoMtx_stack_c::scaleM(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+ mpWeaponModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ break;
+ case 1:
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_KEN_2));
+ mpWeaponModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVecZero(&field_0x122c);
+ break;
+ }
+ }
+
+ cXyz sp34;
+ cXyz sp40;
+ for (int i = 0; i < 40; i++) {
+ f32 var_f31;
+ switch (mCardFlags[i] & 3) {
+ case 0:
+ var_f31 = 80.0f;
+ break;
+ case 1:
+ var_f31 = 50.0f;
+ break;
+ case 2:
+ var_f31 = 25.0f;
+ break;
+ }
+
+ int idx = va_tag_set_num[i];
+ sp34 = field_0x994[idx + 1] - field_0x994[idx];
+ sp34.normalizeZP();
+ sp40 = field_0x994[idx] + (sp34 * va_tag_offset[i]);
+
+ mDoMtx_stack_c::transS(sp40);
+ mDoMtx_stack_c::ZXYrotM(field_0x660[i]);
+ mDoMtx_stack_c::transM(0.0f, -var_f31, 0.0f);
+ mDoMtx_stack_c::XrotM(0x4000);
+ mpCardModels[i]->setBaseTRMtx(mDoMtx_stack_c::get());
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::mtx_set() {
- nofralloc
+asm void daE_VA_c::mtx_set(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/mtx_set__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 807CEE90-807CEE94 0001E8 0004+00 0/1 0/0 0/0 .rodata @8471 */
@@ -2524,6 +5751,107 @@ COMPILER_STRIP_GATE(0x807CEE98, &lit_8473);
#pragma pop
/* 807CC864-807CCD24 00A364 04C0+00 1/1 0/0 0/0 .text cc_set__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daE_VA_c::cc_set() {
+ cXyz sp24;
+
+ if (mGlowLightA != 0) {
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD));
+ mDoMtx_stack_c::multVecZero(&eyePos);
+ attention_info.position = eyePos;
+ attention_info.position.y += 50.0f;
+ } else {
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_KEN_2));
+ mDoMtx_stack_c::transM(-20.0f, 350.0f, 50.0f);
+ mDoMtx_stack_c::multVecZero(&eyePos);
+ attention_info.position = eyePos;
+ attention_info.position.y += 30.0f;
+ }
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK_02));
+ mDoMtx_stack_c::transM(0.0f, 40.0f, 0.0f);
+ mDoMtx_stack_c::multVecZero(&sp24);
+
+ mNeckSph.SetC(sp24);
+ if (mGlowBody) {
+ mNeckSph.SetR(nREG_F(7) + 70.0f);
+ } else {
+ mNeckSph.SetR(50.0f);
+ }
+
+ dComIfG_Ccsp()->Set(&mNeckSph);
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_ROOT));
+ mDoMtx_stack_c::transM(0.0f, 0.0f, 0.0f);
+ mDoMtx_stack_c::multVecZero(&sp24);
+ mBodyCyls[0].SetC(sp24);
+ mBodyCyls[0].SetH(200.0f);
+
+ if (mGlowBody) {
+ mBodyCyls[0].SetR(75.0f);
+ } else {
+ mBodyCyls[0].SetR(100.0f);
+ }
+
+ dComIfG_Ccsp()->Set(&mBodyCyls[0]);
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK_02));
+ mDoMtx_stack_c::multVecZero(&sp24);
+ sp24.y -= 50.0f;
+
+ mBodyCyls[1].SetC(sp24);
+ mBodyCyls[1].SetH(100.0f);
+ mBodyCyls[1].SetR(80.0f);
+ dComIfG_Ccsp()->Set(&mBodyCyls[1]);
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK_02));
+ mDoMtx_stack_c::multVecZero(&sp24);
+ sp24.y -= 200.0f;
+
+ mBodyCyls[2].SetC(sp24);
+ mBodyCyls[2].SetH(200.0f);
+ mBodyCyls[2].SetR(80.0f);
+ dComIfG_Ccsp()->Set(&mBodyCyls[2]);
+
+ mDoMtx_stack_c::copy(mpWeaponModel->getBaseTRMtx());
+ mDoMtx_stack_c::transM(10.0f, 0.0f, -25.0f);
+ for (int i = 0; i < 4; i++) {
+ mDoMtx_stack_c::transM(-10.0f, 80.0f, 20.0f);
+ mDoMtx_stack_c::multVecZero(&sp24);
+ mAttackSphs[i].SetC(sp24);
+
+ if (mAttackSphs[i].ChkAtSet()) {
+ mAttackSphs[i].SetR(70.0f);
+ } else {
+ mAttackSphs[i].SetR(50.0f);
+ }
+
+ dComIfG_Ccsp()->Set(&mAttackSphs[i]);
+ }
+
+ if (mRopesEnabled) {
+ for (int i = 0; i < 10; i++) {
+ for (int j = 0; j < 19; j++) {
+ int sp14 = i * 19;
+ sp14 += j;
+
+ int sp10 = i * 10;
+ sp10 += (j >> 1);
+
+ if (!(j & 1)) {
+ mLineSphs[sp14].SetC(field_0x994[sp10]);
+ } else {
+ mLineSphs[sp14].SetC((field_0x994[sp10] + field_0x994[sp10 + 1]) / 2.0f);
+ }
+
+ mLineSphs[sp14].SetR(20.0f);
+ dComIfG_Ccsp()->Set(&mLineSphs[sp14]);
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2532,61 +5860,265 @@ asm void daE_VA_c::cc_set() {
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/cc_set__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CCD24-807CCF3C 00A824 0218+00 1/1 0/0 0/0 .text execute__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+int daE_VA_c::execute() {
+ if (mDemoModeTimer != 0) {
+ mDemoModeTimer--;
+ }
+
+ if (mDownTimer != 0) {
+ mDownTimer--;
+ }
+
+ if (mFadeAwayTimer != 0) {
+ mFadeAwayTimer--;
+ }
+
+ if (field_0x1350 != 0) {
+ field_0x1350--;
+ }
+
+ if (mAttackSphIFrameTimer != 0) {
+ mAttackSphIFrameTimer--;
+ }
+
+ if (mNeckSphIFrameTimer != 0) {
+ mNeckSphIFrameTimer--;
+ }
+
+ if (mBodyCylIFrameTimer != 0) {
+ mBodyCylIFrameTimer--;
+ }
+
+ if (mOffTgTimer != 0) {
+ mOffTgTimer--;
+ }
+
+ if (field_0x1348 != 0) {
+ field_0x1348--;
+ }
+
+ if (field_0x1354 != 0) {
+ field_0x1354--;
+ }
+
+ if (field_0x1358 != 0) {
+ field_0x1358--;
+ }
+
+ action();
+ calcJointNeck();
+ mtx_set();
+ setFootEffect();
+ setWeponEffect();
+ calcMagicMove();
+ cc_set();
+
+ if (mAlphaType < 2) {
+ if (daPy_getPlayerActorClass()->checkWolfLock(this)) {
+ daPy_getPlayerActorClass()->cancelWolfLock(this);
+ }
+
+ onWolfNoLock();
+ } else {
+ offWolfNoLock();
+ }
+
+ cXyz bind_pos;
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD));
+ mDoMtx_stack_c::multVecZero(&bind_pos);
+
+ cXyz bind_scale(1.0f, 1.0f, 1.0f);
+ setMidnaBindEffect(this, &mSound, &bind_pos, &bind_scale);
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::execute() {
+asm int daE_VA_c::execute() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/execute__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CCF3C-807CCF5C 00AA3C 0020+00 2/1 0/0 0/0 .text daE_VA_Execute__FP8daE_VA_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daE_VA_Execute(daE_VA_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Execute__FP8daE_VA_c.s"
+static int daE_VA_Execute(daE_VA_c* i_this) {
+ return i_this->execute();
}
-#pragma pop
/* 807CCF5C-807CCF64 00AA5C 0008+00 1/0 0/0 0/0 .text daE_VA_IsDelete__FP8daE_VA_c */
-static bool daE_VA_IsDelete(daE_VA_c* param_0) {
- return true;
+static int daE_VA_IsDelete(daE_VA_c* i_this) {
+ return 1;
}
/* 807CCF64-807CD028 00AA64 00C4+00 1/1 0/0 0/0 .text _delete__8daE_VA_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daE_VA_c::_delete() {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/_delete__8daE_VA_cFv.s"
+int daE_VA_c::_delete() {
+ dComIfG_resDelete(&mPhase, "E_VA");
+
+ if (mInitHIO) {
+ init_hio = false;
+ }
+
+ for (int i = 0; i < 2; i++) {
+ JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mFootSmokeEmtrIDs[i]);
+ if (emitter != NULL) {
+ emitter->deleteAllParticle();
+ }
+ }
+
+ if (heap != NULL) {
+ mSound.deleteObject();
+ }
+
+ return 1;
}
-#pragma pop
/* 807CD028-807CD048 00AB28 0020+00 1/0 0/0 0/0 .text daE_VA_Delete__FP8daE_VA_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daE_VA_Delete(daE_VA_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Delete__FP8daE_VA_c.s"
+static int daE_VA_Delete(daE_VA_c* i_this) {
+ return i_this->_delete();
}
-#pragma pop
/* 807CD048-807CD600 00AB48 05B8+00 1/1 0/0 0/0 .text CreateHeap__8daE_VA_cFv */
+// weird data issue / reg alloc (probably related)
+#ifdef NONMATCHING
+int daE_VA_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x33);
+ JUT_ASSERT(modelData != 0);
+
+ mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("E_VA", 15), 0, 1.0f, 0,
+ -1, &mSound, 0x80000, 0x31000084);
+ if (mpMorf == NULL || mpMorf->getModel() == NULL) {
+ return 0;
+ }
+
+ if (!mInvisModel.create(mpMorf->getModel(), 1)) {
+ return 0;
+ }
+
+ J3DModel* model = mpMorf->getModel();
+ model->setUserArea((u32)this);
+
+ for (u16 i = 1; i < model->getModelData()->getJointNum(); i++) {
+ if (i == 11 || i == 12 || i == 13 || i == 14 || i == 27 || i == 33 || i == 34) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack);
+ }
+ }
+
+ modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x30);
+ JUT_ASSERT(modelData != 0);
+
+ mpWeaponModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
+ if (mpWeaponModel == NULL) {
+ return 0;
+ }
+
+ mpWeaponBrk = new mDoExt_brkAnm();
+ if (mpWeaponBrk == NULL) {
+ return 0;
+ }
+
+ if (!mpWeaponBrk->init(mpWeaponModel->getModelData(),
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes("E_VA", 0x3B), TRUE,
+ J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1))
+ {
+ return 0;
+ }
+
+ modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x37);
+ JUT_ASSERT(modelData != 0);
+
+ mpEndEfMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL,
+ (J3DAnmTransform*)dComIfG_getObjectRes("E_VA", 7), 0, 1.0f,
+ 0, -1, &mSound, 0x80000, 0x31000084);
+ if (mpEndEfMorf == NULL || mpEndEfMorf->getModel() == NULL) {
+ return 0;
+ }
+
+ model = mpEndEfMorf->getModel();
+ model->setUserArea((u32)this);
+
+ for (u16 i = 1; i < model->getModelData()->getJointNum(); i++) {
+ if (i == 11 || i == 12 || i == 13 || i == 14 || i == 27 || i == 33 || i == 34) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack);
+ }
+ }
+
+ mpEndEfBrk = new mDoExt_brkAnm();
+ if (mpEndEfBrk == NULL) {
+ return 0;
+ }
+
+ if (!mpEndEfBrk->init(model->getModelData(),
+ (J3DAnmTevRegKey*)dComIfG_getObjectRes("E_VA", 0x3A), TRUE,
+ J3DFrameCtrl::LOOP_ONCE_e, 1.0f, 0, -1))
+ {
+ return 0;
+ }
+
+ if (!field_0x139c.init(1, 5, 1)) {
+ return 0;
+ }
+
+ f32* size_p = field_0x139c.getSize(0);
+ for (int i = 0; i < 5; i++) {
+ *size_p = 5.0f;
+ size_p++;
+ }
+
+ if (!mRope.init(11, 10, (ResTIMG*)dComIfG_getObjectRes("E_VA", 0x3E), 1)) {
+ return 0;
+ }
+
+ for (int i = 0; i < 11; i++) {
+ f32* size_p = mRope.getSize(i);
+
+ for (int j = 0; j < 10; j++) {
+ *size_p = 5.0f;
+ size_p++;
+ }
+ }
+
+ for (int i = 0; i < 40; i++) {
+ J3DModelData* modelData;
+
+ switch (va_tag_set_size[i]) {
+ case 0:
+ modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x34);
+ mCardFlags[i] = 0;
+ break;
+ case 1:
+ modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x35);
+ mCardFlags[i] = 1;
+ break;
+ case 2:
+ modelData = (J3DModelData*)dComIfG_getObjectRes("E_VA", 0x36);
+ mCardFlags[i] = 2;
+ break;
+ }
+
+ JUT_ASSERT(modelData != 0);
+ mpCardModels[i] = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
+ }
+
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::CreateHeap() {
+asm int daE_VA_c::CreateHeap() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/CreateHeap__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CD600-807CD648 00B100 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
#pragma push
@@ -2600,14 +6132,9 @@ extern "C" asm void __dt__12J3DFrameCtrlFv() {
#pragma pop
/* 807CD648-807CD668 00B148 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void useHeapInit(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/useHeapInit__FP10fopAc_ac_c.s"
+static int useHeapInit(fopAc_ac_c* i_this) {
+ return ((daE_VA_c*)i_this)->CreateHeap();
}
-#pragma pop
/* ############################################################################################## */
/* 807CEE9C-807CEEA0 0001F4 0004+00 0/1 0/0 0/0 .rodata @8890 */
@@ -2631,14 +6158,132 @@ SECTION_DEAD static char const* const stringBase_807CEF01 = "E_va";
#pragma pop
/* 807CD668-807CDAD8 00B168 0470+00 1/1 0/0 0/0 .text create__8daE_VA_cFv */
+// matches with literals
+#ifdef NONMATCHING
+int daE_VA_c::create() {
+ fopAcM_SetupActor(this, daE_VA_c);
+
+ int phase_state = dComIfG_resLoad(&mPhase, "E_VA");
+ if (phase_state == cPhs_COMPLEATE_e) {
+ OS_REPORT("E_VA PARAM %x\n", fopAcM_GetParam(this));
+
+ if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x216A0)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!init_hio) {
+ init_hio = true;
+ mInitHIO = true;
+ l_HIO.field_0x04 = -1;
+ }
+
+ attention_info.flags = 0;
+ mSwNo = fopAcM_GetParam(this);
+
+ if (mSwNo != 0xFF && dComIfGs_isSwitch(mSwNo, fopAcM_GetRoomNo(this))) {
+ g_env_light.mColpatWeather = 4;
+ g_env_light.mColPatPrev = 4;
+ g_env_light.mColPatCurr = 4;
+ return cPhs_ERROR_e;
+ }
+
+ fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+ fopAcM_SetMin(this, -500.0f, -500.0f, -500.0f);
+ fopAcM_SetMax(this, 500.0f, 500.0f, 500.0f);
+
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
+ fopAcM_GetSpeed_p(this), NULL, NULL);
+ mAcchCir.SetWall(40.0f, 500.0f);
+
+ for (int i = 0; i < 2; i++) {
+ mMagicAcch[i].Set(&mMagicPos[i], &mMagicOldPos[i], this, 1, &mMagicAcchCir[i],
+ &mMagicSpeed[i], NULL, NULL);
+ mMagicAcchCir[i].SetWall(0.0f, 120.0f);
+ }
+
+ health = 100;
+ field_0x560 = 100;
+
+ mBodyCcStts.Init(0xFF, 0, this);
+ mNeckSph.Set(cc_vt_neck_src);
+ mNeckSph.SetStts(&mBodyCcStts);
+
+ for (int i = 0; i < 3; i++) {
+ mBodyCyls[i].Set(cc_vt_body_src);
+ mBodyCyls[i].SetStts(&mBodyCcStts);
+ }
+
+ for (int i = 0; i < 4; i++) {
+ mAttackSphs[i].Set(cc_vt_attack_src);
+ mAttackSphs[i].SetStts(&mBodyCcStts);
+ }
+
+ field_0x1b3c.Init(0xFF, 0, this);
+
+ for (int i = 0; i < 190; i++) {
+ mLineSphs[i].Set(cc_vt_line_src);
+ mLineSphs[i].SetStts(&field_0x1b3c);
+ }
+
+ mMagicSphs[0].Set(cc_vt_magic_src);
+ mMagicSphs[0].SetStts(&field_0x1b3c);
+ mMagicSphs[1].Set(cc_vt_magic_src);
+ mMagicSphs[1].SetStts(&field_0x1b3c);
+
+ mSound.init(&current.pos, &eyePos, 3, 1);
+ mSound.setEnemyName("E_va");
+
+ mAtInfo.mpSound = &mSound;
+ mAtInfo.mPowerType = 1;
+ mFootSmokeAlpha = 0;
+ mEyeAlpha = 0;
+ mGlowLightA = 0;
+
+ attention_info.distances[fopAc_attn_BATTLE_e] = 62;
+ g_env_light.mColpatWeather = 2;
+ g_env_light.mColPatPrev = 2;
+ g_env_light.mColPatCurr = 2;
+
+ if (daPy_getPlayerActorClass()->current.pos.z >= 1850.0f) {
+ cDmr_SkipInfo = 0;
+ }
+
+ if (cDmr_SkipInfo != 0) {
+ dComIfGs_onOneZoneSwitch(9, fopAcM_GetRoomNo(this));
+ cDmr_SkipInfo = 0;
+ mWeponEfMode = 3;
+ mAction = ACTION_CLEAR_WAIT_e;
+
+ Z2GetAudioMgr()->subBgmStart(Z2BGM_VARIANT);
+ Z2GetAudioMgr()->changeSubBgmStatus(1);
+ mKankyoColType = 0;
+
+ g_env_light.mColpatWeather = 2;
+ g_env_light.mColPatPrev = 2;
+ g_env_light.mColPatCurr = 2;
+ } else {
+ mAction = ACTION_DEMO_OP_WAIT_e;
+ mKankyoColType = 5;
+ g_env_light.mColpatWeather = 3;
+ g_env_light.mColPatPrev = 3;
+ g_env_light.mColPatCurr = 3;
+ }
+
+ daE_VA_Execute(this);
+ }
+
+ return phase_state;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daE_VA_c::create() {
+asm int daE_VA_c::create() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/create__8daE_VA_cFv.s"
}
#pragma pop
+#endif
/* 807CDAD8-807CDE90 00B5D8 03B8+00 1/1 0/0 0/0 .text __ct__8daE_VA_cFv */
#pragma push
@@ -2740,25 +6385,20 @@ extern "C" asm void __dt__12dBgS_AcchCirFv() {
/* 807CE23C-807CE240 00BD3C 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
// cXyz::cXyz() {
-extern "C" asm void __ct__4cXyzFv() {
+extern "C" void __ct__4cXyzFv() {
/* empty function */
}
/* 807CE240-807CE244 00BD40 0004+00 1/1 0/0 0/0 .text __ct__5csXyzFv */
// csXyz::csXyz() {
-extern "C" asm void __ct__5csXyzFv() {
+extern "C" void __ct__5csXyzFv() {
/* empty function */
}
/* 807CE244-807CE264 00BD44 0020+00 1/0 0/0 0/0 .text daE_VA_Create__FP8daE_VA_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daE_VA_Create(daE_VA_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/daE_VA_Create__FP8daE_VA_c.s"
+static int daE_VA_Create(daE_VA_c* i_this) {
+ return i_this->create();
}
-#pragma pop
/* 807CE264-807CE2AC 00BD64 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
#pragma push
@@ -2775,8 +6415,8 @@ extern "C" asm void __dt__10cCcD_GSttsFv() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm daE_VA_HIO_c::~daE_VA_HIO_c() {
- nofralloc
+// asm daE_VA_HIO_c::~daE_VA_HIO_c() {
+extern "C" asm void __dt__12daE_VA_HIO_cFv(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/__dt__12daE_VA_HIO_cFv.s"
}
#pragma pop
@@ -2940,8 +6580,7 @@ COMPILER_STRIP_GATE(0x807CEEF8, &lit_9225);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void __sinit_d_a_e_vt_cpp() {
- nofralloc
+asm void __sinit_d_a_e_vt_cpp(){nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/__sinit_d_a_e_vt_cpp.s"
}
#pragma pop
@@ -2976,8 +6615,9 @@ static asm void func_807CE7E8() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void setMidnaBindEffect(fopEn_enemy_c* param_0, Z2CreatureEnemy* param_1, cXyz* param_2,
- cXyz* param_3) {
+/* static asm void setMidnaBindEffect(fopEn_enemy_c* param_0, Z2CreatureEnemy* param_1, cXyz*
+ param_2, cXyz* param_3) { */
+extern "C" asm void setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_vt/d_a_e_vt/setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz.s"
}
diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp
index 15b42adaf5..97855c5e45 100644
--- a/src/m_Do/m_Do_ext.cpp
+++ b/src/m_Do/m_Do_ext.cpp
@@ -1686,8 +1686,8 @@ J3DZMode* J3DPEBlock::getZMode() {
}
/* 8000DF4C-8000DF54 00888C 0008+00 0/0 5/0 0/0 .text getBlend__10J3DPEBlockFv */
-bool J3DPEBlock::getBlend() {
- return false;
+J3DBlend* J3DPEBlock::getBlend() {
+ return NULL;
}
/* 8000DF54-8000DF5C 008894 0008+00 0/0 5/0 0/0 .text getAlphaComp__10J3DPEBlockFv */
@@ -3823,7 +3823,7 @@ SECTION_SDATA2 static f32 lit_7625 = 1.0f / 100.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void mDoExt_3DlineMat1_c::init(u16 param_0, u16 param_1, ResTIMG* param_2, int param_3) {
+asm int mDoExt_3DlineMat1_c::init(u16 param_0, u16 param_1, ResTIMG* param_2, int param_3) {
nofralloc
#include "asm/m_Do/m_Do_ext/init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi.s"
}