mirror of
https://github.com/zeldaret/tp
synced 2026-07-10 15:13:54 -04:00
J3DSys::drawInit
This commit is contained in:
@@ -6,8 +6,11 @@
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/gx/GXPixel.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dolphin/gx/GXPixel.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DTevs.h"
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
|
||||
@@ -15,47 +18,17 @@
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__6J3DSysFv();
|
||||
extern "C" void loadPosMtxIndx__6J3DSysCFiUs();
|
||||
extern "C" void loadNrmMtxIndx__6J3DSysCFiUs();
|
||||
extern "C" void setTexCacheRegion__6J3DSysF15_GXTexCacheSize();
|
||||
extern "C" void drawInit__6J3DSysFv();
|
||||
extern "C" void reinitGX__6J3DSysFv();
|
||||
extern "C" void reinitGenMode__6J3DSysFv();
|
||||
extern "C" void reinitLighting__6J3DSysFv();
|
||||
extern "C" void reinitTransform__6J3DSysFv();
|
||||
extern "C" void reinitTexture__6J3DSysFv();
|
||||
extern "C" void reinitTevStages__6J3DSysFv();
|
||||
extern "C" void reinitIndStages__6J3DSysFv();
|
||||
extern "C" void reinitPixelProc__6J3DSysFv();
|
||||
extern "C" void __sinit_J3DSys_cpp();
|
||||
extern "C" u8 mCurrentMtx__6J3DSys[48];
|
||||
extern "C" f32 mCurrentS__6J3DSys[3];
|
||||
extern "C" f32 mParentS__6J3DSys[3];
|
||||
extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
|
||||
extern "C" extern u8 j3dDefaultViewNo[4 + 4 /* padding */];
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize);
|
||||
|
||||
extern void makeTexCoordTable();
|
||||
extern void makeAlphaCmpTable();
|
||||
extern void makeZModeTable();
|
||||
extern void makeTevSwapTable();
|
||||
extern "C" void GXInvalidateVtxCache();
|
||||
extern "C" void GXFlush();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" void _restgpr_28();
|
||||
|
||||
extern "C" extern J3DDefaultTexCoordInfo const j3dDefaultTexCoordInfo[8];
|
||||
extern "C" extern const GXColor j3dDefaultColInfo;
|
||||
extern "C" extern u8 data_804563C8;
|
||||
extern "C" extern u32 j3dDefaultTevColor;
|
||||
extern "C" extern u32 data_804563D8;
|
||||
extern "C" extern const GXColorS10 j3dDefaultTevColor;
|
||||
extern "C" extern const GXColor j3dDefaultTevKColor;
|
||||
|
||||
//
|
||||
@@ -153,35 +126,118 @@ void J3DSys::setTexCacheRegion(GXTexCacheSize size) {
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A1E18-803A1E30 02E478 0018+00 1/1 0/0 0/0 .rodata @737 */
|
||||
SECTION_RODATA static u8 const lit_737[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,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x803A1E18, &lit_737);
|
||||
|
||||
/* 803CD8A0-803CD8B0 02A9C0 0010+00 1/1 0/0 0/0 .data NullTexData */
|
||||
SECTION_DATA static u8 NullTexData[16] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 803CD8B0-803CD8E0 02A9D0 0030+00 1/1 0/0 0/0 .data j3dIdentityMtx */
|
||||
SECTION_DATA static u8 j3dIdentityMtx[48] = {
|
||||
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_DATA static Mtx j3dIdentityMtx = {
|
||||
1.0f, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, 1.0f, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, 1.0f, 0.0f,
|
||||
};
|
||||
|
||||
/* 803100BC-8031073C 30A9FC 0680+00 0/0 3/3 0/0 .text drawInit__6J3DSysFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DSys::drawInit() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s"
|
||||
void J3DSys::drawInit() {
|
||||
GXInvalidateVtxCache();
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
GXSetCullMode(GX_CULL_BACK);
|
||||
GXSetCoPlanar(GX_FALSE);
|
||||
GXSetClipMode(GX_FALSE);
|
||||
GXSetColorUpdate(GX_TRUE);
|
||||
GXSetDither(GX_TRUE);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_NOOP);
|
||||
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
|
||||
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
||||
GXSetZCompLoc(GX_TRUE);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR1, GX_CLR_RGBA, GX_RGBA8, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX2, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX3, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX4, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX5, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX6, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX7, GX_CLR_RGBA, GX_RGBA4, 7);
|
||||
|
||||
GXSetNumIndStages(0);
|
||||
reinitTexture();
|
||||
|
||||
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);
|
||||
|
||||
for (u32 i = 0; i < 10; i++)
|
||||
GXLoadTexMtxImm(j3dIdentityMtx, GX_TEXMTX0 + i * 3, GX_MTX3x4);
|
||||
|
||||
Mtx23 indTexMtx = {
|
||||
{ 0.5f, 0.0f, 0.0f },
|
||||
{ 0.0f, 0.5f, 0.0f },
|
||||
};
|
||||
|
||||
u8 i;
|
||||
for (i = 0; i < 3; i++)
|
||||
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), indTexMtx, 1);
|
||||
|
||||
GXSetChanMatColor(GX_COLOR0A0, j3dDefaultColInfo);
|
||||
GXSetChanMatColor(GX_COLOR1A1, j3dDefaultColInfo);
|
||||
|
||||
GXSetNumChans(data_804563C8);
|
||||
GXSetNumTexGens(1);
|
||||
GXSetNumTevStages(1);
|
||||
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
|
||||
GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
|
||||
|
||||
for (i = 0; i < GX_MAX_TEXMAP; i++)
|
||||
GXSetTexCoordGen2((GXTexCoordID)i, (GXTexGenType) j3dDefaultTexCoordInfo[i].mTexGenType, (GXTexGenSrc) j3dDefaultTexCoordInfo[i].mTexGenSrc, j3dDefaultTexCoordInfo[i].mTexGenMtx, GX_FALSE, GX_PTIDENTITY);
|
||||
|
||||
for (i = 0; i < GX_MAX_INDTEXSTAGE; i++)
|
||||
GXSetIndTexCoordScale((GXIndTexStageID)i, GX_ITS_1, GX_ITS_1);
|
||||
|
||||
for (i = 0; i < GX_MAX_TEVREG; i++)
|
||||
GXSetTevKColor((GXTevKColorID)i, j3dDefaultTevKColor);
|
||||
|
||||
for (i = 0; i < GX_MAX_TEVREG; i++)
|
||||
GXSetTevColorS10((GXTevRegID)i, j3dDefaultTevColor);
|
||||
|
||||
for (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);
|
||||
}
|
||||
|
||||
for (i = 0; i < GX_MAX_TEVSTAGE; i++)
|
||||
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);
|
||||
|
||||
for (i = 0; i < GX_MAX_TEVSTAGE; i++)
|
||||
GXSetTevIndirect((GXTevStageID)i, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF);
|
||||
|
||||
OSInitFastCast();
|
||||
setTexCacheRegion(GX_TEXCACHE_32K);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8031073C-8031079C 30B07C 0060+00 0/0 16/16 6/6 .text reinitGX__6J3DSysFv */
|
||||
void J3DSys::reinitGX() {
|
||||
|
||||
Reference in New Issue
Block a user