wolf: auto-download shaders/overlays/cheats/database/autoconfig alongside cores
Extends `./manage.sh cores all` (and install_wolf()'s own cores prompt,
which calls it) to also pull the rest of what RetroArch's own Online
Updater offers — Slang shaders, overlays/bezels, cheat files, the RDB
game database, and controller autoconfig profiles — directly from the
same libretro buildbot the cores themselves come from
(buildbot.libretro.com/assets/frontend/). Confirmed live against the
real directory listing and each zip's actual internal structure (flat,
no wrapping folder) before writing the extraction paths, rather than
guessing: ~290 MB total, landing in retroarch/{shaders,overlays,cheats,
database,autoconfig}/ using RetroArch's own default paths for the three
config keys (cheat_database_path, content_database_path,
joypad_autoconfig_dir) this install leaves unset.
Thumbnails are deliberately excluded — they're hosted separately, are
per-system, and can run into many GB, so blindly grabbing "all systems"
would be a bad default; documented as a manual per-system pull via
RetroArch's own Thumbnails Updater instead.
Idempotent like the existing cores loop: skips a pack whose destination
directory already has content, unless `force` is passed.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLX1yYKJExGSXmgUhxKQG6
This commit is contained in:
+67
-18
@@ -1626,9 +1626,13 @@ PYEOF
|
||||
# RetroArch containers at ~/.config/retroarch/cores.
|
||||
#
|
||||
# Usage: ./manage.sh cores [all|common] [force]
|
||||
# all - every core on the libretro buildbot (~1.5 GB) [default]
|
||||
# common - the ~30 cores GoW wires up + popular ES-DE defaults
|
||||
# force - re-download cores already present (otherwise they're skipped)
|
||||
# all - every core on the libretro buildbot (~1.5 GB) [default],
|
||||
# plus shaders/overlays/cheats/database/autoconfig/Dolphin's
|
||||
# Sys folder (~290 MB more) — everything RetroArch's own
|
||||
# Online Updater offers except thumbnails (separate, per-
|
||||
# system, can run many GB — use the Thumbnails Updater)
|
||||
# common - the ~30 cores GoW wires up + popular ES-DE defaults, no extras
|
||||
# force - re-download cores/extras already present (otherwise skipped)
|
||||
GAME_DIR=$(grep '^GAME_STORAGE_DIR=' "$SCRIPT_DIR/.env" 2>/dev/null | cut -d= -f2-)
|
||||
if [ -z "$GAME_DIR" ]; then read -r -p " Game storage path: " GAME_DIR; fi
|
||||
if [ -z "$GAME_DIR" ]; then echo "No game storage path."; exit 1; fi
|
||||
@@ -1717,6 +1721,46 @@ fuse scummvm"
|
||||
fi
|
||||
rm -rf "$SYS_TMP"
|
||||
fi
|
||||
|
||||
# 'all' also grabs the rest of what RetroArch's own Online Updater
|
||||
# offers — shaders, overlays, cheats, the RDB game database, and
|
||||
# controller autoconfig profiles — straight from the same buildbot
|
||||
# server the cores above came from (buildbot.libretro.com/assets/
|
||||
# frontend/), so a fresh install needs zero manual trips through that
|
||||
# menu. Small (~290 MB total, confirmed against the real directory
|
||||
# listing) next to the ~1.5 GB core set, and open/redistributable
|
||||
# libretro-project content — nothing license-gated. Thumbnails
|
||||
# (box art) are deliberately NOT included here: they're hosted
|
||||
# separately, are per-system, and can run into many GB — pull those
|
||||
# per-system from RetroArch's own Thumbnails Updater instead of
|
||||
# blindly grabbing everything.
|
||||
if [ "$SCOPE" = "all" ]; then
|
||||
ASSETS_BASE="https://buildbot.libretro.com/assets/frontend"
|
||||
RA_CFG_DIR="$GAME_DIR/retroarch"
|
||||
# pack name → destination dir, using RetroArch's own default
|
||||
# paths (relative to the config dir) for cheats/database/
|
||||
# autoconfig, since this box's retroarch.cfg leaves those three
|
||||
# unset and just inherits the defaults.
|
||||
for pair in "overlays:$RA_CFG_DIR/overlays" \
|
||||
"shaders_slang:$RA_CFG_DIR/shaders" \
|
||||
"cheats:$RA_CFG_DIR/cheats" \
|
||||
"database-rdb:$RA_CFG_DIR/database/rdb" \
|
||||
"autoconfig:$RA_CFG_DIR/autoconfig" \
|
||||
"info:$CORES_DIR"; do
|
||||
pack="${pair%%:*}"; dest="${pair#*:}"
|
||||
[ -d "$dest" ] && [ "$(ls -A "$dest" 2>/dev/null)" ] && [ "$FORCE" != "force" ] && continue
|
||||
echo "Fetching $pack.zip..."
|
||||
tmp=$(mktemp)
|
||||
if curl -fsSL -o "$tmp" "$ASSETS_BASE/$pack.zip"; then
|
||||
mkdir -p "$dest"
|
||||
_unzip_to "$tmp" "$dest" 2>/dev/null || echo " Failed to extract $pack.zip"
|
||||
else
|
||||
echo " Failed to fetch $pack.zip"
|
||||
fi
|
||||
rm -f "$tmp"
|
||||
done
|
||||
echo "Shaders, overlays, cheats, database, and controller autoconfig profiles ready."
|
||||
fi
|
||||
;;
|
||||
reorder)
|
||||
# Interactively reorder the Moonlight tiles by reordering the
|
||||
@@ -3035,8 +3079,8 @@ PYEOF
|
||||
echo " • Drop ROMs in roms/<system>/ (e.g. roms/snes/, roms/genesis/)"
|
||||
echo " • Drop BIOS files in bios/ (PSX/Saturn/Dreamcast/Neo-Geo need them)"
|
||||
echo " • RetroArch cores are pre-downloaded — retro games launch immediately"
|
||||
echo " • Shaders & overlays persist on the game drive — set up a CRT shader or"
|
||||
echo " bezels once and they survive new sessions and reinstalls"
|
||||
echo " • Shaders, overlays, cheats, and the game database are pre-downloaded too —"
|
||||
echo " all persist on the game drive and survive new sessions and reinstalls"
|
||||
echo " • Controllers auto-configure: ES-DE & RetroArch map Wolf's virtual pad"
|
||||
echo " via SDL, no manual input setup needed"
|
||||
echo " • Exit a game → ES-DE: Start+Select opens RetroArch menu → Quit,"
|
||||
@@ -3212,15 +3256,20 @@ ES-DE is usable the moment you launch it; only ROMs and BIOS are yours to add.
|
||||
PSX, Saturn, Dreamcast, Neo-Geo, PC Engine CD, etc.
|
||||
- **RetroArch cores**: pre-downloaded into \`retroarch/cores/\` and mounted at
|
||||
\`~/.config/retroarch/cores\`, so libretro games launch right away. Refresh or
|
||||
expand the set with \`./manage.sh cores\` (\`all\` = full buildbot set,
|
||||
\`common\` = mainstream systems, add \`force\` to re-download).
|
||||
- **Shaders & overlays**: \`retroarch/shaders/\` and \`retroarch/overlays/\` are
|
||||
mounted at \`~/.config/retroarch/{shaders,overlays}\` and live on the game
|
||||
drive, so anything you pull from the Online Updater or set in the Quick Menu
|
||||
(Shaders / On-Screen Overlay) persists across sessions and survives a Wolf
|
||||
reinstall — configure your CRT shader or bezels once. If RetroArch ever writes
|
||||
them elsewhere, point Settings → Directory → Video Shader / Overlay at
|
||||
\`~/.config/retroarch/shaders\` and \`~/.config/retroarch/overlays\`.
|
||||
expand the set with \`./manage.sh cores\` (\`all\` = full buildbot set + the
|
||||
extras below, \`common\` = mainstream systems only, add \`force\` to
|
||||
re-download everything including what's already present).
|
||||
- **Shaders, overlays, cheats, database, controller autoconfig**: \`./manage.sh
|
||||
cores all\` also pulls everything else RetroArch's own Online Updater offers
|
||||
— Slang shaders, overlays/bezels, cheat files, the RDB game database, and
|
||||
controller autoconfig profiles — straight from the same libretro buildbot,
|
||||
no manual trip through that menu needed. They land in \`retroarch/{shaders,
|
||||
overlays,cheats,database,autoconfig}/\`, mounted at the matching
|
||||
\`~/.config/retroarch/...\` paths, and live on the game drive so anything you
|
||||
add on top (a CRT shader preset, custom bezels) persists across sessions and
|
||||
survives a Wolf reinstall. Not included: thumbnails (box art) — those are
|
||||
hosted separately, are per-system, and can run into many GB; pull them
|
||||
per-system from RetroArch's own Thumbnails Updater instead.
|
||||
- **Controllers**: auto-configured. ES-DE and RetroArch map Wolf's virtual pad
|
||||
through SDL with no manual input setup. RPCS3 ships Wolf-specific bindings.
|
||||
To remap inside ES-DE: Main menu → Input device settings → Configure
|
||||
@@ -3318,13 +3367,13 @@ MD
|
||||
if echo "$_APP_KEYS" | grep -qwE 'esde|retroarch'; then
|
||||
echo ""
|
||||
local _get_cores=""
|
||||
prompt_yn "Pre-download all RetroArch cores now (~1.5 GB) so retro games work on first launch? (y/n):" "y" _get_cores
|
||||
prompt_yn "Pre-download all RetroArch cores + shaders/overlays/cheats/database/autoconfig now (~1.8 GB) so retro games work on first launch? (y/n):" "y" _get_cores
|
||||
if [[ "$_get_cores" =~ ^[Yy]$ ]]; then
|
||||
log_info "Downloading RetroArch cores into $GAME_STORAGE_DIR/retroarch/cores (this can take a while)..."
|
||||
log_info "Downloading RetroArch cores + assets into $GAME_STORAGE_DIR/retroarch (this can take a while)..."
|
||||
bash "$WOLF_DIR/manage.sh" cores all \
|
||||
|| log_warning "Some cores failed — retry later with: cd $WOLF_DIR && ./manage.sh cores"
|
||||
|| log_warning "Some cores/assets failed — retry later with: cd $WOLF_DIR && ./manage.sh cores"
|
||||
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$GAME_STORAGE_DIR/retroarch" 2>/dev/null || true
|
||||
log_success "RetroArch cores ready — retro games (including GameCube/Wii via the Dolphin core) launch on first run"
|
||||
log_success "RetroArch cores + shaders/overlays/cheats/database ready — retro games (including GameCube/Wii via the Dolphin core) launch on first run"
|
||||
else
|
||||
log_info "Skipped — fetch later with: cd $WOLF_DIR && ./manage.sh cores"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user