From 0bb7fa35cc340a65c944e546231632379bcfa30c Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 31 Jan 2026 15:44:30 +0100 Subject: feat: Add --seek command line option for fast-forward debugging This feature allows developers to jump to a specific time in the demo sequence (e.g., './demo64k --seek 10.5'). It simulates the game logic, audio state (rendering silent buffers), and visual physics (compute shaders) from t=0 up to the target time before starting real-time playback. Audio initialization is refactored to separate device init and start. --- src/audio/audio.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/audio/audio.cc') diff --git a/src/audio/audio.cc b/src/audio/audio.cc index 6249479..517e376 100644 --- a/src/audio/audio.cc +++ b/src/audio/audio.cc @@ -38,7 +38,9 @@ void audio_init() { printf("Failed to open playback device.\n"); return; } +} +void audio_start() { if (ma_device_start(&g_device) != MA_SUCCESS) { printf("Failed to start playback device.\n"); ma_device_uninit(&g_device); @@ -46,6 +48,19 @@ void audio_init() { } } +void audio_render_silent(float duration_sec) { + const int sample_rate = 32000; + const int chunk_size = 512; + int total_frames = (int)(duration_sec * sample_rate); + float buffer[chunk_size * 2]; // Stereo + + while (total_frames > 0) { + int frames_to_render = (total_frames > chunk_size) ? chunk_size : total_frames; + synth_render(buffer, frames_to_render); + total_frames -= frames_to_render; + } +} + void audio_update() { } -- cgit v1.2.3