termcol: define arne's cpc-derived palette "cpcboy"
[sheet.git] / termcol.inc.pl
index 48b140ce0eee3a8ee110a95eaea7f1708fe30c5b..02737e67e7d9b42a09875aaf41b26a32c5691298 100644 (file)
@@ -1,6 +1,9 @@
 use strict;
+use 5.010;
 use Shiar_Sheet::Colour '1.02';
 
+my @msxorder = ( 0,6,2,10,4,13,7,14 , 1,8,3,11,5,9,12,15 );
+
 +{
        html => {
                title => 'HTML keywords (inherited by CSSā‰„2.1 and SVG), mostly identical to X11',
@@ -77,12 +80,22 @@ use Shiar_Sheet::Colour '1.02';
                        2F2F2F CD5757 8FC35B D1C45E 5C81A9 BC95B7 76CBCB EEEEEC
                )],
        },
+       mirc => {
+               name => 'mIRC',
+               href => 'http://www.mirc.com/colors.html',
+               list => [qw(
+                       FFFFFF 000000 00007F 009300 FF0000 7F0000 9C009C FC7F00
+                       FFFF00 00FC00 009393 00FFFF 0000FC FF00FF 7F7F7F D2D2D2
+               )],
+               ansiorder => [ 1,5,3,7,2,6,10,15 , 14,4,9,8,12,13,11,0  ],
+       },
        mac2 => {
                name => 'MacII',
                list => [qw(
                        FFFFFF FBF305 FF6403 DD0907 F20884 4700A5 0000D3 02ABEA
                        1FB714 006412 562C05 90713A C0C0C0 808080 404040 000000
                )],
+               ansiorder => [ 15,3,9,11,6,5,7,12 , 14,2,8,1,13,4,10,0 ],
        },
        risc => {
                name => 'RISC',  # v2/3
@@ -90,6 +103,7 @@ use Shiar_Sheet::Colour '1.02';
                        FFFFFF DDDDDD BBBBBB 999999 777777 555555 333333 000000
                        004499 EEEE00 00CC00 DD0000 EEEEBB 558800 FFBB00 00BBFF
                )],
+               ansiorder => [ 7,11,13,14,8,12,15,1, 6,5,10,9,4,3,2,0 ],
        },
        c64 => {
                name => 'C=64',  # commodore 64/128
@@ -115,6 +129,7 @@ use Shiar_Sheet::Colour '1.02';
                        0    32  10+5 20-5 12+2 16-2 8+0  24-0
                        12+6 8+7 16+5 10   15   24-2 15+0 20
                )],
+               ansiorder => [ 0,2,5,9,6,4,3,15 , 11,10,13,7,14,8,12,1 ],
        },
        msx1 => {
                name => 'MSX',
@@ -129,6 +144,7 @@ use Shiar_Sheet::Colour '1.02';
                        0.53;0.27;0.93 0.67;0.27;0.93 0.73;0.07;0.57 0.80;0.17;0.57
                        0.47;0.23;0.13 0.53;0.67;0.73 0.80;0.47;0.47 1.00;0.47;0.47
                )],
+               ansiorder => \@msxorder,
        },
        msx2 => {
                name => 'MSX2',
@@ -137,6 +153,7 @@ use Shiar_Sheet::Colour '1.02';
                        000 000 161 373 117 237 511 267
                        711 733 661 663 141 625 555 777
                )],
+               ansiorder => \@msxorder,
        },
        arnejmp => {
                href => 'http://androidarts.com/palette/16pal.htm',
@@ -146,6 +163,7 @@ use Shiar_Sheet::Colour '1.02';
                        000000 191028 46AF45 A1D685 453E78 7664FE 833129 9EC2E8
                        DC534B E18D79 D6B97B E9D8A1 216C4B D365C8 AFAAB9 F5F4EB
                )],
+               ansiorder => \@msxorder,
        },
        arnegame => {
                href => 'http://androidarts.com/palette/16pal.htm',
@@ -157,6 +175,8 @@ use Shiar_Sheet::Colour '1.02';
                        F7E26B::zornskin 2F484E::shade   44891A::leaf    A3CE27::slime
                        1B2632::night    005784::sea     31A2F2::sky     B2DCEF::cloud
                )],
+               order => [ 0,5,9,12 , 3,6,10,13,1 , 4,7,8,11,14,15,2 ], # by brightness
+               ansiorder => [ 0,3,10,6,13,12,9,1 , 5,7,11,8,14,4,15,2 ],
        },
 
        cpc => {
@@ -168,6 +188,25 @@ use Shiar_Sheet::Colour '1.02';
                        },
                ],
        },
+       cpcboy => {
+               name => 'Arne CPC Boy v3',
+               href => 'http://androidarts.com/palette/16pal.htm',
+               rgbmap => [
+                       3 => sub {
+                               my $index = $_[2] + 3 * ($_[0] + 3 * $_[1]);
+                               $index,
+                               map { map { hex } /(..)/g } [qw(
+                                       000000 1B1B76 3636D8  761F28 623870 953EA7  CC3636 CE4B7A E3669A
+                                       1B761B 197F96 1986F2  8C6E1A 8E8E8E 9C9EE7  E48E2A EAA597 FE80FE
+                                       8DD836 B8D1B5 97E9D1  54BF47 37C79F 35CFE4  EDD446 EBE4A4 FFFFFF
+                               )]->[$index]
+                       },
+                       [ # gameboy ramp
+                               map { [ 27 + (state $index)++, map { hex } /(..)/g ] }
+                               qw( F2EFE7 BAC375 859550 485D48 293941 )
+                       ],
+               ],
+       },
        ansi88 => {
                name => 'rxvt 88 colour extension',
                rgbmap => [
@@ -175,7 +214,7 @@ use Shiar_Sheet::Colour '1.02';
                                $_[2] + 4 * ($_[1] + 4 * $_[0]) + 16,
                                map { (0, 139, 205, 255)[$_] } @_
                        },
-                       [ map { ($_ + 2 + ($_>0)) * 255/11 } 0 .. 7 ],
+                       [ map { [80 + $_, (($_ + 2 + ($_>0)) * 255/11) x 3] } 0 .. 7 ],
                ],
        },
        ansi256 => {
@@ -187,7 +226,22 @@ use Shiar_Sheet::Colour '1.02';
                                $_[2] + 6 * ($_[1] + 6 * $_[0]) + 16,
                                map { $_ && $_*40 + 55 } @_
                        },
-                       [ map { $_ * 10 + 8 } 0 .. 23 ],
+                       [ map { [232 + $_, ($_ * 10 + 8) x 3] } 0 .. 23 ],
+               ],
+       },
+       512 => {
+               name => '9-bit RGB map',
+               # atari st, msx2, sega genesis/nomad, turbografx16
+               rgbmap => [8],
+       },
+       '4k' => {
+               name => '12-bit RGB map',
+               # amiga, apple IIgs, game gear, neo geo, lynx, cpc+, nextstation
+               rgbmap => [
+                       12 => sub {
+                               join('', map { sprintf '%X', $_ } @_),
+                               map { int $_ * 255 / 11 } @_
+                       },
                ],
        },
 }