diff --git a/src/geometry.c b/src/geometry.c index 7f81166a..4e8375f7 100644 --- a/src/geometry.c +++ b/src/geometry.c @@ -551,6 +551,11 @@ void geometry_get_fb_params(capture_info_t *capinfo) { break; }; + if (caphscale == 1 && capvscale == 1) { + caphscale = 2; + capvscale = 2; + } + if (capinfo->chars_per_line > (capinfo->width >> 3)) { capinfo->chars_per_line = (capinfo->width >> 3); } diff --git a/src/osd.c b/src/osd.c index 519f492b..955c49d0 100644 --- a/src/osd.c +++ b/src/osd.c @@ -95,6 +95,9 @@ static const char *palette_names[] = { "Mono (6 level)", "TI-99/4a 14 Col", "Spectrum 48K 8 Col", + "Colour Genie S24", + "Colour Genie S25", + "Colour Genie N25", "Just Red", "Just Green", "Just Blue", @@ -1949,7 +1952,179 @@ void osd_update_palette() { break; */ + case PALETTE_CGS24: + if ((i & 0x30) == 0x30) { + int fix = i; + + switch (fix & 0x0f) { + case 12 : + r=234;g=234;b=234; + break; + case 10 : + r=31;g=157;b=0; + break; + case 13 : + r=188;g=64;b=0; + break; + case 11 : + r=238;g=195;b=14; + break; + case 9 : + r=235;g=111;b=43; + break; + case 7 : + r=94;g=129;b=255; + break; + case 14 : + r=125;g=255;b=251; + break; + case 1 : + r=255;g=172;b=255; + break; + case 6 : + r=171;g=255;b=74; + break; + case 15 : + r=94;g=94;b=94; + break; + case 8 : + r=234;g=234;b=234; + break; + case 4 : + r=78;g=239;b=204; + break; + case 3 : + r=152;g=32;b=255; + break; + case 2 : + r=47;g=83;b=255; + break; + case 5 : + r=255;g=242;b=61; + break; + case 0 : + r=37;g=37;b=37; + break; + } + } else { + r=0;g=0;b=0; + } + break; + case PALETTE_CGS25: + if ((i & 0x30) == 0x30) { + switch (i & 0x0f) { + case 12 : + r=234;g=234;b=234; + break; + case 10 : + r=31;g=157;b=0; + break; + case 13 : + r=188;g=64;b=0; + break; + case 11 : + r=238;g=195;b=14; + break; + case 9 : + r=235;g=111;b=43; + break; + case 7 : + r=94;g=129;b=255; + break; + case 14 : + r=125;g=255;b=251; + break; + case 1 : + r=255;g=172;b=255; + break; + case 6 : + r=47;g=83;b=255; + break; + case 15 : + r=234;g=234;b=234; + break; + case 8 : + r=255;g=242;b=61; + break; + case 4 : + r=78;g=239;b=204; + break; + case 3 : + r=171;g=255;b=74; + break; + case 2 : + r=94;g=94;b=94; + break; + case 5 : + r=152;g=32;b=255; + break; + case 0 : + r=37;g=37;b=37; + break; + } + } else { + r=0;g=0;b=0; + } + break; + case PALETTE_CGN25: + if ((i & 0x30) == 0x30) { + switch (i & 0x0f) { + case 12 : + r=234;g=234;b=234; + break; + case 10 : + r=171;g=255;b=74; + break; + case 13 : + r=203;g=38;b=94; + break; + case 11 : + r=255;g=242;b=61; + break; + case 9 : + r=235;g=111;b=43; + break; + case 7 : + r=47;g=83;b=255; + break; + case 14 : + r=124;g=255;b=234; + break; + case 1 : + r=152;g=32;b=255; + break; + case 6 : + r=188;g=223;b=255; + break; + case 15 : + r=94;g=94;b=94; + break; + case 8 : + r=234;g=255;b=39; + break; + case 4 : + r=138;g=103;b=255; + break; + case 3 : + r=140;g=140;b=140; + break; + case 2 : + r=31;g=196;b=140; + break; + case 5 : + r=199;g=78;b=255; + break; + case 0 : + r=255;g=255;b=255; + break; + } + + } else { + r=0;g=0;b=0; + } + break; + case PALETTE_RED: m = (i & 7) * 255 / 7; r = m; g = 0; b = 0; diff --git a/src/osd.h b/src/osd.h index 76b83585..8a0179c3 100644 --- a/src/osd.h +++ b/src/osd.h @@ -42,6 +42,9 @@ enum { PALETTE_MONO2, PALETTE_TI, PALETTE_SPECTRUM48K, + PALETTE_CGS24, + PALETTE_CGS25, + PALETTE_CGN25, PALETTE_RED, PALETTE_GREEN, PALETTE_BLUE, diff --git a/src/scripts/Profiles/BBC/Colour Genie.txt b/src/scripts/Profiles/BBC/Colour Genie.txt new file mode 100644 index 00000000..a85d736b --- /dev/null +++ b/src/scripts/Profiles/BBC/Colour Genie.txt @@ -0,0 +1,3 @@ +sampling=5,5,5,5,5,5,5,0,6,9,1,0 +geometry=144,67,360,200,392,286,1,1,3,8,8867238,568,5000,312,4 +palette=20 diff --git a/src/scripts/Profiles/RGB(TTL)/Colour Genie.txt b/src/scripts/Profiles/RGB(TTL)/Colour Genie.txt new file mode 100644 index 00000000..a85d736b --- /dev/null +++ b/src/scripts/Profiles/RGB(TTL)/Colour Genie.txt @@ -0,0 +1,3 @@ +sampling=5,5,5,5,5,5,5,0,6,9,1,0 +geometry=144,67,360,200,392,286,1,1,3,8,8867238,568,5000,312,4 +palette=20