summaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/main.cc b/src/main.cc
index 3d05822..12f4b3d 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -7,6 +7,9 @@
#include "audio/gen.h"
#include "audio/synth.h"
#include "audio/tracker.h"
+#if !defined(STRIP_ALL)
+#include "audio/wav_dump_backend.h"
+#endif
#include "generated/assets.h" // Include generated asset header
#include "gpu/gpu.h"
#include "platform.h"
@@ -51,6 +54,8 @@ int main(int argc, char** argv) {
float seek_time = 0.0f;
int width = 1280;
int height = 720;
+ bool dump_wav = false;
+ const char* wav_output_file = "audio_dump.wav";
#if !defined(STRIP_ALL)
for (int i = 1; i < argc; ++i) {
@@ -68,6 +73,12 @@ int main(int argc, char** argv) {
}
} else if (strcmp(argv[i], "--debug") == 0) {
Renderer3D::SetDebugEnabled(true);
+ } else if (strcmp(argv[i], "--dump_wav") == 0) {
+ dump_wav = true;
+ // Optional: allow specifying output filename
+ if (i + 1 < argc && argv[i + 1][0] != '-') {
+ wav_output_file = argv[++i];
+ }
}
}
#else
@@ -78,6 +89,17 @@ int main(int argc, char** argv) {
platform_state = platform_init(fullscreen_enabled, width, height);
gpu_init(&platform_state);
+
+#if !defined(STRIP_ALL)
+ // Set WAV dump backend if requested
+ WavDumpBackend wav_backend;
+ if (dump_wav) {
+ wav_backend.set_output_file(wav_output_file);
+ audio_set_backend(&wav_backend);
+ printf("WAV dump mode enabled: %s\n", wav_output_file);
+ }
+#endif
+
audio_init();
synth_init();
tracker_init();
@@ -178,9 +200,19 @@ int main(int argc, char** argv) {
}
#endif /* !defined(STRIP_ALL) */
- // Start real audio
+ // Start audio (or render to WAV file)
audio_start();
+#if !defined(STRIP_ALL)
+ // In WAV dump mode, audio_start() renders everything and we can exit
+ if (dump_wav) {
+ audio_shutdown();
+ gpu_shutdown();
+ platform_shutdown(&platform_state);
+ return 0;
+ }
+#endif
+
int last_width = platform_state.width;
int last_height = platform_state.height;