aboutsummaryrefslogtreecommitdiff
path: root/sound/softsynth/fmtowns_pc98/towns_audio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/softsynth/fmtowns_pc98/towns_audio.cpp')
-rw-r--r--sound/softsynth/fmtowns_pc98/towns_audio.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/sound/softsynth/fmtowns_pc98/towns_audio.cpp b/sound/softsynth/fmtowns_pc98/towns_audio.cpp
index 46569dd842..bef062b8e6 100644
--- a/sound/softsynth/fmtowns_pc98/towns_audio.cpp
+++ b/sound/softsynth/fmtowns_pc98/towns_audio.cpp
@@ -200,7 +200,7 @@ TownsAudioInterface::TownsAudioInterface(Audio::Mixer *mixer, TownsAudioInterfac
INTCB(notImpl),
// 72
INTCB(notImpl),
- INTCB(notImpl),
+ INTCB(cdaToggle),
INTCB(notImpl),
INTCB(notImpl),
// 76
@@ -222,9 +222,19 @@ TownsAudioInterface::TownsAudioInterface(Audio::Mixer *mixer, TownsAudioInterfac
_timerBase = (uint32)(_baserate * 1000000.0f);
_tickLength = 2 * _timerBase;
+
+ setTimerCallbackA((ChipTimerProc)&TownsAudioInterface::timerCallbackA);
+ setTimerCallbackB((ChipTimerProc)&TownsAudioInterface::timerCallbackB);
}
TownsAudioInterface::~TownsAudioInterface() {
+ Common::StackLock lock(_mutex);
+ reset();
+ _ready = false;
+
+ setTimerCallbackA();
+ setTimerCallbackB();
+
delete[] _fmSaveReg[0];
delete[] _fmSaveReg[1];
delete[] _fmInstruments;
@@ -759,6 +769,12 @@ int TownsAudioInterface::intf_updateOutputVolume(va_list &args) {
return 0;
}
+int TownsAudioInterface::intf_cdaToggle(va_list &args) {
+ //int mode = va_arg(args, int);
+ //_unkMask = mode ? 0x7f : 0x3f;
+ return 0;
+}
+
int TownsAudioInterface::intf_pcmUpdateEnvelopeGenerator(va_list &args) {
for (int i = 0; i < 8; i++)
pcmUpdateEnvelopeGenerator(i);