diff --git a/src/mame/drivers/rpunch.c b/src/mame/drivers/rpunch.c index 4385b8cf0d5..b5b4a1596e1 100644 --- a/src/mame/drivers/rpunch.c +++ b/src/mame/drivers/rpunch.c @@ -495,6 +495,7 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -508,6 +509,10 @@ static MACHINE_CONFIG_START( rpunch, rpunch_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( svolley, rpunch ) + MCFG_VIDEO_START_OVERRIDE(rpunch_state,svolley) +MACHINE_CONFIG_END + // c+p of above for now, bootleg hw, things need verifying static MACHINE_CONFIG_START( svolleybl, rpunch_state ) @@ -532,8 +537,10 @@ static MACHINE_CONFIG_START( svolleybl, rpunch_state ) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_VIDEO_START_OVERRIDE(rpunch_state,rpunch) /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/4) @@ -809,9 +816,9 @@ DRIVER_INIT_MEMBER(rpunch_state,svolley) GAME( 1987, rabiolep, 0, rpunch, rabiolep, rpunch_state, rabiolep, ROT0, "V-System Co.", "Rabio Lepus (Japan)", GAME_NO_COCKTAIL ) GAME( 1987, rpunch, rabiolep, rpunch, rpunch, rpunch_state, rabiolep, ROT0, "V-System Co. (Bally/Midway/Sente license)", "Rabbit Punch (US)", GAME_NO_COCKTAIL ) -GAME( 1989, svolley, 0, rpunch, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Japan)", GAME_NO_COCKTAIL ) -GAME( 1989, svolleyk, svolley, rpunch, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Korea)", GAME_NO_COCKTAIL ) -GAME( 1989, svolleyu, svolley, rpunch, svolley, rpunch_state, svolley, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", GAME_NO_COCKTAIL ) +GAME( 1989, svolley, 0, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Japan)", GAME_NO_COCKTAIL ) +GAME( 1989, svolleyk, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co.", "Super Volleyball (Korea)", GAME_NO_COCKTAIL ) +GAME( 1989, svolleyu, svolley, svolley, svolley, rpunch_state, svolley, ROT0, "V-System Co. (Data East license)", "Super Volleyball (US)", GAME_NO_COCKTAIL ) // video registers are changed, and there's some kind of RAM at 090xxx, possible a different sprite scheme for the bootleg (even if the original is intact) // the sound system seems to be ripped from the later Power Spikes (see aerofgt.c) diff --git a/src/mame/includes/rpunch.h b/src/mame/includes/rpunch.h index b7e7a80898a..0037cc7bb17 100644 --- a/src/mame/includes/rpunch.h +++ b/src/mame/includes/rpunch.h @@ -49,7 +49,12 @@ public: TILE_GET_INFO_MEMBER(get_bg0_tile_info); TILE_GET_INFO_MEMBER(get_bg1_tile_info); virtual void machine_reset(); - virtual void video_start(); + + DECLARE_VIDEO_START(rpunch); + DECLARE_VIDEO_START(svolley); + + int m_sprite_xoffs; + UINT32 screen_update_rpunch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_CALLBACK_MEMBER(sound_command_w_callback); TIMER_CALLBACK_MEMBER(crtc_interrupt_gen); diff --git a/src/mame/video/rpunch.c b/src/mame/video/rpunch.c index 293e701e852..1497de8debf 100644 --- a/src/mame/video/rpunch.c +++ b/src/mame/video/rpunch.c @@ -66,8 +66,10 @@ TIMER_CALLBACK_MEMBER(rpunch_state::crtc_interrupt_gen) } -void rpunch_state::video_start() +VIDEO_START_MEMBER(rpunch_state,rpunch) { + m_sprite_xoffs = 0; + /* allocate tilemaps for the backgrounds */ m_background[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rpunch_state::get_bg0_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,64); m_background[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(rpunch_state::get_bg1_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,64); @@ -83,6 +85,16 @@ void rpunch_state::video_start() } +VIDEO_START_MEMBER(rpunch_state,svolley) +{ + VIDEO_START_CALL_MEMBER(rpunch); + m_background[0]->set_scrolldx(8, 0); // aligns middle net sprite with bg as shown in reference + m_sprite_xoffs = -4; +} + + + + /************************************* * @@ -217,7 +229,7 @@ void rpunch_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, if (y >= BITMAP_HEIGHT) y -= 512; m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, - code, color + (m_sprite_palette / 16), xflip, yflip, x, y, 15); + code, color + (m_sprite_palette / 16), xflip, yflip, x+m_sprite_xoffs, y, 15); } }