diff --git a/src/ppu.c b/src/ppu.c index 929f4b0..fbafb5f 100644 --- a/src/ppu.c +++ b/src/ppu.c @@ -25,6 +25,7 @@ uint8_t nes_ppu_read(nes_ppu* ppu, uint16_t addr) { if (ppu_reg_status == addr) { val = ppu->status; ppu->latch = 0; + ppu->status &= ~ppu_Status_VBlank; } else if (oam_reg_data == addr) { OAM_LOG("PPU: OAM READ %02x > %02x\n", ppu->oam_addr, val); @@ -274,13 +275,13 @@ nes_ppu_Result nes_ppu_run(nes_ppu* ppu, int cycles) { ppu->frame++; result = ppu_Result_VBlank_Off; - } else if (ppu->scanline >= nes_ppu_active) { + } else if (ppu->scanline == nes_ppu_active) { ppu->status |= ppu_Status_VBlank; if (ppu->control & ppu_Control_VBlank) { result = ppu_Result_VBlank_On; } - } else { + } else if (ppu->scanline < nes_ppu_active) { if ( ppu->scanline > nes_ppu_prerender && ppu->scanline < nes_ppu_render) { ppu->scroll_y++;