diff options
Diffstat (limited to 'src/mame/includes/gaplus.h')
-rw-r--r-- | src/mame/includes/gaplus.h | 88 |
1 files changed, 62 insertions, 26 deletions
diff --git a/src/mame/includes/gaplus.h b/src/mame/includes/gaplus.h index c1c275a9608..db7e4541f86 100644 --- a/src/mame/includes/gaplus.h +++ b/src/mame/includes/gaplus.h @@ -13,7 +13,7 @@ struct star { }; -class gaplus_state : public driver_device +class gaplus_base_state : public driver_device { public: enum @@ -22,27 +22,24 @@ public: TIMER_NAMCOIO1_RUN }; - enum - { - GAME_GAPLUS = 0, - GAME_GAPLUSD, - GAME_GALAGA3 - }; - - gaplus_state(const machine_config &mconfig, device_type type, const char *tag) + gaplus_base_state(const machine_config &mconfig, device_type type, const char *tag, const char *namco56xx_tag, const char *namco58xx_tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_subcpu(*this, "sub") , m_subcpu2(*this, "sub2") + , m_namco56xx(*this, namco56xx_tag) + , m_namco58xx(*this, namco58xx_tag) , m_namco_15xx(*this, "namco") , m_samples(*this, "samples") , m_gfxdecode(*this, "gfxdecode") , m_screen(*this, "screen") , m_palette(*this, "palette") - , m_customio_3(*this,"customio_3") - , m_videoram(*this,"videoram") - , m_spriteram(*this,"spriteram") - , m_lamps(*this, "lamp%u", 0U) + , m_proms_region(*this, "proms") + , m_customio_3(*this, "customio_3") + , m_videoram(*this, "videoram") + , m_spriteram(*this, "spriteram") + , m_gfx1_region(*this, "gfx1") + , m_gfx2_region(*this, "gfx2") { } DECLARE_WRITE8_MEMBER(irq_1_ctrl_w); @@ -54,19 +51,13 @@ public: DECLARE_READ8_MEMBER(customio_3_r); DECLARE_WRITE8_MEMBER(videoram_w); DECLARE_WRITE8_MEMBER(starfield_control_w); - DECLARE_WRITE8_MEMBER(out_lamps0); - DECLARE_WRITE8_MEMBER(out_lamps1); - void init_gaplus(); - void init_gaplusd(); - void init_galaga3(); DECLARE_PALETTE_INIT(gaplus); TILEMAP_MAPPER_MEMBER(tilemap_scan); TILE_GET_INFO_MEMBER(get_tile_info); DECLARE_WRITE_LINE_MEMBER(vblank_irq); - DECLARE_WRITE_LINE_MEMBER(gapluso_vblank_irq); TIMER_CALLBACK_MEMBER(namcoio0_run); TIMER_CALLBACK_MEMBER(namcoio1_run); @@ -74,14 +65,15 @@ public: DECLARE_WRITE_LINE_MEMBER(screen_vblank); void starfield_init(); void starfield_render(bitmap_ind16 &bitmap); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) const; - void gapluso(machine_config &config); - void gaplusd(machine_config &config); - void gaplus(machine_config &config); + void gaplus_base(machine_config &config); void cpu1_map(address_map &map); void cpu2_map(address_map &map); void cpu3_map(address_map &map); + + virtual void driver_init() override; + protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void machine_start() override; @@ -91,18 +83,20 @@ protected: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_subcpu; required_device<cpu_device> m_subcpu2; + required_device<namco56xx_device> m_namco56xx; + required_device<namco58xx_device> m_namco58xx; required_device<namco_15xx_device> m_namco_15xx; required_device<samples_device> m_samples; required_device<gfxdecode_device> m_gfxdecode; required_device<screen_device> m_screen; required_device<palette_device> m_palette; - namco58xx_device *m_namco58xx; - namco56xx_device *m_namco56xx; + required_memory_region m_proms_region; required_shared_ptr<uint8_t> m_customio_3; required_shared_ptr<uint8_t> m_videoram; required_shared_ptr<uint8_t> m_spriteram; - output_finder<2> m_lamps; + required_memory_region m_gfx1_region; + required_memory_region m_gfx2_region; int m_type; @@ -116,3 +110,45 @@ protected: emu_timer *m_namcoio0_run_timer; emu_timer *m_namcoio1_run_timer; }; + +class gaplusd_state : public gaplus_base_state +{ +public: + gaplusd_state(const machine_config &mconfig, device_type type, const char *tag) + : gaplus_base_state(mconfig, type, tag, "namcoio_2", "namcoio_1") + { + } + + void gaplusd(machine_config &config); +}; + +class gapluso_state : public gaplus_base_state { +public: + gapluso_state(const machine_config &mconfig, device_type type, const char *tag) + : gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2") { + } + + void gapluso(machine_config &config); + +protected: + DECLARE_WRITE_LINE_MEMBER(vblank_irq); +}; + +class gaplus_state : public gaplus_base_state { +public: + gaplus_state(const machine_config &mconfig, device_type type, const char *tag) + : gaplus_base_state(mconfig, type, tag, "namcoio_1", "namcoio_2") + , m_lamps(*this, "lamp%u", 0U) + { + } + + void gaplus(machine_config &config); + +protected: + virtual void machine_start() override; + + DECLARE_WRITE8_MEMBER(out_lamps0); + DECLARE_WRITE8_MEMBER(out_lamps1); + + output_finder<2> m_lamps; +}; |