1 // license:LGPL-2.1+ 2 // copyright-holders:Angelo Salese, R. Belmont 3 #ifndef MAME_INCLUDES_DCCONS_H 4 #define MAME_INCLUDES_DCCONS_H 5 6 #pragma once 7 8 #include "dc.h" 9 10 #include "bus/ata/ataintf.h" 11 #include "imagedev/chd_cd.h" 12 #include "machine/gdrom.h" 13 #include "machine/intelfsh.h" 14 15 class dc_cons_state : public dc_state 16 { 17 public: dc_cons_state(const machine_config & mconfig,device_type type,const char * tag)18 dc_cons_state(const machine_config &mconfig, device_type type, const char *tag) 19 : dc_state(mconfig, type, tag) 20 , m_ata(*this, "ata") 21 , m_dcflash(*this, "dcflash") 22 , atapi_xfercomplete(0) 23 { } 24 25 required_device<ata_interface_device> m_ata; 26 required_device<fujitsu_29lv002tc_device> m_dcflash; 27 28 void init_dc(); 29 void init_dcus(); 30 void init_dcjp(); 31 void init_tream(); 32 33 uint64_t dcus_idle_skip_r(); 34 uint64_t dcjp_idle_skip_r(); 35 36 uint64_t dc_pdtra_r(); 37 void dc_pdtra_w(uint64_t data); 38 DECLARE_WRITE_LINE_MEMBER(aica_irq); 39 DECLARE_WRITE_LINE_MEMBER(sh4_aica_irq); 40 DECLARE_WRITE_LINE_MEMBER(ata_interrupt); 41 42 TIMER_CALLBACK_MEMBER( atapi_xfer_end ); 43 44 void dreamcast_atapi_init(); 45 uint32_t dc_mess_g1_ctrl_r(offs_t offset); 46 void dc_mess_g1_ctrl_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 47 uint8_t dc_flash_r(offs_t offset); 48 void dc_flash_w(offs_t offset, uint8_t data); 49 50 static void gdrom_config(device_t *device); 51 void dc_base(machine_config &config); 52 void dc(machine_config &config); 53 void dc_fish(machine_config &config); 54 void aica_map(address_map &map); 55 void dc_audio_map(address_map &map); 56 void dc_map(address_map &map); 57 void dc_port(address_map &map); 58 private: 59 uint64_t PDTRA, PCTRA; 60 emu_timer *atapi_timer; 61 int atapi_xferlen, atapi_xferbase, atapi_xfercomplete; 62 }; 63 64 #endif // MAME_INCLUDES_DCCONS_H 65