During horizontal/vertical blanking periods, the color signals should be at ground in order for the VGA monitor to know the baseline value.
Currently, during the blanking period, the video generator leaves prepared the next data (color) from next line, so if leftmost pixel is not zero, color bands apear while the VGA monitor adapts to the value, and thus if the screen has solid colors, they tend to black after some lines (the time constant is about 1ms):
The following trace shows the horizontal sync period (positive) and how the color data doesn't go to ground:
The correction is simply to make zero all color outputs during blanking. That was tested making the leftmost pixel always zero where solid colors appear as expected.
During horizontal/vertical blanking periods, the color signals should be at ground in order for the VGA monitor to know the baseline value. Currently, during the blanking period, the video generator leaves prepared the next data (color) from next line, so if leftmost pixel is not zero, color bands apear while the VGA monitor adapts to the value, and thus if the screen has solid colors, they tend to black after some lines (the time constant is about 1ms):
The following trace shows the horizontal sync period (positive) and how the color data doesn't go to ground:
The correction is simply to make zero all color outputs during blanking. That was tested making the leftmost pixel always zero where solid colors appear as expected.