From 18e1550de14f24cbafc81797e92655b7fb98db68 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 6 Dec 2025 09:29:59 +0100 Subject: [PATCH 1/5] fix: force 480i when 480i is selected for scummvm games --- .../.config/retroarch/config/ScummVM/ScummVM.switchres.ini | 3 +++ .../share_init/system/configs/scummvm/libretro-scummvm.ini | 1 + .../libretro/crtswitchres/LibretroConfigCRTSwitchres.py | 3 +++ 3 files changed, 7 insertions(+) create mode 100644 board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini b/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini new file mode 100644 index 0000000000..137af344a8 --- /dev/null +++ b/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini @@ -0,0 +1,3 @@ +monitor generic_15 +user_mode 0x480 +interlace 1 diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini b/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini index f80cd95175..ed9a5e5be1 100644 --- a/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini +++ b/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini @@ -26,3 +26,4 @@ autosave_period=300 enable_gs=false soundfont=/recalbox/share/bios/scummvm/Roland_SC-55.sf2 gui_scale=200 +stretch_mode=pixel-perfect diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index c02aa20117..902b09961b 100644 --- a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py +++ b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py @@ -244,6 +244,9 @@ class LibretroConfigCRTSwitchres: if system.CRTAdapter == CRTAdapter.RECALBOXRGBJAMMA: system.CRTVideoStandard = CRTVideoStandard.NTSC + if system.Name == "scummvm" and system.CRTResolutionType == CRTResolutionType.Force480i: + config["crt_switch_resolution"] = 4 + if system.Rotation.isTate(): config["video_rotation"] = system.Rotation self.manage_lightgun_luminosity(system, config) -- GitLab From e9738d678eaa00342efc781bc98900c7a1da90a1 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 6 Dec 2025 18:15:43 +0100 Subject: [PATCH 2/5] fix: generate switchres config --- .../retroarch/config/ScummVM/ScummVM.switchres.ini | 3 --- .../system/configs/scummvm/libretro-scummvm.ini | 1 - .../crtswitchres/LibretroConfigCRTSwitchres.py | 12 +++++++++++- .../configgen/generators/libretro/libretroCores.py | 5 +++++ projects/configgen/configgen/recalboxFiles.py | 1 + 5 files changed, 17 insertions(+), 5 deletions(-) delete mode 100644 board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini b/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini deleted file mode 100644 index 137af344a8..0000000000 --- a/board/recalbox/fsoverlay/recalbox/share_init/system/.config/retroarch/config/ScummVM/ScummVM.switchres.ini +++ /dev/null @@ -1,3 +0,0 @@ -monitor generic_15 -user_mode 0x480 -interlace 1 diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini b/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini index ed9a5e5be1..f80cd95175 100644 --- a/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini +++ b/board/recalbox/fsoverlay/recalbox/share_init/system/configs/scummvm/libretro-scummvm.ini @@ -26,4 +26,3 @@ autosave_period=300 enable_gs=false soundfont=/recalbox/share/bios/scummvm/Roland_SC-55.sf2 gui_scale=200 -stretch_mode=pixel-perfect diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index 902b09961b..ea5d50d407 100644 --- a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py +++ b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py @@ -1,5 +1,6 @@ import subprocess import typing +import pathlib from configgen.Emulator import Emulator from configgen.crt.CRTTypes import CRTHandheldFormat @@ -8,6 +9,7 @@ from configgen.crtswitchres.CRTTypes import CRTResolutionType, CRTScreenType, CR CRTAdapter, CRTVideoStandard, CRTSignalType from configgen.generators.libretro.crtswitchres.LibretroCoreConfigCRTSwitchres import LibretroCoreConfigCRTSwitchres from configgen.utils.architecture import Architecture +import configgen.recalboxFiles as recalboxFiles class LibretroConfigCRTSwitchres: @@ -29,6 +31,13 @@ class LibretroConfigCRTSwitchres: config.update({"video_shader_dir": '"/recalbox/share/shaders/"'}) config.update({"video_shader": 'lightguns-lumi-{}.glslp'.format(system.LighgunLuminosity)}) + def create_switchres_ini(self, fullname: str, config:typing.Dict[str, str], switchres_config: typing.Dict[str, str]): + pathlib.Path("{}/{}".format(recalboxFiles.retroarchSwitchres, fullname)).mkdir(parents=True, exist_ok=True) + with open("{}/{}/{}.switchres.ini".format(recalboxFiles.retroarchSwitchres, fullname, fullname), "w") as ini_switchres: + for key, item in switchres_config.items(): + ini_switchres.write("{} {}\n".format(key, item)) + config["crt_switch_resolution"] = 4 + def createConfigFor(self, system: Emulator, rom: str) -> (typing.Dict[str, any], typing.Dict[str, any], [any], [any]): config: typing.Dict[str, any] = {"aspect_ratio_index": "22", "video_aspect_ratio_auto": 'true', @@ -245,7 +254,8 @@ class LibretroConfigCRTSwitchres: system.CRTVideoStandard = CRTVideoStandard.NTSC if system.Name == "scummvm" and system.CRTResolutionType == CRTResolutionType.Force480i: - config["crt_switch_resolution"] = 4 + switchres_config = {"monitor": "generic_15", "user_mode": "0x480", "interlace": "1"} + self.create_switchres_ini("ScummVM", config, switchres_config) if system.Rotation.isTate(): config["video_rotation"] = system.Rotation diff --git a/projects/configgen/configgen/generators/libretro/libretroCores.py b/projects/configgen/configgen/generators/libretro/libretroCores.py index ff2657a2e9..9039865627 100644 --- a/projects/configgen/configgen/generators/libretro/libretroCores.py +++ b/projects/configgen/configgen/generators/libretro/libretroCores.py @@ -354,6 +354,11 @@ class LibretroCores: if scummvmSettings.get("scummvm", "mt32_device") == "fluidsynth": scummvmSettings.set("scummvm", "soundfont", recalboxFiles.libretroScummvmBios + "/Roland_SC-55.sf2") + if self.system.IntegerScale: + scummvmSettings.set("scummvm", "stretch_mode", "pixel-perfect") + else: + scummvmSettings.set("scummvm", "stretch_mode", "default") + if os.path.isdir(self.rom): scummfiles = [fn for fn in os.listdir(self.rom) if fn.endswith('.scummvm')] if len(scummfiles) == 1: diff --git a/projects/configgen/configgen/recalboxFiles.py b/projects/configgen/configgen/recalboxFiles.py index 6eea5d7191..897233ce06 100644 --- a/projects/configgen/configgen/recalboxFiles.py +++ b/projects/configgen/configgen/recalboxFiles.py @@ -71,6 +71,7 @@ retroarchCoreCustom = retroarchRoot + "/cores/retroarch-core-options.cfg" retroarchInitCustomOrigin = HOME_INIT + "configs/retroarch/retroarchcustom.cfg.origin" retroarchRemap = HOME + "/.config/retroarch/config/remaps" retroarchRemapCommon = retroarchRemap + "/common/common.rmp" +retroarchSwitchres = HOME + "/.config/retroarch/config" retroarchCores = "/usr/lib/libretro/" shadersRoot = "/recalbox/share/shaders/" -- GitLab From fdc61718c35a4029bf6c5762a282d9a687031051 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 6 Dec 2025 18:21:20 +0100 Subject: [PATCH 3/5] fix: add stretch mode for scummvm standalone --- .../configgen/configgen/generators/scummvm/scummvmGenerator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/configgen/configgen/generators/scummvm/scummvmGenerator.py b/projects/configgen/configgen/generators/scummvm/scummvmGenerator.py index 52844f9857..cc857ed3e8 100644 --- a/projects/configgen/configgen/generators/scummvm/scummvmGenerator.py +++ b/projects/configgen/configgen/generators/scummvm/scummvmGenerator.py @@ -72,6 +72,9 @@ class ScummVMGenerator(Generator): if system.HasArgs: commandArray.extend(system.Args) + if system.IntegerScale: + commandArray.append("--stretch-mode=pixel-perfect") + commandArray.append("""{}""".format(romName)) return Command( -- GitLab From ae5e36b22c961fefbdb15e477b7a88671d234bec Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 14 Dec 2025 12:32:05 +0100 Subject: [PATCH 4/5] fix: start 480i --- .../LibretroConfigCRTSwitchres.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index ea5d50d407..f388b033ef 100644 --- a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py +++ b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py @@ -31,12 +31,15 @@ class LibretroConfigCRTSwitchres: config.update({"video_shader_dir": '"/recalbox/share/shaders/"'}) config.update({"video_shader": 'lightguns-lumi-{}.glslp'.format(system.LighgunLuminosity)}) - def create_switchres_ini(self, fullname: str, config:typing.Dict[str, str], switchres_config: typing.Dict[str, str]): - pathlib.Path("{}/{}".format(recalboxFiles.retroarchSwitchres, fullname)).mkdir(parents=True, exist_ok=True) - with open("{}/{}/{}.switchres.ini".format(recalboxFiles.retroarchSwitchres, fullname, fullname), "w") as ini_switchres: - for key, item in switchres_config.items(): - ini_switchres.write("{} {}\n".format(key, item)) - config["crt_switch_resolution"] = 4 + def create_switchres_ini(self, system: Emulator, fullname: str, config:typing.Dict[str, str], switchres_config: typing.Dict[str, str]): + if system.CRTResolutionType == CRTResolutionType.Force480: + config["crt_switch_resolution"] = 4 + pathlib.Path("{}/{}".format(recalboxFiles.retroarchSwitchres, fullname)).mkdir(parents=True, exist_ok=True) + with open("{}/{}/{}.switchres.ini".format(recalboxFiles.retroarchSwitchres, fullname, fullname), "w") as ini_switchres: + for key, item in switchres_config.items(): + ini_switchres.write("{} {}\n".format(key, item)) + else: + pathlib.Path.unlink("{}/{}/{}.switchres.ini".format(recalboxFiles.retroarchSwitchres, fullname, fullname), missing_ok=True) def createConfigFor(self, system: Emulator, rom: str) -> (typing.Dict[str, any], typing.Dict[str, any], [any], [any]): config: typing.Dict[str, any] = {"aspect_ratio_index": "22", @@ -253,9 +256,9 @@ class LibretroConfigCRTSwitchres: if system.CRTAdapter == CRTAdapter.RECALBOXRGBJAMMA: system.CRTVideoStandard = CRTVideoStandard.NTSC - if system.Name == "scummvm" and system.CRTResolutionType == CRTResolutionType.Force480i: + if system.Name == "scummvm": switchres_config = {"monitor": "generic_15", "user_mode": "0x480", "interlace": "1"} - self.create_switchres_ini("ScummVM", config, switchres_config) + self.create_switchres_ini(system, "ScummVM", config, switchres_config) if system.Rotation.isTate(): config["video_rotation"] = system.Rotation -- GitLab From 09473320d148cb4524777ad9fc1b5631b87961ec Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 14 Dec 2025 16:42:46 +0100 Subject: [PATCH 5/5] fix: condition --- .../libretro/crtswitchres/LibretroConfigCRTSwitchres.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index f388b033ef..603f4ae9ce 100644 --- a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py +++ b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py @@ -32,7 +32,7 @@ class LibretroConfigCRTSwitchres: config.update({"video_shader": 'lightguns-lumi-{}.glslp'.format(system.LighgunLuminosity)}) def create_switchres_ini(self, system: Emulator, fullname: str, config:typing.Dict[str, str], switchres_config: typing.Dict[str, str]): - if system.CRTResolutionType == CRTResolutionType.Force480: + if CRTScreenType.kHz15 and system.CRTResolutionType == CRTResolutionType.Force480: config["crt_switch_resolution"] = 4 pathlib.Path("{}/{}".format(recalboxFiles.retroarchSwitchres, fullname)).mkdir(parents=True, exist_ok=True) with open("{}/{}/{}.switchres.ini".format(recalboxFiles.retroarchSwitchres, fullname, fullname), "w") as ini_switchres: -- GitLab