More demo work, fix some fakematches in retail

This commit is contained in:
LagoLunatic
2025-05-25 19:20:08 -04:00
parent 0ee416c538
commit c484eb490d
15 changed files with 416 additions and 753 deletions
+176 -675
View File
@@ -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 = {