From 7ed376e9b7d631759136d595a228cfd680f1d18d Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 1 Sep 2026 22:28:57 +0000 Subject: [PATCH] wolf: auto-download shaders/overlays/cheats/database/autoconfig alongside cores MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01VLX1yYKJExGSXmgUhxKQG6 --- services/wolf.sh | 85 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 18 deletions(-) diff --git a/services/wolf.sh b/services/wolf.sh index f12cde8..85c6d8e 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -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// (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