// license:BSD-3-Clause // copyright-holders:Manuel Abadia #include "cpu/m68000/m68000.h" #include "video/bufsprite.h" #include "machine/74259.h" #include "machine/eepromser.h" #include "machine/timer.h" class gaelco2_state : public driver_device { public: gaelco2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this,"maincpu"), m_spriteram(*this,"spriteram"), m_vregs(*this, "vregs"), m_snowboar_protection(*this, "snowboar_prot"), m_eeprom(*this, "eeprom"), m_mainlatch(*this, "mainlatch"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_generic_paletteram_16(*this, "paletteram"), m_shareram(*this, "shareram") { } DECLARE_WRITE8_MEMBER(shareram_w); DECLARE_READ8_MEMBER(shareram_r); DECLARE_WRITE16_MEMBER(wrally2_latch_w); DECLARE_WRITE16_MEMBER(alighunt_coin_w); DECLARE_WRITE_LINE_MEMBER(coin1_counter_w); DECLARE_WRITE_LINE_MEMBER(coin2_counter_w); DECLARE_WRITE_LINE_MEMBER(coin3_counter_w); DECLARE_WRITE_LINE_MEMBER(coin4_counter_w); DECLARE_READ16_MEMBER(snowboar_protection_r); DECLARE_WRITE16_MEMBER(snowboar_protection_w); DECLARE_READ16_MEMBER(play2000_shareram_68k_r); DECLARE_WRITE16_MEMBER(play2000_shareram_68k_w); DECLARE_WRITE16_MEMBER(gaelco2_vram_w); DECLARE_WRITE16_MEMBER(gaelco2_palette_w); void init_touchgo(); void init_snowboar(); void init_alighunt(); void init_wrally2(); TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0); TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen1); TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen0_dual); TILE_GET_INFO_MEMBER(get_tile_info_gaelco2_screen1_dual); DECLARE_VIDEO_START(gaelco2); DECLARE_VIDEO_START(gaelco2_dual); uint32_t screen_update_gaelco2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_gaelco2_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_gaelco2_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int mask, int xoffs); uint32_t dual_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int index); void gaelco2_ROM16_split_gfx(const char *src_reg, const char *dst_reg, int start, int length, int dest1, int dest2); void maniacsq_d5002fp(machine_config &config); void play2000(machine_config &config); void alighunt(machine_config &config); void touchgo(machine_config &config); void alighunt_d5002fp(machine_config &config); void snowboar(machine_config &config); void maniacsq(machine_config &config); void maniacsqs(machine_config &config); void touchgo_d5002fp(machine_config &config); void alighunt_map(address_map &map); void maniacsq_map(address_map &map); void mcu_hostmem_map(address_map &map); void play2000_map(address_map &map); void snowboar_map(address_map &map); void touchgo_map(address_map &map); protected: required_device m_maincpu; uint32_t snowboard_latch; uint16_t *m_videoram; tilemap_t *m_pant[2]; int m_dual_monitor; required_device m_spriteram; required_shared_ptr m_vregs; optional_shared_ptr m_snowboar_protection; optional_device m_eeprom; optional_device m_mainlatch; required_device m_gfxdecode; required_device m_palette; required_shared_ptr m_generic_paletteram_16; optional_shared_ptr m_shareram; }; class bang_state : public gaelco2_state { public: bang_state(const machine_config &mconfig, device_type type, const char *tag) : gaelco2_state(mconfig, type, tag) , m_light0_x(*this, "LIGHT0_X") , m_light0_y(*this, "LIGHT0_Y") , m_light1_x(*this, "LIGHT1_X") , m_light1_y(*this, "LIGHT1_Y") {} required_ioport m_light0_x; required_ioport m_light0_y; required_ioport m_light1_x; required_ioport m_light1_y; int m_clr_gun_int; DECLARE_READ16_MEMBER(p1_gun_x); DECLARE_READ16_MEMBER(p1_gun_y); DECLARE_READ16_MEMBER(p2_gun_x); DECLARE_READ16_MEMBER(p2_gun_y); DECLARE_WRITE16_MEMBER(bang_clr_gun_int_w); TIMER_DEVICE_CALLBACK_MEMBER(bang_irq); void init_bang(); void bang(machine_config &config); void bang_map(address_map &map); }; class wrally2_state : public gaelco2_state { public: wrally2_state(const machine_config &mconfig, device_type type, const char *tag) : gaelco2_state(mconfig, type, tag) , m_analog0(*this, "ANALOG0") , m_analog1(*this, "ANALOG1") {} required_ioport m_analog0; required_ioport m_analog1; uint8_t m_analog_ports[2]; DECLARE_WRITE_LINE_MEMBER(wrally2_adc_clk); DECLARE_WRITE_LINE_MEMBER(wrally2_adc_cs); DECLARE_CUSTOM_INPUT_MEMBER(wrally2_analog_bit_r); void wrally2(machine_config &config); void wrally2_map(address_map &map); };