more simple J2D/J3D funcs (#166)

* more simple J2D/J3D funcs

* JPABaseShape constructor

* fmt

Co-authored-by: lepelog <25211966+lepelog@users.noreply.github.com>
This commit is contained in:
Jasper St. Pierre
2021-12-06 06:51:53 -05:00
committed by GitHub
parent f7916ebde1
commit c15d8fcb3e
168 changed files with 1976 additions and 4562 deletions
+1 -1
View File
@@ -179,7 +179,7 @@ asm void J3DDrawBuffer::entryInvalidSort(J3DMatPacket* param_0) {
bool J3DDrawBuffer::entryNonSort(J3DMatPacket* pMat) {
pMat->clear();
pMat->mpFirstShapePacket->clear();
pMat->mpShapePacket->clear();
// inlined copy of entryImm, add to start of buf
pMat->mpNextSibling = mpBuf[0];
+34 -119
View File
@@ -2101,14 +2101,9 @@ void J3DTevBlock::diffTexNo() {
}
/* 8032194C-80321958 31C28C 000C+00 1/0 0/0 0/0 .text getType__14J3DPEBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__14J3DPEBlockFullFv.s"
u32 J3DPEBlockFull::getType() {
return 'PEFL';
}
#pragma pop
/* 80321958-8032197C 31C298 0024+00 1/0 0/0 0/0 .text setFog__14J3DPEBlockFullFP6J3DFog
*/
@@ -2358,14 +2353,9 @@ asm void J3DPEBlockFogOff::diff(u32 param_0) {
#pragma pop
/* 80321B00-80321B0C 31C440 000C+00 1/0 0/0 0/0 .text getType__16J3DPEBlockFogOffFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFogOff::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__16J3DPEBlockFogOffFv.s"
u32 J3DPEBlockFogOff::getType() {
return 'PEFG';
}
#pragma pop
/* 80321B0C-80321B28 31C44C 001C+00 1/0 0/0 0/0 .text
* setAlphaComp__16J3DPEBlockFogOffFRC12J3DAlphaComp */
@@ -2570,14 +2560,9 @@ asm void J3DTevBlock16::indexToPtr() {
#pragma pop
/* 80321C44-80321C50 31C584 000C+00 1/0 0/0 0/0 .text getType__13J3DTevBlock16Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock16::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DTevBlock16Fv.s"
u32 J3DTevBlock16::getType() {
return 'TV16';
}
#pragma pop
/* 80321C50-80321C60 31C590 0010+00 1/0 0/0 0/0 .text setTexNo__13J3DTevBlock16FUlUs */
#pragma push
@@ -3628,14 +3613,9 @@ asm void J3DTevBlock4::indexToPtr() {
#pragma pop
/* 80322010-8032201C 31C950 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock4::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock4Fv.s"
u32 J3DTevBlock4::getType() {
return 'TVB4';
}
#pragma pop
/* 8032201C-8032202C 31C95C 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock4FUlUs */
#pragma push
@@ -4026,14 +4006,9 @@ asm void J3DTevBlock2::indexToPtr() {
#pragma pop
/* 803223D4-803223E0 31CD14 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock2Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock2::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock2Fv.s"
u32 J3DTevBlock2::getType() {
return 'TVB2';
}
#pragma pop
/* 803223E0-803223F0 31CD20 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock2FUlUs */
#pragma push
@@ -4424,14 +4399,9 @@ asm void J3DTevBlock1::indexToPtr() {
#pragma pop
/* 80322798-803227A4 31D0D8 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock1Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock1::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock1Fv.s"
u32 J3DTevBlock1::getType() {
return 'TVB1';
}
#pragma pop
/* 803227A4-803227B4 31D0E4 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock1FUlUs */
#pragma push
@@ -4656,14 +4626,9 @@ asm void J3DTevBlockPatched::indexToPtr() {
#pragma pop
/* 80322998-803229A4 31D2D8 000C+00 1/0 0/0 0/0 .text getType__18J3DTevBlockPatchedFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlockPatched::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__18J3DTevBlockPatchedFv.s"
u32 J3DTevBlockPatched::getType() {
return 'TVPT';
}
#pragma pop
/* 803229A4-803229AC -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__18J3DTevBlockPatchedFUc */
void J3DTevBlockPatched::setTevStageNum(u8 param_0) {
@@ -4950,14 +4915,9 @@ asm J3DTevBlockPatched::~J3DTevBlockPatched() {
#pragma pop
/* 80322C6C-80322C78 31D5AC 000C+00 1/0 0/0 0/0 .text getType__19J3DTexGenBlockBasicFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockBasic::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__19J3DTexGenBlockBasicFv.s"
u32 J3DTexGenBlockBasic::getType() {
return 'TGBC';
}
#pragma pop
/* 80322C78-80322C9C 31D5B8 0024+00 1/0 0/0 0/0 .text
* setNBTScale__19J3DTexGenBlockBasicF11J3DNBTScale */
@@ -5087,14 +5047,9 @@ void J3DTexGenBlockPatched::setTexMtxOffset(u32 param_0) {
}
/* 80322DA8-80322DB4 31D6E8 000C+00 1/0 0/0 0/0 .text getType__15J3DTexGenBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlock4::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__15J3DTexGenBlock4Fv.s"
u32 J3DTexGenBlock4::getType() {
return 'TGB4';
}
#pragma pop
/* 80322DB4-80322DD8 31D6F4 0024+00 1/0 0/0 0/0 .text setNBTScale__15J3DTexGenBlock4F11J3DNBTScale
*/
@@ -5145,25 +5100,15 @@ void J3DTexGenBlockPatched::load() {
/* 80322E74-80322E80 31D7B4 000C+00 1/0 0/0 0/0 .text getType__21J3DTexGenBlockPatchedFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockPatched::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__21J3DTexGenBlockPatchedFv.s"
u32 J3DTexGenBlockPatched::getType() {
return 'TGPT';
}
#pragma pop
/* 80322E80-80322E8C 31D7C0 000C+00 1/0 0/0 0/0 .text getType__20J3DColorBlockLightOnFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__20J3DColorBlockLightOnFv.s"
u32 J3DColorBlockLightOn::getType() {
return 'CLON';
}
#pragma pop
/* 80322E8C-80322EB8 31D7CC 002C+00 1/0 0/0 0/0 .text
* setMatColor__20J3DColorBlockLightOnFUl10J3DGXColor */
@@ -5382,14 +5327,9 @@ asm J3DColorBlockLightOn::~J3DColorBlockLightOn() {
/* 80323074-80323080 31D9B4 000C+00 1/0 0/0 0/0 .text getType__22J3DColorBlockAmbientOnFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockAmbientOn::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__22J3DColorBlockAmbientOnFv.s"
u32 J3DColorBlockAmbientOn::getType() {
return 'CLAB';
}
#pragma pop
/* 80323080-803230AC 31D9C0 002C+00 1/0 0/0 0/0 .text
* setAmbColor__22J3DColorBlockAmbientOnFUl10J3DGXColor */
@@ -5628,14 +5568,9 @@ void J3DColorBlockLightOff::setColorChanOffset(u32 param_0) {
}
/* 80323258-80323264 31DB98 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockXluFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockXlu::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DPEBlockXluFv.s"
u32 J3DPEBlockXlu::getType() {
return 'PEXL';
}
#pragma pop
/* 80323264-803232C0 31DBA4 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockXluFv */
#pragma push
@@ -5648,14 +5583,9 @@ asm J3DPEBlockXlu::~J3DPEBlockXlu() {
#pragma pop
/* 803232C0-803232CC 31DC00 000C+00 1/0 0/0 0/0 .text getType__17J3DPEBlockTexEdgeFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockTexEdge::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__17J3DPEBlockTexEdgeFv.s"
u32 J3DPEBlockTexEdge::getType() {
return 'PEED';
}
#pragma pop
/* 803232CC-80323328 31DC0C 005C+00 1/0 0/0 0/0 .text __dt__17J3DPEBlockTexEdgeFv */
#pragma push
@@ -5668,14 +5598,9 @@ asm J3DPEBlockTexEdge::~J3DPEBlockTexEdge() {
#pragma pop
/* 80323328-80323334 31DC68 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockOpaFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockOpa::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DPEBlockOpaFv.s"
u32 J3DPEBlockOpa::getType() {
return 'PEOP';
}
#pragma pop
/* 80323334-80323390 31DC74 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockOpaFv */
#pragma push
@@ -5688,14 +5613,9 @@ asm J3DPEBlockOpa::~J3DPEBlockOpa() {
#pragma pop
/* 80323390-8032339C 31DCD0 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DIndBlockFull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__15J3DIndBlockFullFv.s"
u32 J3DIndBlockFull::getType() {
return 'IBLF';
}
#pragma pop
/* 8032339C-803233A4 -00001 0008+00 0/0 0/0 0/0 .text setIndTexStageNum__15J3DIndBlockFullFUc */
void J3DIndBlockFull::setIndTexStageNum(u8 param_0) {
@@ -5865,14 +5785,9 @@ bool J3DTevBlock::getTexNoOffset() const {
/* 80323560-8032356C 31DEA0 000C+00 1/0 0/0 0/0 .text getType__21J3DColorBlockLightOffFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOff::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__21J3DColorBlockLightOffFv.s"
u32 J3DColorBlockLightOff::getType() {
return 'CLOF';
}
#pragma pop
/* 8032356C-80323590 31DEAC 0024+00 0/0 1/0 0/0 .text __sinit_J3DMatBlock_cpp */
#pragma push
+20 -24
View File
@@ -71,7 +71,7 @@ extern "C" bool countDLSize__10J3DPEBlockFv();
extern "C" void load__13J3DColorBlockFv();
extern "C" s32 getCullMode__13J3DColorBlockCFv();
extern "C" void load__11J3DTevBlockFv();
extern "C" bool getNBTScale__14J3DTexGenBlockFv();
extern "C" J3DNBTScale* getNBTScale__14J3DTexGenBlockFv();
extern "C" void patch__13J3DColorBlockFv();
extern "C" void diff__13J3DColorBlockFUl();
extern "C" void diff__10J3DPEBlockFUl();
@@ -762,14 +762,11 @@ asm void J3DPatchedMaterial::load() {
#pragma pop
/* 80316FFC-8031703C 31193C 0040+00 1/0 0/0 0/0 .text loadSharedDL__18J3DPatchedMaterialFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPatchedMaterial::loadSharedDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/loadSharedDL__18J3DPatchedMaterialFv.s"
void J3DPatchedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
#pragma pop
/* 8031703C-80317040 31197C 0004+00 1/0 0/0 0/0 .text reset__18J3DPatchedMaterialFv */
void J3DPatchedMaterial::reset() {
@@ -804,6 +801,12 @@ void J3DLockedMaterial::makeSharedDisplayList() {
}
/* 8031706C-80317088 3119AC 001C+00 1/0 0/0 0/0 .text load__17J3DLockedMaterialFv */
#ifdef NONMATCHING
void J3DLockedMaterial::load() {
j3dSys.setMaterialMode(mMaterialMode);
// some extra dead code after? wtf?
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -812,17 +815,15 @@ asm void J3DLockedMaterial::load() {
#include "asm/JSystem/J3DGraphBase/J3DMaterial/load__17J3DLockedMaterialFv.s"
}
#pragma pop
#endif
/* 80317088-803170C8 3119C8 0040+00 1/0 0/0 0/0 .text loadSharedDL__17J3DLockedMaterialFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DLockedMaterial::loadSharedDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/loadSharedDL__17J3DLockedMaterialFv.s"
void J3DLockedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
#pragma pop
/* 803170C8-803170CC 311A08 0004+00 1/0 0/0 0/0 .text patch__17J3DLockedMaterialFv */
void J3DLockedMaterial::patch() {
@@ -960,8 +961,8 @@ void J3DTevBlock::load() {
}
/* 80317334-8031733C 311C74 0008+00 1/0 2/0 0/0 .text getNBTScale__14J3DTexGenBlockFv */
bool J3DTexGenBlock::getNBTScale() {
return false;
J3DNBTScale* J3DTexGenBlock::getNBTScale() {
return NULL;
}
/* 8031733C-80317340 311C7C 0004+00 1/0 1/0 0/0 .text patch__13J3DColorBlockFv */
@@ -1091,14 +1092,9 @@ extern "C" asm void reset__15J3DIndBlockNullFP11J3DIndBlock() {
}
/* 803173A4-803173B0 311CE4 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockNullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DIndBlockNull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/getType__15J3DIndBlockNullFv.s"
u32 J3DIndBlockNull::getType() {
return 'IBLN';
}
#pragma pop
/* 803173B0-8031740C 311CF0 005C+00 1/0 0/0 0/0 .text __dt__15J3DIndBlockNullFv */
#pragma push
+94 -48
View File
@@ -4,6 +4,12 @@
//
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/string.h"
#include "dol2asm.h"
@@ -16,29 +22,10 @@
// Types:
//
struct J3DVertexBuffer {
/* 8031106C */ void setArray() const;
};
struct J3DShape {
/* 80315300 */ void loadPreDrawSetting() const;
static u8 sOldVcdVatCmd[4];
};
struct J3DDrawBuffer {
static u8 sortFuncTable[72];
};
struct J3DModelData {
/* 803260F8 */ void syncJ3DSysFlags() const;
};
struct J3DDifferedTexMtx {
static u8 sTexGenBlock[4];
static u8 sTexMtxObj[4];
};
//
// Forward References:
//
@@ -322,8 +309,8 @@ void J3DDrawPacket::draw() {
/* 80312948-803129A4 30D288 005C+00 0/0 1/1 0/0 .text __ct__12J3DMatPacketFv */
J3DMatPacket::J3DMatPacket() {
mpInitShapePacket = NULL;
mpShapePacket = NULL;
mpFirstShapePacket = NULL;
mpMaterial = NULL;
mSortFlags = -1;
mpTexture = NULL;
@@ -334,20 +321,20 @@ J3DMatPacket::J3DMatPacket() {
J3DMatPacket::~J3DMatPacket() {}
void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) {
if (mpFirstShapePacket == NULL) {
mpFirstShapePacket = pShape;
if (mpShapePacket == NULL) {
mpShapePacket = pShape;
} else {
pShape->mpNextSibling = mpFirstShapePacket;
mpFirstShapePacket = pShape;
pShape->mpNextSibling = mpShapePacket;
mpShapePacket = pShape;
}
}
void J3DMatPacket::beginDiff() {
mpShapePacket->mpDisplayListObj->beginDL();
mpInitShapePacket->mpDisplayListObj->beginDL();
}
void J3DMatPacket::endDiff() {
mpShapePacket->mpDisplayListObj->endDL();
mpInitShapePacket->mpDisplayListObj->endDL();
}
/* 80312A74-80312A9C 30D3B4 0028+00 0/0 1/1 0/0 .text isSame__12J3DMatPacketCFP12J3DMatPacket */
@@ -361,20 +348,31 @@ bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
}
/* 80312A9C-80312B20 30D3DC 0084+00 1/0 0/0 0/0 .text draw__12J3DMatPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMatPacket::draw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/draw__12J3DMatPacketFv.s"
void J3DMatPacket::draw() {
mpMaterial->load();
callDL();
J3DShapePacket* packet = getShapePacket();
J3DShape* shape = packet->getShape();
shape->loadPreDrawSetting();
while (packet != NULL) {
if (packet->getDisplayListObj() != NULL) {
packet->getDisplayListObj()->callDL();
}
packet->drawFast();
packet = (J3DShapePacket*)packet->getNextPacket();
}
shape->resetVcdVatCache();
}
#pragma pop
/* 80312B20-80312B74 30D460 0054+00 0/0 1/1 0/0 .text __ct__14J3DShapePacketFv */
J3DShapePacket::J3DShapePacket() {
mpShape = NULL;
mpMtxBuffer = NULL;
mpViewMtx = NULL;
mpBaseMtxPtr = NULL;
mDiffFlag = 0;
mpModel = NULL;
}
@@ -409,6 +407,40 @@ J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) {
}
/* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */
#ifdef NONMATCHING
void J3DShapePacket::prepareDraw() const {
mpModel->getVertexBuffer()->setArray();
j3dSys.setModel(mpModel);
j3dSys.setShapePacket((J3DShapePacket*)this);
// the way that the LOD flag is set seems to be wrong...
J3DShapeMtx::setLODFlag(mpModel->checkFlag(0x10));
if (mpModel->checkFlag(J3DMdlFlag_SkinPosCpu)) {
mpShape->onFlag(J3DShpFlag_SkinPosCpu);
} else {
mpShape->offFlag(J3DShpFlag_SkinPosCpu);
}
if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && !mpShape->checkFlag(J3DShpFlag_EnableLod)) {
mpShape->onFlag(J3DShpFlag_SkinNrmCpu);
} else {
mpShape->offFlag(J3DShpFlag_SkinNrmCpu);
}
mpShape->setCurrentViewNoPtr(mpMtxBuffer->getCurrentViewNoPtr());
mpShape->setScaleFlagArray(mpMtxBuffer->getScaleFlagArray());
mpShape->setDrawMtx(mpMtxBuffer->getDrawMtxPtrPtr());
if (!mpShape->getNBTFlag()) {
mpShape->setNrmMtx(mpMtxBuffer->getNrmMtxPtrPtr());
} else {
mpShape->setNrmMtx(mpMtxBuffer->getBumpMtxPtrPtr() + mpShape->getBumpMtxOffset());
}
mpModel->getModelData()->syncJ3DSysFlags();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -417,26 +449,40 @@ asm void J3DShapePacket::prepareDraw() const {
#include "asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s"
}
#pragma pop
#endif
/* 80312F24-80312FBC 30D864 0098+00 1/0 0/0 0/0 .text draw__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::draw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/draw__14J3DShapePacketFv.s"
void J3DShapePacket::draw() {
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
prepareDraw();
if (mpTexMtx != NULL) {
J3DMaterial* material = mpShape->getMaterial();
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
} else {
J3DDifferedTexMtx::sTexGenBlock = NULL;
}
if (mpDisplayListObj != NULL) {
mpDisplayListObj->callDL();
}
mpShape->draw();
}
}
#pragma pop
/* 80312FBC-80313044 30D8FC 0088+00 1/1 2/2 1/1 .text drawFast__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::drawFast() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/drawFast__14J3DShapePacketFv.s"
void J3DShapePacket::drawFast() {
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
prepareDraw();
if (mpTexMtx != NULL) {
J3DMaterial* material = mpShape->getMaterial();
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
} else {
J3DDifferedTexMtx::sTexGenBlock = NULL;
}
mpShape->drawFast();
}
}
#pragma pop
/* 80313044-80313048 30D984 0004+00 1/0 0/0 0/0 .text draw__9J3DPacketFv */
void J3DPacket::draw() {
+31 -34
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -52,7 +53,6 @@ extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void OSDisableScheduler();
extern "C" void OSEnableScheduler();
extern "C" void GXSetArray();
extern "C" void GDInitGDLObj();
extern "C" void GDFlushCurrToMem();
extern "C" void GDPadCurr32();
@@ -65,12 +65,11 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 j3dSys[284];
extern "C" extern u8 j3dDefaultViewNo[4 + 4 /* padding */];
extern "C" u8 sCurrentPipeline__11J3DShapeMtx[4];
extern "C" u8 sCurrentScaleFlag__11J3DShapeMtx[4];
extern "C" u32 sCurrentPipeline__11J3DShapeMtx;
extern "C" u32 sCurrentScaleFlag__11J3DShapeMtx;
extern "C" extern u8 struct_804515B0[4];
extern "C" u8 sTexMtxLoadType__11J3DShapeMtx[4];
extern "C" u32 sTexMtxLoadType__11J3DShapeMtx;
extern "C" extern u8 __GDCurrentDL[4];
//
@@ -164,14 +163,13 @@ static asm void J3DLoadArrayBasePtr(_GXAttr param_0, void* param_1) {
#pragma pop
/* 80314EEC-80314F5C 30F82C 0070+00 3/3 0/0 0/0 .text loadVtxArray__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::loadVtxArray() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/loadVtxArray__8J3DShapeCFv.s"
void J3DShape::loadVtxArray() const {
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos());
if (!mHasNBT) {
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm());
}
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol());
}
#pragma pop
/* 80314F5C-80314F98 30F89C 003C+00 0/0 1/1 0/0 .text isSameVcdVatCmd__8J3DShapeFP8J3DShape */
#pragma push
@@ -229,14 +227,18 @@ asm void J3DShape::loadPreDrawSetting() const {
static u8 data_804515D4[4];
/* 80315398-8031544C 30FCD8 00B4+00 1/1 0/0 0/0 .text setArrayAndBindPipeline__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::setArrayAndBindPipeline() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/setArrayAndBindPipeline__8J3DShapeCFv.s"
void J3DShape::setArrayAndBindPipeline() const {
J3DShapeMtx::setCurrentPipeline(getPipeline());
loadVtxArray();
j3dSys.setModelDrawMtx(mDrawMtx[*mCurrentViewNo]);
j3dSys.setModelNrmMtx(mNrmMtx[*mCurrentViewNo]);
J3DShapeMtx::sCurrentScaleFlag = mScaleFlagArray;
// The below struct_804515B0 is actually a continuation of sCurrentScaleFlag, I believe?
// Also, there seems to be an extra entry in the array that's only there in DEBUG builds.
struct_804515B0[0] = mHasNBT;
data_804515D4[0] = mHasPNMTXIdx;
J3DShapeMtx::sTexMtxLoadType = getTexMtxLoadType();
}
#pragma pop
/* 8031544C-803155E0 30FD8C 0194+00 1/0 0/0 0/0 .text drawFast__8J3DShapeCFv */
#pragma push
@@ -259,14 +261,17 @@ asm void J3DShape::draw() const {
#pragma pop
/* 80315628-803156AC 30FF68 0084+00 1/0 0/0 0/0 .text simpleDraw__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::simpleDraw() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/simpleDraw__8J3DShapeCFv.s"
void J3DShape::simpleDraw() const {
resetVcdVatCache();
loadPreDrawSetting();
J3DShapeMtx::setCurrentPipeline(getPipeline());
loadVtxArray();
for (u16 n = mMtxGroupNum, i = 0; i < n; i++) {
if (mShapeDraw[i] != NULL) {
mShapeDraw[i]->draw();
}
}
}
#pragma pop
/* 803156AC-803157A0 30FFEC 00F4+00 1/0 0/0 0/0 .text simpleDrawCache__8J3DShapeCFv */
#pragma push
@@ -277,11 +282,3 @@ asm void J3DShape::simpleDrawCache() const {
#include "asm/JSystem/J3DGraphBase/J3DShape/simpleDrawCache__8J3DShapeCFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 803CDC78-803CDC90 02AD98 0018+00 0/0 1/1 0/0 .data __vt__8J3DShape */
SECTION_DATA extern void* __vt__8J3DShape[6] = {
(void*)NULL /* RTTI */, (void*)NULL,
(void*)draw__8J3DShapeCFv, (void*)drawFast__8J3DShapeCFv,
(void*)simpleDraw__8J3DShapeCFv, (void*)simpleDrawCache__8J3DShapeCFv,
};
+7 -33
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
#include "dol2asm.h"
#include "dolphin/gx/gx.h"
#include "dolphin/types.h"
//
@@ -25,7 +26,6 @@ SECTION_INIT void memcpy();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void DCStoreRange();
extern "C" void GXCallDisplayList();
extern "C" void _savegpr_18();
extern "C" void _restgpr_18();
@@ -53,42 +53,16 @@ asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2)
}
#pragma pop
/* ############################################################################################## */
/* 803CDC68-803CDC78 02AD88 000C+04 2/2 0/0 0/0 .data __vt__12J3DShapeDraw */
SECTION_DATA extern void* __vt__12J3DShapeDraw[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DShapeDrawFv,
/* padding */
NULL,
};
/* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeDraw::J3DShapeDraw(u8 const* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/__ct__12J3DShapeDrawFPCUcUl.s"
J3DShapeDraw::J3DShapeDraw(u8 const* displayList, u32 displayListSize) {
mDisplayList = (void*)displayList;
mDisplayListSize = displayListSize;
}
#pragma pop
/* 80314AD4-80314B00 30F414 002C+00 0/0 3/3 0/0 .text draw__12J3DShapeDrawCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeDraw::draw() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/draw__12J3DShapeDrawCFv.s"
void J3DShapeDraw::draw() const {
GXCallDisplayList(mDisplayList, mDisplayListSize);
}
#pragma pop
/* 80314B00-80314B48 30F440 0048+00 1/0 0/0 0/0 .text __dt__12J3DShapeDrawFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeDraw::~J3DShapeDraw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/__dt__12J3DShapeDrawFv.s"
}
#pragma pop
J3DShapeDraw::~J3DShapeDraw() {}
+19 -20
View File
@@ -18,13 +18,6 @@ struct J3DSys {
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
};
struct J3DDifferedTexMtx {
/* 8031322C */ void loadExecute(f32 const (*)[4]);
static u8 sTexGenBlock[4];
static u8 sTexMtxObj[4];
};
//
// Forward References:
//
@@ -125,18 +118,22 @@ extern "C" extern u8 j3dSys[284];
/* ############################################################################################## */
/* 80434C80-80434C98 0619A0 0014+04 2/2 0/0 0/0 .bss sMtxLoadCache__11J3DShapeMtx */
u8 J3DShapeMtx::sMtxLoadCache[20 + 4 /* padding */];
u16 J3DShapeMtx::sMtxLoadCache[10 + 2 /* padding */];
/* 803130A8-803130E4 30D9E8 003C+00 0/0 1/1 0/0 .text resetMtxLoadCache__11J3DShapeMtxFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::resetMtxLoadCache() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/resetMtxLoadCache__11J3DShapeMtxFv.s"
void J3DShapeMtx::resetMtxLoadCache() {
sMtxLoadCache[9] = 0xFFFF;
sMtxLoadCache[8] = 0xFFFF;
sMtxLoadCache[7] = 0xFFFF;
sMtxLoadCache[6] = 0xFFFF;
sMtxLoadCache[5] = 0xFFFF;
sMtxLoadCache[4] = 0xFFFF;
sMtxLoadCache[3] = 0xFFFF;
sMtxLoadCache[2] = 0xFFFF;
sMtxLoadCache[1] = 0xFFFF;
sMtxLoadCache[0] = 0xFFFF;
}
#pragma pop
/* 803130E4-80313128 30DA24 0044+00 1/0 0/0 0/0 .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */
#pragma push
@@ -365,10 +362,12 @@ SECTION_DATA static void* lit_1034[12] = {
};
/* 804515A8-804515AC 000AA8 0004+00 4/4 2/2 0/0 .sbss sCurrentPipeline__11J3DShapeMtx */
u8 J3DShapeMtx::sCurrentPipeline[4];
u32 J3DShapeMtx::sCurrentPipeline;
/* 804515AC-804515B0 000AAC 0004+00 3/3 1/1 0/0 .sbss sCurrentScaleFlag__11J3DShapeMtx */
u8 J3DShapeMtx::sCurrentScaleFlag[4];
u8* J3DShapeMtx::sCurrentScaleFlag;
// This below is technically part of J3DScaleFlag.
/* 804515B0-804515B4 -00001 0004+00 5/5 3/3 0/0 .sbss None */
/* 804515B0 0001+00 data_804515B0 None */
@@ -377,7 +376,7 @@ extern u8 struct_804515B0[4];
u8 struct_804515B0[4];
/* 804515B4-804515B8 000AB4 0004+00 4/4 1/1 0/0 .sbss sTexMtxLoadType__11J3DShapeMtx */
u8 J3DShapeMtx::sTexMtxLoadType[4];
u32 J3DShapeMtx::sTexMtxLoadType;
/* 804515B8-804515C0 000AB8 0008+00 2/2 0/0 0/0 .sbss sMtxPtrTbl__21J3DShapeMtxConcatView
*/
@@ -385,10 +384,10 @@ u8 J3DShapeMtxConcatView::sMtxPtrTbl[8];
/* 804515C0-804515C4 000AC0 0004+00 6/6 2/2 0/0 .sbss sTexGenBlock__17J3DDifferedTexMtx
*/
u8 J3DDifferedTexMtx::sTexGenBlock[4];
J3DTexGenBlock* J3DDifferedTexMtx::sTexGenBlock;
/* 804515C4-804515C8 000AC4 0004+00 1/1 2/2 0/0 .sbss sTexMtxObj__17J3DDifferedTexMtx */
u8 J3DDifferedTexMtx::sTexMtxObj[4];
J3DTexMtx* J3DDifferedTexMtx::sTexMtxObj;
/* 80456398-8045639C 004998 0004+00 2/2 0/0 0/0 .sdata2 @1032 */
SECTION_SDATA2 static u8 lit_1032[4] = {
+118 -89
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/gx/GXPixel.h"
#include "dolphin/types.h"
//
@@ -42,10 +43,7 @@ extern "C" void makeZModeTable__Fv();
extern "C" void makeTevSwapTable__Fv();
extern "C" void GXInvalidateVtxCache();
extern "C" void GXFlush();
extern "C" void GXSetChanAmbColor();
extern "C" void GXInitTexCacheRegion();
extern "C" void GXSetTevIndirect();
extern "C" void GXSetColorUpdate();
extern "C" void _savegpr_25();
extern "C" void _savegpr_28();
extern "C" void _restgpr_25();
@@ -162,122 +160,153 @@ asm void J3DSys::drawInit() {
#pragma pop
/* 8031073C-8031079C 30B07C 0060+00 0/0 16/16 6/6 .text reinitGX__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitGX() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitGX__6J3DSysFv.s"
void J3DSys::reinitGX() {
reinitGenMode();
reinitLighting();
reinitTransform();
reinitTexture();
reinitTevStages();
reinitIndStages();
reinitPixelProc();
GXFlush();
}
#pragma pop
/* 8031079C-803107E8 30B0DC 004C+00 1/1 0/0 0/0 .text reinitGenMode__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitGenMode() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitGenMode__6J3DSysFv.s"
void J3DSys::reinitGenMode() {
GXSetNumChans(0);
GXSetNumTexGens(1);
GXSetNumTevStages(1);
GXSetNumIndStages(0);
GXSetCullMode(GX_CULL_BACK);
GXSetCoPlanar(GX_FALSE);
}
#pragma pop
/* ############################################################################################## */
/* 80450950-80450954 0003D0 0004+00 2/2 0/0 0/0 .sdata ColorBlack */
SECTION_SDATA static u8 ColorBlack[4] = {
0x00,
0x00,
0x00,
0x00,
};
SECTION_SDATA static GXColor ColorBlack = {0x00, 0x00, 0x00, 0x00};
/* 80450954-80450958 0003D4 0004+00 2/2 0/0 0/0 .sdata ColorWhite */
SECTION_SDATA static u32 ColorWhite = 0xFFFFFFFF;
SECTION_SDATA static GXColor ColorWhite = {0xFF, 0xFF, 0xFF, 0xFF};
/* 803107E8-80310894 30B128 00AC+00 1/1 0/0 0/0 .text reinitLighting__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitLighting() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitLighting__6J3DSysFv.s"
void J3DSys::reinitLighting() {
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetChanAmbColor(GX_COLOR0A0, ColorBlack);
GXSetChanAmbColor(GX_COLOR1A1, ColorBlack);
GXSetChanMatColor(GX_COLOR0A0, ColorWhite);
GXSetChanMatColor(GX_COLOR1A1, ColorWhite);
}
#pragma pop
/* 80310894-80310998 30B1D4 0104+00 1/1 0/0 0/0 .text reinitTransform__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTransform() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTransform__6J3DSysFv.s"
void J3DSys::reinitTransform() {
GXSetCurrentMtx(GX_PNMTX0);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX2, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEX3, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEX4, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD5, GX_TG_MTX2x4, GX_TG_TEX5, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD6, GX_TG_MTX2x4, GX_TG_TEX6, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD7, GX_TG_MTX2x4, GX_TG_TEX7, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
}
#pragma pop
/* 80310998-80310A3C 30B2D8 00A4+00 2/2 0/0 0/0 .text reinitTexture__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTexture() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTexture__6J3DSysFv.s"
void J3DSys::reinitTexture() {
GXTexObj texObj;
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&texObj, GX_TEXMAP0);
GXLoadTexObj(&texObj, GX_TEXMAP1);
GXLoadTexObj(&texObj, GX_TEXMAP2);
GXLoadTexObj(&texObj, GX_TEXMAP3);
GXLoadTexObj(&texObj, GX_TEXMAP4);
GXLoadTexObj(&texObj, GX_TEXMAP5);
GXLoadTexObj(&texObj, GX_TEXMAP6);
GXLoadTexObj(&texObj, GX_TEXMAP7);
}
#pragma pop
/* 80310A3C-80310D44 30B37C 0308+00 1/1 0/0 0/0 .text reinitTevStages__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTevStages() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTevStages__6J3DSysFv.s"
void J3DSys::reinitTevStages() {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevColor(GX_TEVREG0, ColorWhite);
GXSetTevColor(GX_TEVREG1, ColorWhite);
GXSetTevColor(GX_TEVREG2, ColorWhite);
GXSetTevKColor(GX_KCOLOR0, ColorWhite);
GXSetTevKColor(GX_KCOLOR1, ColorWhite);
GXSetTevKColor(GX_KCOLOR2, ColorWhite);
GXSetTevKColor(GX_KCOLOR3, ColorWhite);
for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) {
GXSetTevColorIn((GXTevStageID)i, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
GXSetTevColorOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
GX_TEVPREV);
GXSetTevAlphaIn((GXTevStageID)i, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
GXSetTevAlphaOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
GX_TEVPREV);
GXSetTevKColorSel((GXTevStageID)i, GX_TEV_KCSEL_1_4);
GXSetTevKAlphaSel((GXTevStageID)i, GX_TEV_KASEL_1);
GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0);
}
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
}
#pragma pop
/* ############################################################################################## */
/* 803CD8E0-803CD8F8 02AA00 0018+00 1/1 0/0 0/0 .data IndMtx */
SECTION_DATA static u8 IndMtx[24] = {
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
SECTION_DATA static Mtx23 IndMtx = {0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f};
/* 80310D44-80310E3C 30B684 00F8+00 1/1 0/0 0/0 .text reinitIndStages__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitIndStages() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitIndStages__6J3DSysFv.s"
void J3DSys::reinitIndStages() {
for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) {
GXSetTevDirect((GXTevStageID)i);
}
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0);
GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1);
GXSetIndTexOrder(GX_INDTEXSTAGE2, GX_TEXCOORD2, GX_TEXMAP2);
GXSetIndTexOrder(GX_INDTEXSTAGE3, GX_TEXCOORD3, GX_TEXMAP3);
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
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);
}
#pragma pop
/* ############################################################################################## */
/* 80456368-8045636C 004968 0004+00 1/1 0/0 0/0 .sdata2 @892 */
SECTION_SDATA2 static u8 lit_892[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 8045636C-80456370 00496C 0004+00 1/1 0/0 0/0 .sdata2 @893 */
SECTION_SDATA2 static f32 lit_893 = 1.0f;
/* 80456370-80456378 004970 0004+04 1/1 0/0 0/0 .sdata2 @894 */
SECTION_SDATA2 static f32 lit_894[1 + 1 /* padding */] = {
1.0f / 10.0f,
/* padding */
0.0f,
};
/* 80310E3C-80310ED0 30B77C 0094+00 1/1 0/0 0/0 .text reinitPixelProc__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitPixelProc() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitPixelProc__6J3DSysFv.s"
void J3DSys::reinitPixelProc() {
GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
GXSetDither(GX_TRUE);
GXSetFog(GX_FOG_NONE, 0.0f, 1.0f, 0.1f, 1.0f, ColorBlack);
GXSetFogRangeAdj(GX_FALSE, 0, NULL);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetZCompLoc(GX_TRUE);
}
#pragma pop
/* ############################################################################################## */
/* 80451598-804515A0 000A98 0004+04 0/0 1/1 0/0 .sbss j3dDefaultViewNo */
+9 -48
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,34 +12,6 @@
// Types:
//
struct _GXTlutSize {};
struct _GXTlutFmt {};
struct _GXTexWrapMode {};
struct _GXTexMtxType {};
struct _GXTexMapID {};
struct _GXTexGenType {};
struct _GXTexGenSrc {};
struct _GXTexFmt {};
struct _GXTexFilter {};
struct _GXLightID {};
struct _GXColor {};
struct _GXAnisotropy {};
struct Vec {};
struct J3DTextureSRTInfo {};
struct J3DTexMtx {
/* 803238C4 */ void load(u32) const;
/* 80323900 */ void calc(f32 const (*)[4]);
@@ -50,10 +23,6 @@ struct J3DTexMtx {
struct J3DTexCoord {};
struct J3DSys {
static u8 sTexCoordScaleTable[64 + 4 /* padding */];
};
struct J3DNBTScale {};
struct J3DLightObj {
@@ -121,13 +90,11 @@ extern "C" void J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f();
extern "C" void J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f();
extern "C" void J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f();
extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f();
extern "C" void PSMTXConcat();
extern "C" void GDOverflowed();
extern "C" void _savegpr_26();
extern "C" void _savegpr_28();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" extern u8 j3dSys[284];
extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
extern "C" extern u8 __GDCurrentDL[4];
@@ -157,24 +124,18 @@ asm void loadTexCoordGens(u32 param_0, J3DTexCoord* param_1) {
#pragma pop
/* 803238C4-80323900 31E204 003C+00 0/0 6/6 0/0 .text load__9J3DTexMtxCFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexMtx::load(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/load__9J3DTexMtxCFUl.s"
void J3DTexMtx::load(u32 mtxIdx) const {
if (j3dSys.checkFlag(J3DSysFlag_PostTexMtx)) {
loadPostTexMtx(mtxIdx);
} else {
loadTexMtx(mtxIdx);
}
}
#pragma pop
/* 80323900-80323920 31E240 0020+00 0/0 2/2 0/0 .text calc__9J3DTexMtxFPA4_Cf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexMtx::calc(f32 const (*param_0)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/calc__9J3DTexMtxFPA4_Cf.s"
void J3DTexMtx::calc(f32 const (*param_0)[4]) {
calcTexMtx(param_0);
}
#pragma pop
/* ############################################################################################## */
/* 803CEAC8-803CEAF8 02BBE8 0030+00 1/1 0/0 0/0 .data qMtx$1001 */
+2 -2
View File
@@ -130,8 +130,8 @@ void J3DVertexBuffer::setArray() const {
/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl
*/
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 param_0) {
if (param_0 & 1) {
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flags) {
if (flags & 1) {
for (int i = 0; i < 2; i++) {
mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];