d_a_obj_fence_boko ok

This commit is contained in:
CovenEsme
2025-03-13 22:57:08 +00:00
parent e42b54d95a
commit f6a1fa66b0
12 changed files with 94 additions and 30 deletions
@@ -11,3 +11,5 @@ REL/executor.c:
REL/d/a/obj/d_a_obj_fence_boko.cpp:
.text start:0x00000070 end:0x00000494
.rodata start:0x00000000 end:0x00000020
.data start:0x00000000 end:0x000000E8
@@ -2,16 +2,25 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
dAcOfenceBoko_c_classInit__Fv = .text:0x00000070; // type:function size:0x64
AcOfenceBoko__initModels = .text:0x000000E0; // type:function size:0x104
AcOfenceBoko__init = .text:0x000001F0; // type:function size:0xF4
AcOfenceBoko__destory = .text:0x000002F0; // type:function size:0x38
AcOfenceBoko__update = .text:0x00000330; // type:function size:0xB4
AcOfenceBoko__draw = .text:0x000003F0; // type:function size:0x28
createHeap__15dAcOfenceBoko_cFv = .text:0x000000E0; // type:function size:0x104
create__15dAcOfenceBoko_cFv = .text:0x000001F0; // type:function size:0xF4
doDelete__15dAcOfenceBoko_cFv = .text:0x000002F0; // type:function size:0x38
actorExecute__15dAcOfenceBoko_cFv = .text:0x00000330; // type:function size:0xB4
draw__15dAcOfenceBoko_cFv = .text:0x000003F0; // type:function size:0x28
__dt__15dAcOfenceBoko_cFv = .text:0x00000420; // type:function size:0x74
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
lbl_370_rodata_0 = .rodata:0x00000000; // type:object size:0x1C data:float
lbl_370_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
g_profile_OBJ_FENCE_BOKO = .data:0x00000000; // type:object size:0x44
lbl_370_data_44 = .data:0x00000044; // type:object size:0x24
AcOfenceBoko__vtable = .data:0x00000068; // type:object size:0x80
lbl_370_rodata_00 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
lbl_370_rodata_04 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float
lbl_370_rodata_08 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float
lbl_370_rodata_0C = .rodata:0x0000000C; // type:object size:0x4 scope:local data:float
lbl_370_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_370_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_370_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_370_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
g_profile_OBJ_FENCE_BOKO = .data:0x00000000; // type:object size:0x10
lbl_370_data_10 = .data:0x00000010; // type:object size:0xA scope:local data:string
lbl_370_data_1C = .data:0x0000001C; // type:object size:0x12 scope:local data:string
lbl_370_data_30 = .data:0x00000030; // type:object size:0x12 scope:local data:string
lbl_370_data_44 = .data:0x00000044; // type:object size:0x1D scope:local data:string
__vt__15dAcOfenceBoko_c = .data:0x00000068; // type:object size:0x80
+1 -1
View File
@@ -1399,7 +1399,7 @@ config.libs = [
Rel(NonMatching, "d_a_obj_farmland", "REL/d/a/obj/d_a_obj_farmland.cpp"),
Rel(NonMatching, "d_a_obj_fence", "REL/d/a/obj/d_a_obj_fence.cpp"),
Rel(NonMatching, "d_a_obj_fence_boko2", "REL/d/a/obj/d_a_obj_fence_boko2.cpp"),
Rel(NonMatching, "d_a_obj_fence_boko", "REL/d/a/obj/d_a_obj_fence_boko.cpp"),
Rel(Matching, "d_a_obj_fence_boko", "REL/d/a/obj/d_a_obj_fence_boko.cpp"),
Rel(NonMatching, "d_a_obj_fence_iron", "REL/d/a/obj/d_a_obj_fence_iron.cpp"),
Rel(NonMatching, "d_a_obj_fence_konsai", "REL/d/a/obj/d_a_obj_fence_konsai.cpp"),
Rel(NonMatching, "d_a_obj_fire", "REL/d/a/obj/d_a_obj_fire.cpp"),
+11
View File
@@ -2,11 +2,22 @@
#define D_A_OBJ_FENCE_BOKO_H
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_w.h"
class dAcOfenceBoko_c : public dAcObjBase_c {
public:
dAcOfenceBoko_c() {}
virtual int create() override;
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual ~dAcOfenceBoko_c() {}
virtual int actorExecute() override;
nw4r::g3d::ResFile mResFile;
m3d::smdl_c mModel;
dBgW mCollision;
bool field_0x560;
private:
};
+1 -1
View File
@@ -60,7 +60,7 @@ public:
dBgW_Base();
void ClrDBgWBase();
void CalcDiffShapeAngleY(s16);
bool InitMapStuff(mAllocator_c *pAllocator);
BOOL InitMapStuff(mAllocator_c *pAllocator);
bool fn_8034AD70() const;
bool fn_8034ADA0() const;
void RegistBg(int id);
+4 -10
View File
@@ -93,7 +93,7 @@ bool dAcODungeonShip_c::createHeap() {
if (!SceneflagManager::sInstance->checkBoolFlag(roomid, (params >> 0x10) & 0xFF)) {
goto ok;
} else {
bool result = (BOOL)mBg.InitMapStuff(&heap_allocator);
bool result = mBg.InitMapStuff(&heap_allocator);
if (result == false) {
return false;
}
@@ -459,9 +459,7 @@ void dAcODungeonShip_c::fn_485_1720() {
field_0x84C = tmp2;
}
bool dAcODungeonShip_c::fn_485_1830(s32 pathSegmentIndex, s32 direction, s32 *out) {
}
bool dAcODungeonShip_c::fn_485_1830(s32 pathSegmentIndex, s32 direction, s32 *out) {}
u16 dAcODungeonShip_c::fn_485_1900() {
s32 sign = mPath.CheckFlag(0x40000000) ? -1 : 1;
@@ -501,13 +499,9 @@ void dAcODungeonShip_c::fn_485_1A70(mVec3_c *v) {
v->set(0.0f, 0.0f, 0.0f);
}
void dAcODungeonShip_c::fn_485_1A90() {
}
void dAcODungeonShip_c::fn_485_1A90() {}
void dAcODungeonShip_c::fn_485_1BF0() {
}
void dAcODungeonShip_c::fn_485_1BF0() {}
void dAcODungeonShip_c::fn_485_1DF0() {
const dAcPy_c *link = dAcPy_c::GetLink();
+51
View File
@@ -1,3 +1,54 @@
#include "d/a/obj/d_a_obj_fence_boko.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/bg/d_bg_s_gnd_chk.h"
#include "d/d_stage.h"
SPECIAL_ACTOR_PROFILE(OBJ_FENCE_BOKO, dAcOfenceBoko_c, fProfile::OBJ_FENCE_BOKO, 0x1D7, 0, 3);
bool dAcOfenceBoko_c::createHeap() {
mResFile = nw4r::g3d::ResFile(getOarcResFile("FenceBoko"));
nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("FenceBoko");
TRY_CREATE(mModel.create(mdl, &heap_allocator, 0x120));
cBgD_t *dzb = (cBgD_t *)getOarcFile("FenceBoko", "dzb/FenceBoko.dzb");
PLC *plc = (PLC *)getOarcFile("FenceBoko", "dat/FenceBoko.plc");
updateMatrix();
mModel.setLocalMtx(mWorldMtx);
TRY_CREATE(!mCollision.Set(dzb, plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mCollision.Lock();
return mCollision.InitMapStuff(&heap_allocator);
}
int dAcOfenceBoko_c::create() {
CREATE_ALLOCATOR(dAcOfenceBoko_c);
dBgS::GetInstance()->Regist(&mCollision, this);
dBgS::GetInstance()->RegistBg(&mCollision, this);
mCollision.mRoomId = dStage_c::GetInstance()->getCurrRoomId();
roomid = mCollision.mRoomId;
mModel.setPriorityDraw(0x1C, 0x9);
boundingBox.Set(mVec3_c(-210.0f, -10.0f, -20.0f), mVec3_c(210.0f, 340.0f, 20.0f));
mCullingDistance = 50000.0;
return SUCCEEDED;
}
int dAcOfenceBoko_c::doDelete() {
dBgS::GetInstance()->UnRegist(&mCollision);
return SUCCEEDED;
}
int dAcOfenceBoko_c::actorExecute() {
// Putting these in a single if fails to match ;-;
if (!field_0x560) {
if (dBgS_ObjGndChk::CheckPos(position + mVec3_c::Ey * 100.f)) {
mCollision.mRoomId = dBgS_ObjGndChk::GetRoomID();
roomid = mCollision.mRoomId;
field_0x560 = true;
}
}
return SUCCEEDED;
}
int dAcOfenceBoko_c::draw() {
drawModelType1(&mModel);
return SUCCEEDED;
}
+1 -2
View File
@@ -43,8 +43,7 @@ bool dAcOislandNusi_c::createHeap() {
}
TRY_CREATE(!mBgW.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBgW.Lock();
// TODO InitMapStuff bool vs BOOL
return (BOOL)mBgW.InitMapStuff(&heap_allocator);
return mBgW.InitMapStuff(&heap_allocator);
}
int dAcOislandNusi_c::create() {
+1 -1
View File
@@ -73,7 +73,7 @@ bool dAcOmegamiIsland_c::createHeap() {
mBgW.OnFlag0x20();
}
return (BOOL)mBgW.InitMapStuff(&heap_allocator);
return mBgW.InitMapStuff(&heap_allocator);
}
int dAcOmegamiIsland_c::create() {
+1 -3
View File
@@ -22,9 +22,7 @@ bool dAcOutajimaLv2_c::createHeap() {
mMdl.setLocalMtx(mWorldMtx);
TRY_CREATE(!mBgW.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBgW.Lock();
// TODO InitMapStuff says it already returns a bool
BOOL ok = mBgW.InitMapStuff(&heap_allocator);
return ok;
return mBgW.InitMapStuff(&heap_allocator);
}
int dAcOutajimaLv2_c::create() {
+1 -1
View File
@@ -61,7 +61,7 @@ void dBgW_Base::SetOldShapeAngleY(s16 oldShapeAngleY) {
mOldShapeAngleY = oldShapeAngleY;
}
bool dBgW_Base::InitMapStuff(mAllocator_c *pAllocator) {
BOOL dBgW_Base::InitMapStuff(mAllocator_c *pAllocator) {
ClearMap();
return UpdateDraw(pAllocator) != false;
}
+1 -1
View File
@@ -248,7 +248,7 @@ bool dRoom_c::setupBg() {
bg->Set(kcl, plc);
bg->SetRoomId(roomid);
bg->SetPriority(dBgW_Base::PRIORITY_0);
bool ok = (BOOL)bg->InitMapStuff(&mAllocator);
bool ok = bg->InitMapStuff(&mAllocator);
if (!ok) {
return true;
}