Added accurate hblank durations to Sega Saturn / ST-V HW [Angelo Salese, Corrado Tomaselli, Charles MacDonald]

This commit is contained in:
Angelo Salese 2011-05-28 13:51:15 +00:00
parent 0eb16cefbd
commit 75f1480ae9
2 changed files with 9 additions and 6 deletions

View File

@ -2667,7 +2667,7 @@ static MACHINE_CONFIG_START( saturn, saturn_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 464, 0, 320, 263, 0, 224)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
MCFG_SCREEN_UPDATE(stv_vdp2)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.
@ -2714,7 +2714,7 @@ static MACHINE_CONFIG_START( stv, saturn_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB15)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 464, 0, 320, 263, 0, 224)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_320/8, 427, 0, 320, 263, 0, 224)
MCFG_SCREEN_UPDATE(stv_vdp2)
MCFG_PALETTE_LENGTH(2048+(2048*2))//standard palette + extra memory for rgb brightness.

View File

@ -5299,15 +5299,18 @@ WRITE32_HANDLER ( saturn_vdp2_regs_w )
}
}
/* the following is a complete guess-work */
static int get_hblank_duration(running_machine &machine)
{
saturn_state *state = machine.driver_data<saturn_state>();
int res;
res = (STV_VDP2_HRES & 1) ? 455 : 427;
/* double pump horizontal max res */
if(STV_VDP2_HRES & 2)
return 464*2;
res<<=1;
return 464;
return res;
}
/*some vblank lines measurements (according to Charles MacDonald)*/
@ -5503,11 +5506,11 @@ void stv_vdp2_dynamic_res_change(running_machine &machine)
{
int vblank_period,hblank_period;
rectangle visarea = machine.primary_screen->visible_area();
attoseconds_t refresh;;
visarea.min_x = 0;
visarea.max_x = horz_res-1;
visarea.min_y = 0;
visarea.max_y = vert_res-1;
attoseconds_t refresh;;
vblank_period = get_vblank_duration(machine);
hblank_period = get_hblank_duration(machine);