summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/pce_cd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/pce_cd.h')
-rw-r--r--src/mame/machine/pce_cd.h44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/mame/machine/pce_cd.h b/src/mame/machine/pce_cd.h
index 7932ff88e6e..588537e7f89 100644
--- a/src/mame/machine/pce_cd.h
+++ b/src/mame/machine/pce_cd.h
@@ -40,7 +40,8 @@ enum {
// ======================> pce_cd_device
-class pce_cd_device : public device_t
+class pce_cd_device : public device_t,
+ public device_memory_interface
{
public:
// construction/destruction
@@ -62,8 +63,48 @@ protected:
virtual void device_start() override;
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_reset() override;
+ virtual space_config_vector memory_space_config() const override;
private:
+ const address_space_config m_space_config;
+
+ DECLARE_READ8_MEMBER(cdc_status_r);
+ DECLARE_WRITE8_MEMBER(cdc_status_w);
+ DECLARE_READ8_MEMBER(cdc_reset_r);
+ DECLARE_WRITE8_MEMBER(cdc_reset_w);
+ DECLARE_READ8_MEMBER(irq_mask_r);
+ DECLARE_WRITE8_MEMBER(irq_mask_w);
+ DECLARE_READ8_MEMBER(irq_status_r);
+ DECLARE_READ8_MEMBER(cdc_data_r);
+ DECLARE_WRITE8_MEMBER(cdc_data_w);
+ DECLARE_READ8_MEMBER(bram_status_r);
+ DECLARE_WRITE8_MEMBER(bram_unlock_w);
+ DECLARE_READ8_MEMBER(cdda_data_r);
+ DECLARE_READ8_MEMBER(cd_data_r);
+ DECLARE_READ8_MEMBER(adpcm_dma_control_r);
+ DECLARE_WRITE8_MEMBER(adpcm_dma_control_w);
+ DECLARE_READ8_MEMBER(adpcm_status_r);
+ DECLARE_READ8_MEMBER(adpcm_data_r);
+ DECLARE_WRITE8_MEMBER(adpcm_data_w);
+ DECLARE_WRITE8_MEMBER(adpcm_address_lo_w);
+ DECLARE_WRITE8_MEMBER(adpcm_address_hi_w);
+ DECLARE_READ8_MEMBER(adpcm_address_control_r);
+ DECLARE_WRITE8_MEMBER(adpcm_address_control_w);
+ DECLARE_WRITE8_MEMBER(adpcm_playback_rate_w);
+ DECLARE_WRITE8_MEMBER(fade_register_w);
+
+ uint8_t m_reset_reg;
+ uint8_t m_irq_mask;
+ uint8_t m_irq_status;
+ uint8_t m_cdc_status;
+ uint8_t m_cdc_data;
+ uint8_t m_bram_status;
+ uint8_t m_adpcm_status;
+ uint16_t m_adpcm_latch_address;
+ uint8_t m_adpcm_control;
+ uint8_t m_fade_reg;
+
+ void regs_map(address_map &map);
void adpcm_stop(uint8_t irq_flag);
void adpcm_play();
void reply_status_byte(uint8_t status);
@@ -94,7 +135,6 @@ private:
required_device<cpu_device> m_maincpu;
- uint8_t m_regs[16];
std::unique_ptr<uint8_t[]> m_bram;
std::unique_ptr<uint8_t[]> m_adpcm_ram;
int m_bram_locked;