summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2015-02-26 18:02:46 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2015-02-26 18:02:46 +0100
commit3c130ba6963280418883ca9014b292535f183037 (patch)
tree6af9703a2f2556f6eceb34925b80d690e4f101fa
parentcf05cdf6835f5f1f0480f0752220491d9ad62fd9 (diff)
vulgus.c: added save state support (nw)
-rw-r--r--src/mame/drivers/vulgus.c20
-rw-r--r--src/mame/includes/vulgus.h18
-rw-r--r--src/mame/video/vulgus.c12
3 files changed, 29 insertions, 21 deletions
diff --git a/src/mame/drivers/vulgus.c b/src/mame/drivers/vulgus.c
index 6b4b330fe7a..ca0aaa9af4e 100644
--- a/src/mame/drivers/vulgus.c
+++ b/src/mame/drivers/vulgus.c
@@ -47,7 +47,7 @@ All Clocks and Vsync verified by Corrado Tomaselli (August 2012)
#include "includes/vulgus.h"
-INTERRUPT_GEN_MEMBER(vulgus_state::vulgus_vblank_irq)
+INTERRUPT_GEN_MEMBER(vulgus_state::vblank_irq)
{
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h - vblank */
}
@@ -62,12 +62,12 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, vulgus_state )
AM_RANGE(0xc800, 0xc800) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xc801, 0xc801) AM_WRITENOP // ?
AM_RANGE(0xc802, 0xc803) AM_RAM AM_SHARE("scroll_low")
- AM_RANGE(0xc804, 0xc804) AM_WRITE(vulgus_c804_w)
- AM_RANGE(0xc805, 0xc805) AM_WRITE(vulgus_palette_bank_w)
+ AM_RANGE(0xc804, 0xc804) AM_WRITE(c804_w)
+ AM_RANGE(0xc805, 0xc805) AM_WRITE(palette_bank_w)
AM_RANGE(0xc902, 0xc903) AM_RAM AM_SHARE("scroll_high")
AM_RANGE(0xcc00, 0xcc7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(vulgus_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(vulgus_bgvideoram_w) AM_SHARE("bgvideoram")
+ AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
+ AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0xe000, 0xefff) AM_RAM
ADDRESS_MAP_END
@@ -213,7 +213,7 @@ static MACHINE_CONFIG_START( vulgus, vulgus_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz/4) /* 3 MHz */
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", vulgus_state, vulgus_vblank_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", vulgus_state, vblank_irq)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/4) /* 3 MHz */
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -225,7 +225,7 @@ static MACHINE_CONFIG_START( vulgus, vulgus_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(vulgus_state, screen_update_vulgus)
+ MCFG_SCREEN_UPDATE_DRIVER(vulgus_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", vulgus)
@@ -371,6 +371,6 @@ ROM_END
-GAME( 1984, vulgus, 0, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (set 1)", 0 )
-GAME( 1984, vulgusa, vulgus, vulgus, vulgus, driver_device, 0, ROT90, "Capcom", "Vulgus (set 2)", 0 )
-GAME( 1984, vulgusj, vulgus, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (Japan?)", 0 )
+GAME( 1984, vulgus, 0, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (set 1)", GAME_SUPPORTS_SAVE )
+GAME( 1984, vulgusa, vulgus, vulgus, vulgus, driver_device, 0, ROT90, "Capcom", "Vulgus (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1984, vulgusj, vulgus, vulgus, vulgus, driver_device, 0, ROT270, "Capcom", "Vulgus (Japan?)", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/vulgus.h b/src/mame/includes/vulgus.h
index 05bdd367319..2c4294cc75f 100644
--- a/src/mame/includes/vulgus.h
+++ b/src/mame/includes/vulgus.h
@@ -24,6 +24,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+
required_shared_ptr<UINT8> m_scroll_low;
required_shared_ptr<UINT8> m_scroll_high;
required_shared_ptr<UINT8> m_spriteram;
@@ -33,15 +34,20 @@ public:
int m_palette_bank;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
- DECLARE_WRITE8_MEMBER(vulgus_fgvideoram_w);
- DECLARE_WRITE8_MEMBER(vulgus_bgvideoram_w);
- DECLARE_WRITE8_MEMBER(vulgus_c804_w);
- DECLARE_WRITE8_MEMBER(vulgus_palette_bank_w);
+
+ DECLARE_WRITE8_MEMBER(fgvideoram_w);
+ DECLARE_WRITE8_MEMBER(bgvideoram_w);
+ DECLARE_WRITE8_MEMBER(c804_w);
+ DECLARE_WRITE8_MEMBER(palette_bank_w);
+
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
+
virtual void video_start();
DECLARE_PALETTE_INIT(vulgus);
- UINT32 screen_update_vulgus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(vulgus_vblank_irq);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
+
+ INTERRUPT_GEN_MEMBER(vblank_irq);
};
diff --git a/src/mame/video/vulgus.c b/src/mame/video/vulgus.c
index 4c7d1f96808..1c99617e85b 100644
--- a/src/mame/video/vulgus.c
+++ b/src/mame/video/vulgus.c
@@ -113,6 +113,8 @@ void vulgus_state::video_start()
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(vulgus_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47);
+
+ save_item(NAME(m_palette_bank));
}
@@ -122,20 +124,20 @@ void vulgus_state::video_start()
***************************************************************************/
-WRITE8_MEMBER(vulgus_state::vulgus_fgvideoram_w)
+WRITE8_MEMBER(vulgus_state::fgvideoram_w)
{
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset & 0x3ff);
}
-WRITE8_MEMBER(vulgus_state::vulgus_bgvideoram_w)
+WRITE8_MEMBER(vulgus_state::bgvideoram_w)
{
m_bgvideoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset & 0x3ff);
}
-WRITE8_MEMBER(vulgus_state::vulgus_c804_w)
+WRITE8_MEMBER(vulgus_state::c804_w)
{
/* bits 0 and 1 are coin counters */
coin_counter_w(machine(), 0, data & 0x01);
@@ -146,7 +148,7 @@ WRITE8_MEMBER(vulgus_state::vulgus_c804_w)
}
-WRITE8_MEMBER(vulgus_state::vulgus_palette_bank_w)
+WRITE8_MEMBER(vulgus_state::palette_bank_w)
{
if (m_palette_bank != (data & 3))
{
@@ -194,7 +196,7 @@ void vulgus_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
}
}
-UINT32 vulgus_state::screen_update_vulgus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 vulgus_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_bg_tilemap->set_scrollx(0, m_scroll_low[1] + 256 * m_scroll_high[1]);
m_bg_tilemap->set_scrolly(0, m_scroll_low[0] + 256 * m_scroll_high[0]);