diff --git a/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py b/projects/configgen/configgen/generators/libretro/crtswitchres/LibretroConfigCRTSwitchres.py index c02aa20117c59a07c7526058541465d9b2adc1f1..603f4ae9ce621839a595ea207b790a0f7cc3cacf 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,16 @@ 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, system: Emulator, fullname: str, config:typing.Dict[str, str], switchres_config: typing.Dict[str, str]): + 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: + 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", "video_aspect_ratio_auto": 'true', @@ -244,6 +256,10 @@ class LibretroConfigCRTSwitchres: if system.CRTAdapter == CRTAdapter.RECALBOXRGBJAMMA: system.CRTVideoStandard = CRTVideoStandard.NTSC + if system.Name == "scummvm": + switchres_config = {"monitor": "generic_15", "user_mode": "0x480", "interlace": "1"} + self.create_switchres_ini(system, "ScummVM", config, switchres_config) + if system.Rotation.isTate(): config["video_rotation"] = system.Rotation self.manage_lightgun_luminosity(system, config) diff --git a/projects/configgen/configgen/generators/libretro/libretroCores.py b/projects/configgen/configgen/generators/libretro/libretroCores.py index ff2657a2e9dcf01d2160ff97b2f82232803c7554..90398656278c061be51ea4439d4388034b505cce 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/generators/scummvm/scummvmGenerator.py b/projects/configgen/configgen/generators/scummvm/scummvmGenerator.py index 52844f98579401e6f2926671e09b1ddff988d6a0..cc857ed3e8b5540f0079eb8eced234c9562dec62 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( diff --git a/projects/configgen/configgen/recalboxFiles.py b/projects/configgen/configgen/recalboxFiles.py index 6eea5d7191c7fc8b4b26e828587fc0f7f1024852..897233ce06e774f5e635cc49ef5df32cfdbb4c5d 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/"