Batsugun fix [CCbGpkYG0]

- bullets were drawn on top of frame
- garbage layer in stage 1
- 1 crowd layer was missing in stage 2 and 4
- 1 BG layer was missing in stage 5
- part of stage-end boss was not displayed in stage 5
- crowds and credit roll were not displayed in ending demo

Todo:
timing for fade-in of crowd layer and city layer is swapped
This commit is contained in:
Yasuhiro Ogawa 2010-05-24 13:02:46 +00:00
parent 37f35e51c1
commit e82a7bf926

View File

@ -1561,6 +1561,8 @@ VIDEO_UPDATE( dogyuun_1 )
VIDEO_UPDATE( batsugun_1 )
{
int priority;
static int bg1=0,fg1=0,tp1=0; // Fix
UINT32 *vramp; // Fix
toaplan2_log_vram(screen->machine);
@ -1571,24 +1573,54 @@ VIDEO_UPDATE( batsugun_1 )
bitmap_fill(bitmap,cliprect,0);
for (priority = 0; priority < 16; priority++)
{
if (bg_tile_priority[1][priority]) tilemap_draw(bitmap,cliprect,bg_tilemap[1],priority,0);/* 2 */
if (bg_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,bg_tilemap[0],priority,0);
if (fg_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,fg_tilemap[0],priority,0);
if (fg_tile_priority[1][priority]) tilemap_draw(bitmap,cliprect,fg_tilemap[1],priority,0);
if (top_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,top_tilemap[0],priority,0);
if (sprite_priority[0][priority])
draw_sprites(screen->machine,bitmap,cliprect,0,priority,0);
//Fix
vramp = (UINT32*)bgvideoram16[1];
if(*(vramp+28)==0x225e027a){
bg1=0;
fg1=1;
} else if(*(vramp+28)==0x0aa50060){
bg1=2;
fg1=1;
} else if(*(vramp+28)==0x02040032){
bg1=1;
fg1=2;
} else {
bg1=1;
fg1=1;
}
for (priority = 0; priority < 16; priority++)
{
if (top_tile_priority[1][priority]) tilemap_draw(bitmap,cliprect,top_tilemap[1],priority,0);
if (sprite_priority[1][priority])
draw_sprites(screen->machine,bitmap,cliprect,1,priority,0);
vramp = (UINT32*)fgvideoram16[1];
if(*vramp==0x09cb006d||*vramp==0x09ab006d||*vramp==0x01c4006e){
fg1=3;
}
vramp = (UINT32*)topvideoram16[1];
if(*(vramp+28)==0x0000007f){
tp1=0;
} else {
tp1=1;
}
// popmessage("bg1=%d fg1=%d tp1=%d",bg1,fg1,tp1);
for (priority = 0; priority < 16; priority++){
if (top_tile_priority[1][priority] && tp1==1) tilemap_draw(bitmap,cliprect,top_tilemap[1],priority,0); /* 3 */
if (bg_tile_priority[1][priority] && bg1==2) tilemap_draw(bitmap,cliprect,bg_tilemap[1],priority,0); /* 5 */
if (fg_tile_priority[1][priority] && fg1==3) tilemap_draw(bitmap,cliprect,fg_tilemap[1],priority,0); /* 4 */
if (bg_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,bg_tilemap[0],priority,0); /* 2 */
if (fg_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,fg_tilemap[0],priority,0); /* 1 */
if (bg_tile_priority[1][priority] && bg1==1) tilemap_draw(bitmap,cliprect,bg_tilemap[1],priority,0); /* 5 */
if (fg_tile_priority[1][priority] && fg1==1) tilemap_draw(bitmap,cliprect,fg_tilemap[1],priority,0); /* 4 */
if (top_tile_priority[0][priority]) tilemap_draw(bitmap,cliprect,top_tilemap[0],priority,0); /* 0 */
if (sprite_priority[0][priority]) draw_sprites(screen->machine,bitmap,cliprect,0,priority,0);
}
for (priority = 0; priority < 16; priority++){
if (fg_tile_priority[1][priority] && fg1==2) tilemap_draw(bitmap,cliprect,fg_tilemap[1],priority,0); /* 4 */
if (top_tile_priority[1][priority] && tp1==0) tilemap_draw(bitmap,cliprect,top_tilemap[1],priority,0); /* 3 */
if (sprite_priority[1][priority]) draw_sprites(screen->machine,bitmap,cliprect,1,priority,0);
}
//Fix END
return 0;
}