// license:BSD-3-Clause // copyright-holders:Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni,Lee Taylor, Valerio Verrando, Zsolt Vasvari // thanks-to:Michael Strutts, Marco Cassili /*************************************************************************** 8080-based black and white hardware ****************************************************************************/ #ifndef MAME_INCLUDES_8080BW_H #define MAME_INCLUDES_8080BW_H #pragma once #include "includes/mw8080bw.h" #include "machine/eepromser.h" #include "machine/timer.h" #include "sound/sn76477.h" #include "sound/spkrdev.h" #include "screen.h" /* for games in 8080bw.c */ #define CABINET_PORT_TAG "CAB" class _8080bw_state : public mw8080bw_state { public: _8080bw_state(const machine_config &mconfig, device_type type, const char *tag) : mw8080bw_state(mconfig, type, tag), m_schaser_effect_555_timer(*this, "schaser_sh_555"), m_claybust_gun_on(*this, "claybust_gun"), m_speaker(*this, "speaker"), m_eeprom(*this, "eeprom"), m_palette(*this, "palette"), m_gunx(*this, "GUNX"), m_guny(*this, "GUNY") { } /* devices/memory pointers */ optional_device m_schaser_effect_555_timer; optional_device m_claybust_gun_on; optional_device m_speaker; optional_device m_eeprom; optional_device m_palette; /* misc game specific */ optional_ioport m_gunx; optional_ioport m_guny; uint8_t m_color_map; uint8_t m_screen_red; uint8_t m_fleet_step; attotime m_schaser_effect_555_time_remain; int32_t m_schaser_effect_555_time_remain_savable; int m_schaser_effect_555_is_low; int m_schaser_explosion; int m_schaser_last_effect; uint8_t m_polaris_cloud_speed; uint8_t m_polaris_cloud_pos; uint8_t m_schaser_background_disable; uint8_t m_schaser_background_select; uint16_t m_claybust_gun_pos; DECLARE_CUSTOM_INPUT_MEMBER(sflush_80_r); DECLARE_INPUT_CHANGED_MEMBER(claybust_gun_trigger); DECLARE_CUSTOM_INPUT_MEMBER(claybust_gun_on_r); DECLARE_READ8_MEMBER(indianbt_r); DECLARE_READ8_MEMBER(polaris_port00_r); DECLARE_WRITE8_MEMBER(steelwkr_sh_port_3_w); DECLARE_WRITE8_MEMBER(invadpt2_sh_port_1_w); DECLARE_WRITE8_MEMBER(invadpt2_sh_port_2_w); DECLARE_WRITE8_MEMBER(spacerng_sh_port_2_w); DECLARE_WRITE8_MEMBER(spcewars_sh_port_w); DECLARE_WRITE8_MEMBER(lrescue_sh_port_1_w); DECLARE_WRITE8_MEMBER(lrescue_sh_port_2_w); DECLARE_WRITE8_MEMBER(cosmicmo_05_w); DECLARE_WRITE8_MEMBER(cosmo_sh_port_2_w); DECLARE_READ8_MEMBER(darthvdr_01_r); DECLARE_WRITE8_MEMBER(darthvdr_00_w); DECLARE_WRITE8_MEMBER(darthvdr_08_w); DECLARE_WRITE8_MEMBER(ballbomb_01_w); DECLARE_WRITE8_MEMBER(ballbomb_sh_port_1_w); DECLARE_WRITE8_MEMBER(ballbomb_sh_port_2_w); DECLARE_WRITE8_MEMBER(indianbt_sh_port_1_w); DECLARE_WRITE8_MEMBER(indianbt_sh_port_2_w); DECLARE_WRITE8_MEMBER(indianbtbr_sh_port_1_w); DECLARE_WRITE8_MEMBER(indianbtbr_sh_port_2_w); DECLARE_READ8_MEMBER(indianbtbr_01_r); DECLARE_WRITE8_MEMBER(schaser_sh_port_1_w); DECLARE_WRITE8_MEMBER(schaser_sh_port_2_w); DECLARE_WRITE8_MEMBER(rollingc_sh_port_w); DECLARE_READ8_MEMBER(invrvnge_02_r); DECLARE_WRITE8_MEMBER(invrvnge_sh_port_1_w); DECLARE_WRITE8_MEMBER(invrvnge_sh_port_2_w); DECLARE_WRITE8_MEMBER(lupin3_00_w); DECLARE_WRITE8_MEMBER(lupin3_sh_port_1_w); DECLARE_WRITE8_MEMBER(lupin3_sh_port_2_w); DECLARE_READ8_MEMBER(schasercv_02_r); DECLARE_WRITE8_MEMBER(schasercv_sh_port_1_w); DECLARE_WRITE8_MEMBER(schasercv_sh_port_2_w); DECLARE_WRITE8_MEMBER(crashrd_port03_w); DECLARE_WRITE8_MEMBER(crashrd_port05_w); DECLARE_WRITE8_MEMBER(yosakdon_sh_port_1_w); DECLARE_WRITE8_MEMBER(yosakdon_sh_port_2_w); DECLARE_READ8_MEMBER(shuttlei_ff_r); DECLARE_WRITE8_MEMBER(shuttlei_ff_w); DECLARE_WRITE8_MEMBER(shuttlei_sh_port_1_w); DECLARE_WRITE8_MEMBER(shuttlei_sh_port_2_w); DECLARE_READ8_MEMBER(claybust_gun_lo_r); DECLARE_READ8_MEMBER(claybust_gun_hi_r); DECLARE_READ8_MEMBER(invmulti_eeprom_r); DECLARE_WRITE8_MEMBER(invmulti_eeprom_w); DECLARE_WRITE8_MEMBER(invmulti_bank_w); DECLARE_READ8_MEMBER(rollingc_scattered_colorram_r); DECLARE_WRITE8_MEMBER(rollingc_scattered_colorram_w); DECLARE_READ8_MEMBER(rollingc_scattered_colorram2_r); DECLARE_WRITE8_MEMBER(rollingc_scattered_colorram2_w); DECLARE_READ8_MEMBER(schaser_scattered_colorram_r); DECLARE_WRITE8_MEMBER(schaser_scattered_colorram_w); void init_invmulti(); void init_spacecom(); void init_vortex(); void init_attackfc(); DECLARE_MACHINE_START(extra_8080bw); DECLARE_MACHINE_START(rollingc); DECLARE_MACHINE_START(sflush); DECLARE_MACHINE_START(schaser); DECLARE_MACHINE_START(schasercv); DECLARE_MACHINE_RESET(schaser); DECLARE_MACHINE_START(polaris); DECLARE_MACHINE_START(darthvdr); DECLARE_MACHINE_RESET(darthvdr); DECLARE_MACHINE_START(extra_8080bw_sh); DECLARE_MACHINE_START(extra_8080bw_vh); DECLARE_MACHINE_START(schaser_sh); DECLARE_MACHINE_RESET(schaser_sh); DECLARE_MACHINE_START(claybust); DECLARE_PALETTE_INIT(rollingc); DECLARE_PALETTE_INIT(sflush); uint32_t screen_update_invadpt2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_cosmo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_rollingc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_schaser(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_schasercv(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_sflush(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_indianbt(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_lupin3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_polaris(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_ballbomb(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_shuttlei(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_spacecom(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(polaris_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(claybust_gun_callback); TIMER_DEVICE_CALLBACK_MEMBER(schaser_effect_555_cb); DECLARE_WRITE8_MEMBER(indianbt_sh_port_3_w); DECLARE_WRITE8_MEMBER(polaris_sh_port_1_w); DECLARE_WRITE8_MEMBER(polaris_sh_port_2_w); DECLARE_WRITE8_MEMBER(polaris_sh_port_3_w); void schaser_reinit_555_time_remain(); inline void set_pixel( bitmap_rgb32 &bitmap, uint8_t y, uint8_t x, int color ); inline void set_8_pixels( bitmap_rgb32 &bitmap, uint8_t y, uint8_t x, uint8_t data, int fore_color, int back_color ); void clear_extra_columns( bitmap_rgb32 &bitmap, int color ); void indianbtbr(machine_config &config); void claybust(machine_config &config); void shuttlei(machine_config &config); void spcewarla(machine_config &config); void escmars(machine_config &config); void lrescue(machine_config &config); void invmulti(machine_config &config); void yosakdon(machine_config &config); void polaris(machine_config &config); void attackfc(machine_config &config); void astropal(machine_config &config); void rollingc(machine_config &config); void vortex(machine_config &config); void invrvnge(machine_config &config); void sflush(machine_config &config); void invadpt2(machine_config &config); void lupin3a(machine_config &config); void indianbt(machine_config &config); void starw1(machine_config &config); void cosmo(machine_config &config); void spcewars(machine_config &config); void cosmicmo(machine_config &config); void darthvdr(machine_config &config); void ballbomb(machine_config &config); void spacecom(machine_config &config); void crashrd(machine_config &config); void schasercv(machine_config &config); void lupin3(machine_config &config); void spacerng(machine_config &config); void steelwkr(machine_config &config); void schaser(machine_config &config); void astropal_io_map(address_map &map); void attackfc_io_map(address_map &map); void ballbomb_io_map(address_map &map); void claybust_io_map(address_map &map); void cosmicmo_io_map(address_map &map); void cosmo_io_map(address_map &map); void cosmo_map(address_map &map); void crashrd_io_map(address_map &map); void darthvdr_io_map(address_map &map); void darthvdr_map(address_map &map); void escmars_map(address_map &map); void indianbt_io_map(address_map &map); void indianbtbr_io_map(address_map &map); void invadpt2_io_map(address_map &map); void invmulti_map(address_map &map); void invrvnge_io_map(address_map &map); void invrvnge_sound_map(address_map &map); void lrescue_io_map(address_map &map); void lupin3_io_map(address_map &map); void polaris_io_map(address_map &map); void rollingc_io_map(address_map &map); void rollingc_map(address_map &map); void schaser_io_map(address_map &map); void schaser_map(address_map &map); void schasercv_io_map(address_map &map); void sflush_map(address_map &map); void shuttlei_io_map(address_map &map); void shuttlei_map(address_map &map); void spacecom_io_map(address_map &map); void spacecom_map(address_map &map); void spacerng_io_map(address_map &map); void spcewarla_io_map(address_map &map); void spcewars_io_map(address_map &map); void starw1_io_map(address_map &map); void steelwkr_io_map(address_map &map); void vortex_io_map(address_map &map); void yosakdon_io_map(address_map &map); void yosakdon_map(address_map &map); }; /*----------- defined in audio/8080bw.c -----------*/ extern const char *const lrescue_sample_names[]; extern const char *const lupin3_sample_names[]; DISCRETE_SOUND_EXTERN( ballbomb_discrete ); DISCRETE_SOUND_EXTERN( indianbt_discrete ); DISCRETE_SOUND_EXTERN( polaris_discrete ); DISCRETE_SOUND_EXTERN( schaser_discrete ); #endif // MAME_INCLUDES_8080BW_H