From cbe298e99a8da9ff2ddd66a651c852d5eeca914e Mon Sep 17 00:00:00 2001 From: robojumper Date: Thu, 21 Aug 2025 23:10:18 +0200 Subject: [PATCH 1/4] d_a_salbage_obj OK --- config/SOUE01/splits.txt | 3 + config/SOUE01/symbols.txt | 255 +++++++++------- configure.py | 2 +- include/d/a/d_a_salbage_obj.h | 167 ++++++++++ include/d/a/npc/d_a_npc_salbage_robot.h | 17 +- include/d/a/npc/d_a_npc_talk_kensei.h | 16 + include/d/a/obj/d_a_obj_base.h | 4 +- include/d/a/obj/d_a_obj_pot_sal.h | 11 +- include/toBeSorted/attention.h | 4 +- include/toBeSorted/dowsing_target.h | 5 +- include/toBeSorted/salvage_mgr.h | 39 +++ src/d/a/d_a_salbage_obj.cpp | 390 ++++++++++++++++++++++++ 12 files changed, 791 insertions(+), 122 deletions(-) create mode 100644 include/d/a/d_a_salbage_obj.h create mode 100644 include/d/a/npc/d_a_npc_talk_kensei.h create mode 100644 include/toBeSorted/salvage_mgr.h create mode 100644 src/d/a/d_a_salbage_obj.cpp diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 0c5e668c..dc72acbc 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -1264,12 +1264,15 @@ d/a/d_a_salbage_obj.cpp: .ctors start:0x804DB7EC end:0x804DB7F0 .rodata start:0x804E9CD8 end:0x804E9E28 .data start:0x8052ACD0 end:0x8052B078 + .sdata start:0x80572D08 end:0x80572D10 + .sdata2 start:0x8057AE30 end:0x8057AE60 .bss start:0x805B2128 end:0x805B22E8 d/a/d_a_salbage_npc.cpp: .text start:0x80192B00 end:0x80194080 align:16 .ctors start:0x804DB7F0 end:0x804DB7F4 .data start:0x8052B078 end:0x8052B618 + .sdata2 start:0x8057AE60 end:0x8057AE80 .bss start:0x805B22E8 end:0x805B2428 d/d_pad_nav.cpp: diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index a90d06f7..758aff00 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -3651,18 +3651,18 @@ ScrapperPickupMgr__update = .text:0x800A57C0; // type:function size:0x34 ScrapperPickupMgr__handlePickupIndex = .text:0x800A5800; // type:function size:0x11C ScrapperPickupMgr__setupDeliverToActorLink = .text:0x800A5920; // type:function size:0xC0 fn_800A59E0 = .text:0x800A59E0; // type:function size:0x40 -ScrapperPickupMgr__getSomeMatrix = .text:0x800A5A20; // type:function size:0x84 +getCarryRotMtx__13dSalvageMgr_cCFRCl = .text:0x800A5A20; // type:function size:0x84 ScrapperPickupMgr__setPickupIndex = .text:0x800A5AB0; // type:function size:0x84 -ScrapperPickupMgr__killSomeActors = .text:0x800A5B40; // type:function size:0x4C +deleteObjAndSlb__13dSalvageMgr_cFv = .text:0x800A5B40; // type:function size:0x4C ScrapperPickupMgr__checkIsOnDeliveryStage2 = .text:0x800A5B90; // type:function size:0x1C -fn_800A5BB0 = .text:0x800A5BB0; // type:function size:0x5C +startedQuestForSalvageObj__13dSalvageMgr_cCFPC15dAcSalbageObj_c = .text:0x800A5BB0; // type:function size:0x5C ScrapperPickupMgr__checkQuestStartedStoryflag = .text:0x800A5C10; // type:function size:0x7C -fn_800A5C90 = .text:0x800A5C90; // type:function size:0x5C +hasDowsingForSalvageObj__13dSalvageMgr_cCFPC15dAcSalbageObj_c = .text:0x800A5C90; // type:function size:0x5C ScrapperPickupMgr__checkHasDowsing = .text:0x800A5CF0; // type:function size:0xB8 ScrapperPickupMgr__getActorId = .text:0x800A5DB0; // type:function size:0x18 fn_800A5DD0 = .text:0x800A5DD0; // type:function size:0x4 -ScrapperPickupMgr__getCurrentPickupIndex = .text:0x800A5DE0; // type:function size:0x8 -ScrapperPickupMgr__checkDeliveredStoryflag = .text:0x800A5DF0; // type:function size:0x7C +getCurrentSalvageObjId__13dSalvageMgr_cCFv = .text:0x800A5DE0; // type:function size:0x8 +checkDeliveredStoryflag__13dSalvageMgr_cCFRCl = .text:0x800A5DF0; // type:function size:0x7C ScrapperPickupMgr__unsetPickupStoryflag = .text:0x800A5E70; // type:function size:0xBC ScrapperPickupMgr__checkPickupStoryflag = .text:0x800A5F30; // type:function size:0x7C ScrapperPickupMgr__checkIsOnDeliveryStage = .text:0x800A5FB0; // type:function size:0x5C @@ -10267,82 +10267,82 @@ fn_801908F0 = .text:0x801908F0; // type:function size:0xAC fn_801909A0__15SaveTimeRelatedFv = .text:0x801909A0; // type:function size:0x40 fn_801909E0 = .text:0x801909E0; // type:function size:0x2C fn_80190A10 = .text:0x80190A10; // type:function size:0x94 -fn_80190AB0 = .text:0x80190AB0; // type:function size:0xC -fn_80190AC0 = .text:0x80190AC0; // type:function size:0xC -fn_80190AD0 = .text:0x80190AD0; // type:function size:0xC -fn_80190AE0 = .text:0x80190AE0; // type:function size:0xC -fn_80190AF0 = .text:0x80190AF0; // type:function size:0xC -fn_80190B00 = .text:0x80190B00; // type:function size:0xC -ScrapperCarriedRelated__setDemoThrowState = .text:0x80190B10; // type:function size:0x1C -AcSalbageObj__update = .text:0x80190B30; // type:function size:0xD0 -AcSalbageObj__checkIsWaitState = .text:0x80190C00; // type:function size:0x50 -AcSalbageObj__checkIsWaitOrDemoThrow = .text:0x80190C50; // type:function size:0xB4 -fn_80190D10 = .text:0x80190D10; // type:function size:0x1D4 -fn_80190EF0 = .text:0x80190EF0; // type:function size:0x8 -fn_80190F00 = .text:0x80190F00; // type:function size:0x8 -fn_80190F10 = .text:0x80190F10; // type:function size:0x8 -AcSalbageObj__checkShouldDraw = .text:0x80190F20; // type:function size:0x58 -fn_80190F80 = .text:0x80190F80; // type:function size:0x8 -AcSalbageObj__draw = .text:0x80190F90; // type:function size:0x54 -AcSalbageObj__update2 = .text:0x80190FF0; // type:function size:0xE0 -AcSalbageObj__init = .text:0x801910D0; // type:function size:0x2A8 -fn_80191380 = .text:0x80191380; // type:function size:0x8 -fn_80191390 = .text:0x80191390; // type:function size:0xC -fn_801913A0 = .text:0x801913A0; // type:function size:0xC -AcSalbageObj__performInteraction = .text:0x801913B0; // type:function size:0xB0 -fn_80191460 = .text:0x80191460; // type:function size:0x50 -AcSalbageObj__addInteractionTarget = .text:0x801914B0; // type:function size:0xFC -fn_801915B0 = .text:0x801915B0; // type:function size:0x80 -fn_80191630 = .text:0x80191630; // type:function size:0xB0 -fn_801916E0 = .text:0x801916E0; // type:function size:0x78 -fn_80191760 = .text:0x80191760; // type:function size:0x8 -fn_80191770 = .text:0x80191770; // type:function size:0x8 -fn_80191780 = .text:0x80191780; // type:function size:0x74 -fn_80191800 = .text:0x80191800; // type:function size:0x8 -fn_80191810 = .text:0x80191810; // type:function size:0x8 -fn_80191820 = .text:0x80191820; // type:function size:0x17C -fn_801919A0 = .text:0x801919A0; // type:function size:0x88 -fn_80191A30 = .text:0x80191A30; // type:function size:0x8 -fn_80191A40 = .text:0x80191A40; // type:function size:0x1B0 -fn_80191BF0 = .text:0x80191BF0; // type:function size:0x8 -fn_80191C00 = .text:0x80191C00; // type:function size:0x8 -AcSalbageObj__subTypeFromParams = .text:0x80191C10; // type:function size:0x10 -AcSalbageObj__registerDowsingTarget = .text:0x80191C20; // type:function size:0x80 -AcSalbageObj__getDowsingSlotIndex = .text:0x80191CA0; // type:function size:0x8 -fn_80191CB0 = .text:0x80191CB0; // type:function size:0xC8 -fn_80191D80 = .text:0x80191D80; // type:function size:0x4 -AcSalbageObj__setStateCarried = .text:0x80191D90; // type:function size:0x10 -fn_80191DA0 = .text:0x80191DA0; // type:function size:0x4 -fn_80191DB0 = .text:0x80191DB0; // type:function size:0x4 -fn_80191DC0 = .text:0x80191DC0; // type:function size:0x4 -fn_80191DD0 = .text:0x80191DD0; // type:function size:0x4 -fn_80191DE0 = .text:0x80191DE0; // type:function size:0x4 -AcSalbageObj__killSomeActors = .text:0x80191DF0; // type:function size:0x8 -fn_80191E00 = .text:0x80191E00; // type:function size:0x8 -fn_80191E10 = .text:0x80191E10; // type:function size:0x4 -fn_80191E20 = .text:0x80191E20; // type:function size:0x4 -fn_80191E30 = .text:0x80191E30; // type:function size:0x4 -fn_80191E40 = .text:0x80191E40; // type:function size:0x4 -fn_80191E50 = .text:0x80191E50; // type:function size:0x164 -fn_80191FC0 = .text:0x80191FC0; // type:function size:0xC -fn_80191FD0 = .text:0x80191FD0; // type:function size:0x4 -fn_80191FE0 = .text:0x80191FE0; // type:function size:0x4 -fn_80191FF0 = .text:0x80191FF0; // type:function size:0x4 -fn_80192000 = .text:0x80192000; // type:function size:0x4 -fn_80192010 = .text:0x80192010; // type:function size:0x4 -fn_80192020 = .text:0x80192020; // type:function size:0x4 -fn_80192030 = .text:0x80192030; // type:function size:0x100 -ScrapperCarriedRelated__dtor = .text:0x80192130; // type:function size:0x40 -fn_80192170 = .text:0x80192170; // type:function size:0xC -fn_80192180 = .text:0x80192180; // type:function size:0x30 -fn_801921B0 = .text:0x801921B0; // type:function size:0x30 -fn_801921E0 = .text:0x801921E0; // type:function size:0x30 -AcSalbageObj__initStates = .text:0x80192210; // type:function size:0x5D8 -AcSalbageObj__STATE_KILL__dtor = .text:0x801927F0; // type:function size:0x58 -AcSalbageObj__dtor = .text:0x80192850; // type:function size:0x5C -fn_801928B0 = .text:0x801928B0; // type:function size:0xDC -fn_80192990 = .text:0x80192990; // type:function size:0xE0 -fn_80192A70 = .text:0x80192A70; // type:function size:0x88 +baseID_Wait<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AB0; // type:function size:0xC scope:local +baseID_Carried<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AC0; // type:function size:0xC scope:local +baseID_Demo<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AD0; // type:function size:0xC scope:local +baseID_DemoThrow<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AE0; // type:function size:0xC scope:local +baseID_Fly<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AF0; // type:function size:0xC scope:local +baseID_After<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190B00; // type:function size:0xC scope:local +doDemoThrow__14SalbageRelatedFv = .text:0x80190B10; // type:function size:0x1C +actorExecute__15dAcSalbageObj_cFv = .text:0x80190B30; // type:function size:0xD0 +isInStateWait__15dAcSalbageObj_cCFv = .text:0x80190C00; // type:function size:0x50 scope:weak +isInStateWaitOrDemoThrow__15dAcSalbageObj_cCFv = .text:0x80190C50; // type:function size:0xB4 scope:weak +preExecute__15dAcSalbageObj_cFv = .text:0x80190D10; // type:function size:0x1D4 +getSalvageObjId__14SalbageRelatedCFv = .text:0x80190EF0; // type:function size:0x8 scope:weak +getDowsingUnusedF32__15dAcSalbageObj_cCFv = .text:0x80190F00; // type:function size:0x8 scope:weak +getDowsingTargetYOffset__15dAcSalbageObj_cCFv = .text:0x80190F10; // type:function size:0x8 scope:weak +preDraw__15dAcSalbageObj_cFv = .text:0x80190F20; // type:function size:0x58 +isHidden__14SalbageRelatedCFv = .text:0x80190F80; // type:function size:0x8 scope:weak +draw__15dAcSalbageObj_cFv = .text:0x80190F90; // type:function size:0x54 +executeInternal__15dAcSalbageObj_cFv = .text:0x80190FF0; // type:function size:0xE0 +initSalbageObj__15dAcSalbageObj_cFv = .text:0x801910D0; // type:function size:0x2A8 +vt_0x80__15dAcSalbageObj_cCFv = .text:0x80191380; // type:function size:0x8 scope:weak +setHidden__14SalbageRelatedFv = .text:0x80191390; // type:function size:0xC scope:weak +setCarried__14SalbageRelatedFv = .text:0x801913A0; // type:function size:0xC scope:weak +doInteraction__15dAcSalbageObj_cFl = .text:0x801913B0; // type:function size:0xB0 +addAttentionTargetIfNeeded__15dAcSalbageObj_cFv = .text:0x80191460; // type:function size:0x50 +addAttentionTarget__15dAcSalbageObj_cFv = .text:0x801914B0; // type:function size:0xFC +initCcAndBg__15dAcSalbageObj_cFv = .text:0x801915B0; // type:function size:0x80 +shouldBeActiveDowsingTarget__15dAcSalbageObj_cCFv = .text:0x80191630; // type:function size:0xB0 +updateCc__15dAcSalbageObj_cFv = .text:0x801916E0; // type:function size:0x78 +getCcRadius__15dAcSalbageObj_cCFv = .text:0x80191760; // type:function size:0x8 scope:weak +getCcHeight__15dAcSalbageObj_cCFv = .text:0x80191770; // type:function size:0x8 scope:weak +updateBgAcchCir__15dAcSalbageObj_cFv = .text:0x80191780; // type:function size:0x74 +getBgAcchCirHeight__15dAcSalbageObj_cCFv = .text:0x80191800; // type:function size:0x8 scope:weak +getBgAcchCirRadius__15dAcSalbageObj_cCFv = .text:0x80191810; // type:function size:0x8 scope:weak +calcMtxFromSalbageNpc__15dAcSalbageObj_cFR6mMtx_c = .text:0x80191820; // type:function size:0x17C +calcWorldMtx__15dAcSalbageObj_cFv = .text:0x801919A0; // type:function size:0x88 +isCarried__14SalbageRelatedCFv = .text:0x80191A30; // type:function size:0x8 scope:weak +updateMdl__15dAcSalbageObj_cFv = .text:0x80191A40; // type:function size:0x1B0 +getPoscopy3YOffset__15dAcSalbageObj_cCFv = .text:0x80191BF0; // type:function size:0x8 scope:weak +getPoscopy2YOffset__15dAcSalbageObj_cCFv = .text:0x80191C00; // type:function size:0x8 scope:weak +loadBehaviorFromParams__15dAcSalbageObj_cFv = .text:0x80191C10; // type:function size:0x10 +initializeState_Wait__15dAcSalbageObj_cFv = .text:0x80191C20; // type:function size:0x80 +getDowsingSlot__15dAcSalbageObj_cCFv = .text:0x80191CA0; // type:function size:0x8 scope:weak +executeState_Wait__15dAcSalbageObj_cFv = .text:0x80191CB0; // type:function size:0xC8 +finalizeState_Wait__15dAcSalbageObj_cFv = .text:0x80191D80; // type:function size:0x4 +initializeState_Carried__15dAcSalbageObj_cFv = .text:0x80191D90; // type:function size:0x10 +executeState_Carried__15dAcSalbageObj_cFv = .text:0x80191DA0; // type:function size:0x4 +finalizeState_Carried__15dAcSalbageObj_cFv = .text:0x80191DB0; // type:function size:0x4 +initializeState_Fly__15dAcSalbageObj_cFv = .text:0x80191DC0; // type:function size:0x4 +executeState_Fly__15dAcSalbageObj_cFv = .text:0x80191DD0; // type:function size:0x4 +finalizeState_Fly__15dAcSalbageObj_cFv = .text:0x80191DE0; // type:function size:0x4 +initializeState_After__15dAcSalbageObj_cFv = .text:0x80191DF0; // type:function size:0x8 +executeState_After__15dAcSalbageObj_cFv = .text:0x80191E00; // type:function size:0x8 +finalizeState_After__15dAcSalbageObj_cFv = .text:0x80191E10; // type:function size:0x4 +initializeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E20; // type:function size:0x4 +executeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E30; // type:function size:0x4 +finalizeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E40; // type:function size:0x4 +initializeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191E50; // type:function size:0x164 +setNotCarried__14SalbageRelatedFv = .text:0x80191FC0; // type:function size:0xC scope:weak +executeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FD0; // type:function size:0x4 +finalizeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FE0; // type:function size:0x4 +initializeState_Kill__15dAcSalbageObj_cFv = .text:0x80191FF0; // type:function size:0x4 +executeState_Kill__15dAcSalbageObj_cFv = .text:0x80192000; // type:function size:0x4 +finalizeState_Kill__15dAcSalbageObj_cFv = .text:0x80192010; // type:function size:0x4 +vt_0xD0__15dAcSalbageObj_cFv = .text:0x80192020; // type:function size:0x4 scope:weak +__dt__15dAcSalbageObj_cFv = .text:0x80192030; // type:function size:0x100 scope:weak +__dt__14SalbageRelatedFv = .text:0x80192130; // type:function size:0x40 scope:weak +setNotHidden__14SalbageRelatedFv = .text:0x80192170; // type:function size:0xC scope:weak +finalizeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x80192180; // type:function size:0x30 scope:weak +executeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921B0; // type:function size:0x30 scope:weak +initializeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921E0; // type:function size:0x30 scope:weak +__sinit_\d_a_salbage_obj_cpp = .text:0x80192210; // type:function size:0x5D8 scope:local +__dt__30sFStateID_c<15dAcSalbageObj_c>Fv = .text:0x801927F0; // type:function size:0x58 scope:weak +__dt__37sFStateVirtualID_c<15dAcSalbageObj_c>Fv = .text:0x80192850; // type:function size:0x5C scope:weak +number__37sFStateVirtualID_c<15dAcSalbageObj_c>CFv = .text:0x801928B0; // type:function size:0xDC scope:weak +superID__37sFStateVirtualID_c<15dAcSalbageObj_c>CFv = .text:0x80192990; // type:function size:0xE0 scope:weak +isSameName__30sFStateID_c<15dAcSalbageObj_c>CFPCc = .text:0x80192A70; // type:function size:0x88 scope:weak fn_80192B00 = .text:0x80192B00; // type:function size:0xC fn_80192B10 = .text:0x80192B10; // type:function size:0xC fn_80192B20 = .text:0x80192B20; // type:function size:0xC @@ -16580,7 +16580,7 @@ AcNpcTalkKensei__triggerSeedlingFiText = .text:0x802C39A0; // type:function size fn_802C3A00 = .text:0x802C3A00; // type:function size:0x74 fn_802C3A80 = .text:0x802C3A80; // type:function size:0x5C fn_802C3AE0 = .text:0x802C3AE0; // type:function size:0x84 -getFiPointer = .text:0x802C3B70; // type:function size:0x8 +GetInstance__18dAcNpcTalkKensei_cFv = .text:0x802C3B70; // type:function size:0x8 fn_802C3B80 = .text:0x802C3B80; // type:function size:0x2E8 fn_802C3E70 = .text:0x802C3E70; // type:function size:0x188 fn_802C4000 = .text:0x802C4000; // type:function size:0x234 @@ -16591,7 +16591,7 @@ fn_802C46D0 = .text:0x802C46D0; // type:function size:0x38 fn_802C4710 = .text:0x802C4710; // type:function size:0x40 AcNpcTalkKensei__triggerSpecialEventEntrypoint = .text:0x802C4750; // type:function size:0xEC fn_802C4840 = .text:0x802C4840; // type:function size:0xA0 -fn_802C48E0 = .text:0x802C48E0; // type:function size:0xA8 +triggerSalvageQuestion__18dAcNpcTalkKensei_cFP15dAcSalbageObj_c = .text:0x802C48E0; // type:function size:0xA8 fn_802C4990 = .text:0x802C4990; // type:function size:0x60 fn_802C49F0 = .text:0x802C49F0; // type:function size:0x84 fn_802C4A80 = .text:0x802C4A80; // type:function size:0x94 @@ -28394,7 +28394,7 @@ lbl_804E9AF8 = .rodata:0x804E9AF8; // type:object size:0xA4 data:4byte lbl_804E9B9C = .rodata:0x804E9B9C; // type:object size:0x2C data:byte lbl_804E9BC8 = .rodata:0x804E9BC8; // type:object size:0xE8 data:4byte AMMO_CAPACITY_INCREASES = .rodata:0x804E9CB0; // type:object size:0x28 -lbl_804E9CD8 = .rodata:0x804E9CD8; // type:object size:0x150 +sInteractionTargetDefs = .rodata:0x804E9CD8; // type:object size:0x150 scope:local TADTONE_GROUP_SIZES = .rodata:0x804E9E28; // type:object size:0x14 data:byte TADTONE_SCENEFLAGS = .rodata:0x804E9E3C; // type:object size:0x14 data:byte SK_DOOR_SCENEFLAGS = .rodata:0x804E9E50; // type:object size:0x20 @@ -35356,9 +35356,40 @@ lbl_8052AB6C = .data:0x8052AB6C; // type:object size:0x6C @LOCAL@addAttentionTarget__12dAcOInsect_cFv@tmpTarget = .data:0x8052ABD8; // type:object size:0x30 scope:local __vt__12dAcOInsect_c = .data:0x8052AC08; // type:object size:0xB4 lbl_8052ACC0 = .data:0x8052ACC0; // type:object size:0x10 -lbl_8052ACD0 = .data:0x8052ACD0; // type:object size:0x340 -lbl_8052B010 = .data:0x8052B010; // type:object size:0x34 -lbl_8052B044 = .data:0x8052B044; // type:object size:0x34 +sCylSrc = .data:0x8052ACD0; // type:object size:0x30 scope:local +...data.0 = .data:0x8052ACD0; // type:label scope:local +__vt__15dAcSalbageObj_c = .data:0x8052AD00; // type:object size:0x100 +__vt__14SalbageRelated = .data:0x8052AE00; // type:object size:0x2C +@22347 = .data:0x8052AE2C; // type:object size:0xC scope:local +@22348 = .data:0x8052AE38; // type:object size:0xC scope:local +@22349 = .data:0x8052AE44; // type:object size:0xC scope:local +@22350 = .data:0x8052AE50; // type:object size:0xC scope:local +@22351 = .data:0x8052AE5C; // type:object size:0xC scope:local +@22352 = .data:0x8052AE68; // type:object size:0xC scope:local +@22353 = .data:0x8052AE74; // type:object size:0xC scope:local +@22354 = .data:0x8052AE80; // type:object size:0xC scope:local +@22355 = .data:0x8052AE8C; // type:object size:0xC scope:local +@22356 = .data:0x8052AE98; // type:object size:0xC scope:local +@22357 = .data:0x8052AEA4; // type:object size:0xC scope:local +@22358 = .data:0x8052AEB0; // type:object size:0xC scope:local +@22359 = .data:0x8052AEBC; // type:object size:0xC scope:local +@22360 = .data:0x8052AEC8; // type:object size:0xC scope:local +@22361 = .data:0x8052AED4; // type:object size:0xC scope:local +@22362 = .data:0x8052AEE0; // type:object size:0xC scope:local +@22363 = .data:0x8052AEEC; // type:object size:0xC scope:local +@22364 = .data:0x8052AEF8; // type:object size:0xC scope:local +@22365 = .data:0x8052AF04; // type:object size:0xC scope:local +@22366 = .data:0x8052AF10; // type:object size:0xC scope:local +@22367 = .data:0x8052AF1C; // type:object size:0xC scope:local +@22369 = .data:0x8052AF28; // type:object size:0x1E scope:local data:string +@22370 = .data:0x8052AF48; // type:object size:0x21 scope:local data:string +@22371 = .data:0x8052AF6C; // type:object size:0x1E scope:local data:string +@22372 = .data:0x8052AF8C; // type:object size:0x23 scope:local data:string +@22373 = .data:0x8052AFB0; // type:object size:0x1D scope:local data:string +@22374 = .data:0x8052AFD0; // type:object size:0x1F scope:local data:string +@22375 = .data:0x8052AFF0; // type:object size:0x1E scope:local data:string +__vt__37sFStateVirtualID_c<15dAcSalbageObj_c> = .data:0x8052B010; // type:object size:0x34 scope:weak +__vt__30sFStateID_c<15dAcSalbageObj_c> = .data:0x8052B044; // type:object size:0x34 scope:weak lbl_8052B078 = .data:0x8052B078; // type:object size:0x538 lbl_8052B5B0 = .data:0x8052B5B0; // type:object size:0x34 lbl_8052B5E4 = .data:0x8052B5E4; // type:object size:0x34 @@ -40190,8 +40221,8 @@ lbl_80572CF0 = .sdata:0x80572CF0; // type:object size:0x4 data:4byte lbl_80572CF4 = .sdata:0x80572CF4; // type:object size:0x8 lbl_80572CFC = .sdata:0x80572CFC; // type:object size:0x4 lbl_80572D00 = .sdata:0x80572D00; // type:object size:0x8 -lbl_80572D08 = .sdata:0x80572D08; // type:object size:0x4 data:4byte -lbl_80572D0C = .sdata:0x80572D0C; // type:object size:0x4 data:4byte +@21253 = .sdata:0x80572D08; // type:object size:0x4 scope:local data:4byte +@21254 = .sdata:0x80572D0C; // type:object size:0x4 scope:local data:4byte sIsPointerVisible__7dPadNav = .sdata:0x80572D10; // type:object size:0x1 data:byte sPrevIsPointerVisible__7dPadNav = .sdata:0x80572D11; // type:object size:0x1 data:byte sIsCursorStickVisible__7dPadNav = .sdata:0x80572D12; // type:object size:0x1 data:byte @@ -41798,7 +41829,7 @@ lbl_80575388 = .sbss:0x80575388; // type:object size:0x8 data:byte lbl_80575390 = .sbss:0x80575390; // type:object size:0x4 data:4byte lbl_80575394 = .sbss:0x80575394; // type:object size:0x4 data:4byte lbl_80575398 = .sbss:0x80575398; // type:object size:0x8 data:byte -SCRAPPER_PICKUP_TARGET = .sbss:0x805753A0; // type:object size:0x8 data:4byte +sInstance__13dSalvageMgr_c = .sbss:0x805753A0; // type:object size:0x8 data:4byte @GUARD@setupGX__10dTextBox_cCFv@sFogColor = .sbss:0x805753A8; // type:object size:0x1 scope:local data:byte @LOCAL@setupGX__10dTextBox_cCFv@sFogColor = .sbss:0x805753AC; // type:object size:0x4 scope:local data:4byte sInstance__10dLyt_HIO_c = .sbss:0x805753B0; // type:object size:0x4 data:4byte @@ -46613,17 +46644,17 @@ lbl_8057AE18 = .sdata2:0x8057AE18; // type:object size:0x8 align:8 data:double lbl_8057AE20 = .sdata2:0x8057AE20; // type:object size:0x4 align:4 data:float lbl_8057AE24 = .sdata2:0x8057AE24; // type:object size:0x4 align:4 data:float lbl_8057AE28 = .sdata2:0x8057AE28; // type:object size:0x4 align:4 data:float -lbl_8057AE30 = .sdata2:0x8057AE30; // type:object size:0x4 align:4 data:float -lbl_8057AE34 = .sdata2:0x8057AE34; // type:object size:0x4 align:4 data:float -lbl_8057AE38 = .sdata2:0x8057AE38; // type:object size:0x4 align:4 data:float -lbl_8057AE3C = .sdata2:0x8057AE3C; // type:object size:0x4 align:4 data:float -lbl_8057AE40 = .sdata2:0x8057AE40; // type:object size:0x4 align:4 data:float -lbl_8057AE44 = .sdata2:0x8057AE44; // type:object size:0x4 align:4 data:float -lbl_8057AE48 = .sdata2:0x8057AE48; // type:object size:0x4 align:4 data:float -lbl_8057AE4C = .sdata2:0x8057AE4C; // type:object size:0x4 align:4 data:float -lbl_8057AE50 = .sdata2:0x8057AE50; // type:object size:0x4 align:4 data:float -lbl_8057AE54 = .sdata2:0x8057AE54; // type:object size:0x4 align:4 data:float -lbl_8057AE58 = .sdata2:0x8057AE58; // type:object size:0x4 align:4 data:float +@21930 = .sdata2:0x8057AE30; // type:object size:0x4 scope:local align:4 data:float +@21935 = .sdata2:0x8057AE34; // type:object size:0x4 scope:local align:4 data:float +@21937 = .sdata2:0x8057AE38; // type:object size:0x4 scope:local align:4 data:float +@21994 = .sdata2:0x8057AE3C; // type:object size:0x4 scope:local align:4 data:float +@21995 = .sdata2:0x8057AE40; // type:object size:0x4 scope:local align:4 data:float +@21996 = .sdata2:0x8057AE44; // type:object size:0x4 scope:local align:4 data:float +@21997 = .sdata2:0x8057AE48; // type:object size:0x4 scope:local align:4 data:float +@21998 = .sdata2:0x8057AE4C; // type:object size:0x4 scope:local align:4 data:float +@22036 = .sdata2:0x8057AE50; // type:object size:0x4 scope:local align:4 data:float +@22182 = .sdata2:0x8057AE54; // type:object size:0x4 scope:local align:4 data:float +@22205 = .sdata2:0x8057AE58; // type:object size:0x4 scope:local align:4 data:float lbl_8057AE60 = .sdata2:0x8057AE60; // type:object size:0x4 align:4 data:float lbl_8057AE64 = .sdata2:0x8057AE64; // type:object size:0x4 align:4 data:float lbl_8057AE68 = .sdata2:0x8057AE68; // type:object size:0x4 align:4 data:float @@ -51684,11 +51715,21 @@ AcFishMgrBase__STATE_WAIT = .bss:0x805B2074; // type:object size:0x34 data:4byte lbl_805B20A8 = .bss:0x805B20A8; // type:object size:0xC AcFishBase__STATE_SWIM = .bss:0x805B20B4; // type:object size:0x40 data:4byte AcFishBase__STATE_ESCAPE = .bss:0x805B20F4; // type:object size:0x34 data:4byte -lbl_805B2128 = .bss:0x805B2128; // type:object size:0xC -AcSalbageObj__STATE_WAIT = .bss:0x805B2134; // type:object size:0x40 data:4byte -AcSalbageObj__STATE_CARRIED = .bss:0x805B2174; // type:object size:0x40 data:4byte -AcSalbageObj__STATE_DEMO = .bss:0x805B21B4; // type:object size:0x40 data:4byte -AcSalbageObj__STATE_DEMO_THROW = .bss:0x805B21F4; // type:object size:0xF4 data:4byte +@20933 = .bss:0x805B2128; // type:object size:0xC scope:local +...bss.0 = .bss:0x805B2128; // type:label scope:local +StateID_Wait__15dAcSalbageObj_c = .bss:0x805B2134; // type:object size:0x34 data:4byte +@20941 = .bss:0x805B2168; // type:object size:0xC scope:local +StateID_Carried__15dAcSalbageObj_c = .bss:0x805B2174; // type:object size:0x34 data:4byte +@20949 = .bss:0x805B21A8; // type:object size:0xC scope:local +StateID_Demo__15dAcSalbageObj_c = .bss:0x805B21B4; // type:object size:0x34 data:4byte +@20957 = .bss:0x805B21E8; // type:object size:0xC scope:local +StateID_DemoThrow__15dAcSalbageObj_c = .bss:0x805B21F4; // type:object size:0x34 data:4byte +@20965 = .bss:0x805B2228; // type:object size:0xC scope:local +StateID_Fly__15dAcSalbageObj_c = .bss:0x805B2234; // type:object size:0x34 scope:global +@20973 = .bss:0x805B2268; // type:object size:0xC scope:local +StateID_After__15dAcSalbageObj_c = .bss:0x805B2274; // type:object size:0x34 scope:global +@20977 = .bss:0x805B22A8; // type:object size:0xC scope:local +StateID_Kill__15dAcSalbageObj_c = .bss:0x805B22B8; // type:object size:0x30 scope:global lbl_805B22E8 = .bss:0x805B22E8; // type:object size:0xC AcSalbageNpc__STATE_SET = .bss:0x805B22F4; // type:object size:0x40 data:4byte AcSalbageNpc__STATE_CARRIED = .bss:0x805B2334; // type:object size:0xF4 data:4byte diff --git a/configure.py b/configure.py index b23d0539..879dab57 100644 --- a/configure.py +++ b/configure.py @@ -584,7 +584,7 @@ config.libs = [ Object(NonMatching, "toBeSorted/sword_proj_effect_list.cpp"), Object(NonMatching, "d/a/d_a_insect.cpp"), Object(NonMatching, "toBeSorted/unk_save_time.cpp"), - Object(NonMatching, "d/a/d_a_salbage_obj.cpp"), + Object(Matching, "d/a/d_a_salbage_obj.cpp"), Object(NonMatching, "d/a/d_a_salbage_npc.cpp"), Object(Matching, "d/d_pad_nav.cpp"), Object(NonMatching, "toBeSorted/goddess_chest_counter.cpp"), diff --git a/include/d/a/d_a_salbage_obj.h b/include/d/a/d_a_salbage_obj.h new file mode 100644 index 00000000..e00732e3 --- /dev/null +++ b/include/d/a/d_a_salbage_obj.h @@ -0,0 +1,167 @@ +#ifndef D_A_SALBAGE_OBJ_H +#define D_A_SALBAGE_OBJ_H + +#include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s_acch.h" +#include "d/col/cc/d_cc_d.h" +#include "d/d_shadow.h" +#include "m/m3d/m_smdl.h" +#include "m/m_mtx.h" +#include "m/m_quat.h" +#include "m/m_vec.h" +#include "s/s_State.hpp" +#include "toBeSorted/dowsing_target.h" + +class dAcSalbageObj_c; + +class SalbageRelated { +public: + SalbageRelated(dAcSalbageObj_c *obj) : mpObj(obj), mSalvageObjId(6) {} + + /* vt 0x08 */ virtual ~SalbageRelated() {} + /* vt 0x0C */ virtual void setCarried() { + mCarried = true; + } + /* vt 0x10 */ virtual void setNotCarried() { + mCarried = false; + } + /* vt 0x14 */ virtual bool isCarried() const { + return mCarried; + } + /* vt 0x18 */ virtual void setHidden() { + mHidden = true; + } + /* vt 0x1C */ virtual void setNotHidden() { + mHidden = false; + } + /* vt 0x20 */ virtual bool isHidden() const { + return mHidden; + } + /* vt 0x24 */ virtual s32 getSalvageObjId() const { + return mSalvageObjId; + } + /* vt 0x28 */ virtual void doDemoThrow(); + +private: + /* 0x04 */ dAcSalbageObj_c *mpObj; + /* 0x08 */ bool mCarried; + /* 0x09 */ bool mHidden; + /* 0x0C */ s32 mSalvageObjId; +}; + +/** + * Actor - Object - Salvage + * + * Base class for objects that can be carried by + * the Salvage Robot NPC, AKA Scrapper. + */ +class dAcSalbageObj_c : public dAcObjBase_c { + friend class SalbageRelated; + + enum Behavior_e { + /// The object is stationary and disappears when picked up + BEHAVIOR_STATIONARY, + /// The object is being carried and disappears when dropped + BEHAVIOR_CARRY, + /// The object is being carried in the Sky by the salvage robot + BEHAVIOR_FLY, + }; + +public: + dAcSalbageObj_c() : mStateMgr(*this), mSalbageRelated(this), mDowsingTarget(this, DowsingTarget::SLOT_NONE) {} + virtual ~dAcSalbageObj_c() {} + + virtual int preExecute() override; + virtual int draw() override; + virtual int preDraw() override; + + virtual int actorExecute() override; + virtual void doInteraction(s32) override; + + /* vt 0x80 */ virtual bool vt_0x80() const { + return false; + } + +protected: + bool shouldBeActiveDowsingTarget() const; + void initSalbageObj(); + void loadBehaviorFromParams(); + void calcMtxFromSalbageNpc(mMtx_c &ret); + void addAttentionTargetIfNeeded(); + void addAttentionTarget(); + + void initCcAndBg(); + + void executeInternal(); + void updateCc(); + void updateBgAcchCir(); + void updateMdl(); + + /* vt 0x84-0x8C */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Wait); + /* vt 0x90-0x98 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Carried); + /* vt 0x9C-0xA4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Demo); + /* vt 0xA8-0xB0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, DemoThrow); + /* vt 0xB4-0xBC */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Fly); + /* vt 0xC0-0xC8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, After); + STATE_FUNC_DECLARE(dAcSalbageObj_c, Kill); + + /* vt 0xCC */ virtual mMtx_c calcWorldMtx(); + /* vt 0xD0 */ virtual void vt_0xD0() {} + + /* vt 0xD4 */ virtual bool isInStateWait() const { + return mStateMgr.isState(StateID_Wait); + } + /* vt 0xD8 */ virtual bool isInStateWaitOrDemoThrow() const { + return mStateMgr.isState(StateID_Wait) || mStateMgr.isState(StateID_DemoThrow); + } + /* vt 0xDC */ virtual DowsingTarget::DowsingSlot getDowsingSlot() const { + return DowsingTarget::SLOT_QUEST; + } + /* vt 0xE0 */ virtual f32 getCcRadius() const { + return 0.0f; + } + /* vt 0xE4 */ virtual f32 getCcHeight() const { + return 0.0f; + } + /* vt 0xE8 */ virtual f32 getBgAcchCirRadius() const { + return 0.0f; + } + /* vt 0xEC */ virtual f32 getBgAcchCirHeight() const { + return 0.0f; + } + /* vt 0xF0 */ virtual f32 getPoscopy2YOffset() const { + return 0.0f; + } + /* vt 0xF4 */ virtual f32 getPoscopy3YOffset() const { + return 0.0f; + } + /* vt 0xF8 */ virtual f32 getDowsingUnusedF32() const { + return 1500.0f; + } + /* vt 0xFC */ virtual f32 getDowsingTargetYOffset() const { + return 50.0f; + } + + /* 0x330 */ u8 _0x330[0x334 - 0x330]; + + /* 0x334 */ m3d::smdl_c *mpMdl; + /* 0x338 */ dShadowCircle_c mShadow; + /* 0x340 */ mQuat_c mShadowRot; + /* 0x350 */ dBgS_AcchCir mBgAcchCir; + /* 0x3AC */ dBgS_ObjAcch mBgObjAcch; + /* 0x75C */ dCcD_Cyl mCcCyl; + /* 0x8AC */ STATE_MGR_DECLARE(dAcSalbageObj_c); + /* 0x8E8 */ s32 mBehavior; + /* 0x8EC */ bool mIsDemoState; + /* 0x8F0 */ SalbageRelated mSalbageRelated; + /* 0x900 */ f32 field_0x900; + /* 0x904 */ s16 field_0x904; + /* 0x908 */ mMtx_c mWorldSRMtx; + /* 0x938 */ f32 field_0x938; + /* 0x93C */ DowsingTarget mDowsingTarget; + /* 0x95C */ mVec3_c field_0x95C; + /* 0x968 */ bool mIsDowsingRegistered; + /* 0x96C */ const sStateID_c *mpNextStateId; +}; + +#endif diff --git a/include/d/a/npc/d_a_npc_salbage_robot.h b/include/d/a/npc/d_a_npc_salbage_robot.h index b1267b30..f23d7dfb 100644 --- a/include/d/a/npc/d_a_npc_salbage_robot.h +++ b/include/d/a/npc/d_a_npc_salbage_robot.h @@ -1,13 +1,13 @@ #ifndef D_A_NPC_SALBAGE_ROBOT_H #define D_A_NPC_SALBAGE_ROBOT_H -#include "d/a/npc/d_a_npc.h" +#include "d/a/npc/d_a_ordinary_npc.h" +#include "m/m_mtx.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -class dAcNpcSlb_c : public dAcNpc_c { +class dAcNpcSlb_c : public dAcOrdinaryNpc_c { public: - dAcNpcSlb_c() : mStateMgr(*this, sStateID::null) {} + dAcNpcSlb_c() {} virtual ~dAcNpcSlb_c() {} STATE_FUNC_DECLARE(dAcNpcSlb_c, Hide); @@ -16,8 +16,15 @@ public: STATE_FUNC_DECLARE(dAcNpcSlb_c, Kill); STATE_FUNC_DECLARE(dAcNpcSlb_c, Kill2); + // ouch + mMtx_c getCarriedObjMtx() const { + return mCarryObjMtx; + } + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcNpcSlb_c); + u8 _pad[0xD50 - sizeof(dAcOrdinaryNpc_c)]; + + /* 0xD50 */ mMtx_c mCarryObjMtx; }; #endif diff --git a/include/d/a/npc/d_a_npc_talk_kensei.h b/include/d/a/npc/d_a_npc_talk_kensei.h new file mode 100644 index 00000000..614bb4a6 --- /dev/null +++ b/include/d/a/npc/d_a_npc_talk_kensei.h @@ -0,0 +1,16 @@ +#ifndef D_A_NPC_TALK_KENSEI_H +#define D_A_NPC_TALK_KENSEI_H + +#include "d/a/npc/d_a_ordinary_npc.h" + +class dAcSalbageObj_c; + +class dAcNpcTalkKensei_c : public dAcOrdinaryNpc_c { +public: + static dAcNpcTalkKensei_c *GetInstance(); + void triggerSalvageQuestion(dAcSalbageObj_c *); + +private: +}; + +#endif diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 2b0c75d8..1f950092 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -18,6 +18,8 @@ #include "m/m_vec.h" #include "m/types_m.h" +class SalbageRelated; + // Ghidra: ActorObjectBase // size: 0x330 @@ -52,7 +54,7 @@ public: /* 0x210 */ dLinkage_c mLinkage; /* 0x2B8 */ u32 mField_0x2B8; /* 0x2BC */ ActorLighting mLightingInfo; - /* 0x32C */ u32 mField_0x32C; + /* 0x32C */ SalbageRelated *mpSalbageRelated; public: mVec3_c &GetOldPosition() { diff --git a/include/d/a/obj/d_a_obj_pot_sal.h b/include/d/a/obj/d_a_obj_pot_sal.h index f9d6e50c..5a4a6e49 100644 --- a/include/d/a/obj/d_a_obj_pot_sal.h +++ b/include/d/a/obj/d_a_obj_pot_sal.h @@ -1,17 +1,18 @@ #ifndef D_A_OBJ_POT_SAL_H #define D_A_OBJ_POT_SAL_H -#include "d/a/obj/d_a_obj_base.h" +#include "d/a/d_a_salbage_obj.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -class dAcOpotSal_c : public dAcObjBase_c { +class dAcOpotSal_c : public dAcSalbageObj_c { public: - dAcOpotSal_c() : mStateMgr(*this, sStateID::null) {} + dAcOpotSal_c() {} virtual ~dAcOpotSal_c() {} + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcOpotSal_c, dAcSalbageObj_c, DemoThrow); + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcOpotSal_c, dAcSalbageObj_c, After); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcOpotSal_c); }; #endif diff --git a/include/toBeSorted/attention.h b/include/toBeSorted/attention.h index 96a8ed3e..45a59c8c 100644 --- a/include/toBeSorted/attention.h +++ b/include/toBeSorted/attention.h @@ -169,10 +169,10 @@ public: private: /* 0xBDC */ u8 field_0xBDC; - + +public: static AttentionManager *sInstance; -public: bool create(); bool createHeap(); bool execute(); diff --git a/include/toBeSorted/dowsing_target.h b/include/toBeSorted/dowsing_target.h index d988e86c..90e1763f 100644 --- a/include/toBeSorted/dowsing_target.h +++ b/include/toBeSorted/dowsing_target.h @@ -2,7 +2,6 @@ #define DOWSING_TARGET_H #include "d/a/d_a_base.h" -#include "f/f_list_nd.h" #include "m/m_vec.h" class DowsingTarget { @@ -32,6 +31,10 @@ public: virtual ~DowsingTarget(); // 0x08 virtual void getPosition(mVec3_c &); // 0x0C + void setOffset(const mVec3_c &offset) { + mOffset = offset; + } + bool doRegister(); bool doUnregister(); void initialize(DowsingSlot type, u16 unk, const mVec3_c *offset, f32 f); diff --git a/include/toBeSorted/salvage_mgr.h b/include/toBeSorted/salvage_mgr.h new file mode 100644 index 00000000..3e268936 --- /dev/null +++ b/include/toBeSorted/salvage_mgr.h @@ -0,0 +1,39 @@ +#ifndef D_SALVAGE_MGR_H +#define D_SALVAGE_MGR_H + +#include "common.h" +#include "d/a/d_a_base.h" +#include "m/m_mtx.h" + +class dAcSalbageObj_c; +class dAcNpcSlb_c; + +class dSalvageMgr_c { +public: + // Directly accessing seems to be required + // static dSalvageMgr_c *GetInstance() { + // return sInstance; + // } + + bool checkDeliveredStoryflag(const s32& id) const; + bool startedQuestForSalvageObj(const dAcSalbageObj_c *obj) const; + bool hasDowsingForSalvageObj(const dAcSalbageObj_c *obj) const; + mMtx_c getCarryRotMtx(const s32 &id) const; + mMtx_c getCarryRotMtx2(const s32 &id) const { + return getCarryRotMtx(id); + } + s32 getCurrentSalvageObjId() const; + void deleteObjAndSlb(); + + static dSalvageMgr_c *sInstance; + + bool hasObjAndSlb() const { + return mObjRef.isLinked() && mSlbRef.isLinked(); + } + + /* 0x00 */ dAcRef_c mObjRef; + /* 0x0C */ dAcRef_c mSlbRef; +private: +}; + +#endif diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp new file mode 100644 index 00000000..d85b0365 --- /dev/null +++ b/src/d/a/d_a_salbage_obj.cpp @@ -0,0 +1,390 @@ +#include "d/a/d_a_salbage_obj.h" + +#include "c/c_math.h" +#include "common.h" +#include "d/a/npc/d_a_npc_salbage_robot.h" +#include "d/a/npc/d_a_npc_talk_kensei.h" +#include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s.h" +#include "d/col/bg/d_bg_s_gnd_chk.h" +#include "d/col/cc/d_cc_s.h" +#include "f/f_profile_name.h" +#include "m/m_mtx.h" +#include "m/m_vec.h" +#include "toBeSorted/attention.h" +#include "toBeSorted/dowsing_target.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/salvage_mgr.h" + +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, Wait); +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, Carried); +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, Demo); +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, DemoThrow); +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, Fly); +STATE_VIRTUAL_DEFINE(dAcSalbageObj_c, After); +STATE_DEFINE(dAcSalbageObj_c, Kill); + +static dCcD_SrcCyl sCylSrc = { + /* mObjInf */ + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + /* mObjTg */ + {~0, 0x111, {0, 0x02, 0x407}, 0, 0}, + /* mObjCo */ {0xE9}}, + /* mCylInf */ + {0.0f, 0.0f} +}; + +static const InteractionTargetDef sInteractionTargetDefs[] = { + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 60.0f, -50.0f, 150.0f, 50.0f, 1.0f}, + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -750.0f, 500.0f, 50.0f, 1.0f}, + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, + {0, 2, 1, EXAMINE_TALK, 0, 250.0f, 45.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, + {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, +}; + +void SalbageRelated::doDemoThrow() { + mpObj->mStateMgr.changeState(dAcSalbageObj_c::StateID_DemoThrow); +} + +int dAcSalbageObj_c::actorExecute() { + executeInternal(); + calcVelocity(); + position += velocity; + position += mStts.GetCcMove(); + if (isInStateWait()) { + updateCc(); + } + if (isInStateWaitOrDemoThrow()) { + updateBgAcchCir(); + } + updateMdl(); + return SUCCEEDED; +} + +int dAcSalbageObj_c::preExecute() { + // TODO - this matches, but so does `bool` conversion... + int result = dAcObjBase_c::preExecute() == NOT_READY ? NOT_READY : SUCCEEDED; + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { + s32 id = mSalbageRelated.getSalvageObjId(); + if (id != 2 && id != 6) { + if (!EventManager::isInEvent()) { + deleteRequest(); + } + return NOT_READY; + } + } + + if (mBehavior == BEHAVIOR_STATIONARY) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (!EventManager::isInEvent()) { + deleteRequest(); + } + return NOT_READY; + } + } + + if (shouldBeActiveDowsingTarget()) { + if (mIsDowsingRegistered == false) { + mDowsingTarget.doRegister(); + mIsDowsingRegistered = true; + } + } else { + if (mIsDowsingRegistered == true) { + mDowsingTarget.doUnregister(); + mIsDowsingRegistered = false; + } + } + + getDowsingUnusedF32(); + field_0x95C.set(0.0f, getDowsingTargetYOffset(), 0.0f); + mDowsingTarget.setOffset(field_0x95C); + + return result; +} + +int dAcSalbageObj_c::preDraw() { + if (dAcObjBase_c::preDraw() == NOT_READY) { + return NOT_READY; + } else { + return mSalbageRelated.isHidden() ? NOT_READY : SUCCEEDED; + } +} + +int dAcSalbageObj_c::draw() { + drawModelType1(mpMdl); + fn_8002edb0(mShadow, *mpMdl, &mShadowRot, -1, -1, field_0x900); + return SUCCEEDED; +} + +void dAcSalbageObj_c::executeInternal() { + if (!EventManager::isInEvent()) { + if (mIsDemoState == true) { + mIsDemoState = false; + if (mpNextStateId != nullptr) { + mStateMgr.changeState(*mpNextStateId); + } else { + mStateMgr.changeState(StateID_Wait); + } + } + } else { + if (mIsDemoState == false) { + mIsDemoState = true; + mStateMgr.changeState(StateID_Demo); + } + } + mStateMgr.executeState(); +} + +void dAcSalbageObj_c::initSalbageObj() { + mShadowRot.v = mVec3_c(0.0f, 90.0f, 0.0f); + mShadowRot.w = 180.0f; + mScale.set(1.0f, 1.0f, 1.0f); + mBehavior = getFromParams(4, 0xF); + mpSalbageRelated = &mSalbageRelated; + initCcAndBg(); + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { + if (mBehavior == BEHAVIOR_CARRY && vt_0x80()) { + mStateMgr.changeState(StateID_After); + } else { + mStateMgr.changeState(StateID_Kill); + } + } else { + switch (mBehavior) { + case BEHAVIOR_CARRY: { + forwardSpeed = 0.0f; + velocity.set(0.0f, 0.0f, 0.0f); + forwardAccel = 0.0f; + mSalbageRelated.setHidden(); + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + mStateMgr.changeState(StateID_Kill); + return; + } else { + mSalbageRelated.setCarried(); + mStateMgr.changeState(StateID_Carried); + } + break; + } + case BEHAVIOR_FLY: { + forwardSpeed = 0.0f; + velocity.set(0.0f, 0.0f, 0.0f); + forwardAccel = 0.0f; + mStateMgr.changeState(StateID_Fly); + break; + } + default: { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + mStateMgr.changeState(StateID_Kill); + return; + } else { + mBehavior = BEHAVIOR_STATIONARY; + forwardAccel = -1.0f; + forwardMaxSpeed = -40.0f; + initCcAndBg(); + forwardSpeed = 0.0f; + forwardAccel = 0.0f; + velocity.set(0.0f, 0.0f, 0.0f); + mStateMgr.changeState(StateID_Wait); + } + break; + } + } + dSalvageMgr_c::sInstance->mObjRef.link(this); + } +} + +void dAcSalbageObj_c::doInteraction(s32 arg) { + if (arg == 4 || arg == 5 || arg == 12) { + if (mStateMgr.isState(StateID_Wait) && dSalvageMgr_c::sInstance->hasObjAndSlb()) { + dAcNpcTalkKensei_c::GetInstance()->triggerSalvageQuestion(this); + } + } +} + +void dAcSalbageObj_c::addAttentionTargetIfNeeded() { + switch (mSalbageRelated.getSalvageObjId()) { + case 5: + case 6: return; + default: addAttentionTarget(); break; + } +} + +void dAcSalbageObj_c::addAttentionTarget() { + AttentionManager::sInstance->addTarget( + *this, sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()], 0, nullptr + ); + + InteractionTargetDef copy = sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()]; + copy.field_0x00 = 1; + AttentionManager::sInstance->addTarget(*this, copy, 0, nullptr); +} + +void dAcSalbageObj_c::initCcAndBg() { + mBgObjAcch.Set(this, 1, &mBgAcchCir); + mBgObjAcch.SetWaterNone(); + mBgObjAcch.SetRoofNone(); + mBgObjAcch.SetGndThinCellingOff(); + mBgAcchCir.SetWall(0.0f, 100.0f); + mStts.SetDefaultRank(); + mCcCyl.Set(sCylSrc); + mCcCyl.SetStts(mStts); +} + +bool dAcSalbageObj_c::shouldBeActiveDowsingTarget() const { + if (mBehavior != BEHAVIOR_STATIONARY) { + return false; + } + + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + return false; + } + + if (dSalvageMgr_c::sInstance->hasDowsingForSalvageObj(this) == false) { + return false; + } else { + return mSalbageRelated.getSalvageObjId() != 6; + } +} + +void dAcSalbageObj_c::updateCc() { + mCcCyl.SetC(position); + mCcCyl.SetR(getCcRadius()); + mCcCyl.SetH(getCcHeight()); + dCcS::GetInstance()->Set(&mCcCyl); +} + +void dAcSalbageObj_c::updateBgAcchCir() { + mBgAcchCir.SetWall(getBgAcchCirHeight(), getBgAcchCirRadius()); + mBgObjAcch.CrrPos(*dBgS::GetInstance()); +} + +void dAcSalbageObj_c::calcMtxFromSalbageNpc(mMtx_c &ret) { + dAcNpcSlb_c *npc = dSalvageMgr_c::sInstance->mSlbRef.get(); + if (npc == nullptr) { + ret.transS(position.x, position.y, position.z); + ret.ZXYrotM(rotation); + } else { + ret = npc->getCarriedObjMtx(); + mMtx_c rotMtx = dSalvageMgr_c::sInstance->getCarryRotMtx2(mSalbageRelated.getSalvageObjId()); + MTXConcat(ret, rotMtx, ret); + ret.getTranslation(position); + } +} + +mMtx_c dAcSalbageObj_c::calcWorldMtx() { + mMtx_c ret; + if (mSalbageRelated.isCarried()) { + calcMtxFromSalbageNpc(ret); + } else { + ret.transS(position); + ret.ZXYrotM(rotation); + } + + return ret; +} + +void dAcSalbageObj_c::updateMdl() { + mWorldMtx = calcWorldMtx(); + mpMdl->setLocalMtx(mWorldMtx); + mpMdl->setScale(mScale); + mpMdl->calc(false); + field_0x900 = 0.0f; + + mVec3_c translate; + mWorldMtx.getTranslation(translate); + if (dBgS_ObjGndChk::CheckPos(translate)) { + f32 diff = translate.y - dBgS_ObjGndChk::GetGroundHeight(); + if (diff >= 0.0f && diff <= 850.0f) { + field_0x900 = diff; + } + } + + f32 scale = mScale.x; + poscopy3 = position; + poscopy3.y += getPoscopy3YOffset() * scale; + poscopy2 = position; + poscopy2.y += getPoscopy2YOffset() * scale; +} + +void dAcSalbageObj_c::loadBehaviorFromParams() { + mBehavior = getFromParams(4, 0xF); +} + +void dAcSalbageObj_c::initializeState_Wait() { + mDowsingTarget.initialize(getDowsingSlot(), 0, &field_0x95C, getDowsingUnusedF32()); + mDowsingTarget.doRegister(); + mIsDowsingRegistered = true; +} +void dAcSalbageObj_c::executeState_Wait() { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + if (!dSalvageMgr_c::sInstance->mSlbRef.isLinked()) { + mVec3_c pos(position.x, position.y + 100000.0f, position.z); + dAcObjBase_c::create(fProfile::NPC_SLB, roomid, 0xFFFFFD01, &pos, nullptr, nullptr, -1); + } + + if (dSalvageMgr_c::sInstance->startedQuestForSalvageObj(this)) { + addAttentionTargetIfNeeded(); + } + } +} +void dAcSalbageObj_c::finalizeState_Wait() {} + +void dAcSalbageObj_c::initializeState_Carried() { + // Return to "carried" after demo ends + mpNextStateId = &StateID_Carried; +} +void dAcSalbageObj_c::executeState_Carried() {} +void dAcSalbageObj_c::finalizeState_Carried() {} + +void dAcSalbageObj_c::initializeState_Fly() {} +void dAcSalbageObj_c::executeState_Fly() {} +void dAcSalbageObj_c::finalizeState_Fly() {} + +void dAcSalbageObj_c::initializeState_After() { + dSalvageMgr_c::sInstance->deleteObjAndSlb(); +} +void dAcSalbageObj_c::executeState_After() { + dSalvageMgr_c::sInstance->deleteObjAndSlb(); +} +void dAcSalbageObj_c::finalizeState_After() {} + +void dAcSalbageObj_c::initializeState_Demo() {} +void dAcSalbageObj_c::executeState_Demo() {} +void dAcSalbageObj_c::finalizeState_Demo() {} + +void dAcSalbageObj_c::initializeState_DemoThrow() { + mWorldSRMtx = mWorldMtx; + mWorldSRMtx.m[0][3] = 0.0f; + mWorldSRMtx.m[1][3] = 0.0f; + mWorldSRMtx.m[2][3] = 0.0f; + + mWorldMtx.getTranslation(position); + field_0x938 = 0.0f; + + mVec3_c result; + MTXMultVecSR(mWorldSRMtx, mVec3_c::Ez, result); + rotation.y = result.atan2sX_Z(); + rotation.x = -cM::atan2s(result.y, result.absXZ()); + rotation.z = field_0x904; + angle.x = 0; + angle.y = rotation.y; + angle.z = 0; + forwardMaxSpeed = -40.0f; + mBgObjAcch.Set(this, 1, &mBgAcchCir); + mBgObjAcch.SetWaterNone(); + mBgObjAcch.SetRoofNone(); + mBgObjAcch.SetGndThinCellingOff(); + mBgAcchCir.SetWall(0.0f, 100.0f); + mSalbageRelated.setNotCarried(); +} +void dAcSalbageObj_c::executeState_DemoThrow() {} +void dAcSalbageObj_c::finalizeState_DemoThrow() {} + +void dAcSalbageObj_c::initializeState_Kill() { + deleteRequest(); +} +void dAcSalbageObj_c::executeState_Kill() { + deleteRequest(); +} +void dAcSalbageObj_c::finalizeState_Kill() {} From f374acbae7de9f2dbb25e5959bf2974804f498a7 Mon Sep 17 00:00:00 2001 From: robojumper Date: Fri, 22 Aug 2025 00:08:45 +0200 Subject: [PATCH 2/4] Fix symbol errors --- .../d_a_obj_diviner_crystalNP/symbols.txt | 62 +++++++++---------- .../SOUE01/rels/d_a_obj_pot_salNP/symbols.txt | 62 +++++++++---------- .../SOUE01/rels/d_a_obj_properaNP/symbols.txt | 58 ++++++++--------- .../rels/d_a_obj_rouletteNP/symbols.txt | 62 +++++++++---------- .../rels/d_a_obj_water_jarNP/symbols.txt | 58 ++++++++--------- include/d/a/d_a_salbage_obj.h | 38 ++++++++---- include/d/a/obj/d_a_obj_diviner_crystal.h | 20 ++++-- include/d/a/obj/d_a_obj_pot_sal.h | 5 +- include/d/a/obj/d_a_obj_propera.h | 15 +++-- include/d/a/obj/d_a_obj_roulette.h | 15 +++-- include/d/a/obj/d_a_obj_water_jar.h | 25 ++++++-- src/REL/d/a/obj/d_a_obj_diviner_crystal.cpp | 11 ++++ src/REL/d/a/obj/d_a_obj_pot_sal.cpp | 11 ++++ src/REL/d/a/obj/d_a_obj_propera.cpp | 6 ++ src/REL/d/a/obj/d_a_obj_roulette.cpp | 11 ++++ src/REL/d/a/obj/d_a_obj_water_jar.cpp | 6 ++ src/d/a/d_a_salbage_obj.cpp | 10 +-- 17 files changed, 286 insertions(+), 189 deletions(-) diff --git a/config/SOUE01/rels/d_a_obj_diviner_crystalNP/symbols.txt b/config/SOUE01/rels/d_a_obj_diviner_crystalNP/symbols.txt index d49b58bb..ac1d4c9b 100644 --- a/config/SOUE01/rels/d_a_obj_diviner_crystalNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_diviner_crystalNP/symbols.txt @@ -4,11 +4,11 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcODivinerCrystal_c_classInit__Fv = .text:0x000000F0; // type:function size:0x1A8 -fn_592_2A0 = .text:0x000002A0; // type:function size:0x58 -__dt__33sFState_c<20dAcODivinerCrystal_c>Fv = .text:0x00000300; // type:function size:0x58 -__dt__36sFStateFct_c<20dAcODivinerCrystal_c>Fv = .text:0x00000360; // type:function size:0x6C -__dt__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000003D0; // type:function size:0xA0 -__dt__59sFStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000470; // type:function size:0xA4 +__dt__15dShadowCircle_cFv = .text:0x000002A0; // type:function size:0x58 +__dt__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000300; // type:function size:0x58 +__dt__31sFStateFct_c<15dAcSalbageObj_c>Fv = .text:0x00000360; // type:function size:0x6C +__dt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000003D0; // type:function size:0xA0 +__dt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000470; // type:function size:0xA4 fn_592_520 = .text:0x00000520; // type:function size:0x40 fn_592_560 = .text:0x00000560; // type:function size:0x168 fn_592_6D0 = .text:0x000006D0; // type:function size:0x2C4 @@ -18,7 +18,7 @@ fn_592_A30 = .text:0x00000A30; // type:function size:0x5C fn_592_A90 = .text:0x00000A90; // type:function size:0x8C fn_592_B20 = .text:0x00000B20; // type:function size:0x50 fn_592_B70 = .text:0x00000B70; // type:function size:0xB4 -getStateID__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C30; // type:function size:0x10 +getStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C30; // type:function size:0x10 fn_592_C40 = .text:0x00000C40; // type:function size:0xB4 fn_592_D00 = .text:0x00000D00; // type:function size:0x58 fn_592_D60 = .text:0x00000D60; // type:function size:0x98 @@ -40,25 +40,25 @@ fn_592_10A0 = .text:0x000010A0; // type:function size:0xC fn_592_10B0 = .text:0x000010B0; // type:function size:0xC fn_592_10C0 = .text:0x000010C0; // type:function size:0xC __dt__20dAcODivinerCrystal_cFv = .text:0x000010D0; // type:function size:0x138 -executeState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001210; // type:function size:0x10 -changeState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00001220; // type:function size:0x10 -getOldStateID__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001230; // type:function size:0x10 -build__36sFStateFct_c<20dAcODivinerCrystal_c>FRC12sStateIDIf_c = .text:0x00001240; // type:function size:0x60 -dispose__36sFStateFct_c<20dAcODivinerCrystal_c>FRP10sStateIf_c = .text:0x000012A0; // type:function size:0xC -initialize__33sFState_c<20dAcODivinerCrystal_c>Fv = .text:0x000012B0; // type:function size:0x1C -execute__33sFState_c<20dAcODivinerCrystal_c>Fv = .text:0x000012D0; // type:function size:0x1C -finalize__33sFState_c<20dAcODivinerCrystal_c>Fv = .text:0x000012F0; // type:function size:0x1C -initializeState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001310; // type:function size:0x10 -finalizeState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001320; // type:function size:0x10 -refreshState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001330; // type:function size:0x10 -getState__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001340; // type:function size:0x10 -getNewStateID__89sStateMgr_c<20dAcODivinerCrystal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001350; // type:function size:0x10 +executeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001210; // type:function size:0x10 +changeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00001220; // type:function size:0x10 +getOldStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001230; // type:function size:0x10 +build__31sFStateFct_c<15dAcSalbageObj_c>FRC12sStateIDIf_c = .text:0x00001240; // type:function size:0x60 +dispose__31sFStateFct_c<15dAcSalbageObj_c>FRP10sStateIf_c = .text:0x000012A0; // type:function size:0xC +initialize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000012B0; // type:function size:0x1C +execute__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000012D0; // type:function size:0x1C +finalize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000012F0; // type:function size:0x1C +initializeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001310; // type:function size:0x10 +finalizeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001320; // type:function size:0x10 +refreshState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001330; // type:function size:0x10 +getState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001340; // type:function size:0x10 +getNewStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001350; // type:function size:0x10 __sinit_\d_a_obj_diviner_crystal_cpp = .text:0x00001360; // type:function size:0x1DC scope:local __dt__35sFStateID_c<20dAcODivinerCrystal_c>Fv = .text:0x00001540; // type:function size:0x58 -fn_592_15A0 = .text:0x000015A0; // type:function size:0x5C -fn_592_1600 = .text:0x00001600; // type:function size:0xC -fn_592_1610 = .text:0x00001610; // type:function size:0xDC -fn_592_16F0 = .text:0x000016F0; // type:function size:0xE0 +__dt__42sFStateVirtualID_c<20dAcODivinerCrystal_c>Fv = .text:0x000015A0; // type:function size:0x5C +baseID_DemoThrow<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x00001600; // type:function size:0xC +number__42sFStateVirtualID_c<20dAcODivinerCrystal_c>CFv = .text:0x00001610; // type:function size:0xDC +superID__42sFStateVirtualID_c<20dAcODivinerCrystal_c>CFv = .text:0x000016F0; // type:function size:0xE0 isSameName__35sFStateID_c<20dAcODivinerCrystal_c>CFPCc = .text:0x000017D0; // type:function size:0x88 initializeState__35sFStateID_c<20dAcODivinerCrystal_c>CFR20dAcODivinerCrystal_c = .text:0x00001860; // type:function size:0x30 executeState__35sFStateID_c<20dAcODivinerCrystal_c>CFR20dAcODivinerCrystal_c = .text:0x00001890; // type:function size:0x30 @@ -84,14 +84,14 @@ g_profile_OBJ_DIVINER_CRYSTAL = .data:0x00000000; // type:object size:0x40 data: lbl_592_data_40 = .data:0x00000040; // type:object size:0x14 lbl_592_data_54 = .data:0x00000054; // type:object size:0x14 lbl_592_data_68 = .data:0x00000068; // type:object size:0x48 -lbl_592_data_B0 = .data:0x000000B0; // type:object size:0x100 -lbl_592_data_1B0 = .data:0x000001B0; // type:object size:0x30 -lbl_592_data_1E0 = .data:0x000001E0; // type:object size:0x30 -lbl_592_data_210 = .data:0x00000210; // type:object size:0x18 -lbl_592_data_228 = .data:0x00000228; // type:object size:0x44 -lbl_592_data_26C = .data:0x0000026C; // type:object size:0xA0 -lbl_592_data_30C = .data:0x0000030C; // type:object size:0x34 -lbl_592_data_340 = .data:0x00000340; // type:object size:0x34 +__vt__20dAcODivinerCrystal_c = .data:0x000000B0; // type:object size:0x100 +__vt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c> = .data:0x000001B0; // type:object size:0x30 +__vt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000001E0; // type:object size:0x30 +__vt__31sFStateFct_c<15dAcSalbageObj_c> = .data:0x00000210; // type:object size:0x18 +__vt__28sFState_c<15dAcSalbageObj_c> = .data:0x00000228; // type:object size:0x44 +__vt__15dShadowCircle_c = .data:0x0000026C; // type:object size:0xA0 +__vt__42sFStateVirtualID_c<20dAcODivinerCrystal_c> = .data:0x0000030C; // type:object size:0x34 +__vt__35sFStateID_c<20dAcODivinerCrystal_c> = .data:0x00000340; // type:object size:0x34 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_592_bss_8 = .bss:0x00000008; // type:object size:0x50 data:4byte lbl_592_bss_58 = .bss:0x00000058; // type:object size:0x30 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_pot_salNP/symbols.txt b/config/SOUE01/rels/d_a_obj_pot_salNP/symbols.txt index 0232650a..c983c64b 100644 --- a/config/SOUE01/rels/d_a_obj_pot_salNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_pot_salNP/symbols.txt @@ -4,11 +4,11 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcOpotSal_c_classInit__Fv = .text:0x000000F0; // type:function size:0x14C -fn_100_240 = .text:0x00000240; // type:function size:0x58 -__dt__25sFState_c<12dAcOpotSal_c>Fv = .text:0x000002A0; // type:function size:0x58 -__dt__28sFStateFct_c<12dAcOpotSal_c>Fv = .text:0x00000300; // type:function size:0x6C -__dt__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000370; // type:function size:0xA0 -__dt__51sFStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000410; // type:function size:0xA4 +__dt__15dShadowCircle_cFv = .text:0x00000240; // type:function size:0x58 +__dt__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000002A0; // type:function size:0x58 +__dt__31sFStateFct_c<15dAcSalbageObj_c>Fv = .text:0x00000300; // type:function size:0x6C +__dt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000370; // type:function size:0xA0 +__dt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000410; // type:function size:0xA4 fn_100_4C0 = .text:0x000004C0; // type:function size:0x40 AcOPotSal__initModels = .text:0x00000500; // type:function size:0xF4 AcOPotSal__init = .text:0x00000600; // type:function size:0x130 @@ -36,27 +36,27 @@ fn_100_B50 = .text:0x00000B50; // type:function size:0xC fn_100_B60 = .text:0x00000B60; // type:function size:0xC fn_100_B70 = .text:0x00000B70; // type:function size:0xC __dt__12dAcOpotSal_cFv = .text:0x00000B80; // type:function size:0x120 -executeState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000CA0; // type:function size:0x10 -changeState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000CB0; // type:function size:0x10 -getStateID__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000CC0; // type:function size:0x10 -getOldStateID__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000CD0; // type:function size:0x10 -build__28sFStateFct_c<12dAcOpotSal_c>FRC12sStateIDIf_c = .text:0x00000CE0; // type:function size:0x60 -dispose__28sFStateFct_c<12dAcOpotSal_c>FRP10sStateIf_c = .text:0x00000D40; // type:function size:0xC -initialize__25sFState_c<12dAcOpotSal_c>Fv = .text:0x00000D50; // type:function size:0x1C -execute__25sFState_c<12dAcOpotSal_c>Fv = .text:0x00000D70; // type:function size:0x1C -finalize__25sFState_c<12dAcOpotSal_c>Fv = .text:0x00000D90; // type:function size:0x1C -initializeState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DB0; // type:function size:0x10 -finalizeState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DC0; // type:function size:0x10 -refreshState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DD0; // type:function size:0x10 -getState__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000DE0; // type:function size:0x10 -getNewStateID__81sStateMgr_c<12dAcOpotSal_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000DF0; // type:function size:0x10 +executeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000CA0; // type:function size:0x10 +changeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000CB0; // type:function size:0x10 +getStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000CC0; // type:function size:0x10 +getOldStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000CD0; // type:function size:0x10 +build__31sFStateFct_c<15dAcSalbageObj_c>FRC12sStateIDIf_c = .text:0x00000CE0; // type:function size:0x60 +dispose__31sFStateFct_c<15dAcSalbageObj_c>FRP10sStateIf_c = .text:0x00000D40; // type:function size:0xC +initialize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000D50; // type:function size:0x1C +execute__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000D70; // type:function size:0x1C +finalize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000D90; // type:function size:0x1C +initializeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DB0; // type:function size:0x10 +finalizeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DC0; // type:function size:0x10 +refreshState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DD0; // type:function size:0x10 +getState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000DE0; // type:function size:0x10 +getNewStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000DF0; // type:function size:0x10 __sinit_\d_a_obj_pot_sal_cpp = .text:0x00000E00; // type:function size:0x1E0 scope:local __dt__27sFStateID_c<12dAcOpotSal_c>Fv = .text:0x00000FE0; // type:function size:0x58 -fn_100_1040 = .text:0x00001040; // type:function size:0x5C -fn_100_10A0 = .text:0x000010A0; // type:function size:0xC -fn_100_10B0 = .text:0x000010B0; // type:function size:0xC -fn_100_10C0 = .text:0x000010C0; // type:function size:0xDC -fn_100_11A0 = .text:0x000011A0; // type:function size:0xE0 +__dt__34sFStateVirtualID_c<12dAcOpotSal_c>Fv = .text:0x00001040; // type:function size:0x5C +baseID_After<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x000010A0; // type:function size:0xC +baseID_DemoThrow<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x000010B0; // type:function size:0xC +number__34sFStateVirtualID_c<12dAcOpotSal_c>CFv = .text:0x000010C0; // type:function size:0xDC +superID__34sFStateVirtualID_c<12dAcOpotSal_c>CFv = .text:0x000011A0; // type:function size:0xE0 isSameName__27sFStateID_c<12dAcOpotSal_c>CFPCc = .text:0x00001280; // type:function size:0x88 initializeState__27sFStateID_c<12dAcOpotSal_c>CFR12dAcOpotSal_c = .text:0x00001310; // type:function size:0x30 executeState__27sFStateID_c<12dAcOpotSal_c>CFR12dAcOpotSal_c = .text:0x00001340; // type:function size:0x30 @@ -75,13 +75,13 @@ lbl_100_rodata_30 = .rodata:0x00000030; // type:object size:0x4 align:4 data:flo lbl_100_rodata_34 = .rodata:0x00000034; // type:object size:0x4 align:4 data:float g_profile_OBJ_POT_SAL = .data:0x00000000; // type:object size:0x40 data:4byte lbl_100_data_40 = .data:0x00000040; // type:object size:0x20 -AcOPotSal__vtable = .data:0x00000060; // type:object size:0x100 -lbl_100_data_160 = .data:0x00000160; // type:object size:0x30 -lbl_100_data_190 = .data:0x00000190; // type:object size:0x30 -lbl_100_data_1C0 = .data:0x000001C0; // type:object size:0x18 -lbl_100_data_1D8 = .data:0x000001D8; // type:object size:0x44 -lbl_100_data_21C = .data:0x0000021C; // type:object size:0x90 -lbl_100_data_2AC = .data:0x000002AC; // type:object size:0x68 +__vt__12dAcOpotSal_c = .data:0x00000060; // type:object size:0x100 +__vt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c> = .data:0x00000160; // type:object size:0x30 +__vt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000190; // type:object size:0x30 +__vt__31sFStateFct_c<15dAcSalbageObj_c> = .data:0x000001C0; // type:object size:0x18 +__vt__28sFState_c<15dAcSalbageObj_c> = .data:0x000001D8; // type:object size:0x44 +__vt__15dShadowCircle_c = .data:0x0000021C; // type:object size:0x90 +__vt__34sFStateVirtualID_c<12dAcOpotSal_c> = .data:0x000002AC; // type:object size:0x68 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_100_bss_8 = .bss:0x00000008; // type:object size:0x4C data:4byte lbl_100_bss_54 = .bss:0x00000054; // type:object size:0x34 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_properaNP/symbols.txt b/config/SOUE01/rels/d_a_obj_properaNP/symbols.txt index 2b3edf49..92c79861 100644 --- a/config/SOUE01/rels/d_a_obj_properaNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_properaNP/symbols.txt @@ -5,10 +5,10 @@ __register_global_object = .text:0x00000070; // type:function size:0x1C scope:gl __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcObjPropera_c_classInit__Fv = .text:0x000000F0; // type:function size:0x148 fn_575_240 = .text:0x00000240; // type:function size:0x58 -__dt__28sFState_c<15dAcObjPropera_c>Fv = .text:0x000002A0; // type:function size:0x58 -__dt__31sFStateFct_c<15dAcObjPropera_c>Fv = .text:0x00000300; // type:function size:0x6C -__dt__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000370; // type:function size:0xA0 -__dt__54sFStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000410; // type:function size:0xA4 +__dt__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000002A0; // type:function size:0x58 +__dt__31sFStateFct_c<15dAcSalbageObj_c>Fv = .text:0x00000300; // type:function size:0x6C +__dt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000370; // type:function size:0xA0 +__dt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000410; // type:function size:0xA4 fn_575_4C0 = .text:0x000004C0; // type:function size:0x40 fn_575_500 = .text:0x00000500; // type:function size:0x9C fn_575_5A0 = .text:0x000005A0; // type:function size:0x98 @@ -20,7 +20,7 @@ fn_575_7F0 = .text:0x000007F0; // type:function size:0x4 fn_575_800 = .text:0x00000800; // type:function size:0xC fn_575_810 = .text:0x00000810; // type:function size:0xC fn_575_820 = .text:0x00000820; // type:function size:0xB4 -getStateID__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x000008E0; // type:function size:0x10 +getStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x000008E0; // type:function size:0x10 fn_575_8F0 = .text:0x000008F0; // type:function size:0x50 fn_575_940 = .text:0x00000940; // type:function size:0x8 fn_575_950 = .text:0x00000950; // type:function size:0x8 @@ -31,25 +31,25 @@ fn_575_990 = .text:0x00000990; // type:function size:0xC fn_575_9A0 = .text:0x000009A0; // type:function size:0xC fn_575_9B0 = .text:0x000009B0; // type:function size:0xC __dt__15dAcObjPropera_cFv = .text:0x000009C0; // type:function size:0x120 -executeState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000AE0; // type:function size:0x10 -changeState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000AF0; // type:function size:0x10 -getOldStateID__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000B00; // type:function size:0x10 -build__31sFStateFct_c<15dAcObjPropera_c>FRC12sStateIDIf_c = .text:0x00000B10; // type:function size:0x60 -dispose__31sFStateFct_c<15dAcObjPropera_c>FRP10sStateIf_c = .text:0x00000B70; // type:function size:0xC -initialize__28sFState_c<15dAcObjPropera_c>Fv = .text:0x00000B80; // type:function size:0x1C -execute__28sFState_c<15dAcObjPropera_c>Fv = .text:0x00000BA0; // type:function size:0x1C -finalize__28sFState_c<15dAcObjPropera_c>Fv = .text:0x00000BC0; // type:function size:0x1C -initializeState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000BE0; // type:function size:0x10 -finalizeState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000BF0; // type:function size:0x10 -refreshState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000C00; // type:function size:0x10 -getState__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C10; // type:function size:0x10 -getNewStateID__84sStateMgr_c<15dAcObjPropera_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C20; // type:function size:0x10 +executeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000AE0; // type:function size:0x10 +changeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000AF0; // type:function size:0x10 +getOldStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000B00; // type:function size:0x10 +build__31sFStateFct_c<15dAcSalbageObj_c>FRC12sStateIDIf_c = .text:0x00000B10; // type:function size:0x60 +dispose__31sFStateFct_c<15dAcSalbageObj_c>FRP10sStateIf_c = .text:0x00000B70; // type:function size:0xC +initialize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000B80; // type:function size:0x1C +execute__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000BA0; // type:function size:0x1C +finalize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000BC0; // type:function size:0x1C +initializeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000BE0; // type:function size:0x10 +finalizeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000BF0; // type:function size:0x10 +refreshState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000C00; // type:function size:0x10 +getState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C10; // type:function size:0x10 +getNewStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C20; // type:function size:0x10 __sinit_\d_a_obj_propera_cpp = .text:0x00000C30; // type:function size:0x124 scope:local __dt__30sFStateID_c<15dAcObjPropera_c>Fv = .text:0x00000D60; // type:function size:0x58 -fn_575_DC0 = .text:0x00000DC0; // type:function size:0x5C -fn_575_E20 = .text:0x00000E20; // type:function size:0xC -fn_575_E30 = .text:0x00000E30; // type:function size:0xDC -fn_575_F10 = .text:0x00000F10; // type:function size:0xE0 +__dt__37sFStateVirtualID_c<15dAcObjPropera_c>Fv = .text:0x00000DC0; // type:function size:0x5C +baseID_DemoThrow<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x00000E20; // type:function size:0xC +number__37sFStateVirtualID_c<15dAcObjPropera_c>CFv = .text:0x00000E30; // type:function size:0xDC +superID__37sFStateVirtualID_c<15dAcObjPropera_c>CFv = .text:0x00000F10; // type:function size:0xE0 isSameName__30sFStateID_c<15dAcObjPropera_c>CFPCc = .text:0x00000FF0; // type:function size:0x88 initializeState__30sFStateID_c<15dAcObjPropera_c>CFR15dAcObjPropera_c = .text:0x00001080; // type:function size:0x30 executeState__30sFStateID_c<15dAcObjPropera_c>CFR15dAcObjPropera_c = .text:0x000010B0; // type:function size:0x30 @@ -75,13 +75,13 @@ lbl_575_data_20 = .data:0x00000020; // type:object size:0x4 data:4byte lbl_575_data_24 = .data:0x00000024; // type:object size:0x18 lbl_575_data_3C = .data:0x0000003C; // type:object size:0x18 lbl_575_data_54 = .data:0x00000054; // type:object size:0x24 -lbl_575_data_78 = .data:0x00000078; // type:object size:0x100 -lbl_575_data_178 = .data:0x00000178; // type:object size:0x30 -lbl_575_data_1A8 = .data:0x000001A8; // type:object size:0x30 -lbl_575_data_1D8 = .data:0x000001D8; // type:object size:0x18 -lbl_575_data_1F0 = .data:0x000001F0; // type:object size:0x44 -lbl_575_data_234 = .data:0x00000234; // type:object size:0x54 -lbl_575_data_288 = .data:0x00000288; // type:object size:0x68 +__vt__15dAcObjPropera_c = .data:0x00000078; // type:object size:0x100 +__vt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c> = .data:0x00000178; // type:object size:0x30 +__vt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000001A8; // type:object size:0x30 +__vt__31sFStateFct_c<15dAcSalbageObj_c> = .data:0x000001D8; // type:object size:0x18 +__vt__28sFState_c<15dAcSalbageObj_c> = .data:0x000001F0; // type:object size:0x44 +__vt__15dShadowCircle_c = .data:0x00000234; // type:object size:0x54 +__vt__37sFStateVirtualID_c<15dAcObjPropera_c> = .data:0x00000288; // type:object size:0x68 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_575_bss_8 = .bss:0x00000008; // type:object size:0xC lbl_575_bss_14 = .bss:0x00000014; // type:object size:0x34 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_rouletteNP/symbols.txt b/config/SOUE01/rels/d_a_obj_rouletteNP/symbols.txt index 08597405..fe878baa 100644 --- a/config/SOUE01/rels/d_a_obj_rouletteNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_rouletteNP/symbols.txt @@ -4,11 +4,11 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcObjRoulette_c_classInit__Fv = .text:0x000000F0; // type:function size:0x170 -fn_576_260 = .text:0x00000260; // type:function size:0x58 -__dt__29sFState_c<16dAcObjRoulette_c>Fv = .text:0x000002C0; // type:function size:0x58 -__dt__32sFStateFct_c<16dAcObjRoulette_c>Fv = .text:0x00000320; // type:function size:0x6C -__dt__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000390; // type:function size:0xA0 -__dt__55sFStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000430; // type:function size:0xA4 +__dt__15dShadowCircle_cFv = .text:0x00000260; // type:function size:0x58 +__dt__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000002C0; // type:function size:0x58 +__dt__31sFStateFct_c<15dAcSalbageObj_c>Fv = .text:0x00000320; // type:function size:0x6C +__dt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000390; // type:function size:0xA0 +__dt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000430; // type:function size:0xA4 fn_576_4E0 = .text:0x000004E0; // type:function size:0x40 AcObjRoulette__initModels = .text:0x00000520; // type:function size:0x13C AcObjRoulette__init = .text:0x00000660; // type:function size:0x128 @@ -25,7 +25,7 @@ fn_576_B40 = .text:0x00000B40; // type:function size:0xC fn_576_B50 = .text:0x00000B50; // type:function size:0xC fn_576_B60 = .text:0x00000B60; // type:function size:0x8 fn_576_B70 = .text:0x00000B70; // type:function size:0xB4 -getStateID__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C30; // type:function size:0x10 +getStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C30; // type:function size:0x10 fn_576_C40 = .text:0x00000C40; // type:function size:0x50 fn_576_C90 = .text:0x00000C90; // type:function size:0x8 fn_576_CA0 = .text:0x00000CA0; // type:function size:0xC @@ -35,26 +35,26 @@ fn_576_CD0 = .text:0x00000CD0; // type:function size:0xC fn_576_CE0 = .text:0x00000CE0; // type:function size:0xC fn_576_CF0 = .text:0x00000CF0; // type:function size:0xC __dt__16dAcObjRoulette_cFv = .text:0x00000D00; // type:function size:0x120 -executeState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E20; // type:function size:0x10 -changeState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000E30; // type:function size:0x10 -getOldStateID__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000E40; // type:function size:0x10 -build__32sFStateFct_c<16dAcObjRoulette_c>FRC12sStateIDIf_c = .text:0x00000E50; // type:function size:0x60 -dispose__32sFStateFct_c<16dAcObjRoulette_c>FRP10sStateIf_c = .text:0x00000EB0; // type:function size:0xC -initialize__29sFState_c<16dAcObjRoulette_c>Fv = .text:0x00000EC0; // type:function size:0x1C -execute__29sFState_c<16dAcObjRoulette_c>Fv = .text:0x00000EE0; // type:function size:0x1C -finalize__29sFState_c<16dAcObjRoulette_c>Fv = .text:0x00000F00; // type:function size:0x1C -initializeState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F20; // type:function size:0x10 -finalizeState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F30; // type:function size:0x10 -refreshState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F40; // type:function size:0x10 -getState__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F50; // type:function size:0x10 -getNewStateID__85sStateMgr_c<16dAcObjRoulette_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F60; // type:function size:0x10 +executeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E20; // type:function size:0x10 +changeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000E30; // type:function size:0x10 +getOldStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000E40; // type:function size:0x10 +build__31sFStateFct_c<15dAcSalbageObj_c>FRC12sStateIDIf_c = .text:0x00000E50; // type:function size:0x60 +dispose__31sFStateFct_c<15dAcSalbageObj_c>FRP10sStateIf_c = .text:0x00000EB0; // type:function size:0xC +initialize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000EC0; // type:function size:0x1C +execute__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000EE0; // type:function size:0x1C +finalize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000F00; // type:function size:0x1C +initializeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F20; // type:function size:0x10 +finalizeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F30; // type:function size:0x10 +refreshState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000F40; // type:function size:0x10 +getState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F50; // type:function size:0x10 +getNewStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F60; // type:function size:0x10 __sinit_\d_a_obj_roulette_cpp = .text:0x00000F70; // type:function size:0x1E0 scope:local __dt__31sFStateID_c<16dAcObjRoulette_c>Fv = .text:0x00001150; // type:function size:0x58 -fn_576_11B0 = .text:0x000011B0; // type:function size:0x5C -fn_576_1210 = .text:0x00001210; // type:function size:0xC -fn_576_1220 = .text:0x00001220; // type:function size:0xC -fn_576_1230 = .text:0x00001230; // type:function size:0xDC -fn_576_1310 = .text:0x00001310; // type:function size:0xE0 +__dt__38sFStateVirtualID_c<16dAcObjRoulette_c>Fv = .text:0x000011B0; // type:function size:0x5C +baseID_Wait<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x00001210; // type:function size:0xC +baseID_DemoThrow<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x00001220; // type:function size:0xC +number__38sFStateVirtualID_c<16dAcObjRoulette_c>CFv = .text:0x00001230; // type:function size:0xDC +superID__38sFStateVirtualID_c<16dAcObjRoulette_c>CFv = .text:0x00001310; // type:function size:0xE0 isSameName__31sFStateID_c<16dAcObjRoulette_c>CFPCc = .text:0x000013F0; // type:function size:0x88 initializeState__31sFStateID_c<16dAcObjRoulette_c>CFR16dAcObjRoulette_c = .text:0x00001480; // type:function size:0x30 executeState__31sFStateID_c<16dAcObjRoulette_c>CFR16dAcObjRoulette_c = .text:0x000014B0; // type:function size:0x30 @@ -79,12 +79,12 @@ g_profile_OBJ_ROULETTE = .data:0x00000000; // type:object size:0x10 data:4byte lbl_576_data_10 = .data:0x00000010; // type:object size:0x10 lbl_576_data_20 = .data:0x00000020; // type:object size:0x28 lbl_576_data_48 = .data:0x00000048; // type:object size:0x20 -AcObjRoulette__vtable = .data:0x00000068; // type:object size:0x100 -lbl_576_data_168 = .data:0x00000168; // type:object size:0x30 -lbl_576_data_198 = .data:0x00000198; // type:object size:0x30 -lbl_576_data_1C8 = .data:0x000001C8; // type:object size:0x18 -lbl_576_data_1E0 = .data:0x000001E0; // type:object size:0x44 -lbl_576_data_224 = .data:0x00000224; // type:object size:0x98 -lbl_576_data_2BC = .data:0x000002BC; // type:object size:0x68 +__vt__16dAcObjRoulette_c = .data:0x00000068; // type:object size:0x100 +__vt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c> = .data:0x00000168; // type:object size:0x30 +__vt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000198; // type:object size:0x30 +__vt__31sFStateFct_c<15dAcSalbageObj_c> = .data:0x000001C8; // type:object size:0x18 +__vt__28sFState_c<15dAcSalbageObj_c> = .data:0x000001E0; // type:object size:0x44 +__vt__15dShadowCircle_c = .data:0x00000224; // type:object size:0x98 +__vt__38sFStateVirtualID_c<16dAcObjRoulette_c> = .data:0x000002BC; // type:object size:0x68 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_576_bss_8 = .bss:0x00000008; // type:object size:0x80 data:4byte diff --git a/config/SOUE01/rels/d_a_obj_water_jarNP/symbols.txt b/config/SOUE01/rels/d_a_obj_water_jarNP/symbols.txt index 5074efbe..f2dfa5e1 100644 --- a/config/SOUE01/rels/d_a_obj_water_jarNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_water_jarNP/symbols.txt @@ -4,11 +4,11 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcOWaterJar_c_classInit__Fv = .text:0x000000F0; // type:function size:0x188 -fn_601_280 = .text:0x00000280; // type:function size:0x58 -__dt__27sFState_c<14dAcOWaterJar_c>Fv = .text:0x000002E0; // type:function size:0x58 -__dt__30sFStateFct_c<14dAcOWaterJar_c>Fv = .text:0x00000340; // type:function size:0x6C -__dt__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000003B0; // type:function size:0xA0 -__dt__53sFStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000450; // type:function size:0xA4 +__dt__15dShadowCircle_cFv = .text:0x00000280; // type:function size:0x58 +__dt__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x000002E0; // type:function size:0x58 +__dt__31sFStateFct_c<15dAcSalbageObj_c>Fv = .text:0x00000340; // type:function size:0x6C +__dt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000003B0; // type:function size:0xA0 +__dt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000450; // type:function size:0xA4 fn_601_500 = .text:0x00000500; // type:function size:0x40 AcOWaterJar__initModels = .text:0x00000540; // type:function size:0x160 AcOWaterJar__init = .text:0x000006A0; // type:function size:0x190 @@ -21,7 +21,7 @@ fn_601_AE0 = .text:0x00000AE0; // type:function size:0x4 fn_601_AF0 = .text:0x00000AF0; // type:function size:0x4 AcOWaterJar__shouldHaveWaterInIt = .text:0x00000B00; // type:function size:0x60 fn_601_B60 = .text:0x00000B60; // type:function size:0xA4 -getStateID__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C10; // type:function size:0x10 +getStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000C10; // type:function size:0x10 fn_601_C20 = .text:0x00000C20; // type:function size:0xC fn_601_C30 = .text:0x00000C30; // type:function size:0xC fn_601_C40 = .text:0x00000C40; // type:function size:0x4 @@ -36,25 +36,25 @@ fn_601_D70 = .text:0x00000D70; // type:function size:0xC fn_601_D80 = .text:0x00000D80; // type:function size:0xC fn_601_D90 = .text:0x00000D90; // type:function size:0xC __dt__14dAcOWaterJar_cFv = .text:0x00000DA0; // type:function size:0x150 -executeState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000EF0; // type:function size:0x10 -changeState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000F00; // type:function size:0x10 -getOldStateID__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F10; // type:function size:0x10 -build__30sFStateFct_c<14dAcOWaterJar_c>FRC12sStateIDIf_c = .text:0x00000F20; // type:function size:0x60 -dispose__30sFStateFct_c<14dAcOWaterJar_c>FRP10sStateIf_c = .text:0x00000F80; // type:function size:0xC -initialize__27sFState_c<14dAcOWaterJar_c>Fv = .text:0x00000F90; // type:function size:0x1C -execute__27sFState_c<14dAcOWaterJar_c>Fv = .text:0x00000FB0; // type:function size:0x1C -finalize__27sFState_c<14dAcOWaterJar_c>Fv = .text:0x00000FD0; // type:function size:0x1C -initializeState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000FF0; // type:function size:0x10 -finalizeState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001000; // type:function size:0x10 -refreshState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001010; // type:function size:0x10 -getState__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001020; // type:function size:0x10 -getNewStateID__83sStateMgr_c<14dAcOWaterJar_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001030; // type:function size:0x10 +executeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000EF0; // type:function size:0x10 +changeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000F00; // type:function size:0x10 +getOldStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000F10; // type:function size:0x10 +build__31sFStateFct_c<15dAcSalbageObj_c>FRC12sStateIDIf_c = .text:0x00000F20; // type:function size:0x60 +dispose__31sFStateFct_c<15dAcSalbageObj_c>FRP10sStateIf_c = .text:0x00000F80; // type:function size:0xC +initialize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000F90; // type:function size:0x1C +execute__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000FB0; // type:function size:0x1C +finalize__28sFState_c<15dAcSalbageObj_c>Fv = .text:0x00000FD0; // type:function size:0x1C +initializeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000FF0; // type:function size:0x10 +finalizeState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001000; // type:function size:0x10 +refreshState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001010; // type:function size:0x10 +getState__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001020; // type:function size:0x10 +getNewStateID__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001030; // type:function size:0x10 __sinit_\d_a_obj_water_jar_cpp = .text:0x00001040; // type:function size:0x124 scope:local __dt__29sFStateID_c<14dAcOWaterJar_c>Fv = .text:0x00001170; // type:function size:0x58 -fn_601_11D0 = .text:0x000011D0; // type:function size:0x5C -fn_601_1230 = .text:0x00001230; // type:function size:0xC -fn_601_1240 = .text:0x00001240; // type:function size:0xDC -fn_601_1320 = .text:0x00001320; // type:function size:0xE0 +__dt__36sFStateVirtualID_c<14dAcOWaterJar_c>Fv = .text:0x000011D0; // type:function size:0x5C +baseID_DemoThrow<15dAcSalbageObj_c>__Fv_RC12sStateIDIf_c = .text:0x00001230; // type:function size:0xC +number__36sFStateVirtualID_c<14dAcOWaterJar_c>CFv = .text:0x00001240; // type:function size:0xDC +superID__36sFStateVirtualID_c<14dAcOWaterJar_c>CFv = .text:0x00001320; // type:function size:0xE0 isSameName__29sFStateID_c<14dAcOWaterJar_c>CFPCc = .text:0x00001400; // type:function size:0x88 initializeState__29sFStateID_c<14dAcOWaterJar_c>CFR14dAcOWaterJar_c = .text:0x00001490; // type:function size:0x30 executeState__29sFStateID_c<14dAcOWaterJar_c>CFR14dAcOWaterJar_c = .text:0x000014C0; // type:function size:0x30 @@ -78,12 +78,12 @@ lbl_601_data_10 = .data:0x00000010; // type:object size:0x70 lbl_601_data_80 = .data:0x00000080; // type:object size:0x1C data:string lbl_601_data_9C = .data:0x0000009C; // type:object size:0x4 data:4byte lbl_601_data_A0 = .data:0x000000A0; // type:object size:0x8 data:4byte -AcOWaterJar__vtable = .data:0x000000A8; // type:object size:0x100 -lbl_601_data_1A8 = .data:0x000001A8; // type:object size:0x30 -lbl_601_data_1D8 = .data:0x000001D8; // type:object size:0x30 -lbl_601_data_208 = .data:0x00000208; // type:object size:0x18 -lbl_601_data_220 = .data:0x00000220; // type:object size:0x44 -lbl_601_data_264 = .data:0x00000264; // type:object size:0x54 +__vt__14dAcOWaterJar_c = .data:0x000000A8; // type:object size:0x100 +__vt__54sFStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c> = .data:0x000001A8; // type:object size:0x30 +__vt__84sStateMgr_c<15dAcSalbageObj_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000001D8; // type:object size:0x30 +__vt__31sFStateFct_c<15dAcSalbageObj_c> = .data:0x00000208; // type:object size:0x18 +__vt__28sFState_c<15dAcSalbageObj_c> = .data:0x00000220; // type:object size:0x44 +__vt__15dShadowCircle_c = .data:0x00000264; // type:object size:0x54 lbl_601_data_2B8 = .data:0x000002B8; // type:object size:0x68 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_601_bss_8 = .bss:0x00000008; // type:object size:0xC diff --git a/include/d/a/d_a_salbage_obj.h b/include/d/a/d_a_salbage_obj.h index e00732e3..762efb36 100644 --- a/include/d/a/d_a_salbage_obj.h +++ b/include/d/a/d_a_salbage_obj.h @@ -1,6 +1,7 @@ #ifndef D_A_SALBAGE_OBJ_H #define D_A_SALBAGE_OBJ_H +#include "common.h" #include "d/a/obj/d_a_obj_base.h" #include "d/col/bg/d_bg_s_acch.h" #include "d/col/cc/d_cc_d.h" @@ -14,9 +15,17 @@ class dAcSalbageObj_c; +enum SalvageObj_e { + SALVAGE_OBJ_PROPERA = 0, + SALVAGE_OBJ_ROULETTE = 1, + SALVAGE_OBJ_DIVINER_CRYSTAL = 2, + SALVAGE_OBJ_WATER_JAR = 5, + SALVAGE_OBJ_POT = 6, +}; + class SalbageRelated { public: - SalbageRelated(dAcSalbageObj_c *obj) : mpObj(obj), mSalvageObjId(6) {} + SalbageRelated(dAcSalbageObj_c *obj, s32 id) : mpObj(obj), mCarried(false), mHidden(false), mSalvageObjId(id) {} /* vt 0x08 */ virtual ~SalbageRelated() {} /* vt 0x0C */ virtual void setCarried() { @@ -68,7 +77,14 @@ class dAcSalbageObj_c : public dAcObjBase_c { }; public: - dAcSalbageObj_c() : mStateMgr(*this), mSalbageRelated(this), mDowsingTarget(this, DowsingTarget::SLOT_NONE) {} + dAcSalbageObj_c(m3d::smdl_c *mdl, s32 salvageObjId) + : field_0x330(0), + mpMdl(mdl), + mStateMgr(*this), + mSalbageRelated(this, salvageObjId), + mDowsingTarget(this, DowsingTarget::SLOT_NONE), + mIsDemoState(false), + mpNextStateId(nullptr) {} virtual ~dAcSalbageObj_c() {} virtual int preExecute() override; @@ -82,6 +98,14 @@ public: return false; } + /* vt 0x84-0x8C */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Wait); + /* vt 0x90-0x98 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Carried); + /* vt 0x9C-0xA4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Demo); + /* vt 0xA8-0xB0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, DemoThrow); + /* vt 0xB4-0xBC */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Fly); + /* vt 0xC0-0xC8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, After); + STATE_FUNC_DECLARE(dAcSalbageObj_c, Kill); + protected: bool shouldBeActiveDowsingTarget() const; void initSalbageObj(); @@ -97,14 +121,6 @@ protected: void updateBgAcchCir(); void updateMdl(); - /* vt 0x84-0x8C */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Wait); - /* vt 0x90-0x98 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Carried); - /* vt 0x9C-0xA4 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Demo); - /* vt 0xA8-0xB0 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, DemoThrow); - /* vt 0xB4-0xBC */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, Fly); - /* vt 0xC0-0xC8 */ STATE_VIRTUAL_FUNC_DECLARE(dAcSalbageObj_c, After); - STATE_FUNC_DECLARE(dAcSalbageObj_c, Kill); - /* vt 0xCC */ virtual mMtx_c calcWorldMtx(); /* vt 0xD0 */ virtual void vt_0xD0() {} @@ -142,7 +158,7 @@ protected: return 50.0f; } - /* 0x330 */ u8 _0x330[0x334 - 0x330]; + /* 0x330 */ UNKWORD field_0x330; /* 0x334 */ m3d::smdl_c *mpMdl; /* 0x338 */ dShadowCircle_c mShadow; diff --git a/include/d/a/obj/d_a_obj_diviner_crystal.h b/include/d/a/obj/d_a_obj_diviner_crystal.h index 4c96fd48..0d67d6f0 100644 --- a/include/d/a/obj/d_a_obj_diviner_crystal.h +++ b/include/d/a/obj/d_a_obj_diviner_crystal.h @@ -1,17 +1,27 @@ #ifndef D_A_OBJ_DIVINER_CRYSTAL_H #define D_A_OBJ_DIVINER_CRYSTAL_H -#include "d/a/obj/d_a_obj_base.h" +#include "d/a/d_a_salbage_obj.h" +#include "m/m3d/m_anmmatclr.h" +#include "m/m3d/m_anmtexsrt.h" +#include "m/m3d/m_smdl.h" +#include "nw4r/g3d/res/g3d_resfile.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -class dAcODivinerCrystal_c : public dAcObjBase_c { +class dAcODivinerCrystal_c : public dAcSalbageObj_c { public: - dAcODivinerCrystal_c() : mStateMgr(*this, sStateID::null) {} + dAcODivinerCrystal_c() : dAcSalbageObj_c(&mMdl1, SALVAGE_OBJ_DIVINER_CRYSTAL) {} virtual ~dAcODivinerCrystal_c() {} + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcODivinerCrystal_c, dAcSalbageObj_c, DemoThrow); + STATE_FUNC_DECLARE(dAcODivinerCrystal_c, Stay); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcODivinerCrystal_c); + /* 0x970 */ nw4r::g3d::ResFile mResMaybe; + /* 0x974 */ m3d::smdl_c mMdl1; + /* 0x990 */ m3d::smdl_c mMdl2; + /* 0x9AC */ m3d::anmTexSrt_c mAnmTexSrt; + /* 0x9D8 */ m3d::anmMatClr_c mAnmMatClr; }; #endif diff --git a/include/d/a/obj/d_a_obj_pot_sal.h b/include/d/a/obj/d_a_obj_pot_sal.h index 5a4a6e49..59c3dec3 100644 --- a/include/d/a/obj/d_a_obj_pot_sal.h +++ b/include/d/a/obj/d_a_obj_pot_sal.h @@ -2,17 +2,20 @@ #define D_A_OBJ_POT_SAL_H #include "d/a/d_a_salbage_obj.h" +#include "m/m3d/m_smdl.h" #include "s/s_State.hpp" class dAcOpotSal_c : public dAcSalbageObj_c { public: - dAcOpotSal_c() {} + dAcOpotSal_c() : dAcSalbageObj_c(&mMdl1, SALVAGE_OBJ_POT) {} virtual ~dAcOpotSal_c() {} STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcOpotSal_c, dAcSalbageObj_c, DemoThrow); STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcOpotSal_c, dAcSalbageObj_c, After); private: + /* 0x970 */ m3d::smdl_c mMdl1; + /* 0x98C */ m3d::smdl_c mMdl2; }; #endif diff --git a/include/d/a/obj/d_a_obj_propera.h b/include/d/a/obj/d_a_obj_propera.h index 1326f80b..91104f97 100644 --- a/include/d/a/obj/d_a_obj_propera.h +++ b/include/d/a/obj/d_a_obj_propera.h @@ -1,17 +1,20 @@ #ifndef D_A_OBJ_PROPERA_H #define D_A_OBJ_PROPERA_H -#include "d/a/obj/d_a_obj_base.h" -#include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" +#include "d/a/d_a_salbage_obj.h" +#include "d/col/bg/d_bg_w.h" +#include "m/m3d/m_smdl.h" -class dAcObjPropera_c : public dAcObjBase_c { +class dAcObjPropera_c : public dAcSalbageObj_c { public: - dAcObjPropera_c() : mStateMgr(*this, sStateID::null) {} + dAcObjPropera_c() : dAcSalbageObj_c(&mMdl, SALVAGE_OBJ_PROPERA) {} virtual ~dAcObjPropera_c() {} + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcObjPropera_c, dAcSalbageObj_c, DemoThrow); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcObjPropera_c); + /* 0x970 */ m3d::smdl_c mMdl; + /* 0x98C */ dBgW mBgW; }; #endif diff --git a/include/d/a/obj/d_a_obj_roulette.h b/include/d/a/obj/d_a_obj_roulette.h index 3563269e..0c096ba3 100644 --- a/include/d/a/obj/d_a_obj_roulette.h +++ b/include/d/a/obj/d_a_obj_roulette.h @@ -1,17 +1,22 @@ #ifndef D_A_OBJ_ROULETTE_H #define D_A_OBJ_ROULETTE_H -#include "d/a/obj/d_a_obj_base.h" +#include "d/a/d_a_salbage_obj.h" +#include "m/m3d/m_anmtexsrt.h" +#include "m/m3d/m_mdl.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -class dAcObjRoulette_c : public dAcObjBase_c { +class dAcObjRoulette_c : public dAcSalbageObj_c { public: - dAcObjRoulette_c() : mStateMgr(*this, sStateID::null) {} + dAcObjRoulette_c() : dAcSalbageObj_c(&mMdl, SALVAGE_OBJ_ROULETTE) {} virtual ~dAcObjRoulette_c() {} + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcObjRoulette_c, dAcSalbageObj_c, DemoThrow); + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcObjRoulette_c, dAcSalbageObj_c, Wait); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcObjRoulette_c); + /* 0x970 */ m3d::mdl_c mMdl; + /* 0x994 */ m3d::anmTexSrt_c mAnm; }; #endif diff --git a/include/d/a/obj/d_a_obj_water_jar.h b/include/d/a/obj/d_a_obj_water_jar.h index 82ee89a3..4941ca25 100644 --- a/include/d/a/obj/d_a_obj_water_jar.h +++ b/include/d/a/obj/d_a_obj_water_jar.h @@ -1,17 +1,32 @@ #ifndef D_A_OBJ_WATER_JAR_H #define D_A_OBJ_WATER_JAR_H -#include "d/a/obj/d_a_obj_base.h" +#include "common.h" +#include "d/a/d_a_salbage_obj.h" +#include "d/col/cc/d_cc_d.h" +#include "m/m3d/m_anmchr.h" +#include "m/m3d/m_smdl.h" +#include "nw4r/g3d/res/g3d_resfile.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" +#include "toBeSorted/actor_event.h" +#include "toBeSorted/d_emitter.h" -class dAcOWaterJar_c : public dAcObjBase_c { +class dAcOWaterJar_c : public dAcSalbageObj_c { public: - dAcOWaterJar_c() : mStateMgr(*this, sStateID::null) {} + dAcOWaterJar_c() : mEvent(*this, nullptr), dAcSalbageObj_c(&mMdl1, SALVAGE_OBJ_WATER_JAR) {} virtual ~dAcOWaterJar_c() {} + STATE_VIRTUAL_OVERRIDE_FUNC_DECLARE(dAcOWaterJar_c, dAcSalbageObj_c, DemoThrow); + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcOWaterJar_c); + /* 0x970 */ ActorEventRelated mEvent; + /* 0x9C0 */ nw4r::g3d::ResFile mResMaybe; + /* 0x9C4 */ m3d::smdl_c mMdl1; + /* 0x9E0 */ m3d::smdl_c mMdl2; + /* 0x9FC */ m3d::anmChr_c mAnm; + /* 0xA34 */ EffectsStruct mEffect; + /* 0xA68 */ u8 _0xA68[0xA6C - 0xA68]; + /* 0xA6C */ dCcD_Cyl mCcCyl; }; #endif diff --git a/src/REL/d/a/obj/d_a_obj_diviner_crystal.cpp b/src/REL/d/a/obj/d_a_obj_diviner_crystal.cpp index 5f3a6050..ba95d7bd 100644 --- a/src/REL/d/a/obj/d_a_obj_diviner_crystal.cpp +++ b/src/REL/d/a/obj/d_a_obj_diviner_crystal.cpp @@ -1,3 +1,14 @@ #include "d/a/obj/d_a_obj_diviner_crystal.h" SPECIAL_ACTOR_PROFILE(OBJ_DIVINER_CRYSTAL, dAcODivinerCrystal_c, fProfile::OBJ_DIVINER_CRYSTAL, 0x157, 0, 3); + +STATE_VIRTUAL_DEFINE(dAcODivinerCrystal_c, DemoThrow); +STATE_DEFINE(dAcODivinerCrystal_c, Stay); + +void dAcODivinerCrystal_c::initializeState_DemoThrow() {} +void dAcODivinerCrystal_c::executeState_DemoThrow() {} +void dAcODivinerCrystal_c::finalizeState_DemoThrow() {} + +void dAcODivinerCrystal_c::initializeState_Stay() {} +void dAcODivinerCrystal_c::executeState_Stay() {} +void dAcODivinerCrystal_c::finalizeState_Stay() {} diff --git a/src/REL/d/a/obj/d_a_obj_pot_sal.cpp b/src/REL/d/a/obj/d_a_obj_pot_sal.cpp index 65cecfa3..9f297dc2 100644 --- a/src/REL/d/a/obj/d_a_obj_pot_sal.cpp +++ b/src/REL/d/a/obj/d_a_obj_pot_sal.cpp @@ -1,3 +1,14 @@ #include "d/a/obj/d_a_obj_pot_sal.h" SPECIAL_ACTOR_PROFILE(OBJ_POT_SAL, dAcOpotSal_c, fProfile::OBJ_POT_SAL, 0x86, 0, 2); + +STATE_VIRTUAL_DEFINE(dAcOpotSal_c, DemoThrow); +STATE_VIRTUAL_DEFINE(dAcOpotSal_c, After); + +void dAcOpotSal_c::initializeState_DemoThrow() {} +void dAcOpotSal_c::executeState_DemoThrow() {} +void dAcOpotSal_c::finalizeState_DemoThrow() {} + +void dAcOpotSal_c::initializeState_After() {} +void dAcOpotSal_c::executeState_After() {} +void dAcOpotSal_c::finalizeState_After() {} diff --git a/src/REL/d/a/obj/d_a_obj_propera.cpp b/src/REL/d/a/obj/d_a_obj_propera.cpp index ccac39e4..a9786033 100644 --- a/src/REL/d/a/obj/d_a_obj_propera.cpp +++ b/src/REL/d/a/obj/d_a_obj_propera.cpp @@ -1,3 +1,9 @@ #include "d/a/obj/d_a_obj_propera.h" SPECIAL_ACTOR_PROFILE(OBJ_PROPERA, dAcObjPropera_c, fProfile::OBJ_PROPERA, 0x96, 0, 386); + +STATE_VIRTUAL_DEFINE(dAcObjPropera_c, DemoThrow); + +void dAcObjPropera_c::initializeState_DemoThrow() {} +void dAcObjPropera_c::executeState_DemoThrow() {} +void dAcObjPropera_c::finalizeState_DemoThrow() {} diff --git a/src/REL/d/a/obj/d_a_obj_roulette.cpp b/src/REL/d/a/obj/d_a_obj_roulette.cpp index e6143327..94648fa6 100644 --- a/src/REL/d/a/obj/d_a_obj_roulette.cpp +++ b/src/REL/d/a/obj/d_a_obj_roulette.cpp @@ -1,3 +1,14 @@ #include "d/a/obj/d_a_obj_roulette.h" SPECIAL_ACTOR_PROFILE(OBJ_ROULETTE, dAcObjRoulette_c, fProfile::OBJ_ROULETTE, 0x97, 0, 384); + +STATE_VIRTUAL_DEFINE(dAcObjRoulette_c, DemoThrow); +STATE_VIRTUAL_DEFINE(dAcObjRoulette_c, Wait); + +void dAcObjRoulette_c::initializeState_DemoThrow() {} +void dAcObjRoulette_c::executeState_DemoThrow() {} +void dAcObjRoulette_c::finalizeState_DemoThrow() {} + +void dAcObjRoulette_c::initializeState_Wait() {} +void dAcObjRoulette_c::executeState_Wait() {} +void dAcObjRoulette_c::finalizeState_Wait() {} diff --git a/src/REL/d/a/obj/d_a_obj_water_jar.cpp b/src/REL/d/a/obj/d_a_obj_water_jar.cpp index 1b9792e0..9b32f61c 100644 --- a/src/REL/d/a/obj/d_a_obj_water_jar.cpp +++ b/src/REL/d/a/obj/d_a_obj_water_jar.cpp @@ -1,3 +1,9 @@ #include "d/a/obj/d_a_obj_water_jar.h" SPECIAL_ACTOR_PROFILE(OBJ_WATER_JAR, dAcOWaterJar_c, fProfile::OBJ_WATER_JAR, 0x1AE, 0, 3); + +STATE_VIRTUAL_DEFINE(dAcOWaterJar_c, DemoThrow); + +void dAcOWaterJar_c::initializeState_DemoThrow() {} +void dAcOWaterJar_c::executeState_DemoThrow() {} +void dAcOWaterJar_c::finalizeState_DemoThrow() {} diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp index d85b0365..a26de1dc 100644 --- a/src/d/a/d_a_salbage_obj.cpp +++ b/src/d/a/d_a_salbage_obj.cpp @@ -68,7 +68,7 @@ int dAcSalbageObj_c::preExecute() { int result = dAcObjBase_c::preExecute() == NOT_READY ? NOT_READY : SUCCEEDED; if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { s32 id = mSalbageRelated.getSalvageObjId(); - if (id != 2 && id != 6) { + if (id != SALVAGE_OBJ_DIVINER_CRYSTAL && id != SALVAGE_OBJ_POT) { if (!EventManager::isInEvent()) { deleteRequest(); } @@ -204,9 +204,9 @@ void dAcSalbageObj_c::doInteraction(s32 arg) { void dAcSalbageObj_c::addAttentionTargetIfNeeded() { switch (mSalbageRelated.getSalvageObjId()) { - case 5: - case 6: return; - default: addAttentionTarget(); break; + case SALVAGE_OBJ_WATER_JAR: + case SALVAGE_OBJ_POT: return; + default: addAttentionTarget(); break; } } @@ -243,7 +243,7 @@ bool dAcSalbageObj_c::shouldBeActiveDowsingTarget() const { if (dSalvageMgr_c::sInstance->hasDowsingForSalvageObj(this) == false) { return false; } else { - return mSalbageRelated.getSalvageObjId() != 6; + return mSalbageRelated.getSalvageObjId() != SALVAGE_OBJ_POT; } } From 1d17513502e8f083c955310b91d8bced97974249 Mon Sep 17 00:00:00 2001 From: robojumper Date: Fri, 22 Aug 2025 10:51:06 +0200 Subject: [PATCH 3/4] Clean up --- config/SOUE01/symbols.txt | 20 ++++++++--------- include/d/a/d_a_salbage.h | 19 ++++++++++++++++ include/d/a/d_a_salbage_obj.h | 29 ++++++++++++------------ include/d/a/obj/d_a_obj_base.h | 6 ++--- src/d/a/d_a_salbage_obj.cpp | 40 +++++++++++++++++----------------- 5 files changed, 66 insertions(+), 48 deletions(-) create mode 100644 include/d/a/d_a_salbage.h diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 758aff00..b341f176 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -10273,22 +10273,22 @@ baseID_Demo<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AD0; // type:funct baseID_DemoThrow<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AE0; // type:function size:0xC scope:local baseID_Fly<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190AF0; // type:function size:0xC scope:local baseID_After<10sStateID_c>__Fv_RC12sStateIDIf_c = .text:0x80190B00; // type:function size:0xC scope:local -doDemoThrow__14SalbageRelatedFv = .text:0x80190B10; // type:function size:0x1C +doDemoThrow__15dSalvageIfObj_cFv = .text:0x80190B10; // type:function size:0x1C actorExecute__15dAcSalbageObj_cFv = .text:0x80190B30; // type:function size:0xD0 isInStateWait__15dAcSalbageObj_cCFv = .text:0x80190C00; // type:function size:0x50 scope:weak isInStateWaitOrDemoThrow__15dAcSalbageObj_cCFv = .text:0x80190C50; // type:function size:0xB4 scope:weak preExecute__15dAcSalbageObj_cFv = .text:0x80190D10; // type:function size:0x1D4 -getSalvageObjId__14SalbageRelatedCFv = .text:0x80190EF0; // type:function size:0x8 scope:weak +getSalvageObjId__15dSalvageIfObj_cCFv = .text:0x80190EF0; // type:function size:0x8 scope:weak getDowsingUnusedF32__15dAcSalbageObj_cCFv = .text:0x80190F00; // type:function size:0x8 scope:weak getDowsingTargetYOffset__15dAcSalbageObj_cCFv = .text:0x80190F10; // type:function size:0x8 scope:weak preDraw__15dAcSalbageObj_cFv = .text:0x80190F20; // type:function size:0x58 -isHidden__14SalbageRelatedCFv = .text:0x80190F80; // type:function size:0x8 scope:weak +isHidden__15dSalvageIfObj_cCFv = .text:0x80190F80; // type:function size:0x8 scope:weak draw__15dAcSalbageObj_cFv = .text:0x80190F90; // type:function size:0x54 executeInternal__15dAcSalbageObj_cFv = .text:0x80190FF0; // type:function size:0xE0 initSalbageObj__15dAcSalbageObj_cFv = .text:0x801910D0; // type:function size:0x2A8 vt_0x80__15dAcSalbageObj_cCFv = .text:0x80191380; // type:function size:0x8 scope:weak -setHidden__14SalbageRelatedFv = .text:0x80191390; // type:function size:0xC scope:weak -setCarried__14SalbageRelatedFv = .text:0x801913A0; // type:function size:0xC scope:weak +setHidden__15dSalvageIfObj_cFv = .text:0x80191390; // type:function size:0xC scope:weak +setCarried__15dSalvageIfObj_cFv = .text:0x801913A0; // type:function size:0xC scope:weak doInteraction__15dAcSalbageObj_cFl = .text:0x801913B0; // type:function size:0xB0 addAttentionTargetIfNeeded__15dAcSalbageObj_cFv = .text:0x80191460; // type:function size:0x50 addAttentionTarget__15dAcSalbageObj_cFv = .text:0x801914B0; // type:function size:0xFC @@ -10302,7 +10302,7 @@ getBgAcchCirHeight__15dAcSalbageObj_cCFv = .text:0x80191800; // type:function si getBgAcchCirRadius__15dAcSalbageObj_cCFv = .text:0x80191810; // type:function size:0x8 scope:weak calcMtxFromSalbageNpc__15dAcSalbageObj_cFR6mMtx_c = .text:0x80191820; // type:function size:0x17C calcWorldMtx__15dAcSalbageObj_cFv = .text:0x801919A0; // type:function size:0x88 -isCarried__14SalbageRelatedCFv = .text:0x80191A30; // type:function size:0x8 scope:weak +isCarried__15dSalvageIfObj_cCFv = .text:0x80191A30; // type:function size:0x8 scope:weak updateMdl__15dAcSalbageObj_cFv = .text:0x80191A40; // type:function size:0x1B0 getPoscopy3YOffset__15dAcSalbageObj_cCFv = .text:0x80191BF0; // type:function size:0x8 scope:weak getPoscopy2YOffset__15dAcSalbageObj_cCFv = .text:0x80191C00; // type:function size:0x8 scope:weak @@ -10324,7 +10324,7 @@ initializeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E20; // type:function s executeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E30; // type:function size:0x4 finalizeState_Demo__15dAcSalbageObj_cFv = .text:0x80191E40; // type:function size:0x4 initializeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191E50; // type:function size:0x164 -setNotCarried__14SalbageRelatedFv = .text:0x80191FC0; // type:function size:0xC scope:weak +setNotCarried__15dSalvageIfObj_cFv = .text:0x80191FC0; // type:function size:0xC scope:weak executeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FD0; // type:function size:0x4 finalizeState_DemoThrow__15dAcSalbageObj_cFv = .text:0x80191FE0; // type:function size:0x4 initializeState_Kill__15dAcSalbageObj_cFv = .text:0x80191FF0; // type:function size:0x4 @@ -10332,8 +10332,8 @@ executeState_Kill__15dAcSalbageObj_cFv = .text:0x80192000; // type:function size finalizeState_Kill__15dAcSalbageObj_cFv = .text:0x80192010; // type:function size:0x4 vt_0xD0__15dAcSalbageObj_cFv = .text:0x80192020; // type:function size:0x4 scope:weak __dt__15dAcSalbageObj_cFv = .text:0x80192030; // type:function size:0x100 scope:weak -__dt__14SalbageRelatedFv = .text:0x80192130; // type:function size:0x40 scope:weak -setNotHidden__14SalbageRelatedFv = .text:0x80192170; // type:function size:0xC scope:weak +__dt__15dSalvageIfObj_cFv = .text:0x80192130; // type:function size:0x40 scope:weak +setNotHidden__15dSalvageIfObj_cFv = .text:0x80192170; // type:function size:0xC scope:weak finalizeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x80192180; // type:function size:0x30 scope:weak executeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921B0; // type:function size:0x30 scope:weak initializeState__30sFStateID_c<15dAcSalbageObj_c>CFR15dAcSalbageObj_c = .text:0x801921E0; // type:function size:0x30 scope:weak @@ -35359,7 +35359,7 @@ lbl_8052ACC0 = .data:0x8052ACC0; // type:object size:0x10 sCylSrc = .data:0x8052ACD0; // type:object size:0x30 scope:local ...data.0 = .data:0x8052ACD0; // type:label scope:local __vt__15dAcSalbageObj_c = .data:0x8052AD00; // type:object size:0x100 -__vt__14SalbageRelated = .data:0x8052AE00; // type:object size:0x2C +__vt__15dSalvageIfObj_c = .data:0x8052AE00; // type:object size:0x2C @22347 = .data:0x8052AE2C; // type:object size:0xC scope:local @22348 = .data:0x8052AE38; // type:object size:0xC scope:local @22349 = .data:0x8052AE44; // type:object size:0xC scope:local diff --git a/include/d/a/d_a_salbage.h b/include/d/a/d_a_salbage.h new file mode 100644 index 00000000..cca447c1 --- /dev/null +++ b/include/d/a/d_a_salbage.h @@ -0,0 +1,19 @@ +#ifndef D_A_SALBAGE_H +#define D_A_SALBAGE_H + +#include "common.h" + +class dSalvageIf_c { +public: + /* vt 0x08 */ virtual ~dSalvageIf_c() {} + /* vt 0x0C */ virtual void setCarried() = 0; + /* vt 0x10 */ virtual void setNotCarried() = 0; + /* vt 0x14 */ virtual bool isCarried() const = 0; + /* vt 0x18 */ virtual void setHidden() = 0; + /* vt 0x1C */ virtual void setNotHidden() = 0; + /* vt 0x20 */ virtual bool isHidden() const = 0; + /* vt 0x24 */ virtual s32 getSalvageObjId() const = 0; + /* vt 0x28 */ virtual void doDemoThrow() = 0; +}; + +#endif diff --git a/include/d/a/d_a_salbage_obj.h b/include/d/a/d_a_salbage_obj.h index 762efb36..3afa45ca 100644 --- a/include/d/a/d_a_salbage_obj.h +++ b/include/d/a/d_a_salbage_obj.h @@ -6,6 +6,7 @@ #include "d/col/bg/d_bg_s_acch.h" #include "d/col/cc/d_cc_d.h" #include "d/d_shadow.h" +#include "d/a/d_a_salbage.h" #include "m/m3d/m_smdl.h" #include "m/m_mtx.h" #include "m/m_quat.h" @@ -23,33 +24,33 @@ enum SalvageObj_e { SALVAGE_OBJ_POT = 6, }; -class SalbageRelated { +class dSalvageIfObj_c : public dSalvageIf_c { public: - SalbageRelated(dAcSalbageObj_c *obj, s32 id) : mpObj(obj), mCarried(false), mHidden(false), mSalvageObjId(id) {} + dSalvageIfObj_c(dAcSalbageObj_c *obj, s32 id) : mpObj(obj), mCarried(false), mHidden(false), mSalvageObjId(id) {} - /* vt 0x08 */ virtual ~SalbageRelated() {} - /* vt 0x0C */ virtual void setCarried() { + /* vt 0x08 */ virtual ~dSalvageIfObj_c() {} + /* vt 0x0C */ virtual void setCarried() override { mCarried = true; } - /* vt 0x10 */ virtual void setNotCarried() { + /* vt 0x10 */ virtual void setNotCarried() override { mCarried = false; } - /* vt 0x14 */ virtual bool isCarried() const { + /* vt 0x14 */ virtual bool isCarried() const override { return mCarried; } - /* vt 0x18 */ virtual void setHidden() { + /* vt 0x18 */ virtual void setHidden() override { mHidden = true; } - /* vt 0x1C */ virtual void setNotHidden() { + /* vt 0x1C */ virtual void setNotHidden() override { mHidden = false; } - /* vt 0x20 */ virtual bool isHidden() const { + /* vt 0x20 */ virtual bool isHidden() const override { return mHidden; } - /* vt 0x24 */ virtual s32 getSalvageObjId() const { + /* vt 0x24 */ virtual s32 getSalvageObjId() const override { return mSalvageObjId; } - /* vt 0x28 */ virtual void doDemoThrow(); + /* vt 0x28 */ virtual void doDemoThrow() override; private: /* 0x04 */ dAcSalbageObj_c *mpObj; @@ -65,7 +66,7 @@ private: * the Salvage Robot NPC, AKA Scrapper. */ class dAcSalbageObj_c : public dAcObjBase_c { - friend class SalbageRelated; + friend class dSalvageIfObj_c; enum Behavior_e { /// The object is stationary and disappears when picked up @@ -81,7 +82,7 @@ public: : field_0x330(0), mpMdl(mdl), mStateMgr(*this), - mSalbageRelated(this, salvageObjId), + mSalvageIf(this, salvageObjId), mDowsingTarget(this, DowsingTarget::SLOT_NONE), mIsDemoState(false), mpNextStateId(nullptr) {} @@ -169,7 +170,7 @@ protected: /* 0x8AC */ STATE_MGR_DECLARE(dAcSalbageObj_c); /* 0x8E8 */ s32 mBehavior; /* 0x8EC */ bool mIsDemoState; - /* 0x8F0 */ SalbageRelated mSalbageRelated; + /* 0x8F0 */ dSalvageIfObj_c mSalvageIf; /* 0x900 */ f32 field_0x900; /* 0x904 */ s16 field_0x904; /* 0x908 */ mMtx_c mWorldSRMtx; diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 1f950092..30418a75 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -4,6 +4,7 @@ #include "c/c_math.h" #include "common.h" #include "d/a/d_a_base.h" +#include "d/a/d_a_salbage.h" #include "d/col/c/c_cc_d.h" #include "d/col/c/c_m3d_g_aab.h" #include "d/d_jnt_col.h" @@ -18,9 +19,6 @@ #include "m/m_vec.h" #include "m/types_m.h" -class SalbageRelated; - - // Ghidra: ActorObjectBase // size: 0x330 // vtable: 0x805015b8 @@ -54,7 +52,7 @@ public: /* 0x210 */ dLinkage_c mLinkage; /* 0x2B8 */ u32 mField_0x2B8; /* 0x2BC */ ActorLighting mLightingInfo; - /* 0x32C */ SalbageRelated *mpSalbageRelated; + /* 0x32C */ dSalvageIf_c *mpSalvageIf; public: mVec3_c &GetOldPosition() { diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp index a26de1dc..2251e9b7 100644 --- a/src/d/a/d_a_salbage_obj.cpp +++ b/src/d/a/d_a_salbage_obj.cpp @@ -44,7 +44,7 @@ static const InteractionTargetDef sInteractionTargetDefs[] = { {0, 0, 1, EXAMINE_TALK, 0, 250.0f, 60.0f, 0.0f, -50.0f, 150.0f, 50.0f, 1.0f}, }; -void SalbageRelated::doDemoThrow() { +void dSalvageIfObj_c::doDemoThrow() { mpObj->mStateMgr.changeState(dAcSalbageObj_c::StateID_DemoThrow); } @@ -66,8 +66,8 @@ int dAcSalbageObj_c::actorExecute() { int dAcSalbageObj_c::preExecute() { // TODO - this matches, but so does `bool` conversion... int result = dAcObjBase_c::preExecute() == NOT_READY ? NOT_READY : SUCCEEDED; - if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { - s32 id = mSalbageRelated.getSalvageObjId(); + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalvageIf.getSalvageObjId())) { + s32 id = mSalvageIf.getSalvageObjId(); if (id != SALVAGE_OBJ_DIVINER_CRYSTAL && id != SALVAGE_OBJ_POT) { if (!EventManager::isInEvent()) { deleteRequest(); @@ -77,7 +77,7 @@ int dAcSalbageObj_c::preExecute() { } if (mBehavior == BEHAVIOR_STATIONARY) { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { if (!EventManager::isInEvent()) { deleteRequest(); } @@ -108,7 +108,7 @@ int dAcSalbageObj_c::preDraw() { if (dAcObjBase_c::preDraw() == NOT_READY) { return NOT_READY; } else { - return mSalbageRelated.isHidden() ? NOT_READY : SUCCEEDED; + return mSalvageIf.isHidden() ? NOT_READY : SUCCEEDED; } } @@ -142,9 +142,9 @@ void dAcSalbageObj_c::initSalbageObj() { mShadowRot.w = 180.0f; mScale.set(1.0f, 1.0f, 1.0f); mBehavior = getFromParams(4, 0xF); - mpSalbageRelated = &mSalbageRelated; + mpSalvageIf = &mSalvageIf; initCcAndBg(); - if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalbageRelated.getSalvageObjId())) { + if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalvageIf.getSalvageObjId())) { if (mBehavior == BEHAVIOR_CARRY && vt_0x80()) { mStateMgr.changeState(StateID_After); } else { @@ -156,12 +156,12 @@ void dAcSalbageObj_c::initSalbageObj() { forwardSpeed = 0.0f; velocity.set(0.0f, 0.0f, 0.0f); forwardAccel = 0.0f; - mSalbageRelated.setHidden(); - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + mSalvageIf.setHidden(); + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalvageIf.getSalvageObjId()) { mStateMgr.changeState(StateID_Kill); return; } else { - mSalbageRelated.setCarried(); + mSalvageIf.setCarried(); mStateMgr.changeState(StateID_Carried); } break; @@ -174,7 +174,7 @@ void dAcSalbageObj_c::initSalbageObj() { break; } default: { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { mStateMgr.changeState(StateID_Kill); return; } else { @@ -203,7 +203,7 @@ void dAcSalbageObj_c::doInteraction(s32 arg) { } void dAcSalbageObj_c::addAttentionTargetIfNeeded() { - switch (mSalbageRelated.getSalvageObjId()) { + switch (mSalvageIf.getSalvageObjId()) { case SALVAGE_OBJ_WATER_JAR: case SALVAGE_OBJ_POT: return; default: addAttentionTarget(); break; @@ -212,10 +212,10 @@ void dAcSalbageObj_c::addAttentionTargetIfNeeded() { void dAcSalbageObj_c::addAttentionTarget() { AttentionManager::sInstance->addTarget( - *this, sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()], 0, nullptr + *this, sInteractionTargetDefs[mSalvageIf.getSalvageObjId()], 0, nullptr ); - InteractionTargetDef copy = sInteractionTargetDefs[mSalbageRelated.getSalvageObjId()]; + InteractionTargetDef copy = sInteractionTargetDefs[mSalvageIf.getSalvageObjId()]; copy.field_0x00 = 1; AttentionManager::sInstance->addTarget(*this, copy, 0, nullptr); } @@ -236,14 +236,14 @@ bool dAcSalbageObj_c::shouldBeActiveDowsingTarget() const { return false; } - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() == mSalvageIf.getSalvageObjId()) { return false; } if (dSalvageMgr_c::sInstance->hasDowsingForSalvageObj(this) == false) { return false; } else { - return mSalbageRelated.getSalvageObjId() != SALVAGE_OBJ_POT; + return mSalvageIf.getSalvageObjId() != SALVAGE_OBJ_POT; } } @@ -266,7 +266,7 @@ void dAcSalbageObj_c::calcMtxFromSalbageNpc(mMtx_c &ret) { ret.ZXYrotM(rotation); } else { ret = npc->getCarriedObjMtx(); - mMtx_c rotMtx = dSalvageMgr_c::sInstance->getCarryRotMtx2(mSalbageRelated.getSalvageObjId()); + mMtx_c rotMtx = dSalvageMgr_c::sInstance->getCarryRotMtx2(mSalvageIf.getSalvageObjId()); MTXConcat(ret, rotMtx, ret); ret.getTranslation(position); } @@ -274,7 +274,7 @@ void dAcSalbageObj_c::calcMtxFromSalbageNpc(mMtx_c &ret) { mMtx_c dAcSalbageObj_c::calcWorldMtx() { mMtx_c ret; - if (mSalbageRelated.isCarried()) { + if (mSalvageIf.isCarried()) { calcMtxFromSalbageNpc(ret); } else { ret.transS(position); @@ -317,7 +317,7 @@ void dAcSalbageObj_c::initializeState_Wait() { mIsDowsingRegistered = true; } void dAcSalbageObj_c::executeState_Wait() { - if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalbageRelated.getSalvageObjId()) { + if (dSalvageMgr_c::sInstance->getCurrentSalvageObjId() != mSalvageIf.getSalvageObjId()) { if (!dSalvageMgr_c::sInstance->mSlbRef.isLinked()) { mVec3_c pos(position.x, position.y + 100000.0f, position.z); dAcObjBase_c::create(fProfile::NPC_SLB, roomid, 0xFFFFFD01, &pos, nullptr, nullptr, -1); @@ -376,7 +376,7 @@ void dAcSalbageObj_c::initializeState_DemoThrow() { mBgObjAcch.SetRoofNone(); mBgObjAcch.SetGndThinCellingOff(); mBgAcchCir.SetWall(0.0f, 100.0f); - mSalbageRelated.setNotCarried(); + mSalvageIf.setNotCarried(); } void dAcSalbageObj_c::executeState_DemoThrow() {} void dAcSalbageObj_c::finalizeState_DemoThrow() {} From f41e566a22dc312ec13e02b4011999497dead5d4 Mon Sep 17 00:00:00 2001 From: robojumper Date: Mon, 15 Sep 2025 22:18:03 +0200 Subject: [PATCH 4/4] Cleanup --- include/d/a/{d_a_salbage.h => d_a_salbage_if.h} | 4 ++-- include/d/a/d_a_salbage_obj.h | 2 +- include/d/a/obj/d_a_obj_base.h | 2 +- src/d/a/d_a_salbage_obj.cpp | 12 ++++++------ 4 files changed, 10 insertions(+), 10 deletions(-) rename include/d/a/{d_a_salbage.h => d_a_salbage_if.h} (91%) diff --git a/include/d/a/d_a_salbage.h b/include/d/a/d_a_salbage_if.h similarity index 91% rename from include/d/a/d_a_salbage.h rename to include/d/a/d_a_salbage_if.h index cca447c1..a580424f 100644 --- a/include/d/a/d_a_salbage.h +++ b/include/d/a/d_a_salbage_if.h @@ -1,5 +1,5 @@ -#ifndef D_A_SALBAGE_H -#define D_A_SALBAGE_H +#ifndef D_A_SALBAGE_IF_H +#define D_A_SALBAGE_IF_H #include "common.h" diff --git a/include/d/a/d_a_salbage_obj.h b/include/d/a/d_a_salbage_obj.h index 3afa45ca..742224bd 100644 --- a/include/d/a/d_a_salbage_obj.h +++ b/include/d/a/d_a_salbage_obj.h @@ -2,11 +2,11 @@ #define D_A_SALBAGE_OBJ_H #include "common.h" +#include "d/a/d_a_salbage_if.h" #include "d/a/obj/d_a_obj_base.h" #include "d/col/bg/d_bg_s_acch.h" #include "d/col/cc/d_cc_d.h" #include "d/d_shadow.h" -#include "d/a/d_a_salbage.h" #include "m/m3d/m_smdl.h" #include "m/m_mtx.h" #include "m/m_quat.h" diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h index 30418a75..ad20ccc9 100644 --- a/include/d/a/obj/d_a_obj_base.h +++ b/include/d/a/obj/d_a_obj_base.h @@ -4,7 +4,7 @@ #include "c/c_math.h" #include "common.h" #include "d/a/d_a_base.h" -#include "d/a/d_a_salbage.h" +#include "d/a/d_a_salbage_if.h" #include "d/col/c/c_cc_d.h" #include "d/col/c/c_m3d_g_aab.h" #include "d/d_jnt_col.h" diff --git a/src/d/a/d_a_salbage_obj.cpp b/src/d/a/d_a_salbage_obj.cpp index 2251e9b7..2e1f094b 100644 --- a/src/d/a/d_a_salbage_obj.cpp +++ b/src/d/a/d_a_salbage_obj.cpp @@ -64,8 +64,8 @@ int dAcSalbageObj_c::actorExecute() { } int dAcSalbageObj_c::preExecute() { - // TODO - this matches, but so does `bool` conversion... - int result = dAcObjBase_c::preExecute() == NOT_READY ? NOT_READY : SUCCEEDED; + // @bug bool conversion + bool result = dAcObjBase_c::preExecute(); if (dSalvageMgr_c::sInstance->checkDeliveredStoryflag(mSalvageIf.getSalvageObjId())) { s32 id = mSalvageIf.getSalvageObjId(); if (id != SALVAGE_OBJ_DIVINER_CRYSTAL && id != SALVAGE_OBJ_POT) { @@ -107,8 +107,10 @@ int dAcSalbageObj_c::preExecute() { int dAcSalbageObj_c::preDraw() { if (dAcObjBase_c::preDraw() == NOT_READY) { return NOT_READY; + } else if (mSalvageIf.isHidden()) { + return NOT_READY; } else { - return mSalvageIf.isHidden() ? NOT_READY : SUCCEEDED; + return SUCCEEDED; } } @@ -211,9 +213,7 @@ void dAcSalbageObj_c::addAttentionTargetIfNeeded() { } void dAcSalbageObj_c::addAttentionTarget() { - AttentionManager::sInstance->addTarget( - *this, sInteractionTargetDefs[mSalvageIf.getSalvageObjId()], 0, nullptr - ); + AttentionManager::sInstance->addTarget(*this, sInteractionTargetDefs[mSalvageIf.getSalvageObjId()], 0, nullptr); InteractionTargetDef copy = sInteractionTargetDefs[mSalvageIf.getSalvageObjId()]; copy.field_0x00 = 1;