From 86deb1fc3b80415fcd563c37f672ce03594e880b Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Fri, 18 Aug 2023 20:25:01 +0200 Subject: [PATCH] sim: Add configurable OLED aspect ratio This can be used to fix aspect ratio stretching of badly configured screens. --- sim/fakes/_sim.py | 7 +++++-- sim/run.py | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/sim/fakes/_sim.py b/sim/fakes/_sim.py index b367feb542..95f801b930 100644 --- a/sim/fakes/_sim.py +++ b/sim/fakes/_sim.py @@ -24,6 +24,7 @@ bgpath = os.path.join(simpath, "background.png") background = pygame.image.load(bgpath) OLED_SIZE = int(os.environ["SIM_OLED_SIZE"]) +OLED_ASPECT = float(os.environ["SIM_OLED_ASPECT"]) class Input: @@ -414,9 +415,11 @@ class Simulation: center_x = screen_w // 2 center_y = screen_h // 2 if FULL_SCREEN: - off_x = center_x - (screen_h // 2) + off_x = center_x - (screen_h * OLED_ASPECT // 2) off_y = center_y - (screen_h // 2) - new = pygame.transform.scale(self._oled_surface, (screen_h, screen_h)) + new = pygame.transform.scale( + self._oled_surface, (screen_h * OLED_ASPECT, screen_h) + ) full.blit(new, (off_x, off_y)) else: off_x = center_x - (OLED_SIZE // 2) diff --git a/sim/run.py b/sim/run.py index c76ee31fb0..4bbff6f351 100644 --- a/sim/run.py +++ b/sim/run.py @@ -116,11 +116,13 @@ def sim_main(): "--full-screen", dest="full_screen", action="store_true", default=False ) parser.add_argument("--oled-size", dest="oled_size", default=240) + parser.add_argument("--oled-aspect", dest="oled_aspect", default=1) parser.add_argument("override_app", nargs="?") args = parser.parse_args() os.environ["SIM_FULL_SCREEN"] = "1" if args.full_screen else "0" os.environ["SIM_OLED_SIZE"] = str(args.oled_size) + os.environ["SIM_OLED_ASPECT"] = str(args.oled_aspect) import _sim _sim.SCREENSHOT = args.screenshot -- GitLab