diff --git a/src/DisplayLoadProgress.cpp b/src/DisplayLoadProgress.cpp index 647ca326..d47b9f50 100644 --- a/src/DisplayLoadProgress.cpp +++ b/src/DisplayLoadProgress.cpp @@ -11,6 +11,7 @@ void displayLoadProgress(const wchar_t *format, ...) { +#ifndef NO_LOAD_PROGRESS_DISPLAY va_list args; wchar_t wbuf[INFO_BUF]; char buf[INFO_BUF]; @@ -46,4 +47,5 @@ void displayLoadProgress(const wchar_t *format, ...) if (pBuffer != nullptr) gfxContext.bindFramebuffer(graphics::bufferTarget::DRAW_FRAMEBUFFER, pBuffer->m_FBO); +#endif } diff --git a/src/DisplayWindow.h b/src/DisplayWindow.h index a1cf83d4..92383eb4 100644 --- a/src/DisplayWindow.h +++ b/src/DisplayWindow.h @@ -38,6 +38,7 @@ public: bool isFullscreen() const { return m_bFullscreen; } bool isAdjustScreen() const { return m_bAdjustScreen; } bool isResizeWindow() const { return m_bResizeWindow; } + void forceResizeWindow() { m_bResizeWindow = true; resizeWindow(); } GraphicsDrawer & getDrawer() { return m_drawer; } diff --git a/src/native/Native.cpp b/src/native/Native.cpp index acc8f191..3ee314dd 100644 --- a/src/native/Native.cpp +++ b/src/native/Native.cpp @@ -15,7 +15,8 @@ #define START_WIDTH 1280 #define START_HEIGHT 720 -static u64 g_width = START_WIDTH; +static u64 g_originalWidth = START_WIDTH;//Size set by the end-user +static u64 g_width = START_WIDTH;//Current size static u64 g_height = START_HEIGHT; extern "C" { @@ -92,13 +93,20 @@ N64Regs::~N64Regs() { extern "C" { + //Called when the end-user changes the window size void gfx_resize(long width, long height) { - g_width = width; + g_originalWidth = width; + + if (config.frameBufferEmulation.aspect == 1)//Running in 4:3 mode? + g_width = (height*4)/3; + else + g_width = width; g_height = height; - config.video.windowedWidth = g_width; - config.video.windowedHeight = g_height; - dwnd().setWindowSize(g_width, g_height); + + config.video.windowedWidth = width; + config.video.windowedHeight = height; + dwnd().setWindowSize(width, height); } } @@ -133,6 +141,23 @@ extern "C" { api().RomOpen(romName); } + void gfx_force_43(bool enable) { + const u32 newAspectRatio = enable ? 1 : 3; + + if (config.frameBufferEmulation.aspect == newAspectRatio) + return;//Already set + + config.frameBufferEmulation.aspect = enable ? 1 : 3; + dwnd().forceResizeWindow();//Inform GLideN64 about the change + + //Calculate new width + auto newWidth = g_originalWidth; + if (enable) + newWidth = (g_height * 4) / 3; + + g_width = newWidth; + } + void gfx_shutdown() { RDRAMSize = 0; api().RomClosed();