summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
Diffstat (limited to 'src/d')
-rw-r--r--src/d/d_drawlist.cpp110
-rw-r--r--src/d/d_menu_letter.cpp174
-rw-r--r--src/d/d_simple_model.cpp85
3 files changed, 144 insertions, 225 deletions
diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp
index 52174aa350..aaa698ba56 100644
--- a/src/d/d_drawlist.cpp
+++ b/src/d/d_drawlist.cpp
@@ -19,6 +19,22 @@
class dDlst_blo_c : public dDlst_base_c {
public:
/* 80053B64 */ virtual void draw();
+ bool create(JKRArchive* param_1, char* param_2) {
+ return mScreen.setPriority(param_2,0x20000,param_1) != 0;
+ }
+
+ J2DPane* getPane(u64 i_tag) {
+ return mScreen.search(i_tag);
+ }
+
+ J2DPicture* getPicture(u64 i_tag) {
+ J2DPane* pane = getPane(i_tag);
+ JUT_ASSERT(1553, pane != 0);
+ if (pane->getTypeID() != 0x12) {
+ return NULL;
+ }
+ return (J2DPicture*)pane;
+ }
/* 0x004 */ int field_0x4;
/* 0x008 */ J2DScreen mScreen;
@@ -99,7 +115,7 @@ public:
int getCI() { return mCI; }
GXTexObj* getTexObj() { return &mTexObj; }
GXTlutObj* getTlutObj() { return &mTlutObj; }
- GXColor getColor() { return mColor; }
+ GXColor* getColor() { return &mColor; }
f32 getS() { return mS; }
f32 getT() { return mT; }
f32 getSw() { return mSw; }
@@ -190,14 +206,16 @@ void dDlst_window_c::setScissor(f32 xOrig, f32 yOrig, f32 width, f32 height) {
/* 80051AF0-80051CF0 04C430 0200+00 1/0 0/0 0/0 .text draw__13dDlst_2DTri_cFv */
void dDlst_2DTri_c::draw() {
+ f32 f4;
+ f32 f5;
f32 f2 = cM_scos(field_0xc);
f32 f3 = cM_ssin(field_0xc);
s16 x[3];
s16 y[3];
int r8 = 0;
for (int i = 0; i < 3; i++) {
- f32 f4 = field_0x10 * cM_ssin(r8);
- f32 f5 = field_0x14 * cM_scos(r8);
+ f4 = field_0x10 * cM_ssin(r8);
+ f5 = field_0x14 * cM_scos(r8);
x[i] = field_0x4 + s16(f4 * f2 + f5 * f3);
y[i] = field_0x6 + s16(f5 * f2 - f4 * f3);
r8 -= 0x5555;
@@ -213,7 +231,7 @@ void dDlst_2DTri_c::draw() {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3);
GXPosition3s16(x[0], y[0], 0);
@@ -236,7 +254,7 @@ void dDlst_2DQuad_c::draw() {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16((s32)mPosX, (s32)mPosY, 0);
@@ -261,7 +279,7 @@ void dDlst_2DPoint_c::draw() {
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
GXSetPointSize(field_0xc, GX_TO_ZERO);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetCurrentMtx(GX_PNMTX0);
GXBegin(GX_POINTS, GX_VTXFMT0, 1);
GXPosition3s16(field_0x4, field_0x6, 0);
@@ -306,7 +324,7 @@ void dDlst_2DT_c::draw() {
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(GX_TRUE);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetChanMatColor(GX_COLOR0A0, l_color);
GXSetClipMode(GX_CLIP_DISABLE);
GXSetCurrentMtx(GX_PNMTX0);
@@ -358,7 +376,7 @@ void dDlst_2DT2_c::draw() {
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(GX_TRUE);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetClipMode(GX_CLIP_DISABLE);
GXSetCurrentMtx(GX_PNMTX0);
f32 f31 = field_0x24 + field_0x2c;
@@ -430,10 +448,13 @@ void dDlst_2DT2_c::draw() {
f27 = 1.0f;
}
f32 f24;
+ f32 stack_38;
if (mScaleY == 0.0f) {
f24 = 1.0f;
+ stack_38 = 1.0f;
} else {
f24 = 0.5f - (1.0f / mScaleY) * 0.5f;
+ stack_38 = (1.0f / mScaleY) * 0.5f + 0.5f;
}
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
GXPosition2f32(field_0x24, field_0x28);
@@ -700,6 +721,7 @@ void dDlst_2DM_c::draw() {
s16 r25 = r27 + s16(field_0x1e * f4);
s16 r24 = r26 + s16(field_0x20 * f3);
GXTexObj tex[2];
+ void** stack_1c = &field_0x18;
GXInitTexObj(&tex[0], field_0x18, field_0x1e, field_0x20, GXTexFmt(field_0x1c), GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&tex[0], GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
GXTexWrapMode wrap = field_0xc ? GX_REPEAT : GX_CLAMP;
@@ -762,6 +784,7 @@ void dDlst_2Dm_c::draw() {
int r26 = field_0x7e * f30;
s16 r25 = r27 + s16(f31 * GXGetTexObjWidth(&field_0x1c));
s16 r24 = r26 + s16(f30 * GXGetTexObjHeight(&field_0x1c));
+ GXTexObj* stack_18 = &field_0x1c;
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 8);
@@ -796,7 +819,7 @@ void dDlst_2Dm_c::draw() {
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
- GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetCurrentMtx(0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16((s32)field_0x4, (s32)field_0x6, 0);
@@ -831,7 +854,7 @@ void dDlst_2DMt_c::draw() {
GXLoadTexObj(r27->getTexObj(), GXTexMapID(r28));
GXSetVtxAttrFmt(GX_VTXFMT0, GXAttr(GX_VA_TEX0 + r28), GX_CLR_RGBA, GX_RGBA6, 0);
GXSetVtxDesc(GXAttr(GX_VA_TEX0 + r28), GX_DIRECT);
- GXSetTevColor(GXTevRegID(GX_TEVREG0 + r28), r27->mColor);
+ GXSetTevColor(GXTevRegID(GX_TEVREG0 + r28), *r27->getColor());
GXSetTexCoordGen(GXTexCoordID(r28), GX_TG_MTX2x4, GXTexGenSrc(GX_TG_TEX0 + r28), GX_IDENTITY);
GXSetTevOrder(GXTevStageID(r28), GXTexCoordID(r28), GXTexMapID(r28), GX_COLOR_NULL);
GXSetTevColorIn(GXTevStageID(r28), GX_CC_ZERO, GXTevColorArg(GX_CC_C0 + r28*2), GX_CC_TEXC, r28 ? GX_CC_CPREV : GX_CC_ZERO);
@@ -852,51 +875,42 @@ void dDlst_2DMt_c::draw() {
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16(field_0xc, field_0xe, 0);
- dDlst_2DMt_tex_c* tmp = field_0x8;
+ r27 = field_0x8;
for (int i = 0; i < field_0x4; i++) {
- if (tmp->check()) {
- GXTexCoord2f32(tmp->getS(), tmp->getT());
+ if (r27->check()) {
+ GXTexCoord2f32(r27->getS(), r27->getT());
}
- tmp++;
+ r27++;
}
GXPosition3s16(field_0x10, field_0xe, 0);
- tmp = field_0x8;
+ r27 = field_0x8;
for (int i = 0; i < field_0x4; i++) {
- if (tmp->check()) {
- GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT());
+ if (r27->check()) {
+ GXTexCoord2f32(r27->getS() + r27->getSw(), r27->getT());
}
- tmp++;
+ r27++;
}
GXPosition3s16(field_0x10, field_0x12, 0);
- tmp = field_0x8;
+ r27 = field_0x8;
for (int i = 0; i < field_0x4; i++) {
- if (tmp->check()) {
- GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT() + tmp->getTw());
+ if (r27->check()) {
+ GXTexCoord2f32(r27->getS() + r27->getSw(), r27->getT() + r27->getTw());
}
- tmp++;
+ r27++;
}
GXPosition3s16(field_0xc, field_0x12, 0);
- tmp = field_0x8;
+ r27 = field_0x8;
for (int i = 0; i < field_0x4; i++) {
- if (tmp->check()) {
- GXTexCoord2f32(tmp->getS(), tmp->getT() + tmp->getTw());
+ if (r27->check()) {
+ GXTexCoord2f32(r27->getS(), r27->getT() + r27->getTw());
}
- tmp++;
+ r27++;
}
GXEnd();
dComIfGp_getCurrentGrafPort()->setup2D();
}
}
-/* 800539DC-80053A00 04E31C 0024+00 0/0 1/0 0/0 .text getTexture__10J2DPictureCFUc */
-// Should be inline
-JUTTexture* J2DPicture::getTexture(u8 param_0) const {
- if (param_0 < 2) {
- return mTexture[param_0];
- }
- return NULL;
-}
-
/* 80053A00-80053A9C 04E340 009C+00 0/0 1/1 0/0 .text __ct__10dDlst_2D_cFP7ResTIMGssssUc
*/
dDlst_2D_c::dDlst_2D_c(ResTIMG* i_timg, s16 i_posX, s16 i_posY, s16 i_sizeX, s16 i_sizeY,
@@ -932,9 +946,9 @@ f32 cM_rnd_c::get() {
seed0 = seed0 * 171 % 30269;
seed1 = seed1 * 172 % 30307;
seed2 = seed2 * 170 % 30323;
- f32 rm = fmodf((seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f), 1.0);
+ f32 newSeed = (seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f);
- return fabsf(rm);
+ return fabsf(fmodf(newSeed, 1.0));
}
/* 80053DE0-80053E18 04E720 0038+00 1/1 0/0 0/0 .text getF__8cM_rnd_cFf */
@@ -971,7 +985,7 @@ void dDlst_effectLine_c::draw() {
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetCullMode(GX_CULL_NONE);
- GXLoadPosMtxImm(j3dSys.mViewMtx, GX_PNMTX0);
+ GXLoadPosMtxImm(j3dSys.getViewMtx(), GX_PNMTX0);
GXSetClipMode(GX_CLIP_ENABLE);
GXSetCurrentMtx(0);
int r31 = getRndValue(field_0x20, field_0x22);
@@ -989,7 +1003,8 @@ void dDlst_effectLine_c::draw() {
local_74.z = field_0x10.z;
cMtx_multVec(dComIfGd_getInvViewMtx(), &local_68, &local_68);
cMtx_multVec(dComIfGd_getInvViewMtx(), &local_74, &local_74);
- GXSetLineWidth(getRndValue(field_0x24, field_0x26), GX_TO_ZERO);
+ tmp = getRndValue(field_0x24, field_0x26);
+ GXSetLineWidth(tmp, GX_TO_ZERO);
GXBegin(GX_LINES, GX_VTXFMT0, 2);
GXPosition3f32(local_68.x, local_68.y, local_68.z);
GXPosition3f32(local_74.x, local_74.y, local_74.z);
@@ -1026,6 +1041,7 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
dDlst_shadowTri_c* dst = getTri() + mCount;
+ cBgD_Vtx_t* vtx = i_vtx;
cXyz b(*i_plane->GetNP());
f32 temp_f3 = (1.0f - fabsf(b.y));
temp_f3 *= temp_f3;
@@ -1034,9 +1050,9 @@ int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 par
b.z *= temp_f3;
b *= 2.0f;
- VECAdd(&i_vtx[param_1], &b, &dst->mPos[0]);
- VECAdd(&i_vtx[param_2], &b, &dst->mPos[1]);
- VECAdd(&i_vtx[param_3], &b, &dst->mPos[2]);
+ PSVECAdd(&vtx[param_1], &b, &dst->mPos[0]);
+ PSVECAdd(&vtx[param_2], &b, &dst->mPos[1]);
+ PSVECAdd(&vtx[param_3], &b, &dst->mPos[2]);
mCount++;
return 1;
}
@@ -1062,7 +1078,8 @@ static J3DDrawBuffer* J3DDrawBuffer__create(u32 size) {
J3DDrawBuffer* buffer = new J3DDrawBuffer();
if (buffer) {
- if (buffer->allocBuffer(size) == kJ3DError_Success) {
+ J3DError error = buffer->allocBuffer(size);
+ if (error == kJ3DError_Success) {
return buffer;
}
delete buffer;
@@ -1079,15 +1096,18 @@ void dDlst_shadowReal_c::reset() {
/* 80054500-800545D4 04EE40 00D4+00 1/1 0/0 0/0 .text imageDraw__18dDlst_shadowReal_cFPA4_f */
void dDlst_shadowReal_c::imageDraw(Mtx param_0) {
GXSetProjection(mRenderProjMtx, GX_ORTHOGRAPHIC);
+ JUT_ASSERT(1916, mModelNum);
+ J3DModelData* model_data;
J3DModel** models = mpModels;
+ J3DShapePacket* shape_pkt;
for (u8 i = 0; i < mModelNum; i++) {
- J3DModelData* model_data = (*models)->getModelData();
+ model_data = (*models)->getModelData();
model_data->getShapeNodePointer(0)->loadPreDrawSetting();
for (u16 j = 0; j < model_data->getShapeNum(); j++) {
if (!model_data->getShapeNodePointer(j)->checkFlag(1)) {
- J3DShapePacket* shape_pkt = (*models)->getShapePacket(j);
+ shape_pkt = (*models)->getShapePacket(j);
shape_pkt->setBaseMtxPtr(&mViewMtx);
shape_pkt->drawFast();
shape_pkt->setBaseMtxPtr((Mtx*)param_0);
diff --git a/src/d/d_menu_letter.cpp b/src/d/d_menu_letter.cpp
index 58ca256446..691ab17117 100644
--- a/src/d/d_menu_letter.cpp
+++ b/src/d/d_menu_letter.cpp
@@ -20,138 +20,6 @@
#include "d/d_msg_scrn_arrow.h"
#include "d/d_lib.h"
-extern "C" void __ct__14dMenu_Letter_cFP10JKRExpHeapP9STControlP10CSTControl();
-extern "C" void __dt__14dMenu_Letter_cFv();
-extern "C" void _create__14dMenu_Letter_cFv();
-extern "C" void _move__14dMenu_Letter_cFv();
-extern "C" void _draw__14dMenu_Letter_cFv();
-extern "C" void isSync__14dMenu_Letter_cFv();
-extern "C" void letter_init_calc__14dMenu_Letter_cFv();
-extern "C" void init__14dMenu_Letter_cFv();
-extern "C" void _open__14dMenu_Letter_cFv();
-extern "C" void _close__14dMenu_Letter_cFv();
-extern "C" void wait_init__14dMenu_Letter_cFv();
-extern "C" void wait_move__14dMenu_Letter_cFv();
-extern "C" void slide_right_init__14dMenu_Letter_cFv();
-extern "C" void slide_right_move__14dMenu_Letter_cFv();
-extern "C" void slide_left_init__14dMenu_Letter_cFv();
-extern "C" void slide_left_move__14dMenu_Letter_cFv();
-extern "C" void read_open_init__14dMenu_Letter_cFv();
-extern "C" void read_open_move__14dMenu_Letter_cFv();
-extern "C" void read_move_init__14dMenu_Letter_cFv();
-extern "C" void read_move_move__14dMenu_Letter_cFv();
-extern "C" void read_next_fadeout_init__14dMenu_Letter_cFv();
-extern "C" void read_next_fadeout_move__14dMenu_Letter_cFv();
-extern "C" void read_next_fadein_init__14dMenu_Letter_cFv();
-extern "C" void read_next_fadein_move__14dMenu_Letter_cFv();
-extern "C" void read_close_init__14dMenu_Letter_cFv();
-extern "C" void read_close_move__14dMenu_Letter_cFv();
-extern "C" void screenSetMenu__14dMenu_Letter_cFv();
-extern "C" void getWhite__10J2DTextBoxCFv();
-extern "C" void getBlack__10J2DTextBoxCFv();
-extern "C" void getWhite__10J2DPictureCFv();
-extern "C" void getBlack__10J2DPictureCFv();
-extern "C" void screenSetBase__14dMenu_Letter_cFv();
-extern "C" void screenSetShadow__14dMenu_Letter_cFv();
-extern "C" void screenSetLetter__14dMenu_Letter_cFv();
-extern "C" void screenSetDoIcon__14dMenu_Letter_cFv();
-extern "C" void setCursorPos__14dMenu_Letter_cFv();
-extern "C" void changeActiveColor__14dMenu_Letter_cFv();
-extern "C" void changePageLight__14dMenu_Letter_cFv();
-extern "C" void setPageText__14dMenu_Letter_cFv();
-extern "C" void setDMYPageText__14dMenu_Letter_cFv();
-extern "C" void copyDMYMenu__14dMenu_Letter_cFv();
-extern "C" void setAButtonString__14dMenu_Letter_cFUs();
-extern "C" void setBButtonString__14dMenu_Letter_cFUs();
-extern "C" void getLetterNum__14dMenu_Letter_cFv();
-extern "C" void setHIO__14dMenu_Letter_cFb();
-extern "C" void
-getStringPage__12dMsgString_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc();
-extern "C" void draw__14dMenu_Letter_cFv();
-extern "C" void __sinit_d_menu_letter_cpp();
-extern "C" extern char const* const d_menu_d_menu_letter__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap();
-extern "C" void mDoExt_getMesgFont__Fv();
-extern "C" void mDoExt_getSubFont__Fv();
-extern "C" void create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap();
-extern "C" void checkUpTrigger__9STControlFv();
-extern "C" void checkDownTrigger__9STControlFv();
-extern "C" void onLetterGetFlag__17dSv_letter_info_cFi();
-extern "C" void onLetterReadFlag__17dSv_letter_info_cFi();
-extern "C" void isLetterReadFlag__17dSv_letter_info_cCFi();
-extern "C" void __ct__Q28JUtility6TColorFv();
-extern "C" void __ct__16dSelect_cursor_cFUcfP10JKRArchive();
-extern "C" void setPos__16dSelect_cursor_cFffP7J2DPaneb();
-extern "C" void setParam__16dSelect_cursor_cFfffff();
-extern "C" void setScale__16dSelect_cursor_cFf();
-extern "C" void setAlphaRate__16dSelect_cursor_cFf();
-extern "C" void getStringKanji__13dMeter2Info_cFUlPcP14JMSMesgEntry_c();
-extern "C" void dMeter2Info_getRecieveLetterNum__Fv();
-extern "C" void dMeter2Info_set2DVibration__Fv();
-extern "C" void __ct__15dMsgScrnArrow_cFv();
-extern "C" void draw__15dMsgScrnArrow_cFv();
-extern "C" void setPos__15dMsgScrnArrow_cFff();
-extern "C" void arwAnimeInit__15dMsgScrnArrow_cFv();
-extern "C" void arwAnimeMove__15dMsgScrnArrow_cFv();
-extern "C" void dotAnimeInit__15dMsgScrnArrow_cFv();
-extern "C" void dotAnimeMove__15dMsgScrnArrow_cFv();
-extern "C" void
-getStringPageLocal__16dMsgStringBase_cFUlUcUcP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc();
-extern "C" void getPageMax__16dMsgStringBase_cFi();
-extern "C" void __ct__12dMsgString_cFv();
-extern "C" void __dt__12dMsgString_cFv();
-extern "C" void __ct__8CPaneMgrFv();
-extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
-extern "C" void __dt__8CPaneMgrFv();
-extern "C" void paneTrans__8CPaneMgrFff();
-extern "C" void getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs();
-extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
-extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
-extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void func_802E90C0();
-extern "C" void getBounds__7J2DPaneFv();
-extern "C" void __ct__9J2DScreenFv();
-extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
-extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
-extern "C" void __ct__10J2DPictureFPC7ResTIMG();
-extern "C" void getStringPtr__10J2DTextBoxCFv();
-extern "C" void setString__10J2DTextBoxFsPCce();
-extern "C" void __construct_array();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_14();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_14();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__12dDlst_base_c[3];
-extern "C" u8 letter_data__12dMenu_Letter[512];
-extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
-extern "C" u8 mFader__13mDoGph_gInf_c[4];
-extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
/* 803BDA00-803BDA0C 01AB20 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -181,18 +49,6 @@ static moveFunc map_move_process[] = {
&dMenu_Letter_c::read_close_move,
};
-// /* 803BDB8C-803BDBA8 01ACAC 0010+0C 2/2 0/0 0/0 .data __vt__14dMenu_Letter_c */
-// SECTION_DATA extern void* __vt__14dMenu_Letter_c[4 + 3 /* padding */] = {
-// (void*)NULL /* RTTI */,
-// (void*)NULL,
-// (void*)draw__14dMenu_Letter_cFv,
-// (void*)__dt__14dMenu_Letter_cFv,
-// /* padding */
-// NULL,
-// NULL,
-// NULL,
-// };
-
/* 801DCDC0-801DCF34 1D7700 0174+00 0/0 2/2 0/0 .text
* __ct__14dMenu_Letter_cFP10JKRExpHeapP9STControlP10CSTControl */
dMenu_Letter_c::dMenu_Letter_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i_cstick) {
@@ -216,8 +72,7 @@ dMenu_Letter_c::dMenu_Letter_c(JKRExpHeap* i_heap, STControl* i_stick, CSTContro
letter_init_calc();
field_0x358 = 0.0f;
field_0x35c = 0.0f;
- field_0x364 = 1.0f;
- field_0x360 = 1.0f;
+ field_0x360 = field_0x364 = 1.0f;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 6; j++) {
field_0x376[i][j] = 0;
@@ -300,13 +155,13 @@ dMenu_Letter_c::~dMenu_Letter_c() {
}
if (mpMount != NULL) {
- mpMount->getArchive()->unmount();
- delete mpMount;
+ JKRUnmountArchive(mpMount->getArchive());
+ mpMount->destroy();
mpMount = NULL;
}
if (mpArchive != NULL) {
- mpArchive->unmount();
+ JKRUnmountArchive(mpArchive);
mpArchive = NULL;
}
dComIfGp_getMsgArchive(0)->removeResourceAll();
@@ -315,14 +170,21 @@ dMenu_Letter_c::~dMenu_Letter_c() {
/* 801DD36C-801DD474 1D7CAC 0108+00 1/1 0/0 0/0 .text _create__14dMenu_Letter_cFv */
void dMenu_Letter_c::_create() {
mpDrawCursor = new dSelect_cursor_c(2, 1.0f, NULL);
+ JUT_ASSERT(231, mpDrawCursor != 0);
+ #if VERSION == VERSION_SHIELD_DEBUG
+ mpDrawCursor->setParam(1.01f, 0.85f, 0.02f, 0.5f, 0.5f);
+ #else
mpDrawCursor->setParam(1.06f, 0.9f, 0.02f, 0.4f, 0.4f);
+ #endif
mpDrawCursor->setAlphaRate(0.0f);
mpDrawCursor->setScale(0.0f);
mpDrawCursor->offPlayAnime(0);
mpString = new dMsgString_c();
-
+ JUT_ASSERT(245, mpString != 0);
+
mpArrow = new dMsgScrnArrow_c();
+ JUT_ASSERT(249, mpArrow != 0);
screenSetMenu();
screenSetBase();
@@ -347,7 +209,6 @@ void dMenu_Letter_c::_move() {
}
/* 801DD50C-801DD934 1D7E4C 0428+00 1/1 1/1 0/0 .text _draw__14dMenu_Letter_cFv */
-// NONMATCHING - getGlobalVtx result copy issue
void dMenu_Letter_c::_draw() {
if (mpArchive == NULL) {
return;
@@ -363,10 +224,12 @@ void dMenu_Letter_c::_draw() {
GXGetScissor(&left, &top, &width, &height);
CPaneMgr afStack_138;
Mtx mtx;
- Vec local_178 = afStack_138.getGlobalVtx(field_0x1ec, &mtx, 0, false, 0);
+ Vec local_178;
+ local_178 = afStack_138.getGlobalVtx(field_0x1ec, &mtx, 0, false, 0);
f32 x1 = local_178.x;
f32 y1 = local_178.y;
- Vec local_184 = afStack_138.getGlobalVtx(field_0x1ec, &mtx, 3, false, 0);
+ Vec local_184;
+ local_184 = afStack_138.getGlobalVtx(field_0x1ec, &mtx, 3, false, 0);
f32 dVar17 = mDoGph_gInf_c::getWidthF() / 608.0f;
f32 dVar16 = mDoGph_gInf_c::getHeightF() / 448.0f;
f32 fVar1 = (x1 - mDoGph_gInf_c::getMinXF()) / dVar17;
@@ -1489,8 +1352,3 @@ void dMenu_Letter_c::setHIO(bool i_useHIO) {
}
}
}
-
-/* 801E1D5C-801E1D7C 1DC69C 0020+00 1/0 0/0 0/0 .text draw__14dMenu_Letter_cFv */
-void dMenu_Letter_c::draw() {
- _draw();
-}
diff --git a/src/d/d_simple_model.cpp b/src/d/d_simple_model.cpp
index 44d237e176..0085c29974 100644
--- a/src/d/d_simple_model.cpp
+++ b/src/d/d_simple_model.cpp
@@ -17,6 +17,12 @@
/* 80048C54-80048CB4 043594 0060+00 1/1 0/0 0/0 .text dSmplMdl_modelUpdateDL__FP8J3DModel
*/
static void dSmplMdl_modelUpdateDL(J3DModel* i_model) {
+ JUT_ASSERT(61, i_model != 0);
+ J3DModelData* modelData = i_model->getModelData();
+ if (modelData->getMaterialNodePointer(0)->getMaterialAnm() != NULL) {
+ OS_REPORT(
+ "\x1b[43;30mシンプルモデル描画:モデルは\'bmdg\'フォルダに置いていますか?\n\x1b[m");
+ }
i_model->calc();
i_model->entry();
i_model->viewCalc();
@@ -48,6 +54,8 @@ diff_model_c::diff_model_c() {
dSmplMdl_draw_c::~dSmplMdl_draw_c() {
for (int i = 0; i < 8; i++) {
if (mModel[i].getModel() != NULL) {
+ OS_REPORT("\x1b[43;30m差分DL用ダミーモデル削除忘れがあります!!\n");
+ OS_REPORT("差分DLモデル領域を強制的に削除します。\n", "\x1b[m");
mModel[i].remove(1);
}
}
@@ -82,24 +90,41 @@ void dSmplMdl_draw_c::entry(J3DModel* i_model, int roomNo) {
}
}
mListCount++;
+ } else {
+ OS_REPORT("\x1b[43;30mシンプルモデル描画エントリ数オーバー!!(%s, %d)\n\x1b[m",
+ __FILE__, 278);
}
}
/* 80048F70-80049058 0438B0 00E8+00 0/0 1/1 0/0 .text
* addModel__15dSmplMdl_draw_cFP12J3DModelDataiUc */
BOOL dSmplMdl_draw_c::addModel(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
+ JUT_ASSERT(307, i_modelData != 0);
+ if (roomNo == -1) {
+ OS_REPORT("\x1b[43;30mシンプルモデル描画差分DLモデル登録:部屋番号指定がありません!!!\n\x1b[m");
+ }
for (int i = 0; i < 8; i++) {
if (mModel[i].isSame(i_modelData, roomNo)) {
- return mModel[i].create(i_modelData, roomNo, drawBG) ? TRUE : FALSE;
+ if (mModel[i].create(i_modelData, roomNo, drawBG)) {
+ return TRUE;
+ }
+ return FALSE;
}
}
for (int i = 0; i < 8; i++) {
if (mModel[i].getModelData() == NULL) {
- return mModel[i].create(i_modelData, roomNo, drawBG) ? TRUE : FALSE;
+ if (mModel[i].create(i_modelData, roomNo, drawBG)) {
+ return TRUE;
+ }
+ return FALSE;
}
}
+ OS_REPORT(
+ "\x1b[43;30m差分DL用ダミーモデル空きエントリが見つかりませんでした!(%s, %d)\n\x1b[m",
+ __FILE__, 349);
+
return 0;
}
@@ -116,12 +141,14 @@ int dSmplMdl_draw_c::removeModel(J3DModelData* i_modelData, int roomNo) {
return 0;
}
}
-
+
+ OS_REPORT_ERROR("シンプルモデルを登録してないのに削除に!\n");
return 0;
}
/* 800490EC-800491F4 043A2C 0108+00 1/1 0/0 0/0 .text create__12diff_model_cFP12J3DModelDataiUc */
BOOL diff_model_c::create(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
+ JUT_ASSERT(397, i_modelData != 0);
if (mpHeap == NULL) {
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x2000, 0x20);
@@ -129,15 +156,20 @@ BOOL diff_model_c::create(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
mpModel = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
+ OS_REPORT("差分DL用モデル モデル生成失敗!(%s, %d)\n", __FILE__, 413);
remove(1);
mDoExt_restoreCurrentHeap();
} else {
- mpModel->setBaseScale(cXyz(0.0f, 0.0f, 0.0f));
- mpModel->setBaseTRMtx(g_mDoMtx_identity);
+ cXyz scale(0.0f, 0.0f, 0.0f);
+ mpModel->setBaseScale(scale);
+ mpModel->setBaseTRMtx(mDoMtx_getIdentity());
mCreateNum++;
- mDoExt_adjustSolidHeapToSystem(mpHeap);
+ int result = mDoExt_adjustSolidHeapToSystem(mpHeap);
mRoomNo = roomNo;
mDrawBG = drawBG;
+ #if VERSION == VERSION_SHIELD_DEBUG
+ field_0x12 = 0;
+ #endif
return 1;
}
}
@@ -162,9 +194,14 @@ void diff_model_c::remove(int param_0) {
mCreateNum--;
if (mCreateNum == 0 || param_0 != 0) {
- JKRSolidHeap* heap = mpHeap;
- if (heap != NULL) {
- mDoExt_destroySolidHeap(heap);
+ if (mpHeap != NULL) {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ if (field_0x12 != 0) {
+ JUT_WARN(510, "%s", "Simple Model Denger Remove !!\n");
+ }
+ #endif
+
+ mDoExt_destroySolidHeap(mpHeap);
init();
}
}
@@ -173,21 +210,25 @@ void diff_model_c::remove(int param_0) {
/* 80049270-80049368 043BB0 00F8+00 1/1 0/0 0/0 .text draw__12diff_model_cFv */
void diff_model_c::draw() {
modelList_c* list = mpList;
- if (list != NULL) {
- if (dComIfGp_roomControl_checkStatusFlag(getRoomNo(), 0x10)) {
- dKy_tevstr_c* tevstr = dComIfGp_roomControl_getTevStr(getRoomNo());
- g_env_light.setLightTevColorType_MAJI(mpModel, tevstr);
+ if (list != NULL && dComIfGp_roomControl_checkStatusFlag(getRoomNo(), 0x10)) {
+ g_env_light.setLightTevColorType_MAJI(mpModel, dComIfGp_roomControl_getTevStr(getRoomNo()));
- if (mDrawBG == 1) {
- dComIfGd_setListBG();
- }
+ if (mDrawBG == 1) {
+ dComIfGd_setListBG();
+ }
- for (; list != NULL; list = list->field_0x4) {
- dSmplMdl_modelUpdateDL(list->mpModel);
- }
- mDoExt_modelUpdateDL(mpModel);
- dComIfGd_setList();
+ for (; list != NULL; list = list->field_0x4) {
+ dSmplMdl_modelUpdateDL(list->mpModel);
}
+ mDoExt_modelUpdateDL(mpModel);
+ dComIfGd_setList();
+ #if VERSION == VERSION_SHIELD_DEBUG
+ field_0x12 = 1;
+ #endif
+ } else {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ field_0x12 = 0;
+ #endif
}
}
@@ -224,4 +265,4 @@ void diff_model_c::insert(modelList_c* list) {
}
list->field_0x4 = prev;
-} \ No newline at end of file
+}