В общем, если я не ошибаюсь, то в процедуре расчета палитры закралась ошибка.
При расчете палитры результат делится не на 255, а на 256, из-за чего реальные RGB цвета высчитываются с небольшой погрешностью.
Экспериментальным путём подтвердил, что, например, при выставленной в настройках палитре от pulsar, ярко-красный цвет получается #FE0000 вместо #FF0000.
Вот формула из конфига:
; Rnn - matrix for post-processing:
; real_Red = (Red*R11 + Green*R12 + Blue*R13) / 0x100
; real_Green = (Red*R21 + Green*R22 + Blue*R23) / 0x100
; real_Blue = (Red*R31 + Green*R32 + Blue*R33) / 0x100
Вот палитра от Pulsar:
pulsar=00,76,CD,E9,FF,9F:FF,00,00;00,FF,00;00,00,FF
По формуле для ярко-красного выходит следующее:
real_Red = (0xFF*0xFF + 0*0 + 0*0) / 0x100 = 0xFE
И это более чем логично - деля 0xFF*0xFF на 0x100, мы никогда не получим 0xFF.
Следовательно, в формуле - логическая ошибка и 0x100 должно быть поменяно на 0xFF.
Я никогда не писал на C++, поэтому проверить свои измышления не смогу, но, руководствуясь своей интуицией, могу сказать, что изменения надо вносить в draw.cpp, линии 220, 221, 222. Исходники брал us0.37.3-src.rar