diff options
author | Ivan Vangelista <mesgnet@yahoo.it> | 2015-01-31 11:35:27 +0100 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2015-01-31 11:35:27 +0100 |
commit | a5f4f5cfb95a630d4a38ce341bf128f4ac0aeaca (patch) | |
tree | d303e743671a1bd588200166e5472c9ea5a66e78 | |
parent | c0c92d60b5170dd51c631185ad05d22eb37283ad (diff) |
rollrace.c: added save state support, removed unneeded prefixes (nw)
-rw-r--r-- | src/mame/drivers/rollrace.c | 44 | ||||
-rw-r--r-- | src/mame/includes/rollrace.h | 58 | ||||
-rw-r--r-- | src/mame/video/rollrace.c | 66 |
3 files changed, 95 insertions, 73 deletions
diff --git a/src/mame/drivers/rollrace.c b/src/mame/drivers/rollrace.c index cfe746e0ef2..e2601bd5a56 100644 --- a/src/mame/drivers/rollrace.c +++ b/src/mame/drivers/rollrace.c @@ -12,12 +12,28 @@ Issues: #include "sound/ay8910.h" #include "includes/rollrace.h" -READ8_MEMBER(rollrace_state::ra_fake_d800_r) + +void rollrace_state::machine_start() +{ + save_item(NAME(m_charbank)); + save_item(NAME(m_bkgpage)); + save_item(NAME(m_bkgflip)); + save_item(NAME(m_chrbank)); + save_item(NAME(m_bkgpen)); + save_item(NAME(m_bkgcol)); + save_item(NAME(m_flipy)); + save_item(NAME(m_flipx)); + save_item(NAME(m_spritebank)); + save_item(NAME(m_nmi_mask)); + save_item(NAME(m_sound_nmi_mask)); +} + +READ8_MEMBER(rollrace_state::fake_d800_r) { return 0x51; } -WRITE8_MEMBER(rollrace_state::ra_fake_d800_w) +WRITE8_MEMBER(rollrace_state::fake_d800_w) { /* logerror("d900: %02X\n",data);*/ } @@ -38,24 +54,24 @@ static ADDRESS_MAP_START( rollrace_map, AS_PROGRAM, 8, rollrace_state ) AM_RANGE(0x8000, 0x9fff) AM_ROM /* only rollace2 */ AM_RANGE(0xc000, 0xcfff) AM_RAM AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/ - AM_RANGE(0xd900, 0xd900) AM_READWRITE(ra_fake_d800_r,ra_fake_d800_w) /* protection ??*/ + AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/ AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram") AM_RANGE(0xe400, 0xe47f) AM_RAM AM_SHARE("colorram") AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/ AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w) + AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w) AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1") - AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(rollrace_bkgpen_w) - AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(rollrace_backgroundpage_w) - AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w) + AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bkgpen_w) + AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(backgroundpage_w) + AM_RANGE(0xf803, 0xf803) AM_WRITE(flipy_w) AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1") AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2") - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(rollrace_flipx_w) + AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flipx_w) AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_mask_w) AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */ - AM_RANGE(0xfc04, 0xfc05) AM_WRITE(rollrace_charbank_w) - AM_RANGE(0xfc06, 0xfc06) AM_WRITE(rollrace_spritebank_w) + AM_RANGE(0xfc04, 0xfc05) AM_WRITE(charbank_w) + AM_RANGE(0xfc06, 0xfc06) AM_WRITE(spritebank_w) ADDRESS_MAP_END @@ -235,7 +251,7 @@ static MACHINE_CONFIG_START( rollrace, rollrace_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(16,255,16, 255-16) - MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update_rollrace) + MCFG_SCREEN_UPDATE_DRIVER(rollrace_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", rollrace) @@ -413,6 +429,6 @@ ROM_START( rollace2 ) ROM_END -GAME( 1983, fightrol, 0, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND ) -GAME( 1983, rollace, fightrol, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND ) -GAME( 1983, rollace2, fightrol, rollace2, rollrace, driver_device, 0, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND ) +GAME( 1983, fightrol, 0, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1983, rollace, fightrol, rollrace, rollrace, driver_device, 0, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1983, rollace2, fightrol, rollace2, rollrace, driver_device, 0, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/rollrace.h b/src/mame/includes/rollrace.h index 123ef1feb86..ee8c3c1fc0c 100644 --- a/src/mame/includes/rollrace.h +++ b/src/mame/includes/rollrace.h @@ -3,44 +3,50 @@ class rollrace_state : public driver_device public: rollrace_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_colorram(*this, "colorram"), - m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram"), + m_colorram(*this, "colorram"), + m_spriteram(*this, "spriteram") { } + required_device<cpu_device> m_maincpu; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_colorram; - int m_ra_charbank[2]; - int m_ra_bkgpage; - int m_ra_bkgflip; - int m_ra_chrbank; - int m_ra_bkgpen; - int m_ra_bkgcol; - int m_ra_flipy; - int m_ra_flipx; - int m_ra_spritebank; required_shared_ptr<UINT8> m_spriteram; + + int m_charbank[2]; + int m_bkgpage; + int m_bkgflip; + int m_chrbank; + int m_bkgpen; + int m_bkgcol; + int m_flipy; + int m_flipx; + int m_spritebank; UINT8 m_nmi_mask; UINT8 m_sound_nmi_mask; - DECLARE_READ8_MEMBER(ra_fake_d800_r); - DECLARE_WRITE8_MEMBER(ra_fake_d800_w); + + DECLARE_READ8_MEMBER(fake_d800_r); + DECLARE_WRITE8_MEMBER(fake_d800_w); DECLARE_WRITE8_MEMBER(nmi_mask_w); DECLARE_WRITE8_MEMBER(sound_nmi_mask_w); - DECLARE_WRITE8_MEMBER(rollrace_charbank_w); - DECLARE_WRITE8_MEMBER(rollrace_bkgpen_w); - DECLARE_WRITE8_MEMBER(rollrace_spritebank_w); - DECLARE_WRITE8_MEMBER(rollrace_backgroundpage_w); - DECLARE_WRITE8_MEMBER(rollrace_backgroundcolor_w); - DECLARE_WRITE8_MEMBER(rollrace_flipy_w); - DECLARE_WRITE8_MEMBER(rollrace_flipx_w); + DECLARE_WRITE8_MEMBER(charbank_w); + DECLARE_WRITE8_MEMBER(bkgpen_w); + DECLARE_WRITE8_MEMBER(spritebank_w); + DECLARE_WRITE8_MEMBER(backgroundpage_w); + DECLARE_WRITE8_MEMBER(backgroundcolor_w); + DECLARE_WRITE8_MEMBER(flipy_w); + DECLARE_WRITE8_MEMBER(flipx_w); + DECLARE_PALETTE_INIT(rollrace); - UINT32 screen_update_rollrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + virtual void machine_start(); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(sound_timer_irq); - required_device<cpu_device> m_maincpu; - required_device<gfxdecode_device> m_gfxdecode; - required_device<palette_device> m_palette; }; diff --git a/src/mame/video/rollrace.c b/src/mame/video/rollrace.c index 43e53d60bb3..f648a440b61 100644 --- a/src/mame/video/rollrace.c +++ b/src/mame/video/rollrace.c @@ -53,47 +53,47 @@ PALETTE_INIT_MEMBER(rollrace_state, rollrace) } } -WRITE8_MEMBER(rollrace_state::rollrace_charbank_w) +WRITE8_MEMBER(rollrace_state::charbank_w) { - m_ra_charbank[offset&1] = data; - m_ra_chrbank = m_ra_charbank[0] | (m_ra_charbank[1] << 1) ; + m_charbank[offset&1] = data; + m_chrbank = m_charbank[0] | (m_charbank[1] << 1) ; } -WRITE8_MEMBER(rollrace_state::rollrace_bkgpen_w) +WRITE8_MEMBER(rollrace_state::bkgpen_w) { - m_ra_bkgpen = data; + m_bkgpen = data; } -WRITE8_MEMBER(rollrace_state::rollrace_spritebank_w) +WRITE8_MEMBER(rollrace_state::spritebank_w) { - m_ra_spritebank = data; + m_spritebank = data; } -WRITE8_MEMBER(rollrace_state::rollrace_backgroundpage_w) +WRITE8_MEMBER(rollrace_state::backgroundpage_w) { - m_ra_bkgpage = data & 0x1f; - m_ra_bkgflip = ( data & 0x80 ) >> 7; + m_bkgpage = data & 0x1f; + m_bkgflip = ( data & 0x80 ) >> 7; /* 0x80 flip vertical */ } -WRITE8_MEMBER(rollrace_state::rollrace_backgroundcolor_w) +WRITE8_MEMBER(rollrace_state::backgroundcolor_w) { - m_ra_bkgcol = data; + m_bkgcol = data; } -WRITE8_MEMBER(rollrace_state::rollrace_flipy_w) +WRITE8_MEMBER(rollrace_state::flipy_w) { - m_ra_flipy = data & 0x01; + m_flipy = data & 0x01; } -WRITE8_MEMBER(rollrace_state::rollrace_flipx_w) +WRITE8_MEMBER(rollrace_state::flipx_w) { - m_ra_flipx = data & 0x01; + m_flipx = data & 0x01; } -UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 rollrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { UINT8 *spriteram = m_spriteram; int offs; @@ -103,12 +103,12 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1 const UINT8 *mem = memregion("user1")->base(); /* fill in background colour*/ - bitmap.fill(m_ra_bkgpen, cliprect); + bitmap.fill(m_bkgpen, cliprect); /* draw road */ for (offs = 0x3ff; offs >= 0; offs--) { - if(!(m_ra_bkgflip)) + if(!(m_bkgflip)) { sy = ( 31 - offs / 32 ) ; } @@ -117,18 +117,18 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1 sx = ( offs%32 ) ; - if(m_ra_flipx) + if(m_flipx) sx = 31-sx ; - if(m_ra_flipy) + if(m_flipy) sy = 31-sy ; m_gfxdecode->gfx(RA_BGCHAR_BASE)->transpen(bitmap, cliprect, - mem[offs + ( m_ra_bkgpage * 1024 )] - + ((( mem[offs + 0x4000 + ( m_ra_bkgpage * 1024 )] & 0xc0 ) >> 6 ) * 256 ) , - m_ra_bkgcol, - m_ra_flipx,(m_ra_bkgflip^m_ra_flipy), + mem[offs + ( m_bkgpage * 1024 )] + + ((( mem[offs + 0x4000 + ( m_bkgpage * 1024 )] & 0xc0 ) >> 6 ) * 256 ) , + m_bkgcol, + m_flipx,(m_bkgflip^m_flipy), sx*8,sy*8,0); @@ -148,9 +148,9 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1 if(sx && sy) { - if(m_ra_flipx) + if(m_flipx) sx = 224 - sx; - if(m_ra_flipy) + if(m_flipy) sy = 224 - sy; if(spriteram[offs+1] & 0x80) @@ -159,12 +159,12 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1 bank = (( spriteram[offs+1] & 0x40 ) >> 6 ) ; if(bank) - bank += m_ra_spritebank; + bank += m_spritebank; m_gfxdecode->gfx( RA_SP_BASE + bank )->transpen(bitmap,cliprect, spriteram[offs+1] & 0x3f , spriteram[offs+2] & 0x1f, - m_ra_flipx,!(s_flipy^m_ra_flipy), + m_flipx,!(s_flipy^m_flipy), sx,sy,0); } } @@ -181,17 +181,17 @@ UINT32 rollrace_state::screen_update_rollrace(screen_device &screen, bitmap_ind1 scroll = ( 8 * sy + m_colorram[2 * sx] ) % 256; col = m_colorram[ sx * 2 + 1 ]&0x1f; - if (!m_ra_flipy) + if (!m_flipy) { scroll = (248 - scroll) % 256; } - if (m_ra_flipx) sx = 31 - sx; + if (m_flipx) sx = 31 - sx; - m_gfxdecode->gfx(RA_FGCHAR_BASE + m_ra_chrbank) ->transpen(bitmap,cliprect, + m_gfxdecode->gfx(RA_FGCHAR_BASE + m_chrbank) ->transpen(bitmap,cliprect, m_videoram[ offs ] , col, - m_ra_flipx,m_ra_flipy, + m_flipx,m_flipy, 8*sx,scroll,0); } |