],
c64 => [
'C=64', # commodore 64/128
- map { Shiar_Sheet::Colour->newyuv($_)->rgb48 }
- qw/008080 FF8080 4F4FF5 9FB00A 5FDADA 7F2525 3FFF80 BF0080
- 5F25DA 3F0AB0 7F4FF5 4F8080 778080 BF2525 77FF80 9F8080 /
+ map {
+ # 5-bit luma ± 2-bit colour angle
+ my ($y, $neg, $hue) = split /(-)|\+/;
+
+ # convert to yuv
+ my ($u, $v) = (0, 0);
+ if (defined $hue) {
+ my $RAD = 3.14159;
+ $hue *= $RAD / 8;
+ $hue += $RAD if $neg;
+ $u = cos $hue;
+ $v = sin $hue;
+ }
+
+ # convert to rgb
+ $y *= 255 / 32;
+ $_ = $_ * 127.5 + 128 for $u, $v;
+ Shiar_Sheet::Colour->newyuv($y, $u, $v)->rgb48;
+ }
+ qw/ 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 /,
],
msx => [
'MSX',