summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-06 22:33:52 +0100
committerskal <pascal.massimino@gmail.com>2026-02-06 22:33:52 +0100
commit6906b9d75e21b904b3f54f4a4c5b591dd459dc69 (patch)
tree521dc2fd19676e2d7b5257843a83aee144a601c0
parentb60797c157717bafd834a4b7bc58120b95dffe46 (diff)
docs: Add low-priority tasks for tempo control and asset debugging
Added two future enhancement tasks: Task #65: Data-Driven Tempo Control - Move g_tempo_scale from hardcoded main.cc to .seq or .track files - Approach A: TEMPO directive in .seq (time, scale pairs) - Approach B: tempo column in music.track - Benefits: Non-programmer friendly, easier iteration - Priority: Low (current approach works, but less flexible) Task #66: External Asset Loading for Debugging - Load assets from files via mmap() instead of embedded arrays - macOS only, non-STRIP_ALL builds - Benefits: Edit assets without rebuilding assets_data.cc (~10s saved) - Trade-offs: Runtime file I/O, development-only feature - Priority: Low (nice-to-have for rapid iteration) Both tasks target developer workflow improvements, not critical for 64k goal.
-rw-r--r--TODO.md26
1 files changed, 26 insertions, 0 deletions
diff --git a/TODO.md b/TODO.md
index 9fb982d..5fcad5d 100644
--- a/TODO.md
+++ b/TODO.md
@@ -295,6 +295,32 @@ This file tracks prioritized tasks with detailed attack plans.
- **Priority 5**: Interactive mode (seek, loop, volume control)
- See `tools/specplay_README.md` for detailed feature list
+- [ ] **Task #65: Data-Driven Tempo Control**: Move tempo variation from code to data files
+ - **Current**: `g_tempo_scale` is hardcoded in `main.cc` with manual animation curves
+ - **Goal**: Define tempo curves in `.seq` or `.track` files for data-driven tempo control
+ - **Approach A**: Add TEMPO directive to `.seq` format
+ - Example: `TEMPO 0.0 1.0`, `TEMPO 10.0 2.0`, `TEMPO 20.0 1.0` (time, scale pairs)
+ - seq_compiler generates tempo curve array in timeline.cc
+ - **Approach B**: Add tempo column to music.track
+ - Each pattern trigger can specify tempo_scale override
+ - tracker_compiler generates tempo events in music_data.cc
+ - **Benefits**: Non-programmers can edit tempo, easier iteration, version control friendly
+ - **Priority**: Low (current hardcoded approach works, but less flexible)
+
+### Developer Tools
+- [ ] **Task #66: External Asset Loading for Debugging**: mmap() asset files instead of embedded data
+ - **Current**: All assets embedded in `assets_data.cc` (regenerate on every asset change)
+ - **Goal**: Load assets from external files in debug builds for faster iteration
+ - **Scope**: macOS only, non-STRIP_ALL builds only
+ - **Implementation**:
+ - Add `DEMO_ENABLE_EXTERNAL_ASSETS` CMake option
+ - Modify `GetAsset()` to check for external file first (e.g., `assets/final/<name>`)
+ - Use `mmap()` to map file into memory (replaces `uint8_t asset[]` array)
+ - Fallback to embedded data if file not found
+ - **Benefits**: Edit shaders/assets without regenerating assets_data.cc (~10s rebuild)
+ - **Trade-offs**: Adds runtime file I/O, only useful during development
+ - **Priority**: Low (current workflow acceptable, but nice-to-have for rapid iteration)
+
### Visual Effects
- [ ] **Task #52: Procedural SDF Font**: Minimal bezier/spline set for [A-Z, 0-9] and SDF rendering.
- [x] **Task #53: Particles Shader Polish**: Improve visual quality of particles. (Completed February 6, 2026)