diff --git a/src/app/core/common.h b/src/app/core/common.h index 05d30d9f..ee7e393e 100644 --- a/src/app/core/common.h +++ b/src/app/core/common.h @@ -66,6 +66,9 @@ class ExperimentFlags { // Log to the console. bool kLogToConsole = false; + // Load audio device for emulator + bool kLoadAudioDevice = false; + // Overworld flags struct Overworld { // Load and render overworld sprites to the screen. Unstable. diff --git a/src/app/core/controller.cc b/src/app/core/controller.cc index fd8e1b9d..1f08a429 100644 --- a/src/app/core/controller.cc +++ b/src/app/core/controller.cc @@ -194,9 +194,11 @@ absl::Status Controller::OnEntry() { RETURN_IF_ERROR(CreateSDL_Window()) RETURN_IF_ERROR(CreateRenderer()) RETURN_IF_ERROR(CreateGuiContext()) - RETURN_IF_ERROR(LoadAudioDevice()) - master_editor_.emulator().set_audio_buffer(audio_buffer_); - master_editor_.emulator().set_audio_device_id(audio_device_); + if (flags()->kLoadAudioDevice) { + RETURN_IF_ERROR(LoadAudioDevice()) + master_editor_.emulator().set_audio_buffer(audio_buffer_); + master_editor_.emulator().set_audio_device_id(audio_device_); + } InitializeKeymap(); master_editor_.SetupScreen(renderer_); active_ = true; @@ -253,9 +255,11 @@ void Controller::DoRender() const { void Controller::OnExit() { master_editor_.Shutdown(); - SDL_PauseAudioDevice(audio_device_, 1); - SDL_CloseAudioDevice(audio_device_); - delete audio_buffer_; + if (flags()->kLoadAudioDevice) { + SDL_PauseAudioDevice(audio_device_, 1); + SDL_CloseAudioDevice(audio_device_); + delete audio_buffer_; + } ImGui_ImplSDLRenderer2_Shutdown(); ImGui_ImplSDL2_Shutdown(); ImGui::DestroyContext(); @@ -263,7 +267,16 @@ void Controller::OnExit() { } absl::Status Controller::CreateSDL_Window() { - if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { + auto sdl_flags = SDL_INIT_VIDEO | SDL_INIT_TIMER; + if (flags()->kUseNewImGuiInput) { + sdl_flags |= SDL_INIT_GAMECONTROLLER; + } + + if (flags()->kLoadAudioDevice) { + sdl_flags |= SDL_INIT_AUDIO; + } + + if (SDL_Init(sdl_flags) != 0) { return absl::InternalError( absl::StrFormat("SDL_Init: %s\n", SDL_GetError())); } else { diff --git a/src/app/editor/master_editor.cc b/src/app/editor/master_editor.cc index 7e8a7406..e97ec586 100644 --- a/src/app/editor/master_editor.cc +++ b/src/app/editor/master_editor.cc @@ -382,6 +382,11 @@ void MasterEditor::DrawFileMenu() { ImGui::EndMenu(); } + if (BeginMenu("Emulator Flags")) { + Checkbox("Load Audio Device", &mutable_flags()->kLoadAudioDevice); + ImGui::EndMenu(); + } + Checkbox("Use built-in file dialog", &mutable_flags()->kNewFileDialogWrapper); Checkbox("Enable Console Logging", &mutable_flags()->kLogToConsole);