mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 04:41:23 +00:00
Refactoring and reordering other targets
(cherry picked from commit cf065e106f68fb8af3b0568eba188c8235b1656e)
This commit is contained in:
parent
5bac836d4c
commit
d535c14fc6
5 changed files with 428 additions and 355 deletions
|
@ -55,12 +55,22 @@ void I_SetSfxVolume(INT32 volume)
|
|||
(void)volume;
|
||||
}
|
||||
|
||||
//
|
||||
// MUSIC I/O
|
||||
//
|
||||
UINT8 music_started = 0;
|
||||
/// ------------------------
|
||||
// MUSIC SYSTEM
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_GetMusicType(void)
|
||||
UINT8 music_started = 0;
|
||||
UINT8 digmusic_started = 0;
|
||||
|
||||
void I_InitMusic(void){}
|
||||
|
||||
void I_ShutdownMusic(void){}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC PROPERTIES
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
return MU_NONE;
|
||||
}
|
||||
|
@ -75,23 +85,19 @@ boolean I_MusicPaused(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
void I_InitMusic(void){}
|
||||
/// ------------------------
|
||||
// MUSIC EFFECTS
|
||||
/// ------------------------
|
||||
|
||||
void I_ShutdownMusic(void){}
|
||||
|
||||
void I_PauseSong(void)
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
(void)handle;
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
//
|
||||
// MIDI I/O
|
||||
//
|
||||
/// ------------------------
|
||||
// MUSIC PLAYBACK
|
||||
/// ------------------------
|
||||
|
||||
UINT8 midimusic_started = 0;
|
||||
|
||||
|
@ -102,9 +108,9 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(INT32 volume)
|
||||
void I_UnloadSong()
|
||||
{
|
||||
(void)volume;
|
||||
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
|
@ -119,19 +125,17 @@ void I_StopSong(void)
|
|||
(void)handle;
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
void I_PauseSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
//
|
||||
// DIGMUSIC I/O
|
||||
//
|
||||
|
||||
UINT8 digmusic_started = 0;
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(INT32 volume)
|
||||
{
|
||||
(void)volume;
|
||||
}
|
||||
|
|
|
@ -140,15 +140,6 @@ void I_SetSfxVolume(INT32 volume)
|
|||
set_volume (Volset(volume),-1);
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(INT32 volume)
|
||||
{
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
// Now set volume on output device.
|
||||
set_volume (-1, Volset(volume));
|
||||
}
|
||||
|
||||
//
|
||||
// Starting a sound means adding it
|
||||
// to the current list of active sounds
|
||||
|
@ -323,23 +314,9 @@ static int musicdies=-1;
|
|||
UINT8 music_started=0;
|
||||
boolean songpaused=false;
|
||||
|
||||
musictype_t I_GetMusicType(void)
|
||||
{
|
||||
if (currsong)
|
||||
return MU_MID;
|
||||
else
|
||||
return MU_NONE;
|
||||
}
|
||||
|
||||
boolean I_MusicPlaying()
|
||||
{
|
||||
return (boolean)currsong;
|
||||
}
|
||||
|
||||
boolean I_MusicPaused()
|
||||
{
|
||||
return songpaused;
|
||||
}
|
||||
/// ------------------------
|
||||
// MUSIC SYSTEM
|
||||
/// ------------------------
|
||||
|
||||
/* load_midi_mem:
|
||||
* Loads a standard MIDI file from memory, returning a pointer to
|
||||
|
@ -427,69 +404,41 @@ void I_ShutdownMusic(void)
|
|||
music_started=false;
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return false;
|
||||
/// ------------------------
|
||||
// MUSIC PROPERTIES
|
||||
/// ------------------------
|
||||
|
||||
islooping = looping;
|
||||
musicdies = gametic + NEWTICRATE*30;
|
||||
if (play_midi(currsong,looping)==0)
|
||||
return true;
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
if (currsong)
|
||||
return MU_MID;
|
||||
else
|
||||
return MU_NONE;
|
||||
}
|
||||
|
||||
boolean I_MusicPlaying()
|
||||
{
|
||||
return (boolean)currsong;
|
||||
}
|
||||
|
||||
boolean I_MusicPaused()
|
||||
{
|
||||
return songpaused;
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC EFFECTS
|
||||
/// ------------------------
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
|
||||
void I_PauseSong (INT32 handle)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
midi_pause();
|
||||
songpaused = true;
|
||||
}
|
||||
|
||||
void I_ResumeSong (INT32 handle)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
midi_resume();
|
||||
songpaused = false;
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
islooping = 0;
|
||||
musicdies = 0;
|
||||
stop_midi();
|
||||
songpaused = false;
|
||||
}
|
||||
|
||||
// Is the song playing?
|
||||
#if 0
|
||||
int I_QrySongPlaying(int handle)
|
||||
{
|
||||
if (midi_disabled)
|
||||
return 0;
|
||||
|
||||
//return islooping || musicdies > gametic;
|
||||
return (midi_pos==-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
//destroy_midi(currsong);
|
||||
}
|
||||
/// ------------------------
|
||||
// MUSIC PLAYBACK
|
||||
/// ------------------------
|
||||
|
||||
boolean I_LoadSong(char *data, size_t len)
|
||||
{
|
||||
|
@ -516,8 +465,81 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
return 1;
|
||||
}
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
(void)speed;
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
//destroy_midi(currsong);
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return false;
|
||||
|
||||
islooping = looping;
|
||||
musicdies = gametic + NEWTICRATE*30;
|
||||
if (play_midi(currsong,looping)==0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
islooping = 0;
|
||||
musicdies = 0;
|
||||
stop_midi();
|
||||
songpaused = false;
|
||||
}
|
||||
|
||||
void I_PauseSong (INT32 handle)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
midi_pause();
|
||||
songpaused = true;
|
||||
}
|
||||
|
||||
void I_ResumeSong (INT32 handle)
|
||||
{
|
||||
handle = 0;
|
||||
if (midi_disabled)
|
||||
return;
|
||||
midi_resume();
|
||||
songpaused = false;
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(INT32 volume)
|
||||
{
|
||||
if (midi_disabled)
|
||||
return;
|
||||
|
||||
// Now set volume on output device.
|
||||
set_volume (-1, Volset(volume));
|
||||
}
|
||||
|
||||
boolean I_SetSongTrack(INT32 track)
|
||||
{
|
||||
(void)track;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Is the song playing?
|
||||
#if 0
|
||||
int I_QrySongPlaying(int handle)
|
||||
{
|
||||
if (midi_disabled)
|
||||
return 0;
|
||||
|
||||
//return islooping || musicdies > gametic;
|
||||
return (midi_pos==-1);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -57,11 +57,19 @@ void I_SetSfxVolume(UINT8 volume)
|
|||
(void)volume;
|
||||
}
|
||||
|
||||
//
|
||||
// MUSIC I/O
|
||||
//
|
||||
/// ------------------------
|
||||
// MUSIC SYSTEM
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_GetMusicType(void)
|
||||
void I_InitMusic(void){}
|
||||
|
||||
void I_ShutdownMusic(void){}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC PROPERTIES
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
return MU_NONE;
|
||||
}
|
||||
|
@ -76,28 +84,19 @@ boolean I_MusicPaused(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
void I_InitMusic(void){}
|
||||
/// ------------------------
|
||||
// MUSIC EFFECTS
|
||||
/// ------------------------
|
||||
|
||||
void I_ShutdownMusic(void){}
|
||||
|
||||
void I_SetMusicVolume(UINT8 volume)
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
(void)volume;
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
|
||||
void I_PauseSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
//
|
||||
// MIDI I/O
|
||||
//
|
||||
/// ------------------------
|
||||
// MUSIC PLAYBACK
|
||||
/// ------------------------
|
||||
|
||||
boolean I_LoadSong(char *data, size_t len)
|
||||
{
|
||||
|
@ -106,6 +105,11 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
return -1;
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
(void)handle;
|
||||
|
@ -118,19 +122,19 @@ void I_StopSong(void)
|
|||
(void)handle;
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
void I_PauseSong(void)
|
||||
{
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
//
|
||||
// DIGMUSIC I/O
|
||||
//
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
(void)speed;
|
||||
return false;
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(UINT8 volume)
|
||||
{
|
||||
(void)volume;
|
||||
}
|
||||
|
||||
boolean I_SetSongTrack(int track)
|
||||
|
|
|
@ -1313,7 +1313,7 @@ void I_StartupSound(void)
|
|||
// MUSIC API.
|
||||
//
|
||||
|
||||
musictype_t I_GetMusicType(void)
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
#ifdef HAVE_LIBGME
|
||||
|
@ -1448,28 +1448,9 @@ static boolean LoadSong(void *data, size_t lumplength, size_t selectpos)
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
void I_ShutdownMusic(void)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
if ((midi_disabled && digital_disabled) || !musicStarted)
|
||||
return;
|
||||
|
||||
CONS_Printf("%s", M_GetText("I_ShutdownMusic: "));
|
||||
|
||||
I_UnloadSong();
|
||||
I_StopSong();
|
||||
Mix_CloseAudio();
|
||||
#ifdef MIX_INIT
|
||||
Mix_Quit();
|
||||
#endif
|
||||
CONS_Printf("%s", M_GetText("shut down\n"));
|
||||
musicStarted = SDL_FALSE;
|
||||
if (Msc_Mutex)
|
||||
SDL_DestroyMutex(Msc_Mutex);
|
||||
Msc_Mutex = NULL;
|
||||
#endif
|
||||
}
|
||||
/// ------------------------
|
||||
// MUSIC SYSTEM
|
||||
/// ------------------------
|
||||
|
||||
void I_InitMusic(void)
|
||||
{
|
||||
|
@ -1584,11 +1565,106 @@ void I_InitMusic(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
boolean I_PlaySong(INT32 handle, boolean looping)
|
||||
void I_ShutdownMusic(void)
|
||||
{
|
||||
(void)handle;
|
||||
#ifdef HAVE_MIXER
|
||||
if (midi_disabled || !musicStarted || !music[handle])
|
||||
if ((midi_disabled && digital_disabled) || !musicStarted)
|
||||
return;
|
||||
|
||||
CONS_Printf("%s", M_GetText("I_ShutdownMusic: "));
|
||||
|
||||
I_UnloadSong();
|
||||
I_StopSong();
|
||||
Mix_CloseAudio();
|
||||
#ifdef MIX_INIT
|
||||
Mix_Quit();
|
||||
#endif
|
||||
CONS_Printf("%s", M_GetText("shut down\n"));
|
||||
musicStarted = SDL_FALSE;
|
||||
if (Msc_Mutex)
|
||||
SDL_DestroyMutex(Msc_Mutex);
|
||||
Msc_Mutex = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC PROPERTIES
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
return MU_NONE;
|
||||
}
|
||||
|
||||
boolean I_MusicPlaying(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean I_MusicPaused(void)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC EFFECTS
|
||||
/// ------------------------
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC PLAYBACK
|
||||
// \todo Merge Digital and MIDI
|
||||
/// ------------------------
|
||||
|
||||
boolean I_LoadSong(char *data, size_t len)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
if (midi_disabled || !musicStarted)
|
||||
return false;
|
||||
|
||||
if (!LoadSong(data, len, 0))
|
||||
return false;
|
||||
|
||||
if (music[0])
|
||||
return true;
|
||||
|
||||
CONS_Printf(M_GetText("Couldn't load MIDI: %s\n"), Mix_GetError());
|
||||
#else
|
||||
(void)len;
|
||||
(void)data;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
|
||||
if (midi_disabled || !musicStarted)
|
||||
return;
|
||||
|
||||
Mix_HaltMusic();
|
||||
while (Mix_PlayingMusic())
|
||||
;
|
||||
|
||||
if (music[handle])
|
||||
Mix_FreeMusic(music[handle]);
|
||||
music[handle] = NULL;
|
||||
LoadSong(NULL, 0, handle);
|
||||
#else
|
||||
(void)handle;
|
||||
#endif
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
if (!musicStarted || !music[handle])
|
||||
return false;
|
||||
|
||||
#ifdef MIXER_POS
|
||||
|
@ -1609,6 +1685,28 @@ boolean I_PlaySong(INT32 handle, boolean looping)
|
|||
return false;
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
I_StopGME();
|
||||
#ifdef HAVE_MIXER
|
||||
if (digital_disabled)
|
||||
return;
|
||||
|
||||
#ifdef MIXER_POS
|
||||
if (canlooping)
|
||||
Mix_HookMusicFinished(NULL);
|
||||
#endif
|
||||
|
||||
Mix_HaltMusic();
|
||||
while (Mix_PlayingMusic())
|
||||
;
|
||||
|
||||
if (music[1])
|
||||
Mix_FreeMusic(music[1]);
|
||||
music[1] = NULL;
|
||||
LoadSong(NULL, 0, 1);
|
||||
}
|
||||
|
||||
static void I_PauseGME(void)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
|
@ -1650,68 +1748,6 @@ void I_ResumeSong(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
I_StopGME();
|
||||
#ifdef HAVE_MIXER
|
||||
if (digital_disabled)
|
||||
return;
|
||||
|
||||
#ifdef MIXER_POS
|
||||
if (canlooping)
|
||||
Mix_HookMusicFinished(NULL);
|
||||
#endif
|
||||
|
||||
Mix_HaltMusic();
|
||||
while (Mix_PlayingMusic())
|
||||
;
|
||||
|
||||
if (music[1])
|
||||
Mix_FreeMusic(music[1]);
|
||||
music[1] = NULL;
|
||||
LoadSong(NULL, 0, 1);
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
|
||||
if (midi_disabled || !musicStarted)
|
||||
return;
|
||||
|
||||
Mix_HaltMusic();
|
||||
while (Mix_PlayingMusic())
|
||||
;
|
||||
|
||||
if (music[handle])
|
||||
Mix_FreeMusic(music[handle]);
|
||||
music[handle] = NULL;
|
||||
LoadSong(NULL, 0, handle);
|
||||
#else
|
||||
(void)handle;
|
||||
#endif
|
||||
}
|
||||
|
||||
boolean I_LoadSong(char *data, size_t len)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
if (midi_disabled || !musicStarted)
|
||||
return false;
|
||||
|
||||
if (!LoadSong(data, len, 0))
|
||||
return false;
|
||||
|
||||
if (music[0])
|
||||
return true;
|
||||
|
||||
CONS_Printf(M_GetText("Couldn't load MIDI: %s\n"), Mix_GetError());
|
||||
#else
|
||||
(void)len;
|
||||
(void)data;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(UINT8 volume)
|
||||
{
|
||||
#ifdef HAVE_MIXER
|
||||
|
@ -1727,6 +1763,18 @@ void I_SetMusicVolume(UINT8 volume)
|
|||
#endif
|
||||
}
|
||||
|
||||
boolean I_SetSongTrack(int track)
|
||||
{
|
||||
(void)track;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC LOADING AND CLEANUP
|
||||
// \todo Split logic between loading and playing,
|
||||
// then move to Playback section
|
||||
/// ------------------------
|
||||
|
||||
#ifdef HAVE_LIBGME
|
||||
static void I_CleanupGME(void *userdata)
|
||||
{
|
||||
|
@ -1961,19 +2009,6 @@ static void I_StopGME(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
|
||||
(void)speed;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean I_SetSongTrack(int track)
|
||||
{
|
||||
(void)track;
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef MIXER_POS
|
||||
static void SDLCALL I_FinishMusic(void)
|
||||
{
|
||||
|
|
|
@ -439,11 +439,24 @@ void I_SetSfxVolume(UINT8 volume)
|
|||
sfx_volume = volume;
|
||||
}
|
||||
|
||||
//
|
||||
// MUSIC
|
||||
//
|
||||
/// ------------------------
|
||||
// MUSIC SYSTEM
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_GetMusicType(void)
|
||||
void I_InitMusic(void)
|
||||
{
|
||||
}
|
||||
|
||||
void I_ShutdownMusic(void)
|
||||
{
|
||||
I_StopSong();
|
||||
}
|
||||
|
||||
/// ------------------------
|
||||
// MUSIC PROPERTIES
|
||||
/// ------------------------
|
||||
|
||||
musictype_t I_MusicType(void)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
if (gme)
|
||||
|
@ -491,28 +504,46 @@ boolean I_MusicPaused(void)
|
|||
return fmpaused;
|
||||
}
|
||||
|
||||
void I_InitMusic(void)
|
||||
/// ------------------------
|
||||
// MUSIC EFFECTS
|
||||
/// ------------------------
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
{
|
||||
FMOD_RESULT e;
|
||||
float frequency;
|
||||
if (!music_stream)
|
||||
return false;
|
||||
if (speed > 250.0f)
|
||||
speed = 250.0f; //limit speed up to 250x
|
||||
|
||||
#ifdef HAVE_LIBGME
|
||||
// Try to set GME speed
|
||||
if (gme)
|
||||
{
|
||||
gme_set_tempo(gme, speed);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Try to set Mod/Midi speed
|
||||
e = FMOD_Sound_SetMusicSpeed(music_stream, speed);
|
||||
|
||||
if (e == FMOD_ERR_FORMAT)
|
||||
{
|
||||
// Just change pitch instead for Ogg/etc.
|
||||
FMR(FMOD_Sound_GetDefaults(music_stream, &frequency, NULL, NULL, NULL));
|
||||
FMR_MUSIC(FMOD_Channel_SetFrequency(music_channel, speed*frequency));
|
||||
}
|
||||
else
|
||||
FMR_MUSIC(e);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void I_ShutdownMusic(void)
|
||||
{
|
||||
I_StopSong();
|
||||
}
|
||||
|
||||
void I_PauseSong(void)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, true));
|
||||
}
|
||||
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, false));
|
||||
}
|
||||
/// ------------------------
|
||||
// MUSIC PLAYBACK
|
||||
/// ------------------------
|
||||
|
||||
boolean I_LoadSong(char *data, size_t len)
|
||||
{
|
||||
|
@ -726,39 +757,79 @@ boolean I_LoadSong(char *data, size_t len)
|
|||
return true;
|
||||
}
|
||||
|
||||
boolean I_SetSongSpeed(float speed)
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
FMOD_RESULT e;
|
||||
float frequency;
|
||||
if (!music_stream)
|
||||
return false;
|
||||
if (speed > 250.0f)
|
||||
speed = 250.0f; //limit speed up to 250x
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR(FMOD_Sound_Release(music_stream));
|
||||
music_stream = NULL;
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
// Try to set GME speed
|
||||
if (gme)
|
||||
{
|
||||
gme_set_tempo(gme, speed);
|
||||
gme_start_track(gme, 0);
|
||||
current_track = 0;
|
||||
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
FMR(FMOD_Channel_SetPriority(music_channel, 0));
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Try to set Mod/Midi speed
|
||||
e = FMOD_Sound_SetMusicSpeed(music_stream, speed);
|
||||
|
||||
if (e == FMOD_ERR_FORMAT)
|
||||
{
|
||||
// Just change pitch instead for Ogg/etc.
|
||||
FMR(FMOD_Sound_GetDefaults(music_stream, &frequency, NULL, NULL, NULL));
|
||||
FMR_MUSIC(FMOD_Channel_SetFrequency(music_channel, speed*frequency));
|
||||
}
|
||||
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
|
||||
if (I_MusicType() != MU_MID)
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
|
||||
else
|
||||
FMR_MUSIC(e);
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
FMR(FMOD_Channel_SetPriority(music_channel, 0));
|
||||
current_track = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
if (gme)
|
||||
gme_delete(gme);
|
||||
gme = NULL;
|
||||
#endif
|
||||
current_track = -1;
|
||||
|
||||
I_UnloadSong();
|
||||
}
|
||||
|
||||
void I_PauseSong(void)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, true));
|
||||
}
|
||||
|
||||
void I_ResumeSong(void)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, false));
|
||||
}
|
||||
|
||||
void I_SetMusicVolume(UINT8 volume)
|
||||
{
|
||||
if (!music_stream)
|
||||
return;
|
||||
|
||||
// volume is 0 to 31.
|
||||
if (I_MusicType() == MU_MID)
|
||||
music_volume = 31; // windows bug hack
|
||||
else
|
||||
music_volume = volume;
|
||||
|
||||
FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
}
|
||||
|
||||
boolean I_SetSongTrack(INT32 track)
|
||||
{
|
||||
if (track != current_track) // If the track's already playing, then why bother?
|
||||
|
@ -803,66 +874,3 @@ boolean I_SetSongTrack(INT32 track)
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// Fuck MIDI. ... Okay fine, you can have your silly D_-only mode.
|
||||
//
|
||||
|
||||
void I_SetMusicVolume(UINT8 volume)
|
||||
{
|
||||
if (!music_stream)
|
||||
return;
|
||||
|
||||
// volume is 0 to 31.
|
||||
if (I_GetMusicType() == MU_MID)
|
||||
music_volume = 31; // windows bug hack
|
||||
else
|
||||
music_volume = volume;
|
||||
|
||||
FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
}
|
||||
|
||||
boolean I_PlaySong(boolean looping)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
if (gme)
|
||||
{
|
||||
gme_start_track(gme, 0);
|
||||
current_track = 0;
|
||||
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
FMR(FMOD_Channel_SetPriority(music_channel, 0));
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
|
||||
if (I_GetMusicType() != MU_MID)
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
|
||||
else
|
||||
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
|
||||
FMR(FMOD_Channel_SetPriority(music_channel, 0));
|
||||
current_track = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void I_StopSong(void)
|
||||
{
|
||||
#ifdef HAVE_LIBGME
|
||||
if (gme)
|
||||
gme_delete(gme);
|
||||
gme = NULL;
|
||||
#endif
|
||||
current_track = -1;
|
||||
|
||||
I_UnloadSong();
|
||||
}
|
||||
|
||||
void I_UnloadSong(void)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(handle);
|
||||
if (music_stream)
|
||||
FMR(FMOD_Sound_Release(music_stream));
|
||||
music_stream = NULL;
|
||||
}
|
Loading…
Reference in a new issue