batocera-tuning

Solid

Use when a Batocera cabinet feels slow, laggy, or stuttery, or when tuning performance: EmulationStation menu/carousel lag, a slow-since-boot frontend, CPU governor stuck in powersave, overclock or CPU-speed core options that seem to do nothing, run-ahead / input latency, framerate that drops the longer the machine runs, or a 3D-heavy game (PSX/PS2/Dreamcast/N64 class) that crashes or stutters — Vulkan errors in emulator logs, picking a rendering resolution or graphics backend the hardware can afford. Covers the diagnostic order (check the throttle first), the v43 governor-at-boot failure, the emulator-name vs rom-dir-name overclock scoping trap, ES event-hook frame cost, and hardware-tier detection (batocera-info / batocera-vulkan). Not for shader visual quality (batocera-display).

AI & Automation 4 stars 0 forks Updated 2 days ago MIT

Install

View on GitHub

Quality Score: 80/100

Stars 20%
23
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# Batocera Tuning Performance: why the frontend or a game runs slow, and how to fix it. Assumes the connection pattern and `batocera.conf` model from `batocera-ops`. The theme throughout: **diagnose the machine state before blaming config, themes, or gamelists.** Most "it got slow" reports are a throttle or a leak, not the thing the user suspects. ## Diagnostic order for "the frontend is slow" Work down this list; each step is one command and rules out a whole class: 1. **CPU governor.** A frontend that is laggy *from cold boot* and stays laggy through a reboot is almost always the CPU stuck in `powersave`: ```bash SSHB "cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" ``` If it says `powersave` despite `system.cpu.governor=performance`, see the governor fix below. This is step 1 because it's the most common cause and the cheapest check. 2. **ES event hooks.** Lag that gets *progressively worse* as you navigate, and is cured only by an ES restart, points at a slow/leaky ES event hook. ES runs every executable in its scripts dirs on menu events — a `system-selected` hook fires on **every carousel tile change** and can add permanent per-frame cost. Audit `/userdata/system/scripts/` and `/userdata/system/configs/emulationstation/scripts/`. Because hooks are global (not theme-scoped), this masquerades as a "theme-independent ES bug" — the tell is that it accumulates per tile visited. See below. 3. **Texture cache.** Lag that...

Details

Author
t3chnaztea
Repository
t3chnaztea/batocera-skills
Created
3 weeks ago
Last Updated
2 days ago
Language
Python
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category

AI & Automation Solid

batocera-ops

Use when connecting to or operating a Batocera arcade/retro-gaming cabinet over SSH: establishing the connection, understanding its read-only rootfs and /userdata layout, finding config/log/ROM paths, applying changes safely, verifying a display/config change end-to-end without a controller, or diagnosing why a setting reverts to its default on every launch (configgen). Foundation for the other batocera-* skills (roms, display, tuning, maintenance). Covers sshpass, batocera.conf, EmulationStation, the ES HTTP API, and batocera-screenshot. Not for game recommendations.

4 Updated 2 days ago
t3chnaztea
AI & Automation Solid

batocera-display

Use when working on how games look on a Batocera cabinet: CRT and other shaders, shaderset resolution and per-game shader overrides, bezel/overlay artwork and alignment, generating missing .info sidecars, filtering unusable bezels, pinning the display resolution, or diagnosing moire and cropped/misaligned game viewports inside bezels. Covers why a shaderset seems invalid, why .info top values are not alpha coordinates, and why Mega-Bezel per-game art fails. Not for performance/framerate tuning (batocera-tuning).

4 Updated 2 days ago
t3chnaztea
AI & Automation Solid

batocera-maintenance

Use when keeping a Batocera cabinet healthy over time: running scripts or scheduled jobs at boot and on an interval without cron, the custom_service boot-service pattern (which replaced custom.sh in v43), backing up /userdata to another machine over SSH, and upgrading between major Batocera versions (v42 to v43 and similar) including the ROM-directory renames and post-upgrade checklist. Covers why there is no crond, the backup-before-upgrade doctrine, and catch-up scheduling. Not for performance tuning (batocera-tuning).

4 Updated 2 days ago
t3chnaztea