[Core/VDP] disabled sprite rendering during border when borders are not disabled (fixes wrong sprite collision detection in Racer homebrew game when borders are disabled)

This commit is contained in:
EkeEke 2016-05-29 18:53:57 +02:00
parent d819b4bccd
commit 373b4ff214
4 changed files with 24 additions and 15 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 3.3 MiB

View File

@ -1285,17 +1285,22 @@ void system_frame_sms(int do_skip)
/* update VCounter */ /* update VCounter */
v_counter = line; v_counter = line;
/* Master System & Game Gear VDP specific */
if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16)))
{
/* Sprites are still processed during top border */
render_obj((line - lines_per_frame) & 1);
parse_satb(line - lines_per_frame);
}
/* render overscan */ /* render overscan */
if ((line < end) || (line >= start)) if ((line < end) || (line >= start))
{ {
/* Master System & Game Gear VDP specific */
if ((system_hw < SYSTEM_MD) && (line > (lines_per_frame - 16)))
{
/* Sprites are still processed during top border */
if (reg[1] & 0x40)
{
render_obj((line - lines_per_frame) & 1);
}
/* Sprites pre-processing occurs even when display is disabled */
parse_satb(line - lines_per_frame);
}
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
} }
@ -1316,6 +1321,16 @@ void system_frame_sms(int do_skip)
/* last line of overscan */ /* last line of overscan */
if (bitmap.viewport.y > 0) if (bitmap.viewport.y > 0)
{ {
/* Master System & Game Gear VDP specific */
if (system_hw < SYSTEM_MD)
{
/* Sprites are still processed during top border */
if (reg[1] & 0x40)
{
render_obj(1);
}
}
blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x); blank_line(line, -bitmap.viewport.x, bitmap.viewport.w + 2*bitmap.viewport.x);
} }
@ -1366,12 +1381,6 @@ void system_frame_sms(int do_skip)
/* Master System & Game Gear VDP specific */ /* Master System & Game Gear VDP specific */
else else
{ {
/* Sprites are still processed during top border */
if (reg[1] & 0x40)
{
render_obj(1);
}
/* Sprites pre-processing occurs even when display is disabled */ /* Sprites pre-processing occurs even when display is disabled */
parse_satb(-1); parse_satb(-1);
} }