LMMS
Loading...
Searching...
No Matches
Snes_Spc Struct Reference

#include <Snes_Spc.h>

Classes

struct  regs_t
struct  Timer
struct  state_t
struct  spc_file_t

Public Types

enum  { sample_rate = 32000 }
enum  { rom_size = 0x40 }
enum  { clock_rate = 1024000 }
enum  { clocks_per_sample = 32 }
enum  { port_count = 4 }
enum  { voice_count = 8 }
enum  { tempo_unit = 0x100 }
enum  { spc_min_file_size = 0x10180 }
enum  { spc_file_size = 0x10200 }
enum  { reg_count = 0x10 }
enum  { timer_count = 3 }
enum  { extra_size = Spc_Dsp::extra_size }
enum  { signature_size = 35 }
typedef short sample_t
typedef int time_t

Public Member Functions

blargg_err_t init ()
void init_rom (uint8_t const rom[rom_size])
void set_output (sample_t *out, int out_size)
int sample_count () const
void reset ()
void soft_reset ()
int read_port (time_t, int port)
void write_port (time_t, int port, int data)
void end_frame (time_t end_time)
void mute_voices (int mask)
void disable_surround (bool disable=true)
void set_tempo (int)
blargg_err_t load_spc (void const *in, long size)
void clear_echo ()
blargg_err_t play (int count, sample_t *out)
blargg_err_t skip (int count)
regs_tsmp_regs ()
uint8_tsmp_ram ()
void run_until (time_t t)

Public Attributes

BLARGG_DISABLE_NOTHROW typedef int rel_time_t

Private Types

enum  { rom_addr = 0xFFC0 }
enum  { skipping_time = 127 }
enum  { cpu_pad_fill = 0xFF }
enum  {
  r_test = 0x0 , r_control = 0x1 , r_dspaddr = 0x2 , r_dspdata = 0x3 ,
  r_cpuio0 = 0x4 , r_cpuio1 = 0x5 , r_cpuio2 = 0x6 , r_cpuio3 = 0x7 ,
  r_f8 = 0x8 , r_f9 = 0x9 , r_t0target = 0xA , r_t1target = 0xB ,
  r_t2target = 0xC , r_t0out = 0xD , r_t1out = 0xE , r_t2out = 0xF
}

Private Member Functions

void timers_loaded ()
void enable_rom (int enable)
void reset_buf ()
void save_extra ()
void load_regs (uint8_t const in[reg_count])
void ram_loaded ()
void regs_loaded ()
void reset_time_regs ()
void reset_common (int timer_counter_init)
Timerrun_timer_ (Timer *t, rel_time_t)
Timerrun_timer (Timer *t, rel_time_t)
int dsp_read (rel_time_t)
void dsp_write (int data, rel_time_t)
void cpu_write_smp_reg_ (int data, rel_time_t, uint16_t addr)
void cpu_write_smp_reg (int data, rel_time_t, uint16_t addr)
void cpu_write_high (int data, uint8_t i)
void cpu_write (int data, uint16_t addr, rel_time_t)
int cpu_read_smp_reg (int i, rel_time_t)
int cpu_read (uint16_t addr, rel_time_t)
unsigned CPU_mem_bit (uint16_t pc, rel_time_t)
bool check_echo_access (int addr)
uint8_trun_until_ (time_t end_time)
void save_regs (uint8_t out[reg_count])

Private Attributes

Spc_Dsp dsp
signed char reg_times [256]
state_t m

Static Private Attributes

static signed char const reg_times_ [256]
static char const signature [signature_size+1]

Member Typedef Documentation

◆ sample_t

typedef short Snes_Spc::sample_t

◆ time_t

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
reg_count 

◆ anonymous enum

anonymous enum
Enumerator
port_count 

◆ anonymous enum

anonymous enum
Enumerator
signature_size 

◆ anonymous enum

anonymous enum
private
Enumerator
rom_addr 

◆ anonymous enum

anonymous enum
private
Enumerator
skipping_time 

◆ anonymous enum

anonymous enum
Enumerator
extra_size 

◆ anonymous enum

anonymous enum
Enumerator
timer_count 

◆ anonymous enum

anonymous enum
Enumerator
sample_rate 

◆ anonymous enum

anonymous enum
Enumerator
voice_count 

◆ anonymous enum

anonymous enum
Enumerator
spc_file_size 

◆ anonymous enum

anonymous enum
Enumerator
tempo_unit 

◆ anonymous enum

anonymous enum
Enumerator
clocks_per_sample 

◆ anonymous enum

anonymous enum
Enumerator
clock_rate 

◆ anonymous enum

anonymous enum
Enumerator
spc_min_file_size 

◆ anonymous enum

anonymous enum
private
Enumerator
cpu_pad_fill 

◆ anonymous enum

anonymous enum
Enumerator
rom_size 

◆ anonymous enum

anonymous enum
private
Enumerator
r_test 
r_control 
r_dspaddr 
r_dspdata 
r_cpuio0 
r_cpuio1 
r_cpuio2 
r_cpuio3 
r_f8 
r_f9 
r_t0target 
r_t1target 
r_t2target 
r_t0out 
r_t1out 
r_t2out 

Member Function Documentation

◆ check_echo_access()

bool Snes_Spc::check_echo_access ( int addr)
private

◆ clear_echo()

void Snes_Spc::clear_echo ( )

◆ CPU_mem_bit()

unsigned Snes_Spc::CPU_mem_bit ( uint16_t pc,
rel_time_t rel_time )
private

◆ cpu_read()

int Snes_Spc::cpu_read ( uint16_t addr,
rel_time_t time )
private

◆ cpu_read_smp_reg()

int Snes_Spc::cpu_read_smp_reg ( int i,
rel_time_t time )
inlineprivate

◆ cpu_write()

void Snes_Spc::cpu_write ( int data,
uint16_t addr,
rel_time_t time )
private

◆ cpu_write_high()

void Snes_Spc::cpu_write_high ( int data,
uint8_t i )
private

◆ cpu_write_smp_reg()

void Snes_Spc::cpu_write_smp_reg ( int data,
rel_time_t time,
uint16_t addr )
private

◆ cpu_write_smp_reg_()

void Snes_Spc::cpu_write_smp_reg_ ( int data,
rel_time_t time,
uint16_t addr )
private

◆ disable_surround()

void Snes_Spc::disable_surround ( bool disable = true)
inline

◆ dsp_read()

int Snes_Spc::dsp_read ( rel_time_t time)
private

◆ dsp_write()

void Snes_Spc::dsp_write ( int data,
rel_time_t time )
inlineprivate

◆ enable_rom()

void Snes_Spc::enable_rom ( int enable)
private

◆ end_frame()

void Snes_Spc::end_frame ( time_t end_time)

◆ init()

blargg_err_t Snes_Spc::init ( )

◆ init_rom()

void Snes_Spc::init_rom ( uint8_t const rom[rom_size])

◆ load_regs()

void Snes_Spc::load_regs ( uint8_t const in[reg_count])
private

◆ load_spc()

blargg_err_t Snes_Spc::load_spc ( void const * in,
long size )

◆ mute_voices()

void Snes_Spc::mute_voices ( int mask)
inline

◆ play()

blargg_err_t Snes_Spc::play ( int count,
sample_t * out )

◆ ram_loaded()

void Snes_Spc::ram_loaded ( )
private

◆ read_port()

int Snes_Spc::read_port ( time_t t,
int port )
inline

◆ regs_loaded()

void Snes_Spc::regs_loaded ( )
private

◆ reset()

void Snes_Spc::reset ( )

◆ reset_buf()

void Snes_Spc::reset_buf ( )
private

◆ reset_common()

void Snes_Spc::reset_common ( int timer_counter_init)
private

◆ reset_time_regs()

void Snes_Spc::reset_time_regs ( )
private

◆ run_timer()

Snes_Spc::Timer * Snes_Spc::run_timer ( Timer * t,
rel_time_t time )
inlineprivate

◆ run_timer_()

Snes_Spc::Timer * Snes_Spc::run_timer_ ( Timer * t,
rel_time_t time )
private

◆ run_until()

void Snes_Spc::run_until ( time_t t)
inline

◆ run_until_()

uint8_t * Snes_Spc::run_until_ ( time_t end_time)
private

◆ sample_count()

int Snes_Spc::sample_count ( ) const
inline

◆ save_extra()

void Snes_Spc::save_extra ( )
private

◆ save_regs()

void Snes_Spc::save_regs ( uint8_t out[reg_count])
private

◆ set_output()

void Snes_Spc::set_output ( sample_t * out,
int out_size )

◆ set_tempo()

void Snes_Spc::set_tempo ( int t)

◆ skip()

blargg_err_t Snes_Spc::skip ( int count)

◆ smp_ram()

uint8_t * Snes_Spc::smp_ram ( )
inline

◆ smp_regs()

regs_t & Snes_Spc::smp_regs ( )
inline

◆ soft_reset()

void Snes_Spc::soft_reset ( )

◆ timers_loaded()

void Snes_Spc::timers_loaded ( )
private

◆ write_port()

void Snes_Spc::write_port ( time_t t,
int port,
int data )
inline

Member Data Documentation

◆ dsp

Spc_Dsp Snes_Spc::dsp
private

◆ m

state_t Snes_Spc::m
private

◆ reg_times

signed char Snes_Spc::reg_times[256]
private

◆ reg_times_

signed char const Snes_Spc::reg_times_
staticprivate
Initial value:
=
{
-1, 0,-11,-10,-15,-11, -2, -2, 4, 3, 14, 14, 26, 26, 14, 22,
2, 3, 0, 1,-12, 0, 1, 1, 7, 6, 14, 14, 27, 14, 14, 23,
5, 6, 3, 4, -1, 3, 4, 4, 10, 9, 14, 14, 26, -5, 14, 23,
8, 9, 6, 7, 2, 6, 7, 7, 13, 12, 14, 14, 27, -4, 14, 24,
11, 12, 9, 10, 5, 9, 10, 10, 16, 15, 14, 14, -2, -4, 14, 24,
14, 15, 12, 13, 8, 12, 13, 13, 19, 18, 14, 14, -2,-36, 14, 24,
17, 18, 15, 16, 11, 15, 16, 16, 22, 21, 14, 14, 28, -3, 14, 25,
20, 21, 18, 19, 14, 18, 19, 19, 25, 24, 14, 14, 14, 29, 14, 25,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
}

◆ rel_time_t

BLARGG_DISABLE_NOTHROW typedef int Snes_Spc::rel_time_t

◆ signature

char const Snes_Spc::signature
staticprivate
Initial value:
=
"SNES-SPC700 Sound File Data v0.30\x1A\x1A"

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