1 // license:BSD-3-Clause 2 // copyright-holders:Victor Trucco, Mike Balfour, Phil Stroffolino 3 #include "sound/samples.h" 4 #include "video/tms9927.h" 5 #include "emupal.h" 6 #include "screen.h" 7 8 struct coprocessor_t { 9 std::unique_ptr<uint8_t[]> context_ram; 10 uint8_t bank; 11 std::unique_ptr<uint8_t[]> image_ram; 12 uint8_t param[0x9]; 13 }; 14 15 class thief_state : public driver_device 16 { 17 public: thief_state(const machine_config & mconfig,device_type type,const char * tag)18 thief_state(const machine_config &mconfig, device_type type, const char *tag) 19 : driver_device(mconfig, type, tag) , 20 m_maincpu(*this, "maincpu"), 21 m_samples(*this, "samples"), 22 m_tms(*this, "tms"), 23 m_screen(*this, "screen"), 24 m_palette(*this, "palette") { } 25 26 void natodef(machine_config &config); 27 void sharkatt(machine_config &config); 28 void thief(machine_config &config); 29 30 void init_thief(); 31 32 DECLARE_WRITE_LINE_MEMBER(slam_w); 33 34 private: 35 std::unique_ptr<uint8_t[]> m_videoram; 36 uint8_t m_input_select; 37 uint8_t m_read_mask; 38 uint8_t m_write_mask; 39 uint8_t m_video_control; 40 coprocessor_t m_coprocessor; 41 void thief_input_select_w(uint8_t data); 42 uint8_t thief_io_r(); 43 uint8_t thief_context_ram_r(offs_t offset); 44 void thief_context_ram_w(offs_t offset, uint8_t data); 45 void thief_context_bank_w(uint8_t data); 46 void thief_video_control_w(uint8_t data); 47 void thief_color_map_w(offs_t offset, uint8_t data); 48 void thief_color_plane_w(uint8_t data); 49 uint8_t thief_videoram_r(offs_t offset); 50 void thief_videoram_w(offs_t offset, uint8_t data); 51 void thief_blit_w(uint8_t data); 52 uint8_t thief_coprocessor_r(offs_t offset); 53 void thief_coprocessor_w(offs_t offset, uint8_t data); 54 void tape_control_w(uint8_t data); 55 virtual void video_start() override; 56 uint32_t screen_update_thief(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 57 58 IRQ_CALLBACK_MEMBER(iack); 59 uint16_t fetch_image_addr( coprocessor_t &thief_coprocessor ); 60 void tape_set_audio( int track, int bOn ); 61 void tape_set_motor( int bOn ); 62 required_device<cpu_device> m_maincpu; 63 required_device<samples_device> m_samples; 64 required_device<tms9927_device> m_tms; 65 required_device<screen_device> m_screen; 66 required_device<palette_device> m_palette; 67 68 void io_map(address_map &map); 69 void sharkatt_main_map(address_map &map); 70 void thief_main_map(address_map &map); 71 }; 72