1 // license:BSD-3-Clause 2 // copyright-holders:Hau 3 #ifndef MAME_INCLUDES_QDRMFGP_H 4 #define MAME_INCLUDES_QDRMFGP_H 5 6 #pragma once 7 8 #include "bus/ata/ataintf.h" 9 #include "machine/timer.h" 10 #include "sound/k054539.h" 11 #include "machine/k053252.h" 12 #include "video/konami_helper.h" 13 #include "video/k054156_k054157_k056832.h" 14 #include "emupal.h" 15 16 class qdrmfgp_state : public driver_device 17 { 18 public: qdrmfgp_state(const machine_config & mconfig,device_type type,const char * tag)19 qdrmfgp_state(const machine_config &mconfig, device_type type, const char *tag) : 20 driver_device(mconfig, type, tag), 21 m_maincpu(*this, "maincpu"), 22 m_nvram(*this, "nvram"), 23 m_workram(*this, "workram"), 24 m_k056832(*this, "k056832"), 25 m_k054539(*this, "k054539"), 26 m_k053252(*this, "k053252"), 27 m_ata(*this, "ata"), 28 m_inputs_port(*this, "INPUTS"), 29 m_dsw_port(*this, "DSW"), 30 m_palette(*this, "palette"), 31 m_sndram(*this, "sndram") 32 { 33 } 34 35 void qdrmfgp(machine_config &config); 36 void qdrmfgp2(machine_config &config); 37 38 DECLARE_CUSTOM_INPUT_MEMBER(battery_sensor_r); 39 40 protected: 41 virtual void machine_reset() override; 42 43 private: 44 required_device<cpu_device> m_maincpu; 45 required_shared_ptr<uint16_t> m_nvram; 46 required_shared_ptr<uint16_t> m_workram; 47 required_device<k056832_device> m_k056832; 48 required_device<k054539_device> m_k054539; 49 required_device<k053252_device> m_k053252; 50 required_device<ata_interface_device> m_ata; 51 required_ioport m_inputs_port; 52 required_ioport m_dsw_port; 53 required_device<palette_device> m_palette; 54 required_shared_ptr<uint8_t> m_sndram; 55 56 uint16_t m_control; 57 int32_t m_gp2_irq_control; 58 int32_t m_pal; 59 emu_timer *m_gp2_timer; 60 61 void gp_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 62 void gp2_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 63 uint16_t v_rom_r(offs_t offset); 64 uint16_t gp2_vram_r(offs_t offset); 65 uint16_t gp2_vram_mirror_r(offs_t offset); 66 void gp2_vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 67 void gp2_vram_mirror_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 68 uint16_t sndram_r(offs_t offset, uint16_t mem_mask = ~0); 69 void sndram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 70 uint16_t inputs_r(); 71 72 DECLARE_MACHINE_START(qdrmfgp); 73 DECLARE_VIDEO_START(qdrmfgp); 74 DECLARE_MACHINE_START(qdrmfgp2); 75 DECLARE_VIDEO_START(qdrmfgp2); 76 77 uint32_t screen_update_qdrmfgp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 78 INTERRUPT_GEN_MEMBER(qdrmfgp2_interrupt); 79 TIMER_CALLBACK_MEMBER(gp2_timer_callback); 80 TIMER_DEVICE_CALLBACK_MEMBER(qdrmfgp_interrupt); 81 DECLARE_WRITE_LINE_MEMBER(ide_interrupt); 82 DECLARE_WRITE_LINE_MEMBER(gp2_ide_interrupt); 83 DECLARE_WRITE_LINE_MEMBER(k054539_irq1_gen); 84 K056832_CB_MEMBER(qdrmfgp_tile_callback); 85 K056832_CB_MEMBER(qdrmfgp2_tile_callback); 86 87 void qdrmfgp2_map(address_map &map); 88 void qdrmfgp_k054539_map(address_map &map); 89 void qdrmfgp_map(address_map &map); 90 }; 91 92 #endif // MAME_INCLUDES_QDRMFGP_H 93