aboutsummaryrefslogtreecommitdiff
path: root/audio/softsynth/opl/mame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'audio/softsynth/opl/mame.cpp')
-rw-r--r--audio/softsynth/opl/mame.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/audio/softsynth/opl/mame.cpp b/audio/softsynth/opl/mame.cpp
index 1a5810f6c8..fe23d300fa 100644
--- a/audio/softsynth/opl/mame.cpp
+++ b/audio/softsynth/opl/mame.cpp
@@ -48,15 +48,22 @@ namespace OPL {
namespace MAME {
OPL::~OPL() {
+ stopCallbacks();
MAME::OPLDestroy(_opl);
_opl = 0;
}
bool OPL::init() {
- if (_opl)
+ if (_opl) {
+ stopCallbacks();
MAME::OPLDestroy(_opl);
+ }
_opl = MAME::makeAdLibOPL(g_system->getMixer()->getOutputRate());
+
+ // FIXME: Remove this once EmulatedOPL is actually controlling playback
+ start(0);
+
return (_opl != 0);
}
@@ -76,7 +83,7 @@ void OPL::writeReg(int r, int v) {
MAME::OPLWriteReg(_opl, r, v);
}
-void OPL::readBuffer(int16 *buffer, int length) {
+void OPL::generateSamples(int16 *buffer, int length) {
MAME::YM3812UpdateOne(_opl, buffer, length);
}