Changes
CRTC
,/* Counter freezes */
On CRTC 0, setting R0 to 0 or 1 will cause some counters to freeze. The reason for the freezes relates to the logic of how and when the CRTC 0 triggers updates and resets of its various internal counters. Several operations, like the last line check and additional line management activation, depend on HCC reaching certain values. When R0 is 0 or 1, HCC doesn't reach those values, preventing those operations from happening.
When R0=0 (1µs frames):
* VLC Freeze: Because HCC never reaches 1, the logic that increments VLC is never triggered. VLC freezes at the value it held before R0 was set to 0.
* VCC's Last Hiccup: If VLC equals R9 and VCC equals R4 at the exact instant R0 becomes 0, VCC increments once on the very next HCC=0. After this, VCC freezes.
* Register Update Freeze: Updates to R4, R5, and R9 are ignored while R0=0. However, R8 is still evaluated at each HCC=0.
When R0=1 (2µs frames):
* VLC Management: VLC increments and R9 updates are considered once per line (when HCC=0).
* Vertical Adjustment: If VLC=R9 and VCC=R4 are true while HCC is 0 or 1 and R0=1, vertical adjustment starts. It ends when VLC, calculated for the next line, equals R5.