aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dbopl.cpp13
-rw-r--r--src/dbopl.h3
2 files changed, 14 insertions, 2 deletions
diff --git a/src/dbopl.cpp b/src/dbopl.cpp
index 54df48c..809d394 100644
--- a/src/dbopl.cpp
+++ b/src/dbopl.cpp
@@ -1551,10 +1551,21 @@ void Handler::Generate( void(*AddSamples_m32)(Bitu,Bit32s*),
AddSamples_m32( samples, buffer );
} else {
chip.GenerateBlock3( samples, buffer );
- AddSamples_s32( samples, buffer );
+ AddSamples_s32( samples, buffer );
}
}
+void Handler::GenerateArr(Bit32s* out, Bitu *samples )
+{
+ if ( GCC_UNLIKELY(*samples > 512) )
+ *samples = 512;
+ if ( !chip.opl3Active ) {
+ chip.GenerateBlock2( *samples, out );
+ } else {
+ chip.GenerateBlock3( *samples, out );
+ }
+}
+
void Handler::Init( Bitu rate ) {
InitTables();
chip.Setup( rate );
diff --git a/src/dbopl.h b/src/dbopl.h
index bf10295..794c645 100644
--- a/src/dbopl.h
+++ b/src/dbopl.h
@@ -265,7 +265,8 @@ struct Handler {
void Generate( void(*AddSamples_m32)(Bitu,Bit32s*),
void(*AddSamples_s32)(Bitu,Bit32s*),
Bitu samples );
- void Init( Bitu rate );
+ void GenerateArr(Bit32s* out, Bitu *samples );
+ void Init( Bitu rate );
};