mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-16 14:30:33 -04:00
d_drawlist work
This commit is contained in:
+30
-2
@@ -66,6 +66,26 @@ public:
|
||||
void setScale(f32, f32);
|
||||
void setScroll(int, s16, s16);
|
||||
virtual void draw();
|
||||
|
||||
public:
|
||||
struct TexEntry {
|
||||
/* 0x00 */ GXTexObj mTexObj;
|
||||
/* 0x20 */ GXTlutObj mTlutObj;
|
||||
/* 0x2C */ s16 mScrollX;
|
||||
/* 0x2E */ s16 mScrollY;
|
||||
/* 0x30 */ u8 mbHasTlut;
|
||||
/* 0x31 */ u8 pad[3];
|
||||
};
|
||||
|
||||
/* 0x04 */ s16 mX0;
|
||||
/* 0x06 */ s16 mY0;
|
||||
/* 0x08 */ s16 mX1;
|
||||
/* 0x0A */ s16 mY1;
|
||||
/* 0x0C */ f32 mScaleX;
|
||||
/* 0x10 */ f32 mScaleY;
|
||||
/* 0x14 */ GXColor mC0;
|
||||
/* 0x18 */ GXColor mC1;
|
||||
/* 0x1C */ TexEntry mTex[2];
|
||||
};
|
||||
|
||||
class dDlst_2DMt_c : public dDlst_base_c {
|
||||
@@ -173,7 +193,10 @@ public:
|
||||
u32 set2(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*);
|
||||
bool add(J3DModel*);
|
||||
void init();
|
||||
~dDlst_shadowReal_c() {}
|
||||
~dDlst_shadowReal_c() {
|
||||
delete mpTexData;
|
||||
delete mpDrawBuffer;
|
||||
}
|
||||
dDlst_shadowReal_c() { mState = 0; }
|
||||
|
||||
bool isNoUse() { return mState == 0; }
|
||||
@@ -251,6 +274,11 @@ public:
|
||||
~dDlst_alphaModelData_c();
|
||||
void set(u8, Mtx, u8);
|
||||
void draw(Mtx);
|
||||
|
||||
public:
|
||||
/* 0x00 */ u8 mType;
|
||||
/* 0x01 */ u8 mAlpha;
|
||||
/* 0x04 */ MtxP mpMtx;
|
||||
};
|
||||
|
||||
struct dDlst_alphaModel_c {
|
||||
@@ -267,7 +295,7 @@ public:
|
||||
dDlst_alphaModel_c();
|
||||
static dDlst_alphaModel_c * create(int);
|
||||
BOOL set(u8 type, Mtx mtx, u8 alpha);
|
||||
void draw(MtxP);
|
||||
BOOL draw(Mtx);
|
||||
s32 getNum() { return mNum; }
|
||||
|
||||
public:
|
||||
|
||||
@@ -40,8 +40,7 @@ struct mDoLib_clipper {
|
||||
};
|
||||
|
||||
void mDoLib_project(Vec* src, Vec* dst);
|
||||
u8 mDoLib_setResTimgObj(ResTIMG const* res, GXTexObj* o_texObj, u32 tlut_name,
|
||||
GXTlutObj* o_tlutObj);
|
||||
u8 mDoLib_setResTimgObj(ResTIMG* res, GXTexObj* o_texObj, u32 tlut_name, GXTlutObj* o_tlutObj);
|
||||
void mDoLib_pos2camera(Vec* src, Vec* dst);
|
||||
|
||||
#endif /* M_DO_M_DO_LIB_H */
|
||||
|
||||
+300
-26
@@ -5,6 +5,8 @@
|
||||
|
||||
#include "d/d_drawlist.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "m_Do/m_Do_lib.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "SSystem/SComponent/c_rnd.h"
|
||||
@@ -59,28 +61,112 @@ void dDlst_2DM_c::draw() {
|
||||
}
|
||||
|
||||
/* 800817CC-80081850 .text init__11dDlst_2Dm_cFP7ResTIMGP7ResTIMGff */
|
||||
void dDlst_2Dm_c::init(ResTIMG*, ResTIMG*, f32, f32) {
|
||||
/* Nonmatching */
|
||||
void dDlst_2Dm_c::init(ResTIMG* t0, ResTIMG* t1, f32 sx, f32 sy) {
|
||||
mTex[0].mbHasTlut = mDoLib_setResTimgObj(t0, &mTex[0].mTexObj, 0, &mTex[0].mTlutObj);
|
||||
mTex[1].mbHasTlut = mDoLib_setResTimgObj(t1, &mTex[1].mTexObj, 1, &mTex[1].mTlutObj);
|
||||
mScaleX = sx;
|
||||
mScaleY = sy;
|
||||
}
|
||||
|
||||
/* 80081850-80081864 .text setPos__11dDlst_2Dm_cFssss */
|
||||
void dDlst_2Dm_c::setPos(s16, s16, s16, s16) {
|
||||
/* Nonmatching */
|
||||
void dDlst_2Dm_c::setPos(s16 x0, s16 y0, s16 x1, s16 y1) {
|
||||
mX0 = x0;
|
||||
mY0 = y0;
|
||||
mX1 = x1;
|
||||
mY1 = y1;
|
||||
}
|
||||
|
||||
/* 80081864-80081870 .text setScale__11dDlst_2Dm_cFff */
|
||||
void dDlst_2Dm_c::setScale(f32, f32) {
|
||||
/* Nonmatching */
|
||||
void dDlst_2Dm_c::setScale(f32 sx, f32 sy) {
|
||||
mScaleX = sx;
|
||||
mScaleY = sy;
|
||||
}
|
||||
|
||||
/* 80081870-80081888 .text setScroll__11dDlst_2Dm_cFiss */
|
||||
void dDlst_2Dm_c::setScroll(int, s16, s16) {
|
||||
/* Nonmatching */
|
||||
void dDlst_2Dm_c::setScroll(int idx, s16 x, s16 y) {
|
||||
TexEntry * pTex = &mTex[idx];
|
||||
pTex->mScrollX = x;
|
||||
pTex->mScrollY = y;
|
||||
}
|
||||
|
||||
/* 80081888-80081DA4 .text draw__11dDlst_2Dm_cFv */
|
||||
void dDlst_2Dm_c::draw() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - scroll math isn't right */
|
||||
|
||||
GXVtxAttrFmtList fmtList[GX_VA_MAX_ATTR + 1];
|
||||
|
||||
s16 tex0_s0 = mTex[0].mScrollX;
|
||||
s16 tex0_s1 = (tex0_s0 + 256.0f);
|
||||
s16 tex0_t0 = mTex[0].mScrollY;
|
||||
s16 tex0_t1 = (tex0_t0 + 256.0f);
|
||||
|
||||
s16 tex1_s0 = mTex[1].mScrollX;
|
||||
s16 tex1_s1 = (tex1_s0 + 256.0f);
|
||||
s16 tex1_t0 = mTex[1].mScrollY;
|
||||
s16 tex1_t1 = (tex1_t0 + 256.0f);
|
||||
|
||||
GXGetVtxAttrFmtv(GX_VTXFMT0, fmtList);
|
||||
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_S16, 8);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_S16, 8);
|
||||
GXClearVtxDesc();
|
||||
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
|
||||
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||
GXSetVtxDesc(GX_VA_TEX1, GX_DIRECT);
|
||||
GXLoadTexObj(&this->mTex[0].mTexObj, GX_TEXMAP0);
|
||||
if (this->mTex[0].mbHasTlut)
|
||||
GXLoadTlut(&this->mTex[0].mTlutObj, GXGetTexObjTlut(&mTex[0].mTexObj));
|
||||
GXLoadTexObj(&this->mTex[1].mTexObj, GX_TEXMAP1);
|
||||
if (this->mTex[1].mbHasTlut != 0)
|
||||
GXLoadTlut(&this->mTex[1].mTlutObj, GXGetTexObjTlut(&mTex[1].mTexObj));
|
||||
|
||||
GXSetNumChans(0);
|
||||
GXSetTevColor(GX_TEVREG0, mC0);
|
||||
GXSetTevColor(GX_TEVREG1, mC1);
|
||||
|
||||
GXSetNumTexGens(2);
|
||||
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);
|
||||
|
||||
GXSetNumTevStages(2);
|
||||
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A1, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
|
||||
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL);
|
||||
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO);
|
||||
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
|
||||
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET);
|
||||
GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
|
||||
GXSetCurrentMtx(GX_PNMTX0);
|
||||
|
||||
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
||||
GXPosition3f32(mX0, mY0, 0.0f);
|
||||
GXTexCoord2s16(tex0_s0, tex0_t0);
|
||||
GXTexCoord2s16(tex1_s0, tex1_t0);
|
||||
|
||||
GXPosition3f32(mX1, mY0, 0.0f);
|
||||
GXTexCoord2s16(tex0_s1, tex0_t0);
|
||||
GXTexCoord2s16(tex1_s1, tex1_t0);
|
||||
|
||||
GXPosition3f32(mX1, mY1, 0.0f);
|
||||
GXTexCoord2s16(tex0_s1, tex0_t1);
|
||||
GXTexCoord2s16(tex1_s1, tex1_t1);
|
||||
|
||||
GXPosition3f32(mX0, mY1, 0.0f);
|
||||
GXTexCoord2s16(tex0_s0, tex0_t1);
|
||||
GXTexCoord2s16(tex1_s0, tex1_t1);
|
||||
GXEnd();
|
||||
|
||||
GXSetVtxAttrFmtv(GX_VTXFMT0, fmtList);
|
||||
}
|
||||
|
||||
/* 80081DA4-80082130 .text draw__12dDlst_2DMt_cFv */
|
||||
@@ -113,23 +199,165 @@ void dDlst_effectLine_c::update(cXyz&, _GXColor&, u16, u16, u16, u16, f32, f32,
|
||||
}
|
||||
|
||||
/* 80082828-80082838 .text set__22dDlst_alphaModelData_cFUcPA4_fUc */
|
||||
void dDlst_alphaModelData_c::set(u8, Mtx, u8) {
|
||||
/* Nonmatching */
|
||||
void dDlst_alphaModelData_c::set(u8 type, Mtx mtx, u8 alpha) {
|
||||
mType = type;
|
||||
mpMtx = mtx;
|
||||
mAlpha = alpha;
|
||||
}
|
||||
|
||||
extern void GFLoadPosMtxImm(MtxP, GXPosNrmMtx);
|
||||
extern void GFSetCurrentMtx(u32, u32, u32, u32, u32, u32, u32, u32, u32);
|
||||
extern void GFSetChanMatColor(GXChannelID, GXColor);
|
||||
extern void GFSetVtxDescv(GXVtxDescList*);
|
||||
extern void GFSetVtxAttrFmtv(GXVtxFmt, GXVtxAttrFmtList*);
|
||||
extern void GFSetBlendModeEtc(GXBlendMode, GXBlendFactor, GXBlendFactor, GXLogicOp, u8, u8, u8);
|
||||
extern void GFSetArray(GXAttr, void*, u8);
|
||||
|
||||
char l_backRevZMat[0x40] = {};
|
||||
char l_frontZMat[0x20] = {};
|
||||
char l_frontNoZSubMat[0x20] = {};
|
||||
|
||||
Vec l_bonboriPos[0x2a] = {};
|
||||
char l_bonboriDL[0xa0] = {};
|
||||
|
||||
Vec l_beam_checkPos[0x10] = {};
|
||||
char l_beam_checkDL[0xe0] = {};
|
||||
|
||||
Vec l_cubePos[0x10] = {};
|
||||
char l_cubeDL[0xe0] = {};
|
||||
|
||||
Vec l_bonbori2Pos[0x2a] = {};
|
||||
char l_bonbori2DL[0xa0] = {};
|
||||
|
||||
/* 80082838-80082E44 .text draw__22dDlst_alphaModelData_cFPA4_f */
|
||||
void dDlst_alphaModelData_c::draw(Mtx) {
|
||||
/* Nonmatching */
|
||||
void dDlst_alphaModelData_c::draw(Mtx viewMtx) {
|
||||
/* Nonmatching - color and data order */
|
||||
Mtx mtx;
|
||||
MTXConcat(viewMtx, mpMtx, mtx);
|
||||
GFLoadPosMtxImm(mtx, GX_PNMTX0);
|
||||
GFSetCurrentMtx(GX_PNMTX0, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
|
||||
GXColor color = { 0, 0, 0, 0 };
|
||||
color.a = mAlpha;
|
||||
GFSetChanMatColor(GX_ALPHA0, color);
|
||||
|
||||
if (mType == 0) {
|
||||
/* Bonbori */
|
||||
GFSetArray(GX_VA_POS, l_bonboriPos, sizeof(*l_bonboriPos));
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GXCallDisplayList(l_frontNoZSubMat, sizeof(l_frontNoZSubMat));
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
} else if (mType == 1) {
|
||||
/* Bonborix2 */
|
||||
GFSetArray(GX_VA_POS, l_bonboriPos, sizeof(*l_bonboriPos));
|
||||
Mtx tmp;
|
||||
MTXScale(tmp, 0.8f, 0.8f, 0.8f);
|
||||
MTXConcat(mtx, tmp, tmp);
|
||||
GFLoadPosMtxImm(tmp, GX_PNMTX1);
|
||||
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GFSetCurrentMtx(GX_PNMTX0, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
|
||||
GXCallDisplayList(l_frontNoZSubMat, sizeof(l_frontNoZSubMat));
|
||||
GFSetCurrentMtx(GX_PNMTX0, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
} else if (mType == 5) {
|
||||
/* Bonborix3 */
|
||||
GFSetArray(GX_VA_POS, l_bonboriPos, sizeof(*l_bonboriPos));
|
||||
Mtx tmp;
|
||||
MTXScale(tmp, 0.8f, 0.8f, 0.8f);
|
||||
MTXConcat(mtx, tmp, tmp);
|
||||
GFLoadPosMtxImm(tmp, GX_PNMTX1);
|
||||
|
||||
MTXScale(tmp, 0.6f, 0.6f, 0.6f);
|
||||
MTXConcat(mtx, tmp, tmp);
|
||||
GFLoadPosMtxImm(tmp, GX_PNMTX2);
|
||||
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX2, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GFSetCurrentMtx(GX_PNMTX0, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX2, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
|
||||
GXCallDisplayList(l_frontNoZSubMat, sizeof(l_frontNoZSubMat));
|
||||
GFSetCurrentMtx(GX_PNMTX0, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX1, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
GFSetCurrentMtx(GX_PNMTX2, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY, GX_IDENTITY);
|
||||
GXCallDisplayList(l_bonboriDL, sizeof(l_bonboriDL));
|
||||
} else if (mType == 2) {
|
||||
/* BeamCheck */
|
||||
GFSetArray(GX_VA_POS, l_beam_checkPos, sizeof(*l_beam_checkPos));
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_beam_checkDL, sizeof(l_beam_checkDL));
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GXCallDisplayList(l_beam_checkDL, sizeof(l_beam_checkDL));
|
||||
GXCallDisplayList(l_frontNoZSubMat, sizeof(l_frontNoZSubMat));
|
||||
GXCallDisplayList(l_beam_checkDL, sizeof(l_beam_checkDL));
|
||||
} else if (mType == 3) {
|
||||
/* Cube */
|
||||
/* BeamCheck */
|
||||
GFSetArray(GX_VA_POS, l_cubePos, sizeof(*l_cubePos));
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GXCallDisplayList(l_cubeDL, sizeof(l_cubeDL));
|
||||
} else if (mType == 4) {
|
||||
/* Bonbori2 */
|
||||
GFSetArray(GX_VA_POS, l_bonbori2Pos, sizeof(*l_bonbori2Pos));
|
||||
GXCallDisplayList(l_backRevZMat, sizeof(l_backRevZMat));
|
||||
GXCallDisplayList(l_bonbori2DL, sizeof(l_bonbori2DL));
|
||||
GXCallDisplayList(l_frontZMat, sizeof(l_frontZMat));
|
||||
GXCallDisplayList(l_bonbori2DL, sizeof(l_bonbori2DL));
|
||||
GXCallDisplayList(l_frontNoZSubMat, sizeof(l_frontNoZSubMat));
|
||||
GXCallDisplayList(l_bonbori2DL, sizeof(l_bonbori2DL));
|
||||
}
|
||||
}
|
||||
|
||||
/* 80082E44-80082E58 .text __ct__18dDlst_alphaModel_cFv */
|
||||
dDlst_alphaModel_c::dDlst_alphaModel_c() {
|
||||
/* Nonmatching */
|
||||
mCapacity = 0;
|
||||
mpData = NULL;
|
||||
mNum = 0;
|
||||
}
|
||||
|
||||
/* 80082E58-80082EFC .text create__18dDlst_alphaModel_cFi */
|
||||
dDlst_alphaModel_c * dDlst_alphaModel_c::create(int) {
|
||||
/* Nonmatching */
|
||||
dDlst_alphaModel_c * dDlst_alphaModel_c::create(int num) {
|
||||
dDlst_alphaModel_c * i_this = new dDlst_alphaModel_c();
|
||||
if (i_this != NULL) {
|
||||
dDlst_alphaModelData_c * pData = new dDlst_alphaModelData_c[num];
|
||||
if (pData != NULL) {
|
||||
i_this->mpData = pData;
|
||||
i_this->mCapacity = num;
|
||||
return i_this;
|
||||
}
|
||||
|
||||
if (i_this != NULL)
|
||||
delete i_this;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* 80082EFC-80082F38 .text __dt__22dDlst_alphaModelData_cFv */
|
||||
@@ -148,8 +376,29 @@ BOOL dDlst_alphaModel_c::set(u8 type, Mtx mtx, u8 alpha) {
|
||||
}
|
||||
|
||||
/* 80082F9C-80083064 .text draw__18dDlst_alphaModel_cFPA4_f */
|
||||
void dDlst_alphaModel_c::draw(Mtx) {
|
||||
/* Nonmatching */
|
||||
BOOL dDlst_alphaModel_c::draw(Mtx mtx) {
|
||||
if (mNum == 0)
|
||||
return FALSE;
|
||||
|
||||
static char l_matDL[0x60] = {};
|
||||
|
||||
static GXVtxDescList l_vtxDescList[2] = {
|
||||
};
|
||||
|
||||
static GXVtxAttrFmtList l_vtxAttrFmtList[2] = {
|
||||
};
|
||||
|
||||
GXCallDisplayList(l_matDL, sizeof(l_matDL));
|
||||
GFSetVtxDescv(l_vtxDescList);
|
||||
GFSetVtxAttrFmtv(GX_VTXFMT0, l_vtxAttrFmtList);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
|
||||
dDlst_alphaModelData_c * pData = &mpData[0];
|
||||
for (s32 i = 0; i < mNum; pData++, i++)
|
||||
pData->draw(mtx);
|
||||
|
||||
GFSetBlendModeEtc(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_CLEAR, 1, 0, 1);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 80083064-800832C4 .text draw__22dDlst_alphaModelPacketFv */
|
||||
@@ -265,17 +514,36 @@ void dDlst_shadowSimple_c::set(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*) {
|
||||
|
||||
/* 80084D48-80084D94 .text init__21dDlst_shadowControl_cFv */
|
||||
void dDlst_shadowControl_c::init() {
|
||||
/* Nonmatching */
|
||||
dDlst_shadowReal_c * pReal = &mReal[0];
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, pReal++)
|
||||
pReal->init();
|
||||
}
|
||||
|
||||
/* 80084D94-80084DEC .text reset__21dDlst_shadowControl_cFv */
|
||||
void dDlst_shadowControl_c::reset() {
|
||||
/* Nonmatching */
|
||||
dDlst_shadowReal_c * pReal = &mReal[0];
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, pReal++)
|
||||
pReal->reset();
|
||||
mSimpleNum = 0;
|
||||
}
|
||||
|
||||
/* 80084DEC-80084EF0 .text imageDraw__21dDlst_shadowControl_cFPA4_f */
|
||||
void dDlst_shadowControl_c::imageDraw(Mtx) {
|
||||
/* Nonmatching */
|
||||
void dDlst_shadowControl_c::imageDraw(Mtx mtx) {
|
||||
static char l_matDL[0x80] = {};
|
||||
|
||||
GXSetViewport(0.0f, 0.0f, 256.0f, 256.0f, 0.0f, 1.0f);
|
||||
GXSetScissor(0, 0, 0x100, 0x100);
|
||||
GXCallDisplayList(l_matDL, sizeof(l_matDL));
|
||||
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
||||
GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_CLEAR);
|
||||
GXSetClipMode(GX_CLIP_DISABLE);
|
||||
GXSetTexCopySrc(0, 0, 256, 256);
|
||||
GXSetTexCopyDst(128, 128, GX_TF_I4, GX_TRUE);
|
||||
j3dSys.setDrawModeOpaTexEdge();
|
||||
dDlst_shadowReal_c * pReal = &mReal[0];
|
||||
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, pReal++)
|
||||
pReal->imageDraw(mtx);
|
||||
GXSetClipMode(GX_CLIP_ENABLE);
|
||||
}
|
||||
|
||||
/* 80084EF0-800850D4 .text draw__21dDlst_shadowControl_cFPA4_f */
|
||||
@@ -303,9 +571,12 @@ int dDlst_shadowControl_c::setSimple(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
GXTexObj dDlst_shadowControl_c::mSimpleTexObj;
|
||||
|
||||
/* 800852D8-80085348 .text setSimpleTex__21dDlst_shadowControl_cFPv */
|
||||
void dDlst_shadowControl_c::setSimpleTex(void*) {
|
||||
/* Nonmatching */
|
||||
void dDlst_shadowControl_c::setSimpleTex(void* pImg) {
|
||||
GXInitTexObj(&mSimpleTexObj, pImg, 128, 128, GX_TF_I4, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
||||
GXInitTexObjLOD(&mSimpleTexObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
||||
}
|
||||
|
||||
/* 80085348-800855B4 .text draw__18dDlst_mirrorPacketFv */
|
||||
@@ -314,8 +585,11 @@ void dDlst_mirrorPacket::draw() {
|
||||
}
|
||||
|
||||
/* 800855B4-80085624 .text init__18dDlst_mirrorPacketFP7ResTIMG */
|
||||
void dDlst_mirrorPacket::init(ResTIMG*) {
|
||||
/* Nonmatching */
|
||||
void dDlst_mirrorPacket::init(ResTIMG* pImg) {
|
||||
if (pImg == NULL)
|
||||
pImg = (ResTIMG*) dComIfG_getObjectRes("Always", ALWAYS_BTI_SHMREF);
|
||||
|
||||
mDoLib_setResTimgObj(pImg, &mTexObj, 0, NULL);
|
||||
}
|
||||
|
||||
/* 80085624-80085808 .text mirrorPolygonCheck__FP4cXyzP4cXyzfP18dDlst_shadowPoly_c */
|
||||
|
||||
Reference in New Issue
Block a user