// license:BSD-3-Clause // copyright-holders:Ville Linde, hap, Nicola Salmoria /****************************************************************************** Seibu SPI hardware ******************************************************************************/ #include "machine/intelfsh.h" #include "machine/eepromser.h" #include "machine/7200fifo.h" #include "sound/okim6295.h" class seibuspi_state : public driver_device { public: seibuspi_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_mainram(*this, "mainram"), m_scrollram(*this, "scrollram"), m_z80_rom(*this, "audiocpu"), m_eeprom(*this, "eeprom"), m_soundflash1(*this, "soundflash1"), m_soundflash2(*this, "soundflash2"), m_soundfifo1(*this, "soundfifo1"), m_soundfifo2(*this, "soundfifo2"), m_oki1(*this, "oki1"), m_oki2(*this, "oki2"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } required_device m_maincpu; optional_device m_audiocpu; required_shared_ptr m_mainram; optional_shared_ptr m_scrollram; optional_memory_region m_z80_rom; optional_device m_eeprom; optional_device m_soundflash1; optional_device m_soundflash2; optional_device m_soundfifo1; optional_device m_soundfifo2; optional_device m_oki1; optional_device m_oki2; required_device m_gfxdecode; required_device m_palette; int m_z80_prg_transfer_pos; int m_z80_lastbank; UINT8 m_sb_coin_latch; UINT8 m_ejsakura_input_port; tilemap_t *m_text_layer; tilemap_t *m_back_layer; tilemap_t *m_midl_layer; tilemap_t *m_fore_layer; UINT32 m_video_dma_length; UINT32 m_video_dma_address; UINT32 m_layer_enable; UINT32 m_layer_bank; UINT8 m_rf2_layer_bank; int m_rowscroll_enable; int m_midl_layer_offset; int m_fore_layer_offset; int m_text_layer_offset; int m_fore_layer_d13; int m_back_layer_d14; int m_midl_layer_d14; int m_fore_layer_d14; std::unique_ptr m_tilemap_ram; std::unique_ptr m_palette_ram; std::unique_ptr m_sprite_ram; UINT32 m_tilemap_ram_size; UINT32 m_palette_ram_size; UINT32 m_sprite_ram_size; UINT32 m_bg_fore_layer_position; UINT8 m_alpha_table[0x2000]; int m_sprite_bpp; DECLARE_READ32_MEMBER(spi_layer_bank_r); DECLARE_WRITE32_MEMBER(spi_layer_bank_w); DECLARE_WRITE32_MEMBER(spi_layer_enable_w); DECLARE_WRITE8_MEMBER(rf2_layer_bank_w); DECLARE_WRITE32_MEMBER(tilemap_dma_start_w); DECLARE_WRITE32_MEMBER(palette_dma_start_w); DECLARE_WRITE16_MEMBER(sprite_dma_start_w); DECLARE_WRITE32_MEMBER(video_dma_length_w); DECLARE_WRITE32_MEMBER(video_dma_address_w); DECLARE_READ8_MEMBER(spi_status_r); DECLARE_READ8_MEMBER(spi_ds2404_unknown_r); DECLARE_READ8_MEMBER(sb_coin_r); DECLARE_WRITE8_MEMBER(spi_coin_w); DECLARE_READ8_MEMBER(sound_fifo_status_r); DECLARE_WRITE8_MEMBER(z80_prg_transfer_w); DECLARE_WRITE8_MEMBER(z80_enable_w); DECLARE_READ8_MEMBER(z80_soundfifo_status_r); DECLARE_WRITE8_MEMBER(z80_bank_w); DECLARE_READ32_MEMBER(ejsakura_keyboard_r); DECLARE_WRITE32_MEMBER(ejsakura_input_select_w); DECLARE_WRITE8_MEMBER(eeprom_w); DECLARE_WRITE8_MEMBER(spi_layerbanks_eeprom_w); DECLARE_WRITE8_MEMBER(oki_bank_w); DECLARE_READ8_MEMBER(flashrom_read); DECLARE_WRITE8_MEMBER(flashrom_write); DECLARE_READ32_MEMBER(senkyu_speedup_r); DECLARE_READ32_MEMBER(senkyua_speedup_r); DECLARE_READ32_MEMBER(batlball_speedup_r); DECLARE_READ32_MEMBER(rdft_speedup_r); DECLARE_READ32_MEMBER(viprp1_speedup_r); DECLARE_READ32_MEMBER(viprp1o_speedup_r); DECLARE_READ32_MEMBER(rf2_speedup_r); DECLARE_READ32_MEMBER(rfjet_speedup_r); DECLARE_CUSTOM_INPUT_MEMBER(ejanhs_encode); DECLARE_WRITE_LINE_MEMBER(ymf_irqhandler); IRQ_CALLBACK_MEMBER(spi_irq_callback); INTERRUPT_GEN_MEMBER(spi_interrupt); void set_layer_offsets(); void drawgfx_blend(bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx, UINT32 code, UINT32 color, int flipx, int flipy, int sx, int sy, bitmap_ind8 &primap, int primask); void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &primap, int priority); void combine_tilemap(bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tile, int sx, int sy, int opaque, INT16 *rowscroll); virtual void machine_start() override; virtual void video_start() override; DECLARE_MACHINE_RESET(spi); DECLARE_MACHINE_RESET(sxx2e); DECLARE_VIDEO_START(ejanhs); DECLARE_VIDEO_START(sys386f); TILE_GET_INFO_MEMBER(get_text_tile_info); TILE_GET_INFO_MEMBER(get_back_tile_info); TILE_GET_INFO_MEMBER(get_midl_tile_info); TILE_GET_INFO_MEMBER(get_fore_tile_info); UINT32 screen_update_spi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); UINT32 screen_update_sys386f(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void register_video_state(); void init_spi_common(); void init_sei252(); void init_rise10(); void init_rise11(); DECLARE_DRIVER_INIT(batlball); DECLARE_DRIVER_INIT(senkyu); DECLARE_DRIVER_INIT(viprp1); DECLARE_DRIVER_INIT(viprp1o); DECLARE_DRIVER_INIT(rdft); DECLARE_DRIVER_INIT(rfjet); DECLARE_DRIVER_INIT(senkyua); DECLARE_DRIVER_INIT(rdft2); DECLARE_DRIVER_INIT(ejanhs); DECLARE_DRIVER_INIT(sys386f); };