From 427a11f04f753a4476e110f7bf0052d6a5a15778 Mon Sep 17 00:00:00 2001 From: jt Date: Sat, 3 Oct 2026 14:19:29 -0500 Subject: [PATCH 1/3] MapObjWall: Add class header, ctor and getBmdFileName --- include/Shiraiwa/Objects/MapObjWall.h | 43 +++++++++++++++++++++++++++ src/Shiraiwa/MapObjWall.cpp | 23 ++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 include/Shiraiwa/Objects/MapObjWall.h diff --git a/include/Shiraiwa/Objects/MapObjWall.h b/include/Shiraiwa/Objects/MapObjWall.h new file mode 100644 index 00000000..225f77ce --- /dev/null +++ b/include/Shiraiwa/Objects/MapObjWall.h @@ -0,0 +1,43 @@ +#ifndef MAPOBJWALL_H +#define MAPOBJWALL_H + +#include +#include + +#include "Kaneshige/Course/CrsData.h" +#include "Sato/StateObserver.h" +#include "Shiraiwa/Coord3D.h" +#include "Shiraiwa/Objects/MapObjHioNode.h" + +#include "types.h" + +class TMapObjWall : public TMapObjHioNode, public StateObserver +{ +public: + // Global + TMapObjWall(const CrsData::SObject &); // 0x802a5284 + virtual ~TMapObjWall(); // 0x802a534c + virtual void reset(); // 0x802a53f4 + virtual const char *getBmdFileName(); // 0x802a5508 + virtual void loadAnimation(); // 0x802a5530 + virtual void createModel(JKRSolidHeap *, u32); // 0x802a5598 + virtual void calc(); // 0x802a56dc + virtual void InitExec(); // 0x802a5758 + virtual void MoveExec(); // 0x802a57c4 + void initFunc_Move(); // 0x802a5830 + void doFunc_Move(); // 0x802a58bc + void initFunc_Rest(); // 0x802a5908 + void doFunc_Rest(); // 0x802a590c + virtual void createColModel(J3DModelData *); // 0x802a5964 + + static StateFuncSet sTable[2]; // 0x803a5978 + static bool sUseBca; // 0x80415238 + static J3DAnmTransform *sWlWallBckAnmTrans; // 0x80416ec8 + static J3DMtxCalc *sWlWallBckMtxCalc; // 0x80416ecc + +private: + TPathMove *mPathMove; // 158 + u8 _15c[0x160 - 0x15c]; // unknown, see reset/calc +}; // Size: 0x160 + +#endif // MAPOBJWALL_H diff --git a/src/Shiraiwa/MapObjWall.cpp b/src/Shiraiwa/MapObjWall.cpp index e69de29b..bc752291 100644 --- a/src/Shiraiwa/MapObjWall.cpp +++ b/src/Shiraiwa/MapObjWall.cpp @@ -0,0 +1,23 @@ +#include "Shiraiwa/Objects/MapObjWall.h" + +J3DAnmTransform *TMapObjWall::sWlWallBckAnmTrans; +J3DMtxCalc *TMapObjWall::sWlWallBckMtxCalc; + +bool TMapObjWall::sUseBca = true; + +StateObserver::StateFuncSet TMapObjWall::sTable[2] = { + {0, &TMapObjWall::initFunc_Move, &TMapObjWall::doFunc_Move}, + {1, &TMapObjWall::initFunc_Rest, &TMapObjWall::doFunc_Rest}, +}; + +TMapObjWall::TMapObjWall(const CrsData::SObject &obj) : TMapObjHioNode(obj) { + NewAnmCtrl(); + createSoundMgr(); + mPathMove = new TPathMove(&obj); + reset(); +} + +const char *TMapObjWall::getBmdFileName() { + static const char *cBmdName = "/Objects/wl_wall1.bmd"; + return cBmdName; +} From 4ec58da603d7192b76cbb074c9b3d24f15362c7e Mon Sep 17 00:00:00 2001 From: jt Date: Sat, 3 Oct 2026 15:07:10 -0500 Subject: [PATCH 2/3] MapObjWall: Match doFunc_Rest --- include/Shiraiwa/Coord3D.h | 3 ++- include/Shiraiwa/Objects/MapObjWall.h | 2 +- src/Shiraiwa/MapObjWall.cpp | 10 ++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/include/Shiraiwa/Coord3D.h b/include/Shiraiwa/Coord3D.h index 0205eead..6a4b128f 100644 --- a/include/Shiraiwa/Coord3D.h +++ b/include/Shiraiwa/Coord3D.h @@ -60,13 +60,14 @@ class TPathMove { void checkReachTarget(); // Inline/Unused + u16 get_8() const { return _8; } void setTargetNode(f32, f32); void setTargetNode(u16); void getNodeDir(u16, JGeometry::TVec3f *); protected: const CrsData::SObject *mpObj; // 04 - s16 _8; // + u16 _8; // JGeometry::TVec3f *mpPos; // 0c JGeometry::TVec3f *mpVel; // 10 f32 _14; diff --git a/include/Shiraiwa/Objects/MapObjWall.h b/include/Shiraiwa/Objects/MapObjWall.h index 225f77ce..17ad314b 100644 --- a/include/Shiraiwa/Objects/MapObjWall.h +++ b/include/Shiraiwa/Objects/MapObjWall.h @@ -37,7 +37,7 @@ class TMapObjWall : public TMapObjHioNode, public StateObserver private: TPathMove *mPathMove; // 158 - u8 _15c[0x160 - 0x15c]; // unknown, see reset/calc + u16 mRestFrame; // 15C }; // Size: 0x160 #endif // MAPOBJWALL_H diff --git a/src/Shiraiwa/MapObjWall.cpp b/src/Shiraiwa/MapObjWall.cpp index bc752291..175ac262 100644 --- a/src/Shiraiwa/MapObjWall.cpp +++ b/src/Shiraiwa/MapObjWall.cpp @@ -21,3 +21,13 @@ const char *TMapObjWall::getBmdFileName() { static const char *cBmdName = "/Objects/wl_wall1.bmd"; return cBmdName; } + +void TMapObjWall::initFunc_Rest() {} + +void TMapObjWall::doFunc_Rest() { + if (IsPathMove()) { + if (mPathMove->get_8() == 0 || getStateCount() > mRestFrame) { + setState(0); + } + } +} From b49c154f758d0e0ff649b2d046acbd10fef7b762 Mon Sep 17 00:00:00 2001 From: jt Date: Sat, 3 Oct 2026 18:55:52 -0500 Subject: [PATCH 3/3] MapObjWall: Add stubs for remaining functions --- src/Shiraiwa/MapObjWall.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Shiraiwa/MapObjWall.cpp b/src/Shiraiwa/MapObjWall.cpp index 175ac262..7df41ec7 100644 --- a/src/Shiraiwa/MapObjWall.cpp +++ b/src/Shiraiwa/MapObjWall.cpp @@ -17,11 +17,29 @@ TMapObjWall::TMapObjWall(const CrsData::SObject &obj) : TMapObjHioNode(obj) { reset(); } +TMapObjWall::~TMapObjWall() {} + +void TMapObjWall::reset() {} + const char *TMapObjWall::getBmdFileName() { static const char *cBmdName = "/Objects/wl_wall1.bmd"; return cBmdName; } +void TMapObjWall::loadAnimation() {} + +void TMapObjWall::createModel(JKRSolidHeap *, u32) {} + +void TMapObjWall::calc() {} + +void TMapObjWall::InitExec() {} + +void TMapObjWall::MoveExec() {} + +void TMapObjWall::initFunc_Move() {} + +void TMapObjWall::doFunc_Move() {} + void TMapObjWall::initFunc_Rest() {} void TMapObjWall::doFunc_Rest() { @@ -31,3 +49,5 @@ void TMapObjWall::doFunc_Rest() { } } } + +void TMapObjWall::createColModel(J3DModelData *) {}