diff options
Diffstat (limited to 'engines/scumm/player_towns.h')
-rw-r--r-- | engines/scumm/player_towns.h | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/engines/scumm/player_towns.h b/engines/scumm/player_towns.h index 6d87c93c09..3a36ea5daf 100644 --- a/engines/scumm/player_towns.h +++ b/engines/scumm/player_towns.h @@ -32,10 +32,50 @@ namespace Scumm { -class Player_Towns : public MusicEngine { +class Player_Towns { public: - Player_Towns(ScummEngine *vm, Audio::Mixer *mixer); - virtual ~Player_Towns(); + Player_Towns(ScummEngine *vm); + virtual ~Player_Towns() {} + + virtual void saveLoadWithSerializer(Serializer *ser); + virtual void restoreAfterLoad(); + +protected: + void playPcmTrack(int sound, const uint8 *data, int velo = 0, int pan = 64, int note = 0); + void stopPcmTrack(int sound); + + int getNextFreePcmChannel(int sound, int sfxChanRelIndex); + + struct PcmCurrentSound { + uint16 index; + uint16 chan; + uint8 note; + uint8 velo; + uint8 pan; + uint8 paused; + uint8 looping; + uint32 priority; + } _pcmCurrentSound[9]; + + struct SoundOvrParameters { + uint8 vLeft; + uint8 vRight; + uint8 note; + }; + + uint8 _unkFlags; + + SoundOvrParameters *_soundOverride; + SoundOvrParameters _ovrCur; + + TownsAudioInterface *_intf; + ScummEngine *_vm; +}; + +class Player_Towns_v1 : public Player_Towns, public MusicEngine { +public: + Player_Towns_v1(ScummEngine *vm, Audio::Mixer *mixer); + virtual ~Player_Towns_v1(); bool init(); @@ -49,7 +89,7 @@ public: int getCurrentCdaSound() { return _cdaCurrentSound; } int getCurrentCdaVolume() { return (_cdaVolLeft + _cdaVolRight + 1) >> 1; } - virtual int32 doCommand(int numargs, int args[]); + int32 doCommand(int numargs, int args[]); void setVolumeCD(int left, int right); void setSoundVolume(int sound, int left, int right); @@ -60,45 +100,17 @@ public: TownsEuphonyDriver *driver() { return _driver; } -protected: - virtual int getNextFreePcmChannel(int sound, int sfxChanRelIndex); - private: void restartLoopingSounds(); void startSoundEx(int sound, int velo, int pan, int note); void stopSoundSuspendLooping(int sound); void playEuphonyTrack(int sound, const uint8 *data); - void playPcmTrack(int sound, const uint8 *data, int velo = 0, int pan = 64, int note = 0); void playCdaTrack(int sound, const uint8 *data, bool skipTrackVelo = false); - void stopPcmTrack(int sound); - uint8 _cdaVolLeft; uint8 _cdaVolRight; - - struct SoundOvrParameters { - uint8 vLeft; - uint8 vRight; - uint8 note; - }; - - SoundOvrParameters *_soundOverride; - SoundOvrParameters _ovrCur; - uint8 _unkFlags; - - struct PcmCurrentSound { - uint16 index; - uint16 chan; - uint8 note; - uint8 velo; - uint8 pan; - uint8 paused; - uint8 looping; - uint32 priority; - } _pcmCurrentSound[9]; - uint8 _eupCurrentSound; uint8 _eupLooping; uint8 _eupVolLeft; @@ -112,7 +124,6 @@ private: uint8 _cdaNumLoopsTemp; TownsEuphonyDriver *_driver; - ScummEngine *_vm; }; } // End of namespace Scumm |