A few m_Do_ext funcs

This commit is contained in:
LagoLunatic
2023-10-14 23:29:28 -04:00
parent db8f4615b2
commit 98140ed1cd
4 changed files with 185 additions and 33 deletions
+42 -2
View File
@@ -9,6 +9,11 @@
class Vec;
class JAISound;
class JKRSolidHeap;
namespace JAInter {
class Actor;
};
class JAIAnimeFrameSoundData;
class JAIZelBasic {
public:
JAIZelBasic();
@@ -249,9 +254,44 @@ public:
/* 0x1F44 */ u8 field_0x1F44[0x20F4 - 0x1F44];
};
class JAIZelAnime {
struct JAIAnimeSound__Slot {
/* 0x0 */ u8 mbIsPlaying;
/* 0x4 */ JAISound* mpSound;
/* 0x8 */ void* mpData;
};
class JAIAnimeSound {
public:
/* 0x0 */ u8 field_0x0[0x98];
JAIAnimeSound();
public:
/* 0x00 */ JAIAnimeSound__Slot mSlots[8];
/* 0x60 */ u32 m60;
/* 0x64 */ u32 m64;
/* 0x68 */ u32 m68;
/* 0x6C */ u32 m6C;
/* 0x70 */ void* m70[2];
/* 0x78 */ int mDataCounterInc;
/* 0x7C */ int mDataCounterLimit;
/* 0x80 */ u32 mDataCounter;
/* 0x84 */ int mLoopCount;
/* 0x88 */ f32 mCurrentTime;
/* 0x8C */ u8 m8C[0x90 - 0x8C];
/* 0x90 */ u16* mpData;
/* 0x94 */ /* vtable */
virtual void startAnimSound(void*, u32, JAISound**, JAInter::Actor*, u8);
virtual void setSpeedModifySound(JAISound*, JAIAnimeFrameSoundData*, f32);
void stop();
}; // Size: 0x98
class JAIZelAnime : public JAIAnimeSound {
public:
JAIZelAnime() { }
virtual void startAnimSound(void*, u32, JAISound**, JAInter::Actor*, u8);
virtual void setSpeedModifySound(JAISound*, JAIAnimeFrameSoundData*, f32);
};
#endif /* JAZELAUDIO_JAIZELBASIC_H */
+4
View File
@@ -391,6 +391,8 @@ public:
void setMenuArchive(JKRArchive * pArc) { mpMenuArchive = pArc; }
void setFont0Archive(JKRArchive * pArc) { mpFont0Archive = pArc; }
void setFont1Archive(JKRArchive * pArc) { mpFont1Archive = pArc; }
JKRArchive* getFontArchive() { return mpFont0Archive; }
JKRArchive* getRubyArchive() { return mpFont1Archive; }
void setAnmArchive(JKRArchive * pArc) { mpAnmArchive = pArc; }
void setLkDArc(JKRArchive * pArc) { mpLkDArc = pArc; }
void setFmapArchive(JKRArchive * pArc) { mpFmapArchive = pArc; }
@@ -1821,6 +1823,8 @@ inline void dComIfGp_setTmsgArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play
inline void dComIfGp_setMenuArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setMenuArchive(pArc); }
inline void dComIfGp_setFont0Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFont0Archive(pArc); }
inline void dComIfGp_setFont1Archive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFont1Archive(pArc); }
inline JKRArchive* dComIfGp_getFontArchive() { return g_dComIfG_gameInfo.play.getFontArchive(); }
inline JKRArchive* dComIfGp_getRubyArchive() { return g_dComIfG_gameInfo.play.getRubyArchive(); }
inline void dComIfGp_setLkDArc(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setLkDArc(pArc); }
inline void dComIfGp_setFmapArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setFmapArchive(pArc); }
inline void dComIfGp_setItemResArchive(JKRArchive * pArc) { g_dComIfG_gameInfo.play.setItemResArchive(pArc); }
+26 -1
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/JUtility/JUTFont.h"
#include "JAZelAudio/JAIZelBasic.h"
#include "d/d_kankyo.h"
class JKRArchive;
@@ -298,7 +299,13 @@ public:
virtual void execute(u16) = 0;
};
class mDoExt_zelAnime;
class mDoExt_zelAnime : public JAIZelAnime {
public:
mDoExt_zelAnime() { }
public:
/* 0x98 */ u8 m8C[0x9C - 0x98];
}; // Size: 0x9C
class mDoExt_McaMorf : public J3DMtxCalcMaya {
public:
@@ -505,6 +512,12 @@ public:
~mDoExt_3Dline_c();
int init(u16, int, int);
public:
/* 0x00 */ cXyz* mpSegments;
/* 0x04 */ u8* mpSize;
/* 0x08 */ cXyz* mPosArr[2];
/* 0x10 */ cXy* mTexArr[2];
};
class mDoExt_3DlineMat0_c {
@@ -525,6 +538,18 @@ public:
void update(u16, f32, GXColor&, u16, dKy_tevstr_c*);
void update(u16, GXColor&, dKy_tevstr_c*);
int getMaterialID();
public:
/* 0x00 */ mDoExt_3DlineMat_c parent;
/* 0x08 */ GXTexObj mTexObj;
/* 0x28 */ GXColor mColor;
/* 0x2C */ dKy_tevstr_c* mpTevStr;
/* 0x30 */ u16 mNumLines;
/* 0x32 */ u16 m32;
/* 0x34 */ u16 m34;
/* 0x36 */ u8 mCurArr;
/* 0x37 */ u8 m37[0x38 - 0x37];
/* 0x38 */ mDoExt_3Dline_c* mpLines;
};
J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 i_modelFlag, u32 i_differedDlistFlag);
+113 -30
View File
@@ -9,6 +9,8 @@
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JMath/JMath.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTCacheFont.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "SSystem/SComponent/c_m3d.h"
#include "d/d_com_inf_game.h"
#include "d/d_s_play.h"
@@ -837,7 +839,7 @@ JKRExpHeap* mDoExt_getZeldaHeap() {
s32 safeZeldaHeapSize;
/* 800118C8-800118F0 .text mDoExt_setSafeZeldaHeapSize__Fv */
int mDoExt_setSafeZeldaHeapSize() {
void mDoExt_setSafeZeldaHeapSize() {
safeZeldaHeapSize = mDoExt_getZeldaHeap()->getTotalFreeSize();
}
@@ -1155,7 +1157,7 @@ void mDoExt_MtxCalcOldFrame::decOldFrameMorfCounter() {
/* 80012650-800129E4 .text __ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl */
mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1, mDoExt_McaMorfCallBack2_c* callback2, J3DAnmTransform* anmTransform, int param_4, f32 param_5, int param_6, int param_7, int param_8, void* param_9, u32 param_10, u32 param_11) {
/* Nonmatching */
/* Nonmatching - JGeometry::TVec3<f32> ctor */
mpModel = NULL;
mpSound = NULL;
mpTransformInfo = NULL;
@@ -1184,7 +1186,7 @@ mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_
}
}
if (param_8) {
//mpSound = new mDoExt_zelAnime();
mpSound = new mDoExt_zelAnime();
if (!mpSound) {
goto cleanup;
}
@@ -1196,25 +1198,25 @@ mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_
goto cleanup;
}
mpQuat = new Quaternion[modelData->getJointNum()];
if (!mpQuat) {
goto cleanup;
if (mpQuat) {
J3DTransformInfo* info = mpTransformInfo;
Quaternion* quat = mpQuat;
J3DModelData* r23 = mpModel->getModelData();
u16 jointNum = r23->getJointNum();
for (int i = 0; i < jointNum; i++) {
*info = r23->getJointNodePointer(i)->getTransformInfo();
JMAEulerToQuat(info->mRotation.x, info->mRotation.y, info->mRotation.z, quat);
info++;
quat++;
}
mpCallback1 = callback1;
mpCallback2 = callback2;
return;
}
J3DTransformInfo* info = mpTransformInfo;
Quaternion* quat = mpQuat;
J3DModelData* r23 = mpModel->getModelData();
u16 jointNum = r23->getJointNum();
for (int i = 0; i < jointNum; i++) {
*info = r23->getJointNodePointer(i)->getTransformInfo();
JMAEulerToQuat(info->mRotation.x, info->mRotation.y, info->mRotation.z, quat);
info++;
quat++;
}
mpCallback1 = callback1;
mpCallback2 = callback2;
return;
cleanup:
cleanup:
if (mpSound) {
//mpSound->stopAnime();
mpSound->stop();
mpSound = NULL;
}
if (mpTransformInfo) {
@@ -1509,6 +1511,8 @@ void mDoExt_3DlineMat1_c::update(u16, f32, _GXColor&, u16, dKy_tevstr_c*) {
/* 80015E54-80016518 .text update__19mDoExt_3DlineMat1_cFUsR8_GXColorP12dKy_tevstr_c */
void mDoExt_3DlineMat1_c::update(u16, _GXColor&, dKy_tevstr_c*) {
/* Nonmatching */
u8* size_p = mpLines->mpSize;
JUT_ASSERT(5243, size_p != 0);
}
/* 80016518-8001657C .text setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c */
@@ -1522,38 +1526,117 @@ void mDoExt_3DlineMatSortPacket::draw() {
}
/* 800165E4-8001683C .text mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl */
void mDoExt_initFontCommon(JUTFont**, ResFONT**, JKRHeap*, const char*, JKRArchive*, u8, u32, u32) {
/* Nonmatching */
void mDoExt_initFontCommon(JUTFont** p_font, ResFONT** p_resfont, JKRHeap* p_heap, const char* param_4,
JKRArchive* p_archive, u8 param_6, u32 param_7, u32 param_8) {
JUTFont* mDoExt_font = *p_font;
JUT_ASSERT(6648, mDoExt_font == 0);
ResFONT* mDoExt_resfont = *p_resfont;
JUT_ASSERT(6649, mDoExt_resfont == 0);
*p_resfont = (ResFONT*)p_archive->getGlbResource('ROOT', param_4, p_archive);
mDoExt_resfont = *p_resfont;
JUT_ASSERT(6651, mDoExt_resfont != 0);
if (param_6 == 0) {
u32 temp = (((param_8+0x1F) & ~0x1F) + 0x40) * param_7;
JUTCacheFont* cacheFont = new(p_heap, 0) JUTCacheFont(*p_resfont, temp, p_heap);
if (cacheFont->isValid()) {
*p_font = cacheFont;
}
JKRFileLoader::removeResource(*p_resfont, NULL);
*p_resfont = NULL;
} else {
JUTResFont* resFont = new JUTResFont(*p_resfont, p_heap);
*p_font = resFont;
}
if (*p_font && !(*p_font)->isValid()) {
// "\nFailed to create cache font class\n"
OSReport_FatalError("\nキャッシュフォントクラス作成に失敗しました\n");
delete *p_font;
*p_font = NULL;
}
mDoExt_font = *p_font;
JUT_ASSERT(6685, mDoExt_font != 0);
}
JUTFont* mDoExt_font0;
ResFONT* mDoExt_resfont0;
s32 mDoExt_font0_getCount;
/* 80016884-800168E0 .text mDoExt_initFont0__Fv */
void mDoExt_initFont0() {
/* Nonmatching */
static const char fontdata[] = "rock_24_20_4i_usa.bfn";
mDoExt_initFontCommon(&mDoExt_font0, &mDoExt_resfont0, mDoExt_getZeldaHeap(), fontdata, dComIfGp_getFontArchive(), 1, 0, 0);
}
/* 800168E0-8001691C .text mDoExt_getMesgFont__Fv */
void mDoExt_getMesgFont() {
/* Nonmatching */
JUTFont* mDoExt_getMesgFont() {
if (!mDoExt_font0) {
mDoExt_initFont0();
}
mDoExt_font0_getCount++;
return mDoExt_font0;
}
/* 8001691C-80016A1C .text mDoExt_removeMesgFont__Fv */
void mDoExt_removeMesgFont() {
/* Nonmatching */
JUT_ASSERT(6736, mDoExt_font0_getCount > 0);
if (mDoExt_font0_getCount > 0) {
mDoExt_font0_getCount--;
JUT_ASSERT(6739, mDoExt_font0_getCount > 0);
if (mDoExt_font0_getCount == 0) {
delete mDoExt_font0;
mDoExt_font0 = NULL;
if (mDoExt_resfont0) {
JKRHeap::free(mDoExt_resfont0, NULL);
mDoExt_resfont0 = NULL;
}
}
}
}
JUTFont* mDoExt_font1;
ResFONT* mDoExt_resfont1;
s32 mDoExt_font1_getCount;
/* 80016A1C-80016A7C .text mDoExt_initFont1__Fv */
void mDoExt_initFont1() {
/* Nonmatching */
static const char fontdata[] = "hyrule.bfn";
mDoExt_initFontCommon(&mDoExt_font1, &mDoExt_resfont1, mDoExt_getZeldaHeap(), fontdata, dComIfGp_getRubyArchive(), 1, 1, 0x8000);
}
/* 80016A7C-80016AB8 .text mDoExt_getRubyFont__Fv */
void mDoExt_getRubyFont() {
/* Nonmatching */
JUTFont* mDoExt_getRubyFont() {
if (!mDoExt_font1) {
mDoExt_initFont1();
}
mDoExt_font1_getCount++;
return mDoExt_font1;
}
/* 80016AB8-80016BB8 .text mDoExt_removeRubyFont__Fv */
void mDoExt_removeRubyFont() {
/* Nonmatching */
JUT_ASSERT(6790, mDoExt_font1_getCount > 0);
if (mDoExt_font1_getCount > 0) {
mDoExt_font1_getCount--;
JUT_ASSERT(6793, mDoExt_font1_getCount > 0);
if (mDoExt_font1_getCount == 0) {
delete mDoExt_font1;
mDoExt_font1 = NULL;
if (mDoExt_resfont1) {
JKRHeap::free(mDoExt_resfont1, NULL);
mDoExt_resfont1 = NULL;
}
}
}
}
/* 80016BB8-80016C98 .text mDoExt_J3DModel__create__FP12J3DModelDataUlUl */