1 // license:BSD-3-Clause 2 // copyright-holders:David Haywood 3 4 /************************************************************************* 5 6 Macross Plus 7 8 *************************************************************************/ 9 #ifndef MAME_INCLUDES_MACROSSP_H 10 #define MAME_INCLUDES_MACROSSP_H 11 12 #pragma once 13 14 #include "machine/gen_latch.h" 15 #include "emupal.h" 16 #include "screen.h" 17 #include "tilemap.h" 18 19 class macrossp_state : public driver_device 20 { 21 public: macrossp_state(const machine_config & mconfig,device_type type,const char * tag)22 macrossp_state(const machine_config &mconfig, device_type type, const char *tag) : 23 driver_device(mconfig, type, tag), 24 m_spriteram(*this, "spriteram"), 25 m_scra_videoram(*this, "scra_videoram"), 26 m_scra_linezoom(*this, "scra_linezoom"), 27 m_scra_videoregs(*this, "scra_videoregs"), 28 29 m_scrb_videoram(*this, "scrb_videoram"), 30 m_scrb_linezoom(*this, "scrb_linezoom"), 31 m_scrb_videoregs(*this, "scrb_videoregs"), 32 33 m_scrc_videoram(*this, "scrc_videoram"), 34 m_scrc_linezoom(*this, "scrc_linezoom"), 35 m_scrc_videoregs(*this, "scrc_videoregs"), 36 37 m_text_videoram(*this, "text_videoram"), 38 m_text_linezoom(*this, "text_linezoom"), 39 m_text_videoregs(*this, "text_videoregs"), 40 41 m_mainram(*this, "mainram"), 42 m_maincpu(*this, "maincpu"), 43 m_audiocpu(*this, "audiocpu"), 44 m_screen(*this, "screen"), 45 m_gfxdecode(*this, "gfxdecode"), 46 m_palette(*this, "palette"), 47 m_soundlatch(*this, "soundlatch") 48 { 49 } 50 51 void quizmoon(machine_config &config); 52 void macrossp(machine_config &config); 53 54 void init_quizmoon(); 55 void init_macrossp(); 56 57 private: 58 /* memory pointers */ 59 required_shared_ptr<uint32_t> m_spriteram; 60 required_shared_ptr<uint32_t> m_scra_videoram; 61 required_shared_ptr<uint32_t> m_scra_linezoom; 62 required_shared_ptr<uint32_t> m_scra_videoregs; 63 required_shared_ptr<uint32_t> m_scrb_videoram; 64 required_shared_ptr<uint32_t> m_scrb_linezoom; 65 required_shared_ptr<uint32_t> m_scrb_videoregs; 66 required_shared_ptr<uint32_t> m_scrc_videoram; 67 required_shared_ptr<uint32_t> m_scrc_linezoom; 68 required_shared_ptr<uint32_t> m_scrc_videoregs; 69 required_shared_ptr<uint32_t> m_text_videoram; 70 required_shared_ptr<uint32_t> m_text_linezoom; 71 required_shared_ptr<uint32_t> m_text_videoregs; 72 required_shared_ptr<uint32_t> m_mainram; 73 std::unique_ptr<uint32_t[]> m_spriteram_old; 74 std::unique_ptr<uint32_t[]> m_spriteram_old2; 75 76 /* video-related */ 77 tilemap_t *m_scra_tilemap; 78 tilemap_t *m_scrb_tilemap; 79 tilemap_t *m_scrc_tilemap; 80 tilemap_t *m_text_tilemap; 81 82 /* misc */ 83 int m_sndpending; 84 int m_snd_toggle; 85 86 /* devices */ 87 required_device<cpu_device> m_maincpu; 88 required_device<cpu_device> m_audiocpu; 89 required_device<screen_device> m_screen; 90 required_device<gfxdecode_device> m_gfxdecode; 91 required_device<palette_device> m_palette; 92 required_device<generic_latch_16_device> m_soundlatch; 93 94 uint32_t macrossp_soundstatus_r(); 95 void macrossp_soundcmd_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 96 uint16_t macrossp_soundcmd_r(); 97 void palette_fade_w(uint16_t data); 98 void macrossp_speedup_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 99 void macrossp_scra_videoram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 100 void macrossp_scrb_videoram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 101 void macrossp_scrc_videoram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 102 void macrossp_text_videoram_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); 103 TILE_GET_INFO_MEMBER(get_macrossp_scra_tile_info); 104 TILE_GET_INFO_MEMBER(get_macrossp_scrb_tile_info); 105 TILE_GET_INFO_MEMBER(get_macrossp_scrc_tile_info); 106 TILE_GET_INFO_MEMBER(get_macrossp_text_tile_info); 107 virtual void machine_start() override; 108 virtual void machine_reset() override; 109 virtual void video_start() override; 110 uint32_t screen_update_macrossp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 111 DECLARE_WRITE_LINE_MEMBER(screen_vblank_macrossp); 112 void draw_sprites(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); 113 void draw_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int layer, int linem, int pri); 114 DECLARE_WRITE_LINE_MEMBER(irqhandler); 115 116 void macrossp_map(address_map &map); 117 void macrossp_es5506_bank1_map(address_map &map); 118 void macrossp_es5506_bank3_map(address_map &map); 119 void macrossp_sound_map(address_map &map); 120 }; 121 122 #endif // MAME_INCLUDES_MACROSSP_H 123