diff options
author | Oxore <oxore@protonmail.com> | 2022-10-21 01:13:07 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2022-10-21 01:13:07 +0300 |
commit | 0e06b0fe09e614937ed8d9329e336155b7f35ffb (patch) | |
tree | 9828f995efba6cf1dad00cd70ece6b5bc9e89bf7 /vdp.cpp | |
parent | b46a4c109a845cd64a8dbc6f51bcbbe6fe2f6378 (diff) |
Try to output color palette (doesn't work)
Diffstat (limited to 'vdp.cpp')
-rw-r--r-- | vdp.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -141,11 +141,23 @@ bool VDP::Scanline() if (!MODESET2_DISP_GET(mode_set_2)) { return true; } - for (size_t i = 0; i < render_width; i++) { - _rendered_buffer[render_width * _lines_counter + i] = 0xff00ffff; + const uint16_t lines_per_screen = _status.pal_mode ? kLinesPerScreenPAL : kLinesPerScreenNTSC; + if (_lines_counter + 1 == lines_per_screen) { + for (size_t i = 0; i < render_width; i++) { + const size_t color_index = (i * 2) % kCRAMSize; + const uint16_t cram_color = ((_cram[color_index] & 0x1) << 8) | _cram[color_index + 1]; + const uint8_t blue = cram_color & 7; + const uint8_t green = (cram_color >> 3) & 7; + const uint8_t red = (cram_color >> 6) & 7; + const uint32_t color = 0xff000000 | (red << 16) | (green << 8) | blue; + _rendered_buffer[render_width * _lines_counter + i] = color; + } + } else { + for (size_t i = 0; i < render_width; i++) { + _rendered_buffer[render_width * _lines_counter + i] = 0xff000000; + } } _lines_counter++; - const uint16_t lines_per_screen = _status.pal_mode ? kLinesPerScreenPAL : kLinesPerScreenNTSC; if (_lines_counter >= lines_per_screen) { _lines_counter = 0; if (MODESET2_IE0_GET(mode_set_2)) { |