summaryrefslogtreecommitdiff
path: root/plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h')
-rw-r--r--plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h b/plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h
new file mode 100644
index 00000000..198c27a1
--- /dev/null
+++ b/plugins/gme/game-music-emu-0.6pre/gme/Sap_Emu.h
@@ -0,0 +1,51 @@
+// Atari XL/XE SAP music file emulator
+
+// Game_Music_Emu 0.6-pre
+#ifndef SAP_EMU_H
+#define SAP_EMU_H
+
+#include "Classic_Emu.h"
+#include "Sap_Apu.h"
+#include "Sap_Core.h"
+
+class Sap_Emu : public Classic_Emu {
+public:
+ enum { max_tracks = 32 }; // TODO: no fixed limit
+
+ // SAP file info (see Sap_Core.h for more)
+ struct info_t : Sap_Core::info_t {
+ byte const* rom_data;
+ const char* warning;
+ int track_count;
+ int track_times [max_tracks];
+ char author [256];
+ char name [256];
+ char copyright [ 32];
+ };
+
+ // Info for currently loaded file
+ info_t const& info() const { return info_; }
+
+ static gme_type_t static_type() { return gme_sap_type; }
+
+// Implementation
+public:
+ Sap_Emu();
+ ~Sap_Emu();
+
+protected:
+ virtual blargg_err_t track_info_( track_info_t*, int track ) const;
+ virtual blargg_err_t load_mem_( byte const [], int );
+ virtual blargg_err_t start_track_( int );
+ virtual blargg_err_t run_clocks( blip_time_t&, int );
+ virtual void set_tempo_( double );
+ virtual void set_voice( int, Blip_Buffer*, Blip_Buffer*, Blip_Buffer* );
+ virtual void update_eq( blip_eq_t const& );
+
+private:
+ info_t info_;
+ byte const* file_end;
+ Sap_Core core;
+};
+
+#endif