diff --git a/include/JSystem/J2DGraph/J2DMaterialFactory.h b/include/JSystem/J2DGraph/J2DMaterialFactory.h index 20bcbe1eb4..211b8be180 100644 --- a/include/JSystem/J2DGraph/J2DMaterialFactory.h +++ b/include/JSystem/J2DGraph/J2DMaterialFactory.h @@ -136,38 +136,38 @@ public: u8 newDither(int) const; u8 getMaterialMode(int idx) const { - return field_0x4[field_0x8[idx]].field_0x0; + return mpMaterialInitData[mpMaterialID[idx]].field_0x0; } u8 getMaterialAlphaCalc(int idx) const { - return field_0x4[field_0x8[idx]].field_0x6; + return mpMaterialInitData[mpMaterialID[idx]].field_0x6; } private: - /* 0x00 */ u16 field_0x0; + /* 0x00 */ u16 mMaterialNum; /* 0x02 */ u16 field_0x2; - /* 0x04 */ J2DMaterialInitData* field_0x4; - /* 0x08 */ u16* field_0x8; - /* 0x0C */ J2DIndInitData* field_0xc; - /* 0x10 */ GXColor* field_0x10; - /* 0x14 */ u8* field_0x14; - /* 0x18 */ J2DColorChanInfo* field_0x18; - /* 0x1C */ u8* field_0x1c; - /* 0x20 */ J2DTexCoordInfo* field_0x20; - /* 0x24 */ J2DTexMtxInfo* field_0x24; - /* 0x28 */ u16* field_0x28; - /* 0x2C */ u16* field_0x2c; - /* 0x30 */ BE(GXCullMode)* field_0x30; - /* 0x34 */ J2DTevOrderInfo* field_0x34; - /* 0x38 */ BE(GXColorS10)* field_0x38; - /* 0x3C */ GXColor* field_0x3c; - /* 0x40 */ u8* field_0x40; - /* 0x44 */ J2DTevStageInfo* field_0x44; - /* 0x48 */ J2DTevSwapModeInfo* field_0x48; - /* 0x4C */ J2DTevSwapModeTableInfo* field_0x4c; - /* 0x50 */ J2DAlphaCompInfo* field_0x50; - /* 0x54 */ J2DBlendInfo* field_0x54; - /* 0x58 */ u8* field_0x58; + /* 0x04 */ J2DMaterialInitData* mpMaterialInitData; + /* 0x08 */ BE(u16)* mpMaterialID; + /* 0x0C */ J2DIndInitData* mpIndInitData; + /* 0x10 */ GXColor* mpMatColor; + /* 0x14 */ u8* mpColorChanNum; + /* 0x18 */ J2DColorChanInfo* mpColorChanInfo; + /* 0x1C */ u8* mpTexGenNum; + /* 0x20 */ J2DTexCoordInfo* mpTexCoordInfo; + /* 0x24 */ J2DTexMtxInfo* mpTexMtxInfo; + /* 0x28 */ BE(u16)* mpTexNo; + /* 0x2C */ BE(u16)* mpFontNo; + /* 0x30 */ BE(GXCullMode)* mpCullMode; + /* 0x34 */ J2DTevOrderInfo* mpTevOrderInfo; + /* 0x38 */ BE(GXColorS10)* mpTevColor; + /* 0x3C */ GXColor* mpTevKColor; + /* 0x40 */ u8* mpTevStageNum; + /* 0x44 */ J2DTevStageInfo* mpTevStageInfo; + /* 0x48 */ J2DTevSwapModeInfo* mpTevSwapModeInfo; + /* 0x4C */ J2DTevSwapModeTableInfo* mpTevSwapModeTableInfo; + /* 0x50 */ J2DAlphaCompInfo* mpAlphaCompInfo; + /* 0x54 */ J2DBlendInfo* mpBlendInfo; + /* 0x58 */ u8* mpDither; }; #endif /* J2DMATERIALFACTORY_H */ diff --git a/include/JSystem/J2DGraph/J2DPane.h b/include/JSystem/J2DGraph/J2DPane.h index 8ef7bd802f..b1677223ad 100644 --- a/include/JSystem/J2DGraph/J2DPane.h +++ b/include/JSystem/J2DGraph/J2DPane.h @@ -5,6 +5,7 @@ #include "JSystem/JSupport/JSUList.h" #include #include +#include "dusk/endian.h" class J2DAnmBase; class J2DAnmColor; @@ -40,8 +41,8 @@ enum J2DBasePosition { * */ struct J2DPaneHeader { - /* 0x0 */ u32 mKind; - /* 0x4 */ u32 mSize; + /* 0x0 */ BE(u32) mKind; + /* 0x4 */ BE(u32) mSize; }; /** diff --git a/include/JSystem/J2DGraph/J2DPicture.h b/include/JSystem/J2DGraph/J2DPicture.h index e73fd3fc9b..f6805ea2bc 100644 --- a/include/JSystem/J2DGraph/J2DPicture.h +++ b/include/JSystem/J2DGraph/J2DPicture.h @@ -4,6 +4,7 @@ #include "JSystem/J2DGraph/J2DPane.h" #include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JUtility/TColor.h" +#include "dusk/endian.h" class J2DMaterial; class JUTPalette; @@ -31,8 +32,8 @@ enum J2DBinding { * */ struct J2DPicHeader { - /* 0x0 */ u32 mTag; - /* 0x4 */ u32 mSize; + /* 0x0 */ BE(u32) mTag; + /* 0x4 */ BE(u32) mSize; }; /** @@ -40,12 +41,12 @@ struct J2DPicHeader { * */ struct J2DScrnBlockPictureParameter { - /* 0x00 */ u16 field_0x0; - /* 0x02 */ u16 mMaterialNum; - /* 0x04 */ u16 field_0x4; - /* 0x06 */ u16 field_0x6; - /* 0x08 */ u16 field_0x8[4]; - /* 0x10 */ JGeometry::TVec2 field_0x10[4]; + /* 0x00 */ BE(u16) field_0x0; + /* 0x02 */ BE(u16) mMaterialNum; + /* 0x04 */ BE(u16) field_0x4; + /* 0x06 */ BE(u16) field_0x6; + /* 0x08 */ BE(u16) field_0x8[4]; + /* 0x10 */ JGeometry::TVec2 field_0x10[4]; /* 0x20 */ u32 mCornerColor[4]; }; // Size: 0x30 diff --git a/include/JSystem/J2DGraph/J2DScreen.h b/include/JSystem/J2DGraph/J2DScreen.h index fbd65db10b..6f959f56fc 100644 --- a/include/JSystem/J2DGraph/J2DScreen.h +++ b/include/JSystem/J2DGraph/J2DScreen.h @@ -4,6 +4,7 @@ #include "JSystem/J2DGraph/J2DManage.h" #include "JSystem/J2DGraph/J2DPane.h" #include "JSystem/JUtility/TColor.h" +#include "dusk/endian.h" class J2DMaterial; class JUTNameTab; @@ -13,10 +14,10 @@ class JUTNameTab; * */ struct J2DScrnHeader { - /* 0x00 */ u32 mTag; - /* 0x04 */ u32 mType; - /* 0x08 */ u32 mFileSize; - /* 0x0C */ u32 mBlockNum; + /* 0x00 */ BE(u32) mTag; + /* 0x04 */ BE(u32) mType; + /* 0x08 */ BE(u32) mFileSize; + /* 0x0C */ BE(u32) mBlockNum; /* 0x10 */ u8 padding[0x10]; }; @@ -25,10 +26,10 @@ struct J2DScrnHeader { * */ struct J2DScrnInfoHeader { - /* 0x0 */ u32 mTag; - /* 0x4 */ u32 mSize; - /* 0x8 */ u16 mWidth; - /* 0xA */ u16 mHeight; + /* 0x0 */ BE(u32) mTag; + /* 0x4 */ BE(u32) mSize; + /* 0x8 */ BE(u16) mWidth; + /* 0xA */ BE(u16) mHeight; /* 0xC */ u32 mColor; }; @@ -37,8 +38,8 @@ struct J2DScrnInfoHeader { * */ struct J2DScrnBlockHeader { - /* 0x00 */ u32 mTag; - /* 0x04 */ s32 mSize; + /* 0x00 */ BE(u32) mTag; + /* 0x04 */ BE(s32) mSize; }; /** diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index f7ce3f4ef9..8bf27091ce 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -4,17 +4,18 @@ #include #include #include "global.h" +#include "dusk/endian.h" /** * @ingroup jsystem-j2d * */ struct J2DTextureSRTInfo { - /* 0x00 */ f32 mScaleX; - /* 0x04 */ f32 mScaleY; - /* 0x08 */ f32 mRotationDeg; - /* 0x0C */ f32 mTranslationX; - /* 0x10 */ f32 mTranslationY; + /* 0x00 */ BE(f32) mScaleX; + /* 0x04 */ BE(f32) mScaleY; + /* 0x08 */ BE(f32) mRotationDeg; + /* 0x0C */ BE(f32) mTranslationX; + /* 0x10 */ BE(f32) mTranslationY; }; // Size: 0x14 /** @@ -31,7 +32,7 @@ struct J2DTexMtxInfo { /* 0x01 */ u8 mTexMtxDCC; /* 0x02 */ u8 field_0x2; // padding ? /* 0x03 */ u8 field_0x3; // padding ? - /* 0x04 */ Vec mCenter; + /* 0x04 */ BE(Vec) mCenter; /* 0x10 */ J2DTextureSRTInfo mTexSRTInfo; GXTexMtxType getTexMtxType() const { return (GXTexMtxType)mTexMtxType; } diff --git a/include/JSystem/J2DGraph/J2DTextBox.h b/include/JSystem/J2DGraph/J2DTextBox.h index 417e6ede77..ff4781297a 100644 --- a/include/JSystem/J2DGraph/J2DTextBox.h +++ b/include/JSystem/J2DGraph/J2DTextBox.h @@ -3,6 +3,7 @@ #include "JSystem/J2DGraph/J2DMaterial.h" #include "JSystem/J2DGraph/J2DPane.h" +#include "dusk/endian.h" class J2DMaterial; class JUTFont; @@ -24,8 +25,8 @@ enum J2DTextBoxHBinding { * */ struct J2DTbxBlockHeader { - /* 0x00 */ u32 mTag; - /* 0x04 */ s32 mSize; + /* 0x00 */ BE(u32) mTag; + /* 0x04 */ BE(s32) mSize; }; /** @@ -33,17 +34,17 @@ struct J2DTbxBlockHeader { * */ struct J2DTextBoxInfo { - /* 0x00 */ u16 field_0x0; - /* 0x02 */ u16 field_0x2; - /* 0x04 */ u16 mMaterialNum; - /* 0x06 */ s16 mCharSpace; - /* 0x08 */ s16 mLineSpace; - /* 0x0A */ u16 mFontSizeX; - /* 0x0C */ u16 mFontSizeY; + /* 0x00 */ BE(u16) field_0x0; + /* 0x02 */ BE(u16) field_0x2; + /* 0x04 */ BE(u16) mMaterialNum; + /* 0x06 */ BE(s16) mCharSpace; + /* 0x08 */ BE(s16) mLineSpace; + /* 0x0A */ BE(u16) mFontSizeX; + /* 0x0C */ BE(u16) mFontSizeY; /* 0x0E */ u8 mHBind; /* 0x0F */ u8 mVBind; - /* 0x10 */ u32 mCharColor; - /* 0x14 */ u32 mGradColor; + /* 0x10 */ BE(u32) mCharColor; + /* 0x14 */ BE(u32) mGradColor; /* 0x18 */ u8 mConnected; /* 0x19 */ char field_0x19[3]; /* 0x1C */ u16 field_0x1c; diff --git a/include/JSystem/JSupport/JSUInputStream.h b/include/JSystem/JSupport/JSUInputStream.h index afde440837..a1957a22ad 100644 --- a/include/JSystem/JSupport/JSUInputStream.h +++ b/include/JSystem/JSupport/JSUInputStream.h @@ -2,6 +2,7 @@ #define JSUINPUTSTREAM_H #include "JSystem/JSupport/JSUIosBase.h" +#include "dusk/endian.h" /** * @ingroup jsystem-jsupport @@ -17,31 +18,31 @@ public: /* vt[5] */ virtual u32 readData(void*, s32) = 0; u32 readU32() { - u32 val; + BE val; this->read(&val, sizeof(val)); return val; } u32 read32b() { - u32 val; + BE val; this->read(&val, sizeof(val)); return val; } s32 readS32() { - s32 val; + BE val; this->read(&val, sizeof(val)); return val; } s16 readS16() { - s16 val; + BE val; this->read(&val, sizeof(val)); return val; } u16 readU16() { - u16 val; + BE val; this->read(&val, sizeof(val)); return val; } @@ -59,18 +60,20 @@ public: } u16 read16b() { - u16 val; + BE val; this->read(&val, sizeof(val)); return val; } JSUInputStream& operator>>(u32& dest) { read(&dest, 4); + be_swap(dest); return *this; } JSUInputStream& operator>>(u16& dest) { read(&dest, 2); + be_swap(dest); return *this; } @@ -81,6 +84,7 @@ public: JSUInputStream& operator>>(s16& dest) { read(&dest, 2); + be_swap(dest); return *this; } @@ -98,7 +102,9 @@ public: } s32 read(u32& param_0) { - return read(¶m_0, 4); + auto ret = read(¶m_0, 4); + be_swap(param_0); + return ret; } // TODO: return value probably wrong diff --git a/include/JSystem/JUtility/JUTNameTab.h b/include/JSystem/JUtility/JUTNameTab.h index 0aa772a40d..5abd0912d4 100644 --- a/include/JSystem/JUtility/JUTNameTab.h +++ b/include/JSystem/JUtility/JUTNameTab.h @@ -8,11 +8,11 @@ * */ struct ResNTAB { - u16 mEntryNum; - u16 mPad0; + BE(u16) mEntryNum; + BE(u16) mPad0; struct Entry { - u16 mKeyCode; - u16 mOffs; + BE(u16) mKeyCode; + BE(u16) mOffs; } mEntries[1]; inline const char* getName(u32 index) const { diff --git a/include/d/d_event_data.h b/include/d/d_event_data.h index 22a835ec24..f42e16b7a7 100644 --- a/include/d/d_event_data.h +++ b/include/d/d_event_data.h @@ -3,24 +3,25 @@ #include "global.h" #include "f_pc/f_pc_base.h" +#include "dusk/endian.h" struct msg_class; struct event_binary_data_header { - /* 0x00 */ u32 eventTop; // offset to Event chunk - /* 0x04 */ s32 eventNum; - /* 0x08 */ u32 staffTop; // offset to Staff chunk - /* 0x0C */ s32 staffNum; - /* 0x10 */ u32 cutTop; // offset to Cut chunk - /* 0x14 */ s32 cutNum; - /* 0x18 */ u32 dataTop; // offset to Data chunk - /* 0x1C */ s32 dataNum; - /* 0x20 */ u32 fDataTop; // offset to FData chunk - /* 0x24 */ s32 fDataNum; - /* 0x28 */ u32 iDataTop; // offset to IData chunk - /* 0x2C */ s32 iDataNum; - /* 0x30 */ u32 sDataTop; // offset to SData chunk - /* 0x34 */ s32 sDataNum; + /* 0x00 */ BE(u32) eventTop; // offset to Event chunk + /* 0x04 */ BE(s32) eventNum; + /* 0x08 */ BE(u32) staffTop; // offset to Staff chunk + /* 0x0C */ BE(s32) staffNum; + /* 0x10 */ BE(u32) cutTop; // offset to Cut chunk + /* 0x14 */ BE(s32) cutNum; + /* 0x18 */ BE(u32) dataTop; // offset to Data chunk + /* 0x1C */ BE(s32) dataNum; + /* 0x20 */ BE(u32) fDataTop; // offset to FData chunk + /* 0x24 */ BE(s32) fDataNum; + /* 0x28 */ BE(u32) iDataTop; // offset to IData chunk + /* 0x2C */ BE(s32) iDataNum; + /* 0x30 */ BE(u32) sDataTop; // offset to SData chunk + /* 0x34 */ BE(s32) sDataNum; /* 0x38 */ u8 unk[8]; }; // Size: 0x40 @@ -45,11 +46,11 @@ public: char* getName() { return mName; } /* 0x00 */ char mName[32]; - /* 0x20 */ u32 mIndex; - /* 0x24 */ int mType; - /* 0x28 */ int mDataIndex; - /* 0x2C */ int mNumber; - /* 0x30 */ int mNext; + /* 0x20 */ BE(u32) mIndex; + /* 0x24 */ BE(int) mType; + /* 0x28 */ BE(int) mDataIndex; + /* 0x2C */ BE(int) mNumber; + /* 0x30 */ BE(int) mNext; /* 0x34 */ u8 field_0x34[12]; }; // Size: 0x40 @@ -79,12 +80,12 @@ public: u32 getTagId() { return mTagID; } /* 0x00 */ char mName[32]; - /* 0x20 */ u32 mTagID; - /* 0x24 */ u32 mIndex; - /* 0x28 */ int mFlags[3]; - /* 0x34 */ u32 mFlagId; - /* 0x38 */ int mDataTop; - /* 0x3C */ int mNext; + /* 0x20 */ BE(u32) mTagID; + /* 0x24 */ BE(u32) mIndex; + /* 0x28 */ BE(int) mFlags[3]; + /* 0x34 */ BE(u32) mFlagId; + /* 0x38 */ BE(int) mDataTop; + /* 0x3C */ BE(int) mNext; /* 0x40 */ u8 field_0x40[0x10]; }; // Size: 0x50 @@ -136,26 +137,26 @@ public: }; struct MessageData { - s16 unk; + BE(s16) unk; }; struct SoundData { - s16 unk; - s16 timer; + BE(s16) unk; + BE(s16) timer; }; struct TimerKeeperData { - s32 timer; + BE(s32) timer; }; struct DirectorData { - s16 unk; - s16 unk2; + BE(s16) unk; + BE(s16) unk2; }; struct EffectData { u8 pad[8]; - s32 unk; + BE(s32) unk; }; void specialProc_WaitStart(int index); @@ -180,16 +181,16 @@ public: // private: /* 0x00 */ char mName[8]; - /* 0x08 */ u8 mWork[0x18]; - /* 0x20 */ s32 mTagID; - /* 0x24 */ u32 mIndex; - /* 0x28 */ u32 mFlagID; - /* 0x2C */ int mType; - /* 0x30 */ int mStartCut; - /* 0x34 */ s16 field_0x34; - /* 0x36 */ s16 mWaitTimer; - /* 0x38 */ int mCurrentCut; - /* 0x3C */ s32 field_0x3c; + /* 0x08 */ u8 mWork[0x18]; // PROBLEM: this buffer is now too small for StaffWork to fit in + /* 0x20 */ BE(s32) mTagID; + /* 0x24 */ BE(u32) mIndex; + /* 0x28 */ BE(u32) mFlagID; + /* 0x2C */ BE(int) mType; + /* 0x30 */ BE(int) mStartCut; + /* 0x34 */ BE(s16) field_0x34; + /* 0x36 */ BE(s16) mWaitTimer; + /* 0x38 */ BE(int) mCurrentCut; + /* 0x3C */ BE(s32) field_0x3c; /* 0x40 */ bool field_0x40; /* 0x41 */ bool field_0x41; /* 0x42 */ u8 mData[0x50 - 0x42]; @@ -223,21 +224,21 @@ public: int getPriority() { return mPriority; } /* 0x00 */ char mName[32]; - /* 0x20 */ u32 mIndex; - /* 0x24 */ int field_0x24; - /* 0x28 */ int mPriority; - /* 0x2C */ int mStaff[20]; - /* 0x7C */ int mNStaff; - /* 0x80 */ int field_0x80; - /* 0x84 */ int field_0x84; - /* 0x88 */ int mFlags[3]; + /* 0x20 */ BE(u32) mIndex; + /* 0x24 */ BE(int) field_0x24; + /* 0x28 */ BE(int) mPriority; + /* 0x2C */ BE(int) mStaff[20]; + /* 0x7C */ BE(int) mNStaff; + /* 0x80 */ BE(int) field_0x80; + /* 0x84 */ BE(int) field_0x84; + /* 0x88 */ BE(int) mFlags[3]; /* 0x94 */ bool mPlaySound; - /* 0x96 */ s16 field_0x96; - /* 0x98 */ f32 field_0x98; - /* 0x9C */ f32 field_0x9c; - /* 0xA0 */ f32 field_0xa0; - /* 0xA4 */ int mEventState; - /* 0xA8 */ int field_0xa8; + /* 0x96 */ BE(s16) field_0x96; + /* 0x98 */ BE(f32) field_0x98; + /* 0x9C */ BE(f32) field_0x9c; + /* 0xA0 */ BE(f32) field_0xa0; + /* 0xA4 */ BE(int) mEventState; + /* 0xA8 */ BE(int) field_0xa8; /* 0xAC */ u8 field_0xac[4]; }; // Size: 0xB0 diff --git a/include/dolphin/os.h b/include/dolphin/os.h index ef23b716ff..c8c996cd6d 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -361,6 +361,8 @@ inline s16 __OSf32tos16(__REGISTER f32 inF) { psq_st inF, 0(tmpPtr), 0x1, 5 lha out, 0(tmpPtr) } +#else + return (s16)inF; // this is wrong i believe #endif // clang-format on @@ -381,6 +383,8 @@ inline u8 __OSf32tou8(__REGISTER f32 inF) { psq_st inF, 0(tmpPtr), 0x1, 2 lbz out, 0(tmpPtr) } +#else + return (u8)inF; // this is also wrong i believe #endif // clang-format on diff --git a/include/dusk/endian.h b/include/dusk/endian.h index 756c391fe0..50e476accd 100644 --- a/include/dusk/endian.h +++ b/include/dusk/endian.h @@ -18,9 +18,11 @@ #include #define BSWAP16(x) _byteswap_ushort(x) #define BSWAP32(x) _byteswap_ulong(x) + #define BSWAP64(x) _byteswap_uint64(x) #else #define BSWAP16(x) __builtin_bswap16(x) #define BSWAP32(x) __builtin_bswap32(x) + #define BSWAP64(x) __builtin_bswap64(x) #endif #else #define BSWAP16(x) (x) @@ -31,8 +33,9 @@ inline u16 be16(u16 val) { return BSWAP16(val); } inline s16 be16s(s16 val) { return (s16)BSWAP16((u16)val); } inline u32 be32(u32 val) { return BSWAP32(val); } - inline s32 be32s(s32 val) { return (s32)BSWAP32((u32)val); } +inline u64 be64(u64 val) { return BSWAP64(val); } +inline s64 be64s(s64 val) { return (s64)BSWAP64((u64)val); } #ifdef TARGET_PC // Helper wrappers so code below reads nicely: @@ -48,6 +51,12 @@ static inline u32 RES_U32(u32 v) { static inline s32 RES_S32(s32 v) { return be32s(v); } +static inline u64 RES_U64(u64 v) { + return be64(v); +} +static inline s64 RES_S64(s64 v) { + return be64s(v); +} static inline f32 RES_F32(f32 v) { return std::bit_cast(RES_S32(std::bit_cast(v))); } @@ -73,6 +82,16 @@ struct BE { inner = swap(from); } + T operator--(int dec) { + inner -= dec; + return swap(inner); + } + + T operator++(int inc) { + inner += inc; + return swap(inner); + } + operator T() const { return swap(inner); } @@ -94,7 +113,6 @@ constexpr BE& operator op(BE& a, TB b) { \ return a; \ } - BIN_ASSIGN_OP(&=); BIN_ASSIGN_OP(|=); BIN_ASSIGN_OP(+=); @@ -102,6 +120,7 @@ BIN_ASSIGN_OP(/=); #undef BIN_ASSIGN_OP + template<> inline u16 BE::swap(u16 val) { return RES_U16(val); @@ -122,6 +141,16 @@ inline s32 BE::swap(s32 val) { return RES_S32(val); } +template<> +inline s64 BE::swap(s64 val) { + return RES_S64(val); +} + +template<> +inline u64 BE::swap(u64 val) { + return RES_U64(val); +} + template<> inline f32 BE::swap(f32 val) { return RES_F32(val); diff --git a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp index 1b22ce0243..15159a922c 100644 --- a/src/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/src/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -9,42 +9,42 @@ #include J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) { - field_0x0 = param_0.field_0x8; - field_0x4 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0xc); - field_0x8 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x10); + mMaterialNum = param_0.field_0x8; + mpMaterialInitData = JSUConvertOffsetToPtr(¶m_0, param_0.field_0xc); + mpMaterialID = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x10); if (param_0.field_0x18 && param_0.field_0x18 - param_0.field_0x14 > 4) { - field_0xc = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x18); + mpIndInitData = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x18); } else { - field_0xc = NULL; + mpIndInitData = NULL; } - field_0x30 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x1c); - field_0x10 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x20); - field_0x14 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x24); - field_0x18 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x28); - field_0x1c = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x2c); - field_0x20 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x30); - field_0x24 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x34); - field_0x28 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x38); - field_0x2c = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x3c); - field_0x34 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x40); - field_0x38 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x44); - field_0x3c = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x48); - field_0x40 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x4c); - field_0x44 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x50); - field_0x48 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x54); - field_0x4c = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x58); - field_0x50 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x5c); - field_0x54 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x60); - field_0x58 = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x64); + mpCullMode = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x1c); + mpMatColor = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x20); + mpColorChanNum = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x24); + mpColorChanInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x28); + mpTexGenNum = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x2c); + mpTexCoordInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x30); + mpTexMtxInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x34); + mpTexNo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x38); + mpFontNo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x3c); + mpTevOrderInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x40); + mpTevColor = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x44); + mpTevKColor = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x48); + mpTevStageNum = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x4c); + mpTevStageInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x50); + mpTevSwapModeInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x54); + mpTevSwapModeTableInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x58); + mpAlphaCompInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x5c); + mpBlendInfo = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x60); + mpDither = JSUConvertOffsetToPtr(¶m_0, param_0.field_0x64); } u32 J2DMaterialFactory::countStages(int param_0) const { - J2DMaterialInitData* iVar5 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar5 = &mpMaterialInitData[mpMaterialID[param_0]]; u32 uVar4 = 0; u32 uVar3 = 0; if (iVar5->field_0x4 != 0xff) { - uVar3 = field_0x40[iVar5->field_0x4]; + uVar3 = mpTevStageNum[iVar5->field_0x4]; } for (int i = 0; i < 8; i++) { if (iVar5->field_0x38[i] != 0xffff) { @@ -121,11 +121,11 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par param_0->getTevBlock()->setTevOrder(i, newTevOrder(index, i)); } for (u8 i = 0; i < local_370; i++) { - J2DMaterialInitData* local_38c = &field_0x4[field_0x8[index]]; + J2DMaterialInitData* local_38c = &mpMaterialInitData[mpMaterialID[index]]; param_0->getTevBlock()->setTevStage(i, newTevStage(index, i)); if (local_38c->field_0xba[i] != 0xffff) { - param_0->getTevBlock()->getTevStage(i)->setTexSel(field_0x48[local_38c->field_0xba[i]].mTexSel); - param_0->getTevBlock()->getTevStage(i)->setRasSel(field_0x48[local_38c->field_0xba[i]].mRasSel); + param_0->getTevBlock()->getTevStage(i)->setTexSel(mpTevSwapModeInfo[local_38c->field_0xba[i]].mTexSel); + param_0->getTevBlock()->getTevStage(i)->setRasSel(mpTevSwapModeInfo[local_38c->field_0xba[i]].mRasSel); } } for (u8 i = 0; i < 4; i++) { @@ -151,14 +151,14 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par for (u8 i = 0; i < 8; i++) { param_0->getTexGenBlock()->setTexMtx(i, newTexMtx(index, i)); } - J2DMaterialInitData* local_394 = &field_0x4[field_0x8[index]]; + J2DMaterialInitData* local_394 = &mpMaterialInitData[mpMaterialID[index]]; for (u8 i = 0; i < local_370; i++) { param_0->getTevBlock()->setTevKColorSel(i, local_394->field_0x52[i]); } for (u8 i = 0; i < local_370; i++) { param_0->getTevBlock()->setTevKAlphaSel(i, local_394->field_0x62[i]); } - if (field_0xc != NULL || local_378 != 0) { + if (mpIndInitData != NULL || local_378 != 0) { u8 local_410 = newIndTexStageNum(index); param_0->mIndBlock->setIndTexStageNum(local_410); for (u8 i = 0; i < local_410; i++) { @@ -183,52 +183,52 @@ JUtility::TColor J2DMaterialFactory::newMatColor(int param_0, int param_1) const #else JUtility::TColor local_20 = GXColor{0xff,0xff,0xff,0xff}; #endif - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x8[param_1] != 0xffff) { - return field_0x10[iVar2->field_0x8[param_1]]; + return mpMatColor[iVar2->field_0x8[param_1]]; } return local_20; } u8 J2DMaterialFactory::newColorChanNum(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x2 != 0xff) { - return field_0x14[iVar2->field_0x2]; + return mpColorChanNum[iVar2->field_0x2]; } return 0; } J2DColorChan J2DMaterialFactory::newColorChan(int param_0, int param_1) const { int r29 = 0; - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0xc[param_1] != 0xffff) { - return J2DColorChan(field_0x18[iVar2->field_0xc[param_1]]); + return J2DColorChan(mpColorChanInfo[iVar2->field_0xc[param_1]]); } return J2DColorChan(); } u32 J2DMaterialFactory::newTexGenNum(int param_0) const { int r30 = 0; - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x3 != 0xff) { - return field_0x1c[iVar2->field_0x3]; + return mpTexGenNum[iVar2->field_0x3]; } return 0; } J2DTexCoord J2DMaterialFactory::newTexCoord(int param_0, int param_1) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x14[param_1] != 0xffff) { - return J2DTexCoord(field_0x20[iVar2->field_0x14[param_1]]); + return J2DTexCoord(mpTexCoordInfo[iVar2->field_0x14[param_1]]); } return J2DTexCoord(); } J2DTexMtx* J2DMaterialFactory::newTexMtx(int param_0, int param_1) const { J2DTexMtx* rv = NULL; - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x24[param_1] != 0xffff) { - rv = new J2DTexMtx(field_0x24[iVar2->field_0x24[param_1]]); + rv = new J2DTexMtx(mpTexMtxInfo[iVar2->field_0x24[param_1]]); rv->calc(); } return rv; @@ -236,33 +236,33 @@ 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]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x1 != 0xff) { - return field_0x30[iVar2->field_0x1]; + return mpCullMode[iVar2->field_0x1]; } return 0xff; } u16 J2DMaterialFactory::newTexNo(int param_0, int param_1) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x38[param_1] != 0xffff) { - return field_0x28[iVar2->field_0x38[param_1]]; + return mpTexNo[iVar2->field_0x38[param_1]]; } return 0x1FFFF; } u16 J2DMaterialFactory::newFontNo(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x48 != 0xffff) { - return field_0x2c[iVar2->field_0x48]; + return mpFontNo[iVar2->field_0x48]; } return 0x1FFFF; } J2DTevOrder J2DMaterialFactory::newTevOrder(int param_0, int param_1) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x72[param_1] != 0xffff) { - return J2DTevOrder(field_0x34[iVar2->field_0x72[param_1]]); + return J2DTevOrder(mpTevOrderInfo[iVar2->field_0x72[param_1]]); } return J2DTevOrder(); } @@ -270,10 +270,10 @@ J2DTevOrder J2DMaterialFactory::newTevOrder(int param_0, int param_1) const { J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { GXColorS10 color = {0, 0, 0, 0}; J2DGXColorS10 rv = color; - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x92[param_1] != 0xffff) { - return (GXColorS10) field_0x38[iVar2->field_0x92[param_1]]; + return (GXColorS10) mpTevColor[iVar2->field_0x92[param_1]]; } return rv; @@ -281,42 +281,42 @@ J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { JUtility::TColor J2DMaterialFactory::newTevKColor(int param_0, int param_1) const { JUtility::TColor local_20 = COMPOUND_LITERAL(GXColor){0xFF, 0xFF, 0xFF, 0xFF}; - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x4a[param_1] != 0xffff) { - return field_0x3c[iVar2->field_0x4a[param_1]]; + return mpTevKColor[iVar2->field_0x4a[param_1]]; } return local_20; } u8 J2DMaterialFactory::newTevStageNum(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x4 != 0xff) { - return field_0x40[iVar2->field_0x4]; + return mpTevStageNum[iVar2->field_0x4]; } return 0xFF; } J2DTevStage J2DMaterialFactory::newTevStage(int param_0, int param_1) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x9a[param_1] != 0xffff) { - return J2DTevStage(field_0x44[iVar2->field_0x9a[param_1]]); + return J2DTevStage(mpTevStageInfo[iVar2->field_0x9a[param_1]]); } return J2DTevStage(); } J2DTevSwapModeTable J2DMaterialFactory::newTevSwapModeTable(int param_0, int param_1) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0xda[param_1] != 0xffff) { - return J2DTevSwapModeTable(field_0x4c[iVar2->field_0xda[param_1]]); + return J2DTevSwapModeTable(mpTevSwapModeTableInfo[iVar2->field_0xda[param_1]]); } return J2DTevSwapModeTable(j2dDefaultTevSwapModeTable); } 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; + if (mpIndInitData != NULL) { + if (mpIndInitData[param_0].field_0x0 == 1) { + return mpIndInitData[param_0].field_0x1; } } return r31; @@ -324,9 +324,9 @@ u8 J2DMaterialFactory::newIndTexStageNum(int param_0) const { J2DIndTexOrder J2DMaterialFactory::newIndTexOrder(int param_0, int param_1) const { J2DIndTexOrder rv; - if (field_0xc != NULL) { - if (field_0xc[param_0].field_0x0 == 1) { - return J2DIndTexOrder(field_0xc[param_0].field_0x4[param_1]); + if (mpIndInitData != NULL) { + if (mpIndInitData[param_0].field_0x0 == 1) { + return J2DIndTexOrder(mpIndInitData[param_0].field_0x4[param_1]); } } return rv; @@ -334,9 +334,9 @@ J2DIndTexOrder J2DMaterialFactory::newIndTexOrder(int param_0, int param_1) cons J2DIndTexMtx J2DMaterialFactory::newIndTexMtx(int param_0, int param_1) const { J2DIndTexMtx rv; - if (field_0xc != NULL) { - if (field_0xc[param_0].field_0x0 == 1) { - return J2DIndTexMtx(field_0xc[param_0].field_0xc[param_1]); + if (mpIndInitData != NULL) { + if (mpIndInitData[param_0].field_0x0 == 1) { + return J2DIndTexMtx(mpIndInitData[param_0].field_0xc[param_1]); } } return rv; @@ -344,9 +344,9 @@ J2DIndTexMtx J2DMaterialFactory::newIndTexMtx(int param_0, int param_1) const { J2DIndTevStage J2DMaterialFactory::newIndTevStage(int param_0, int param_1) const { J2DIndTevStage rv; - if (field_0xc != NULL) { - if (field_0xc[param_0].field_0x0 == 1) { - return J2DIndTevStage(field_0xc[param_0].field_0x68[param_1]); + if (mpIndInitData != NULL) { + if (mpIndInitData[param_0].field_0x0 == 1) { + return J2DIndTevStage(mpIndInitData[param_0].field_0x68[param_1]); } } return rv; @@ -354,34 +354,34 @@ J2DIndTevStage J2DMaterialFactory::newIndTevStage(int param_0, int param_1) cons J2DIndTexCoordScale J2DMaterialFactory::newIndTexCoordScale(int param_0, int param_1) const { J2DIndTexCoordScale rv; - if (field_0xc != NULL) { - if (field_0xc[param_0].field_0x0 == 1) { - return J2DIndTexCoordScale(field_0xc[param_0].field_0x60[param_1]); + if (mpIndInitData != NULL) { + if (mpIndInitData[param_0].field_0x0 == 1) { + return J2DIndTexCoordScale(mpIndInitData[param_0].field_0x60[param_1]); } } return rv; } J2DAlphaComp J2DMaterialFactory::newAlphaComp(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0xe2 != 0xffff) { - return J2DAlphaComp(field_0x50[iVar2->field_0xe2]); + return J2DAlphaComp(mpAlphaCompInfo[iVar2->field_0xe2]); } return J2DAlphaComp(); } J2DBlend J2DMaterialFactory::newBlend(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0xe4 != 0xffff) { - return J2DBlend(field_0x54[iVar2->field_0xe4]); + return J2DBlend(mpBlendInfo[iVar2->field_0xe4]); } return J2DBlend(j2dDefaultBlendInfo); } u8 J2DMaterialFactory::newDither(int param_0) const { - J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; + J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]]; if (iVar2->field_0x5 != 0xff) { - return field_0x58[iVar2->field_0x5]; + return mpDither[iVar2->field_0x5]; } return 0; } diff --git a/src/JSystem/J2DGraph/J2DPane.cpp b/src/JSystem/J2DGraph/J2DPane.cpp index 11cb5b1230..e066257001 100644 --- a/src/JSystem/J2DGraph/J2DPane.cpp +++ b/src/JSystem/J2DGraph/J2DPane.cpp @@ -630,23 +630,23 @@ J2DPane* J2DPane::getParentPane() { /* name unknown */ struct J2DPaneInfo { - /* 0x00 */ u32 mKind; - /* 0x04 */ u32 mSize; - /* 0x08 */ u16 field_0x8; - /* 0x0A */ u16 field_0xa; + /* 0x00 */ BE(u32) mKind; + /* 0x04 */ BE(u32) mSize; + /* 0x08 */ BE(u16) field_0x8; + /* 0x0A */ BE(u16) field_0xa; /* 0x0B */ u8 mVisible; /* 0x0C */ u8 mBasePosition; - /* 0x10 */ u64 mInfoTag; - /* 0x18 */ u64 mUserInfoTag; - /* 0x20 */ f32 mRotOffsetX; - /* 0x24 */ f32 mRotOffsetY; - /* 0x28 */ f32 mScaleX; - /* 0x2C */ f32 mScaleY; - /* 0x30 */ f32 mRotateX; - /* 0x34 */ f32 mRotateY; - /* 0x38 */ f32 mRotateZ; - /* 0x3C */ f32 mTranslateX; - /* 0x40 */ f32 mTranslateY; + /* 0x10 */ BE(u64) mInfoTag; + /* 0x18 */ BE(u64) mUserInfoTag; + /* 0x20 */ BE(f32) mRotOffsetX; + /* 0x24 */ BE(f32) mRotOffsetY; + /* 0x28 */ BE(f32) mScaleX; + /* 0x2C */ BE(f32) mScaleY; + /* 0x30 */ BE(f32) mRotateX; + /* 0x34 */ BE(f32) mRotateY; + /* 0x38 */ BE(f32) mRotateZ; + /* 0x3C */ BE(f32) mTranslateX; + /* 0x40 */ BE(f32) mTranslateY; }; // Size: 0x48 void J2DPane::makePaneExStream(J2DPane* p_parent, JSURandomInputStream* p_stream) { diff --git a/src/JSystem/J2DGraph/J2DPicture.cpp b/src/JSystem/J2DGraph/J2DPicture.cpp index efeaca2ebf..e88433ecf4 100644 --- a/src/JSystem/J2DGraph/J2DPicture.cpp +++ b/src/JSystem/J2DGraph/J2DPicture.cpp @@ -45,7 +45,8 @@ J2DPicture::J2DPicture(J2DPane* p_pane, JSURandomInputStream* p_stream, J2DMater u16 matNum = picInfo.field_0x4; for (int i = 0; i < 4; i++) { - field_0x10a[i] = picInfo.field_0x10[i]; + field_0x10a[i].x = picInfo.field_0x10[i].x; + field_0x10a[i].y = picInfo.field_0x10[i].y; mCornerColor[i] = picInfo.mCornerColor[i]; } diff --git a/src/JSystem/J2DGraph/J2DPictureEx.cpp b/src/JSystem/J2DGraph/J2DPictureEx.cpp index 27cc68cc94..5d0014fe77 100644 --- a/src/JSystem/J2DGraph/J2DPictureEx.cpp +++ b/src/JSystem/J2DGraph/J2DPictureEx.cpp @@ -21,11 +21,11 @@ J2DPictureEx::J2DPictureEx(J2DPane* param_0, JSURandomInputStream* param_1, u32 field_0x194 = 0; field_0x198 = 0; s32 origPosition = param_1->getPosition(); - u32 local_68[2]; + BE(u32) local_68[2]; param_1->read(local_68, 8); mKind = local_68[0]; s32 iVar2 = param_1->getPosition(); - u32 auStack_70[2]; + BE(u32) auStack_70[2]; param_1->peek(auStack_70, 8); makePaneExStream(param_0, param_1); param_1->seek(iVar2 + auStack_70[1], JSUStreamSeekFrom_SET); @@ -36,7 +36,8 @@ J2DPictureEx::J2DPictureEx(J2DPane* param_0, JSURandomInputStream* param_1, u32 for (int i = 0; i < 4; i++) { field_0x158[i] = aJStack_60.field_0x8[i]; - field_0x10a[i] = aJStack_60.field_0x10[i]; + field_0x10a[i].x = aJStack_60.field_0x10[i].x; + field_0x10a[i].y = aJStack_60.field_0x10[i].y; mCornerColor[i] = JUtility::TColor(aJStack_60.mCornerColor[i]); } diff --git a/src/JSystem/J2DGraph/J2DScreen.cpp b/src/JSystem/J2DGraph/J2DScreen.cpp index 37c9aef084..65626a69a0 100644 --- a/src/JSystem/J2DGraph/J2DScreen.cpp +++ b/src/JSystem/J2DGraph/J2DScreen.cpp @@ -368,9 +368,9 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA char* ptr = (char*)sec_s; u16 size = lastOffset; while (ptr[size] != 0) { - size++; + size++; } - size++; + size++; u8* nametab = new u8[size]; if (nametab == NULL) { diff --git a/src/JSystem/J2DGraph/J2DTevs.cpp b/src/JSystem/J2DGraph/J2DTevs.cpp index bc06be7b8b..bfe85d81ff 100644 --- a/src/JSystem/J2DGraph/J2DTevs.cpp +++ b/src/JSystem/J2DGraph/J2DTevs.cpp @@ -118,8 +118,8 @@ J2DTexCoordInfo const j2dDefaultTexCoordInfo[8] = { {GX_TG_MTX2x4, GX_TG_TEX6, GX_IDENTITY, 0}, {GX_TG_MTX2x4, GX_TG_TEX7, GX_IDENTITY, 0}, }; -J2DTexMtxInfo const j2dDefaultTexMtxInfo = {1, 1, 255, 255, 0.5f, 0.5f, - 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f}; +J2DTexMtxInfo const j2dDefaultTexMtxInfo = {1, 1, 255, 255, {0.5f, 0.5f, + 0.0f}, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f}; J2DIndTexMtxInfo const j2dDefaultIndTexMtxInfo = {{0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f}, 1}; diff --git a/src/JSystem/J2DGraph/J2DWindow.cpp b/src/JSystem/J2DGraph/J2DWindow.cpp index 7907afc8c9..b6d341d507 100644 --- a/src/JSystem/J2DGraph/J2DWindow.cpp +++ b/src/JSystem/J2DGraph/J2DWindow.cpp @@ -24,17 +24,17 @@ J2DWindow::J2DWindow(J2DPane* param_0, JSURandomInputStream* param_1, JKRArchive struct J2DWindowData { u8 field_0x0[0x10]; - u16 field_0x10[4]; + BE(u16) field_0x10[4]; u8 field_0x18; u8 field_0x19; - u16 field_0x1a; - u16 field_0x1c; - u16 field_0x1e; - u16 field_0x20; - u16 field_0x22; - u16 field_0x24; + BE(u16) field_0x1a; + BE(u16) field_0x1c; + BE(u16) field_0x1e; + BE(u16) field_0x20; + BE(u16) field_0x22; + BE(u16) field_0x24; u8 field_0x26[0xa]; - u32 field_0x30[4]; + BE(u32) field_0x30[4]; }; J2DWindow::J2DWindow(J2DPane* param_0, JSURandomInputStream* param_1, J2DMaterial* param_2) : diff --git a/src/JSystem/J2DGraph/J2DWindowEx.cpp b/src/JSystem/J2DGraph/J2DWindowEx.cpp index 6b1b6748d2..0056b0cc80 100644 --- a/src/JSystem/J2DGraph/J2DWindowEx.cpp +++ b/src/JSystem/J2DGraph/J2DWindowEx.cpp @@ -3,21 +3,22 @@ #include "JSystem/J2DGraph/J2DWindowEx.h" #include "JSystem/JUtility/JUTTexture.h" #include "JSystem/JSupport/JSURandomInputStream.h" +#include "dusk/endian.h" struct J2DWindowExDef { - u32 field_0x0[4]; - u16 field_0x10[4]; + BE(u32) field_0x0[4]; + BE(u16) field_0x10[4]; u8 field_0x18; u8 field_0x19; - u16 field_0x1A; - u16 field_0x1C; - u16 field_0x1E; - u16 field_0x20; - u16 field_0x22; - u16 field_0x24; - u16 field_0x26; - u16 field_0x28[4]; - u32 field_0x30[4]; + BE(u16) field_0x1A; + BE(u16) field_0x1C; + BE(u16) field_0x1E; + BE(u16) field_0x20; + BE(u16) field_0x22; + BE(u16) field_0x24; + BE(u16) field_0x26; + BE(u16) field_0x28[4]; + BE(u32) field_0x30[4]; }; STATIC_ASSERT(sizeof(J2DWindowExDef) == 0x40); diff --git a/src/JSystem/JSupport/JSUInputStream.cpp b/src/JSystem/JSupport/JSUInputStream.cpp index cb5a2fdc09..4a0c638699 100644 --- a/src/JSystem/JSupport/JSUInputStream.cpp +++ b/src/JSystem/JSupport/JSUInputStream.cpp @@ -25,6 +25,7 @@ char* JSUInputStream::read(char* str) { setState(IOS_STATE_1); return 0; } + be_swap(sp8); s32 len = readData(str, sp8); str[len] = 0; diff --git a/src/d/actor/d_a_cstaF.cpp b/src/d/actor/d_a_cstaF.cpp index 833a9f5892..dfb5f95f16 100644 --- a/src/d/actor/d_a_cstaF.cpp +++ b/src/d/actor/d_a_cstaF.cpp @@ -584,7 +584,7 @@ actor_process_profile_definition g_profile_CSTAF = { fpcPi_CURRENT_e, // mListPrio PROC_CSTAF, // mProcName &g_fpcLf_Method.base, // sub_method - 0x00000B38, // mSize + sizeof(daCstaF_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_cstatue.cpp b/src/d/actor/d_a_cstatue.cpp index 57536d8c55..6d1b29da20 100644 --- a/src/d/actor/d_a_cstatue.cpp +++ b/src/d/actor/d_a_cstatue.cpp @@ -1220,7 +1220,7 @@ actor_process_profile_definition g_profile_CSTATUE = { fpcPi_CURRENT_e, // mListPrio PROC_CSTATUE, // mProcName &g_fpcLf_Method.base, // sub_method - 0x00000B2C, // mSize + sizeof(daCstatue_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_obj_hbombkoya.cpp b/src/d/actor/d_a_obj_hbombkoya.cpp index c701ffbf0e..de659ec008 100644 --- a/src/d/actor/d_a_obj_hbombkoya.cpp +++ b/src/d/actor/d_a_obj_hbombkoya.cpp @@ -273,18 +273,18 @@ static actor_method_class daObjHBombkoya_METHODS = { }; actor_process_profile_definition g_profile_Obj_HBombkoya = { - fpcLy_CURRENT_e, // mLayerID - 3, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_HBombkoya, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x000007C0, // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 675, // mPriority - &daObjHBombkoya_METHODS, // sub_method - 0x00040100, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType + fpcLy_CURRENT_e, // mLayerID + 3, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_HBombkoya, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjHBombkoya_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 675, // mPriority + &daObjHBombkoya_METHODS, // sub_method + 0x00040100, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType }; diff --git a/src/d/actor/d_a_obj_ice_l.cpp b/src/d/actor/d_a_obj_ice_l.cpp index 7048eb3a18..69d53f653a 100644 --- a/src/d/actor/d_a_obj_ice_l.cpp +++ b/src/d/actor/d_a_obj_ice_l.cpp @@ -261,7 +261,7 @@ actor_process_profile_definition g_profile_Obj_Ice_l = { fpcPi_CURRENT_e, // mListPrio PROC_Obj_Ice_l, // mProcName &g_fpcLf_Method.base, // sub_method - 0x00000640, // mSize + sizeof(daObjIce_l_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_obj_magLiftRot.cpp b/src/d/actor/d_a_obj_magLiftRot.cpp index ce64f16e90..9f07a93386 100644 --- a/src/d/actor/d_a_obj_magLiftRot.cpp +++ b/src/d/actor/d_a_obj_magLiftRot.cpp @@ -367,8 +367,8 @@ actor_process_profile_definition g_profile_Obj_MagLiftRot = { 3, // mListID fpcPi_CURRENT_e, // mListPrio PROC_Obj_MagLiftRot, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x00000634, // mSize + &g_fpcLf_Method.base, // sub_method + sizeof(daMagLiftRot_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_obj_tornado.cpp b/src/d/actor/d_a_obj_tornado.cpp index 6761f0a329..9f996ccab1 100644 --- a/src/d/actor/d_a_obj_tornado.cpp +++ b/src/d/actor/d_a_obj_tornado.cpp @@ -231,8 +231,8 @@ actor_process_profile_definition g_profile_Obj_Tornado = { 7, // mListID fpcPi_CURRENT_e, // mListPrio PROC_Obj_Tornado, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x00000770, // mSize + &g_fpcLf_Method.base, // sub_method + sizeof(daObjTrnd_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_obj_wchain.cpp b/src/d/actor/d_a_obj_wchain.cpp index d812cc0040..1200d62938 100644 --- a/src/d/actor/d_a_obj_wchain.cpp +++ b/src/d/actor/d_a_obj_wchain.cpp @@ -388,8 +388,8 @@ actor_process_profile_definition g_profile_Obj_Wchain = { 7, // mListID fpcPi_CURRENT_e, // mListPrio PROC_Obj_Wchain, // mProcName - &g_fpcLf_Method.base, // sub_method - 0x000007BC, // mSize + &g_fpcLf_Method.base, // sub_method + sizeof(daObjWchain_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/actor/d_a_scene_exit.cpp b/src/d/actor/d_a_scene_exit.cpp index 846b833faa..80c3a11f21 100644 --- a/src/d/actor/d_a_scene_exit.cpp +++ b/src/d/actor/d_a_scene_exit.cpp @@ -110,7 +110,7 @@ actor_process_profile_definition2 g_profile_SCENE_EXIT = { fpcPi_CURRENT_e, // mListPrio PROC_SCENE_EXIT, // mProcName &g_fpcLf_Method.base, // sub_method - 0x0000059C, // mSize + sizeof(daScex_c), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method diff --git a/src/d/d_event_data.cpp b/src/d/d_event_data.cpp index c0e34a0c50..4c028999b4 100644 --- a/src/d/d_event_data.cpp +++ b/src/d/d_event_data.cpp @@ -1071,7 +1071,7 @@ void dEvDtStaff_c::specialProcDirector() { dStage_MapEvent_dt_c* mapEvent = dEvt_control_c::searchMapEventData(data->unk); if (mapEvent != NULL) { if (mapEvent->type == dStage_MapEvent_dt_TYPE_MAPTOOLCAMERA) { - data->unk2 = mapEvent->data.maptool.field_0x14; + data->unk2 = (s16)mapEvent->data.maptool.field_0x14; } else { data->unk2 = -1; } @@ -1553,11 +1553,28 @@ int dEvDtBase_c::init(char* i_data, int i_roomNo) { } if (getFDataNum() > 0) { +#if TARGET_PC + auto data = (f32*)(i_data + getFDataTop()); + int num = getFDataNum(); + for (int i = 0; i < num; i++) + be_swap(data[i]); + setFDataP(data); +#else setFDataP((f32*)(i_data + getFDataTop())); +#endif } if (getIDataNum() > 0) { +#if TARGET_PC + // endian swap here + auto data = (int*)(i_data + getIDataTop()); + int num = getIDataNum(); + for (int i = 0; i < num; i++) + be_swap(data[i]); + setIDataP(data); +#else setIDataP((int*)(i_data + getIDataTop())); +#endif } if (getSDataNum() > 0) { diff --git a/src/f_pc/f_pc_base.cpp b/src/f_pc/f_pc_base.cpp index bbeac76038..edd8a842f4 100644 --- a/src/f_pc/f_pc_base.cpp +++ b/src/f_pc/f_pc_base.cpp @@ -2,6 +2,7 @@ * f_pc_base.cpp * Framework - Process Base */ +#define PROCS_DUMP_NAMES 1 #include "f_pc/f_pc_base.h" #include "SSystem/SComponent/c_malloc.h" @@ -16,6 +17,21 @@ #include "Z2AudioLib/Z2AudioMgr.h" #include +#if TARGET_PC +#include "d/d_procname.h" + +static const char* getProcName(s16 id) { + for (auto procName : procNames) { + if (procName.id == id) { + return procName.name; + } + } + + return nullptr; +} + +#endif + BOOL fpcBs_Is_JustOfType(int i_typeA, int i_typeB) { if (i_typeB == i_typeA) { return TRUE; @@ -119,8 +135,8 @@ base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_ap u32 size; pprofile = (process_profile_definition*)fpcPf_Get(i_profname); - printf("[DIAG] fpcBs_Create: profname=%d profile=%p procSize=%d unkSize=%d\n", - i_profname, pprofile, pprofile->process_size, pprofile->unk_size); fflush(stdout); + printf("[DIAG] fpcBs_Create: pid=%d profname=%s (%d) profile=%p procSize=%d unkSize=%d\n", + i_procID, getProcName(i_profname), i_profname, pprofile, pprofile->process_size, pprofile->unk_size); fflush(stdout); size = pprofile->process_size + pprofile->unk_size; pprocess = (base_process_class*)cMl::memalignB(-4, size);