1 // license:BSD-3-Clause 2 // copyright-holders:Luca Elia, Olivier Galibert 3 /*************************************************************************** 4 5 Galivan - Cosmo Police 6 7 ***************************************************************************/ 8 #ifndef MAME_INCLUDES_GALIVAN_H 9 #define MAME_INCLUDES_GALIVAN_H 10 11 #pragma once 12 13 #include "machine/nb1412m2.h" 14 #include "machine/nb1414m4.h" 15 #include "machine/gen_latch.h" 16 #include "video/bufsprite.h" 17 #include "screen.h" 18 #include "emupal.h" 19 #include "tilemap.h" 20 21 class galivan_state : public driver_device 22 { 23 public: galivan_state(const machine_config & mconfig,device_type type,const char * tag)24 galivan_state(const machine_config &mconfig, device_type type, const char *tag) : 25 driver_device(mconfig, type, tag) 26 , m_maincpu(*this, "maincpu") 27 , m_videoram(*this, "videoram") 28 , m_spriteram(*this, "spriteram") 29 , m_nb1414m4(*this, "nb1414m4") 30 , m_screen(*this, "screen") 31 , m_gfxdecode(*this, "gfxdecode") 32 , m_palette(*this, "palette") 33 , m_soundlatch(*this, "soundlatch") 34 { } 35 36 void galivan(machine_config &config); 37 void ninjemak(machine_config &config); 38 void youmab(machine_config &config); 39 40 void init_youmab(); 41 42 protected: 43 void io_map(address_map &map); 44 void video_config(machine_config &config); 45 46 required_device<cpu_device> m_maincpu; 47 48 private: 49 /* memory pointers */ 50 required_shared_ptr<uint8_t> m_videoram; 51 required_device<buffered_spriteram8_device> m_spriteram; 52 53 /* video-related */ 54 tilemap_t *m_bg_tilemap; 55 tilemap_t *m_tx_tilemap; 56 uint16_t m_scrollx; 57 uint16_t m_scrolly; 58 uint8_t m_galivan_scrollx[2],m_galivan_scrolly[2]; 59 uint8_t m_layers; 60 uint8_t m_ninjemak_dispdisable; 61 62 uint8_t m_shift_scroll; //youmab 63 uint32_t m_shift_val; 64 void galivan_sound_command_w(uint8_t data); 65 uint8_t soundlatch_clear_r(); 66 uint8_t IO_port_c0_r(); 67 void blit_trigger_w(uint8_t data); 68 void vblank_ack_w(uint8_t data); 69 void youmab_extra_bank_w(uint8_t data); 70 uint8_t youmab_8a_r(); 71 void youmab_81_w(uint8_t data); 72 void youmab_84_w(uint8_t data); 73 void youmab_86_w(uint8_t data); 74 void galivan_videoram_w(offs_t offset, uint8_t data); 75 void galivan_gfxbank_w(uint8_t data); 76 void ninjemak_gfxbank_w(uint8_t data); 77 void galivan_scrollx_w(offs_t offset, uint8_t data); 78 void galivan_scrolly_w(offs_t offset, uint8_t data); 79 TILE_GET_INFO_MEMBER(get_bg_tile_info); 80 TILE_GET_INFO_MEMBER(get_tx_tile_info); 81 TILE_GET_INFO_MEMBER(ninjemak_get_bg_tile_info); 82 TILE_GET_INFO_MEMBER(ninjemak_get_tx_tile_info); 83 void galivan_palette(palette_device &palette) const; 84 void ninjemak_palette(palette_device &palette) const; 85 DECLARE_MACHINE_START(galivan); 86 DECLARE_MACHINE_RESET(galivan); 87 DECLARE_VIDEO_START(galivan); 88 DECLARE_MACHINE_START(ninjemak); 89 DECLARE_MACHINE_RESET(ninjemak); 90 DECLARE_VIDEO_START(ninjemak); 91 uint32_t screen_update_galivan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 92 uint32_t screen_update_ninjemak(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 93 void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); 94 95 optional_device<nb1414m4_device> m_nb1414m4; 96 required_device<screen_device> m_screen; 97 required_device<gfxdecode_device> m_gfxdecode; 98 required_device<palette_device> m_palette; 99 required_device<generic_latch_8_device> m_soundlatch; 100 101 void galivan_map(address_map &map); 102 void ninjemak_io_map(address_map &map); 103 void ninjemak_map(address_map &map); 104 void sound_io_map(address_map &map); 105 void sound_map(address_map &map); 106 }; 107 108 class dangarj_state : public galivan_state 109 { 110 public: dangarj_state(const machine_config & mconfig,device_type type,const char * tag)111 dangarj_state(const machine_config &mconfig, device_type type, const char *tag) : 112 galivan_state(mconfig, type, tag), 113 m_prot(*this, "prot_chip") 114 { } 115 116 void dangarj(machine_config &config); 117 118 private: 119 required_device<nb1412m2_device> m_prot; 120 121 void dangarj_io_map(address_map &map); 122 }; 123 124 #endif // MAME_INCLUDES_GALIVAN_H 125