diff --git a/config/SOUE01/rels/d_a_obj_warpNP/symbols.txt b/config/SOUE01/rels/d_a_obj_warpNP/symbols.txt index f90b0220..c456a64a 100644 --- a/config/SOUE01/rels/d_a_obj_warpNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_warpNP/symbols.txt @@ -5,27 +5,27 @@ __register_global_object = .text:0x00000070; // type:function size:0x1C scope:gl __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcOWarp_c_classInit__Fv = .text:0x000000F0; // type:function size:0x258 __dt__10dAcOWarp_cFv = .text:0x00000350; // type:function size:0x58 -fn_292_3B0 = .text:0x000003B0; // type:function size:0x3C -fn_292_3F0 = .text:0x000003F0; // type:function size:0x64 +__ct__Q23m3d8anmChr_cFv = .text:0x000003B0; // type:function size:0x3C +__ct__Q23m3d11anmMatClr_cFv = .text:0x000003F0; // type:function size:0x64 fn_292_460 = .text:0x00000460; // type:function size:0x40 fn_292_4A0 = .text:0x000004A0; // type:function size:0x58 __dt__23sFState_c<10dAcOWarp_c>Fv = .text:0x00000500; // type:function size:0x58 __dt__26sFStateFct_c<10dAcOWarp_c>Fv = .text:0x00000560; // type:function size:0x6C __dt__79sStateMgr_c<10dAcOWarp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000005D0; // type:function size:0xA0 __dt__49sFStateMgr_c<10dAcOWarp_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000670; // type:function size:0xA4 -AcOWarp__initModels = .text:0x00000720; // type:function size:0x4C -AcOWarp__init = .text:0x00000770; // type:function size:0x594 +createHeap__10dAcOWarp_cFv = .text:0x00000720; // type:function size:0x4C +create__10dAcOWarp_cFv = .text:0x00000770; // type:function size:0x594 changeState__79sStateMgr_c<10dAcOWarp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000D10; // type:function size:0x10 -AcOWarp__init2 = .text:0x00000D20; // type:function size:0xE0 +init2__10dAcOWarp_cFv = .text:0x00000D20; // type:function size:0xE0 getStateID__79sStateMgr_c<10dAcOWarp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000E00; // type:function size:0x10 -fn_292_E10 = .text:0x00000E10; // type:function size:0x10C -AcOWarp__update = .text:0x00000F20; // type:function size:0x2C8 +fn_292_E10__10dAcOWarp_cFv = .text:0x00000E10; // type:function size:0x10C +update__10dAcOWarp_cFv = .text:0x00000F20; // type:function size:0x2C8 executeState__79sStateMgr_c<10dAcOWarp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000011F0; // type:function size:0x10 -fn_292_1200 = .text:0x00001200; // type:function size:0x134 -fn_292_1340 = .text:0x00001340; // type:function size:0x328 -AcOWarp__updateInEvent = .text:0x00001670; // type:function size:0x530 -AcOWarp__decr = .text:0x00001BA0; // type:function size:0x1C -AcOWarp__draw = .text:0x00001BC0; // type:function size:0xC8 +fun_292_1200__10dAcOWarp_cFi = .text:0x00001200; // type:function size:0x134 +fun_292_1340__10dAcOWarp_cFv = .text:0x00001340; // type:function size:0x328 +updateInEvent__10dAcOWarp_cFv = .text:0x00001670; // type:function size:0x530 +decr__10dAcOWarp_cFRSc_Sc = .text:0x00001BA0; // type:function size:0x1C +draw__10dAcOWarp_cFv = .text:0x00001BC0; // type:function size:0xC8 initializeState_Wait__10dAcOWarp_cFv = .text:0x00001C90; // type:function size:0x4 executeState_Wait__10dAcOWarp_cFv = .text:0x00001CA0; // type:function size:0x33C finalizeState_Wait__10dAcOWarp_cFv = .text:0x00001FE0; // type:function size:0x4 @@ -48,41 +48,41 @@ finalizeState_GateIn__10dAcOWarp_cFv = .text:0x00002D30; // type:function size:0 initializeState_GateClear__10dAcOWarp_cFv = .text:0x00002D40; // type:function size:0x9C executeState_GateClear__10dAcOWarp_cFv = .text:0x00002DE0; // type:function size:0x168 finalizeState_GateClear__10dAcOWarp_cFv = .text:0x00002F50; // type:function size:0x4 -fn_292_2F60 = .text:0x00002F60; // type:function size:0xDC -AcOWarp__triggerOutExitOfTrial = .text:0x00003040; // type:function size:0x64 -fn_292_30B0 = .text:0x000030B0; // type:function size:0x9C -fn_292_3150 = .text:0x00003150; // type:function size:0x578 -fn_292_36D0 = .text:0x000036D0; // type:function size:0x278 -fn_292_3950 = .text:0x00003950; // type:function size:0x9C -fn_292_39F0 = .text:0x000039F0; // type:function size:0xE8 -fn_292_3AE0 = .text:0x00003AE0; // type:function size:0x3DC -fn_292_3EC0 = .text:0x00003EC0; // type:function size:0x228 -fn_292_40F0 = .text:0x000040F0; // type:function size:0xBC -AcOWarp__checkHasSongItem = .text:0x000041B0; // type:function size:0x104 -fn_292_42C0 = .text:0x000042C0; // type:function size:0xD8 -fn_292_43A0 = .text:0x000043A0; // type:function size:0x284 -AcOWarp__shouldDowse = .text:0x00004630; // type:function size:0x18C -fn_292_47C0 = .text:0x000047C0; // type:function size:0x124 -fn_292_48F0 = .text:0x000048F0; // type:function size:0x4 -fn_292_4900 = .text:0x00004900; // type:function size:0x44 -fn_292_4950 = .text:0x00004950; // type:function size:0xC -fn_292_4960 = .text:0x00004960; // type:function size:0xC -fn_292_4970 = .text:0x00004970; // type:function size:0xC -fn_292_4980 = .text:0x00004980; // type:function size:0x8 -fn_292_4990 = .text:0x00004990; // type:function size:0x8 -fn_292_49A0 = .text:0x000049A0; // type:function size:0x50 -fn_292_49F0 = .text:0x000049F0; // type:function size:0x8 -fn_292_4A00 = .text:0x00004A00; // type:function size:0x58 -fn_292_4A60 = .text:0x00004A60; // type:function size:0x1E0 -fn_292_4C40 = .text:0x00004C40; // type:function size:0x4 -fn_292_4C50 = .text:0x00004C50; // type:function size:0x4 -fn_292_4C60 = .text:0x00004C60; // type:function size:0x4 -fn_292_4C70 = .text:0x00004C70; // type:function size:0x8 -fn_292_4C80 = .text:0x00004C80; // type:function size:0x4 -fn_292_4C90 = .text:0x00004C90; // type:function size:0x4 -fn_292_4CA0 = .text:0x00004CA0; // type:function size:0x4 -fn_292_4CB0 = .text:0x00004CB0; // type:function size:0x4 -fn_292_4CC0 = .text:0x00004CC0; // type:function size:0x4 +fun_292_2F60__10dAcOWarp_cFv = .text:0x00002F60; // type:function size:0xDC +triggerOutExitOfTrial__10dAcOWarp_cFv = .text:0x00003040; // type:function size:0x64 +fun_292_30B0__10dAcOWarp_cFv = .text:0x000030B0; // type:function size:0x9C +fun_292_3150__10dAcOWarp_cFv = .text:0x00003150; // type:function size:0x578 +fun_292_36D0__10dAcOWarp_cFv = .text:0x000036D0; // type:function size:0x278 +fun_292_3950__10dAcOWarp_cFv = .text:0x00003950; // type:function size:0x9C +fun_292_39F0__10dAcOWarp_cFv = .text:0x000039F0; // type:function size:0xE8 +fun_292_3AE0__10dAcOWarp_cFv = .text:0x00003AE0; // type:function size:0x3DC +fun_292_3EC0__10dAcOWarp_cFv = .text:0x00003EC0; // type:function size:0x228 +fun_292_40F0__10dAcOWarp_cFv = .text:0x000040F0; // type:function size:0xBC +checkHasSongItem__10dAcOWarp_cFi = .text:0x000041B0; // type:function size:0x104 +fun_292_42C0__10dAcOWarp_cFv = .text:0x000042C0; // type:function size:0xD8 +fun_292_43A0__10dAcOWarp_cFv = .text:0x000043A0; // type:function size:0x284 +shouldDowse__10dAcOWarp_cFv = .text:0x00004630; // type:function size:0x18C +fun_292_47C0__10dAcOWarp_cFlUl = .text:0x000047C0; // type:function size:0x124 +fun_292_48F0__10dAcOWarp_cFv = .text:0x000048F0; // type:function size:0x4 +fun_292_4900__10dAcOWarp_cFv = .text:0x00004900; // type:function size:0x44 +fun_292_4950__10dAcOWarp_cFv = .text:0x00004950; // type:function size:0xC +fun_292_4960__10dAcOWarp_cFv = .text:0x00004960; // type:function size:0xC +fun_292_4970__10dAcOWarp_cFv = .text:0x00004970; // type:function size:0xC +fun_292_4980__10dAcOWarp_cFv = .text:0x00004980; // type:function size:0x8 +fun_292_4990__10dAcOWarp_cFv = .text:0x00004990; // type:function size:0x8 +fun_292_49A0__10dAcOWarp_cFv = .text:0x000049A0; // type:function size:0x50 +fun_292_49F0__10dAcOWarp_cFv = .text:0x000049F0; // type:function size:0x8 +fun_292_4A00__10dAcOWarp_cFv = .text:0x00004A00; // type:function size:0x58 +__dt__10dAcOWarp_cFv = .text:0x00004A60; // type:function size:0x1E0 +fun_292_4C40__10dAcOWarp_cFv = .text:0x00004C40; // type:function size:0x4 +fun_292_4C50__10dAcOWarp_cFv = .text:0x00004C50; // type:function size:0x4 +fun_292_4C60__10dAcOWarp_cFv = .text:0x00004C60; // type:function size:0x4 +fun_292_4C70__10dAcOWarp_cFv = .text:0x00004C70; // type:function size:0x8 +fun_292_4C80__10dAcOWarp_cFv = .text:0x00004C80; // type:function size:0x4 +fun_292_4C90__10dAcOWarp_cFv = .text:0x00004C90; // type:function size:0x4 +fun_292_4CA0__10dAcOWarp_cFv = .text:0x00004CA0; // type:function size:0x4 +fun_292_4CB0__10dAcOWarp_cFv = .text:0x00004CB0; // type:function size:0x4 +fun_292_4CC0__10dAcOWarp_cFv = .text:0x00004CC0; // type:function size:0x4 build__26sFStateFct_c<10dAcOWarp_c>FRC12sStateIDIf_c = .text:0x00004CD0; // type:function size:0x60 dispose__26sFStateFct_c<10dAcOWarp_c>FRP10sStateIf_c = .text:0x00004D30; // type:function size:0xC initialize__23sFState_c<10dAcOWarp_c>Fv = .text:0x00004D40; // type:function size:0x1C @@ -118,12 +118,12 @@ lbl_292_data_0 = .data:0x00000000; // type:object size:0x8 data:4byte g_profile_OBJ_WARP = .data:0x00000008; // type:object size:0x10 lbl_292_data_18 = .data:0x00000018; // type:object size:0x68 lbl_292_data_80 = .data:0x00000080; // type:object size:0x10 -lbl_292_data_90 = .data:0x00000090; // type:object size:0x64 +@30111 = .data:0x00000090; // type:object size:0x64 lbl_292_data_F4 = .data:0x000000F4; // type:object size:0x128 lbl_292_data_21C = .data:0x0000021C; // type:object size:0x4 data:4byte -lbl_292_data_220 = .data:0x00000220; // type:object size:0x18 data:string +@36553 = .data:0x00000220; // type:object size:0x18 data:string lbl_292_data_238 = .data:0x00000238; // type:object size:0x8 -AcOWarp__vtable = .data:0x00000240; // type:object size:0xB0 +__vt__25sFStateID_c<10dAcOWarp_c> = .data:0x00000240; // type:object size:0xB0 lbl_292_data_2F0 = .data:0x000002F0; // type:object size:0x30 lbl_292_data_320 = .data:0x00000320; // type:object size:0x30 lbl_292_data_350 = .data:0x00000350; // type:object size:0x18 diff --git a/config/SOUE01/rels/d_a_obj_warp_holeNP/symbols.txt b/config/SOUE01/rels/d_a_obj_warp_holeNP/symbols.txt index 60e8abc3..bd1b9747 100644 --- a/config/SOUE01/rels/d_a_obj_warp_holeNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_warp_holeNP/symbols.txt @@ -2,21 +2,21 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global dAcOwarpHole_c_classInit__Fv = .text:0x00000070; // type:function size:0x6C -fn_619_E0 = .text:0x000000E0; // type:function size:0x8 -AcOwarpHole__init = .text:0x000000F0; // type:function size:0xF8 -fn_619_1F0 = .text:0x000001F0; // type:function size:0x8 -AcOwarpHole__update = .text:0x00000200; // type:function size:0xDC -AcOwarpHole__updateInEvent = .text:0x000002E0; // type:function size:0x350 -fn_619_630 = .text:0x00000630; // type:function size:0x8 +createHeap__14dAcOwarpHole_cFv = .text:0x000000E0; // type:function size:0x8 +create__14dAcOwarpHole_cFv = .text:0x000000F0; // type:function size:0xF8 +doDelete__14dAcOwarpHole_cFv = .text:0x000001F0; // type:function size:0x8 +actorExecute__14dAcOwarpHole_cFv = .text:0x00000200; // type:function size:0xDC +actorExecuteInEvent__14dAcOwarpHole_cFv = .text:0x000002E0; // type:function size:0x350 +draw__14dAcOwarpHole_cFv = .text:0x00000630; // type:function size:0x8 __dt__14dAcOwarpHole_cFv = .text:0x00000640; // type:function size:0x80 _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global -lbl_619_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float -lbl_619_rodata_4 = .rodata:0x00000004; // type:object size:0x4 align:4 data:float -lbl_619_rodata_8 = .rodata:0x00000008; // type:object size:0x10 align:4 data:float +dummy600__14dAcOwarpHole_c = .rodata:0x00000000; // type:object size:0x4 data:float +@24817 = .rodata:0x00000004; // type:object size:0x4 align:4 data:float +@24840 = .rodata:0x00000008; // type:object size:0x10 align:4 data:float g_profile_OBJ_WARP_HOLE = .data:0x00000000; // type:object size:0x10 -lbl_619_data_10 = .data:0x00000010; // type:object size:0x30 -lbl_619_data_40 = .data:0x00000040; // type:object size:0x1C data:string -lbl_619_data_5C = .data:0x0000005C; // type:object size:0x1C -lbl_619_data_78 = .data:0x00000078; // type:object size:0x20 -AcOwarpHole__vtable = .data:0x00000098; // type:object size:0x80 +sCylSrc__14dAcOwarpHole_c = .data:0x00000010; // type:object size:0x30 +@24816 = .data:0x00000040; // type:object size:0x1C data:string +@24841 = .data:0x0000005C; // type:object size:0x19 align:4 data:string +@24908 = .data:0x00000078; // type:object size:0x1C align:8 data:string +__vt__14dAcOwarpHole_c = .data:0x00000098; // type:object size:0x80 diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index b06ba8fa..9437cb4a 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -412,7 +412,7 @@ public: /* vt 0x2A8 */ virtual void lookTowardItem() {} /* vt 0x2AC */ virtual void vt_0x2AC() {} /* vt 0x2B0 */ virtual void vt_0x2B0() {} - /* vt 0x2B4 */ virtual void triggerMoveEventMaybe() {} + /* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, mVec3_c &, u16, u32, u32) {} /* vt 0x2B8 */ virtual void setActorRef9() {} /* vt 0x2BC */ virtual void unlinkActorRef9() {} /* vt 0x2C0 */ virtual bool vt_0x2C0() { diff --git a/src/REL/d/a/obj/d_a_obj_warp_hole.cpp b/src/REL/d/a/obj/d_a_obj_warp_hole.cpp index 3092cdd7..183a64e4 100644 --- a/src/REL/d/a/obj/d_a_obj_warp_hole.cpp +++ b/src/REL/d/a/obj/d_a_obj_warp_hole.cpp @@ -5,6 +5,7 @@ #include "d/a/npc/d_a_npc_talk_kensei.h" #include "d/col/cc/d_cc_s.h" #include "d/d_sc_game.h" +#include "d/snd/d_snd_wzsound.h" #include "toBeSorted/event_manager.h" SPECIAL_ACTOR_PROFILE(OBJ_WARP_HOLE, dAcOwarpHole_c, fProfile::OBJ_WARP_HOLE, 0x25C, 0, 0); @@ -38,8 +39,7 @@ int dAcOwarpHole_c::create() { mLinkPos = dAcPy_c::GetLink()->mPosition; mEff.init(this); mWalkFramesMaybe = 0; - mPositionCopy2 = mPosition; - mPositionCopy2.y += 170.0f; + mPositionCopy2.set(mPosition.x, mPosition.y + 170.0f, mPosition.z); mPositionCopy3 = mPositionCopy2; return SUCCEEDED; @@ -58,44 +58,49 @@ int dAcOwarpHole_c::actorExecute() { dCcS::GetInstance()->Set(&mCcCyl); updateMatrix(); mEff.createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_914_, mWorldMtx, nullptr, nullptr); - holdSound(0xC90); + holdSound(SE_WarpH_Wait); return SUCCEEDED; } int dAcOwarpHole_c::actorExecuteInEvent() { mEff.createContinuousEffect(PARTICLE_RESOURCE_ID_MAPPING_914_, mWorldMtx, nullptr, nullptr); - holdSound(0xC90); + holdSound(SE_WarpH_Wait); + int retVal = NOT_READY; bool advance = mEvent.isAdvance(); - mPositionCopy2 = mPosition; - mPositionCopy2.y += 170.0f; - s16 targetAngleY; + mPositionCopy2.set(mPosition.x, mPosition.y + 170.0f, mPosition.z); switch (mEvent.getCurrentEventCommand()) { - case 'none': mEvent.advanceNext(); break; + case 'none': + mEvent.advanceNext(); + retVal = SUCCEEDED; + break; case 'plwk': if (advance) { - mLinkPos = dAcPy_c::GetLink()->mPosition; - targetAngleY = cLib::targetAngleY(mPosition, dAcPy_c::GetLink()->mPosition); - mLinkPos.x += 330.0f * nw4r::math::SinIdx(targetAngleY); - mLinkPos.z += 330.0f * nw4r::math::CosIdx(targetAngleY); + float multiplier330 = 330.0f; + mLinkPos = dAcPy_c::GetLinkM()->mPosition; + mAng targetAngleY = (mAng)cLib::targetAngleY(mPosition, dAcPy_c::GetLinkM()->getPosition()); + mLinkPos.x += multiplier330 * targetAngleY.sin(); + mLinkPos.z += multiplier330 * targetAngleY.cos(); } if (EventManager::isInEvent()) { if (EventManager::isCurrentEvent("BeforeLastBossBattleChicken")) { - dAcPy_c::GetLinkM()->vt_0x2AC(); - dAcPy_c::GetLinkM()->triggerMoveEventMaybe(); // TODO: parameters + dAcPy_c* player = dAcPy_c::GetLinkM(); + player->vt_0x2AC(); + player->triggerMoveEventMaybe(2, 0, 0, mLinkPos, 0, 0, 0); } } if (dAcPy_c::GetLinkM()->mPosition.absXZTo(mLinkPos) < 10.0f) { mEvent.advanceNext(); } + retVal = SUCCEEDED; break; case 'warp': if (advance) { dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_916_, mWorldMtx, nullptr, nullptr, 0, 0); mWalkFramesMaybe = 80; } - if (mWalkFramesMaybe) { + if (mWalkFramesMaybe != 0) { mWalkFramesMaybe -= 1; } if (mWalkFramesMaybe == 77) { @@ -104,12 +109,13 @@ int dAcOwarpHole_c::actorExecuteInEvent() { if (mWalkFramesMaybe == 20) { dScGame_c::GetInstance()->triggerExit(mRoomID, mExitListIdx); } - if (!mWalkFramesMaybe) { + if (mWalkFramesMaybe == 0) { mEvent.advanceNext(); } + retVal = SUCCEEDED; } - return SUCCEEDED; + return retVal; } int dAcOwarpHole_c::draw() {