diff --git a/src/mame/drivers/bwing.c b/src/mame/drivers/bwing.c index 50f57575cd6..167e030fe50 100644 --- a/src/mame/drivers/bwing.c +++ b/src/mame/drivers/bwing.c @@ -10,7 +10,7 @@ revised by Alex W. Jackson Known issues: -- The main program is responsible for sprite clipping but occational +- The main program is responsible for sprite clipping but occasional glitches can be seen at the top and bottom screen edges. (post rotate) - B-Wings bosses sometimes flicker. (sync issue) @@ -133,11 +133,11 @@ static ADDRESS_MAP_START( bwp1_map, AS_PROGRAM, 8, bwing_state ) AM_RANGE(0x1b00, 0x1b07) AM_READ(bwp1_io_r) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("sharedram") AM_RANGE(0x0800, 0x0fff) AM_RAM - AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(bwing_videoram_w) AM_SHARE("videoram") + AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") AM_RANGE(0x1400, 0x17ff) AM_RAM AM_RANGE(0x1800, 0x19ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(bwing_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x1b00, 0x1b07) AM_RAM_WRITE(bwing_scrollreg_w) + AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0x1b00, 0x1b07) AM_RAM_WRITE(scrollreg_w) AM_RANGE(0x1c00, 0x1c07) AM_RAM_WRITE(bwp1_ctrl_w) AM_RANGE(0x2000, 0x3fff) AM_DEVICE("vrambank", address_map_bank_device, amap8) AM_RANGE(0x4000, 0xffff) AM_ROM // "B-Wings US" writes to 9631-9632(debug?) @@ -383,7 +383,7 @@ static MACHINE_CONFIG_START( bwing, bwing_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(600)) // must be long enough for polling MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(bwing_state, screen_update_bwing) + MCFG_SCREEN_UPDATE_DRIVER(bwing_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", bwing) @@ -570,9 +570,9 @@ DRIVER_INIT_MEMBER(bwing_state,bwing) //**************************************************************************** // Game Entries -GAME( 1984, bwings, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan new Ver.)", 0 ) -GAME( 1984, bwingso, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan old Ver.)", 0 ) -GAME( 1984, bwingsa, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Alt Ver.?)", 0 ) +GAME( 1984, bwings, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan new Ver.)", GAME_SUPPORTS_SAVE ) +GAME( 1984, bwingso, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan old Ver.)", GAME_SUPPORTS_SAVE ) +GAME( 1984, bwingsa, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Alt Ver.?)", GAME_SUPPORTS_SAVE ) -GAME( 1984, zaviga, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga", 0 ) -GAME( 1984, zavigaj, zaviga, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga (Japan)", 0 ) +GAME( 1984, zaviga, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga", GAME_SUPPORTS_SAVE ) +GAME( 1984, zavigaj, zaviga, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga (Japan)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wiping.c b/src/mame/drivers/wiping.c index c5f51568df3..366c25d80f4 100644 --- a/src/mame/drivers/wiping.c +++ b/src/mame/drivers/wiping.c @@ -41,6 +41,13 @@ dip: 6.7 7.7 #include "includes/wiping.h" +void wiping_state::machine_start() +{ + save_item(NAME(m_flipscreen)); + save_item(NAME(m_main_irq_mask)); + save_item(NAME(m_sound_irq_mask)); +} + /* input ports are rotated 90 degrees */ READ8_MEMBER(wiping_state::ports_r) { @@ -78,7 +85,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, wiping_state ) AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("share1") AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("share2") AM_RANGE(0xa000, 0xa000) AM_WRITE(main_irq_mask_w) - AM_RANGE(0xa002, 0xa002) AM_WRITE(wiping_flipscreen_w) + AM_RANGE(0xa002, 0xa002) AM_WRITE(flipscreen_w) AM_RANGE(0xa003, 0xa003) AM_WRITE(subcpu_reset_w) AM_RANGE(0xa800, 0xa807) AM_READ(ports_r) AM_RANGE(0xb000, 0xb7ff) AM_RAM @@ -293,7 +300,7 @@ static MACHINE_CONFIG_START( wiping, wiping_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(36*8, 28*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(wiping_state, screen_update_wiping) + MCFG_SCREEN_UPDATE_DRIVER(wiping_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", wiping) @@ -376,5 +383,5 @@ ROM_END -GAME( 1982, wiping, 0, wiping, wiping, driver_device, 0, ROT90, "Nichibutsu", "Wiping", 0 ) -GAME( 1983, rugrats, wiping, wiping, rugrats, driver_device, 0, ROT90, "Nichibutsu", "Rug Rats", 0 ) +GAME( 1982, wiping, 0, wiping, wiping, driver_device, 0, ROT90, "Nichibutsu", "Wiping", GAME_SUPPORTS_SAVE ) +GAME( 1983, rugrats, wiping, wiping, rugrats, driver_device, 0, ROT90, "Nichibutsu", "Rug Rats", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/bwing.h b/src/mame/includes/bwing.h index 7c3769a291d..36e5ad3700d 100644 --- a/src/mame/includes/bwing.h +++ b/src/mame/includes/bwing.h @@ -15,18 +15,26 @@ class bwing_state : public driver_device public: bwing_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_spriteram(*this, "spriteram"), - m_paletteram(*this, "paletteram"), - m_fgscrollram(*this, "fgscrollram"), - m_bgscrollram(*this, "bgscrollram"), - m_gfxram(*this, "gfxram"), m_maincpu(*this, "maincpu"), m_subcpu(*this, "sub"), m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_vrambank(*this, "vrambank") { } + m_vrambank(*this, "vrambank"), + m_videoram(*this, "videoram"), + m_spriteram(*this, "spriteram"), + m_paletteram(*this, "paletteram"), + m_fgscrollram(*this, "fgscrollram"), + m_bgscrollram(*this, "bgscrollram"), + m_gfxram(*this, "gfxram") { } + + /* device */ + required_device m_maincpu; + required_device m_subcpu; + required_device m_audiocpu; + required_device m_gfxdecode; + required_device m_palette; + required_device m_vrambank; /* memory pointers */ required_shared_ptr m_videoram; @@ -51,39 +59,37 @@ public: /* misc */ UINT8 *m_bwp123_membase[3]; - /* device */ - required_device m_maincpu; - required_device m_subcpu; - required_device m_audiocpu; - required_device m_gfxdecode; - required_device m_palette; - required_device m_vrambank; - DECLARE_WRITE8_MEMBER(bwp3_u8F_w); DECLARE_WRITE8_MEMBER(bwp3_nmimask_w); DECLARE_WRITE8_MEMBER(bwp3_nmiack_w); DECLARE_READ8_MEMBER(bwp1_io_r); DECLARE_WRITE8_MEMBER(bwp1_ctrl_w); DECLARE_WRITE8_MEMBER(bwp2_ctrl_w); - DECLARE_WRITE8_MEMBER(bwing_spriteram_w); - DECLARE_WRITE8_MEMBER(bwing_videoram_w); + DECLARE_WRITE8_MEMBER(spriteram_w); + DECLARE_WRITE8_MEMBER(videoram_w); DECLARE_WRITE8_MEMBER(fgscrollram_w); DECLARE_WRITE8_MEMBER(bgscrollram_w); DECLARE_WRITE8_MEMBER(gfxram_w); - DECLARE_WRITE8_MEMBER(bwing_scrollreg_w); - DECLARE_WRITE8_MEMBER(bwing_paletteram_w); + DECLARE_WRITE8_MEMBER(scrollreg_w); + DECLARE_WRITE8_MEMBER(paletteram_w); + DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); DECLARE_INPUT_CHANGED_MEMBER(tilt_pressed); - DECLARE_DRIVER_INIT(bwing); + TILE_GET_INFO_MEMBER(get_fgtileinfo); TILE_GET_INFO_MEMBER(get_bgtileinfo); TILE_GET_INFO_MEMBER(get_charinfo); - TILEMAP_MAPPER_MEMBER(bwing_scan_cols); + TILEMAP_MAPPER_MEMBER(scan_cols); + + DECLARE_DRIVER_INIT(bwing); virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); - UINT32 screen_update_bwing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(bwp3_interrupt); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites( bitmap_ind16 &bmp, const rectangle &clip, UINT8 *ram, int pri ); + + INTERRUPT_GEN_MEMBER(bwp3_interrupt); + void fix_bwp3( ); }; diff --git a/src/mame/includes/wiping.h b/src/mame/includes/wiping.h index 0429450f4d2..094d6702d5a 100644 --- a/src/mame/includes/wiping.h +++ b/src/mame/includes/wiping.h @@ -5,33 +5,39 @@ class wiping_state : public driver_device public: wiping_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_audiocpu(*this, "audiocpu"), 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_shared_ptr m_videoram; - required_shared_ptr m_colorram; - int m_flipscreen; - UINT8 *m_soundregs; - required_shared_ptr m_spriteram; - - UINT8 m_main_irq_mask; - UINT8 m_sound_irq_mask; - DECLARE_READ8_MEMBER(ports_r); - DECLARE_WRITE8_MEMBER(subcpu_reset_w); - DECLARE_WRITE8_MEMBER(main_irq_mask_w); - DECLARE_WRITE8_MEMBER(sound_irq_mask_w); - DECLARE_WRITE8_MEMBER(wiping_flipscreen_w); - DECLARE_PALETTE_INIT(wiping); - UINT32 screen_update_wiping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); - INTERRUPT_GEN_MEMBER(sound_timer_irq); required_device m_maincpu; required_device m_audiocpu; required_device m_gfxdecode; required_device m_palette; + + required_shared_ptr m_videoram; + required_shared_ptr m_colorram; + required_shared_ptr m_spriteram; + + int m_flipscreen; + UINT8 *m_soundregs; // if 0-ed + UINT8 m_main_irq_mask; + UINT8 m_sound_irq_mask; + + DECLARE_READ8_MEMBER(ports_r); + DECLARE_WRITE8_MEMBER(subcpu_reset_w); + DECLARE_WRITE8_MEMBER(main_irq_mask_w); + DECLARE_WRITE8_MEMBER(sound_irq_mask_w); + DECLARE_WRITE8_MEMBER(flipscreen_w); + + DECLARE_PALETTE_INIT(wiping); + 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); }; diff --git a/src/mame/video/bwing.c b/src/mame/video/bwing.c index 5fe058b6dcc..31ace2ef881 100644 --- a/src/mame/video/bwing.c +++ b/src/mame/video/bwing.c @@ -19,7 +19,7 @@ revised by Alex W. Jackson // Exports -WRITE8_MEMBER(bwing_state::bwing_videoram_w) +WRITE8_MEMBER(bwing_state::videoram_w) { m_videoram[offset] = data; m_charmap->mark_tile_dirty(offset); @@ -48,7 +48,7 @@ WRITE8_MEMBER(bwing_state::gfxram_w) } -WRITE8_MEMBER(bwing_state::bwing_scrollreg_w) +WRITE8_MEMBER(bwing_state::scrollreg_w) { m_sreg[offset] = data; @@ -64,7 +64,7 @@ WRITE8_MEMBER(bwing_state::bwing_scrollreg_w) } -WRITE8_MEMBER(bwing_state::bwing_paletteram_w) +WRITE8_MEMBER(bwing_state::paletteram_w) { static const float rgb[4][3] = { {0.85f, 0.95f, 1.00f}, @@ -115,7 +115,7 @@ TILE_GET_INFO_MEMBER(bwing_state::get_charinfo) SET_TILE_INFO_MEMBER(0, m_videoram[tile_index], 0, 0); } -TILEMAP_MAPPER_MEMBER(bwing_state::bwing_scan_cols) +TILEMAP_MAPPER_MEMBER(bwing_state::scan_cols) { return (row & 0xf) | ((col & 0xf) << 4) | ((row & 0x30) << 4) | ((col & 0x30) << 6); } @@ -126,8 +126,8 @@ void bwing_state::video_start() int i; m_charmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_charinfo),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_fgmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_fgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::bwing_scan_cols),this), 16, 16, 64, 64); - m_bgmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_bgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::bwing_scan_cols),this), 16, 16, 64, 64); + m_fgmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_fgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::scan_cols),this), 16, 16, 64, 64); + m_bgmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_bgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::scan_cols),this), 16, 16, 64, 64); m_charmap->set_transparent_pen(0); m_fgmap->set_transparent_pen(0); @@ -180,7 +180,7 @@ void bwing_state::draw_sprites( bitmap_ind16 &bmp, const rectangle &clip, UINT8 } -UINT32 bwing_state::screen_update_bwing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 bwing_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { unsigned flip, x, y, shiftx; diff --git a/src/mame/video/wiping.c b/src/mame/video/wiping.c index 0c7027c2698..342c62b96d8 100644 --- a/src/mame/video/wiping.c +++ b/src/mame/video/wiping.c @@ -2,7 +2,7 @@ // copyright-holders:??? /*************************************************************************** - video.c + wiping.c Functions to emulate the video hardware of the machine. @@ -79,13 +79,13 @@ PALETTE_INIT_MEMBER(wiping_state, wiping) -WRITE8_MEMBER(wiping_state::wiping_flipscreen_w) +WRITE8_MEMBER(wiping_state::flipscreen_w) { m_flipscreen = (data & 1); } -UINT32 wiping_state::screen_update_wiping(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 wiping_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { UINT8 *spriteram = m_spriteram; int offs;