psx - some finetuning to previous commit to fix most PAL games and bios screens

This commit is contained in:
zeromus 2015-08-02 12:02:55 -05:00
parent 8fc5acfdcd
commit eb59470ed8
3 changed files with 17 additions and 4 deletions
output/dll
psx/octoshock/psx

Binary file not shown.

View File

@ -1437,9 +1437,19 @@ pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp)
//it's unclear what happens to games displaying a peculiar Y range
if (dump_framebuffer)
{
dx_start = 0;
dx_end = 2560 / DotClockRatios[dmc];
LineWidths[dest_line] = dx_end - dx_start;
//special hack: if the game (or the bios...) is set to display no range here, don't modify it
//also, as you can see just above, this condition is used to represent an 'off' display
//unfortunately, this will usually be taking effect at dest_line==0, and so the
//fully overscanned area will get set for LineWidths[0].
//so later on we'll have to use LineWidths[NN], say, as a heuristic to get the framebuffer size
if (dx_start == dx_end)
{ }
else
{
dx_start = 0;
dx_end = 2560 / DotClockRatios[dmc];
LineWidths[dest_line] = dx_end - dx_start;
}
}
{

View File

@ -1609,7 +1609,10 @@ EW_EXPORT s32 shock_GetFramebuffer(void* psx, ShockFramebufferInfo* fb)
int fbIndex = s_FramebufferCurrent;
//always fetch description
int width = VTLineWidths[fbIndex][0]; //presently, except for contrived test programs, it is safe to assume this is the same for the entire frame (no known use by games)
//presently, except for contrived test programs, it is safe to assume this is the same for the entire frame (no known use by games)
//however, due to the dump_framebuffer, it may be incorrect at scanline 0. so lets use another one for the heuristic here
//64 is enough to fix the PAL bios screen...
int width = VTLineWidths[fbIndex][64];
int height = espec.DisplayRect.h;
fb->width = width;
fb->height = height;