void PPU::render_scanline() { if(line >= 1 && line < (!overscan() ? 225 : 240)) { if(framecounter) return; render_line_oam_rto(); render_line(); } }
void bPPU::enter() { loop: //H = 0 (initialize) scanline(); if(ivcounter() == 0) frame(); add_clocks(10); //H = 10 (OAM address reset) if(ivcounter() == (!overscan() ? 225 : 240)) { if(regs.display_disabled == false) { regs.oam_addr = regs.oam_baseaddr << 1; regs.oam_firstsprite = (regs.oam_priority == false) ? 0 : (regs.oam_addr >> 2) & 127; } }
void PPU::scanline() { display.width = !hires() ? 256 : 512; display.height = !overscan() ? 225 : 240; if(vcounter() == 0) frame(); if(vcounter() == display.height && regs.display_disable == false) oam.address_reset(); }