From 9f2af4666a684596fb256eb4b86aabffbcce4dbb Mon Sep 17 00:00:00 2001 From: Shaun Inman Date: Sun, 26 Feb 2023 16:53:20 -0500 Subject: [PATCH] added PC Engine/TurboGrafx-16 support (PCE) --- cores/makefile | 5 +++- cores/patches/beetle-pce-fast.patch | 24 +++++++++++++++++++ makefile | 3 ++- skeleton/EXTRAS/Bios/PCE/.keep | 0 skeleton/EXTRAS/Emus/rg35xx/PCE.pak/launch.sh | 14 +++++++++++ skeleton/EXTRAS/README.txt | 3 ++- .../EXTRAS/Roms/TurboGrafx-16 (PCE)/.keep | 0 skeleton/EXTRAS/Saves/PCE/.keep | 0 src/minarch/main.c | 2 ++ src/minarch/overrides/mednafen_pce_fast.h | 22 +++++++++++++++++ 10 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 cores/patches/beetle-pce-fast.patch create mode 100644 skeleton/EXTRAS/Bios/PCE/.keep create mode 100755 skeleton/EXTRAS/Emus/rg35xx/PCE.pak/launch.sh create mode 100644 skeleton/EXTRAS/Roms/TurboGrafx-16 (PCE)/.keep create mode 100644 skeleton/EXTRAS/Saves/PCE/.keep create mode 100644 src/minarch/overrides/mednafen_pce_fast.h diff --git a/cores/makefile b/cores/makefile index 9d2d075..4d394ba 100644 --- a/cores/makefile +++ b/cores/makefile @@ -1,7 +1,7 @@ # this logic was broken out from picoarch's all-in-one makefile CORES = fceumm gambatte gpsp pcsx_rearmed picodrive snes9x2005_plus -CORES+= beetle-vb fake-08 mednafen_supafaust mgba pokemini # extras +CORES+= beetle-pce-fast beetle-vb fake-08 mednafen_supafaust mgba pokemini # extras ############################### @@ -13,6 +13,9 @@ CORES+= beetle-vb fake-08 mednafen_supafaust mgba pokemini # extras # *_MAKEFILE= # *_BUILD_PATH= +beetle-pce-fast_REPO = https://github.com/libretro/beetle-pce-fast-libretro +beetle-pce-fast_CORE = mednafen_pce_fast_libretro.so + beetle-vb_REPO = https://github.com/libretro/beetle-vb-libretro beetle-vb_CORE = mednafen_vb_libretro.so diff --git a/cores/patches/beetle-pce-fast.patch b/cores/patches/beetle-pce-fast.patch new file mode 100644 index 0000000..b3b9a40 --- /dev/null +++ b/cores/patches/beetle-pce-fast.patch @@ -0,0 +1,24 @@ +diff --git forkSrcPrefix/Makefile forkDstPrefix/Makefile +index d580571511b43d1ec4597db4a9611b0924bb2c53..d2a2f9929cee1f7fb45a1a002efd7b04812ded49 100644 +--- forkSrcPrefix/Makefile ++++ forkDstPrefix/Makefile +@@ -377,6 +377,19 @@ else ifeq ($(platform), miyoo) + CXXFLAGS += -std=c++11 + CFLAGS += -std=gnu11 + ++# RG35XX ++else ifeq ($(platform), rg35xx) ++ TARGET := $(TARGET_NAME)_libretro.so ++ CC = $(CROSS_COMPILE)gcc ++ CXX = $(CROSS_COMPILE)g++ ++ AR = $(CROSS_COMPILE)ar ++ fpic := -fPIC ++ SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T ++ FLAGS += -marm -mtune=cortex-a9 -mfpu=neon-fp16 -mfloat-abi=hard -march=armv7-a -fomit-frame-pointer -DRG35XX ++ FLAGS += -fomit-frame-pointer -ffast-math -D_GNU_SOURCE -flto -fPIC ++ CXXFLAGS += -std=c++11 ++ CFLAGS += -std=gnu11 ++ + # Windows MSVC 2017 all architectures + else ifneq (,$(findstring windows_msvc2017,$(platform))) + diff --git a/makefile b/makefile index 22978ec..723db4e 100644 --- a/makefile +++ b/makefile @@ -81,9 +81,10 @@ bundle: # extras cp ./cores/output/fake08_libretro.so ./build/EXTRAS/Emus/rg35xx/P8.pak cp ./cores/output/mgba_libretro.so ./build/EXTRAS/Emus/rg35xx/MGBA.pak - cp ./cores/output/mednafen_vb_libretro.so ./build/EXTRAS/Emus/rg35xx/VB.pak cp ./cores/output/mgba_libretro.so ./build/EXTRAS/Emus/rg35xx/SGB.pak + cp ./cores/output/mednafen_pce_fast_libretro.so ./build/EXTRAS/Emus/rg35xx/PCE.pak cp ./cores/output/mednafen_supafaust_libretro.so ./build/EXTRAS/Emus/rg35xx/SUPA.pak + cp ./cores/output/mednafen_vb_libretro.so ./build/EXTRAS/Emus/rg35xx/VB.pak cp ./cores/output/pokemini_libretro.so ./build/EXTRAS/Emus/rg35xx/PKM.pak cp ./other/DinguxCommander/output/DinguxCommander ./build/EXTRAS/Tools/rg35xx/Files.pak cp -R ./other/DinguxCommander/res ./build/EXTRAS/Tools/rg35xx/Files.pak/ diff --git a/skeleton/EXTRAS/Bios/PCE/.keep b/skeleton/EXTRAS/Bios/PCE/.keep new file mode 100644 index 0000000..e69de29 diff --git a/skeleton/EXTRAS/Emus/rg35xx/PCE.pak/launch.sh b/skeleton/EXTRAS/Emus/rg35xx/PCE.pak/launch.sh new file mode 100755 index 0000000..b535d74 --- /dev/null +++ b/skeleton/EXTRAS/Emus/rg35xx/PCE.pak/launch.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +EMU_EXE=mednafen_pce_fast +CORES_PATH=$(dirname "$0") + +############################### + +EMU_TAG=$(basename "$(dirname "$0")" .pak) +ROM="$1" +mkdir -p "$BIOS_PATH/$EMU_TAG" +mkdir -p "$SAVES_PATH/$EMU_TAG" +HOME="$USERDATA_PATH" +cd "$HOME" +minarch.elf "$CORES_PATH/${EMU_EXE}_libretro.so" "$ROM" DMG &> "$LOGS_PATH/$EMU_TAG.txt" diff --git a/skeleton/EXTRAS/README.txt b/skeleton/EXTRAS/README.txt index ac219ea..1a85e3c 100644 --- a/skeleton/EXTRAS/README.txt +++ b/skeleton/EXTRAS/README.txt @@ -29,5 +29,6 @@ Bios files You'll need to BYOB for the emulator paks included in this zip file. MGBA: gba_bios.bin - sgb.bios + PCE: syscard3.pce PKM: bios.min + SGB: sgb.bios diff --git a/skeleton/EXTRAS/Roms/TurboGrafx-16 (PCE)/.keep b/skeleton/EXTRAS/Roms/TurboGrafx-16 (PCE)/.keep new file mode 100644 index 0000000..e69de29 diff --git a/skeleton/EXTRAS/Saves/PCE/.keep b/skeleton/EXTRAS/Saves/PCE/.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/minarch/main.c b/src/minarch/main.c index 36cab3c..ac20111 100644 --- a/src/minarch/main.c +++ b/src/minarch/main.c @@ -28,6 +28,7 @@ #include "overrides/gambatte.h" #include "overrides/gpsp.h" #include "overrides/mgba.h" +#include "overrides/mednafen_pce_fast.h" #include "overrides/mednafen_vb.h" #include "overrides/mednafen_supafaust.h" #include "overrides/pcsx_rearmed.h" @@ -40,6 +41,7 @@ static CoreOverrides* overrides[] = { &fceumm_overrides, &gambatte_overrides, &gpsp_overrides, + &mednafen_pce_fast_overrides, &mednafen_supafaust_overrides, &mednafen_vb_overrides, &mgba_overrides, diff --git a/src/minarch/overrides/mednafen_pce_fast.h b/src/minarch/overrides/mednafen_pce_fast.h new file mode 100644 index 0000000..12eb24b --- /dev/null +++ b/src/minarch/overrides/mednafen_pce_fast.h @@ -0,0 +1,22 @@ +#include "overrides.h" + +static CoreOverrides mednafen_pce_fast_overrides = { + .core_name = "mednafen_pce_fast", + .button_mapping = (ButtonMapping[]){ + {"Up", RETRO_DEVICE_ID_JOYPAD_UP, BTN_ID_UP}, + {"Down", RETRO_DEVICE_ID_JOYPAD_DOWN, BTN_ID_DOWN}, + {"Left", RETRO_DEVICE_ID_JOYPAD_LEFT, BTN_ID_LEFT}, + {"Right", RETRO_DEVICE_ID_JOYPAD_RIGHT, BTN_ID_RIGHT}, + {"Select", RETRO_DEVICE_ID_JOYPAD_SELECT, BTN_ID_SELECT}, + {"Run", RETRO_DEVICE_ID_JOYPAD_START, BTN_ID_START}, + {"I", RETRO_DEVICE_ID_JOYPAD_A, BTN_ID_A}, + {"II", RETRO_DEVICE_ID_JOYPAD_B, BTN_ID_B}, + {"III", RETRO_DEVICE_ID_JOYPAD_Y, BTN_ID_Y}, + {"IV", RETRO_DEVICE_ID_JOYPAD_X, BTN_ID_X}, + {"V", RETRO_DEVICE_ID_JOYPAD_L, BTN_ID_L1}, + {"VI", RETRO_DEVICE_ID_JOYPAD_R, BTN_ID_R1}, + {"Mode", RETRO_DEVICE_ID_JOYPAD_L2, BTN_ID_L2}, + {NULL}, + }, +}; +