diff --git a/services/wolf.sh b/services/wolf.sh index 261860a..32ede95 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -1874,7 +1874,28 @@ fuse scummvm" # own repo (Data/Sys), so fetch it here too instead of requiring that # GUI step. Sparse+shallow checkout — the full repo is large, this # folder isn't. - SYS_DIR="$GAME_DIR/retroarch/system/dolphin-emu/Sys" + # + # Confirmed live: RetroArch's own docs say this goes under + # system_directory/dolphin-emu/Sys, and GoW's own shipped + # retroarch.cfg sets system_directory = "~/bioses" — NOT RetroArch's + # usual default of ~/.config/retroarch/system. An earlier version of + # this script assumed the default and wrote to the wrong place + # (retroarch/system/dolphin-emu/Sys on the host, which the real + # config never reads). Read the actual configured value instead of + # assuming, and self-heal by moving a Sys folder that's already + # sitting in that old wrong location. + _RA_SYS_CFG=$(grep -i '^system_directory' "$GAME_DIR/retroarch/retroarch.cfg" 2>/dev/null \ + | sed -E 's/^system_directory[[:space:]]*=[[:space:]]*"([^"]*)".*/\1/') + case "$_RA_SYS_CFG" in + "~/.config/retroarch/system") SYS_DIR="$GAME_DIR/retroarch/system/dolphin-emu/Sys" ;; + *) SYS_DIR="$GAME_DIR/bios/dolphin-emu/Sys" ;; + esac + OLD_SYS_DIR="$GAME_DIR/retroarch/system/dolphin-emu/Sys" + if [ "$OLD_SYS_DIR" != "$SYS_DIR" ] && [ -d "$OLD_SYS_DIR" ] && [ ! -d "$SYS_DIR" ]; then + mkdir -p "$(dirname "$SYS_DIR")" + mv "$OLD_SYS_DIR" "$SYS_DIR" + echo "Moved Dolphin's Sys folder to the location RetroArch's own config actually reads: $SYS_DIR" + fi if [ -f "$CORES_DIR/dolphin_libretro.so" ] && [ ! -d "$SYS_DIR" ]; then echo "Fetching Dolphin's Sys folder (needed for GameCube/Wii to boot)..." SYS_TMP=$(mktemp -d) @@ -3579,13 +3600,17 @@ exact same \`.zip\`-per-game naming as real ROMs, so if they're sitting in \`roms/mame/\` alongside your actual ROM set, ES-DE/RetroArch's MAME core lists them as if they were games too — there's no reliable filename-only way to tell them apart (a samples zip and a ROM zip for the same game can -share the identical name). They belong in RetroArch's system directory -instead, under a MAME-core-specific \`samples/\` subfolder (e.g. -\`retroarch/system/mame2003-plus/samples/\` for MAME2003-Plus — the exact -subfolder name depends on which MAME core variant you're using), never in -\`roms/mame/\` itself. A samples zip's contents are almost entirely \`.wav\` -files where a real ROM zip's aren't, which is the practical way to tell -them apart if you're not sure which of your files are which. +share the identical name). They belong in RetroArch's \`system_directory\` +instead, under a MAME-core-specific \`samples/\` subfolder — check +\`retroarch/retroarch.cfg\`'s own \`system_directory\` value before assuming +a path (confirmed live: on this repo's Wolf setup it's actually \`bios/\`, +not RetroArch's usual default of \`retroarch/system/\` — the same thing +that bit Dolphin's \`Sys\` folder earlier), so most likely +\`bios/mame2003-plus/samples/\` for MAME2003-Plus (the exact subfolder name +depends on which MAME core variant you're using), never in \`roms/mame/\` +itself. A samples zip's contents are almost entirely \`.wav\` files where a +real ROM zip's aren't, which is the practical way to tell them apart if +you're not sure which of your files are which. ## Troubleshooting: app exits immediately ("Permission denied") If a launcher (Steam, etc.) closes the moment it opens, its Wolf-managed home