PACKAGE: create libretro -scummvm for mainstream and refactor -scummvm-legacy (#149)

* PACKAGE: add `libretro-scummvm-legacy` pkg

* PACKAGE-libretro-core-info: add scummvm-legacy info

* DEFCONFIG: add `libretro-scummvm-legacy` to shared builds

* BOARD: create gmenu2x's `scummvm.scummvm_legacy.ra` shortcut

* PACKAGE-libretro-scummvm: revert to mainstream & update ver. to working one 2.10.0

* PACKAGE-libretro-scummvm: use 'ScummVM` for system paths
This commit is contained in:
Apaczer
2025-01-31 23:07:02 +01:00
committed by GitHub
parent fee56a6cd6
commit 0bbd0bb001
12 changed files with 279 additions and 9 deletions

View File

@@ -1,4 +1,3 @@
title=scummvm
description=scummvm libretro core
exec=/mnt/emus/retroarch/scummvm.sh
selectordir=/mnt

View File

@@ -0,0 +1,3 @@
title=scummvm_legacy
description=scummvm legacy libretro core
exec=/mnt/emus/retroarch/scummvm_legacy.sh

View File

@@ -247,6 +247,7 @@ BR2_PACKAGE_LIBRETRO_RACE=y
BR2_PACKAGE_LIBRETRO_REMINISCENCE=y
BR2_PACKAGE_LIBRETRO_RETRO8=y
BR2_PACKAGE_LIBRETRO_SCUMMVM=y
BR2_PACKAGE_LIBRETRO_SCUMMVM_LEGACY=y
BR2_PACKAGE_LIBRETRO_SMSPLUS=y
BR2_PACKAGE_LIBRETRO_SNES9X2002=y
BR2_PACKAGE_LIBRETRO_SNES9X2005=y

View File

@@ -225,6 +225,7 @@ BR2_PACKAGE_LIBRETRO_RACE=y
BR2_PACKAGE_LIBRETRO_REMINISCENCE=y
BR2_PACKAGE_LIBRETRO_RETRO8=y
BR2_PACKAGE_LIBRETRO_SCUMMVM=y
BR2_PACKAGE_LIBRETRO_SCUMMVM_LEGACY=y
BR2_PACKAGE_LIBRETRO_SMSPLUS=y
BR2_PACKAGE_LIBRETRO_SNES9X2002=y
BR2_PACKAGE_LIBRETRO_SNES9X2005=y

View File

@@ -68,6 +68,7 @@ source "package/miyoo/retroarch/libretro-race/Config.in"
source "package/miyoo/retroarch/libretro-reminiscence/Config.in"
source "package/miyoo/retroarch/libretro-retro8/Config.in"
source "package/miyoo/retroarch/libretro-scummvm/Config.in"
source "package/miyoo/retroarch/libretro-scummvm-legacy/Config.in"
source "package/miyoo/retroarch/libretro-smsplus/Config.in"
source "package/miyoo/retroarch/libretro-snes9x2002/Config.in"
source "package/miyoo/retroarch/libretro-snes9x2005/Config.in"

View File

@@ -0,0 +1,125 @@
From 550b1a7bf2f13e3700e60a1167c563cddbb33c42 Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Mon, 27 Jan 2025 22:23:55 +0100
Subject: [PATCH 2/2] Create scummvm_legacy_libretro.info
---
scummvm_legacy_libretro.info | 106 +++++++++++++++++++++++++++++++++++
1 file changed, 106 insertions(+)
create mode 100644 scummvm_legacy_libretro.info
diff --git a/scummvm_legacy_libretro.info b/scummvm_legacy_libretro.info
new file mode 100644
index 0000000..9c613a3
--- /dev/null
+++ b/scummvm_legacy_libretro.info
@@ -0,0 +1,106 @@
+# Software Information
+display_name = "ScummVM legacy"
+authors = "SCUMMVMdev"
+supported_extensions = "0|1|2|3|4|5|6|8|25|99|101|102|455|512|scummvm|scumm|gam|z5|dat|blb|z6|ROM|001|taf|zblorb|dcp|(a)|cup|HE0|(A)|D$$|STK|z8|hex|ITK|CD1|pic|Z5|z3|blorb|ulx|DAT|cas|CGA|PIC|acd|SYS|OVL|alr|t3|gblorb|tab|AP|CRC|EXE|z4|W32|MAC|mac|WIN|003|000|exe|asl|slg|AVD|INI|SND|cat|ANG|CUP|SYS16|img|LB|TLK|MIX|RLB|#02|FNT|win|HE1|DMU|FON|SCR|MAP|TEX|HEP|DIR|DRV|a3c|GRV|CUR|CC|COD|OPT|LA0|gfx|GDA|ASK|LNG|ini|W16|SPP|bin|BND|BUN|TRS|add|HRS|DFW|BIN|STR|DR1|ALD|004|002|005|006|R02|R00|C00|D00|GAM|SCN|IDX|ogg|TXT|VB|GRA|BAT|BMV|H$$|MSG|VGA|PKD|SAV|CPS|PAK|SHP|PAT|dxr|gmp|SNG|C35|C06|WAV|wav|CAB|game|CG1|(b)|he2|he1|HE2|SYN|nl|PRC|V56|SEQ|P56|FKR|EX1|rom|CRF|LIC|$00|ALL|txt|acx|nbf|VXD|lab|LAB|ACX|mpc|msd|ADF|nib|HELLO|dsk|xfd|woz|d$$|SET|SOL|Pat|CFG|BSF|RES|CLT|LFL|SQU|RSC|SOUND|rsc|2 US|sub|cel|OVR|007|pat|MDT|CHK|EMC|ADV|voc|FDT|VQA|info|HPF|HQR|CSC|HEB|MID|LEC|QA|009|VMD|EGA|MHK|d64|prg|lfl|LZC|NL|DXR|flac|IMS|m4b|M4B|MOR|doc|jpg|HAG|AGA|BLB|PAL|PRG|CLG|CNF|ORB|BRO|bro|avi|str|PH1|DEF|sym|OUT|IN|TOC|AUD|j2|Text|CEL|AVI|1C|1c|L9|HRC|mhk|LIB|RED|PMV|SM0|SM1|RRM|CAT|CNV|GME|VOC|OGG|GERMAN|SHR|FRENCH|DNR|DSK|dnr|MMM|z4f|025|he0|V16|vga|TAB|CLU|b25c|INF|RL|mp3|SOU|SOG|HEX|mma|st|sdb|cab|MPC|MS0|IMG|ENC|C|GRP|PAR|PGM|Z|RL2|OBJ|ZFS|zfs|zip|z2|z1"
+corename = "ScummVM legacy"
+categories = "Game"
+license = "GPLv2"
+permissions = ""
+display_version = "2.1.1"
+
+# Hardware Information
+manufacturer = "LucasArts"
+systemname = "Game engine"
+systemid = "scummvm"
+
+# Libretro Features
+database = "ScummVM"
+supports_no_game = "true"
+savestate = "false"
+savestate_features = "null"
+cheats = "false"
+input_descriptors = "true"
+memory_descriptors = "false"
+libretro_saves = "false"
+core_options = "true"
+core_options_version = "1.3"
+load_subsystem = "false"
+hw_render = "false"
+needs_fullpath = "true"
+disk_control = "false"
+is_experimental = "false"
+
+# Firmware / BIOS
+firmware_count = 24
+firmware0_desc = "access.dat"
+firmware0_path = "scummvm/extra/access.dat"
+firmware0_opt = "true"
+firmware1_desc = "cryo.dat"
+firmware1_path = "scummvm/extra/cryo.dat"
+firmware1_opt = "true"
+firmware2_desc = "cryomni3d.dat"
+firmware2_path = "scummvm/extra/cryomni3d.dat"
+firmware2_opt = "true"
+firmware3_desc = "drascula.dat"
+firmware3_path = "scummvm/extra/drascula.dat"
+firmware3_opt = "true"
+firmware4_desc = "fonts.dat"
+firmware4_path = "scummvm/extra/fonts.dat"
+firmware4_opt = "true"
+firmware5_desc = "hugo.dat"
+firmware5_path = "scummvm/extra/hugo.dat"
+firmware5_opt = "true"
+firmware6_desc = "kyra.dat"
+firmware6_path = "scummvm/extra/kyra.dat"
+firmware6_opt = "true"
+firmware7_desc = "lure.dat"
+firmware7_path = "scummvm/extra/lure.dat"
+firmware7_opt = "true"
+firmware8_desc = "macventure.dat"
+firmware8_path = "scummvm/extra/macventure.dat"
+firmware8_opt = "true"
+firmware9_desc = "mort.dat"
+firmware9_path = "scummvm/extra/mort.dat"
+firmware9_opt = "true"
+firmware10_desc = "neverhood.dat"
+firmware10_path = "scummvm/extra/neverhood.dat"
+firmware10_opt = "true"
+firmware11_desc = "queen.tbl"
+firmware11_path = "scummvm/extra/queen.tbl"
+firmware11_opt = "true"
+firmware12_desc = "Roland_SC-55.sf2"
+firmware12_path = "scummvm/extra/Roland_SC-55.sf2"
+firmware12_opt = "true"
+firmware13_desc = "sky.cpt"
+firmware13_path = "scummvm/extra/sky.cpt"
+firmware13_opt = "true"
+firmware14_desc = "supernova.dat"
+firmware14_path = "scummvm/extra/supernova.dat"
+firmware14_opt = "true"
+firmware15_desc = "teenagent.dat"
+firmware15_path = "scummvm/extra/teenagent.dat"
+firmware15_opt = "true"
+firmware16_desc = "titanic.dat"
+firmware16_path = "scummvm/extra/titanic.dat"
+firmware16_opt = "true"
+firmware17_desc = "tony.dat"
+firmware17_path = "scummvm/extra/tony.dat"
+firmware17_opt = "true"
+firmware18_desc = "toon.dat"
+firmware18_path = "scummvm/extra/toon.dat"
+firmware18_opt = "true"
+firmware19_desc = "wintermute.zip"
+firmware19_path = "scummvm/extra/wintermute.zip"
+firmware19_opt = "true"
+firmware20_desc = "xeen.ccs"
+firmware20_path = "scummvm/extra/xeen.ccs"
+firmware20_opt = "true"
+firmware21_desc = "scummmodern.zip (ScummVM Modern Theme)"
+firmware21_path = "scummvm/theme/scummmodern.zip"
+firmware21_opt = "true"
+firmware22_desc = "scummremastered.zip (ScummVM Remastered Theme)"
+firmware22_path = "scummvm/theme/scummremastered.zip"
+firmware22_opt = "true"
+notes = "Auxiliary files are already provided within system/scummvm/ dir"
+
+description = "A fork of the ScummVM adventure game engine ported to libretro. Since this core was forked off a long time ago, it does not support the latest 3D engines that used to be covered by ResidualVM, such as Blade Runner. Otherwise, most games and features/settings should work just fine, however there is no virtual keyboard support."
--
2.45.2.windows.1

View File

@@ -0,0 +1,7 @@
config BR2_PACKAGE_LIBRETRO_SCUMMVM_LEGACY
bool "libretro-scummvm-legacy"
depends on BR2_PACKAGE_RETROARCH
help
A libretro SCUMMVM emulator - legacy version.
http://www.libretro.com

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 3f9aca170e80dbd167eab6e39f91042447a95d84c0345fd953fefcd1a562b327 libretro-scummvm-legacy-2fb2e4c551c9c1510c56f6e890ee0300b7b3fca3.tar.gz

View File

@@ -0,0 +1,33 @@
################################################################################
#
# SCUMMVM Legacy
#
################################################################################
# Legacy git 2.1.1 version
LIBRETRO_SCUMMVM_LEGACY_VERSION = 2fb2e4c551c9c1510c56f6e890ee0300b7b3fca3
LIBRETRO_SCUMMVM_LEGACY_SITE = $(call github,libretro-mirrors,scummvm,$(LIBRETRO_SCUMMVM_LEGACY_VERSION))
LIBRETRO_SCUMMVM_LEGACY_LICENSE = GPL-2.0
LIBRETRO_SCUMMVM_LEGACY_LICENSE_FILES = COPYING
LIBRETRO_SCUMMVM_LEGACY_LTO_CFLAGS = $(COMPILER_COMMONS_CFLAGS_SO)
LIBRETRO_SCUMMVM_LEGACY_LTO_CXXFLAGS = $(COMPILER_COMMONS_CXXFLAGS_SO)
LIBRETRO_SCUMMVM_LEGACY_LTO_LDFLAGS = $(COMPILER_COMMONS_LSFLAGS_SO)
define LIBRETRO_SCUMMVM_LEGACY_BUILD_CMDS
$(SED) "s|-O2|-O3|g" $(@D)/backends/platform/libretro/build/Makefile
CFLAGS="$(TARGET_CFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_CFLAGS) -ffat-lto-objects" \
CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_CXXFLAGS) -ffat-lto-objects" \
LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LEGACY_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \
$(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/build/ platform="$(RETROARCH_LIBRETRO_PLATFORM)"
endef
define LIBRETRO_SCUMMVM_LEGACY_INSTALL_TARGET_CMDS
mkdir -p ${BINARIES_DIR}/retroarch/cores
mkdir -p ${BINARIES_DIR}/retroarch/system/scummvm
unzip -o $(@D)/backends/platform/libretro/aux-data/scummvm.zip -d ${BINARIES_DIR}/retroarch/system/
$(INSTALL) -D $(@D)/backends/platform/libretro/build/scummvm_libretro.so \
${BINARIES_DIR}/retroarch/cores/scummvm_legacy_libretro.so
endef
$(eval $(generic-package))

View File

@@ -0,0 +1,89 @@
From e3102dc802761bdab21cfe27017f6b2e70f1c611 Mon Sep 17 00:00:00 2001
From: Apaczer <94932128+Apaczer@users.noreply.github.com>
Date: Thu, 30 Jan 2025 20:21:30 +0100
Subject: [PATCH] LIBRETRO: set SCUMMVM_SYSTEM_SUBDIR=ScummVM and
ConfigFile=ScummVM.ini
to not interfere with legacy version small capped dir
---
backends/platform/libretro/Makefile.common | 2 +-
backends/platform/libretro/README.md | 2 +-
backends/platform/libretro/src/libretro-core.cpp | 4 ++--
backends/platform/libretro/src/libretro-os-utils.cpp | 6 +++---
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/backends/platform/libretro/Makefile.common b/backends/platform/libretro/Makefile.common
index 5d093ec15b2..01f2ef19ec2 100644
--- a/backends/platform/libretro/Makefile.common
+++ b/backends/platform/libretro/Makefile.common
@@ -88,7 +88,7 @@ CORE_NAME = "ScummVM"
# Pipe separated allowed file extensions that core can handle
CORE_EXTENSIONS = "scummvm"
# Subdirs for datafiles bundle
-SCUMMVM_SYSTEM_SUBDIR := scummvm
+SCUMMVM_SYSTEM_SUBDIR := ScummVM
SCUMMVM_EXTRA_SUBDIR := extra
SCUMMVM_THEME_SUBDIR := theme
diff --git a/backends/platform/libretro/README.md b/backends/platform/libretro/README.md
index 8cb5a3cf123..6786c305bad 100644
--- a/backends/platform/libretro/README.md
+++ b/backends/platform/libretro/README.md
@@ -32,7 +32,7 @@ Core will be built for all available android targets by default
### Data files and themes
[Data files](https://wiki.scummvm.org/index.php/Datafiles) required for certain games and core functions (e.g. virtual keyboard) and default [ScummVM GUI themes](https://wiki.scummvm.org/index.php/GUI_Themes) are bundled during the build process in `scummvm.zip` file. Libretro core info file is created during build as well.
-Extract `scummvm.zip` and select relevant paths in ScummVM GUI (or modify `scummvm.ini` accordingly) to load properly needed data files/themes in the core.
+Extract `scummvm.zip` and select relevant paths in ScummVM GUI (or modify `ScummVM.ini` accordingly) to load properly needed data files/themes in the core.
Note that both datafiles and themes included in `scummvm.zip` need to be consistent with ScummVM version in use, hence need to be generally rebuilt and replaced for each new version.
diff --git a/backends/platform/libretro/src/libretro-core.cpp b/backends/platform/libretro/src/libretro-core.cpp
index 5b11d73fa04..d3ff14b97f9 100644
--- a/backends/platform/libretro/src/libretro-core.cpp
+++ b/backends/platform/libretro/src/libretro-core.cpp
@@ -984,14 +984,14 @@ bool retro_load_game(const struct retro_game_info *game) {
break;
case TEST_GAME_OK_TARGET_FOUND:
sprintf(buffer, "%s", target_id);
- retro_log_cb(RETRO_LOG_DEBUG, "[scummvm] launch via target id and scummvm.ini\n");
+ retro_log_cb(RETRO_LOG_DEBUG, "[scummvm] launch via target id and ScummVM.ini\n");
break;
case TEST_GAME_OK_ID_AUTODETECTED:
sprintf(buffer, "-p \"%s\" --auto-detect", parent_dir.getPath().toString().c_str());
retro_log_cb(RETRO_LOG_DEBUG, "[scummvm] launch via autodetect\n");
break;
case TEST_GAME_KO_MULTIPLE_RESULTS:
- retro_log_cb(RETRO_LOG_WARN, "[scummvm] Multiple targets found for '%s' in scummvm.ini\n", target_id);
+ retro_log_cb(RETRO_LOG_WARN, "[scummvm] Multiple targets found for '%s' in ScummVM.ini\n", target_id);
retro_osd_notification("Multiple targets found");
break;
case TEST_GAME_KO_NOT_FOUND:
diff --git a/backends/platform/libretro/src/libretro-os-utils.cpp b/backends/platform/libretro/src/libretro-os-utils.cpp
index 726397ca297..6962ed94de4 100644
--- a/backends/platform/libretro/src/libretro-os-utils.cpp
+++ b/backends/platform/libretro/src/libretro-os-utils.cpp
@@ -63,9 +63,9 @@ void OSystem_libretro::getTimeAndDate(TimeDate &t, bool skipRecord) const {
Common::Path OSystem_libretro::getDefaultConfigFileName() {
if (s_systemDir.empty())
- return Common::Path("scummvm.ini");
+ return Common::Path("ScummVM.ini");
else
- return Common::Path(s_systemDir).appendComponent("scummvm.ini");
+ return Common::Path(s_systemDir).appendComponent("ScummVM.ini");
}
void OSystem_libretro::logMessage(LogMessageType::Type type, const char *message) {
@@ -242,7 +242,7 @@ static const char *const helpTabs[] = {
"\n"
" - **game ID**: this is a unique identifier for any game supported by ScummVM. In this case hook files must be placed inside each game folder, and there is no need to add the game from within ScummVM. Game will be launched with default ScummVM options.\n"
"\n"
- " - **target**: this is the game identifier from ScummVM configuration file (e.g. 'scummvm.ini'). In this case the game must be added from ScummVM GUI first, and the hook files can be placed anywhere, as the path for the game files is already part of the target configuration. The game will be launched with the options set in ScummVM\n"
+ " - **target**: this is the game identifier from ScummVM configuration file (e.g. 'ScummVM.ini'). In this case the game must be added from ScummVM GUI first, and the hook files can be placed anywhere, as the path for the game files is already part of the target configuration. The game will be launched with the options set in ScummVM\n"
"\n"
"## Creating ScummVM core playlist\n"
"ScummVM core playlist can be created in the following ways:\n"
--
2.45.2.windows.1

View File

@@ -1,2 +1,2 @@
# Locally calculated
sha256 3f9aca170e80dbd167eab6e39f91042447a95d84c0345fd953fefcd1a562b327 libretro-scummvm-2fb2e4c551c9c1510c56f6e890ee0300b7b3fca3.tar.gz
sha256 c764691df32d3670db2d5e90bb520940a0a4c4ceeed7e73b2faed50c8ab9aa13 libretro-scummvm-7310d4e9f5d11553c6c5499911bd2f9b8ff3db3b.tar.gz

View File

@@ -4,29 +4,38 @@
#
################################################################################
LIBRETRO_SCUMMVM_VERSION = 2fb2e4c551c9c1510c56f6e890ee0300b7b3fca3
LIBRETRO_SCUMMVM_SITE = $(call github,libretro-mirrors,scummvm,$(LIBRETRO_SCUMMVM_VERSION))
# Commit from Dec 3, 2024
LIBRETRO_SCUMMVM_VERSION = 7310d4e9f5d11553c6c5499911bd2f9b8ff3db3b
LIBRETRO_SCUMMVM_SITE = $(call github,libretro,scummvm,$(LIBRETRO_SCUMMVM_VERSION))
LIBRETRO_SCUMMVM_LICENSE = GPL-2.0
LIBRETRO_SCUMMVM_LICENSE_FILES = COPYING
# We will'be overwriting info file in final install step, so build core-info first
LIBRETRO_SCUMMVM_DEPENDENCIES = libretro-core-info
LIBRETRO_SCUMMVM_LTO_CFLAGS = $(COMPILER_COMMONS_CFLAGS_SO)
LIBRETRO_SCUMMVM_LTO_CXXFLAGS = $(COMPILER_COMMONS_CXXFLAGS_SO)
LIBRETRO_SCUMMVM_LTO_LDFLAGS = $(COMPILER_COMMONS_LSFLAGS_SO)
define LIBRETRO_SCUMMVM_BUILD_CMDS
$(SED) "s|-O2|-O3|g" $(@D)/backends/platform/libretro/build/Makefile
$(SED) "s|-O2|-O3|g" $(@D)/backends/platform/libretro/Makefile
CFLAGS="$(TARGET_CFLAGS) $(LIBRETRO_SCUMMVM_LTO_CFLAGS) -ffat-lto-objects" \
CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBRETRO_SCUMMVM_LTO_CXXFLAGS) -ffat-lto-objects" \
LDFLAGS="$(TARGET_LDFLAGS) $(LIBRETRO_SCUMMVM_LTO_LDFLAGS) -ffat-lto-objects -shared -Wl,--no-undefined" \
$(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/build/ platform="$(RETROARCH_LIBRETRO_PLATFORM)"
$(MAKE) all TOOLSET="$(TARGET_CROSS)" -C $(@D)/backends/platform/libretro/ platform="$(RETROARCH_LIBRETRO_PLATFORM)"
endef
define LIBRETRO_SCUMMVM_INSTALL_TARGET_CMDS
mkdir -p ${BINARIES_DIR}/retroarch/cores
mkdir -p ${BINARIES_DIR}/retroarch/system/scummvm
unzip -o $(@D)/backends/platform/libretro/aux-data/scummvm.zip -d ${BINARIES_DIR}/retroarch/system/
$(INSTALL) -D $(@D)/backends/platform/libretro/build/scummvm_libretro.so \
mkdir -p ${BINARIES_DIR}/retroarch/system/ScummVM
unzip -o $(@D)/backends/platform/libretro/scummvm.zip -d $(@D)/backends/platform/libretro/
mv -fn $(@D)/backends/platform/libretro/scummvm/* ${BINARIES_DIR}/retroarch/system/ScummVM/
$(INSTALL) -D $(@D)/backends/platform/libretro/ScummVM.dat \
${BINARIES_DIR}/retroarch/system/ScummVM.dat
$(INSTALL) -D $(@D)/backends/platform/libretro/scummvm_libretro.so \
${BINARIES_DIR}/retroarch/cores/scummvm_libretro.so
# Overwrite existing info file with src generated one
$(INSTALL) -D -m 0644 $(@D)/backends/platform/libretro/scummvm_libretro.info \
${BINARIES_DIR}/retroarch/core_info/scummvm_libretro.info
endef
$(eval $(generic-package))