05c4c11c0b
Context: The new firmware gamebook mode needs a book on the Freenove SD, plus a reusable way to author one. We also want a playable demo to prove the whole chain (button -> navigation -> WAV narration from SD -> screen). Approach: Author the book in a human-friendly YAML; a generator renders each passage's narration with macOS say (16 kHz mono, canonical WAV — the Apple FLLR chunk is stripped so the firmware parser decodes it), emits a compact gamebook.json, and stages WAVs + JSON onto the master SD via POST /game/file?path=sd/gamebook/. Changes: - game/gamebooks/zacus_demo.yaml: a branching mini-adventure (the Professeur Zacus lab) — 8 passages, 3 endings. - tools/gamebook/build_gamebook.py: reusable/idempotent generator (--book/--ip/--sd-dir/--dry-run); ASCII-folds on-screen text (fonts have no accents) while the WAV keeps the accented narration; choices carry label + goto (navigation is generic, D-pad + click). - .gitignore: ignore the generated WAV pack (tools/gamebook/build/). - Bump ESP32_ZACUS to the gamebook-mode firmware. Impact: Authors can write a gamebook in YAML and stage it to the Freenove in one command; the bundled demo plays end to end, fully offline.