MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / VideoUpdateCycles

Function VideoUpdateCycles

source/NTSC.cpp:2476–2511  ·  view source on GitHub ↗

Pre: cyclesLeftToUpdate = [0...g_videoScanner6502Cycles] . 2-14: After one emulated 6502/65C02 opcode (optionally with IRQ) . ~1000: After 1ms of Z80 emulation . 17030: From NTSC_VideoRedrawWholeScreen()

Source from the content-addressed store, hash-verified

2474// . ~1000: After 1ms of Z80 emulation
2475// . 17030: From NTSC_VideoRedrawWholeScreen()
2476static void VideoUpdateCycles( int cyclesLeftToUpdate )
2477{
2478 const int cyclesToEndOfLine = VIDEO_SCANNER_MAX_HORZ - g_nVideoClockHorz;
2479
2480 if (g_nVideoClockVert < VIDEO_SCANNER_Y_MIXED)
2481 {
2482 const int cyclesToLine160 = VIDEO_SCANNER_MAX_HORZ * (VIDEO_SCANNER_Y_MIXED - g_nVideoClockVert - 1) + cyclesToEndOfLine;
2483 int cycles = cyclesLeftToUpdate < cyclesToLine160 ? cyclesLeftToUpdate : cyclesToLine160;
2484 g_pFuncUpdateGraphicsScreen(cycles); // lines [currV...159]
2485 cyclesLeftToUpdate -= cycles;
2486
2487 const int cyclesFromLine160ToLine261 = g_videoScanner6502Cycles - (VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_Y_MIXED);
2488 cycles = cyclesLeftToUpdate < cyclesFromLine160ToLine261 ? cyclesLeftToUpdate : cyclesFromLine160ToLine261;
2489 g_pFuncUpdateGraphicsScreen(cycles); // lines [160..191..261]
2490 cyclesLeftToUpdate -= cycles;
2491
2492 // Any remaining cyclesLeftToUpdate: lines [0...currV)
2493 }
2494 else
2495 {
2496 const int cyclesToLine262 = VIDEO_SCANNER_MAX_HORZ * (g_videoScannerMaxVert - g_nVideoClockVert - 1) + cyclesToEndOfLine;
2497 int cycles = cyclesLeftToUpdate < cyclesToLine262 ? cyclesLeftToUpdate : cyclesToLine262;
2498 g_pFuncUpdateGraphicsScreen(cycles); // lines [currV...261]
2499 cyclesLeftToUpdate -= cycles;
2500
2501 const int cyclesFromLine0ToLine159 = VIDEO_SCANNER_MAX_HORZ * VIDEO_SCANNER_Y_MIXED;
2502 cycles = cyclesLeftToUpdate < cyclesFromLine0ToLine159 ? cyclesLeftToUpdate : cyclesFromLine0ToLine159;
2503 g_pFuncUpdateGraphicsScreen(cycles); // lines [0..159]
2504 cyclesLeftToUpdate -= cycles;
2505
2506 // Any remaining cyclesLeftToUpdate: lines [160...currV)
2507 }
2508
2509 if (cyclesLeftToUpdate)
2510 g_pFuncUpdateGraphicsScreen(cyclesLeftToUpdate);
2511}
2512
2513//===========================================================================
2514void NTSC_VideoUpdateCycles( UINT cycles6502 )

Callers 2

NTSC_VideoUpdateCyclesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected