Mercurial > audlegacy
diff Plugins/Input/console/Classic_Emu.h @ 493:c04dff121e1d trunk
[svn] hostile merge, phase 2: reimport based on new plugin code
author | nenolod |
---|---|
date | Tue, 24 Jan 2006 20:19:01 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/Input/console/Classic_Emu.h Tue Jan 24 20:19:01 2006 -0800 @@ -0,0 +1,48 @@ + +// Classic game music emulator interface base class for emulators which use Blip_Buffer +// for sound output. + +// Game_Music_Emu 0.3.0 + +#ifndef CLASSIC_EMU_H +#define CLASSIC_EMU_H + +#include "Music_Emu.h" +class Blip_Buffer; +class blip_eq_t; +typedef long blip_time_t; + +class Classic_Emu : public Music_Emu { +public: + Classic_Emu(); + ~Classic_Emu(); + blargg_err_t set_sample_rate( long sample_rate ); + void set_buffer( Multi_Buffer* ); + void mute_voices( int ); + void play( long, sample_t* ); + void start_track( int track ); + void set_equalizer( equalizer_t const& ); +public: + // deprecated + blargg_err_t init( long rate ) { return set_sample_rate( rate ); } +protected: + virtual blargg_err_t setup_buffer( long clock_rate ); + virtual void set_voice( int index, Blip_Buffer* center, + Blip_Buffer* left, Blip_Buffer* right ) = 0; + virtual blip_time_t run( int msec, bool* added_stereo ); + virtual blip_time_t run_clocks( blip_time_t, bool* added_stereo ); + virtual void update_eq( blip_eq_t const& ) = 0; +private: + Multi_Buffer* buf; + Multi_Buffer* stereo_buffer; + long clock_rate; +}; + +inline void Classic_Emu::set_buffer( Multi_Buffer* new_buf ) +{ + assert( !buf && new_buf ); + buf = new_buf; +} + +#endif +