summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/gaplus.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/gaplus.h')
-rw-r--r--src/mame/includes/gaplus.h88
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;
+};