diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-01-25 12:24:14 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-25 21:24:14 +0100 |
| commit | 612f26c132280da43ecfa5fa8c8cc32966f06eb6 (patch) | |
| tree | ac20d071712cf830ec526222c98d340d90721f77 /src/m_Do | |
| parent | 6f4d068f1d7c5a9f25f1920e64e5b10dc29aea07 (diff) | |
d_kankyo_wether / d_eye_hl (#178)
* d_eye_hl / d_kankyo_wether wip
* more d_kankyo_wether + format
* remove asm
* some d_kankyo wip
* fix dccs vtable
* some m_Do_graphic / d_meter2_draw work
Diffstat (limited to 'src/m_Do')
| -rw-r--r-- | src/m_Do/m_Do_ext.cpp | 9 | ||||
| -rw-r--r-- | src/m_Do/m_Do_graphic.cpp | 476 | ||||
| -rw-r--r-- | src/m_Do/m_Do_machine.cpp | 4 | ||||
| -rw-r--r-- | src/m_Do/m_Do_mtx.cpp | 81 |
4 files changed, 278 insertions, 292 deletions
diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 18c0856a13..dc2924dfa1 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -721,7 +721,7 @@ asm void mDoExt_brkAnm::entry(J3DMaterialTable* param_0, f32 param_1) { /* ############################################################################################## */ /* 803A3020-803A30C0 000140 0085+1B 1/1 0/0 0/0 .data l_invisibleMat$7041 */ -SECTION_DATA static u8 l_invisibleMat[133 + 27 /* padding */] = { +SECTION_DATA static u8 l_invisibleMat[133 + 27 /* padding */] ALIGN_DECL(32) = { 0x10, 0x00, 0x00, @@ -2075,7 +2075,8 @@ asm mDoExt_invJntPacket::mDoExt_invJntPacket() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DPacket::~J3DPacket() { +// asm J3DPacket::~J3DPacket() { +extern "C" asm void __dt__9J3DPacketFv() { nofralloc #include "asm/m_Do/m_Do_ext/__dt__9J3DPacketFv.s" } @@ -3172,7 +3173,7 @@ static asm void mDoExt_initFont0() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_getMesgFont() { +asm JUTFont* mDoExt_getMesgFont() { nofralloc #include "asm/m_Do/m_Do_ext/mDoExt_getMesgFont__Fv.s" } @@ -3277,7 +3278,7 @@ asm void mDoExt_removeSubFont() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_J3DModel__create(J3DModelData* param_0, u32 param_1, u32 param_2) { +asm J3DModel* mDoExt_J3DModel__create(J3DModelData* param_0, u32 param_1, u32 param_2) { nofralloc #include "asm/m_Do/m_Do_ext/mDoExt_J3DModel__create__FP12J3DModelDataUlUl.s" } diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index e92b25e23a..36d0be5ede 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -4,93 +4,24 @@ // #include "m_Do/m_Do_graphic.h" +#include "JSystem/JFramework/JFWSystem.h" +#include "SSystem/SComponent/c_lib.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "f_ap/f_ap_game.h" +#include "m_Do/m_Do_controller_pad.h" +#include "m_Do/m_Do_machine.h" +#include "m_Do/m_Do_mtx.h" // // Types: // -struct view_port_class {}; - -struct view_class {}; - -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct mDoMch_render_c { - static void* mRenderModeObj[1 + 1 /* padding */]; -}; - -struct daPy_py_c { - /* 8000B1E4 */ s32 getAtnActorID() const; -}; - -struct JPADrawInfo {}; - -struct dPa_control_c { - /* 8004C134 */ void calcMenu(); - /* 8004C188 */ void draw(JPADrawInfo*, u8); -}; - -struct dMenu_Collect3D_c { - /* 801B75E8 */ void setupItem3D(f32 (*)[4]); -}; - -struct dDlst_shadowControl_c { - /* 800557C8 */ void imageDraw(f32 (*)[4]); - /* 80055A14 */ void draw(f32 (*)[4]); -}; - -struct J3DDrawBuffer {}; - -struct dDlst_base_c {}; - -struct dDlst_list_c { - /* 80056390 */ void init(); - /* 80056538 */ void reset(); - /* 800566D4 */ void drawOpaDrawList(J3DDrawBuffer*); - /* 80056710 */ void drawXluDrawList(J3DDrawBuffer*); - /* 8005674C */ void drawOpaListItem3d(); - /* 80056770 */ void drawXluListItem3d(); - /* 800567C4 */ void draw(dDlst_base_c**, dDlst_base_c**); - /* 80056900 */ void calcWipe(); -}; - -struct dAttention_c { - /* 800737E4 */ void LockonTruth(); -}; - -struct cXyz { - /* 80009184 */ ~cXyz(); - - static f32 Zero[3]; -}; - -struct JUTGamePad { - static u8 mPadStatus[48]; -}; - -struct JUTDbPrint { - static u8 sDebugPrint[4 + 4 /* padding */]; -}; - struct JMath { static u8 sincosTable_[65536]; }; -struct JKRSolidHeap {}; - -struct JFWSystem { - static u8 systemConsole[4]; -}; - -struct J3DSys { - /* 803100BC */ void drawInit(); - /* 8031073C */ void reinitGX(); -}; - struct J2DPrint { /* 802F4658 */ void setBuffer(u32); }; @@ -210,23 +141,16 @@ extern "C" void _restgpr_21(); extern "C" void _restgpr_24(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); -extern "C" void strcmp(); -extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */]; extern "C" extern void* __vt__14J2DGrafContext[10]; extern "C" extern void* __vt__13J2DOrthoGraph[10]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_HIO[64 + 4 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 mPadStatus__10JUTGamePad[48]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 data_80450580; +extern "C" extern s8 data_80450580; extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */]; -extern "C" extern u8 g_clearColor[4]; -extern "C" extern u32 g_whiteColor; -extern "C" extern u32 __float_nan; +; extern "C" u8 systemConsole__9JFWSystem[4]; extern "C" u8 sManager__10JFWDisplay[4]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; @@ -240,47 +164,60 @@ extern "C" u8 sManager__10JUTProcBar[4]; // /* 80007D9C-80007E44 0026DC 00A8+00 1/1 0/0 0/0 .text createTimg__FUsUsUl */ +// extra mr optimized out? +#ifdef NONMATCHING +static ResTIMG* createTimg(u16 width, u16 height, u32 format) { + u32 buf_size = GXGetTexBufferSize(width, height, format, GX_FALSE, 0) + 0x20; + ResTIMG* timg = (ResTIMG*)JKRHeap::alloc(buf_size, 0x20, NULL); + + if (timg == NULL) { + return NULL; + } else { + cLib_memSet(timg, 0, buf_size); + timg->format = format; + timg->alphaEnabled = false; + timg->width = width; + timg->height = height; + timg->minFilter = GX_LINEAR; + timg->magFilter = GX_LINEAR; + timg->mipmapCount = 1; + timg->texDataOffset = 0x20; + } + return timg; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void createTimg(u16 param_0, u16 param_1, u32 param_2) { +static asm ResTIMG* createTimg(u16 param_0, u16 param_1, u32 param_2) { nofralloc #include "asm/m_Do/m_Do_graphic/createTimg__FUsUsUl.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80450590-80450594 000010 0004+00 2/2 1/1 0/0 .sdata mBackColor__13mDoGph_gInf_c */ -SECTION_SDATA u8 mDoGph_gInf_c::mBackColor[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +GXColor mDoGph_gInf_c::mBackColor = {0, 0, 0, 0}; /* 80450594-80450598 000014 0004+00 4/4 3/3 0/0 .sdata mFadeColor__13mDoGph_gInf_c */ -SECTION_SDATA u8 mDoGph_gInf_c::mFadeColor[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; +GXColor mDoGph_gInf_c::mFadeColor = {0, 0, 0, 0}; /* 80450BC8-80450BCC 0000C8 0004+00 2/2 38/38 1/1 .sbss mFader__13mDoGph_gInf_c */ JUTFader* mDoGph_gInf_c::mFader; /* 80450BCC-80450BD0 0000CC 0004+00 3/3 8/8 1/1 .sbss mFrameBufferTimg__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mFrameBufferTimg[4]; +ResTIMG* mDoGph_gInf_c::mFrameBufferTimg; /* 80450BD0-80450BD4 0000D0 0004+00 3/3 6/6 0/0 .sbss mFrameBufferTex__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mFrameBufferTex[4]; +void* mDoGph_gInf_c::mFrameBufferTex; /* 80450BD4-80450BD8 0000D4 0004+00 1/1 1/1 0/0 .sbss mZbufferTimg__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mZbufferTimg[4]; +ResTIMG* mDoGph_gInf_c::mZbufferTimg; /* 80450BD8-80450BDC 0000D8 0004+00 3/3 1/1 0/0 .sbss mZbufferTex__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mZbufferTex[4]; +void* mDoGph_gInf_c::mZbufferTex; /* 80450BDC-80450BE0 0000DC 0004+00 3/3 3/3 1/1 .sbss mFadeRate__13mDoGph_gInf_c */ f32 mDoGph_gInf_c::mFadeRate; @@ -293,8 +230,17 @@ f32 mDoGph_gInf_c::mFadeSpeed; /* 80450BE5 0001+00 data_80450BE5 None */ /* 80450BE6 0001+00 data_80450BE6 None */ /* 80450BE7 0001+00 data_80450BE7 None */ -extern u8 struct_80450BE4[4]; -u8 struct_80450BE4[4]; +extern u8 struct_80450BE4; +u8 struct_80450BE4; + +#pragma push +#pragma force_active on +static bool data_80450BE5; + +static u8 data_80450BE6; + +static bool data_80450BE7; +#pragma pop /* 80007E44-80007F90 002784 014C+00 1/1 0/0 0/0 .text create__13mDoGph_gInf_cFv */ #pragma push @@ -308,17 +254,15 @@ asm void mDoGph_gInf_c::create() { /* ############################################################################################## */ /* 80450BE8-80450BF0 0000E8 0008+00 1/1 0/0 0/0 .sbss None */ -static u8 data_80450BE8[8]; +static bool data_80450BE8; /* 80007F90-80007FD8 0028D0 0048+00 1/1 2/2 0/0 .text beginRender__13mDoGph_gInf_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::beginRender() { - nofralloc -#include "asm/m_Do/m_Do_graphic/beginRender__13mDoGph_gInf_cFv.s" +void mDoGph_gInf_c::beginRender() { + if (data_80450BE8) { + JUTXfb::getManager()->setDrawingXfbIndex(-1); + } + JFWDisplay::getManager()->beginRender(); } -#pragma pop /* ############################################################################################## */ /* 80451A38-80451A3C 000038 0004+00 11/11 0/0 0/0 .sdata2 @4062 */ @@ -333,74 +277,110 @@ SECTION_SDATA2 static u8 lit_4062[4] = { SECTION_SDATA2 static f32 lit_4063 = 1.0f; /* 80007FD8-80008028 002918 0050+00 1/1 6/4 15/15 .text fadeOut__13mDoGph_gInf_cFfR8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::fadeOut(f32 param_0, _GXColor& param_1) { - nofralloc -#include "asm/m_Do/m_Do_graphic/fadeOut__13mDoGph_gInf_cFfR8_GXColor.s" +void mDoGph_gInf_c::fadeOut(f32 fadeSpeed, GXColor& fadeColor) { + data_80450BE6 = 1; + mFadeSpeed = fadeSpeed; + mFadeColor = fadeColor; + + f32 tmp_0 = FLOAT_LABEL(lit_4062); + if (fadeSpeed >= tmp_0) { + mFadeRate = tmp_0; + } else { + mFadeRate = lit_4063; + } } -#pragma pop /* 80008028-80008078 002968 0050+00 0/0 0/0 2/2 .text fadeOut_f__13mDoGph_gInf_cFfR8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::fadeOut_f(f32 param_0, _GXColor& param_1) { - nofralloc -#include "asm/m_Do/m_Do_graphic/fadeOut_f__13mDoGph_gInf_cFfR8_GXColor.s" +void mDoGph_gInf_c::fadeOut_f(f32 fadeSpeed, GXColor& fadeColor) { + data_80450BE6 = 129; + mFadeSpeed = fadeSpeed; + mFadeColor = fadeColor; + + f32 tmp_0 = FLOAT_LABEL(lit_4062); + if (fadeSpeed >= tmp_0) { + mFadeRate = tmp_0; + } else { + mFadeRate = lit_4063; + } } -#pragma pop /* 80008078-800080A0 0029B8 0028+00 0/0 1/1 8/8 .text onBlure__13mDoGph_gInf_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::onBlure() { - nofralloc -#include "asm/m_Do/m_Do_graphic/onBlure__13mDoGph_gInf_cFv.s" +void mDoGph_gInf_c::onBlure() { + onBlure(g_mDoMtx_identity); } -#pragma pop /* ############################################################################################## */ /* 803DD3E8-803DD408 00A108 0020+00 3/3 3/3 0/0 .bss mFrameBufferTexObj__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mFrameBufferTexObj[32]; +GXTexObj mDoGph_gInf_c::mFrameBufferTexObj; /* 803DD408-803DD428 00A128 0020+00 1/1 0/0 0/0 .bss mZbufferTexObj__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mZbufferTexObj[32]; +GXTexObj mDoGph_gInf_c::mZbufferTexObj; /* 803DD428-803DD43C 00A148 0014+00 2/2 3/3 0/0 .bss m_bloom__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::m_bloom[20]; +mDoGph_gInf_c::bloom_c mDoGph_gInf_c::m_bloom; /* 803DD43C-803DD470 00A15C 0030+04 2/2 0/0 0/0 .bss mBlureMtx__13mDoGph_gInf_c */ -u8 mDoGph_gInf_c::mBlureMtx[48 + 4 /* padding */]; +Mtx mDoGph_gInf_c::mBlureMtx; /* 800080A0-800080D0 0029E0 0030+00 1/1 1/1 0/0 .text onBlure__13mDoGph_gInf_cFPA4_Cf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::onBlure(f32 const (*param_0)[4]) { - nofralloc -#include "asm/m_Do/m_Do_graphic/onBlure__13mDoGph_gInf_cFPA4_Cf.s" +void mDoGph_gInf_c::onBlure(const Mtx m) { + struct_80450BE4 = 1; + PSMTXCopy(m, mBlureMtx); } -#pragma pop /* 800080D0-800080F4 002A10 0024+00 0/0 3/3 7/7 .text fadeOut__13mDoGph_gInf_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::fadeOut(f32 param_0) { - nofralloc -#include "asm/m_Do/m_Do_graphic/fadeOut__13mDoGph_gInf_cFf.s" +void mDoGph_gInf_c::fadeOut(f32 fadeSpeed) { + fadeOut(fadeSpeed, g_clearColor); } -#pragma pop /* ############################################################################################## */ /* 80451A40-80451A44 000040 0004+00 5/5 0/0 0/0 .sdata2 @4105 */ SECTION_SDATA2 static f32 lit_4105 = 10.0f; /* 800080F4-80008330 002A34 023C+00 1/1 0/0 0/0 .text darwFilter__F8_GXColor */ +// matches with literals +#ifdef NONMATCHING +static void darwFilter(GXColor matColor) { + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, + GX_AF_NONE); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV); + GXSetZCompLoc(GX_ENABLE); + GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_OR); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); + f32 tmp_0 = FLOAT_LABEL(lit_4062); + GXSetFog(GX_FOG_NONE, tmp_0, tmp_0, tmp_0, tmp_0, g_clearColor); + GXSetFogRangeAdj(GX_DISABLE, 0, NULL); + GXSetCullMode(GX_CULL_NONE); + GXSetDither(GX_ENABLE); + GXSetNumIndStages(0); + + Mtx44 mtx; + f32 tmp_0_2 = FLOAT_LABEL(lit_4062); + C_MTXOrtho(mtx, tmp_0_2, lit_4063, tmp_0_2, lit_4063, tmp_0_2, lit_4105); + GXSetProjection(mtx, GX_ORTHOGRAPHIC); + GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0); + GXSetChanMatColor(GX_COLOR0A0, matColor); + GXSetCurrentMtx(0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3s8(0, 0, -5); + GXPosition3s8(1, 0, -5); + GXPosition3s8(1, 1, -5); + GXPosition3s8(0, 1, -5); + GXEnd(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -409,12 +389,44 @@ static asm void darwFilter(_GXColor param_0) { #include "asm/m_Do/m_Do_graphic/darwFilter__F8_GXColor.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451A44-80451A48 000044 0004+00 1/1 0/0 0/0 .sdata2 @4131 */ SECTION_SDATA2 static f32 lit_4131 = 255.0f; /* 80008330-8000841C 002C70 00EC+00 1/1 0/0 0/0 .text calcFade__13mDoGph_gInf_cFv */ +// li instead of addi +#ifdef NONMATCHING +void mDoGph_gInf_c::calcFade() { + if (data_80450BE6) { + mFadeRate += mFadeSpeed; + + if (mFadeRate < 0.0f) { + mFadeRate = 0.0f; + data_80450BE6 = false; + } else { + if (mFadeRate > 1.0f) { + mFadeRate = 1.0f; + } + } + mFadeColor.a = lit_4131 * mFadeRate; + } else { + if (dComIfG_getBrightness() != 255) { + mFadeColor.r = 0; + mFadeColor.g = 0; + mFadeColor.b = 0; + mFadeColor.a = 255 - dComIfG_getBrightness(); + } else { + mFadeColor.a = 0; + } + } + + if (mFadeColor.a != 0) { + darwFilter(mFadeColor); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -423,6 +435,7 @@ asm void mDoGph_gInf_c::calcFade() { #include "asm/m_Do/m_Do_graphic/calcFade__13mDoGph_gInf_cFv.s" } #pragma pop +#endif /* 8000841C-80008420 002D5C 0004+00 0/0 1/0 0/0 .text mDoGph_BlankingON__Fv */ void mDoGph_BlankingON() { @@ -435,26 +448,58 @@ void mDoGph_BlankingOFF() { } /* 80008424-80008450 002D64 002C+00 1/1 0/0 0/0 .text dScnPly_BeforeOfPaint__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dScnPly_BeforeOfPaint() { - nofralloc -#include "asm/m_Do/m_Do_graphic/dScnPly_BeforeOfPaint__Fv.s" +static void dScnPly_BeforeOfPaint() { + dComIfGd_reset(); } -#pragma pop /* 80008450-80008474 002D90 0024+00 0/0 1/0 0/0 .text mDoGph_BeforeOfDraw__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_BeforeOfDraw() { - nofralloc -#include "asm/m_Do/m_Do_graphic/mDoGph_BeforeOfDraw__Fv.s" +int mDoGph_BeforeOfDraw() { + dScnPly_BeforeOfPaint(); + return 1; } -#pragma pop /* 80008474-80008630 002DB4 01BC+00 0/0 1/0 0/0 .text mDoGph_AfterOfDraw__Fv */ +// r6 / r7 swapped +#ifdef NONMATCHING +int mDoGph_AfterOfDraw() { + if (fapGmHIO_isMenu()) { + JUTProcBar::getManager()->setVisible(false); + JUTProcBar::getManager()->setVisibleHeapBar(false); + JUTDbPrint::getManager()->setVisible(true); + } else { + int sysConsole_visible = JFWSystem::getSystemConsole()->isVisible(); + int port3_connected = mDoCPd_c::isConnect(mDoCPd_c::PAD_2); + + BOOL procBar_visible = port3_connected && fapGmHIO_getMeter() && !sysConsole_visible; + BOOL console_visible = port3_connected && fapGmHIO_isPrint(); + + // Dev mode check + if (!data_80450580) { + procBar_visible = false; + console_visible = false; + } + + JUTProcBar::getManager()->setVisible(procBar_visible); + JUTProcBar::getManager()->setVisibleHeapBar(procBar_visible); + JUTDbPrint::getManager()->setVisible(console_visible); + } + + GXSetZCompLoc(GX_ENABLE); + GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR); + GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); + GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); + GXSetFogRangeAdj(GX_DISABLE, 0, NULL); + GXSetCoPlanar(GX_DISABLE); + GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0); + GXSetDither(GX_ENABLE); + GXSetClipMode(GX_DISABLE); + GXSetCullMode(GX_CULL_NONE); + JUTVideo::getManager()->setRenderMode(mDoMch_render_c::getRenderModeObj()); + mDoGph_gInf_c::endFrame(); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -463,6 +508,7 @@ asm void mDoGph_AfterOfDraw() { #include "asm/m_Do/m_Do_graphic/mDoGph_AfterOfDraw__Fv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80450598-8045059C 000018 0004+00 1/1 0/0 0/0 .sdata l_tevColor0$4208 */ @@ -561,7 +607,8 @@ static asm void drawDepth2(view_class* param_0, view_port_class* param_1, int pa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/m_Do/m_Do_graphic/__dt__4cXyzFv.s" } @@ -586,40 +633,43 @@ static asm void trimming(view_class* param_0, view_port_class* param_1) { #pragma pop /* 800094B4-80009544 003DF4 0090+00 2/2 1/1 0/0 .text mDoGph_drawFilterQuad__FScSc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_drawFilterQuad(s8 param_0, s8 param_1) { - nofralloc -#include "asm/m_Do/m_Do_graphic/mDoGph_drawFilterQuad__FScSc.s" +void mDoGph_drawFilterQuad(s8 param_0, s8 param_1) { + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2s8(0, 0); + GXTexCoord2s8(0, 0); + GXPosition2s8(param_0, 0); + GXTexCoord2s8(1, 0); + GXPosition2s8(param_0, param_1); + GXTexCoord2s8(1, 1); + GXPosition2s8(0, param_1); + GXTexCoord2s8(0, 1); + GXEnd(); } -#pragma pop - -/* ############################################################################################## */ -/* 80451AB0-80451AB4 0000B0 0004+00 1/1 0/0 0/0 .sdata2 @4505 */ -SECTION_SDATA2 static u32 lit_4505 = 0xFFFFFFFF; /* 80009544-800095F8 003E84 00B4+00 0/0 1/1 0/0 .text create__Q213mDoGph_gInf_c7bloom_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::bloom_c::create() { - nofralloc -#include "asm/m_Do/m_Do_graphic/create__Q213mDoGph_gInf_c7bloom_cFv.s" +void mDoGph_gInf_c::bloom_c::create() { + if (m_buffer == NULL) { + u32 size = GXGetTexBufferSize(304, 224, 6, GX_FALSE, 0); + m_buffer = mDoExt_getArchiveHeap()->alloc(size, -32); + mEnable = false; + mMode = 0; + mPoint = 128; + mBlureSize = 64; + mBlureRatio = 128; + mBlendColor = (GXColor){255, 255, 255, 255}; + } } -#pragma pop /* 800095F8-80009650 003F38 0058+00 0/0 1/1 0/0 .text remove__Q213mDoGph_gInf_c7bloom_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_gInf_c::bloom_c::remove() { - nofralloc -#include "asm/m_Do/m_Do_graphic/remove__Q213mDoGph_gInf_c7bloom_cFv.s" +void mDoGph_gInf_c::bloom_c::remove() { + if (m_buffer != NULL) { + mDoExt_getArchiveHeap()->free(m_buffer); + m_buffer = NULL; + } + mMonoColor.a = 0; } -#pragma pop /* ############################################################################################## */ /* 80451AB4-80451AB8 0000B4 0004+00 1/1 0/0 0/0 .sdata2 @4528 */ @@ -689,6 +739,19 @@ SECTION_SDATA2 static f32 lit_4641 = -35000.0f; SECTION_SDATA2 static f32 lit_4642 = -30000.0f; /* 8000A504-8000A58C 004E44 0088+00 1/1 0/0 0/0 .text setLight__Fv */ +// matches with literals +#ifdef NONMATCHING +static void setLight() { + GXLightObj obj; + + GXInitLightPos(&obj, -35000.0f, 0.0f, -30000.0f); + GXInitLightDir(&obj, 0.0f, 0.0f, 0.0f); + GXInitLightColor(&obj, g_whiteColor); + GXInitLightDistAttn(&obj, 0.0f, 0.0f, GX_DA_GENTLE); + GXInitLightSpot(&obj, 0.0f, GX_SP_FLAT); + GXLoadLightObjImm(&obj, GX_LIGHT0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -697,16 +760,19 @@ static asm void setLight() { #include "asm/m_Do/m_Do_graphic/setLight__Fv.s" } #pragma pop +#endif /* 8000A58C-8000A604 004ECC 0078+00 1/1 0/0 0/0 .text drawItem3D__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void drawItem3D() { - nofralloc -#include "asm/m_Do/m_Do_graphic/drawItem3D__Fv.s" +static void drawItem3D() { + Mtx item_mtx; + dMenu_Collect3D_c::setupItem3D(item_mtx); + setLight(); + j3dSys.setViewMtx(item_mtx); + GXSetClipMode(GX_ENABLE); + dComIfGd_drawListItem3d(); + GXSetClipMode(GX_DISABLE); + j3dSys.reinitGX(); } -#pragma pop /* ############################################################################################## */ /* 80373DD0-80373DD0 000430 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -771,14 +837,14 @@ asm J2DOrthoGraph::~J2DOrthoGraph() { #pragma pop /* 8000B174-8000B1D0 005AB4 005C+00 0/0 2/1 0/0 .text mDoGph_Create__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoGph_Create() { - nofralloc -#include "asm/m_Do/m_Do_graphic/mDoGph_Create__Fv.s" +int mDoGph_Create() { + JKRSolidHeap* heap = mDoExt_createSolidHeapToCurrent(0, NULL, 0); + mDoGph_gInf_c::create(); + dComIfGd_init(); + mDoExt_adjustSolidHeap(heap); + mDoExt_restoreCurrentHeap(); + return 1; } -#pragma pop /* 8000B1D0-8000B1E4 005B10 0014+00 0/0 1/0 0/0 .text __sinit_m_Do_graphic_cpp */ #pragma push diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index aea800a5a2..e3bb00cece 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -18,10 +18,6 @@ struct mDoMemCd_Ctrl_c { /* 80016730 */ void ThdInit(); }; -struct mDoMch_render_c { - static _GXRenderModeObj* mRenderModeObj; -}; - struct mDoDvdThd { /* 80015858 */ void create(s32); }; diff --git a/src/m_Do/m_Do_mtx.cpp b/src/m_Do/m_Do_mtx.cpp index 9075b8eebf..57fd2f3922 100644 --- a/src/m_Do/m_Do_mtx.cpp +++ b/src/m_Do/m_Do_mtx.cpp @@ -51,7 +51,6 @@ extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion(); extern "C" void __sinit_m_Do_mtx_cpp(); extern "C" void __dt__18mDoMtx_quatStack_cFv(); extern "C" void __dt__14mDoMtx_stack_cFv(); -extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 buffer__14mDoMtx_stack_c[768]; extern "C" void* next__14mDoMtx_stack_c; @@ -462,84 +461,8 @@ asm mDoMtx_stack_c::~mDoMtx_stack_c() { /* ############################################################################################## */ /* 803A2FD8-803A3020 0000F8 0030+18 0/0 23/23 4/4 .data g_mDoMtx_identity */ -SECTION_DATA extern u8 g_mDoMtx_identity[48 + 24 /* padding */] = { - 0x3F, - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3F, - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x3F, - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* SECTION_DATA extern Mtx g_mDoMtx_identity = { +SECTION_DATA extern Mtx g_mDoMtx_identity = { {1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}, -}; */ +}; |
