Refactoring and reordering other targets

(cherry picked from commit cf065e106f68fb8af3b0568eba188c8235b1656e)
This commit is contained in:
mazmazz 2018-08-23 17:05:47 -04:00
parent 5bac836d4c
commit d535c14fc6
5 changed files with 428 additions and 355 deletions

View file

@ -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;
}

View file

@ -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

View file

@ -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)

View file

@ -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)
{

View file

@ -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;
}