From 3387b04afad914d7333f07f871fcbcbbea40009f Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 9 Feb 2015 18:46:28 +0100 Subject: [PATCH] wrally.c: enabled save state support (nw) --- src/mame/drivers/wrally.c | 14 +++++++------- src/mame/includes/wrally.h | 33 +++++++++++++++++++-------------- src/mame/machine/wrally.c | 6 +++--- src/mame/video/wrally.c | 10 +++++----- 4 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/mame/drivers/wrally.c b/src/mame/drivers/wrally.c index 1820f8a6f82..01f4210f983 100644 --- a/src/mame/drivers/wrally.c +++ b/src/mame/drivers/wrally.c @@ -103,7 +103,7 @@ produces a high clock frequency, slow movements a low freq. static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ - AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wrally_vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ + AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */ AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */ AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */ @@ -112,12 +112,12 @@ static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state ) AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2") AM_RANGE(0x700004, 0x700005) AM_READ_PORT("WHEEL") AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */ + AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okim6295_bankswitch_w) /* OKI6295 bankswitch */ AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status/data register */ AM_RANGE(0x70000a, 0x70001b) AM_WRITE(wrally_coin_lockout_w) /* Coin lockouts */ AM_RANGE(0x70002a, 0x70003b) AM_WRITE(wrally_coin_counter_w) /* Coin counters */ AM_RANGE(0x70004a, 0x70004b) AM_WRITENOP /* Sound muting */ - AM_RANGE(0x70005a, 0x70005b) AM_WRITE(wrally_flipscreen_w) /* Flip screen */ + AM_RANGE(0x70005a, 0x70005b) AM_WRITE(flipscreen_w) /* Flip screen */ AM_RANGE(0x70006a, 0x70007b) AM_WRITENOP /* ??? */ AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with DS5002FP) */ ADDRESS_MAP_END @@ -255,7 +255,7 @@ static MACHINE_CONFIG_START( wrally, wrally_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_SIZE(64*16, 32*16) MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1) - MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update_wrally) + MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wrally) @@ -352,6 +352,6 @@ ROM_START( wrallyb ) /* Board Marked 930217, Atari License */ ROM_END -GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", 0 ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ -GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", 0 ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ -GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", 0 ) +GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ +GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ +GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/wrally.h b/src/mame/includes/wrally.h index 52e3a8daa57..23da251444f 100644 --- a/src/mame/includes/wrally.h +++ b/src/mame/includes/wrally.h @@ -3,33 +3,38 @@ class wrally_state : public driver_device public: wrally_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), m_videoram(*this, "videoram"), m_vregs(*this, "vregs"), m_spriteram(*this, "spriteram"), - m_shareram(*this, "shareram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_shareram(*this, "shareram") { } + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; - tilemap_t *m_pant[2]; required_shared_ptr m_videoram; required_shared_ptr m_vregs; required_shared_ptr m_spriteram; required_shared_ptr m_shareram; + + tilemap_t *m_pant[2]; DECLARE_READ8_MEMBER(dallas_share_r); DECLARE_WRITE8_MEMBER(dallas_share_w); - DECLARE_WRITE16_MEMBER(wrally_vram_w); - DECLARE_WRITE16_MEMBER(wrally_flipscreen_w); - DECLARE_WRITE16_MEMBER(OKIM6295_bankswitch_w); + DECLARE_WRITE16_MEMBER(vram_w); + DECLARE_WRITE16_MEMBER(flipscreen_w); + DECLARE_WRITE16_MEMBER(okim6295_bankswitch_w); DECLARE_WRITE16_MEMBER(wrally_coin_counter_w); DECLARE_WRITE16_MEMBER(wrally_coin_lockout_w); - TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen0); - TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen1); + + TILE_GET_INFO_MEMBER(get_tile_info_screen0); + TILE_GET_INFO_MEMBER(get_tile_info_screen1); + virtual void video_start(); - UINT32 screen_update_wrally(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/machine/wrally.c b/src/mame/machine/wrally.c index fe87d07aadf..50d39ed9e5b 100644 --- a/src/mame/machine/wrally.c +++ b/src/mame/machine/wrally.c @@ -18,7 +18,7 @@ ***************************************************************************/ -WRITE16_MEMBER(wrally_state::wrally_vram_w) +WRITE16_MEMBER(wrally_state::vram_w) { data = gaelco_decrypt(space, offset, data, 0x1f, 0x522a); COMBINE_DATA(&m_videoram[offset]); @@ -26,12 +26,12 @@ WRITE16_MEMBER(wrally_state::wrally_vram_w) m_pant[(offset & 0x1fff) >> 12]->mark_tile_dirty(((offset << 1) & 0x1fff) >> 2); } -WRITE16_MEMBER(wrally_state::wrally_flipscreen_w) +WRITE16_MEMBER(wrally_state::flipscreen_w) { flip_screen_set(data & 0x01); } -WRITE16_MEMBER(wrally_state::OKIM6295_bankswitch_w) +WRITE16_MEMBER(wrally_state::okim6295_bankswitch_w) { UINT8 *RAM = memregion("oki")->base(); diff --git a/src/mame/video/wrally.c b/src/mame/video/wrally.c index f156e0e6033..bd9e1437df9 100644 --- a/src/mame/video/wrally.c +++ b/src/mame/video/wrally.c @@ -34,7 +34,7 @@ 1 | xxx----- -------- | not used? */ -TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen0) +TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_screen0) { int data = m_videoram[tile_index << 1]; int data2 = m_videoram[(tile_index << 1) + 1]; @@ -45,7 +45,7 @@ TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen0) SET_TILE_INFO_MEMBER(0, code, data2 & 0x1f, TILE_FLIPYX((data2 >> 6) & 0x03)); } -TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen1) +TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_screen1) { int data = m_videoram[(0x2000/2) + (tile_index << 1)]; int data2 = m_videoram[(0x2000/2) + (tile_index << 1) + 1]; @@ -64,8 +64,8 @@ TILE_GET_INFO_MEMBER(wrally_state::get_tile_info_wrally_screen1) void wrally_state::video_start() { - m_pant[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_wrally_screen0),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_pant[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_wrally_screen1),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_screen0),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info_screen1),this),TILEMAP_SCAN_ROWS,16,16,64,32); m_pant[0]->set_transmask(0,0xff01,0x00ff); /* this layer is split in two (pens 1..7, pens 8-15) */ m_pant[1]->set_transparent_pen(0); @@ -172,7 +172,7 @@ void wrally_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, ***************************************************************************/ -UINT32 wrally_state::screen_update_wrally(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 wrally_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* set scroll registers */ if (!flip_screen()) {