add display state

This commit is contained in:
2026-05-04 22:16:30 -05:00
parent 31cc186424
commit 6edcf75a0c
11 changed files with 120 additions and 21 deletions
+26 -6
View File
@@ -75,10 +75,6 @@ errorret_t displayInitDolphin(void) {
)
);
// Setup cull modes
GX_SetCullMode(GX_CULL_NONE);
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
GX_SetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE);
GX_SetDispCopyGamma(GX_GM_1_0);
GX_SetColorUpdate(GX_TRUE);
@@ -103,12 +99,36 @@ errorret_t displayUpdateDolphin(void) {
errorOk();
}
errorret_t displaySetStateDolphin(displaystate_t state) {
if(state.flags & DISPLAY_STATE_FLAG_CULL) {
GX_SetCullMode(GX_CULL_BACK);
} else {
GX_SetCullMode(GX_CULL_NONE);
}
if(state.flags & DISPLAY_STATE_FLAG_DEPTH_TEST) {
GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
} else {
GX_SetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
}
if(state.flags & DISPLAY_STATE_FLAG_BLEND) {
GX_SetBlendMode(
GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR
);
} else {
GX_SetBlendMode(
GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR
);
}
errorOk();
}
errorret_t displaySwapDolphin(void) {
GX_DrawDone();
DISPLAY.whichFrameBuffer ^= 1;
// GX_SetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
// GX_SetColorUpdate(GX_TRUE);
GX_CopyDisp(DISPLAY.frameBuffer[DISPLAY.whichFrameBuffer], GX_TRUE);
VIDEO_SetNextFramebuffer(DISPLAY.frameBuffer[DISPLAY.whichFrameBuffer]);
VIDEO_Flush();
+7 -1
View File
@@ -7,6 +7,7 @@
#pragma once
#include "error/error.h"
#include "display/displaystate.h"
#define DISPLAY_DOLPHIN_FIFO_SIZE (256*1024)
@@ -30,4 +31,9 @@ errorret_t displayUpdateDolphin(void);
/**
* Swaps the display buffers on Dolphin.
*/
errorret_t displaySwapDolphin(void);
errorret_t displaySwapDolphin(void);
/**
* Sets the display state on Dolphin.
*/
errorret_t displaySetStateDolphin(displaystate_t state);
@@ -11,5 +11,6 @@
#define displayPlatformInit displayInitDolphin
#define displayPlatformUpdate displayUpdateDolphin
#define displayPlatformSwap displaySwapDolphin
#define displayPlatformSetState displaySetStateDolphin
typedef displaydolphin_t displayplatform_t;