box3: fix gamebook audio, accents, and crashes #47

Merged
electron merged 1 commits from fix/box3-audio-font-gamebook into main 2026-06-21 09:31:06 +00:00
Owner

Fixes the BOX-3 touch gamebook: stack-overflow reboot on story start, no audio (ES8311 codec never initialised — now via BSP esp_codec_dev + PA forced on), first-passage silence (SD double-mount → open-first), missing accents (custom uncompressed Montserrat fonts incl. œŒŸ), and gates mic/voice streaming behind CONFIG_BOX3_VOICE_STREAMING (default off).

Fixes the BOX-3 touch gamebook: stack-overflow reboot on story start, no audio (ES8311 codec never initialised — now via BSP esp_codec_dev + PA forced on), first-passage silence (SD double-mount → open-first), missing accents (custom uncompressed Montserrat fonts incl. œŒŸ), and gates mic/voice streaming behind CONFIG_BOX3_VOICE_STREAMING (default off).
electron added 1 commit 2026-06-21 09:07:51 +00:00
box3: fix gamebook audio, accents, and crashes
CI / platformio (pull_request) Failing after 3m44s
CI / platformio (push) Failing after 3m34s
43dc1478b1
The BOX-3 touch gamebook had several blocking bugs that made the
voiced+foley story packs unusable. This fixes them end to end.

- Stack overflow on story start: gb_play_task kept a 2 KB buffer on
  its 4 KB stack and rebooted the board. Buffers are now static (the
  task is a singleton) and the stack is 6 KB.
- No sound at all: the ES8311 codec was never initialised — main.c
  wrote raw I2S to a muted DAC. Output (and the mic) now go through
  the BSP esp_codec_dev (bsp_audio_codec_speaker/microphone_init,
  esp_codec_dev_write/read). The power amplifier (GPIO46) is also
  forced on and volume set to 100, as the es8311 pa_pin handling did
  not drive it in practice.
- First passage silent: gb_play re-mounted the SD that the gamebook
  had already mounted; the failed second bsp_sdcard_mount tore down
  the VFS so the first fopen failed. Now we open the file first and
  only mount if that fails. A short silence lead-in also primes the
  codec/PA ramp.
- No accents: the gamebook used ASCII-only lv_font_montserrat_14/24.
  Added custom Montserrat fonts (font_fr_14/24, Latin-1 + œŒŸ « » ’ …,
  uncompressed so they render without LV_USE_FONT_COMPRESSED).
- Mic/voice streaming gated behind CONFIG_BOX3_VOICE_STREAMING
  (default off): as a gamebook the BOX-3 needs no mic, and the
  constant codec reads + bridge reconnects interfered with playback
  and flooded the log.

plip_virtual + cmd_exec handle types switched from i2s_chan_handle_t
to esp_codec_dev_handle_t accordingly.
electron merged commit 43dc1478b1 into main 2026-06-21 09:31:06 +00:00
Sign in to join this conversation.