mirror of
https://github.com/zeldaret/tp
synced 2026-09-10 04:02:20 -04:00
d_a_npc work
daBaseNpc_c::setBckAnm and J3DAnmTransform* daBaseNpc_c daBaseNpc_c::setBtpAnm daBaseNpc_c::attnSttsOn daBaseNpc_c::orderEvent daBaseNpc_c::setEnvTevColor daBaseNpc_c::setRoomNo daBaseNpc_c::checkEndAnm attempt CheckCreateHeap daNpcF_addIdx daNpcF_subIdx daNpcF_incIdx daNpcF_decIdx daNpcF_ActorMngr_c::initialize() daNpcF_ActorMngr_c::entry cleanup daNpcF_ActorMngr_c::entry daNpcF_ActorMngr_c::remove daNpcF_ActorMngr_c::getActorP daNpcF_MatAnm_c::calc attempt daNpcF_SPCurve_c::initialize minor fixes daNpcF_Path_c::initialize daNpcF_Path_c::setPathInfo daNpcF_Path_c::chkPassed daNpcF_Path_c::reverse daNpcF_Path_c::setNextIdx daNpcF_Path_c::getNextIdx daNpcF_Path_c::getBeforeIdx daNpcF_Path_c::getBeforePos daNpcF_Path_c::getNextPos daNpcT_MatAnm_c::initialize daNpcT_MatAnm_c::calc daNpcT_addIdx daNpcT_subIdx daNpcT_decIdx daNpcT_Path_c::hermite daNpcT_Path_c::initialize daNpcT_Path_c::setPathInfo attempt daNpcT_Path_c::setNextPathInfo daNpcT_Path_c::reverse daNpcT_Path_c::setNextIdx daNpcT_Path_c::getDstPos attempt daNpcT_DmgStagger_c::setParam Add FLOAT_LABEL where possible fopEn_enemy / fix e_wb move jasper's jsystem work over d_attention / d_demo / d_lib work remove asm clean up dolphin files / work on some rels (#212) * d_a_alldie / d_a_tboxSw / d_a_tag_gstart / d_a_tag_hstop * dolphin OS work / cleanup * dolphin GX work / cleanup * finish changing dolphin files to C * more files into C * match rest of MSL_C math functions * more dolphin files converted to C * remove asm * d_bg_w work * remove asm * d_a_alink work / kytag14 initial changes to d_a_e_yc checkpoint until virtual destructor issue is solved daNpcF_Lookat_c::adjustMoveDisAngle daBaseNpc_c::setMtx daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() daNpcT_c::ctrlFaceMotion daNpcT_c::ctrlMsgAnm attempt daNpcT_c::initTalk daNpcF_clearMessageTmpBit daNpcF_getDistTableIdx daNpcF_offTmpBit daNpcF_onTmpBit daNpcF_chkTmpBit daNpcF_onEvtBit daNpcF_chkEvtBit daNpcF_c::getDistTableIdx daNpcF_chkPointInArea daNpcF_chkDoBtnEqSpeak daNpcF_getPlayerInfoFromPlayerList attempt daNpcF_pntVsLineSegmentLengthSquare2D daNpcF_c::chkPointInArea daNpcF_c::chkPointInArea daNpcF_c::getAttentionPos daNpcT_chkTmpBit daNpcT_offTmpBit daNpcT_onTmpBit daNpcT_chkEvtBit daNpcT_offEvtBit daNpcT_onEvtBit daNpcT_chkDoBtnIsSpeak daNpcT_getDistTableIdx daBaseNpc_acMngr_c::entry daNpcF_c::initTalk undo override
This commit is contained in:
@@ -159,7 +159,7 @@ void J2DIndTevStage::load(u8 tevStage) {
|
||||
|
||||
/* 802EA098-802EA0CC 2E49D8 0034+00 0/0 1/1 0/0 .text load__12J2DIndTexMtxFUc */
|
||||
void J2DIndTexMtx::load(u8 indTexMtx) {
|
||||
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + indTexMtx), mIndTexMtxInfo.mMtx,
|
||||
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + indTexMtx), (f32*)mIndTexMtxInfo.mMtx,
|
||||
mIndTexMtxInfo.mScaleExp);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,14 +49,12 @@ extern "C" u8 sWorkArea_MtxReg__13J3DSkinDeform[2048 + 8 /* padding */];
|
||||
//
|
||||
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void OSReport();
|
||||
extern "C" void* __nwa__FUl();
|
||||
extern "C" void* __nwa__FUli();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void J3DGQRSetup7__FUlUlUlUl();
|
||||
extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f();
|
||||
extern "C" void makeVcdVatCmd__8J3DShapeFv();
|
||||
extern "C" void DCStoreRange();
|
||||
extern "C" void __construct_new_array();
|
||||
extern "C" void __save_gpr();
|
||||
extern "C" void _savegpr_17();
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
|
||||
//
|
||||
@@ -58,21 +57,15 @@ extern "C" void _restgpr_28();
|
||||
/* 80456400-80456404 004A00 0004+00 2/2 0/0 0/0 .sdata2 @781 */
|
||||
SECTION_SDATA2 static f32 lit_781 = 1.0f;
|
||||
|
||||
/* 80456404-80456408 004A04 0004+00 1/1 0/0 0/0 .sdata2 @782 */
|
||||
SECTION_SDATA2 static f32 lit_782 = 10000.0f;
|
||||
|
||||
/* 80456408-80456410 004A08 0008+00 2/2 0/0 0/0 .sdata2 @784 */
|
||||
SECTION_SDATA2 static f64 lit_784 = 4503599627370496.0 /* cast u32 to float */;
|
||||
|
||||
void J3DDrawBuffer::calcZRatio() {
|
||||
mZRatio = (mZFar - mZNear) / (f32)mBufSize;
|
||||
}
|
||||
|
||||
void J3DDrawBuffer::initialize() {
|
||||
mDrawType = 0;
|
||||
mSortType = 0;
|
||||
mDrawType = DRAW_HEAD;
|
||||
mSortType = SORT_MAT;
|
||||
mZNear = lit_781;
|
||||
mZFar = lit_782;
|
||||
mZFar = 10000.0f;
|
||||
mpZMtx = NULL;
|
||||
mpCallBackPacket = NULL;
|
||||
mBufSize = 0x20;
|
||||
@@ -123,7 +116,7 @@ asm void J3DDrawBuffer::frameInit() {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) {
|
||||
asm int J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s"
|
||||
}
|
||||
@@ -134,199 +127,161 @@ asm void J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) {
|
||||
asm int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
inline f32 J3DCalcZValue(register MtxP m, register Vec v) {
|
||||
register f32 out;
|
||||
|
||||
// clang-format off
|
||||
asm {
|
||||
lfs f1, lit_781(r2)
|
||||
psq_l f0, 8(v), 0, 0 /* qr0 */
|
||||
lfs f2, 0x10(v)
|
||||
psq_l f4, 32(m), 0, 0 /* qr0 */
|
||||
psq_l out, 40(m), 0, 0 /* qr0 */
|
||||
ps_merge00 f2, f2, f1
|
||||
ps_mul f4, f0, f4
|
||||
ps_madd out, f2, out, f4
|
||||
ps_sum0 out, out, out, out
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/* 8032529C-803253B4 31FBDC 0118+00 1/0 0/0 0/0 .text entryZSort__13J3DDrawBufferFP12J3DMatPacket
|
||||
*/
|
||||
// J3DCalcZValue needs work with the asm registers
|
||||
#ifdef NONMATCHING
|
||||
int J3DDrawBuffer::entryZSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
Vec tmp;
|
||||
tmp.x = mpZMtx[0][3];
|
||||
tmp.y = mpZMtx[1][3];
|
||||
tmp.z = mpZMtx[2][3];
|
||||
|
||||
f32 value = -J3DCalcZValue(j3dSys.getViewMtx(), tmp);
|
||||
|
||||
u32 uvar4;
|
||||
if (mZNear + mZRatio < value) {
|
||||
if (mZFar - mZRatio > value) {
|
||||
uvar4 = value / mZRatio;
|
||||
} else {
|
||||
uvar4 = mBufSize - 1;
|
||||
}
|
||||
} else {
|
||||
uvar4 = 0;
|
||||
}
|
||||
|
||||
u32 idx = (mBufSize - 1) - uvar4;
|
||||
i_packet->setNextPacket(mpBuf[idx]);
|
||||
mpBuf[idx] = i_packet;
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::entryZSort(J3DMatPacket* param_0) {
|
||||
asm int J3DDrawBuffer::entryZSort(J3DMatPacket* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryZSort__13J3DDrawBufferFP12J3DMatPacket.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 803253B4-80325404 31FCF4 0050+00 1/0 0/0 0/0 .text
|
||||
* entryModelSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::entryModelSort(J3DMatPacket* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryModelSort__13J3DDrawBufferFP12J3DMatPacket.s"
|
||||
int J3DDrawBuffer::entryModelSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
if (mpCallBackPacket != NULL) {
|
||||
mpCallBackPacket->addChildPacket(i_packet);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80325404-80325458 31FD44 0054+00 1/0 0/0 0/0 .text
|
||||
* entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::entryInvalidSort(J3DMatPacket* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket.s"
|
||||
}
|
||||
#pragma pop
|
||||
int J3DDrawBuffer::entryInvalidSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
bool J3DDrawBuffer::entryNonSort(J3DMatPacket* pMat) {
|
||||
pMat->clear();
|
||||
pMat->mpShapePacket->clear();
|
||||
if (mpCallBackPacket != NULL) {
|
||||
mpCallBackPacket->addChildPacket(i_packet->getShapePacket());
|
||||
return 1;
|
||||
}
|
||||
|
||||
// inlined copy of entryImm, add to start of buf
|
||||
pMat->mpNextSibling = mpBuf[0];
|
||||
mpBuf[0] = pMat;
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool J3DDrawBuffer::entryImm(J3DPacket* pPacket, u16 index) {
|
||||
pPacket->mpNextSibling = mpBuf[index];
|
||||
mpBuf[index] = pPacket;
|
||||
return true;
|
||||
int J3DDrawBuffer::entryNonSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->mpShapePacket->drawClear();
|
||||
|
||||
i_packet->setNextPacket(mpBuf[0]);
|
||||
mpBuf[0] = i_packet;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803CEBE8-803CEBF4 -00001 000C+00 1/1 0/0 0/0 .data @992 */
|
||||
SECTION_DATA static void* lit_992[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryMatSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
int J3DDrawBuffer::entryImm(J3DPacket* i_packet, u16 index) {
|
||||
i_packet->setNextPacket(mpBuf[index]);
|
||||
mpBuf[index] = i_packet;
|
||||
|
||||
/* 803CEBF4-803CEC00 -00001 000C+00 0/1 0/0 0/0 .data @993 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_993[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC00-803CEC0C -00001 000C+00 0/1 0/0 0/0 .data @994 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_994[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryZSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC0C-803CEC18 -00001 000C+00 0/1 0/0 0/0 .data @995 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_995[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryModelSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC18-803CEC24 -00001 000C+00 0/1 0/0 0/0 .data @996 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_996[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC24-803CEC30 -00001 000C+00 0/1 0/0 0/0 .data @997 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_997[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)entryNonSort__13J3DDrawBufferFP12J3DMatPacket,
|
||||
};
|
||||
#pragma pop
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 803CEC30-803CEC78 02BD50 0048+00 0/1 1/1 0/0 .data sortFuncTable__13J3DDrawBuffer */
|
||||
SECTION_DATA u8 J3DDrawBuffer::sortFuncTable[72] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA sortFunc J3DDrawBuffer::sortFuncTable[6] = {
|
||||
&J3DDrawBuffer::entryMatSort, &J3DDrawBuffer::entryMatAnmSort, &J3DDrawBuffer::entryZSort,
|
||||
&J3DDrawBuffer::entryModelSort, &J3DDrawBuffer::entryInvalidSort, &J3DDrawBuffer::entryNonSort,
|
||||
};
|
||||
|
||||
/* 803CEC78-803CEC84 -00001 000C+00 0/1 0/0 0/0 .data @998 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_998[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)drawHead__13J3DDrawBufferCFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC84-803CEC90 -00001 000C+00 0/1 0/0 0/0 .data @999 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_999[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)drawTail__13J3DDrawBufferCFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 803CEC90-803CECA8 02BDB0 0018+00 1/2 0/0 0/0 .data drawFuncTable__13J3DDrawBuffer */
|
||||
SECTION_DATA u8 J3DDrawBuffer::drawFuncTable[24] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA drawFunc J3DDrawBuffer::drawFuncTable[2] = {
|
||||
&J3DDrawBuffer::drawHead,
|
||||
&J3DDrawBuffer::drawTail,
|
||||
};
|
||||
|
||||
/* 803254AC-80325500 31FDEC 0054+00 0/0 2/2 0/0 .text draw__13J3DDrawBufferCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::draw() const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/draw__13J3DDrawBufferCFv.s"
|
||||
void J3DDrawBuffer::draw() const {
|
||||
drawFunc func = drawFuncTable[mDrawType];
|
||||
(this->*func)();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80325500-80325578 31FE40 0078+00 1/0 0/0 0/0 .text drawHead__13J3DDrawBufferCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::drawHead() const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawHead__13J3DDrawBufferCFv.s"
|
||||
void J3DDrawBuffer::drawHead() const {
|
||||
u32 size = mBufSize;
|
||||
J3DPacket** buf = mpBuf;
|
||||
|
||||
for (u32 i = 0; i < size; i++) {
|
||||
for (J3DPacket* packet = buf[i]; packet != NULL; packet = packet->getNextPacket()) {
|
||||
packet->draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80325578-803255F0 31FEB8 0078+00 1/0 0/0 0/0 .text drawTail__13J3DDrawBufferCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DDrawBuffer::drawTail() const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawTail__13J3DDrawBufferCFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
void J3DDrawBuffer::drawTail() const {
|
||||
int num = mBufSize - 1;
|
||||
|
||||
/* 803255F0-803256C4 31FF30 00D4+00 0/0 1/0 0/0 .text __sinit_J3DDrawBuffer_cpp */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __sinit_J3DDrawBuffer_cpp() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/__sinit_J3DDrawBuffer_cpp.s"
|
||||
for (int i = num; i >= 0; i--) {
|
||||
for (J3DPacket* packet = mpBuf[i]; packet != NULL; packet = packet->getNextPacket()) {
|
||||
packet->draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
REGISTER_CTORS(0x803255F0, __sinit_J3DDrawBuffer_cpp);
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804515E0-804515E8 000AE0 0004+04 0/0 1/1 0/0 .sbss entryNum__13J3DDrawBuffer */
|
||||
u8 J3DDrawBuffer::entryNum[4 + 4 /* padding */];
|
||||
int J3DDrawBuffer::entryNum;
|
||||
|
||||
@@ -7,12 +7,6 @@
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct _GXTlutSize {};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
@@ -484,7 +484,6 @@ extern "C" extern char const* const J3DMatBlock__stringBase0;
|
||||
//
|
||||
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void OSReport();
|
||||
extern "C" void patchTexNoAndTexCoordScale__11J3DTevBlockFv();
|
||||
extern "C" void patch__10J3DPEBlockFv();
|
||||
extern "C" void patch__11J3DTevBlockFv();
|
||||
@@ -577,7 +576,6 @@ extern "C" void patchTexNo_PtrToIdx__FUlRCUs();
|
||||
extern "C" void __as__16J3DIndTexMtxInfoFRC16J3DIndTexMtxInfo();
|
||||
extern "C" void __as__10J3DFogInfoFRC10J3DFogInfo();
|
||||
extern "C" void __as__15J3DNBTScaleInfoFRC15J3DNBTScaleInfo();
|
||||
extern "C" void DCStoreRange();
|
||||
extern "C" void GDOverflowed();
|
||||
extern "C" void __destroy_arr();
|
||||
extern "C" void _savegpr_24();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
|
||||
@@ -18,14 +19,6 @@
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct J3DDrawBuffer {
|
||||
static u8 sortFuncTable[72];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -97,8 +90,10 @@ J3DError J3DDisplayListObj::newDisplayList(u32 capacity) {
|
||||
mpData[0] = new (0x20) char[mCapacity];
|
||||
mpData[1] = new (0x20) char[mCapacity];
|
||||
mSize = 0;
|
||||
|
||||
if (mpData[0] == NULL || mpData[1] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
@@ -107,8 +102,10 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) {
|
||||
mpData[0] = new (0x20) char[mCapacity];
|
||||
mpData[1] = mpData[0];
|
||||
mSize = 0;
|
||||
|
||||
if (mpData[0] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
@@ -116,8 +113,10 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) {
|
||||
J3DError J3DDisplayListObj::single_To_Double() {
|
||||
if (mpData[0] == mpData[1]) {
|
||||
mpData[1] = new (0x20) char[mCapacity];
|
||||
|
||||
if (mpData[1] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
memcpy(mpData[1], mpData[0], mCapacity);
|
||||
DCStoreRange(mpData[1], mCapacity);
|
||||
}
|
||||
@@ -182,61 +181,28 @@ u32 J3DDisplayListObj::endPatch() {
|
||||
}
|
||||
|
||||
/* 80312750-80312758 30D090 0008+00 3/0 16/0 10/0 .text entry__9J3DPacketFP13J3DDrawBuffer */
|
||||
bool J3DPacket::entry(J3DDrawBuffer* param_0) {
|
||||
return true;
|
||||
int J3DPacket::entry(J3DDrawBuffer*) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void J3DPacket::addChildPacket(J3DPacket* pPacket) {
|
||||
if (mpFirstChild == NULL) {
|
||||
mpFirstChild = pPacket;
|
||||
} else {
|
||||
pPacket->mpNextSibling = mpFirstChild;
|
||||
pPacket->mpNextPacket = mpFirstChild;
|
||||
mpFirstChild = pPacket;
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803CD900-803CD920 02AA20 0020+00 1/1 0/0 0/0 .data sDifferedRegister */
|
||||
SECTION_DATA static u32 sDifferedRegister[8] = {0x00000004, 0x00000001, 0x00000002, 0x01000000,
|
||||
0x10000000, 0x20000000, 0x02000000, 0x08000000};
|
||||
SECTION_DATA static u32 sDifferedRegister[8] = {
|
||||
0x00000004, 0x00000001, 0x00000002, 0x01000000, 0x10000000, 0x20000000, 0x02000000, 0x08000000,
|
||||
};
|
||||
|
||||
/* 803CD920-803CD940 02AA40 0020+00 1/1 0/0 0/0 .data sSizeOfDiffered */
|
||||
SECTION_DATA static s32 sSizeOfDiffered[8] = {13, 13, 21, 120, 55, 15, 19, 45};
|
||||
|
||||
/* 803CD940-803CD954 02AA60 0014+00 2/2 0/0 0/0 .data __vt__14J3DShapePacket */
|
||||
SECTION_DATA extern void* __vt__14J3DShapePacket[5] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)entry__9J3DPacketFP13J3DDrawBuffer,
|
||||
(void*)draw__14J3DShapePacketFv,
|
||||
(void*)__dt__14J3DShapePacketFv,
|
||||
};
|
||||
|
||||
/* 803CD954-803CD968 02AA74 0014+00 2/2 0/0 0/0 .data __vt__12J3DMatPacket */
|
||||
SECTION_DATA extern void* __vt__12J3DMatPacket[5] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)entry__12J3DMatPacketFP13J3DDrawBuffer,
|
||||
(void*)draw__12J3DMatPacketFv,
|
||||
(void*)__dt__12J3DMatPacketFv,
|
||||
};
|
||||
|
||||
/* 803CD968-803CD97C 02AA88 0014+00 2/2 0/0 0/0 .data __vt__13J3DDrawPacket */
|
||||
SECTION_DATA extern void* __vt__13J3DDrawPacket[5] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)entry__9J3DPacketFP13J3DDrawBuffer,
|
||||
(void*)draw__13J3DDrawPacketFv,
|
||||
(void*)__dt__13J3DDrawPacketFv,
|
||||
};
|
||||
|
||||
/* 803CD97C-803CD990 02AA9C 0014+00 2/2 34/34 23/23 .data __vt__9J3DPacket */
|
||||
SECTION_DATA extern void* __vt__9J3DPacket[5] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)entry__9J3DPacketFP13J3DDrawBuffer,
|
||||
(void*)draw__9J3DPacketFv,
|
||||
(void*)__dt__9J3DPacketFv,
|
||||
SECTION_DATA static s32 sSizeOfDiffered[8] = {
|
||||
13, 13, 21, 120, 55, 15, 19, 45,
|
||||
};
|
||||
|
||||
/* 80312778-803127B0 30D0B8 0038+00 2/2 0/0 0/0 .text __ct__13J3DDrawPacketFv */
|
||||
@@ -287,7 +253,7 @@ J3DMatPacket::J3DMatPacket() {
|
||||
mpInitShapePacket = NULL;
|
||||
mpShapePacket = NULL;
|
||||
mpMaterial = NULL;
|
||||
mSortFlags = -1;
|
||||
mDiffFlag = -1;
|
||||
mpTexture = NULL;
|
||||
mpMaterialAnm = NULL;
|
||||
}
|
||||
@@ -299,7 +265,7 @@ void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) {
|
||||
if (mpShapePacket == NULL) {
|
||||
mpShapePacket = pShape;
|
||||
} else {
|
||||
pShape->mpNextSibling = mpShapePacket;
|
||||
pShape->mpNextPacket = mpShapePacket;
|
||||
mpShapePacket = pShape;
|
||||
}
|
||||
}
|
||||
@@ -316,7 +282,7 @@ void J3DMatPacket::endDiff() {
|
||||
bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
|
||||
bool isSame = false;
|
||||
|
||||
if (mSortFlags == pOther->mSortFlags && !(mSortFlags >> 0x1F)) {
|
||||
if (mDiffFlag == pOther->mDiffFlag && !(mDiffFlag >> 0x1F)) {
|
||||
isSame = true;
|
||||
}
|
||||
return isSame;
|
||||
@@ -430,6 +396,7 @@ asm void J3DShapePacket::prepareDraw() const {
|
||||
void J3DShapePacket::draw() {
|
||||
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
|
||||
prepareDraw();
|
||||
|
||||
if (mpTexMtx != NULL) {
|
||||
J3DMaterial* material = mpShape->getMaterial();
|
||||
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
|
||||
@@ -437,9 +404,11 @@ void J3DShapePacket::draw() {
|
||||
} else {
|
||||
J3DDifferedTexMtx::sTexGenBlock = NULL;
|
||||
}
|
||||
|
||||
if (mpDisplayListObj != NULL) {
|
||||
mpDisplayListObj->callDL();
|
||||
}
|
||||
|
||||
mpShape->draw();
|
||||
}
|
||||
}
|
||||
@@ -448,6 +417,7 @@ void J3DShapePacket::draw() {
|
||||
void J3DShapePacket::drawFast() {
|
||||
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
|
||||
prepareDraw();
|
||||
|
||||
if (mpTexMtx != NULL) {
|
||||
J3DMaterial* material = mpShape->getMaterial();
|
||||
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
|
||||
@@ -455,21 +425,16 @@ void J3DShapePacket::drawFast() {
|
||||
} else {
|
||||
J3DDifferedTexMtx::sTexGenBlock = NULL;
|
||||
}
|
||||
|
||||
mpShape->drawFast();
|
||||
}
|
||||
}
|
||||
|
||||
/* 80313044-80313048 30D984 0004+00 1/0 0/0 0/0 .text draw__9J3DPacketFv */
|
||||
void J3DPacket::draw() {
|
||||
/* empty function */
|
||||
}
|
||||
void J3DPacket::draw() {}
|
||||
|
||||
/* 80313048-803130A8 30D988 0060+00 1/0 0/0 0/0 .text entry__12J3DMatPacketFP13J3DDrawBuffer */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm bool J3DMatPacket::entry(J3DDrawBuffer* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DPacket/entry__12J3DMatPacketFP13J3DDrawBuffer.s"
|
||||
int J3DMatPacket::entry(J3DDrawBuffer* i_buffer) {
|
||||
sortFunc func = J3DDrawBuffer::sortFuncTable[i_buffer->mSortType];
|
||||
return (i_buffer->*func)(this);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
@@ -26,7 +26,7 @@ u32 J3DShapeDraw::countVertex(u32 stride) {
|
||||
u32 count = 0;
|
||||
u32 dlStart = (u32)getDisplayList();
|
||||
for (u8* dl = (u8*)dlStart; ((u32)dl - dlStart) < getDisplayListSize();) {
|
||||
if (*dl != 0xA0 && *dl != 0x98)
|
||||
if (*dl != GX_TRIANGLEFAN && *dl != GX_TRIANGLESTRIP)
|
||||
break;
|
||||
u16 vtxNum = *((u16*)(dl + 1));
|
||||
count += vtxNum;
|
||||
@@ -50,7 +50,7 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) {
|
||||
u8 h = *oldDL;
|
||||
*newDL++ = h;
|
||||
|
||||
if (h != 0xA0 && h != 0x98)
|
||||
if (h != GX_TRIANGLEFAN && h != GX_TRIANGLESTRIP)
|
||||
break;
|
||||
|
||||
// Copy count
|
||||
@@ -82,7 +82,6 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) {
|
||||
DCStoreRange(newDLStart, mDisplayListSize);
|
||||
}
|
||||
#else
|
||||
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -91,7 +90,6 @@ asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2)
|
||||
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
#endif
|
||||
|
||||
/* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */
|
||||
|
||||
@@ -719,7 +719,7 @@ u32 J3DShapeMtxMultiConcatView::getUseMtxNum() const {
|
||||
/* 8031469C-803146AC 30EFDC 0010+00 1/0 0/0 0/0 .text
|
||||
* getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs */
|
||||
u32 J3DShapeMtxMultiConcatView::getUseMtxIndex(u16 no) const {
|
||||
return mUseMtxIndex[no];
|
||||
return mUseMtxIndexTable[no];
|
||||
}
|
||||
|
||||
/* 803146AC-803146B0 30EFEC 0004+00 1/0 0/0 0/0 .text
|
||||
@@ -752,7 +752,7 @@ u32 J3DShapeMtxMulti::getUseMtxNum() const {
|
||||
|
||||
/* 80314720-80314730 30F060 0010+00 1/0 0/0 0/0 .text getUseMtxIndex__16J3DShapeMtxMultiCFUs */
|
||||
u32 J3DShapeMtxMulti::getUseMtxIndex(u16 no) const {
|
||||
return mUseMtxIndex[no];
|
||||
return mUseMtxIndexTable[no];
|
||||
}
|
||||
|
||||
/* 80314730-8031478C 30F070 005C+00 1/0 0/0 0/0 .text __dt__21J3DShapeMtxConcatViewFv */
|
||||
|
||||
@@ -198,7 +198,7 @@ void J3DSys::drawInit() {
|
||||
|
||||
u8 i;
|
||||
for (i = 0; i < 3; i++)
|
||||
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), indTexMtx, 1);
|
||||
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), (f32*)indTexMtx, 1);
|
||||
|
||||
GXSetChanMatColor(GX_COLOR0A0, j3dDefaultColInfo);
|
||||
GXSetChanMatColor(GX_COLOR1A1, j3dDefaultColInfo);
|
||||
@@ -380,9 +380,9 @@ void J3DSys::reinitIndStages() {
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1);
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1);
|
||||
GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1);
|
||||
GXSetIndTexMtx(GX_ITM_0, IndMtx, 1);
|
||||
GXSetIndTexMtx(GX_ITM_1, IndMtx, 1);
|
||||
GXSetIndTexMtx(GX_ITM_2, IndMtx, 1);
|
||||
GXSetIndTexMtx(GX_ITM_0, (f32*)IndMtx, 1);
|
||||
GXSetIndTexMtx(GX_ITM_1, (f32*)IndMtx, 1);
|
||||
GXSetIndTexMtx(GX_ITM_2, (f32*)IndMtx, 1);
|
||||
}
|
||||
|
||||
/* 80310E3C-80310ED0 30B77C 0094+00 1/1 0/0 0/0 .text reinitPixelProc__6J3DSysFv */
|
||||
|
||||
@@ -97,7 +97,7 @@ void J3DVertexBuffer::setArray() const {
|
||||
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
|
||||
if (flag & 1) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
|
||||
mVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()];
|
||||
|
||||
if (mVtxPosArray[i] == NULL) {
|
||||
return kJ3DError_Alloc;
|
||||
@@ -109,7 +109,7 @@ s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
|
||||
mVtxPosArray[0] = mVtxData->getVtxPosArray();
|
||||
|
||||
if (mVtxPosArray[1] == NULL) {
|
||||
mVtxPosArray[1] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
|
||||
mVtxPosArray[1] = new (0x20) Vec[mVtxData->getVtxNum()];
|
||||
if (mVtxPosArray[1] == NULL) {
|
||||
return kJ3DError_Alloc;
|
||||
}
|
||||
@@ -209,7 +209,7 @@ s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
|
||||
mTransformedVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
|
||||
mTransformedVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()];
|
||||
if (mTransformedVtxPosArray[i] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphLoader/J3DJointFactory.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
|
||||
#include "JSystem/JSupport/JSupport.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
@@ -11,64 +13,31 @@
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct J3DJointBlock {};
|
||||
|
||||
struct J3DJointFactory {
|
||||
/* 80337178 */ J3DJointFactory(J3DJointBlock const&);
|
||||
/* 803371D0 */ void create(int);
|
||||
};
|
||||
|
||||
struct J3DJoint {
|
||||
/* 8032F170 */ J3DJoint();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__15J3DJointFactoryFRC13J3DJointBlock();
|
||||
extern "C" void create__15J3DJointFactoryFi();
|
||||
extern "C" void func_80337338(void* _this, void const*, u32);
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void __ct__8J3DJointFv();
|
||||
extern "C" void func_8033677C(void* _this, void const*, u32);
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr<u16>
|
||||
|
||||
/* 80337178-803371D0 331AB8 0058+00 0/0 1/1 0/0 .text __ct__15J3DJointFactoryFRC13J3DJointBlock */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DJointFactory::J3DJointFactory(J3DJointBlock const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/__ct__15J3DJointFactoryFRC13J3DJointBlock.s"
|
||||
J3DJointFactory::J3DJointFactory(J3DJointBlock const& block) {
|
||||
mJointInitData = JSUConvertOffsetToPtr<J3DJointInitData>(&block, block.mJointInitData);
|
||||
|
||||
// Fix when we have our ODR working.
|
||||
// mIndexTable = JSUConvertOffsetToPtr<u16>(&block, block.mIndexTable);
|
||||
mIndexTable = func_8033677C(&block, block.mIndexTable);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803371D0-80337338 331B10 0168+00 0/0 1/1 0/0 .text create__15J3DJointFactoryFi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DJointFactory::create(int param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/create__15J3DJointFactoryFi.s"
|
||||
}
|
||||
#pragma pop
|
||||
J3DJoint* J3DJointFactory::create(int no) {
|
||||
J3DJoint* joint = new J3DJoint();
|
||||
joint->mJntNo = no;
|
||||
joint->mKind = getKind(no);
|
||||
joint->mScaleCompensate = getScaleCompensate(no);
|
||||
joint->mTransformInfo = getTransformInfo(no);
|
||||
joint->mBoundingSphereRadius = getRadius(no);
|
||||
joint->mMin = getMin(no);
|
||||
joint->mMax = getMax(no);
|
||||
joint->mMtxCalc = NULL;
|
||||
|
||||
/* 80337338-80337350 331C78 0018+00 1/1 0/0 0/0 .text
|
||||
* JSUConvertOffsetToPtr<16J3DJointInitData>__FPCvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void func_80337338(void* _this, void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/func_80337338.s"
|
||||
}
|
||||
#pragma pop
|
||||
if (joint->mScaleCompensate == 0xFF)
|
||||
joint->mScaleCompensate = 0;
|
||||
|
||||
return joint;
|
||||
}
|
||||
@@ -4,36 +4,13 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphLoader/J3DShapeFactory.h"
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JSupport/JSupport.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct _GXVtxDescList {};
|
||||
|
||||
struct J3DShapeBlock {};
|
||||
|
||||
struct J3DShapeFactory {
|
||||
/* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
|
||||
/* 80337400 */ void create(int, u32, _GXVtxDescList*);
|
||||
/* 803375BC */ void newShapeMtx(u32, int, int) const;
|
||||
/* 8033784C */ void newShapeDraw(int, int) const;
|
||||
/* 803378D8 */ void allocVcdVatCmdBuffer(u32);
|
||||
/* 80337944 */ void calcSize(int, u32);
|
||||
/* 803379D8 */ void calcSizeVcdVatCmdBuffer(u32);
|
||||
/* 803379E8 */ void calcSizeShapeMtx(u32, int, int) const;
|
||||
};
|
||||
|
||||
struct J3DShapeDraw {
|
||||
/* 80314ABC */ J3DShapeDraw(u8 const*, u32);
|
||||
};
|
||||
|
||||
struct J3DShape {
|
||||
/* 80314B48 */ void initialize();
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
@@ -56,14 +33,15 @@ extern "C" extern char const* const J3DShapeFactory__stringBase0;
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void OSReport();
|
||||
extern "C" J3DShapeInitData* func_80336764(const void*,
|
||||
const void*); // JSUConvertOffsetToPtr<J3DShapeInitData>
|
||||
extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr<u16>
|
||||
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void* __nwa__FUl();
|
||||
extern "C" void* __nwa__FUli();
|
||||
extern "C" void __ct__12J3DShapeDrawFPCUcUl();
|
||||
extern "C" void initialize__8J3DShapeFv();
|
||||
extern "C" void func_80336764(void* _this, void const*, u32);
|
||||
extern "C" void func_8033677C(void* _this, void const*, u32);
|
||||
extern "C" void _savegpr_26();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_26();
|
||||
@@ -81,141 +59,203 @@ extern "C" extern void* __vt__8J3DShape[6];
|
||||
//
|
||||
|
||||
/* 80337350-80337400 331C90 00B0+00 0/0 2/2 0/0 .text __ct__15J3DShapeFactoryFRC13J3DShapeBlock */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/__ct__15J3DShapeFactoryFRC13J3DShapeBlock.s"
|
||||
J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) {
|
||||
// mShapeInitData = JSUConvertOffsetToPtr<J3DShapeInitData>(&block, block.mShapeInitData);
|
||||
mShapeInitData = func_80336764(&block, block.mShapeInitData);
|
||||
// mIndexTable = JSUConvertOffsetToPtr<u16>(&block, block.mIndexTable);
|
||||
mIndexTable = func_8033677C(&block, block.mIndexTable);
|
||||
mVtxDescList = JSUConvertOffsetToPtr<GXVtxDescList>(&block, block.mVtxDescList);
|
||||
// mMtxTable = JSUConvertOffsetToPtr<u16>(&block, block.mMtxTable);
|
||||
mMtxTable = func_8033677C(&block, block.mMtxTable);
|
||||
mDisplayListData = JSUConvertOffsetToPtr<u8>(&block, block.mDisplayListData);
|
||||
mMtxInitData = JSUConvertOffsetToPtr<J3DShapeMtxInitData>(&block, block.mMtxInitData);
|
||||
mDrawInitData = JSUConvertOffsetToPtr<J3DShapeDrawInitData>(&block, block.mDrawInitData);
|
||||
mVcdVatCmdBuffer = NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80337400-803375BC 331D40 01BC+00 0/0 1/1 0/0 .text
|
||||
* create__15J3DShapeFactoryFiUlP14_GXVtxDescList */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::create(int param_0, u32 param_1, _GXVtxDescList* param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/create__15J3DShapeFactoryFiUlP14_GXVtxDescList.s"
|
||||
}
|
||||
#pragma pop
|
||||
J3DShape* J3DShapeFactory::create(int no, u32 flag, GXVtxDescList* vtxDesc) {
|
||||
J3DShape* shape = new J3DShape;
|
||||
shape->mMtxGroupNum = getMtxGroupNum(no);
|
||||
shape->mRadius = getRadius(no);
|
||||
shape->mVtxDesc = getVtxDescList(no);
|
||||
shape->mShapeMtx = new J3DShapeMtx*[shape->mMtxGroupNum];
|
||||
shape->mShapeDraw = new J3DShapeDraw*[shape->mMtxGroupNum];
|
||||
shape->mMin = getMin(no);
|
||||
shape->mMax = getMax(no);
|
||||
shape->mVcdVatCmd = mVcdVatCmdBuffer + no * J3DShape::kVcdVatDLSize;
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A2100-803A2100 02E760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_803A2100 =
|
||||
"WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_803A212C = "\0\0\0";
|
||||
#pragma pop
|
||||
for (s32 i = 0; i < shape->mMtxGroupNum; i++) {
|
||||
shape->mShapeMtx[i] = newShapeMtx(flag, no, i);
|
||||
shape->mShapeDraw[i] = newShapeDraw(no, i);
|
||||
}
|
||||
|
||||
shape->mIndex = no;
|
||||
return shape;
|
||||
}
|
||||
|
||||
static inline u32 getMdlDataFlag_MtxLoadType(u32 flag) {
|
||||
return flag & 0x10;
|
||||
}
|
||||
|
||||
enum {
|
||||
J3DMdlDataFlag_ConcatView = 0x10,
|
||||
};
|
||||
|
||||
enum {
|
||||
J3DShapeMtxType_Mtx = 0x00,
|
||||
J3DShapeMtxType_BBoard = 0x01,
|
||||
J3DShapeMtxType_YBBoard = 0x02,
|
||||
J3DShapeMtxType_Multi = 0x03,
|
||||
};
|
||||
|
||||
/* 803375BC-8033784C 331EFC 0290+00 1/1 0/0 0/0 .text newShapeMtx__15J3DShapeFactoryCFUlii */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::newShapeMtx(u32 param_0, int param_1, int param_2) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeMtx__15J3DShapeFactoryCFUlii.s"
|
||||
J3DShapeMtx* J3DShapeFactory::newShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const {
|
||||
J3DShapeMtx* ret = NULL;
|
||||
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
|
||||
const J3DShapeMtxInitData& mtxInitData =
|
||||
(&mMtxInitData[shapeInitData.mMtxInitDataIndex])[mtxGroupNo];
|
||||
|
||||
switch (getMdlDataFlag_MtxLoadType(flag)) {
|
||||
case J3DMdlDataFlag_ConcatView:
|
||||
switch (shapeInitData.mShapeMtxType) {
|
||||
case J3DShapeMtxType_Mtx:
|
||||
ret = new J3DShapeMtxConcatView(mtxInitData.mUseMtxIndex);
|
||||
break;
|
||||
case J3DShapeMtxType_BBoard:
|
||||
ret = new J3DShapeMtxBBoardConcatView(mtxInitData.mUseMtxIndex);
|
||||
break;
|
||||
case J3DShapeMtxType_YBBoard:
|
||||
ret = new J3DShapeMtxYBBoardConcatView(mtxInitData.mUseMtxIndex);
|
||||
break;
|
||||
case J3DShapeMtxType_Multi:
|
||||
ret = new J3DShapeMtxMultiConcatView(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
|
||||
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
|
||||
break;
|
||||
default:
|
||||
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0:
|
||||
default:
|
||||
switch (shapeInitData.mShapeMtxType) {
|
||||
case J3DShapeMtxType_Mtx:
|
||||
case J3DShapeMtxType_BBoard:
|
||||
case J3DShapeMtxType_YBBoard:
|
||||
ret = new J3DShapeMtx(mtxInitData.mUseMtxIndex);
|
||||
break;
|
||||
case J3DShapeMtxType_Multi:
|
||||
ret = new J3DShapeMtxMulti(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
|
||||
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
|
||||
break;
|
||||
default:
|
||||
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8033784C-803378D8 33218C 008C+00 1/1 0/0 0/0 .text newShapeDraw__15J3DShapeFactoryCFii
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::newShapeDraw(int param_0, int param_1) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeDraw__15J3DShapeFactoryCFii.s"
|
||||
J3DShapeDraw* J3DShapeFactory::newShapeDraw(int shapeNo, int mtxGroupNo) const {
|
||||
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
|
||||
const J3DShapeDrawInitData& drawInitData =
|
||||
(&mDrawInitData[shapeInitData.mDrawInitDataIndex])[mtxGroupNo];
|
||||
return new J3DShapeDraw(&mDisplayListData[drawInitData.mDisplayListIndex],
|
||||
drawInitData.mDisplayListSize);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803378D8-80337944 332218 006C+00 0/0 1/1 0/0 .text allocVcdVatCmdBuffer__15J3DShapeFactoryFUl
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::allocVcdVatCmdBuffer(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/allocVcdVatCmdBuffer__15J3DShapeFactoryFUl.s"
|
||||
void J3DShapeFactory::allocVcdVatCmdBuffer(u32 count) {
|
||||
mVcdVatCmdBuffer = new (0x20) u8[J3DShape::kVcdVatDLSize * count];
|
||||
for (u32 i = 0; i < (J3DShape::kVcdVatDLSize * count) / 4; i++)
|
||||
((u32*)mVcdVatCmdBuffer)[i] = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80337944-803379D8 332284 0094+00 0/0 1/1 0/0 .text calcSize__15J3DShapeFactoryFiUl */
|
||||
#ifdef NONMATCHING
|
||||
s32 J3DShapeFactory::calcSize(int shapeNo, u32 flag) {
|
||||
s32 size = 0x68;
|
||||
|
||||
// regalloc
|
||||
u32 mtxGroupNo = getMtxGroupNum(shapeNo);
|
||||
size += mtxGroupNo * 4;
|
||||
size += mtxGroupNo * 4;
|
||||
|
||||
for (u32 i = 0; i < mtxGroupNo; i++) {
|
||||
s32 shapeMtxSize = calcSizeShapeMtx(flag, shapeNo, i);
|
||||
size += shapeMtxSize;
|
||||
size += 0x0C;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::calcSize(int param_0, u32 param_1) {
|
||||
asm s32 J3DShapeFactory::calcSize(int param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSize__15J3DShapeFactoryFiUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 803379D8-803379E8 332318 0010+00 0/0 1/1 0/0 .text
|
||||
* calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::calcSizeVcdVatCmdBuffer(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl.s"
|
||||
s32 J3DShapeFactory::calcSizeVcdVatCmdBuffer(u32 count) {
|
||||
return ALIGN_NEXT(count * J3DShape::kVcdVatDLSize, 0x20);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803379E8-80337AE0 332328 00F8+00 1/1 0/0 0/0 .text calcSizeShapeMtx__15J3DShapeFactoryCFUlii */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DShapeFactory::calcSizeShapeMtx(u32 param_0, int param_1, int param_2) const {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeShapeMtx__15J3DShapeFactoryCFUlii.s"
|
||||
}
|
||||
#pragma pop
|
||||
s32 J3DShapeFactory::calcSizeShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const {
|
||||
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
|
||||
u32 ret = 0;
|
||||
|
||||
/* 80337AE0-80337AF8 332420 0018+00 1/1 0/0 0/0 .text
|
||||
* JSUConvertOffsetToPtr<20J3DShapeDrawInitData>__FPCvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void func_80337AE0(void* _this, void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AE0.s"
|
||||
}
|
||||
#pragma pop
|
||||
u32 mtxLoadType = getMdlDataFlag_MtxLoadType(flag);
|
||||
switch (mtxLoadType) {
|
||||
case J3DMdlDataFlag_ConcatView:
|
||||
switch (shapeInitData.mShapeMtxType) {
|
||||
case J3DShapeMtxType_Mtx:
|
||||
ret = 0x08;
|
||||
break;
|
||||
case J3DShapeMtxType_BBoard:
|
||||
ret = 0x08;
|
||||
break;
|
||||
case J3DShapeMtxType_YBBoard:
|
||||
ret = 0x08;
|
||||
break;
|
||||
case J3DShapeMtxType_Multi:
|
||||
ret = 0x10;
|
||||
break;
|
||||
default:
|
||||
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
|
||||
}
|
||||
break;
|
||||
|
||||
/* 80337AF8-80337B10 332438 0018+00 1/1 0/0 0/0 .text
|
||||
* JSUConvertOffsetToPtr<19J3DShapeMtxInitData>__FPCvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void func_80337AF8(void* _this, void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AF8.s"
|
||||
}
|
||||
#pragma pop
|
||||
case 0:
|
||||
default:
|
||||
switch (shapeInitData.mShapeMtxType) {
|
||||
case J3DShapeMtxType_Mtx:
|
||||
case J3DShapeMtxType_BBoard:
|
||||
case J3DShapeMtxType_YBBoard:
|
||||
ret = 0x08;
|
||||
break;
|
||||
case J3DShapeMtxType_Multi:
|
||||
ret = 0x10;
|
||||
break;
|
||||
default:
|
||||
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* 80337B10-80337B28 332450 0018+00 1/1 0/0 0/0 .text JSUConvertOffsetToPtr<Uc>__FPCvUl
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void func_80337B10(void* _this, void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B10.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80337B28-80337B40 332468 0018+00 1/1 0/0 0/0 .text
|
||||
* JSUConvertOffsetToPtr<14_GXVtxDescList>__FPCvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
extern "C" asm void func_80337B28(void* _this, void const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B28.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803A2100-803A2100 02E760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
return ret;
|
||||
}
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JParticle/JPAResource.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JStudio/JStudio/functionvalue.h"
|
||||
#include "JSystem/JUtility/JUTException.h"
|
||||
#include "MSL_C/math.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JStudio/JStudio/fvb.h"
|
||||
#include "JSystem/JUtility/JUTException.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "JSystem/JStudio/JStudio/stb.h"
|
||||
#include "JSystem/JUtility/JUTException.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user