summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_figure.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2025-05-25 19:20:08 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2025-05-25 19:20:08 -0400
commitc484eb490df73ee750b3a0e32ae2c456e1160d16 (patch)
tree4ab9f268a6ba20647754a0c92071969ac0a3476b /src/d/actor/d_a_obj_figure.cpp
parent0ee416c53896590d8d1a4b0c800e849cf133f868 (diff)
More demo work, fix some fakematches in retail
Diffstat (limited to 'src/d/actor/d_a_obj_figure.cpp')
-rw-r--r--src/d/actor/d_a_obj_figure.cpp851
1 files changed, 176 insertions, 675 deletions
diff --git a/src/d/actor/d_a_obj_figure.cpp b/src/d/actor/d_a_obj_figure.cpp
index 99a95cf2..58cd244f 100644
--- a/src/d/actor/d_a_obj_figure.cpp
+++ b/src/d/actor/d_a_obj_figure.cpp
@@ -90,680 +90,158 @@ static dCcD_SrcCyl l_cyl_src = {
struct FigureData {
/* 0x00 */ int mBmdId;
/* 0x04 */ int mModelAttr;
+#if VERSION > VERSION_DEMO
/* 0x08 */ int mRoomId;
+#endif
}; // Size: 0x0C
+#if VERSION == VERSION_DEMO
+#define FIGUREDAT(bmdIdx, dlistFlags, roomId) \
+ { \
+ bmdIdx, dlistFlags \
+ }
+#else
+#define FIGUREDAT(bmdIdx, dlistFlags, roomId) \
+ { \
+ bmdIdx, dlistFlags, roomId \
+ }
+#endif
+
static const FigureData l_figure_dat_tbl[TOTAL_FIGURE_COUNT] = {
- {
- 0,
- 0x37441422,
- -1
- },
- {
- 1,
- 0x37441422,
- -1
- },
- {
- 2,
- 0x37441422,
- -1
- },
- {
- 3,
- 0x37441422,
- -1
- },
- {
- 0xA,
- 0x37441422,
- -1
- },
- {
- 4,
- 0x37441422,
- -1
- },
- {
- 5,
- 0x37441422,
- -1
- },
- {
- 6,
- 0x37441422,
- -1
- },
- {
- 7,
- 0x37441422,
- -1
- },
- {
- 8,
- 0x37441422,
- -1
- },
- {
- 9,
- 0x11001222,
- -1
- },
- {
- 0xB,
- 0x37441422,
- -1
- },
- {
- 0xC,
- 0x37441422,
- -1
- },
- {
- 0xD,
- 0x37441422,
- -1
- },
- {
- 0,
- 0x37441422,
- -1
- },
- {
- 1,
- 0x37441422,
- -1
- },
- {
- 2,
- 0x37441422,
- -1
- },
- {
- 4,
- 0x37441422,
- -1
- },
- {
- 5,
- 0x37441422,
- -1
- },
- {
- 7,
- 0x37441422,
- -1
- },
- {
- 8,
- 0x37441422,
- -1
- },
- {
- 9,
- 0x37441422,
- -1
- },
- {
- 0xA,
- 0x37441422,
- -1
- },
- {
- 0xB,
- 0x37441422,
- -1
- },
- {
- 0xC,
- 0x37441422,
- -1
- },
- {
- 0xD,
- 0x37441422,
- -1
- },
- {
- 0xE,
- 0x37441422,
- -1
- },
- {
- 0xF,
- 0x37441422,
- -1
- },
- {
- 0x10,
- 0x37441422,
- -1
- },
- {
- 0x11,
- 0x37441422,
- -1
- },
- {
- 0x12,
- 0x37441422,
- -1
- },
- {
- 0x13,
- 0x37441422,
- -1
- },
- {
- 0x14,
- 0x37441422,
- -1
- },
- {
- 0x15,
- 0x37441422,
- -1
- },
- {
- 0x16,
- 0x37441422,
- -1
- },
- {
- 0x17,
- 0x37441422,
- -1
- },
- {
- 0x18,
- 0x37441422,
- -1
- },
- {
- 0x19,
- 0x37441422,
- -1
- },
- {
- 0x1A,
- 0x37441422,
- -1
- },
- {
- 0x1B,
- 0x37441422,
- -1
- },
- {
- 0x1C,
- 0x37441422,
- -1
- },
- {
- 0,
- 0x37441422,
- 8
- },
- {
- 1,
- 0x37441422,
- 8
- },
- {
- 2,
- 0x37441422,
- 8
- },
- {
- 3,
- 0x37441422,
- 8
- },
- {
- 4,
- 0x37441422,
- 8
- },
- {
- 5,
- 0x37441422,
- 8
- },
- {
- 6,
- 0x37441422,
- 8
- },
- {
- 7,
- 0x37441422,
- 8
- },
- {
- 8,
- 0x37441422,
- 8
- },
- {
- 9,
- 0x37441422,
- 8
- },
- {
- 0xA,
- 0x37441422,
- 8
- },
- {
- 0xB,
- 0x37441422,
- 8
- },
- {
- 0xC,
- 0x37441422,
- 8
- },
- {
- 0xD,
- 0x37441422,
- 8
- },
- {
- 0xE,
- 0x37441422,
- 8
- },
- {
- 0xF,
- 0x37441422,
- 8
- },
- {
- 0x10,
- 0x37441422,
- 8
- },
- {
- 0x11,
- 0x37441422,
- 8
- },
- {
- 0x12,
- 0x37441422,
- 8
- },
- {
- 0x13,
- 0x37441422,
- 8
- },
- {
- 6,
- 0x37441422,
- 9
- },
- {
- 1,
- 0x37441422,
- 9
- },
- {
- 2,
- 0x37441422,
- 9
- },
- {
- 5,
- 0x37441422,
- 9
- },
- {
- 0,
- 0x11001222,
- -1
- },
- {
- 1,
- 0x37441422,
- -1
- },
- {
- 2,
- 0x37441422,
- -1
- },
- {
- 3,
- 0x37441422,
- -1
- },
- {
- 4,
- 0x37441422,
- -1
- },
- {
- 5,
- 0x37441422,
- -1
- },
- {
- 6,
- 0x37441422,
- -1
- },
- {
- 7,
- 0x37441422,
- -1
- },
- {
- 8,
- 0x37441422,
- -1
- },
- {
- 9,
- 0x37441422,
- -1
- },
- {
- 0xA,
- 0x37441422,
- -1
- },
- {
- 0xB,
- 0x37441422,
- -1
- },
- {
- 0xC,
- 0x37441422,
- -1
- },
- {
- 0xD,
- 0x37441422,
- -1
- },
- {
- 0xE,
- 0x37441422,
- -1
- },
- {
- 0xF,
- 0x37441422,
- -1
- },
- {
- 0x10,
- 0x37441422,
- -1
- },
- {
- 0x11,
- 0x11001222,
- -1
- },
- {
- 0,
- 0x37441422,
- -1
- },
- {
- 5,
- 0x37441422,
- -1
- },
- {
- 6,
- 0x37441422,
- -1
- },
- {
- 7,
- 0x37441422,
- -1
- },
- {
- 8,
- 0x37441422,
- -1
- },
- {
- 9,
- 0x37441422,
- -1
- },
- {
- 0xA,
- 0x37441422,
- -1
- },
- {
- 0xB,
- 0x37441422,
- -1
- },
- {
- 0xC,
- 0x37441422,
- -1
- },
- {
- 0xD,
- 0x37441422,
- -1
- },
- {
- 1,
- 0x37441422,
- -1
- },
- {
- 2,
- 0x37441422,
- -1
- },
- {
- 3,
- 0x37441422,
- -1
- },
- {
- 4,
- 0x37441422,
- -1
- },
- {
- 0,
- 0x37441422,
- -1
- },
- {
- 1,
- 0x37441422,
- -1
- },
- {
- 2,
- 0x37441422,
- -1
- },
- {
- 3,
- 0x37441422,
- -1
- },
- {
- 4,
- 0x37441422,
- -1
- },
- {
- 5,
- 0x37441422,
- -1
- },
- {
- 6,
- 0x37441422,
- -1
- },
- {
- 7,
- 0x37441422,
- -1
- },
- {
- 8,
- 0x37441422,
- -1
- },
- {
- 9,
- 0x37441422,
- -1
- },
- {
- 0x12,
- 0x37441422,
- -1
- },
- {
- 0xA,
- 0x11001222,
- -1
- },
- {
- 0xB,
- 0x11001222,
- -1
- },
- {
- 0xC,
- 0x11001222,
- -1
- },
- {
- 0xD,
- 0x37441422,
- -1
- },
- {
- 0xE,
- 0x37441422,
- -1
- },
- {
- 0xF,
- 0x37441422,
- -1
- },
- {
- 0x10,
- 0x37441422,
- -1
- },
- {
- 0x11,
- 0x37441422,
- -1
- },
- {
- 0,
- 0x37441422,
- 0xA
- },
- {
- 1,
- 0x37441422,
- 0xA
- },
- {
- 2,
- 0x11001222,
- 0xA
- },
- {
- 3,
- 0x11001222,
- 0xA
- },
- {
- 4,
- 0x11001222,
- 0xA
- },
- {
- 5,
- 0x37441422,
- 0xA
- },
- {
- 6,
- 0x37441422,
- 0xA
- },
- {
- 7,
- 0x37441422,
- 0xA
- },
- {
- 0,
- 0x37441422,
- 0xB
- },
- {
- 1,
- 0x11001222,
- 0xB
- },
- {
- 2,
- 0x11001222,
- 0xB
- },
- {
- 3,
- 0x37441422,
- 0xB
- },
- {
- 4,
- 0x37441422,
- 0xB
- },
- {
- 0,
- 0x11001222,
- 0xC
- },
- {
- 1,
- 0x37441422,
- 0xC
- },
- {
- 2,
- 0x11001222,
- 0xC
- },
- {
- 3,
- 0x11001222,
- 0xC
- },
- {
- 4,
- 0x37441422,
- 0xC
- },
+ FIGUREDAT(0x00, 0x37441422, -1),
+ FIGUREDAT(0x01, 0x37441422, -1),
+ FIGUREDAT(0x02, 0x37441422, -1),
+ FIGUREDAT(0x03, 0x37441422, -1),
+ FIGUREDAT(0x0A, 0x37441422, -1),
+ FIGUREDAT(0x04, 0x37441422, -1),
+ FIGUREDAT(0x05, 0x37441422, -1),
+ FIGUREDAT(0x06, 0x37441422, -1),
+ FIGUREDAT(0x07, 0x37441422, -1),
+ FIGUREDAT(0x08, 0x37441422, -1),
+ FIGUREDAT(0x09, 0x11001222, -1),
+ FIGUREDAT(0x0B, 0x37441422, -1),
+ FIGUREDAT(0x0C, 0x37441422, -1),
+ FIGUREDAT(0x0D, 0x37441422, -1),
+ FIGUREDAT(0x00, 0x37441422, -1),
+ FIGUREDAT(0x01, 0x37441422, -1),
+ FIGUREDAT(0x02, 0x37441422, -1),
+ FIGUREDAT(0x04, 0x37441422, -1),
+ FIGUREDAT(0x05, 0x37441422, -1),
+ FIGUREDAT(0x07, 0x37441422, -1),
+ FIGUREDAT(0x08, 0x37441422, -1),
+ FIGUREDAT(0x09, 0x37441422, -1),
+ FIGUREDAT(0x0A, 0x37441422, -1),
+ FIGUREDAT(0x0B, 0x37441422, -1),
+ FIGUREDAT(0x0C, 0x37441422, -1),
+ FIGUREDAT(0x0D, 0x37441422, -1),
+ FIGUREDAT(0x0E, 0x37441422, -1),
+ FIGUREDAT(0x0F, 0x37441422, -1),
+ FIGUREDAT(0x10, 0x37441422, -1),
+ FIGUREDAT(0x11, 0x37441422, -1),
+ FIGUREDAT(0x12, 0x37441422, -1),
+ FIGUREDAT(0x13, 0x37441422, -1),
+ FIGUREDAT(0x14, 0x37441422, -1),
+ FIGUREDAT(0x15, 0x37441422, -1),
+ FIGUREDAT(0x16, 0x37441422, -1),
+ FIGUREDAT(0x17, 0x37441422, -1),
+ FIGUREDAT(0x18, 0x37441422, -1),
+ FIGUREDAT(0x19, 0x37441422, -1),
+ FIGUREDAT(0x1A, 0x37441422, -1),
+ FIGUREDAT(0x1B, 0x37441422, -1),
+ FIGUREDAT(0x1C, 0x37441422, -1),
+ FIGUREDAT(0x00, 0x37441422, 8),
+ FIGUREDAT(0x01, 0x37441422, 8),
+ FIGUREDAT(0x02, 0x37441422, 8),
+ FIGUREDAT(0x03, 0x37441422, 8),
+ FIGUREDAT(0x04, 0x37441422, 8),
+ FIGUREDAT(0x05, 0x37441422, 8),
+ FIGUREDAT(0x06, 0x37441422, 8),
+ FIGUREDAT(0x07, 0x37441422, 8),
+ FIGUREDAT(0x08, 0x37441422, 8),
+ FIGUREDAT(0x09, 0x37441422, 8),
+ FIGUREDAT(0x0A, 0x37441422, 8),
+ FIGUREDAT(0x0B, 0x37441422, 8),
+ FIGUREDAT(0x0C, 0x37441422, 8),
+ FIGUREDAT(0x0D, 0x37441422, 8),
+ FIGUREDAT(0x0E, 0x37441422, 8),
+ FIGUREDAT(0x0F, 0x37441422, 8),
+ FIGUREDAT(0x10, 0x37441422, 8),
+ FIGUREDAT(0x11, 0x37441422, 8),
+ FIGUREDAT(0x12, 0x37441422, 8),
+ FIGUREDAT(0x13, 0x37441422, 8),
+ FIGUREDAT(0x06, 0x37441422, 9),
+ FIGUREDAT(0x01, 0x37441422, 9),
+ FIGUREDAT(0x02, 0x37441422, 9),
+ FIGUREDAT(0x05, 0x37441422, 9),
+ FIGUREDAT(0x00, 0x11001222, -1),
+ FIGUREDAT(0x01, 0x37441422, -1),
+ FIGUREDAT(0x02, 0x37441422, -1),
+ FIGUREDAT(0x03, 0x37441422, -1),
+ FIGUREDAT(0x04, 0x37441422, -1),
+ FIGUREDAT(0x05, 0x37441422, -1),
+ FIGUREDAT(0x06, 0x37441422, -1),
+ FIGUREDAT(0x07, 0x37441422, -1),
+ FIGUREDAT(0x08, 0x37441422, -1),
+ FIGUREDAT(0x09, 0x37441422, -1),
+ FIGUREDAT(0x0A, 0x37441422, -1),
+ FIGUREDAT(0x0B, 0x37441422, -1),
+ FIGUREDAT(0x0C, 0x37441422, -1),
+ FIGUREDAT(0x0D, 0x37441422, -1),
+ FIGUREDAT(0x0E, 0x37441422, -1),
+ FIGUREDAT(0x0F, 0x37441422, -1),
+ FIGUREDAT(0x10, 0x37441422, -1),
+ FIGUREDAT(0x11, 0x11001222, -1),
+ FIGUREDAT(0x00, 0x37441422, -1),
+ FIGUREDAT(0x05, 0x37441422, -1),
+ FIGUREDAT(0x06, 0x37441422, -1),
+ FIGUREDAT(0x07, 0x37441422, -1),
+ FIGUREDAT(0x08, 0x37441422, -1),
+ FIGUREDAT(0x09, 0x37441422, -1),
+ FIGUREDAT(0x0A, 0x37441422, -1),
+ FIGUREDAT(0x0B, 0x37441422, -1),
+ FIGUREDAT(0x0C, 0x37441422, -1),
+ FIGUREDAT(0x0D, 0x37441422, -1),
+ FIGUREDAT(0x01, 0x37441422, -1),
+ FIGUREDAT(0x02, 0x37441422, -1),
+ FIGUREDAT(0x03, 0x37441422, -1),
+ FIGUREDAT(0x04, 0x37441422, -1),
+ FIGUREDAT(0x00, 0x37441422, -1),
+ FIGUREDAT(0x01, 0x37441422, -1),
+ FIGUREDAT(0x02, 0x37441422, -1),
+ FIGUREDAT(0x03, 0x37441422, -1),
+ FIGUREDAT(0x04, 0x37441422, -1),
+ FIGUREDAT(0x05, 0x37441422, -1),
+ FIGUREDAT(0x06, 0x37441422, -1),
+ FIGUREDAT(0x07, 0x37441422, -1),
+ FIGUREDAT(0x08, 0x37441422, -1),
+ FIGUREDAT(0x09, 0x37441422, -1),
+ FIGUREDAT(0x12, 0x37441422, -1),
+ FIGUREDAT(0x0A, 0x11001222, -1),
+ FIGUREDAT(0x0B, 0x11001222, -1),
+ FIGUREDAT(0x0C, 0x11001222, -1),
+ FIGUREDAT(0x0D, 0x37441422, -1),
+ FIGUREDAT(0x0E, 0x37441422, -1),
+ FIGUREDAT(0x0F, 0x37441422, -1),
+ FIGUREDAT(0x10, 0x37441422, -1),
+ FIGUREDAT(0x11, 0x37441422, -1),
+ FIGUREDAT(0x00, 0x37441422, 0xA),
+ FIGUREDAT(0x01, 0x37441422, 0xA),
+ FIGUREDAT(0x02, 0x11001222, 0xA),
+ FIGUREDAT(0x03, 0x11001222, 0xA),
+ FIGUREDAT(0x04, 0x11001222, 0xA),
+ FIGUREDAT(0x05, 0x37441422, 0xA),
+ FIGUREDAT(0x06, 0x37441422, 0xA),
+ FIGUREDAT(0x07, 0x37441422, 0xA),
+ FIGUREDAT(0x00, 0x37441422, 0xB),
+ FIGUREDAT(0x01, 0x11001222, 0xB),
+ FIGUREDAT(0x02, 0x11001222, 0xB),
+ FIGUREDAT(0x03, 0x37441422, 0xB),
+ FIGUREDAT(0x04, 0x37441422, 0xB),
+ FIGUREDAT(0x00, 0x11001222, 0xC),
+ FIGUREDAT(0x01, 0x37441422, 0xC),
+ FIGUREDAT(0x02, 0x11001222, 0xC),
+ FIGUREDAT(0x03, 0x11001222, 0xC),
+ FIGUREDAT(0x04, 0x37441422, 0xC),
};
struct FigureCheckTbl {
@@ -901,9 +379,11 @@ static cPhs_State phase_2(daObjFigure_c* i_this) {
i_this->setResFlag(0x2);
u8 figureNo = i_this->getFigureNo();
int id = dSnap_GetFigRoomId(figureNo);
+#if VERSION > VERSION_DEMO
if(l_figure_dat_tbl[figureNo].mRoomId >= 0) {
id = l_figure_dat_tbl[figureNo].mRoomId;
}
+#endif
cPhs_State status = dComIfG_resLoad(i_this->getPhase2P(), l_arcname_tbl[id]);
@@ -933,9 +413,11 @@ cPhs_State daObjFigure_c::_create() {
/* 00000720-00000A90 .text createHeap__13daObjFigure_cFv */
BOOL daObjFigure_c::createHeap() {
int id = dSnap_GetFigRoomId(getFigureNo());
+#if VERSION > VERSION_DEMO
if(l_figure_dat_tbl[getFigureNo()].mRoomId >= 0) {
id = l_figure_dat_tbl[getFigureNo()].mRoomId;
}
+#endif
J3DModelData* pModelData;
const char* arcname = l_arcname_tbl[id];
@@ -1040,14 +522,16 @@ cPhs_State daObjFigure_c::createInit() {
/* 00000BF4-00000C78 .text _delete__13daObjFigure_cFv */
BOOL daObjFigure_c::_delete() {
- dComIfG_resDelete(getPhase1P(), "Figure");
+ dComIfG_resDeleteDemo(getPhase1P(), "Figure");
int id = dSnap_GetFigRoomId(getFigureNo());
+#if VERSION > VERSION_DEMO
if(l_figure_dat_tbl[getFigureNo()].mRoomId >= 0) {
id = l_figure_dat_tbl[getFigureNo()].mRoomId;
}
+#endif
- dComIfG_resDelete(getPhase2P(), l_arcname_tbl[id]);
+ dComIfG_resDeleteDemo(getPhase2P(), l_arcname_tbl[id]);
return true;
}
@@ -1497,11 +981,13 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
/* Nonmatching - regalloc (maybe the same issue as daPy_lk_c::draw?) */
pMorf->calc();
+#if VERSION > VERSION_DEMO
J3DModel* model = pMorf->getModel();
J3DModelData* modelData = model->getModelData();
j3dSys.setModel(model);
j3dSys.setTexture(modelData->getTexture());
model->unlock();
+#endif
static mDoExt_offCupOnAupPacket l_offCupOnAupPacket1;
static mDoExt_offCupOnAupPacket l_offCupOnAupPacket2;
@@ -1512,6 +998,11 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
J3DShape* ZOffNoneShape[4];
J3DShape* ZOnShape[4];
+#if VERSION == VERSION_DEMO
+ J3DModel* model = pMorf->getModel();
+ J3DModelData* modelData = model->getModelData();
+#endif
+
J3DJoint* link_root_joint = modelData->getJointNodePointer(0x00); // link_root joint
J3DJoint* cl_eye_joint = modelData->getJointNodePointer(0x13); // cl_eye joint
J3DJoint* cl_mayu_joint = modelData->getJointNodePointer(0x15); // cl_mayu joint
@@ -1528,14 +1019,14 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
if (mtl->getZMode()->getCompareEnable() == 0) {
if ((u8)mtl->getBlend()->getType() == GX_BM_BLEND) {
ZOffBlendShape[zoff_blend_cnt++] = mtl->getShape();
- JUT_ASSERT(1767, zoff_blend_cnt <= 4);
+ JUT_ASSERT(VERSION_SELECT(1713, 1767, 1767, 1767), zoff_blend_cnt <= 4);
} else {
ZOffNoneShape[zoff_none_cnt++] = mtl->getShape();
- JUT_ASSERT(1770, zoff_none_cnt <= 4);
+ JUT_ASSERT(VERSION_SELECT(1717, 1770, 1770, 1770), zoff_none_cnt <= 4);
}
} else {
ZOnShape[zon_cnt++] = mtl->getShape();
- JUT_ASSERT(1774, zon_cnt <= 4);
+ JUT_ASSERT(VERSION_SELECT(1722, 1774, 1774, 1774), zon_cnt <= 4);
}
mtl = mtl->getNext();
}
@@ -1572,6 +1063,7 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
link_root_joint->entryIn();
+#if VERSION > VERSION_DEMO
for (i = 0, mtl = link_root_joint->getMesh(); mtl != NULL; i++, mtl = mtl->getNext()) {
if (i != 2 && i != 5) {
mtl->getShape()->show();
@@ -1579,6 +1071,7 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
mtl->getShape()->hide();
}
}
+#endif
l_onCupOffAupPacket1.entryOpa();
@@ -1597,8 +1090,12 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
ZOnShape[i]->hide();
}
+#if VERSION == VERSION_DEMO
+ pMorf->entryDL();
+#else
dComIfGd_setList();
mDoExt_modelEntryDL(pMorf->getModel());
+#endif
for (mtl = link_root_joint->getMesh(); mtl != NULL; mtl = mtl->getNext()) {
mtl->getShape()->show();
@@ -1606,6 +1103,10 @@ void linkDraw(mDoExt_McaMorf* pMorf) {
modelData->getJointNodePointer(0x14)->getMesh()->getShape()->show(); // cl_hana joint
modelData->getJointNodePointer(0x29)->getMesh()->getShape()->show(); // cl_back joint
+
+#if VERSION == VERSION_DEMO
+ dComIfGd_setList();
+#endif
}
static actor_method_class daSampleMethodTable = {