1 // license:BSD-3-Clause 2 // copyright-holders:Mark McDougall 3 #ifndef MAME_INCLUDES_STFIGHT_H 4 #define MAME_INCLUDES_STFIGHT_H 5 6 #pragma once 7 8 #include "cpu/m6805/m68705.h" 9 #include "sound/msm5205.h" 10 #include "video/stfight_dev.h" 11 #include "video/airraid_dev.h" 12 13 class stfight_state : public driver_device 14 { 15 public: stfight_state(const machine_config & mconfig,device_type type,const char * tag)16 stfight_state(const machine_config &mconfig, device_type type, const char *tag) 17 : driver_device(mconfig, type, tag) 18 , m_coin_mech(*this, "COIN") 19 , m_maincpu(*this, "maincpu") 20 , m_audiocpu(*this, "audiocpu") 21 , m_mcu(*this, "mcu") 22 , m_msm(*this, "msm") 23 , m_main_bank(*this, "mainbank") 24 , m_samples(*this, "adpcm") 25 , m_decrypted_opcodes(*this, "decrypted_opcodes") 26 , m_coin_state(0) 27 , m_fm_data(0) 28 , m_cpu_to_mcu_empty(true) 29 , m_cpu_to_mcu_data(0x0f) 30 , m_port_a_out(0xff) 31 , m_port_c_out(0xff) 32 , m_vck2(false) 33 , m_adpcm_reset(true) 34 , m_adpcm_data_offs(0x0000) 35 { 36 } 37 38 void stfight_base(machine_config &config); 39 void stfight(machine_config &config); 40 void cshooter(machine_config &config); 41 42 void init_stfight(); 43 void init_empcity(); 44 void init_cshooter(); 45 46 protected: 47 enum 48 { 49 TIMER_STFIGHT_INTERRUPT_1 50 }; 51 52 virtual void machine_start() override; 53 virtual void machine_reset() override; 54 55 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 56 57 private: 58 DECLARE_WRITE_LINE_MEMBER(stfight_adpcm_int); 59 60 void stfight_io_w(uint8_t data); 61 uint8_t stfight_coin_r(); 62 void stfight_coin_w(uint8_t data); 63 void stfight_fm_w(uint8_t data); 64 void stfight_mcu_w(uint8_t data); 65 66 void stfight_bank_w(uint8_t data); 67 68 uint8_t stfight_fm_r(); 69 70 INTERRUPT_GEN_MEMBER(stfight_vb_interrupt); 71 72 // MCU specifics 73 uint8_t stfight_68705_port_b_r(); 74 void stfight_68705_port_a_w(uint8_t data); 75 void stfight_68705_port_b_w(uint8_t data); 76 void stfight_68705_port_c_w(uint8_t data); 77 78 void cpu1_map(address_map &map); 79 void cpu2_map(address_map &map); 80 void cshooter_cpu1_map(address_map &map); 81 void decrypted_opcodes_map(address_map &map); 82 void stfight_cpu1_map(address_map &map); 83 84 required_ioport m_coin_mech; 85 86 required_device<cpu_device> m_maincpu; 87 required_device<cpu_device> m_audiocpu; 88 required_device<m68705p5_device> m_mcu; 89 required_device<msm5205_device> m_msm; 90 91 required_memory_bank m_main_bank; 92 93 required_region_ptr<uint8_t> m_samples; 94 optional_shared_ptr<uint8_t> m_decrypted_opcodes; 95 96 uint8_t m_coin_state; 97 98 uint8_t m_fm_data; 99 100 bool m_cpu_to_mcu_empty; 101 uint8_t m_cpu_to_mcu_data; 102 uint8_t m_port_a_out; 103 uint8_t m_port_c_out; 104 105 bool m_vck2; 106 bool m_adpcm_reset; 107 uint16_t m_adpcm_data_offs; 108 109 emu_timer *m_int1_timer; 110 }; 111 112 #endif // MAME_INCLUDES_STFIGHT_H 113