diff --git a/Config.in b/Config.in index 87871b62ee188b8ccd5661120af1b462d2b73139..437d48b09d10f83d6f22216f9a9b267bf6fdb483 100644 --- a/Config.in +++ b/Config.in @@ -118,6 +118,7 @@ menu "Emulators" source "$BR2_EXTERNAL_RECALBOX_PATH/package/hatari/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/duckstation/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/linapple-pie/Config.in" + source "$BR2_EXTERNAL_RECALBOX_PATH/package/love/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/mupen64plus-audio-sdl/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/mupen64plus-core/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/mupen64plus-gliden64/Config.in" diff --git a/configs/recalbox-odroidgo2_defconfig b/configs/recalbox-odroidgo2_defconfig index d4780fbfc700fc50ee4c5387ab3590f508c86aa3..015660b8c19caa60996014d197a1a7691b3c39d0 100644 --- a/configs/recalbox-odroidgo2_defconfig +++ b/configs/recalbox-odroidgo2_defconfig @@ -193,6 +193,7 @@ BR2_PACKAGE_SOLARUS_RECALBOX=y BR2_PACKAGE_TI99SIM=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_81=y BR2_PACKAGE_LIBRETRO_2048=y BR2_PACKAGE_LIBRETRO_A5200=y diff --git a/configs/recalbox-rg353x_defconfig b/configs/recalbox-rg353x_defconfig index 1f2075f8e196977e36dfb825479b5e190f99685b..54c6892ec15e238158d15b279011f0ea9cbeb86a 100644 --- a/configs/recalbox-rg353x_defconfig +++ b/configs/recalbox-rg353x_defconfig @@ -172,6 +172,7 @@ BR2_PACKAGE_SDLPOP=y BR2_PACKAGE_TI99SIM=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_A5200=y BR2_PACKAGE_LIBRETRO_ATARI800=y BR2_PACKAGE_LIBRETRO_ARDUOUS=y diff --git a/configs/recalbox-rpi3_defconfig b/configs/recalbox-rpi3_defconfig index 1605cc584632e2b5b60367734f0e471f764053d3..b91106d0d388638b945189c9b5b27b051eeae947 100644 --- a/configs/recalbox-rpi3_defconfig +++ b/configs/recalbox-rpi3_defconfig @@ -235,6 +235,7 @@ BR2_PACKAGE_RETROARCH=y BR2_PACKAGE_SCUMMVM=y BR2_PACKAGE_SDLPOP=y BR2_PACKAGE_TI99SIM=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_A5200=y BR2_PACKAGE_LIBRETRO_ATARI800=y BR2_PACKAGE_LIBRETRO_ARDUOUS=y diff --git a/configs/recalbox-rpi4_64_defconfig b/configs/recalbox-rpi4_64_defconfig index 64c1fe49d38e4929a4982ebb0f29822688e7cc02..85a5cb2d4dc82986b03c183ca2a4d8d54170a3f1 100644 --- a/configs/recalbox-rpi4_64_defconfig +++ b/configs/recalbox-rpi4_64_defconfig @@ -220,6 +220,7 @@ BR2_PACKAGE_SDLPOP=y BR2_PACKAGE_TI99SIM=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_A5200=y BR2_PACKAGE_LIBRETRO_ATARI800=y BR2_PACKAGE_LIBRETRO_ARDUOUS=y diff --git a/configs/recalbox-rpi5_64_defconfig b/configs/recalbox-rpi5_64_defconfig index 917d2ca9b6ccdd14e01798dfad302ed24d58d54f..933f6872e6db7c99bd947933c1a6b704e5d882df 100644 --- a/configs/recalbox-rpi5_64_defconfig +++ b/configs/recalbox-rpi5_64_defconfig @@ -220,6 +220,7 @@ BR2_PACKAGE_SDLPOP=y BR2_PACKAGE_TI99SIM=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_A5200=y BR2_PACKAGE_LIBRETRO_ATARI800=y BR2_PACKAGE_LIBRETRO_ARDUOUS=y diff --git a/configs/recalbox-rpizero2_defconfig b/configs/recalbox-rpizero2_defconfig index 8b500b10edc1887ecabfc610e928993078a20264..d9ef797a090f0b8927575406b6c7ea4f84d00f6a 100644 --- a/configs/recalbox-rpizero2_defconfig +++ b/configs/recalbox-rpizero2_defconfig @@ -229,6 +229,7 @@ BR2_PACKAGE_OPENBOR=y BR2_PACKAGE_RB5000=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_81=y BR2_PACKAGE_LIBRETRO_2048=y BR2_PACKAGE_RETROARCH=y diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 66c80f996350f92051f614bfdc540e151d72616d..f81603e9f8d9b78c075f7d1c7a398b139df4a401 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -250,6 +250,7 @@ BR2_PACKAGE_SUPERMODEL=y BR2_PACKAGE_TI99SIM=y BR2_PACKAGE_XROAR=y BR2_PACKAGE_VICE=y +BR2_PACKAGE_LOVE=y BR2_PACKAGE_LIBRETRO_81=y BR2_PACKAGE_LIBRETRO_2048=y BR2_PACKAGE_LIBRETRO_A5200=y diff --git a/package/love/Config.in b/package/love/Config.in new file mode 100644 index 0000000000000000000000000000000000000000..a9e2ac03952dc8b2139a7b357641c64f1a208636 --- /dev/null +++ b/package/love/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LOVE + bool "love" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBMODPLUG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_LIBTHEORA + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_MPG123 + help + LOVE is a framework for creating 2D games in Lua. + + https://github.com/love2d/love + +comment "LOVE needs a toolchain w/ C++ and SDL2" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_SDL2 diff --git a/package/love/love.mk b/package/love/love.mk new file mode 100644 index 0000000000000000000000000000000000000000..83fbbfefb5ca25df52c1ddabe7208f819ceb4f09 --- /dev/null +++ b/package/love/love.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# LOVE +# +################################################################################ + +# Commit of 12/03/2023 +LOVE_VERSION = 11.5 +LOVE_SITE = https://github.com/love2d/love.git +LOVE_SITE_METHOD = git +LOVE_GIT_SUBMODULES = YES +LOVE_LICENSE = GPL-2 +LOVE_LICENSE_FILES = LICENSE.txt +LOVE_DEPENDENCIES = sdl2 luajit freetype zlib physfs openal libogg libmodplug libvorbis libtheora flac mpg123 + +define LOVE_PRE_CONFIGURE_HOOKS_CMDS + cd $(@D) && ./platform/unix/automagic +endef + +LOVE_PRE_CONFIGURE_HOOKS += LOVE_PRE_CONFIGURE_HOOKS_CMDS + +define LOVE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/src/.libs/love \ + $(TARGET_DIR)/usr/bin/love +endef + +$(eval $(autotools-package)) diff --git a/package/recalbox-romfs2/systems/love/init/roms/.keep b/package/recalbox-romfs2/systems/love/init/roms/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/package/recalbox-romfs2/systems/love/system.ini b/package/recalbox-romfs2/systems/love/system.ini new file mode 100644 index 0000000000000000000000000000000000000000..ce28b721d182f14852050830c6edce1121c670b3 --- /dev/null +++ b/package/recalbox-romfs2/systems/love/system.ini @@ -0,0 +1,53 @@ +; =========================== +; Love +; =========================== + +; 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 = "7218fc6e-69ff-4ea6-9bee-1aadc5eb895d" +name = "love" +fullname = "Love" +theme.folder = "love" +roms.folder = "%ROOT%/love" +screenscraper.id = +doc.link.fr = "https://wiki.recalbox.com/fr/emulators/fantasy/love" +doc.link.en = "https://wiki.recalbox.com/en/emulators/fantasy/love" +doc.link.es = "https://wiki.recalbox.com/es/emulators/fantasy/love" +port = 0 +readonly = 0 +icon.unicode = $F +extension.types = "*=file" + +[properties] +type = fantasy +device.pad = recommended +device.keyboard = recommanded +device.mouse = no +device.lightgun = no +release.date = "2011-07" +manufacturer = "virtual" +retroachievements = 0 +crt.multiresolution = 0 +crt.multiregion = 0 + +[core.0] +package = BR2_PACKAGE_LOVE +priority = 1 +emulator = "love" +core = "love" +extensions = ".zip .love" +netplay = 0 +softpatching = 0 +compatibility = high +speed = high +crt.available = 1 diff --git a/package/recalbox-romfs2/systems/love/upgrade/roms/.readme.placeholder b/package/recalbox-romfs2/systems/love/upgrade/roms/.readme.placeholder new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/projects/configgen/configgen/emulatorlauncher.py b/projects/configgen/configgen/emulatorlauncher.py index da08fe5742caf803a8470b7dbcd127f479c6e06c..c5bd4acac18de08a5b4bc817d7ce240b9bdde924 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 == "love": + module = __import__("configgen.generators.love.loveGenerator", fromlist=["LoveGenerator"]) + generatorClass = getattr(module, "LoveGenerator") + return generatorClass() else: print("Missing generator for {}".format(emulator)) raise ValueError @@ -293,6 +297,7 @@ def config_upgrade(version): "kodi", "libretro", "linapple", + "love", "moonlight", "mupen64plus", "oricutron", diff --git a/projects/configgen/configgen/generators/love/__init__.py b/projects/configgen/configgen/generators/love/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/projects/configgen/configgen/generators/love/loveGenerator.py b/projects/configgen/configgen/generators/love/loveGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..0d730ec8d763d81d0802147f8a0d2c68e0f164aa --- /dev/null +++ b/projects/configgen/configgen/generators/love/loveGenerator.py @@ -0,0 +1,32 @@ +from configgen.Command import Command +import configgen.recalboxFiles as recalboxFiles +from configgen.Emulator import Emulator +from configgen.generators.Generator import Generator +from configgen.controllers.controller import ControllerPerPlayer +from configgen.settings.keyValueSettings import keyValueSettings + + +class LoveGenerator(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 across emulator launches + """ + + # Config file + from configgen.settings.iniSettings import IniSettings + settings = IniSettings(recalboxFiles.loveConfig, True) + settings.loadFile(True)\ + .defineBool('true', 'false') + + # Save config + settings.saveFile() + + # Command line arguments + commandArray = [recalboxFiles.recalboxBins[system.Emulator], args.rom] + + # Add extra arguments + if system.HasArgs: commandArray.extend(system.Args) + + return Command(videomode=system.VideoMode, array=commandArray) \ No newline at end of file diff --git a/projects/configgen/configgen/recalboxFiles.py b/projects/configgen/configgen/recalboxFiles.py index 1fb29b29ea3288ea30cebf321b4632584e54f43a..1b0cd133c24fe7307276e2cbfad0333856524ba1 100644 --- a/projects/configgen/configgen/recalboxFiles.py +++ b/projects/configgen/configgen/recalboxFiles.py @@ -37,6 +37,7 @@ recalboxBins =\ 'kodi' : '/recalbox/scripts/kodilauncher.sh', 'libretro' : '/usr/bin/retroarch', 'linapple' : '/usr/bin/linapple', + 'love' : '/usr/bin/love', 'moonlight' : '/usr/bin/moonlight', 'mupen64plus' : '/usr/bin/mupen64plus', 'openbor' : '/usr/bin/OpenBOR', @@ -184,3 +185,5 @@ frotzConfig = HOME + '/.config/frotz/frotz.conf' sdlpopConfigFile = CONF + '/sdlpop/sdlpop.ini' sdlpopControllersFile = CONF + '/sdlpop/gamecontrollerdb.txt' + +loveConfig = CONF + '/love/love.conf' \ No newline at end of file