#ifdef __MIPSEL__ #include "jail_audio.h" #include "SDL_mixer.h" struct JA_Sound_t { Mix_Chunk *mix_chunk; }; struct JA_Music_t { Mix_Music* mix_music; }; JA_Music current_music{NULL}; void JA_Init(const int freq, const SDL_AudioFormat format, const int channels) { Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024); Mix_AllocateChannels(8); } JA_Music JA_LoadMusic(const char* filename) { int chan, samplerate; JA_Music music = new JA_Music_t(); music->mix_music = Mix_LoadMUS(filename); return music; } void JA_PlayMusic(JA_Music music, const int loop) { if (current_music == music) return; if (current_music != NULL) { Mix_HaltMusic(); } current_music = music; Mix_PlayMusic(music->mix_music, loop); } void JA_PauseMusic() { Mix_PauseMusic(); } void JA_ResumeMusic() { Mix_ResumeMusic(); } void JA_StopMusic() { Mix_HaltMusic(); } JA_Music_state JA_GetMusicState() { if (current_music == NULL) return JA_MUSIC_INVALID; if (Mix_PausedMusic()) { return JA_MUSIC_PAUSED; } else if (Mix_PlayingMusic()) { return JA_MUSIC_PLAYING; } else { return JA_MUSIC_STOPPED; } } void JA_DeleteMusic(JA_Music music) { if (current_music == music) { Mix_HaltMusic(); current_music = NULL; } Mix_FreeMusic(music->mix_music); delete music; } JA_Sound JA_LoadSound(const char* filename) { JA_Sound sound = new JA_Sound_t(); sound->mix_chunk = Mix_LoadWAV(filename); return sound; } int JA_PlaySound(JA_Sound sound, const int loop) { int channel = Mix_PlayChannel(-1, sound->mix_chunk, loop); return channel; } void JA_DeleteSound(JA_Sound sound) { Mix_FreeChunk(sound->mix_chunk); delete sound; } void JA_PauseChannel(const int channel) { Mix_Pause(channel); } void JA_ResumeChannel(const int channel) { Mix_Resume(channel); } void JA_StopChannel(const int channel) { Mix_HaltChannel(channel); } JA_Channel_state JA_GetChannelState(const int channel) { if (Mix_Paused(channel)) { return JA_CHANNEL_PAUSED; } else if (Mix_Playing(channel)) { return JA_CHANNEL_PLAYING; } else { return JA_CHANNEL_FREE; } } #endif