Fixed a regression bug that made the first CGB frame blank instead of repeated.
@@ -974,11 +974,17 @@ void GB_display_run(GB_gameboy_t *gb, uint8_t cycles)
GB_STAT_update(gb);
if (gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON) {
+ if (GB_is_cgb(gb)) {
+ GB_timing_sync(gb);
+ gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_SKIPPED;
+ }
+ else {
if (!GB_is_sgb(gb) || gb->current_lcd_line < LINES) {
display_vblank(gb);
}
gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED;
}
+ }
else {
gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED;
if (!GB_is_sgb(gb) || gb->current_lcd_line < LINES) {
