mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 17:01:51 +00:00
this commit is broken
git-svn-id: https://svn.eduke32.com/eduke32@1468 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
633322506a
commit
68e35cb442
12 changed files with 728 additions and 195 deletions
510
polymer/eduke32/source/audiolib_musicstub.c
Normal file
510
polymer/eduke32/source/audiolib_musicstub.c
Normal file
|
@ -0,0 +1,510 @@
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
Duke Nukem Copyright (C) 1996, 2003 3D Realms Entertainment
|
||||||
|
|
||||||
|
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
||||||
|
|
||||||
|
Duke Nukem 3D is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
Dummy AudioLib stub implementation by Jonathon Fowler (jonof@edgenetwk.com)
|
||||||
|
*/
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include "music.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define TRUE ( 1 == 1 )
|
||||||
|
#define FALSE ( !TRUE )
|
||||||
|
|
||||||
|
|
||||||
|
int32_t MUSIC_ErrorCode = MUSIC_Ok;
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_ErrorString
|
||||||
|
|
||||||
|
Returns a pointer to the error message associated with an error
|
||||||
|
number. A -1 returns a pointer the current error.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
char *MUSIC_ErrorString
|
||||||
|
(
|
||||||
|
int32_t ErrorNumber
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
char *ErrorString;
|
||||||
|
|
||||||
|
switch (ErrorNumber)
|
||||||
|
{
|
||||||
|
case MUSIC_Warning :
|
||||||
|
case MUSIC_Error :
|
||||||
|
ErrorString = MUSIC_ErrorString(MUSIC_ErrorCode);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_Ok :
|
||||||
|
ErrorString = "Music ok.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_ASSVersion :
|
||||||
|
ErrorString = "Apogee Sound System Version "
|
||||||
|
"Programmed by Jim Dose\n"
|
||||||
|
"(c) Copyright 1996 James R. Dose. All Rights Reserved.\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_SoundCardError :
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_MPU401Error :
|
||||||
|
ErrorString = "Could not detect MPU-401.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_InvalidCard :
|
||||||
|
ErrorString = "Invalid Music device.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_MidiError :
|
||||||
|
ErrorString = "Error playing MIDI file.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_TaskManError :
|
||||||
|
ErrorString = "TaskMan error.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUSIC_DPMI_Error :
|
||||||
|
ErrorString = "DPMI Error in MUSIC.";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default :
|
||||||
|
ErrorString = "Unknown Music error code.";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(ErrorString);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_Init
|
||||||
|
|
||||||
|
Selects which sound device to use.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_Init
|
||||||
|
(
|
||||||
|
int32_t SoundCard,
|
||||||
|
int32_t Address
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
int32_t i;
|
||||||
|
int32_t status;
|
||||||
|
|
||||||
|
status = MUSIC_Ok;
|
||||||
|
|
||||||
|
return(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_Shutdown
|
||||||
|
|
||||||
|
Terminates use of sound device.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_Shutdown
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
int32_t status;
|
||||||
|
|
||||||
|
status = MUSIC_Ok;
|
||||||
|
|
||||||
|
|
||||||
|
return(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetMaxFMMidiChannel
|
||||||
|
|
||||||
|
Sets the maximum MIDI channel that FM cards respond to.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetMaxFMMidiChannel
|
||||||
|
(
|
||||||
|
int32_t channel
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetVolume
|
||||||
|
|
||||||
|
Sets the volume of music playback.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetVolume
|
||||||
|
(
|
||||||
|
int32_t volume
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetMidiChannelVolume
|
||||||
|
|
||||||
|
Sets the volume of music playback on the specified MIDI channel.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetMidiChannelVolume
|
||||||
|
(
|
||||||
|
int32_t channel,
|
||||||
|
int32_t volume
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_ResetMidiChannelVolumes
|
||||||
|
|
||||||
|
Sets the volume of music playback on all MIDI channels to full volume.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_ResetMidiChannelVolumes
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_GetVolume
|
||||||
|
|
||||||
|
Returns the volume of music playback.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_GetVolume
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetLoopFlag
|
||||||
|
|
||||||
|
Set whether the music will loop or end when it reaches the end of
|
||||||
|
the song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetLoopFlag
|
||||||
|
(
|
||||||
|
int32_t loopflag
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SongPlaying
|
||||||
|
|
||||||
|
Returns whether there is a song playing.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_SongPlaying
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_Continue
|
||||||
|
|
||||||
|
Continues playback of a paused song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_Continue
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_Pause
|
||||||
|
|
||||||
|
Pauses playback of a song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_Pause
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_StopSong
|
||||||
|
|
||||||
|
Stops playback of current song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_StopSong
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(MUSIC_Ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_PlaySong
|
||||||
|
|
||||||
|
Begins playback of MIDI song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_PlaySong
|
||||||
|
(
|
||||||
|
uint8_t *song,
|
||||||
|
int32_t loopflag
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(MUSIC_Ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetContext
|
||||||
|
|
||||||
|
Sets the song context.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetContext
|
||||||
|
(
|
||||||
|
int32_t context
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_GetContext
|
||||||
|
|
||||||
|
Returns the current song context.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_GetContext
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetSongTick
|
||||||
|
|
||||||
|
Sets the position of the song pointer.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetSongTick
|
||||||
|
(
|
||||||
|
uint32_t PositionInTicks
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetSongTime
|
||||||
|
|
||||||
|
Sets the position of the song pointer.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetSongTime
|
||||||
|
(
|
||||||
|
uint32_t milliseconds
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_SetSongPosition
|
||||||
|
|
||||||
|
Sets the position of the song pointer.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_SetSongPosition
|
||||||
|
(
|
||||||
|
int32_t measure,
|
||||||
|
int32_t beat,
|
||||||
|
int32_t tick
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_GetSongPosition
|
||||||
|
|
||||||
|
Returns the position of the song pointer.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_GetSongPosition
|
||||||
|
(
|
||||||
|
songposition *pos
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_GetSongLength
|
||||||
|
|
||||||
|
Returns the length of the song.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_GetSongLength
|
||||||
|
(
|
||||||
|
songposition *pos
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_FadeVolume
|
||||||
|
|
||||||
|
Fades music volume from current level to another over a specified
|
||||||
|
period of time.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_FadeVolume
|
||||||
|
(
|
||||||
|
int32_t tovolume,
|
||||||
|
int32_t milliseconds
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(MUSIC_Ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_FadeActive
|
||||||
|
|
||||||
|
Returns whether the fade routine is active.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int32_t MUSIC_FadeActive
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_StopFade
|
||||||
|
|
||||||
|
Stops fading the music.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_StopFade
|
||||||
|
(
|
||||||
|
void
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_RerouteMidiChannel
|
||||||
|
|
||||||
|
Sets callback function to reroute MIDI commands from specified
|
||||||
|
function.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_RerouteMidiChannel
|
||||||
|
(
|
||||||
|
int32_t channel,
|
||||||
|
int32_t (*function)(int32_t event, int32_t c1, int32_t c2)
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------
|
||||||
|
Function: MUSIC_RegisterTimbreBank
|
||||||
|
|
||||||
|
Halts playback of all sounds.
|
||||||
|
---------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
void MUSIC_RegisterTimbreBank
|
||||||
|
(
|
||||||
|
uint8_t *timbres
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MUSIC_Update(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
|
@ -301,7 +301,6 @@ extern int32_t probey;
|
||||||
|
|
||||||
extern char typebuflen;
|
extern char typebuflen;
|
||||||
extern char typebuf[141];
|
extern char typebuf[141];
|
||||||
extern char *MusicPtr;
|
|
||||||
extern int32_t g_musicSize;
|
extern int32_t g_musicSize;
|
||||||
extern int32_t msx[2048],msy[2048];
|
extern int32_t msx[2048],msy[2048];
|
||||||
extern int16_t cyclers[MAXCYCLERS][6],g_numCyclers;
|
extern int16_t cyclers[MAXCYCLERS][6],g_numCyclers;
|
||||||
|
|
|
@ -30,8 +30,11 @@ extern void S_SoundStartup(void);
|
||||||
extern void S_SoundShutdown(void);
|
extern void S_SoundShutdown(void);
|
||||||
extern void S_MusicStartup(void);
|
extern void S_MusicStartup(void);
|
||||||
extern void S_MusicShutdown(void);
|
extern void S_MusicShutdown(void);
|
||||||
|
extern void S_MusicVolume(int32_t);
|
||||||
extern void S_MenuSound(void);
|
extern void S_MenuSound(void);
|
||||||
extern int32_t S_PlayMusic(const char *fn, const int32_t sel);
|
extern int32_t S_PlayMusic(const char *fn, const int32_t sel);
|
||||||
|
extern void S_StopMusic(void);
|
||||||
|
extern void S_PauseMusic(int32_t);
|
||||||
extern int32_t S_LoadSound(unsigned num);
|
extern int32_t S_LoadSound(unsigned num);
|
||||||
extern int32_t S_PlaySoundXYZ(int32_t num,int32_t i,const vec3_t *pos);
|
extern int32_t S_PlaySoundXYZ(int32_t num,int32_t i,const vec3_t *pos);
|
||||||
extern int32_t S_PlaySound(int32_t num);
|
extern int32_t S_PlaySound(int32_t num);
|
||||||
|
|
|
@ -579,7 +579,6 @@ void Net_GetPackets(void)
|
||||||
input_t *osyn, *nsyn;
|
input_t *osyn, *nsyn;
|
||||||
|
|
||||||
sampletimer();
|
sampletimer();
|
||||||
AudioUpdate();
|
|
||||||
|
|
||||||
G_HandleSpecialKeys();
|
G_HandleSpecialKeys();
|
||||||
|
|
||||||
|
@ -902,10 +901,7 @@ void Net_GetPackets(void)
|
||||||
if (ud.config.SoundToggle == 0 || ud.lockout == 1 || ud.config.FXDevice < 0 || !(ud.config.VoiceToggle & 4))
|
if (ud.config.SoundToggle == 0 || ud.lockout == 1 || ud.config.FXDevice < 0 || !(ud.config.VoiceToggle & 4))
|
||||||
break;
|
break;
|
||||||
rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
|
rtsptr = (char *)RTS_GetSound(packbuf[1]-1);
|
||||||
if (*rtsptr == 'C')
|
FX_PlayAuto3D(rtsptr,RTS_SoundLength(packbuf[1]-1),0,0,0,255,-packbuf[1]);
|
||||||
FX_PlayVOC3D(rtsptr,0,0,0,255,-packbuf[1]);
|
|
||||||
else
|
|
||||||
FX_PlayWAV3D(rtsptr,0,0,0,255,-packbuf[1]);
|
|
||||||
g_RTSPlaying = 7;
|
g_RTSPlaying = 7;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1076,7 +1072,7 @@ void faketimerhandler(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
sampletimer();
|
sampletimer();
|
||||||
AudioUpdate();
|
|
||||||
if ((totalclock < ototalclock+TICSPERFRAME) || (ready2send == 0)) return;
|
if ((totalclock < ototalclock+TICSPERFRAME) || (ready2send == 0)) return;
|
||||||
ototalclock += TICSPERFRAME;
|
ototalclock += TICSPERFRAME;
|
||||||
|
|
||||||
|
@ -2703,7 +2699,7 @@ static void G_DisplayExtraScreens(void)
|
||||||
{
|
{
|
||||||
int32_t flags = Gv_GetVarByLabel("LOGO_FLAGS",255, -1, -1);
|
int32_t flags = Gv_GetVarByLabel("LOGO_FLAGS",255, -1, -1);
|
||||||
|
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
FX_StopAllSounds();
|
FX_StopAllSounds();
|
||||||
|
|
||||||
if (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS)
|
if (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS)
|
||||||
|
@ -8455,9 +8451,7 @@ static void G_HandleLocalKeys(void)
|
||||||
if (ud.config.SoundToggle && ALT_IS_PRESSED && (RTS_NumSounds() > 0) && g_RTSPlaying == 0 && (ud.config.VoiceToggle & 1))
|
if (ud.config.SoundToggle && ALT_IS_PRESSED && (RTS_NumSounds() > 0) && g_RTSPlaying == 0 && (ud.config.VoiceToggle & 1))
|
||||||
{
|
{
|
||||||
rtsptr = (char *)RTS_GetSound(i-1);
|
rtsptr = (char *)RTS_GetSound(i-1);
|
||||||
if (*rtsptr == 'C')
|
FX_PlayAuto3D(rtsptr,RTS_SoundLength(i-1),0,0,0,255,-i);
|
||||||
FX_PlayVOC3D(rtsptr,0,0,0,255,-i);
|
|
||||||
else FX_PlayWAV3D(rtsptr,0,0,0,255,-i);
|
|
||||||
|
|
||||||
g_RTSPlaying = 7;
|
g_RTSPlaying = 7;
|
||||||
|
|
||||||
|
@ -10011,7 +10005,7 @@ static void G_DisplayLogo(void)
|
||||||
Bsprintf(tempbuf,"%s - " APPNAME,duke3dgrpstring);
|
Bsprintf(tempbuf,"%s - " APPNAME,duke3dgrpstring);
|
||||||
wm_setapptitle(tempbuf);
|
wm_setapptitle(tempbuf);
|
||||||
|
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
FX_StopAllSounds(); // JBF 20031228
|
FX_StopAllSounds(); // JBF 20031228
|
||||||
S_ClearSoundLocks(); // JBF 20031228
|
S_ClearSoundLocks(); // JBF 20031228
|
||||||
if (ud.multimode < 2 && (logoflags & LOGO_ENABLED) && !g_noLogo)
|
if (ud.multimode < 2 && (logoflags & LOGO_ENABLED) && !g_noLogo)
|
||||||
|
@ -11531,8 +11525,6 @@ MAIN_LOOP_RESTART:
|
||||||
quitevent = 0;
|
quitevent = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioUpdate();
|
|
||||||
|
|
||||||
// only allow binds to function if the player is actually in a game (not in a menu, typing, et cetera) or demo
|
// only allow binds to function if the player is actually in a game (not in a menu, typing, et cetera) or demo
|
||||||
bindsenabled = (g_player[myconnectindex].ps->gm == MODE_GAME || g_player[myconnectindex].ps->gm == MODE_DEMO);
|
bindsenabled = (g_player[myconnectindex].ps->gm == MODE_GAME || g_player[myconnectindex].ps->gm == MODE_DEMO);
|
||||||
|
|
||||||
|
@ -12971,12 +12963,12 @@ void G_BonusScreen(int32_t bonusonly)
|
||||||
Net_GetPackets();
|
Net_GetPackets();
|
||||||
}
|
}
|
||||||
fadepal(0,0,0, 0,64,1);
|
fadepal(0,0,0, 0,64,1);
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
FX_StopAllSounds();
|
FX_StopAllSounds();
|
||||||
S_ClearSoundLocks();
|
S_ClearSoundLocks();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
clearview(0L);
|
clearview(0L);
|
||||||
nextpage();
|
nextpage();
|
||||||
|
|
||||||
|
@ -13011,7 +13003,7 @@ void G_BonusScreen(int32_t bonusonly)
|
||||||
|
|
||||||
setview(0,0,xdim-1,ydim-1);
|
setview(0,0,xdim-1,ydim-1);
|
||||||
|
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
clearview(0L);
|
clearview(0L);
|
||||||
nextpage();
|
nextpage();
|
||||||
|
|
||||||
|
@ -13080,7 +13072,7 @@ void G_BonusScreen(int32_t bonusonly)
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
clearview(0L);
|
clearview(0L);
|
||||||
nextpage();
|
nextpage();
|
||||||
if (ud.lockout == 0)
|
if (ud.lockout == 0)
|
||||||
|
@ -13172,7 +13164,7 @@ FRAGBONUS:
|
||||||
tinc = 0;
|
tinc = 0;
|
||||||
bonuscnt = 0;
|
bonuscnt = 0;
|
||||||
|
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
FX_StopAllSounds();
|
FX_StopAllSounds();
|
||||||
S_ClearSoundLocks();
|
S_ClearSoundLocks();
|
||||||
|
|
||||||
|
@ -13333,7 +13325,6 @@ FRAGBONUS:
|
||||||
|
|
||||||
Net_GetPackets();
|
Net_GetPackets();
|
||||||
handleevents();
|
handleevents();
|
||||||
AudioUpdate();
|
|
||||||
|
|
||||||
if (g_player[myconnectindex].ps->gm&MODE_EOL)
|
if (g_player[myconnectindex].ps->gm&MODE_EOL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1405,7 +1405,7 @@ static int32_t C_CheckEventSync(int32_t iEventID)
|
||||||
static inline int32_t ispecial(const char c)
|
static inline int32_t ispecial(const char c)
|
||||||
{
|
{
|
||||||
if (c == ' ' || c == 0x0d || c == '(' || c == ')' ||
|
if (c == ' ' || c == 0x0d || c == '(' || c == ')' ||
|
||||||
c == ',' || c == ';' || (c == 0x0a && ++g_lineNumber))
|
c == ',' || c == ';' || (c == 0x0a && ++g_lineNumber))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4533,7 +4533,7 @@ cheat_for_port_credits:
|
||||||
ud.config.MusicToggle = 1-ud.config.MusicToggle;
|
ud.config.MusicToggle = 1-ud.config.MusicToggle;
|
||||||
if (i != ud.config.MusicToggle)
|
if (i != ud.config.MusicToggle)
|
||||||
{
|
{
|
||||||
if (ud.config.MusicToggle == 0) MUSIC_Pause();
|
if (ud.config.MusicToggle == 0) S_PauseMusic(1);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ud.recstat != 2 && g_player[myconnectindex].ps->gm&MODE_GAME)
|
if (ud.recstat != 2 && g_player[myconnectindex].ps->gm&MODE_GAME)
|
||||||
|
@ -4543,7 +4543,7 @@ cheat_for_port_credits:
|
||||||
}
|
}
|
||||||
else S_PlayMusic(&EnvMusicFilename[0][0],MAXVOLUMES*MAXLEVELS);
|
else S_PlayMusic(&EnvMusicFilename[0][0],MAXVOLUMES*MAXLEVELS);
|
||||||
|
|
||||||
MUSIC_Continue();
|
S_PauseMusic(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4557,7 +4557,7 @@ cheat_for_port_credits:
|
||||||
_bar(1,d+8,yy+7, &ud.config.MusicVolume,4,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,64);
|
_bar(1,d+8,yy+7, &ud.config.MusicVolume,4,probey==io,enabled?MENUHIGHLIGHT(io):UNSELMENUSHADE,!enabled,0,64);
|
||||||
ud.config.MusicVolume <<= 2;
|
ud.config.MusicVolume <<= 2;
|
||||||
if (l != ud.config.MusicVolume)
|
if (l != ud.config.MusicVolume)
|
||||||
MUSIC_SetVolume((int16_t) ud.config.MusicVolume);
|
S_MusicVolume((int16_t) ud.config.MusicVolume);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
|
|
@ -4513,7 +4513,7 @@ void P_ProcessInput(int32_t snum)
|
||||||
// not jumping or crouching
|
// not jumping or crouching
|
||||||
|
|
||||||
if (!TEST_SYNC_KEY(sb_snum, SK_JUMP) && !TEST_SYNC_KEY(sb_snum, SK_CROUCH) &&
|
if (!TEST_SYNC_KEY(sb_snum, SK_JUMP) && !TEST_SYNC_KEY(sb_snum, SK_CROUCH) &&
|
||||||
p->on_ground && (sector[psect].floorstat&2) && p->posz >= (fz-(i<<8)-(16<<8)))
|
p->on_ground && (sector[psect].floorstat&2) && p->posz >= (fz-(i<<8)-(16<<8)))
|
||||||
p->posz = fz-(i<<8);
|
p->posz = fz-(i<<8);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -426,10 +426,10 @@ void G_CacheMapData(void)
|
||||||
if (ud.recstat == 2)
|
if (ud.recstat == 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MUSIC_Pause();
|
S_PauseMusic(1);
|
||||||
if (MapInfo[MAXVOLUMES*MAXLEVELS+2].musicfn1)
|
if (MapInfo[MAXVOLUMES*MAXLEVELS+2].musicfn1)
|
||||||
{
|
{
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
S_PlayMusic(&EnvMusicFilename[2][0],MAXVOLUMES*MAXLEVELS+2); // loadmus
|
S_PlayMusic(&EnvMusicFilename[2][0],MAXVOLUMES*MAXLEVELS+2); // loadmus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -490,10 +490,10 @@ int32_t G_LoadPlayer(int32_t spot)
|
||||||
|
|
||||||
if (MapInfo[(uint8_t)g_musicIndex].musicfn != NULL && (i != g_musicIndex || MapInfo[MAXVOLUMES*MAXLEVELS+2].musicfn1))
|
if (MapInfo[(uint8_t)g_musicIndex].musicfn != NULL && (i != g_musicIndex || MapInfo[MAXVOLUMES*MAXLEVELS+2].musicfn1))
|
||||||
{
|
{
|
||||||
MUSIC_StopSong();
|
S_StopMusic();
|
||||||
S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex);
|
S_PlayMusic(&MapInfo[(uint8_t)g_musicIndex].musicfn[0],g_musicIndex);
|
||||||
}
|
}
|
||||||
MUSIC_Continue();
|
S_PauseMusic(0);
|
||||||
|
|
||||||
g_player[myconnectindex].ps->gm = MODE_GAME;
|
g_player[myconnectindex].ps->gm = MODE_GAME;
|
||||||
ud.recstat = 0;
|
ud.recstat = 0;
|
||||||
|
|
|
@ -2517,13 +2517,13 @@ void G_HandleSharedKeys(int32_t snum)
|
||||||
else ud.pause_on = 1+SHIFTS_IS_PRESSED;
|
else ud.pause_on = 1+SHIFTS_IS_PRESSED;
|
||||||
if (ud.pause_on)
|
if (ud.pause_on)
|
||||||
{
|
{
|
||||||
MUSIC_Pause();
|
S_PauseMusic(1);
|
||||||
FX_StopAllSounds();
|
FX_StopAllSounds();
|
||||||
S_ClearSoundLocks();
|
S_ClearSoundLocks();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ud.config.MusicToggle) MUSIC_Continue();
|
if (ud.config.MusicToggle) S_PauseMusic(0);
|
||||||
pub = NUMPAGES;
|
pub = NUMPAGES;
|
||||||
pus = NUMPAGES;
|
pus = NUMPAGES;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,16 +32,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "util_lib.h"
|
#include "util_lib.h"
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#ifdef USE_OPENAL
|
|
||||||
#include "openal.h"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define LOUDESTVOLUME 150
|
#define LOUDESTVOLUME 150
|
||||||
|
|
||||||
int32_t backflag,g_numEnvSoundsPlaying,g_maxSoundPos = 0;
|
int32_t backflag,g_numEnvSoundsPlaying,g_maxSoundPos = 0;
|
||||||
|
|
||||||
|
#define MUSIC_ID -65536
|
||||||
|
|
||||||
|
static int32_t MusicIsWaveform = 0;
|
||||||
|
static uint8_t * MusicPtr = 0;
|
||||||
|
static int32_t MusicLen = 0;
|
||||||
|
static int32_t MusicVoice = -1;
|
||||||
|
static int32_t MusicPaused = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===================
|
===================
|
||||||
=
|
=
|
||||||
|
@ -52,44 +54,43 @@ int32_t backflag,g_numEnvSoundsPlaying,g_maxSoundPos = 0;
|
||||||
|
|
||||||
void S_SoundStartup(void)
|
void S_SoundStartup(void)
|
||||||
{
|
{
|
||||||
int32_t status, err = 0;
|
int32_t status;
|
||||||
|
int32_t fxdevicetype;
|
||||||
|
void * initdata = 0;
|
||||||
|
|
||||||
// if they chose None lets return
|
// if they chose None lets return
|
||||||
if (ud.config.FXDevice < 0) return;
|
if (ud.config.FXDevice < 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (ud.config.FXDevice == 0)
|
||||||
|
{
|
||||||
|
fxdevicetype = ASS_AutoDetect;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fxdevicetype = ud.config.FXDevice - 1;
|
||||||
|
}
|
||||||
|
|
||||||
initprintf("Initializing sound...\n");
|
#ifdef WIN32
|
||||||
|
initdata = (void *) win_gethwnd();
|
||||||
|
#endif
|
||||||
|
|
||||||
RETRY:
|
status = FX_Init(fxdevicetype, ud.config.NumVoices, ud.config.NumChannels, ud.config.NumBits, ud.config.MixRate, initdata);
|
||||||
status = FX_Init(ud.config.FXDevice, ud.config.NumVoices, ud.config.NumChannels, ud.config.NumBits, ud.config.MixRate);
|
|
||||||
if (status == FX_Ok)
|
if (status == FX_Ok)
|
||||||
{
|
{
|
||||||
FX_SetVolume(ud.config.FXVolume);
|
FX_SetVolume(ud.config.FXVolume);
|
||||||
if (ud.config.ReverseStereo == 1)
|
FX_SetReverseStereo(ud.config.ReverseStereo);
|
||||||
{
|
|
||||||
FX_SetReverseStereo(!FX_GetReverseStereo());
|
|
||||||
}
|
|
||||||
status = FX_SetCallBack(S_TestSoundCallback);
|
status = FX_SetCallBack(S_TestSoundCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status != FX_Ok)
|
if (status != FX_Ok)
|
||||||
{
|
{
|
||||||
if (!err)
|
sprintf(tempbuf, "Sound startup error: %s", FX_ErrorString(FX_Error));
|
||||||
{
|
|
||||||
#if defined(_WIN32)
|
|
||||||
ud.config.MixRate = 44100;
|
|
||||||
#else
|
|
||||||
ud.config.MixRate = 48000;
|
|
||||||
#endif
|
|
||||||
ud.config.NumBits = 16;
|
|
||||||
ud.config.NumChannels = 2;
|
|
||||||
ud.config.NumVoices = 32;
|
|
||||||
ud.config.ReverseStereo = 0;
|
|
||||||
err = 1;
|
|
||||||
goto RETRY;
|
|
||||||
}
|
|
||||||
Bsprintf(tempbuf, "Sound startup error: %s", FX_ErrorString(FX_Error));
|
|
||||||
G_GameExit(tempbuf);
|
G_GameExit(tempbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ud.config.FXDevice = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -108,6 +109,11 @@ void S_SoundShutdown(void)
|
||||||
if (ud.config.FXDevice < 0)
|
if (ud.config.FXDevice < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (MusicVoice >= 0)
|
||||||
|
{
|
||||||
|
S_MusicShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
status = FX_Shutdown();
|
status = FX_Shutdown();
|
||||||
if (status != FX_Ok)
|
if (status != FX_Ok)
|
||||||
{
|
{
|
||||||
|
@ -182,6 +188,8 @@ void S_MusicShutdown(void)
|
||||||
if (ud.config.MusicDevice < 0)
|
if (ud.config.MusicDevice < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
S_StopMusic();
|
||||||
|
|
||||||
status = MUSIC_Shutdown();
|
status = MUSIC_Shutdown();
|
||||||
if (status != MUSIC_Ok)
|
if (status != MUSIC_Ok)
|
||||||
{
|
{
|
||||||
|
@ -189,6 +197,34 @@ void S_MusicShutdown(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void S_PauseMusic(int32_t onf)
|
||||||
|
{
|
||||||
|
if (MusicPaused == onf || (MusicIsWaveform && MusicVoice < 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (MusicIsWaveform)
|
||||||
|
FX_PauseVoice(MusicVoice, onf);
|
||||||
|
else if (onf)
|
||||||
|
MUSIC_Pause();
|
||||||
|
else
|
||||||
|
MUSIC_Continue();
|
||||||
|
|
||||||
|
MusicPaused = onf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void S_MusicVolume(int32_t volume)
|
||||||
|
{
|
||||||
|
if (MusicIsWaveform && MusicVoice >= 0)
|
||||||
|
{
|
||||||
|
FX_SetPan(MusicVoice, volume, volume, volume);
|
||||||
|
}
|
||||||
|
else if (!MusicIsWaveform)
|
||||||
|
{
|
||||||
|
MUSIC_SetVolume(volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void S_MenuSound(void)
|
void S_MenuSound(void)
|
||||||
{
|
{
|
||||||
static int32_t SoundNum=0;
|
static int32_t SoundNum=0;
|
||||||
|
@ -216,6 +252,7 @@ void S_MenuSound(void)
|
||||||
SoundNum %= (sizeof(menusnds)/sizeof(menusnds[0]));
|
SoundNum %= (sizeof(menusnds)/sizeof(menusnds[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void _playmusic(const char *fn)
|
void _playmusic(const char *fn)
|
||||||
{
|
{
|
||||||
int32_t fp, l, i;
|
int32_t fp, l, i;
|
||||||
|
@ -265,6 +302,86 @@ int32_t S_PlayMusic(const char *fn, const int32_t sel)
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
int32_t S_PlayMusic(const char *fn, const int32_t sel)
|
||||||
|
{
|
||||||
|
int32_t fp;
|
||||||
|
char * testfn, * extension;
|
||||||
|
|
||||||
|
if (ud.config.MusicToggle == 0) return 0;
|
||||||
|
if (ud.config.MusicDevice < 0) return 0;
|
||||||
|
|
||||||
|
testfn = (char *) malloc(strlen(fn) + 5);
|
||||||
|
strcpy(testfn, fn);
|
||||||
|
extension = strrchr(testfn, '.');
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (extension && !Bstrcasecmp(extension, ".mid"))
|
||||||
|
{
|
||||||
|
// we've been asked to load a .mid file, but first
|
||||||
|
// let's see if there's an ogg with the same base name
|
||||||
|
// lying around
|
||||||
|
strcpy(extension, ".ogg");
|
||||||
|
fp = kopen4load(testfn, 0);
|
||||||
|
if (fp >= 0)
|
||||||
|
{
|
||||||
|
free(testfn);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(testfn);
|
||||||
|
|
||||||
|
// just use what we've been given
|
||||||
|
fp = kopen4load((char *)fn, 0);
|
||||||
|
}
|
||||||
|
while (0);
|
||||||
|
|
||||||
|
if (fp < 0) return 0;
|
||||||
|
|
||||||
|
S_StopMusic();
|
||||||
|
|
||||||
|
MusicLen = kfilelength(fp);
|
||||||
|
MusicPtr = (uint8_t *) Bmalloc(MusicLen);
|
||||||
|
kread(fp, MusicPtr, MusicLen);
|
||||||
|
kclose(fp);
|
||||||
|
|
||||||
|
if (!memcmp(MusicPtr, "MThd", 4))
|
||||||
|
{
|
||||||
|
MUSIC_PlaySong(MusicPtr, MUSIC_LoopSong);
|
||||||
|
MusicIsWaveform = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MusicVoice = FX_PlayLoopedAuto(MusicPtr, MusicLen, 0, 0, 0,
|
||||||
|
ud.config.MusicVolume, ud.config.MusicVolume, ud.config.MusicVolume,
|
||||||
|
FX_MUSIC_PRIORITY, MUSIC_ID);
|
||||||
|
MusicIsWaveform = 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void S_StopMusic(void)
|
||||||
|
{
|
||||||
|
if (MusicIsWaveform && MusicVoice >= 0)
|
||||||
|
{
|
||||||
|
FX_StopSound(MusicVoice);
|
||||||
|
MusicVoice = -1;
|
||||||
|
}
|
||||||
|
else if (!MusicIsWaveform)
|
||||||
|
{
|
||||||
|
MUSIC_StopSong();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MusicPtr)
|
||||||
|
{
|
||||||
|
Bfree(MusicPtr);
|
||||||
|
MusicPtr = 0;
|
||||||
|
MusicLen = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t S_LoadSound(uint32_t num)
|
int32_t S_LoadSound(uint32_t num)
|
||||||
{
|
{
|
||||||
|
@ -366,7 +483,7 @@ int32_t S_PlaySoundXYZ(int32_t num, int32_t i, const vec3_t *pos)
|
||||||
pitche = g_sounds[num].pe;
|
pitche = g_sounds[num].pe;
|
||||||
|
|
||||||
j = klabs(pitche-pitchs);
|
j = klabs(pitche-pitchs);
|
||||||
|
|
||||||
if (j)
|
if (j)
|
||||||
{
|
{
|
||||||
if (pitchs < pitche)
|
if (pitchs < pitche)
|
||||||
|
@ -388,10 +505,10 @@ int32_t S_PlaySoundXYZ(int32_t num, int32_t i, const vec3_t *pos)
|
||||||
default:
|
default:
|
||||||
if (g_player[screenpeek].ps->cursectnum > -1 && sector[g_player[screenpeek].ps->cursectnum].lotag == 2 && (g_sounds[num].m&4) == 0)
|
if (g_player[screenpeek].ps->cursectnum > -1 && sector[g_player[screenpeek].ps->cursectnum].lotag == 2 && (g_sounds[num].m&4) == 0)
|
||||||
pitch = -768;
|
pitch = -768;
|
||||||
/*
|
/*
|
||||||
if (sndist > 31444 && PN != MUSICANDSFX)
|
if (sndist > 31444 && PN != MUSICANDSFX)
|
||||||
return -1;
|
return -1;
|
||||||
*/
|
*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,30 +550,14 @@ int32_t S_PlaySoundXYZ(int32_t num, int32_t i, const vec3_t *pos)
|
||||||
|
|
||||||
if (g_sounds[num].m&1)
|
if (g_sounds[num].m&1)
|
||||||
{
|
{
|
||||||
uint16_t start;
|
|
||||||
|
|
||||||
if (g_sounds[num].num > 0) return -1;
|
if (g_sounds[num].num > 0) return -1;
|
||||||
|
|
||||||
start = *(uint16_t *)(g_sounds[num].ptr + 0x14);
|
voice = FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||||
|
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||||
if (*g_sounds[num].ptr == 'C')
|
|
||||||
voice = FX_PlayLoopedVOC(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
||||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voice >= FX_Ok)
|
if (voice >= FX_Ok)
|
||||||
|
@ -473,7 +574,6 @@ int32_t S_PlaySound(int32_t num)
|
||||||
{
|
{
|
||||||
int32_t pitch,pitche,pitchs,cx;
|
int32_t pitch,pitche,pitchs,cx;
|
||||||
int32_t voice;
|
int32_t voice;
|
||||||
int32_t start;
|
|
||||||
|
|
||||||
if (ud.config.FXDevice < 0) return -1;
|
if (ud.config.FXDevice < 0) return -1;
|
||||||
if (ud.config.SoundToggle==0) return -1;
|
if (ud.config.SoundToggle==0) return -1;
|
||||||
|
@ -511,33 +611,12 @@ int32_t S_PlaySound(int32_t num)
|
||||||
|
|
||||||
if (g_sounds[num].m&1)
|
if (g_sounds[num].m&1)
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||||
{
|
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz,num);
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedVOC(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
{
|
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voice >= FX_Ok) return voice;
|
if (voice >= FX_Ok) return voice;
|
||||||
|
@ -611,7 +690,7 @@ void S_Pan3D(void)
|
||||||
|
|
||||||
j = g_maxSoundPos;
|
j = g_maxSoundPos;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
for (k=g_sounds[j].num-1; k>=0; k--)
|
for (k=g_sounds[j].num-1; k>=0; k--)
|
||||||
{
|
{
|
||||||
|
@ -667,19 +746,25 @@ void S_Pan3D(void)
|
||||||
|
|
||||||
FX_Pan3D(g_sounds[j].SoundOwner[k].voice,sndang>>4,sndist>>6);
|
FX_Pan3D(g_sounds[j].SoundOwner[k].voice,sndang>>4,sndist>>6);
|
||||||
}
|
}
|
||||||
} while (j--);
|
}
|
||||||
|
while (j--);
|
||||||
}
|
}
|
||||||
|
|
||||||
void S_TestSoundCallback(uint32_t num)
|
void S_TestSoundCallback(uint32_t num)
|
||||||
{
|
{
|
||||||
int32_t tempi,tempj,tempk;
|
int32_t tempi,tempj,tempk;
|
||||||
|
|
||||||
if ((int32_t)num < 0)
|
if ((int32_t) num == MUSIC_ID)
|
||||||
{
|
{
|
||||||
if (lumplockbyte[num] >= 200)
|
return;
|
||||||
lumplockbyte[num]--;
|
}
|
||||||
return;
|
|
||||||
}
|
if((int32_t)num < 0)
|
||||||
|
{
|
||||||
|
if(lumplockbyte[-num] >= 200)
|
||||||
|
lumplockbyte[-num]--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
tempk = g_sounds[num].num;
|
tempk = g_sounds[num].num;
|
||||||
|
|
||||||
|
@ -701,8 +786,8 @@ void S_TestSoundCallback(uint32_t num)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_sounds[num].num--;
|
g_sounds[num].num--;
|
||||||
g_sounds[num].SoundOwner[tempk-1].i = -1;
|
g_sounds[num].SoundOwner[tempk-1].i = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_soundlocks[num]--;
|
g_soundlocks[num]--;
|
||||||
|
|
|
@ -28,24 +28,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
#include "fx_man.h"
|
#include "fx_man.h"
|
||||||
//#include "music.h"
|
//#include "music.h"
|
||||||
//#include "duke3d.h"
|
//#include "duke3d.h"
|
||||||
//#include "util_lib.h"
|
#include "util_lib.h"
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
|
|
||||||
//#include "compat.h"
|
|
||||||
#include "cache1d.h"
|
#include "cache1d.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "mathutil.h"
|
#include "mathutil.h"
|
||||||
#include "build.h" // vec3_t
|
#include "build.h" // vec3_t
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#ifdef USE_OPENAL
|
|
||||||
#include "openal.h"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "sounds_mapster32.h"
|
#include "sounds_mapster32.h"
|
||||||
|
|
||||||
#define LOUDESTVOLUME 150
|
#define LOUDESTVOLUME 150
|
||||||
|
@ -75,9 +70,12 @@ extern void initprintf(const char *f, ...);
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int32_t S_SoundStartup(void)
|
int32_t S_SoundStartup(void)
|
||||||
{
|
{
|
||||||
int32_t status, err = 0;
|
int32_t status;
|
||||||
|
int32_t fxdevicetype;
|
||||||
|
void * initdata = 0;
|
||||||
|
|
||||||
// TODO: read config
|
// TODO: read config
|
||||||
int32_t FXVolume=220, /*NumVoices=32,*/ NumChannels=2, NumBits=16, MixRate, ReverseStereo=0;
|
int32_t FXVolume=220, /*NumVoices=32,*/ NumChannels=2, NumBits=16, MixRate, ReverseStereo=0;
|
||||||
|
@ -86,43 +84,28 @@ int32_t S_SoundStartup(void)
|
||||||
#else
|
#else
|
||||||
MixRate = 48000;
|
MixRate = 48000;
|
||||||
#endif
|
#endif
|
||||||
|
fxdevicetype = ASS_AutoDetect;
|
||||||
|
|
||||||
// if they chose None lets return
|
#ifdef WIN32
|
||||||
if (0) return -1; // TODO: read config
|
initdata = (void *) win_gethwnd();
|
||||||
|
#endif
|
||||||
|
|
||||||
RETRY:
|
status = FX_Init(fxdevicetype, NumVoices, NumChannels, NumBits, MixRate, initdata);
|
||||||
status = FX_Init(0, NumVoices, NumChannels, NumBits, MixRate);
|
|
||||||
if (status == FX_Ok)
|
if (status == FX_Ok)
|
||||||
{
|
{
|
||||||
FX_SetVolume(FXVolume);
|
FX_SetVolume(FXVolume);
|
||||||
if (ReverseStereo == 1)
|
FX_SetReverseStereo(ReverseStereo);
|
||||||
{
|
|
||||||
FX_SetReverseStereo(!FX_GetReverseStereo());
|
|
||||||
}
|
|
||||||
status = FX_SetCallBack(S_TestSoundCallback);
|
status = FX_SetCallBack(S_TestSoundCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status != FX_Ok)
|
if (status != FX_Ok)
|
||||||
{
|
{
|
||||||
if (!err)
|
|
||||||
{
|
|
||||||
#if defined(_WIN32)
|
|
||||||
MixRate = 44100;
|
|
||||||
#else
|
|
||||||
MixRate = 48000;
|
|
||||||
#endif
|
|
||||||
NumBits = 16;
|
|
||||||
NumChannels = 2;
|
|
||||||
NumVoices = 32;
|
|
||||||
ReverseStereo = 0;
|
|
||||||
err = 1;
|
|
||||||
goto RETRY;
|
|
||||||
}
|
|
||||||
initprintf("Sound startup error: %s", FX_ErrorString(FX_Error));
|
initprintf("Sound startup error: %s", FX_ErrorString(FX_Error));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
SM32_havesound = 1;
|
SM32_havesound = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,30 +269,14 @@ int32_t S_PlaySoundXYZ(int32_t num, int32_t i, const vec3_t *pos)
|
||||||
|
|
||||||
if (g_sounds[num].m&1)
|
if (g_sounds[num].m&1)
|
||||||
{
|
{
|
||||||
uint16_t start;
|
|
||||||
|
|
||||||
if (g_sounds[num].num > 0) return -1;
|
if (g_sounds[num].num > 0) return -1;
|
||||||
|
|
||||||
start = *(uint16_t *)(g_sounds[num].ptr + 0x14);
|
voice = FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||||
|
pitch,sndist>>6,sndist>>6,0,g_sounds[num].pr,num);
|
||||||
if (*g_sounds[num].ptr == 'C')
|
|
||||||
voice = FX_PlayLoopedVOC(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,sndist>>4,sndist>>6,0,g_sounds[num].pr,num);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
||||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr,pitch,sndang>>4,sndist>>6, g_sounds[num].pr, num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voice >= FX_Ok)
|
if (voice >= FX_Ok)
|
||||||
|
@ -326,7 +293,6 @@ void S_PlaySound(int32_t num)
|
||||||
{
|
{
|
||||||
int32_t pitch,pitche,pitchs,cx;
|
int32_t pitch,pitche,pitchs,cx;
|
||||||
int32_t voice;
|
int32_t voice;
|
||||||
int32_t start;
|
|
||||||
|
|
||||||
if (!SM32_havesound) return;
|
if (!SM32_havesound) return;
|
||||||
if (SoundToggle==0) return;
|
if (SoundToggle==0) return;
|
||||||
|
@ -363,33 +329,12 @@ void S_PlaySound(int32_t num)
|
||||||
|
|
||||||
if (g_sounds[num].m&1)
|
if (g_sounds[num].m&1)
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||||
{
|
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz,num);
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedVOC(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
{
|
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedOGG(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
start = (int32_t)*(uint16_t *)(g_sounds[num].ptr + 0x14);
|
|
||||||
voice = FX_PlayLoopedWAV(g_sounds[num].ptr, start, start + g_sounds[num].soundsiz,
|
|
||||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].pr,num);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (*g_sounds[num].ptr == 'C')
|
voice = FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
||||||
voice = FX_PlayVOC3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
else if (*g_sounds[num].ptr == 'O')
|
|
||||||
voice = FX_PlayOGG3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
else
|
|
||||||
voice = FX_PlayWAV3D(g_sounds[ num ].ptr, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (voice >= FX_Ok)// return;
|
if (voice >= FX_Ok)// return;
|
||||||
|
|
Loading…
Reference in a new issue