m_Do_ext retail linked + debug improvements (#3009)

This commit is contained in:
Max Roncace
2026-01-04 20:20:35 -05:00
committed by GitHub
parent 7cf1038865
commit b72be3074a
17 changed files with 901 additions and 499 deletions
+2 -2
View File
@@ -65,7 +65,7 @@ m_Do/m_Do_mtx.cpp:
.ctors start:0x8062F7D0 end:0x8062F7D4
.data start:0x80661ED0 end:0x80661FC0
.sdata start:0x8073F3E8 end:0x8073F3F8
.sbss start:0x8074C3B0 end:0x8074C3BC
.sbss start:0x8074C3B0 end:0x8074C3B8
.sdata2 start:0x8074D878 end:0x8074D888
.bss start:0x807558E0 end:0x80755D30
@@ -74,7 +74,7 @@ m_Do/m_Do_ext.cpp:
.rodata start:0x8062FA30 end:0x8062FA70
.data start:0x80661FC0 end:0x80663DB0
.sdata start:0x8073F3F8 end:0x8073F600
.sbss start:0x8074C3BC end:0x8074C418
.sbss start:0x8074C3B8 end:0x8074C418
.sdata2 start:0x8074D888 end:0x8074D8D0
.bss start:0x80755D30 end:0x80755D90
+4 -4
View File
@@ -64187,9 +64187,9 @@ lbl_8074C3AA = .sbss:0x8074C3AA; // type:object size:0x1 data:byte hash:0xFDF68E
lbl_8074C3AB = .sbss:0x8074C3AB; // type:object size:0x1 data:byte hash:0x15E8B591 dhash:0xC99D7D59
@LOCAL@exceptionNNGCReadPad__FPUlPUl@l_oldButton@0 = .sbss:0x8074C3AC; // type:object size:0x4 scope:local data:4byte hash:0x50F85B88 dhash:0x8D7B3DDD
mDoMtx_stack = .sbss:0x8074C3B0; // type:object size:0x1 scope:global hash:0x2AB168B3
lbl_8074C3B8 = .sbss:0x8074C3B8; // type:object size:0x1 data:byte hash:0x60980213 dhash:0x3EBAE505
CurrentHeapAdjustVerbose__6mDoExt = .sbss:0x8074C3B8; // type:object size:0x1 data:byte hash:0x60980213 dhash:0x3EBAE505
HeapAdjustVerbose__6mDoExt = .sbss:0x8074C3B9; // type:object size:0x1 data:byte hash:0xDD10CA27 dhash:0x25FFD851
HeapAdjustQuiet__6mDoExt = .sbss:0x8074C3BA; // type:object size:0x2 hash:0x364A3DE1 dhash:0xAED09ED7
HeapAdjustQuiet__6mDoExt = .sbss:0x8074C3BA; // type:object size:0x1 hash:0x364A3DE1 dhash:0xAED09ED7
AssertHeap = .sbss:0x8074C3BC; // type:object size:0x4 scope:global data:4byte hash:0x0726E63B
DbPrintHeap = .sbss:0x8074C3C0; // type:object size:0x4 scope:global data:4byte hash:0x114A8B4E
gameHeap = .sbss:0x8074C3C4; // type:object size:0x4 scope:global data:4byte hash:0x31D7CBD7
@@ -64199,8 +64199,8 @@ archiveHeap = .sbss:0x8074C3D0; // type:object size:0x4 scope:global data:4byte
j2dHeap = .sbss:0x8074C3D4; // type:object size:0x4 scope:global data:4byte hash:0x7CA37505
HostIOHeap = .sbss:0x8074C3D8; // type:object size:0x4 scope:global data:4byte hash:0x8D1A0E3F
mDoExt_SaveCurrentHeap = .sbss:0x8074C3DC; // type:object size:0x4 scope:global data:4byte hash:0x44FDA9E1
@LOCAL@mDoExt_createSolidHeap__FUlP7JKRHeapUl@displayed@0 = .sbss:0x8074C3E0; // type:object size:0x4 scope:local data:4byte hash:0x1928D6B8 dhash:0xF0ED4395
lbl_8074C3E4 = .sbss:0x8074C3E4; // type:object size:0x1 data:byte hash:0x74053100 dhash:0xCB66AA90
@LOCAL@mDoExt_createSolidHeap__FUlP7JKRHeapUl@displayed = .sbss:0x8074C3E0; // type:object size:0x4 scope:local data:4byte hash:0x1928D6B8 dhash:0xF0ED4395
@GUARD@draw__17mDoExt_cubePacketFv@l_pos = .sbss:0x8074C3E4; // type:object size:0x1 data:byte hash:0x74053100 dhash:0xCB66AA90
mDoExt_font0 = .sbss:0x8074C3E8; // type:object size:0x4 scope:global data:4byte hash:0xA93F74F6
mDoExt_font0_getCount = .sbss:0x8074C3EC; // type:object size:0x4 scope:global data:4byte hash:0xCC867BDC
mDoExt_resfont0 = .sbss:0x8074C3F0; // type:object size:0x4 scope:global data:4byte hash:0xFFCF2592
+1 -1
View File
@@ -570,7 +570,7 @@ config.libs = [
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_graphic.cpp"),
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_machine.cpp"),
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_mtx.cpp"),
Object(Equivalent, "m_Do/m_Do_ext.cpp"), # weak func order
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_ext.cpp"),
Object(NonMatching, "m_Do/m_Do_ext2.cpp"),
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_lib.cpp"),
Object(MatchingFor(ALL_GCN), "m_Do/m_Do_Reset.cpp"),
+2 -5
View File
@@ -56,12 +56,9 @@ public:
J3DIndBlock* getIndBlock() { return mIndBlock; }
J3DJoint* getJoint() { return mJoint; }
J3DMaterialAnm* getMaterialAnm() {
if ((uintptr_t)mMaterialAnm < 0xC0000000) {
return mMaterialAnm;
} else {
return NULL;
}
return (uintptr_t)mMaterialAnm < 0xC0000000 ? mMaterialAnm : NULL;
}
u32 getMaterialMode() { return mMaterialMode; }
J3DNBTScale* getNBTScale() { return mTexGenBlock->getNBTScale(); }
u16 getTexNo(u32 idx) { return mTevBlock->getTexNo(idx); }
J3DGXColor* getTevKColor(u32 param_0) { return mTevBlock->getTevKColor(param_0); }
+4 -1
View File
@@ -139,7 +139,10 @@ struct J3DSys {
J3DMtxCalc * getCurrentMtxCalc() const { return mCurrentMtxCalc; }
void setTexture(J3DTexture* pTex) { mTexture = pTex; }
void setTexture(J3DTexture* pTex) {
JUT_ASSERT_MSG(220, pTex != NULL, "Error : null pointer.");
mTexture = pTex;
}
J3DTexture* getTexture() { return mTexture; }
void setNBTScale(Vec* scale) { mNBTScale = scale; }
@@ -33,6 +33,7 @@ public:
}
void setResTIMG(u16 index, const ResTIMG& timg) {
JUT_ASSERT_MSG(81, (bool)(index < mNum), "Error : range over.");
mpRes[index] = timg;
mpRes[index].imageOffset = ((mpRes[index].imageOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index)));
mpRes[index].paletteOffset = ((mpRes[index].paletteOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index)));
+4
View File
@@ -116,4 +116,8 @@ inline JKRExpHeap* JKRCreateExpHeap(u32 size, JKRHeap* parent, bool errorFlag) {
return JKRExpHeap::create(size, parent, errorFlag);
}
inline void JKRDestroyExpHeap(JKRHeap* heap) {
heap->destroy();
}
#endif /* JKREXPHEAP_H */
+6 -6
View File
@@ -36,6 +36,7 @@ public:
};
public:
JKRHeap(u32 size, JKRHeap* parent, bool errorFlag);
JKRHeap(void* data, u32 size, JKRHeap* parent, bool errorFlag);
virtual ~JKRHeap();
@@ -112,6 +113,7 @@ public:
void lock() { OSLockMutex(&mMutex); }
void unlock() { OSUnlockMutex(&mMutex); }
u32 getHeapSize() { return mSize; }
u8 getCurrentGroupId() { return 0; }
protected:
/* 0x00 */ // vtable
@@ -151,9 +153,7 @@ public:
static u32 getMemorySize(void) { return mMemorySize; }
static JKRHeap* getRootHeap() { return sRootHeap; }
#if PLATFORM_WII || PLATFORM_SHIELD
static JKRHeap* getRootHeap2() { return sRootHeap2; }
#endif
static JKRHeap* getSystemHeap() { return sSystemHeap; }
static JKRHeap* getCurrentHeap() { return sCurrentHeap; }
@@ -176,9 +176,7 @@ public:
static JKRHeap* sRootHeap;
#if PLATFORM_WII || PLATFORM_SHIELD
static JKRHeap* sRootHeap2;
#endif
static JKRHeap* sSystemHeap;
static JKRHeap* sCurrentHeap;
@@ -241,6 +239,10 @@ inline u32 JKRGetMemBlockSize(JKRHeap* heap, void* block) {
return JKRHeap::getSize(block, heap);
}
inline u32 JKRGetFreeSize(JKRHeap* heap) {
return heap->getFreeSize();
}
inline void* JKRAlloc(u32 size, int alignment) {
return JKRHeap::alloc(size, alignment, NULL);
}
@@ -261,11 +263,9 @@ inline bool JKRSetErrorFlag(JKRHeap* heap, bool flag) {
return heap->setErrorFlag(flag);
}
#if PLATFORM_WII || PLATFORM_SHIELD
inline JKRHeap* JKRGetRootHeap2() {
return JKRHeap::getRootHeap2();
}
#endif
#if DEBUG
inline void JKRSetDebugFillNotuse(u8 status) { data_804508B1 = status; }
+4
View File
@@ -65,4 +65,8 @@ inline JKRSolidHeap* JKRCreateSolidHeap(u32 param_0, JKRHeap* heap, bool param_2
return JKRSolidHeap::create(param_0, heap, param_2);
}
inline void JKRDestroySolidHeap(JKRHeap* heap) {
heap->destroy();
}
#endif /* JKRSOLIDHEAP_H */
+8
View File
@@ -63,6 +63,14 @@ public:
static u32 calcCacheSize(u32 param_0, int param_1) { return (ALIGN_NEXT(param_0, 0x20) + 0x40) * param_1; }
GXTexObj* getTexObj(void* buffer) { return &((TCachePage*)buffer)->mTexObj; }
u32 getCachePage() const {
return mCachePage;
}
int getMaxSheetSize() const {
return mMaxSheetSize;
}
private:
/* 0x70 */ u32 mTotalWidSize;
/* 0x74 */ u32 mTotalGlySize;
+5
View File
@@ -12,6 +12,11 @@
// Fixes weak function ordering
#include "math.h" // IWYU pragma: export
#include "cstring.h" // IWYU pragma: export
#include "JSystem/JKernel/JKRDisposer.h" // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DPacket.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DJoint.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DAnimation.h" // IWYU pragma: export
#include "JSystem/JUtility/JUTGamePad.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export
#include "JSystem/JHostIO/JORReflexible.h" // IWYU pragma: export
+319 -279
View File
@@ -2,8 +2,10 @@
#define M_DO_M_DO_EXT_H
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "Z2AudioLib/Z2SoundObject.h"
#include "d/d_kankyo_tev_str.h"
#include "m_Do/m_Do_audio.h"
#include "m_Do/m_Do_mtx.h"
@@ -16,16 +18,11 @@ struct ResTIMG;
class Z2Creature;
namespace mDoExt {
extern u8 CurrentHeapAdjustVerbose;
extern u8 HeapAdjustVerbose;
extern u8 HeapAdjustQuiet;
};
#if DEBUG
void DummyCheckHeap_init();
void DummyCheckHeap_create();
void DummyCheckHeap_destroy();
#endif
class mDoExt_baseAnm {
public:
mDoExt_baseAnm() {}
@@ -244,41 +241,6 @@ private:
/* 0x4 */ J3DAnmTransform* mAnmTransform;
}; // Size: 0x8
class mDoExt_invJntPacket : public J3DPacket {
public:
mDoExt_invJntPacket() {}
virtual void draw();
virtual ~mDoExt_invJntPacket() {}
void setJoint(J3DModel* i_model, u16 param_1, u8 param_2) {
field_0x10 = i_model;
field_0x14 = param_1;
field_0x16 = param_2;
}
private:
/* 0x10 */ J3DModel* field_0x10;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u8 field_0x16;
}; // Size: 0x18
class mDoExt_invisibleModel {
public:
mDoExt_invisibleModel() {}
int create(J3DModel* i_model, u8 param_1);
void entryJoint(cXyz*);
void entryDL(cXyz*);
/* 0x0 */ J3DModel* mModel;
/* 0x4 */ mDoExt_invJntPacket* mpPackets;
};
class mDoExt_zelAnime : public Z2SoundObjAnime {
public:
void* field_0x48;
};
class mDoExt_McaMorfCallBack1_c {
public:
virtual int execute(u16, J3DTransformInfo*) = 0;
@@ -289,146 +251,6 @@ public:
virtual void execute(u16) = 0;
};
class mDoExt_morf_c
: public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> {
public:
mDoExt_morf_c();
void setMorf(f32 i_morf);
void frameUpdate();
virtual ~mDoExt_morf_c();
J3DAnmTransform* getAnm() { return mpAnm; }
void changeAnm(J3DAnmTransform* anm) { mpAnm = anm; }
int getPlayMode() { return mFrameCtrl.getAttribute(); }
void setPlayMode(int mode) { mFrameCtrl.setAttribute(mode); }
BOOL isStop() { return mFrameCtrl.checkState(1) || mFrameCtrl.getRate() == 0.0f; }
bool isLoop() { return mFrameCtrl.checkState(2); }
f32 getStartFrame() { return mFrameCtrl.getStart(); }
void setStartFrame(f32 frame) { mFrameCtrl.setStart(frame); }
f32 getEndFrame() { return mFrameCtrl.getEnd(); }
void setEndFrame(f32 frame) { mFrameCtrl.setEnd(frame); }
f32 getLoopFrame() { return mFrameCtrl.getLoop(); }
void setLoopFrame(f32 frame) { mFrameCtrl.setLoop(frame); }
f32 getPlaySpeed() { return mFrameCtrl.getRate(); }
void setPlaySpeed(f32 speed) { mFrameCtrl.setRate(speed); }
f32 getFrame() { return mFrameCtrl.getFrame(); }
void setFrame(f32 frame) { mFrameCtrl.setFrame((s16)frame); }
void setFrameF(f32 frame) { mFrameCtrl.setFrame(frame); }
BOOL checkFrame(f32 frame) { return mFrameCtrl.checkPass(frame); }
f32 getMorfRatio() { return mCurMorf; }
/* 0x04 */ J3DModel* mpModel;
/* 0x08 */ J3DAnmTransform* mpAnm;
/* 0x0C */ J3DFrameCtrl mFrameCtrl;
/* 0x20 */ J3DTransformInfo* mpTransformInfo;
/* 0x24 */ Quaternion* mpQuat;
/* 0x28 */ f32 mCurMorf;
/* 0x2C */ f32 mPrevMorf;
/* 0x30 */ f32 mMorfStep;
/* 0x34 */ f32 field_0x34;
};
class mDoExt_McaMorfSO : public mDoExt_morf_c {
public:
mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int,
int, Z2Creature*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*,
J3DAnmTransform*, int, f32, int, int, Z2Creature*, u32, u32);
void setAnm(J3DAnmTransform* i_anm, int i_attr, f32 i_morf, f32 i_rate,
f32 i_start, f32 i_end);
int play(u32, s8);
void updateDL();
void entryDL();
void modelCalc();
void getTransform(u16, J3DTransformInfo*);
void stopZelAnime();
virtual ~mDoExt_McaMorfSO();
virtual void calc();
J3DModel* getModel() { return mpModel; }
void offMorfNone() { mMorfNone = false; }
void onMorfNone() { mMorfNone = true; }
inline void setTranslateScale(cXyz& i_scale) { mTranslateScale = i_scale; }
J3DTransformInfo* getOldTransInfo() { return mpTransformInfo; }
Quaternion* getOldQuaternion() { return mpQuat; }
void offTranslate() { mTranslate = true; }
void setTranslateScale(const cXyz& scale) { mTranslateScale = scale; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ cXyz mTranslateScale;
/* 0x4C */ Z2Creature* mpSound;
/* 0x50 */ void* mpBas;
/* 0x54 */ bool mTranslate;
/* 0x55 */ bool mMorfNone;
};
class mDoExt_McaMorf : public mDoExt_morf_c {
public:
mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int,
int, void*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*,
J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32);
void setAnm(J3DAnmTransform* i_bck, int i_mode, f32 i_morf, f32 i_speed, f32 i_startF, f32 i_endF, void* i_bas);
u32 play(Vec*, u32, s8);
void entryDL();
void modelCalc();
void getTransform(u16, J3DTransformInfo*);
virtual ~mDoExt_McaMorf();
virtual void calc();
J3DModel* getModel() { return mpModel; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ cXyz mTranslateScale;
/* 0x4C */ mDoExt_zelAnime* mpSound;
/* 0x50 */ bool field_0x50;
/* 0x51 */ bool field_0x51;
/* 0x52 */ bool field_0x52;
};
class mDoExt_McaMorf2 : public mDoExt_morf_c {
public:
mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*,
int, f32, int, int, Z2Creature*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int,
f32, int, int, Z2Creature*, u32, u32);
void ERROR_EXIT();
void setAnm(J3DAnmTransform*, J3DAnmTransform*, f32, int, f32, f32, f32, f32);
void setAnmRate(f32);
int play(u32, s8);
void entryDL();
void modelCalc();
void stopZelAnime();
virtual ~mDoExt_McaMorf2();
virtual void calc();
inline f32 getAnmRate() { return mAnmRate; }
inline void changeAnm(J3DAnmTransform* anm, J3DAnmTransform* anm2) {
mpAnm = anm;
field_0x40 = anm2;
}
inline J3DModel* getModel() { return mpModel; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ J3DAnmTransform* field_0x40;
/* 0x44 */ f32 mAnmRate;
/* 0x48 */ Z2Creature* mpSound;
/* 0x4C */ void* mpBas;
};
class mDoExt_MtxCalcOldFrame {
public:
void initOldFrameMorf(f32, u16, u16);
@@ -508,6 +330,151 @@ struct mDoExt_MtxCalcAnmBlendTblOld : public mDoExt_MtxCalcAnmBlendTbl {
STATIC_ASSERT(sizeof(mDoExt_MtxCalcAnmBlendTblOld) == 0x10);
class mDoExt_zelAnime : public Z2SoundObjAnime {
public:
void* field_0x48;
};
class mDoExt_morf_c
: public J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya, J3DMtxCalcJ3DSysInitMaya> {
public:
mDoExt_morf_c();
void setMorf(f32 i_morf);
void frameUpdate();
virtual ~mDoExt_morf_c();
J3DAnmTransform* getAnm() { return mpAnm; }
void changeAnm(J3DAnmTransform* anm) { mpAnm = anm; }
int getPlayMode() { return mFrameCtrl.getAttribute(); }
void setPlayMode(int mode) { mFrameCtrl.setAttribute(mode); }
BOOL isStop() { return mFrameCtrl.checkState(1) || mFrameCtrl.getRate() == 0.0f; }
bool isLoop() { return mFrameCtrl.checkState(2); }
f32 getStartFrame() { return mFrameCtrl.getStart(); }
void setStartFrame(f32 frame) { mFrameCtrl.setStart(frame); }
f32 getEndFrame() { return mFrameCtrl.getEnd(); }
void setEndFrame(f32 frame) { mFrameCtrl.setEnd(frame); }
f32 getLoopFrame() { return mFrameCtrl.getLoop(); }
void setLoopFrame(f32 frame) { mFrameCtrl.setLoop(frame); }
f32 getPlaySpeed() { return mFrameCtrl.getRate(); }
void setPlaySpeed(f32 speed) { mFrameCtrl.setRate(speed); }
f32 getFrame() { return mFrameCtrl.getFrame(); }
void setFrame(f32 frame) { mFrameCtrl.setFrame((s16)frame); }
void setFrameF(f32 frame) { mFrameCtrl.setFrame(frame); }
BOOL checkFrame(f32 frame) { return mFrameCtrl.checkPass(frame); }
f32 getMorfRatio() { return mCurMorf; }
/* 0x04 */ J3DModel* mpModel;
/* 0x08 */ J3DAnmTransform* mpAnm;
/* 0x0C */ J3DFrameCtrl mFrameCtrl;
/* 0x20 */ J3DTransformInfo* mpTransformInfo;
/* 0x24 */ Quaternion* mpQuat;
/* 0x28 */ f32 mCurMorf;
/* 0x2C */ f32 mPrevMorf;
/* 0x30 */ f32 mMorfStep;
/* 0x34 */ f32 field_0x34;
};
class mDoExt_McaMorf : public mDoExt_morf_c {
public:
mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, int,
int, void*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*,
J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32);
void setAnm(J3DAnmTransform* i_bck, int i_mode, f32 i_morf, f32 i_speed, f32 i_startF, f32 i_endF, void* i_bas);
u32 play(Vec*, u32, s8);
void entryDL();
void modelCalc();
void getTransform(u16, J3DTransformInfo*);
virtual ~mDoExt_McaMorf();
virtual void calc();
J3DModel* getModel() { return mpModel; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ cXyz mTranslateScale;
/* 0x4C */ mDoExt_zelAnime* mpSound;
/* 0x50 */ bool field_0x50;
/* 0x51 */ bool field_0x51;
/* 0x52 */ bool field_0x52;
};
class mDoExt_McaMorfSO : public mDoExt_morf_c {
public:
mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int,
int, Z2Creature*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*,
J3DAnmTransform*, int, f32, int, int, Z2Creature*, u32, u32);
void setAnm(J3DAnmTransform* i_anm, int i_attr, f32 i_morf, f32 i_rate,
f32 i_start, f32 i_end);
int play(u32, s8);
void updateDL();
void entryDL();
void modelCalc();
void getTransform(u16, J3DTransformInfo*);
void stopZelAnime();
virtual ~mDoExt_McaMorfSO();
virtual void calc();
J3DModel* getModel() { return mpModel; }
void offMorfNone() { mMorfNone = false; }
void onMorfNone() { mMorfNone = true; }
inline void setTranslateScale(cXyz& i_scale) { mTranslateScale = i_scale; }
J3DTransformInfo* getOldTransInfo() { return mpTransformInfo; }
Quaternion* getOldQuaternion() { return mpQuat; }
void offTranslate() { mTranslate = true; }
void setTranslateScale(const cXyz& scale) { mTranslateScale = scale; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ cXyz mTranslateScale;
/* 0x4C */ Z2Creature* mpSound;
/* 0x50 */ void* mpBas;
/* 0x54 */ bool mTranslate;
/* 0x55 */ bool mMorfNone;
};
class mDoExt_McaMorf2 : public mDoExt_morf_c {
public:
mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*,
int, f32, int, int, Z2Creature*, u32, u32);
int create(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int,
f32, int, int, Z2Creature*, u32, u32);
void ERROR_EXIT();
void setAnm(J3DAnmTransform*, J3DAnmTransform*, f32, int, f32, f32, f32, f32);
void setAnmRate(f32);
int play(u32, s8);
void entryDL();
void modelCalc();
void stopZelAnime();
virtual ~mDoExt_McaMorf2();
virtual void calc();
inline f32 getAnmRate() { return mAnmRate; }
inline void changeAnm(J3DAnmTransform* anm, J3DAnmTransform* anm2) {
mpAnm = anm;
field_0x40 = anm2;
}
inline J3DModel* getModel() { return mpModel; }
private:
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;
/* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2;
/* 0x40 */ J3DAnmTransform* field_0x40;
/* 0x44 */ f32 mAnmRate;
/* 0x48 */ Z2Creature* mpSound;
/* 0x4C */ void* mpBas;
};
struct mDoExt_3Dline_field_0x10_c {
s8 x;
s8 y;
@@ -534,6 +501,46 @@ public:
/* 0x1C */ mDoExt_3Dline_field_0x18_c* field_0x1c;
};
class mDoExt_offCupOnAupPacket : public J3DPacket {
virtual void draw();
virtual ~mDoExt_offCupOnAupPacket();
};
class mDoExt_onCupOffAupPacket : public J3DPacket {
virtual void draw();
virtual ~mDoExt_onCupOffAupPacket();
};
class mDoExt_invJntPacket : public J3DPacket {
public:
mDoExt_invJntPacket() {}
virtual void draw();
virtual ~mDoExt_invJntPacket() {}
void setJoint(J3DModel* i_model, u16 param_1, u8 param_2) {
field_0x10 = i_model;
field_0x14 = param_1;
field_0x16 = param_2;
}
private:
/* 0x10 */ J3DModel* field_0x10;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u8 field_0x16;
}; // Size: 0x18
class mDoExt_invisibleModel {
public:
mDoExt_invisibleModel() {}
int create(J3DModel* i_model, u8 param_1);
void entryJoint(cXyz*);
void entryDL(cXyz*);
/* 0x0 */ J3DModel* mModel;
/* 0x4 */ mDoExt_invJntPacket* mpPackets;
};
class mDoExt_3DlineMat_c {
public:
virtual int getMaterialID() = 0;
@@ -543,19 +550,27 @@ public:
/* 0x4 */ mDoExt_3DlineMat_c* field_0x4;
};
class mDoExt_3DlineMatSortPacket : public J3DPacket {
class mDoExt_3DlineMat0_c : public mDoExt_3DlineMat_c {
public:
mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; }
int init(u16, u16, int);
void update(int, f32, _GXColor&, u16, dKy_tevstr_c*);
void update(int, _GXColor&, dKy_tevstr_c*);
void reset() { mp3DlineMat = NULL; }
void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); }
void setMat(mDoExt_3DlineMat_c*);
virtual int getMaterialID() { return 0; }
virtual void setMaterial();
virtual void draw();
virtual ~mDoExt_3DlineMatSortPacket() {}
cXyz* getPos(int param_0) { return field_0x18[param_0].field_0x0; }
f32* getSize(int param_0) { return field_0x18[param_0].field_0x4; }
private:
/* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat;
/* 0x08 */ GXColor field_0x8;
/* 0x0C */ dKy_tevstr_c* field_0xc;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u8 field_0x16;
/* 0x18 */ mDoExt_3Dline_c* field_0x18;
};
class dKy_tevstr_c;
@@ -582,27 +597,36 @@ private:
/* 0x38 */ mDoExt_3Dline_c* mpLines;
};
class mDoExt_3DlineMat0_c : public mDoExt_3DlineMat_c {
class mDoExt_3DlineMat2_c : public mDoExt_3DlineMat_c {
public:
int init(u16, u16, int);
void update(int, f32, _GXColor&, u16, dKy_tevstr_c*);
void update(int, _GXColor&, dKy_tevstr_c*);
int getMaterialID() { return 2; }
void setMaterial();
};
virtual int getMaterialID() { return 0; }
virtual void setMaterial();
class mDoExt_3DlineMatSortPacket : public J3DPacket {
public:
mDoExt_3DlineMatSortPacket() { mp3DlineMat = NULL; }
void reset() { mp3DlineMat = NULL; }
void setMatDark(mDoExt_3DlineMat_c* i_mat) { setMat(i_mat); }
void setMat(mDoExt_3DlineMat_c*);
virtual void draw();
cXyz* getPos(int param_0) { return field_0x18[param_0].field_0x0; }
f32* getSize(int param_0) { return field_0x18[param_0].field_0x4; }
virtual ~mDoExt_3DlineMatSortPacket() {}
private:
/* 0x08 */ GXColor field_0x8;
/* 0x0C */ dKy_tevstr_c* field_0xc;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u8 field_0x16;
/* 0x18 */ mDoExt_3Dline_c* field_0x18;
/* 0x10 */ mDoExt_3DlineMat_c* mp3DlineMat;
};
class mDoExt_cube8pPacket : public J3DPacket {
public:
mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color);
virtual void draw();
virtual ~mDoExt_cube8pPacket() {}
/* 0x10 */ cXyz mPoints[8];
/* 0x70 */ GXColor mColor;
};
class mDoExt_cubePacket : public J3DPacket {
@@ -618,44 +642,6 @@ public:
/* 0x2E */ GXColor mColor;
};
class mDoExt_cylinderPacket : public J3DPacket {
public:
mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_cylinderPacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mRadius;
/* 0x20 */ f32 mHeight;
/* 0x24 */ GXColor mColor;
/* 0x28 */ u8 mClipZ;
};
class mDoExt_spherePacket : public J3DPacket {
public:
mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_spherePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mSize;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
};
class mDoExt_cube8pPacket : public J3DPacket {
public:
mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color);
virtual void draw();
virtual ~mDoExt_cube8pPacket() {}
/* 0x10 */ cXyz mPoints[8];
/* 0x70 */ GXColor mColor;
};
class mDoExt_trianglePacket : public J3DPacket {
public:
mDoExt_trianglePacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ);
@@ -694,32 +680,6 @@ public:
/* 0x2D */ u8 mWidth;
};
class mDoExt_cylinderMPacket : public J3DPacket {
public:
mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_cylinderMPacket() {}
/* 0x10 */ Mtx mMatrix;
/* 0x40 */ GXColor mColor;
/* 0x44 */ u8 mClipZ;
};
class mDoExt_circlePacket : public J3DPacket {
public:
mDoExt_circlePacket(cXyz& i_position, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth);
virtual void draw();
virtual ~mDoExt_circlePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mRadius;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
/* 0x25 */ u8 mLineWidth;
};
class mDoExt_ArrowPacket : public J3DPacket {
public:
mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth);
@@ -747,6 +707,59 @@ public:
/* 0x21 */ u8 mLineWidth;
};
class mDoExt_circlePacket : public J3DPacket {
public:
mDoExt_circlePacket(cXyz& i_position, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth);
virtual void draw();
virtual ~mDoExt_circlePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mRadius;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
/* 0x25 */ u8 mLineWidth;
};
class mDoExt_spherePacket : public J3DPacket {
public:
mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_spherePacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mSize;
/* 0x20 */ GXColor mColor;
/* 0x24 */ u8 mClipZ;
};
class mDoExt_cylinderPacket : public J3DPacket {
public:
mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_cylinderPacket() {}
/* 0x10 */ cXyz mPosition;
/* 0x1C */ f32 mRadius;
/* 0x20 */ f32 mHeight;
/* 0x24 */ GXColor mColor;
/* 0x28 */ u8 mClipZ;
};
class mDoExt_cylinderMPacket : public J3DPacket {
public:
mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ);
virtual void draw();
virtual ~mDoExt_cylinderMPacket() {}
/* 0x10 */ Mtx mMatrix;
/* 0x40 */ GXColor mColor;
/* 0x44 */ u8 mClipZ;
};
inline void mDoExt_bckAnmRemove(J3DModelData* i_modelData) {
i_modelData->getJointNodePointer(0)->setMtxCalc(NULL);
}
@@ -757,6 +770,8 @@ void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap);
u32 mDoExt_adjustSolidHeap(JKRSolidHeap* i_heap);
void mDoExt_restoreCurrentHeap();
JKRExpHeap* mDoExt_getGameHeap();
void mDoExt_setSafeGameHeapSize();
size_t mDoExt_getSafeGameHeapSize();
void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap);
JKRHeap* mDoExt_setCurrentHeap(JKRHeap* i_heap);
JKRExpHeap* mDoExt_getArchiveHeap();
@@ -768,13 +783,13 @@ JKRExpHeap* mDoExt_getZeldaHeap();
JKRExpHeap* mDoExt_getJ2dHeap();
JKRExpHeap* mDoExt_getHostIOHeap();
JKRExpHeap* mDoExt_getDbPrintHeap();
JKRExpHeap* mDoExt_createDbPrintHeap(u32 heapSize, JKRHeap* i_heap);
JKRAssertHeap* mDoExt_createAssertHeap(JKRHeap* i_heap);
JKRExpHeap* mDoExt_createCommandHeap(u32 heapSize, JKRHeap* i_heap);
JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* i_heap);
JKRExpHeap* mDoExt_createJ2dHeap(u32 heapSize, JKRHeap* i_heap);
JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* i_heap);
JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* i_heap);
JKRExpHeap* mDoExt_createDbPrintHeap(u32 heapSize, JKRHeap* parentHeap);
JKRAssertHeap* mDoExt_createAssertHeap(JKRHeap* parentHeap);
JKRExpHeap* mDoExt_createCommandHeap(u32 heapSize, JKRHeap* parentHeap);
JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* parentHeap);
JKRExpHeap* mDoExt_createJ2dHeap(u32 heapSize, JKRHeap* parentHeap);
JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* parentHeap);
JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* parentHeap);
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** o_heap, u32 i_size, JKRHeap* i_parent,
u32 i_alignment);
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32 i_size, JKRHeap* i_parent, u32 i_alignment);
@@ -810,9 +825,10 @@ void mDoExt_setupShareTexture(J3DModelData* i_modelData, J3DModelData* i_shareMo
void mDoExt_btkAnmRemove(J3DModelData* i_modelData);
void mDoExt_modelTexturePatch(J3DModelData* i_modelData);
#if VERSION == VERSION_SHIELD_DEBUG
s32 mDoExt_getSafeZeldaHeapSize();
void mDoExt_addSafeZeldaHeapSize(s32);
void mDoExt_setSafeZeldaHeapSize();
void mDoExt_addSafeZeldaHeapSize(intptr_t);
intptr_t mDoExt_getSafeZeldaHeapSize();
#if DEBUG
JKRHeap* mDoExt_createHostIOHeap(u32, JKRHeap*);
#endif
@@ -822,9 +838,33 @@ JUTFont* mDoExt_getSubFont();
JUTFont* mDoExt_getRubyFont();
void mDoExt_removeSubFont();
class DummyCheckHeap : public JKRDisposer {
public:
DummyCheckHeap();
~DummyCheckHeap();
int isVirgin();
JKRHeap* getHeap();
void setHeap(JKRHeap*);
/* 0x18 */ void* mAlloc;
/* 0x18 */ int mSize;
/* 0x20 */ JKRHeap* mHeap;
};
int DummyCheckHeap_init();
int DummyCheckHeap_create();
void DummyCheckHeap_destroy();
int DummyCheckHeap_isVirgin();
void DummyCheckHeap_check();
extern JKRExpHeap* zeldaHeap;
extern JKRExpHeap* gameHeap;
extern JKRExpHeap* archiveHeap;
extern JKRExpHeap* commandHeap;
extern DummyCheckHeap* dch;
#endif /* M_DO_M_DO_EXT_H */
+2
View File
@@ -6,6 +6,8 @@
class JKRExpHeap;
extern OSThread mainThread;
void version_check();
s32 LOAD_COPYDATE(void*);
+3
View File
@@ -5,6 +5,9 @@
#include "SSystem/SComponent/c_xyz.h"
#include <dolphin/mtx.h>
extern u8 g_printCurrentHeapDebug;
extern u8 g_printOtherHeapDebug;
void mDoMtx_XYZrotS(Mtx, s16, s16, s16);
void mDoMtx_XYZrotM(Mtx, s16, s16, s16);
void mDoMtx_ZXYrotS(Mtx, s16, s16, s16);
-9
View File
@@ -392,15 +392,6 @@ int fopAcM::HeapAdjustMargin =
0x10000;
#endif
struct DummyCheckHeap {
JKRHeap* getHeap();
void setHeap(JKRHeap* heap);
/* 0x0 */ JKRHeap* dummyHeap;
};
static DummyCheckHeap* dch = NULL;
bool fopAcM_entrySolidHeap_(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback, u32 i_size) {
#if DEBUG
s16 procProfName = fopAcM_GetProfName(i_actor);
+535 -191
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -864,7 +864,7 @@ void parse_args(int argc, const char* argv[]) {
static u8 mainThreadStack[32768];
static OSThread mainThread;
OSThread mainThread;
void main(int argc, const char* argv[]) {
OSThread* current_thread = OSGetCurrentThread();