mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
vulgus.c: added save state support (nw)
This commit is contained in:
parent
cf05cdf683
commit
3c130ba696
@ -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 )
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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]);
|
||||
|
Loading…
Reference in New Issue
Block a user