diff --git a/documentation/PER_DEVICE_DOCUMENTATION/SM8250/SUPPORTED_EMULATORS_AND_CORES.md b/documentation/PER_DEVICE_DOCUMENTATION/SM8250/SUPPORTED_EMULATORS_AND_CORES.md
index 61adc7690f..23a2d00430 100644
--- a/documentation/PER_DEVICE_DOCUMENTATION/SM8250/SUPPORTED_EMULATORS_AND_CORES.md
+++ b/documentation/PER_DEVICE_DOCUMENTATION/SM8250/SUPPORTED_EMULATORS_AND_CORES.md
@@ -17,7 +17,7 @@
|Atari|Atari 5200 (atari5200)|1982|`atari5200`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** a5200 (default)
**retroarch:** atari800
|
|Atari|Atari 7800 (atari7800)|1986|`atari7800`|.a78 .bin .zip .7z|**retroarch:** prosystem (default)
|
|Atari|Atari 800 (atari800)|1979|`atari800`|.rom .xfd .atr .atx .cdm .cas .car .bin .a52 .xex .zip .7z|**retroarch:** atari800 (default)
|
-|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
**bigpemu:** bigpemu-sa (default)
|
+|Atari|Atari Jaguar (atarijaguar)|1993|`atarijaguar`|.j64 .jag .rom .abs .cof .bin .prg|**retroarch:** virtualjaguar (default)
|
|Atari|Atari Lynx (atarilynx)|1989|`atarilynx`|.lnx .lyx .o .zip .7z|**retroarch:** handy (default)
**retroarch:** beetle_lynx
**mednafen:** lynx
|
|Atari|Atari ST (atarist)|1985|`atarist`|.st .msa .stx .dim .ipf .m3u .zip .7z|**retroarch:** hatari (default)
**hatarisa:** hatarisa
|
|Bandai|SuFami Turbo (sufami)|1996|`sufami`|.st .zip .7z|**retroarch:** snes9x (default)
|
diff --git a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh
index 786e29b6ff..30bea45a59 100644
--- a/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh
+++ b/projects/ROCKNIX/packages/emulators/standalone/melonds-sa/scripts/start_melonds.sh
@@ -1,52 +1,37 @@
#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0
+# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2022-present JELOS (https://github.com/JustEnoughLinuxOS)
-# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
. /etc/profile
set_kill set "-9 melonDS"
-# Load gptokeyb support files
+#load gptokeyb support files
control-gen_init.sh
source /storage/.config/gptokeyb/control.ini
get_controls
CONF_DIR="/storage/.config/melonDS"
-MELONDS_INI="${CONF_DIR}/melonDS.ini"
+MELONDS_INI="melonDS.ini"
SWAY_CONFIG="/storage/.config/sway/config"
-# INI Setter
-set_ini() {
- key="$1"
- value="$2"
- file="$3"
-
- if grep -q "^${key}=" "$file" 2>/dev/null; then
- sed -i "s|^${key}=.*|${key}=${value}|" "$file"
- else
- echo "${key}=${value}" >> "$file"
- fi
-}
-
-# Create config directory if missing
if [ ! -d "${CONF_DIR}" ]; then
- cp -r "/usr/config/melonDS" "/storage/.config"
+ cp -r "/usr/config/melonDS" "/storage/.config/"
fi
-# Create savestate directory
-mkdir -p "/storage/roms/savestates/nds"
+if [ ! -d "/storage/roms/savestates/nds" ]; then
+ mkdir -p "/storage/roms/savestates/nds"
+fi
-# Ensure melonDS.gptk exists
+#Make sure melonDS gptk config exists
if [ ! -f "${CONF_DIR}/melonDS.gptk" ]; then
- cp "/usr/config/melonDS/melonDS.gptk" "${CONF_DIR}/melonDS.gptk"
+ cp -r "/usr/config/melonDS/melonDS.gptk" "${CONF_DIR}/melonDS.gptk"
fi
-# Emulation Station Features
-GAME=$(basename "${1}")
-PLATFORM=$(basename "${2}")
-
+#Emulation Station Features
+GAME=$(echo "${1}" | sed "s#^/.*/##")
+PLATFORM=$(echo "${2}"| sed "s#^/.*/##")
GRENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}")
IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}")
SORIENTATION=$(get_setting screen_orientation "${PLATFORM}" "${GAME}")
@@ -56,106 +41,110 @@ SROTATION=$(get_setting screen_rotation "${PLATFORM}" "${GAME}")
SHOWFPS=$(get_setting show_fps "${PLATFORM}" "${GAME}")
VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}")
-# CPU Cores
+#Set the cores to use
CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}")
unset EMUPERF
[ "${CORES}" = "little" ] && EMUPERF="${SLOW_CORES}"
[ "${CORES}" = "big" ] && EMUPERF="${FAST_CORES}"
-# Graphics Backend
-if [ "$GRENDERER" -gt "0" ]; then
- set_ini ScreenUseGL "$GRENDERER" "${MELONDS_INI}"
- set_ini 3DRenderer "1" "${MELONDS_INI}"
+#Graphics Backend
+if [ "$GRENDERER" > "0" ]; then
+ sed -i "/^ScreenUseGL=/c\ScreenUseGL=$GRENDERER" "${CONF_DIR}/${MELONDS_INI}"
+ sed -i "/^3DRenderer=/c\3DRenderer=1" "${CONF_DIR}/${MELONDS_INI}"
else
- set_ini ScreenUseGL "0" "${MELONDS_INI}"
- set_ini 3DRenderer "0" "${MELONDS_INI}"
+ sed -i '/^ScreenUseGL=/c\ScreenUseGL=0' "${CONF_DIR}/${MELONDS_INI}"
+ sed -i '/^3DRenderer=/c\3DRenderer=0' "${CONF_DIR}/${MELONDS_INI}"
fi
-# Internal Resolution
-if [ "$IRES" -gt "0" ]; then
- set_ini GL_ScaleFactor "$IRES" "${MELONDS_INI}"
+#Internal Resolution
+if [ "$IRES" > "0" ]; then
+ sed -i "/^GL_ScaleFactor=/c\GL_ScaleFactor=$IRES" "${CONF_DIR}/${MELONDS_INI}"
else
- set_ini GL_ScaleFactor "1" "${MELONDS_INI}"
+ sed -i '/^GL_ScaleFactor=/c\GL_ScaleFactor=1' "${CONF_DIR}/${MELONDS_INI}"
fi
-# Screen Orientation
-if [ "$SORIENTATION" -gt "0" ]; then
- set_ini ScreenLayout "$SORIENTATION" "${MELONDS_INI}"
+#Screen Orientation
+if [ "$SORIENTATION" > "0" ]; then
+ sed -i "/^ScreenLayout=/c\ScreenLayout=$SORIENTATION" "${CONF_DIR}/${MELONDS_INI}"
else
- set_ini ScreenLayout "2" "${MELONDS_INI}"
+ sed -i '/^ScreenLayout=/c\ScreenLayout=2' "${CONF_DIR}/${MELONDS_INI}"
fi
-# Screen Layout (defaults)
-set_ini Screen1Enabled "0" "${MELONDS_INI}"
+#Screen Layout
+# Screen Layout
+sed -i '/^Screen1Enabled=/c\Screen1Enabled=0' "${CONF_DIR}/${MELONDS_INI}"
enable_second_screen() {
- set_ini ScreenSizing "4" "${MELONDS_INI}"
- set_ini Screen1Enabled "1" "${MELONDS_INI}"
+ sed -i '/^ScreenSizing=/c\ScreenSizing=4' "${CONF_DIR}/${MELONDS_INI}"
+ sed -i '/^Screen1Enabled=/c\Screen1Enabled=1' "${CONF_DIR}/${MELONDS_INI}"
}
if [ "$SLAYOUT" = "6" ]; then
enable_second_screen
elif [ -n "$SLAYOUT" ] && [ "$SLAYOUT" != "0" ]; then
- set_ini ScreenSizing "$SLAYOUT" "${MELONDS_INI}"
+ sed -i "/^ScreenSizing=/c\ScreenSizing=$SLAYOUT" "${CONF_DIR}/${MELONDS_INI}"
elif [ "${DEVICE_HAS_DUAL_SCREEN}" = "true" ]; then
enable_second_screen
else
- set_ini ScreenSizing "0" "${MELONDS_INI}"
+ sed -i '/^ScreenSizing=/c\ScreenSizing=0' "${CONF_DIR}/${MELONDS_INI}"
fi
# Screen Swap
if [[ "${DEVICE_HAS_DUAL_SCREEN}" = "true" && ( -z "$SLAYOUT" || "$SLAYOUT" = "6" ) ]]; then
if [ "$SWAP" = "1" ]; then
- set_ini ScreenSizing "5" "${MELONDS_INI}"
- set_ini Screen1Sizing "4" "${MELONDS_INI}"
+ sed -i '/^ScreenSizing=/c\ScreenSizing=5' "${CONF_DIR}/${MELONDS_INI}"
+ sed -i '/^Screen1Sizing=/c\Screen1Sizing=4' "${CONF_DIR}/${MELONDS_INI}"
else
- set_ini ScreenSizing "4" "${MELONDS_INI}"
- set_ini Screen1Sizing "5" "${MELONDS_INI}"
+ sed -i '/^ScreenSizing=/c\ScreenSizing=4' "${CONF_DIR}/${MELONDS_INI}"
+ sed -i '/^Screen1Sizing=/c\Screen1Sizing=5' "${CONF_DIR}/${MELONDS_INI}"
fi
else
- set_ini ScreenSwap "${SWAP:-0}" "${MELONDS_INI}"
+ sed -i "/^ScreenSwap=/c\ScreenSwap=${SWAP:-0}" "${CONF_DIR}/${MELONDS_INI}"
fi
-# Screen Rotation
-if [ "$SROTATION" -gt "0" ]; then
- set_ini ScreenRotation "$SROTATION" "${MELONDS_INI}"
+#Screen Rotation
+if [ "$SROTATION" ] >"0"; then
+ sed -i "/^ScreenRotation=/c\ScreenRotation=$SROTATION" "${CONF_DIR}/${MELONDS_INI}"
else
- set_ini ScreenRotation "0" "${MELONDS_INI}"
+ sed -i '/^ScreenRotation=/c\ScreenRotation=0' "${CONF_DIR}/${MELONDS_INI}"
fi
-# Vsync
-set_ini ScreenVSync "${VSYNC:-1}" "${MELONDS_INI}"
+#Vsync
+if [ "$VSYNC" = "1" ]; then
+ sed -i '/^ScreenVSync=/c\ScreenVSync=1' "${CONF_DIR}/${MELONDS_INI}"
+else
+ sed -i '/^ScreenVSync=/c\ScreenVSync=1' "${CONF_DIR}/${MELONDS_INI}"
+fi
-# Show FPS
+#Show FPS
if [ "$SHOWFPS" = "1" ]; then
- export GALLIUM_HUD="simple,fps"
+ export GALLIUM_HUD="simple,fps"
fi
-# Extract archive
+# Extract archive to /tmp/melonds
TEMP="/tmp/melonds"
rm -rf "${TEMP}"
mkdir -p "${TEMP}"
-
if [[ "${1}" == *.zip ]]; then
unzip -o "${1}" -d "${TEMP}"
- ROM=$(find "${TEMP}" -maxdepth 1 -name "*.nds" | head -n 1)
+ ROM=$(find "${TEMP}" -maxdepth 1 -type f -name "*.nds" | head -n 1)
elif [[ "${1}" == *.7z ]]; then
7z x -y -o"${TEMP}" "${1}"
- ROM=$(find "${TEMP}" -maxdepth 1 -name "*.nds" | head -n 1)
+ ROM=$(find "${TEMP}" -maxdepth 1 -type f -name "*.nds" | head -n 1)
else
ROM="${1}"
fi
-# QT Wayland
+#Set QT Platform to Wayland
export QT_QPA_PLATFORM=xcb
@PANFROST@
@HOTKEY@
@LIBMALI@
-# Regenerate TOML
-rm -f "${CONF_DIR}/melonDS.toml"
+#Generate a new MelonDS.toml each run (temporary hack)
+rm -rf "${CONF_DIR}/melonDS.toml"
-# Launch emulator
+#Run MelonDS emulator
$GPTOKEYB "melonDS" -c "${CONF_DIR}/melonDS.gptk" &
${EMUPERF} /usr/bin/melonDS -f "${ROM}"
kill -9 "$(pidof gptokeyb)"