d_drawlist work

This commit is contained in:
Jasper St. Pierre
2023-11-08 21:52:15 -08:00
parent 1f4c0de0c6
commit 1166423d50
9 changed files with 517 additions and 69 deletions
+2 -2
View File
@@ -217,8 +217,8 @@ inline JKRCompression JKRConvertAttrToCompressionType(u32 attr) {
return JKRArchive::convertAttrToCompressionType(attr);
}
inline void* JKRGetResource(u32 node, const char* path, JKRArchive* archive) {
return JKRArchive::getGlbResource(node, path, archive);
inline void* JKRGetResource(u32 node, const char* path, JKRArchive* arc) {
return JKRArchive::getGlbResource(node, path, arc);
}
inline void* JKRGetTypeResource(u32 tag, const char* name, JKRArchive* arc) {
+1
View File
@@ -66,6 +66,7 @@ public:
/* 0xC6 */ u16 mTexIdx;
/* 0xC8 */ JPACallBackBase2<JPABaseEmitter*, JPABaseParticle*>* mpCallBack2;
/* 0xCC */ u32 mStatus;
/* 0xD0 */ u32 field_0xd0;
};
class JPAParticleCallBack {
+2
View File
@@ -429,6 +429,7 @@ public:
void setTmsgArchive(JKRArchive * pArc) { mpTmsgArchive = pArc; }
JKRArchive* getTmsgArchive() { return mpTmsgArchive; }
void setMenuArchive(JKRArchive * pArc) { mpMenuArchive = pArc; }
JKRArchive* getMenuArchive() { return mpMenuArchive; }
void setFont0Archive(JKRArchive * pArc) { mpFont0Archive = pArc; }
void setFont1Archive(JKRArchive * pArc) { mpFont1Archive = pArc; }
JKRArchive* getFontArchive() { return mpFont0Archive; }
@@ -2214,6 +2215,7 @@ inline void dComIfGp_setDmsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play
inline void dComIfGp_setTmsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setTmsgArchive(pArc); }
inline JKRArchive* dComIfGp_getTmsgArchive() { return g_dComIfG_gameInfo.play.getTmsgArchive(); }
inline void dComIfGp_setMenuArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMenuArchive(pArc); }
inline JKRArchive* dComIfGp_getMenuArchive() { return g_dComIfG_gameInfo.play.getMenuArchive(); }
inline void dComIfGp_setFont0Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFont0Archive(pArc); }
inline void dComIfGp_setFont1Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFont1Archive(pArc); }
inline JKRArchive* dComIfGp_getFontArchive() { return g_dComIfG_gameInfo.play.getFontArchive(); }
+32 -2
View File
@@ -41,6 +41,11 @@ public:
class dDlst_2DPoint_c : public dDlst_base_c {
public:
virtual void draw();
/* 0x04 */ s16 mPosX;
/* 0x06 */ s16 mPosY;
/* 0x08 */ GXColor mColor;
/* 0x0C */ u8 mPointSize;
};
class dDlst_2DT_c : public dDlst_base_c {
@@ -52,6 +57,19 @@ class dDlst_2DT2_c : public dDlst_base_c {
public:
void init(ResTIMG* pTimg, f32, f32, f32, f32, u8, u8, u8, f32, f32);
virtual void draw();
public:
/* 0x04 */ GXTexObj mTex;
/* 0x24 */ f32 mX;
/* 0x28 */ f32 mY;
/* 0x2C */ f32 mW;
/* 0x30 */ f32 mH;
/* 0x34 */ f32 mScrollS;
/* 0x38 */ f32 mScrollT;
/* 0x3C */ GXColor mColor;
/* 0x40 */ u8 mMirrorS;
/* 0x41 */ u8 mMirrorT;
/* 0x42 */ u8 mAlpha;
};
class dDlst_2DM_c : public dDlst_base_c {
@@ -209,14 +227,14 @@ public:
dDlst_shadowReal_c() { mState = 0; }
bool isNoUse() { return mState == 0; }
bool isUse() { return mState == 1; }
bool isUse() { return mState != 0; }
bool checkKey(u32 i_key) { return mKey == i_key; }
enum { MODEL_MAX = 0x1A };
private:
/* 0x0000 */ u8 mState;
/* 0x0001 */ u8 field_0x1;
/* 0x0001 */ s8 field_0x1;
/* 0x0002 */ u8 mAlpha;
/* 0x0003 */ u8 mModelNum;
/* 0x0004 */ u32 mKey;
@@ -322,11 +340,19 @@ public:
struct dDlst_alphaVolPacket : public J3DPacket {
public:
virtual void draw();
public:
/* 0x04 */ u32 field_0x04[3];
/* 0x10 */ Mtx mtx;
};
struct dDlst_alphaInvVolPacket : public J3DPacket {
public:
virtual void draw();
public:
/* 0x04 */ u32 field_0x04[3];
/* 0x10 */ Mtx mtx;
};
class dDlst_list_c {
@@ -407,6 +433,10 @@ public:
void newPeekZdata(s16 x, s16 y, u32 * data) { mPeekZ.newData(x, y, data); }
static bool mWipe;
static GXColor mWipeColor;
static f32 mWipeRate;
static f32 mWipeSpeed;
static dDlst_2DT2_c mWipeDlst;
/* 0x00000 */ J3DDrawBuffer* mpOpaListSky;
/* 0x00004 */ J3DDrawBuffer* mpXluListSky;
+1 -1
View File
@@ -105,7 +105,7 @@ inline void GXPosition2s8(s8 x, s8 y) {
GFX_FIFO(s8) = y;
}
inline void i_GXPosition3s16(s16 x, s16 y, s16 z) {
inline void GXPosition3s16(s16 x, s16 y, s16 z) {
GFX_FIFO(s16) = x;
GFX_FIFO(s16) = y;
GFX_FIFO(s16) = z;
+2 -1
View File
@@ -513,7 +513,8 @@ bool JASystem::TTrack::stopSeq() {
/* 80282908-80282944 .text stopSeqMain__Q28JASystem6TTrackFv */
void JASystem::TTrack::stopSeqMain() {
/* Nonmatching */
updateSeq(0, 1);
close();
}
/* 80282944-802829DC .text noteOffAll__Q28JASystem6TTrackFv */
+32 -13
View File
@@ -5,15 +5,28 @@
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "dolphin/types.h"
#include "JSystem/JParticle/JPASweepShape.h"
#include "dolphin/mtx/mtxvec.h"
/* 8025DEF4-8025E62C .text initParticle__15JPABaseParticleFv */
void JPABaseParticle::initParticle() {
/* Nonmatching */
JPABaseEmitter * emtr = JPABaseEmitter::emtrInfo.mpCurEmitter;
mStatus = 0x01;
mFieldAccel.set(1.0f, 1.0f, 1.0f);
mFieldDrag = 1.0f;
mDrag = 1.0f;
MTXMultVec(JPABaseEmitter::emtrInfo.mEmitterGlobalSR, JPABaseEmitter::emtrInfo.mVolumePos, mLocalPosition);
if ((emtr->mDataFlag & 0x08) != 0)
mStatus |= 0x20;
mGlobalPosition = JPABaseEmitter::emtrInfo.mEmitterGlobalCenter;
// TODO: calculate vel/pos
mpCallBack2 = emtr->mpParticleCallBack;
emtr->mFieldManager.init(this);
field_0xd0 = 0;
}
/* 8025E62C-8025EB28 .text initChild__15JPABaseParticleFP15JPABaseParticle */
void JPABaseParticle::initChild(JPABaseParticle*) {
void JPABaseParticle::initChild(JPABaseParticle* parent) {
/* Nonmatching */
}
@@ -35,10 +48,9 @@ void JPABaseParticle::incFrame() {
/* 8025EB90-8025ECE8 .text calcVelocity__15JPABaseParticleFv */
void JPABaseParticle::calcVelocity() {
/* Nonmatching */
mFieldVel.zero();
if (mStatus & 0x20)
mGlobalPosition = JPABaseEmitter::emtrInfo.mEmitterGlobalCenter;
mGlobalPosition.set(JPABaseEmitter::emtrInfo.mEmitterGlobalCenter);
mBaseVel.x += mAccel.x;
mBaseVel.y += mAccel.y;
mBaseVel.z += mAccel.z;
@@ -64,20 +76,27 @@ void JPABaseParticle::calcVelocity() {
/* 8025ECE8-8025ED6C .text calcPosition__15JPABaseParticleFv */
void JPABaseParticle::calcPosition() {
/* Nonmatching */
mLocalPosition.x += mVelocity.x;
mLocalPosition.y += mVelocity.y;
mLocalPosition.z += mVelocity.z;
JGeometry::TVec3<f32> pos;
pos.x = mGlobalPosition.x + JPABaseEmitter::emtrInfo.mPublicScale.x * mLocalPosition.x;
pos.y = mGlobalPosition.y + JPABaseEmitter::emtrInfo.mPublicScale.y * mLocalPosition.y;
pos.z = mGlobalPosition.z + JPABaseEmitter::emtrInfo.mPublicScale.z * mLocalPosition.z;
mPosition = pos;
mPosition.set(
mLocalPosition.x * JPABaseEmitter::emtrInfo.mPublicScale.x + mGlobalPosition.x,
mLocalPosition.y * JPABaseEmitter::emtrInfo.mPublicScale.y + mGlobalPosition.y,
mLocalPosition.z * JPABaseEmitter::emtrInfo.mPublicScale.z + mGlobalPosition.z
);
}
/* 8025ED6C-8025EE44 .text checkCreateChild__15JPABaseParticleFv */
bool JPABaseParticle::checkCreateChild() {
/* Nonmatching */
JPASweepShape * ssp = JPABaseEmitter::emtrInfo.mpCurEmitter->mpDataLinkInfo->getSweepShape();
bool ret = false;
f32 time = mLifeTime > 1.0f ? (mCurFrame / (mLifeTime - 1.0f)) : 1.0f;
if (time >= ssp->getTiming()) {
f32 frame = mCurFrame;
s32 step = (ssp->getStep() & 0xFF) + 1;
if (((s32)frame % step) == 0)
ret = true;
}
return ret;
}
+415 -16
View File
@@ -9,9 +9,18 @@
#include "m_Do/m_Do_mtx.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "SSystem/SComponent/c_rnd.h"
#include "SSystem/SComponent/c_bg_s_shdw_draw.h"
GXTexObj dDlst_shadowControl_c::mSimpleTexObj;
bool dDlst_list_c::mWipe;
f32 dDlst_list_c::mWipeRate = 0.0f;
f32 dDlst_list_c::mWipeSpeed = 0.0f;
GXColor dDlst_list_c::mWipeColor = { 0, 0, 0, 0 };
dDlst_2DT2_c dDlst_list_c::mWipeDlst;
/* 800804A4-800804C0 .text setViewPort__14dDlst_window_cFffffff */
void dDlst_window_c::setViewPort(f32 x, f32 y, f32 w, f32 h, f32 n, f32 f) {
mViewport.mXOrig = x;
@@ -37,7 +46,20 @@ void dDlst_2DTri_c::draw() {
/* 80080694-80080784 .text draw__15dDlst_2DPoint_cFv */
void dDlst_2DPoint_c::draw() {
/* Nonmatching */
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE);
GXSetChanMatColor(GX_COLOR0A0, mColor);
GXSetNumTexGens(0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET);
GXSetPointSize(mPointSize, GX_TO_ZERO);
GXBegin(GX_POINTS, GX_VTXFMT0, 1);
GXPosition3s16(mPosX, mPosY, 0);
GXEnd();
}
/* 80080784-80080A50 .text draw__11dDlst_2DT_cFv */
@@ -48,11 +70,250 @@ void dDlst_2DT_c::draw() {
/* 80080A50-800811E8 .text draw__12dDlst_2DT2_cFv */
void dDlst_2DT2_c::draw() {
/* Nonmatching */
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXLoadTexObj(&mTex, GX_TEXMAP0);
GXSetNumChans(0);
GXSetTevColor(GX_TEVREG0, mColor);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1,true, GX_TEVPREV);
if (mAlpha)
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
else
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1,true, GX_TEVPREV);
GXSetZCompLoc(0);
GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(GX_TRUE);
GXSetClipMode(GX_CLIP_DISABLE);
GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
f32 x0 = mX, x1 = x0 + mW;
f32 y0 = mY, y1 = y0 + mH;
if (mMirrorS && mMirrorT) {
f32 xH = mX + mW * 0.5f;
f32 yH = mY + mH * 0.5f;
f32 s0, s1, t0, t1;
if (mScrollS == 0.0f) {
s0 = 0.0f;
s1 = 0.0f;
} else {
s0 = 1.0f - 1.0f / mScrollS;
s1 = 1.0f;
}
if (mScrollT == 0.0f) {
t0 = 0.0f;
t1 = 0.0f;
} else {
t0 = 1.0f - 1.0f / mScrollT;
t1 = 1.0f;
}
GXBegin(GX_QUADS, GX_VTXFMT0, 16);
// TL
GXPosition2f32(mX, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(xH, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(xH, yH);
GXTexCoord2f32(s1, t1);
GXPosition2f32(mX, yH);
GXTexCoord2f32(s0, t1);
// TR
GXPosition2f32(xH, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(x1, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(x1, yH);
GXTexCoord2f32(s0, t1);
GXPosition2f32(xH, yH);
GXTexCoord2f32(s1, t1);
// BL
GXPosition2f32(mX, yH);
GXTexCoord2f32(s0, t1);
GXPosition2f32(xH, yH);
GXTexCoord2f32(s1, t1);
GXPosition2f32(xH, y1);
GXTexCoord2f32(s1, t0);
GXPosition2f32(mX, y1);
GXTexCoord2f32(s0, t0);
// BR
GXPosition2f32(xH, yH);
GXTexCoord2f32(s1, t1);
GXPosition2f32(x1, yH);
GXTexCoord2f32(s0, t1);
GXPosition2f32(x1, y1);
GXTexCoord2f32(s0, t0);
GXPosition2f32(xH, y1);
GXTexCoord2f32(s1, t0);
GXEnd();
} else if (mMirrorS) {
f32 xH = mX + mW * 0.5f;
f32 s0, s1, t0, t1;
if (mScrollS == 0.0f) {
s0 = 0.0f;
s1 = 0.0f;
} else {
s0 = 1.0f - 1.0f / mScrollS;
s1 = 1.0f;
}
if (mScrollT == 0.0f) {
t0 = 0.0f;
t1 = 0.0f;
} else {
f32 h = (1.0f / mScrollT) * 0.5f;
t0 = 0.5f - h;
t1 = 0.5f + h;
}
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
// L
GXPosition2f32(mX, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(xH, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(xH, y1);
GXTexCoord2f32(s1, t1);
GXPosition2f32(mX, y1);
GXTexCoord2f32(s0, t1);
// R
GXPosition2f32(xH, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(x1, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(x1, y1);
GXTexCoord2f32(s0, t1);
GXPosition2f32(xH, y1);
GXTexCoord2f32(s1, t1);
GXEnd();
} else if (mMirrorT) {
f32 yH = mY + mH * 0.5f;
f32 s0, s1, t0, t1;
if (mScrollS == 0.0f) {
s0 = 0.0f;
s1 = 0.0f;
} else {
f32 h = 0.5f - (1.0f / mScrollS) * 0.5f;
s0 = 0.5f - h;
s1 = 0.5f + h;
}
if (mScrollT == 0.0f) {
t0 = 0.0f;
t1 = 0.0f;
} else {
t0 = 1.0f - 1.0f / mScrollT;
t1 = 1.0f;
}
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
// T
GXPosition2f32(mX, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(x1, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(x1, yH);
GXTexCoord2f32(s1, t1);
GXPosition2f32(mX, yH);
GXTexCoord2f32(s0, t1);
// B
GXPosition2f32(mX, yH);
GXTexCoord2f32(s0, t1);
GXPosition2f32(x1, yH);
GXTexCoord2f32(s1, t1);
GXPosition2f32(x1, y1);
GXTexCoord2f32(s1, t0);
GXPosition2f32(mX, y1);
GXTexCoord2f32(s0, t0);
GXEnd();
} else {
f32 s0, s1, t0, t1;
if (mScrollS == 0.0f) {
s0 = 0.0f;
s1 = 0.0f;
} else {
f32 h = (1.0f / mScrollS) * 0.5f;
s0 = 0.5f - h;
s1 = 0.5f + h;
}
if (mScrollT == 0.0f) {
t0 = 0.0f;
t1 = 0.0f;
} else {
f32 h = (1.0f / mScrollT) * 0.5f;
t0 = 0.5f - h;
t1 = 0.5f + h;
}
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2f32(mX, mY);
GXTexCoord2f32(s0, t0);
GXPosition2f32(x1, mY);
GXTexCoord2f32(s1, t0);
GXPosition2f32(x1, y1);
GXTexCoord2f32(s1, t1);
GXPosition2f32(mX, y1);
GXTexCoord2f32(s0, t1);
GXEnd();
}
GXSetClipMode(GX_CLIP_ENABLE);
dComIfGp_getCurrentGrafPort()->setup2D();
}
/* 800811E8-800812F4 .text init__12dDlst_2DT2_cFP7ResTIMGffffUcUcUcff */
void dDlst_2DT2_c::init(ResTIMG*, f32, f32, f32, f32, u8, u8, u8, f32, f32) {
/* Nonmatching */
void dDlst_2DT2_c::init(ResTIMG* tex, f32 x, f32 y, f32 w, f32 h, u8 p0, u8 p1, u8 p2, f32 f0, f32 f1) {
mDoLib_setResTimgObj(tex, &mTex, 0, NULL);
mX = x;
mY = y;
mW = w;
mH = h;
mScrollS = f0;
mScrollT = f1;
GXColor black = { 0x00, 0x00, 0x00, 0xFF };
mColor = black;
mMirrorS = p1;
if (mMirrorS && GXGetTexObjWrapS(&mTex) == GX_MIRROR)
mMirrorS = 0;
mMirrorT = p2;
if (mMirrorT && GXGetTexObjWrapT(&mTex) == GX_MIRROR)
mMirrorT = 0;
mAlpha = p0;
}
/* 800812F4-800817CC .text draw__11dDlst_2DM_cFv */
@@ -401,6 +662,46 @@ BOOL dDlst_alphaModel_c::draw(Mtx mtx) {
return TRUE;
}
char l_frontMat[] = {
0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xc0, 0x08, 0xff, 0xff, 0x61, 0xc1, 0x08, 0xff, 0x90, 0x61,
0x43, 0x00, 0x00, 0x41, 0x61, 0x40, 0x00, 0x00, 0x07, 0x61, 0x41, 0x00, 0x01, 0x15, 0x10, 0x00,
0x00, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01,
0x61, 0x00, 0x00, 0x40, 0x10, 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,
};
char l_backSubMat[] = {
0x61, 0x41, 0x00, 0x09, 0x35, 0x10, 0x00, 0x00, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x80, 0x10, 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,
};
Vec l_simpleShadowPos[] = {
{ 0.0f, -1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, -1.0f, -1.0f },
{ 1.0f, 0.0f, -1.0f },
{ -1.0f, -1.0f, -1.0f },
{ -1.0f, 0.0f, -1.0f },
{ -1.0f, -1.0f, 1.0f },
{ -1.0f, 0.0f, 1.0f },
{ 1.0f, -1.0f, 1.0f },
{ 1.0f, 0.0f, 1.0f },
{ -1.0f, 1.0f, -1.0f },
{ 1.0f, 1.0f, -1.0f },
};
char l_shadowVolumeDL[] = {
0x98, 0x00, 0x05, 0x03, 0x09, 0x01, 0x07, 0x05, 0x98, 0x00, 0x05, 0x04, 0x06, 0x00, 0x08, 0x02,
0x98, 0x00, 0x04, 0x04, 0x05, 0x06, 0x07, 0x98, 0x00, 0x04, 0x02, 0x03, 0x04, 0x05, 0x98, 0x00,
0x04, 0x08, 0x09, 0x02, 0x03, 0x98, 0x00, 0x04, 0x06, 0x07, 0x08, 0x09, 0x98, 0x00, 0x03, 0x01,
0x05, 0x03, 0x98, 0x00, 0x03, 0x00, 0x02, 0x04, 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,
};
/* 80083064-800832C4 .text draw__22dDlst_alphaModelPacketFv */
void dDlst_alphaModelPacket::draw() {
/* Nonmatching */
@@ -430,7 +731,7 @@ void dDlst_shadowReal_c::init() {
GXInitTexObjLOD(&mTexObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_ANISO_1);
mpCallBack = new J3DCallBackPacket();
mpDrawBuffer = new J3DDrawBuffer();
mpDrawBuffer = new J3DDrawBuffer(0x20);
mpDrawBuffer->setInvalidSort();
}
@@ -552,8 +853,25 @@ void dDlst_shadowControl_c::draw(Mtx) {
}
/* 800850D4-80085170 .text setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
int dDlst_shadowControl_c::setReal(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*) {
int dDlst_shadowControl_c::setReal(u32 key, s8 size, J3DModel* model, cXyz* pos, f32 f0, f32 f1, dKy_tevstr_c* tevstr) {
/* Nonmatching */
if (key != 0) {
dDlst_shadowReal_c * real = &mReal[0];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isUse() && real->checkKey(key)) {
return real->set(key, size, model, pos, f0, f1, tevstr);
}
}
}
dDlst_shadowReal_c * real = &mReal[0];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isNoUse()) {
return real->set(i, size, model, pos, f0, f1, tevstr);
}
}
return 0;
}
/* 80085170-8008520C .text setReal2__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */
@@ -562,16 +880,30 @@ int dDlst_shadowControl_c::setReal2(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tev
}
/* 8008520C-80085274 .text addReal__21dDlst_shadowControl_cFUlP8J3DModel */
bool dDlst_shadowControl_c::addReal(u32, J3DModel*) {
/* Nonmatching */
bool dDlst_shadowControl_c::addReal(u32 key, J3DModel* model) {
if (key == 0)
return false;
dDlst_shadowReal_c * real = &mReal[0];
for (s32 i = 0; i < (s32)ARRAY_SIZE(mReal); i++, real++) {
if (real->isUse() && real->checkKey(key)) {
return real->add(model);
}
}
return false;
}
/* 80085274-800852D8 .text setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj */
int dDlst_shadowControl_c::setSimple(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*) {
int dDlst_shadowControl_c::setSimple(cXyz* pos, f32 f0, f32 f1, cXyz* floor_nrm, s16 rotY, f32 f2, GXTexObj* tex) {
/* Nonmatching */
}
if (floor_nrm == NULL || mSimpleNum >= ARRAY_SIZE(mSimple))
return false;
GXTexObj dDlst_shadowControl_c::mSimpleTexObj;
mSimple[mSimpleNum].set(pos, f0, f1, floor_nrm, rotY, f2, tex);
mSimpleNum++;
return true;
}
/* 800852D8-80085348 .text setSimpleTex__21dDlst_shadowControl_cFPv */
void dDlst_shadowControl_c::setSimpleTex(void* pImg) {
@@ -604,12 +936,41 @@ void dDlst_mirrorPacket::update(Mtx, u8, f32) {
/* 800859DC-80085AF4 .text draw__20dDlst_alphaVolPacketFv */
void dDlst_alphaVolPacket::draw() {
/* Nonmatching */
GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetTevColor(GX_TEVREG0, g_whiteColor);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetArray(GX_VA_POS, (void*)l_simpleShadowPos, ARRAY_SIZE(l_simpleShadowPos));
GXLoadPosMtxImm(mtx, GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXCallDisplayList(l_frontMat, 0x40);
GXCallDisplayList(l_shadowVolumeDL, 0x40);
GXCallDisplayList(l_backSubMat, 0x20);
GXCallDisplayList(l_shadowVolumeDL, 0x40);
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
J3DShape::resetVcdVatCache();
}
/* 80085AF4-80085BBC .text draw__23dDlst_alphaInvVolPacketFv */
void dDlst_alphaInvVolPacket::draw() {
/* Nonmatching */
static char l_backMat[0x60] = {
};
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetArray(GX_VA_POS, (void*)l_simpleShadowPos, ARRAY_SIZE(l_simpleShadowPos));
GXLoadPosMtxImm(mtx, GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXSetTevColor(GX_TEVREG0, g_whiteColor);
GXCallDisplayList(l_backMat, 0x60);
GXCallDisplayList(l_shadowVolumeDL, 0x40);
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
J3DShape::resetVcdVatCache();
}
/* 80085BBC-80085BFC .text newData__13dDlst_peekZ_cFssPUl */
@@ -719,7 +1080,25 @@ bool dDlst_list_c::init() {
/* 800861F4-80086368 .text __dt__12dDlst_list_cFv */
dDlst_list_c::~dDlst_list_c() {
/* Nonmatching */
delete mpOpaListSky;
delete mpXluListSky;
delete mpOpaListP0;
delete mpOpaListP1;
delete mpXluListP1;
delete mpOpaListBG;
delete mpXluListBG;
delete mpOpaList;
delete mpXluList;
delete mpOpaListFilter;
delete mpOpaListMaskOff;
delete mpXluListMaskOff;
delete mpOpaListInvisible;
delete mpXluListInvisible;
delete mpOpaList2D;
if (mpAlphaModel != NULL)
delete mpAlphaModel;
if (mpSpotModel != NULL)
delete mpSpotModel;
}
/* 80086368-80086490 .text reset__12dDlst_list_cFv */
@@ -785,8 +1164,14 @@ void dDlst_list_c::draw(dDlst_base_c** pList, dDlst_base_c** pEnd) {
}
/* 800865C8-800866C8 .text wipeIn__12dDlst_list_cFfR8_GXColor */
void dDlst_list_c::wipeIn(f32, _GXColor&) {
/* Nonmatching */
void dDlst_list_c::wipeIn(f32 speed, GXColor& color) {
mWipe = true;
mWipeSpeed = speed;
mWipeColor = color;
mWipeRate = speed >= 0.0f ? 1.0f : 0.0f;
ResTIMG* texture = (ResTIMG*)JKRGetResource('TIMG', "wipe_00.bti", dComIfGp_getMenuArchive());
JUT_ASSERT(0x1637, texture != 0);
mWipeDlst.init(texture, -9.0f, -21.0f, 659.0f, 524.0f, 0, 1, 1, 2.0f, 2.436f);
}
/* 800866C8-800866F0 .text wipeIn__12dDlst_list_cFf */
@@ -796,7 +1181,21 @@ void dDlst_list_c::wipeIn(f32 time) {
/* 800866F0-80086790 .text calcWipe__12dDlst_list_cFv */
void dDlst_list_c::calcWipe() {
/* Nonmatching */
if (mWipe) {
mWipeRate += mWipeSpeed;
if (mWipeRate < 0.0f) {
mWipeRate = 0.0f;
} else {
if (mWipeRate > 1.0f) {
mWipeRate = 1.0f;
mWipe = false;
}
}
mWipeDlst.mScrollS = mWipeRate * 2.0f;
mWipeDlst.mScrollT = mWipeDlst.mScrollS * 1.218f;
set2DXlu(&mWipeDlst);
}
}
/* 80086790-8008696C .text dDlst_texSpecmapST__FPC4cXyzPC12dKy_tevstr_cP12J3DModelDataf */
+30 -34
View File
@@ -12,7 +12,7 @@ dPa_modelEmitter_c::dPa_modelEmitter_c() {
}
/* 8007A514-8007A804 .text __ct__21dPa_J3DmodelEmitter_cFP14JPABaseEmitterP12J3DModelDataR12dKy_tevstr_cP16J3DAnmTexPatternUsi */
dPa_J3DmodelEmitter_c::dPa_J3DmodelEmitter_c(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c&, J3DAnmTexPattern*, unsigned short, int) {
dPa_J3DmodelEmitter_c::dPa_J3DmodelEmitter_c(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c&, J3DAnmTexPattern*, u16, int) {
/* Nonmatching */
}
@@ -61,7 +61,7 @@ void dPa_modelControl_c::draw() {
}
/* 8007B158-8007B194 .text __ct__19dPa_followEcallBackFUcUc */
dPa_followEcallBack::dPa_followEcallBack(unsigned char, unsigned char) {
dPa_followEcallBack::dPa_followEcallBack(u8, u8) {
/* Nonmatching */
}
@@ -76,7 +76,7 @@ void dPa_followEcallBack::draw(JPABaseEmitter*) {
}
/* 8007B2C8-8007B360 .text setup__19dPa_followEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_followEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_followEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -86,22 +86,22 @@ void dPa_followEcallBack::end() {
}
/* 8007B3B0-8007B444 .text __ct__18dPa_smokeEcallBackFUc */
dPa_smokeEcallBack::dPa_smokeEcallBack(unsigned char) {
dPa_smokeEcallBack::dPa_smokeEcallBack(u8) {
/* Nonmatching */
}
/* 8007B4B0-8007B558 .text __ct__18dPa_smokeEcallBackFUcUcUcUc */
dPa_smokeEcallBack::dPa_smokeEcallBack(unsigned char, unsigned char, unsigned char, unsigned char) {
dPa_smokeEcallBack::dPa_smokeEcallBack(u8, u8, u8, u8) {
/* Nonmatching */
}
/* 8007B558-8007B5E8 .text __ct__18dPa_smokeEcallBackFRC8_GXColorP12dKy_tevstr_cUc */
dPa_smokeEcallBack::dPa_smokeEcallBack(const _GXColor&, dKy_tevstr_c*, unsigned char) {
dPa_smokeEcallBack::dPa_smokeEcallBack(const _GXColor&, dKy_tevstr_c*, u8) {
/* Nonmatching */
}
/* 8007B5E8-8007B698 .text setup__18dPa_smokeEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_smokeEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_smokeEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -111,7 +111,7 @@ void initiateLighting(_GXColorS10&, _GXColor&, _GXColor&) {
}
/* 8007B804-8007BB44 .text smokeEcallBack__FP14JPABaseEmitterP12dKy_tevstr_cSc8_GXColor */
void smokeEcallBack(JPABaseEmitter*, dKy_tevstr_c*, signed char, _GXColor) {
void smokeEcallBack(JPABaseEmitter*, dKy_tevstr_c*, s8, _GXColor) {
/* Nonmatching */
}
@@ -167,7 +167,7 @@ void dPa_simpleEcallBack::draw(JPABaseEmitter*) {
}
/* 8007C6EC-8007C774 .text create__19dPa_simpleEcallBackFP17JPAEmitterManagerUsUc */
void dPa_simpleEcallBack::create(JPAEmitterManager*, unsigned short, unsigned char) {
void dPa_simpleEcallBack::create(JPAEmitterManager*, u16, u8) {
/* Nonmatching */
}
@@ -177,7 +177,7 @@ void dPa_simpleEcallBack::createEmitter(JPAEmitterManager*) {
}
/* 8007C840-8007C8C4 .text set__19dPa_simpleEcallBackFPC4cXyzUcRC8_GXColorRC8_GXColori */
void dPa_simpleEcallBack::set(const cXyz*, unsigned char, const _GXColor&, const _GXColor&, int) {
void dPa_simpleEcallBack::set(const cXyz*, u8, const _GXColor&, const _GXColor&, int) {
/* Nonmatching */
}
@@ -192,7 +192,7 @@ dPa_control_c::dPa_control_c() {
}
/* 8007CA28-8007CA30 .text getRM_ID__13dPa_control_cFUs */
void dPa_control_c::getRM_ID(unsigned short) {
void dPa_control_c::getRM_ID(u16) {
/* Nonmatching */
}
@@ -212,7 +212,7 @@ void dPa_control_c::createRoomScene(const void*) {
}
/* 8007CE50-8007CF20 .text readScene__13dPa_control_cFUcPP21mDoDvdThd_toMainRam_c */
bool dPa_control_c::readScene(unsigned char, mDoDvdThd_toMainRam_c**) {
bool dPa_control_c::readScene(u8, mDoDvdThd_toMainRam_c**) {
/* Nonmatching */
}
@@ -247,17 +247,17 @@ void dPa_control_c::calcMenu() {
}
/* 8007D16C-8007D1DC .text draw__13dPa_control_cFP11JPADrawInfoUc */
void dPa_control_c::draw(JPADrawInfo*, unsigned char) {
void dPa_control_c::draw(JPADrawInfo*, u8) {
/* Nonmatching */
}
/* 8007D1DC-8007D378 .text set__13dPa_control_cFUcUsPC4cXyzPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyz */
JPABaseEmitter* dPa_control_c::set(unsigned char, unsigned short, const cXyz*, const csXyz*, const cXyz*, unsigned char, dPa_levelEcallBack*, signed char, const _GXColor*, const _GXColor*, const cXyz*) {
JPABaseEmitter* dPa_control_c::set(u8, u16, const cXyz*, const csXyz*, const cXyz*, u8, dPa_levelEcallBack*, s8, const _GXColor*, const _GXColor*, const cXyz*) {
/* Nonmatching */
}
/* 8007D378-8007D414 .text setBombSmoke__13dPa_control_cFUsPC4cXyzPC5csXyzPC4cXyzUc */
JPABaseEmitter* dPa_control_c::setBombSmoke(unsigned short, const cXyz*, const csXyz*, const cXyz*, unsigned char) {
JPABaseEmitter* dPa_control_c::setBombSmoke(u16, const cXyz*, const csXyz*, const cXyz*, u8) {
/* Nonmatching */
}
@@ -277,27 +277,27 @@ void dPa_control_c::checkAtrCodeEffect(int) {
}
/* 8007DAA8-8007DB34 .text setNormalStripes__13dPa_control_cFUsPC4cXyzPC5csXyzPC4cXyzUcUs */
void dPa_control_c::setNormalStripes(unsigned short, const cXyz*, const csXyz*, const cXyz*, unsigned char, unsigned short) {
void dPa_control_c::setNormalStripes(u16, const cXyz*, const csXyz*, const cXyz*, u8, u16) {
/* Nonmatching */
}
/* 8007DB34-8007DBC4 .text newSimple__13dPa_control_cFUsUc */
void dPa_control_c::newSimple(unsigned short, unsigned char) {
void dPa_control_c::newSimple(u16, u8) {
/* Nonmatching */
}
/* 8007DBC4-8007DC30 .text setSimple__13dPa_control_cFUsPC4cXyzUcRC8_GXColorRC8_GXColori */
void dPa_control_c::setSimple(unsigned short, const cXyz*, unsigned char, const _GXColor&, const _GXColor&, int) {
void dPa_control_c::setSimple(u16, const cXyz*, u8, const _GXColor&, const _GXColor&, int) {
/* Nonmatching */
}
/* 8007DC30-8007DC6C .text getSimple__13dPa_control_cFUs */
void dPa_control_c::getSimple(unsigned short) {
void dPa_control_c::getSimple(u16) {
/* Nonmatching */
}
/* 8007DC6C-8007DC94 .text setup__19dPa_rippleEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_rippleEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_rippleEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -317,7 +317,7 @@ void dPa_rippleEcallBack::draw(JPABaseEmitter*) {
}
/* 8007DDA8-8007DDB4 .text setup__25dPa_singleRippleEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_singleRippleEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_singleRippleEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -342,7 +342,7 @@ void dPa_ripplePcallBack::draw(JPABaseEmitter*, JPABaseParticle*) {
}
/* 8007E254-8007E288 .text setup__17dPa_waveEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_waveEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_waveEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -362,7 +362,7 @@ void dPa_waveEcallBack::draw(JPABaseEmitter*) {
}
/* 8007E804-8007E81C .text setup__19dPa_splashEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_splashEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_splashEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -377,7 +377,7 @@ void dPa_splashEcallBack::execute(JPABaseEmitter*) {
}
/* 8007E9B8-8007E9D4 .text setup__22dPa_cutTurnEcallBack_cFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_cutTurnEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_cutTurnEcallBack_c::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -412,7 +412,7 @@ void dPa_trackEcallBack::getMaxWaterY(JGeometry::TVec3<float>*) {
}
/* 8007F1A8-8007F1C0 .text setup__18dPa_trackEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_trackEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
void dPa_trackEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
/* Nonmatching */
}
@@ -432,26 +432,22 @@ void dPa_trackEcallBack::draw(JPABaseEmitter*) {
}
/* 8007F704-8007F708 .text setup__22dPa_bombSmokeEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_bombSmokeEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
/* Nonmatching */
void dPa_bombSmokeEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
}
/* 8007F7D0-8007F7D4 .text setup__20dPa_stripesEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_stripesEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
/* Nonmatching */
void dPa_stripesEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
}
/* 8007FAE8-8007FAEC .text setup__22dPa_selectTexEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_selectTexEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
/* Nonmatching */
void dPa_selectTexEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
}
/* 8007FF78-8007FFA8 .text draw__21dPa_setColorEcallBackFP14JPABaseEmitter */
void dPa_setColorEcallBack::draw(JPABaseEmitter*) {
/* Nonmatching */
GXSetTevColor(GX_TEVREG1, mColor);
}
/* 8007FFA8-8007FFAC .text setup__21dPa_setColorEcallBackFP14JPABaseEmitterPC4cXyzPC5csXyzSc */
void dPa_setColorEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {
/* Nonmatching */
void dPa_setColorEcallBack::setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8) {
}