Browse Source

Make VBlank flags hew more closely to console behavior

master
Nathaniel Walizer 10 months ago
parent
commit
42ed8daebc
1 changed files with 3 additions and 2 deletions
  1. +3
    -2
      src/ppu.c

+ 3
- 2
src/ppu.c View File

@@ -25,6 +25,7 @@ uint8_t nes_ppu_read(nes_ppu* ppu, uint16_t addr) {
if (ppu_reg_status == addr) { if (ppu_reg_status == addr) {
val = ppu->status; val = ppu->status;
ppu->latch = 0; ppu->latch = 0;
ppu->status &= ~ppu_Status_VBlank;


} else if (oam_reg_data == addr) { } else if (oam_reg_data == addr) {
OAM_LOG("PPU: OAM READ %02x > %02x\n", ppu->oam_addr, val); 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++; ppu->frame++;
result = ppu_Result_VBlank_Off; result = ppu_Result_VBlank_Off;


} else if (ppu->scanline >= nes_ppu_active) {
} else if (ppu->scanline == nes_ppu_active) {
ppu->status |= ppu_Status_VBlank; ppu->status |= ppu_Status_VBlank;
if (ppu->control & ppu_Control_VBlank) { if (ppu->control & ppu_Control_VBlank) {
result = ppu_Result_VBlank_On; result = ppu_Result_VBlank_On;
} }


} else {
} else if (ppu->scanline < nes_ppu_active) {
if ( ppu->scanline > nes_ppu_prerender && if ( ppu->scanline > nes_ppu_prerender &&
ppu->scanline < nes_ppu_render) { ppu->scanline < nes_ppu_render) {
ppu->scroll_y++; ppu->scroll_y++;


Loading…
Cancel
Save