From 9b1d9ced16a69d96b6b45ecd786d106d9c9daee7 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Fri, 29 Sep 2023 13:51:03 +1000 Subject: [PATCH] WIP for 3DS, Wii/GameCube, Dreamcast --- misc/dreamcast/Makefile | 4 +++- misc/dreamcast/boot_logo.png | Bin 4054 -> 4021 bytes src/Game.c | 2 +- src/Graphics_3DS.c | 41 ++++++++++++++++++++------------ src/Graphics_Dreamcast.c | 18 +++++++------- src/Graphics_GCWii.c | 3 ++- src/Window_GCWii.c | 34 +++++++++++++++++++------- third_party/gldc/Makefile | 2 +- third_party/gldc/include/gldc.h | 11 --------- third_party/gldc/src/draw.c | 41 ++------------------------------ third_party/gldc/src/private.h | 2 -- third_party/gldc/src/state.c | 3 --- 12 files changed, 68 insertions(+), 93 deletions(-) diff --git a/misc/dreamcast/Makefile b/misc/dreamcast/Makefile index d52976a2c..17b27ac69 100644 --- a/misc/dreamcast/Makefile +++ b/misc/dreamcast/Makefile @@ -4,6 +4,8 @@ SOURCE_DIRS := src third_party/bearssl/src C_FILES := $(foreach dir,$(SOURCE_DIRS),$(wildcard $(dir)/*.c)) OBJS := $(addprefix $(BUILD_DIR)/, $(notdir $(C_FILES:%.c=%.o))) CFLAGS :=-g -O1 -pipe -fno-math-errno -Ithird_party/bearssl/inc +LDFLAGS=-g +LIBS=-lm TARGET := ClassiCube-dc @@ -24,7 +26,7 @@ $(BUILD_DIR)/%.o: third_party/bearssl/src/%.c $(TARGET).elf: $(OBJS) - kos-cc $^ -o $@ + kos-cc $(LDFLAGS) $^ -o $@ $(LIBS) $(TARGET).bin: $(TARGET).elf sh-elf-objcopy -R .stack -O binary $(TARGET).elf $(TARGET).bin diff --git a/misc/dreamcast/boot_logo.png b/misc/dreamcast/boot_logo.png index 7a3ce03ce32676ccb84037d76a829984c6a7d601..eb243c85d9ac359dd4a0dab67581484f4fc9833d 100644 GIT binary patch delta 3972 zcmZ{nbyU-V*TzSWMq;!$B}GCoNGB*IsUo0*Q34_j(qms@v=YJyX;4s527;uF6iJ65 zC5#y1MoQyG{CMBB6C&!BsDpAa`PD) zay;i+il}^hf)m8-i8bD6)-MnBP}bwm{cf(uw<_eNXpnd(KY#OYjB45t1RL0{O%DGg zXbPWcK;d3#jOjDS4gj3s1bH3>&f42Cf|HDV8?$Lv(w$S zK9CKRd#&G>fIZIII<38hB!A;dW70}q?c@Ku6wG~a1$}wx0TWKiEkV-5H1Y%Q?NcBs z&?wL5$S|*2dwlyL%(s;&Yr5mK2$VW!;t=(11}Sga?z|P-!nBAE99clUR$IEUngxjZ zzTX2mN#t=|+>UF8mqFrf=kK9?{�ic9~@u6uEYEb2t@nt9s*NjLNN#dZt2vp!Eg5 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%0Dh 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 h: yx_yx_xx_xx - // e.g. h > w: yx_yx_yy_yy + // Twiddled index looks like this (lowest numbered bits are leftmost): + // - w = h: yxyx yxyx + // - w > h: yxyx xxxx + // - h > w: yxyx yyyy // And can therefore be broken down into two components: // 1) interleaved lower bits // 2) masked and then shifted higher bits @@ -484,8 +486,6 @@ static CC_NOINLINE void UnshiftTextureCoords(int count) { static void Gfx_FreeState(void) { FreeDefaultResources(); } static void Gfx_RestoreState(void) { InitDefaultResources(); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); gfx_format = -1; glAlphaFunc(GL_GREATER, 0.5f); @@ -519,10 +519,8 @@ void Gfx_SetVertexFormat(VertexFormat fmt) { gfx_stride = strideSizes[fmt]; if (fmt == VERTEX_FORMAT_TEXTURED) { - glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); } else { - glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_2D); } } diff --git a/src/Graphics_GCWii.c b/src/Graphics_GCWii.c index c34b7f983..ca9b9871d 100644 --- a/src/Graphics_GCWii.c +++ b/src/Graphics_GCWii.c @@ -48,12 +48,13 @@ static void InitGX(void) { } void Gfx_Create(void) { + if (!Gfx.Created) InitGX(); + Gfx.MaxTexWidth = 512; Gfx.MaxTexHeight = 512; Gfx.Created = true; gfx_vsync = true; - InitGX(); Gfx_RestoreState(); } diff --git a/src/Window_GCWii.c b/src/Window_GCWii.c index 357f7cd38..bc74a72c4 100644 --- a/src/Window_GCWii.c +++ b/src/Window_GCWii.c @@ -16,6 +16,7 @@ #include #endif +static cc_bool needsFBUpdate; static cc_bool launcherMode; static void* xfb; static GXRModeObj* rmode; @@ -31,13 +32,7 @@ static void OnPowerOff(void) { WindowInfo.Exists = false; Window_Close(); } - -void Window_Init(void) { - // TODO: SYS_SetResetCallback(reload); too? not sure how reset differs on GC/WII - #if defined HW_RVL - SYS_SetPowerCallback(OnPowerOff); - #endif - +static void InitVideo(void) { // Initialise the video system VIDEO_Init(); @@ -61,6 +56,14 @@ void Window_Init(void) { VIDEO_Flush(); // Wait for Video setup to complete VIDEO_WaitVSync(); +} + +void Window_Init(void) { + // TODO: SYS_SetResetCallback(reload); too? not sure how reset differs on GC/WII + #if defined HW_RVL + SYS_SetPowerCallback(OnPowerOff); + #endif + InitVideo(); DisplayInfo.Width = rmode->fbWidth; DisplayInfo.Height = rmode->xfbHeight; @@ -81,8 +84,14 @@ void Window_Init(void) { PAD_Init(); } -void Window_Create2D(int width, int height) { launcherMode = true; } -void Window_Create3D(int width, int height) { launcherMode = false; } +void Window_Create2D(int width, int height) { + needsFBUpdate = true; + launcherMode = true; +} + +void Window_Create3D(int width, int height) { + launcherMode = false; +} void Window_Close(void) { Event_RaiseVoid(&WindowEvents.Closing); @@ -465,6 +474,13 @@ static u32 CvtRGB (u8 r1, u8 g1, u8 b1, u8 r2, u8 g2, u8 b2) } void Window_DrawFramebuffer(Rect2D r) { + // When coming back from the 3D game, framebuffer might have changed + if (needsFBUpdate) { + VIDEO_SetNextFramebuffer(xfb); + VIDEO_Flush(); + needsFBUpdate = false; + } + VIDEO_WaitVSync(); r.X &= ~0x01; // round down to nearest even horizontal index diff --git a/third_party/gldc/Makefile b/third_party/gldc/Makefile index 10dcad132..e0949b7b9 100644 --- a/third_party/gldc/Makefile +++ b/third_party/gldc/Makefile @@ -24,5 +24,5 @@ default: $(TARGET) kos-cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -c $< -o $@ $(TARGET): $(OBJS) - kos-ar cr $@ $< + kos-ar cr $@ $^ kos-ranlib $@ diff --git a/third_party/gldc/include/gldc.h b/third_party/gldc/include/gldc.h index 832f22850..2d2993cba 100644 --- a/third_party/gldc/include/gldc.h +++ b/third_party/gldc/include/gldc.h @@ -97,11 +97,6 @@ __BEGIN_DECLS /* Fog */ #define GL_FOG 0x0004 /* capability bit */ -/* Client state caps */ -#define GL_VERTEX_ARRAY 0x8074 -#define GL_COLOR_ARRAY 0x8076 -#define GL_TEXTURE_COORD_ARRAY 0x8078 - #define GL_FRONT_AND_BACK 0x0408 #define GL_FRONT 0x0404 #define GL_BACK 0x0405 @@ -126,9 +121,6 @@ __BEGIN_DECLS #define GL_INVALID_OPERATION 0x0502 #define GL_OUT_OF_MEMORY 0x0505 -/* GetPName */ -#define GL_MAX_TEXTURE_SIZE 0x0D33 - /* StringName */ #define GL_VENDOR 0x1F00 #define GL_RENDERER 0x1F01 @@ -259,9 +251,6 @@ GLAPI void glVertexPointer(GLint size, GLenum type, GLAPI void glDrawArrays(GLenum mode, GLint first, GLsizei count); GLAPI void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); -GLAPI void glEnableClientState(GLenum cap); -GLAPI void glDisableClientState(GLenum cap); - /* Transformation / Matrix Functions */ GLAPI void glViewport(GLint x, GLint y, GLsizei width, GLsizei height); diff --git a/third_party/gldc/src/draw.c b/third_party/gldc/src/draw.c index d72f072a5..c5cf11164 100644 --- a/third_party/gldc/src/draw.c +++ b/third_party/gldc/src/draw.c @@ -10,7 +10,6 @@ static void* VERTEX_PTR; static GLsizei VERTEX_STRIDE; -static GLuint ENABLED_VERTEX_ATTRIBUTES; extern GLboolean AUTOSORT_ENABLED; @@ -59,7 +58,7 @@ static void generateQuads(SubmissionTarget* target, const GLsizei first, const G /* Copy the pos, uv and color directly in one go */ const GLubyte* pos = VERTEX_PTR; - const GLubyte* uv = (ENABLED_VERTEX_ATTRIBUTES & UV_ENABLED_FLAG) ? VERTEX_PTR : NULL; + const GLubyte* uv = TEXTURES_ENABLED ? VERTEX_PTR : NULL; const GLubyte* col = VERTEX_PTR; Vertex* dst = start; @@ -332,43 +331,7 @@ void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count) { submitVertices(mode, first, count); } -void APIENTRY glEnableClientState(GLenum cap) { - TRACE(); - - switch(cap) { - case GL_VERTEX_ARRAY: - ENABLED_VERTEX_ATTRIBUTES |= VERTEX_ENABLED_FLAG; - break; - case GL_COLOR_ARRAY: - ENABLED_VERTEX_ATTRIBUTES |= DIFFUSE_ENABLED_FLAG; - break; - case GL_TEXTURE_COORD_ARRAY: - ENABLED_VERTEX_ATTRIBUTES |= UV_ENABLED_FLAG; - break; - default: - _glKosThrowError(GL_INVALID_ENUM, __func__); - } -} - -void APIENTRY glDisableClientState(GLenum cap) { - TRACE(); - - switch(cap) { - case GL_VERTEX_ARRAY: - ENABLED_VERTEX_ATTRIBUTES &= ~VERTEX_ENABLED_FLAG; - break; - case GL_COLOR_ARRAY: - ENABLED_VERTEX_ATTRIBUTES &= ~DIFFUSE_ENABLED_FLAG; - break; - case GL_TEXTURE_COORD_ARRAY: - ENABLED_VERTEX_ATTRIBUTES &= ~UV_ENABLED_FLAG; - break; - default: - _glKosThrowError(GL_INVALID_ENUM, __func__); - } -} - void APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) { VERTEX_PTR = pointer; VERTEX_STRIDE = stride; -} +} \ No newline at end of file diff --git a/third_party/gldc/src/private.h b/third_party/gldc/src/private.h index 9ebba2332..929a3d832 100644 --- a/third_party/gldc/src/private.h +++ b/third_party/gldc/src/private.h @@ -41,8 +41,6 @@ extern void* memcpy4 (void *dest, const void *src, size_t count); #define ST_ENABLED_FLAG (1 << 2) #define DIFFUSE_ENABLED_FLAG (1 << 3) -#define MAX_TEXTURE_SIZE 1024 - typedef struct { unsigned int flags; /* Constant PVR_CMD_USERCLIP */ unsigned int d1, d2, d3; /* Ignored for this type */ diff --git a/third_party/gldc/src/state.c b/third_party/gldc/src/state.c index 0c06ba4fa..5d6f94e8b 100644 --- a/third_party/gldc/src/state.c +++ b/third_party/gldc/src/state.c @@ -467,9 +467,6 @@ void _glApplyScissor(bool force) { void APIENTRY glGetIntegerv(GLenum pname, GLint *params) { switch(pname) { - case GL_MAX_TEXTURE_SIZE: - *params = MAX_TEXTURE_SIZE; - break; case GL_TEXTURE_FREE_MEMORY_ATI: case GL_FREE_TEXTURE_MEMORY_KOS: *params = _glFreeTextureMemory();