From c92247a1143597015236d7cc6a01655d99eb0dd2 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Mon, 23 Dec 2024 19:51:54 +0100 Subject: [PATCH] feat: add videos system --- .../systems/videos/init/roms/.keep | 0 .../recalbox-romfs2/systems/videos/system.ini | 52 +++++++++++++++++++ .../videos/upgrade/roms/.readme.placeholder | 0 .../configgen/configgen/emulatorlauncher.py | 4 ++ .../configgen/generators/videos/__init__.py | 0 .../generators/videos/videosGenerator.py | 25 +++++++++ projects/configgen/configgen/recalboxFiles.py | 1 + 7 files changed, 82 insertions(+) create mode 100644 package/recalbox-romfs2/systems/videos/init/roms/.keep create mode 100644 package/recalbox-romfs2/systems/videos/system.ini create mode 100644 package/recalbox-romfs2/systems/videos/upgrade/roms/.readme.placeholder create mode 100644 projects/configgen/configgen/generators/videos/__init__.py create mode 100644 projects/configgen/configgen/generators/videos/videosGenerator.py diff --git a/package/recalbox-romfs2/systems/videos/init/roms/.keep b/package/recalbox-romfs2/systems/videos/init/roms/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package/recalbox-romfs2/systems/videos/system.ini b/package/recalbox-romfs2/systems/videos/system.ini new file mode 100644 index 0000000000..d7f0b74a31 --- /dev/null +++ b/package/recalbox-romfs2/systems/videos/system.ini @@ -0,0 +1,52 @@ +; =========================== +; videos +; =========================== + +; all keys can be overridden for a particular board using key. +; example: +; priority = 0 +; priority.rpi4 = 3 +; Complete sections may be overridden. In such cases, all key from the global section are ignored, +; you must redefine them all +; example +; [core.0] +; [core.0.rpi4] +; Board tags are defined by BR2_PACKAGE_RECALBOX_TARGET_ + +[system] +uuid = "1eb397a7-e297-4aa5-bbaa-c6c88c47cb28" +name = "videos" +fullname = "Videos" +theme.folder = "videos" +roms.folder = "%ROOT%/videos" +screenscraper.id = 0 +doc.link.fr = "https://wiki.recalbox.com/fr/emulators/" +doc.link.en = "https://wiki.recalbox.com/en/emulators/" +doc.link.es = "https://wiki.recalbox.com/es/emulators/" +port = 0 +readonly = 0 +downloader = 0 +icon.unicode = $ + +[properties] +type = virtual +device.pad = mandatory +device.keyboard = no +device.mouse = no +device.lightgun = no +release.date = "YYYY-MM" +manufacturer = "manufacturer" +retroachievements = 0 +crt.multiresolution = 0 +crt.multiregion = 0 + +[core.0] +package = BR2_PACKAGE_MPV +priority = 0 +emulator = "mpv" +core = "mpv" +extensions = ".avi .mp4 .mpg .mpeg .m4v .mov" +netplay = 0 +softpatching = 0 +compatibility = high +speed = high diff --git a/package/recalbox-romfs2/systems/videos/upgrade/roms/.readme.placeholder b/package/recalbox-romfs2/systems/videos/upgrade/roms/.readme.placeholder new file mode 100644 index 0000000000..e69de29bb2 diff --git a/projects/configgen/configgen/emulatorlauncher.py b/projects/configgen/configgen/emulatorlauncher.py index da08fe5742..3fe133fb51 100644 --- a/projects/configgen/configgen/emulatorlauncher.py +++ b/projects/configgen/configgen/emulatorlauncher.py @@ -145,6 +145,10 @@ def getGenerator(emulator): module = __import__("configgen.generators.vvvvvv.vvvvvvGenerator", fromlist=["VvvvvvGenerator"]) generatorClass = getattr(module, "VvvvvvGenerator") return generatorClass() + elif emulator == "videos": + module = __import__("configgen.generators.videos.videosGenerator", fromlist=["VideosGenerator"]) + generatorClass = getattr(module, "VideosGenerator") + return generatorClass() else: print("Missing generator for {}".format(emulator)) raise ValueError diff --git a/projects/configgen/configgen/generators/videos/__init__.py b/projects/configgen/configgen/generators/videos/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/projects/configgen/configgen/generators/videos/videosGenerator.py b/projects/configgen/configgen/generators/videos/videosGenerator.py new file mode 100644 index 0000000000..9d52c6db60 --- /dev/null +++ b/projects/configgen/configgen/generators/videos/videosGenerator.py @@ -0,0 +1,25 @@ +from configgen.Command import Command +import configgen.recalboxFiles as recalboxFiles +from configgen.Emulator import Emulator +from configgen.controllers.controller import ControllerPerPlayer +from configgen.generators.Generator import Generator +from configgen.settings.keyValueSettings import keyValueSettings + + +class VideosGenerator(Generator): + def generate(self, system: Emulator, playersControllers: ControllerPerPlayer, recalboxOptions: keyValueSettings, args,) -> Command: + """ + Load, override keys and save back emulator's configuration file + This way, any modification is kept accross emulator launhes + """ + + commandArray = [ + recalboxFiles.recalboxBins[system.Emulator], + ] + + if system.HasArgs: + commandArray.extend(system.Args) + + commandArray.append(args.rom) + + return Command(videomode=system.VideoMode, array=commandArray) diff --git a/projects/configgen/configgen/recalboxFiles.py b/projects/configgen/configgen/recalboxFiles.py index 1fb29b29ea..e83bdf3aa6 100644 --- a/projects/configgen/configgen/recalboxFiles.py +++ b/projects/configgen/configgen/recalboxFiles.py @@ -56,6 +56,7 @@ recalboxBins =\ 'vice' : '/usr/bin/x64', 'xroar' : '/usr/bin/xroar', 'vvvvvv' : '/usr/bin/vvvvvv/VVVVVV', + 'videos' : '/usr/bin/mpv', } -- GitLab