2 Common Source Code Project
3 MSX Series (experimental)
16 #include "../../emu.h"
17 #include "../device.h"
21 #define SCC_STANDARD 0
22 #define SCC_ENHANCED 1
24 #define SCC_MASK_CH(x) (1<<(x))
26 typedef struct __SCC {
28 uint32_t clk, rate ,base_incr, quality ;
30 int32_t out, prev, next;
50 uint8_t reg[0x100-0xC0];
63 SCC *SCC_new(uint32_t c, uint32_t r) ;
64 void SCC_reset(SCC *scc) ;
65 void SCC_set_rate(SCC *scc, uint32_t r);
66 void SCC_set_quality(SCC *scc, uint32_t q) ;
67 void SCC_set_type(SCC *scc, uint32_t type) ;
68 void SCC_delete(SCC *scc) ;
69 int16_t SCC_calc(SCC *scc) ;
70 void SCC_write(SCC *scc, uint32_t adr, uint32_t val) ;
71 void SCC_writeReg(SCC *scc, uint32_t adr, uint32_t val) ;
72 uint32_t SCC_read(SCC *scc, uint32_t adr) ;
73 uint32_t SCC_setMask(SCC *scc, uint32_t adr) ;
74 uint32_t SCC_toggleMask(SCC *scc, uint32_t adr) ;
78 class SCC : public DEVICE
82 int volume_l, volume_r;
83 void save_load_state(FILEIO* state_fio, bool is_save);
84 void decl_state_scc();
87 SCC(VM_TEMPLATE* parent_vm, EMU* parent_emu);
91 void write_data8(uint32_t addr, uint32_t data);
92 uint32_t read_data8(uint32_t addr);
96 void mix(int32_t* buffer, int cnt);
97 void set_volume(int ch, int decibel_l, int decibel_r);
99 void save_state(FILEIO* state_fio);
100 bool load_state(FILEIO* state_fio);
103 void initialize_sound(int rate, int clock, int samples);