1 // license:BSD-3-Clause 2 // copyright-holders:Fabio Priuli 3 #ifndef MAME_BUS_SNES_EVENT_H 4 #define MAME_BUS_SNES_EVENT_H 5 6 #pragma once 7 8 #include "snes_slot.h" 9 #include "cpu/upd7725/upd7725.h" 10 11 12 // ======================> sns_pfest94_device 13 14 class sns_pfest94_device : public device_t, 15 public device_sns_cart_interface 16 { 17 public: 18 // construction/destruction 19 sns_pfest94_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 20 21 protected: 22 static constexpr device_timer_id TIMER_EVENT = 0; 23 24 // device-level overrides 25 virtual void device_start() override; 26 virtual void device_reset() override; 27 28 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 29 virtual void device_add_mconfig(machine_config &config) override; 30 virtual ioport_constructor device_input_ports() const override; 31 32 virtual void speedup_addon_bios_access() override; 33 34 // reading and writing 35 virtual uint8_t read_l(offs_t offset) override; 36 virtual uint8_t read_h(offs_t offset) override; 37 virtual uint8_t chip_read(offs_t offset) override; 38 virtual void chip_write(offs_t offset, uint8_t data) override; 39 40 virtual uint32_t necdsp_prg_r(offs_t offset); 41 virtual uint16_t necdsp_data_r(offs_t offset); 42 43 private: 44 required_device<upd7725_device> m_upd7725; 45 required_ioport m_dsw; 46 47 uint8_t m_base_bank; 48 uint8_t m_mask; 49 uint8_t m_status; 50 uint32_t m_count; 51 52 std::vector<uint32_t> m_dsp_prg; 53 std::vector<uint16_t> m_dsp_data; 54 55 emu_timer *pfest94_timer; 56 57 void dsp_data_map_lorom(address_map &map); 58 void dsp_prg_map_lorom(address_map &map); 59 }; 60 61 62 // device type definition 63 DECLARE_DEVICE_TYPE(SNS_PFEST94, sns_pfest94_device) 64 65 #endif // MAME_BUS_SNES_EVENT_H 66