diff options
| author | LagoLunatic <LagoLunatic@users.noreply.github.com> | 2025-05-25 19:20:08 -0400 |
|---|---|---|
| committer | LagoLunatic <LagoLunatic@users.noreply.github.com> | 2025-05-25 19:20:08 -0400 |
| commit | c484eb490df73ee750b3a0e32ae2c456e1160d16 (patch) | |
| tree | 4ab9f268a6ba20647754a0c92071969ac0a3476b /src/d/actor/d_a_obj_figure.cpp | |
| parent | 0ee416c53896590d8d1a4b0c800e849cf133f868 (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.cpp | 851 |
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 = { |
