This commit is contained in:
Paul 2001-01-03 20:43:49 +00:00
parent b8d4479a44
commit 8ee1f94da5
5 changed files with 76 additions and 35 deletions

View file

@ -54,6 +54,10 @@
#include "locale\textdbase.h" #include "locale\textdbase.h"
#endif #endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -135,6 +139,9 @@ void CFrontEndScene::init()
m_font=new ("frontendfont") FontBank(); m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont); m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE); m_font->setJustification(FontBank::JUST_CENTRE);
CSoundMediator::setSong(CSoundMediator::SONG_TITLE);
CSoundMediator::playSong();
} }
@ -153,6 +160,8 @@ void CFrontEndScene::shutdown()
{ {
s_modeCodes[i]->shutdown(); s_modeCodes[i]->shutdown();
} }
CSoundMediator::dumpSong();
} }

View file

@ -286,9 +286,9 @@ void CFrontEndOptions::init()
&m_nextMode,MODE__OPTIONS); &m_nextMode,MODE__OPTIONS);
} }
m_bgmVolume=CSoundMediator::getVolume(CSoundMediator::SONG); m_bgmVolume=CSoundMediator::getVolume(CSoundMediator::VOL_SONG);
m_sfxVolume=CSoundMediator::getVolume(CSoundMediator::SFX); m_sfxVolume=CSoundMediator::getVolume(CSoundMediator::VOL_SFX);
m_speechVolume=CSoundMediator::getVolume(CSoundMediator::SPEECH); m_speechVolume=CSoundMediator::getVolume(CSoundMediator::VOL_SPEECH);
m_controlStyle=CPadConfig::getConfig(); m_controlStyle=CPadConfig::getConfig();
m_screenXOff=VidGetXOfs(); m_screenXOff=VidGetXOfs();
m_screenYOff=VidGetYOfs(); m_screenYOff=VidGetYOfs();
@ -393,19 +393,19 @@ void CFrontEndOptions::think(int _frames)
if(m_mode==MODE__SOUND) if(m_mode==MODE__SOUND)
{ {
if(m_bgmVolume!=CSoundMediator::getVolume(CSoundMediator::SONG)) if(m_bgmVolume!=CSoundMediator::getVolume(CSoundMediator::VOL_SONG))
{ {
CSoundMediator::setVolume(CSoundMediator::SONG,m_bgmVolume); CSoundMediator::setVolume(CSoundMediator::VOL_SONG,m_bgmVolume);
PAUL_DBGMSG("SONG"); PAUL_DBGMSG("SONG");
} }
if(m_sfxVolume!=CSoundMediator::getVolume(CSoundMediator::SFX)) if(m_sfxVolume!=CSoundMediator::getVolume(CSoundMediator::VOL_SFX))
{ {
CSoundMediator::setVolume(CSoundMediator::SFX,m_sfxVolume); CSoundMediator::setVolume(CSoundMediator::VOL_SFX,m_sfxVolume);
PAUL_DBGMSG("SFX"); PAUL_DBGMSG("SFX");
} }
if(m_speechVolume!=CSoundMediator::getVolume(CSoundMediator::SPEECH)) if(m_speechVolume!=CSoundMediator::getVolume(CSoundMediator::VOL_SPEECH))
{ {
CSoundMediator::setVolume(CSoundMediator::SPEECH,m_speechVolume); CSoundMediator::setVolume(CSoundMediator::VOL_SPEECH,m_speechVolume);
PAUL_DBGMSG("SPEECH"); PAUL_DBGMSG("SPEECH");
} }
} }

View file

@ -26,6 +26,10 @@
#include "gfx\bubicles.h" #include "gfx\bubicles.h"
#endif #endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -193,7 +197,23 @@ void CFader::think(int _frames)
s_fadeLine-=_frames*FADE_SPEED; s_fadeLine-=_frames*FADE_SPEED;
if(s_fadeLine<-FADE_BORDER_SIZE) if(s_fadeLine<-FADE_BORDER_SIZE)
{ {
s_fadeMode=s_fadeMode==FADING_OUT?FADED_OUT:FADED_IN; if(s_fadeMode==FADING_OUT)
{
s_fadeMode=FADED_OUT;
CSoundMediator::setVolume(CSoundMediator::VOL_FADE,0);
}
else
{
s_fadeMode=FADED_IN;
CSoundMediator::setVolume(CSoundMediator::VOL_FADE,255);
}
}
else
{
if(s_fadeLine>=0&&s_fadeLine<=255)
{
CSoundMediator::setVolume(CSoundMediator::VOL_FADE,s_fadeMode==FADING_OUT?s_fadeLine:255-s_fadeLine);
}
} }
} }
} }

View file

@ -88,15 +88,17 @@ static CXMPlaySound *s_xmplaySound;
// Songs // Songs
static XMFILEDATA s_xmSongData[CSoundMediator::NUM_SONGIDS]= static XMFILEDATA s_xmSongData[CSoundMediator::NUM_SONGIDS]=
{ {
{ MUSIC_HYPERMMX_VH, MUSIC_HYPERMMX_VB, MUSIC_HYPERMMX_PXM }, // HYPERMMX { MUSIC_HYPERMMX_VH, MUSIC_HYPERMMX_VB, MUSIC_HYPERMMX_PXM }, // SONG_HYPERMMX
{ MUSIC_DROPPOP_VH, MUSIC_DROPPOP_VB, MUSIC_DROPPOP_PXM }, // DROPPOP { MUSIC_DROPPOP_VH, MUSIC_DROPPOP_VB, MUSIC_DROPPOP_PXM }, // SONG_DROPPOP
{ MUSIC_MUSIC_VH, MUSIC_MUSIC_VB, MUSIC_MUSIC_PXM }, // MUSIC { MUSIC_MUSIC_VH, MUSIC_MUSIC_VB, MUSIC_MUSIC_PXM }, // SONG_MUSIC
{ MUSIC_INGAME_VH, MUSIC_INGAME_VB, MUSIC_INGAME_PXM }, // SONG_INGAME
{ MUSIC_TITLE_VH, MUSIC_TITLE_VB, MUSIC_TITLE_PXM }, // SONG_TITLE
}; };
// SFX banks // SFX banks
static XMFILEDATA s_xmSfxData[CSoundMediator::NUM_SFXBANKIDS]= static XMFILEDATA s_xmSfxData[CSoundMediator::NUM_SFXBANKIDS]=
{ {
{ SFX_INGAME_VH, SFX_INGAME_VB, SFX_INGAME_PXM }, // INGAME { SFX_INGAME_VH, SFX_INGAME_VB, SFX_INGAME_PXM }, // SFX_INGAME
}; };
// Individual SFX details // Individual SFX details
@ -112,8 +114,8 @@ static SFXDETAILS s_sfxDetails[]=
// Reverb details // Reverb details
static ReverbDetails s_reverbDetails[CSoundMediator::NUM_REVERBTYPES]= static ReverbDetails s_reverbDetails[CSoundMediator::NUM_REVERBTYPES]=
{ {
{ SPU_REV_MODE_OFF, 0, 0, 0 }, // NONE { SPU_REV_MODE_OFF, 0, 0, 0 }, // REV_NONE
{ SPU_REV_MODE_ECHO, 75, 0x3000, 100 }, // ECHO_TEST { SPU_REV_MODE_ECHO, 75, 0x3000, 100 }, // REV_ECHOTEST
}; };
@ -145,7 +147,7 @@ void CSoundMediator::initialise()
ASSERT(CXAStream::MAX_VOLUME==32767); ASSERT(CXAStream::MAX_VOLUME==32767);
// Initial reverb settings // Initial reverb settings
setReverbType(NONE);//ECHO_TEST); setReverbType(REV_NONE);//REV_ECHOTEST);
SOUND_DBGMSG("Sound mediator initialised"); SOUND_DBGMSG("Sound mediator initialised");
s_initialised=true; s_initialised=true;
@ -220,21 +222,27 @@ if(_frames==0)_frames=1;
// Push through any changes in volume // Push through any changes in volume
if(s_volumeDirty[SONG]) if(s_volumeDirty[VOL_FADE])
{ {
s_xmplaySound->setMasterSongVolume(s_currentVolume[SONG]); s_volumeDirty[VOL_SONG]=true;
s_volumeDirty[SONG]=false; s_volumeDirty[VOL_SFX]=true;
s_volumeDirty[VOL_SPEECH]=true;
} }
if(s_volumeDirty[SFX]) if(s_volumeDirty[VOL_SONG])
{ {
s_xmplaySound->setMasterSfxVolume(s_currentVolume[SFX]); s_xmplaySound->setMasterSongVolume((s_currentVolume[VOL_SONG]*s_currentVolume[VOL_FADE])>>8);
s_volumeDirty[SFX]=false; s_volumeDirty[VOL_SONG]=false;
} }
if(s_volumeDirty[SPEECH]) if(s_volumeDirty[VOL_SFX])
{ {
int vol=s_currentVolume[SPEECH]<<7; s_xmplaySound->setMasterSfxVolume((s_currentVolume[VOL_SFX]*s_currentVolume[VOL_FADE])>>8);
s_volumeDirty[VOL_SFX]=false;
}
if(s_volumeDirty[VOL_SPEECH])
{
int vol=((s_currentVolume[VOL_SPEECH]*s_currentVolume[VOL_FADE])>>8)<<7;
CXAStream::setMasterVolume(vol,vol); CXAStream::setMasterVolume(vol,vol);
s_volumeDirty[SPEECH]=false; s_volumeDirty[VOL_SPEECH]=false;
} }
} }

View file

@ -49,22 +49,26 @@ class CSoundMediator
public: public:
typedef enum SONGID typedef enum SONGID
{ {
HYPERMMX, SONG_HYPERMMX,
DROPPOP, SONG_DROPPOP,
MUSIC, SONG_MUSIC,
SONG_INGAME,
SONG_TITLE,
NUM_SONGIDS, NUM_SONGIDS,
}; };
typedef enum SFXBANKID typedef enum SFXBANKID
{ {
INGAME, SFX_INGAME,
NUM_SFXBANKIDS, NUM_SFXBANKIDS,
}; };
typedef enum VOLUMETYPE typedef enum VOLUMETYPE
{ {
SONG, VOL_SONG,
SFX, VOL_SFX,
SPEECH, VOL_SPEECH,
VOL_FADE,
NUM_VOLUMETYPES, NUM_VOLUMETYPES,
}; };
@ -77,8 +81,8 @@ public:
typedef enum REVERBTYPE typedef enum REVERBTYPE
{ {
NONE, REV_NONE,
ECHO_TEST, REV_ECHOTEST,
NUM_REVERBTYPES, NUM_REVERBTYPES,
}; };