This commit is contained in:
Stefan Arentz 2017-10-04 00:41:39 +00:00 committed by GitHub
commit df67f15d1c
2 changed files with 29 additions and 7 deletions

View File

@ -182,10 +182,10 @@ static uint16_t hgr_line_offsets[192] = {
static SDL_Color hgr_colors[16] = {
{ 0, 0, 0, 0 }, // 0 Black
{ 0, 0, 204, 0 }, // 1 Blue
{ 128, 0, 128, 0 }, // 2 Purple
{ 0, 100, 0, 0 }, // 3 Green
{ 0, 100, 0, 0 }, // 4 Red
{ 0, 150, 255, 0 }, // 1 Light Blue
{ 255, 64, 255, 0 }, // 2 Purple
{ 0, 249, 0, 0 }, // 3 Green
{ 255, 147, 0, 0 }, // 4 Orange
{ 255, 255, 255, 0 } // 5 White
};
@ -227,7 +227,7 @@ inline static void scr_render_hgr_line_color(struct scr_t *scr, int line, uint16
}
} else {
if (c & 0x80) {
pixels[x] = 4; // Red
pixels[x] = 4; // Orange
} else {
pixels[x] = 3; // Green
}
@ -247,6 +247,14 @@ inline static void scr_render_hgr_line_color(struct scr_t *scr, int line, uint16
}
}
// Fill black pixels with same neighbours
for (int i = 0; i < (280-1); i++) {
if (pixels[i] == pixels[i+2] && pixels[i] != 0) {
pixels[i+1] = pixels[i];
}
}
// Now draw them
for (x = 0; x < 280; x++) {

View File

@ -62,11 +62,24 @@ void lgr_full_refresh_test(struct scr_t *scr) {
ewm_scr_update(scr, 0, 0);
}
void hgr_full_refresh_setup(struct scr_t *scr) {
void hgr_full_refresh_setup_monochrome(struct scr_t *scr) {
scr->two->screen_mode = EWM_A2P_SCREEN_MODE_GRAPHICS;
scr->two->screen_page = EWM_A2P_SCREEN_PAGE1;
scr->two->screen_graphics_mode = EWM_A2P_SCREEN_GRAPHICS_MODE_HGR;
scr->two->screen_graphics_style = EWM_A2P_SCREEN_GRAPHICS_STYLE_FULL;
scr->color_scheme = EWM_SCR_COLOR_SCHEME_MONOCHROME;
for (uint16_t a = 0x2000; a <= 0x5fff; a++) {
mem_set_byte(scr->two->cpu, a, rand());
}
}
void hgr_full_refresh_setup_color(struct scr_t *scr) {
scr->two->screen_mode = EWM_A2P_SCREEN_MODE_GRAPHICS;
scr->two->screen_page = EWM_A2P_SCREEN_PAGE1;
scr->two->screen_graphics_mode = EWM_A2P_SCREEN_GRAPHICS_MODE_HGR;
scr->two->screen_graphics_style = EWM_A2P_SCREEN_GRAPHICS_STYLE_FULL;
scr->color_scheme = EWM_SCR_COLOR_SCHEME_COLOR;
for (uint16_t a = 0x2000; a <= 0x5fff; a++) {
mem_set_byte(scr->two->cpu, a, rand());
@ -121,7 +134,8 @@ int main() {
test(two->scr, "txt_full_refresh", txt_full_refresh_setup, txt_full_refresh_test);
test(two->scr, "lgr_full_refresh", lgr_full_refresh_setup, lgr_full_refresh_test);
test(two->scr, "hgr_full_refresh", hgr_full_refresh_setup, hgr_full_refresh_test);
test(two->scr, "hgr_full_refresh_mono", hgr_full_refresh_setup_monochrome, hgr_full_refresh_test);
test(two->scr, "hgr_full_refresh_color", hgr_full_refresh_setup_color, hgr_full_refresh_test);
// Destroy DSL things