1 module magicalrainbows.palette;
2 
3 import magicalrainbows.formats;
4 
5 enum GameBoy = [
6 	RGB888(155, 188, 15),
7 	RGB888(139, 172, 15),
8 	RGB888(48, 98, 48),
9 	RGB888(15, 56, 15)
10 ];
11 
12 enum GameBoyPocket = [
13 	RGB888(255, 255, 255),
14 	RGB888(170, 170, 170),
15 	RGB888(85, 85, 85),
16 	RGB888(0, 0, 0)
17 ];
18 
19 /// Approximations of the colours used in NES games.
20 /// The NES does not actually use these, instead using NTSC/PAL waveforms
21 /// directly.
22 /// See_Also: http://wiki.nesdev.com/w/index.php/NTSC_video
23 enum RGB888[16][4] NES2C02 = [
24 	[
25 		RGB888(124, 124, 124),
26 		RGB888(0, 0, 252),
27 		RGB888(0, 0, 188),
28 		RGB888(68, 40, 188),
29 		RGB888(148, 0, 132),
30 		RGB888(168, 0, 32),
31 		RGB888(168, 16, 0),
32 		RGB888(136, 20, 0),
33 		RGB888(80, 48, 0),
34 		RGB888(0, 120, 0),
35 		RGB888(0, 104, 0),
36 		RGB888(0, 88, 0),
37 		RGB888(0, 64, 88),
38 		RGB888(0, 0, 0),
39 		RGB888(0, 0, 0),
40 		RGB888(0, 0, 0),
41 	],
42 	[
43 		RGB888(188, 188, 188),
44 		RGB888(0, 120, 248),
45 		RGB888(0, 88, 248),
46 		RGB888(104, 68, 252),
47 		RGB888(216, 0, 204),
48 		RGB888(228, 0, 88),
49 		RGB888(248, 56, 0),
50 		RGB888(228, 92, 16),
51 		RGB888(172, 124, 0),
52 		RGB888(0, 184, 0),
53 		RGB888(0, 168, 0),
54 		RGB888(0, 168, 68),
55 		RGB888(0, 136, 136),
56 		RGB888(0, 0, 0),
57 		RGB888(0, 0, 0),
58 		RGB888(0, 0, 0),
59 	],
60 	[
61 		RGB888(236, 238, 236),
62 		RGB888(76, 154, 236),
63 		RGB888(120, 124, 236),
64 		RGB888(176, 98, 236),
65 		RGB888(228, 84, 236),
66 		RGB888(236, 88, 180),
67 		RGB888(236, 106, 100),
68 		RGB888(212, 136, 32),
69 		RGB888(160, 170, 0),
70 		RGB888(116, 196, 0),
71 		RGB888(76, 208, 32),
72 		RGB888(56, 204, 108),
73 		RGB888(56, 180, 204),
74 		RGB888(60, 60, 60),
75 	],
76 	[
77 		RGB888(236, 238, 236),
78 		RGB888(168, 204, 236),
79 		RGB888(188, 188, 236),
80 		RGB888(212, 178, 236),
81 		RGB888(236, 174, 236),
82 		RGB888(236, 174, 212),
83 		RGB888(236, 180, 176),
84 		RGB888(228, 196, 144),
85 		RGB888(204, 210, 120),
86 		RGB888(180, 222, 120),
87 		RGB888(168, 226, 144),
88 		RGB888(152, 226, 180),
89 		RGB888(160, 214, 228),
90 		RGB888(160, 162, 160),
91 	]
92 ];
93 
94 enum nesLum = [0.397, 0.681, 1, 1];
95 enum nesLum2 = [-0.117, 0, 0.308, 0.715];
96 
97 enum CGA16 = [
98 	RGB888(0, 0, 0), //Black
99 	RGB888(0, 0, 170), //Blue
100 	RGB888(0, 170, 0), //Green
101 	RGB888(0, 170, 170), //Cyan
102 	RGB888(170, 0, 0), //Red
103 	RGB888(170, 0, 170), //Magenta
104 	RGB888(170, 85, 0), //Brown
105 	RGB888(170, 170, 170), //Light Gray
106 	RGB888(85, 85, 85), //Dark Gray
107 	RGB888(85, 85, 255), //Light Blue
108 	RGB888(85, 255, 85), //Light Green
109 	RGB888(85, 255, 255), //Light Cyan
110 	RGB888(255, 85, 85), //Light Red
111 	RGB888(255, 85, 255), //Light Magenta
112 	RGB888(255, 255, 85), //Yellow
113 	RGB888(255, 255, 255), //White
114 ];