From 3c130ba6963280418883ca9014b292535f183037 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 26 Feb 2015 18:02:46 +0100 Subject: vulgus.c: added save state support (nw) --- src/mame/drivers/vulgus.c | 20 ++++++++++---------- src/mame/includes/vulgus.h | 18 ++++++++++++------ src/mame/video/vulgus.c | 12 +++++++----- 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 m_audiocpu; required_device m_gfxdecode; required_device m_palette; + required_shared_ptr m_scroll_low; required_shared_ptr m_scroll_high; required_shared_ptr 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]); -- cgit v1.2.3