Correctly emulate SGB border color 0
This commit is contained in:
parent
e5e7ce8203
commit
b698ce5d95
10
Core/sgb.c
10
Core/sgb.c
@ -393,6 +393,7 @@ void GB_sgb_render(GB_gameboy_t *gb)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (gb->sgb->border_animation == 32) {
|
if (gb->sgb->border_animation == 32) {
|
||||||
memcpy(&gb->sgb->border, &gb->sgb->pending_border, sizeof(gb->sgb->border));
|
memcpy(&gb->sgb->border, &gb->sgb->pending_border, sizeof(gb->sgb->border));
|
||||||
}
|
}
|
||||||
@ -410,8 +411,13 @@ void GB_sgb_render(GB_gameboy_t *gb)
|
|||||||
for (unsigned y = 0; y < 8; y++) {
|
for (unsigned y = 0; y < 8; y++) {
|
||||||
for (unsigned x = 0; x < 8; x++) {
|
for (unsigned x = 0; x < 8; x++) {
|
||||||
uint8_t color = gb->sgb->border.tiles[(tile & 0xFF) * 64 + (x ^ flip_x) + (y ^ flip_y) * 8] & 0xF;
|
uint8_t color = gb->sgb->border.tiles[(tile & 0xFF) * 64 + (x ^ flip_x) + (y ^ flip_y) * 8] & 0xF;
|
||||||
if (color == 0 && gb_area) continue;
|
if (color == 0) {
|
||||||
gb->screen[tile_x * 8 + x + (tile_y * 8 + y) * 0x100] = border_colors[palette * 16 + color];
|
if (gb_area) continue;
|
||||||
|
gb->screen[tile_x * 8 + x + (tile_y * 8 + y) * 0x100] = colors[0];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gb->screen[tile_x * 8 + x + (tile_y * 8 + y) * 0x100] = border_colors[color + palette * 16];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1173
Core/sgb_border.inc
1173
Core/sgb_border.inc
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user