From 9a157eb8ae1ae22eca4a391cc2ade83af09c1e93 Mon Sep 17 00:00:00 2001 From: JC Date: Sun, 17 May 2026 07:28:38 -0400 Subject: [PATCH 1/2] Fix ABC Windows aspect handling --- src/loader/graphics/blitStretching.c | 47 ++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/loader/graphics/blitStretching.c b/src/loader/graphics/blitStretching.c index 711df6b..b0decd6 100644 --- a/src/loader/graphics/blitStretching.c +++ b/src/loader/graphics/blitStretching.c @@ -58,6 +58,8 @@ void initBlitting() void blitSetWidthandHeightSize() { + EmulatorConfig *config = getConfig(); + if (gGrp == GROUP_ID4_EXP || gGrp == GROUP_ID4_JAP || gGrp == GROUP_ID5) { if (isTestMode()) @@ -76,6 +78,11 @@ void blitSetWidthandHeightSize() blitWidth = 640; blitHeight = 480; } + else if (gGrp == GROUP_ABC && config->keepAspectRatio) + { + blitWidth = 640; + blitHeight = 480; + } else if (gId == QUIZ_AXA_SBMS || gId == QUIZ_AXA_SBUR_LIVE || gId == MJ4_SBPN_REVG || gId == MJ4_EVO_SBTA) { blitWidth = 1024; @@ -189,17 +196,45 @@ void blitStretch() glad_glReadBuffer(GL_BACK); CHECK_GL("readbuffer GL_BACK"); - - glad_glBlitFramebuffer(0, 0, blitWidth, blitHeight, 0, 0, blitWidth, blitHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST); - CHECK_GL("first blit to fboId"); + + #ifdef _WIN32 + GLint vp[4]; + glad_glGetIntegerv(GL_VIEWPORT, vp); + #endif + + #ifdef _WIN32 + if (gGrp == GROUP_ABC && vp[2] > blitWidth && vp[3] > blitHeight) + { + glad_glBlitFramebuffer( + vp[0], vp[1], + vp[0] + vp[2], vp[1] + vp[3], + 0, 0, + blitWidth, blitHeight, + GL_COLOR_BUFFER_BIT, + GL_NEAREST + ); + } + else + #endif + { + glad_glBlitFramebuffer( + 0, 0, + blitWidth, blitHeight, + 0, 0, + blitWidth, blitHeight, + GL_COLOR_BUFFER_BIT, + GL_NEAREST + ); + } + CHECK_GL("first blit to fboId"); float gameAspect = (float)blitWidth / (float)blitHeight; - float windowAspect = (float)drawableW / (float)drawableH; + float windowAspect = (float)drawableW / (float)drawableH; dest.W = drawableW; dest.H = drawableH; - if (windowAspect > gameAspect) + if (windowAspect > gameAspect) { dest.W = (GLsizei)(drawableH * gameAspect); dest.X = (drawableW - dest.W) / 2; @@ -209,7 +244,7 @@ void blitStretch() dest.H = (GLsizei)(drawableW / gameAspect); dest.Y = (drawableH - dest.H) / 2; } - + glad_glBindFramebuffer(GL_FRAMEBUFFER, 0); CHECK_GL("bind default framebuffer"); From e30ac0a30a9d4379b30c90c532731025a271f6b5 Mon Sep 17 00:00:00 2001 From: JC Date: Sun, 17 May 2026 08:36:14 -0400 Subject: [PATCH 2/2] Limit ABC keep-aspect blit sizing to Windows --- src/loader/graphics/blitStretching.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/loader/graphics/blitStretching.c b/src/loader/graphics/blitStretching.c index b0decd6..43c66c1 100644 --- a/src/loader/graphics/blitStretching.c +++ b/src/loader/graphics/blitStretching.c @@ -78,11 +78,13 @@ void blitSetWidthandHeightSize() blitWidth = 640; blitHeight = 480; } +#ifdef _WIN32 else if (gGrp == GROUP_ABC && config->keepAspectRatio) { blitWidth = 640; blitHeight = 480; } +#endif else if (gId == QUIZ_AXA_SBMS || gId == QUIZ_AXA_SBUR_LIVE || gId == MJ4_SBPN_REVG || gId == MJ4_EVO_SBTA) { blitWidth = 1024; @@ -295,4 +297,4 @@ void blitStretch() glad_glClearColor(oldClearColor[0], oldClearColor[1], oldClearColor[2], oldClearColor[3]); } -} \ No newline at end of file +}