diff options
Diffstat (limited to 'plugins/gme/game-music-emu-0.6pre/gme/Gbs_Emu.h')
-rw-r--r-- | plugins/gme/game-music-emu-0.6pre/gme/Gbs_Emu.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/plugins/gme/game-music-emu-0.6pre/gme/Gbs_Emu.h b/plugins/gme/game-music-emu-0.6pre/gme/Gbs_Emu.h new file mode 100644 index 00000000..96fd56c9 --- /dev/null +++ b/plugins/gme/game-music-emu-0.6pre/gme/Gbs_Emu.h @@ -0,0 +1,61 @@ +// Nintendo Game Boy GBS music file emulator + +// Game_Music_Emu 0.6-pre +#ifndef GBS_EMU_H +#define GBS_EMU_H + +#include "Classic_Emu.h" +#include "Gbs_Core.h" + +class Gbs_Emu : public Classic_Emu { +public: + // Equalizer profiles for Game Boy speaker and headphones + static equalizer_t const handheld_eq; + static equalizer_t const headphones_eq; + static equalizer_t const cgb_eq; // Game Boy Color headphones have less bass + + // GBS file header (see Gbs_Core.h) + typedef Gbs_Core::header_t header_t; + + // Header for currently loaded file + header_t const& header() const { return core_.header(); } + + // Selects which sound hardware to use. AGB hardware is cleaner than the + // others. Doesn't take effect until next start_track(). + enum sound_t { + sound_dmg = Gb_Apu::mode_dmg, // Game Boy monochrome + sound_cgb = Gb_Apu::mode_cgb, // Game Boy Color + sound_agb = Gb_Apu::mode_agb, // Game Boy Advance + sound_gbs // Use DMG/CGB based on GBS (default) + }; + void set_sound( sound_t s ) { sound_hardware = s; } + + // If true, makes APU more accurate, which results in more clicking. + void enable_clicking( bool enable = true ) { core_.apu().reduce_clicks( !enable ); } + + static gme_type_t static_type() { return gme_gbs_type; } + + Gbs_Core& core() { return core_; } + +// Internal +public: + Gbs_Emu(); + ~Gbs_Emu(); + +protected: + // Overrides + virtual blargg_err_t track_info_( track_info_t*, int track ) const; + virtual blargg_err_t load_( Data_Reader& ); + 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& ); + virtual void unload(); + +private: + sound_t sound_hardware; + Gbs_Core core_; +}; + +#endif |