37 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_GAMECONTROLLER) !=
39 throw std::runtime_error(
"Failed to initialize SDL2");
42 SDL_DisplayMode display_mode;
43 SDL_GetCurrentDisplayMode(0, &display_mode);
44 int screen_width = display_mode.w * 0.8;
45 int screen_height = display_mode.h * 0.8;
47 window = std::unique_ptr<SDL_Window, core::SDL_Deleter>(
48 SDL_CreateWindow(
"Yet Another Zelda3 Editor",
49 SDL_WINDOWPOS_UNDEFINED,
50 SDL_WINDOWPOS_UNDEFINED,
53 SDL_WINDOW_RESIZABLE),
56 throw std::runtime_error(
"Failed to create window");
60 throw std::runtime_error(
"Failed to create renderer");
63 ImGui_ImplSDL2_InitForSDLRenderer(
window.get(),
69 const int audio_frequency = 48000;
70 SDL_AudioSpec want, have;
71 SDL_memset(&want, 0,
sizeof(want));
72 want.freq = audio_frequency;
73 want.format = AUDIO_S16;
77 audio_device_ = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
79 throw std::runtime_error(
80 absl::StrFormat(
"Failed to open audio: %s\n", SDL_GetError()));
82 audio_buffer_ = std::make_shared<int16_t>(audio_frequency / 50 * 4);