change the implementation of the cocktail mode

This commit is contained in:
Roberto Zandona 2008-04-29 06:03:44 +00:00
parent 7190f9b511
commit 0bcb72270d
2 changed files with 28 additions and 113 deletions

View File

@ -60,7 +60,6 @@ extern WRITE8_HANDLER( marvins_spriteram_w );
extern VIDEO_START( marvins );
extern VIDEO_UPDATE( marvins );
extern VIDEO_UPDATE( madcrash );
extern VIDEO_UPDATE( vangrd2 );
extern WRITE8_HANDLER( marvins_palette_bank_w );
@ -593,7 +592,7 @@ static MACHINE_DRIVER_START( vangrd2 )
MDRV_PALETTE_LENGTH((16+2)*16)
MDRV_VIDEO_START(marvins)
MDRV_VIDEO_UPDATE(vangrd2)
MDRV_VIDEO_UPDATE(madcrash)
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
@ -626,8 +625,6 @@ static MACHINE_DRIVER_START( madcrash )
/* video hardware */
MDRV_SCREEN_MODIFY("main")
MDRV_SCREEN_VISIBLE_AREA(16, 16+256-1, 0, 0+216-1)
MDRV_VIDEO_START(marvins)
MDRV_VIDEO_UPDATE(madcrash)
MACHINE_DRIVER_END

View File

@ -183,47 +183,42 @@ VIDEO_START( marvins )
switch (snk_gamegroup)
{
case 0: // Marvin's Maze
tilemap_set_scrolldx( bg_tilemap, 271, 287 );
tilemap_set_scrolldy( bg_tilemap, 0, -40 );
tilemap_set_scrolldx( bg_tilemap, 271, 287 );
tilemap_set_scrolldy( bg_tilemap, 0, -40 );
tilemap_set_scrolldx( fg_tilemap, 15, 13+18 );
tilemap_set_scrolldy( fg_tilemap, 0, -40 );
tilemap_set_scrolldx( fg_tilemap, 15, 13+18 );
tilemap_set_scrolldy( fg_tilemap, 0, -40 );
tilemap_set_scrolldx( tx_tilemap, 16, 16 );
tilemap_set_scrolldy( tx_tilemap, 0, 0 );
sprite_flip_adjust = 256+182+1;
break;
/*
Old settings for the the following games:
tilemap_set_scrolldx( bg_tilemap, -16, -10 );
tilemap_set_scrolldy( bg_tilemap, 0, -40 );
tilemap_set_scrolldx( fg_tilemap, 16, 22 );
tilemap_set_scrolldy( fg_tilemap, 0, -40 );
Note that while the new settings are more accurate they cannot handle flipscreen.
*/
case 1: // Mad Crasher
tilemap_set_scrolldx( bg_tilemap,256, 0 );
tilemap_set_scrolldy( bg_tilemap, 12, 0 );
tilemap_set_scrolldx( bg_tilemap, 256, 0 );
tilemap_set_scrolldy( bg_tilemap, 12, 0 );
tilemap_set_scrolldx( fg_tilemap, 0, 0 );
tilemap_set_scrolldy( fg_tilemap, 6, 0 );
tilemap_set_scrolldx( fg_tilemap, 0, 0 );
tilemap_set_scrolldy( fg_tilemap, 6, -24 );
tilemap_set_scrolldx( tx_tilemap, 16, 16 );
tilemap_set_scrolldy( tx_tilemap, 0, +8 );
break;
case 2: // VanguardII
tilemap_set_scrolldx( bg_tilemap, 7, 0 );
tilemap_set_scrolldy( bg_tilemap,-20, 0 );
tilemap_set_scrolldx( bg_tilemap, 7, +14 );
tilemap_set_scrolldy( bg_tilemap, -20, -60 );
tilemap_set_scrolldx( fg_tilemap, 15, 0 );
tilemap_set_scrolldy( fg_tilemap, 0, 0 );
tilemap_set_scrolldx( fg_tilemap, 15, +32 );
tilemap_set_scrolldy( fg_tilemap, 0, -40 );
tilemap_set_scrolldx( tx_tilemap, 16, 16 );
tilemap_set_scrolldy( tx_tilemap, 0, 0 );
sprite_flip_adjust = 256+182;
break;
}
tilemap_set_scrolldx( tx_tilemap, 16, 16 );
tilemap_set_scrolldy( tx_tilemap, 0, 0 );
}
}
@ -349,74 +344,6 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
}
}
VIDEO_UPDATE( vangrd2 )
{
cpuintrf_push_context(0);
{
int madcrash_vreg = (snk_gamegroup == 1) ? 0x00 : 0xf1; // Mad Crasher=0x00, VanguardII=0xf1
UINT8 sprite_partition = program_read_byte(0xfa00);
int attributes = program_read_byte(0x8600+madcrash_vreg); /* 0x20: normal, 0xa0: video flipped */
int bg_scrolly = program_read_byte(0xf800+madcrash_vreg);
int bg_scrollx = program_read_byte(0xf900+madcrash_vreg);
int scroll_attributes = program_read_byte(0xfb00+madcrash_vreg);
int sprite_scrolly = program_read_byte(0xfc00+madcrash_vreg);
int sprite_scrollx = program_read_byte(0xfd00+madcrash_vreg);
int fg_scrolly = program_read_byte(0xfe00+madcrash_vreg);
int fg_scrollx = program_read_byte(0xff00+madcrash_vreg);
rectangle finalclip = tilemap_clip;
sect_rect(&finalclip, cliprect);
if(video_bank != ((attributes & 8) >> 3))
{
video_bank = ((attributes & 8) >> 3);
tilemap_mark_all_tiles_dirty(bg_tilemap);
tilemap_mark_all_tiles_dirty(fg_tilemap);
}
if( (scroll_attributes & 4)==0 ) bg_scrollx += 256;
if( scroll_attributes & 1 ) sprite_scrollx += 256;
if( scroll_attributes & 2 ) fg_scrollx += 256;
marvins_palette_bank_w(screen->machine, 0, program_read_byte(0xc800+madcrash_vreg));
update_palette(screen->machine, 1);
if( flipscreen != (attributes&0x80) )
{
flipscreen = attributes&0x80;
tilemap_set_flip( ALL_TILEMAPS, flipscreen?TILEMAP_FLIPY|TILEMAP_FLIPX:0);
}
if(!flipscreen) {
tilemap_set_scrollx( bg_tilemap, 0, bg_scrollx );
tilemap_set_scrolly( bg_tilemap, 0, bg_scrolly );
tilemap_set_scrollx( fg_tilemap, 0, fg_scrollx );
tilemap_set_scrolly( fg_tilemap, 0, fg_scrolly );
tilemap_set_scrollx( tx_tilemap, 0, 0 );
tilemap_set_scrolly( tx_tilemap, 0, 0 );
} else {
tilemap_set_scrollx( bg_tilemap, 0, bg_scrollx-14 );
tilemap_set_scrolly( bg_tilemap, 0, bg_scrolly+60 );
tilemap_set_scrollx( fg_tilemap, 0, fg_scrollx-32 );
tilemap_set_scrolly( fg_tilemap, 0, fg_scrolly+40 );
tilemap_set_scrollx( tx_tilemap, 0, 0 );
tilemap_set_scrolly( tx_tilemap, 0, 0 );
}
tilemap_draw(bitmap,&finalclip,bg_tilemap,TILEMAP_DRAW_OPAQUE ,0);
draw_sprites(screen->machine,bitmap,cliprect, sprite_scrollx+29, sprite_scrolly+17, 0, sprite_partition );
tilemap_draw(bitmap,&finalclip,fg_tilemap,0 ,0);
draw_sprites(screen->machine,bitmap,cliprect, sprite_scrollx+29, sprite_scrolly+17, 1, sprite_partition );
tilemap_draw(bitmap,&finalclip,tx_tilemap,0 ,0);
draw_status(screen->machine,bitmap,cliprect );
}
cpuintrf_pop_context();
return 0;
}
VIDEO_UPDATE( marvins )
{
cpuintrf_push_context(0);
@ -527,22 +454,13 @@ VIDEO_UPDATE( madcrash )
flipscreen = attributes&0x80;
tilemap_set_flip( ALL_TILEMAPS, flipscreen?TILEMAP_FLIPY|TILEMAP_FLIPX:0);
}
tilemap_set_scrollx( bg_tilemap, 0, bg_scrollx );
tilemap_set_scrolly( bg_tilemap, 0, bg_scrolly );
tilemap_set_scrollx( fg_tilemap, 0, fg_scrollx );
tilemap_set_scrolly( fg_tilemap, 0, fg_scrolly );
tilemap_set_scrollx( tx_tilemap, 0, 0 );
tilemap_set_scrolly( tx_tilemap, 0, 0 );
if(!flipscreen) {
tilemap_set_scrollx( bg_tilemap, 0, bg_scrollx );
tilemap_set_scrolly( bg_tilemap, 0, bg_scrolly );
tilemap_set_scrollx( fg_tilemap, 0, fg_scrollx );
tilemap_set_scrolly( fg_tilemap, 0, fg_scrolly );
tilemap_set_scrollx( tx_tilemap, 0, 0 );
tilemap_set_scrolly( tx_tilemap, 0, 0 );
} else {
tilemap_set_scrollx( bg_tilemap, 0, bg_scrollx );
tilemap_set_scrolly( bg_tilemap, 0, bg_scrolly );
tilemap_set_scrollx( fg_tilemap, 0, fg_scrollx );
tilemap_set_scrolly( fg_tilemap, 0, fg_scrolly+24 );
tilemap_set_scrollx( tx_tilemap, 0, 0 );
tilemap_set_scrolly( tx_tilemap, 0, -8 );
}
tilemap_draw(bitmap,&finalclip,bg_tilemap,TILEMAP_DRAW_OPAQUE ,0);
draw_sprites(screen->machine,bitmap,cliprect, sprite_scrollx+29, sprite_scrolly+17, 0, sprite_partition );