diff --git a/main.c b/main.c index 837634f..6f038b6 100644 --- a/main.c +++ b/main.c @@ -6,6 +6,7 @@ #include "time.c" #include "events.c" #include "input.c" +#include "sound.c" unigi_type_error unigi_init() { return 0; diff --git a/sound.c b/sound.c new file mode 100644 index 0000000..e15bd03 --- /dev/null +++ b/sound.c @@ -0,0 +1,22 @@ +SDL_AudioSpec unigi_platform_audio_spec; + +void unigi_platform_audio_callback(void * userdata, uint8_t * stream, int len) { + void (* callback)(uint8_t *, size_t) = userdata; + callback(stream, len); +} + +unigi_type_error unigi_sound_init(void (* callback)(uint8_t *, size_t)) { + SDL_AudioSpec desired; + desired.freq = 44100; + desired.channels = 2; + desired.samples = 1024; + desired.callback = unigi_platform_audio_callback; + desired.userdata = callback; + + if (SDL_OpenAudio(&desired, &unigi_platform_audio_spec) < 0) { + return 1; + } else { + SDL_PauseAudio(0); + return 0; + } +}