1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 #pragma once 4 5 #ifndef MAME_INCLUDES_VIDBRAIN_H 6 #define MAME_INCLUDES_VIDBRAIN_H 7 8 #include "bus/vidbrain/exp.h" 9 #include "cpu/f8/f8.h" 10 #include "machine/f3853.h" 11 #include "machine/ram.h" 12 #include "sound/dac.h" 13 #include "video/uv201.h" 14 15 #define F3850_TAG "cd34" 16 #define F3853_TAG "cd5" 17 #define F3870_TAG "f3870" 18 #define UV201_TAG "uv201" 19 #define SCREEN_TAG "screen" 20 21 class vidbrain_state : public driver_device 22 { 23 public: vidbrain_state(const machine_config & mconfig,device_type type,const char * tag)24 vidbrain_state(const machine_config &mconfig, device_type type, const char *tag) : 25 driver_device(mconfig, type, tag), 26 m_maincpu(*this, F3850_TAG), 27 m_smi(*this, F3853_TAG), 28 m_uv(*this, UV201_TAG), 29 m_dac(*this, "dac"), 30 m_exp(*this, "exp"), 31 m_io(*this, "IO%02u", 0), 32 m_uv201_31(*this, "UV201-31"), 33 m_joy_r(*this, "JOY-R"), 34 m_joy1_x(*this, "JOY1-X"), 35 m_joy1_y(*this, "JOY1-Y"), 36 m_joy2_x(*this, "JOY2-X"), 37 m_joy2_y(*this, "JOY2-Y"), 38 m_joy3_x(*this, "JOY3-X"), 39 m_joy3_y(*this, "JOY3-Y"), 40 m_joy4_x(*this, "JOY4-X"), 41 m_joy4_y(*this, "JOY4-Y") 42 { } 43 44 void vidbrain(machine_config &config); 45 void vidbrain_video(machine_config &config); 46 47 DECLARE_INPUT_CHANGED_MEMBER( trigger_reset ); 48 49 private: 50 required_device<cpu_device> m_maincpu; 51 required_device<f3853_device> m_smi; 52 required_device<uv201_device> m_uv; 53 required_device<dac_byte_interface> m_dac; 54 required_device<videobrain_expansion_slot_device> m_exp; 55 required_ioport_array<8> m_io; 56 required_ioport m_uv201_31; 57 required_ioport m_joy_r; 58 required_ioport m_joy1_x; 59 required_ioport m_joy1_y; 60 required_ioport m_joy2_x; 61 required_ioport m_joy2_y; 62 required_ioport m_joy3_x; 63 required_ioport m_joy3_y; 64 required_ioport m_joy4_x; 65 required_ioport m_joy4_y; 66 67 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 68 virtual void machine_start() override; 69 virtual void machine_reset() override; 70 71 enum 72 { 73 TIMER_JOYSTICK 74 }; 75 76 void keyboard_w(uint8_t data); 77 uint8_t keyboard_r(); 78 void sound_w(uint8_t data); 79 80 DECLARE_WRITE_LINE_MEMBER( ext_int_w ); 81 DECLARE_WRITE_LINE_MEMBER( hblank_w ); 82 uint8_t memory_read_byte(offs_t offset); 83 84 // keyboard state 85 uint8_t m_keylatch; 86 int m_joy_enable; 87 88 // sound state 89 int m_sound_clk; 90 91 // timers 92 emu_timer *m_timer_ne555; 93 void vidbrain_io(address_map &map); 94 void vidbrain_mem(address_map &map); 95 }; 96 97 #endif 98