AgonConsole8 / agon-vdp

Official Firmware for the Agon Console8: ESP32 VDP
MIT License
43 stars 17 forks source link

improved palette handling #251

Closed stevesims closed 2 months ago

stevesims commented 2 months ago

addresses an issue caused the the inclusion of new updateRGB2PaletteLUT() call when changing palette entries on paletted modes

the underlying issue was caused by the fact that the VDP was not maintaining its own palette on these screen modes, and instead relying on the underlying LUT being essentially incorrect. the LUT not being updated meant that an attempt to translate an incorrect RGB888 colour (as requested by the agon-vdp code) would translate to the new signal colour (in the vdp-gl code)

this revision updates the agon-vdp side palette for all screen modes, thus meaning the updated LUT will operate correctly

this does introduce a new oddity related to duplicate palette entries, which the VDP previously didn’t appear to suffer from. selecting “colour 14” when it has been redefined to be a duplicate of “colour 1” will end up resulting in pixels of “colour 1” now being drawn into the framebuffer. this is “correct”/expected behaviour for fab-gl, but might be unexpected for Agon users. it is however an edge-case that most users should not encounter, and is best addressed at this time through documentation