summaryrefslogtreecommitdiff
path: root/plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h')
-rw-r--r--plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h b/plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h
new file mode 100644
index 00000000..5b82af5e
--- /dev/null
+++ b/plugins/gme/game-music-emu-0.6pre/gme/Ym2413_Emu.h
@@ -0,0 +1,37 @@
+// YM2413 FM sound chip emulator interface
+
+// Game_Music_Emu 0.6-pre
+#ifndef YM2413_EMU_H
+#define YM2413_EMU_H
+
+struct OPLL;
+
+class Ym2413_Emu {
+ void* opll;
+public:
+ Ym2413_Emu();
+ ~Ym2413_Emu();
+
+ static bool supported() { return true; }
+
+ // Sets output sample rate and chip clock rates, in Hz. Returns non-zero
+ // if error.
+ int set_rate( double sample_rate, double clock_rate );
+
+ // Resets to power-up state
+ void reset();
+
+ // Mutes voice n if bit n (1 << n) of mask is set
+ enum { channel_count = 14 };
+ void mute_voices( int mask );
+
+ // Writes data to addr
+ void write( int addr, int data );
+
+ // Runs and writes pair_count*2 samples to output
+ typedef short sample_t;
+ enum { out_chan_count = 2 }; // stereo
+ void run( int pair_count, sample_t* out );
+};
+
+#endif