aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/sound.h
diff options
context:
space:
mode:
authorPaul Gilbert2011-06-05 08:42:26 +1000
committerPaul Gilbert2011-06-05 08:42:26 +1000
commitb855a87d708b292df2813c0f676fd411a1021d81 (patch)
tree12103cabb614b2a3ec3b59e322939c0b3ef18963 /engines/tsage/sound.h
parent12464b101fc92f0f148f59e906829c568280a455 (diff)
downloadscummvm-rg350-b855a87d708b292df2813c0f676fd411a1021d81.tar.gz
scummvm-rg350-b855a87d708b292df2813c0f676fd411a1021d81.tar.bz2
scummvm-rg350-b855a87d708b292df2813c0f676fd411a1021d81.zip
TSAGE: Removed CRUISE sound code that didn't work
Diffstat (limited to 'engines/tsage/sound.h')
-rw-r--r--engines/tsage/sound.h170
1 files changed, 1 insertions, 169 deletions
diff --git a/engines/tsage/sound.h b/engines/tsage/sound.h
index 7ad4da5755..e0c550562c 100644
--- a/engines/tsage/sound.h
+++ b/engines/tsage/sound.h
@@ -44,7 +44,7 @@ struct trackInfoStruct {
int _rlbList[SOUND_ARR_SIZE];
int _arr2[SOUND_ARR_SIZE];
byte *_channelData[SOUND_ARR_SIZE];
- int field82[SOUND_ARR_SIZE];
+ int _channelNum[SOUND_ARR_SIZE];
int field92[SOUND_ARR_SIZE];
int fielda2[SOUND_ARR_SIZE];
int fieldb2[SOUND_ARR_SIZE];
@@ -341,184 +341,16 @@ public:
void release() { _sound.release(); }
};
-/*--------------------------------------------------------------------------
- * Adlib related classes
- *--------------------------------------------------------------------------
- */
-
-struct AdLibRegisterSoundInstrument {
- uint8 vibrato;
- uint8 attackDecay;
- uint8 sustainRelease;
- uint8 feedbackStrength;
- uint8 keyScaling;
- uint8 outputLevel;
- uint8 freqMod;
-};
-
-struct AdLibSoundInstrument {
- byte mode;
- byte channel;
- AdLibRegisterSoundInstrument regMod;
- AdLibRegisterSoundInstrument regCar;
- byte waveSelectMod;
- byte waveSelectCar;
- byte amDepth;
-};
-
-struct VolumeEntry {
- int original;
- int adjusted;
-};
-
-class PCSoundDriver {
-public:
- typedef void (*UpdateCallback)(void *);
-
- PCSoundDriver() { _upCb = NULL, _upRef = NULL, _musicVolume = 0, _sfxVolume = 0; }
- virtual ~PCSoundDriver() {}
-
- virtual void setupChannel(int channel, const byte *data, int instrument, int volume) = 0;
- virtual void setChannelFrequency(int channel, int frequency) = 0;
- virtual void stopChannel(int channel) = 0;
- virtual void playSample(const byte *data, int size, int channel, int volume) = 0;
- virtual void stopAll() = 0;
- virtual const char *getInstrumentExtension() const { return ""; }
- virtual void syncSounds();
-
- void setUpdateCallback(UpdateCallback upCb, void *ref);
- void resetChannel(int channel);
- void findNote(int freq, int *note, int *oct) const;
-protected:
- UpdateCallback _upCb;
- void *_upRef;
- uint8 _musicVolume;
- uint8 _sfxVolume;
-
- static const int _noteTable[];
- static const int _noteTableCount;
-};
-
-class AdlibDriverBase : public PCSoundDriver, Audio::AudioStream {
-public:
- AdlibDriverBase(Audio::Mixer *mixer);
- virtual ~AdlibDriverBase();
-
- // PCSoundDriver interface
- virtual void setupChannel(int channel, const byte *data, int instrument, int volume);
- virtual void stopChannel(int channel);
- virtual void stopAll();
-
- // AudioStream interface
- virtual int readBuffer(int16 *buffer, const int numSamples);
- virtual bool isStereo() const { return false; }
- virtual bool endOfData() const { return false; }
- virtual int getRate() const { return _sampleRate; }
-
- void initCard();
- void update(int16 *buf, int len);
- void setupInstrument(const byte *data, int channel);
- void setupInstrument(const AdLibSoundInstrument *ins, int channel);
- void loadRegisterInstrument(const byte *data, AdLibRegisterSoundInstrument *reg);
- virtual void loadInstrument(const byte *data, AdLibSoundInstrument *asi) = 0;
- virtual void syncSounds();
-
- void adjustVolume(int channel, int volume);
-
-protected:
- FM_OPL *_opl;
- int _sampleRate;
- Audio::Mixer *_mixer;
- Audio::SoundHandle _soundHandle;
-
- byte _vibrato;
- VolumeEntry _channelsVolumeTable[10];
- AdLibSoundInstrument _instrumentsTable[10];
-
- static const int _freqTable[];
- static const int _freqTableCount;
- static const int _operatorsTable[];
- static const int _operatorsTableCount;
- static const int _voiceOperatorsTable[];
- static const int _voiceOperatorsTableCount;
-};
-
-class AdlibSoundDriverADL : public AdlibDriverBase {
-public:
- AdlibSoundDriverADL(Audio::Mixer *mixer) : AdlibDriverBase(mixer) {}
- virtual const char *getInstrumentExtension() const { return ".ADL"; }
- virtual void loadInstrument(const byte *data, AdLibSoundInstrument *asi);
- virtual void setChannelFrequency(int channel, int frequency);
- virtual void playSample(const byte *data, int size, int channel, int volume);
-};
-
-class PCSoundFxPlayer {
-private:
- enum {
- NUM_INSTRUMENTS = 15,
- NUM_CHANNELS = 4
- };
-
- void update();
- void handleEvents();
- void handlePattern(int channel, const byte *patternData);
-
- char _musicName[33];
- bool _playing;
- bool _songPlayed;
- int _currentPos;
- int _currentOrder;
- int _numOrders;
- int _eventsDelay;
- bool _looping;
- int _fadeOutCounter;
- int _updateTicksCounter;
- int _instrumentsChannelTable[NUM_CHANNELS];
- byte *_sfxData;
- byte *_instrumentsData[NUM_INSTRUMENTS];
- PCSoundDriver *_driver;
-
-public:
- PCSoundFxPlayer(PCSoundDriver *driver);
- ~PCSoundFxPlayer();
-
- bool load(const char *song);
- void play();
- void stop();
- void unload();
- void fadeOut();
- void doSync(Common::Serializer &s);
-
- static void updateCallback(void *ref);
-
- bool songLoaded() const { return _sfxData != NULL; }
- bool songPlayed() const { return _songPlayed; }
- bool playing() const { return _playing; }
- uint8 numOrders() const { assert(_sfxData); return _sfxData[470]; }
- void setNumOrders(uint8 v) { assert(_sfxData); _sfxData[470] = v; }
- void setPattern(int offset, uint8 value) { assert(_sfxData); _sfxData[472 + offset] = value; }
- const char *musicName() { return _musicName; }
-
- // Note: Original game never actually uses looping variable. Songs are hardcoded to loop
- bool looping() const { return _looping; }
- void setLooping(bool v) { _looping = v; }
-};
-
class AdlibSoundDriver: public SoundDriver {
private:
GroupData _groupData;
Audio::Mixer *_mixer;
- PCSoundDriver *_soundDriver;
- PCSoundFxPlayer *_player;
public:
AdlibSoundDriver();
virtual void setVolume(int volume) {}
virtual void installPatchBank(const byte *data) {}
virtual const GroupData *getGroupData() { return &_groupData; }
- virtual void play(const byte *data, int size, int channel, int volume) {
- _soundDriver->playSample(data, size, channel, volume);
- }
};
} // End of namespace tSage