GBHawk: PPU cleanup
This commit is contained in:
parent
a98ebef674
commit
70d09673bc
|
@ -63,7 +63,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
public bool fetch_sprite_4;
|
public bool fetch_sprite_4;
|
||||||
public bool going_to_fetch;
|
public bool going_to_fetch;
|
||||||
public int sprite_fetch_counter;
|
public int sprite_fetch_counter;
|
||||||
public bool glitchy_eval;
|
|
||||||
public byte[] sprite_attr_list = new byte[160];
|
public byte[] sprite_attr_list = new byte[160];
|
||||||
public byte[] sprite_pixel_list = new byte[160];
|
public byte[] sprite_pixel_list = new byte[160];
|
||||||
public byte[] sprite_present_list = new byte[160];
|
public byte[] sprite_present_list = new byte[160];
|
||||||
|
@ -585,14 +584,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
internal_cycle = 0;
|
internal_cycle = 0;
|
||||||
pre_render = true;
|
pre_render = true;
|
||||||
tile_inc = 0;
|
tile_inc = 0;
|
||||||
pixel_counter = 0;
|
pixel_counter = -8;
|
||||||
sl_use_index = 0;
|
sl_use_index = 0;
|
||||||
fetch_sprite = false;
|
fetch_sprite = false;
|
||||||
fetch_sprite_01 = false;
|
fetch_sprite_01 = false;
|
||||||
fetch_sprite_4 = false;
|
fetch_sprite_4 = false;
|
||||||
going_to_fetch = false;
|
going_to_fetch = false;
|
||||||
no_sprites = false;
|
no_sprites = false;
|
||||||
glitchy_eval = false;
|
|
||||||
evaled_sprites = 0;
|
evaled_sprites = 0;
|
||||||
|
|
||||||
window_pre_render = false;
|
window_pre_render = false;
|
||||||
|
@ -724,6 +722,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
hbl_countdown = 7;
|
hbl_countdown = 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ((render_counter >= render_offset) && (pixel_counter < 0))
|
||||||
|
{
|
||||||
|
pixel_counter++;
|
||||||
|
}
|
||||||
render_counter++;
|
render_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -844,28 +846,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
// here we set up rendering
|
// here we set up rendering
|
||||||
pre_render = false;
|
pre_render = false;
|
||||||
render_offset = scroll_x % 8;
|
render_offset = scroll_x % 8;
|
||||||
render_counter = 0; // -1;
|
render_counter = 0;
|
||||||
latch_counter = 0;
|
latch_counter = 0;
|
||||||
read_case = 0;
|
read_case = 0;
|
||||||
|
|
||||||
// here we also do a glitchy sprite evaluation for sprites with x=0
|
|
||||||
if (!no_sprites)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < SL_sprites_index; i++)
|
|
||||||
{
|
|
||||||
if (SL_sprites[i * 4 + 1] == 0)
|
|
||||||
{
|
|
||||||
going_to_fetch = true;
|
|
||||||
fetch_sprite = true;
|
|
||||||
glitchy_eval = true;
|
|
||||||
|
|
||||||
if ((SL_sprites[i * 4 + 1] % 8) < 2)
|
|
||||||
{
|
|
||||||
fetch_sprite_01 = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -965,7 +948,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
// here we set up rendering
|
// here we set up rendering
|
||||||
window_pre_render = false;
|
window_pre_render = false;
|
||||||
render_offset = 0;
|
render_offset = 0;
|
||||||
render_counter = 0; // -1;
|
render_counter = 0;
|
||||||
latch_counter = 0;
|
latch_counter = 0;
|
||||||
read_case = 4;
|
read_case = 4;
|
||||||
}
|
}
|
||||||
|
@ -1052,17 +1035,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
// at this time it is unknown what each cycle does, but we only need to accurately keep track of cycles
|
// at this time it is unknown what each cycle does, but we only need to accurately keep track of cycles
|
||||||
for (int i = 0; i < SL_sprites_index; i++)
|
for (int i = 0; i < SL_sprites_index; i++)
|
||||||
{
|
{
|
||||||
if (glitchy_eval)
|
if ((pixel_counter >= (SL_sprites[i * 4 + 1] - 8)) &&
|
||||||
{
|
|
||||||
if (SL_sprites[i * 4 + 1] == 0)
|
|
||||||
{
|
|
||||||
sprite_fetch_counter += 6;
|
|
||||||
evaled_sprites |= (1 << i);
|
|
||||||
last_eval = SL_sprites[i * 4 + 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else if ((pixel_counter >= (SL_sprites[i * 4 + 1] - 8)) &&
|
|
||||||
(pixel_counter < (SL_sprites[i * 4 + 1])) &&
|
(pixel_counter < (SL_sprites[i * 4 + 1])) &&
|
||||||
!evaled_sprites.Bit(i))
|
!evaled_sprites.Bit(i))
|
||||||
{
|
{
|
||||||
|
@ -1082,8 +1055,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
||||||
else if ((last_eval % 8) == 4) { sprite_fetch_counter += 3; }
|
else if ((last_eval % 8) == 4) { sprite_fetch_counter += 3; }
|
||||||
else { sprite_fetch_counter += 2; }
|
else { sprite_fetch_counter += 2; }
|
||||||
}
|
}
|
||||||
|
|
||||||
glitchy_eval = false;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue