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))
28 typedef struct __SCC {
30 uint32_t clk, rate ,base_incr, quality ;
32 int32_t out, prev, next;
52 uint8_t reg[0x100-0xC0];
65 SCC *SCC_new(uint32_t c, uint32_t r) ;
66 void SCC_reset(SCC *scc) ;
67 void SCC_set_rate(SCC *scc, uint32_t r);
68 void SCC_set_quality(SCC *scc, uint32_t q) ;
69 void SCC_set_type(SCC *scc, uint32_t type) ;
70 void SCC_delete(SCC *scc) ;
71 int16_t SCC_calc(SCC *scc) ;
72 void SCC_write(SCC *scc, uint32_t adr, uint32_t val) ;
73 void SCC_writeReg(SCC *scc, uint32_t adr, uint32_t val) ;
74 uint32_t SCC_read(SCC *scc, uint32_t adr) ;
75 uint32_t SCC_setMask(SCC *scc, uint32_t adr) ;
76 uint32_t SCC_toggleMask(SCC *scc, uint32_t adr) ;
80 class SCC : public DEVICE
84 int volume_l, volume_r;
85 void save_load_state(FILEIO* state_fio, bool is_save);
88 SCC(VM_TEMPLATE* parent_vm, EMU* parent_emu);
92 void write_data8(uint32_t addr, uint32_t data);
93 uint32_t read_data8(uint32_t addr);
97 void mix(int32_t* buffer, int cnt);
98 void set_volume(int ch, int decibel_l, int decibel_r);
99 bool process_state(FILEIO* state_fio, bool loading);
102 void initialize_sound(int rate, int clock, int samples);