1 // license:BSD-3-Clause 2 // copyright-holders:Dan Boris 3 /*************************************************************************** 4 5 Sun Electronics Arabian hardware 6 7 driver by Dan Boris 8 9 ***************************************************************************/ 10 #ifndef MAME_INCLUDES_ARABIAN_H 11 #define MAME_INCLUDES_ARABIAN_H 12 13 #pragma once 14 15 #include "cpu/mb88xx/mb88xx.h" 16 #include "emupal.h" 17 18 class arabian_state : public driver_device 19 { 20 public: arabian_state(const machine_config & mconfig,device_type type,const char * tag)21 arabian_state(const machine_config &mconfig, device_type type, const char *tag) : 22 driver_device(mconfig, type, tag), 23 m_custom_cpu_ram(*this, "custom_cpu_ram"), 24 m_blitter(*this, "blitter"), 25 m_maincpu(*this, "maincpu"), 26 m_mcu(*this, "mcu"), 27 m_palette(*this, "palette") 28 { } 29 30 void arabian(machine_config &config); 31 32 protected: 33 virtual void machine_start() override; 34 virtual void machine_reset() override; 35 virtual void video_start() override; 36 37 void main_io_map(address_map &map); 38 void main_map(address_map &map); 39 40 private: 41 uint8_t mcu_port_r0_r(); 42 uint8_t mcu_port_r1_r(); 43 uint8_t mcu_port_r2_r(); 44 uint8_t mcu_port_r3_r(); 45 void mcu_port_r0_w(uint8_t data); 46 void mcu_port_r1_w(uint8_t data); 47 void mcu_port_r2_w(uint8_t data); 48 void mcu_port_r3_w(uint8_t data); 49 uint8_t mcu_portk_r(); 50 void mcu_port_o_w(uint8_t data); 51 void mcu_port_p_w(uint8_t data); 52 void arabian_blitter_w(offs_t offset, uint8_t data); 53 void arabian_videoram_w(offs_t offset, uint8_t data); 54 void ay8910_porta_w(uint8_t data); 55 void ay8910_portb_w(uint8_t data); 56 void arabian_palette(palette_device &palette) const; 57 uint32_t screen_update_arabian(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 58 void blit_area(uint8_t plane, uint16_t src, uint8_t x, uint8_t y, uint8_t sx, uint8_t sy); 59 60 /* memory pointers */ 61 required_shared_ptr<uint8_t> m_custom_cpu_ram; 62 required_shared_ptr<uint8_t> m_blitter; 63 64 std::unique_ptr<uint8_t[]> m_main_bitmap; 65 std::unique_ptr<uint8_t[]> m_converted_gfx; 66 67 /* video-related */ 68 uint8_t m_video_control; 69 uint8_t m_flip_screen; 70 71 /* MCU */ 72 uint8_t m_mcu_port_o; 73 uint8_t m_mcu_port_p; 74 uint8_t m_mcu_port_r[4]; 75 76 required_device<cpu_device> m_maincpu; 77 required_device<mb8841_cpu_device> m_mcu; 78 required_device<palette_device> m_palette; 79 }; 80 81 #endif // MAME_INCLUDES_ARABIAN_H 82