LMMS
Loading...
Searching...
No Matches
Nes_Apu Class Reference

#include <Nes_Apu.h>

Public Types

enum  { start_addr = 0x4000 }
enum  { end_addr = 0x4017 }
enum  { status_addr = 0x4015 }
enum  { osc_count = 5 }
enum  { no_irq = INT_MAX / 2 + 1 }
enum  { irq_waiting = 0 }

Public Member Functions

void output (Blip_Buffer *)
void dmc_reader (int(*callback)(void *user_data, nes_addr_t), void *user_data=NULL)
void write_register (nes_time_t, nes_addr_t, int data)
int read_status (nes_time_t)
void end_frame (nes_time_t)
void reset (bool pal_mode=false, int initial_dmc_dac=0)
void set_tempo (double)
void save_state (apu_state_t *out) const
void load_state (apu_state_t const &)
void volume (double)
void treble_eq (const blip_eq_t &)
void osc_output (int index, Blip_Buffer *buffer)
void irq_notifier (void(*callback)(void *user_data), void *user_data=NULL)
nes_time_t earliest_irq (nes_time_t) const
int count_dmc_reads (nes_time_t t, nes_time_t *last_read=NULL) const
nes_time_t next_dmc_read_time () const
void run_until (nes_time_t)
 Nes_Apu ()

Private Member Functions

void enable_nonlinear (double volume)
 Nes_Apu (const Nes_Apu &)
Nes_Apuoperator= (const Nes_Apu &)
void irq_changed ()
void state_restored ()
void run_until_ (nes_time_t)

Static Private Member Functions

static double nonlinear_tnd_gain ()

Private Attributes

Nes_Oscoscs [osc_count]
Nes_Square square1
Nes_Square square2
Nes_Noise noise
Nes_Triangle triangle
Nes_Dmc dmc
double tempo_
nes_time_t last_time
nes_time_t last_dmc_time
nes_time_t earliest_irq_
nes_time_t next_irq
int frame_period
int frame_delay
int frame
int osc_enables
int frame_mode
bool irq_flag
void(* irq_notifier_ )(void *user_data)
voidirq_data
Nes_Square::Synth square_synth

Friends

class Nes_Nonlinearizer
struct Nes_Dmc
class Nes_Core

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
end_addr 

◆ anonymous enum

anonymous enum
Enumerator
no_irq 

◆ anonymous enum

anonymous enum
Enumerator
irq_waiting 

◆ anonymous enum

anonymous enum
Enumerator
status_addr 

◆ anonymous enum

anonymous enum
Enumerator
start_addr 

◆ anonymous enum

anonymous enum
Enumerator
osc_count 

Constructor & Destructor Documentation

◆ Nes_Apu() [1/2]

Nes_Apu::Nes_Apu ( )

◆ Nes_Apu() [2/2]

Nes_Apu::Nes_Apu ( const Nes_Apu & )
private

Member Function Documentation

◆ count_dmc_reads()

int Nes_Apu::count_dmc_reads ( nes_time_t t,
nes_time_t * last_read = NULL ) const
inline

◆ dmc_reader()

void Nes_Apu::dmc_reader ( int(* callback )(void *user_data, nes_addr_t),
void * user_data = NULL )
inline

◆ earliest_irq()

nes_time_t Nes_Apu::earliest_irq ( nes_time_t ) const
inline

◆ enable_nonlinear()

void Nes_Apu::enable_nonlinear ( double volume)
private

◆ end_frame()

void Nes_Apu::end_frame ( nes_time_t end_time)

◆ irq_changed()

void Nes_Apu::irq_changed ( )
private

◆ irq_notifier()

void Nes_Apu::irq_notifier ( void(* callback )(void *user_data),
void * user_data = NULL )
inline

◆ load_state()

void Nes_Apu::load_state ( apu_state_t const & )

◆ next_dmc_read_time()

nes_time_t Nes_Apu::next_dmc_read_time ( ) const
inline

◆ nonlinear_tnd_gain()

double Nes_Apu::nonlinear_tnd_gain ( )
inlinestaticprivate

◆ operator=()

Nes_Apu & Nes_Apu::operator= ( const Nes_Apu & )
private

◆ osc_output()

void Nes_Apu::osc_output ( int index,
Blip_Buffer * buffer )
inline

◆ output()

void Nes_Apu::output ( Blip_Buffer * buffer)

◆ read_status()

int Nes_Apu::read_status ( nes_time_t time)

◆ reset()

void Nes_Apu::reset ( bool pal_mode = false,
int initial_dmc_dac = 0 )

◆ run_until()

void Nes_Apu::run_until ( nes_time_t end_time)

◆ run_until_()

void Nes_Apu::run_until_ ( nes_time_t end_time)
private

◆ save_state()

void Nes_Apu::save_state ( apu_state_t * out) const

◆ set_tempo()

void Nes_Apu::set_tempo ( double t)

◆ state_restored()

void Nes_Apu::state_restored ( )
private

◆ treble_eq()

void Nes_Apu::treble_eq ( const blip_eq_t & eq)

◆ volume()

void Nes_Apu::volume ( double v)

◆ write_register()

void Nes_Apu::write_register ( nes_time_t time,
nes_addr_t addr,
int data )

◆ Nes_Core

friend class Nes_Core
friend

◆ Nes_Dmc

friend struct Nes_Dmc
friend

◆ Nes_Nonlinearizer

friend class Nes_Nonlinearizer
friend

Member Data Documentation

◆ dmc

Nes_Dmc Nes_Apu::dmc
private

◆ earliest_irq_

nes_time_t Nes_Apu::earliest_irq_
private

◆ frame

int Nes_Apu::frame
private

◆ frame_delay

int Nes_Apu::frame_delay
private

◆ frame_mode

int Nes_Apu::frame_mode
private

◆ frame_period

int Nes_Apu::frame_period
private

◆ irq_data

void* Nes_Apu::irq_data
private

◆ irq_flag

bool Nes_Apu::irq_flag
private

◆ irq_notifier_

void(* Nes_Apu::irq_notifier_) (void *user_data)
private

◆ last_dmc_time

nes_time_t Nes_Apu::last_dmc_time
private

◆ last_time

nes_time_t Nes_Apu::last_time
private

◆ next_irq

nes_time_t Nes_Apu::next_irq
private

◆ noise

Nes_Noise Nes_Apu::noise
private

◆ osc_enables

int Nes_Apu::osc_enables
private

◆ oscs

Nes_Osc* Nes_Apu::oscs[osc_count]
private

◆ square1

Nes_Square Nes_Apu::square1
private

◆ square2

Nes_Square Nes_Apu::square2
private

◆ square_synth

Nes_Square::Synth Nes_Apu::square_synth
private

◆ tempo_

double Nes_Apu::tempo_
private

◆ triangle

Nes_Triangle Nes_Apu::triangle
private

The documentation for this class was generated from the following files: