summaryrefslogtreecommitdiff
path: root/src/d/d_menu_window.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-03-14 01:46:21 -0700
committerGitHub <noreply@github.com>2025-03-14 04:46:21 -0400
commit60748d0924e29c315a5402429a9d71fcc7615cd9 (patch)
tree83137c55f81a2072fab5054ee9f3d86cfff7f2f9 /src/d/d_menu_window.cpp
parent34c5d8272e8ac93d20ab68e7632c7ed862dd67f1 (diff)
b_dr equivalent, update dtk-template (#2327)
* d_a_tag_allmato almost done * d_a_swhit0 done * some SSystem cleanup * treesh done * swball done, some other rel cleanup * b_dr equivalent * update dtk-template * rename j3dframectrl mode enum
Diffstat (limited to 'src/d/d_menu_window.cpp')
-rw-r--r--src/d/d_menu_window.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/d/d_menu_window.cpp b/src/d/d_menu_window.cpp
index 19c9151844..6fb7f2624a 100644
--- a/src/d/d_menu_window.cpp
+++ b/src/d/d_menu_window.cpp
@@ -22,6 +22,86 @@
#include "f_op/f_op_overlap_mng.h"
#include "m_Do/m_Do_controller_pad.h"
+class dDlst_MENU_CAPTURE_c : public dDlst_base_c {
+public:
+ virtual void draw() {
+ if (getDrawFlag() == 1) {
+ setDrawFlag();
+ dComIfGp_onPauseFlag();
+ GXSetTexCopySrc(0, 0, 608, 448);
+ GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE);
+ GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
+ GXPixModeSync();
+ } else {
+ GXTexObj tex;
+ GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), 304, 224,
+ (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
+ GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
+ GXLoadTexObj(&tex, GX_TEXMAP0);
+ GXSetNumChans(0);
+ GXSetNumTexGens(1);
+ GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125);
+ GXSetNumTevStages(1);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ const GXColor color = {0, 0, 0, mAlpha};
+ GXSetTevColor(GX_TEVREG0, color);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetZCompLoc(GX_TRUE);
+ GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
+ GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_OR);
+ GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
+ GXSetFogRangeAdj(GX_FALSE, 0, NULL);
+ GXSetCullMode(GX_CULL_NONE);
+ GXSetDither(GX_TRUE);
+ GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
+ GXSetCurrentMtx(0);
+ GXClearVtxDesc();
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
+
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+ GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), 0);
+ GXTexCoord2s8(0, 0);
+
+ GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMinY(), 0);
+ GXTexCoord2s8(1, 0);
+
+ GXPosition3s16(mDoGph_gInf_c::getMaxX(), mDoGph_gInf_c::getMaxY(), 0);
+ GXTexCoord2s8(1, 1);
+
+ GXPosition3s16(mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMaxY(), 0);
+ GXTexCoord2s8(0, 1);
+ GXEnd();
+ }
+ }
+
+ virtual ~dDlst_MENU_CAPTURE_c() {}
+
+ dDlst_MENU_CAPTURE_c() {
+ mFlag = 0;
+ mAlpha = 255;
+ mTopFlag = 0;
+ }
+
+ void setCaptureFlag() { mFlag = 1; }
+ bool checkDraw() { return mFlag; }
+ u8 getAlpha() { return mAlpha; }
+ u8 getTopFlag() { return mTopFlag; }
+ u8 getDrawFlag() { return mFlag; }
+ void setDrawFlag() { mFlag = 3; }
+
+private:
+ /* 0x4 */ u8 mFlag;
+ /* 0x5 */ u8 mAlpha;
+ /* 0x6 */ u8 mTopFlag;
+};
+
BOOL dMw_UP_TRIGGER() {
return mDoCPd_c::getTrigUp(PAD_1) != 0;
}