2 EPOCH Super Cassette Vision Emulator 'eSCV'
\r
4 Author : Takeda.Toshiya
\r
14 #include "../../emu.h"
\r
15 #include "../device.h"
\r
17 #define SOUND_CLOCK 1522400.0
\r
18 #define NOISE_CLOCK 760.0
\r
19 #define SQUARE_CLOCK 174000.0
\r
21 #define PCM_PERIOD 120000
\r
23 #define MAX_TONE 24000
\r
24 #define MAX_NOISE 16000
\r
25 #define MAX_SQUARE 8000
\r
26 #define MAX_PCM 20000
\r
28 #define MAX_PARAM 0x8000
\r
30 class SOUND : public DEVICE
\r
45 struct channel_t tone;
\r
46 struct channel_t noise;
\r
47 struct channel_t square1;
\r
48 struct channel_t square2;
\r
49 struct channel_t square3;
\r
50 struct channel_t pcm;
\r
51 void clear_channel(channel_t *ch);
\r
53 int pcm_table[MAX_PARAM * 8];
\r
57 int volume_table[32];
\r
58 int detune_table[32];
\r
61 int param_cnt, param_ptr, register_id;
\r
62 uint8 params[MAX_PARAM];
\r
64 void process_pcm(uint8 data);
\r
68 SOUND(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}
\r
73 void write_data8(uint32 addr, uint32 data);
\r
74 void write_io8(uint32 addr, uint32 data);
\r
75 void event_callback(int event_id, int err);
\r
76 void mix(int32* buffer, int cnt);
\r
77 void save_state(FILEIO* state_fio);
\r
78 bool load_state(FILEIO* state_fio);
\r
81 void set_context_cpu(DEVICE* device)
\r
85 void init(int rate);
\r