// license:BSD-3-Clause // copyright-holders:Phil Stroffolino /*************************************************************************** Ninja Gaiden ***************************************************************************/ #include "machine/gen_latch.h" #include "machine/74157.h" #include "sound/msm5205.h" #include "video/tecmo_spr.h" #include "video/tecmo_mix.h" #include "screen.h" class gaiden_state : public driver_device { public: gaiden_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_videoram(*this, "videoram%u", 1), m_spriteram(*this, "spriteram"), m_adpcm_bank(*this, "adpcm_bank"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), m_sprgen(*this, "spritegen"), m_mixer(*this, "mixer"), m_msm(*this, "msm%u", 1), m_adpcm_select(*this, "adpcm_select%u", 1) { } /* memory pointers */ required_shared_ptr_array m_videoram; required_shared_ptr m_spriteram; optional_memory_bank m_adpcm_bank; /* video-related */ tilemap_t *m_text_layer; tilemap_t *m_foreground; tilemap_t *m_background; bitmap_ind16 m_sprite_bitmap; bitmap_ind16 m_tile_bitmap_bg; bitmap_ind16 m_tile_bitmap_fg; uint16_t m_tx_scroll_x; uint16_t m_tx_scroll_y; uint16_t m_bg_scroll_x; uint16_t m_bg_scroll_y; uint16_t m_fg_scroll_x; uint16_t m_fg_scroll_y; int8_t m_tx_offset_y; int8_t m_bg_offset_y; int8_t m_fg_offset_y; int8_t m_spr_offset_y; /* misc */ int m_sprite_sizey; int m_prot; int m_jumpcode; const int *m_jumppoints; // raiga, wildfang bool m_adpcm_toggle; /* devices */ required_device m_maincpu; required_device m_audiocpu; required_device m_gfxdecode; required_device m_screen; required_device m_palette; optional_device m_sprgen; optional_device m_mixer; optional_device_array m_msm; optional_device_array m_adpcm_select; // mastninja ADPCM control DECLARE_WRITE_LINE_MEMBER(vck_flipflop_w); DECLARE_WRITE8_MEMBER(adpcm_bankswitch_w); DECLARE_WRITE16_MEMBER(irq_ack_w); DECLARE_WRITE8_MEMBER(drgnbowl_irq_ack_w); DECLARE_WRITE16_MEMBER(gaiden_sound_command_w); DECLARE_WRITE16_MEMBER(wildfang_protection_w); DECLARE_READ16_MEMBER(wildfang_protection_r); DECLARE_WRITE16_MEMBER(raiga_protection_w); DECLARE_READ16_MEMBER(raiga_protection_r); DECLARE_WRITE16_MEMBER(gaiden_flip_w); DECLARE_WRITE16_MEMBER(gaiden_txscrollx_w); DECLARE_WRITE16_MEMBER(gaiden_txscrolly_w); DECLARE_WRITE16_MEMBER(gaiden_fgscrollx_w); DECLARE_WRITE16_MEMBER(gaiden_fgscrolly_w); DECLARE_WRITE16_MEMBER(gaiden_bgscrollx_w); DECLARE_WRITE16_MEMBER(gaiden_bgscrolly_w); DECLARE_WRITE16_MEMBER(gaiden_txoffsety_w); DECLARE_WRITE16_MEMBER(gaiden_fgoffsety_w); DECLARE_WRITE16_MEMBER(gaiden_bgoffsety_w); DECLARE_WRITE16_MEMBER(gaiden_sproffsety_w); DECLARE_WRITE16_MEMBER(bg_videoram_w); DECLARE_WRITE16_MEMBER(fg_videoram_w); DECLARE_WRITE16_MEMBER(tx_videoram_w); void init_raiga(); void init_drgnbowl(); void init_drgnbowla(); void init_mastninj(); void init_shadoww(); void init_wildfang(); TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info_raiga); TILE_GET_INFO_MEMBER(get_tx_tile_info); DECLARE_MACHINE_START(mastninj); DECLARE_MACHINE_RESET(raiga); DECLARE_VIDEO_START(gaiden); DECLARE_VIDEO_START(drgnbowl); DECLARE_VIDEO_START(raiga); uint32_t screen_update_gaiden(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_drgnbowl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void drgnbowl_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void descramble_drgnbowl(int descramble_cpu); void descramble_mastninj_gfx(uint8_t* src); void raiga(machine_config &config); void drgnbowl(machine_config &config); void mastninj(machine_config &config); void shadoww(machine_config &config); void wildfang(machine_config &config); void drgnbowl_map(address_map &map); void drgnbowl_sound_map(address_map &map); void drgnbowl_sound_port_map(address_map &map); void gaiden_map(address_map &map); void wildfang_map(address_map &map); void raiga_map(address_map &map); void mastninj_map(address_map &map); void mastninj_sound_map(address_map &map); void sound_map(address_map &map); protected: virtual void machine_start() override; virtual void machine_reset() override; };