summaryrefslogtreecommitdiff
path: root/plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h')
-rw-r--r--plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h b/plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h
new file mode 100644
index 00000000..2a896fef
--- /dev/null
+++ b/plugins/gme/game-music-emu-0.6.0/gme/Sms_Oscs.h
@@ -0,0 +1,49 @@
+// Private oscillators used by Sms_Apu
+
+// Sms_Snd_Emu 0.1.4
+#ifndef SMS_OSCS_H
+#define SMS_OSCS_H
+
+#include "blargg_common.h"
+#include "Blip_Buffer.h"
+
+struct Sms_Osc
+{
+ Blip_Buffer* outputs [4]; // NULL, right, left, center
+ Blip_Buffer* output;
+ int output_select;
+
+ int delay;
+ int last_amp;
+ int volume;
+
+ Sms_Osc();
+ void reset();
+};
+
+struct Sms_Square : Sms_Osc
+{
+ int period;
+ int phase;
+
+ typedef Blip_Synth<blip_good_quality,1> Synth;
+ const Synth* synth;
+
+ void reset();
+ void run( blip_time_t, blip_time_t );
+};
+
+struct Sms_Noise : Sms_Osc
+{
+ const int* period;
+ unsigned shifter;
+ unsigned feedback;
+
+ typedef Blip_Synth<blip_med_quality,1> Synth;
+ Synth synth;
+
+ void reset();
+ void run( blip_time_t, blip_time_t );
+};
+
+#endif