1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-06-30 08:24:05 +00:00

Merge pull request #3 from DaMarkov/gfx-force43

Aspect ratio 4:3
This commit is contained in:
Blake Warner 2022-02-10 16:50:54 -05:00 committed by GitHub
commit c5b63481ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 5 deletions

View File

@ -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
}

View File

@ -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; }

View File

@ -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();