diff options
author | athrxx | 2018-12-04 17:49:15 +0100 |
---|---|---|
committer | athrxx | 2019-03-07 19:43:44 +0100 |
commit | 20b378a41a194bd0869bfc2bb16b9a6897bd8bd2 (patch) | |
tree | 78cd4b25468e7aa1103e7ae0c81d91398c38e085 /audio/softsynth/fmtowns_pc98/pc98_audio.h | |
parent | 82a821bf7f25716a124b2d14b26c9c8a28b74e6e (diff) | |
download | scummvm-rg350-20b378a41a194bd0869bfc2bb16b9a6897bd8bd2.tar.gz scummvm-rg350-20b378a41a194bd0869bfc2bb16b9a6897bd8bd2.tar.bz2 scummvm-rg350-20b378a41a194bd0869bfc2bb16b9a6897bd8bd2.zip |
AUDIO: (FM-TOWNS/PC-98) - cleanup
Apart from some basic cleanup this commit reverts a somewhat unfortunate design decision I made. The Kyra/Hof/Lol PC-98 sound drivers shouldn't inherit from the emulator. This commit separates the driver from the emulator putting some common interface in between. This should allow easier implementation of other PC-98 sound drivers.
Diffstat (limited to 'audio/softsynth/fmtowns_pc98/pc98_audio.h')
-rw-r--r-- | audio/softsynth/fmtowns_pc98/pc98_audio.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/audio/softsynth/fmtowns_pc98/pc98_audio.h b/audio/softsynth/fmtowns_pc98/pc98_audio.h new file mode 100644 index 0000000000..b6269f0f67 --- /dev/null +++ b/audio/softsynth/fmtowns_pc98/pc98_audio.h @@ -0,0 +1,84 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef PC98_AUDIO_H +#define PC98_AUDIO_H + +#include "common/scummsys.h" + +namespace Audio { +class Mixer; +} + +class PC98AudioCoreInternal; +class PC98AudioPluginDriver { +public: + enum EmuType { + kTypeTowns, + kType26, + kType86 + }; + + virtual ~PC98AudioPluginDriver() {} + virtual void timerCallbackA() {} + virtual void timerCallbackB() {} +}; + +class PC98AudioCore { +public: + PC98AudioCore(Audio::Mixer *mixer, PC98AudioPluginDriver *driver, PC98AudioPluginDriver::EmuType type, bool externalMutexHandling = false); + ~PC98AudioCore(); + + bool init(); + void reset(); + + void writeReg(uint8 part, uint8 regAddress, uint8 value); + uint8 readReg(uint8 part, uint8 regAddress); + + void writePort(uint16 port, uint8 value); + uint8 readPort(uint16 port); + + void setMusicVolume(int volume); + void setSoundEffectVolume(int volume); + + // Defines the channels used as sound effect channels for the purpose of ScummVM GUI volume control. + // The first 6 bits are the 6 fm channels. The next 3 bits are ssg channels. The next bit is the rhythm channel. + void setSoundEffectChanMask(int mask); + + void ssgSetVolume(int volume); + + class MutexLock { + friend class PC98AudioCore; + public: + ~MutexLock(); + private: + MutexLock(PC98AudioCoreInternal *pc98int); + PC98AudioCoreInternal *_pc98int; + }; + + MutexLock stackLockMutex(); + +private: + PC98AudioCoreInternal *_internal; +}; + +#endif |