From de4740d9737bf13fbd1b8a7b6c5d81cbfd16f5aa Mon Sep 17 00:00:00 2001 From: Splendide Imaginarius <119545140+Splendide-Imaginarius@users.noreply.github.com> Date: Mon, 29 Jul 2024 02:51:45 +0000 Subject: [PATCH] Fix mouse position in hires mode --- src/input/input.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/input/input.cpp b/src/input/input.cpp index 5b2dcd9d..89d88a55 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -1440,15 +1440,29 @@ int Input::dir8Value() int Input::mouseX() { RGSSThreadData &rtData = shState->rtData(); - - return (p->mousePos[0] - rtData.screenOffset.x) * rtData.sizeResoRatio.x; + + int hiresResult = (p->mousePos[0] - rtData.screenOffset.x) * rtData.sizeResoRatio.x; + + if (shState->config().enableHires) { + double framebufferScalingFactor = shState->config().framebufferScalingFactor; + return (int)lround(hiresResult / framebufferScalingFactor); + } + + return hiresResult; } int Input::mouseY() { RGSSThreadData &rtData = shState->rtData(); - - return (p->mousePos[1] - rtData.screenOffset.y) * rtData.sizeResoRatio.y; + + int hiresResult = (p->mousePos[1] - rtData.screenOffset.y) * rtData.sizeResoRatio.y; + + if (shState->config().enableHires) { + double framebufferScalingFactor = shState->config().framebufferScalingFactor; + return (int)lround(hiresResult / framebufferScalingFactor); + } + + return hiresResult; } int Input::scrollV()