From 73ead19443c0673171ead7455faa857f9b257623 Mon Sep 17 00:00:00 2001 From: Caroline Madsen <69010899+randomsalience@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:05:50 -0400 Subject: [PATCH] work on d_a_npc_the and d_a_npc (#2120) --- Progress.md | 16 +- .../d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s | 41 - .../orderEvent__8daNpcF_cFiPcUsUsUcUs.s | 59 - asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s | 24 - asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s | 56 - asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s | 39 - asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s | 18 - asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s | 35 - .../d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s | 40 - .../EvCut_Introduction__10daNpcThe_cFi.s | 67 - .../d_a_npc_the/create__10daNpcThe_cFv.s | 282 --- ...lJointCallBack__10daNpcThe_cFP8J3DJointi.s | 21 - ...Joint__10daNpcThe_cFP8J3DJointP8J3DModel.s | 123 -- .../d_a_npc_the/daNpcThe_Create__FPv.s | 9 - .../d_a_npc_the/daNpcThe_Delete__FPv.s | 14 - .../d_a_npc_the/daNpcThe_Execute__FPv.s | 9 - .../setExpression__10daNpcThe_cFif.s | 12 - .../d_a_npc_the/setMotion__10daNpcThe_cFifi.s | 19 - .../JSystem/J3DGraphAnimator/J3DMaterialAnm.h | 10 +- include/JSystem/JMath/JMATrigonometric.h | 39 +- include/SSystem/SComponent/c_xyz.h | 2 +- include/d/a/d_a_npc.h | 73 +- include/d/msg/d_msg_flow.h | 1 + include/d/msg/d_msg_object.h | 8 +- include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h | 2 +- include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h | 182 +- .../d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h | 11 +- libs/JSystem/JMath/JMATrigonometric.cpp | 11 +- rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.cpp | 119 +- rel/d/a/npc/d_a_npc_the/d_a_npc_the.cpp | 1964 ++++++++++++----- rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp | 4 +- .../obj/d_a_obj_volcball/d_a_obj_volcball.cpp | 2 +- .../obj/d_a_obj_yobikusa/d_a_obj_yobikusa.cpp | 2 +- .../a/tag/d_a_tag_evtarea/d_a_tag_evtarea.cpp | 5 - src/d/a/d_a_npc.cpp | 701 +++--- src/d/a/d_a_obj_item.cpp | 2 +- src/d/event/d_event_data.cpp | 2 +- 37 files changed, 2169 insertions(+), 1855 deletions(-) delete mode 100644 asm/d/a/d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s delete mode 100644 asm/d/a/d_a_npc/orderEvent__8daNpcF_cFiPcUsUsUcUs.s delete mode 100644 asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s delete mode 100644 asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s delete mode 100644 asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s delete mode 100644 asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s delete mode 100644 asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s delete mode 100644 asm/d/a/d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/EvCut_Introduction__10daNpcThe_cFi.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/create__10daNpcThe_cFv.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJointCallBack__10daNpcThe_cFP8J3DJointi.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Create__FPv.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Delete__FPv.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Execute__FPv.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpression__10daNpcThe_cFif.s delete mode 100644 asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotion__10daNpcThe_cFifi.s diff --git a/Progress.md b/Progress.md index af8f20294dd..155a3f4de8c 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 48.104069% | 1730084 | 3596544 +.text | 48.136322% | 1731244 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 53.573631% | 2154020 | 4020672 +Total | 53.602482% | 2155180 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 53.573631% | 2154020 | 4020672 -RELs | 37.140484% | 4271276 | 11500324 -Total | 41.397446% | 6425296 | 15520996 +main.dol | 53.602482% | 2155180 | 4020672 +RELs | 37.186674% | 4276588 | 11500324 +Total | 41.439145% | 6431768 | 15520996 ## RELs @@ -313,7 +313,7 @@ d_a_npc_soldierA | 34.996894% | 6760 | 19316 d_a_npc_soldierB | 35.587267% | 6484 | 18220 d_a_npc_sq | 39.651108% | 3364 | 8484 d_a_npc_taro | 38.152632% | 28996 | 76000 -d_a_npc_the | 34.936999% | 9760 | 27936 +d_a_npc_the | 42.167812% | 11780 | 27936 d_a_npc_theB | 34.129794% | 9256 | 27120 d_a_npc_tk | 22.166176% | 12656 | 57096 d_a_npc_tkc | 32.075472% | 7820 | 24380 @@ -668,7 +668,7 @@ d_a_obj_wdStick | 32.908234% | 4748 | 14428 d_a_obj_web0 | 75.286533% | 4204 | 5584 d_a_obj_web1 | 100.000000% | 5772 | 5772 d_a_obj_well_cover | 100.000000% | 3492 | 3492 -d_a_obj_wflag | 41.214286% | 2308 | 5600 +d_a_obj_wflag | 100.000000% | 5600 | 5600 d_a_obj_wind_stone | 100.000000% | 4944 | 4944 d_a_obj_window | 100.000000% | 4820 | 4820 d_a_obj_wood_pendulum | 44.455748% | 1748 | 3932 @@ -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 | 37.140484% | 4271276 | 11500324 +Total | 37.186674% | 4276588 | 11500324 diff --git a/asm/d/a/d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s b/asm/d/a/d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s deleted file mode 100644 index 8094f2bfc43..00000000000 --- a/asm/d/a/d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_80153954: -/* 80153954 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80153958 7C 08 02 A6 */ mflr r0 -/* 8015395C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80153960 39 61 00 20 */ addi r11, r1, 0x20 -/* 80153964 48 20 E8 71 */ bl _savegpr_27 -/* 80153968 7C 7B 1B 78 */ mr r27, r3 -/* 8015396C 7C BC 2B 78 */ mr r28, r5 -/* 80153970 7C DD 33 78 */ mr r29, r6 -/* 80153974 7C FE 3B 78 */ mr r30, r7 -/* 80153978 28 04 00 00 */ cmplwi r4, 0 -/* 8015397C 41 82 00 1C */ beq lbl_80153998 -/* 80153980 90 9B 01 00 */ stw r4, 0x100(r27) -/* 80153984 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80153988 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8015398C 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 80153990 80 9B 01 00 */ lwz r4, 0x100(r27) -/* 80153994 4B EF 2E 6D */ bl setObjectArchive__16dEvent_manager_cFPc -lbl_80153998: -/* 80153998 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8015399C 3B E3 61 C0 */ addi r31, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801539A0 38 7F 4F F8 */ addi r3, r31, 0x4ff8 -/* 801539A4 7F 64 DB 78 */ mr r4, r27 -/* 801539A8 7F 85 E3 78 */ mr r5, r28 -/* 801539AC 38 C0 00 FF */ li r6, 0xff -/* 801539B0 4B EF 3D A9 */ bl getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc -/* 801539B4 B0 7B 09 D4 */ sth r3, 0x9d4(r27) -/* 801539B8 38 7F 4E C8 */ addi r3, r31, 0x4ec8 -/* 801539BC 7F 64 DB 78 */ mr r4, r27 -/* 801539C0 4B EE EB 59 */ bl reset__14dEvt_control_cFPv -/* 801539C4 7F 63 DB 78 */ mr r3, r27 -/* 801539C8 A8 9B 09 D4 */ lha r4, 0x9d4(r27) -/* 801539CC 7F A5 EB 78 */ mr r5, r29 -/* 801539D0 7F C6 F3 78 */ mr r6, r30 -/* 801539D4 4B EC 7C 11 */ bl fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs -/* 801539D8 39 61 00 20 */ addi r11, r1, 0x20 -/* 801539DC 48 20 E8 45 */ bl _restgpr_27 -/* 801539E0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 801539E4 7C 08 03 A6 */ mtlr r0 -/* 801539E8 38 21 00 20 */ addi r1, r1, 0x20 -/* 801539EC 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/orderEvent__8daNpcF_cFiPcUsUsUcUs.s b/asm/d/a/d_a_npc/orderEvent__8daNpcF_cFiPcUsUsUcUs.s deleted file mode 100644 index 70f5509b5b9..00000000000 --- a/asm/d/a/d_a_npc/orderEvent__8daNpcF_cFiPcUsUsUcUs.s +++ /dev/null @@ -1,59 +0,0 @@ -lbl_8015387C: -/* 8015387C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80153880 7C 08 02 A6 */ mflr r0 -/* 80153884 90 01 00 24 */ stw r0, 0x24(r1) -/* 80153888 39 61 00 20 */ addi r11, r1, 0x20 -/* 8015388C 48 20 E9 45 */ bl _savegpr_26 -/* 80153890 7C 7A 1B 78 */ mr r26, r3 -/* 80153894 7C 9B 23 78 */ mr r27, r4 -/* 80153898 7C DC 33 78 */ mr r28, r6 -/* 8015389C 7C FD 3B 78 */ mr r29, r7 -/* 801538A0 7D 1E 43 78 */ mr r30, r8 -/* 801538A4 7D 3F 4B 78 */ mr r31, r9 -/* 801538A8 28 05 00 00 */ cmplwi r5, 0 -/* 801538AC 41 82 00 40 */ beq lbl_801538EC -/* 801538B0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801538B4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801538B8 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 801538BC 7F 44 D3 78 */ mr r4, r26 -/* 801538C0 38 C0 00 FF */ li r6, 0xff -/* 801538C4 4B EF 3E 95 */ bl getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc -/* 801538C8 B0 7A 09 D4 */ sth r3, 0x9d4(r26) -/* 801538CC 7F 43 D3 78 */ mr r3, r26 -/* 801538D0 A8 9A 09 D4 */ lha r4, 0x9d4(r26) -/* 801538D4 7F C5 F3 78 */ mr r5, r30 -/* 801538D8 7F 86 E3 78 */ mr r6, r28 -/* 801538DC 7F A7 EB 78 */ mr r7, r29 -/* 801538E0 7F E8 FB 78 */ mr r8, r31 -/* 801538E4 4B EC 7D 99 */ bl fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs -/* 801538E8 48 00 00 54 */ b lbl_8015393C -lbl_801538EC: -/* 801538EC 88 1A 09 F4 */ lbz r0, 0x9f4(r26) -/* 801538F0 28 00 00 00 */ cmplwi r0, 0 -/* 801538F4 41 82 00 10 */ beq lbl_80153904 -/* 801538F8 48 00 BB 2D */ bl checkNowWolfEyeUp__9daPy_py_cFv -/* 801538FC 2C 03 00 00 */ cmpwi r3, 0 -/* 80153900 41 82 00 3C */ beq lbl_8015393C -lbl_80153904: -/* 80153904 80 7A 05 5C */ lwz r3, 0x55c(r26) -/* 80153908 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c -/* 8015390C 40 82 00 0C */ bne lbl_80153918 -/* 80153910 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 80153914 41 82 00 28 */ beq lbl_8015393C -lbl_80153918: -/* 80153918 A0 1A 00 FA */ lhz r0, 0xfa(r26) -/* 8015391C 60 00 00 01 */ ori r0, r0, 1 -/* 80153920 B0 1A 00 FA */ sth r0, 0xfa(r26) -/* 80153924 2C 1B 00 00 */ cmpwi r27, 0 -/* 80153928 41 82 00 14 */ beq lbl_8015393C -/* 8015392C 7F 43 D3 78 */ mr r3, r26 -/* 80153930 38 80 00 00 */ li r4, 0 -/* 80153934 38 A0 00 00 */ li r5, 0 -/* 80153938 4B EC 78 65 */ bl fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs -lbl_8015393C: -/* 8015393C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80153940 48 20 E8 DD */ bl _restgpr_26 -/* 80153944 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80153948 7C 08 03 A6 */ mtlr r0 -/* 8015394C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80153950 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s b/asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s deleted file mode 100644 index 0766d58421e..00000000000 --- a/asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80152D84: -/* 80152D84 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80152D88 7C 08 02 A6 */ mflr r0 -/* 80152D8C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80152D90 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80152D94 93 C1 00 08 */ stw r30, 8(r1) -/* 80152D98 7C 7E 1B 78 */ mr r30, r3 -/* 80152D9C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80152DA0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80152DA4 3B E3 0F 38 */ addi r31, r3, 0xf38 -/* 80152DA8 7F E3 FB 78 */ mr r3, r31 -/* 80152DAC 38 9E 0A 58 */ addi r4, r30, 0xa58 -/* 80152DB0 4B F2 1E 39 */ bl GetPolyColor__4dBgSFRC13cBgS_PolyInfo -/* 80152DB4 98 7E 04 8D */ stb r3, 0x48d(r30) -/* 80152DB8 7F E3 FB 78 */ mr r3, r31 -/* 80152DBC 38 9E 0A 58 */ addi r4, r30, 0xa58 -/* 80152DC0 4B F2 23 41 */ bl GetRoomId__4dBgSFRC13cBgS_PolyInfo -/* 80152DC4 98 7E 04 8C */ stb r3, 0x48c(r30) -/* 80152DC8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80152DCC 83 C1 00 08 */ lwz r30, 8(r1) -/* 80152DD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80152DD4 7C 08 03 A6 */ mtlr r0 -/* 80152DD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80152DDC 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s b/asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s deleted file mode 100644 index 1b259a34766..00000000000 --- a/asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s +++ /dev/null @@ -1,56 +0,0 @@ -lbl_801527FC: -/* 801527FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80152800 7C 08 02 A6 */ mflr r0 -/* 80152804 90 01 00 14 */ stw r0, 0x14(r1) -/* 80152808 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8015280C 93 C1 00 08 */ stw r30, 8(r1) -/* 80152810 7C 7E 1B 78 */ mr r30, r3 -/* 80152814 80 63 05 68 */ lwz r3, 0x568(r3) -/* 80152818 83 E3 00 04 */ lwz r31, 4(r3) -/* 8015281C 38 7E 04 D0 */ addi r3, r30, 0x4d0 -/* 80152820 4B EB A5 45 */ bl transS__14mDoMtx_stack_cFRC4cXyz -/* 80152824 38 7E 08 F0 */ addi r3, r30, 0x8f0 -/* 80152828 4B EB A7 1D */ bl ZXYrotM__14mDoMtx_stack_cFRC5csXyz -/* 8015282C 38 7E 04 EC */ addi r3, r30, 0x4ec -/* 80152830 4B EB A6 41 */ bl scaleM__14mDoMtx_stack_cFRC4cXyz -/* 80152834 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80152838 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 8015283C 38 9F 00 24 */ addi r4, r31, 0x24 -/* 80152840 48 1F 3C 71 */ bl PSMTXCopy -/* 80152844 93 DF 00 14 */ stw r30, 0x14(r31) -/* 80152848 C0 1E 09 78 */ lfs f0, 0x978(r30) -/* 8015284C FC 00 02 10 */ fabs f0, f0 -/* 80152850 FC 20 00 18 */ frsp f1, f0 -/* 80152854 C0 0D 8C 00 */ lfs f0, G_CM3D_F_ABS_MIN(r13) -/* 80152858 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8015285C 7C 00 00 26 */ mfcr r0 -/* 80152860 54 00 0F FF */ rlwinm. r0, r0, 1, 0x1f, 0x1f -/* 80152864 40 82 00 14 */ bne lbl_80152878 -/* 80152868 38 00 00 01 */ li r0, 1 -/* 8015286C 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 80152870 98 03 00 55 */ stb r0, 0x55(r3) -/* 80152874 48 00 00 10 */ b lbl_80152884 -lbl_80152878: -/* 80152878 38 00 00 00 */ li r0, 0 -/* 8015287C 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 80152880 98 03 00 55 */ stb r0, 0x55(r3) -lbl_80152884: -/* 80152884 80 1E 09 9C */ lwz r0, 0x99c(r30) -/* 80152888 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 8015288C 41 82 00 1C */ beq lbl_801528A8 -/* 80152890 C0 1E 05 7C */ lfs f0, 0x57c(r30) -/* 80152894 80 7E 05 80 */ lwz r3, 0x580(r30) -/* 80152898 D0 03 00 08 */ stfs f0, 8(r3) -/* 8015289C 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 801528A0 4B EB E9 4D */ bl modelCalc__16mDoExt_McaMorfSOFv -/* 801528A4 48 00 00 0C */ b lbl_801528B0 -lbl_801528A8: -/* 801528A8 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 801528AC 4B EB E9 41 */ bl modelCalc__16mDoExt_McaMorfSOFv -lbl_801528B0: -/* 801528B0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801528B4 83 C1 00 08 */ lwz r30, 8(r1) -/* 801528B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801528BC 7C 08 03 A6 */ mtlr r0 -/* 801528C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 801528C4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s b/asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s deleted file mode 100644 index 66c116cf6ba..00000000000 --- a/asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8015276C: -/* 8015276C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80152770 7C 08 02 A6 */ mflr r0 -/* 80152774 90 01 00 14 */ stw r0, 0x14(r1) -/* 80152778 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8015277C 93 C1 00 08 */ stw r30, 8(r1) -/* 80152780 7C 7E 1B 78 */ mr r30, r3 -/* 80152784 80 63 05 68 */ lwz r3, 0x568(r3) -/* 80152788 83 E3 00 04 */ lwz r31, 4(r3) -/* 8015278C 38 7E 04 D0 */ addi r3, r30, 0x4d0 -/* 80152790 4B EB A5 D5 */ bl transS__14mDoMtx_stack_cFRC4cXyz -/* 80152794 38 7E 08 F0 */ addi r3, r30, 0x8f0 -/* 80152798 4B EB A7 AD */ bl ZXYrotM__14mDoMtx_stack_cFRC5csXyz -/* 8015279C 38 7E 04 EC */ addi r3, r30, 0x4ec -/* 801527A0 4B EB A6 D1 */ bl scaleM__14mDoMtx_stack_cFRC4cXyz -/* 801527A4 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 801527A8 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 801527AC 38 9F 00 24 */ addi r4, r31, 0x24 -/* 801527B0 48 1F 3D 01 */ bl PSMTXCopy -/* 801527B4 93 DF 00 14 */ stw r30, 0x14(r31) -/* 801527B8 80 1E 09 9C */ lwz r0, 0x99c(r30) -/* 801527BC 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 801527C0 41 82 00 1C */ beq lbl_801527DC -/* 801527C4 C0 1E 05 7C */ lfs f0, 0x57c(r30) -/* 801527C8 80 7E 05 80 */ lwz r3, 0x580(r30) -/* 801527CC D0 03 00 08 */ stfs f0, 8(r3) -/* 801527D0 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 801527D4 4B EB EA 19 */ bl modelCalc__16mDoExt_McaMorfSOFv -/* 801527D8 48 00 00 0C */ b lbl_801527E4 -lbl_801527DC: -/* 801527DC 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 801527E0 4B EB EA 0D */ bl modelCalc__16mDoExt_McaMorfSOFv -lbl_801527E4: -/* 801527E4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801527E8 83 C1 00 08 */ lwz r30, 8(r1) -/* 801527EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801527F0 7C 08 03 A6 */ mtlr r0 -/* 801527F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 801527F8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s b/asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s deleted file mode 100644 index e175e723f3e..00000000000 --- a/asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80152DE0: -/* 80152DE0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80152DE4 7C 08 02 A6 */ mflr r0 -/* 80152DE8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80152DEC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80152DF0 7C 7F 1B 78 */ mr r31, r3 -/* 80152DF4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80152DF8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80152DFC 38 63 0F 38 */ addi r3, r3, 0xf38 -/* 80152E00 38 9F 0A 58 */ addi r4, r31, 0xa58 -/* 80152E04 4B F2 22 FD */ bl GetRoomId__4dBgSFRC13cBgS_PolyInfo -/* 80152E08 98 7F 04 E2 */ stb r3, 0x4e2(r31) -/* 80152E0C 98 7F 07 CA */ stb r3, 0x7ca(r31) -/* 80152E10 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80152E14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80152E18 7C 08 03 A6 */ mtlr r0 -/* 80152E1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80152E20 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s b/asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s deleted file mode 100644 index 46bf913385f..00000000000 --- a/asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_801526E8: -/* 801526E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801526EC 7C 08 02 A6 */ mflr r0 -/* 801526F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 801526F4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801526F8 93 C1 00 08 */ stw r30, 8(r1) -/* 801526FC 7C 7E 1B 78 */ mr r30, r3 -/* 80152700 7C 9F 23 78 */ mr r31, r4 -/* 80152704 80 0D 8A 70 */ lwz r0, mFindCount__8daNpcF_c(r13) -/* 80152708 2C 00 00 64 */ cmpwi r0, 0x64 -/* 8015270C 40 80 00 44 */ bge lbl_80152750 -/* 80152710 4B EC 65 D1 */ bl fopAc_IsActor__FPv -/* 80152714 2C 03 00 00 */ cmpwi r3, 0 -/* 80152718 41 82 00 38 */ beq lbl_80152750 -/* 8015271C 7C 1E F8 40 */ cmplw r30, r31 -/* 80152720 41 82 00 30 */ beq lbl_80152750 -/* 80152724 A8 6D 8A 74 */ lha r3, mSrchActorName__8daNpcF_c(r13) -/* 80152728 A8 1E 00 08 */ lha r0, 8(r30) -/* 8015272C 7C 03 00 00 */ cmpw r3, r0 -/* 80152730 40 82 00 20 */ bne lbl_80152750 -/* 80152734 80 8D 8A 70 */ lwz r4, mFindCount__8daNpcF_c(r13) -/* 80152738 54 80 10 3A */ slwi r0, r4, 2 -/* 8015273C 3C 60 80 42 */ lis r3, mFindActorPList__8daNpcF_c@ha /* 0x804257E8@ha */ -/* 80152740 38 63 57 E8 */ addi r3, r3, mFindActorPList__8daNpcF_c@l /* 0x804257E8@l */ -/* 80152744 7F C3 01 2E */ stwx r30, r3, r0 -/* 80152748 38 04 00 01 */ addi r0, r4, 1 -/* 8015274C 90 0D 8A 70 */ stw r0, mFindCount__8daNpcF_c(r13) -lbl_80152750: -/* 80152750 38 60 00 00 */ li r3, 0 -/* 80152754 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80152758 83 C1 00 08 */ lwz r30, 8(r1) -/* 8015275C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80152760 7C 08 03 A6 */ mtlr r0 -/* 80152764 38 21 00 10 */ addi r1, r1, 0x10 -/* 80152768 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s b/asm/d/a/d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s deleted file mode 100644 index 8e13b3a57c7..00000000000 --- a/asm/d/a/d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_80152654: -/* 80152654 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80152658 7C 08 02 A6 */ mflr r0 -/* 8015265C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80152660 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80152664 7C 7F 1B 78 */ mr r31, r3 -/* 80152668 80 0D 8A 70 */ lwz r0, mFindCount__8daNpcF_c(r13) -/* 8015266C 2C 00 00 64 */ cmpwi r0, 0x64 -/* 80152670 40 80 00 60 */ bge lbl_801526D0 -/* 80152674 4B EC 66 6D */ bl fopAc_IsActor__FPv -/* 80152678 2C 03 00 00 */ cmpwi r3, 0 -/* 8015267C 41 82 00 54 */ beq lbl_801526D0 -/* 80152680 A8 1F 00 08 */ lha r0, 8(r31) -/* 80152684 2C 00 01 08 */ cmpwi r0, 0x108 -/* 80152688 41 82 00 2C */ beq lbl_801526B4 -/* 8015268C 2C 00 01 06 */ cmpwi r0, 0x106 -/* 80152690 41 82 00 24 */ beq lbl_801526B4 -/* 80152694 2C 00 01 0D */ cmpwi r0, 0x10d -/* 80152698 41 82 00 1C */ beq lbl_801526B4 -/* 8015269C 2C 00 01 0C */ cmpwi r0, 0x10c -/* 801526A0 41 82 00 14 */ beq lbl_801526B4 -/* 801526A4 2C 00 01 0A */ cmpwi r0, 0x10a -/* 801526A8 41 82 00 0C */ beq lbl_801526B4 -/* 801526AC 2C 00 03 00 */ cmpwi r0, 0x300 -/* 801526B0 40 82 00 20 */ bne lbl_801526D0 -lbl_801526B4: -/* 801526B4 80 8D 8A 70 */ lwz r4, mFindCount__8daNpcF_c(r13) -/* 801526B8 54 80 10 3A */ slwi r0, r4, 2 -/* 801526BC 3C 60 80 42 */ lis r3, mFindActorPList__8daNpcF_c@ha /* 0x804257E8@ha */ -/* 801526C0 38 63 57 E8 */ addi r3, r3, mFindActorPList__8daNpcF_c@l /* 0x804257E8@l */ -/* 801526C4 7F E3 01 2E */ stwx r31, r3, r0 -/* 801526C8 38 04 00 01 */ addi r0, r4, 1 -/* 801526CC 90 0D 8A 70 */ stw r0, mFindCount__8daNpcF_c(r13) -lbl_801526D0: -/* 801526D0 38 60 00 00 */ li r3, 0 -/* 801526D4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 801526D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801526DC 7C 08 03 A6 */ mtlr r0 -/* 801526E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 801526E4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/EvCut_Introduction__10daNpcThe_cFi.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/EvCut_Introduction__10daNpcThe_cFi.s deleted file mode 100644 index 469813ebf3e..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/EvCut_Introduction__10daNpcThe_cFi.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_80AF9244: -/* 80AF9244 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80AF9248 7C 08 02 A6 */ mflr r0 -/* 80AF924C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80AF9250 39 61 00 20 */ addi r11, r1, 0x20 -/* 80AF9254 4B 86 8F 85 */ bl _savegpr_28 -/* 80AF9258 7C 7C 1B 78 */ mr r28, r3 -/* 80AF925C 7C 9D 23 78 */ mr r29, r4 -/* 80AF9260 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80AF9264 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80AF9268 3B C3 4F F8 */ addi r30, r3, 0x4ff8 -/* 80AF926C 7F C3 F3 78 */ mr r3, r30 -/* 80AF9270 4B 54 EC ED */ bl getMyNowCutName__16dEvent_manager_cFi -/* 80AF9274 7C 7F 1B 78 */ mr r31, r3 -/* 80AF9278 7F C3 F3 78 */ mr r3, r30 -/* 80AF927C 7F A4 EB 78 */ mr r4, r29 -/* 80AF9280 4B 54 EA CD */ bl getIsAddvance__16dEvent_manager_cFi -/* 80AF9284 2C 03 00 00 */ cmpwi r3, 0 -/* 80AF9288 41 82 00 4C */ beq lbl_80AF92D4 -/* 80AF928C 80 9F 00 00 */ lwz r4, 0(r31) -/* 80AF9290 3C 60 30 30 */ lis r3, 0x3030 /* 0x30303036@ha */ -/* 80AF9294 38 03 30 36 */ addi r0, r3, 0x3036 /* 0x30303036@l */ -/* 80AF9298 7C 04 00 00 */ cmpw r4, r0 -/* 80AF929C 40 80 00 38 */ bge lbl_80AF92D4 -/* 80AF92A0 38 03 30 31 */ addi r0, r3, 0x3031 -/* 80AF92A4 7C 04 00 00 */ cmpw r4, r0 -/* 80AF92A8 40 80 00 08 */ bge lbl_80AF92B0 -/* 80AF92AC 48 00 00 28 */ b lbl_80AF92D4 -lbl_80AF92B0: -/* 80AF92B0 7F 83 E3 78 */ mr r3, r28 -/* 80AF92B4 80 9C 0E 14 */ lwz r4, 0xe14(r28) -/* 80AF92B8 38 A0 00 00 */ li r5, 0 -/* 80AF92BC 4B 65 AA 61 */ bl initTalk__8daNpcF_cFiPP10fopAc_ac_c -/* 80AF92C0 A8 1C 0E 18 */ lha r0, 0xe18(r28) -/* 80AF92C4 2C 00 00 02 */ cmpwi r0, 2 -/* 80AF92C8 41 82 00 0C */ beq lbl_80AF92D4 -/* 80AF92CC 38 00 00 02 */ li r0, 2 -/* 80AF92D0 B0 1C 0E 18 */ sth r0, 0xe18(r28) -lbl_80AF92D4: -/* 80AF92D4 80 9F 00 00 */ lwz r4, 0(r31) -/* 80AF92D8 3C 60 30 30 */ lis r3, 0x3030 /* 0x30303036@ha */ -/* 80AF92DC 38 03 30 36 */ addi r0, r3, 0x3036 /* 0x30303036@l */ -/* 80AF92E0 7C 04 00 00 */ cmpw r4, r0 -/* 80AF92E4 40 80 00 38 */ bge lbl_80AF931C -/* 80AF92E8 38 03 30 31 */ addi r0, r3, 0x3031 -/* 80AF92EC 7C 04 00 00 */ cmpw r4, r0 -/* 80AF92F0 40 80 00 08 */ bge lbl_80AF92F8 -/* 80AF92F4 48 00 00 28 */ b lbl_80AF931C -lbl_80AF92F8: -/* 80AF92F8 7F 83 E3 78 */ mr r3, r28 -/* 80AF92FC 38 80 00 00 */ li r4, 0 -/* 80AF9300 38 A0 00 01 */ li r5, 1 -/* 80AF9304 38 C0 00 00 */ li r6, 0 -/* 80AF9308 4B 65 AA 7D */ bl talkProc__8daNpcF_cFPiiPP10fopAc_ac_c -/* 80AF930C 2C 03 00 00 */ cmpwi r3, 0 -/* 80AF9310 41 82 00 0C */ beq lbl_80AF931C -/* 80AF9314 38 60 00 01 */ li r3, 1 -/* 80AF9318 48 00 00 08 */ b lbl_80AF9320 -lbl_80AF931C: -/* 80AF931C 38 60 00 00 */ li r3, 0 -lbl_80AF9320: -/* 80AF9320 39 61 00 20 */ addi r11, r1, 0x20 -/* 80AF9324 4B 86 8F 01 */ bl _restgpr_28 -/* 80AF9328 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80AF932C 7C 08 03 A6 */ mtlr r0 -/* 80AF9330 38 21 00 20 */ addi r1, r1, 0x20 -/* 80AF9334 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/create__10daNpcThe_cFv.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/create__10daNpcThe_cFv.s deleted file mode 100644 index 282e707315b..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/create__10daNpcThe_cFv.s +++ /dev/null @@ -1,282 +0,0 @@ -lbl_80AF9358: -/* 80AF9358 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80AF935C 7C 08 02 A6 */ mflr r0 -/* 80AF9360 90 01 00 44 */ stw r0, 0x44(r1) -/* 80AF9364 39 61 00 40 */ addi r11, r1, 0x40 -/* 80AF9368 4B 86 8E 65 */ bl _savegpr_25 -/* 80AF936C 7C 7F 1B 78 */ mr r31, r3 -/* 80AF9370 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80AF9374 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80AF9378 40 82 00 1C */ bne lbl_80AF9394 -/* 80AF937C 28 1F 00 00 */ cmplwi r31, 0 -/* 80AF9380 41 82 00 08 */ beq lbl_80AF9388 -/* 80AF9384 4B FF E3 49 */ bl __ct__10daNpcThe_cFv -lbl_80AF9388: -/* 80AF9388 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80AF938C 60 00 00 08 */ ori r0, r0, 8 -/* 80AF9390 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80AF9394: -/* 80AF9394 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80AF9398 54 00 06 3E */ clrlwi r0, r0, 0x18 -/* 80AF939C 2C 00 00 01 */ cmpwi r0, 1 -/* 80AF93A0 41 82 00 28 */ beq lbl_80AF93C8 -/* 80AF93A4 40 80 00 10 */ bge lbl_80AF93B4 -/* 80AF93A8 2C 00 00 00 */ cmpwi r0, 0 -/* 80AF93AC 40 80 00 14 */ bge lbl_80AF93C0 -/* 80AF93B0 48 00 00 28 */ b lbl_80AF93D8 -lbl_80AF93B4: -/* 80AF93B4 2C 00 00 03 */ cmpwi r0, 3 -/* 80AF93B8 40 80 00 20 */ bge lbl_80AF93D8 -/* 80AF93BC 48 00 00 14 */ b lbl_80AF93D0 -lbl_80AF93C0: -/* 80AF93C0 38 00 00 00 */ li r0, 0 -/* 80AF93C4 48 00 00 18 */ b lbl_80AF93DC -lbl_80AF93C8: -/* 80AF93C8 38 00 00 01 */ li r0, 1 -/* 80AF93CC 48 00 00 10 */ b lbl_80AF93DC -lbl_80AF93D0: -/* 80AF93D0 38 00 00 02 */ li r0, 2 -/* 80AF93D4 48 00 00 08 */ b lbl_80AF93DC -lbl_80AF93D8: -/* 80AF93D8 38 00 00 00 */ li r0, 0 -lbl_80AF93DC: -/* 80AF93DC 98 1F 0E 1E */ stb r0, 0xe1e(r31) -/* 80AF93E0 A8 7F 04 B4 */ lha r3, 0x4b4(r31) -/* 80AF93E4 3C 03 00 00 */ addis r0, r3, 0 -/* 80AF93E8 28 00 FF FF */ cmplwi r0, 0xffff -/* 80AF93EC 41 82 00 0C */ beq lbl_80AF93F8 -/* 80AF93F0 90 7F 0E 14 */ stw r3, 0xe14(r31) -/* 80AF93F4 48 00 00 0C */ b lbl_80AF9400 -lbl_80AF93F8: -/* 80AF93F8 38 00 FF FF */ li r0, -1 -/* 80AF93FC 90 1F 0E 14 */ stw r0, 0xe14(r31) -lbl_80AF9400: -/* 80AF9400 88 1F 0E 1E */ lbz r0, 0xe1e(r31) -/* 80AF9404 28 00 00 02 */ cmplwi r0, 2 -/* 80AF9408 40 82 00 50 */ bne lbl_80AF9458 -/* 80AF940C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80AF9410 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80AF9414 3B 63 07 F0 */ addi r27, r3, 0x7f0 -/* 80AF9418 7F 63 DB 78 */ mr r3, r27 -/* 80AF941C 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 80AF9420 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 80AF9424 A0 84 00 88 */ lhz r4, 0x88(r4) -/* 80AF9428 4B 53 B5 95 */ bl isEventBit__11dSv_event_cCFUs -/* 80AF942C 2C 03 00 00 */ cmpwi r3, 0 -/* 80AF9430 41 82 00 20 */ beq lbl_80AF9450 -/* 80AF9434 7F 63 DB 78 */ mr r3, r27 -/* 80AF9438 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 80AF943C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 80AF9440 A0 84 00 9C */ lhz r4, 0x9c(r4) -/* 80AF9444 4B 53 B5 79 */ bl isEventBit__11dSv_event_cCFUs -/* 80AF9448 2C 03 00 00 */ cmpwi r3, 0 -/* 80AF944C 41 82 00 0C */ beq lbl_80AF9458 -lbl_80AF9450: -/* 80AF9450 38 60 00 05 */ li r3, 5 -/* 80AF9454 48 00 02 DC */ b lbl_80AF9730 -lbl_80AF9458: -/* 80AF9458 3B 40 00 00 */ li r26, 0 -/* 80AF945C 3B 20 00 00 */ li r25, 0 -/* 80AF9460 3B C0 00 00 */ li r30, 0 -/* 80AF9464 3B A0 00 00 */ li r29, 0 -/* 80AF9468 3C 60 80 B0 */ lis r3, l_resNames@ha /* 0x80AFC380@ha */ -/* 80AF946C 3B 63 C3 80 */ addi r27, r3, l_resNames@l /* 0x80AFC380@l */ -/* 80AF9470 3C 60 80 B0 */ lis r3, l_loadRes_list@ha /* 0x80AFC374@ha */ -/* 80AF9474 3B 83 C3 74 */ addi r28, r3, l_loadRes_list@l /* 0x80AFC374@l */ -/* 80AF9478 48 00 00 48 */ b lbl_80AF94C0 -lbl_80AF947C: -/* 80AF947C 38 7D 0D E8 */ addi r3, r29, 0xde8 -/* 80AF9480 7C 7F 1A 14 */ add r3, r31, r3 -/* 80AF9484 54 00 10 3A */ slwi r0, r0, 2 -/* 80AF9488 7C 9B 00 2E */ lwzx r4, r27, r0 -/* 80AF948C 4B 53 3A 31 */ bl dComIfG_resLoad__FP30request_of_phase_process_classPCc -/* 80AF9490 2C 03 00 05 */ cmpwi r3, 5 -/* 80AF9494 41 82 00 0C */ beq lbl_80AF94A0 -/* 80AF9498 2C 03 00 03 */ cmpwi r3, 3 -/* 80AF949C 40 82 00 0C */ bne lbl_80AF94A8 -lbl_80AF94A0: -/* 80AF94A0 38 60 00 05 */ li r3, 5 -/* 80AF94A4 48 00 02 8C */ b lbl_80AF9730 -lbl_80AF94A8: -/* 80AF94A8 2C 03 00 04 */ cmpwi r3, 4 -/* 80AF94AC 40 82 00 08 */ bne lbl_80AF94B4 -/* 80AF94B0 3B 5A 00 01 */ addi r26, r26, 1 -lbl_80AF94B4: -/* 80AF94B4 3B 39 00 01 */ addi r25, r25, 1 -/* 80AF94B8 3B DE 00 04 */ addi r30, r30, 4 -/* 80AF94BC 3B BD 00 08 */ addi r29, r29, 8 -lbl_80AF94C0: -/* 80AF94C0 88 9F 0E 1E */ lbz r4, 0xe1e(r31) -/* 80AF94C4 54 80 15 BA */ rlwinm r0, r4, 2, 0x16, 0x1d -/* 80AF94C8 7C 7C 00 2E */ lwzx r3, r28, r0 -/* 80AF94CC 7C 03 F0 2E */ lwzx r0, r3, r30 -/* 80AF94D0 2C 00 00 00 */ cmpwi r0, 0 -/* 80AF94D4 40 80 FF A8 */ bge lbl_80AF947C -/* 80AF94D8 7C 1A C8 00 */ cmpw r26, r25 -/* 80AF94DC 40 82 02 50 */ bne lbl_80AF972C -/* 80AF94E0 38 A0 00 00 */ li r5, 0 -/* 80AF94E4 2C 04 00 01 */ cmpwi r4, 1 -/* 80AF94E8 41 82 00 28 */ beq lbl_80AF9510 -/* 80AF94EC 40 80 00 10 */ bge lbl_80AF94FC -/* 80AF94F0 2C 04 00 00 */ cmpwi r4, 0 -/* 80AF94F4 40 80 00 14 */ bge lbl_80AF9508 -/* 80AF94F8 48 00 00 24 */ b lbl_80AF951C -lbl_80AF94FC: -/* 80AF94FC 2C 04 00 03 */ cmpwi r4, 3 -/* 80AF9500 40 80 00 1C */ bge lbl_80AF951C -/* 80AF9504 48 00 00 14 */ b lbl_80AF9518 -lbl_80AF9508: -/* 80AF9508 38 A0 4D 70 */ li r5, 0x4d70 -/* 80AF950C 48 00 00 10 */ b lbl_80AF951C -lbl_80AF9510: -/* 80AF9510 38 A0 4C C0 */ li r5, 0x4cc0 -/* 80AF9514 48 00 00 08 */ b lbl_80AF951C -lbl_80AF9518: -/* 80AF9518 38 A0 4D 80 */ li r5, 0x4d80 -lbl_80AF951C: -/* 80AF951C 7F E3 FB 78 */ mr r3, r31 -/* 80AF9520 3C 80 80 AF */ lis r4, createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c@ha /* 0x80AF7CB0@ha */ -/* 80AF9524 38 84 7C B0 */ addi r4, r4, createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c@l /* 0x80AF7CB0@l */ -/* 80AF9528 4B 52 0F 89 */ bl fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl -/* 80AF952C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80AF9530 40 82 00 0C */ bne lbl_80AF953C -/* 80AF9534 38 60 00 05 */ li r3, 5 -/* 80AF9538 48 00 01 F8 */ b lbl_80AF9730 -lbl_80AF953C: -/* 80AF953C 88 1F 0E 1E */ lbz r0, 0xe1e(r31) -/* 80AF9540 28 00 00 00 */ cmplwi r0, 0 -/* 80AF9544 41 82 00 14 */ beq lbl_80AF9558 -/* 80AF9548 28 00 00 01 */ cmplwi r0, 1 -/* 80AF954C 41 82 00 0C */ beq lbl_80AF9558 -/* 80AF9550 28 00 00 02 */ cmplwi r0, 2 -/* 80AF9554 40 82 00 0C */ bne lbl_80AF9560 -lbl_80AF9558: -/* 80AF9558 38 00 00 00 */ li r0, 0 -/* 80AF955C 48 00 00 08 */ b lbl_80AF9564 -lbl_80AF9560: -/* 80AF9560 38 00 00 01 */ li r0, 1 -lbl_80AF9564: -/* 80AF9564 54 00 06 3F */ clrlwi. r0, r0, 0x18 -/* 80AF9568 41 82 00 0C */ beq lbl_80AF9574 -/* 80AF956C 38 60 00 05 */ li r3, 5 -/* 80AF9570 48 00 01 C0 */ b lbl_80AF9730 -lbl_80AF9574: -/* 80AF9574 80 7F 05 68 */ lwz r3, 0x568(r31) -/* 80AF9578 80 63 00 04 */ lwz r3, 4(r3) -/* 80AF957C 38 03 00 24 */ addi r0, r3, 0x24 -/* 80AF9580 90 1F 05 04 */ stw r0, 0x504(r31) -/* 80AF9584 80 7F 05 68 */ lwz r3, 0x568(r31) -/* 80AF9588 80 63 00 04 */ lwz r3, 4(r3) -/* 80AF958C 80 83 00 04 */ lwz r4, 4(r3) -/* 80AF9590 7F E3 FB 78 */ mr r3, r31 -/* 80AF9594 4B 52 0F E5 */ bl fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData -/* 80AF9598 38 7F 0B 48 */ addi r3, r31, 0xb48 -/* 80AF959C 38 9F 04 D0 */ addi r4, r31, 0x4d0 -/* 80AF95A0 38 BF 05 38 */ addi r5, r31, 0x538 -/* 80AF95A4 38 C0 00 03 */ li r6, 3 -/* 80AF95A8 38 E0 00 01 */ li r7, 1 -/* 80AF95AC 4B 7C 6F 85 */ bl init__10Z2CreatureFP3VecP3VecUcUc -/* 80AF95B0 38 7F 07 E4 */ addi r3, r31, 0x7e4 -/* 80AF95B4 3C 80 80 B0 */ lis r4, m__16daNpcThe_Param_c@ha /* 0x80AFBE0C@ha */ -/* 80AF95B8 3B A4 BE 0C */ addi r29, r4, m__16daNpcThe_Param_c@l /* 0x80AFBE0C@l */ -/* 80AF95BC C0 3D 00 1C */ lfs f1, 0x1c(r29) -/* 80AF95C0 C0 5D 00 18 */ lfs f2, 0x18(r29) -/* 80AF95C4 4B 57 C9 95 */ bl SetWall__12dBgS_AcchCirFff -/* 80AF95C8 38 1F 04 E4 */ addi r0, r31, 0x4e4 -/* 80AF95CC 90 01 00 08 */ stw r0, 8(r1) -/* 80AF95D0 38 7F 05 D0 */ addi r3, r31, 0x5d0 -/* 80AF95D4 38 9F 04 D0 */ addi r4, r31, 0x4d0 -/* 80AF95D8 38 BF 04 BC */ addi r5, r31, 0x4bc -/* 80AF95DC 7F E6 FB 78 */ mr r6, r31 -/* 80AF95E0 38 E0 00 01 */ li r7, 1 -/* 80AF95E4 39 1F 07 E4 */ addi r8, r31, 0x7e4 -/* 80AF95E8 39 3F 04 F8 */ addi r9, r31, 0x4f8 -/* 80AF95EC 39 5F 04 DC */ addi r10, r31, 0x4dc -/* 80AF95F0 4B 57 CC 59 */ bl Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz -/* 80AF95F4 80 1F 05 FC */ lwz r0, 0x5fc(r31) -/* 80AF95F8 60 00 00 08 */ ori r0, r0, 8 -/* 80AF95FC 90 1F 05 FC */ stw r0, 0x5fc(r31) -/* 80AF9600 80 1F 05 FC */ lwz r0, 0x5fc(r31) -/* 80AF9604 60 00 04 00 */ ori r0, r0, 0x400 -/* 80AF9608 90 1F 05 FC */ stw r0, 0x5fc(r31) -/* 80AF960C 38 7F 05 D0 */ addi r3, r31, 0x5d0 -/* 80AF9610 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80AF9614 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80AF9618 38 84 0F 38 */ addi r4, r4, 0xf38 -/* 80AF961C 4B 57 D4 91 */ bl CrrPos__9dBgS_AcchFR4dBgS -/* 80AF9620 38 7F 07 A8 */ addi r3, r31, 0x7a8 -/* 80AF9624 3C 80 80 B0 */ lis r4, m__16daNpcThe_Param_c@ha /* 0x80AFBE0C@ha */ -/* 80AF9628 38 84 BE 0C */ addi r4, r4, m__16daNpcThe_Param_c@l /* 0x80AFBE0C@l */ -/* 80AF962C C0 04 00 10 */ lfs f0, 0x10(r4) -/* 80AF9630 FC 00 00 1E */ fctiwz f0, f0 -/* 80AF9634 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 80AF9638 80 81 00 14 */ lwz r4, 0x14(r1) -/* 80AF963C 38 A0 00 00 */ li r5, 0 -/* 80AF9640 7F E6 FB 78 */ mr r6, r31 -/* 80AF9644 4B 58 A2 1D */ bl Init__9dCcD_SttsFiiP10fopAc_ac_c -/* 80AF9648 38 7F 0C 94 */ addi r3, r31, 0xc94 -/* 80AF964C 3C 80 80 3B */ lis r4, mCcDCyl__8daNpcF_c@ha /* 0x803B37E0@ha */ -/* 80AF9650 38 84 37 E0 */ addi r4, r4, mCcDCyl__8daNpcF_c@l /* 0x803B37E0@l */ -/* 80AF9654 4B 58 B2 61 */ bl Set__8dCcD_CylFRC11dCcD_SrcCyl -/* 80AF9658 38 1F 07 A8 */ addi r0, r31, 0x7a8 -/* 80AF965C 90 1F 0C D8 */ stw r0, 0xcd8(r31) -/* 80AF9660 38 00 00 00 */ li r0, 0 -/* 80AF9664 90 1F 0C BC */ stw r0, 0xcbc(r31) -/* 80AF9668 90 1F 0C AC */ stw r0, 0xcac(r31) -/* 80AF966C 38 7F 0D B8 */ addi r3, r31, 0xdb8 -/* 80AF9670 3C 80 80 B0 */ lis r4, m__16daNpcThe_Param_c@ha /* 0x80AFBE0C@ha */ -/* 80AF9674 38 84 BE 0C */ addi r4, r4, m__16daNpcThe_Param_c@l /* 0x80AFBE0C@l */ -/* 80AF9678 C0 24 00 14 */ lfs f1, 0x14(r4) -/* 80AF967C 4B 77 5B 7D */ bl SetH__8cM3dGCylFf -/* 80AF9680 38 7F 0D B8 */ addi r3, r31, 0xdb8 -/* 80AF9684 C0 3D 00 1C */ lfs f1, 0x1c(r29) -/* 80AF9688 4B 77 5B 79 */ bl SetR__8cM3dGCylFf -/* 80AF968C 80 1F 06 AC */ lwz r0, 0x6ac(r31) -/* 80AF9690 90 1F 0A 44 */ stw r0, 0xa44(r31) -/* 80AF9694 80 1F 06 B0 */ lwz r0, 0x6b0(r31) -/* 80AF9698 90 1F 0A 48 */ stw r0, 0xa48(r31) -/* 80AF969C 80 1F 06 B4 */ lwz r0, 0x6b4(r31) -/* 80AF96A0 90 1F 0A 4C */ stw r0, 0xa4c(r31) -/* 80AF96A4 88 1F 06 B8 */ lbz r0, 0x6b8(r31) -/* 80AF96A8 98 1F 0A 50 */ stb r0, 0xa50(r31) -/* 80AF96AC A0 1F 06 C0 */ lhz r0, 0x6c0(r31) -/* 80AF96B0 B0 1F 0A 58 */ sth r0, 0xa58(r31) -/* 80AF96B4 A0 1F 06 C2 */ lhz r0, 0x6c2(r31) -/* 80AF96B8 B0 1F 0A 5A */ sth r0, 0xa5a(r31) -/* 80AF96BC 80 1F 06 C4 */ lwz r0, 0x6c4(r31) -/* 80AF96C0 90 1F 0A 5C */ stw r0, 0xa5c(r31) -/* 80AF96C4 80 1F 06 C8 */ lwz r0, 0x6c8(r31) -/* 80AF96C8 90 1F 0A 60 */ stw r0, 0xa60(r31) -/* 80AF96CC C0 1F 06 D0 */ lfs f0, 0x6d0(r31) -/* 80AF96D0 D0 1F 0A 68 */ stfs f0, 0xa68(r31) -/* 80AF96D4 C0 1F 06 D4 */ lfs f0, 0x6d4(r31) -/* 80AF96D8 D0 1F 0A 6C */ stfs f0, 0xa6c(r31) -/* 80AF96DC C0 1F 06 D8 */ lfs f0, 0x6d8(r31) -/* 80AF96E0 D0 1F 0A 70 */ stfs f0, 0xa70(r31) -/* 80AF96E4 80 1F 06 DC */ lwz r0, 0x6dc(r31) -/* 80AF96E8 90 1F 0A 74 */ stw r0, 0xa74(r31) -/* 80AF96EC C0 1F 06 E0 */ lfs f0, 0x6e0(r31) -/* 80AF96F0 D0 1F 0A 78 */ stfs f0, 0xa78(r31) -/* 80AF96F4 80 1F 06 E4 */ lwz r0, 0x6e4(r31) -/* 80AF96F8 90 1F 0A 7C */ stw r0, 0xa7c(r31) -/* 80AF96FC C0 1F 06 68 */ lfs f0, 0x668(r31) -/* 80AF9700 D0 1F 09 80 */ stfs f0, 0x980(r31) -/* 80AF9704 7F E3 FB 78 */ mr r3, r31 -/* 80AF9708 4B 65 96 7D */ bl setEnvTevColor__8daNpcF_cFv -/* 80AF970C 7F E3 FB 78 */ mr r3, r31 -/* 80AF9710 4B 65 96 D1 */ bl setRoomNo__8daNpcF_cFv -/* 80AF9714 7F E3 FB 78 */ mr r3, r31 -/* 80AF9718 48 00 00 31 */ bl reset__10daNpcThe_cFv -/* 80AF971C 7F E3 FB 78 */ mr r3, r31 -/* 80AF9720 4B 65 88 F5 */ bl execute__8daNpcF_cFv -/* 80AF9724 38 60 00 04 */ li r3, 4 -/* 80AF9728 48 00 00 08 */ b lbl_80AF9730 -lbl_80AF972C: -/* 80AF972C 38 60 00 00 */ li r3, 0 -lbl_80AF9730: -/* 80AF9730 39 61 00 40 */ addi r11, r1, 0x40 -/* 80AF9734 4B 86 8A E5 */ bl _restgpr_25 -/* 80AF9738 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80AF973C 7C 08 03 A6 */ mtlr r0 -/* 80AF9740 38 21 00 40 */ addi r1, r1, 0x40 -/* 80AF9744 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJointCallBack__10daNpcThe_cFP8J3DJointi.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJointCallBack__10daNpcThe_cFP8J3DJointi.s deleted file mode 100644 index 45c78b86495..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJointCallBack__10daNpcThe_cFP8J3DJointi.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80AF8114: -/* 80AF8114 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80AF8118 7C 08 02 A6 */ mflr r0 -/* 80AF811C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80AF8120 7C 60 1B 78 */ mr r0, r3 -/* 80AF8124 2C 04 00 00 */ cmpwi r4, 0 -/* 80AF8128 40 82 00 24 */ bne lbl_80AF814C -/* 80AF812C 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80AF8130 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80AF8134 80 A3 00 38 */ lwz r5, 0x38(r3) -/* 80AF8138 80 65 00 14 */ lwz r3, 0x14(r5) -/* 80AF813C 28 03 00 00 */ cmplwi r3, 0 -/* 80AF8140 41 82 00 0C */ beq lbl_80AF814C -/* 80AF8144 7C 04 03 78 */ mr r4, r0 -/* 80AF8148 4B FF F9 99 */ bl ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel -lbl_80AF814C: -/* 80AF814C 38 60 00 01 */ li r3, 1 -/* 80AF8150 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80AF8154 7C 08 03 A6 */ mtlr r0 -/* 80AF8158 38 21 00 10 */ addi r1, r1, 0x10 -/* 80AF815C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel.s deleted file mode 100644 index 737e6d00c2b..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel.s +++ /dev/null @@ -1,123 +0,0 @@ -lbl_80AF7AE0: -/* 80AF7AE0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80AF7AE4 7C 08 02 A6 */ mflr r0 -/* 80AF7AE8 90 01 00 34 */ stw r0, 0x34(r1) -/* 80AF7AEC 39 61 00 30 */ addi r11, r1, 0x30 -/* 80AF7AF0 4B 86 A6 E9 */ bl _savegpr_28 -/* 80AF7AF4 7C 7D 1B 78 */ mr r29, r3 -/* 80AF7AF8 7C BE 2B 78 */ mr r30, r5 -/* 80AF7AFC A0 A4 00 14 */ lhz r5, 0x14(r4) -/* 80AF7B00 7C BF 2B 78 */ mr r31, r5 -/* 80AF7B04 3C 60 80 B0 */ lis r3, lit_4159@ha /* 0x80AFBE78@ha */ -/* 80AF7B08 38 83 BE 78 */ addi r4, r3, lit_4159@l /* 0x80AFBE78@l */ -/* 80AF7B0C 80 64 00 00 */ lwz r3, 0(r4) -/* 80AF7B10 80 04 00 04 */ lwz r0, 4(r4) -/* 80AF7B14 90 61 00 08 */ stw r3, 8(r1) -/* 80AF7B18 90 01 00 0C */ stw r0, 0xc(r1) -/* 80AF7B1C 80 04 00 08 */ lwz r0, 8(r4) -/* 80AF7B20 90 01 00 10 */ stw r0, 0x10(r1) -/* 80AF7B24 2C 05 00 00 */ cmpwi r5, 0 -/* 80AF7B28 40 82 00 B0 */ bne lbl_80AF7BD8 -/* 80AF7B2C 80 7D 05 68 */ lwz r3, 0x568(r29) -/* 80AF7B30 80 63 00 04 */ lwz r3, 4(r3) -/* 80AF7B34 80 63 00 84 */ lwz r3, 0x84(r3) -/* 80AF7B38 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80AF7B3C 38 63 00 30 */ addi r3, r3, 0x30 -/* 80AF7B40 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7B44 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7B48 4B 84 E9 69 */ bl PSMTXCopy -/* 80AF7B4C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7B50 3B 83 D4 70 */ addi r28, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7B54 C0 1C 00 0C */ lfs f0, 0xc(r28) -/* 80AF7B58 D0 1D 08 54 */ stfs f0, 0x854(r29) -/* 80AF7B5C C0 1C 00 1C */ lfs f0, 0x1c(r28) -/* 80AF7B60 D0 1D 08 58 */ stfs f0, 0x858(r29) -/* 80AF7B64 C0 1C 00 2C */ lfs f0, 0x2c(r28) -/* 80AF7B68 D0 1D 08 5C */ stfs f0, 0x85c(r29) -/* 80AF7B6C 80 7D 05 68 */ lwz r3, 0x568(r29) -/* 80AF7B70 80 63 00 04 */ lwz r3, 4(r3) -/* 80AF7B74 80 63 00 84 */ lwz r3, 0x84(r3) -/* 80AF7B78 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80AF7B7C 38 63 00 90 */ addi r3, r3, 0x90 -/* 80AF7B80 7F 84 E3 78 */ mr r4, r28 -/* 80AF7B84 4B 84 E9 2D */ bl PSMTXCopy -/* 80AF7B88 C0 1C 00 0C */ lfs f0, 0xc(r28) -/* 80AF7B8C D0 1D 08 60 */ stfs f0, 0x860(r29) -/* 80AF7B90 C0 1C 00 1C */ lfs f0, 0x1c(r28) -/* 80AF7B94 D0 1D 08 64 */ stfs f0, 0x864(r29) -/* 80AF7B98 C0 1C 00 2C */ lfs f0, 0x2c(r28) -/* 80AF7B9C D0 1D 08 68 */ stfs f0, 0x868(r29) -/* 80AF7BA0 80 7D 05 68 */ lwz r3, 0x568(r29) -/* 80AF7BA4 80 63 00 04 */ lwz r3, 4(r3) -/* 80AF7BA8 80 63 00 84 */ lwz r3, 0x84(r3) -/* 80AF7BAC 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80AF7BB0 38 63 00 C0 */ addi r3, r3, 0xc0 -/* 80AF7BB4 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7BB8 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7BBC 4B 84 E8 F5 */ bl PSMTXCopy -/* 80AF7BC0 C0 1C 00 0C */ lfs f0, 0xc(r28) -/* 80AF7BC4 D0 1D 08 6C */ stfs f0, 0x86c(r29) -/* 80AF7BC8 C0 1C 00 1C */ lfs f0, 0x1c(r28) -/* 80AF7BCC D0 1D 08 70 */ stfs f0, 0x870(r29) -/* 80AF7BD0 C0 1C 00 2C */ lfs f0, 0x2c(r28) -/* 80AF7BD4 D0 1D 08 74 */ stfs f0, 0x874(r29) -lbl_80AF7BD8: -/* 80AF7BD8 80 7E 00 84 */ lwz r3, 0x84(r30) -/* 80AF7BDC 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80AF7BE0 1F 9F 00 30 */ mulli r28, r31, 0x30 -/* 80AF7BE4 7C 60 E2 14 */ add r3, r0, r28 -/* 80AF7BE8 3C 80 80 3E */ lis r4, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7BEC 38 84 D4 70 */ addi r4, r4, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7BF0 4B 84 E8 C1 */ bl PSMTXCopy -/* 80AF7BF4 2C 1F 00 02 */ cmpwi r31, 2 -/* 80AF7BF8 41 82 00 38 */ beq lbl_80AF7C30 -/* 80AF7BFC 40 80 00 10 */ bge lbl_80AF7C0C -/* 80AF7C00 2C 1F 00 01 */ cmpwi r31, 1 -/* 80AF7C04 40 80 00 10 */ bge lbl_80AF7C14 -/* 80AF7C08 48 00 00 28 */ b lbl_80AF7C30 -lbl_80AF7C0C: -/* 80AF7C0C 2C 1F 00 05 */ cmpwi r31, 5 -/* 80AF7C10 40 80 00 20 */ bge lbl_80AF7C30 -lbl_80AF7C14: -/* 80AF7C14 7F A3 EB 78 */ mr r3, r29 -/* 80AF7C18 7F E4 FB 78 */ mr r4, r31 -/* 80AF7C1C 38 A1 00 08 */ addi r5, r1, 8 -/* 80AF7C20 3C C0 80 B0 */ lis r6, m__16daNpcThe_Param_c@ha /* 0x80AFBE0C@ha */ -/* 80AF7C24 38 C6 BE 0C */ addi r6, r6, m__16daNpcThe_Param_c@l /* 0x80AFBE0C@l */ -/* 80AF7C28 C0 26 00 40 */ lfs f1, 0x40(r6) -/* 80AF7C2C 4B 65 B7 51 */ bl setLookatMtx__8daNpcF_cFiPif -lbl_80AF7C30: -/* 80AF7C30 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7C34 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7C38 80 9E 00 84 */ lwz r4, 0x84(r30) -/* 80AF7C3C 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80AF7C40 7C 80 E2 14 */ add r4, r0, r28 -/* 80AF7C44 4B 84 E8 6D */ bl PSMTXCopy -/* 80AF7C48 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80AF7C4C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80AF7C50 3C 80 80 43 */ lis r4, mCurrentMtx__6J3DSys@ha /* 0x80434BE4@ha */ -/* 80AF7C54 38 84 4B E4 */ addi r4, r4, mCurrentMtx__6J3DSys@l /* 0x80434BE4@l */ -/* 80AF7C58 4B 84 E8 59 */ bl PSMTXCopy -/* 80AF7C5C 2C 1F 00 04 */ cmpwi r31, 4 -/* 80AF7C60 41 82 00 0C */ beq lbl_80AF7C6C -/* 80AF7C64 2C 1F 00 0B */ cmpwi r31, 0xb -/* 80AF7C68 40 82 00 2C */ bne lbl_80AF7C94 -lbl_80AF7C6C: -/* 80AF7C6C 80 1D 09 9C */ lwz r0, 0x99c(r29) -/* 80AF7C70 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 80AF7C74 41 82 00 20 */ beq lbl_80AF7C94 -/* 80AF7C78 83 9D 05 80 */ lwz r28, 0x580(r29) -/* 80AF7C7C 80 7D 05 68 */ lwz r3, 0x568(r29) -/* 80AF7C80 80 83 00 08 */ lwz r4, 8(r3) -/* 80AF7C84 38 7D 05 6C */ addi r3, r29, 0x56c -/* 80AF7C88 4B 51 5D 09 */ bl changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform -/* 80AF7C8C 80 7D 05 68 */ lwz r3, 0x568(r29) -/* 80AF7C90 93 83 00 08 */ stw r28, 8(r3) -lbl_80AF7C94: -/* 80AF7C94 38 60 00 01 */ li r3, 1 -/* 80AF7C98 39 61 00 30 */ addi r11, r1, 0x30 -/* 80AF7C9C 4B 86 A5 89 */ bl _restgpr_28 -/* 80AF7CA0 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80AF7CA4 7C 08 03 A6 */ mtlr r0 -/* 80AF7CA8 38 21 00 30 */ addi r1, r1, 0x30 -/* 80AF7CAC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Create__FPv.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Create__FPv.s deleted file mode 100644 index 3223e18049f..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Create__FPv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80AF9338: -/* 80AF9338 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80AF933C 7C 08 02 A6 */ mflr r0 -/* 80AF9340 90 01 00 14 */ stw r0, 0x14(r1) -/* 80AF9344 48 00 00 15 */ bl create__10daNpcThe_cFv -/* 80AF9348 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80AF934C 7C 08 03 A6 */ mtlr r0 -/* 80AF9350 38 21 00 10 */ addi r1, r1, 0x10 -/* 80AF9354 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Delete__FPv.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Delete__FPv.s deleted file mode 100644 index 9f558025ead..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Delete__FPv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80AF98D0: -/* 80AF98D0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80AF98D4 7C 08 02 A6 */ mflr r0 -/* 80AF98D8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80AF98DC 38 80 FF FF */ li r4, -1 -/* 80AF98E0 81 83 0B 44 */ lwz r12, 0xb44(r3) -/* 80AF98E4 81 8C 00 08 */ lwz r12, 8(r12) -/* 80AF98E8 7D 89 03 A6 */ mtctr r12 -/* 80AF98EC 4E 80 04 21 */ bctrl -/* 80AF98F0 38 60 00 01 */ li r3, 1 -/* 80AF98F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80AF98F8 7C 08 03 A6 */ mtlr r0 -/* 80AF98FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80AF9900 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Execute__FPv.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Execute__FPv.s deleted file mode 100644 index 365f268b6dd..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Execute__FPv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80AF9904: -/* 80AF9904 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80AF9908 7C 08 02 A6 */ mflr r0 -/* 80AF990C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80AF9910 4B 65 87 05 */ bl execute__8daNpcF_cFv -/* 80AF9914 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80AF9918 7C 08 03 A6 */ mtlr r0 -/* 80AF991C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80AF9920 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpression__10daNpcThe_cFif.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpression__10daNpcThe_cFif.s deleted file mode 100644 index 187910e1f1b..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpression__10daNpcThe_cFif.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80AF8B50: -/* 80AF8B50 2C 04 00 00 */ cmpwi r4, 0 -/* 80AF8B54 4D 80 00 20 */ bltlr -/* 80AF8B58 2C 04 00 0E */ cmpwi r4, 0xe -/* 80AF8B5C 4C 80 00 20 */ bgelr -/* 80AF8B60 B0 83 09 DE */ sth r4, 0x9de(r3) -/* 80AF8B64 D0 23 09 74 */ stfs f1, 0x974(r3) -/* 80AF8B68 38 00 FF FF */ li r0, -1 -/* 80AF8B6C B0 03 09 D8 */ sth r0, 0x9d8(r3) -/* 80AF8B70 38 00 00 00 */ li r0, 0 -/* 80AF8B74 B0 03 09 D6 */ sth r0, 0x9d6(r3) -/* 80AF8B78 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotion__10daNpcThe_cFifi.s b/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotion__10daNpcThe_cFifi.s deleted file mode 100644 index e24aaeadad8..00000000000 --- a/asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotion__10daNpcThe_cFifi.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80AF8B0C: -/* 80AF8B0C 7C 86 07 34 */ extsh r6, r4 -/* 80AF8B10 2C 05 00 00 */ cmpwi r5, 0 -/* 80AF8B14 40 82 00 10 */ bne lbl_80AF8B24 -/* 80AF8B18 A8 03 09 E0 */ lha r0, 0x9e0(r3) -/* 80AF8B1C 7C 00 30 00 */ cmpw r0, r6 -/* 80AF8B20 4D 82 00 20 */ beqlr -lbl_80AF8B24: -/* 80AF8B24 2C 04 00 00 */ cmpwi r4, 0 -/* 80AF8B28 4D 80 00 20 */ bltlr -/* 80AF8B2C 2C 04 00 0B */ cmpwi r4, 0xb -/* 80AF8B30 4C 80 00 20 */ bgelr -/* 80AF8B34 B0 C3 09 E0 */ sth r6, 0x9e0(r3) -/* 80AF8B38 D0 23 09 7C */ stfs f1, 0x97c(r3) -/* 80AF8B3C 38 00 FF FF */ li r0, -1 -/* 80AF8B40 B0 03 09 DC */ sth r0, 0x9dc(r3) -/* 80AF8B44 38 00 00 00 */ li r0, 0 -/* 80AF8B48 B0 03 09 DA */ sth r0, 0x9da(r3) -/* 80AF8B4C 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h index 91ecb818a53..340a6c81699 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h @@ -9,7 +9,7 @@ typedef struct _GXColorS10 GXColorS10; class J3DMatColorAnm { public: /* 8003B2B8 */ ~J3DMatColorAnm() {}; - /* 8003B2F4 */ J3DMatColorAnm() {}; + /* 8003B2F4 */ J3DMatColorAnm() : field_0x0(0), mAnmFlag(1), mAnmColor(NULL) {}; J3DMatColorAnm(u16 param_1, J3DAnmColor* param_2) { field_0x0 = param_1; mAnmFlag = 1; @@ -35,7 +35,7 @@ private: class J3DTexNoAnm { public: /* 8003B1F8 */ ~J3DTexNoAnm() {}; - /* 8003B240 */ J3DTexNoAnm() {}; + /* 8003B240 */ J3DTexNoAnm() : field_0x4(0), mAnmFlag(1), mAnmTexPattern(NULL) {}; J3DTexNoAnm(u16 param_1, J3DAnmTexPattern* param_2) { field_0x4 = param_1; mAnmFlag = 1; @@ -62,7 +62,7 @@ private: class J3DTexMtxAnm { public: /* 8003B264 */ ~J3DTexMtxAnm() {}; - /* 8003B2A0 */ J3DTexMtxAnm() {}; + /* 8003B2A0 */ J3DTexMtxAnm() : field_0x0(0), mAnmFlag(1), mAnmTransform(NULL) {}; J3DTexMtxAnm(u16 param_1, J3DAnmTextureSRTKey* param_2) { field_0x0 = param_1; mAnmFlag = 1; @@ -90,7 +90,7 @@ private: class J3DTevKColorAnm { public: /* 8003B150 */ ~J3DTevKColorAnm() {} - /* 8003B18C */ J3DTevKColorAnm() {} + /* 8003B18C */ J3DTevKColorAnm() : field_0x0(0), mAnmFlag(1), mAnmTevReg(NULL) {} J3DTevKColorAnm(u16 param_1, J3DAnmTevRegKey* param_2) { field_0x0 = param_1; mAnmFlag = 1; @@ -116,7 +116,7 @@ private: class J3DTevColorAnm { public: /* 8003B1A4 */ ~J3DTevColorAnm() {} - /* 8003B1E0 */ J3DTevColorAnm() {} + /* 8003B1E0 */ J3DTevColorAnm() : field_0x0(0), mAnmFlag(1), mAnmTevReg(NULL) {} J3DTevColorAnm(u16 param_1, J3DAnmTevRegKey* param_2) { field_0x0 = param_1; mAnmFlag = 1; diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h index 206cc470772..356b8acd60f 100644 --- a/include/JSystem/JMath/JMATrigonometric.h +++ b/include/JSystem/JMath/JMATrigonometric.h @@ -12,38 +12,39 @@ struct TAngleConstant_ { static inline f32 RADIAN_DEG360() { return 6.2831855f; } }; +template struct TSinCosTable { - std::pair table[0x2000]; + std::pair table[1 << N]; - f32 sinShort(s16 v) const { return table[(u16)v >> 3U].first; } - f32 cosShort(s16 v) const { return table[(u16)v >> 3U].second; } + T sinShort(s16 v) const { return table[(u16)v >> (16U - N)].first; } + T cosShort(s16 v) const { return table[(u16)v >> (16U - N)].second; } - inline f32 sinLap(f32 v) { - if (v < 0.0f) { - return -table[(u16)(-8192.0f * v) & 0x1fff].first; + inline T sinLap(T v) { + if (v < (T)0.0) { + return -table[(u16)(-(T)(1 << N) * v) & ((1 << N) - 1)].first; } - return table[(u16)(8192.0f * v) & 0x1fff].first; + return table[(u16)((T)(1 << N) * v) & ((1 << N) - 1)].first; } - inline f32 sinDegree(f32 degree) { - if (degree < 0.0f) { - return -table[(u16)(-22.755556106567383f * degree) & 0x1fffU].first; + inline T sinDegree(T degree) { + if (degree < (T)0.0) { + return -table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first; } - return table[(u16)(22.755556106567383f * degree) & 0x1fffU].first; + return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first; } - inline f32 cosDegree(f32 degree) { - if (degree < 0.0f) { + inline T cosDegree(T degree) { + if (degree < (T)0.0) { degree = -degree; } - return table[(u16)(22.755556106567383f * degree) & 0x1fffU].second; + return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].second; } - inline f32 sinRadian(f32 radian) { - if (radian < 0.0f) { - return -table[(u16)(-8192.0f / TAngleConstant_::RADIAN_DEG360() * radian) & 0x1fffU].first; + inline T sinRadian(T radian) { + if (radian < (T)0.0) { + return -table[(u16)(-(T)(1 << N) / TAngleConstant_::RADIAN_DEG360() * radian) & ((1 << N) - 1)].first; } - return table[(u16)(8192.0f / TAngleConstant_::RADIAN_DEG360() * radian) & 0x1fffU].first; + return table[(u16)((T)(1 << N) / TAngleConstant_::RADIAN_DEG360() * radian) & ((1 << N) - 1)].first; } }; @@ -58,7 +59,7 @@ struct TAsinAcosTable { }; namespace JMath { -extern TSinCosTable sincosTable_; +extern TSinCosTable<13, f32> sincosTable_; extern TAtanTable atanTable_; extern TAsinAcosTable asinAcosTable_; }; // namespace JMath diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index 2c722527445..4f4e89a9cb4 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -95,7 +95,7 @@ struct cXyz : Vec { f32 getYDiff(const Vec* other) const { return y - other->y; } f32 getZDiff(const Vec* other) const { return z - other->z; } - void setAll(f32 f) { set(f, f, f); } + void setall(f32 f) { set(f, f, f); } void setMin(const cXyz& other) { if (x > other.x) { diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index 53644bf54a6..103471ccc9c 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -10,22 +10,15 @@ #include "d/particle/d_particle_copoly.h" #include "global.h" -struct bckGetParam { - /* 0x00 */ int bckIdx; - /* 0x04 */ int bckAttr; - /* 0x08 */ int arcIdx; +struct daNpc_GetParam1 { // name unknown + /* 0x0 */ int fileIdx; + /* 0x4 */ int arcIdx; }; -struct btpGetParam { - /* 0x00 */ int btpIdx; - /* 0x04 */ int btpAttr; - /* 0x08 */ int arcIdx; -}; - -struct btkGetParam { - /* 0x00 */ int btkIdx; - /* 0x04 */ int btkAttr; - /* 0x08 */ int arcIdx; +struct daNpc_GetParam2 { // name unknown + /* 0x0 */ int fileIdx; + /* 0x4 */ int attr; + /* 0x8 */ int arcIdx; }; struct dPnt {}; @@ -216,7 +209,7 @@ public: /* 0x56C */ daNpcT_motionAnmData_c* field_0x56c; /* 0x570 */ daNpcT_evtData_c* field_0x570; /* 0x574 */ char** field_0x574; - /* 0x578 */ mDoExt_McaMorfSO* mMcaMorfAnm[2]; + /* 0x578 */ mDoExt_McaMorfSO* mpMorf[2]; /* 0x580 */ Z2Creature field_0x580; /* 0x610 */ mDoExt_bckAnm mBckAnm; /* 0x62C */ mDoExt_btpAnm mBtpAnm; @@ -449,16 +442,16 @@ public: class daNpcF_c : public fopAc_ac_c { protected: - /* 0x568 */ mDoExt_McaMorfSO* mMcaMorf; + /* 0x568 */ mDoExt_McaMorfSO* mpMorf; /* 0x56C */ mDoExt_bckAnm mBckAnm; /* 0x588 */ mDoExt_btpAnm mBtpAnm; /* 0x5A0 */ mDoExt_btkAnm mBtkAnm; /* 0x5B8 */ mDoExt_brkAnm mBrkAnm; /* 0x5D0 */ dBgS_ObjAcch mAcch; - /* 0x7A8 */ dCcD_Stts mStts; + /* 0x7A8 */ dCcD_Stts mCcStts; /* 0x7E4 */ dBgS_AcchCir mAcchCir; /* 0x824 */ daNpcF_ActorMngr_c field_0x824; - /* 0x82C */ daNpcF_ActorMngr_c field_0x82c[5]; + /* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5]; /* 0x854 */ cXyz mLookatPos[3]; /* 0x878 */ cXyz mLookPos; /* 0x884 */ cXyz field_0x884; @@ -472,17 +465,17 @@ protected: /* 0x8E4 */ cXyz mHeadPos; /* 0x8F0 */ csXyz field_0x8f0; /* 0x8F6 */ csXyz field_0x8f6; - /* 0x8FC */ csXyz field_0x8fc; - /* 0x902 */ csXyz field_0x902; + /* 0x8FC */ csXyz mEyeAngle; + /* 0x902 */ csXyz mHeadAngle; /* 0x908 */ csXyz field_0x908[3]; /* 0x91A */ csXyz field_0x91a[3]; /* 0x92C */ int mCutIndex; /* 0x930 */ u32 field_0x930; - /* 0x934 */ int field_0x934; // index in 0x93c to not decrement timer (if 0x938 is nonzero) - /* 0x938 */ int field_0x938; // controls whether to use field 0x934 - /* 0x93C */ int field_0x93c[5]; // timers for removing actors from 0x82c + /* 0x934 */ int mAttnIdx; + /* 0x938 */ int mAttnChangeTimer; + /* 0x93C */ int mAttnActorTimer[5]; /* 0x950 */ int field_0x950; - /* 0x954 */ int field_0x954; // a timer + /* 0x954 */ int field_0x954; /* 0x958 */ int field_0x958; /* 0x95C */ int field_0x95c; /* 0x960 */ int field_0x960; @@ -502,15 +495,15 @@ protected: /* 0x998 */ u16 field_0x998; /* 0x99C */ u32 mAnmFlags; /* 0x9A0 */ u32 field_0x9a0; - /* 0x9A4 */ profile_method_class* field_0x9a4; - /* 0x9A8 */ int field_0x9a8[2]; + /* 0x9A4 */ u32 field_0x9a4; + /* 0x9A8 */ u32 mHitodamaParticleKey[2]; /* 0x9B0 */ u32 field_0x9b0; /* 0x9B4 */ int mFlowNodeNo; /* 0x9B8 */ cXyz field_0x9b8; /* 0x9C4 */ cXyz field_0x9c4; /* 0x9D0 */ s16 field_0x9d0; /* 0x9D2 */ s16 field_0x9d2; - /* 0x9D4 */ s16 field_0x9d4; + /* 0x9D4 */ s16 mEventIdx; /* 0x9D6 */ s16 mExpressionPhase; /* 0x9D8 */ s16 mExpressionPrevPhase; /* 0x9DA */ s16 mMotionPhase; @@ -523,16 +516,16 @@ protected: /* 0x9E8 */ s8 field_0x9e8; /* 0x9E9 */ u8 field_0x9e9; /* 0x9EA */ u8 field_0x9ea; - /* 0x9EB */ u8 field_0x9eb; + /* 0x9EB */ bool field_0x9eb; /* 0x9EC */ u8 field_0x9ec; - /* 0x9ED */ u8 field_0x9ed; - /* 0x9EE */ u8 field_0x9ee; + /* 0x9ED */ bool field_0x9ed; + /* 0x9EE */ bool field_0x9ee; /* 0x9EF */ u8 field_0x9ef; /* 0x9F0 */ u8 field_0x9f0; /* 0x9F1 */ u8 field_0x9f1; /* 0x9F2 */ bool mHide; /* 0x9f3 */ u8 field_0x9f3; - /* 0x9F4 */ bool field_0x9f4; // controls whether setHitodamaPrtcl is called + /* 0x9F4 */ bool mTwilight; /* 0x9F5 */ u8 field_0x9f5; /* 0x9F6 */ u8 field_0x9f6; /* 0x9F8 */ dMsgFlow_c mFlow; @@ -572,8 +565,8 @@ public: /* 80152014 */ BOOL execute(); /* 801522AC */ BOOL draw(int, int, f32, _GXColorS10*, int); /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); - /* 80152654 */ void srchAttnActor1(void*, void*); - /* 801526E8 */ void* srchActor(void*, void*); + /* 80152654 */ static void* srchAttnActor1(void*, void*); + /* 801526E8 */ static void* srchActor(void*, void*); /* 801528C8 */ void initialize(); /* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int); @@ -607,19 +600,19 @@ public: /* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); /* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); /* 80153D1C */ int initTalk(int, fopAc_ac_c**); - /* 80153D84 */ BOOL talkProc(int*, int, fopAc_ac_c**); + /* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**); /* 80153EF4 */ BOOL turn(s16, f32, int); - /* 801540A4 */ void step(s16, int, int, int); + /* 801540A4 */ BOOL step(s16, int, int, int); /* 80154250 */ void setAngle(s16); /* 80154278 */ u8 getDistTableIdx(int, int); /* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int); - /* 8015436C */ fopAc_ac_c* getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, + /* 8015436C */ fopAc_ac_c* getAttnActorP(int, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16, int, int); /* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16); /* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); /* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16); /* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*); - /* 801549E0 */ void chkFindPlayer2(int, s16); + /* 801549E0 */ BOOL chkFindPlayer2(int, s16); /* 80154BD8 */ void setHitodamaPrtcl(); /* 80155BF4 */ virtual ~daNpcF_c(); @@ -651,7 +644,7 @@ public: BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) { return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor); } - BOOL checkHide() { return mHide || (field_0x9f4 && !dComIfGs_wolfeye_effect_check()); } + BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); } void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); } void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; } void onInterrupt(u8 param_0) { field_0x9ef = param_0; } @@ -744,7 +737,7 @@ private: /* 0x568 */ void* vtable; /* 0x56C */ dBgS_Acch field_0x56c; /* 0x744 */ u8 field_0x744[16]; - /* 0x754 */ mDoExt_McaMorfSO* mMcaMorfAnm[2]; + /* 0x754 */ mDoExt_McaMorfSO* mpMorf[2]; /* 0x758 */ Z2Creature mCreature; /* 0x7EC */ mDoExt_bckAnm mBckAnm; /* 0x808 */ mDoExt_btpAnm mBtpAnm; @@ -855,6 +848,7 @@ public: void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; } void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; } void onEyeMoveFlag() { mEyeMoveFlag = 1; } + void offEyeMoveFlag() { mEyeMoveFlag = 0; } }; class daNpcF_SPCurve_c { @@ -934,6 +928,7 @@ public: /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int); /* 80151F54 */ void setRotAngle(); /* 80151FE0 */ void clrRotAngle(); + daNpcF_Lookat_c() { initialize(); } virtual ~daNpcF_Lookat_c() {} cXyz* getAttnPos() { return mAttnPos; } void setAttnPos(cXyz* i_attnPos) { mAttnPos = i_attnPos; } diff --git a/include/d/msg/d_msg_flow.h b/include/d/msg/d_msg_flow.h index 0ad3649b805..b50e48c06ca 100644 --- a/include/d/msg/d_msg_flow.h +++ b/include/d/msg/d_msg_flow.h @@ -162,6 +162,7 @@ public: int getSelectNum() { return query005(NULL, NULL, 0); } s16 getChoiceNo() { return mChoiceNo; } void setMsg(u32 msg) { mMsg = msg; } + bool checkEndFlow() { return field_0x26 == 1; } static queryFunc mQueryList[53]; static eventFunc mEventList[43]; diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index e82fc591679..93c561b9db9 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -112,11 +112,9 @@ public: /* 80237F10 */ void setTalkActorLocal(fopAc_ac_c*); /* 8023800C */ static void readMessageGroup(mDoDvdThd_mountXArchive_c**); /* 8023803C */ static void changeFlowGroup(s32); - /* 8023806C */ void demoMessageGroup(); + /* 8023806C */ static void demoMessageGroup(); /* 80238098 */ static void endFlowGroup(); /* 802380C4 */ static void changeGroup(s16); - /* 8023806C */ static void demoMessageGroup(); - /* 80238098 */ void endFlowGroup(); /* 802380F4 */ static bool getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*, char*, char*, s16*); /* 80238174 */ static u8* getMsgDtPtr(); @@ -129,8 +127,8 @@ public: /* 8023822C */ static u16 getStatus(); /* 80238258 */ static dMsgScrnBase_c* getScrnDrawPtr(); /* 8023826C */ static void setTalkActor(fopAc_ac_c*); - /* 8023829C */ void onMsgSendControl(); - /* 802382C8 */ void offMsgSendControl(); + /* 8023829C */ static void onMsgSendControl(); + /* 802382C8 */ static void offMsgSendControl(); /* 802382F4 */ static int isMsgSendControl(); /* 80238320 */ static void onMsgSend(); /* 8023834C */ void offMsgSend(); diff --git a/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h b/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h index a39a9a8be56..cbc2fa4326b 100644 --- a/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h +++ b/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h @@ -94,7 +94,7 @@ public: /* 0x04 */ f32 mGravity; /* 0x08 */ f32 m08; /* 0x0C */ f32 mShadow; - /* 0x10 */ f32 mSttsWeight; + /* 0x10 */ f32 mCcSttsWeight; /* 0x14 */ f32 m14; /* 0x18 */ f32 m18; /* 0x1C */ f32 m1C; diff --git a/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h b/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h index 60a5668bcbf..5ac9f275937 100644 --- a/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h +++ b/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h @@ -1,6 +1,186 @@ #ifndef D_A_NPC_THE_H #define D_A_NPC_THE_H -#include "dolphin/types.h" +#include "d/a/d_a_npc.h" +#include "f_op/f_op_actor_mng.h" + +// #define NONMATCHING + +class daNpcThe_c : public daNpcF_c { +public: + typedef BOOL (daNpcThe_c::*ActionFn)(void*); + typedef BOOL (daNpcThe_c::*EventFn)(int); + + /* 80AF76CC */ daNpcThe_c(); + /* 80AF78E0 */ ~daNpcThe_c(); + /* inline */ inline BOOL CreateHeap(); + /* 80AF7AE0 */ BOOL ctrlJoint(J3DJoint*, J3DModel*); + /* 80AF7CB0 */ static BOOL createHeapCallBack(fopAc_ac_c*); + /* 80AF8114 */ static BOOL ctrlJointCallBack(J3DJoint*, int); + /* 80AF8160 */ bool setExpressionAnm(int, bool); + /* 80AF841C */ bool setExpressionBtp(int); + /* 80AF8564 */ void setMotionAnm(int, f32); + /* 80AF8744 */ BOOL wait(void*); + /* 80AF8B0C */ void setMotion(int, f32, int); + /* 80AF8B50 */ void setExpression(int, f32); + /* 80AF8B7C */ BOOL waitTW(void*); + /* 80AF8CC4 */ BOOL talk(void*); + /* 80AF912C */ BOOL test(void*); + /* 80AF923C */ BOOL EvCut_TwResistance(int); + /* 80AF9244 */ BOOL EvCut_Introduction(int); + /* 80AF9358 */ cPhs__Step create(); + /* 80AF9748 */ void reset(); + /* inline */ inline int Draw(); + /* 80AF99F4 */ void setParam(); + /* 80AF9CF0 */ BOOL main(); + /* 80AF9F94 */ void playMotion(); + /* 80AFA338 */ void playExpression(); + /* inline */ inline void setExpressionTalkAfter(); + /* 80AFA6CC */ BOOL doEvent(); + /* 80AFADEC */ BOOL ctrlBtk(); + /* 80AFAEC8 */ void setAttnPos(); + /* 80AFB1C4 */ void lookat(); + /* 80AFB488 */ BOOL drawDbgInfo(); + /* 80AFBD9C */ void adjustShapeAngle(); + + u8 getTypeFromParam() { + switch (fopAcM_GetParam(this) & 0xff) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 2; + default: + return 0; + } + } + + bool isDelete() { + if (mType == 0 || mType == 1 || mType == 2) { + return false; + } else { + return true; + } + } + + void setLookMode(int i_lookMode) { + if (i_lookMode >= 0 && i_lookMode < 6 && i_lookMode != mLookMode) { + mLookMode = i_lookMode; + } + } + + bool isSneaking() { + if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfGp_getStartStageRoomNo() == 5 + && dComIfG_play_c::getLayerNo(0) == 2) { + return true; + } + return false; + } + + bool chkAction(ActionFn action) { + return mpActionFn == action; + } + + BOOL setAction(ActionFn action) { + if (mpActionFn != NULL) { + mState = 3; + (this->*mpActionFn)(NULL); + } + if (action != NULL) { + mpActionFn = action; + mState = 0; + (this->*mpActionFn)(NULL); + } + return true; + } + + void doNormalAction() { + mOrderEvtNo = 0; + if (mpNextActionFn != NULL) { + if (mpNextActionFn == mpActionFn) { + (this->*mpActionFn)(NULL); + } else { + ActionFn action = mpNextActionFn; + setAction(action); + } + } + } + + /* 0xB48 */ Z2Creature mSound; + /* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0xBDC */ daNpcF_Lookat_c mLookat; + /* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[3]; + /* 0xC90 */ u8 field_0xc90[4]; + /* 0xC94 */ dCcD_Cyl mColCyl; + /* 0xDD0 */ ActionFn mpNextActionFn; + /* 0xDDC */ ActionFn mpActionFn; + /* 0xDE8 */ request_of_phase_process_class mPhase[2]; + /* 0xDF8 */ u8 field_0xdf8[8]; + /* 0xE00 */ u32 mItemID; + /* 0xE04 */ u32 field_0xe04; + /* 0xE08 */ u32 field_0xe08; + /* 0xE0C */ u32 field_0xe0c; + /* 0xE10 */ u32 field_0xe10; + /* 0xE14 */ int mFlowID; + /* 0xE18 */ s16 mLookMode; + /* 0xE1A */ u16 mState; + /* 0xE1C */ bool field_0xe1c; + /* 0xE1D */ bool field_0xe1d; + /* 0xE1E */ u8 mType; + + static char* mEvtCutNameList[4]; +#ifdef NONMATCHING + static EventFn mEvtCutList[4]; +#else + static u8 mEvtCutList[48]; +#endif +}; + +STATIC_ASSERT(sizeof(daNpcThe_c) == 0xE20); + +class daNpcThe_Param_c { +public: + struct param { + /* 0x00 */ f32 field_0x00; + /* 0x04 */ f32 mGravity; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 field_0x0c; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 mCylH; + /* 0x18 */ f32 mWallH; + /* 0x1C */ f32 mWallR; + /* 0x20 */ f32 field_0x20; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ f32 field_0x2c; + /* 0x30 */ f32 field_0x30; + /* 0x34 */ f32 field_0x34; + /* 0x38 */ f32 field_0x38; + /* 0x3C */ f32 field_0x3c; + /* 0x40 */ f32 mLookatScl; + /* 0x44 */ f32 field_0x44; + /* 0x48 */ s16 field_0x48; + /* 0x4A */ s16 field_0x4a; + /* 0x4C */ s16 field_0x4c; + /* 0x4E */ s16 field_0x4e; + /* 0x50 */ f32 field_0x50; + /* 0x54 */ f32 field_0x54; + /* 0x58 */ f32 field_0x58; + /* 0x5C */ f32 field_0x5c; + /* 0x60 */ s16 field_0x60; + /* 0x62 */ s16 field_0x62; + /* 0x64 */ s16 mTestExpression; + /* 0x66 */ s16 mTestMotion; + /* 0x68 */ s16 mTestLookMode; + /* 0x6A */ bool mTest; + }; + + /* 80AFBDA0 */ virtual ~daNpcThe_Param_c(); + + static daNpcThe_Param_c::param const m; +}; + +STATIC_ASSERT(sizeof(daNpcThe_Param_c::param) == 0x6C); #endif /* D_A_NPC_THE_H */ diff --git a/include/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h b/include/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h index b153faf768a..989bdb2fa0b 100644 --- a/include/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h +++ b/include/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h @@ -18,7 +18,16 @@ public: } /* 8048CD68 */ virtual ~daTag_EvtArea_c() {} - inline s32 getType(); + inline s32 getType() { + u8 type = (u8)shape_angle.z; + return type == 0xff ? 0 : type; + } + + inline s32 getNo() { + u16 no = (shape_angle.z & 0xff00) >> 8; + return no == 0xff ? 0 : no; + } + inline u32 getOnEvtBit(); inline u32 getOffEvtBit(); inline u8 getBitSW(); diff --git a/libs/JSystem/JMath/JMATrigonometric.cpp b/libs/JSystem/JMath/JMATrigonometric.cpp index 392b83de585..0e9936b3010 100644 --- a/libs/JSystem/JMath/JMATrigonometric.cpp +++ b/libs/JSystem/JMath/JMATrigonometric.cpp @@ -31,12 +31,13 @@ inline f64 getConst() { return 6.2831854820251465; } +template struct TSinCosTable { - std::pair table[0x2000]; + std::pair table[1 << N]; TSinCosTable() { - for (int i = 0; i < 0x2000; i++) { - table[i].a1 = sin((i * getConst()) / 8192.0); - table[i].b1 = cos((i * getConst()) / 8192.0); + for (int i = 0; i < 1 << N; i++) { + table[i].a1 = sin((i * getConst()) / (1 << N)); + table[i].b1 = cos((i * getConst()) / (1 << N)); } } }; @@ -78,7 +79,7 @@ namespace JMath { /* ############################################################################################## */ /* 80439A20-80449A20 066740 10000+00 1/1 265/265 705/705 .bss sincosTable___5JMath */ -TSinCosTable sincosTable_; +TSinCosTable<13, f32> sincosTable_; /* 80449A20-8044AA40 076740 1020+00 1/1 0/0 0/0 .bss atanTable___5JMath */ TAtanTable atanTable_; diff --git a/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.cpp b/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.cpp index 1b6522d8822..909c5c539d4 100644 --- a/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.cpp +++ b/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.cpp @@ -356,7 +356,7 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 8095D9B0-8095DA88 000020 00D8+00 1/2 0/0 0/0 .data l_bckGetParamList */ -static bckGetParam l_bckGetParamList[18] = { +static daNpc_GetParam2 l_bckGetParamList[18] = { {-1, 2, 0}, // {7, 0, 0}, // ash_f_talk_a {12, 0, 1}, // ash_f_talk_b @@ -378,14 +378,14 @@ static bckGetParam l_bckGetParamList[18] = { }; /* 8095DA88-8095DA94 0000F8 000C+00 1/1 0/0 0/0 .data l_btpGetParamList */ -static btpGetParam l_btpGetParamList[1] = { +static daNpc_GetParam2 l_btpGetParamList[1] = { {17, 2, 0}, // ash }; /* 8095DA94-8095DAA0 000104 000C+00 0/1 0/0 0/0 .data l_btkGetParamList */ #pragma push #pragma force_active on -static btkGetParam l_btkGetParamList[1] = { +static daNpc_GetParam2 l_btkGetParamList[1] = { {14, 2, 0}, // ash }; #pragma pop @@ -838,7 +838,7 @@ SECTION_RODATA daNpcAsh_Param_c::param const daNpcAsh_Param_c::m = { -3.0f, // mGravity 1.0f, 400.0f, // mShadow - 255.0f, // mSttsWeight + 255.0f, // mCcSttsWeight 200.0f, 35.0f, 30.0f, @@ -919,7 +919,7 @@ cPhs__Step daNpcAsh_c::Create() { return cPhs_ERROR_e; } - fopAcM_SetMtx(this, mMcaMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f); mZ2.init(¤t.pos, &eyePos, 3, 1); mAcchCir.SetWall(daNpcAsh_Param_c::m.m1C, daNpcAsh_Param_c::m.m18); @@ -927,14 +927,14 @@ cPhs__Step daNpcAsh_c::Create() { mAcch.SetRoofNone(); mAcch.SetWaterNone(); mAcch.CrrPos(dComIfG_Bgsp()); - mStts.Init((int)daNpcAsh_Param_c::m.mSttsWeight, 0, this); + mCcStts.Init((int)daNpcAsh_Param_c::m.mCcSttsWeight, 0, this); mCcCyl[0].Set(daNpcF_c::mCcDCyl); - mCcCyl[0].SetStts(&mStts); + mCcCyl[0].SetStts(&mCcStts); mCcCyl[0].SetTgType(0); mCcCyl[0].SetTgSPrm(0); if (field_0xf60 == 0) { mCcCyl[1].Set(daNpcF_c::mCcDCyl); - mCcCyl[1].SetStts(&mStts); + mCcCyl[1].SetStts(&mCcStts); mCcCyl[1].SetTgType(0); mCcCyl[1].SetTgSPrm(0); mCcCyl[1].SetCoSPrm(0x19); @@ -943,7 +943,7 @@ cPhs__Step daNpcAsh_c::Create() { field_0x980 = mAcch.GetGroundH(); setEnvTevColor(); setRoomNo(); - mMcaMorf->modelCalc(); + mpMorf->modelCalc(); reset(); Execute(); } @@ -964,16 +964,16 @@ COMPILER_STRIP_GATE(0x8095D6C0, &lit_4301); #ifdef NONMATCHING BOOL daNpcAsh_c::CreateHeap() { J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcNames[0], 11); - mMcaMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mZ2, 0x80000, 0x11020284); - if (mMcaMorf != NULL && mMcaMorf->mpModel == NULL) { - mMcaMorf->stopZelAnime(); - mMcaMorf = NULL; + mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mZ2, 0x80000, 0x11020284); + if (mpMorf != NULL && mpMorf->mpModel == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; } - if (mMcaMorf == NULL) { + if (mpMorf == NULL) { return false; } - J3DModel* model = mMcaMorf->getModel(); + J3DModel* model = mpMorf->getModel(); for (u16 jointNo = 0; jointNo < modelData->getJointNum(); jointNo++) { modelData->getJointNodePointer(jointNo)->setCallBack(ctrlJointCallBack); } @@ -1150,15 +1150,15 @@ int daNpcAsh_c::Execute() { /* 8095911C-80959238 000F1C 011C+00 1/1 0/0 0/0 .text Draw__10daNpcAsh_cFv */ int daNpcAsh_c::Draw() { - mMcaMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); + mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); draw(0, 0, daNpcAsh_Param_c::m.mShadow, NULL, 0); if (field_0xf60 == 1) { g_env_light.setLightTevColorType_MAJI(mModelBow, &tevStr); - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(16)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(16)); mModelBow->setBaseTRMtx(mDoMtx_stack_c::get()); mDoExt_modelUpdateDL(mModelBow); g_env_light.setLightTevColorType_MAJI(mModelQuiver, &tevStr); - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(2)); mModelQuiver->setBaseTRMtx(mDoMtx_stack_c::get()); mDoExt_modelUpdateDL(mModelQuiver); } @@ -1173,11 +1173,11 @@ bool daNpcAsh_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { int jointNo = i_joint->getJntNo(); int lookatJoints[3] = {1, 3, 4}; if (jointNo == 0) { - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); mDoMtx_stack_c::multVecZero(&mLookatPos[0]); - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(3)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3)); mDoMtx_stack_c::multVecZero(&mLookatPos[1]); - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); mDoMtx_stack_c::multVecZero(&mLookatPos[2]); } mDoMtx_stack_c::copy(i_model->getAnmMtx(jointNo)); @@ -1192,14 +1192,14 @@ bool daNpcAsh_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); if ((jointNo == 4 || jointNo == 12) && (mAnmFlags & 0x100) != 0) { J3DAnmTransform* bckAnm = mBckAnm.getBckAnm(); - mBckAnm.changeBckOnly(mMcaMorf->getAnm()); - mMcaMorf->changeAnm(bckAnm); + mBckAnm.changeBckOnly(mpMorf->getAnm()); + mpMorf->changeAnm(bckAnm); } if (cM3d_IsZero_inverted(mExpressionMorf)) { if (jointNo == 12) { - mMcaMorf->onMorfNone(); + mpMorf->onMorfNone(); } else if (jointNo == 4) { - mMcaMorf->offMorfNone(); + mpMorf->offMorfNone(); } } return true; @@ -1236,12 +1236,12 @@ bool daNpcAsh_c::setExpressionAnm(int i_idx, bool i_modify) { return false; } mAnmFlags &= ~ANM_EXPRESSION_FLAGS; - if (l_bckGetParamList[i_idx].bckIdx >= 0) { - bckAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].bckIdx); + if (l_bckGetParamList[i_idx].fileIdx >= 0) { + bckAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx); } else { bckAnm = NULL; } - s32 attr = l_bckGetParamList[i_idx].bckAttr; + s32 attr = l_bckGetParamList[i_idx].attr; bool res = false; switch (i_idx) { case 0: @@ -1300,13 +1300,13 @@ asm bool daNpcAsh_c::setExpressionAnm(int param_0, bool param_1) { #ifdef NONMATCHING // literals bool daNpcAsh_c::setExpressionBtp(int i_idx) { - J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx], l_btpGetParamList[i_idx].btpIdx); - s32 attr = l_btpGetParamList[i_idx].btpAttr; + J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx], l_btpGetParamList[i_idx].fileIdx); + s32 attr = l_btpGetParamList[i_idx].attr; mAnmFlags &= ~(ANM_PAUSE_BTP | ANM_PLAY_BTP | ANM_FLAG_800); if (btpAnm == NULL) { return true; } - if (setBtpAnm(btpAnm, mMcaMorf->getModel()->getModelData(), 1.0f, attr)) { + if (setBtpAnm(btpAnm, mpMorf->getModel()->getModelData(), 1.0f, attr)) { mAnmFlags |= ANM_PAUSE_BTP | ANM_PLAY_BTP; if (i_idx == 0) { mAnmFlags |= ANM_FLAG_800; @@ -1337,10 +1337,10 @@ void daNpcAsh_c::setMotionAnm(int i_idx, f32 i_morf) { if (i_idx < 8 || i_idx >= 18) { return; } - morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].bckIdx); - btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].btkIdx); - morfAttr = l_bckGetParamList[i_idx].bckAttr; - btkAttr = l_btkGetParamList[0].btkAttr; + morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx); + btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx); + morfAttr = l_bckGetParamList[i_idx].attr; + btkAttr = l_btkGetParamList[0].attr; mAnmFlags &= ~ANM_MOTION_FLAGS; if (morfAnm != NULL) { if (setMcaMorfAnm(morfAnm, 1.0f, i_morf, morfAttr, 0, -1)) { @@ -1349,7 +1349,7 @@ void daNpcAsh_c::setMotionAnm(int i_idx, f32 i_morf) { } } if (btkAnm != NULL) { - if (setBtkAnm(btkAnm, mMcaMorf->getModel()->getModelData(), 1.0f, btkAttr)) { + if (setBtkAnm(btkAnm, mpMorf->getModel()->getModelData(), 1.0f, btkAttr)) { mAnmFlags |= ANM_PAUSE_BTK | ANM_PLAY_BTK; } } @@ -1390,7 +1390,7 @@ void daNpcAsh_c::reset() { field_0x8f0 = current.angle; field_0x8f6 = field_0x8f0; speedF = 0.0f; - speed.setAll(0.0f); + speed.setall(0.0f); mItemPartnerId = -1; mOrderEvtNo = 0; mExpressionMorfOverride = 0; @@ -1916,7 +1916,7 @@ asm bool daNpcAsh_c::wait_type0(void* param_0) { /* 8095A67C-8095A6C0 00247C 0044+00 1/0 0/0 0/0 .text setMotion__10daNpcAsh_cFifi */ void daNpcAsh_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) { s16 motion = (s16)i_motion; - if ((i_restart || mMotion != motion)) { + if (i_restart || mMotion != motion) { if (i_motion >= 0 && i_motion < 10) { mMotion = motion; mMotionMorfOverride = i_morf; @@ -2088,10 +2088,10 @@ bool daNpcAsh_c::demo(void* param_0) { dComIfGp_getEventManager().cutEnd(cutIndex); } } - if (eventInfo.checkCommandDemoAccrpt() && field_0x9d4 != -1 && dComIfGp_getEventManager().endCheck(field_0x9d4)) { + if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && dComIfGp_getEventManager().endCheck(mEventIdx)) { dComIfGp_event_reset(); mOrderEvtNo = 0; - field_0x9d4 = -1; + mEventIdx = -1; if (field_0xf60 == 0) { setAction(&wait_type0); } else { @@ -2100,7 +2100,7 @@ bool daNpcAsh_c::demo(void* param_0) { } } else { mOrderEvtNo = 0; - field_0x9d4 = -1; + mEventIdx = -1; if (field_0xf60 == 0) { setAction(&wait_type0); } else { @@ -2522,8 +2522,8 @@ COMPILER_STRIP_GATE(0x8095D8E4, &lit_5493); #ifdef NONMATCHING BOOL daNpcAsh_c::ctrlBtk() { if (mpMatAnm != NULL) { - mpMatAnm->setNowOffsetX(cM_ssin(field_0x8fc.y) * 0.2f * -1.0f); - mpMatAnm->setNowOffsetY(cM_ssin(field_0x8fc.x) * 0.4f); + mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f * -1.0f); + mpMatAnm->setNowOffsetY(cM_ssin(mEyeAngle.x) * 0.4f); mpMatAnm->onEyeMoveFlag(); } return mpMatAnm != NULL; @@ -2591,37 +2591,44 @@ void daNpcAsh_c::setAttnPos() { field_0x91a[i].setall(0); } } + setMtx2(); lookat(); + cXyz vec(10.0f, 10.0f, 0.0f); - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); mDoMtx_stack_c::multVecZero(&mHeadPos); mDoMtx_stack_c::multVec(&vec, &eyePos); vec.x = 0.0f; mDoMtx_stack_c::multVec(&vec, &vec); - field_0x902.x = cLib_targetAngleX(&mHeadPos, &vec); - field_0x902.y = cLib_targetAngleY(&mHeadPos, &vec); + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec); cXyz* attnPos = mLookat.getAttnPos(); + if (attnPos != NULL) { cXyz local_48 = *attnPos - eyePos; - field_0x8fc.y = -(field_0x91a[2].y + field_0x8f0.y); - field_0x8fc.y += cM_atan2s(local_48.x, local_48.z); - field_0x8fc.x = -cM_atan2s(local_48.y, local_48.absXZ()); - field_0x8fc.x += field_0x902.x; + mEyeAngle.y = -(field_0x91a[2].y + field_0x8f0.y); + mEyeAngle.y += cM_atan2s(local_48.x, local_48.z); + mEyeAngle.x = -cM_atan2s(local_48.y, local_48.absXZ()); + mEyeAngle.x += mHeadAngle.x; } else { - field_0x8fc.y = 0; - field_0x8fc.x = 0; + mEyeAngle.y = 0; + mEyeAngle.x = 0; } - attention_info.position.set(mHeadPos.x, mHeadPos.y + 35.0f, mHeadPos.z); + + attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcAsh_Param_c::m.m00, mHeadPos.z); + cXyz center; - mDoMtx_stack_c::copy(mMcaMorf->getModel()->getAnmMtx(2)); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(2)); mDoMtx_stack_c::multVecZero(¢er); center.y = current.pos.y; mCcCyl[0].SetC(center); mCcCyl[0].SetH(daNpcAsh_Param_c::m.m14); mCcCyl[0].SetR(daNpcAsh_Param_c::m.m1C); dComIfG_Ccsp()->Set(&mCcCyl[0]); - if (field_0xf60 == 0 && (!daNpcF_chkEvtBit(0x169) || !daNpcF_chkEvtBit(0x10a) || !daNpcF_chkEvtBit(0x10b) || daNpcF_chkEvtBit(0x10c))) { + + if (field_0xf60 == 0 && (!daNpcF_chkEvtBit(0x169) || !daNpcF_chkEvtBit(0x10a) + || !daNpcF_chkEvtBit(0x10b) || daNpcF_chkEvtBit(0x10c))) { center.set(3070.0f, -1150.0f, 2446.0f); mCcCyl[1].SetC(center); mCcCyl[1].SetH(170.0f); @@ -2674,7 +2681,7 @@ COMPILER_STRIP_GATE(0x8095D90C, &lit_5652); // literals void daNpcAsh_c::lookat() { fopAc_ac_c* actor = NULL; - J3DModel* model = mMcaMorf->getModel(); + J3DModel* model = mpMorf->getModel(); BOOL iv7 = false; f32 fv13 = daNpcAsh_Param_c::m.m24; f32 fv12 = daNpcAsh_Param_c::m.m20; diff --git a/rel/d/a/npc/d_a_npc_the/d_a_npc_the.cpp b/rel/d/a/npc/d_a_npc_the/d_a_npc_the.cpp index 960edbd4e66..229f057d219 100644 --- a/rel/d/a/npc/d_a_npc_the/d_a_npc_the.cpp +++ b/rel/d/a/npc/d_a_npc_the/d_a_npc_the.cpp @@ -4,359 +4,12 @@ // #include "rel/d/a/npc/d_a_npc_the/d_a_npc_the.h" +#include "SSystem/SComponent/c_math.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h" #include "dol2asm.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct J3DAnmTransform {}; - -struct mDoExt_bckAnm { - /* 8000D990 */ void changeBckOnly(J3DAnmTransform*); -}; - -struct mDoExt_McaMorfCallBack2_c {}; - -struct mDoExt_McaMorfCallBack1_c {}; - -struct J3DModelData {}; - -struct Vec {}; - -struct Z2Creature { - /* 802C03C8 */ Z2Creature(); - /* 802C0420 */ ~Z2Creature(); - /* 802C0530 */ void init(Vec*, Vec*, u8, u8); -}; - -struct mDoExt_McaMorfSO { - /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, - int, Z2Creature*, u32, u32); - /* 80011310 */ void stopZelAnime(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; - /* 80AFB6EC */ ~cXyz(); - /* 80AFB728 */ cXyz(); -}; - -struct daTag_EvtArea_c { - /* 80AFBD3C */ void chkPointInArea(cXyz); - /* 8048C94C */ void chkPointInArea(cXyz, cXyz); -}; - -struct J3DModel {}; - -struct J3DJoint {}; - -struct daNpcThe_c { - /* 80AF76CC */ daNpcThe_c(); - /* 80AF78E0 */ ~daNpcThe_c(); - /* 80AF7AE0 */ void ctrlJoint(J3DJoint*, J3DModel*); - /* 80AF7CB0 */ void createHeapCallBack(fopAc_ac_c*); - /* 80AF8114 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80AF8160 */ void setExpressionAnm(int, bool); - /* 80AF841C */ void setExpressionBtp(int); - /* 80AF8564 */ void setMotionAnm(int, f32); - /* 80AF8744 */ void wait(void*); - /* 80AF8B0C */ void setMotion(int, f32, int); - /* 80AF8B50 */ void setExpression(int, f32); - /* 80AF8B7C */ void waitTW(void*); - /* 80AF8CC4 */ void talk(void*); - /* 80AF912C */ void test(void*); - /* 80AF923C */ bool EvCut_TwResistance(int); - /* 80AF9244 */ void EvCut_Introduction(int); - /* 80AF9358 */ void create(); - /* 80AF9748 */ void reset(); - /* 80AF99F4 */ void setParam(); - /* 80AF9CF0 */ void main(); - /* 80AF9F94 */ void playMotion(); - /* 80AFA338 */ void playExpression(); - /* 80AFA6CC */ void doEvent(); - /* 80AFADEC */ void ctrlBtk(); - /* 80AFAEC8 */ void setAttnPos(); - /* 80AFB1C4 */ void lookat(); - /* 80AFB488 */ bool drawDbgInfo(); - /* 80AFBD9C */ void adjustShapeAngle(); - - static void* mEvtCutNameList[4]; - static u8 mEvtCutList[48]; -}; - -struct daNpcThe_Param_c { - /* 80AFBDA0 */ ~daNpcThe_Param_c(); - - static u8 const m[108]; -}; - -struct J3DAnmTexPattern { - /* 8032AF50 */ void getTexNo(u16, u16*) const; -}; - -struct J3DAnmTextureSRTKey {}; - -struct J3DAnmTransformKey {}; - -struct _GXColorS10 {}; - -struct daNpcF_c { - struct daNpcF_anmPlayData {}; - - /* 80152014 */ void execute(); - /* 801522AC */ void draw(int, int, f32, _GXColorS10*, int); - /* 80152654 */ void srchAttnActor1(void*, void*); - /* 8015276C */ void setMtx(); - /* 801527FC */ void setMtx2(); - /* 801528C8 */ void initialize(); - /* 80152B2C */ void getTrnsfrmKeyAnmP(char*, int); - /* 80152B68 */ void getTexPtrnAnmP(char*, int); - /* 80152BA4 */ void getTexSRTKeyAnmP(char*, int); - /* 80152C1C */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 80152C80 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 80152CC4 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); - /* 80152D04 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int); - /* 80152D84 */ void setEnvTevColor(); - /* 80152DE0 */ void setRoomNo(); - /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***); - /* 8015337C */ void setLookatMtx(int, int*, f32); - /* 80153718 */ void ctrlMsgAnm(int&, int&, fopAc_ac_c*, int); - /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16); - /* 80153D1C */ void initTalk(int, fopAc_ac_c**); - /* 80153D84 */ void talkProc(int*, int, fopAc_ac_c**); - /* 801540A4 */ void step(s16, int, int, int); - /* 80154278 */ void getDistTableIdx(int, int); - /* 801542A0 */ void getEvtAreaTagP(int, int); - /* 8015436C */ void getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, int, - int); - /* 801549E0 */ void chkFindPlayer2(int, s16); - /* 80AFB72C */ ~daNpcF_c(); - /* 80AFB978 */ daNpcF_c(); - /* 80AFBCEC */ void setCollisions(); - /* 80AFBCF0 */ void drawOtherMdls(); - - static u8 mCcDCyl[68]; -}; - -struct daNpcF_MatAnm_c { - /* 80150738 */ void initialize(); -}; - -struct csXyz { - /* 80AFB6AC */ ~csXyz(); - /* 80AFB6E8 */ csXyz(); -}; - -struct daNpcF_Lookat_c { - /* 80151038 */ void initialize(); - /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, - cXyz*); - /* 80151350 */ void calc(fopAc_ac_c*, f32 (*)[4], csXyz**, int, int, int); - /* 80AFB5DC */ ~daNpcF_Lookat_c(); -}; - -struct daNpcF_ActorMngr_c { - /* 801506B0 */ void initialize(); - /* 801506BC */ void entry(fopAc_ac_c*); - /* 801506E0 */ void remove(); - /* 801506EC */ void getActorP(); - /* 80AFB558 */ ~daNpcF_ActorMngr_c(); - /* 80AFB5A0 */ daNpcF_ActorMngr_c(); -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dMsgFlow_c { - /* 80249F00 */ dMsgFlow_c(); - /* 80249F48 */ ~dMsgFlow_c(); - /* 8024A528 */ void getEventId(int*); -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); - /* 80042518 */ void reset(void*); -}; - -struct dEvent_manager_c { - /* 80046800 */ void setObjectArchive(char*); - /* 80047758 */ void getEventIdx(fopAc_ac_c*, char const*, u8); - /* 80047A78 */ void endCheck(s16); - /* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int); - /* 80047D4C */ void getIsAddvance(int); - /* 80047E10 */ void getMyActIdx(int, char const* const*, int, int, int); - /* 80047F5C */ void getMyNowCutName(int); - /* 8004817C */ void cutEnd(int); - /* 800487F0 */ void ChkPresentEnd(); -}; - -struct dComIfG_play_c { - /* 8002C97C */ void getLayerNo(int); -}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcCyl {}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80AFBBD8 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800840E4 */ ~dCcD_GObjInf(); -}; - -struct dCcD_Cyl { - /* 800848B4 */ void Set(dCcD_SrcCyl const&); -}; - -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjAcch { - /* 80AFBC34 */ ~dBgS_ObjAcch(); -}; - -struct dBgS_LinChk { - /* 80077C68 */ dBgS_LinChk(); - /* 80077CDC */ ~dBgS_LinChk(); -}; - -struct dBgS_GndChk { - /* 8007757C */ dBgS_GndChk(); - /* 800775F0 */ ~dBgS_GndChk(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F40 */ void SetWallR(f32); - /* 80075F58 */ void SetWall(f32, f32); - /* 80AFBB68 */ ~dBgS_AcchCir(); -}; - -struct dBgS {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct cM3dGCyl { - /* 8026F1DC */ void SetC(cXyz const&); - /* 8026F1F8 */ void SetH(f32); - /* 8026F200 */ void SetR(f32); - /* 80AF7850 */ ~cM3dGCyl(); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 80AF7898 */ ~cM3dGAab(); -}; - -struct cCcD_Obj {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cCcD_GStts { - /* 80AFBCF4 */ ~cCcD_GStts(); -}; - -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct cBgS_GndChk { - /* 80267C1C */ cBgS_GndChk(); - /* 80267C94 */ ~cBgS_GndChk(); -}; - -struct JMath { - template - struct TSinCosTable {}; - /* TSinCosTable<13, f32> */ - struct TSinCosTable__template0 { - /* 80AFB490 */ void func_80AFB490(void* _this, s16) /* const */; - }; - - static u8 sincosTable_[65536]; -}; - -struct J3DTexNoAnm { - /* 80AF8000 */ ~J3DTexNoAnm(); - /* 80AF8048 */ J3DTexNoAnm(); - /* 80AF99C4 */ void calc(u16*) const; -}; - -struct J3DTexMtxAnm { - /* 80AF806C */ ~J3DTexMtxAnm(); - /* 80AF80A8 */ J3DTexMtxAnm(); -}; - -struct J3DTevKColorAnm { - /* 80AF7F58 */ ~J3DTevKColorAnm(); - /* 80AF7F94 */ J3DTevKColorAnm(); -}; - -struct J3DTevColorAnm { - /* 80AF7FAC */ ~J3DTevColorAnm(); - /* 80AF7FE8 */ J3DTevColorAnm(); -}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DMaterialAnm { - /* 8032C320 */ void initialize(); -}; - -struct J3DMatColorAnm { - /* 80AF80C0 */ ~J3DMatColorAnm(); - /* 80AF80FC */ J3DMatColorAnm(); -}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 80AFBCA4 */ ~J3DFrameCtrl(); -}; - // // Forward References: // @@ -548,9 +201,6 @@ extern "C" void __dl__FPv(); extern "C" void init__12J3DFrameCtrlFs(); extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs(); extern "C" void initialize__14J3DMaterialAnmFv(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECSquareMag(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __ptmf_test(); @@ -566,10 +216,7 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void strcmp(); extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; -extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; extern "C" extern void* __vt__8dCcD_Cyl[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; @@ -581,11 +228,8 @@ extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" extern void* __vt__14J3DMaterialAnm[4]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz(); extern "C" void __register_global_object(); @@ -593,21 +237,6 @@ extern "C" void __register_global_object(); // Declarations: // -/* ############################################################################################## */ -/* 80AFC158-80AFC158 00034C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80AFC158 = "The"; -SECTION_DEAD static char const* const stringBase_80AFC15C = "The1"; -SECTION_DEAD static char const* const stringBase_80AFC161 = "The2"; -SECTION_DEAD static char const* const stringBase_80AFC166 = "yelB_TW"; -SECTION_DEAD static char const* const stringBase_80AFC16E = "TW_RESISTANCE1"; -SECTION_DEAD static char const* const stringBase_80AFC17D = "TW_RESISTANCE2"; -SECTION_DEAD static char const* const stringBase_80AFC18C = "THE_INTRODUCTION"; -SECTION_DEAD static char const* const stringBase_80AFC19D = ""; -SECTION_DEAD static char const* const stringBase_80AFC19E = "TW_RESISTANCE"; -#pragma pop - /* 80AFC1D0-80AFC1DC 000000 000C+00 5/5 0/0 0/0 .data cNullVec__6Z2Calc */ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -627,107 +256,122 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { #pragma pop /* 80AFC1F0-80AFC200 000020 0010+00 1/1 0/0 0/0 .data l_bmdGetParamList */ -SECTION_DATA static u8 l_bmdGetParamList[16] = { - 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam1 l_bmdGetParamList[2] = { + {23, 0}, // the + {24, 0}, // the_tw }; /* 80AFC200-80AFC2D8 000030 00D8+00 2/3 0/0 0/0 .data l_bckGetParamList */ -SECTION_DATA static u8 l_bckGetParamList[216] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, +static daNpc_GetParam1 l_bckGetParamList[27] = { + {-1, 0}, // + {10, 0}, // the_f_talk_a + {9, 0}, // the_f_smile + {7, 0}, // the_f_chuckle + {11, 0}, // the_f_talk_b + {12, 0}, // the_f_talk_c + {8, 0}, // the_f_laugh + {13, 0}, // the_f_talk_r + {16, 0}, // the_fh_smile + {14, 0}, // the_fh_chuckle + {17, 0}, // the_fh_talk_b + {18, 0}, // the_fh_talk_c + {15, 0}, // the_fh_laugh + {19, 0}, // the_fh_talk_r + {20, 0}, // the_wait_a + {9, 1}, // the_wait_looking + {7, 1}, // the_to_wait_b + {8, 1}, // the_wait_b + {10, 1}, // the_wait_lookup + {5, 1}, // the_talk_r + {6, 1}, // the_talking_r + {4, 1}, // the_look_a + {3, 1}, // the_look + {5, 2}, // the_kune_wait_a + {4, 2}, // the_kune_talk + {6, 2}, // the_kune_wait_b + {3, 2}, // the_kune_shishi }; /* 80AFC2D8-80AFC348 000108 0070+00 1/1 0/0 0/0 .data l_btpGetParamList */ -SECTION_DATA static u8 l_btpGetParamList[112] = { - 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam1 l_btpGetParamList[14] = { + {30, 0}, // the + {34, 0}, // the_f_talk_a + {33, 0}, // the_f_smile + {31, 0}, // the_f_chuckle + {35, 0}, // the_f_talk_b + {36, 0}, // the_f_talk_c + {32, 0}, // the_f_laugh + {37, 0}, // the_f_talk_r + {40, 0}, // the_fh_smile + {38, 0}, // the_fh_chuckle + {41, 0}, // the_fh_talk_b + {42, 0}, // the_fh_talk_c + {39, 0}, // the_fh_laugh + {43, 0}, // the_fh_talk_r }; /* 80AFC348-80AFC350 000178 0008+00 1/2 0/0 0/0 .data l_btkGetParamList */ -SECTION_DATA static u8 l_btkGetParamList[8] = { - 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, +static daNpc_GetParam1 l_btkGetParamList[1] = { + {27, 0}, // the }; /* 80AFC350-80AFC35C 000180 000C+00 1/0 0/0 0/0 .data l_loadRes_THE0 */ -SECTION_DATA static u8 l_loadRes_THE0[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, -}; +static int l_loadRes_THE0[3] = {0, 1, -1}; /* 80AFC35C-80AFC368 00018C 000C+00 1/0 0/0 0/0 .data l_loadRes_THE1 */ -SECTION_DATA static u8 l_loadRes_THE1[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, -}; +static int l_loadRes_THE1[3] = {0, 1, -1}; /* 80AFC368-80AFC374 000198 000C+00 1/0 0/0 0/0 .data l_loadRes_THE2 */ -SECTION_DATA static u8 l_loadRes_THE2[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, -}; +static int l_loadRes_THE2[3] = {0, 2, -1}; /* 80AFC374-80AFC380 -00001 000C+00 2/2 0/0 0/0 .data l_loadRes_list */ -SECTION_DATA static void* l_loadRes_list[3] = { - (void*)&l_loadRes_THE0, - (void*)&l_loadRes_THE1, - (void*)&l_loadRes_THE2, +static int* l_loadRes_list[3] = { + l_loadRes_THE0, + l_loadRes_THE1, + l_loadRes_THE2, }; /* 80AFC380-80AFC390 -00001 0010+00 7/10 0/0 0/0 .data l_resNames */ -SECTION_DATA static void* l_resNames[4] = { - (void*)&d_a_npc_the__stringBase0, - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x4), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x9), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0xE), +static char* l_resNames[4] = { + "The", + "The1", + "The2", + "yelB_TW", }; /* 80AFC390-80AFC3A0 0001C0 0010+00 0/2 0/0 0/0 .data l_evtGetParamList */ #pragma push #pragma force_active on -SECTION_DATA static u8 l_evtGetParamList[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +static int l_evtGetParamList[4] = { + 0, 3, 3, 0, }; #pragma pop /* 80AFC3A0-80AFC3B0 -00001 0010+00 0/2 0/0 0/0 .data l_evtNames */ #pragma push #pragma force_active on -SECTION_DATA static void* l_evtNames[4] = { - (void*)NULL, - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x16), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x25), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x34), +static char* l_evtNames[4] = { + NULL, + "TW_RESISTANCE1", + "TW_RESISTANCE2", + "THE_INTRODUCTION", }; #pragma pop /* 80AFC3B0-80AFC3B4 -00001 0004+00 0/1 0/0 0/0 .data l_myName */ #pragma push #pragma force_active on -SECTION_DATA static void* l_myName = (void*)&d_a_npc_the__stringBase0; +static char* l_myName = "The"; #pragma pop /* 80AFC3B4-80AFC3C4 -00001 0010+00 0/1 0/0 0/0 .data mEvtCutNameList__10daNpcThe_c */ #pragma push #pragma force_active on -SECTION_DATA void* daNpcThe_c::mEvtCutNameList[4] = { - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x45), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x46), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x46), - (void*)(((char*)&d_a_npc_the__stringBase0) + 0x34), +char* daNpcThe_c::mEvtCutNameList[4] = { + "", + "TW_RESISTANCE", + "TW_RESISTANCE", + "THE_INTRODUCTION", }; #pragma pop @@ -761,6 +405,14 @@ SECTION_DATA static void* lit_3812[3] = { }; #pragma pop +#ifdef NONMATCHING +daNpcThe_c::EventFn daNpcThe_c::mEvtCutList[4] = { + NULL, + &EvCut_TwResistance, + &EvCut_TwResistance, + &EvCut_Introduction, +}; +#else /* 80AFC3E8-80AFC418 000218 0030+00 0/2 0/0 0/0 .data mEvtCutList__10daNpcThe_c */ #pragma push #pragma force_active on @@ -770,6 +422,7 @@ SECTION_DATA u8 daNpcThe_c::mEvtCutList[48] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop +#endif /* 80AFC418-80AFC424 -00001 000C+00 1/1 0/0 0/0 .data @4153 */ SECTION_DATA static void* lit_4153[3] = { @@ -1042,20 +695,29 @@ SECTION_DATA extern void* __vt__15daNpcF_Lookat_c[3] = { }; /* 80AF76CC-80AF7850 0000EC 0184+00 1/1 0/0 0/0 .text __ct__10daNpcThe_cFv */ +#ifdef NONMATCHING +// daNpcF_c constructor needs to not be inlined +daNpcThe_c::daNpcThe_c() { + /* empty function */ +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcThe_c::daNpcThe_c() { +// asm daNpcThe_c::daNpcThe_c() { +extern "C" asm void __ct__10daNpcThe_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AF7850-80AF7898 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +// asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__8cM3dGCylFv.s" } @@ -1065,51 +727,146 @@ asm cM3dGCyl::~cM3dGCyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +// asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__8cM3dGAabFv.s" } #pragma pop /* 80AF78E0-80AF7AE0 000300 0200+00 1/0 0/0 0/0 .text __dt__10daNpcThe_cFv */ +#ifdef NONMATCHING +daNpcThe_c::~daNpcThe_c() { + for (int i = 0; l_loadRes_list[mType][i] >= 0; i++) { + dComIfG_resDelete(&mPhase[i], l_resNames[l_loadRes_list[mType][i]]); + } + if (heap != NULL) { + mpMorf->stopZelAnime(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcThe_c::~daNpcThe_c() { +// asm daNpcThe_c::~daNpcThe_c() { +extern "C" asm void __dt__10daNpcThe_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__10daNpcThe_cFv.s" } #pragma pop +#endif -/* ############################################################################################## */ /* 80AFBE0C-80AFBE78 000000 006C+00 11/11 0/0 0/0 .rodata m__16daNpcThe_Param_c */ -SECTION_RODATA u8 const daNpcThe_Param_c::m[108] = { - 0x43, 0x5C, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0x7F, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, - 0x42, 0xA0, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daNpcThe_Param_c::param const daNpcThe_Param_c::m = { + 220.0f, + -3.0f, + 1.0f, + 400.0f, + 255.0f, + 200.0f, // mCylH + 35.0f, // mWallH + 40.0f, // mWallR + 0.0f, + -20.0f, + 10.0f, + -10.0f, + 30.0f, + -20.0f, + 45.0f, + -45.0f, + 0.6f, // mLookatScl + 12.0f, + 3, + 6, + 5, + 6, + 80.0f, + 500.0f, + 300.0f, + -300.0f, + 60, + 8, + 0, + 0, + 0, + 0, }; -COMPILER_STRIP_GATE(0x80AFBE0C, &daNpcThe_Param_c::m); -/* 80AFBE78-80AFBE84 00006C 000C+00 1/1 0/0 0/0 .rodata @4159 */ -SECTION_RODATA static u8 const lit_4159[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, -}; -COMPILER_STRIP_GATE(0x80AFBE78, &lit_4159); +int daNpcThe_c::CreateHeap() { + J3DModelData* model_data = NULL; + mTwilight = dKy_darkworld_check(); + int bmd_get_idx = mTwilight ? 1 : 0; + if (l_bmdGetParamList[bmd_get_idx].fileIdx >= 0) { + model_data = static_cast(dComIfG_getObjectRes( + l_resNames[l_bmdGetParamList[bmd_get_idx].arcIdx], + l_bmdGetParamList[bmd_get_idx].fileIdx + )); + } + mpMorf = new mDoExt_McaMorfSO(model_data, NULL, NULL, NULL, -1, 1.0f, 0, -1, + &mSound, 0x80000, 0x11020284); + + if (mpMorf != NULL && mpMorf->getModel() == NULL) { + mpMorf->stopZelAnime(); + mpMorf = NULL; + } + if (mpMorf == NULL) { + return 0; + } + + J3DModel* model = mpMorf->getModel(); + for (u16 i = 0; i < model_data->getJointTree().getJointNum(); i++) { + model_data->getJointNodePointer(i)->setCallBack(ctrlJointCallBack); + } + model->setUserArea((u32)this); + + mpMatAnm = new daNpcF_MatAnm_c(); + if (mpMatAnm == NULL) { + return 0; + } + + if (!setExpressionAnm(1, false)) { + return 0; + } + setMotionAnm(0xe, 0.0f); + return 1; +} /* 80AF7AE0-80AF7CB0 000500 01D0+00 1/1 0/0 0/0 .text ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel.s" +int daNpcThe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) { + int joint_no = i_joint->getJntNo(); + int lookat_joints[3] = {1, 3, 4}; + + if (joint_no == 0) { + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); + mDoMtx_stack_c::multVecZero(&mLookatPos[0]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3)); + mDoMtx_stack_c::multVecZero(&mLookatPos[1]); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mLookatPos[2]); + } + + mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no)); + + switch (joint_no) { + case 1: + case 3: + case 4: + setLookatMtx(joint_no, lookat_joints, daNpcThe_Param_c::m.mLookatScl); + break; + } + + i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get()); + MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + + if ((joint_no == 4 || joint_no == 11) && (mAnmFlags & 0x100)) { + J3DAnmTransform* anm = mBckAnm.getBckAnm(); + mBckAnm.changeBckOnly(mpMorf->getAnm()); + mpMorf->changeAnm(anm); + } + + return 1; } -#pragma pop /* ############################################################################################## */ /* 80AFBE84-80AFBE88 000078 0004+00 4/4 0/0 0/0 .rodata @4296 */ @@ -1127,20 +884,28 @@ COMPILER_STRIP_GATE(0x80AFBE88, &lit_4297); /* 80AF7CB0-80AF7F58 0006D0 02A8+00 1/1 0/0 0/0 .text * createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c */ +#ifdef NONMATCHING +// matches with literals +int daNpcThe_c::createHeapCallBack(fopAc_ac_c* i_this) { + return static_cast(i_this)->CreateHeap(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::createHeapCallBack(fopAc_ac_c* param_0) { +asm int daNpcThe_c::createHeapCallBack(fopAc_ac_c* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c.s" } #pragma pop +#endif /* 80AF7F58-80AF7F94 000978 003C+00 1/1 0/0 0/0 .text __dt__15J3DTevKColorAnmFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTevKColorAnm::~J3DTevKColorAnm() { +// asm J3DTevKColorAnm::~J3DTevKColorAnm() { +extern "C" asm void __dt__15J3DTevKColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__15J3DTevKColorAnmFv.s" } @@ -1150,7 +915,8 @@ asm J3DTevKColorAnm::~J3DTevKColorAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTevKColorAnm::J3DTevKColorAnm() { +// asm J3DTevKColorAnm::J3DTevKColorAnm() { +extern "C" asm void __ct__15J3DTevKColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__15J3DTevKColorAnmFv.s" } @@ -1160,7 +926,8 @@ asm J3DTevKColorAnm::J3DTevKColorAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTevColorAnm::~J3DTevColorAnm() { +// asm J3DTevColorAnm::~J3DTevColorAnm() { +extern "C" asm void __dt__14J3DTevColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__14J3DTevColorAnmFv.s" } @@ -1170,7 +937,8 @@ asm J3DTevColorAnm::~J3DTevColorAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTevColorAnm::J3DTevColorAnm() { +// asm J3DTevColorAnm::J3DTevColorAnm() { +extern "C" asm void __ct__14J3DTevColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__14J3DTevColorAnmFv.s" } @@ -1180,7 +948,8 @@ asm J3DTevColorAnm::J3DTevColorAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTexNoAnm::~J3DTexNoAnm() { +// asm J3DTexNoAnm::~J3DTexNoAnm() { +extern "C" asm void __dt__11J3DTexNoAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__11J3DTexNoAnmFv.s" } @@ -1190,7 +959,8 @@ asm J3DTexNoAnm::~J3DTexNoAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTexNoAnm::J3DTexNoAnm() { +// asm J3DTexNoAnm::J3DTexNoAnm() { +extern "C" asm void __ct__11J3DTexNoAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__11J3DTexNoAnmFv.s" } @@ -1200,7 +970,8 @@ asm J3DTexNoAnm::J3DTexNoAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTexMtxAnm::~J3DTexMtxAnm() { +// asm J3DTexMtxAnm::~J3DTexMtxAnm() { +extern "C" asm void __dt__12J3DTexMtxAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__12J3DTexMtxAnmFv.s" } @@ -1210,7 +981,8 @@ asm J3DTexMtxAnm::~J3DTexMtxAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DTexMtxAnm::J3DTexMtxAnm() { +// asm J3DTexMtxAnm::J3DTexMtxAnm() { +extern "C" asm void __ct__12J3DTexMtxAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__12J3DTexMtxAnmFv.s" } @@ -1220,7 +992,8 @@ asm J3DTexMtxAnm::J3DTexMtxAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DMatColorAnm::~J3DMatColorAnm() { +// asm J3DMatColorAnm::~J3DMatColorAnm() { +extern "C" asm void __dt__14J3DMatColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__14J3DMatColorAnmFv.s" } @@ -1230,7 +1003,8 @@ asm J3DMatColorAnm::~J3DMatColorAnm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DMatColorAnm::J3DMatColorAnm() { +// asm J3DMatColorAnm::J3DMatColorAnm() { +extern "C" asm void __ct__14J3DMatColorAnmFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__14J3DMatColorAnmFv.s" } @@ -1238,37 +1012,269 @@ asm J3DMatColorAnm::J3DMatColorAnm() { /* 80AF8114-80AF8160 000B34 004C+00 1/1 0/0 0/0 .text ctrlJointCallBack__10daNpcThe_cFP8J3DJointi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlJointCallBack__10daNpcThe_cFP8J3DJointi.s" +int daNpcThe_c::ctrlJointCallBack(J3DJoint* i_joint, int param_1) { + if (param_1 == 0) { + daNpcThe_c* _this = (daNpcThe_c*)j3dSys.getModel()->getUserArea(); + if (_this != NULL) { + _this->ctrlJoint(i_joint, j3dSys.getModel()); + } + } + return true; } -#pragma pop /* 80AF8160-80AF841C 000B80 02BC+00 2/0 0/0 0/0 .text setExpressionAnm__10daNpcThe_cFib */ +#ifdef NONMATCHING +// matches with literals +bool daNpcThe_c::setExpressionAnm(int i_idx, bool i_modify) { + J3DAnmTransform* anm = NULL; + int attr = 0; + mAnmFlags &= ~ANM_EXPRESSION_FLAGS; + + if (l_bckGetParamList[i_idx].fileIdx >= 0) { + anm = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[i_idx].arcIdx], + l_bckGetParamList[i_idx].fileIdx); + } + + bool res = false; + switch (i_idx) { + case 0: + res = setExpressionBtp(0); + break; + case 1: + res = setExpressionBtp(1); + break; + case 2: + res = setExpressionBtp(2); + break; + case 3: + res = setExpressionBtp(3); + break; + case 4: + res = setExpressionBtp(4); + attr = 2; + break; + case 5: + res = setExpressionBtp(5); + break; + case 6: + res = setExpressionBtp(6); + break; + case 7: + res = setExpressionBtp(7); + break; + case 8: + res = setExpressionBtp(8); + attr = 2; + break; + case 9: + res = setExpressionBtp(9); + attr = 2; + break; + case 10: + res = setExpressionBtp(10); + attr = 2; + break; + case 11: + res = setExpressionBtp(11); + attr = 2; + break; + case 12: + res = setExpressionBtp(12); + attr = 2; + break; + case 13: + res = setExpressionBtp(13); + attr = 2; + break; + default: + anm = NULL; + } + + if (!res) { + return false; + } + + if (anm == NULL) { + return true; + } + + if (setBckAnm(anm, 1.0f, attr, 0, -1, i_modify)) { + mAnmFlags |= ANM_PAUSE_BCK | ANM_PLAY_BCK; + mExpressionLoops = 0; + return true; + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::setExpressionAnm(int param_0, bool param_1) { +asm bool daNpcThe_c::setExpressionAnm(int param_0, bool param_1) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpressionAnm__10daNpcThe_cFib.s" } #pragma pop +#endif /* 80AF841C-80AF8564 000E3C 0148+00 2/0 0/0 0/0 .text setExpressionBtp__10daNpcThe_cFi */ +#ifdef NONMATCHING +// matches with literals +bool daNpcThe_c::setExpressionBtp(int i_idx) { + J3DAnmTexPattern* anm = NULL; + mAnmFlags &= ~(ANM_PAUSE_BTP | ANM_PLAY_BTP | ANM_FLAG_800); + + if (l_btpGetParamList[i_idx].fileIdx >= 0) { + anm = getTexPtrnAnmP(l_resNames[l_btpGetParamList[i_idx].arcIdx], + l_btpGetParamList[i_idx].fileIdx); + } + + int attr = 0; + switch (i_idx) { + case 0: + attr = 2; + break; + case 1: + break; + case 2: + break; + case 3: + break; + case 4: + attr = 2; + break; + case 5: + break; + case 6: + break; + case 7: + break; + case 8: + attr = 2; + break; + case 9: + attr = 2; + break; + case 10: + attr = 2; + break; + case 11: + attr = 2; + break; + case 12: + attr = 2; + break; + case 13: + attr = 2; + break; + default: + anm = NULL; + } + + if (anm == NULL) { + return true; + } + + if (setBtpAnm(anm, mpMorf->getModel()->getModelData(), 1.0f, attr)) { + mAnmFlags |= ANM_PAUSE_BTP | ANM_PLAY_BTP; + if (i_idx == 0) { + mAnmFlags |= ANM_FLAG_800; + } + return true; + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::setExpressionBtp(int param_0) { +asm bool daNpcThe_c::setExpressionBtp(int param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpressionBtp__10daNpcThe_cFi.s" } #pragma pop +#endif /* 80AF8564-80AF8744 000F84 01E0+00 2/0 0/0 0/0 .text setMotionAnm__10daNpcThe_cFif */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::setMotionAnm(int i_idx, f32 i_morf) { + J3DAnmTransformKey* anm_trans = NULL; + J3DAnmTextureSRTKey* anm_tex = NULL; + int attr = 2; + mAnmFlags &= ~ANM_MOTION_FLAGS; + + if (l_bckGetParamList[i_idx].fileIdx >= 0) { + anm_trans = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[i_idx].arcIdx], + l_bckGetParamList[i_idx].fileIdx); + } + + switch (i_idx) { + case 14: + attr = 2; + break; + case 15: + attr = 2; + break; + case 16: + attr = 0; + break; + case 17: + attr = 2; + break; + case 18: + attr = 2; + break; + case 19: + attr = 0; + break; + case 20: + attr = 2; + break; + case 21: + attr = 0; + break; + case 22: + attr = 0; + break; + case 23: + attr = 2; + break; + case 24: + attr = 0; + break; + case 25: + attr = 2; + break; + case 26: + attr = 0; + break; + default: + anm_trans = NULL; + anm_tex = NULL; + } + + if (l_btkGetParamList[0].fileIdx >= 0) { + anm_tex = getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx], + l_btkGetParamList[0].fileIdx); + } + + if (anm_tex != NULL) { + if (setBtkAnm(anm_tex, mpMorf->getModel()->getModelData(), 1.0f, 2)) { + mAnmFlags |= ANM_PAUSE_BTK | ANM_PLAY_BTK; + } + } + + if (anm_trans != NULL) { + if (setMcaMorfAnm(anm_trans, 1.0f, i_morf, attr, 0, -1)) { + mAnmFlags |= ANM_PAUSE_MORF | ANM_PLAY_MORF; + mMotionLoops = 0; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1277,6 +1283,7 @@ asm void daNpcThe_c::setMotionAnm(int param_0, f32 param_1) { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotionAnm__10daNpcThe_cFif.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80AFBE8C-80AFBE98 000080 000C+00 0/1 0/0 0/0 .rodata @4507 */ @@ -1844,44 +1851,172 @@ SECTION_DEAD static char const* const stringBase_80AFC1AC = "R_SP116"; #pragma pop /* 80AF8744-80AF8B0C 001164 03C8+00 1/0 0/0 0/0 .text wait__10daNpcThe_cFPv */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcThe_c::wait(void* param_0) { + switch (mState) { + case 0: + field_0x938 = 0; + // no break + + case 1: + if (mType == 2) { + setExpression(8, -1.0f); + setMotion(8, -1.0f, 0); + } else { + setExpression(13, -1.0f); + setMotion(0, -1.0f, 0); + } + setLookMode(0); + field_0x96c = 0; + mState = 2; + break; + + case 2: + if (mType == 2) { + if (field_0x8f0.y != home.angle.y && step(home.angle.y, -1, -1, 0xf)) { + mState = 1; + } + setLookMode(0); + } else { + if (!isSneaking()) { + bool uvar3 = mActorMngr[0].getActorP() != NULL; + if (chkFindPlayer2(uvar3, field_0x8f0.y)) { + if (!uvar3) { + mActorMngr[0].entry(daPy_getPlayerActorClass()); + field_0x96c = 0; + } + } else if (uvar3) { + mActorMngr[0].remove(); + field_0x96c = 0; + } + + if (mActorMngr[0].getActorP() != NULL) { + setLookMode(2); + } else { + if (field_0x8f0.y != home.angle.y && step(home.angle.y, -1, -1, 0xf)) { + mState = 1; + } + setLookMode(0); + } + + if (mType == 0) { + daTag_EvtArea_c* evt_area = + static_cast(mActorMngr[2].getActorP()); + if (evt_area != NULL) { + if (evt_area->chkPointInArea(daPy_getPlayerActorClass()->current.pos)) { + daNpcF_offTmpBit(0xb); + daNpcF_offTmpBit(0xc); + daNpcF_offTmpBit(0xd); + daNpcF_offTmpBit(0xe); + mOrderEvtNo = 3; + fopAcM_delete(evt_area); + } + } + } + } else { + setLookMode(0); + } + + if (field_0x8f0.y == home.angle.y) { + fopAc_ac_c* actor = + getAttnActorP(mActorMngr[0].getActorP() != NULL, srchAttnActor1, + daNpcThe_Param_c::m.field_0x54, daNpcThe_Param_c::m.field_0x58, + daNpcThe_Param_c::m.field_0x5c, daNpcThe_Param_c::m.field_0x50, + shape_angle.y, 120, 1); + if (actor != NULL) { + mActorMngr[1].entry(actor); + setLookMode(5); + } + } else { + field_0x938 = 0; + } + } + + case 3: + break; + } + + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::wait(void* param_0) { +asm BOOL daNpcThe_c::wait(void* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/wait__10daNpcThe_cFPv.s" } #pragma pop +#endif /* 80AF8B0C-80AF8B50 00152C 0044+00 1/0 0/0 0/0 .text setMotion__10daNpcThe_cFifi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::setMotion(int param_0, f32 param_1, int param_2) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setMotion__10daNpcThe_cFifi.s" +void daNpcThe_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) { + s16 motion = i_motion; + if (i_restart || mMotion != motion) { + if (i_motion >= 0 && i_motion < 11) { + mMotion = motion; + mMotionMorfOverride = i_morf; + mMotionPrevPhase = -1; + mMotionPhase = 0; + } + } } -#pragma pop /* 80AF8B50-80AF8B7C 001570 002C+00 1/0 0/0 0/0 .text setExpression__10daNpcThe_cFif */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::setExpression(int param_0, f32 param_1) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setExpression__10daNpcThe_cFif.s" +void daNpcThe_c::setExpression(int i_expression, f32 i_morf) { + if (i_expression >= 0 && i_expression < 14) { + mExpression = i_expression; + mExpressionMorfOverride = i_morf; + mExpressionPrevPhase = -1; + mExpressionPhase = 0; + } } -#pragma pop /* 80AF8B7C-80AF8CC4 00159C 0148+00 1/0 0/0 0/0 .text waitTW__10daNpcThe_cFPv */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcThe_c::waitTW(void* param_0) { + switch (mState) { + case 0: + field_0x938 = 0; + // no break + + case 1: + if (mType == 2) { + setExpression(8, -1.0f); + setMotion(8, -1.0f, 0); + } else { + setExpression(11, -1.0f); + setMotion(0, -1.0f, 0); + } + field_0x96c = 0; + mState = 2; + break; + + case 2: + if (field_0x8f0.y != home.angle.y && step(home.angle.y, -1, -1, 0xf)) { + mState = 1; + } + setLookMode(4); + break; + + case 3: + break; + } + + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::waitTW(void* param_0) { +asm BOOL daNpcThe_c::waitTW(void* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/waitTW__10daNpcThe_cFPv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80AFC124-80AFC12C 000318 0008+00 1/1 0/0 0/0 .rodata @4840 */ @@ -1897,63 +2032,311 @@ SECTION_DEAD static char const* const stringBase_80AFC1B4 = "DEFAULT_GETITEM"; #pragma pop /* 80AF8CC4-80AF912C 0016E4 0468+00 6/0 0/0 0/0 .text talk__10daNpcThe_cFPv */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcThe_c::talk(void* param_0) { + BOOL ret = false; + BOOL bvar1 = false; + switch (mState) { + case 0: + case 1: + initTalk(mFlowID, NULL); + field_0x938 = 0; + field_0x96c = 0; + field_0xe1c = false; + mState = 2; + break; + + case 2: + if (mTwilight || isSneaking()) { + bvar1 = true; + } else { + if (mType == 2 && + (mpMorf->getAnm() == getTrnsfrmKeyAnmP( + l_resNames[l_bckGetParamList[24].arcIdx], l_bckGetParamList[24].fileIdx) + || mpMorf->getAnm() == getTrnsfrmKeyAnmP( + l_resNames[l_bckGetParamList[25].arcIdx], l_bckGetParamList[25].fileIdx) + || mpMorf->getAnm() == getTrnsfrmKeyAnmP( + l_resNames[l_bckGetParamList[26].arcIdx], l_bckGetParamList[26].fileIdx))) + { + setLookMode(0); + } else { + setLookMode(3); + mActorMngr[0].entry(daPy_getPlayerActorClass()); + } + + if (mType == 2 || field_0x8f0.y == fopAcM_searchPlayerAngleY(this)) { + bvar1 = true; + } else if (step(fopAcM_searchPlayerAngleY(this), -1, -1, 0xf)) { + setExpression(13, -1.0f); + setMotion(0, -1.0f, 0); + field_0x96c = 0; + } + } + + if (bvar1) { + int local_24[2] = {-1, -1}; + if (mFlowID == 0x430) { + local_24[0] = 0x13ef; + } + if (talkProc(local_24, 1, NULL)) { + if (!mFlow.checkEndFlow()) { + daPy_getPlayerActorClass()->changeOriginalDemo(); + daPy_getPlayerActorClass()->changeDemoMode(6, 0, 1, 0); + } else { + if (mFlowID == 0x430) { + daPy_getPlayerActorClass()->cancelOriginalDemo(); + } + int item_no = 0; + if (mFlow.getEventId(&item_no) == 1) { + mItemID = fopAcM_createItemForPresentDemo(¤t.pos, item_no, + 0, -1, -1, NULL, NULL); + if (mItemID != -1) { + s16 event_id = dComIfGp_getEventManager() + .getEventIdx(this, "DEFAULT_GETITEM", 0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, event_id, 1, 0xffff); + field_0x9ec = 1; + } + } + ret = true; + } + } + } + + if (ret) { + mState = 3; + if (mFlowID == 0x430) { + if (!field_0xe1d) { + field_0xe1d = true; + field_0xe1c = true; + } else { + mFlowID = home.angle.x; + } + } + if (field_0x9ec == 0) { + dComIfGp_event_reset(); + } + field_0x9ec = 0; + } + // no break + + case 3: + default: + break; + } + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::talk(void* param_0) { +asm BOOL daNpcThe_c::talk(void* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/talk__10daNpcThe_cFPv.s" } #pragma pop +#endif /* 80AF912C-80AF923C 001B4C 0110+00 2/0 0/0 0/0 .text test__10daNpcThe_cFPv */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcThe_c::test(void* param_0) { + switch (mState) { + case 0: + field_0x938 = 0; + break; + + case 1: + speedF = 0.0f; + speed.setall(0.0f); + field_0x96c = 0; + mState = 2; + // no break + + case 2: + attention_info.flags = 0; + if (mExpression != daNpcThe_Param_c::m.mTestExpression) { + setExpression(daNpcThe_Param_c::m.mTestExpression, daNpcThe_Param_c::m.field_0x44); + } + setMotion(daNpcThe_Param_c::m.mTestMotion, daNpcThe_Param_c::m.field_0x44, false); + setLookMode(daNpcThe_Param_c::m.mTestLookMode); + break; + + case 3: + default: + break; + } + + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::test(void* param_0) { +asm BOOL daNpcThe_c::test(void* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/test__10daNpcThe_cFPv.s" } #pragma pop +#endif /* 80AF923C-80AF9244 001C5C 0008+00 2/0 0/0 0/0 .text EvCut_TwResistance__10daNpcThe_cFi */ -bool daNpcThe_c::EvCut_TwResistance(int param_0) { +BOOL daNpcThe_c::EvCut_TwResistance(int i_cutIdx) { return true; } /* 80AF9244-80AF9338 001C64 00F4+00 1/0 0/0 0/0 .text EvCut_Introduction__10daNpcThe_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::EvCut_Introduction(int param_0) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/EvCut_Introduction__10daNpcThe_cFi.s" +BOOL daNpcThe_c::EvCut_Introduction(int i_cutIdx) { + dEvent_manager_c& event_manager = dComIfGp_getEventManager(); + int* cut_name = (int*)event_manager.getMyNowCutName(i_cutIdx); + if (event_manager.getIsAddvance(i_cutIdx)) { + switch (*cut_name) { + case '0001': + case '0002': + case '0003': + case '0004': + case '0005': + initTalk(mFlowID, NULL); + setLookMode(2); + } + } + + switch (*cut_name) { + case '0001': + case '0002': + case '0003': + case '0004': + case '0005': + if (talkProc(NULL, 1, NULL)) { + return true; + } + } + + return false; } -#pragma pop /* 80AF9338-80AF9358 001D58 0020+00 1/0 0/0 0/0 .text daNpcThe_Create__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcThe_Create(void* param_0) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Create__FPv.s" +static cPhs__Step daNpcThe_Create(void* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 80AF9358-80AF9748 001D78 03F0+00 1/1 0/0 0/0 .text create__10daNpcThe_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcThe_c::create() { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/create__10daNpcThe_cFv.s" +cPhs__Step daNpcThe_c::create() { + fopAcM_SetupActor(this, daNpcThe_c); + + mType = getTypeFromParam(); + + int flow_id = home.angle.x; + if (flow_id != 0xffff) { + mFlowID = flow_id; + } else { + mFlowID = -1; + } + + if (mType == 2 && (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68]) + || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78]))) { + return cPhs_ERROR_e; + } + + cPhs__Step step; + int resources_loaded = 0; + int i = 0; + for (; l_loadRes_list[mType][i] >= 0; i++) { + step = (cPhs__Step)dComIfG_resLoad(&mPhase[i], l_resNames[l_loadRes_list[mType][i]]); + if (step == cPhs_ERROR_e || step == cPhs_UNK3_e) { + return cPhs_ERROR_e; + } + if (step == cPhs_COMPLEATE_e) { + resources_loaded++; + } + } + + if (resources_loaded == i) { + u32 heap_size = 0; + switch (mType) { + case 0: + heap_size = 0x4d70; + break; + case 1: + heap_size = 0x4cc0; + break; + case 2: + heap_size = 0x4d80; + break; + } + if (!fopAcM_entrySolidHeap(this, createHeapCallBack, heap_size)) { + return cPhs_ERROR_e; + } + + if (isDelete()) { + return cPhs_ERROR_e; + } + + fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx()); + fopAcM_setCullSizeBox2(this, mpMorf->getModel()->getModelData()); + mSound.init(¤t.pos, &eyePos, 3, 1); + mAcchCir.SetWall(daNpcThe_Param_c::m.mWallR, daNpcThe_Param_c::m.mWallH); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); + mAcch.SetRoofNone(); + mAcch.SetWaterNone(); + mAcch.CrrPos(dComIfG_Bgsp()); + mCcStts.Init(daNpcThe_Param_c::m.field_0x10, 0, this); + mColCyl.Set(mCcDCyl); + mColCyl.SetStts(&mCcStts); + mColCyl.SetTgType(0); + mColCyl.SetTgSPrm(0); + mColCyl.SetH(daNpcThe_Param_c::m.mCylH); + mColCyl.SetR(daNpcThe_Param_c::m.mWallR); + field_0xa44 = mAcch.m_gnd; + field_0x980 = mAcch.GetGroundH(); + + setEnvTevColor(); + setRoomNo(); + reset(); + execute(); + + return cPhs_COMPLEATE_e; + } + + return cPhs_INIT_e; } -#pragma pop /* 80AF9748-80AF98D0 002168 0188+00 1/1 0/0 0/0 .text reset__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::reset() { + initialize(); + mpMatAnm->initialize(); + mLookat.initialize(); + for (int i = 0; i < 3; i++) { + mActorMngr[i].initialize(); + } + mpNextActionFn = NULL; + mpActionFn = NULL; + field_0xe04 = 0; + field_0xe08 = 0; + field_0xe0c = 0; + field_0xe10 = 0; + mLookMode = -1; + mState = 0; + field_0xe1c = false; + mItemID = -1; + current.pos = home.pos; + old.pos = current.pos; + current.angle.set(0, home.angle.y, 0); + old.angle = current.angle; + shape_angle = current.angle; + field_0x8f0 = current.angle; + field_0x8f6 = field_0x8f0; + speedF = 0.0f; + speed.setall(0.0f); + field_0x9ee = 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1962,53 +2345,111 @@ asm void daNpcThe_c::reset() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/reset__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AF98D0-80AF9904 0022F0 0034+00 1/0 0/0 0/0 .text daNpcThe_Delete__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcThe_Delete(void* param_0) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Delete__FPv.s" +static int daNpcThe_Delete(void* i_this) { + static_cast(i_this)->~daNpcThe_c(); + return 1; } -#pragma pop /* 80AF9904-80AF9924 002324 0020+00 1/0 0/0 0/0 .text daNpcThe_Execute__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcThe_Execute(void* param_0) { - nofralloc -#include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Execute__FPv.s" +static int daNpcThe_Execute(void* i_this) { + return static_cast(i_this)->execute(); } -#pragma pop + +#ifdef NONMATCHING +// matches with data +int daNpcThe_c::Draw() { + mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm); + ActionFn action_test = &test; + int is_test = mpActionFn == action_test; + return draw(is_test, 0, daNpcThe_Param_c::m.field_0x0c, NULL, 0); +} +#endif /* 80AF9924-80AF99BC 002344 0098+00 1/0 0/0 0/0 .text daNpcThe_Draw__FPv */ +#ifdef NONMATCHING +// matches with data +static int daNpcThe_Draw(void* i_this) { + return static_cast(i_this)->Draw(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daNpcThe_Draw(void* param_0) { +static asm int daNpcThe_Draw(void* param_0) { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/daNpcThe_Draw__FPv.s" } #pragma pop +#endif /* 80AF99BC-80AF99C4 0023DC 0008+00 1/0 0/0 0/0 .text daNpcThe_IsDelete__FPv */ -static bool daNpcThe_IsDelete(void* param_0) { - return true; +static int daNpcThe_IsDelete(void* i_this) { + return 1; } /* 80AF99C4-80AF99F4 0023E4 0030+00 1/0 0/0 0/0 .text calc__11J3DTexNoAnmCFPUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTexNoAnm::calc(u16* param_0) const { +// asm void J3DTexNoAnm::calc(u16* param_0) const { +extern "C" asm void calc__11J3DTexNoAnmCFPUs() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/calc__11J3DTexNoAnmCFPUs.s" } #pragma pop /* 80AF99F4-80AF9CF0 002414 02FC+00 1/0 0/0 0/0 .text setParam__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::setParam() { + if (mActorMngr[2].getActorP() == NULL) { + mActorMngr[2].entry(getEvtAreaTagP(19, 0)); + } + + ActionFn next_action = mpNextActionFn; + mpNextActionFn = NULL; + if (daNpcThe_Param_c::m.mTest) { + mpNextActionFn = &test; + } else if (mTwilight) { + mpNextActionFn = &waitTW; + } else { + mpNextActionFn = &wait; + } + if (mpNextActionFn != next_action) { + for (int i = 3; i < 3; i++) { + mActorMngr[i].initialize(); + } + } + + int dist1 = mType == 2 ? (s16)1 : daNpcThe_Param_c::m.field_0x4a; + int dist2 = mType == 2 ? (s16)1 : daNpcThe_Param_c::m.field_0x4e; + attention_info.flags = 0xa; + if (isSneaking()) { + attention_info.field_0x0[0] = 0x4e; + attention_info.field_0x0[1] = attention_info.field_0x0[0]; + attention_info.field_0x0[3] = 0x4d; + attention_info.flags |= 0x800000; + } else { + if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) { + attention_info.field_0x0[0] = getDistTableIdx(daNpcThe_Param_c::m.field_0x4c, dist2); + attention_info.field_0x0[1] = attention_info.field_0x0[0]; + attention_info.field_0x0[3] = getDistTableIdx(daNpcThe_Param_c::m.field_0x48 + 1, dist1); + } else { + attention_info.field_0x0[0] = getDistTableIdx(daNpcThe_Param_c::m.field_0x4c, dist2); + attention_info.field_0x0[1] = attention_info.field_0x0[0]; + attention_info.field_0x0[3] = getDistTableIdx(daNpcThe_Param_c::m.field_0x48, dist1); + } + } + + scale.setall(daNpcThe_Param_c::m.mScale); + mAcchCir.SetWallR(daNpcThe_Param_c::m.mWallR); + mAcchCir.SetWallH(daNpcThe_Param_c::m.mWallH); + gravity = daNpcThe_Param_c::m.mGravity; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2017,18 +2458,108 @@ asm void daNpcThe_c::setParam() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setParam__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AF9CF0-80AF9F94 002710 02A4+00 1/0 0/0 0/0 .text main__10daNpcThe_cFv */ +#ifdef NONMATCHING +// dComIfG_gameInfo issues +BOOL daNpcThe_c::main() { + if (!doEvent()) { + doNormalAction(); + } + + if (field_0x9ee) { + mExpressionMorfOverride = 0.0f; + mMotionMorfOverride = 0.0f; + field_0x9ee = false; + } + + if (checkHide()) { + attention_info.flags = 0; + } + + if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk() && mItemID != -1) { + dComIfGp_event_setItemPartnerId(mItemID); + mItemID = -1; + } + + if (!daNpcThe_Param_c::m.mTest + && (dComIfGp_event_runCheck() == false || (field_0x9ed && dComIfGp_getEvent().isOrderOK()))) + { + if (mOrderEvtNo != 0 && l_resNames[l_evtGetParamList[mOrderEvtNo]] != NULL) { + eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo]]); + } + if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) { + eventInfo.i_onCondition(0x20); + } + orderEvent(field_0xe1c, l_evtNames[mOrderEvtNo], 0xffff, 0x28, 0xff, 1); + } + + playExpression(); + playMotion(); + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::main() { +asm BOOL daNpcThe_c::main() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/main__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AF9F94-80AFA338 0029B4 03A4+00 1/1 0/0 0/0 .text playMotion__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::playMotion() { + daNpcF_anmPlayData dat0 = {14, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat0[1] = {&dat0}; + daNpcF_anmPlayData dat1a = {21, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat1b = {15, 0.0f, 0}; + daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b}; + daNpcF_anmPlayData dat2a = {16, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat2b = {17, 0.0f, 0}; + daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b}; + daNpcF_anmPlayData dat3 = {18, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat3[1] = {&dat3}; + daNpcF_anmPlayData dat4a = {24, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat4b = {25, 0.0f, 0}; + daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b}; + daNpcF_anmPlayData dat5 = {23, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat5[1] = {&dat5}; + daNpcF_anmPlayData dat6a = {26, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat6b = {23, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b}; + daNpcF_anmPlayData dat7 = {17, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat7[1] = {&dat7}; + daNpcF_anmPlayData dat8 = {25, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat8[1] = {&dat8}; + daNpcF_anmPlayData dat9a = {19, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat9b = {20, 0.0f, 0}; + daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b}; + daNpcF_anmPlayData dat10a = {22, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData dat10b = {15, 0.0f, 0}; + daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b}; + daNpcF_anmPlayData** ppDat[11] = { + pDat0, + pDat1, + pDat2, + pDat3, + pDat4, + pDat5, + pDat6, + pDat7, + pDat8, + pDat9, + pDat10, + }; + if (mMotion >= 0 && mMotion < 11) { + playMotionAnm(ppDat); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2037,8 +2568,61 @@ asm void daNpcThe_c::playMotion() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/playMotion__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AFA338-80AFA6CC 002D58 0394+00 1/1 0/0 0/0 .text playExpression__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::playExpression() { + daNpcF_anmPlayData dat0 = {1, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat0[2] = {&dat0, NULL}; + daNpcF_anmPlayData dat1 = {2, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat1[2] = {&dat1, NULL}; + daNpcF_anmPlayData dat2 = {3, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat2[2] = {&dat2, NULL}; + daNpcF_anmPlayData dat3 = {4, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat3[2] = {&dat3, NULL}; + daNpcF_anmPlayData dat4 = {5, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat4[2] = {&dat4, NULL}; + daNpcF_anmPlayData dat5 = {6, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat5[2] = {&dat5, NULL}; + daNpcF_anmPlayData dat6 = {7, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat6[2] = {&dat6, NULL}; + daNpcF_anmPlayData dat7 = {13, 0.0f, 0}; + daNpcF_anmPlayData* pDat7[2] = {&dat7, NULL}; + daNpcF_anmPlayData dat8 = {8, 0.0f, 0}; + daNpcF_anmPlayData* pDat8[2] = {&dat8, NULL}; + daNpcF_anmPlayData dat9 = {9, 0.0f, 0}; + daNpcF_anmPlayData* pDat9[2] = {&dat9, NULL}; + daNpcF_anmPlayData dat10 = {10, 0.0f, 0}; + daNpcF_anmPlayData* pDat10[2] = {&dat10, NULL}; + daNpcF_anmPlayData dat11 = {11, 0.0f, 0}; + daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL}; + daNpcF_anmPlayData dat12 = {12, 0.0f, 0}; + daNpcF_anmPlayData* pDat12[2] = {&dat12, NULL}; + daNpcF_anmPlayData dat13 = {0, daNpcThe_Param_c::m.field_0x44, 0}; + daNpcF_anmPlayData* pDat13[1] = {&dat13}; + daNpcF_anmPlayData** ppDat[14] = { + pDat0, + pDat1, + pDat2, + pDat3, + pDat4, + pDat5, + pDat6, + pDat7, + pDat8, + pDat9, + pDat10, + pDat11, + pDat12, + pDat13, + }; + if (mExpression >= 0 && mExpression < 14) { + playExpressionAnm(ppDat); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2047,6 +2631,33 @@ asm void daNpcThe_c::playExpression() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/playExpression__10daNpcThe_cFv.s" } #pragma pop +#endif + +void daNpcThe_c::setExpressionTalkAfter() { + switch (mExpression) { + case 1: + setExpression(8, -1.0f); + break; + case 2: + setExpression(9, -1.0f); + break; + case 3: + setExpression(10, -1.0f); + break; + case 4: + setExpression(11, -1.0f); + break; + case 5: + setExpression(12, -1.0f); + break; + case 6: + setExpression(7, -1.0f); + break; + default: + setExpression(13, -1.0f); + break; + } +} /* ############################################################################################## */ /* 80AFC158-80AFC158 00034C 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -2056,14 +2667,113 @@ SECTION_DEAD static char const* const stringBase_80AFC1C4 = "NO_RESPONSE"; #pragma pop /* 80AFA6CC-80AFADEC 0030EC 0720+00 1/1 0/0 0/0 .text doEvent__10daNpcThe_cFv */ +#ifdef NONMATCHING +// regalloc and mr ordering +BOOL daNpcThe_c::doEvent() { + BOOL ret = false; + if (dComIfGp_event_runCheck() != false) { + dEvent_manager_c& event_manager = dComIfGp_getEventManager(); + if (eventInfo.checkCommandTalk()) { + if (mTwilight) { + if (daNpcF_chkEvtBit(0x115)) { + mOrderEvtNo = 2; + } else { + mOrderEvtNo = 1; + } + eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo]]); + event_manager.setObjectArchive(eventInfo.getArchiveName()); + mEventIdx = event_manager.getEventIdx(this, l_evtNames[mOrderEvtNo], 0xff); + if (mEventIdx != -1) { + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, mEventIdx, 1, 0xffff); + } + } else if (dComIfGp_event_chkTalkXY()) { + if (!dComIfGp_evmng_ChkPresentEnd()) { + return true; + } + u8 item_no = dComIfGp_event_getPreItemNo(); + if (item_no == 0x80) { + mFlowID = 0x430; + if (chkAction(&talk)) { + (this->*mpActionFn)(NULL); + } else { + setAction(&talk); + } + } else if (item_no == 0x81) { + mFlowID = 0x431; + if (chkAction(&talk)) { + (this->*mpActionFn)(NULL); + } else { + setAction(&talk); + } + } else { + s16 event_idx + = dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, event_idx, 1, 0xffff); + } + } else { + if (chkAction(&talk)) { + (this->*mpActionFn)(NULL); + } else { + setAction(&talk); + } + } + ret = true; + } else { + int staff_id = event_manager.getMyStaffId(l_myName, this, -1); + if (staff_id != -1) { + mCutIndex = staff_id; + int act_idx = event_manager.getMyActIdx(staff_id, mEvtCutNameList, 4, 0, 0); + if (act_idx > 0 && act_idx < 4) { + if ((this->*mEvtCutList[act_idx])(staff_id)) { + event_manager.cutEnd(staff_id); + } + } else { + if ((this->*mEvtCutList[mOrderEvtNo])(staff_id)) { + event_manager.cutEnd(staff_id); + } + } + ret = true; + } + if (eventInfo.i_checkCommandDemoAccrpt() && mEventIdx != -1 + && event_manager.endCheck(mEventIdx)) { + dComIfGp_event_reset(); + mOrderEvtNo = 0; + mEventIdx = -1; + } + } + int expression, motion; + int tmp950 = field_0x950; + if (ctrlMsgAnm(expression, motion, this, 0)) { + if (!field_0x9eb) { + setExpression(expression, -1.0f); + setMotion(motion, -1.0f, false); + } + } else { + if (tmp950 != 0 && !field_0x9eb) { + setExpressionTalkAfter(); + } + } + } else { + field_0x950 = 0; + if (mCutIndex != -1) { + mState = 1; + mCutIndex = -1; + } + } + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::doEvent() { +asm BOOL daNpcThe_c::doEvent() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/doEvent__10daNpcThe_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80AFC12C-80AFC130 000320 0004+00 1/1 0/0 0/0 .rodata @5324 */ @@ -2071,14 +2781,35 @@ SECTION_RODATA static f32 const lit_5324 = 1.0f / 5.0f; COMPILER_STRIP_GATE(0x80AFC12C, &lit_5324); /* 80AFADEC-80AFAEC8 00380C 00DC+00 1/0 0/0 0/0 .text ctrlBtk__10daNpcThe_cFv */ +#ifdef NONMATCHING +// somehow this needs to not inline TSinCosTable<13,f32>::sinShort +BOOL daNpcThe_c::ctrlBtk() { + if (mpMatAnm != NULL) { + J3DAnmTextureSRTKey* anm = NULL; + if (l_btkGetParamList[0].fileIdx >= 0) { + anm = getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx], + l_btkGetParamList[0].fileIdx); + } + if (anm == mBtkAnm.getBtkAnm()) { + mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f); + mpMatAnm->setNowOffsetY(cM_ssin(mEyeAngle.x) * 0.2f); + mpMatAnm->onEyeMoveFlag(); + return true; + } + mpMatAnm->offEyeMoveFlag(); + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcThe_c::ctrlBtk() { +asm BOOL daNpcThe_c::ctrlBtk() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/ctrlBtk__10daNpcThe_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80AFC130-80AFC134 000324 0004+00 0/1 0/0 0/0 .rodata @5398 */ @@ -2116,6 +2847,48 @@ COMPILER_STRIP_GATE(0x80AFC144, &lit_5401); #pragma pop /* 80AFAEC8-80AFB1C4 0038E8 02FC+00 1/0 0/0 0/0 .text setAttnPos__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::setAttnPos() { + if (mLookMode == 1) { + for (int i = 0; i < 3; i++) { + field_0x91a[i].setall(0); + } + } + + setMtx(); + lookat(); + + cXyz vec1(-10.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4)); + mDoMtx_stack_c::multVecZero(&mHeadPos); + mDoMtx_stack_c::multVec(&vec1, &eyePos); + vec1.y = 0.0f; + mDoMtx_stack_c::multVec(&vec1, &vec1); + mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec1); + mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec1); + + cXyz* attn_pos = mLookat.getAttnPos(); + if (attn_pos != NULL) { + cXyz vec2 = *attn_pos - eyePos; + mEyeAngle.y = -(field_0x91a[2].y + field_0x8f0.y); + mEyeAngle.y += cM_atan2s(vec2.x, vec2.z); + mEyeAngle.x = mHeadAngle.x - cM_atan2s(vec2.y, vec2.absXZ()); + } else { + mEyeAngle.y = 0; + mEyeAngle.x = 0; + } + + attention_info.position.set(current.pos.x, + current.pos.y + daNpcThe_Param_c::m.field_0x00, + current.pos.z); + + if (!mHide) { + mColCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mColCyl); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2124,6 +2897,7 @@ asm void daNpcThe_c::setAttnPos() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/setAttnPos__10daNpcThe_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80AFC14C-80AFC150 000340 0004+00 0/1 0/0 0/0 .rodata @5449 */ @@ -2148,6 +2922,61 @@ COMPILER_STRIP_GATE(0x80AFC154, &lit_5451); #pragma pop /* 80AFB1C4-80AFB488 003BE4 02C4+00 1/1 0/0 0/0 .text lookat__10daNpcThe_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcThe_c::lookat() { + fopAc_ac_c* actor = NULL; + J3DModel* model = mpMorf->getModel(); + int ivar5 = 0; + f32 fvar1 = daNpcThe_Param_c::m.field_0x24; + f32 fvar2 = daNpcThe_Param_c::m.field_0x20; + f32 fvar3 = daNpcThe_Param_c::m.field_0x2c; + f32 fvar4 = daNpcThe_Param_c::m.field_0x28; + f32 fvar5 = daNpcThe_Param_c::m.field_0x34; + f32 fvar6 = daNpcThe_Param_c::m.field_0x30; + f32 fvar7 = daNpcThe_Param_c::m.field_0x3c; + f32 fvar8 = daNpcThe_Param_c::m.field_0x38; + s16 ivar1 = field_0x8f0.y - field_0x8f6.y; + cXyz pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]}; + csXyz* local_d4[3] = {&field_0x91a[0], &field_0x91a[1], &field_0x91a[2]}; + + switch (mLookMode) { + case 1: + ivar5 = 1; + break; + case 3: + fvar7 = -80.0f; + fvar8 = 80.0f; + // no break + case 2: + actor = daPy_getPlayerActorClass(); + break; + case 4: + actor = fopAcM_SearchByName(PROC_NPC_ZRC); + break; + case 5: + break; + } + + if (actor != NULL) { + if (mLookMode == 4) { + mLookPos = actor->eyePos; + } else { + mLookPos = actor->attention_info.position; + if (mLookMode != 2 && mLookMode != 3 && mLookMode != 5) { + mLookPos.y -= 40.0f; + } + } + mLookat.setAttnPos(&mLookPos); + } else { + mLookat.setAttnPos(NULL); + } + + mLookat.setParam(fvar1, fvar2, fvar3, fvar4, 0.0f, 0.0f, 0.0f, 0.0f, + fvar5, fvar6, fvar7, fvar8, field_0x8f0.y, pos); + mLookat.calc(this, model->getBaseTRMtx(), local_d4, ivar5, ivar1, 0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2156,9 +2985,10 @@ asm void daNpcThe_c::lookat() { #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/lookat__10daNpcThe_cFv.s" } #pragma pop +#endif /* 80AFB488-80AFB490 003EA8 0008+00 1/0 0/0 0/0 .text drawDbgInfo__10daNpcThe_cFv */ -bool daNpcThe_c::drawDbgInfo() { +BOOL daNpcThe_c::drawDbgInfo() { return false; } @@ -2184,7 +3014,11 @@ SECTION_DATA extern void* __vt__16daNpcThe_Param_c[3] = { static u8 lit_3809[12]; /* 80AFC67C-80AFC680 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */ +#ifdef NONMATCHING +static daNpcThe_Param_c l_HIO; +#else static u8 l_HIO[4]; +#endif /* 80AFB49C-80AFB558 003EBC 00BC+00 0/0 1/0 0/0 .text __sinit_d_a_npc_the_cpp */ #pragma push @@ -2205,7 +3039,8 @@ REGISTER_CTORS(0x80AFB49C, __sinit_d_a_npc_the_cpp); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +// asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { +extern "C" asm void __dt__18daNpcF_ActorMngr_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__18daNpcF_ActorMngr_cFv.s" } @@ -2215,7 +3050,8 @@ asm daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() { +// asm daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() { +extern "C" asm void __ct__18daNpcF_ActorMngr_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__18daNpcF_ActorMngr_cFv.s" } @@ -2225,7 +3061,8 @@ asm daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_Lookat_c::~daNpcF_Lookat_c() { +// asm daNpcF_Lookat_c::~daNpcF_Lookat_c() { +extern "C" asm void __dt__15daNpcF_Lookat_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__15daNpcF_Lookat_cFv.s" } @@ -2235,14 +3072,16 @@ asm daNpcF_Lookat_c::~daNpcF_Lookat_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm csXyz::~csXyz() { +// asm csXyz::~csXyz() { +extern "C" asm void __dt__5csXyzFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__5csXyzFv.s" } #pragma pop /* 80AFB6E8-80AFB6EC 004108 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */ -csXyz::csXyz() { +// csXyz::csXyz() { +extern "C" void __ct__5csXyzFv() { /* empty function */ } @@ -2250,14 +3089,16 @@ csXyz::csXyz() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__4cXyzFv.s" } #pragma pop /* 80AFB728-80AFB72C 004148 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */ -cXyz::cXyz() { +// cXyz::cXyz() { +extern "C" void __ct__4cXyzFv() { /* empty function */ } @@ -2265,7 +3106,8 @@ cXyz::cXyz() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_c::~daNpcF_c() { +// asm daNpcF_c::~daNpcF_c() { +extern "C" asm void __dt__8daNpcF_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__8daNpcF_cFv.s" } @@ -2275,7 +3117,8 @@ asm daNpcF_c::~daNpcF_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcF_c::daNpcF_c() { +// asm daNpcF_c::daNpcF_c() { +extern "C" asm void __ct__8daNpcF_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__ct__8daNpcF_cFv.s" } @@ -2285,7 +3128,8 @@ asm daNpcF_c::daNpcF_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__12dBgS_AcchCirFv.s" } @@ -2295,7 +3139,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +// asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__10dCcD_GSttsFv.s" } @@ -2305,7 +3150,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__12dBgS_ObjAcchFv.s" } @@ -2315,7 +3161,8 @@ asm dBgS_ObjAcch::~dBgS_ObjAcch() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__12J3DFrameCtrlFv.s" } @@ -2335,7 +3182,8 @@ void daNpcF_c::drawOtherMdls() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +// asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__10cCcD_GSttsFv.s" } @@ -2345,7 +3193,8 @@ asm cCcD_GStts::~cCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daTag_EvtArea_c::chkPointInArea(cXyz param_0) { +// asm void daTag_EvtArea_c::chkPointInArea(cXyz param_0) { +extern "C" asm void chkPointInArea__15daTag_EvtArea_cF4cXyz() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/chkPointInArea__15daTag_EvtArea_cF4cXyz.s" } @@ -2360,7 +3209,8 @@ void daNpcThe_c::adjustShapeAngle() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daNpcThe_Param_c::~daNpcThe_Param_c() { +// asm daNpcThe_Param_c::~daNpcThe_Param_c() { +extern "C" asm void __dt__16daNpcThe_Param_cFv() { nofralloc #include "asm/rel/d/a/npc/d_a_npc_the/d_a_npc_the/__dt__16daNpcThe_Param_cFv.s" } diff --git a/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp b/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp index 442b155d0bc..c0225482a97 100644 --- a/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp +++ b/rel/d/a/obj/d_a_obj_stone/d_a_obj_stone.cpp @@ -1549,9 +1549,9 @@ void daObjStone_c::set_carry_eff() { cXyz pos; if (mStoneType == 1) { - pos.setAll(FLOAT_LABEL(lit_3845)); + pos.setall(FLOAT_LABEL(lit_3845)); } else { - pos.setAll(FLOAT_LABEL(lit_4634)); + pos.setall(FLOAT_LABEL(lit_4634)); } if (field_0x0950 == 3) { diff --git a/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp b/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp index 25c23576640..a8d5cc111c4 100644 --- a/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp +++ b/rel/d/a/obj/d_a_obj_volcball/d_a_obj_volcball.cpp @@ -974,7 +974,7 @@ void daObjVolcBall_c::setFallEffect(int i_ballNo) { cXyz sp28; if (i_ballNo == 8) { - sp28.setAll(field_0x291c); + sp28.setall(field_0x291c); } else { sp28 = ball->field_0x1c; } diff --git a/rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.cpp b/rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.cpp index 6bd43079b45..41b0d399890 100644 --- a/rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.cpp +++ b/rel/d/a/obj/d_a_obj_yobikusa/d_a_obj_yobikusa.cpp @@ -235,7 +235,7 @@ static int nodeCallBack(J3DJoint* i_jnt, int i_param) { if (jnt_no == 2) { cXyz scale; - scale.setAll(i_this->getJointScale(jnt_no)); + scale.setall(i_this->getJointScale(jnt_no)); mDoMtx_stack_c::scaleM(scale); } diff --git a/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.cpp b/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.cpp index dc14ce5f00d..cc16e91a4ff 100644 --- a/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.cpp +++ b/rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.cpp @@ -7,11 +7,6 @@ #include "d/a/d_a_npc.h" #include "d/d_procname.h" -s32 daTag_EvtArea_c::getType() { - u8 type = (u8)shape_angle.z; - return type == 0xff ? 0 : type; -} - u32 daTag_EvtArea_c::getOnEvtBit() { u32 ret = fopAcM_GetParam(this) & 0xfff; return ret == 0xfff ? -1 : ret; diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp index 3b30ada6a74..3cde9f420c5 100644 --- a/src/d/a/d_a_npc.cpp +++ b/src/d/a/d_a_npc.cpp @@ -12,6 +12,7 @@ #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_lib.h" #include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h" +#include "rel/d/a/tag/d_a_tag_evtarea/d_a_tag_evtarea.h" // // Forward References: @@ -772,60 +773,53 @@ s32 daNpcT_MotionSeqMngr_c::checkEndSequence() { } /* 80145A38-80145A78 140378 0040+00 2/2 0/0 0/0 .text daNpcT_addIdx__FiiRUsi */ -static int daNpcT_addIdx(int param_0, int param_1, u16& param_2, int param_3) { - int tmp = 0; - int tmp2 = param_2; - tmp2 += param_0; +static int daNpcT_addIdx(int i_delta, int i_num, u16& i_idx, int i_closed) { + int end = 0; + int new_idx = i_idx; + new_idx += i_delta; - if (param_1 <= tmp2) { - if (param_3) { - int tmp3 = tmp2 / param_1; - tmp2 -= (tmp3 * param_1); + if (i_num <= new_idx) { + if (i_closed) { + new_idx %= i_num; } else { - tmp2 = param_1 + -1; - tmp = 1; + new_idx = i_num + -1; + end = 1; } } - param_2 = tmp2; - return tmp; + i_idx = new_idx; + return end; } /* 80145A78-80145AC4 1403B8 004C+00 2/2 0/0 0/0 .text daNpcT_subIdx__FiiRUsi */ -static int daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) { - int tmp = 0; - int tmp2 = param_2; - tmp2 -= param_0; - - if (0 > tmp2) { - if (param_3) { - int tmp3 = tmp2 / param_1; - int tmp4 = tmp2 - tmp3 * param_1; - param_0 = param_1 + tmp4; - - int tmp5 = param_0 / param_1; - tmp2 = param_0 - (tmp5 * param_1); +static int daNpcT_subIdx(int i_delta, int i_num, u16& i_idx, int i_closed) { + int end = 0; + int new_idx = i_idx; + new_idx -= i_delta; + if (0 > new_idx) { + if (i_closed) { + new_idx = (i_num + new_idx % i_num) % i_num; } else { - tmp2 = 0; - tmp = 1; + new_idx = 0; + end = 1; } } - param_2 = tmp2; - return tmp; + i_idx = new_idx; + return end; } /* 80145AC4-80145B20 140404 005C+00 5/5 0/0 0/0 .text daNpcT_incIdx__FiRUsii */ -static int daNpcT_incIdx(int param_0, u16& param_1, int param_2, int param_3) { - return param_3 ? daNpcT_subIdx(1, param_0, param_1, param_2) : - daNpcT_addIdx(1, param_0, param_1, param_2); +static int daNpcT_incIdx(int i_num, u16& i_idx, int i_closed, int i_direction) { + return i_direction ? daNpcT_subIdx(1, i_num, i_idx, i_closed) : + daNpcT_addIdx(1, i_num, i_idx, i_closed); } /* 80145B20-80145B7C 140460 005C+00 3/3 0/0 0/0 .text daNpcT_decIdx__FiRUsii */ -static int daNpcT_decIdx(int param_0, u16& param_1, int param_2, int param_3) { - return param_3 ? daNpcT_addIdx(1, param_0, param_1, param_2) : - daNpcT_subIdx(1, param_0, param_1, param_2); +static int daNpcT_decIdx(int i_num, u16& i_idx, int i_closed, int i_direction) { + return i_direction ? daNpcT_addIdx(1, i_num, i_idx, i_closed) : + daNpcT_subIdx(1, i_num, i_idx, i_closed); } /* 80145B7C-80145C40 1404BC 00C4+00 1/1 0/0 0/0 .text @@ -983,60 +977,50 @@ SECTION_SDATA2 static f32 lit_4513 = 100.0f; */ // one instruction order swap, otherwise matches with literals #ifdef NONMATCHING -int daNpcT_Path_c::chkPassed1(cXyz param_0, int param_1) { - cXyz sp80; - cXyz sp74; - cXyz sp68; +int daNpcT_Path_c::chkPassed1(cXyz i_pnt, int i_num) { + cXyz prev_pos, cur_pos, next_pos; cXyz sp5C; - u16 temp_r30 = getIdx() & 0xFFFF; - u16 spA; - u16 sp8; + u16 cur_idx = getIdx() & 0xFFFF; + u16 prev_idx, next_idx; + prev_idx = next_idx = cur_idx; - sp8 = temp_r30; - spA = sp8; - - if (chkClose() && param_1 == getNumPnts()) { - daNpcT_decIdx(getNumPnts(), spA, 1, chkReverse()); - daNpcT_incIdx(getNumPnts(), sp8, 1, chkReverse()); + if (chkClose() && i_num == getNumPnts()) { + daNpcT_decIdx(getNumPnts(), prev_idx, 1, chkReverse()); + daNpcT_incIdx(getNumPnts(), next_idx, 1, chkReverse()); } else { - daNpcT_decIdx(param_1, spA, 0, chkReverse()); - daNpcT_incIdx(param_1, sp8, 0, chkReverse()); + daNpcT_decIdx(i_num, prev_idx, 0, chkReverse()); + daNpcT_incIdx(i_num, next_idx, 0, chkReverse()); } - sp80 = getPntPos(spA); - sp74 = getPntPos(temp_r30); - sp68 = getPntPos(sp8); + prev_pos = getPntPos(prev_idx); + cur_pos = getPntPos(cur_idx); + next_pos = getPntPos(next_idx); - if (spA == temp_r30) { + if (prev_idx == cur_idx) { sp5C.set(0.0f, 0.0f, 100.0f); - mDoMtx_stack_c::YrotS(cLib_targetAngleY(&sp68, &sp74)); + mDoMtx_stack_c::YrotS(cLib_targetAngleY(&next_pos, &cur_pos)); mDoMtx_stack_c::multVec(&sp5C, &sp5C); - sp80 = sp5C + sp74; + prev_pos = sp5C + cur_pos; } - if (temp_r30 == sp8) { + if (cur_idx == next_idx) { sp5C.set(0.0f, 0.0f, 100.0f); - mDoMtx_stack_c::YrotS(cLib_targetAngleY(&sp80, &sp74)); + mDoMtx_stack_c::YrotS(cLib_targetAngleY(&prev_pos, &cur_pos)); mDoMtx_stack_c::multVec(&sp5C, &sp5C); - sp68 = sp5C + sp74; + next_pos = sp5C + cur_pos; } - f32 sp1C; - f32 sp18; - f32 sp14; - f32 sp10; - f32 spC; - - if (cM3d_Len2dSqPntAndSegLine(param_0.x, param_0.z, sp80.x, sp80.z, sp68.x, sp68.z, &sp1C, - &sp14, &spC) && - cM3d_Len2dSqPntAndSegLine(sp74.x, sp74.z, sp80.x, sp80.z, sp68.x, sp68.z, &sp18, &sp10, - &spC)) + f32 proj_pnt_x, proj_cur_x, proj_pnt_z, proj_cur_z, spC; + if (cM3d_Len2dSqPntAndSegLine(i_pnt.x, i_pnt.z, prev_pos.x, prev_pos.z, + next_pos.x, next_pos.z, &proj_pnt_x, &proj_pnt_z, &spC) && + cM3d_Len2dSqPntAndSegLine(cur_pos.x, cur_pos.z, prev_pos.x, prev_pos.z, + next_pos.x, next_pos.z, &proj_cur_x, &proj_cur_z, &spC)) { - if (0x4000 < (u16)abs((s16)(cM_atan2s(sp68.x - sp80.x, sp68.z - sp80.z) - - cM_atan2s(sp18 - sp1C, sp10 - sp14)))) + if (0x4000 < (u16)abs((s16)(cM_atan2s(next_pos.x - prev_pos.x, next_pos.z - prev_pos.z) - + cM_atan2s(proj_cur_x - proj_pnt_x, proj_cur_z - proj_pnt_z)))) { return 1; } @@ -1646,10 +1630,10 @@ int daNpcT_c::setMcaMorfAnm(J3DAnmTransformKey* bck, f32 morf, f32 frame, int mo f32 start = startF; f32 end = endF; - mMcaMorfAnm[0]->setAnm(bck, mode, frame, morf, start, end); + mpMorf[0]->setAnm(bck, mode, frame, morf, start, end); - if (mMcaMorfAnm[1] != NULL) { - mMcaMorfAnm[1]->setAnm(bck, mode, frame, morf, start, end); + if (mpMorf[1] != NULL) { + mpMorf[1]->setAnm(bck, mode, frame, morf, start, end); } return 1; @@ -1793,7 +1777,7 @@ SECTION_SDATA2 static f32 lit_5794 = 20.0f; #ifdef NONMATCHING int daNpcT_c::draw(int param_0, int i_setEffMtx, f32 param_2, GXColorS10* i_color, f32 param_4, int i_drawGhost, int param_6, int param_7) { - J3DModel* model = mMcaMorfAnm[0]->getModel(); + J3DModel* model = mpMorf[0]->getModel(); J3DModelData* modelData = model->getModelData(); field_0xe34 = 1; @@ -1849,12 +1833,12 @@ int daNpcT_c::draw(int param_0, int i_setEffMtx, f32 param_2, GXColorS10* i_colo g_env_light.settingTevStruct(4, ¤t.pos, &tevStr); g_env_light.setLightTevColorType_MAJI(model, &tevStr); dComIfGd_setListDark(); - mMcaMorfAnm[0]->entryDL(); + mpMorf[0]->entryDL(); dComIfGd_setList(); } else { g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); g_env_light.setLightTevColorType_MAJI(model, &tevStr); - mMcaMorfAnm[0]->entryDL(); + mpMorf[0]->entryDL(); } if (field_0xd98 & 0x800) { @@ -1914,17 +1898,15 @@ void daNpcT_c::setRoomNo() { } /* 80148D10-80148DD0 143650 00C0+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFf */ -// this looks much better with -O2? something weird going on here #ifdef NONMATCHING -#pragma push -#pragma optimization_level 2 +// matches with literals int daNpcT_c::checkEndAnm(f32 param_0) { - switch (mMcaMorfAnm[0]->getPlayMode()) { + switch (mpMorf[0]->getPlayMode()) { case 2: - return mMcaMorfAnm[0]->isLoop(); + return mpMorf[0]->isLoop(); case 0: case 1: - return mMcaMorfAnm[0]->isStop() && cM3d_IsZero(mMcaMorfAnm[0]->getPlaySpeed()) && + return mpMorf[0]->isStop() && cM3d_IsZero(mpMorf[0]->getPlaySpeed()) && !cM3d_IsZero(param_0); case 3: case 4: @@ -1933,7 +1915,6 @@ int daNpcT_c::checkEndAnm(f32 param_0) { return 0; } -#pragma pop #else #pragma push #pragma optimization_level 0 @@ -1946,24 +1927,21 @@ asm int daNpcT_c::checkEndAnm(f32 param_0) { #endif /* 80148DD0-80148E4C 143710 007C+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFP12J3DFrameCtrlf */ -// weird mr #ifdef NONMATCHING -#pragma push -#pragma optimization_level 2 +// matches with literals int daNpcT_c::checkEndAnm(J3DFrameCtrl* param_0, f32 param_1) { switch (param_0->getAttribute()) { case 2: return param_0->checkState(2); case 0: case 1: - return (param_0->checkState(1) || param_0->getRate() == 0.0f) && param_1 != 0.0f; + return (param_0->checkState(1) && param_0->getRate() == 0.0f) && param_1 != 0.0f; case 3: break; } return 0; } -#pragma pop #else #pragma push #pragma optimization_level 0 @@ -2024,22 +2002,22 @@ void daNpcT_c::playAllAnm() { } if (field_0xd98 & 0x40) { - f32 morf_speed = mMcaMorfAnm[0]->getPlaySpeed(); + f32 morf_speed = mpMorf[0]->getPlaySpeed(); if (field_0xd98 & 0x1) { - mMcaMorfAnm[0]->setPlaySpeed(0.0f); - mMcaMorfAnm[0]->play(field_0xda8, field_0xe24); - mMcaMorfAnm[0]->setPlaySpeed(morf_speed); + mpMorf[0]->setPlaySpeed(0.0f); + mpMorf[0]->play(field_0xda8, field_0xe24); + mpMorf[0]->setPlaySpeed(morf_speed); - if (mMcaMorfAnm[1] != NULL) { - mMcaMorfAnm[1]->setPlaySpeed(0.0f); - mMcaMorfAnm[1]->play(0, 0); - mMcaMorfAnm[1]->setPlaySpeed(morf_speed); + if (mpMorf[1] != NULL) { + mpMorf[1]->setPlaySpeed(0.0f); + mpMorf[1]->play(0, 0); + mpMorf[1]->setPlaySpeed(morf_speed); } } else { - mMcaMorfAnm[0]->play(field_0xda8, field_0xe24); + mpMorf[0]->play(field_0xda8, field_0xe24); - if (mMcaMorfAnm[1] != NULL) { - mMcaMorfAnm[1]->play(0, 0); + if (mpMorf[1] != NULL) { + mpMorf[1]->play(0, 0); } if (checkEndAnm(morf_speed)) { @@ -2104,7 +2082,7 @@ asm void daNpcT_c::ctrlBtk() { /* 80149190-8014924C 143AD0 00BC+00 0/0 0/0 57/57 .text setMtx__8daNpcT_cFv */ void daNpcT_c::setMtx() { - J3DModel* model = mMcaMorfAnm[0]->getModel(); + J3DModel* model = mpMorf[0]->getModel(); J3DModelData* modelData = model->getModelData(); mDoMtx_stack_c::transS(current.pos); @@ -2114,16 +2092,16 @@ void daNpcT_c::setMtx() { model->setBaseTRMtx(mDoMtx_stack_c::get()); model->setUserArea((u32)this); - mMcaMorfAnm[0]->onMorfNone(); + mpMorf[0]->onMorfNone(); if (cM3d_IsZero(field_0xdfc) != 0) { - mMcaMorfAnm[0]->offMorfNone(); + mpMorf[0]->offMorfNone(); } if (field_0xd98 & 0x400) { mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame()); } - mMcaMorfAnm[0]->modelCalc(); + mpMorf[0]->modelCalc(); } /* 8014924C-80149300 143B8C 00B4+00 1/1 0/0 0/0 .text ctrlFaceMotion__8daNpcT_cFv */ @@ -2135,18 +2113,18 @@ void daNpcT_c::ctrlFaceMotion() { setFaceMotionAnm(l_int, true); if (l_float < FLOAT_LABEL(lit_4116)) { - mMcaMorfAnm[0]->setMorf(field_0xa80); + mpMorf[0]->setMorf(field_0xa80); field_0xdfc = field_0xa80; - if (mMcaMorfAnm[1]) { - mMcaMorfAnm[1]->setMorf(field_0xa80); + if (mpMorf[1]) { + mpMorf[1]->setMorf(field_0xa80); } } else { - mMcaMorfAnm[0]->setMorf(l_float); + mpMorf[0]->setMorf(l_float); field_0xdfc = l_float; - if (mMcaMorfAnm[1]) { - mMcaMorfAnm[1]->setMorf(l_float); + if (mpMorf[1]) { + mpMorf[1]->setMorf(l_float); } } } @@ -2172,12 +2150,12 @@ void daNpcT_c::ctrlMotion() { field_0xdfc = 0.0f; if (field_0xa88) { - mMcaMorfAnm[0]->setMorf(0.0f); + mpMorf[0]->setMorf(0.0f); field_0xdfc = 0.0f; - if (mMcaMorfAnm[1]) { - mMcaMorfAnm[1]->setMorf(0.0f); + if (mpMorf[1]) { + mpMorf[1]->setMorf(0.0f); } } } @@ -3615,14 +3593,14 @@ bool daBaseNpc_c::btkCtrl() { // weird condition mr #ifdef NONMATCHING int daBaseNpc_c::checkEndAnm(f32 param_0) { - switch (mMcaMorfAnm[0]->getPlayMode()) { + switch (mpMorf[0]->getPlayMode()) { case 2: - return mMcaMorfAnm[0]->isLoop(); + return mpMorf[0]->isLoop(); case 0: case 1: bool state = false; - if (mMcaMorfAnm[0]->isStop() && param_0 != mMcaMorfAnm[0]->getPlaySpeed()) { + if (mpMorf[0]->isStop() && param_0 != mpMorf[0]->getPlaySpeed()) { state = true; } return state; @@ -3694,7 +3672,7 @@ void daBaseNpc_c::adjustShapeAngle() { /* 8014F390-8014F4A0 149CD0 0110+00 2/0 0/0 1/0 .text setMtx__11daBaseNpc_cFi */ void daBaseNpc_c::setMtx(int param_0) { - J3DModel* model = mMcaMorfAnm[0]->getModel(); + J3DModel* model = mpMorf[0]->getModel(); ; J3DModelData* modelData = model->getModelData(); @@ -3718,7 +3696,7 @@ void daBaseNpc_c::setMtx(int param_0) { tmp++; } - mMcaMorfAnm[0]->modelCalc(); + mpMorf[0]->modelCalc(); u16 tmp2 = 0; @@ -3728,7 +3706,7 @@ void daBaseNpc_c::setMtx(int param_0) { } } else { - mMcaMorfAnm[0]->modelCalc(); + mpMorf[0]->modelCalc(); } } @@ -4573,7 +4551,7 @@ asm void daNpcF_Lookat_c::clrRotAngle() { BOOL daNpcF_c::execute() { setParam(); if (main()) { - fopAcM_posMoveF(this, mStts.GetCCMoveP()); + fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); mAcch.CrrPos(dComIfG_Bgsp()); field_0xa44 = mAcch.m_gnd; field_0x980 = mAcch.GetGroundH(); @@ -4582,7 +4560,7 @@ BOOL daNpcF_c::execute() { setEnvTevColor(); setRoomNo(); field_0x9b0 = dKy_pol_sound_get(&mAcch.m_gnd); - field_0x9e8 = dComIfGp_getReverb(mStts.GetRoomId()); + field_0x9e8 = dComIfGp_getReverb(mCcStts.GetRoomId()); if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > field_0x980) { field_0x9b0 = dKy_pol_sound_get(&mAcch.m_wtr); } @@ -4593,7 +4571,7 @@ BOOL daNpcF_c::execute() { setAttnPos(); cLib_chaseF(&field_0x978, 0.0f, 1.0f); setCollisions(); - if (field_0x9f4 != 0) { + if (mTwilight != 0) { attention_info.flags |= 0x400000; attention_info.flags |= 0x800000; setHitodamaPrtcl(); @@ -4602,14 +4580,14 @@ BOOL daNpcF_c::execute() { field_0x930 = 0; field_0x9e9 = 0; field_0x9ed = 0; - field_0x9eb = 0; + field_0x9eb = false; field_0x9ef = 0; field_0x9f3 = 0; for (int i = 0; i < 5; i++) { - if ((field_0x938 == 0 || field_0x934 != i) && field_0x93c[i] != 0 && - cLib_calcTimer(&field_0x93c[i]) == 0) + if ((mAttnChangeTimer == 0 || mAttnIdx != i) && mAttnActorTimer[i] != 0 && + cLib_calcTimer(&mAttnActorTimer[i]) == 0) { - field_0x82c[i].remove(); + mAttnActor[i].remove(); } } if (field_0x954 != 0) { @@ -4633,7 +4611,7 @@ asm BOOL daNpcF_c::execute() { // literals BOOL daNpcF_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3, int param_4) { f32 fVar1, frame; - J3DModel* model = mMcaMorf->getModel(); + J3DModel* model = mpMorf->getModel(); J3DModelData* modelData = model->getModelData(); field_0x9f3 = 1; @@ -4659,7 +4637,7 @@ BOOL daNpcF_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3, tevStr.mFogColor.r = 0; } - if (field_0x9f4) { + if (mTwilight) { g_env_light.settingTevStruct(4, ¤t.pos, &tevStr); } else { g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); @@ -4683,12 +4661,12 @@ BOOL daNpcF_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3, fopAcM_setEffectMtx(this, modelData); } - if (field_0x9f4) { + if (mTwilight) { dComIfGd_setListDark(); - mMcaMorf->entryDL(); + mpMorf->entryDL(); dComIfGd_setList(); } else { - mMcaMorf->entryDL(); + mpMorf->entryDL(); } if (mAnmFlags & ANM_PLAY_BTP) { @@ -4741,54 +4719,157 @@ fopAc_ac_c* daNpcF_c::mFindActorPList[100]; s32 daNpcF_c::mFindCount; /* 80152654-801526E8 14CF94 0094+00 0/0 0/0 12/12 .text srchAttnActor1__8daNpcF_cFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::srchAttnActor1(void* param_0, void* param_1) { - nofralloc -#include "asm/d/a/d_a_npc/srchAttnActor1__8daNpcF_cFPvPv.s" +void* daNpcF_c::srchAttnActor1(void* i_proc, void* param_1) { + if (mFindCount < 100 && fopAcM_IsActor(i_proc) + && (fopAcM_GetName(i_proc) == PROC_NI || fopAcM_GetName(i_proc) == PROC_COW + || fopAcM_GetName(i_proc) == PROC_NPC_NE || fopAcM_GetName(i_proc) == PROC_DO + || fopAcM_GetName(i_proc) == PROC_SQ || fopAcM_GetName(i_proc) == PROC_BD)) + { + mFindActorPList[mFindCount] = static_cast(i_proc); + mFindCount++; + } + return NULL; } -#pragma pop /* ############################################################################################## */ /* 80450FF4-80450FF8 0004F4 0002+02 2/2 0/0 0/0 .sbss mSrchActorName__8daNpcF_c */ s16 daNpcF_c::mSrchActorName; /* 801526E8-8015276C 14D028 0084+00 1/1 0/0 0/0 .text srchActor__8daNpcF_cFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* daNpcF_c::srchActor(void* param_0, void* param_1) { - nofralloc -#include "asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s" +void* daNpcF_c::srchActor(void* i_proc, void* i_this) { + if (mFindCount < 100 && fopAc_IsActor(i_proc) && i_proc != i_this + && mSrchActorName == fopAcM_GetName(i_proc)) + { + mFindActorPList[mFindCount] = static_cast(i_proc); + mFindCount++; + } + return NULL; } -#pragma pop /* 8015276C-801527FC 14D0AC 0090+00 2/0 0/0 40/9 .text setMtx__8daNpcF_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::setMtx() { - nofralloc -#include "asm/d/a/d_a_npc/setMtx__8daNpcF_cFv.s" +void daNpcF_c::setMtx() { + J3DModel* model = mpMorf->getModel(); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x8f0); + mDoMtx_stack_c::scaleM(scale); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + model->setUserArea((u32)this); + if (mAnmFlags & 0x100) { + mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame()); + mpMorf->modelCalc(); + } else { + mpMorf->modelCalc(); + } } -#pragma pop /* 801527FC-801528C8 14D13C 00CC+00 2/0 0/0 38/0 .text setMtx2__8daNpcF_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::setMtx2() { - nofralloc -#include "asm/d/a/d_a_npc/setMtx2__8daNpcF_cFv.s" +void daNpcF_c::setMtx2() { + J3DModel* model = mpMorf->getModel(); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x8f0); + mDoMtx_stack_c::scaleM(scale); + model->setBaseTRMtx(mDoMtx_stack_c::get()); + model->setUserArea((u32)this); + if (cM3d_IsZero_inverted(mExpressionMorf)) { + mpMorf->onMorfNone(); + } else { + mpMorf->offMorfNone(); + } + if (mAnmFlags & 0x100) { + mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame()); + mpMorf->modelCalc(); + } else { + mpMorf->modelCalc(); + } } -#pragma pop /* ############################################################################################## */ /* 804534A0-804534A4 001AA0 0004+00 1/1 0/0 0/0 .sdata2 @10745 */ SECTION_SDATA2 static f32 lit_10745 = 65536.0f; /* 801528C8-80152B2C 14D208 0264+00 0/0 0/0 76/76 .text initialize__8daNpcF_cFv */ +#ifdef NONMATCHING +// matches with literals +void daNpcF_c::initialize() { + field_0x824.remove(); + for (int i = 0; i < 5; i++) { + mAttnActor[i].remove(); + } + for (int i = 0; i < 3; i++) { + mLookatPos[i].setall(0.0f); + } + mLookPos.setall(0.0f); + field_0x884.setall(0.0f); + field_0x890.setall(0.0f); + field_0x89c.setall(0.0f); + field_0x8a8.setall(0.0f); + mHeadPos.setall(0.0f); + field_0x8f0.setall(0); + field_0x8f6.setall(0); + mEyeAngle.setall(0); + mHeadAngle.setall(0); + for (int i = 0; i < 3; i++) { + field_0x908[i].setall(0); + field_0x91a[i].setall(0); + } + mCutIndex = -1; + field_0x930 = 0; + mAttnIdx = 0; + mAttnChangeTimer = 0; + for (int i = 0; i < 5; i++) { + mAttnActorTimer[i] = 0; + } + field_0x950 = 0; + field_0x954 = 0; + field_0x958 = 0; + field_0x95c = 0; + field_0x960 = 0; + field_0x964 = 0; + field_0x968 = 0; + field_0x96c = 0; + field_0x970 = 0.0f; + mExpressionMorfOverride = 0.0f; + mMotionMorfOverride = 0.0f; + field_0x980 = 0.0f; + for (int i = 0; i < 3; i++) { + field_0x984[i] = 0.0f; + } + field_0x990 = 0; + field_0x992 = 0; + field_0x994 = 0; + field_0x996 = 0; + field_0x998 = 0; + mAnmFlags = 0; + field_0x9a0 = 0; + field_0x9a4 = -1; + mHitodamaParticleKey[0] = -1; + mHitodamaParticleKey[1] = -1; + mEventIdx = -1; + mExpressionPhase = 0; + mExpressionPrevPhase = 0; + mMotionPhase = 0; + mMotionPrevPhase = 0; + mExpression = -1; + mMotion = -1; + mMotionLoops = 0; + mExpressionLoops = 0; + mOrderEvtNo = 0; + field_0x9e9 = 0; + field_0x9ea = 0; + field_0x9eb = false; + field_0x9ec = 0; + field_0x9ed = false; + field_0x9ee = false; + field_0x9ef = 0; + field_0x9f0 = 0; + field_0x9f1 = 0; + mHide = false; + field_0x9f3 = 0; + field_0x9f5 = 1; + field_0x9f6 = 1; + field_0x9d2 = cM_rndF(0x10000); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4797,6 +4878,7 @@ asm void daNpcF_c::initialize() { #include "asm/d/a/d_a_npc/initialize__8daNpcF_cFv.s" } #pragma pop +#endif /* 80152B2C-80152B68 14D46C 003C+00 0/0 0/0 69/69 .text getTrnsfrmKeyAnmP__8daNpcF_cFPci */ @@ -4826,7 +4908,7 @@ J3DAnmTevRegKey* daNpcF_c::getTevRegKeyAnmP(char* arcName, int fileIdx) { // literals BOOL daNpcF_c::setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr, int i_start, int i_end) { - mMcaMorf->setAnm(i_anm, i_attr, i_morf, i_rate, (f32)i_start, (f32)i_end); + mpMorf->setAnm(i_anm, i_attr, i_morf, i_rate, (f32)i_start, (f32)i_end); return true; } #else @@ -4870,42 +4952,28 @@ BOOL daNpcF_c::setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 } /* 80152D84-80152DE0 14D6C4 005C+00 1/1 0/0 40/40 .text setEnvTevColor__8daNpcF_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::setEnvTevColor() { - nofralloc -#include "asm/d/a/d_a_npc/setEnvTevColor__8daNpcF_cFv.s" +void daNpcF_c::setEnvTevColor() { + tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(field_0xa44); + tevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(field_0xa44); } -#pragma pop /* 80152DE0-80152E24 14D720 0044+00 1/1 0/0 40/40 .text setRoomNo__8daNpcF_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::setRoomNo() { - nofralloc -#include "asm/d/a/d_a_npc/setRoomNo__8daNpcF_cFv.s" +void daNpcF_c::setRoomNo() { + int room_id = dComIfG_Bgsp().GetRoomId(field_0xa44); + fopAcM_SetRoomNo(this, room_id); + mCcStts.SetRoomId(room_id); } -#pragma pop /* 80152E24-80152EC4 14D764 00A0+00 1/1 0/0 0/0 .text chkEndAnm__8daNpcF_cFf */ #ifdef NONMATCHING +// matches with literals BOOL daNpcF_c::chkEndAnm(f32 param_0) { - switch (mMcaMorf->getPlayMode()) { + switch (mpMorf->getPlayMode()) { case 2: - return mMcaMorf->isLoop(); + return mpMorf->isLoop(); case 0: case 1: - bool b = false; - bool ret = false; - if (mMcaMorf->isStop() && mMcaMorf->getPlaySpeed() == 0.0f) { - b = true; - } - if (b && param_0 != 0.0f) { - ret = true; - } - return ret; + return mpMorf->isStop() && mpMorf->getPlaySpeed() == 0.0f && param_0 != 0.0f; case 3: default: return false; @@ -4931,21 +4999,14 @@ asm BOOL daNpcF_c::chkEndAnm(f32 param_0) { * `false` if the animation is two-way (attribute 3 or 4). */ #ifdef NONMATCHING +// matches with literals BOOL daNpcF_c::chkEndAnm(J3DFrameCtrl* frameCtrl, f32 prevRate) { switch (frameCtrl->getAttribute()) { case 2: - return (frameCtrl->getState() >> 1) & 1; + return frameCtrl->checkState(2); case 0: case 1: - bool b = false; - bool ret = false; - if (frameCtrl->getState() & 1 && frameCtrl->getRate() == 0.0f) { - b = true; - } - if (b && prevRate != 0.0f) { - ret = true; - } - return ret; + return frameCtrl->checkState(1) && frameCtrl->getRate() == 0.0f && prevRate != 0.0f; case 3: default: return false; @@ -5000,13 +5061,13 @@ BOOL daNpcF_c::playAllAnm() { } } if (mAnmFlags & ANM_PLAY_MORF) { - rate = mMcaMorf->getPlaySpeed(); + rate = mpMorf->getPlaySpeed(); if (mAnmFlags & ANM_PAUSE_MORF) { - mMcaMorf->setPlaySpeed(0.0f); - mMcaMorf->play(field_0x9b0, field_0x9e8); - mMcaMorf->setPlaySpeed(rate); + mpMorf->setPlaySpeed(0.0f); + mpMorf->play(field_0x9b0, field_0x9e8); + mpMorf->setPlaySpeed(rate); } else { - mMcaMorf->play(field_0x9b0, field_0x9e8); + mpMorf->play(field_0x9b0, field_0x9e8); if (chkEndAnm(rate)) { motionLoops++; } @@ -5054,6 +5115,7 @@ asm BOOL daNpcF_c::playAllAnm() { * before moving on to the next phase (or 0 for the last phase). */ #ifdef NONMATCHING +// regalloc void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) { daNpcF_anmPlayData* playData = NULL; if (anm[mExpression] != NULL) { @@ -5073,7 +5135,7 @@ void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) { morf = mExpressionMorfOverride; } mExpressionMorf = morf; - mMcaMorf->setMorf(morf); + mpMorf->setMorf(morf); } } mExpressionPrevPhase = mExpressionPhase; @@ -5099,6 +5161,7 @@ asm void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** param_0) { * before moving on to the next phase (or 0 for the last phase). */ #ifdef NONMATCHING +// regalloc void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) { daNpcF_anmPlayData* playData = NULL; if (anm[mMotion] != NULL) { @@ -5106,7 +5169,7 @@ void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) { } if (playData != NULL) { if (mMotionPrevPhase == mMotionPhase && playData->numLoops > 0 && - playData->numLoops <= motionLoops) + playData->numLoops <= mMotionLoops) { mMotionPhase++; playData = anm[mMotion][mMotionPhase]; @@ -5118,7 +5181,7 @@ void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) { morf = mMotionMorfOverride; } mExpressionMorf = 0.0f; - mMcaMorf->setMorf(morf); + mpMorf->setMorf(morf); } } mMotionPrevPhase = mMotionPhase; @@ -5136,7 +5199,7 @@ asm void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** param_0) { /* 8015337C-80153578 14DCBC 01FC+00 0/0 0/0 34/34 .text setLookatMtx__8daNpcF_cFiPif */ /** - * Compute the animation matrix for one of the "lookat" joints (lower body, upper body, head). + * Compute the animation matrix for one of the "lookat" joints (backbone, neck, head). * This matrix is applied to the matrix in `mDoMtx_stack_c::now`. * @param jointNo The index of the joint in question. * @param jointList An array of the three indices of the joints for the lower body, the upper body, @@ -5154,7 +5217,7 @@ void daNpcF_c::setLookatMtx(int jointNo, int* jointList, f32 param_2) { field_0x91a[1].y = (s16)((f32)field_0x91a[2].y * param_2); field_0x91a[1].z = (s16)((f32)field_0x91a[2].z * param_2); - cMtx_copy(mDoMtx_stack_c::get(), baseMtx); + MTXCopy(mDoMtx_stack_c::get(), baseMtx); pos.set(baseMtx[0][3], baseMtx[1][3], baseMtx[2][3]); baseMtx[0][3] = baseMtx[1][3] = baseMtx[2][3] = 0.0f; @@ -5167,7 +5230,7 @@ void daNpcF_c::setLookatMtx(int jointNo, int* jointList, f32 param_2) { } } mDoMtx_stack_c::inverse(); - cMtx_copy(mDoMtx_stack_c::get(), invParentMtx); + MTXCopy(mDoMtx_stack_c::get(), invParentMtx); mDoMtx_stack_c::transS(pos); mDoMtx_stack_c::XYZrotM(field_0x8f0); @@ -5233,12 +5296,12 @@ int daNpcF_c::ctrlMsgAnm(int& expression, int& motion, fopAc_ac_c* param_2, int if (talkPartner == param_2) { fopAc_ac_c* actor = dMsgObject_c::getActor(); if (actor->eventInfo.mCommand == 2 || actor->eventInfo.mCommand == 3) { - field_0x9a4 = (profile_method_class*)-1; + field_0x9a4 = -1; } else if (actor->eventInfo.mCommand == 6) { - if (actor->sub_method != field_0x9a4) { + if ((u32)actor->sub_method != field_0x9a4) { expression = dComIfGp_getMesgFaceAnimeAttrInfo(); motion = dComIfGp_getMesgAnimeAttrInfo(); - field_0x9a4 = actor->sub_method; + field_0x9a4 = (u32)actor->sub_method; } if (dMsgObject_c::isMouthCheck()) { mAnmFlags &= ~ANM_PAUSE_EXPRESSION; @@ -5250,10 +5313,10 @@ int daNpcF_c::ctrlMsgAnm(int& expression, int& motion, fopAc_ac_c* param_2, int if (mAnmFlags & ANM_PAUSE_EXPRESSION) { mAnmFlags &= ~ANM_PAUSE_EXPRESSION; } - field_0x9a4 = (profile_method_class*)-1; + field_0x9a4 = -1; } } else { - field_0x9a4 = (profile_method_class*)-1; + field_0x9a4 = -1; if (field_0x950 != 0) { field_0x950 = 1; } @@ -5277,29 +5340,44 @@ asm int daNpcF_c::ctrlMsgAnm(int& param_0, int& param_1, fopAc_ac_c* param_2, in /* 8015387C-80153954 14E1BC 00D8+00 0/0 0/0 45/45 .text orderEvent__8daNpcF_cFiPcUsUsUcUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::orderEvent(int param_0, char* param_1, u16 param_2, u16 param_3, u8 param_4, - u16 param_5) { - nofralloc -#include "asm/d/a/d_a_npc/orderEvent__8daNpcF_cFiPcUsUsUcUs.s" +void daNpcF_c::orderEvent(int param_0, char* i_evtName, u16 param_2, u16 i_priority, u8 i_mapToolID, + u16 i_flag) { + if (i_evtName != NULL) { + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, i_evtName, 0xff); + fopAcM_orderOtherEventId(this, mEventIdx, i_mapToolID, param_2, i_priority, i_flag); + } else if (!mTwilight || daPy_py_c::checkNowWolfEyeUp()) { + if ((attention_info.flags & 8) || (attention_info.flags & 2)) { + eventInfo.i_onCondition(1); + if (param_0) { + fopAcM_orderSpeakEvent(this, 0, 0); + } + } + } } -#pragma pop /* 80153954-801539F0 14E294 009C+00 0/0 0/0 31/31 .text changeEvent__8daNpcF_cFPcPcUsUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::changeEvent(char* param_0, char* param_1, u16 param_2, u16 param_3) { - nofralloc -#include "asm/d/a/d_a_npc/changeEvent__8daNpcF_cFPcPcUsUs.s" +void daNpcF_c::changeEvent(char* i_arcName, char* i_evtName, u16 param_2, u16 param_3) { + if (i_arcName != NULL) { + eventInfo.setArchiveName(i_arcName); + dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName()); + } + mEventIdx = dComIfGp_getEventManager().getEventIdx(this, i_evtName, 0xff); + dComIfGp_getEvent().reset(this); + fopAcM_orderChangeEventId(this, mEventIdx, param_2, param_3); } -#pragma pop /* 801539F0-80153A78 14E330 0088+00 0/0 0/0 21/21 .text chkActorInSight__8daNpcF_cFP10fopAc_ac_cf */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcF_c::chkActorInSight(fopAc_ac_c* i_actor, f32 i_maxAngle) { + s16 tmp = mHeadAngle.y; + s16 angle = fopAcM_searchActorAngleY(this, i_actor) - tmp; + s16 abs_angle = abs(angle); + return i_maxAngle == 180.0f || abs_angle < cM_deg2s(i_maxAngle); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -5308,6 +5386,7 @@ asm BOOL daNpcF_c::chkActorInSight(fopAc_ac_c* param_0, f32 param_1) { #include "asm/d/a/d_a_npc/chkActorInSight__8daNpcF_cFP10fopAc_ac_cf.s" } #pragma pop +#endif /* 80153A78-80153BDC 14E3B8 0164+00 1/1 0/0 0/0 .text * chkActorInArea__8daNpcF_cFP10fopAc_ac_c4cXyz4cXyzs */ @@ -5394,8 +5473,8 @@ asm BOOL daNpcF_c::chkActorInAttnArea(fopAc_ac_c* actorCheck, fopAc_ac_c* actorA #endif /* 80153D1C-80153D84 14E65C 0068+00 0/0 0/0 118/118 .text initTalk__8daNpcF_cFiPP10fopAc_ac_c */ -int daNpcF_c::initTalk(int param_0, fopAc_ac_c** param_1) { - mFlow.init(this, param_0, 0, param_1); +int daNpcF_c::initTalk(int i_flowID, fopAc_ac_c** param_1) { + mFlow.init(this, i_flowID, 0, param_1); f32 tmp = FLOAT_LABEL(lit_4116); speedF = tmp; speed.set(tmp, tmp, tmp); @@ -5405,6 +5484,41 @@ int daNpcF_c::initTalk(int param_0, fopAc_ac_c** param_1) { } /* 80153D84-80153EF4 14E6C4 0170+00 0/0 0/0 119/119 .text talkProc__8daNpcF_cFPiiPP10fopAc_ac_c */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcF_c::talkProc(int* param_0, BOOL param_1, fopAc_ac_c** i_actorP) { + BOOL ret = false; + int i1, motion, expression, i2; + motion = -1; + expression = -1; + if (dMsgObject_c::isMsgSendControl()) { + if (param_1) { + dMsgObject_c::offMsgSendControl(); + } + } else if (mFlow.doFlow(this, i_actorP, 0)) { + ret = true; + } else { + if (mFlow.getMsg() != NULL && (mFlow.getMsg()->mMode == 2 || mFlow.getMsg()->mMode == 6) + && param_0 != NULL) { + for (int i = 0; param_0[i] > 0; i++) { + if (param_0[i] == mFlow.getMsgNo()) { + ret = true; + break; + } + } + } + if (mFlow.checkEventRender(&i1, &motion, &expression, &i2)) { + if (expression != -1) { + setExpression(expression, -1.0f); + } + if (motion != -1) { + setMotion(motion, -1.0f, false); + } + } + } + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -5413,6 +5527,7 @@ asm BOOL daNpcF_c::talkProc(int* param_0, int param_1, fopAc_ac_c** param_2) { #include "asm/d/a/d_a_npc/talkProc__8daNpcF_cFPiiPP10fopAc_ac_c.s" } #pragma pop +#endif /* 80153EF4-801540A4 14E834 01B0+00 1/1 0/0 55/55 .text turn__8daNpcF_cFsfi */ #pragma push @@ -5428,7 +5543,7 @@ asm BOOL daNpcF_c::turn(s16 param_0, f32 param_1, int param_2) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_c::step(s16 param_0, int param_1, int param_2, int param_3) { +asm BOOL daNpcF_c::step(s16 param_0, int param_1, int param_2, int param_3) { nofralloc #include "asm/d/a/d_a_npc/step__8daNpcF_cFsiii.s" } @@ -5453,18 +5568,20 @@ u8 daNpcF_c::getDistTableIdx(int param_0, int param_1) { /* 801542A0-8015436C 14EBE0 00CC+00 0/0 0/0 6/6 .text getEvtAreaTagP__8daNpcF_cFii */ #ifdef NONMATCHING -fopAc_ac_c* daNpcF_c::getEvtAreaTagP(int param_0, int param_1) { +// regalloc +fopAc_ac_c* daNpcF_c::getEvtAreaTagP(int i_type, int i_no) { mFindCount = 0; mSrchActorName = PROC_TAG_EVTAREA; - fpcM_Search((fpcLyIt_JudgeFunc)this->srchActor, (void*)this); + fpcM_Search(this->srchActor, this); - for (int i = 0; mFindCount >= 0; mFindCount--) { - if (param_0 == mFindActorPList[i] && param_1 == mFindActorPList[i]) { - return mFindActorPList[i]; + for (int i = 0; i < mFindCount; i++) { + daTag_EvtArea_c* evt_area = static_cast(mFindActorPList[i]); + if (i_type == evt_area->getType() && i_no == evt_area->getNo()) { + return evt_area; } } - return 0; + return NULL; } #else #pragma push @@ -5484,7 +5601,7 @@ SECTION_SDATA2 static f32 lit_11605 = 450.0f; /* 8015436C-80154730 14ECAC 03C4+00 0/0 0/0 12/12 .text getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii */ #ifdef NONMATCHING -fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), f32 param_2, +fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, fpcLyIt_JudgeFunc param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, s16 param_6, int param_7, int param_8) { fopAc_ac_c* actor = NULL; @@ -5492,21 +5609,21 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), int rnd2 = param_7 + (int)((cM_rnd() - 0.5f) * param_7); int r28 = 0; f32 minDistance = 1000000000.0f; - if (field_0x938) { + if (mAttnChangeTimer != 0) { daPy_py_c* player = daPy_getPlayerActorClass(); fopAcM_SearchByID(player->getGrabActorID(), &actor); - if (field_0x82c[field_0x934].getActorP() != actor) { - func_8014D348(&field_0x938); + if (mAttnActor[mAttnIdx].getActorP() != actor) { + cLib_calcTimer(&mAttnChangeTimer); } - actor = field_0x82c[field_0x934].getActorP(); + actor = mAttnActor[mAttnIdx].getActorP(); } if (actor == NULL) { - field_0x938 = 0; + mAttnChangeTimer = 0; if (param_0) { param_2 = fopAcM_searchActorDistanceXZ(this, daPy_getPlayerActorClass()); } mFindCount = 0; - fpcEx_Search((fpcLyIt_JudgeFunc)param_1, this); + fpcEx_Search(param_1, this); for (int i = 0; i < mFindCount; i++) { if (chkPointInArea(getAttentionPos(mFindActorPList[i]), attention_info.position, param_2, param_3, param_4, 0) && @@ -5514,8 +5631,9 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), { int j; for (j = 0; j < 5; j++) { - // !@Bug I think field_0x93c index should be j - if (mFindActorPList[i] == field_0x82c[j].getActorP() && field_0x93c[i] != 0) { + // !@Bug I think mAttnActorTimer index should be j + if (mFindActorPList[i] == mAttnActor[j].getActorP() && mAttnActorTimer[i] != 0) + { break; } } @@ -5537,28 +5655,27 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), } if (actor != NULL) { int minInd, j; - ; int dist3 = 900; minInd = 0; for (j = 0; j < 5; j++) { - if (field_0x93c[j] < dist3) { - dist3 = field_0x93c[j]; + if (mAttnActorTimer[j] < dist3) { + dist3 = mAttnActorTimer[j]; minInd = j; } } - field_0x82c[minInd].entry(actor); + mAttnActor[minInd].entry(actor); if (param_8) { - field_0x93c[minInd] = r28 != 1 ? 0 : rnd; + mAttnActorTimer[minInd] = r28 == 1 ? 0 : rnd; } else { - field_0x93c[minInd] = 0; + mAttnActorTimer[minInd] = 0; } - field_0x938 = (r28 != 1) ? rnd2 : 30; - field_0x934 = minInd; + mAttnChangeTimer = (r28 != 1) ? rnd2 : 30; + mAttnIdx = minInd; } } if (actor == NULL) { - field_0x938 = 0; + mAttnChangeTimer = 0; } return actor; } @@ -5566,7 +5683,7 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), f32 param_2, +asm fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, fpcLyIt_JudgeFunc param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, s16 param_6, int param_7, int param_8) { nofralloc @@ -5587,8 +5704,8 @@ asm BOOL daNpcF_c::chkActorInSight2(fopAc_ac_c* param_0, f32 param_1, s16 param_ #pragma pop /* 80154834-801548F4 14F174 00C0+00 2/2 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs */ -// literal load order #ifdef NONMATCHING +// matches with literals BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4, s16 param_5) { cXyz tmp_pos1; @@ -5601,14 +5718,9 @@ BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param param_3 = param_4; } - f32 res = fabsf(param_3 - tmp_float1) * 0.5f; - tmp_pos1.x = param_2; - tmp_pos1.y = res; - tmp_pos1.z = param_2; + tmp_pos1.set(param_2, fabsf(param_3 - tmp_float1) / 2, param_2); - tmp_pos2.x = param_1.x; - tmp_pos2.y = param_1.y; - tmp_pos2.z = param_1.z; + tmp_pos2 = param_1; tmp_pos2.y += tmp_float1; tmp_pos2.y += tmp_pos1.y; @@ -5644,14 +5756,46 @@ cXyz daNpcF_c::getAttentionPos(fopAc_ac_c* i_ActorP) { } /* 801549E0-80154BD8 14F320 01F8+00 0/0 0/0 18/18 .text chkFindPlayer2__8daNpcF_cFis */ +#ifdef NONMATCHING +// matches with literals +BOOL daNpcF_c::chkFindPlayer2(BOOL param_0, s16 param_1) { + cXyz attn_pos = getAttentionPos(daPy_getPlayerActorClass()); + int attn_no = param_0 == false ? mAttentionInfo.field_0x0[3] : mAttentionInfo.field_0x0[1]; + f32 fvar2 = param_0 == false ? dAttention_c::getDistTable(attn_no).field_0x0 + : dAttention_c::getDistTable(attn_no).field_0x4; + f32 fvar3 = dAttention_c::getDistTable(attn_no).field_0x10 * -1.0f; + f32 fvar4 = dAttention_c::getDistTable(attn_no).field_0xc * -1.0f; + u32 uvar7 = dAttention_c::getDistTable(attn_no).field_0x18; + f32 fvar5 = 180.0f; + if (uvar7 & 8) { + fvar5 = 30.0f; + } else if (uvar7 & 0x10) { + fvar5 = 45.0f; + } else if (uvar7 & 0x20) { + fvar5 = 60.0f; + } else if (uvar7 & 0x40) { + fvar5 = 90.0f; + } else if (uvar7 & 0x80) { + fvar5 = 110.0f; + } else if (uvar7 & 0x100) { + fvar5 = 135.0f; + } + if (chkPointInArea(attn_pos, mAttentionInfo.mPosition, fvar2, fvar3, fvar4, 0) + && chkActorInSight2(daPy_getPlayerActorClass(), fvar5, param_1)) { + return true; + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_c::chkFindPlayer2(int param_0, s16 param_1) { +asm BOOL daNpcF_c::chkFindPlayer2(int param_0, s16 param_1) { nofralloc #include "asm/d/a/d_a_npc/chkFindPlayer2__8daNpcF_cFis.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804534B4-804534B8 001AB4 0004+00 1/1 0/0 0/0 .sdata2 id$11798 */ @@ -5661,35 +5805,36 @@ SECTION_SDATA2 static u16 id_11798[2] = { }; /* 80154BD8-80154DA8 14F518 01D0+00 1/1 0/0 0/0 .text setHitodamaPrtcl__8daNpcF_cFv */ -// field_0x9d2 is weird #ifdef NONMATCHING +// matches with literals void daNpcF_c::setHitodamaPrtcl() { - u8 uVar3; - cXyz local_20; + cXyz pos; - field_0x9d0 = (2 * ((u16)field_0x9d2)); - field_0x9b8.x = cM_ssin(((u16)field_0x9d2)) * 8.0f; + field_0x9d0 = (u16)(field_0x9d2 * 2); + field_0x9b8.x = cM_ssin(field_0x9d2) * 8.0f; field_0x9b8.y = cM_ssin(field_0x9d0) * 4.0f; field_0x9b8.z = field_0x9b8.x * -cM_ssin(shape_angle.y); field_0x9b8.x *= cM_scos(shape_angle.y); field_0x9d2 += 0x400; - local_20.x = eyePos.x + field_0x9b8.x + field_0x9c4.x; - local_20.y = eyePos.y + field_0x9b8.y + field_0x9c4.y; - local_20.z = eyePos.z + field_0x9b8.z + field_0x9c4.z; + pos.x = eyePos.x + field_0x9b8.x + field_0x9c4.x; + pos.y = eyePos.y + field_0x9b8.y + field_0x9c4.y; + pos.z = eyePos.z + field_0x9b8.z + field_0x9c4.z; for (int i = 0; i < 2; i++) { - field_0x9a8[i] = - dComIfGp_particle_set(field_0x9a8[i], id_11798[i], &local_20, &field_0x8f0, NULL); - JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x9a8[i]); + static u16 id[2] = {0x8497, 0x8498}; + mHitodamaParticleKey[i] = + dComIfGp_particle_set(mHitodamaParticleKey[i], id[i], &pos, &field_0x8f0, NULL); + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mHitodamaParticleKey[i]); if (emitter != NULL) { + u8 alpha; if (dComIfGs_wolfeye_effect_check() == 0) { - uVar3 = 0xff; + alpha = 0xff; } else { - uVar3 = 0; + alpha = 0; } - emitter->setGlobalTranslation(local_20.x, local_20.y, local_20.z); - emitter->setGlobalAlpha(uVar3); + emitter->setGlobalTranslation(pos.x, pos.y, pos.z); + emitter->setGlobalAlpha(alpha); } } } diff --git a/src/d/a/d_a_obj_item.cpp b/src/d/a/d_a_obj_item.cpp index 3d9c3eca3de..169e703d54f 100644 --- a/src/d/a/d_a_obj_item.cpp +++ b/src/d/a/d_a_obj_item.cpp @@ -578,7 +578,7 @@ void daItem_c::CreateInit() { procInitNormal(); show(); - field_0x930.setAll(1.0f); + field_0x930.setall(1.0f); switch (daItem_prm::getType(this)) { case 5: diff --git a/src/d/event/d_event_data.cpp b/src/d/event/d_event_data.cpp index d3c9b812d96..126677193e9 100644 --- a/src/d/event/d_event_data.cpp +++ b/src/d/event/d_event_data.cpp @@ -701,7 +701,7 @@ void dEvDtStaff_c::specialProcCreate() { cXyz* scaleP = dComIfGp_evmng_getMyXyzP(staffId, "SCALE"); if (scaleP == NULL) { - scale.setAll(1.0f); + scale.setall(1.0f); } else { scale = *scaleP; }