From 647fb43ccd04844c49df84dc1b469b5bb9384693 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 11 Mar 2025 07:37:01 +1100 Subject: [PATCH] PS1: Fix launcher not drawing in pcsx-redux software mode --- misc/ps1/ps1defs.h | 6 ++++++ src/Window_PS1.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/misc/ps1/ps1defs.h b/misc/ps1/ps1defs.h index 06726aadf..a23ded427 100644 --- a/misc/ps1/ps1defs.h +++ b/misc/ps1/ps1defs.h @@ -6,6 +6,7 @@ enum dma_chrc_CMD { CHRC_FROM_RAM = (1 << 0), CHRC_DIR_DECREMENT = (1 << 1), CHRC_MODE_SLICE = (1 << 9), + CHRC_MODE_CHAIN = (1 << 10), CHRC_BEGIN_XFER = (1 << 24), CHRC_NO_DREQ_WAIT = (1 << 28), }; @@ -21,6 +22,7 @@ enum gp0_cmd_type { GP0_CMD_CLEAR_VRAM_CACHE = 0x01000000, GP0_CMD_TRANSFER_TO_VRAM = 0xA0000000, GP0_CMD_POLYGON = 0x20000000, + GP0_CMD_RECTANGLE = 0x60000000, }; enum gp0_polycmd_flags { @@ -29,6 +31,10 @@ enum gp0_polycmd_flags { POLY_CMD_SEMITRNS = 1u << 25, }; +enum gp0_rectcmd_flags { + RECT_CMD_1x1 = 1u << 27, +}; + enum gp1_cmd_type { GP1_CMD_DISPLAY_ACTIVE = 0x03000000, GP1_CMD_DMA_MODE = 0x04000000, diff --git a/src/Window_PS1.c b/src/Window_PS1.c index e97fee398..cf25c293a 100644 --- a/src/Window_PS1.c +++ b/src/Window_PS1.c @@ -212,6 +212,10 @@ void Window_AllocFramebuffer(struct Bitmap* bmp, int width, int height) { } void Window_DrawFramebuffer(Rect2D r, struct Bitmap* bmp) { + // Fix not drawing in pcsx-redux software mode + GPU_GP0 = GP0_CMD_RECTANGLE | RECT_CMD_1x1; + GPU_GP0 = (0 << 16) | 0; + Gfx_TransferToVRAM(0, 0, SCREEN_XRES, SCREEN_YRES, bmp->scan0); }