I'm just shooting in the dark here, but maybe the 3rd line in the sequence below:
-- dither.vhd, lines 65-67: intermediate_color(1) := ("0" & unsigned(din_r)) + dither_buffer_next(1) + unsigned(dither_buffer_fromRam(1)); intermediate_color(2) := ("0" & unsigned(din_g)) + dither_buffer_next(2) + unsigned(dither_buffer_fromRam(2)); intermediate_color(3) := ("0" & unsigned(din_b)) + dither_buffer_next(3) + unsigned(dither_buffer_fromRam(2));
should actually be:
intermediate_color(3) := ("0" & unsigned(din_b)) + dither_buffer_next(3) + unsigned(dither_buffer_fromRam(3));
Does it make any sense?
Cheers,
Thanks for the find, i highly appreciate it. And it seems you are right. I will check and fix it in the next few days.
Bug fixed.
Blue color has been using old green with 1/4 strength from previous line. It's nearly unrecognizable in the example image because of the slow color gradient.
Thanks again for finding and reporting.