J2DGraph debug (#3028)

* J2DGraph debug

* J2DGraph debug
This commit is contained in:
Jcw87
2026-01-11 19:00:04 -08:00
committed by GitHub
parent 6e76f12dd3
commit 2dd7e2ea62
27 changed files with 1200 additions and 931 deletions
+2 -2
View File
@@ -14118,8 +14118,8 @@ getVisibility__20J2DAnmVisibilityFullCFUsPUc = .text:0x8030C048; // type:functio
getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10 = .text:0x8030C0F0; // type:function size:0x2C4 scope:global align:4
getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor = .text:0x8030C3B4; // type:function size:0x2C4 scope:global align:4
searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen = .text:0x8030C678; // type:function size:0x104 scope:global align:4
J2DGetKeyFrameInterpolations__FfP18J3DAnmKeyTableBasePs = .text:0x8030C77C; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolationf__FfP18J3DAnmKeyTableBasePf = .text:0x8030C9B0; // type:function size:0x17C scope:global align:4
J2DGetKeyFrameInterpolation<s>__FfP18J3DAnmKeyTableBasePs = .text:0x8030C77C; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolation<f>__FfP18J3DAnmKeyTableBasePf = .text:0x8030C9B0; // type:function size:0x17C scope:global align:4
__ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030CB2C; // type:function size:0x10 scope:global align:4
__dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030CB3C; // type:function size:0x54 scope:global align:4
__dt__16J2DAnmTexPatternFv = .text:0x8030CB90; // type:function size:0x90 scope:weak align:4
+2 -2
View File
@@ -14124,8 +14124,8 @@ getVisibility__20J2DAnmVisibilityFullCFUsPUc = .text:0x8030E4E4; // type:functio
getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10 = .text:0x8030E58C; // type:function size:0x2C4 scope:global align:4
getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor = .text:0x8030E850; // type:function size:0x2C4 scope:global align:4
searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen = .text:0x8030EB14; // type:function size:0x104 scope:global align:4
J2DGetKeyFrameInterpolations__FfP18J3DAnmKeyTableBasePs = .text:0x8030EC18; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolationf__FfP18J3DAnmKeyTableBasePf = .text:0x8030EE4C; // type:function size:0x17C scope:global align:4
J2DGetKeyFrameInterpolation<s>__FfP18J3DAnmKeyTableBasePs = .text:0x8030EC18; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolation<f>__FfP18J3DAnmKeyTableBasePf = .text:0x8030EE4C; // type:function size:0x17C scope:global align:4
__ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030EFC8; // type:function size:0x10 scope:global align:4
__dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030EFD8; // type:function size:0x54 scope:global align:4
__dt__16J2DAnmTexPatternFv = .text:0x8030F02C; // type:function size:0x90 scope:weak align:4
+2 -2
View File
@@ -14123,8 +14123,8 @@ getVisibility__20J2DAnmVisibilityFullCFUsPUc = .text:0x8030CE48; // type:functio
getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10 = .text:0x8030CEF0; // type:function size:0x2C4 scope:global align:4
getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor = .text:0x8030D1B4; // type:function size:0x2C4 scope:global align:4
searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen = .text:0x8030D478; // type:function size:0x104 scope:global align:4
J2DGetKeyFrameInterpolations__FfP18J3DAnmKeyTableBasePs = .text:0x8030D57C; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolationf__FfP18J3DAnmKeyTableBasePf = .text:0x8030D7B0; // type:function size:0x17C scope:global align:4
J2DGetKeyFrameInterpolation<s>__FfP18J3DAnmKeyTableBasePs = .text:0x8030D57C; // type:function size:0x234 scope:global align:4
J2DGetKeyFrameInterpolation<f>__FfP18J3DAnmKeyTableBasePf = .text:0x8030D7B0; // type:function size:0x17C scope:global align:4
__ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030D92C; // type:function size:0x10 scope:global align:4
__dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv = .text:0x8030D93C; // type:function size:0x54 scope:global align:4
__dt__16J2DAnmTexPatternFv = .text:0x8030D990; // type:function size:0x90 scope:weak align:4
+62 -65
View File
@@ -27,9 +27,13 @@ enum J2DAnmKind {
class J2DAnmBase {
public:
J2DAnmBase() {
mFrame = 0;
mFrame = 0.0f;
mFrameMax = 0;
}
J2DAnmBase(s16 frameMax) {
mFrame = 0.0f;
mFrameMax = frameMax;
}
virtual ~J2DAnmBase() {}
virtual void searchUpdateMaterialID(J2DScreen*) {}
@@ -54,10 +58,10 @@ class J2DAnmVtxColor : public J2DAnmBase {
public:
J2DAnmVtxColor() {
mKind = KIND_VTX_COLOR;
for (s32 i = 0; i < ARRAY_SIZEU(mAnmTableNum); i++) {
for (int i = 0; i < ARRAY_SIZE(mAnmTableNum); i++) {
mAnmTableNum[i] = NULL;
}
for (s32 i = 0; i < ARRAY_SIZEU(mVtxColorIndexData); i++) {
for (int i = 0; i < ARRAY_SIZE(mVtxColorIndexData); i++) {
mVtxColorIndexData[i] = NULL;
}
}
@@ -92,7 +96,7 @@ struct J3DTextureSRTInfo;
class J2DAnmVtxColorKey : public J2DAnmVtxColor {
public:
J2DAnmVtxColorKey() {
for (s32 i = 0; i < ARRAY_SIZEU(mInfoTable); i++) {
for (int i = 0; i < ARRAY_SIZE(mInfoTable); i++) {
mInfoTable[i] = NULL;
}
}
@@ -113,7 +117,7 @@ public:
class J2DAnmVtxColorFull : public J2DAnmVtxColor {
public:
J2DAnmVtxColorFull() {
for (s32 i = 0; i < ARRAY_SIZEU(mInfoTable); i++) {
for (int i = 0; i < ARRAY_SIZE(mInfoTable); i++) {
mInfoTable[i] = NULL;
}
}
@@ -155,7 +159,7 @@ public:
*/
class J2DAnmTransform : public J2DAnmBase {
public:
J2DAnmTransform(f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) {
J2DAnmTransform(s16 frameMax, f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) : J2DAnmBase(frameMax) {
mScaleValues = pScaleValues;
mRotationValues = pRotationValues;
mTranslateValues = pTranslateValues;
@@ -175,18 +179,18 @@ public:
*/
class J2DAnmTransformKey : public J2DAnmTransform {
public:
J2DAnmTransformKey() : J2DAnmTransform(NULL, NULL, NULL) {
J2DAnmTransformKey() : J2DAnmTransform(0, NULL, NULL, NULL) {
field_0x24 = 0;
mInfoTable = NULL;
}
virtual ~J2DAnmTransformKey() {}
virtual void getTransform(u16 p1, J3DTransformInfo* pInfo) const {
this->calcTransform(getFrame(), p1, pInfo);
this->calcTransform(mFrame, p1, pInfo);
}
virtual void calcTransform(f32, u16, J3DTransformInfo*) const;
/* 0x1C */ u8 field_0x1c[6];
/* 0x22 */ s16 field_0x22;
/* 0x22 */ u16 field_0x22;
/* 0x24 */ u32 field_0x24;
/* 0x28 */ J3DAnmTransformKeyTable* mInfoTable;
};
@@ -197,7 +201,7 @@ public:
*/
class J2DAnmTransformFull : public J2DAnmTransform {
public:
J2DAnmTransformFull() : J2DAnmTransform(NULL, NULL, NULL) { mTableInfo = NULL; }
J2DAnmTransformFull() : J2DAnmTransform(0, NULL, NULL, NULL) { mTableInfo = NULL; }
virtual ~J2DAnmTransformFull() {}
virtual void getTransform(u16, J3DTransformInfo*) const;
@@ -214,21 +218,13 @@ class J2DAnmTextureSRTKey : public J2DAnmBase {
public:
J2DAnmTextureSRTKey() {
field_0x10 = 0;
field_0x1e = 0;
field_0x1c = 0;
field_0x1a = 0;
mUpdateMaterialNum = 0;
mUpdateMaterialNum = field_0x1a = field_0x1c = field_0x1e = 0;
mInfoTable = NULL;
mTranslationValues = NULL;
mScaleValues = NULL;
mScaleValues = mTranslationValues = NULL;
mRotationValues = NULL;
field_0x4c = 0;
field_0x4a = 0;
field_0x48 = 0;
field_0x4e = 0;
field_0x4e = field_0x48 = field_0x4a = field_0x4c = 0;
field_0x5c = NULL;
field_0x58 = NULL;
field_0x50 = NULL;
field_0x50 = field_0x58 = NULL;
field_0x54 = NULL;
field_0x7c = 0;
mKind = KIND_TEXTURE_SRT;
@@ -238,9 +234,15 @@ public:
virtual ~J2DAnmTextureSRTKey() {}
virtual void searchUpdateMaterialID(J2DScreen*);
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum / 3; }
u16 getUpdateMaterialID(u16 i) const { return mUpdateMaterialID[i]; }
u8 getUpdateTexMtxID(u16 i) const { return mUpdateTexMtxID[i]; }
void getTransform(u16 param_1, J3DTextureSRTInfo* param_2) {
u16 getUpdateMaterialID(u16 i) const {
J3D_PANIC(514, i < mUpdateMaterialNum / 3 && i >= 0, "Error : range over.");
return mUpdateMaterialID[i];
}
u8 getUpdateTexMtxID(u16 i) const {
J3D_PANIC(513, i < mUpdateMaterialNum / 3 && i >= 0, "Error : range over.");
return mUpdateTexMtxID[i];
}
void getTransform(u16 param_1, J3DTextureSRTInfo* param_2) const {
calcTransform(mFrame, param_1, param_2);
}
@@ -279,8 +281,13 @@ public:
class J2DAnmTexPattern : public J2DAnmBase {
public:
struct J2DAnmTexPatternTIMGPointer {
J2DAnmTexPatternTIMGPointer();
~J2DAnmTexPatternTIMGPointer();
J2DAnmTexPatternTIMGPointer() {
mRes = NULL;
mPalette = NULL;
}
~J2DAnmTexPatternTIMGPointer() {
delete mPalette;
}
/* 0x0 */ ResTIMG* mRes;
/* 0x4 */ JUTPalette* mPalette;
@@ -302,7 +309,10 @@ public:
virtual ~J2DAnmTexPattern() { delete[] mTIMGPtrArray; }
virtual void searchUpdateMaterialID(J2DScreen*);
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
u16 getUpdateMaterialID(u16 i) const { return mUpdateMaterialID[i]; }
u16 getUpdateMaterialID(u16 i) const {
J3D_PANIC(619, i < mUpdateMaterialNum, "Error : range over.");
return mUpdateMaterialID[i];
}
J3DAnmTexPatternFullTable* getAnmTable() const { return mAnmTable; }
/* 0x10 */ u16* mValues;
@@ -321,39 +331,31 @@ public:
class J2DAnmTevRegKey : public J2DAnmBase {
public:
J2DAnmTevRegKey() {
mKRegUpdateMaterialNum = 0;
mCRegUpdateMaterialNum = 0;
field_0x1a = 0;
field_0x18 = 0;
field_0x16 = 0;
field_0x14 = 0;
field_0x22 = 0;
field_0x20 = 0;
field_0x1e = 0;
field_0x1c = 0;
mKRegUpdateMaterialID = NULL;
mCRegUpdateMaterialID = NULL;
mCAValues = NULL;
mCBValues = NULL;
mCGValues = NULL;
mCRValues = NULL;
mKAValues = NULL;
mKBValues = NULL;
mKGValues = NULL;
mKRValues = NULL;
mCRegUpdateMaterialNum = mKRegUpdateMaterialNum = 0;
field_0x14 = field_0x16 = field_0x18 = field_0x1a = 0;
field_0x1c = field_0x1e = field_0x20 = field_0x22 = 0;
mCRegUpdateMaterialID = mKRegUpdateMaterialID = NULL;
mCRValues = mCGValues = mCBValues = mCAValues = NULL;
mKRValues = mKGValues = mKBValues = mKAValues = NULL;
mKind = KIND_TEV_REG;
}
void getTevColorReg(u16, _GXColorS10*) const;
void getTevKonstReg(u16, _GXColor*) const;
void getTevColorReg(u16, GXColorS10*) const;
void getTevKonstReg(u16, GXColor*) const;
virtual ~J2DAnmTevRegKey() {}
virtual void searchUpdateMaterialID(J2DScreen* pScreen);
u16 getCRegUpdateMaterialNum() const { return mCRegUpdateMaterialNum; }
u16 getCRegUpdateMaterialID(u16 i) const { return mCRegUpdateMaterialID[i]; }
u16 getCRegUpdateMaterialID(u16 i) const {
J3D_PANIC(770, i < mCRegUpdateMaterialNum, "Error : range over.");
return mCRegUpdateMaterialID[i];
}
u16 getKRegUpdateMaterialNum() const { return mKRegUpdateMaterialNum; }
u16 getKRegUpdateMaterialID(u16 i) const { return mKRegUpdateMaterialID[i]; }
u16 getKRegUpdateMaterialID(u16 i) const {
J3D_PANIC(778, i < mKRegUpdateMaterialNum, "Error : range over.");
return mKRegUpdateMaterialID[i];
}
J3DAnmCRegKeyTable* getAnmCRegKeyTable() const { return mAnmCRegKeyTable; }
J3DAnmKRegKeyTable* getAnmKRegKeyTable() const { return mAnmKRegKeyTable; }
@@ -391,10 +393,7 @@ public:
class J2DAnmColor : public J2DAnmBase {
public:
J2DAnmColor() {
field_0x16 = 0;
field_0x14 = 0;
field_0x12 = 0;
field_0x10 = 0;
field_0x10 = field_0x12 = field_0x14 = field_0x16 = 0;
mUpdateMaterialNum = 0;
mUpdateMaterialID = NULL;
mKind = KIND_COLOR;
@@ -403,7 +402,10 @@ public:
virtual void searchUpdateMaterialID(J2DScreen*);
virtual void getColor(u16, _GXColor*) const {}
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
u16 getUpdateMaterialID(u16 i) const { return mUpdateMaterialID[i]; }
u16 getUpdateMaterialID(u16 i) const {
J3D_PANIC(224, i < mUpdateMaterialNum, "Error : range over.");
return mUpdateMaterialID[i];
}
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
@@ -475,17 +477,12 @@ public:
/* 0x40 */ J3DAnmColorFullTable* mInfoTable;
};
template <typename T>
inline f32 J2DHermiteInterpolation(f32, T*, T*, T*, T*, T*, T*);
template <>
inline f32 J2DHermiteInterpolation<f32>(f32 f1, f32* f2, f32* f3, f32* f4, f32* f5, f32* f6,
f32* f7) {
inline f32 J2DHermiteInterpolation(f32 f1, const f32* f2, const f32* f3, const f32* f4, const f32* f5, const f32* f6,
const f32* f7) {
return JMAHermiteInterpolation(f1, *f2, *f3, *f4, *f5, *f6, *f7);
}
template <>
inline f32 J2DHermiteInterpolation<s16>(__REGISTER f32 pp1, __REGISTER s16* pp2, __REGISTER s16* pp3,
inline f32 J2DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16* pp2, __REGISTER s16* pp3,
__REGISTER s16* pp4, __REGISTER s16* pp5, __REGISTER s16* pp6,
__REGISTER s16* pp7) {
#ifdef __MWERKS__
@@ -49,6 +49,8 @@ public:
virtual s32 getGrafType() const { return 0; }
virtual void setLookat() {}
JGeometry::TBox2<f32>* getBounds() { return &mBounds; }
public:
/* 0x04 */ JGeometry::TBox2<f32> mBounds;
/* 0x14 */ JGeometry::TBox2<f32> mScissorBounds;
+1 -1
View File
@@ -13,7 +13,7 @@ struct J2DResReference {
/* 0x00 */ u16 mCount;
/* 0x02 */ u16 mOffsets[1];
s8* getResReference(u16) const;
char* getResReference(u16) const;
char* getName(u16) const;
};
File diff suppressed because it is too large Load Diff
@@ -133,7 +133,7 @@ public:
J2DBlend newBlend(int) const;
u8 newDither(int) const;
u32 getMaterialMode(int idx) const {
u8 getMaterialMode(int idx) const {
return field_0x4[field_0x8[idx]].field_0x0;
}
+1
View File
@@ -22,6 +22,7 @@ public:
f32 getWidthPower() { return mBounds.getWidth() / mOrtho.getWidth(); }
f32 getHeightPower() { return mBounds.getHeight() / mOrtho.getHeight(); }
const JGeometry::TBox2<f32>* getOrtho() const { return &mOrtho; }
void setOrtho(f32 x, f32 y, f32 width, f32 height, f32 far, f32 near) {
JGeometry::TBox2<f32> ortho(x, y, x + width, y + height);
setOrtho(ortho, far, near);
+1
View File
@@ -174,6 +174,7 @@ public:
void show() { mVisible = true; }
void hide() { mVisible = false; }
bool isInfluencedAlpha() const { return mIsInfluencedAlpha; }
bool isConnectParent() const { return mConnected; }
u64 getUserInfo() const { return mUserInfoTag; }
+4
View File
@@ -17,6 +17,7 @@ enum J2DMirror {
};
enum J2DBinding {
/* 0 */ J2DBind_None = 0,
/* 1 */ J2DBind_Bottom = (1 << 0),
/* 2 */ J2DBind_Top = (1 << 1),
/* 4 */ J2DBind_Right = (1 << 2),
@@ -189,6 +190,9 @@ public:
void initinfo();
void setTevMode();
static void swap(f32&, f32&);
J2DBinding getBinding() const;
void setMirror(J2DMirror);
bool isTumble() const;
void setBlendKonstColor();
void setBlendKonstAlpha();
void getNewColor(JUtility::TColor*);
+8 -1
View File
@@ -103,6 +103,7 @@ public:
mInfo = info;
return *this;
}
void setIndTexOrderInfo(const J2DIndTexOrderInfo& info) { mInfo = info; }
void load(u8);
private:
@@ -147,6 +148,7 @@ public:
mIndTexMtxInfo = info;
return *this;
}
void setIndTexMtxInfo(const J2DIndTexMtxInfo& info) { mIndTexMtxInfo = info; }
void load(u8);
void load(u32);
void calc();
@@ -191,6 +193,7 @@ public:
mInfo = info;
return *this;
}
void setIndTexCoordScaleInfo(const J2DIndTexCoordScaleInfo& info) { mInfo = info; }
void load(u8);
private:
@@ -426,7 +429,7 @@ public:
}
void setTexSel(u8 param_0) {
field_0x7 = (field_0x7 & ~0x0c) | (param_0 * 4);
field_0x7 = (field_0x7 & ~0x0c) | (param_0 << 2);
}
void setRasSel(u8 param_0) {
@@ -632,6 +635,10 @@ public:
u8 getMatSrc() const { return mColorChan & 1; }
void operator=(const J2DColorChan& other) {
mColorChan = other.mColorChan;
}
private:
/* 0x0 */ u16 mColorChan;
};
+24 -10
View File
@@ -447,6 +447,14 @@ struct TVec2 {
y += other.y;
}
bool equals(const TVec2<T>& other) const {
bool result = false;
if (this->x == other.x && this->y == other.y) {
result = true;
}
return result;
}
bool isAbove(const TVec2<T>& other) const {
return (x >= other.x) && (y >= other.y) ? true : false;
}
@@ -463,6 +471,10 @@ struct TVec2 {
return TUtil<f32>::sqrt(squared());
}
bool operator==(const TVec2<T>& other) const {
return equals(other);
}
T x;
T y;
};
@@ -497,6 +509,18 @@ template<> struct TBox<TVec2<f32> > {
return isValid();
}
void absolute() {
if (this->isValid()) {
return;
}
TBox<TVec2<f32> > box(*this);
this->i.setMin(box.i);
this->i.setMin(box.f);
this->f.setMax(box.i);
this->f.setMax(box.f);
}
TVec2<f32> i, f;
};
@@ -509,16 +533,6 @@ struct TBox2 : public TBox<TVec2<T> > {
}
TBox2(f32 x0, f32 y0, f32 x1, f32 y1) { set(x0, y0, x1, y1); }
void absolute() {
if (!this->isValid()) {
TBox2<T> box(*this);
this->i.setMin(box.i);
this->i.setMin(box.f);
this->f.setMax(box.i);
this->f.setMax(box.f);
}
}
void set(const TBox<TVec2<T> >& other) { set(other.i, other.f); }
void set(const TVec2<f32>& i, const TVec2<f32>& f) { this->i.set(i), this->f.set(f); }
void set(f32 x0, f32 y0, f32 x1, f32 y1) { this->i.set(x0, y0); this->f.set(x1, y1); }
@@ -89,6 +89,10 @@ public:
return *this;
}
s32 read(bool& val) {
return read(&val, sizeof(bool));
}
s32 read(u8& val) {
return read(&val, sizeof(u8));
}
File diff suppressed because it is too large Load Diff
+67 -12
View File
@@ -9,8 +9,9 @@
J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data;
J3D_PANIC(38, p_data, "Error : null pointer.");
if (hdr == NULL) {
if (p_data == NULL) {
return NULL;
} else if (hdr->mMagic == 'J3D1') {
switch (hdr->mType) {
@@ -27,6 +28,7 @@ J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
break;
}
case 'blk1':
OS_REPORT("J2DAnmLoader: this is a J3D Binary that cannot use J2D.\n");
return NULL;
case 'btk1': {
J2DAnmKeyLoader_v15 loader;
@@ -70,24 +72,32 @@ J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
break;
}
case 'bla1':
OS_REPORT("J2DAnmLoader: this is a J3D Binary that cannot use J2D.\n");
return NULL;
case 'bxa1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmVtxColorFull();
return (J2DAnmBase*)loader.load(p_data);
}
default:
OS_REPORT("J2DAnmLoader: this is not a J3D Binary.\n");
return NULL;
}
return NULL;
} else {
return NULL;
}
}
static void dummy() {
OS_REPORT("J3DAnmLoader: this is not a J3D Binary.\n");
}
J2DAnmKeyLoader_v15::J2DAnmKeyLoader_v15() {}
J2DAnmKeyLoader_v15::~J2DAnmKeyLoader_v15() {}
void* J2DAnmKeyLoader_v15::load(void const* p_data) {
J3D_PANIC(317, p_data, "Error : null pointer.");
const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data;
const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst;
@@ -108,6 +118,9 @@ void* J2DAnmKeyLoader_v15::load(void const* p_data) {
case 'TRK1':
readAnmTevReg((J3DAnmTevRegKeyData*)dataPtr);
break;
default:
OS_REPORT("Unknown data block\n");
break;
}
dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset);
}
@@ -116,6 +129,7 @@ void* J2DAnmKeyLoader_v15::load(void const* p_data) {
}
void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) {
J3D_PANIC(355, p_data, "Error : null pointer.");
const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data;
const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst;
@@ -147,17 +161,23 @@ void J2DAnmKeyLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) {
setAnmVtxColor((J2DAnmVtxColorKey*)p_anm, (J3DAnmVtxColorKeyData*)dataPtr);
}
break;
default:
OS_REPORT("Unknown data block\n");
break;
}
dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset);
}
}
void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* p_data) {
setAnmTransform((J2DAnmTransformKey*)mpResource, p_data);
J2DAnmTransformKey* p_anm = (J2DAnmTransformKey*)mpResource;
setAnmTransform(p_anm, p_data);
}
void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm,
J3DAnmTransformKeyData const* p_data) {
J3D_PANIC(439, p_anm, "Error : null pointer.");
J3D_PANIC(440, p_data, "Error : null pointer.");
p_anm->field_0x22 = p_data->field_0xc;
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
@@ -172,11 +192,14 @@ void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm,
}
void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* p_data) {
setAnmTextureSRT((J2DAnmTextureSRTKey*)mpResource, p_data);
J2DAnmTextureSRTKey* p_anm = (J2DAnmTextureSRTKey*)mpResource;
setAnmTextureSRT(p_anm, p_data);
}
void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
J3DAnmTextureSRTKeyData const* p_data) {
J3D_PANIC(480, p_anm, "Error : null pointer.");
J3D_PANIC(481, p_data, "Error : null pointer.");
p_anm->mUpdateMaterialNum = p_data->field_0xc;
p_anm->mFrameMax = p_data->field_0xa;
p_anm->field_0x4 = p_data->field_0x8;
@@ -226,10 +249,13 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
}
void J2DAnmKeyLoader_v15::readAnmColor(J3DAnmColorKeyData const* p_data) {
setAnmColor((J2DAnmColorKey*)mpResource, p_data);
J2DAnmColorKey* p_anm = (J2DAnmColorKey*)mpResource;
setAnmColor(p_anm, p_data);
}
void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* p_anm, J3DAnmColorKeyData const* p_data) {
J3D_PANIC(573, p_anm, "Error : null pointer.");
J3D_PANIC(574, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -251,11 +277,14 @@ void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* p_anm, J3DAnmColorKeyData
}
void J2DAnmKeyLoader_v15::readAnmVtxColor(J3DAnmVtxColorKeyData const* p_data) {
setAnmVtxColor((J2DAnmVtxColorKey*)mpResource, p_data);
J2DAnmVtxColorKey* p_anm = (J2DAnmVtxColorKey*)mpResource;
setAnmVtxColor(p_anm, p_data);
}
void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* p_anm,
J3DAnmVtxColorKeyData const* p_data) {
J3D_PANIC(628, p_anm, "Error : null pointer.");
J3D_PANIC(629, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -280,6 +309,7 @@ void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* p_anm,
}
void* J2DAnmFullLoader_v15::load(void const* p_data) {
J3D_PANIC(670, p_data, "Error : null pointer.");
const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data;
const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst;
@@ -300,6 +330,9 @@ void* J2DAnmFullLoader_v15::load(void const* p_data) {
case 'VCF1':
readAnmVtxColor((J3DAnmVtxColorFullData*)dataPtr);
break;
default:
OS_REPORT("Unknown data block\n");
break;
}
dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset);
}
@@ -307,6 +340,7 @@ void* J2DAnmFullLoader_v15::load(void const* p_data) {
}
void J2DAnmFullLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) {
J3D_PANIC(710, p_data, "Error : null pointer.");
const J3DAnmDataHeader* hdr = (const J3DAnmDataHeader*)p_data;
const J3DAnmDataBlockHeader* dataPtr = &hdr->mFirst;
@@ -334,6 +368,9 @@ void J2DAnmFullLoader_v15::setResource(J2DAnmBase* p_anm, void const* p_data) {
if (p_anm->getKind() == KIND_VTX_COLOR)
setAnmVtxColor((J2DAnmVtxColorFull*)p_anm, (J3DAnmVtxColorFullData*)dataPtr);
break;
default:
OS_REPORT("Unknown data block\n");
break;
}
dataPtr = (J3DAnmDataBlockHeader*)((s32)dataPtr + dataPtr->mNextOffset);
}
@@ -344,11 +381,14 @@ J2DAnmFullLoader_v15::J2DAnmFullLoader_v15() {}
J2DAnmFullLoader_v15::~J2DAnmFullLoader_v15() {}
void J2DAnmFullLoader_v15::readAnmTransform(J3DAnmTransformFullData const* p_data) {
setAnmTransform((J2DAnmTransformFull*)mpResource, p_data);
J2DAnmTransformFull* p_anm = (J2DAnmTransformFull*)mpResource;
setAnmTransform(p_anm, p_data);
}
void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* p_anm,
J3DAnmTransformFullData const* p_data) {
J3D_PANIC(813, p_anm, "Error : null pointer.");
J3D_PANIC(814, p_data, "Error : null pointer.");
p_anm->field_0x22 = p_data->field_0xc;
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
@@ -361,10 +401,13 @@ void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* p_anm,
}
void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* p_data) {
setAnmColor((J2DAnmColorFull*)mpResource, p_data);
J2DAnmColorFull* p_anm = (J2DAnmColorFull*)mpResource;
setAnmColor(p_anm, p_data);
}
void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullData const* p_data) {
J3D_PANIC(857, p_anm, "Error : null pointer.");
J3D_PANIC(858, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -382,11 +425,14 @@ void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullDa
}
void J2DAnmFullLoader_v15::readAnmTexPattern(J3DAnmTexPatternFullData const* p_data) {
setAnmTexPattern((J2DAnmTexPattern*)mpResource, p_data);
J2DAnmTexPattern* p_anm = (J2DAnmTexPattern*)mpResource;
setAnmTexPattern(p_anm, p_data);
}
void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* p_anm,
J3DAnmTexPatternFullData const* p_data) {
J3D_PANIC(906, p_anm, "Error : null pointer.");
J3D_PANIC(907, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -402,10 +448,13 @@ void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* p_anm,
}
void J2DAnmKeyLoader_v15::readAnmTevReg(J3DAnmTevRegKeyData const* p_data) {
setAnmTevReg((J2DAnmTevRegKey*)mpResource, p_data);
J2DAnmTevRegKey* p_anm = (J2DAnmTevRegKey*)mpResource;
setAnmTevReg(p_anm, p_data);
}
void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* p_anm, J3DAnmTevRegKeyData const* p_data) {
J3D_PANIC(955, p_anm, "Error : null pointer.");
J3D_PANIC(956, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -442,11 +491,14 @@ void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* p_anm, J3DAnmTevRegKeyDa
}
void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* p_data) {
setAnmVisibility((J2DAnmVisibilityFull*)mpResource, p_data);
J2DAnmVisibilityFull* p_anm = (J2DAnmVisibilityFull*)mpResource;
setAnmVisibility(p_anm, p_data);
}
void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* p_anm,
J3DAnmVisibilityFullData const* p_data) {
J3D_PANIC(1025, p_anm, "Error : null pointer.");
J3D_PANIC(1026, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
@@ -458,11 +510,14 @@ void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* p_anm,
}
void J2DAnmFullLoader_v15::readAnmVtxColor(J3DAnmVtxColorFullData const* p_data) {
setAnmVtxColor((J2DAnmVtxColorFull*)mpResource, p_data);
J2DAnmVtxColorFull* p_anm = (J2DAnmVtxColorFull*)mpResource;
setAnmVtxColor(p_anm, p_data);
}
void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* p_anm,
J3DAnmVtxColorFullData const* p_data) {
J3D_PANIC(1070, p_anm, "Error : null pointer.");
J3D_PANIC(1071, p_data, "Error : null pointer.");
p_anm->mFrameMax = p_data->mFrameMax;
p_anm->field_0x4 = p_data->field_0x8;
p_anm->mFrame = 0;
+11 -10
View File
@@ -5,7 +5,8 @@
#include <string>
void* J2DDataManage::get(char const* name) {
for (J2DataManageLink* link = mList; link != NULL; link = link->mNext) {
J2DataManageLink* link;
for (link = mList; link != NULL; link = link->mNext) {
if (strcmp(link->mName, name) == 0) {
return link->mData;
}
@@ -19,26 +20,26 @@ void* J2DDataManage::get(JSUInputStream* inputStream) {
if (nameLen == 0) {
return NULL;
} else {
char nameBuffer[257];
inputStream->read(&nameBuffer, nameLen);
nameBuffer[nameLen] = 0;
return this->get(nameBuffer);
}
char nameBuffer[257];
inputStream->read(&nameBuffer, nameLen);
nameBuffer[nameLen] = 0;
return this->get(nameBuffer);
}
s8* J2DResReference::getResReference(u16 idx) const {
char* J2DResReference::getResReference(u16 idx) const {
if (mCount <= idx || idx == 0xFFFF) {
return NULL;
} else {
return (((s8*)this) + mOffsets[idx]);
}
u16 offset = mOffsets[idx];
return ((char*)this) + offset;
}
char* J2DResReference::getName(u16 idx) const {
static char p_name[257];
s8* resRef = this->getResReference(idx);
char* resRef = (char*)this->getResReference(idx);
if (resRef == NULL) {
p_name[0] = 0;
+54 -47
View File
@@ -76,11 +76,13 @@ void J2DTexGenBlock::setTexMtx(u32 param_0, J2DTexMtx& param_1) {
void J2DTexGenBlock::getTexMtx(u32 param_0, J2DTexMtx& param_1) {
J3D_PANIC(123, param_0 < 8, "Error : range over.");
if (mTexMtx[param_0]) {
J2DTexMtxInfo& texMtxInfo = mTexMtx[param_0]->getTexMtxInfo();
param_1.setTexMtxInfo(texMtxInfo);
if (!mTexMtx[param_0]) {
return;
}
J2DTexMtxInfo& texMtxInfo = mTexMtx[param_0]->getTexMtxInfo();
param_1.setTexMtxInfo(texMtxInfo);
}
JUTTexture* J2DTevBlock::getTexture(u32) {
@@ -349,6 +351,7 @@ void J2DTevBlock1::shiftDeleteFlag(u8, bool) {
void J2DTevBlock1::setGX() {
loadTexture(GX_TEXMAP0, 0);
(void)bool(mFont);
GXSetTevOrder(GX_TEVSTAGE0, (GXTexCoordID)mTevOrder[0].getTexCoord(), (GXTexMapID)mTevOrder[0].getTexMap(), (GXChannelID)mTevOrder[0].getColor());
for (int i = 0; i < 4; i++) {
@@ -366,10 +369,10 @@ void J2DTevBlock1::setGX() {
GXTevAlphaArg(mTevStage[0].getAlphaD()));
GXSetTevColorOp(GX_TEVSTAGE0, GXTevOp(mTevStage[0].getCOp()),
GXTevBias(mTevStage[0].getCBias()), GXTevScale(mTevStage[0].getCScale()),
mTevStage[0].getCClamp(), GXTevRegID(mTevStage[0].getCReg()));
GXBool(mTevStage[0].getCClamp()), GXTevRegID(mTevStage[0].getCReg()));
GXSetTevAlphaOp(GX_TEVSTAGE0, (GXTevOp)mTevStage[0].getAOp(),
GXTevBias(mTevStage[0].getABias()), GXTevScale(mTevStage[0].getAScale()),
mTevStage[0].getAClamp(), GXTevRegID(mTevStage[0].getAReg()));
GXBool(mTevStage[0].getAClamp()), GXTevRegID(mTevStage[0].getAReg()));
GXSetTevKColorSel(GX_TEVSTAGE0, mTevKColorSel[0] != 0xff ? GXTevKColorSel(mTevKColorSel[0]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GX_TEVSTAGE0, mTevKAlphaSel[0] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[0]) : GX_TEV_KASEL_1);
for (int i = 0; i < 4; i++) {
@@ -483,28 +486,27 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
return false;
}
JUTTexture* tex;
u8 tlutid = 0;
if (p_timg->indexTexture && p_tlut == NULL) {
tex = mTexture[0];
if (tex != NULL && tex->getTexInfo() != NULL && tex->getTexInfo()->indexTexture) {
int tlutname = tex->getTlutName();
if (p_timg->indexTexture && p_tlut == NULL && mTexture[0] != NULL) {
const ResTIMG* timg = mTexture[0]->getTexInfo();
if (timg != NULL && timg->indexTexture) {
int tlutname = mTexture[0]->getTlutName();
if (tlutname == GX_TLUT0 || tlutname == GX_BIGTLUT0) {
tlutid = 1;
}
}
}
tex = mTexture[texNo];
if (tex == NULL) {
JUTTexture* newtex = new JUTTexture(p_timg, tlutid);
JUTTexture* tex;
if (mTexture[texNo] == NULL) {
tex = new JUTTexture(p_timg, tlutid);
if (newtex == NULL) {
if (tex == NULL) {
return false;
}
if (p_tlut != NULL) {
newtex->storeTIMG(p_timg, p_tlut);
tex->storeTIMG(p_timg, p_tlut);
}
if (param_0 == 0) {
@@ -512,10 +514,11 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
mPalette[1] = mPalette[0];
mTexNo[1] = mTexNo[0];
}
mTexture[param_0] = newtex;
mTexture[param_0] = tex;
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= (1 << param_0);
} else {
tex = mTexture[texNo];
if (p_tlut == NULL) {
tex->storeTIMG(p_timg, tlutid);
} else {
@@ -604,9 +607,8 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
const ResTIMG* timg = mTexture[idx]->getTexInfo();
if (timg != NULL && timg->indexTexture) {
int tlutname = mTexture[idx]->getTlutName();
u8 tlut_no = tlutname - (tlutname >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0);
if (tlut_no == 0) {
if (u8(tlutname - (tlutname >= GX_BIGTLUT0 ? GX_BIGTLUT0 : GX_TLUT0)) == 0) {
tlutid = 1;
}
}
@@ -763,7 +765,7 @@ void J2DTevBlock2::shiftDeleteFlag(u8 param_0, bool param_1) {
mUndeleteFlag = (mUndeleteFlag & ((1 << param_0) - 1)) | ((mUndeleteFlag & ~((1 << (param_0 + 1)) - 1)) >> 1);
}
mUndeleteFlag = (mUndeleteFlag | tmpFlags) & 0xFF;
mUndeleteFlag = u8(mUndeleteFlag | tmpFlags);
}
void J2DTevBlock2::setGX() {
@@ -771,6 +773,8 @@ void J2DTevBlock2::setGX() {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -791,10 +795,10 @@ void J2DTevBlock2::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -943,8 +947,9 @@ bool J2DTevBlock4::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -960,7 +965,7 @@ bool J2DTevBlock4::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1037,10 +1042,9 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 4; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -1213,13 +1217,14 @@ void J2DTevBlock4::shiftDeleteFlag(u8 param_0, bool param_1) {
mUndeleteFlag = (mUndeleteFlag & ((1 << param_0) - 1)) | ((mUndeleteFlag & ~((1 << (param_0 + 1)) - 1)) >> 1);
}
mUndeleteFlag |= tmpFlags;
mUndeleteFlag = u8(mUndeleteFlag | tmpFlags);
}
void J2DTevBlock4::setGX() {
for (int i = 0; i < 4; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -1238,10 +1243,10 @@ void J2DTevBlock4::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -1387,8 +1392,9 @@ bool J2DTevBlock8::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1404,7 +1410,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1459,7 +1465,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, JUTTexture* p_tex) {
delete mTexture[7];
}
mUndeleteFlag &= 0x7F;
mUndeleteFlag &= ~0x80;
}
for (u8 i = 7; i > param_0; i--) {
@@ -1481,10 +1487,9 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 8; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -1659,6 +1664,7 @@ void J2DTevBlock8::setGX() {
for (int i = 0; i < 8; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -1677,10 +1683,10 @@ void J2DTevBlock8::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -1826,8 +1832,9 @@ bool J2DTevBlock16::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette
}
}
}
JUTTexture* texture;
if (!mTexture[idx]) {
JUTTexture* texture = new JUTTexture(p_timg, local_43);
texture = new JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1843,7 +1850,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette
shiftDeleteFlag(param_0, true);
mUndeleteFlag |= 1 << param_0;
} else {
JUTTexture* texture = mTexture[idx];
texture = mTexture[idx];
if (!p_tlut) {
texture->storeTIMG(p_timg, local_43);
} else {
@@ -1898,7 +1905,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, JUTTexture* p_tex) {
delete mTexture[7];
}
mUndeleteFlag &= 0x7F;
mUndeleteFlag &= ~0x80;
}
for (u8 i = 7; i > param_0; i--) {
@@ -1920,10 +1927,9 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
return false;
}
u8 used_tlut;
u8 tlutid = 0;
if (p_timg != NULL && p_timg->indexTexture) {
used_tlut = 0;
u8 used_tlut = 0;
for (int i = 0; i < 8; i++) {
if (i != param_0 && mTexture[i] != NULL) {
const ResTIMG* timg = mTexture[i]->getTexInfo();
@@ -2098,6 +2104,7 @@ void J2DTevBlock16::setGX() {
for (int i = 0; i < 8; i++) {
loadTexture(GXTexMapID(i), i);
}
(void)bool(mFont);
for (int i = 0; i < mTevStageNum; i++) {
GXSetTevOrder(GXTevStageID(i), (GXTexCoordID)mTevOrder[i].getTexCoord(), (GXTexMapID)mTevOrder[i].getTexMap(), (GXChannelID)mTevOrder[i].getColor());
}
@@ -2116,10 +2123,10 @@ void J2DTevBlock16::setGX() {
GXTevAlphaArg(mTevStage[i].getAlphaD()));
GXSetTevColorOp(GXTevStageID(i), GXTevOp(mTevStage[i].getCOp()),
GXTevBias(mTevStage[i].getCBias()), GXTevScale(mTevStage[i].getCScale()),
mTevStage[i].getCClamp(), GXTevRegID(mTevStage[i].getCReg()));
GXBool(mTevStage[i].getCClamp()), GXTevRegID(mTevStage[i].getCReg()));
GXSetTevAlphaOp(GXTevStageID(i), (GXTevOp)mTevStage[i].getAOp(),
GXTevBias(mTevStage[i].getABias()), GXTevScale(mTevStage[i].getAScale()),
mTevStage[i].getAClamp(), GXTevRegID(mTevStage[i].getAReg()));
GXBool(mTevStage[i].getAClamp()), GXTevRegID(mTevStage[i].getAReg()));
GXSetTevKColorSel(GXTevStageID(i), mTevKColorSel[i] != 0xff ? GXTevKColorSel(mTevKColorSel[i]) : GX_TEV_KCSEL_1);
GXSetTevKAlphaSel(GXTevStageID(i), mTevKAlphaSel[i] != 0xff ? GXTevKAlphaSel(mTevKAlphaSel[i]) : GX_TEV_KASEL_1);
}
@@ -2149,13 +2156,13 @@ void J2DTevBlock16::loadTexture(GXTexMapID texmapID, u32 texIndex) {
void J2DIndBlockFull::initialize() {
mIndTexStageNum = 0;
for (int i = 0; i < 4; i++) {
mIndTexOrder[i] = j2dDefaultIndTexOrderNull;
mIndTexOrder[i].setIndTexOrderInfo(j2dDefaultIndTexOrderNull);
}
for (int i = 0; i < 3; i++) {
mIndTexMtx[i] = j2dDefaultIndTexMtxInfo;
mIndTexMtx[i].setIndTexMtxInfo(j2dDefaultIndTexMtxInfo);
}
for (int i = 0; i < 4; i++) {
mTexCoordScale[i] = j2dDefaultIndTexCoordScaleInfo;
mTexCoordScale[i].setIndTexCoordScaleInfo(j2dDefaultIndTexCoordScaleInfo);
}
}
@@ -2181,5 +2188,5 @@ void J2DPEBlock::initialize() {
void J2DPEBlock::setGX() {
GXSetAlphaCompare(GXCompare(mAlphaComp.getComp0()), mAlphaComp.getRef0(), GXAlphaOp(mAlphaComp.getOp()), GXCompare(mAlphaComp.getComp1()), mAlphaComp.getRef1());
GXSetBlendMode(GXBlendMode(mBlend.getType()), GXBlendFactor(mBlend.getSrcFactor()), GXBlendFactor(mBlend.getDstFactor()), GXLogicOp(mBlend.getOp()));
GXSetDither(mDither);
GXSetDither(GXBool(mDither));
}
+5 -15
View File
@@ -67,9 +67,7 @@ J2DTevBlock* J2DMaterial::createTevBlock(int block_type, bool noAlign) {
block = new (-4) J2DTevBlock16();
}
}
if (!block) {
OS_PANIC(101, "Error : allocate memory.");
}
ASSERTMSGLINE(101, block, "Error : allocate memory.");
return block;
}
@@ -90,9 +88,7 @@ J2DIndBlock* J2DMaterial::createIndBlock(int block_type, bool noAlign) {
block = new (-4) J2DIndBlockNull();
}
}
if (!block) {
OS_PANIC(133, "Error : allocate memory.");
}
ASSERTMSGLINE(133, block, "Error : allocate memory.");
return block;
}
@@ -148,9 +144,7 @@ void J2DMaterial::setAnimation(J2DAnmColor* anm) {
u16 index = getIndex();
for (u16 i = 0; i < matNum; i++) {
u16 matID = anm->getUpdateMaterialID(i);
if (index == matID) {
if (index == anm->getUpdateMaterialID(i)) {
mAnmPointer->mColorIds = i;
return;
}
@@ -219,9 +213,7 @@ void J2DMaterial::setAnimation(J2DAnmTevRegKey* anm) {
u16 index = getIndex();
for (u16 i = 0; i < matNum; i++) {
u16 matID = anm->getCRegUpdateMaterialID(i);
if (index == matID) {
if (index == anm->getCRegUpdateMaterialID(i)) {
J3DAnmCRegKeyTable* anmTbl = anm->getAnmCRegKeyTable();
mAnmPointer->mTevCRegIds[anmTbl[i].mColorId] = i;
}
@@ -237,9 +229,7 @@ void J2DMaterial::setAnimation(J2DAnmTevRegKey* anm) {
u16 index = getIndex();
for (u16 i = 0; i < matNum; i++) {
u16 matID = anm->getKRegUpdateMaterialID(i);
if (index == matID) {
if (index == anm->getKRegUpdateMaterialID(i)) {
J3DAnmKRegKeyTable* anmTbl = anm->getAnmKRegKeyTable();
mAnmPointer->mTevKRegIds[anmTbl[i].mColorId] = i;
}
+25 -27
View File
@@ -52,10 +52,7 @@ u32 J2DMaterialFactory::countStages(int param_0) const {
}
}
if ((uVar3 != uVar4 && uVar4 != 0)) {
if (uVar3 > uVar4) {
return uVar3;
}
return uVar4;
return uVar3 > uVar4 ? uVar3 : uVar4;
}
return uVar3;
}
@@ -64,16 +61,14 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
J2DResReference* param_3, J2DResReference* param_4,
JKRArchive* param_5) const {
u32 stages = countStages(index);
u32 uVar1 = ((param_2 & 0x1f0000) >> 16);
u32 r28 = stages > uVar1 ? stages : uVar1;
u32 r25 = r28 <= 8 ? r28 : 8;
s32 local_3bc = ((param_2 & 0x1000000) != 0);
s32 local_3c0 = (param_2 & 0x1f0000) ? local_3bc : 0;
bool temp = (param_2 & 0x1f0000);
param_0->mTevBlock = J2DMaterial::createTevBlock((u16)r28, temp);
param_0->mIndBlock = J2DMaterial::createIndBlock(local_3c0, temp);
u32 local_36c = ((param_2 & 0x1f0000) >> 16);
u32 local_370 = stages > local_36c ? stages : local_36c;
u32 local_374 = local_370 > 8 ? 8 : local_370;
s32 local_378 = (param_2 & 0x1000000) ? 1 : 0;
local_378 = (param_2 & 0x1f0000) ? local_378 : 0;
bool local_403 = (param_2 & 0x1f0000);
param_0->mTevBlock = J2DMaterial::createTevBlock((u16)local_370, local_403);
param_0->mIndBlock = J2DMaterial::createIndBlock(local_378, local_403);
param_0->mIndex = index;
param_0->field_0x8 = getMaterialMode(index);
param_0->getColorBlock()->setColorChanNum(newColorChanNum(index));
@@ -86,9 +81,9 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
param_0->mMaterialAlphaCalc = getMaterialAlphaCalc(index);
JUTResReference aJStack_12c;
for (u8 i = 0; i < r25; i++) {
for (u8 i = 0; i < local_374; i++) {
u16 texNo = newTexNo(index, i);
s8* local_37c = param_3->getResReference(texNo);
char* local_37c = param_3->getResReference(texNo);
void* local_380 = NULL;
if (local_37c != NULL) {
local_380 = aJStack_12c.getResource(local_37c, 'TIMG', param_5);
@@ -107,7 +102,7 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
u16 fontNo = newFontNo(index);
param_0->getTevBlock()->setFontNo(fontNo);
s8* local_384 = param_4->getResReference(param_0->getTevBlock()->getFontNo());
char* local_384 = param_4->getResReference(param_0->getTevBlock()->getFontNo());
void* local_388 = NULL;
if (local_384 != NULL) {
local_388 = aJStack_12c.getResource(local_384, 'FONT', param_5);
@@ -122,10 +117,10 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
}
param_0->getTevBlock()->setFont((ResFONT*)local_388);
for (u8 i = 0; i < r28; i++) {
for (u8 i = 0; i < local_370; i++) {
param_0->getTevBlock()->setTevOrder(i, newTevOrder(index, i));
}
for (u8 i = 0; i < r28; i++) {
for (u8 i = 0; i < local_370; i++) {
J2DMaterialInitData* local_38c = &field_0x4[field_0x8[index]];
param_0->getTevBlock()->setTevStage(i, newTevStage(index, i));
if (local_38c->field_0xba[i] != 0xffff) {
@@ -157,13 +152,13 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
param_0->getTexGenBlock()->setTexMtx(i, newTexMtx(index, i));
}
J2DMaterialInitData* local_394 = &field_0x4[field_0x8[index]];
for (u8 i = 0; i < r28; i++) {
for (u8 i = 0; i < local_370; i++) {
param_0->getTevBlock()->setTevKColorSel(i, local_394->field_0x52[i]);
}
for (u8 i = 0; i < r28; i++) {
for (u8 i = 0; i < local_370; i++) {
param_0->getTevBlock()->setTevKAlphaSel(i, local_394->field_0x62[i]);
}
if (field_0xc != NULL || local_3c0 != 0) {
if (field_0xc != NULL || local_378 != 0) {
u8 local_410 = newIndTexStageNum(index);
param_0->mIndBlock->setIndTexStageNum(local_410);
for (u8 i = 0; i < local_410; i++) {
@@ -175,7 +170,7 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
for (u8 i = 0; i < local_410; i++) {
param_0->getIndBlock()->setIndTexCoordScale(i, newIndTexCoordScale(index, i));
}
for (u8 i = 0; i < r28; i++) {
for (u8 i = 0; i < local_370; i++) {
param_0->getTevBlock()->setIndTevStage(i, newIndTevStage(index, i));
}
}
@@ -183,8 +178,7 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par
}
JUtility::TColor J2DMaterialFactory::newMatColor(int param_0, int param_1) const {
GXColor color = {0xff,0xff,0xff,0xff};
JUtility::TColor local_20 = GXColor(color);
JUtility::TColor local_20 = (GXColor){0xff,0xff,0xff,0xff};
J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]];
if (iVar2->field_0x8[param_1] != 0xffff) {
return field_0x10[iVar2->field_0x8[param_1]];
@@ -201,6 +195,7 @@ u8 J2DMaterialFactory::newColorChanNum(int param_0) const {
}
J2DColorChan J2DMaterialFactory::newColorChan(int param_0, int param_1) const {
int r29 = 0;
J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]];
if (iVar2->field_0xc[param_1] != 0xffff) {
return J2DColorChan(field_0x18[iVar2->field_0xc[param_1]]);
@@ -209,6 +204,7 @@ J2DColorChan J2DMaterialFactory::newColorChan(int param_0, int param_1) const {
}
u32 J2DMaterialFactory::newTexGenNum(int param_0) const {
int r30 = 0;
J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]];
if (iVar2->field_0x3 != 0xff) {
return field_0x1c[iVar2->field_0x3];
@@ -235,6 +231,7 @@ J2DTexMtx* J2DMaterialFactory::newTexMtx(int param_0, int param_1) const {
}
u8 J2DMaterialFactory::newCullMode(int param_0) const {
int r30 = 0;
J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]];
if (iVar2->field_0x1 != 0xff) {
return field_0x30[iVar2->field_0x1];
@@ -312,12 +309,13 @@ J2DTevSwapModeTable J2DMaterialFactory::newTevSwapModeTable(int param_0, int par
}
u8 J2DMaterialFactory::newIndTexStageNum(int param_0) const {
u8 r31 = 0;
if (field_0xc != NULL) {
if (field_0xc[param_0].field_0x0 == 1) {
return field_0xc[param_0].field_0x1;
}
}
return 0;
return r31;
}
J2DIndTexOrder J2DMaterialFactory::newIndTexOrder(int param_0, int param_1) const {
@@ -373,7 +371,7 @@ J2DBlend J2DMaterialFactory::newBlend(int param_0) const {
if (iVar2->field_0xe4 != 0xffff) {
return J2DBlend(field_0x54[iVar2->field_0xe4]);
}
return J2DBlend();
return J2DBlend(j2dDefaultBlendInfo);
}
u8 J2DMaterialFactory::newDither(int param_0) const {

Some files were not shown because too many files have changed in this diff Show More