mirror of
https://github.com/LMMS/lmms.git
synced 2026-02-05 04:04:10 -05:00
56 lines
1.2 KiB
C++
56 lines
1.2 KiB
C++
|
|
// Simplified Nintendo Game Boy PAPU sound chip emulator
|
|
|
|
// Gb_Snd_Emu 0.1.4. Copyright (C) 2003-2005 Shay Green. GNU LGPL license.
|
|
|
|
#ifndef BASIC_GB_APU_H
|
|
#define BASIC_GB_APU_H
|
|
|
|
#include "gb_apu/Gb_Apu.h"
|
|
#include "gb_apu/Multi_Buffer.h"
|
|
#include "MemoryManager.h"
|
|
|
|
class Basic_Gb_Apu {
|
|
MM_OPERATORS
|
|
public:
|
|
Basic_Gb_Apu();
|
|
~Basic_Gb_Apu();
|
|
|
|
// Set output sample rate
|
|
blargg_err_t set_sample_rate( long rate );
|
|
|
|
// Pass reads and writes in the range 0xff10-0xff3f
|
|
void write_register( gb_addr_t, int data );
|
|
int read_register( gb_addr_t );
|
|
|
|
// End a 1/60 sound frame and add samples to buffer
|
|
void end_frame();
|
|
|
|
// Samples are generated in stereo, left first. Sample counts are always
|
|
// a multiple of 2.
|
|
|
|
// Number of samples in buffer
|
|
long samples_avail() const;
|
|
|
|
// Read at most 'count' samples out of buffer and return number actually read
|
|
typedef blip_sample_t sample_t;
|
|
long read_samples( sample_t* out, long count );
|
|
|
|
//added by 589 --->
|
|
void reset();
|
|
void treble_eq( const blip_eq_t& eq );
|
|
void bass_freq( int bf );
|
|
//<---
|
|
|
|
private:
|
|
Gb_Apu apu;
|
|
Stereo_Buffer buf;
|
|
blip_time_t time;
|
|
|
|
// faked CPU timing
|
|
blip_time_t clock() { return time += 4; }
|
|
};
|
|
|
|
#endif
|
|
|