aboutsummaryrefslogtreecommitdiff
path: root/engines/cge/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge/sound.cpp')
-rw-r--r--engines/cge/sound.cpp360
1 files changed, 136 insertions, 224 deletions
diff --git a/engines/cge/sound.cpp b/engines/cge/sound.cpp
index d40789beee..397684849a 100644
--- a/engines/cge/sound.cpp
+++ b/engines/cge/sound.cpp
@@ -25,292 +25,204 @@
* Copyright (c) 1994-1995 Janus B. Wisniewski and L.K. Avalon
*/
-#include "cge/general.h"
-#include "cge/startup.h"
-#include "cge/sound.h"
-
-#include "cge/text.h"
-#include "cge/cfile.h"
-#include "cge/vol.h"
+#include "cge/general.h"
+#include "cge/startup.h"
+#include "cge/sound.h"
+#include "cge/text.h"
+#include "cge/cfile.h"
+#include "cge/vol.h"
namespace CGE {
- bool Music = true;
- FX Fx = 16; // must precede SOUND!!
- SOUND Sound;
-
+bool Music = true;
+FX Fx = 16; // must precede SOUND!!
+SOUND Sound;
-SOUND::SOUND (void)
-{
- if (STARTUP::SoundOk) Open();
+SOUND::SOUND(void) {
+ if (STARTUP::SoundOk)
+ Open();
}
-
-
-SOUND::~SOUND (void)
-{
- Close();
+SOUND::~SOUND(void) {
+ Close();
}
-
-
-
-void SOUND::Close (void)
-{
- KillMIDI();
- SNDDone();
+void SOUND::Close(void) {
+ KillMIDI();
+ SNDDone();
}
-
-
-
-void SOUND::Open (void)
-{
- SNDInit();
- Play(Fx[30000], 8);
+void SOUND::Open(void) {
+ SNDInit();
+ Play(Fx[30000], 8);
}
-
-
-void SOUND::Play (DATACK * wav, int pan, int cnt)
-{
- if (wav)
- {
- Stop();
- smpinf.saddr = (uint8 *) &*(wav->EAddr());
- smpinf.slen = (uint16)wav->Size();
- smpinf.span = pan;
- smpinf.sflag = cnt;
- SNDDigiStart(&smpinf);
- }
+void SOUND::Play(DATACK *wav, int pan, int cnt) {
+ if (wav) {
+ Stop();
+ smpinf.saddr = (uint8 *) &*(wav->EAddr());
+ smpinf.slen = (uint16)wav->Size();
+ smpinf.span = pan;
+ smpinf.sflag = cnt;
+ SNDDigiStart(&smpinf);
+ }
}
-
-
-void SOUND::Stop (void)
-{
- SNDDigiStop(&smpinf);
+void SOUND::Stop(void) {
+ SNDDigiStop(&smpinf);
}
-//------------------------------------------------------------------------
-
-
-
-
-
-
-
-
-FX::FX (int size)
-: Emm(0L), Current(NULL)
-{
- Cache = new HAN[size];
- for (Size = 0; Size < size; Size ++)
- {
- Cache[Size].Ref = 0;
- Cache[Size].Wav = NULL;
- }
+FX::FX(int size) : Emm(0L), Current(NULL) {
+ Cache = new HAN[size];
+ for (Size = 0; Size < size; Size ++) {
+ Cache[Size].Ref = 0;
+ Cache[Size].Wav = NULL;
+ }
}
-
-
-FX::~FX (void)
-{
- Clear();
- delete[] Cache;
+FX::~FX(void) {
+ Clear();
+ delete[] Cache;
}
-
-
-
-void FX::Clear (void)
-{
- HAN * p, * q;
- for (p = Cache, q = p+Size; p < q; p ++)
- {
- if (p->Ref)
- {
- p->Ref = 0;
- delete p->Wav;
- p->Wav = NULL;
+void FX::Clear(void) {
+ HAN *p, * q;
+ for (p = Cache, q = p + Size; p < q; p ++) {
+ if (p->Ref) {
+ p->Ref = 0;
+ delete p->Wav;
+ p->Wav = NULL;
+ }
}
- }
- Emm.Release();
- Current = NULL;
+ Emm.Release();
+ Current = NULL;
}
-
-
-
-int FX::Find (int ref)
-{
- HAN * p, * q;
- int i = 0;
- for (p = Cache, q = p+Size; p < q; p ++)
- {
- if (p->Ref == ref) break;
- else ++ i;
- }
- return i;
+int FX::Find(int ref) {
+ HAN *p, * q;
+ int i = 0;
+ for (p = Cache, q = p + Size; p < q; p ++) {
+ if (p->Ref == ref)
+ break;
+ else
+ ++i;
+ }
+ return i;
}
+void FX::Preload(int ref0) {
+ HAN *CacheLim = Cache + Size;
+ int ref;
-
-
-
-
-
-
-
-
-void FX::Preload (int ref0)
-{
- HAN * CacheLim = Cache + Size;
- int ref;
-
- for (ref = ref0; ref < ref0+10; ref ++)
- {
- static char fname[] = "FX00000.WAV";
- wtom(ref, fname+2, 10, 5);
- INI_FILE file = INI_FILE(fname);
- DATACK * wav = LoadWave(&file, &Emm);
- if (wav)
- {
- HAN * p = &Cache[Find(0)];
- if (p >= CacheLim) break;
- p->Wav = wav;
- p->Ref = ref;
+ for (ref = ref0; ref < ref0 + 10; ref ++) {
+ static char fname[] = "FX00000.WAV";
+ wtom(ref, fname + 2, 10, 5);
+ INI_FILE file = INI_FILE(fname);
+ DATACK *wav = LoadWave(&file, &Emm);
+ if (wav) {
+ HAN *p = &Cache[Find(0)];
+ if (p >= CacheLim)
+ break;
+ p->Wav = wav;
+ p->Ref = ref;
+ }
}
- }
}
+DATACK *FX::Load(int idx, int ref) {
+ static char fname[] = "FX00000.WAV";
+ wtom(ref, fname + 2, 10, 5);
-
-
-DATACK * FX::Load (int idx, int ref)
-{
- static char fname[] = "FX00000.WAV";
- wtom(ref, fname+2, 10, 5);
-
- INI_FILE file = INI_FILE(fname);
- DATACK * wav = LoadWave(&file, &Emm);
- if (wav)
- {
- HAN * p = &Cache[idx];
- p->Wav = wav;
- p->Ref = ref;
- }
- return wav;
+ INI_FILE file = INI_FILE(fname);
+ DATACK *wav = LoadWave(&file, &Emm);
+ if (wav) {
+ HAN *p = &Cache[idx];
+ p->Wav = wav;
+ p->Ref = ref;
+ }
+ return wav;
}
-
-
-DATACK * FX::operator [] (int ref)
-{
- int i;
- if ((i = Find(ref)) < Size) Current = Cache[i].Wav;
- else
- {
- if ((i = Find(0)) >= Size)
- {
- Clear();
- i = 0;
+DATACK *FX::operator [](int ref) {
+ int i;
+ if ((i = Find(ref)) < Size)
+ Current = Cache[i].Wav;
+ else {
+ if ((i = Find(0)) >= Size) {
+ Clear();
+ i = 0;
+ }
+ Current = Load(i, ref);
}
- Current = Load(i, ref);
- }
- return Current;
+ return Current;
}
+static uint8 *midi = NULL;
-//-------------------------------------------------------------------------
-
-
-static uint8 * midi = NULL;
-
-
-
-void KillMIDI (void)
-{
- SNDMIDIStop();
- if (midi)
- {
- delete[] midi;
- midi = NULL;
- }
+void KillMIDI(void) {
+ SNDMIDIStop();
+ if (midi) {
+ delete[] midi;
+ midi = NULL;
+ }
}
-
-
-
-void LoadMIDI (int ref)
-{
- static char fn[] = "00.MID";
- wtom(ref, fn, 10, 2);
- if (INI_FILE::Exist(fn))
- {
- KillMIDI();
- INI_FILE mid = fn;
- if (mid.Error == 0)
- {
- uint16 siz = (uint16) mid.Size();
- midi = new uint8[siz];
- if (midi)
- {
- mid.Read(midi, siz);
- if (mid.Error) KillMIDI();
- else
- {
- SNDMIDIStart(midi);
+void LoadMIDI(int ref) {
+ static char fn[] = "00.MID";
+ wtom(ref, fn, 10, 2);
+ if (INI_FILE::Exist(fn)) {
+ KillMIDI();
+ INI_FILE mid = fn;
+ if (mid.Error == 0) {
+ uint16 siz = (uint16) mid.Size();
+ midi = new uint8[siz];
+ if (midi) {
+ mid.Read(midi, siz);
+ if (mid.Error)
+ KillMIDI();
+ else
+ SNDMIDIStart(midi);
+ }
}
- }
}
- }
}
+EC void *Patch(int pat) {
+ void *p = NULL;
+ static char fn[] = "PATCH000.SND";
-
-
-
-EC void * Patch (int pat)
-{
- void * p = NULL;
- static char fn[] = "PATCH000.SND";
-
- wtom(pat, fn+5, 10, 3);
- INI_FILE snd = fn;
- if (! snd.Error)
- {
- uint16 siz = (uint16) snd.Size();
- p = (uint8 *) malloc(siz);
- if (p)
- {
- snd.Read(p, siz);
- if (snd.Error)
- {
- free(p);
- p = NULL;
- }
+ wtom(pat, fn + 5, 10, 3);
+ INI_FILE snd = fn;
+ if (! snd.Error) {
+ uint16 siz = (uint16) snd.Size();
+ p = (uint8 *) malloc(siz);
+ if (p) {
+ snd.Read(p, siz);
+ if (snd.Error) {
+ free(p);
+ p = NULL;
+ }
+ }
}
- }
- return p;
+ return p;
}
} // End of namespace CGE