This commit is contained in:
Paul 2001-01-19 16:25:05 +00:00
parent 6b9db03dcf
commit 35ffb99e01
13 changed files with 53 additions and 32 deletions

View file

@ -54,10 +54,6 @@
#include "locale\textdbase.h"
#endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
#ifndef __DATA_STRUCTS_HEADER__
#include "Dstructs.h"
#endif
@ -147,9 +143,6 @@ void CFrontEndScene::init()
m_font=new ("frontendfont") FontBank();
m_font->initialise(&standardFont);
m_font->setJustification(FontBank::JUST_CENTRE);
CSoundMediator::setSong(CSoundMediator::SONG_TITLE);
CSoundMediator::playSong();
}
@ -168,8 +161,6 @@ void CFrontEndScene::shutdown()
{
s_modeCodes[i]->shutdown();
}
CSoundMediator::dumpSong();
}

View file

@ -58,6 +58,10 @@
#include "system\vid.h"
#endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib
------- */
@ -170,6 +174,9 @@ void CFrontEndMainTitles::select()
ASSERT(s_image);
SetScreenImage(s_image);
CSoundMediator::setSong(CSoundMediator::SONG_TITLE);
CSoundMediator::playSong();
CFader::setFadingIn();
}
@ -181,6 +188,8 @@ void CFrontEndMainTitles::select()
---------------------------------------------------------------------- */
void CFrontEndMainTitles::unselect()
{
CSoundMediator::dumpSong();
ClearScreenImage();
MemFree(s_image); s_image=NULL;
}

View file

@ -80,7 +80,7 @@ private:
enum
{
DEMO_TIMEOUT_IN_SECONDS=30,
DEMO_TIMEOUT_IN_SECONDS=45,
};
POLY_FT4 *prepareSeaPortionFT4(struct sFrameHdr *_fh,int _x,int _y,int _w,int _h,int _rgb);

View file

@ -62,6 +62,10 @@
#include "system\vid.h"
#endif
#ifndef __SOUND_SOUND_H__
#include "sound\sound.h"
#endif
/* Std Lib
------- */
@ -327,6 +331,9 @@ void CFrontEndOptions::select()
m_exitFlag=false;
m_closingDown=false;
CSoundMediator::setSong(CSoundMediator::SONG_OPTIONS);
CSoundMediator::playSong();
CFader::setFadingIn();
}
@ -338,6 +345,8 @@ void CFrontEndOptions::select()
---------------------------------------------------------------------- */
void CFrontEndOptions::unselect()
{
CSoundMediator::dumpSong();
m_modeMenus[m_mode]->unselect();
}

View file

@ -47,11 +47,17 @@ adjust channels ( watery-mario64 style music changes )
Structure defintions
-------------------- */
typedef struct XMFILEDATA
typedef struct XMSONGDATA
{
FileEquate m_vh,m_vb,m_pxm;
int m_startPattern;
};
typedef struct XMSFXFILEDATA
{
FileEquate m_vh,m_vb,m_pxm;
};
typedef struct SFXDETAILS
{
int m_channelMask;
@ -78,6 +84,7 @@ int CSoundMediator::s_volumeDirty[CSoundMediator::NUM_VOLUMETYPES];
xmSampleId CSoundMediator::s_songSampleId=NO_SAMPLE;
xmModId CSoundMediator::s_songModId=NO_SONG;
xmPlayingId CSoundMediator::s_songPlayingId=NOT_PLAYING;
int CSoundMediator::s_songStartPattern=0;
xmSampleId CSoundMediator::s_sfxSampleId=NO_SAMPLE;
xmModId CSoundMediator::s_sfxModId=NO_SONG;
@ -86,17 +93,18 @@ static CXMPlaySound *s_xmplaySound;
// Songs
static XMFILEDATA s_xmSongData[CSoundMediator::NUM_SONGIDS]=
static XMSONGDATA s_xmSongData[CSoundMediator::NUM_SONGIDS]=
{
{ MUSIC_HYPERMMX_VH, MUSIC_HYPERMMX_VB, MUSIC_HYPERMMX_PXM }, // SONG_HYPERMMX
{ MUSIC_DROPPOP_VH, MUSIC_DROPPOP_VB, MUSIC_DROPPOP_PXM }, // SONG_DROPPOP
{ 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
{ MUSIC_INGAME_VH, MUSIC_INGAME_VB, MUSIC_INGAME_PXM, 0 }, // SONG_INGAME
{ MUSIC_SB_TITLE_VH, MUSIC_SB_TITLE_VB, MUSIC_SB_TITLE_PXM, 0 }, // SONG_TITLE
{ MUSIC_SB_TITLE_VH, MUSIC_SB_TITLE_VB, MUSIC_SB_TITLE_PXM, 0xa }, // SONG_OPTIONS
{ MUSIC_SB_TITLE_VH, MUSIC_SB_TITLE_VB, MUSIC_SB_TITLE_PXM, 0x13 }, // SONG_MEMORYCARD
{ MUSIC_SB_TITLE_VH, MUSIC_SB_TITLE_VB, MUSIC_SB_TITLE_PXM, 0x14 }, // SONG_GAMECOMPLETE
{ MUSIC_SB_TITLE_VH, MUSIC_SB_TITLE_VB, MUSIC_SB_TITLE_PXM, 0x23 }, // SONG_GAMEOVER
};
// SFX banks
static XMFILEDATA s_xmSfxData[CSoundMediator::NUM_SFXBANKIDS]=
static XMSFXFILEDATA s_xmSfxData[CSoundMediator::NUM_SFXBANKIDS]=
{
{ SFX_INGAME_VH, SFX_INGAME_VB, SFX_INGAME_PXM }, // SFX_INGAME
};
@ -268,7 +276,7 @@ void CSoundMediator::setReverbType(REVERBTYPE _type)
---------------------------------------------------------------------- */
void CSoundMediator::setSong(SONGID _songId)
{
XMFILEDATA *song;
XMSONGDATA *song;
ASSERT(s_songSampleId==NO_SAMPLE);
ASSERT(s_songModId==NO_SONG);
@ -276,6 +284,7 @@ void CSoundMediator::setSong(SONGID _songId)
song=&s_xmSongData[_songId];
s_songModId=s_xmplaySound->loadModData(song->m_pxm);
s_songSampleId=s_xmplaySound->loadSampleData(song->m_vh,song->m_vb);
s_songStartPattern=song->m_startPattern;
}
@ -291,7 +300,7 @@ void CSoundMediator::playSong()
ASSERT(s_songModId!=NO_SONG);
ASSERT(s_songPlayingId==NOT_PLAYING);
s_songPlayingId=s_xmplaySound->playSong(s_songSampleId,s_songModId);
s_songPlayingId=s_xmplaySound->playSong(s_songSampleId,s_songModId,s_songStartPattern);
// s_volumeDirty[SONG]=true; // Force a volume update
}
@ -329,14 +338,14 @@ void CSoundMediator::dumpSong()
---------------------------------------------------------------------- */
void CSoundMediator::setSfxBank(SFXBANKID _bankId)
{
XMFILEDATA *song;
XMSFXFILEDATA *sfx;
ASSERT(s_sfxSampleId==NO_SAMPLE);
ASSERT(s_sfxModId==NO_SONG);
song=&s_xmSfxData[_bankId];
s_sfxModId=s_xmplaySound->loadModData(song->m_pxm);
s_sfxSampleId=s_xmplaySound->loadSampleData(song->m_vh,song->m_vb);
sfx=&s_xmSfxData[_bankId];
s_sfxModId=s_xmplaySound->loadModData(sfx->m_pxm);
s_sfxSampleId=s_xmplaySound->loadSampleData(sfx->m_vh,sfx->m_vb);
}

View file

@ -49,11 +49,12 @@ class CSoundMediator
public:
typedef enum SONGID
{
SONG_HYPERMMX,
SONG_DROPPOP,
SONG_MUSIC,
SONG_INGAME,
SONG_TITLE,
SONG_OPTIONS,
SONG_MEMORYCARD,
SONG_GAMECOMPLETE,
SONG_GAMEOVER,
NUM_SONGIDS,
};
typedef enum SFXBANKID
@ -135,6 +136,8 @@ private:
static xmSampleId s_songSampleId;
static xmModId s_songModId;
static xmPlayingId s_songPlayingId;
static int s_songStartPattern;
static xmSampleId s_sfxSampleId;
static xmModId s_sfxModId;

View file

@ -559,7 +559,7 @@ void CXMPlaySound::stopAndUnlockAllSound()
Params:
Returns:
---------------------------------------------------------------------- */
xmPlayingId CXMPlaySound::playSong(xmSampleId _sampleId,xmModId _modId)
xmPlayingId CXMPlaySound::playSong(xmSampleId _sampleId,xmModId _modId,int _startPattern)
{
int channelCount,baseChannel;
XMVab *vab;
@ -585,7 +585,7 @@ xmPlayingId CXMPlaySound::playSong(xmSampleId _sampleId,xmModId _modId)
XM_Loop, // Play song continuously
-1, // Play all channels
XM_Music, // Music
0); // Begin at the beginning
_startPattern); // Where to start from
markChannelsAsActive(baseChannel,channelCount,SONG,retId,id,255);
setVolume(retId,MAX_VOLUME);
//PAUL_DBGMSG("playSong %d/%d ( on %d-%d )",retId,id,baseChannel,baseChannel+channelCount-1);

View file

@ -75,7 +75,7 @@ public:
void stopAndUnlockAllSound();
xmPlayingId playSong(xmSampleId _sampleId,xmModId _modId);
xmPlayingId playSong(xmSampleId _sampleId,xmModId _modId,int _startPattern=0);
xmPlayingId playSfx(xmSampleId _sampleId,xmModId _modId,int _sfxPattern,int _playMask,u8 _priority);
xmPlayingId playLoopingSfx(xmSampleId _sampleId,xmModId _modId,int _soundId,u8 _priority,int _pitch=0x400);