Merge pull request #194 from Orstedra/d_a_obj_girahim_foot

d_a_obj_girahim_foot 95%
This commit is contained in:
robojumper
2025-05-29 11:58:58 +02:00
committed by GitHub
3 changed files with 115 additions and 23 deletions
@@ -4,22 +4,21 @@ _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
dAcOgirahimFoot_c_classInit__Fv = .text:0x000000F0; // type:function size:0xD0
fn_425_1C0 = .text:0x000001C0; // type:function size:0x58
__dt__15dShadowCircle_cFv = .text:0x000001C0; // type:function size:0x58
__dt__30sFState_c<17dAcOgirahimFoot_c>Fv = .text:0x00000220; // type:function size:0x58
__dt__33sFStateFct_c<17dAcOgirahimFoot_c>Fv = .text:0x00000280; // type:function size:0x6C
__dt__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000002F0; // type:function size:0xA0
__dt__56sFStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000390; // type:function size:0xA4
fn_425_440 = .text:0x00000440; // type:function size:0x80
fn_425_4C0 = .text:0x000004C0; // type:function size:0xE8
createHeap__17dAcOgirahimFoot_cFv = .text:0x00000440; // type:function size:0x80
create__17dAcOgirahimFoot_cFv = .text:0x000004C0; // type:function size:0xE8
changeState__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000005B0; // type:function size:0x10
fn_425_5C0 = .text:0x000005C0; // type:function size:0x8
fn_425_5D0 = .text:0x000005D0; // type:function size:0x30
doDelete__17dAcOgirahimFoot_cFv = .text:0x000005C0; // type:function size:0x8
actorExecute__17dAcOgirahimFoot_cFv = .text:0x000005D0; // type:function size:0x30
executeState__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000600; // type:function size:0x10
fn_425_610 = .text:0x00000610; // type:function size:0xF4
draw__17dAcOgirahimFoot_cFv = .text:0x00000610; // type:function size:0xF4
getStateID__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000710; // type:function size:0x10
initializeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000720; // type:function size:0xC
executeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000730; // type:function size:0x24
fn_425_754 = .text:0x00000754; // type:function size:0x4
executeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000730; // type:function size:0x28
finalizeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000760; // type:function size:0x4
initializeState_Appear__17dAcOgirahimFoot_cFv = .text:0x00000770; // type:function size:0xC
executeState_Appear__17dAcOgirahimFoot_cFv = .text:0x00000780; // type:function size:0x68
@@ -47,15 +46,15 @@ _dtors = .dtors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
lbl_425_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float
g_profile_OBJ_GIRAHIM_FOOT = .data:0x00000000; // type:object size:0x10 data:4byte
lbl_425_data_10 = .data:0x00000010; // type:object size:0x10
lbl_425_data_20 = .data:0x00000020; // type:object size:0x20
lbl_425_data_40 = .data:0x00000040; // type:object size:0x80
lbl_425_data_C0 = .data:0x000000C0; // type:object size:0x30
lbl_425_data_F0 = .data:0x000000F0; // type:object size:0x30
lbl_425_data_120 = .data:0x00000120; // type:object size:0x18
lbl_425_data_138 = .data:0x00000138; // type:object size:0x18
lbl_425_data_150 = .data:0x00000150; // type:object size:0x9C
lbl_425_data_1EC = .data:0x000001EC; // type:object size:0x34
lbl_425_data_10 = .data:0x00000010; // type:object size:0x10 scope:local
lbl_425_data_20 = .data:0x00000020; // type:object size:0x20 scope:local
__vt__17dAcOgirahimFoot_c = .data:0x00000040; // type:object size:0x80
lbl_425_data_C0 = .data:0x000000C0; // type:object size:0x30 scope:local
lbl_425_data_F0 = .data:0x000000F0; // type:object size:0x30 scope:local
lbl_425_data_120 = .data:0x00000120; // type:object size:0x18 scope:local
lbl_425_data_138 = .data:0x00000138; // type:object size:0x18 scope:local
lbl_425_data_150 = .data:0x00000150; // type:object size:0x9C scope:local
lbl_425_data_1EC = .data:0x000001EC; // type:object size:0x34 scope:local
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_425_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
lbl_425_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte
+15 -2
View File
@@ -2,19 +2,32 @@
#define D_A_OBJ_GIRAHIM_FOOT_H
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/d_shadow.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 dAcOgirahimFoot_c : public dAcObjBase_c {
public:
dAcOgirahimFoot_c() : mStateMgr(*this, sStateID::null) {}
virtual ~dAcOgirahimFoot_c() {}
virtual int create() override;
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorExecute() override;
STATE_FUNC_DECLARE(dAcOgirahimFoot_c, Wait);
STATE_FUNC_DECLARE(dAcOgirahimFoot_c, Appear);
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcOgirahimFoot_c);
/* 0x330 */ nw4r::g3d::ResFile mRes;
/* 0x334 */ m3d::smdl_c mMdl;
/* 0x350 */ dShadowCircle_c mShadow;
/* 0x358 */ STATE_MGR_DECLARE(dAcOgirahimFoot_c);
/* 0x394 */ bool field_0x394;
};
#endif
+84 -4
View File
@@ -1,13 +1,93 @@
#include "d/a/obj/d_a_obj_girahim_foot.h"
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "f/f_base.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_emitter.h"
SPECIAL_ACTOR_PROFILE(OBJ_GIRAHIM_FOOT, dAcOgirahimFoot_c, fProfile::OBJ_GIRAHIM_FOOT, 0x210, 0, 6);
STATE_DEFINE(dAcOgirahimFoot_c, Wait);
STATE_DEFINE(dAcOgirahimFoot_c, Appear);
void dAcOgirahimFoot_c::initializeState_Wait() {}
void dAcOgirahimFoot_c::executeState_Wait() {}
bool dAcOgirahimFoot_c::createHeap() {
mRes = nw4r::g3d::ResFile(getOarcResFile("Girahim_Foot"));
nw4r::g3d::ResMdl resMdl = mRes.GetResMdl("Girahim_Foot");
TRY_CREATE(mMdl.create(resMdl, &heap_allocator, 0x120, 1, nullptr));
return true;
}
int dAcOgirahimFoot_c::create() {
CREATE_ALLOCATOR(dAcOgirahimFoot_c);
updateMatrix();
mMdl.setLocalMtx(mWorldMtx);
mStateMgr.changeState(StateID_Wait);
poscopy2.x = 13275.0f;
poscopy2.y = 2370.0f;
poscopy2.z = -11780.0f;
mVec3_c min, max;
mMdl.getBounds(&min, &max);
boundingBox.Set(min, max);
return SUCCEEDED;
}
int dAcOgirahimFoot_c::doDelete() {
return SUCCEEDED;
};
int dAcOgirahimFoot_c::draw() {
if (*mStateMgr.getStateID() == StateID_Appear) {
drawModelType1(&mMdl);
static mQuat_c rot(0.0f, 25.0f, 0.0f, 200.0f);
fn_8002edb0(mShadow, mMdl, &rot, -1, -1, 0.0f);
}
return SUCCEEDED;
}
int dAcOgirahimFoot_c::actorExecute() {
mStateMgr.executeState();
return SUCCEEDED;
}
void dAcOgirahimFoot_c::initializeState_Wait() {
field_0x394 = false;
}
void dAcOgirahimFoot_c::executeState_Wait() {
if (field_0x394) {
mStateMgr.changeState(StateID_Appear);
}
return;
}
void dAcOgirahimFoot_c::finalizeState_Wait() {}
void dAcOgirahimFoot_c::initializeState_Appear() {}
void dAcOgirahimFoot_c::executeState_Appear() {}
void dAcOgirahimFoot_c::initializeState_Appear() {
field_0x394 = true;
}
// Not matching by one instruction
void dAcOgirahimFoot_c::executeState_Appear() {
if (field_0x394) {
return;
}
dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_77_, position, nullptr, &mScale, nullptr, nullptr, 0, 0);
deleteRequest();
}
void dAcOgirahimFoot_c::finalizeState_Appear() {}