From fce26da205e100b9bd53853f11e1bd580f73c54f Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Wed, 23 Oct 2024 13:46:56 +0200 Subject: [PATCH 01/12] feat: add stv --- .../0001-fix-compilation-with-gcc14.patch | 92 ------------------- configs/recalbox-rpi5_64_defconfig | 1 + package/libretro-kronos/0001-fix-rpi5.patch | 23 +++++ package/libretro-kronos/0002-fix-undef.patch | 17 ++++ .../0003-fix-force-opengles.patch | 11 +++ .../libretro-kronos/0004-fix-shaders.patch | 42 +++++++++ package/libretro-kronos/libretro-kronos.mk | 23 +++-- .../recalbox-romfs2/systems/saturn/system.ini | 2 + .../systems/stv/init/roms/.keep | 0 .../recalbox-romfs2/systems/stv/system.ini | 54 +++++++++++ .../stv/upgrade/roms/.readme.placeholder | 0 package/retroarch/retroarch.mk | 5 + 12 files changed, 166 insertions(+), 104 deletions(-) delete mode 100644 board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch create mode 100644 package/libretro-kronos/0001-fix-rpi5.patch create mode 100644 package/libretro-kronos/0002-fix-undef.patch create mode 100644 package/libretro-kronos/0003-fix-force-opengles.patch create mode 100644 package/libretro-kronos/0004-fix-shaders.patch create mode 100644 package/recalbox-romfs2/systems/stv/init/roms/.keep create mode 100644 package/recalbox-romfs2/systems/stv/system.ini create mode 100644 package/recalbox-romfs2/systems/stv/upgrade/roms/.readme.placeholder diff --git a/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch b/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch deleted file mode 100644 index f14201ca67..0000000000 --- a/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff --git a/yabause/src/core/sh2/sh2_kronos/src/sh2int.c b/yabause/src/core/sh2/sh2_kronos/src/sh2int.c -index 6536900..f54ff56 100644 ---- a/yabause/src/core/sh2/sh2_kronos/src/sh2int.c -+++ b/yabause/src/core/sh2/sh2_kronos/src/sh2int.c -@@ -34,6 +34,7 @@ - #include "sh2int_kronos.h" - - #include "cs2.h" -+#include "yui.h" - - #define LOCK(A) - #define UNLOCK(A) -diff --git a/yabause/src/sys/sh2/src/sh2core.c b/yabause/src/sys/sh2/src/sh2core.c -index 1dbea44..2cb93fb 100644 ---- a/yabause/src/sys/sh2/src/sh2core.c -+++ b/yabause/src/sys/sh2/src/sh2core.c -@@ -27,6 +27,8 @@ - #include "debug.h" - #include "memory.h" - #include "yabause.h" -+#include "scu.h" -+#include "error.h" - - SH2_struct *SSH2=NULL; - SH2_struct *MSH2=NULL; -diff --git a/yabause/src/sys/vdp1/src/vdp1.c b/yabause/src/sys/vdp1/src/vdp1.c -index fbe1753..5a13df8 100644 ---- a/yabause/src/sys/vdp1/src/vdp1.c -+++ b/yabause/src/sys/vdp1/src/vdp1.c -@@ -2105,7 +2105,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - rw = cmd.CMDXB; - rh = cmd.CMDYB; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0x6: // Upper-Center -@@ -2113,7 +2113,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - rh = cmd.CMDYB; - x = x - rw / 2; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0x7: // Upper-Right -@@ -2121,7 +2121,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - rh = cmd.CMDYB; - x = x - rw; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0x9: // Center-left -@@ -2129,7 +2129,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - rh = cmd.CMDYB; - y = y - rh / 2; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0xA: // Center-center -@@ -2144,7 +2144,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - x = x - rw; - y = y - rh / 2; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0xD: // Lower-left -@@ -2152,7 +2152,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - rh = cmd.CMDYB; - y = y - rh; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - case 0xE: // Lower-center -@@ -2167,7 +2167,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) - x = x - rw; - y = y - rh; - if ((rw < 0)||(rh <0)) { -- return 0; -+ return; - } - break; - default: break; diff --git a/configs/recalbox-rpi5_64_defconfig b/configs/recalbox-rpi5_64_defconfig index ec491dc33e..1234ae7577 100644 --- a/configs/recalbox-rpi5_64_defconfig +++ b/configs/recalbox-rpi5_64_defconfig @@ -329,6 +329,7 @@ BR2_PACKAGE_LIBRETRO_XMIL=y BR2_PACKAGE_LIBRETRO_XRICK=y BR2_PACKAGE_LIBRETRO_YABASANSHIRO=y BR2_PACKAGE_LIBRETRO_WASM4=y +BR2_PACKAGE_LIBRETRO_KRONOS=y BR2_PACKAGE_DOLPHIN_EMU=y BR2_PACKAGE_JSTEST2=y BR2_PACKAGE_WSD=y diff --git a/package/libretro-kronos/0001-fix-rpi5.patch b/package/libretro-kronos/0001-fix-rpi5.patch new file mode 100644 index 0000000000..98c5e476f3 --- /dev/null +++ b/package/libretro-kronos/0001-fix-rpi5.patch @@ -0,0 +1,23 @@ +--- a/yabause/src/libretro/Makefile 2024-10-22 22:53:02.445133763 +0200 ++++ b/yabause/src/libretro/Makefile 2024-10-22 22:56:05.584230236 +0200 +@@ -84,6 +84,19 @@ + HAVE_CDROM = 1 + endif + ++# Rpi5 (64-bit) ++else ifeq ($(platform), rpi5) ++ override platform += unix ++ TARGET := $(TARGET_NAME)_libretro.so ++ fpic := -fPIC ++ FLAGS += -DAARCH64 ++ SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T ++ LDFLAGS += -lpthread -lGL ++ ARCH_IS_LINUX = 1 ++ HAVE_SSE = 0 ++ FORCE_GLES = 1 ++ FLAGS += -mcpu=cortex-a76 -mtune=cortex-a76 ++ + # Jetson Nano + else ifeq ($(platform), jetson-nano) + override platform += unix + diff --git a/package/libretro-kronos/0002-fix-undef.patch b/package/libretro-kronos/0002-fix-undef.patch new file mode 100644 index 0000000000..c485e35377 --- /dev/null +++ b/package/libretro-kronos/0002-fix-undef.patch @@ -0,0 +1,17 @@ +--- a/yabause/src/libretro/libretro-common/file/file_path.c 2024-10-28 20:05:06.315945328 +0100 ++++ b/yabause/src/libretro/libretro-common/file/file_path.c 2024-10-28 19:57:09.329225229 +0100 +@@ -107,6 +107,14 @@ + + #endif + ++char *string_to_lower(char *s) ++{ ++ char *cs = (char *)s; ++ for ( ; *cs != '\0'; cs++) ++ *cs = tolower((unsigned char)*cs); ++ return s; ++} ++ + /** + * path_get_archive_delim: + * @path : path diff --git a/package/libretro-kronos/0003-fix-force-opengles.patch b/package/libretro-kronos/0003-fix-force-opengles.patch new file mode 100644 index 0000000000..72d97fbce8 --- /dev/null +++ b/package/libretro-kronos/0003-fix-force-opengles.patch @@ -0,0 +1,11 @@ +--- a/yabause/src/core/video/opengl/common/src/commongl.c 2024-10-28 21:25:35.805685234 +0100 ++++ b/yabause/src/core/video/opengl/common/src/commongl.c 2024-10-28 21:25:21.483885856 +0100 +@@ -39,6 +39,8 @@ + //#define YGLDEBUG yprintf + //#define YGLLOG + ++#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 ++ + extern u8 * Vdp1FrameBuffer[]; + static int rebuild_frame_buffer = 0; + diff --git a/package/libretro-kronos/0004-fix-shaders.patch b/package/libretro-kronos/0004-fix-shaders.patch new file mode 100644 index 0000000000..cab8389fe4 --- /dev/null +++ b/package/libretro-kronos/0004-fix-shaders.patch @@ -0,0 +1,42 @@ +--- a/yabause/src/core/video/opengl/compute_shader/include/vdp1_prog_compute.h 2023-02-06 17:13:36.000000000 +0100 ++++ b/yabause/src/core/video/opengl/compute_shader/include/vdp1_prog_compute.h 2024-10-30 18:34:43.471786988 +0100 +@@ -39,6 +39,7 @@ + SHADER_VERSION_COMPUTE + "#ifdef GL_ES\n" + "precision highp float;\n" ++"precision highp image2D;\n" + "#endif\n" + "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" + "layout(rgba8, binding = 0) writeonly uniform image2D outSurface;\n" +@@ -59,6 +60,7 @@ + SHADER_VERSION_COMPUTE + "#ifdef GL_ES\n" + "precision highp float;\n" ++"precision highp image2D;\n" + "#endif\n" + "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" + "layout(rgba8, binding = 0) readonly uniform image2D s_texture; \n" +@@ -81,6 +83,7 @@ + SHADER_VERSION_COMPUTE + "#ifdef GL_ES\n" + "precision highp float;\n" ++"precision highp image2D;\n" + "#endif\n" + "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" + "layout(rgba8, binding = 0) writeonly uniform image2D outSurface;\n" +@@ -104,6 +107,7 @@ + SHADER_VERSION_COMPUTE + "#ifdef GL_ES\n" + "precision highp float;\n" ++"precision highp image2D;\n" + "#endif\n" + "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" + "layout(rgba8, binding = 0) writeonly uniform image2D outMesh0;\n" +@@ -189,6 +193,7 @@ + SHADER_VERSION_COMPUTE + "#ifdef GL_ES\n" + "precision highp float;\n" ++"precision highp image2D;\n" + "#endif\n" + + "struct cmdparameter_struct{ \n" diff --git a/package/libretro-kronos/libretro-kronos.mk b/package/libretro-kronos/libretro-kronos.mk index d08cce5519..7fb9d2956b 100644 --- a/package/libretro-kronos/libretro-kronos.mk +++ b/package/libretro-kronos/libretro-kronos.mk @@ -5,26 +5,25 @@ ################################################################################ # Commit of 2023/12/29 -LIBRETRO_KRONOS_VERSION = b847da58fd741bb7351e6da92316ae2fb1f95045 +LIBRETRO_KRONOS_VERSION = 8e0eade50b51e12529395b54b80b86e8c074d9ec LIBRETRO_KRONOS_SITE = $(call github,FCare,Kronos,$(LIBRETRO_KRONOS_VERSION)) LIBRETRO_KRONOS_LICENSE = GPL-2.0 -ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) - LIBRETRO_KRONOS_GL = GLESv2 +ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RPI5_64),y) +LIBRETRO_KRONOS_PLATFORM = rpi5 +LIBRETRO_KRONOS_EXTRA_ARGS += FORCE_GLES=1 +LIBRETRO_KRONOS_EXTRA_ARGS += HAVE_SSE=0 +LIBRETRO_KRONOS_EXTRA_ARGS += ARCH_IS_LINUX=1 else - LIBRETRO_KRONOS_GL = GL +LIBRETRO_KRONOS_PLATFORM=unix-$(RETROARCH_LIBRETRO_PLATFORM) endif define LIBRETRO_KRONOS_BUILD_CMDS $(SED) "s|-O2|-O3|g" $(@D)/yabause/src/libretro/Makefile - $(SED) "s|-lGL|-l$(LIBRETRO_KRONOS_GL)|g" $(@D)/yabause/src/libretro/Makefile - mkdir -p $(@D)/build_retro - cd $(@D)/build_retro - $(MAKE) -C $(@D)/yabause/src/libretro generate-files - CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ - CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ - LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ - $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" AR="$(TARGET_AR)" LD="$(TARGET_LD)" RANLIB="$(TARGET_RANLIB)" -C $(@D)/yabause/src/libretro -f Makefile platform="unix-$(RETROARCH_LIBRETRO_PLATFORM)" $(LIBRETRO_KRONOS_SUPP_OPT) + $(MAKE) -C $(@D)/yabause/src/libretro -f Makefile generate-files && \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C \ + $(@D)/yabause/src/libretro -f Makefile \ + platform="$(LIBRETRO_KRONOS_PLATFORM)" $(LIBRETRO_KRONOS_EXTRA_ARGS) endef define LIBRETRO_KRONOS_INSTALL_TARGET_CMDS diff --git a/package/recalbox-romfs2/systems/saturn/system.ini b/package/recalbox-romfs2/systems/saturn/system.ini index 2b1de2484c..abbe06a976 100644 --- a/package/recalbox-romfs2/systems/saturn/system.ini +++ b/package/recalbox-romfs2/systems/saturn/system.ini @@ -86,3 +86,5 @@ netplay = 0 softpatching = 0 compatibility = high speed = high +video.backend.rpi5_64 = wayland +crt.available = 1 diff --git a/package/recalbox-romfs2/systems/stv/init/roms/.keep b/package/recalbox-romfs2/systems/stv/init/roms/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini new file mode 100644 index 0000000000..cf54f4e3bf --- /dev/null +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -0,0 +1,54 @@ +; =========================== +; stv +; =========================== + +; 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 = "58194f2a-c0c7-4cc0-96f1-3eb44fef602a" +name = "stv" +fullname = "ST-V" +theme.folder = "stv" +roms.folder = "%ROOT%/stv" +screenscraper.id = 69 +doc.link.fr = "https://wiki.recalbox.com/fr/emulators/stv" +doc.link.en = "https://wiki.recalbox.com/en/emulators/stv" +doc.link.es = "https://wiki.recalbox.com/es/emulators/stv" +port = 0 +readonly = 0 +downloader = 0 +icon.unicode = $F2DC +extension.types = "*=pcb" + +[properties] +type = arcade +device.pad = mandatory +device.keyboard = no +device.mouse = no +device.lightgun = no +release.date = "1994-01" +manufacturer = "sega" +retroachievements = 1 +crt.multiresolution = 0 +crt.multiregion = 0 + +[core.0] +package = BR2_PACKAGE_LIBRETRO_KRONOS +priority = 1 +emulator = "libretro" +core = "kronos" +extensions = ".zip" +netplay = 0 +softpatching = 0 +compatibility = good +speed = good +crt.available = 1 diff --git a/package/recalbox-romfs2/systems/stv/upgrade/roms/.readme.placeholder b/package/recalbox-romfs2/systems/stv/upgrade/roms/.readme.placeholder new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package/retroarch/retroarch.mk b/package/retroarch/retroarch.mk index 7df26ada98..79230b7a05 100644 --- a/package/retroarch/retroarch.mk +++ b/package/retroarch/retroarch.mk @@ -98,6 +98,11 @@ else RETROARCH_CONF_OPTS += --disable-x11 endif +ifeq ($(BR2_PACKAGE_RECALBOX_VIDEO_XWAYLAND),y) +RETROARCH_CONF_OPTS += --enable-x11 +RETROARCH_DEPENDENCIES += xwayland +endif + ifeq ($(BR2_PACKAGE_ALSA_LIB),y) RETROARCH_CONF_OPTS += --enable-alsa RETROARCH_DEPENDENCIES += alsa-lib -- GitLab From b70d2dea059f08724df0308de0e0d25bd419c6f2 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Wed, 25 Dec 2024 11:41:49 +0100 Subject: [PATCH 02/12] feat: add mednafen for stv --- Config.in | 1 + .../system/.emulationstation/es_bios.xml | 5 + .../0001-fix-compilation-with-gcc14.patch | 92 + configs/recalbox-rpi5_64_defconfig | 2 +- .../arcade-dats/precompiled/stv-1.32.1.dat | 6210 +++++++++++++++++ .../arcade-dats/precompiled/stv-1.32.1.fdt | 102 + .../arcade-dats/precompiled/stv-1.32.1.lst | 103 + .../precompiled/stv-1.32.1.lst.manufacturers | 1 + .../precompiled/stv-1.32.1.lst.original | 103 + package/arcade-dats/stv.xslt | 76 + package/arcade-dats/updater.py | 1 + package/libretro-kronos/0001-fix-rpi5.patch | 23 - package/libretro-kronos/0002-fix-undef.patch | 17 - .../0003-fix-force-opengles.patch | 11 - .../libretro-kronos/0004-fix-shaders.patch | 42 - package/libretro-kronos/libretro-kronos.mk | 23 +- .../0001-mednafen-add-switchres.patch | 1558 +++++ package/mednafen/0002-mednafen-makefile.patch | 385 + package/mednafen/Config.in | 7 + package/mednafen/mednafen.mk | 40 + package/recalbox-configgen/Config.in | 2 + .../recalbox-configgen/recalbox-configgen.mk | 2 +- .../recalbox-romfs2/systems/saturn/system.ini | 2 - .../recalbox-romfs2/systems/stv/system.ini | 14 + package/retroarch/retroarch.mk | 5 - ...1-continue-when-device-not-supported.patch | 37 +- package/switchres/003-modeline-lcd.patch | 45 +- package/switchres/switchres.mk | 43 +- .../configgen/configgen/emulatorlauncher.py | 4 + .../configgen/generators/mednafen/__init__.py | 0 .../generators/mednafen/mednafen.cfg.j2 | 112 + .../generators/mednafen/mednafenGenerator.py | 111 + projects/configgen/configgen/recalboxFiles.py | 4 + 33 files changed, 9014 insertions(+), 169 deletions(-) create mode 100644 board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch create mode 100644 package/arcade-dats/precompiled/stv-1.32.1.dat create mode 100644 package/arcade-dats/precompiled/stv-1.32.1.fdt create mode 100644 package/arcade-dats/precompiled/stv-1.32.1.lst create mode 100644 package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers create mode 100644 package/arcade-dats/precompiled/stv-1.32.1.lst.original create mode 100755 package/arcade-dats/stv.xslt delete mode 100644 package/libretro-kronos/0001-fix-rpi5.patch delete mode 100644 package/libretro-kronos/0002-fix-undef.patch delete mode 100644 package/libretro-kronos/0003-fix-force-opengles.patch delete mode 100644 package/libretro-kronos/0004-fix-shaders.patch create mode 100644 package/mednafen/0001-mednafen-add-switchres.patch create mode 100644 package/mednafen/0002-mednafen-makefile.patch create mode 100644 package/mednafen/Config.in create mode 100644 package/mednafen/mednafen.mk create mode 100644 projects/configgen/configgen/generators/mednafen/__init__.py create mode 100644 projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 create mode 100644 projects/configgen/configgen/generators/mednafen/mednafenGenerator.py diff --git a/Config.in b/Config.in index 1055fd8704..af543d583b 100644 --- a/Config.in +++ b/Config.in @@ -161,6 +161,7 @@ menu "Emulators" source "$BR2_EXTERNAL_RECALBOX_PATH/package/xemu/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/xroar/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/vvvvvv/Config.in" + source "$BR2_EXTERNAL_RECALBOX_PATH/package/mednafen/Config.in" if BR2_PACKAGE_RETROARCH menu "Libretro Cores" diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml b/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml index d7f6ee9151..11d26effa3 100644 --- a/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml +++ b/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml @@ -616,4 +616,9 @@ + + + + + diff --git a/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch b/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch new file mode 100644 index 0000000000..f14201ca67 --- /dev/null +++ b/board/recalbox/patches/libretro-kronos/0001-fix-compilation-with-gcc14.patch @@ -0,0 +1,92 @@ +diff --git a/yabause/src/core/sh2/sh2_kronos/src/sh2int.c b/yabause/src/core/sh2/sh2_kronos/src/sh2int.c +index 6536900..f54ff56 100644 +--- a/yabause/src/core/sh2/sh2_kronos/src/sh2int.c ++++ b/yabause/src/core/sh2/sh2_kronos/src/sh2int.c +@@ -34,6 +34,7 @@ + #include "sh2int_kronos.h" + + #include "cs2.h" ++#include "yui.h" + + #define LOCK(A) + #define UNLOCK(A) +diff --git a/yabause/src/sys/sh2/src/sh2core.c b/yabause/src/sys/sh2/src/sh2core.c +index 1dbea44..2cb93fb 100644 +--- a/yabause/src/sys/sh2/src/sh2core.c ++++ b/yabause/src/sys/sh2/src/sh2core.c +@@ -27,6 +27,8 @@ + #include "debug.h" + #include "memory.h" + #include "yabause.h" ++#include "scu.h" ++#include "error.h" + + SH2_struct *SSH2=NULL; + SH2_struct *MSH2=NULL; +diff --git a/yabause/src/sys/vdp1/src/vdp1.c b/yabause/src/sys/vdp1/src/vdp1.c +index fbe1753..5a13df8 100644 +--- a/yabause/src/sys/vdp1/src/vdp1.c ++++ b/yabause/src/sys/vdp1/src/vdp1.c +@@ -2105,7 +2105,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + rw = cmd.CMDXB; + rh = cmd.CMDYB; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0x6: // Upper-Center +@@ -2113,7 +2113,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + rh = cmd.CMDYB; + x = x - rw / 2; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0x7: // Upper-Right +@@ -2121,7 +2121,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + rh = cmd.CMDYB; + x = x - rw; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0x9: // Center-left +@@ -2129,7 +2129,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + rh = cmd.CMDYB; + y = y - rh / 2; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0xA: // Center-center +@@ -2144,7 +2144,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + x = x - rw; + y = y - rh / 2; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0xD: // Lower-left +@@ -2152,7 +2152,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + rh = cmd.CMDYB; + y = y - rh; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + case 0xE: // Lower-center +@@ -2167,7 +2167,7 @@ void Vdp1DebugCommand(u32 number, char *outstring) + x = x - rw; + y = y - rh; + if ((rw < 0)||(rh <0)) { +- return 0; ++ return; + } + break; + default: break; diff --git a/configs/recalbox-rpi5_64_defconfig b/configs/recalbox-rpi5_64_defconfig index 1234ae7577..45f21c49be 100644 --- a/configs/recalbox-rpi5_64_defconfig +++ b/configs/recalbox-rpi5_64_defconfig @@ -329,7 +329,6 @@ BR2_PACKAGE_LIBRETRO_XMIL=y BR2_PACKAGE_LIBRETRO_XRICK=y BR2_PACKAGE_LIBRETRO_YABASANSHIRO=y BR2_PACKAGE_LIBRETRO_WASM4=y -BR2_PACKAGE_LIBRETRO_KRONOS=y BR2_PACKAGE_DOLPHIN_EMU=y BR2_PACKAGE_JSTEST2=y BR2_PACKAGE_WSD=y @@ -368,3 +367,4 @@ BR2_PACKAGE_XPADNEO=y BR2_PACKAGE_VVVVVV=y BR2_PACKAGE_LIBRETRO_TAMALIBRETRO=y BR2_PACKAGE_LIBRETRO_HATARIB=y +BR2_PACKAGE_MEDNAFEN=y diff --git a/package/arcade-dats/precompiled/stv-1.32.1.dat b/package/arcade-dats/precompiled/stv-1.32.1.dat new file mode 100644 index 0000000000..731ce0b3a8 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.dat @@ -0,0 +1,6210 @@ + + + +
+ Naomi2 + Naomi2 + Emulation + 0.258 + 30/08/2023 + Recalbox + https://www.recalbox.com/ + +
+ + Astra SuperStars (J 980514 V1.002) + 1998 + Sunsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Baku Baku Animal (J 950407 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Batman Forever (JUE 960507 V1.000) + 1996 + Acclaim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Choro Q Hyper Racing 5 (J 981230 V1.000) + 1998 + Sega / Takara + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Columns '97 (JET 961209 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cotton 2 (JUET 970902 V1.000) + 1997 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cotton Boomerang (JUET 980709 V1.000) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Critter Crusher (EA 951204 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Danchi de Hanafuda (J 990607 V1.400) + 1999 + Altron (Tecmo license) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200) + 2000 + Altron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decathlete (JUET 960709 V1.001) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decathlete (JUET 960424 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dancing Fever Gold (J 000821 V2.001) + 2001 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Hard Arcade (UET 960515 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dynamite Deka (J 960515 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ejihon Tantei Jimusho (J 950613 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006) + 1998 + Sai-Mate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fantasy Zone (medal game, REV.A) (J 990202 V1.000) + 1999 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Fight Revenge / Final Revenge (JUET 990930 V1.100) + 1999 + Capcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Fight Revenge / Final Revenge (JUET 990714 V1.000) + 1999 + Capcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Funky Head Boxers (JUETBKAL 951218 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000) + 1997 + Daiki / FCF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Arch (J 950714 V1.001) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Golden Axe - The Duel (JUETL 950117 V1.000) + 1994 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Guardian Force (JUET 980318 V0.105) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Karaoke Quiz Intro Don Don! (J 960213 V1.000) + 1996 + Sunsoft / Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro Mahjong Kiwame S (J 951020 V1.208) + 1995 + Athena + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Magical Zunou Power (J 961031 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maru-Chan de Goo! (J 971216 V1.000) + 1997 + Sega / Toyosuisan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mausuke no Ojama the World (J 960314 V1.000) + 1996 + Data East + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Microman Battle Charge (J 990326 V1.000) + 1999 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000) + 1998 + Micronet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club (J 960315 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Disney (J 980614 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.2 (J 960315 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.3 (J 970723 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.4 (J 971202 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Othello Shiyouyo (J 980423 V1.002) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hashire Patrol Car (J 990326 V1.000) + 2001 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pebble Beach - The Great Shot (JUE 950913 V0.990) + 1995 + T&E Soft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club LoveLove (J 970421 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club LoveLove Ver 2 (J 970825 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 (U 970921 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 6 Winter (J 961210 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 6 Winter (J 970121 V1.200) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 7 Spring (J 970313 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Kome Kome Club (J 970203 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Pepsiman (J 970618 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Puffy (J V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 3 (U 990310 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Warner Bros (J 970228 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Olive (J 980717 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Goukakenran (J 991104 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Pokemon B (U 991126 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Yoshimoto V2 (J 970422 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 8 Summer (J 970616 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Autumn Ver (J 980827 V1.000) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Spring Ver (J 971017 V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Summer Ver (J 980603 V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 9 Autumn (J V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 2000 Summer (J 000509 V1.000) + 2000 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Princess Clara Daisakusen (J 960910 V1.000) + 1996 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puyo Puyo Sun (J 961115 V0.001) + 1996 + Compile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Radiant Silvergun (JUET 980523 V1.000) + 1998 + Treasure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Soreyuke Anpanman Crayon Kids (J 001026 V1.000) + 2000 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: Sando-R (J 951114 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000) + 1999 + Sega / Deniam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Taisen Tanto-R Sashissu!! (J 980216 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sea Bass Fishing (JUET 971110 V0.001) + 1997 + A wave inc. (Able license) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005) + 1995 + Sunsoft / Activision + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shienryu (JUET 961226 V1.000) + 1997 + Warashi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sky Challenger (J 000406 V1.000) + 2000 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Super Major League (U 960108 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Soukyugurentai / Terra Diver (JUET 960821 V1.000) + 1996 + Raizing / Eighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Steep Slope Sliders (JUET 981110 V1.000) + 1998 + Capcom / Cave / Victor Interactive Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stress Busters (J 981020 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ST-V BIOS + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001) + 1995 + Data East + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nerae! Super Goal (J 981218 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tatacot (JA 951128 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Technical Bowling (J 971212 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K) + 1997 + Sega / Deniam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tecmo World Cup '98 (JUET 980410 V1.000) + 1998 + Tecmo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tecmo World Soccer '98 (JUET 980410 V1.000) + 1998 + Tecmo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtua Fighter Kids (JUET 960319 V0.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtua Fighter Remix (JUETBKAL 950428 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtual Mahjong (J 961214 V1.000) + 1997 + Micronet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wanpaku Safari (J 981109 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Winter Heat (JUET 971012 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yatterman Plus (J 981006 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/package/arcade-dats/precompiled/stv-1.32.1.fdt b/package/arcade-dats/precompiled/stv-1.32.1.fdt new file mode 100644 index 0000000000..07f5615a07 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.fdt @@ -0,0 +1,102 @@ +astrass||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20825.13|94a9ad8f|1048576|mpr20826.1|bdc4b941|4194304|mpr20827.2|65cabbb3|4194304|mpr20828.3|3934d44a|4194304|mpr20829.4|814308c3|4194304|mpr20830.5|ff97fd19|4194304|mpr20831.6|4408e6fb|4194304|mpr20832.8|af1b0985|4194304|mpr20833.9|cb6af231|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +bakubaku||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr17969.13|bee327e5|1048576|mpr17970.2|bc4d6f91|4194304|mpr17971.3|c780a3b3|4194304|mpr17972.4|8f29815a|4194304|mpr17973.5|5f6e0e8b|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +batmanfr||350-mpa1.u16|735e23ab|1048576|350-mpa1.u19|2a5a8c3a|1048576|350snda1.u52|9027e7a0|524288|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|gfx0.u1|a82d0b7e|4194304|gfx1.u3|a41e55d9|4194304|gfx2.u5|4c1ebeb7|4194304|gfx3.u8|f679a3e7|4194304|gfx4.u12|52d95242|4194304|gfx5.u15|e201f830|4194304|gfx6.u18|c6b381a3|4194304|snd0.u48|02b1927c|2097152|snd1.u49|58b18eda|2097152|snd2.u50|51d626d6|2097152|snd3.u51|31af26ae|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +choroqhr||choroqhr.nv|6e89815f|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|22c58710|2097152|ic24.bin|09b8a154|2097152|ic26.bin|136ca5e9|2097152|ic28.bin|3c949563|2097152|ic30.bin|7e93078d|2097152|ic32.bin|86cdcbd8|2097152|ic34.bin|be2ed0a0|2097152|ic36.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +colmns97||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19553.13|d4fb6a5e|1048576|mpr19554.2|5a3ebcac|4194304|mpr19555.3|74f6e6b8|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +cotton2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20116.1|d30b0175|4194304|mpr20117.2|893656ea|4194304|mpr20118.3|1b6a1d4c|4194304|mpr20119.4|5a76e72b|4194304|mpr20120.5|7113dd7b|4194304|mpr20121.6|8c8fd521|4194304|mpr20122.7|d616f78a|2097152|mpr20123.8|35f1b89f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +cottonbm||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21069.1|6a28e3c5|4194304|mpr21070.2|56c0bf1d|4194304|mpr21071.3|2bb18df2|4194304|mpr21072.4|7c7cb977|4194304|mpr21073.5|f2e5a5b7|4194304|mpr21074.6|6a7e7a7b|4194304|mpr21075.7|200b58ba|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +critcrsh||critcrsh.nv|3da9860e|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-18821.ic13|9a6658e2|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr-18788.ic9|feae5867|4194304|mpr-18789.ic8|b388616f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +danchih||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21970.2|34dd7f4d|4194304|mpr21971.3|8995158c|4194304|mpr21972.4|68a39090|4194304|mpr21973.5|b0f23f14|4194304|mpr21974.7|e7472793|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +danchiq||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|e216bfc8|2097152|ic23|d080eb71|2097152|ic24|b95aa5ac|2097152|ic25|9a4109e5|2097152|ic26|df6ebd48|2097152|ic28|cf6a2b76|2097152|ic30|0b6a9901|2097152|ic32|0b4604f5|2097152|ic34|616e20fa|2097152|ic36|43474e08|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +decathlt||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18967a.13|ac59c186|1048576|mpr18968.2|11a891de|4194304|mpr18969.3|199cc47d|4194304|mpr18970.4|8b7a509e|4194304|mpr18971.5|c87c443b|4194304|mpr18972.6|45c64fca|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +decathlto|decathlt|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18967.13|c0446674|1048576|mpr18968.2|11a891de|4194304|mpr18969.3|199cc47d|4194304|mpr18970.4|8b7a509e|4194304|mpr18971.5|c87c443b|4194304|mpr18972.6|45c64fca|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +dfeverg||1|d72f1640|4194304|10|4b2a4397|4194304|11|58877b19|4194304|12||4194304|13|ecd7ac4b|524288|2|c2e8aee5|4194304|3|cb5b2744|4194304|4|7eca59b2|4194304|5|c3450f2b|4194304|6|1ac57ed5|4194304|8|acc78f10|4194304|9|4ffbba8d|4194304|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +diehard||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19119.13|de5c4f7c|1048576|mpr19115.2|6fe06a30|4194304|mpr19116.3|af9e627b|4194304|mpr19117.4|74520ff1|4194304|mpr19118.5|2c9702f0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +dnmtdeka|diehard|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19114.13|1fd22a5f|1048576|mpr19115.2|6fe06a30|4194304|mpr19116.3|af9e627b|4194304|mpr19117.4|74520ff1|4194304|mpr19118.5|2c9702f0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ejihon||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18137.13|151aa9bc|524288|mpr18138.2|f5567049|4194304|mpr18139.3|f36b4878|4194304|mpr18140.4|228850a0|4194304|mpr18141.5|b51eef36|4194304|mpr18142.6|cf259541|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +elandore||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21301.2|1a23b0a0|4194304|mpr21302.3|1c91ca33|4194304|mpr21303.4|07b2350e|4194304|mpr21304.5|cfea52ae|4194304|mpr21305.6|46cfc2a2|4194304|mpr21306.1|87a5929c|4194304|mpr21307.7|966ad472|2097152|mpr21308.8|336ec1a4|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +fanzonem||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21440a.ic13|28457d58|524288|epr-23603.ic8|f688ae60|524288|mpr-21441.ic2|b69133a5|4194304|mpr-21442.ic4|d4d3575f|4194304|mpr-21443.ic6|cb1401c9|4194304|mpr-21444.ic8|a82ff33b|4194304|mpr-21445.ic1|c02ffbd3|4194304|mpr-21446.ic3|4831539e|4194304|mpr-21447.ic5|61e0d313|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ffreveng||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ffr110.ic35|3ffea541|1048576|mpr21873.2|dac5bd98|4194304|mpr21874.3|0a7be2f1|4194304|mpr21875.4|ccb75029|4194304|mpr21876.5|bb92a7fc|4194304|mpr21877.6|c22a4a75|4194304|opr21872.7|32d36fee|2097152|opr21878.1|2ea4a64d|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ffrevng10|ffreveng|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21873.2|dac5bd98|4194304|mpr21874.3|0a7be2f1|4194304|mpr21875.4|ccb75029|4194304|mpr21876.5|bb92a7fc|4194304|mpr21877.6|c22a4a75|4194304|opr21872.7|32d36fee|2097152|opr21878.1|2ea4a64d|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +fhboxers||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fhboxers.nv|590fd6da|128|fr18541a.13|8c61a17c|1048576|mpr18532.1|39528643|4194304|mpr18533.2|7181fe51|4194304|mpr18534.3|c87ef125|4194304|mpr18535.4|929a64cf|4194304|mpr18536.5|51b9f64e|4194304|mpr18537.6|c364f6a7|4194304|mpr18538.7|7b5230c5|2097152|mpr18539.8|62b3908c|4194304|mpr18540.9|4c2b59a4|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +findlove||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20424.13|4e61fa46|1048576|findlove.nv|df2fa9f6|128|mpr20425.1|67f104c4|4194304|mpr20426.2|897d1747|4194304|mpr20427.3|a488a694|4194304|mpr20428.4|4353b3b6|4194304|mpr20429.5|4f566486|4194304|mpr20430.6|d1e11979|4194304|mpr20431.7|ea656ced|2097152|mpr20432.8|79fcdecd|4194304|mpr20433.9|82289f29|4194304|mpr20434.10|85c94afc|4194304|mpr20435.11|263a2e48|4194304|mpr20436.12|e3823f49|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +finlarch|smleague|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|finlarch.13|4505fa9e|1048576|mpr18257.2|137fdf55|4194304|mpr18258.3|f519c505|4194304|mpr18259.4|5cabc775|4194304|mpr18260.5|f5b92082|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +gaxeduel||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr17766.13|a83fcd62|524288|mpr17767.1|9ba1e7b1|4194304|mpr17768.2|d6808a7d|4194304|mpr17769.3|3471dd35|4194304|mpr17770.4|06978a00|4194304|mpr17771.5|aea2ea3b|4194304|mpr17772.6|b3dc0e75|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +grdforce||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20839.2|facd4dd8|4194304|mpr20840.3|fe0158e6|4194304|mpr20841.4|d87ac873|4194304|mpr20842.5|baebc506|4194304|mpr20843.6|263e49cc|4194304|mpr20844.7|283e7587|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +groovef||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19814.1|8f20e9f7|4194304|mpr19815.2|1b9b14e6|4194304|mpr19816.3|83f5731c|4194304|mpr19817.4|525bd6c7|4194304|mpr19818.5|66723ba8|4194304|mpr19819.6|ee8c55f4|4194304|mpr19820.7|e93c4513|1048576|mpr19821.8|f69a76e6|4194304|mpr19822.9|5e8c4b5f|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +hanagumi||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20137.1|181d2688|4194304|mpr20138.2|fdcf1046|4194304|mpr20139.3|7f0140e5|4194304|mpr20140.4|2fa03852|4194304|mpr20141.5|45d6d21b|4194304|mpr20142.6|e38561ec|4194304|mpr20143.7|7bfc38d0|1048576|mpr20144.8|235b43f6|4194304|mpr20145.9|aeaac7a1|4194304|mpr20146.10|39bab9a2|4194304|mpr20147.11|294ab997|4194304|mpr20148.12|5337ccb0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +introdon||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18937.13|1f40d766|524288|mpr18938.1|580ecb83|4194304|mpr18939.2|ef95a6e6|4194304|mpr18940.3|cabab4cd|4194304|mpr18941.4|f4a33a20|4194304|mpr18942.5|8dd0a446|4194304|mpr18943.6|d8702a9e|4194304|mpr18944.7|f7f75ce5|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +kiwames||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18737.13|cfad6c49|524288|kiwames.nv|c7002732|128|mpr18738.2|4b3c175a|4194304|mpr18739.3|eb41fa67|4194304|mpr18740.4|9ca7962f|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +magzun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|flash.ic13|e6f0aca0|1048576|magzun.nv|42700321|128|microm||4096|mpr-19354.ic2|a23822e7|4194304|mpr-19355.ic3|d70e5ebc|4194304|mpr-19356.ic4|3bc43fe9|4194304|mpr-19357.ic5|aa749370|4194304|mpr-19358.ic6|0969f1ec|4194304|mpr-19359.ic1|b0d06f9c|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +maruchan||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20416.13|8bf0176d|1048576|mpr20417.2|636c2a08|4194304|mpr20418.3|3f0d9e34|4194304|mpr20419.4|ec969815|4194304|mpr20420.5|f2902c88|4194304|mpr20421.6|cd0b477c|4194304|mpr20422.1|66335049|4194304|mpr20423.8|2bd55832|4194304|mpr20443.9|8ac288f5|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +mausuke||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic13.bin|b456f4cd|1048576|mcj-00.2|4eeacd6f|2097152|mcj-01.3|365a494b|2097152|mcj-02.4|8b8e4931|2097152|mcj-03.5|9015a0e7|2097152|mcj-04.6|9d1beaee|2097152|mcj-05.1|a7626a82|2097152|mcj-06.8|1ab8e90e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +micrombc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|8385bc45|2097152|ic24|84ecb42f|2097152|ic26|869bc19c|2097152|ic28|0c3db354|2097152|ic30|03b9eacf|2097152|ic32|62c10626|2097152|ic34|8d89877e|2097152|ic36|8d89877e|2097152|micrombc.nv|6e89815f|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +myfairld||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20994.1|a69243a0|4194304|mpr20995.2|1bb73f24|4194304|mpr20996.3|993c3859|4194304|mpr20997.4|f0bf64a4|4194304|mpr20998.5|d3b19786|4194304|mpr20999.6|82e31f25|4194304|mpr21000.7|2581c560|2097152|mpr21001.8|95fbe549|4194304|myfairld.nv|c7cf3a5a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nameclub||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|ac23c648|2097152|ic24|a16902e3|2097152|ic26|a5eab3f3|2097152|ic28|34ed677a|2097152|nameclub.nv|680a64bc|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubdis||315-6055.ic12||279|315-6056-01.ic13||279|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|cfd5eb54|2097152|ic23|9a4109e5|2097152|ic24|943682eb|2097152|ic25|9a4109e5|2097152|ic26|a17bd53a|2097152|ic28|9a597bff|2097152|ic30|3eb020f6|2097152|ic32|ac26d375|2097152|ic34|e157cd99|2097152|ic36|9a4109e5|2097152|nclubdis.nv|7efc9c6a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|nclubv2.ic22|7e81676d|2097152|nclubv2.ic24|1b7637de|2097152|nclubv2.ic26|630be99d|2097152|nclubv2.ic28|1a3ca5e2|2097152|nclubv2.nv|96d55fa9|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv3||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|b4008ed0|2097152|ic23|bd922829|2097152|ic24|4e894850|2097152|ic25|f77f9e24|2097152|ic26|5b6b023f|2097152|ic28|b7beab03|2097152|ic30|a9f81069|2097152|ic32|02708d66|2097152|ic34|c79d0537|2097152|ic36|0c9df896|2097152|nclubv3.nv|9122a9e9|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv4||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|80eba7e9|2097152|ic23|9a4109e5|2097152|ic24|6bbb1b0c|2097152|ic25|9a4109e5|2097152|ic26|5352ade3|2097152|ic28|44f4b15a|2097152|ic30|fc4e56e6|2097152|ic32|6f825b87|2097152|ic34|62114a08|2097152|ic36|9a4109e5|2097152|nclubv4.nv|7efc9c6a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +othellos||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20963.2|2cc4f141|4194304|mpr20964.3|5f5cda94|4194304|mpr20965.4|37044f3e|4194304|mpr20966.5|b94b83de|4194304|mpr20967.7|efc05b97|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +patocar||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|b7e6d425|2097152|ic24.bin|cbbb687e|2097152|ic26.bin|91db9dbe|2097152|ic28.bin|bff0cd9c|2097152|ic30.bin|9a4109e5|2097152|patocar.nv|d9873ee8|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pblbeach||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18852.13|d12414ec|524288|mpr18853.2|b9268c97|4194304|mpr18854.3|3113c8bc|4194304|mpr18855.4|daf6ad0c|4194304|mpr18856.5|214cef24|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pckobe99||eeprom|dbe305a9|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|670296eb|2097152|ic24.bin|c2139f62|2097152|ic26.bin|17e3efd0|2097152|ic28.bin|a52f99f6|2097152|ic30.bin|f1b7e3d5|2097152|ic32.bin|76f6efaa|2097152|ic34.bin|894c63f9|2097152|ic36.bin|078694c3|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclb2elk||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2elk.nv|54c7564f|128|pclb2elk_ic22|2faed82a|2097152|pclb2elk_ic24|9cacfb7b|2097152|pclb2elk_ic26|533a189e|2097152|pclb2elk_ic28|1f0c9113|2097152|pclb2elk_ic30|0e188b8c|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclove||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclblove.ic22|8cd25a0f|2097152|pclblove.ic24|85583e2c|2097152|pclblove.ic26|7efcabcc|2097152|pclblove.ic28|a1336da7|2097152|pclblove.ic30|ec5b5e28|2097152|pclblove.ic32|9a4109e5|2097152|pclove.nv|3c78e3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclove2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|d7d968d6|2097152|ic24|9c9b7e57|2097152|ic26|55eb859f|2097152|ic28|463604a6|2097152|ic30|ec5b5e28|2097152|ic32|9a4109e5|2097152|pclove2.nv|93b30600|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2.nv|00d0f04e|128|pclub2_ic22|d2ceade7|2097152|pclub2_ic24|0e968c2d|2097152|pclub2_ic26|ab51da70|2097152|pclub2_ic28|3a654b2a|2097152|pclub2_ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub26w||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclbvol6w_ic22|72aa320c|2097152|pclbvol6w_ic24|d98371e2|2097152|pclbvol6w_ic26|e6bbe3a5|2097152|pclbvol6w_ic28|3c330c9b|2097152|pclbvol6w_ic30|67646090|2097152|pclub26w.nv|448f770d|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub26wa|pclub26w|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a88e117d|2097152|ic26.bin|d0412c8d|2097152|ic30.bin|00a0c702|2097152|ic24.bin|d98371e2|2097152|ic28.bin|3c330c9b|2097152|pclub26w.nv|448f770d|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub27s||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub27s.nv|e58c7167|128|pclub2v7.ic22|44c8ab27|2097152|pclub2v7.ic24|24818437|2097152|pclub2v7.ic26|076c1d44|2097152|pclub2v7.ic28|ff9643ca|2097152|pclub2v7.ic30|03b9eacf|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2fc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2fc.nv|c8082326|128|pclub2fc_ic22|109c61a5|2097152|pclub2fc_ic24|0ccc5538|2097152|pclub2fc_ic26|8d89877e|2097152|pclub2fc_ic28|ff9643ca|2097152|pclub2fc_ic30|03b9eacf|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2kc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2kc.nv|064366fe|128|pclub2kc_ic22|9eb4cfd7|2097152|pclub2kc_ic24|cf3b4080|2097152|pclub2kc_ic26|dbdcb1d7|2097152|pclub2kc_ic28|3c330c9b|2097152|pclub2kc_ic30|00a0c702|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2pe||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2psi_ic22|caadc660|2097152|pclb2psi_ic24|ece82698|2097152|pclb2psi_ic26|c8a1e335|2097152|pclb2psi_ic28|52f09627|2097152|pclb2psi_ic30|03b9eacf|2097152|pclub2pe.nv|447bb3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2pf||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2puf.ic22|a14282f2|2097152|pclb2puf.ic24|4fb4dc74|2097152|pclb2puf.ic26|d20bbfb5|2097152|pclb2puf.ic28|da658ae9|2097152|pclb2puf.ic30|cafc0e6b|2097152|pclub2pf.nv|447bb3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2v3||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2v3.nv|a8a2d30c|128|pclub2v3_ic22|f88347aa|2097152|pclub2v3_ic24|b5871198|2097152|pclub2v3_ic26|d97034ed|2097152|pclub2v3_ic28|f1421506|2097152|pclub2v3_ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2wb||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2wb_ic22|12245be7|2097152|pclb2wb_ic24|e5d6e11e|2097152|pclb2wb_ic26|7ee066f0|2097152|pclb2wb_ic28|9ed59513|2097152|pclb2wb_ic30|00a0c702|2097152|pclub2wb.nv|0d442eec|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubol||eeprom|a744ca03|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubol_ic22|668b1049|2097152|pclubol_ic24|35721f04|2097152|pclubol_ic26|17b3cc4b|2097152|pclubol_ic28|7cfaa530|2097152|pclubol_ic30|e1dd7854|2097152|pclubol_ic32|f0a3ded7|2097152|pclubol_ic34|53aa9821|2097152|pclubol_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubor||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubor.nv|3ad918c0|128|pclubor_ic22|b25072f7|2097152|pclubor_ic24|a4863a0e|2097152|pclubor_ic26|7f55baf7|2097152|pclubor_ic28|cafd2a7d|2097152|pclubor_ic30|ccf6f885|2097152|pclubor_ic32|62e6d1e1|2097152|pclubor_ic34|19cdd167|2097152|pclubor_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubpok||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubpok.nv|4ba3f21a|128|pclubpok_ic22|48ab8371|2097152|pclubpok_ic24|9915faea|2097152|pclubpok_ic26|054ad120|2097152|pclubpok_ic28|3a654b2a|2097152|pclubpok_ic30|98747bef|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubyo2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclbyov2.ic22|719a4d27|2097152|pclbyov2.ic24|790dc7b5|2097152|pclbyov2.ic26|12ae1606|2097152|pclbyov2.ic28|ff9643ca|2097152|pclbyov2.ic30|03b9eacf|2097152|pclubyo2.nv|2b26a8f7|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pcpooh2||eeprom|5aee29d0|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|2cb33332|2097152|ic24.bin|3c6fc10f|2097152|ic26.bin|b891c7ab|2097152|ic28.bin|1a1c74cb|2097152|ic30.bin|b7b6fc61|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pcpooh3||eeprom|e41d541b|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|efc83c4f|2097152|ic24.bin|e8753d0d|2097152|ic26.bin|daf1a0d4|2097152|ic28.bin|3c0f040f|2097152|ic30.bin|6006d785|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc28su||eeprom|447bb3bd|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|u22.bin|b78cf122|2097152|u24.bin|aca05d29|2097152|u26.bin|5591f6e2|2097152|u28.bin|0899889b|2097152|u30.bin|03b9eacf|2097152|u32.bin|5dc1f4d7|2097152|u34.bin|0222734a|2097152|u36.bin|57c30e0f|2097152 +prc297wi||eeprom|9ba58358|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc297wi_ic22|589f6705|2097152|prc297wi_ic23|e3d9d12b|2097152|prc297wi_ic24|4bd706d1|2097152|prc297wi_ic25|71238374|2097152|prc297wi_ic26|417e182a|2097152|prc297wi_ic27|7485a9a2|2097152|prc297wi_ic28|73da594e|2097152|prc297wi_ic30|03b9eacf|2097152|prc297wi_ic32|20437e93|2097152|prc297wi_ic34|9639b003|2097152|prc297wi_ic36|dd1b57b6|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc297wia|prc297wi|eeprom|9ba58358|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb297w_ic22_alt|1feb3bfe|2097152|prc297wi_ic23|e3d9d12b|2097152|prc297wi_ic24|4bd706d1|2097152|prc297wi_ic25|71238374|2097152|prc297wi_ic26|417e182a|2097152|prc297wi_ic27|7485a9a2|2097152|prc297wi_ic28|73da594e|2097152|prc297wi_ic30|03b9eacf|2097152|prc297wi_ic32|20437e93|2097152|prc297wi_ic34|9639b003|2097152|prc297wi_ic36|dd1b57b6|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298au||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc298au.nv|b4440ff0|128|prc298au_ic22|21a995ce|2097152|prc298au_ic24|94540f39|2097152|prc298au_ic26|8b22c41f|2097152|prc298au_ic28|bf68cec0|2097152|prc298au_ic30|ae276c06|2097152|prc298au_ic32|a3fb81f5|2097152|prc298au_ic34|04200dc9|2097152|prc298au_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298sp||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc298sp.nv|a23dd0f2|128|prc298sp_ic22|cb0ec98a|2097152|prc298sp_ic24|645e7e24|2097152|prc298sp_ic26|9d3ad85d|2097152|prc298sp_ic28|877e73cc|2097152|prc298sp_ic30|03b9eacf|2097152|prc298sp_ic32|62c10626|2097152|prc298sp_ic34|8d89877e|2097152|prc298sp_ic36|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298su||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb298s_ic22|9720fe7a|2097152|pclb298s_ic24|380496dc|2097152|pclb298s_ic26|42622126|2097152|pclb298s_ic28|c03e861a|2097152|pclb298s_ic30|01844b12|2097152|prc298su.nv|6b81636a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc29au||eeprom|447bb3bd|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|b7a9bfa4|2097152|ic24.bin|91f36785|2097152|ic26.bin|4c1b8823|2097152|ic28.bin|594d200f|2097152|ic30.bin|03b9eacf|2097152|ic32.bin|76f6efaa|2097152|ic34.bin|894c63f9|2097152|ic36.bin|524a1c4e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc2ksu||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|4b3de7df|2097152|ic24.bin|02da49b7|2097152|ic26.bin|a431d614|2097152|ic28.bin|c0fba1a5|2097152|ic30.bin|0811d0e4|2097152|prc2ksu.nv|ee7ffdc5|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prikura||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19333.2|eb57a6a6|4194304|mpr19334.3|c9979981|4194304|mpr19335.4|9e000140|4194304|mpr19336.5|2363fa4b|4194304|mpr19337.7|76f69ff3|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +puyosun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr19531.13|ac81024f|524288|mpr19532.1|985f0c9d|4194304|mpr19533.2|17ec54ba|4194304|mpr19534.3|820e4781|4194304|mpr19535.4|94fadfa4|4194304|mpr19536.5|5765bc9c|4194304|mpr19537.6|8b736686|4194304|mpr19538.8|915a723e|4194304|mpr19539.9|72a297e5|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +rsgun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20958.7|cbe5a449|2097152|mpr20959.2|a953330b|4194304|mpr20960.3|b5ab9053|4194304|mpr20961.4|0e06295c|4194304|mpr20962.5|f1e6c7fc|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sackids||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|4d9d1870|2097152|ic24.bin|39fca3e5|2097152|ic26.bin|f38c79b6|2097152|ic28.bin|63d09f3c|2097152|ic30.bin|f89811ba|2097152|ic32.bin|1db6c26b|2097152|ic34.bin|0f3622c8|2097152|ic36.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sandor||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr18635.8|441e1368|4194304|mpr18636.9|fff1dd80|4194304|mpr18637.10|83aced0f|4194304|mpr18638.11|caab531b|4194304|sando-r.13|fe63a239|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sanjeon|sasissu|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic11|9abae8d4|2097152|ic12|d5ebc84e|4194304|ic13|f72c1d13|2097152|ic14|bcd72105|2097152|ic15|8c9c8352|2097152|ic16|07e11512|2097152|ic17|46b7b344|2097152|ic18|d48404e1|2097152|ic19|33d23bb9|2097152|ic20|f8cc1038|2097152|ic21|74ceb649|2097152|ic22|85f31277|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sasissu||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20542.13|0e632db5|1048576|mpr20543.1|1f688cdf|4194304|mpr20544.2|661fff5e|4194304|mpr20545.3|8e3a37be|4194304|mpr20546.4|72020886|4194304|mpr20547.5|8362e397|4194304|mpr20548.6|e37534d9|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +seabass||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20550.1|083e1ca8|4194304|mpr20551.2|9a0c6dd8|4194304|mpr20552.3|5f46b0aa|4194304|mpr20553.4|c0f8a6b6|4194304|mpr20554.5|215fc1f9|4194304|mpr20555.6|3f5186a9|4194304|mpr20556.8|1fd70c6c|4194304|mpr20557.9|3c9ba442|4194304|seabass.nv|4e7c0944|128|seabassf.13|6d7c39cc|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +shanhigw||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr18340.2|8db23212|2097152|mpr18341.7|cc5e8646|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +shienryu||eeprom-shienryu.bin|98db6925|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19631.7|3a4b1abc|2097152|mpr19632.2|985fae46|4194304|mpr19633.3|e2f0b037|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +skychal||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a12ccf64|2097152|ic24.bin|9a929dcf|2097152|ic26.bin|ed2183d3|2097152|ic28.bin|e7401d68|2097152|ic30.bin|950f7a2f|2097152|ic32.bin|a656212b|2097152|skychal.nv|a6515237|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +smleague||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18777.13|8d180866|524288|mpr18778.8|25e1300e|4194304|mpr18779.9|51e2fabd|4194304|mpr18780.10|8cd4dd74|4194304|mpr18781.11|13ee41ae|4194304|mpr18782.12|9be2270a|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sokyugrt||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19188.13|45a27e32|1048576|mpr19189.2|0b202a3e|4194304|mpr19190.3|1777ded8|4194304|mpr19191.4|ec6eb07b|4194304|mpr19192.5|cb544a1e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sss||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr21488.13|71c9def1|524288|mpr21489.2|4c85152b|4194304|mpr21490.3|03da67f8|4194304|mpr21491.4|cf7ee784|4194304|mpr21492.5|57753894|4194304|mpr21493.6|efb2d271|4194304|sss.nv|3473b2f3|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +stress||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21300a.ic13|899d829e|1048576|epr-23603.ic8|f688ae60|524288|mpr-21289.ic1|c2ee8bea|4194304|mpr-21290.ic2|a49d29f3|4194304|mpr-21291.ic3|9452ba20|4194304|mpr-21292.ic4|f60268e2|4194304|mpr-21293.ic5|794946e0|4194304|mpr-21294.ic6|550843bb|4194304|mpr-21296.ic8|b825c42a|4194304|mpr-21297.ic9|4bff7469|4194304|mpr-21298.ic10|68d07144|4194304|mpr-21299.ic11|ecc521c6|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +stvbios||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|stvbios.nv|15432ae2|128 +suikoenb||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr17834.13|746ef686|1048576|mpr17835.1|77f5cb43|4194304|mpr17836.2|55e9642d|4194304|mpr17837.3|13d1e667|4194304|mpr17838.4|f9e70032|4194304|mpr17839.5|1b2762c5|4194304|mpr17840.6|0fd4c857|4194304|mpr17841.8|f48beffc|4194304|mpr17842.9|ac8deed7|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +supgoal||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a686f7a2|2097152|ic24.bin|56fbbeea|2097152|ic26.bin|64701c2b|2097152|ic28.bin|d9aebe8c|2097152|ic30.bin|26d4ade5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|supgoal.nv|63806aae|128 +tatacot|critcrsh|critcrsh.nv|3da9860e|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-18790.ic13|d95155dc|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr-18788.ic9|feae5867|4194304|mpr-18789.ic8|b388616f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +techbowl||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|5058db21|2097152|ic24|34090f6d|2097152|ic26|fb073352|2097152|ic28|530e0ceb|2097152|ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|techbowl.nv|5bebc2b7|128 +thunt|sandor|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|th-e-2.ic2|47315694|4194304|th-e-3.ic3|c9290b44|4194304|th-e-4.ic4|c672e40b|4194304|th-e-5.ic5|3914b805|4194304|th-ic7_1.stv|1355cc18|524288|th-ic7_2.stv|c4e993de|524288 +thuntk|sandor|1.ic13_1|460727c8|524288|2.ic13_2|6cae2926|524288|bom210-10.ic2|f59d0827|4194304|bom210-11.ic3|44e5a13e|4194304|bom210-12.ic4|deabc701|4194304|bom210-13.ic5|5ece1d5c|4194304|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +twcup98||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20819.24|d930dfc8|1048576|mpr20821.12|2d930d23|4194304|mpr20822.13|8b33a5e2|4194304|mpr20823.14|6e6d4e95|4194304|mpr20824.15|4cf18a25|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +twsoc98|twcup98|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-20820.ic24|b10451f9|1048576|epr-23603.ic8|f688ae60|524288|mpr20821.12|2d930d23|4194304|mpr20822.13|8b33a5e2|4194304|mpr20823.14|6e6d4e95|4194304|mpr20824.15|4cf18a25|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vfkids||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr18914.13|cd35730a|1048576|mpr18915.1|09cc38e5|4194304|mpr18916.4|4aae3ddb|4194304|mpr18917.5|edf6edc3|4194304|mpr18918.6|d3a95036|4194304|mpr18919.8|4ac700de|4194304|mpr18920.9|0106e36c|4194304|mpr18921.10|c23d51ad|4194304|mpr18922.11|99d0ab90|4194304|mpr18923.12|30a41ae9|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vfremix||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr17944.13|3304c175|524288|mpr17945.1|03ede188|2097152|mpr17946.2|4cb245f7|4194304|mpr17947.3|fef4a9fb|4194304|mpr17948.4|3e2b251a|4194304|mpr17949.5|b2ecea25|4194304|mpr17950.6|5b1f981d|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vmahjong||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19614.1|b83b3f03|4194304|mpr19615.2|c62896da|4194304|mpr19616.3|f62207c7|4194304|mpr19617.4|ab667e19|4194304|mpr19618.5|9782ceee|4194304|mpr19619.6|0b76866c|4194304|mpr19620.7|c98de7e5|2097152|mpr19621.8|f92616b3|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|vmahjong.nv|4e6487f4|128 +wasafari||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|d8bb2e2c|2097152|ic24.bin|c1b0e173|2097152|ic26.bin|a5c0577c|2097152|ic28.bin|2a8cfa97|2097152|ic30.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|wasafari.nv|50861c5a|128 +winterht||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr20108.13|1ef9ced0|1048576|mpr20109.1|c1a713b8|4194304|mpr20110.2|238ef832|4194304|mpr20111.3|b0a86f69|4194304|mpr20112.4|3ba2b49b|4194304|mpr20113.5|8c858b41|4194304|mpr20114.6|b723862c|4194304|mpr20115.8|dd01f2ad|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +yattrmnp||315-5930.ic19|d1201563|279|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21121.bin|d615bce0|131072|epr-21122.ic13|49f56e32|524288|epr-23603.ic8|f688ae60|524288|mpr-21123.ic12|491b9166|4194304|mpr-21124.ic11|10f073ac|4194304|mpr-21125.ic02|40f5f119|4194304|mpr-21126.ic04|36095649|4194304|mpr-21127.ic06|f55901d7|4194304|mpr-21128.ic08|c2e2f72e|4194304|mpr-21129.ic10|997d67bd|4194304|mpr-21130.ic03|84cb4e9c|4194304|mpr-21131.ic05|b1c860d8|4194304|mpr-21132.ic07|809b1b0e|4194304|mpr-21133.ic09|2dc21956|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +znpwfv||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20398.13|3fb56a0b|1048576|mpr20399.1|c178a96e|4194304|mpr20400.2|1edfbe05|4194304|mpr20401.3|99e98937|4194304|mpr20402.4|4572aa60|4194304|mpr20403.5|26a8e13e|4194304|mpr20404.6|0b70275d|4194304|mpr20405.8|f53337b7|4194304|mpr20406.9|b677c175|4194304|mpr20407.10|58356050|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +znpwfvt|znpwfv|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20408.13|1d62fcf6|1048576|mpr20399.1|c178a96e|4194304|mpr20400.2|1edfbe05|4194304|mpr20401.3|99e98937|4194304|mpr20402.4|4572aa60|4194304|mpr20403.5|26a8e13e|4194304|mpr20404.6|0b70275d|4194304|mpr20405.8|f53337b7|4194304|mpr20406.9|b677c175|4194304|mpr20407.10|58356050|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst b/package/arcade-dats/precompiled/stv-1.32.1.lst new file mode 100644 index 0000000000..3ad38b63aa --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst @@ -0,0 +1,103 @@ +name|description|type|sourcefile|rotate|width|height|refresh|bios|parent|status|manufacter +astrass|Astra SuperStars (J 980514 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft +bakubaku|Baku Baku Animal (J 950407 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +batmanfr|Batman Forever (JUE 960507 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Acclaim +choroqhr|Choro Q Hyper Racing 5 (J 981230 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega/Takara +colmns97|Columns '97 (JET 961209 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +cotton2|Cotton 2 (JUET 970902 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +cottonbm|Cotton Boomerang (JUET 980709 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +critcrsh|Critter Crusher (EA 951204 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +danchih|Danchi de Hanafuda (J 990607 V1.400)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron/Tecmo +danchiq|Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron +decathlt|Decathlete (JUET 960709 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +decathlto|Decathlete (JUET 960424 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|decathlt|preliminary|Sega +dfeverg|Dancing Fever Gold (J 000821 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +diehard|Die Hard Arcade (UET 960515 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +dnmtdeka|Dynamite Deka (J 960515 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|diehard|imperfect|Sega +ejihon|Ejihon Tantei Jimusho (J 950613 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +elandore|Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sai-Mate +fanzonem|Fantasy Zone (medal game, REV.A) (J 990202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +ffreveng|Final Fight Revenge / Final Revenge (JUET 990930 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom +ffrevng10|Final Fight Revenge / Final Revenge (JUET 990714 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|ffreveng|imperfect|Capcom +fhboxers|Funky Head Boxers (JUETBKAL 951218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +findlove|Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Daiki/FCF +finlarch|Final Arch (J 950714 V1.001)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|smleague|preliminary|Sega +gaxeduel|Golden Axe - The Duel (JUETL 950117 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +grdforce|Guardian Force (JUET 980318 V0.105)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +groovef|Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +hanagumi|Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +introdon|Karaoke Quiz Intro Don Don! (J 960213 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success/Sunsoft +kiwames|Pro Mahjong Kiwame S (J 951020 V1.208)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Athena +magzun|Magical Zunou Power (J 961031 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +maruchan|Maru-Chan de Goo! (J 971216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega/Toyosuisan +mausuke|Mausuke no Ojama the World (J 960314 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +micrombc|Microman Battle Charge (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +myfairld|Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +nameclub|Name Club (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubdis|Name Club Disney (J 980614 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv2|Name Club Ver.2 (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv3|Name Club Ver.3 (J 970723 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv4|Name Club Ver.4 (J 971202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +othellos|Othello Shiyouyo (J 980423 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +patocar|Hashire Patrol Car (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +pblbeach|Pebble Beach - The Great Shot (JUE 950913 V0.990)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|T&E Soft +pckobe99|Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclb2elk|Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove|Print Club LoveLove (J 970421 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove2|Print Club LoveLove Ver 2 (J 970825 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2|Print Club 2 (U 970921 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26w|Print Club 2 Vol. 6 Winter (J 961210 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26wa|Print Club 2 Vol. 6 Winter (J 970121 V1.200)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|pclub26w|preliminary|Atlus +pclub27s|Print Club 2 Vol. 7 Spring (J 970313 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2fc|Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2kc|Print Club Kome Kome Club (J 970203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pe|Print Club 2 Pepsiman (J 970618 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pf|Print Club 2 Puffy (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2v3|Print Club 2 Vol. 3 (U 990310 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2wb|Print Club 2 Warner Bros (J 970228 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubol|Print Club Olive (J 980717 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubor|Print Club Goukakenran (J 991104 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubpok|Print Club Pokemon B (U 991126 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubyo2|Print Club Yoshimoto V2 (J 970422 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh2|Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh3|Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc28su|Print Club 2 Vol. 8 Summer (J 970616 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wi|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wia|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|prc297wi|preliminary|Atlus +prc298au|Print Club 2 '98 Autumn Ver (J 980827 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298sp|Print Club 2 '98 Spring Ver (J 971017 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298su|Print Club 2 '98 Summer Ver (J 980603 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc29au|Print Club 2 Vol. 9 Autumn (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc2ksu|Print Club 2 2000 Summer (J 000509 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prikura|Princess Clara Daisakusen (J 960910 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +puyosun|Puyo Puyo Sun (J 961115 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Compile +rsgun|Radiant Silvergun (JUET 980523 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Treasure +sackids|Soreyuke Anpanman Crayon Kids (J 001026 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sandor|Puzzle & Action: Sando-R (J 951114 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +sanjeon|DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sasissu|imperfect|Deniam/Sega +sasissu|Taisen Tanto-R Sashissu!! (J 980216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +seabass|Sea Bass Fishing (JUET 971110 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|A wave inc./Able +shanhigw|Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Activision/Sunsoft +shienryu|Shienryu (JUET 961226 V1.000)|parent|sega/stv.cpp|270|352|224|59.764802|stvbios||imperfect|Warashi +skychal|Sky Challenger (J 000406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +smleague|Super Major League (U 960108 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sokyugrt|Soukyugurentai / Terra Diver (JUET 960821 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Eighting/Raizing +sss|Steep Slope Sliders (JUET 981110 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom/Cave/Victor Interactive Software +stress|Stress Busters (J 981020 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +stvbios|ST-V BIOS|bios|sega/stv.cpp|0|352|224|59.764802||||Sega +suikoenb|Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +supgoal|Nerae! Super Goal (J 981218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +tatacot|Tatacot (JA 951128 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|critcrsh|imperfect|Sega +techbowl|Technical Bowling (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +thunt|Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega +thuntk|Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Deniam/Sega +twcup98|Tecmo World Cup '98 (JUET 980410 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Tecmo +twsoc98|Tecmo World Soccer '98 (JUET 980410 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|twcup98|preliminary|Tecmo +vfkids|Virtua Fighter Kids (JUET 960319 V0.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +vfremix|Virtua Fighter Remix (JUETBKAL 950428 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +vmahjong|Virtual Mahjong (J 961214 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +wasafari|Wanpaku Safari (J 981109 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +winterht|Winter Heat (JUET 971012 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +yattrmnp|Yatterman Plus (J 981006 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +znpwfv|Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +znpwfvt|Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|znpwfv|imperfect|Sega diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers b/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers new file mode 100644 index 0000000000..894579c5a6 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers @@ -0,0 +1 @@ +1 - manufacter (1)2 - Sunsoft (3)3 - Sega (44)4 - Acclaim (1)5 - Takara (1)6 - Success (5)7 - Altron (2)8 - Tecmo (3)9 - Sai-Mate (1)10 - Capcom (3)11 - Daiki (1)12 - FCF (1)13 - Atlus (30)14 - Athena (1)15 - Toyosuisan (1)16 - Data East (2)17 - Micronet (2)18 - T&E Soft (1)19 - Compile (1)20 - Treasure (1)21 - Deniam (2)22 - A wave inc. (1)23 - Able (1)24 - Activision (1)25 - Warashi (1)26 - Eighting (1)27 - Raizing (1)28 - Cave (1)29 - Victor Interactive Software (1) \ No newline at end of file diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst.original b/package/arcade-dats/precompiled/stv-1.32.1.lst.original new file mode 100644 index 0000000000..5a2974f35f --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst.original @@ -0,0 +1,103 @@ +name|description|type|sourcefile|rotate|width|height|refresh|bios|parent|status|manufacter +astrass|Astra SuperStars (J 980514 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft +bakubaku|Baku Baku Animal (J 950407 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +batmanfr|Batman Forever (JUE 960507 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Acclaim +choroqhr|Choro Q Hyper Racing 5 (J 981230 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega / Takara +colmns97|Columns '97 (JET 961209 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +cotton2|Cotton 2 (JUET 970902 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +cottonbm|Cotton Boomerang (JUET 980709 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +critcrsh|Critter Crusher (EA 951204 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +danchih|Danchi de Hanafuda (J 990607 V1.400)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron (Tecmo license) +danchiq|Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron +decathlt|Decathlete (JUET 960709 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +decathlto|Decathlete (JUET 960424 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|decathlt|preliminary|Sega +dfeverg|Dancing Fever Gold (J 000821 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +diehard|Die Hard Arcade (UET 960515 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +dnmtdeka|Dynamite Deka (J 960515 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|diehard|imperfect|Sega +ejihon|Ejihon Tantei Jimusho (J 950613 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +elandore|Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sai-Mate +fanzonem|Fantasy Zone (medal game, REV.A) (J 990202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +ffreveng|Final Fight Revenge / Final Revenge (JUET 990930 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom +ffrevng10|Final Fight Revenge / Final Revenge (JUET 990714 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|ffreveng|imperfect|Capcom +fhboxers|Funky Head Boxers (JUETBKAL 951218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +findlove|Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Daiki / FCF +finlarch|Final Arch (J 950714 V1.001)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|smleague|preliminary|Sega +gaxeduel|Golden Axe - The Duel (JUETL 950117 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +grdforce|Guardian Force (JUET 980318 V0.105)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +groovef|Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +hanagumi|Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +introdon|Karaoke Quiz Intro Don Don! (J 960213 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft / Success +kiwames|Pro Mahjong Kiwame S (J 951020 V1.208)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Athena +magzun|Magical Zunou Power (J 961031 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +maruchan|Maru-Chan de Goo! (J 971216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega / Toyosuisan +mausuke|Mausuke no Ojama the World (J 960314 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +micrombc|Microman Battle Charge (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +myfairld|Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +nameclub|Name Club (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubdis|Name Club Disney (J 980614 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv2|Name Club Ver.2 (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv3|Name Club Ver.3 (J 970723 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv4|Name Club Ver.4 (J 971202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +othellos|Othello Shiyouyo (J 980423 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +patocar|Hashire Patrol Car (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +pblbeach|Pebble Beach - The Great Shot (JUE 950913 V0.990)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|T&E Soft +pckobe99|Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclb2elk|Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove|Print Club LoveLove (J 970421 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove2|Print Club LoveLove Ver 2 (J 970825 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2|Print Club 2 (U 970921 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26w|Print Club 2 Vol. 6 Winter (J 961210 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26wa|Print Club 2 Vol. 6 Winter (J 970121 V1.200)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|pclub26w|preliminary|Atlus +pclub27s|Print Club 2 Vol. 7 Spring (J 970313 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2fc|Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2kc|Print Club Kome Kome Club (J 970203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pe|Print Club 2 Pepsiman (J 970618 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pf|Print Club 2 Puffy (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2v3|Print Club 2 Vol. 3 (U 990310 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2wb|Print Club 2 Warner Bros (J 970228 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubol|Print Club Olive (J 980717 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubor|Print Club Goukakenran (J 991104 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubpok|Print Club Pokemon B (U 991126 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubyo2|Print Club Yoshimoto V2 (J 970422 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh2|Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh3|Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc28su|Print Club 2 Vol. 8 Summer (J 970616 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wi|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wia|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|prc297wi|preliminary|Atlus +prc298au|Print Club 2 '98 Autumn Ver (J 980827 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298sp|Print Club 2 '98 Spring Ver (J 971017 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298su|Print Club 2 '98 Summer Ver (J 980603 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc29au|Print Club 2 Vol. 9 Autumn (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc2ksu|Print Club 2 2000 Summer (J 000509 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prikura|Princess Clara Daisakusen (J 960910 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +puyosun|Puyo Puyo Sun (J 961115 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Compile +rsgun|Radiant Silvergun (JUET 980523 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Treasure +sackids|Soreyuke Anpanman Crayon Kids (J 001026 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sandor|Puzzle & Action: Sando-R (J 951114 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +sanjeon|DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sasissu|imperfect|Sega / Deniam +sasissu|Taisen Tanto-R Sashissu!! (J 980216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +seabass|Sea Bass Fishing (JUET 971110 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|A wave inc. (Able license) +shanhigw|Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft / Activision +shienryu|Shienryu (JUET 961226 V1.000)|parent|sega/stv.cpp|270|352|224|59.764802|stvbios||imperfect|Warashi +skychal|Sky Challenger (J 000406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +smleague|Super Major League (U 960108 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sokyugrt|Soukyugurentai / Terra Diver (JUET 960821 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Raizing / Eighting +sss|Steep Slope Sliders (JUET 981110 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom / Cave / Victor Interactive Software +stress|Stress Busters (J 981020 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +stvbios|ST-V BIOS|bios|sega/stv.cpp|0|352|224|59.764802||||Sega +suikoenb|Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +supgoal|Nerae! Super Goal (J 981218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +tatacot|Tatacot (JA 951128 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|critcrsh|imperfect|Sega +techbowl|Technical Bowling (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +thunt|Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega +thuntk|Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega / Deniam +twcup98|Tecmo World Cup '98 (JUET 980410 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Tecmo +twsoc98|Tecmo World Soccer '98 (JUET 980410 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|twcup98|preliminary|Tecmo +vfkids|Virtua Fighter Kids (JUET 960319 V0.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +vfremix|Virtua Fighter Remix (JUETBKAL 950428 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +vmahjong|Virtual Mahjong (J 961214 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +wasafari|Wanpaku Safari (J 981109 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +winterht|Winter Heat (JUET 971012 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +yattrmnp|Yatterman Plus (J 981006 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +znpwfv|Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +znpwfvt|Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|znpwfv|imperfect|Sega diff --git a/package/arcade-dats/stv.xslt b/package/arcade-dats/stv.xslt new file mode 100755 index 0000000000..c5f46ec31d --- /dev/null +++ b/package/arcade-dats/stv.xslt @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + Naomi2 + + + Naomi2 + + + Recalbox + + + https://www.recalbox.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package/arcade-dats/updater.py b/package/arcade-dats/updater.py index fd6a874bf2..89ddb95d86 100755 --- a/package/arcade-dats/updater.py +++ b/package/arcade-dats/updater.py @@ -61,6 +61,7 @@ class Updater: "supermodel" : SystemDescriptor("supermodel" , "supermodel" , ["supermodel"] , "", []), "flycast" : SystemDescriptor("flycast" , "libretro-flycast" , ["naomi", "naomigd", "atomiswave"], "", []), "flycast-next" : SystemDescriptor("flycast-next" , "libretro-flycast-next" , ["naomi", "naomigd", "atomiswave", "naomi2"], "", []), + "mednafen" : SystemDescriptor("mednafen" , "mednafen" , ["stv"], "", []), } def execute(self): diff --git a/package/libretro-kronos/0001-fix-rpi5.patch b/package/libretro-kronos/0001-fix-rpi5.patch deleted file mode 100644 index 98c5e476f3..0000000000 --- a/package/libretro-kronos/0001-fix-rpi5.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/yabause/src/libretro/Makefile 2024-10-22 22:53:02.445133763 +0200 -+++ b/yabause/src/libretro/Makefile 2024-10-22 22:56:05.584230236 +0200 -@@ -84,6 +84,19 @@ - HAVE_CDROM = 1 - endif - -+# Rpi5 (64-bit) -+else ifeq ($(platform), rpi5) -+ override platform += unix -+ TARGET := $(TARGET_NAME)_libretro.so -+ fpic := -fPIC -+ FLAGS += -DAARCH64 -+ SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T -+ LDFLAGS += -lpthread -lGL -+ ARCH_IS_LINUX = 1 -+ HAVE_SSE = 0 -+ FORCE_GLES = 1 -+ FLAGS += -mcpu=cortex-a76 -mtune=cortex-a76 -+ - # Jetson Nano - else ifeq ($(platform), jetson-nano) - override platform += unix - diff --git a/package/libretro-kronos/0002-fix-undef.patch b/package/libretro-kronos/0002-fix-undef.patch deleted file mode 100644 index c485e35377..0000000000 --- a/package/libretro-kronos/0002-fix-undef.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/yabause/src/libretro/libretro-common/file/file_path.c 2024-10-28 20:05:06.315945328 +0100 -+++ b/yabause/src/libretro/libretro-common/file/file_path.c 2024-10-28 19:57:09.329225229 +0100 -@@ -107,6 +107,14 @@ - - #endif - -+char *string_to_lower(char *s) -+{ -+ char *cs = (char *)s; -+ for ( ; *cs != '\0'; cs++) -+ *cs = tolower((unsigned char)*cs); -+ return s; -+} -+ - /** - * path_get_archive_delim: - * @path : path diff --git a/package/libretro-kronos/0003-fix-force-opengles.patch b/package/libretro-kronos/0003-fix-force-opengles.patch deleted file mode 100644 index 72d97fbce8..0000000000 --- a/package/libretro-kronos/0003-fix-force-opengles.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/yabause/src/core/video/opengl/common/src/commongl.c 2024-10-28 21:25:35.805685234 +0100 -+++ b/yabause/src/core/video/opengl/common/src/commongl.c 2024-10-28 21:25:21.483885856 +0100 -@@ -39,6 +39,8 @@ - //#define YGLDEBUG yprintf - //#define YGLLOG - -+#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 -+ - extern u8 * Vdp1FrameBuffer[]; - static int rebuild_frame_buffer = 0; - diff --git a/package/libretro-kronos/0004-fix-shaders.patch b/package/libretro-kronos/0004-fix-shaders.patch deleted file mode 100644 index cab8389fe4..0000000000 --- a/package/libretro-kronos/0004-fix-shaders.patch +++ /dev/null @@ -1,42 +0,0 @@ ---- a/yabause/src/core/video/opengl/compute_shader/include/vdp1_prog_compute.h 2023-02-06 17:13:36.000000000 +0100 -+++ b/yabause/src/core/video/opengl/compute_shader/include/vdp1_prog_compute.h 2024-10-30 18:34:43.471786988 +0100 -@@ -39,6 +39,7 @@ - SHADER_VERSION_COMPUTE - "#ifdef GL_ES\n" - "precision highp float;\n" -+"precision highp image2D;\n" - "#endif\n" - "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" - "layout(rgba8, binding = 0) writeonly uniform image2D outSurface;\n" -@@ -59,6 +60,7 @@ - SHADER_VERSION_COMPUTE - "#ifdef GL_ES\n" - "precision highp float;\n" -+"precision highp image2D;\n" - "#endif\n" - "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" - "layout(rgba8, binding = 0) readonly uniform image2D s_texture; \n" -@@ -81,6 +83,7 @@ - SHADER_VERSION_COMPUTE - "#ifdef GL_ES\n" - "precision highp float;\n" -+"precision highp image2D;\n" - "#endif\n" - "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" - "layout(rgba8, binding = 0) writeonly uniform image2D outSurface;\n" -@@ -104,6 +107,7 @@ - SHADER_VERSION_COMPUTE - "#ifdef GL_ES\n" - "precision highp float;\n" -+"precision highp image2D;\n" - "#endif\n" - "layout(local_size_x = "Stringify(LOCAL_SIZE_X)", local_size_y = "Stringify(LOCAL_SIZE_Y)") in;\n" - "layout(rgba8, binding = 0) writeonly uniform image2D outMesh0;\n" -@@ -189,6 +193,7 @@ - SHADER_VERSION_COMPUTE - "#ifdef GL_ES\n" - "precision highp float;\n" -+"precision highp image2D;\n" - "#endif\n" - - "struct cmdparameter_struct{ \n" diff --git a/package/libretro-kronos/libretro-kronos.mk b/package/libretro-kronos/libretro-kronos.mk index 7fb9d2956b..d08cce5519 100644 --- a/package/libretro-kronos/libretro-kronos.mk +++ b/package/libretro-kronos/libretro-kronos.mk @@ -5,25 +5,26 @@ ################################################################################ # Commit of 2023/12/29 -LIBRETRO_KRONOS_VERSION = 8e0eade50b51e12529395b54b80b86e8c074d9ec +LIBRETRO_KRONOS_VERSION = b847da58fd741bb7351e6da92316ae2fb1f95045 LIBRETRO_KRONOS_SITE = $(call github,FCare,Kronos,$(LIBRETRO_KRONOS_VERSION)) LIBRETRO_KRONOS_LICENSE = GPL-2.0 -ifeq ($(BR2_PACKAGE_RECALBOX_TARGET_RPI5_64),y) -LIBRETRO_KRONOS_PLATFORM = rpi5 -LIBRETRO_KRONOS_EXTRA_ARGS += FORCE_GLES=1 -LIBRETRO_KRONOS_EXTRA_ARGS += HAVE_SSE=0 -LIBRETRO_KRONOS_EXTRA_ARGS += ARCH_IS_LINUX=1 +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) + LIBRETRO_KRONOS_GL = GLESv2 else -LIBRETRO_KRONOS_PLATFORM=unix-$(RETROARCH_LIBRETRO_PLATFORM) + LIBRETRO_KRONOS_GL = GL endif define LIBRETRO_KRONOS_BUILD_CMDS $(SED) "s|-O2|-O3|g" $(@D)/yabause/src/libretro/Makefile - $(MAKE) -C $(@D)/yabause/src/libretro -f Makefile generate-files && \ - $(TARGET_CONFIGURE_OPTS) $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C \ - $(@D)/yabause/src/libretro -f Makefile \ - platform="$(LIBRETRO_KRONOS_PLATFORM)" $(LIBRETRO_KRONOS_EXTRA_ARGS) + $(SED) "s|-lGL|-l$(LIBRETRO_KRONOS_GL)|g" $(@D)/yabause/src/libretro/Makefile + mkdir -p $(@D)/build_retro + cd $(@D)/build_retro + $(MAKE) -C $(@D)/yabause/src/libretro generate-files + CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ + CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ + $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" AR="$(TARGET_AR)" LD="$(TARGET_LD)" RANLIB="$(TARGET_RANLIB)" -C $(@D)/yabause/src/libretro -f Makefile platform="unix-$(RETROARCH_LIBRETRO_PLATFORM)" $(LIBRETRO_KRONOS_SUPP_OPT) endef define LIBRETRO_KRONOS_INSTALL_TARGET_CMDS diff --git a/package/mednafen/0001-mednafen-add-switchres.patch b/package/mednafen/0001-mednafen-add-switchres.patch new file mode 100644 index 0000000000..c7d0a5a84b --- /dev/null +++ b/package/mednafen/0001-mednafen-add-switchres.patch @@ -0,0 +1,1558 @@ +diff --git a/src/drivers/main.cpp b/src/drivers/main.cpp +index fe6b7f9..e813cd0 100644 +--- a/src/drivers/main.cpp ++++ b/src/drivers/main.cpp +@@ -258,6 +258,7 @@ void MakeDebugSettings(void) + } + + static MThreading::Thread* GameThread; ++static MThreading::Thread* SwitchThread; //psakhis - sniffer changes + + static struct + { +@@ -273,6 +274,8 @@ static std::atomic_int VTReady; + static unsigned VTRotated = 0; + static bool VTSSnapshot = false; + static MThreading::Sem* VTWakeupSem; ++static MThreading::Sem* STWakeupSem; //psakhis - semaphore when change resolution occurs on main loop ++static MThreading::Sem* AUWakeupSem; //psakhis - semaphore when audio buffer is ready + static MThreading::Mutex *VTMutex = NULL, *EVMutex = NULL; + static MThreading::Mutex *StdoutMutex = NULL; + +@@ -373,12 +376,14 @@ static BOOL CALLBACK ETWCB(HWND hwnd, LPARAM lParam) + return TRUE; + } + */ ++ + static void HandleConsoleMadness(void) + { + decltype(GetConsoleWindow)* p_GetConsoleWindow = (decltype(GetConsoleWindow)*)GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetConsoleWindow"); + + if(!p_GetConsoleWindow) + return; ++ + // + // + HWND cwin = p_GetConsoleWindow(); +@@ -397,9 +402,14 @@ static void HandleConsoleMadness(void) + ShowWindow(cwin, SW_HIDE); + } + } ++ else //psakhis ++ { ++ RedirectSTDxxx(); ++ } //end psakhis + } + else if(!RedirectSTDxxx()) + { ++ + if(AllocConsole()) + { + HANDLE hand_stdout, hand_stderr; +@@ -1034,9 +1044,18 @@ static void CloseGame(void) MDFN_COLD; + // + // + static unsigned volatile NeedVideoSync = false; ++//SLK ++static volatile unsigned NeedResolutionChange = 0; // trigger to switch window/fullscreen resolution ++//SLK end + static int volatile NeedExitNow = false; // Set 'true' in various places, including signal handler. + // + // ++//psakhis ++static volatile unsigned NeedResolutionRefresh = 0; // trigger refresh video blitter on main thread if resolution changes ++static int SwitchLoop(void *arg); //sniffer changes ++int volatile SwitchThreadRun = 0; ++//psakhis end ++ + static bool MDFND_Update(int WhichVideoBuffer, int16 *Buffer, int Count); + static void GameThread_HandleEvents(void); + static int GameLoop(void *arg); +@@ -1134,7 +1153,7 @@ static int LoadGame(const char *force_module, const char *path) + + // Load state before network connection. + // TODO: Move into core, MDFNI_LoadGame() +- if(MDFN_GetSettingB("autosave")) ++ if(MDFN_GetSettingB("autosave")) + { + if(!MDFNI_LoadState(NULL, "mca")) + { +@@ -1202,6 +1221,18 @@ static void CloseGame(void) + // + // + // ++ //psakhis ++ SwitchThreadRun = 0; ++ ++ MThreading::Sem_Post(STWakeupSem); //close thread safetly ++ MThreading::Sem_Post(AUWakeupSem); //close thread safetly ++ if(SwitchThread) ++ { ++ MThreading::Thread_Wait(SwitchThread, NULL); ++ SwitchThread = NULL; ++ } ++ //psakhis end ++ + if(qtrecfn) // Needs to be before MDFNI_Closegame() for now + MDFNI_StopAVRecord(); + +@@ -1377,6 +1408,14 @@ static int GameLoop(void *arg) + else + MDFNI_Emulate(&espec); + ++ //psakhis: activate change on switch thread ++ if (!NeedResolutionChange && resolution_to_change && (use_native_resolution || use_super_resolution || use_switchres)) { ++ NeedResolutionChange++; //redundant only if not changing ++ MThreading::Sem_Post(STWakeupSem); ++ resolution_to_change = false; ++ } ++ //psakhis end ++ + if(MDFN_UNLIKELY(StateSLSTest)) + { + MemoryStream orig_state(524288); +@@ -1466,6 +1505,32 @@ static int GameLoop(void *arg) + } + + ++//psakhis: implements switches on a separate thread with semaphore activator from main loop thread ++static int SwitchLoop(void *arg) ++{ ++ while(SwitchThreadRun) { ++ //printf("SWITCH - Sleeping - Waiting for the next change\n"); ++ if (MThreading::Sem_Wait(STWakeupSem)) { //activator semaphore from main loop ++ if(MDFN_LIKELY(NeedResolutionChange) && !MDFN_LIKELY(NeedResolutionRefresh)) //redundant, safetly close ++ { ++ if ((current_game_resolution_w != resolution_to_change_w) || (current_game_resolution_h != resolution_to_change_h) || (current_game_rotated != CurGame->rotated)) { ++ if (current_game_rotated != CurGame->rotated) ++ MDFN_printf(_("SWITCH - Activated - Rotate detected\n")); ++ MDFN_printf(_("SWITCH - Activated - Current resolution %dx%d - Changing to %dx%d@%f\n"),current_game_resolution_w,current_game_resolution_h,resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ NeedResolutionRefresh = Video_ChangeResolution(CurGame,resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ } ++ else { ++ //printf("SWITCH - Activated - Bypassed from %dx%d@%f\n",resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ NeedResolutionChange--; ++ } ++ } ++ } ++ } ++ ++ return 1; ++} ++//end psakhis ++ + std::string GetBaseDirectory(void) + { + #ifdef WIN32 +@@ -2012,6 +2077,16 @@ static bool MainVideoLoop(void) + NeedVideoSync = false; // same + } + ++ // SLK + psakhis ++ if(MDFN_LIKELY(NeedResolutionChange) && MDFN_LIKELY(NeedResolutionRefresh)) ++ { ++ printf("MAIN - VIDEO - Refresh blitter after a resolution change\n"); ++ Video_BlitRefresh(); ++ NeedResolutionChange--; ++ NeedResolutionRefresh--; ++ } ++ // SLK + psakhis END ++ + if(NeededWMInputBehavior_Dirty) + { + Video_SetWMInputBehavior(NeededWMInputBehavior); +@@ -2098,6 +2173,14 @@ static bool LoadAndRunGame(const char* force_module, const char* path) + + if(vt_affinity) + MThreading::Thread_SetAffinity(NULL, vt_affinity); ++ ++ //psakhis: create thread with semaphore for switches ++ SwitchThreadRun = 1; ++ SwitchThread = MThreading::Thread_Create(SwitchLoop, NULL, "MDFN Switch"); ++ ++ if(vt_affinity) ++ MThreading::Thread_SetAffinity(SwitchThread, vt_affinity); ++ //psakhis end + // + // + // +@@ -2442,6 +2525,7 @@ int main(int argc, char *argv[]) + EVMutex = MThreading::Mutex_Create(); + + VTWakeupSem = MThreading::Sem_Create(); ++ STWakeupSem = MThreading::Sem_Create(); //psakhis: semaphore for push changes changes from mainloop + // + Video_Init(); + // +diff --git a/src/drivers/video.cpp b/src/drivers/video.cpp +index edeff4e..e3d0e1c 100644 +--- a/src/drivers/video.cpp ++++ b/src/drivers/video.cpp +@@ -47,6 +47,12 @@ + #include "2xSaI.h" + #endif + ++#include //psakhis ++#include //psakhis ++#include //psakhis ++#include //psakhis ++#include //psakhis ++ + class SDL_to_MDFN_Surface_Wrapper : public MDFN_Surface + { + public: +@@ -104,6 +110,20 @@ enum + VDRIVER__COUNT + }; + ++// SLK ++static int _resolution_switch; ++enum ++{ ++ RES_STATIC = 0, ++ RES_NATIVE = 1, ++ RES_SUPER = 2, ++ RES_SWITCHRES = 3, ++ RES_MISTER = 4//psakhis ++}; ++// SLK - end ++ ++unsigned char retSR; //psakhis ++ + enum + { + NTVB_NONE = 0, +@@ -175,6 +195,19 @@ static const MDFNSetting_EnumList GLFormat_List[] = + { NULL, 0 }, + }; + ++// SLK - custom setting ++static const MDFNSetting_EnumList Resolution_Switch[] = ++{ ++ // Legacy: ++ { "0", RES_STATIC}, ++ { "native", RES_NATIVE, "Native resolutions", gettext_noop("Use emulated system native resolution for output") }, ++ { "super", RES_SUPER, "Super resolutions", gettext_noop("Use super resolutions for output") }, ++ { "switchres", RES_SWITCHRES, "Switchres 2", gettext_noop("Use switchres 2 for output") }, //psakhis ++ { "mister", RES_MISTER, "MiSTer", gettext_noop("Use MiSTer for output") }, ++ { NULL, 0 } ++}; ++// SLK - end ++ + static const MDFNSetting GlobalVideoSettings[] = + { + { "video.driver", MDFNSF_NOFLAGS, gettext_noop("Video output driver."), NULL, MDFNST_ENUM, "default", NULL, NULL, NULL, NULL, VDriver_List }, +@@ -195,6 +228,10 @@ static const MDFNSetting GlobalVideoSettings[] = + + { "video.disable_composition", MDFNSF_NOFLAGS, gettext_noop("Attempt to disable desktop composition."), gettext_noop("Currently, this setting only has an effect on Windows Vista and Windows 7(and probably the equivalent server versions as well)."), MDFNST_BOOL, "1" }, + ++ // SLK - admit new parameter ++ { "video.resolution_switch", MDFNSF_NOFLAGS, gettext_noop("Video resolution switch (0, native, super or switchres)."), NULL, MDFNST_ENUM, "0", NULL, NULL, NULL, NULL, Resolution_Switch}, ++ // SLK - end ++ + { NULL } + }; + +@@ -447,6 +484,7 @@ static SDL_Window* window = NULL; + static SDL_GLContext glcontext = NULL; + static SDL_Surface *screen = NULL; + static OpenGL_Blitter *ogl_blitter = NULL; ++static OpenGL_Blitter *ogl_blitter_gunlight = NULL; //psakhis + static SDL_Surface *IconSurface=NULL; + + static int32 screen_w, screen_h; +@@ -473,6 +511,10 @@ static MDFN_PixelFormat game_pf; // Pixel format for game texture/surface + static MDFN_PixelFormat osd_pf; // Pixel format for OSD textures/surfaces + static MDFN_PixelFormat emu_pf; + ++// SLK SR ++double sr_x_scale = 1; ++double sr_y_scale = 1; ++ + static void GrabbyGoAway(void); + + static INLINE void MarkNeedBBClear(void) +@@ -512,6 +554,11 @@ static void SyncCleanup(void) + + void Video_Kill(void) + { ++ if (use_switchres) { //psakhis ++ sr_deinit(); ++ printf(" VIDEO - Video_Kill - SWITCHRES unloaded \n"); //psakhis ++ } ++ + SyncCleanup(); + + if(window) +@@ -676,9 +723,19 @@ static bool GenerateFullscreenDestRect(void) + } + } + else +- { +- exs = video_settings.xscalefs; +- eys = video_settings.yscalefs; ++ { //psakhis ++ if (use_native_resolution || use_switchres || use_super_resolution) ++ { ++ exs = sr_x_scale; ++ eys = sr_y_scale; ++ if(rotated == MDFN_ROTATE90 || rotated == MDFN_ROTATE270) ++ std::swap(exs, eys); ++ } ++ else //static ++ { ++ exs = video_settings.xscalefs; ++ eys = video_settings.yscalefs; ++ } + + screen_dest_rect.w = floor(0.5 + VideoGI->nominal_width * exs); + screen_dest_rect.h = floor(0.5 + VideoGI->nominal_height * eys); +@@ -798,6 +855,263 @@ static ModeInfo SetMode(const ModeInfo& mode) + SetMode(new_mode); + #endif + ++ ++// SLK ++ ++//psakhis: WIN32 flush modes to driver ++void Video_Switchres_Flush(const char *shortname, double vfreq) ++{ ++ printf(" VIDEO - Video_Switchres_Flush - Flushing modes core(%s), refresh(%f)\n", shortname, vfreq); ++ int pal = 0; ++ if (vfreq > 0 && vfreq < 55) ++ pal = 1; ++ sr_mode swres_result; ++ int sr_mode_flags = SR_MODE_DONT_FLUSH; ++ if (!strcmp(shortname, "ss")) { ++ if (pal) { ++ retSR = sr_add_mode(320, 288, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 288, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 288, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 288, vfreq, sr_mode_flags, &swres_result); ++ } ++ sr_mode_flags = SR_MODE_INTERLACED | SR_MODE_DONT_FLUSH; ++ retSR = sr_add_mode(320, 576, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 576, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 576, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 576, vfreq, sr_mode_flags, &swres_result); ++ } ++ } ++ else { ++ retSR = sr_add_mode(320, 240, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 240, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 240, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 240, vfreq, sr_mode_flags, &swres_result); ++ } ++ sr_mode_flags = SR_MODE_INTERLACED | SR_MODE_DONT_FLUSH; ++ retSR = sr_add_mode(320, 480, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 480, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 480, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 480, vfreq, sr_mode_flags, &swres_result); ++ } ++ } ++ } ++ retSR = sr_flush(); ++ printf(" VIDEO - Video_Switchres_Flush - Flushing applied\n"); ++} ++//psakhis end ++ ++//SLK + psakhis ++void Video_SetSwitchres(int w, int h, double vfreq, int orientation) ++{ ++ printf(" VIDEO - Video_SetSwitchres - called for %dx%d@%f (%d) \n",w,h,vfreq,orientation); ++ sr_mode swres_result; ++ int sr_mode_flags = 0; ++ ++ if (h > 288) ++ sr_mode_flags = SR_MODE_INTERLACED; ++ ++ if (orientation == MDFN_ROTATE90 || orientation == MDFN_ROTATE270) ++ sr_mode_flags = sr_mode_flags | SR_MODE_ROTATED; ++ ++ retSR = sr_add_mode(w, h, vfreq, sr_mode_flags, &swres_result); ++ //retSR = sr_switch_to_mode(w, h, vfreq, interlace, &swres_result); ++ retSR = sr_set_mode(swres_result.id); ++ printf(" VIDEO - Video_SetSwitchres - result %dx%d@%f - x=%.4f y=%.4f stretched(%d)\n", swres_result.width, swres_result.height,swres_result.vfreq, swres_result.x_scale, swres_result.y_scale, swres_result.is_stretched); ++ printf(" VIDEO - Video_SetSwitchres - sr_switch_to_mode return: %u\n", (unsigned int)retSR); ++ ++ if (retSR && swres_result.width >= w && swres_result.height >= h) { ++ if (video_settings.fullscreen) ++ { //fullscreen ++ sr_x_scale = swres_result.x_scale; ++ sr_y_scale = swres_result.y_scale; ++ } ++ else ++ { //windowed (no scale) ++ sr_x_scale = 1; ++ sr_x_scale = 1; ++ } ++ //update new resolution ++ video_settings.xres = swres_result.width; ++ video_settings.yres = swres_result.height; ++ } ++} ++//SLK + psakhis end ++ ++//SLK + psakhis ++int Video_ChangeResolution(MDFNGI *gi, int w, int h, double vfreq) ++{ ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Requested video mode: %dx%d@%f\n"), w, h, vfreq); ++ ++ //psakhis ++ if (use_super_resolution && h == current_game_resolution_h) { //no switch requeried ++ double sr_x_scale_before_switch = sr_x_scale; ++ int current_game_rotated_before_switch = current_game_rotated; ++ sr_x_scale = (2560.0 / w); //refresh x scale ++ current_game_resolution_w = w; ++ current_game_rotated = gi->rotated; ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Super resolution change bypassed. Only apply scaling scale (%.4f,%.4f) \n"),sr_x_scale,sr_y_scale); ++ MarkNeedBBClear(); ++ return (sr_x_scale_before_switch != sr_x_scale || current_game_rotated_before_switch != current_game_rotated); ++ } ++ //end psakhis ++ ++ // WINDOW no switch resolutions ++ if(video_settings.fullscreen == 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Video mode: WINDOWED\n")); ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ MarkNeedBBClear(); ++ ++ if(rotated == MDFN_ROTATE90 || rotated == MDFN_ROTATE270) //ST-V ++ SDL_SetWindowSize(window, h, w); ++ else ++ SDL_SetWindowSize(window, w, h); ++ ++ int x, y; ++ SDL_GetWindowPosition(window, &x, &y); ++ SDL_PumpEvents(); ++ SDL_SetWindowPosition(window, x, y); ++ ++ sr_x_scale = 1; ++ sr_y_scale = 1; ++ } ++ else ++ // FULLSCREEN ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Video mode: FULLSCREEN\n")); ++ if (use_switchres) //psakhis new method ++ { ++ double sr_x_scale_before_switch = sr_x_scale; ++ int current_game_rotated_before_switch = current_game_rotated; ++ int xres_before_switch = video_settings.xres; ++ Video_SetSwitchres(w, h, vfreq, gi->rotated); ++ ++ if (video_settings.xres == xres_before_switch && h == current_game_resolution_h) { //no switch requiered ++ current_game_resolution_w = w; ++ current_game_rotated = gi->rotated; ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Switchres resolution change bypassed. Only apply scaling scale (%.4f,%.4f) \n"),sr_x_scale,sr_y_scale); ++ MarkNeedBBClear(); ++ return (sr_x_scale_before_switch != sr_x_scale || current_game_rotated_before_switch != current_game_rotated); ++ } ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ current_game_rotated = gi->rotated; ++ } ++ else ++ { ++ // Use good old NATIVE or SUPER switch resolution process ++ SDL_DisplayMode current; ++ SDL_DisplayMode mode; ++ SDL_DisplayMode trymode; ++ int displayIndex; ++ ++ displayIndex = SDL_GetWindowDisplayIndex(window); ++ if(displayIndex < 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - ERROR Could not get screen index: %s\n"), SDL_GetError()); ++ return 0; ++ } ++ else ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Screen index: %d\n"),displayIndex); ++ } ++ ++ if(SDL_GetCurrentDisplayMode(displayIndex, ¤t) != 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Could not get display mode for video display %d: %s\n"), displayIndex, SDL_GetError()); ++ } ++ else ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Display #%d: Current display mode is %dx%dpx @ %dhz.\n"), displayIndex, current.w, current.h, current.refresh_rate); ++ if (use_super_resolution) ++ trymode.w = 2560; ++ else ++ trymode.w = w; ++ trymode.h = h; ++ trymode.refresh_rate = (int) vfreq; ++ ++ if (SDL_GetClosestDisplayMode(displayIndex, &trymode, &mode) == NULL) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - No suitable display mode was found, %s\n"),SDL_GetError()); ++ } ++ else ++ { ++ //psakhis ++ sr_x_scale = (double) mode.w / w; ++ sr_y_scale = (double) mode.h / h; ++ video_settings.xres = mode.w; ++ video_settings.yres = mode.h; ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ current_game_rotated = rotated; ++ //end psakhis ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Received: \t%dx%dpx @ %dhz ,scale (%.4f,%.4f)\n"), mode.w, mode.h, mode.refresh_rate,sr_x_scale,sr_y_scale); ++ // Use SDL video change function - may be slower ++ if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - ERROR - SDL_SetWindowDisplayMode: '%s'\n"), SDL_GetError()); ++ } ++ } ++ } ++ } ++ } ++ ++ // OSD D Rect - vertical offest ++ switch(h){ ++ case 240:SMDRect.y = video_settings.yres - SMDRect.h - 18; ++ break; ++ case 288:SMDRect.y = video_settings.yres - SMDRect.h - 32; ++ break; ++ case 480:SMDRect.y = video_settings.yres - SMDRect.h - 32; ++ break; ++ case 576:SMDRect.y = video_settings.yres - SMDRect.h - 64; ++ break; ++ default: SMDRect.y = video_settings.yres - SMDRect.h - 64; ++ } ++ SMDRect.w = video_settings.xres; // OSD rect w ++ ++ return 1; ++ ++} ++// SLK + psakhis end ++ ++//psakhis refresh blitter ++void Video_BlitRefresh() ++{ ++ MarkNeedBBClear(); ++ VideoGI->nominal_width = current_game_resolution_w; ++ if (current_game_resolution_h * 2 == VideoGI->nominal_height || current_game_resolution_h * 0.5 == VideoGI->nominal_height) //only changes between interlaced/progressive (to do clean hack) ++ VideoGI->nominal_height = current_game_resolution_h; ++ ++ if (video_settings.fullscreen) ++ { ++ screen_w = video_settings.xres; ++ screen_h = video_settings.yres; ++ if (!GenerateFullscreenDestRect()) { ++ GenerateWindowedDestRect(); ++ screen_w = screen_dest_rect.w; ++ screen_h = screen_dest_rect.h; ++ } ++ } ++ else ++ { ++ GenerateWindowedDestRect(); ++ screen_w = screen_dest_rect.w; ++ screen_h = screen_dest_rect.h; ++ } ++ MDFN_printf(_(" VIDEO - Video_BlitRefresh - screen dest: %dx%d - %d,%d\n"), screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ ++ if (ogl_blitter) ++ ogl_blitter->SetViewport(screen_w, screen_h); ++ ++ MDFN_printf(_(" VIDEO - Video_BlitRefresh completed\n")); ++} ++ + void Video_Sync(MDFNGI *gi) + { + MDFNI_printf(_("Initializing video...\n")); +@@ -864,7 +1178,6 @@ void Video_Sync(MDFNGI *gi) + video_settings.shader_params.goat_slen = MDFN_GetSettingB(snp + "shader.goat.slen"); + video_settings.shader_params.goat_fprog = MDFN_GetSettingB(snp + "shader.goat.fprog"); + // +- + video_settings.fullscreen = MDFN_GetSettingB("video.fs"); + video_settings.fs_display = MDFN_GetSettingI("video.fs.display"); + vdriver = MDFN_GetSettingI("video.driver"); +@@ -876,6 +1189,102 @@ void Video_Sync(MDFNGI *gi) + + video_settings.shader = (ShaderType)MDFN_GetSettingI(snp + "shader"); + video_settings.shader_str = MDFN_GetSettingS(snp + "shader"); ++ ++ // SLK - set video settings - disable some options in conflict with native resolution ++ _resolution_switch = MDFN_GetSettingI("video.resolution_switch"); ++ ++ if(_resolution_switch){ ++ // Enable dynamic output resolution switch ++ MDFNI_printf(_("VIDEO - Video_Sync - Output video resolution swithing: ON\n")); ++ if(_resolution_switch == RES_NATIVE) // Native Res ++ { ++ use_native_resolution = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply NATIVE resolution settings - set to %dx%d\n"),resolution_to_change_w,resolution_to_change_h); ++ video_settings.xres = resolution_to_change_w; // for fullscreen mode ++ video_settings.yres = resolution_to_change_h; // for windowed ++ } ++ if(_resolution_switch == RES_SUPER) ++ { ++ use_super_resolution = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply SUPER resolution settings - set to 2560x%d\n"),resolution_to_change_h); ++ video_settings.xres = 2560; // for fullscreen mode ++ video_settings.yres = resolution_to_change_h; // for windowed ++ } ++ if(_resolution_switch == RES_SWITCHRES) // psakhis ++ { ++ use_switchres = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply SWITCHRES resolution settings - set to %dx%d@%f\n"),resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ MDFN_printf(_("Loading switchres.ini...\n")); ++ MDFN_printf("\n"); ++ sr_init(); ++ MDFN_printf("sr_get_version %s\n",sr_get_version()); ++ ++ //take care multi-monitor ++ if (video_settings.fs_display >= 0) { ++ const std::string sr_monitor = MDFN_GetSettingS("video.fs.display"); ++ MDFN_printf(_("sr_init_disp with video_settings.fs_display \"%s\"...\n"), sr_monitor.c_str()); ++ retSR=sr_init_disp(strcpy((char*)malloc(sr_monitor.length()+1), sr_monitor.c_str()),window); ++ ++ } ++ else { ++ MDFN_printf(_("sr_init_disp auto with video_settings.fs_display -1...\n")); ++ retSR=sr_init_disp("auto",window); ++ } ++ ++ //try system swithres.ini file ++ const std::string switchres_system_path = MDFN_MakeFName(MDFNMKF_PMCONFIG, 0, "switchres.ini").c_str(); ++ MDFN_printf(_("Loading override switchres.ini from \"%s\"...\n"), switchres_system_path.c_str()); ++ try { ++ FileStream fs_switchres_system_path(switchres_system_path, FileStream::MODE_READ); ++ sr_load_ini(strcpy((char*)malloc(switchres_system_path.length()+1), switchres_system_path.c_str())); ++ } catch(MDFN_Error& e) { ++ MDFN_printf(_(" Failed: Error opening file \"%s\"...\n"), switchres_system_path.c_str()); ++ } ++ const std::string switchres_game_path = MDFN_MakeFName(MDFNMKF_PGCONFIG, 0, "switchres.ini").c_str(); ++ MDFN_printf("\n"); ++ MDFN_printf(_("Loading override switchres.ini from \"%s\"...\n"), switchres_game_path.c_str()); ++ try { ++ FileStream fs_switchres_game_path(switchres_game_path, FileStream::MODE_READ); ++ sr_load_ini(strcpy((char*)malloc(switchres_game_path.length()+1), switchres_game_path.c_str())); ++ } catch(MDFN_Error& e) { ++ MDFN_printf(_(" Failed: Error opening file \"%s\"...\n"), switchres_game_path.c_str()); ++ } ++ MDFN_printf("\n"); ++ //end ini loadings ++ ++ MDFN_printf(_(" VIDEO - Video_Sync - SWITCHRES loaded - %u\n"),(unsigned int)retSR); ++ ++ video_settings.xres = 0; //sdl get desktop resolution - switch is delegated to switchres ++ video_settings.yres = 0; //sdl get desktop resolution - switch is delegated to switchres ++ ++ /*int bfi = MDFN_GetSettingI("video.bfi"); //experimental no bypass ++ if (bfi > 0) { ++ video_settings.xres = resolution_to_change_w; ++ video_settings.yres = resolution_to_change_h; ++ }*/ ++ } ++ ++ current_game_resolution_w = resolution_to_change_w; // bypass next changes ++ current_game_resolution_h = resolution_to_change_h; // bypass next changes ++ ++ VideoGI->nominal_width = current_game_resolution_w; ++ if (current_game_resolution_h * 2 == VideoGI->nominal_height || current_game_resolution_h * 0.5 == VideoGI->nominal_height) //only changes between interlaced/progressive (to do clean hack) ++ VideoGI->nominal_height = current_game_resolution_h; ++ ++ //variables pixel perfect initialization ++ video_settings.xscale = 1; ++ video_settings.yscale = 1; ++ video_settings.xscalefs = 1; ++ video_settings.yscalefs = 1; ++ video_settings.videoip = 0; ++ //video_settings.shader = SHADER_NONE; ++ video_settings.stretch = 0; ++ ++ rotated = 0; //ST-V Original hard ++ gi->rotated = rotated; ++ current_game_rotated = rotated; ++ } ++ + // + // + if(0) +@@ -900,6 +1309,7 @@ void Video_Sync(MDFNGI *gi) + if(screen_dest_rect.w > 16383 || screen_dest_rect.h > 16383) + throw MDFN_Error(0, _("Window size(%dx%d) is too large!"), screen_dest_rect.w, screen_dest_rect.h); + ++if(!video_settings.fullscreen) { //psakhis + SDL_SetWindowFullscreen(window, 0); + SDL_PumpEvents(); + SDL_SetWindowSize(window, screen_dest_rect.w, screen_dest_rect.h); +@@ -911,7 +1321,7 @@ void Video_Sync(MDFNGI *gi) + SDL_PumpEvents(); + SDL_ShowWindow(window); + SDL_PumpEvents(); +- ++} + // + if(0) + { +@@ -1113,6 +1523,12 @@ void Video_Sync(MDFNGI *gi) + if(yres > 0) + trymode.h = yres; + ++ /*int bfi = MDFN_GetSettingI("video.bfi"); //experimental no bypass ++ MDFN_printf("video.bfi=%d\n",bfi); ++ if (bfi > 1) { ++ trymode.refresh_rate = resolution_to_change_vfreq * 2; ++ }*/ ++ + if(vdriver != VDRIVER_OPENGL) + { + if(!(trymode.format == SDL_PIXELFORMAT_RGB565 && (gi->ExtraVideoFormatSupport & EVFSUPPORT_RGB565)) && +@@ -1129,12 +1545,14 @@ void Video_Sync(MDFNGI *gi) + goto TryWindowed; + } + +- if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ if (!use_switchres) //psakhis + { +- MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because SDL_SetWindowDisplayMode() failed: %s"), SDL_GetError()); +- goto TryWindowed; ++ if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ { ++ MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because SDL_SetWindowDisplayMode() failed: %s"), SDL_GetError()); ++ goto TryWindowed; ++ } + } +- + #if 0 + int old_mousex = 0; + int old_mousey = 0; +@@ -1147,6 +1565,18 @@ void Video_Sync(MDFNGI *gi) + goto TryWindowed; + } + ++ SDL_ShowWindow(window); //psakhis ++ //psakhis - delegate first switch to switchres ++ if (use_switchres) ++ { ++ Video_SetSwitchres(resolution_to_change_w, resolution_to_change_h, resolution_to_change_vfreq, gi->rotated); ++ Video_BlitRefresh(); ++ } ++ else ++ { ++ sr_x_scale = (double) mode.w / resolution_to_change_w; //psakhis - scale corrected ++ sr_y_scale = (double) mode.h / resolution_to_change_h; //psakhis - scale corrected ++ + #if 0 + // ugggh + SDL_PumpEvents(); +@@ -1162,6 +1592,9 @@ void Video_Sync(MDFNGI *gi) + MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because screen destination rectangle(%dx%d) is too large!"), screen_dest_rect.w, screen_dest_rect.h); + goto TryWindowed; + } ++ } ++ //end psakhis ++ MDFN_printf(_(" VIDEO - Video_sync - screen dest: %dx%d - %d,%d - scale(%.4f,%.4f)\n"), screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y,sr_x_scale,sr_y_scale); // SLK + } + // + // +@@ -1295,10 +1728,43 @@ void Video_Sync(MDFNGI *gi) + SMRect.y = 0; + SMRect.w = screen_w; + +- SMDRect.w = SMRect.w * xmu; ++ // SLK - Set OSD message rendering rect. ++ if(use_super_resolution || use_switchres) // enlarge OSD message in super resolution mode ++ { ++ SMDRect.w = SMRect.w * xmu; ++ MDFN_printf(_(" VIDEO - Init : SMRect.w: %d xmu: %d\n"),SMRect.w,xmu); ++ } ++ else ++ { ++ SMDRect.w = SMRect.w * xmu; ++ } ++ // SLK - end ++ ++ // SMDRect.w = SMRect.w * xmu; + SMDRect.h = SMRect.h * ymu; + SMDRect.x = (screen_w - SMDRect.w) / 2; +- SMDRect.y = screen_h - SMDRect.h; ++ // SMDRect.y = screen_h - SMDRect.h; ++ ++ // SLK - Vertical offset for OSD messages ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ switch(screen_h){ ++ case 240:SMDRect.y = screen_h - SMDRect.h - 18; ++ break; ++ case 288:SMDRect.y = screen_h - SMDRect.h - 32; ++ break; ++ case 480:SMDRect.y = screen_h - SMDRect.h - 32; ++ break; ++ case 576:SMDRect.y = screen_h - SMDRect.h - 64; ++ break; ++ default:SMDRect.y = screen_h - SMDRect.h * xmu; // TODO: ??? ++ } ++ } ++ else ++ { ++ SMDRect.y = screen_h - SMDRect.h; ++ } ++ // SLK - end + + if(SMDRect.x < 0) + { +@@ -1629,7 +2095,7 @@ static void SubBlit(const MDFN_Surface *source_surface, const MDFN_Rect &src_rec + else // No special scaler: + { + if(ogl_blitter) +- ogl_blitter->Blit(eff_source_surface, &eff_src_rect, &dest_rect, &eff_src_rect, InterlaceField, evideoip, rotated); ++ ogl_blitter->Blit(eff_source_surface, &eff_src_rect, &dest_rect, &eff_src_rect, InterlaceField, evideoip, rotated); + else + { + SDL_to_MDFN_Surface_Wrapper m_surface(screen); +@@ -1711,7 +2177,7 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + #if 1 + { + int sub[2] = { 0, 0 }; +- SDL_DisplayMode mode; ++ //SDL_DisplayMode mode; + + if(!(SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN)) + SDL_GetWindowPosition(window, &sub[0], &sub[1]); +@@ -1719,14 +2185,16 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + sub[0] += screen_dest_rect.x; + sub[1] += screen_dest_rect.y; + +- if(SDL_GetCurrentDisplayMode(SDL_GetWindowDisplayIndex(window), &mode) >= 0) +- { +- JoyGunTranslate[0].mul = (float)mode.w / screen_dest_rect.w / 32768.0; ++ //if(SDL_GetCurrentDisplayMode(SDL_GetWindowDisplayIndex(window), &mode) >= 0) ++ //{ ++ // JoyGunTranslate[0].mul = (float)mode.w / screen_dest_rect.w / 32768.0; ++ JoyGunTranslate[0].mul = (float)screen_w / screen_dest_rect.w / 32768.0; //psakhis + JoyGunTranslate[0].sub = (float)sub[0] / screen_dest_rect.w; + +- JoyGunTranslate[1].mul = (float)mode.h / screen_dest_rect.h / 32768.0; ++ //JoyGunTranslate[1].mul = (float)mode.h / screen_dest_rect.h / 32768.0; ++ JoyGunTranslate[1].mul = (float)screen_h / screen_dest_rect.h / 32768.0; //psakhis + JoyGunTranslate[1].sub = (float)sub[1] / screen_dest_rect.h; +- } ++ //} + } + #endif + // +@@ -1745,7 +2213,9 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + } + + if(vdriver == VDRIVER_OPENGL) ++ { + ogl_blitter->ClearBackBuffer(); ++ } + else + { + SDL_FillRect(screen, NULL, 0); +@@ -1762,7 +2232,34 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + + if(LineWidths[0] == ~0) // Skip multi line widths code? + { +- SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ //printf(" --- Blit full frame ---\n"); ++ //SLK - blit for: MD & NES & [...] ++ //printf(" Src: %dx%d - %d,%d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y); ++ //printf(" Dest: %dx%d - %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ MDFN_Rect sub_dest_rect = screen_dest_rect; ++ ++ //printf("Sergi %d %d %d %d \n",src_rect.w,sr_x_scale,sub_dest_rect.w,screen_dest_rect.w); ++ if((src_rect.w * sr_x_scale) > sub_dest_rect.w) ++ { ++ //printf("Horizontal crop: ON\n"); ++ src_rect.x = (src_rect.w - sub_dest_rect.w) / 2; ++ src_rect.w = sub_dest_rect.w / sr_x_scale; ++ } ++ sub_dest_rect.y = (((sub_dest_rect.h / sr_y_scale) - src_rect.h) / 2) * sr_y_scale; // V. Center ++ sub_dest_rect.h = src_rect.h * sr_y_scale; ++ ++ //printf(" Src: %dx%d - %d,%d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y); ++ //printf(" Output - SLK sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - SLK sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ ++ } ++ else ++ { ++ SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ } + } + else + { +@@ -1784,27 +2281,105 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + + if(rotated == MDFN_ROTATE90) + { +- sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.y = screen_dest_rect.y; ++ if (use_native_resolution || use_super_resolution || use_switchres) { ++ sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * sr_x_scale; ++ sub_dest_rect.y = screen_dest_rect.y; ++ ++ sub_dest_rect.w = sub_src_rect.h * sr_x_scale; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } ++ else { ++ sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.y = screen_dest_rect.y; + +- sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.h = screen_dest_rect.h; ++ sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } + //printf("sdr.x=%f, sdr.w=%f\n", (double)screen_dest_rect.x + (double)(last_y - src_rect.y) * screen_dest_rect.w / src_rect.h, (double)sub_src_rect.h * screen_dest_rect.w / src_rect.h); + } + else if(rotated == MDFN_ROTATE270) + { +- sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.y = screen_dest_rect.y; ++ if (use_native_resolution || use_super_resolution || use_switchres) { ++ sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * sr_x_scale; ++ sub_dest_rect.y = screen_dest_rect.y; ++ ++ sub_dest_rect.w = sub_src_rect.h * sr_x_scale; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } ++ else { ++ sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.y = screen_dest_rect.y; + +- sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.h = screen_dest_rect.h; ++ sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } + } + else + { +- sub_dest_rect.x = screen_dest_rect.x; +- sub_dest_rect.w = screen_dest_rect.w; +- sub_dest_rect.y = screen_dest_rect.y + (last_y - src_rect.y) * screen_dest_rect.h / src_rect.h; +- sub_dest_rect.h = sub_src_rect.h * screen_dest_rect.h / src_rect.h; ++ if (use_native_resolution || use_super_resolution || use_switchres) ++ { ++ // SLK - (prevent) resizing and centering ++ //printf(" src_rect: %dx%d - X:%d, cmdY:%d rect.x %d rect.w %d \n",src_rect.w,src_rect.h,src_rect.x,src_rect.y,screen_dest_rect.x,screen_dest_rect.w); ++ ++ sub_dest_rect.x = screen_dest_rect.x; ++ sub_dest_rect.w = screen_dest_rect.w; ++ sub_dest_rect.y = screen_dest_rect.y + ((last_y - src_rect.y) * sr_y_scale); ++ sub_dest_rect.h = sub_src_rect.h * sr_y_scale; ++ ++ //printf("sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ if (sub_src_rect.w > (sub_dest_rect.w / sr_x_scale)) // horizontal crop to fit screen ++ { ++ //psakhis horrible hack centering psx ++ //printf("Horizontal centering ON sub_src_rect.x = %d, (sub_src_rect.w vs sub_dest_rect.w / sr_x_scale):%d vs %d\n",sub_src_rect.x,sub_src_rect.w, (sub_dest_rect.w / sr_x_scale)); ++ //if (psx_native_resolution_bars && sub_src_rect.w > sub_dest_rect.w && sr_x_scale == 1) { ++ // sub_src_rect.x = 32 + ((sub_src_rect.w - sub_dest_rect.w) / 2); ++ // sub_src_rect.w = sub_dest_rect.w / sr_x_scale; ++ //} ++ //psakhis ++ //else { ++ //SLK ++ // sub_src_rect.x = (sub_src_rect.w - (sub_dest_rect.w / sr_x_scale)) / 2; ++ //psakhis correct centering ++ sub_src_rect.x = sub_src_rect.x + ((sub_src_rect.w - (sub_dest_rect.w / sr_x_scale)) / 2); ++ sub_src_rect.w = sub_dest_rect.w / sr_x_scale; ++ //} ++ } ++ ++ // OLD 1.24.1 stretch ok ++ /* if (sub_src_rect.w >= resolution_to_change_w) // horizontal crop to fit screen ++ { ++ sub_src_rect.x = sub_src_rect.x + ((sub_src_rect.w - resolution_to_change_w) / 2); ++ sub_src_rect.w = resolution_to_change_w; ++ }*/ ++ if (native_resolution_vcenter == true) // default vertical centering ++ { ++ //printf(" Vertical centering ON - src_rect.h:%d sub_dest_rect.y:%d screen_dest_rect.h:%d sr_y_scale:%d \n",src_rect.h,sub_dest_rect.y,screen_dest_rect.h,sr_y_scale); ++ sub_dest_rect.y = sub_dest_rect.y + ((screen_dest_rect.h - (src_rect.h * sr_y_scale)) / 2); ++ } ++ else // fill screen (psx - half black screen fix) ++ { ++ //printf(" Vertical centering OFF (psx)\n"); ++ sub_dest_rect.h = sub_src_rect.h * (screen_dest_rect.h) / src_rect.h; ++ // sub_dest_rect.h = (sub_src_rect.h + sub_src_rect.y) * sr_y_scale; ++ } ++ ++ //printf(" Output - SLK sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ //printf(" Output - SLK sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - SLK sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ ++ } ++ else ++ { ++ //printf(" src_rect: %dx%d - X:%d, cmdY:%d rect.x %d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y,screen_dest_rect.x); ++ sub_dest_rect.x = screen_dest_rect.x; ++ sub_dest_rect.w = screen_dest_rect.w; ++ sub_dest_rect.y = screen_dest_rect.y + (last_y - src_rect.y) * screen_dest_rect.h / src_rect.h; ++ sub_dest_rect.h = sub_src_rect.h * screen_dest_rect.h / src_rect.h; ++ ++ //printf(" Output - PSAKHIS sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ //printf(" Output - PSAKHIS sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - PSAKHIS sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ } + } + + if(!sub_dest_rect.h) // May occur with small yscale values in certain cases, so prevent triggering an assert() +diff --git a/src/drivers/video.h b/src/drivers/video.h +index 8dc2b89..857445b 100644 +--- a/src/drivers/video.h ++++ b/src/drivers/video.h +@@ -38,6 +38,10 @@ void Video_Init(void) MDFN_COLD; + + void Video_Sync(MDFNGI* gi); + ++// SLK ++int Video_ChangeResolution(MDFNGI* gi, int w, int h, double vfreq); //false - no refresh needed ++void Video_BlitRefresh(); //psakhis ++ + void Video_Exposed(void); + + void Video_Kill(void) MDFN_COLD; +diff --git a/src/mednafen.cpp b/src/mednafen.cpp +index 08e1eda..71bdf31 100644 +--- a/src/mednafen.cpp ++++ b/src/mednafen.cpp +@@ -54,6 +54,19 @@ + #include "video/tblur.h" + #include "qtrecord.h" + ++// SLK ++bool use_native_resolution = false; ++bool use_super_resolution = false; ++bool use_switchres = false; ++bool resolution_to_change; ++double resolution_to_change_vfreq; ++int resolution_to_change_w; ++int resolution_to_change_h; ++int current_game_resolution_w; ++int current_game_resolution_h; ++int current_game_rotated = 0; ++bool native_resolution_vcenter = true; ++ + namespace Mednafen + { + +@@ -655,6 +668,8 @@ static const std::vector KnownCDExtensions = + { + // M3U must be highest. + { ".m3u", -40, "M3U" }, ++ //psakhis ++ { ".chd", -45, "CHD" }, + { ".ccd", -50, "CloneCD" }, + { ".cue", -60, "CUE" }, + { ".toc", -70, "cdrdao TOC" }, +diff --git a/src/mednafen.h b/src/mednafen.h +index 9ce3a8e..ec40858 100644 +--- a/src/mednafen.h ++++ b/src/mednafen.h +@@ -21,6 +21,31 @@ + #include "settings-common.h" + #include "NativeVFS.h" + ++// SLK ++ ++// option activation flags - set by Mednafen Video setting processing ++extern bool use_native_resolution; ++extern bool use_super_resolution; ++extern bool use_switchres; ++ ++// scaling & positioning option - set by module, use in video.cpp ++extern bool native_resolution_vcenter; ++ ++// Change resolution request flag - set by module ++extern bool resolution_to_change; ++ ++// Requested video mode information - set in module ++extern int resolution_to_change_w; ++extern int resolution_to_change_h; ++extern double resolution_to_change_vfreq; ++ ++// current video mode information - set in drivers\video.cpp ++extern int current_game_resolution_w; ++extern int current_game_resolution_h; ++extern int current_game_rotated; ++ ++// SLK end ++ + namespace Mednafen + { + +diff --git a/src/state.cpp b/src/state.cpp +index 49a3d59..4ec6128 100644 +--- a/src/state.cpp ++++ b/src/state.cpp +@@ -499,6 +499,14 @@ void MDFNSS_SaveSM(Stream *st, bool data_only, const MDFN_Surface *surface, cons + neowidth = MDFNGameInfo->nominal_width; + neoheight = MDFNGameInfo->nominal_height; + ++ // SLK - Approximation to prevent SaveState snapshot corruption ++ //if(use_super_resolution) psakhis ++ { ++ neowidth = resolution_to_change_w; ++ neoheight = DisplayRect->h; ++ } ++ // SLK - end ++ + if(LineWidths[0] != ~0) + { + int32 first_w = LineWidths[DisplayRect->y]; +@@ -619,6 +627,14 @@ void MDFNSS_LoadSM(Stream *st, bool data_only, const int fuzz) + svbe = MDFN_de32lsb(header + 20) & 0x80000000; + width = MDFN_de32lsb(header + 24); + height = MDFN_de32lsb(header + 28); ++ ++ //psakhis: restore resolution onLoadState ++ resolution_to_change_w = width; ++ resolution_to_change_h = height; ++ resolution_to_change = true; ++ printf("STATE - MDFNSS_LoadSM - Restored resolution %dx%d\n",width,height); ++ //psakhis end ++ + preview_len = width * height * 3; + + if((int)stateversion < 0x900) // Ensuring that (int)stateversion is > 0 is the most important part. +diff --git a/src/switchres/switchres_defines.h b/src/switchres/switchres_defines.h +index e69de29..42470ed 100644 +--- a/src/switchres/switchres_defines.h ++++ b/src/switchres/switchres_defines.h +@@ -0,0 +1,42 @@ ++#define SR_DEFINES ++ ++#define SR_OPT_MONITOR "monitor" ++#define SR_OPT_CRT_RANGE0 "crt_range0" ++#define SR_OPT_CRT_RANGE1 "crt_range1" ++#define SR_OPT_CRT_RANGE2 "crt_range2" ++#define SR_OPT_CRT_RANGE3 "crt_range3" ++#define SR_OPT_CRT_RANGE4 "crt_range4" ++#define SR_OPT_CRT_RANGE5 "crt_range5" ++#define SR_OPT_CRT_RANGE6 "crt_range6" ++#define SR_OPT_CRT_RANGE7 "crt_range7" ++#define SR_OPT_CRT_RANGE8 "crt_range8" ++#define SR_OPT_CRT_RANGE9 "crt_range9" ++#define SR_OPT_LCD_RANGE "lcd_range" ++#define SR_OPT_MODELINE "modeline" ++#define SR_OPT_USER_MODE "user_mode" ++#define SR_OPT_DISPLAY "display" ++#define SR_OPT_API "api" ++#define SR_OPT_LOCK_UNSUPPORTED_MODES "lock_unsupported_modes" ++#define SR_OPT_LOCK_SYSTEM_MODES "lock_system_modes" ++#define SR_OPT_REFRESH_DONT_CARE "refresh_dont_care" ++#define SR_OPT_KEEP_CHANGES "keep_changes" ++#define SR_OPT_MODELINE_GENERATION "modeline_generation" ++#define SR_OPT_INTERLACE "interlace" ++#define SR_OPT_DOUBLESCAN "doublescan" ++#define SR_OPT_DOTCLOCK_MIN "dotclock_min" ++#define SR_OPT_SYNC_REFRESH_TOLERANCE "sync_refresh_tolerance" ++#define SR_OPT_SUPER_WIDTH "super_width" ++#define SR_OPT_ASPECT "aspect" ++#define SR_OPT_V_SHIFT_CORRECT "v_shift_correct" ++#define SR_OPT_H_SIZE "h_size" ++#define SR_OPT_H_SHIFT "h_shift" ++#define SR_OPT_V_SHIFT "v_shift" ++#define SR_OPT_PIXEL_PRECISION "pixel_precision" ++#define SR_OPT_INTERLACE_FORCE_EVEN "interlace_force_even" ++#define SR_OPT_SCALE_PROPORTIONAL "scale_proportional" ++#define SR_OPT_SCREEN_COMPOSITING "screen_compositing" ++#define SR_OPT_SCREEN_REORDERING "screen_reordering" ++#define SR_OPT_ALLOW_HARDWARE_REFRESH "allow_hardware_refresh" ++#define SR_OPT_CUSTOM_TIMING "custom_timing" ++#define SR_OPT_VERBOSE "verbose" ++#define SR_OPT_VERBOSITY "verbosity" +\ No newline at end of file +diff --git a/src/switchres/switchres_wrapper.h b/src/switchres/switchres_wrapper.h +index e69de29..fe3bc40 100644 +--- a/src/switchres/switchres_wrapper.h ++++ b/src/switchres/switchres_wrapper.h +@@ -0,0 +1,190 @@ ++/************************************************************** ++ ++ switchres_wrapper.h - Switchres C wrapper API header file ++ ++ --------------------------------------------------------- ++ ++ Switchres Modeline generation engine for emulation ++ ++ License GPL-2.0+ ++ Copyright 2010-2021 Chris Kennedy, Antonio Giner, ++ Alexandre Wodarczyk, Gil Delescluse ++ ++ **************************************************************/ ++ ++#include ++#ifndef SR_DEFINES ++#include "switchres_defines.h" ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#ifdef __linux__ ++#include ++#define LIBTYPE void* ++#define OPENLIB(libname) dlopen((libname), RTLD_LAZY) ++#define LIBFUNC(libh, fn) dlsym((libh), (fn)) ++#define LIBERROR dlerror ++#define CLOSELIB(libh) dlclose((libh)) ++ ++#elif defined _WIN32 ++#include ++#define LIBTYPE HINSTANCE ++#define OPENLIB(libname) LoadLibrary(TEXT((libname))) ++#define LIBFUNC(lib, fn) GetProcAddress((lib), (fn)) ++ ++#define CLOSELIB(libp) FreeLibrary((libp)) ++#endif ++ ++#ifdef _WIN32 ++/* ++ * This is a trick to avoid exporting some functions thus having the binary ++ * flagged as a virus. If switchres_wrapper.cpp is included in the compilation ++ * LIBERROR() is just declared and not compiled. If switchres_wrapper.cpp is ++ * not compiled, LIBERROR is defined here ++ */ ++#ifndef SR_WIN32_STATIC ++char* LIBERROR() ++{ ++ DWORD errorMessageID = GetLastError(); ++ if(errorMessageID == 0) ++ return NULL; ++ ++ LPSTR messageBuffer; ++ FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, ++ NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); ++ ++ SetLastError(0); ++ ++ static char error_msg[256] = {0}; ++ strncpy(error_msg, messageBuffer, sizeof(error_msg)-1); ++ LocalFree(messageBuffer); ++ return error_msg; ++} ++#endif /* SR_WIN32_STATIC */ ++ #ifndef SR_WIN32_STATIC ++ #define MODULE_API __declspec(dllexport) ++ #else ++ #define MODULE_API ++ #endif ++#else ++ #define MODULE_API ++#endif /* _WIN32 */ ++ ++#ifdef __linux__ ++#define LIBSWR "libswitchres.so" ++#elif _WIN32 ++#define LIBSWR "libswitchres.dll" ++#endif ++ ++/* Mode flags */ ++#define SR_MODE_INTERLACED 1<<0 ++#define SR_MODE_ROTATED 1<<1 ++#define SR_MODE_DONT_FLUSH 1<<16 ++ ++/* That's all the exposed data from Switchres calculation */ ++typedef struct MODULE_API ++{ ++ int width; ++ int height; ++ int refresh; ++ // ++ double vfreq; ++ double hfreq; ++ // ++ uint64_t pclock; ++ int hbegin; ++ int hend; ++ int htotal; ++ int vbegin; ++ int vend; ++ int vtotal; ++ int interlace; ++ int doublescan; ++ int hsync; ++ int vsync; ++ // ++ int is_refresh_off; ++ int is_stretched; ++ double x_scale; ++ double y_scale; ++ double v_scale; ++ int id; ++} sr_mode; ++ ++/* Used to retrieve SR settings and state */ ++typedef struct MODULE_API ++{ ++ char monitor[32]; ++ int modeline_generation; ++ int desktop_is_rotated; ++ int interlace; ++ int doublescan; ++ double dotclock_min; ++ double refresh_tolerance; ++ int super_width; ++ double monitor_aspect; ++ double h_size; ++ double h_shift; ++ double v_shift; ++ int pixel_precision; ++ int selected_mode; ++ int current_mode; ++} sr_state; ++ ++/* Declaration of the wrapper functions */ ++MODULE_API void sr_init(); ++MODULE_API char* sr_get_version(); ++MODULE_API void sr_load_ini(char* config); ++MODULE_API void sr_deinit(); ++MODULE_API int sr_init_disp(const char*, void*); ++MODULE_API void sr_set_disp(int); ++MODULE_API int sr_get_mode(int, sr_mode*); ++MODULE_API int sr_add_mode(int, int, double, int, sr_mode*); ++MODULE_API int sr_switch_to_mode(int, int, double, int, sr_mode*); ++MODULE_API int sr_flush(); ++MODULE_API int sr_set_mode(int); ++MODULE_API void sr_set_monitor(const char*); ++MODULE_API void sr_set_user_mode(int, int, int); ++MODULE_API void sr_set_option(const char* key, const char* value); ++MODULE_API void sr_get_state(sr_state *state); ++ ++/* Logging related functions */ ++MODULE_API void sr_set_log_level(int); ++MODULE_API void sr_set_log_callback_error(void *); ++MODULE_API void sr_set_log_callback_info(void *); ++MODULE_API void sr_set_log_callback_debug(void *); ++ ++/* Others */ ++MODULE_API void sr_set_sdl_window(void *); ++ ++/* Inspired by https://stackoverflow.com/a/1067684 */ ++typedef struct MODULE_API ++{ ++ void (*init)(void); ++ void (*load_ini)(char*); ++ char* (*sr_get_version)(void); ++ void (*deinit)(void); ++ int (*init_disp)(const char*, void*); ++ void (*set_disp)(int); ++ int (*get_mode)(int, sr_mode*); ++ int (*add_mode)(int, int, double, int, sr_mode*); ++ int (*switch_to_mode)(int, int, double, int, sr_mode*); ++ int (*flush)(void); ++ int (*set_mode)(int); ++ void (*set_monitor)(const char*); ++ void (*set_user_mode)(int, int, int); ++ void (*set_option)(const char*, const char*); ++ void (*get_state)(sr_state*); ++ void (*set_log_level) (int); ++ void (*set_log_callback_error)(void *); ++ void (*set_log_callback_info)(void *); ++ void (*set_log_callback_debug)(void *); ++} srAPI; ++ ++ ++#ifdef __cplusplus ++} ++#endif +diff --git a/src/ss/vdp2_render.cpp b/src/ss/vdp2_render.cpp +index 2be23f8..ae2899c 100644 +--- a/src/ss/vdp2_render.cpp ++++ b/src/ss/vdp2_render.cpp +@@ -145,6 +145,17 @@ static uint8 RBG0CCRatio; + static uint8 LineColorCCRatio; + static uint8 BackCCRatio; + ++//SLK ++static uint8 prev_InterlaceMode = 0; ++static uint8 prev_HRes = 0; ++static uint8 prev_VRes = 0; ++static bool prev_BorderMode = 0; ++// SLK end ++ ++//PSAKHIS ++static bool prob_false_change = false; //reduce false positive changes ++// PSAKHIS end ++ + // + static struct + { +@@ -554,6 +565,52 @@ static INLINE void RegsWrite(uint32 A, uint16 V) + InterlaceMode = (V >> 6) & 0x3; + VRes = (V >> 4) & 0x3; + HRes = (V >> 0) & 0x7; ++ // SLK ++ //PSAKHIS ++ if(InterlaceMode == prev_InterlaceMode && (HRes < prev_HRes && !prob_false_change)) ++ { ++ printf("VDP2 Render - Television mode changed?: %d\n",V); ++ prob_false_change = true; ++ } ++ else ++ { ++ prob_false_change = false; ++ } ++ //END PSAKHIS ++ //if(InterlaceMode != prev_InterlaceMode || HRes != prev_HRes) ++ if(InterlaceMode != prev_InterlaceMode || (HRes != prev_HRes && !prob_false_change)) //psakhis: only change if a valid hres for more than 1 ++ { ++ printf("VDP2 Render - Television mode changed: %d\n",V); ++ printf(" BorderMode: %d\n",BorderMode); ++ printf(" PAL: %d\n",PAL); ++ printf(" InterlaceMode: %d\n",InterlaceMode); ++ printf(" VRes: %d\n",VRes); ++ printf(" HRes: %d\n",HRes); ++ prev_BorderMode = BorderMode; ++ prev_InterlaceMode = InterlaceMode; ++ prev_VRes = VRes; ++ prev_HRes = HRes; ++ prob_false_change = false; //Psakhis reduce false positives ++ // HRES ++ switch(HRes){ ++ case 0: ++ resolution_to_change_w = 320; ++ break; ++ case 1: ++ resolution_to_change_w = 352; ++ break; ++ case 2: ++ resolution_to_change_w = 640; ++ break; ++ case 3: ++ resolution_to_change_w = 704; ++ break; ++ } ++ if(InterlaceMode >= 2){resolution_to_change_h = PAL ? 576 : 480;} else {resolution_to_change_h = PAL ? 288 : 240;} ++ printf("SS - VDP2 Render - TV mode set to %dx%d",resolution_to_change_w,resolution_to_change_h); ++ resolution_to_change = true; // Flag for video resolution change by VIDEO.cpp/MAIN.cpp ++ } ++ // SLK - end + break; + + case 0x02: +@@ -1013,7 +1070,7 @@ static void Reset(bool powering_up) + HRes = 0; + VRes = 0; + BorderMode = false; +- InterlaceMode = 0; ++ InterlaceMode = 0; + // + memset(VCPRegs, 0, sizeof(VCPRegs)); + // +@@ -2556,7 +2613,7 @@ static void T_MixIt(uint32* target, const unsigned vdp2_line, const unsigned w, + + if(TA_Special == MIXIT_SPECIAL_HIRES_CRAM12 && !(pix2 & (1U << PIX_ISRGB_SHIFT))) + sec_rgb = fore_rgb; +- ++ + if(TA_CCMD) // Ignore ratio, add as-is. + { + new_rgb = std::min(0x0000FF, (fore_rgb & 0x0000FF) + (sec_rgb & 0x0000FF)); +@@ -3145,7 +3202,7 @@ static NO_INLINE void DrawLine(const uint16 out_line, const uint16 vdp2_line, co + if(CRAM_Mode) + special = MIXIT_SPECIAL_HIRES_CRAM12; + } +- ++ + MixIt[rbgdualen][special][CCRTMD][CCMD](target + tvxo, vdp2_line, w, back_rgb24, blursrc); + ReorderRGB(target + tvxo, w, espec->surface->format.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + } +@@ -3357,12 +3414,22 @@ void VDP2REND_SetGetVideoParams(MDFNGI* gi, const bool caspect, const int sls, c + { + gi->nominal_width = (ShowHOverscan ? 365 : 354); + gi->fb_height = 576; ++ resolution_to_change_h = 288; // SLK - start resolution ++ resolution_to_change_vfreq = 50; + } + else + { + gi->nominal_width = (ShowHOverscan ? 302 : 292); + gi->fb_height = 480; ++ resolution_to_change_h = 240; // SLK - init crt mode ++ resolution_to_change_vfreq = 59.764793; // SLK TODO: find accurate V.Freq + } ++ ++ // SLK ++ resolution_to_change_w = 320; ++ resolution_to_change = true; // SLK - init crt mode ++ // SLK - end ++ + gi->nominal_height = LineVisLast + 1 - LineVisFirst; + + gi->lcm_width = (ShowHOverscan? 10560 : 10240); +--- a/src/drivers/video-state.cpp 2024-12-25 19:10:43.492715743 +0100 ++++ b/src/drivers/video-state.cpp 2024-04-28 18:56:26.000000000 +0200 +@@ -180,16 +180,48 @@ + tdrect.w = TextRect.w * meow; + tdrect.h = TextRect.h * meow; + tdrect.x = (screen_w - tdrect.w) / 2; +- tdrect.y = screen_h - tdrect.h; ++ // SLK - Custom savestate selection OSD ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ switch(screen_h){ ++ case 240:tdrect.y = screen_h - tdrect.h - 18; ++ break; ++ case 288:tdrect.y = screen_h - tdrect.h - 32; ++ break; ++ case 480:tdrect.y = screen_h - tdrect.h - 32; ++ break; ++ case 576:tdrect.y = screen_h - tdrect.h - 64; ++ break; ++ default:tdrect.y = screen_h - tdrect.h; ++ } ++ if(use_super_resolution) // TODO SR ++ { ++ tdrect.w = tdrect.w * 8; ++ tdrect.x = (screen_w - tdrect.w) / 2; ++ } ++ BlitOSD(TextSurface, &TextRect, &tdrect); ++ ++ drect.w = screen_w * 0.5 + 3; // TODO: Why 3 ??? ++ drect.h = screen_h * 0.5 + 3; ++ drect.x = (screen_w - drect.w) / 2; ++ drect.y = tdrect.y - drect.h; // SLK + +- BlitOSD(TextSurface, &TextRect, &tdrect); +- +- drect.w = PreviewRect.w * meow; +- drect.h = PreviewRect.h * meow; +- drect.x = (screen_w - drect.w) / 2; +- drect.y = screen_h - drect.h - tdrect.h - 4; +- +- BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ } ++ else // native OSD display ++ { ++ tdrect.y = screen_h - tdrect.h; ++ ++ BlitOSD(TextSurface, &TextRect, &tdrect); ++ ++ drect.w = PreviewRect.w * meow; ++ drect.h = PreviewRect.h * meow; ++ drect.x = (screen_w - drect.w) / 2; ++ drect.y = screen_h - drect.h - tdrect.h - 4; ++ ++ BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ } ++ // SLK - end + } + } + diff --git a/package/mednafen/0002-mednafen-makefile.patch b/package/mednafen/0002-mednafen-makefile.patch new file mode 100644 index 0000000000..3a9b1833c2 --- /dev/null +++ b/package/mednafen/0002-mednafen-makefile.patch @@ -0,0 +1,385 @@ +diff --git a/aclocal.m4 b/aclocal.m4 +index effc30f..e264ae4 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -1,6 +1,6 @@ +-# generated automatically by aclocal 1.16.1 -*- Autoconf -*- ++# generated automatically by aclocal 1.16.5 -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -14,15 +14,15 @@ + m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +-[m4_warning([this file was generated for autoconf 2.69. ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, ++[m4_warning([this file was generated for autoconf 2.72. + You have another version of autoconf. It may work, but is not guaranteed to. + If you have problems, you may need to regenerate the build system entirely. + To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +-dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +-dnl serial 11 (pkg-config-0.29) +-dnl ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 11 (pkg-config-0.29.1) ++ + dnl Copyright © 2004 Scott James Remnant . + dnl Copyright © 2012-2015 Dan Nicholson + dnl +@@ -63,7 +63,7 @@ dnl + dnl See the "Since" comment for each macro you use to see what version + dnl of the macros you require. + m4_defun([PKG_PREREQ], +-[m4_define([PKG_MACROS_VERSION], [0.29]) ++[m4_define([PKG_MACROS_VERSION], [0.29.1]) + m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) + ])dnl PKG_PREREQ +@@ -296,7 +296,75 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) + AS_VAR_IF([$1], [""], [$5], [$4])dnl + ])dnl PKG_CHECK_VAR + +-# Copyright (C) 2002-2018 Free Software Foundation, Inc. ++dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ------------------------------------------ ++dnl ++dnl Prepare a "--with-" configure option using the lowercase ++dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and ++dnl PKG_CHECK_MODULES in a single macro. ++AC_DEFUN([PKG_WITH_MODULES], ++[ ++m4_pushdef([with_arg], m4_tolower([$1])) ++ ++m4_pushdef([description], ++ [m4_default([$5], [build with ]with_arg[ support])]) ++ ++m4_pushdef([def_arg], [m4_default([$6], [auto])]) ++m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) ++m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) ++ ++m4_case(def_arg, ++ [yes],[m4_pushdef([with_without], [--without-]with_arg)], ++ [m4_pushdef([with_without],[--with-]with_arg)]) ++ ++AC_ARG_WITH(with_arg, ++ AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, ++ [AS_TR_SH([with_]with_arg)=def_arg]) ++ ++AS_CASE([$AS_TR_SH([with_]with_arg)], ++ [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], ++ [auto],[PKG_CHECK_MODULES([$1],[$2], ++ [m4_n([def_action_if_found]) $3], ++ [m4_n([def_action_if_not_found]) $4])]) ++ ++m4_popdef([with_arg]) ++m4_popdef([description]) ++m4_popdef([def_arg]) ++ ++])dnl PKG_WITH_MODULES ++ ++dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ----------------------------------------------- ++dnl ++dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES ++dnl check._[VARIABLE-PREFIX] is exported as make variable. ++AC_DEFUN([PKG_HAVE_WITH_MODULES], ++[ ++PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) ++ ++AM_CONDITIONAL([HAVE_][$1], ++ [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ++])dnl PKG_HAVE_WITH_MODULES ++ ++dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ------------------------------------------------------ ++dnl ++dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after ++dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make ++dnl and preprocessor variable. ++AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], ++[ ++PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) ++ ++AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], ++ [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ++])dnl PKG_HAVE_DEFINE_WITH_MODULES ++ ++# Copyright (C) 2002-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -311,7 +379,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], + [am__api_version='1.16' + dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to + dnl require some minimum version. Point them to the right macro. +-m4_if([$1], [1.16.1], [], ++m4_if([$1], [1.16.5], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl + ]) + +@@ -327,14 +395,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) + # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. + # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +-[AM_AUTOMAKE_VERSION([1.16.1])dnl ++[AM_AUTOMAKE_VERSION([1.16.5])dnl + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl + _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + + # Figure out how to run the assembler. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -354,7 +422,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl + + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -406,7 +474,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` + + # AM_CONDITIONAL -*- Autoconf -*- + +-# Copyright (C) 1997-2018 Free Software Foundation, Inc. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -437,7 +505,7 @@ AC_CONFIG_COMMANDS_PRE( + Usually this means the macro was only invoked conditionally.]]) + fi])]) + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -628,7 +696,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl + + # Generate code to set up dependency tracking. -*- Autoconf -*- + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -667,7 +735,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments +- for automatic dependency tracking. Try re-running configure with the ++ for automatic dependency tracking. If GNU make was not used, consider ++ re-running the configure script with MAKE="gmake" (or whatever is ++ necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi +@@ -694,7 +764,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], + + # Do all the work for Automake. -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -722,6 +792,10 @@ m4_defn([AC_PROG_CC]) + # release and drop the old call support. + AC_DEFUN([AM_INIT_AUTOMAKE], + [AC_PREREQ([2.65])dnl ++m4_ifdef([_$0_ALREADY_INIT], ++ [m4_fatal([$0 expanded multiple times ++]m4_defn([_$0_ALREADY_INIT]))], ++ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl + dnl Autoconf wants to disallow AM_ names. We explicitly allow + dnl the ones we care about. + m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +@@ -758,7 +832,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + [_AM_SET_OPTIONS([$1])dnl + dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. + m4_if( +- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), ++ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +@@ -810,6 +884,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl + ]) ++# Variables for tags utilities; see am/tags.am ++if test -z "$CTAGS"; then ++ CTAGS=ctags ++fi ++AC_SUBST([CTAGS]) ++if test -z "$ETAGS"; then ++ ETAGS=etags ++fi ++AC_SUBST([ETAGS]) ++if test -z "$CSCOPE"; then ++ CSCOPE=cscope ++fi ++AC_SUBST([CSCOPE]) ++ + AC_REQUIRE([AM_SILENT_RULES])dnl + dnl The testsuite driver may need to know about EXEEXT, so add the + dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +@@ -891,7 +979,7 @@ for _am_header in $config_headers :; do + done + echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -912,7 +1000,7 @@ if test x"${install_sh+set}" != xset; then + fi + AC_SUBST([install_sh])]) + +-# Copyright (C) 2003-2018 Free Software Foundation, Inc. ++# Copyright (C) 2003-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -933,7 +1021,7 @@ AC_SUBST([am__leading_dot])]) + + # Check to see how 'make' treats includes. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -976,7 +1064,7 @@ AC_SUBST([am__quote])]) + + # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# Copyright (C) 1997-2018 Free Software Foundation, Inc. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -997,12 +1085,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN], + [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl + AC_REQUIRE_AUX_FILE([missing])dnl + if test x"${MISSING+set}" != xset; then +- case $am_aux_dir in +- *\ * | *\ *) +- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +- *) +- MISSING="\${SHELL} $am_aux_dir/missing" ;; +- esac ++ MISSING="\${SHELL} '$am_aux_dir/missing'" + fi + # Use eval to expand $SHELL + if eval "$MISSING --is-lightweight"; then +@@ -1013,7 +1096,7 @@ else + fi + ]) + +-# Copyright (C) 2003-2018 Free Software Foundation, Inc. ++# Copyright (C) 2003-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1047,7 +1130,7 @@ esac + + # Helper functions for option handling. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1076,7 +1159,7 @@ AC_DEFUN([_AM_SET_OPTIONS], + AC_DEFUN([_AM_IF_OPTION], + [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1123,7 +1206,7 @@ AC_LANG_POP([C])]) + # For backward compatibility. + AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1142,7 +1225,7 @@ AC_DEFUN([AM_RUN_LOG], + + # Check to make sure that the build environment is sane. -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1223,7 +1306,7 @@ AC_CONFIG_COMMANDS_PRE( + rm -f conftest.file + ]) + +-# Copyright (C) 2009-2018 Free Software Foundation, Inc. ++# Copyright (C) 2009-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1283,7 +1366,7 @@ AC_SUBST([AM_BACKSLASH])dnl + _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl + ]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1311,7 +1394,7 @@ fi + INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-# Copyright (C) 2006-2018 Free Software Foundation, Inc. ++# Copyright (C) 2006-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1330,7 +1413,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + + # Check how to create a tarball. -*- Autoconf -*- + +-# Copyright (C) 2004-2018 Free Software Foundation, Inc. ++# Copyright (C) 2004-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +diff --git a/src/Makefile.am b/src/Makefile.am +index 0ccb1c8..848a18c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -197,5 +197,5 @@ else + include trio/Makefile.am.inc + endif + +-mednafen_LDADD += @FLAC_LIBS@ @ZLIB_LIBS@ @LIBINTL@ @LIBICONV@ ++mednafen_LDADD += @FLAC_LIBS@ @ZLIB_LIBS@ @LIBINTL@ @LIBICONV@ -lswitchres + diff --git a/package/mednafen/Config.in b/package/mednafen/Config.in new file mode 100644 index 0000000000..9afb0bd552 --- /dev/null +++ b/package/mednafen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MEDNAFEN + bool "mednafen" + help + Mednafen is a portable, utilizing OpenGL and SDL, + argument(command-line)-driven multi-system emulator. + + https://mednafen.github.io/ diff --git a/package/mednafen/mednafen.mk b/package/mednafen/mednafen.mk new file mode 100644 index 0000000000..88616e04e4 --- /dev/null +++ b/package/mednafen/mednafen.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# MEDNAFEN +# +################################################################################ + +# Version 1.32.1 +MEDNAFEN_VERSION = 1.32.1 +MEDNAFEN_SOURCE = mednafen-$(MEDNAFEN_VERSION).tar.xz +MEDNAFEN_SITE = https://mednafen.github.io/releases/files +MEDNAFEN_LICENSE = GPL-2.0 +MEDNAFEN_LICENSE_FILES = COPYING +MEDNAFEN_DEPENDENCIES = switchres arcade-dats + +MEDNAFEN_CONF_OPTS += --disable-apple2 \ + --disable-gb \ + --disable-gba \ + --disable-lynx \ + --disable-md \ + --disable-nes \ + --disable-ngp \ + --disable-pce \ + --disable-pce-fast \ + --disable-pcfx \ + --disable-psx \ + --disable-sms \ + --disable-snes \ + --disable-snes-faust \ + --disable-ssfplay \ + --disable-vb \ + --disable-wswan \ + --disable-ssfplay + +define MEDNAFEN_BUILD_DATS + $(call InstallArcadeFiles,mednafen,stv,$(MEDNAFEN_VERSION)) +endef + +MEDNAFEN_POST_INSTALL_TARGET_HOOKS += MEDNAFEN_BUILD_DATS + +$(eval $(autotools-package)) diff --git a/package/recalbox-configgen/Config.in b/package/recalbox-configgen/Config.in index de0a8b97bf..52858a43e3 100644 --- a/package/recalbox-configgen/Config.in +++ b/package/recalbox-configgen/Config.in @@ -6,6 +6,8 @@ config BR2_PACKAGE_RECALBOX_CONFIGGEN select BR2_PACKAGE_PYTHON_PYGAME2 select BR2_PACKAGE_PYTHON_PYGAME2_IMAGE select BR2_PACKAGE_PYTHON_PYGAME2_FONT + select BR2_PACKAGE_PYTHON_EVDEV + select BR2_PACKAGE_PYTHON_JINJA2 help The configuration utility for recalbox diff --git a/package/recalbox-configgen/recalbox-configgen.mk b/package/recalbox-configgen/recalbox-configgen.mk index 1278bc952b..2bbbe301c0 100644 --- a/package/recalbox-configgen/recalbox-configgen.mk +++ b/package/recalbox-configgen/recalbox-configgen.mk @@ -9,7 +9,7 @@ RECALBOX_CONFIGGEN_SITE = $(TOPDIR)/../projects/configgen RECALBOX_CONFIGGEN_SITE_METHOD = local RECALBOX_CONFIGGEN_LICENSE = GPLv2 -RECALBOX_CONFIGGEN_DEPENDENCIES = python3 python-pyudev python-pygame2 +RECALBOX_CONFIGGEN_DEPENDENCIES = python3 python-pyudev python-pygame2 python-jinja2 python-markupsafe python-evdev RECALBOX_CONFIGGEN_SETUP_TYPE = setuptools diff --git a/package/recalbox-romfs2/systems/saturn/system.ini b/package/recalbox-romfs2/systems/saturn/system.ini index abbe06a976..2b1de2484c 100644 --- a/package/recalbox-romfs2/systems/saturn/system.ini +++ b/package/recalbox-romfs2/systems/saturn/system.ini @@ -86,5 +86,3 @@ netplay = 0 softpatching = 0 compatibility = high speed = high -video.backend.rpi5_64 = wayland -crt.available = 1 diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini index cf54f4e3bf..bfb40ed83b 100644 --- a/package/recalbox-romfs2/systems/stv/system.ini +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -51,4 +51,18 @@ netplay = 0 softpatching = 0 compatibility = good speed = good +crt.available = 0 +arcade.file = stv.lst + +[core.1] +package = BR2_PACKAGE_MEDNAFEN +priority = 2 +emulator = "mednafen" +core = "mednafen" +extensions = ".zip" +netplay = 1 +softpatching = 0 +compatibility = good +speed = good crt.available = 1 +arcade.file = stv.lst diff --git a/package/retroarch/retroarch.mk b/package/retroarch/retroarch.mk index 79230b7a05..7df26ada98 100644 --- a/package/retroarch/retroarch.mk +++ b/package/retroarch/retroarch.mk @@ -98,11 +98,6 @@ else RETROARCH_CONF_OPTS += --disable-x11 endif -ifeq ($(BR2_PACKAGE_RECALBOX_VIDEO_XWAYLAND),y) -RETROARCH_CONF_OPTS += --enable-x11 -RETROARCH_DEPENDENCIES += xwayland -endif - ifeq ($(BR2_PACKAGE_ALSA_LIB),y) RETROARCH_CONF_OPTS += --enable-alsa RETROARCH_DEPENDENCIES += alsa-lib diff --git a/package/switchres/001-continue-when-device-not-supported.patch b/package/switchres/001-continue-when-device-not-supported.patch index c6898a5624..0ceb0c7875 100644 --- a/package/switchres/001-continue-when-device-not-supported.patch +++ b/package/switchres/001-continue-when-device-not-supported.patch @@ -1,23 +1,22 @@ ---- a/custom_video_drmkms.cpp 2021-08-10 15:45:36.851885989 +0200 -+++ b/custom_video_drmkms.cpp 2021-08-10 15:45:20.519710399 +0200 -@@ -356,13 +356,18 @@ - drmFreeVersion(version); +--- a/custom_video_drmkms.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/custom_video_drmkms.cpp 2024-12-25 21:02:46.088875255 +0100 +@@ -592,8 +592,10 @@ + drmFreeVersion(version); - uint64_t check_dumb = 0; -- if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0) -+ if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0){ - log_error("DRM/KMS: <%d> (init) [ERROR] ioctl DRM_CAP_DUMB_BUFFER\n", m_id); -+ continue; -+ } + uint64_t check_dumb = 0; +- if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0) ++ if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0){ + log_error("DRM/KMS: <%d> (init) [ERROR] ioctl DRM_CAP_DUMB_BUFFER\n", m_id); ++ continue; ++ } -- if (!check_dumb) -+ if (!check_dumb){ - log_error("DRM/KMS: <%d> (init) [ERROR] dumb buffer not supported\n", m_id); -+ continue; -+ } + if (!check_dumb) + { +@@ -602,6 +604,7 @@ + } - p_res = drmModeGetResources(m_drm_fd); -+ log_verbose("DRM/KMS: <%d> (init) found connectors: %d\n", m_id, p_res->count_connectors); + p_res = drmModeGetResources(m_drm_fd); ++ log_verbose("DRM/KMS: <%d> (init) found connectors: %d\n", m_id, p_res->count_connectors); - for (int i = 0; i < p_res->count_connectors; i++) - { + for (int i = 0; i < p_res->count_connectors; i++) + { diff --git a/package/switchres/003-modeline-lcd.patch b/package/switchres/003-modeline-lcd.patch index 4669af4763..2ae541a0fb 100644 --- a/package/switchres/003-modeline-lcd.patch +++ b/package/switchres/003-modeline-lcd.patch @@ -1,23 +1,24 @@ ---- a/modeline.cpp 2021-08-10 23:28:13.246111830 +0200 -+++ b/modeline.cpp 2021-08-10 23:28:16.174143821 +0200 -@@ -149,8 +149,8 @@ - // if there's nothing we can do, we're out of range - else - { -- t_mode->result.weight |= R_OUT_OF_RANGE; -- return -1; -+ //t_mode->result.weight |= R_OUT_OF_RANGE; -+ //return -1; - } - - // ≈≈≈ Horizontal resolution ≈≈≈ ---- a/switchres.cpp 2021-08-11 00:10:00.113154730 +0200 -+++ b/switchres.cpp 2021-08-11 00:09:57.705129262 +0200 +--- a/modeline.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/modeline.cpp 2024-12-30 21:02:58.624760861 +0100 +@@ -153,8 +153,8 @@ + // if there's nothing we can do, we're out of range + else + { +- t_mode->result.weight |= R_OUT_OF_RANGE; +- return -1; ++ //t_mode->result.weight |= R_OUT_OF_RANGE; ++ //return -1; + } + + // ≈≈≈ Horizontal resolution ≈≈≈ +--- a/switchres.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/switchres.cpp 2024-12-30 21:04:04.086071211 +0100 @@ -92,7 +92,7 @@ - // Set display manager default options - set_screen("auto"); - set_modeline_generation(true); -- set_lock_unsupported_modes(true); -+ set_lock_unsupported_modes(false); - set_lock_system_modes(true); - set_refresh_dont_care(false); + for (int i = 0; i < MAX_RANGES; i++) display()->set_crt_range(i, "auto"); + display()->set_screen("auto"); + display()->set_modeline_generation(true); +- display()->set_lock_unsupported_modes(true); ++ display()->set_lock_unsupported_modes(false); + display()->set_lock_system_modes(true); + display()->set_refresh_dont_care(false); + diff --git a/package/switchres/switchres.mk b/package/switchres/switchres.mk index e6da5a8629..5f279d2ddd 100644 --- a/package/switchres/switchres.mk +++ b/package/switchres/switchres.mk @@ -4,29 +4,42 @@ # ################################################################################ -SWITCHRES_VERSION = a8af8e8f7f54d24414b4a8595a84c0f0f23e14a1 -SWITCHRES_SITE = $(call github,antonioginer,switchres,$(SWITCHRES_VERSION)) +SWITCHRES_VERSION = 2.2.1 +SWITCHRES_SITE = $(call github,antonioginer,switchres,v$(SWITCHRES_VERSION)) SWITCHRES_LICENSE = GPL2 SWITCHRES_DEPENDENCIES = libdrm host-dos2unix +SWITCHRES_INSTALL_STAGING = YES -# Hack to patch the CRLF files -define SWITCHRES_CRLF_PATH - $(SED) 's/\r//' "$(@D)/modeline.cpp" "$(@D)/switchres.cpp" +define SWITCHRES_BUILD_CMDS + # Cross-compile standalone and libswitchres + cd $(@D) && \ + PATH="$(HOST_DIR)/bin:$$PATH" \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + PREFIX="$(STAGING_DIR)/usr" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ + CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/libdrm" \ + $(MAKE) all grid endef -SWITCHRES_PRE_PATCH_HOOKS += SWITCHRES_CRLF_PATH - -define SWITCHRES_BUILD_CMDS - CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ - CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ - LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ - $(MAKE) PREFIX="$(STAGING_DIR)/usr" \ - PKG_CONFIG="$(HOST_DIR)/bin/pkg-config" \ - CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C $(@D)/ -f makefile +define SWITCHRES_INSTALL_STAGING_CMDS + cd $(@D) && \ + PATH="$(HOST_DIR)/bin:$$PATH" \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + BASE_DIR="" \ + PREFIX="$(STAGING_DIR)/usr" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ + $(MAKE) install endef define SWITCHRES_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0544 $(@D)/switchres $(TARGET_DIR)/usr/bin/switchres + $(INSTALL) -D -m 0644 $(@D)/libswitchres.so.$(SWITCHRES_VERSION) \ + $(TARGET_DIR)/usr/lib/libswitchres.so.$(SWITCHRES_VERSION) + ln -sf $(TARGET_DIR)/usr/lib/libswitchres.so.$(SWITCHRES_VERSION) \ + $(TARGET_DIR)/usr/lib/libswitchres.so.2 + ln -sf $(TARGET_DIR)/usr/lib/libswitchres.so.2 \ + $(TARGET_DIR)/usr/lib/libswitchres.so endef $(eval $(generic-package)) diff --git a/projects/configgen/configgen/emulatorlauncher.py b/projects/configgen/configgen/emulatorlauncher.py index 5d234092d5..f23de57062 100644 --- a/projects/configgen/configgen/emulatorlauncher.py +++ b/projects/configgen/configgen/emulatorlauncher.py @@ -149,6 +149,10 @@ def getGenerator(emulator): module = __import__("configgen.generators.xemu.xemuGenerator", fromlist=["XemuGenerator"]) generatorClass = getattr(module, "XemuGenerator") return generatorClass() + elif emulator == "mednafen": + module = __import__("configgen.generators.mednafen.MednafenGenerator", fromlist=["MednafenGenerator"]) + generatorClass = getattr(module, "MednafenGenerator") + return generatorClass() else: print("Missing generator for {}".format(emulator)) raise ValueError diff --git a/projects/configgen/configgen/generators/mednafen/__init__.py b/projects/configgen/configgen/generators/mednafen/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 b/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 new file mode 100644 index 0000000000..3d4dd90f9b --- /dev/null +++ b/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 @@ -0,0 +1,112 @@ +;DO NOT EDIT THIS FILE WHILE AN INSTANCE OF MEDNAFEN THAT USES IT IS RUNNING. + +;Enable fullscreen mode. +video.fs 1 + +;Video resolution switch (0, native, super, switchres or mister). +video.resolution_switch 0 + +;Select sound output device. +sound.device sexyal-literal-default + +;Select sound driver. +sound.driver alsa + +;Path to directory for firmware +filesys.path_firmware /recalbox/share/bios/stv + +;Path to directory for save states +filesys.path_state /recalbox/share/saves/stv + +{% for i in controllers -%} +{% if loop.first -%} +;Exit +{% if i.isjamma -%} +command.exit joystick {{ i.id }} button_8 +{% else -%} +command.exit joystick {{ i.id }} {{ i.pad['hotkey'] }} && joystick {{ i.id }} {{ i.pad['start'] }} +{%- endif %} + +;Fast-forward +command.fast_forward joystick {{ i.id }} {{ i.pad['start'] }} && joystick {{ i.id }} {{ i.pad['right'] }} + +;Insert coin +{% if i.isjamma -%} +command.insert_coin joystick {{ i.id }} button_6 +{% else -%} +command.insert_coin joystick {{ i.id }} {{ i.pad['select'] }} +{%- endif %} +{% if i.isjamma -%} + +;ss, Builtin, builtin: ST-V Service +ss.input.builtin.builtin.stv_service joystick {{ i.id }} button_10 + +;ss, Builtin, builtin: ST-V Test +ss.input.builtin.builtin.stv_test joystick {{ i.id }} button_9 + +{%- endif %} +;Load state +command.load_state keyboard 0x0 64 + +;Reset +command.reset keyboard 0x0 67 + +;Save state +command.save_state keyboard 0x0 62 + +;Rewind +command.state_rewind keyboard 0x0 42 + +;Decrease selected save state slot by 1 +command.state_slot_dec keyboard 0x0 45 + +;Increase selected save state slot by 1 +command.state_slot_inc keyboard 0x0 46 +{%- endif %} + +;Input device for Virtual Port {{ loop.index }} +ss.input.port{{ loop.index }} {{ i.type }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: A +ss.input.port{{ loop.index }}.{{ i.type }}.a joystick {{ i.id }} {{ i.pad['b'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: B +ss.input.port{{ loop.index }}.{{ i.type }}.b joystick {{ i.id }} {{ i.pad['a'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: C +ss.input.port{{ loop.index }}.{{ i.type }}.c joystick {{ i.id }} {{ i.pad['r1'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: DOWN ↓ +ss.input.port{{ loop.index }}.{{ i.type }}.down joystick {{ i.id }} {{ i.pad['down'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: LEFT ← +ss.input.port{{ loop.index }}.{{ i.type }}.left joystick {{ i.id }} {{ i.pad['left'] }} + +{% if 'l2' in i.pad -%} +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Left Shoulder +ss.input.port{{ loop.index }}.{{ i.type }}.ls joystick {{ i.id }} {{ i.pad['l2'] }} +{%- endif %} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: RIGHT → +ss.input.port{{ loop.index }}.{{ i.type }}.right joystick {{ i.id }} {{ i.pad['right'] }} + +{% if 'r2' in i.pad -%} +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Right Shoulder +ss.input.port{{ loop.index }}.{{ i.type }}.rs joystick {{ i.id }} {{ i.pad['r2'] }} +{%- endif %} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: START +ss.input.port{{ loop.index }}.{{ i.type }}.start joystick {{ i.id }} {{ i.pad['start'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: UP ↑ +ss.input.port{{ loop.index }}.{{ i.type }}.up joystick {{ i.id }} {{ i.pad['up'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: X +ss.input.port{{ loop.index }}.{{ i.type }}.x joystick {{ i.id }} {{ i.pad['y'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Y +ss.input.port{{ loop.index }}.{{ i.type }}.y joystick {{ i.id }} {{ i.pad['x'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Z +ss.input.port{{ loop.index }}.{{ i.type }}.z joystick {{ i.id }} {{ i.pad['l1'] }} +{%- endfor %} diff --git a/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py new file mode 100644 index 0000000000..0070a677ed --- /dev/null +++ b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py @@ -0,0 +1,111 @@ +import os +import shutil +import evdev + +from typing import List + +from configgen.Command import Command +import configgen.recalboxFiles as recalboxFiles +from configgen.Emulator import Emulator +from configgen.generators.Generator import Generator +from configgen.settings.keyValueSettings import keyValueSettings +from configgen.controllers.controller import Controller, InputItem, ControllerPerPlayer + +class MednafenGenerator(Generator): + + @staticmethod + def getInfo(controller: Controller): + abs_count = 0 + info = dict() + info['pad'] = dict() + if controller.DeviceName.startswith("JammaController"): + info['isjamma'] = True + else: + info['isjamma'] = False + device = evdev.InputDevice(controller.DevicePath) + capabilities = device.capabilities(verbose=False, absinfo=False) + list_cap = capabilities.items() + for i in list_cap: + if i[0] == 3: + for x in i[1]: + if device.absinfo(x).max == 1: + if x in [0, 16]: + abs_z = "abs_%i" % abs_count + if x in [1, 17]: + abs_x = "abs_%i" % abs_count + abs_count = abs_count + 1 + uniqID = "0x{:04x}{:04x}{:04x}{:04x}{:04x}{:04x}0000000{:01d}" + info['id'] = uniqID.format(device.info.bustype, + device.info.vendor, + device.info.product, + device.info.version, + controller.AxisCount + 2 * controller.HatCount, + 11 if info['isjamma'] else controller.ButtonCount, + controller.SdlIndex) + info['type'] = 'gamepad' + info['pad']['up'] = "%s-" % (abs_x) + info['pad']['down'] = "%s+" % (abs_x) + info['pad']['left'] = "%s-" % (abs_z) + info['pad']['right'] = "%s+" % (abs_z) + info['pad']['start'] = "button_%s" % controller.Start.Id + info['pad']['select'] = "button_%s" % controller.Select.Id + info['pad']['hotkey'] = "button_%s" % controller.Hotkey.Id + if info['isjamma']: + info['pad']['x'] = "button_%s" % controller.A.Id + info['pad']['y'] = "button_%s" % controller.B.Id + info['pad']['a'] = "button_%s" % controller.X.Id + info['pad']['b'] = "button_%s" % controller.Y.Id + info['pad']['r1'] = "button_%s" % controller.L1.Id + info['pad']['l1'] = "button_%s" % controller.R1.Id + else: + info['pad']['a'] = "button_%s" % controller.A.Id + info['pad']['b'] = "button_%s" % controller.B.Id + info['pad']['x'] = "button_%s" % controller.X.Id + info['pad']['y'] = "button_%s" % controller.Y.Id + info['pad']['l1'] = "button_%s" % controller.L1.Id + info['pad']['r1'] = "button_%s" % controller.R1.Id + return info + + 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 + """ + + if not os.path.exists(recalboxFiles.mednafenConfig): + os.makedirs(recalboxFiles.mednafenConfig) + + controllers = list() + for index in playersControllers: + controller = playersControllers[index] + controllers.append(self.getInfo(controller)) + + if system.CRTAdapter: + resolution_switch = "switchres" + else: + resolution_switch = 0 + + import jinja2 + templateLoader = jinja2.FileSystemLoader(searchpath="/") + templateEnv = jinja2.Environment(loader=templateLoader) + TEMPLATE_FILE = "/usr/lib/python3.11/site-packages/configgen/generators/mednafen/mednafen.cfg.j2" + template = templateEnv.get_template(TEMPLATE_FILE) + templateVars = {"controllers": controllers, + "resolution_switch": resolution_switch, + } + outputText = template.render(templateVars) + + with open(recalboxFiles.mednafenConfigFile, 'w+') as f: + f.write(outputText) + f.close() + + 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 d15e979094..7f0c6743f0 100644 --- a/projects/configgen/configgen/recalboxFiles.py +++ b/projects/configgen/configgen/recalboxFiles.py @@ -57,6 +57,7 @@ recalboxBins =\ 'xemu' : '/usr/bin/xemu', 'xroar' : '/usr/bin/xroar', 'vvvvvv' : '/usr/bin/vvvvvv/VVVVVV', + 'mednafen' : '/usr/bin/mednafen', } @@ -187,3 +188,6 @@ sdlpopConfigFile = CONF + '/sdlpop/sdlpop.ini' sdlpopControllersFile = CONF + '/sdlpop/gamecontrollerdb.txt' xemuConfig = CONF + '/xemu/xemu.toml' + +mednafenConfig = HOME + '/.mednafen' +mednafenConfigFile = mednafenConfig + '/mednafen.cfg' -- GitLab From 4b78dafeb868cdc4fd85bd5a43cdadc3a251dc21 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Fri, 10 Jan 2025 18:44:27 +0100 Subject: [PATCH 03/12] fix: configgen --- package/switchres/switchres.mk | 9 +++------ projects/configgen/configgen/emulatorlauncher.py | 2 +- projects/configgen/setup.py | 1 + 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/package/switchres/switchres.mk b/package/switchres/switchres.mk index 5f279d2ddd..dcde3dff8c 100644 --- a/package/switchres/switchres.mk +++ b/package/switchres/switchres.mk @@ -34,12 +34,9 @@ define SWITCHRES_INSTALL_STAGING_CMDS endef define SWITCHRES_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0644 $(@D)/libswitchres.so.$(SWITCHRES_VERSION) \ - $(TARGET_DIR)/usr/lib/libswitchres.so.$(SWITCHRES_VERSION) - ln -sf $(TARGET_DIR)/usr/lib/libswitchres.so.$(SWITCHRES_VERSION) \ - $(TARGET_DIR)/usr/lib/libswitchres.so.2 - ln -sf $(TARGET_DIR)/usr/lib/libswitchres.so.2 \ - $(TARGET_DIR)/usr/lib/libswitchres.so + cp $(@D)/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/ + ln -sf /usr/lib/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/libswitchres.so.2 + ln -sf /usr/lib/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/libswitchres.so endef $(eval $(generic-package)) diff --git a/projects/configgen/configgen/emulatorlauncher.py b/projects/configgen/configgen/emulatorlauncher.py index f23de57062..2bc0f8e897 100644 --- a/projects/configgen/configgen/emulatorlauncher.py +++ b/projects/configgen/configgen/emulatorlauncher.py @@ -150,7 +150,7 @@ def getGenerator(emulator): generatorClass = getattr(module, "XemuGenerator") return generatorClass() elif emulator == "mednafen": - module = __import__("configgen.generators.mednafen.MednafenGenerator", fromlist=["MednafenGenerator"]) + module = __import__("configgen.generators.mednafen.mednafenGenerator", fromlist=["MednafenGenerator"]) generatorClass = getattr(module, "MednafenGenerator") return generatorClass() else: diff --git a/projects/configgen/setup.py b/projects/configgen/setup.py index fa9ed6011d..7536437a97 100644 --- a/projects/configgen/setup.py +++ b/projects/configgen/setup.py @@ -46,6 +46,7 @@ setup(name='recalbox-configgen', 'configgen.generators.sdlpop', 'configgen.generators.vvvvvv', 'configgen.generators.xemu', + 'configgen.generators.mednafen', 'configgen.settings', 'configgen.utils'], scripts=['emulatorlauncher.py'] -- GitLab From 58df6eafd75b7982d1e11312a1e6b1c74bf93e69 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 12 Jan 2025 21:26:54 +0100 Subject: [PATCH 04/12] fix: include j2 template --- projects/configgen/setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/configgen/setup.py b/projects/configgen/setup.py index 7536437a97..6da44d9718 100644 --- a/projects/configgen/setup.py +++ b/projects/configgen/setup.py @@ -49,5 +49,7 @@ setup(name='recalbox-configgen', 'configgen.generators.mednafen', 'configgen.settings', 'configgen.utils'], - scripts=['emulatorlauncher.py'] + scripts=['emulatorlauncher.py'], + package_data={'': ['*.j2']}, + include_package_data=True ) -- GitLab From 07ca602ae78f5401db22f6abd7b82087be78de71 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 25 Jan 2025 20:24:57 +0100 Subject: [PATCH 05/12] fix: add sdl2_ttf dependence --- package/switchres/switchres.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/switchres/switchres.mk b/package/switchres/switchres.mk index dcde3dff8c..2f632fe597 100644 --- a/package/switchres/switchres.mk +++ b/package/switchres/switchres.mk @@ -7,7 +7,7 @@ SWITCHRES_VERSION = 2.2.1 SWITCHRES_SITE = $(call github,antonioginer,switchres,v$(SWITCHRES_VERSION)) SWITCHRES_LICENSE = GPL2 -SWITCHRES_DEPENDENCIES = libdrm host-dos2unix +SWITCHRES_DEPENDENCIES = libdrm host-dos2unix sdl2_ttf SWITCHRES_INSTALL_STAGING = YES define SWITCHRES_BUILD_CMDS -- GitLab From 3992d28d4b17d7d400e4e7230f532c4920df3cca Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 22 Feb 2025 19:12:08 +0100 Subject: [PATCH 06/12] fix: add stv for x86 --- configs/recalbox-x86_64_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 78e30eaab4..1e3d813a31 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -407,3 +407,4 @@ BR2_PACKAGE_WII_U_GC_ADAPTER=y BR2_PACKAGE_VVVVVV=y BR2_PACKAGE_LIBRETRO_TAMALIBRETRO=y BR2_PACKAGE_LIBRETRO_HATARIB=y +BR2_PACKAGE_MEDNAFEN=y -- GitLab From b62f5b3707123415b247337f7db533f266052881 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 22 Feb 2025 19:19:57 +0100 Subject: [PATCH 07/12] fix: add mame for stv --- package/recalbox-romfs2/systems/stv/system.ini | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini index bfb40ed83b..097d406e3f 100644 --- a/package/recalbox-romfs2/systems/stv/system.ini +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -55,8 +55,21 @@ crt.available = 0 arcade.file = stv.lst [core.1] -package = BR2_PACKAGE_MEDNAFEN +package = BR2_PACKAGE_LIBRETRO_MAME priority = 2 +emulator = "libretro" +core = "mame" +extensions = ".zip" +softpatching = 0 +netplay = 1 +compatibility = high +speed = high +crt.available = 1 +arcade.file = stv.lst + +[core.2] +package = BR2_PACKAGE_MEDNAFEN +priority = 3 emulator = "mednafen" core = "mednafen" extensions = ".zip" @@ -66,3 +79,4 @@ compatibility = good speed = good crt.available = 1 arcade.file = stv.lst + -- GitLab From 407bd1b27269ef013c7bbc703d87ab454c0f7d78 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 22 Feb 2025 23:03:00 +0100 Subject: [PATCH 08/12] fix: switchres pc --- configs/recalbox-x86_64_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 1e3d813a31..841ff24c1b 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -408,3 +408,4 @@ BR2_PACKAGE_VVVVVV=y BR2_PACKAGE_LIBRETRO_TAMALIBRETRO=y BR2_PACKAGE_LIBRETRO_HATARIB=y BR2_PACKAGE_MEDNAFEN=y +BR2_PACKAGE_SWITCHRES=y -- GitLab From 7ce5503761c169e18e94d3c8e3b86e15ba5b522b Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 23 Feb 2025 14:15:15 +0100 Subject: [PATCH 09/12] fix: bios stv folder --- board/recalbox/fsoverlay/etc/init.d/S12populateshare | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/recalbox/fsoverlay/etc/init.d/S12populateshare b/board/recalbox/fsoverlay/etc/init.d/S12populateshare index 3a1b51b371..4d7ce02fe0 100755 --- a/board/recalbox/fsoverlay/etc/init.d/S12populateshare +++ b/board/recalbox/fsoverlay/etc/init.d/S12populateshare @@ -85,7 +85,7 @@ for FILE in music bios extractions kodi saves saves/amiga screenshots userscript system/configs/{advancemame,daphne,dolphin-emu,dosbox,fba,kodi,moonlight,mupen64,openbor,ppsspp,reicast,retroarch,sdlpop,shadersets,xarcade2jstick,scummvm} \ system/configs/mupen64/{GLideN64.custom.ini,GLideN64.ini,Glide64mk2.ini,InputAutoCfg.ini,RiceVideoLinux.ini,font.ttf,gles2n64.conf,gles2n64rom.conf} \ system/recalbox.conf \ - bios/{amiga,Databases,dc,fba,fbneo,keropi,Machines,mame,mame2000,mame2003,mame2003-plus,mame2010,mame2015,mame2016,np2kai,oricutron,prboom,quasi88,xmil,scummvm} + bios/{amiga,Databases,dc,fba,fbneo,keropi,Machines,mame,mame2000,mame2003,mame2003-plus,mame2010,mame2015,mame2016,np2kai,oricutron,prboom,quasi88,xmil,scummvm,stv} do # not wanted for kodi test -e "$IN""/""$FILE" && test ! -e "$OUT""/""$FILE" && cp -r "$IN""/""$FILE" "$OUT""/""$FILE" -- GitLab From 3977e5db7f8d47721ae707386a177e1142d8d192 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 8 Mar 2025 11:28:34 +0100 Subject: [PATCH 10/12] fix: add mame 0.274 for stv --- package/recalbox-romfs2/systems/stv/system.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini index 097d406e3f..5a48ff8f5f 100644 --- a/package/recalbox-romfs2/systems/stv/system.ini +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -55,7 +55,7 @@ crt.available = 0 arcade.file = stv.lst [core.1] -package = BR2_PACKAGE_LIBRETRO_MAME +package = BR2_PACKAGE_LIBRETRO_MAME0274 priority = 2 emulator = "libretro" core = "mame" -- GitLab From 1d337450ae6e4f7fd21356a31cd750627eb091af Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 9 Mar 2025 11:56:14 +0100 Subject: [PATCH 11/12] fix: force clean mednafen config --- .../configgen/generators/mednafen/mednafenGenerator.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py index 0070a677ed..f752f27d8d 100644 --- a/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py +++ b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py @@ -75,6 +75,9 @@ class MednafenGenerator(Generator): if not os.path.exists(recalboxFiles.mednafenConfig): os.makedirs(recalboxFiles.mednafenConfig) + if os.path.exists(recalboxFiles.mednafenConfigFile): + os.remove(recalboxFiles.mednafenConfigFile) + controllers = list() for index in playersControllers: controller = playersControllers[index] -- GitLab From beea721e265c9b4b6a4f131ff5885177d6678961 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sun, 9 Mar 2025 21:40:48 +0100 Subject: [PATCH 12/12] fix: stv with mame 0.274 --- package/recalbox-romfs2/systems/stv/system.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini index 5a48ff8f5f..f37c6d253d 100644 --- a/package/recalbox-romfs2/systems/stv/system.ini +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -58,7 +58,7 @@ arcade.file = stv.lst package = BR2_PACKAGE_LIBRETRO_MAME0274 priority = 2 emulator = "libretro" -core = "mame" +core = "mame0274" extensions = ".zip" softpatching = 0 netplay = 1 -- GitLab