diff options
Diffstat (limited to 'src/devices/machine/cr511b.h')
| -rw-r--r-- | src/devices/machine/cr511b.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/devices/machine/cr511b.h b/src/devices/machine/cr511b.h index e773c8b1f82..b5c7727872e 100644 --- a/src/devices/machine/cr511b.h +++ b/src/devices/machine/cr511b.h @@ -50,6 +50,8 @@ public: auto drq_cb() { return m_drq_cb.bind(); } auto dten_cb() { return m_dten_cb.bind(); } auto scor_cb() { return m_scor_cb.bind(); } + auto sbcp_cb() { return m_sbcp_cb.bind(); } + auto subcode_data_cb() { return m_subcode_data_cb.bind(); } uint8_t read(); void write(uint8_t data); @@ -72,6 +74,7 @@ private: int size_to_track_type(); TIMER_CALLBACK_MEMBER(frame_cb); + TIMER_CALLBACK_MEMBER(subcode_cb); TIMER_CALLBACK_MEMBER(stch); void status_change(uint8_t status); @@ -79,7 +82,10 @@ private: TIMER_CALLBACK_MEMBER(sten); void status_enable(uint8_t output_length); + TIMER_CALLBACK_MEMBER(scor); + void audio_end_cb(int state); + void play_audio(uint32_t start, uint32_t end); // commands void cmd_seek(); @@ -124,10 +130,15 @@ private: devcb_write_line m_drq_cb; devcb_write_line m_dten_cb; devcb_write_line m_scor_cb; + devcb_write_line m_sbcp_cb; + devcb_write8 m_subcode_data_cb; emu_timer *m_frame_timer; + emu_timer *m_subcode_timer; + emu_timer *m_stch_timer; emu_timer *m_sten_timer; + emu_timer *m_scor_timer; uint8_t m_input_fifo[16]; uint8_t m_input_fifo_pos; @@ -139,6 +150,10 @@ private: uint8_t m_status; uint16_t m_sector_size; + uint8_t m_subcode_count; + uint8_t m_subcode_buffer[96]; + bool m_subcode_valid; + uint32_t m_transfer_lba; uint16_t m_transfer_sectors; uint32_t m_transfer_length; |
