2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
17 #define SIG_LD700_REMOTE 0
18 #define SIG_LD700_MUTE_L 1
19 #define SIG_LD700_MUTE_R 2
21 #define MAX_TRACKS 1024
22 #define MAX_PAUSES 1024
26 class LD700 : public DEVICE
30 outputs_t outputs_exv;
31 outputs_t outputs_ack;
32 outputs_t outputs_sound;
34 bool prev_remote_signal;
35 uint32_t prev_remote_time;
36 uint32_t command, num_bits;
39 int seek_mode, seek_num;
44 int num_tracks, track_frame_raw[MAX_TRACKS];
45 int num_pauses, pause_frame_raw[MAX_PAUSES];
47 bool prev_sound_signal;
48 FIFO *sound_buffer_l, *sound_buffer_r, *signal_buffer;
49 bool signal_buffer_ok;
51 int16_t sound_sample_l, sound_sample_r;
52 int volume_l, volume_r;
53 bool sound_mute_l, sound_mute_r;
55 int16_t *mix_buffer_l, *mix_buffer_r;
56 int mix_buffer_ptr, mix_buffer_length;
58 void set_status(int value);
59 void set_ack(bool value);
60 void set_cur_frame(int frame, bool relative);
61 int get_cur_frame_raw();
62 void set_cur_track(int track);
65 LD700(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
67 initialize_output_signals(&outputs_exv);
68 initialize_output_signals(&outputs_ack);
69 initialize_output_signals(&outputs_sound);
70 volume_l = volume_r = 1024;
71 sound_mute_l = sound_mute_r = true;
78 void write_signal(int id, uint32_t data, uint32_t mask);
80 void event_callback(int event_id, int err);
81 void mix(int32_t* buffer, int cnt);
82 void set_volume(int ch, int decibel_l, int decibel_r);
83 const _TCHAR *get_device_name()
89 void set_context_exv(DEVICE* device, int id, uint32_t mask)
91 register_output_signal(&outputs_exv, device, id, mask);
93 void set_context_ack(DEVICE* device, int id, uint32_t mask)
95 register_output_signal(&outputs_ack, device, id, mask);
97 void set_context_sound(DEVICE* device, int id, uint32_t mask)
99 register_output_signal(&outputs_sound, device, id, mask);
101 void open_disc(const _TCHAR* file_path);
103 bool is_disc_inserted();
104 void initialize_sound(int rate, int samples);
105 void movie_sound_callback(uint8_t *buffer, long size);