Mercurial > audlegacy-plugins
view src/console/Gbs_Emu.h @ 88:80a28e538008 trunk
[svn] - Replace ?= at CFLAGS, CPPFLAGS and CXXFLAGS with +=
- Replace ?= at CC, CPP and CXX with =
The reason for this is that on some systems CC, CFLAGS, CPP, CPPFLAGS,
CXX and CXXFLAGS are set by default and therefore are already set at
this step so that it can happen that the wrong variables are used (or
the ones from the configure script are ignored).
author | js |
---|---|
date | Sat, 07 Oct 2006 13:34:06 -0700 |
parents | 3da1b8942b8b |
children | fb513e10174e |
line wrap: on
line source
// Nintendo Game Boy GBS music file emulator // Game_Music_Emu 0.3.0 #ifndef GBS_EMU_H #define GBS_EMU_H #include "Classic_Emu.h" #include "Gb_Apu.h" #include "Gb_Cpu.h" class Gbs_Emu : public Classic_Emu { public: // Sets internal gain, where 1.0 results in almost no clamping. Default gain // roughly matches volume of other emulators. Gbs_Emu( double gain = 1.2 ); // GBS file header struct header_t { char tag [3]; byte vers; byte track_count; byte first_track; byte load_addr [2]; byte init_addr [2]; byte play_addr [2]; byte stack_ptr [2]; byte timer_modulo; byte timer_mode; char game [32]; char author [32]; char copyright [32]; enum { song = 0 }; // no song titles }; BOOST_STATIC_ASSERT( sizeof (header_t) == 112 ); // Load GBS data blargg_err_t load( Data_Reader& ); // Load GBS using already-loaded header and remaining data blargg_err_t load( header_t const&, Data_Reader& ); // Header for currently loaded GBS header_t const& header() const { return header_; } // Equalizer profiles for Game Boy Color speaker and headphones static equalizer_t const handheld_eq; static equalizer_t const headphones_eq; public: ~Gbs_Emu(); const char** voice_names() const; void start_track( int ); protected: void set_voice( int, Blip_Buffer*, Blip_Buffer*, Blip_Buffer* ); void update_eq( blip_eq_t const& ); blip_time_t run_clocks( blip_time_t, bool* ); private: // rom const byte* rom_bank; blargg_vector<byte> rom; void unload(); int bank_count; void set_bank( int ); static void write_rom( Gbs_Emu*, gb_addr_t, int ); static int read_rom( Gbs_Emu*, gb_addr_t ); static int read_bank( Gbs_Emu*, gb_addr_t ); // state gb_addr_t load_addr; gb_addr_t init_addr; gb_addr_t play_addr; gb_addr_t stack_ptr; int timer_modulo_init; int timer_mode; // timer gb_time_t cpu_time; gb_time_t play_period; gb_time_t next_play; int double_speed; // hardware Gb_Apu apu; void set_timer( int tma, int tmc ); static int read_io( Gbs_Emu*, gb_addr_t ); static void write_io( Gbs_Emu*, gb_addr_t, int ); static int read_unmapped( Gbs_Emu*, gb_addr_t ); static void write_unmapped( Gbs_Emu*, gb_addr_t, int ); // large objects header_t header_; byte hi_page [0x100]; Gb_Cpu cpu; void cpu_jsr( gb_addr_t ); gb_time_t clock() const; byte ram [0x4000]; static int read_ram( Gbs_Emu*, gb_addr_t ); static void write_ram( Gbs_Emu*, gb_addr_t, int ); }; #endif