Merge pull request #138 from CovenEsme/pumpkin-bar

d_a_obj_pumpkin_bar OK
This commit is contained in:
robojumper
2025-03-14 14:38:03 +01:00
committed by GitHub
19 changed files with 122 additions and 38 deletions
@@ -11,3 +11,5 @@ REL/executor.c:
REL/d/a/obj/d_a_obj_pumpkin_bar.cpp:
.text start:0x00000070 end:0x00000490
.rodata start:0x00000000 end:0x00000020
.data start:0x00000000 end:0x00000100
@@ -2,16 +2,28 @@ _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
dAcOpumpkinBar_c_classInit__Fv = .text:0x00000070; // type:function size:0x6C
fn_391_E0 = .text:0x000000E0; // type:function size:0x7C
AcOpumpkinBar__initModels = .text:0x00000160; // type:function size:0x158
AcOpumpkinBar__init = .text:0x000002C0; // type:function size:0xF4
fn_391_3C0 = .text:0x000003C0; // type:function size:0x8
fn_391_3D0 = .text:0x000003D0; // type:function size:0x8
AcOpumpkinBar__draw = .text:0x000003E0; // type:function size:0x28
barCollisionRideCallback__16dAcOpumpkinBar_cFP4dBgWP12dAcObjBase_cP12dAcObjBase_c = .text:0x000000E0; // type:function size:0x7C
createHeap__16dAcOpumpkinBar_cFv = .text:0x00000160; // type:function size:0x158
create__16dAcOpumpkinBar_cFv = .text:0x000002C0; // type:function size:0xF4
doDelete__16dAcOpumpkinBar_cFv = .text:0x000003C0; // type:function size:0x8
actorExecute__16dAcOpumpkinBar_cFv = .text:0x000003D0; // type:function size:0x8
draw__16dAcOpumpkinBar_cFv = .text:0x000003E0; // type:function size:0x28
__dt__16dAcOpumpkinBar_cFv = .text:0x00000410; // type:function size:0x80
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
lbl_391_rodata_0 = .rodata:0x00000000; // type:object size:0x20 data:float
g_profile_OBJ_PUMPKIN_BAR = .data:0x00000000; // type:object size:0x60
lbl_391_data_60 = .data:0x00000060; // type:object size:0x20
AcOpumpkinBar__vtable = .data:0x00000080; // type:object size:0x80
lbl_391_rodata_00 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
lbl_391_rodata_04 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float
lbl_391_rodata_08 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float
lbl_391_rodata_0C = .rodata:0x0000000C; // type:object size:0x4 scope:local data:float
lbl_391_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_391_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_391_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_391_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
g_profile_OBJ_PUMPKIN_BAR = .data:0x00000000; // type:object size:0x10
lbl_391_data_10 = .data:0x00000010; // type:object size:0x7 scope:local data:string
lbl_391_data_18 = .data:0x00000018; // type:object size:0xE scope:local data:string
lbl_391_data_28 = .data:0x00000028; // type:object size:0xE scope:local data:string
lbl_391_data_28 = .data:0x00000038; // type:object size:0x14 scope:local data:string
lbl_391_data_4C = .data:0x0000004C; // type:object size:0x14 scope:local data:string
lbl_391_data_60 = .data:0x00000060; // type:object size:0x1F scope:local data:string
__vt__16dAcOpumpkinBar_c = .data:0x00000080; // type:object size:0x80
+1 -1
View File
@@ -1524,7 +1524,7 @@ config.libs = [
NonMatching, "d_a_obj_propeller_lift", "REL/d/a/obj/d_a_obj_propeller_lift.cpp"
),
Rel(NonMatching, "d_a_obj_propera", "REL/d/a/obj/d_a_obj_propera.cpp"),
Rel(NonMatching, "d_a_obj_pumpkin_bar", "REL/d/a/obj/d_a_obj_pumpkin_bar.cpp"),
Rel(Matching, "d_a_obj_pumpkin_bar", "REL/d/a/obj/d_a_obj_pumpkin_bar.cpp"),
Rel(Matching, "d_a_obj_pumpkin_leaf", "REL/d/a/obj/d_a_obj_pumpkin_leaf.cpp"),
Rel(NonMatching, "d_a_obj_push_block", "REL/d/a/obj/d_a_obj_push_block.cpp"),
Rel(NonMatching, "d_a_obj_puzzle_island", "REL/d/a/obj/d_a_obj_puzzle_island.cpp"),
+1 -2
View File
@@ -14,12 +14,11 @@ public:
virtual ~dAcOfenceBoko_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
/* 0x350 */ dBgW mCollision;
/* 0x560 */ bool field_0x560;
private:
};
#endif
+1 -2
View File
@@ -14,11 +14,10 @@ public:
virtual ~dAcOfenceBoko2_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
/* 0x350 */ dBgW mCollision;
private:
};
#endif
+1 -2
View File
@@ -14,11 +14,10 @@ public:
virtual ~dAcOfenceKonsai_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
/* 0x350 */ dBgW mCollision;
private:
};
#endif
+1 -2
View File
@@ -16,11 +16,10 @@ public:
virtual ~dAcOironStage_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
/* 0x350 */ dBgW mCollision;
private:
};
#endif
+12 -1
View File
@@ -2,13 +2,24 @@
#define D_A_OBJ_PUMPKIN_BAR_H
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_w.h"
class dAcOpumpkinBar_c : public dAcObjBase_c {
public:
static void barCollisionRideCallback(dBgW *collider, dAcObjBase_c *actor, dAcObjBase_c *interactor);
dAcOpumpkinBar_c() {}
virtual ~dAcOpumpkinBar_c() {}
virtual int create() override;
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual ~dAcOpumpkinBar_c() override;
virtual int actorExecute() override;
private:
/* 0x330 */ m3d::smdl_c mModel;
/* 0x34C */ nw4r::g3d::ResFile mResFile;
/* 0x350 */ dBgW mBarCollision;
/* 0x560 */ dBgW mBarBirdCollision;
};
#endif
+1 -2
View File
@@ -13,10 +13,9 @@ public:
virtual ~dAcOshrineAfter_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
private:
};
#endif
+1 -2
View File
@@ -14,11 +14,10 @@ public:
virtual ~dAcOshrineBefInside_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel[2];
/* 0x36C */ dBgW mCollision;
private:
};
#endif
+1 -2
View File
@@ -13,10 +13,9 @@ public:
virtual ~dAcOshrineBefore_c() {}
virtual int actorExecute() override;
private:
/* 0x330 */ nw4r::g3d::ResFile mResFile;
/* 0x334 */ m3d::smdl_c mModel;
private:
};
#endif
+3
View File
@@ -200,6 +200,9 @@ public:
u16 GetField_0x22() const {
return field_0x22;
}
void SetField_0x22(u16 val) {
field_0x22 = val;
}
bool ChkStickWall() const {
return field_0x24 & 1;
+1 -1
View File
@@ -27,7 +27,7 @@ int dAcOfenceBoko_c::create() {
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;
mCullingDistance = 50000.0f;
return SUCCEEDED;
}
+1 -1
View File
@@ -23,7 +23,7 @@ int dAcOfenceBoko2_c::create() {
dBgS::GetInstance()->RegistBg(&mCollision, this);
mModel.setPriorityDraw(0x1C, 0x9);
boundingBox.Set(mVec3_c(-160.0f, -40.0f, -70.0f), mVec3_c(180.0f, 300.0f, 60.0f));
mCullingDistance = 50000.0;
mCullingDistance = 50000.0f;
return SUCCEEDED;
}
+1 -1
View File
@@ -23,7 +23,7 @@ int dAcOironStage_c::create() {
dBgS::GetInstance()->Regist(&mCollision, this);
mModel.setPriorityDraw(0x1C, 0x9);
boundingBox.Set(mVec3_c(-460.0f, -210.0f, -260.0f), mVec3_c(460.0f, 210.0f, 260.0f));
mCullingDistance = 15000.0;
mCullingDistance = 15000.0f;
return SUCCEEDED;
}
+64
View File
@@ -1,3 +1,67 @@
#include "d/a/obj/d_a_obj_pumpkin_bar.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s.h"
#include "d/d_stage.h"
#include "d/flag/storyflag_manager.h"
SPECIAL_ACTOR_PROFILE(OBJ_PUMPKIN_BAR, dAcOpumpkinBar_c, fProfile::OBJ_PUMPKIN_BAR, 0x1ED, 0, 3);
void dAcOpumpkinBar_c::barCollisionRideCallback(dBgW *collider, dAcObjBase_c *actor, dAcObjBase_c *interactor) {
if (interactor->isActorPlayer() && actor != 0 && !StoryflagManager::sInstance->getCounterOrFlag(282)) {
StoryflagManager::sInstance->setFlag(282);
}
}
bool dAcOpumpkinBar_c::createHeap() {
mResFile = nw4r::g3d::ResFile(getOarcResFile("IslBar"));
dStage_c::bindStageResToFile(&mResFile);
dStage_c::bindSkyCmnToResFile(&mResFile);
nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("IslBar");
TRY_CREATE(mModel.create(mdl, &heap_allocator, 0x120));
void *dzb = getOarcFile("IslBar", "dzb/IslBar.dzb");
void *plc = getOarcFile("IslBar", "dat/IslBar.plc");
updateMatrix();
mModel.setLocalMtx(mWorldMtx);
TRY_CREATE(!mBarCollision.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBarCollision.Lock();
dzb = getOarcFile("IslBar", "dzb/IslBar_Bird.dzb");
plc = getOarcFile("IslBar", "dat/IslBar_Bird.plc");
TRY_CREATE(!mBarBirdCollision.Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBarBirdCollision.Lock();
return true;
}
int dAcOpumpkinBar_c::create() {
CREATE_ALLOCATOR(dAcOpumpkinBar_c);
dBgS::GetInstance()->Regist(&mBarCollision, this);
dBgS::GetInstance()->Regist(&mBarBirdCollision, this);
mBarBirdCollision.SetField_0x22(2);
mModel.setPriorityDraw(0x1C, 0x9);
// 100000.0 is in the rodata and the instructions need it.
// This also works if a separate variable is used but I
// think it's more likely that mCullingDistance got set twice.
mCullingDistance = 100000.0f;
boundingBox.Set(mVec3_c(-2790.0f, -1450.0f, -8270.0f), mVec3_c(2880.0f, 2120.0f, 1370.0f));
mCullingDistance = 500000.0f;
mBarCollision.SetRideCallback(barCollisionRideCallback);
return SUCCEEDED;
}
int dAcOpumpkinBar_c::doDelete() {
return SUCCEEDED;
}
int dAcOpumpkinBar_c::actorExecute() {
return SUCCEEDED;
}
int dAcOpumpkinBar_c::draw() {
drawModelType1(&mModel);
return SUCCEEDED;
}
dAcOpumpkinBar_c::~dAcOpumpkinBar_c() {}
+1 -1
View File
@@ -15,7 +15,7 @@ int dAcOshrineAfter_c::create() {
mModel.setLocalMtx(mWorldMtx);
mModel.setPriorityDraw(0x1C, 0x9);
boundingBox.Set(mVec3_c(-4000.0f, 7000.0f, 5000.0f), mVec3_c(5000.0f, 15000.0f, 14000.0f));
mCullingDistance = 50000.0;
mCullingDistance = 50000.0f;
return SUCCEEDED;
}
+1 -1
View File
@@ -15,7 +15,7 @@ int dAcOshrineBefore_c::create() {
mModel.setLocalMtx(mWorldMtx);
mModel.setPriorityDraw(0x1C, 0x9);
boundingBox.Set(mVec3_c(-4000.0f, 7000.0f, 5000.0f), mVec3_c(4000.0f, 13000.0f, 14000.0f));
mCullingDistance = 50000.0;
mCullingDistance = 50000.0f;
return SUCCEEDED;
}
+6 -7
View File
@@ -8,7 +8,6 @@
#include "rvl/VI.h" // IWYU pragma: export
#include "string.h"
EGG::NullController null_controller;
namespace EGG {
@@ -63,8 +62,8 @@ CoreController::CoreController() : mDpdPos(), mAccel(), mAccelFlags(), mFlag(0)
void CoreController::sceneReset() {
mAccel.set(0.0, 0.0, 0.0);
mDpdPos.x = 0.0;
mDpdPos.y = 0.0;
mDpdPos.x = 0.0f;
mDpdPos.y = 0.0f;
mIdleTime = 0;
mPostureMatrixPrev.makeIdentity();
mPostureMatrix.makeIdentity();
@@ -286,7 +285,7 @@ void CoreController::endFrame() {
/* 0x80499AC0 */
f32 CoreController::getFreeStickX() const {
if (mCoreStatus->getDevType() == WPAD_DEV_CORE) {
return 0.0;
return 0.0f;
}
return mCoreStatus[0].getFSStickX();
}
@@ -294,7 +293,7 @@ f32 CoreController::getFreeStickX() const {
/* 0x80499AE0 */
f32 CoreController::getFreeStickY() const {
if (mCoreStatus->getDevType() == WPAD_DEV_CORE) {
return 0.0;
return 0.0f;
}
return mCoreStatus[0].getFSStickY();
}
@@ -429,8 +428,8 @@ void ControllerRumbleUnit::init() {
mPattern = nullptr;
mPatternPos = nullptr;
mTimer = 0;
mIntensity = 0.0;
mRampUp = 0.0;
mIntensity = 0.0f;
mRampUp = 0.0f;
mFlag.makeAllZero();
}