1 // license:BSD-3-Clause 2 // copyright-holders:Jarek Parchanski, Andrea Mazzoleni 3 #ifndef MAME_INCLUDES_RETOFINV_H 4 #define MAME_INCLUDES_RETOFINV_H 5 6 #pragma once 7 8 #include "machine/74259.h" 9 #include "machine/taito68705interface.h" 10 #include "emupal.h" 11 #include "tilemap.h" 12 13 class retofinv_state : public driver_device 14 { 15 public: retofinv_state(const machine_config & mconfig,device_type type,const char * tag)16 retofinv_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_subcpu(*this, "sub") 21 , m_68705(*this, "68705") 22 , m_gfxdecode(*this, "gfxdecode") 23 , m_palette(*this, "palette") 24 , m_mainlatch(*this, "mainlatch") 25 , m_fg_videoram(*this, "fg_videoram") 26 , m_sharedram(*this, "sharedram") 27 , m_bg_videoram(*this, "bg_videoram") 28 { 29 } 30 31 void retofinvb1_nomcu(machine_config &config); 32 void retofinvb_nomcu(machine_config &config); 33 void retofinv(machine_config &config); 34 void retofinvb1(machine_config &config); 35 36 protected: 37 virtual void machine_start() override; 38 virtual void video_start() override; 39 40 private: 41 void cpu2_m6000_w(uint8_t data); 42 uint8_t cpu0_mf800_r(); 43 DECLARE_WRITE_LINE_MEMBER(irq0_ack_w); 44 DECLARE_WRITE_LINE_MEMBER(irq1_ack_w); 45 void coincounter_w(uint8_t data); 46 DECLARE_WRITE_LINE_MEMBER(coinlockout_w); 47 uint8_t mcu_status_r(); 48 void bg_videoram_w(offs_t offset, uint8_t data); 49 void fg_videoram_w(offs_t offset, uint8_t data); 50 void gfx_ctrl_w(offs_t offset, uint8_t data); 51 52 TILEMAP_MAPPER_MEMBER(tilemap_scan); 53 TILE_GET_INFO_MEMBER(bg_get_tile_info); 54 TILE_GET_INFO_MEMBER(fg_get_tile_info); 55 56 void retofinv_palette(palette_device &palette) const; 57 void retofinv_bl_palette(palette_device &palette) const; 58 59 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 60 61 INTERRUPT_GEN_MEMBER(main_vblank_irq); 62 INTERRUPT_GEN_MEMBER(sub_vblank_irq); 63 64 void bootleg_map(address_map &map); 65 void main_map(address_map &map); 66 void sound_map(address_map &map); 67 void sub_map(address_map &map); 68 69 void draw_sprites(bitmap_ind16 &bitmap); 70 71 required_device<cpu_device> m_maincpu; 72 required_device<cpu_device> m_audiocpu; 73 required_device<cpu_device> m_subcpu; 74 optional_device<taito68705_mcu_device> m_68705; 75 required_device<gfxdecode_device> m_gfxdecode; 76 required_device<palette_device> m_palette; 77 required_device<ls259_device> m_mainlatch; 78 79 required_shared_ptr<uint8_t> m_fg_videoram; 80 required_shared_ptr<uint8_t> m_sharedram; 81 required_shared_ptr<uint8_t> m_bg_videoram; 82 83 uint8_t m_main_irq_mask; 84 uint8_t m_sub_irq_mask; 85 uint8_t m_cpu2_m6000; 86 int m_fg_bank; 87 int m_bg_bank; 88 tilemap_t *m_bg_tilemap; 89 tilemap_t *m_fg_tilemap; 90 }; 91 92 #endif // MAME_INCLUDES_RETOFINV_H 93