void Video::updateGraphics(const int &cycles, CPU &cpuTemp) { setLCDStatus(cpuTemp); if (isLCDEnabled()) _scanLineCounter -= cycles; else return; if (_scanLineCounter <= 0) { // time to move onto next scanline _memory->directModification(LY, _memory->read(LY) + 1); BYTE currentline = _memory->read(LY); _scanLineCounter = 456; // we have entered vertical blank period if (currentline == 144) cpuTemp.requestInterrupt(VBlank); // if gone past scanline 153 reset to 0 else if (currentline > 153) _memory->directModification(LY, 0x00); // draw the current scanline else if (currentline < 144) drawScanLine(); } }
void Lcd::advanceTransfer() { if (lcdCycles >= 172) { setMode(HBlank); drawScanLine(); incrementScanLine(); } }