1 // license:BSD-3-Clause 2 // copyright-holders:David Haywood 3 #ifndef MAME_INCLUDES_TAOTAIDO_H 4 #define MAME_INCLUDES_TAOTAIDO_H 5 6 #pragma once 7 8 #include "video/vsystem_spr.h" 9 #include "machine/gen_latch.h" 10 #include "machine/mb3773.h" 11 #include "tilemap.h" 12 13 class taotaido_state : public driver_device 14 { 15 public: taotaido_state(const machine_config & mconfig,device_type type,const char * tag)16 taotaido_state(const machine_config &mconfig, device_type type, const char *tag) : 17 driver_device(mconfig, type, tag), 18 m_maincpu(*this, "maincpu"), 19 m_audiocpu(*this, "audiocpu"), 20 m_gfxdecode(*this, "gfxdecode"), 21 m_spr(*this, "vsystem_spr"), 22 m_soundlatch(*this, "soundlatch"), 23 m_watchdog(*this, "watchdog"), 24 m_spriteram(*this, "spriteram"), 25 m_spriteram2(*this, "spriteram2"), 26 m_scrollram(*this, "scrollram"), 27 m_bgram(*this, "bgram"), 28 m_soundbank(*this, "soundbank"), 29 m_spritebank(*this, "spritebank", 0) 30 { } 31 32 void taotaido(machine_config &config); 33 34 protected: 35 virtual void machine_start() override; 36 virtual void video_start() override; 37 38 private: 39 required_device<cpu_device> m_maincpu; 40 required_device<cpu_device> m_audiocpu; 41 required_device<gfxdecode_device> m_gfxdecode; 42 required_device<vsystem_spr_device> m_spr; 43 required_device<generic_latch_8_device> m_soundlatch; 44 required_device<mb3773_device> m_watchdog; 45 46 required_shared_ptr<uint16_t> m_spriteram; 47 required_shared_ptr<uint16_t> m_spriteram2; 48 required_shared_ptr<uint16_t> m_scrollram; 49 required_shared_ptr<uint16_t> m_bgram; 50 51 required_memory_bank m_soundbank; 52 53 required_shared_ptr<uint8_t> m_spritebank; 54 55 uint8_t m_bgbank[8]; 56 tilemap_t *m_bg_tilemap; 57 std::unique_ptr<uint16_t[]> m_spriteram_old; 58 std::unique_ptr<uint16_t[]> m_spriteram_older; 59 std::unique_ptr<uint16_t[]> m_spriteram2_old; 60 std::unique_ptr<uint16_t[]> m_spriteram2_older; 61 62 uint16_t pending_command_r(); 63 void unknown_output_w(uint8_t data); 64 void sh_bankswitch_w(uint8_t data); 65 void spritebank_w(offs_t offset, uint8_t data); 66 void tileregs_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 67 void bgvideoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 68 69 TILE_GET_INFO_MEMBER(bg_tile_info); 70 TILEMAP_MAPPER_MEMBER(tilemap_scan_rows); 71 72 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 73 DECLARE_WRITE_LINE_MEMBER(screen_vblank); 74 uint32_t tile_callback( uint32_t code ); 75 void main_map(address_map &map); 76 void sound_map(address_map &map); 77 void sound_port_map(address_map &map); 78 }; 79 80 #endif // MAME_INCLUDES_TAOTAIDO_H 81