Mercurial > audlegacy-plugins
diff src/console/Gym_Emu.h @ 316:fb513e10174e trunk
[svn] - merge libconsole-blargg into mainline libconsole:
+ obsoletes plugins-ugly:sapplug
| author | nenolod |
|---|---|
| date | Thu, 30 Nov 2006 19:54:33 -0800 |
| parents | 3da1b8942b8b |
| children | 986f098da058 |
line wrap: on
line diff
--- a/src/console/Gym_Emu.h Wed Nov 29 14:42:11 2006 -0800 +++ b/src/console/Gym_Emu.h Thu Nov 30 19:54:33 2006 -0800 @@ -1,8 +1,7 @@ - -// Sega Genesis GYM music file emulator +// Sega Genesis/Mega Drive GYM music file emulator +// Includes with PCM timing recovery to improve sample quality. -// Game_Music_Emu 0.3.0 - +// Game_Music_Emu 0.5.1 #ifndef GYM_EMU_H #define GYM_EMU_H @@ -13,7 +12,6 @@ class Gym_Emu : public Music_Emu, private Dual_Resampler { public: - // GYM file header struct header_t { @@ -26,43 +24,33 @@ char comment [256]; byte loop_start [4]; // in 1/60 seconds, 0 if not looped byte packed [4]; - - enum { track_count = 1 }; // one track per file - enum { author = 0 }; // no author field }; BOOST_STATIC_ASSERT( sizeof (header_t) == 428 ); - // Load GYM data - blargg_err_t load( Data_Reader& ); - - // Load GYM file using already-loaded header and remaining data - blargg_err_t load( header_t const&, Data_Reader& ); - blargg_err_t load( void const* data, long size ); // keeps pointer to data - - // Header for currently loaded GYM (cleared to zero if GYM lacks header) + // Header for currently loaded file header_t const& header() const { return header_; } - // Length of track in 1/60 seconds - enum { gym_rate = 60 }; // GYM time units (frames) per second - long track_length() const; + static gme_type_t static_type() { return gme_gym_type; } + +public: + // deprecated + Music_Emu::load; + blargg_err_t load( header_t const& h, Data_Reader& in ) // use Remaining_Reader + { return load_remaining_( &h, sizeof h, in ); } + enum { gym_rate = 60 }; + long track_length() const; // use track_info() public: - typedef Music_Emu::sample_t sample_t; Gym_Emu(); ~Gym_Emu(); - blargg_err_t set_sample_rate( long sample_rate ); - void mute_voices( int ); - void start_track( int ); - void play( long count, sample_t* ); - const char** voice_names() const; - void skip( long count ); -public: - // deprecated - blargg_err_t init( long r, double gain = 1.5, double oversample = 5 / 3.0 ) - { - return set_sample_rate( r ); - } protected: + blargg_err_t load_mem_( byte const*, long ); + blargg_err_t track_info_( track_info_t*, int track ) const; + blargg_err_t set_sample_rate_( long sample_rate ); + blargg_err_t start_track_( int ); + blargg_err_t play_( long count, sample_t* ); + void mute_voices_( int ); + void set_tempo_( double ); int play_frame( blip_time_t blip_time, int sample_count, sample_t* buf ); private: // sequence data begin, loop begin, current position, end @@ -70,11 +58,10 @@ const byte* loop_begin; const byte* pos; const byte* data_end; - long loop_remain; // frames remaining until loop beginning has been located - blargg_vector<byte> mem; + blargg_long loop_remain; // frames remaining until loop beginning has been located header_t header_; - blargg_err_t load_( const void* file, long data_offset, long file_size ); - void unload(); + double fm_sample_rate; + blargg_long clocks_per_frame; void parse_frame(); // dac (pcm) @@ -93,4 +80,3 @@ }; #endif -
