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:
Claude
2026-09-01 22:29:05 +00:00
parent 1d386e6a58
commit 7ed376e9b7
+67 -18
View File
@@ -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