Keep shared and board-specific assets separate
The board selection determines the source files and resources compiled into the firmware. Puppy, Hover and Arm use the round-screen configuration; TARS uses its own ST7789V2 landscape configuration and terminal renderer. Do not describe all RIG screens as interchangeable.
Display changes
Start with the selected board's display initialization and board_config.h. Check panel driver, resolution, rotation, mirroring and RGB ordering together. Test startup, provisioning and error states as well as normal operation.
Sounds and language
Review main/CMakeLists.txt and the language-generation tooling before changing an audio resource. TARS includes board-specific prompts and startup sounds. At the reviewed commit, main/assets/lang_config.h is no longer tracked; it is a generated artifact. Update the source resources and generation inputs rather than relying on manual edits to that header.
Package and verify
Rebuild for the correct board and region. Confirm that the boot sound, provisioning artwork and expected display states are present. A resource change should be tested together with its matching firmware, not as an unrelated binary.
TARS resource workflow
TARS uses its own 320_240/ layout, emoji/ assets and tars_*.ogg voice files under main/boards/tars/. Board Ogg prompts are embedded in the application; EAF animations and packaged wake-word models are written into the assets image. Rebuild after editing and reconfigure after adding/removing audio files. For the full replace → build → flash → listen exercise, see TARS resources.
The source includes tools/generate_tars_voice_pack.py for developers who already have a compatible speech-service account. Preview its plan with --only message_send,over --dry-run; generated audio goes to tools/tars_voice_output/ for review and is not installed automatically. You can use a local recording instead; no speech-service account is required for the first sound exercise. Both regional TARS builds use the dedicated English TARS prompts. Region still controls service endpoints, default interface language and provisioning assets. Source voice generator.
