2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
15 #define SIG_LD700_REMOTE 0
16 #define SIG_LD700_MUTE_L 1
17 #define SIG_LD700_MUTE_R 2
19 #define MAX_TRACKS 1024
20 #define MAX_PAUSES 1024
24 class LD700 : public DEVICE
28 outputs_t outputs_exv;
29 outputs_t outputs_ack;
30 outputs_t outputs_sound;
32 bool prev_remote_signal;
33 uint32_t prev_remote_time;
34 uint32_t command, num_bits;
37 int seek_mode, seek_num;
42 int num_tracks, track_frame_raw[MAX_TRACKS];
43 int num_pauses, pause_frame_raw[MAX_PAUSES];
45 bool prev_sound_signal;
46 FIFO *sound_buffer_l, *sound_buffer_r, *signal_buffer;
47 bool signal_buffer_ok;
49 int16_t sound_sample_l, sound_sample_r;
50 int volume_l, volume_r;
51 bool sound_mute_l, sound_mute_r;
53 int16_t *mix_buffer_l, *mix_buffer_r;
54 int mix_buffer_ptr, mix_buffer_length;
56 void set_status(int value);
57 void set_ack(bool value);
58 void set_cur_frame(int frame, bool relative);
59 int get_cur_frame_raw();
60 void set_cur_track(int track);
63 LD700(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
65 initialize_output_signals(&outputs_exv);
66 initialize_output_signals(&outputs_ack);
67 initialize_output_signals(&outputs_sound);
68 volume_l = volume_r = 1024;
69 sound_mute_l = sound_mute_r = true;
70 set_device_name(_T("LD-700 Laser Disc Player"));
77 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
78 uint32_t __FASTCALL read_signal(int id);
80 void __FASTCALL event_callback(int event_id, int err);
81 void __FASTCALL mix(int32_t* buffer, int cnt);
82 void set_volume(int ch, int decibel_l, int decibel_r);
85 void set_context_exv(DEVICE* device, int id, uint32_t mask)
87 register_output_signal(&outputs_exv, device, id, mask);
89 void set_context_ack(DEVICE* device, int id, uint32_t mask)
91 register_output_signal(&outputs_ack, device, id, mask);
93 void set_context_sound(DEVICE* device, int id, uint32_t mask)
95 register_output_signal(&outputs_sound, device, id, mask);
97 void open_disc(const _TCHAR* file_path);
99 bool is_disc_inserted();
100 void initialize_sound(int rate, int samples);
101 void movie_sound_callback(uint8_t *buffer, long size);