1 // license:BSD-3-Clause
2 // copyright-holders:Dan Boris, Fabio Priuli, Mike Saarna, Robert Tuccitto
3 /***************************************************************************
4 
5   a7800.c
6 
7   Driver file to handle emulation of the Atari 7800.
8 
9   Dan Boris
10 
11     2002/05/13 kubecj   added more banks for bankswitching
12                         added PAL machine description
13                         changed clock to be precise
14                         improved cart emulation (in machine/)
15 
16     2012/10/25 Robert Tuccitto  NTSC Color Generator utilized for
17                 color palette with hue shift/start
18                 based on observation of several
19                 systems across multiple displays
20 
21     2012/11/09 Robert Tuccitto  Fixed 3 degree hue begin point
22                 miscalculation of color palette
23 
24     2012/12/05 Robert Tuccitto  Implemented proper IRE and phase
25                value to the palette
26 
27     2012/12/14 Robert Tuccitto  Adjusted colorburst/tint/hue of entire
28                palette to closer reflect default hardware configuration
29                setting of ~180 degrees.  Palette settings now correspond
30                documented and calculated settings as follows:
31 
32                Contrast = 0.0526 --> 0.05
33                Brightness = 0.0 --> 0.00
34                Color = 0.2162 --> 0.22
35                Phase = 25.714 --> 25.7
36                Colorburst/Hue = 180 degrees
37 
38     2013/02/27 Robert Tuccitto  Palette rebuild due to misaligned
39                data references.  Corrected PAL color sequence order.
40 
41     2013/03/19 Robert Tuccitto  Stripped palette to raw video output
42                values removing YIQ/YUV infer data.
43 
44     2013/04/02 Robert Tuccitto  Corrected rotation values and errors
45                including duplicate entries for palette.
46 
47     2013/04/07 Robert Tuccitto  Address map locations for the XBOARD
48                added.
49 
50     2013/05/01 Robert Tuccitto  Red and Blue miscalculated proportions
51                fixed.
52 
53     2013/08/04 Robert Tuccitto  Green miscalculated proportions fixed.
54 
55     2013/08/13 Robert Tuccitto  Normalized contrast and brightness,
56                providing a standardize grayscale and adjusted color values.
57 
58     2013/09/02 Robert Tuccitto  Stored data for 26.7 & 27.7 phase shifts
59                with corrections and label for 25.7 values. Made 26.7
60                (medium) default. Phase shifting falls outside the realm of
61                video controls and hope to implement a selectable toggle
62                hardware option similar to Donkey Kong TKG02/TKG04.
63 
64     2013/09/19 Robert Tuccitto  Cleanup of Address Maps, high score maps
65                added.
66 
67     2013/10/16 Robert Tuccitto  Added Phase Shifts 24.7, 25.2, 26.2, 27.2.
68                Phase Shifts 24.7 through 27.7 degrees with 0.5 degree
69                increments documented. Phase Shift 26.2 degrees made active.
70                Fixed typo under 26.7 7$.
71 
72     2013/10/27 Robert Tuccitto  Modernized screen parameters for NTSC & PAL.
73 
74     2013/11/03 Robert Tuccitto  Fixed correctly typo under 26.7 7$.
75 
76     2013/11/23 Robert Tuccitto  Added NTSC Palette Notes.
77 
78     2014/01/02 Robert Tuccitto  Corrected joystick buttons assignment & minor
79                                 palette notes cleanup.
80 
81     2014/01/09 Robert Tuccitto  Positional description for difficulty
82                                 switches added.
83 
84     2014/02/15 Robert Tuccitto  Added more details and clarification
85                                 regarding the potentiometer.
86 
87     2014/03/25 Mike Saarna  Fixed Riot Timer
88 
89     2014/04/04 Mike Saarna  Fix to controller button RIOT behavior
90 
91     2014/05/06 Mike Saarna/Robert Tuccitto Brought initial Maria cycle counts
92                inline from measurements taken with logic analyzer and tests.
93 
94     2014/08/25 Fabio Priuli Converted carts to be slot devices and cleaned
95                up the driver (removed the pokey, cleaned up rom regions, etc.)
96 
97 ***************************************************************************/
98 
99 #include "emu.h"
100 #include "cpu/m6502/m6502.h"
101 #include "machine/timer.h"
102 #include "sound/tiaintf.h"
103 #include "sound/tiasound.h"
104 #include "machine/mos6530n.h"
105 #include "video/maria.h"
106 #include "bus/a7800/a78_carts.h"
107 #include "emupal.h"
108 #include "screen.h"
109 #include "softlist.h"
110 #include "speaker.h"
111 
112 #define A7800_NTSC_Y1   XTAL(14'318'181)
113 #define CLK_PAL 1773447
114 
115 
116 class a7800_state : public driver_device
117 {
118 public:
a7800_state(const machine_config & mconfig,device_type type,const char * tag)119 	a7800_state(const machine_config &mconfig, device_type type, const char *tag) :
120 		driver_device(mconfig, type, tag),
121 		m_maincpu(*this, "maincpu"),
122 		m_tia(*this, "tia"),
123 		m_maria(*this, "maria"),
124 		m_io_joysticks(*this, "joysticks"),
125 		m_io_buttons(*this, "buttons"),
126 		m_io_console_buttons(*this, "console_buttons"),
127 		m_cart(*this, "cartslot"),
128 		m_screen(*this, "screen"),
129 		m_bios(*this, "maincpu")
130 	{
131 	}
132 
133 	void a7800_ntsc(machine_config &config);
134 
135 protected:
136 	uint8_t bios_or_cart_r(offs_t offset);
137 	uint8_t tia_r(offs_t offset);
138 	void tia_w(offs_t offset, uint8_t data);
139 	void a7800_palette(palette_device &palette) const;
140 	TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
141 	TIMER_CALLBACK_MEMBER(maria_startdma);
142 	uint8_t riot_joystick_r();
143 	uint8_t riot_console_button_r();
144 	void riot_button_pullup_w(uint8_t data);
145 
146 	virtual void machine_start() override;
147 	virtual void machine_reset() override;
148 	void a7800_mem(address_map &map);
149 
150 	int m_lines;
151 	int m_ispal;
152 
153 	int m_ctrl_lock;
154 	int m_ctrl_reg;
155 	int m_maria_flag;
156 	int m_p1_one_button;
157 	int m_p2_one_button;
158 	int m_bios_enabled;
159 
160 	required_device<cpu_device> m_maincpu;
161 	required_device<tia_device> m_tia;
162 	required_device<atari_maria_device> m_maria;
163 	required_ioport m_io_joysticks;
164 	required_ioport m_io_buttons;
165 	required_ioport m_io_console_buttons;
166 	required_device<a78_cart_slot_device> m_cart;
167 	required_device<screen_device> m_screen;
168 	required_region_ptr<uint8_t> m_bios;
169 };
170 
171 class a7800_ntsc_state : public a7800_state
172 {
173 public:
174 	using a7800_state::a7800_state;
175 	void init_a7800_ntsc();
176 };
177 
178 class a7800_pal_state : public a7800_state
179 {
180 public:
181 	using a7800_state::a7800_state;
182 	void init_a7800_pal();
183 	void a7800_pal(machine_config &config);
184 
185 protected:
186 	void a7800p_palette(palette_device &palette) const;
187 };
188 
189 
190 /***************************************************************************
191  MEMORY HANDLERS
192  ***************************************************************************/
193 
194 // RIOT
riot_joystick_r()195 uint8_t a7800_state::riot_joystick_r()
196 {
197 	return m_io_joysticks->read();
198 }
199 
riot_console_button_r()200 uint8_t a7800_state::riot_console_button_r()
201 {
202 	return m_io_console_buttons->read();
203 }
204 
riot_button_pullup_w(uint8_t data)205 void a7800_state::riot_button_pullup_w(uint8_t data)
206 {
207 	if(m_maincpu->space(AS_PROGRAM).read_byte(0x283) & 0x04)
208 		m_p1_one_button = data & 0x04; // pin 6 of the controller port is held high by the riot chip when reading two-button controllers (from schematic)
209 	if(m_maincpu->space(AS_PROGRAM).read_byte(0x283) & 0x10)
210 		m_p2_one_button = data & 0x10;
211 }
212 
tia_r(offs_t offset)213 uint8_t a7800_state::tia_r(offs_t offset)
214 {
215 	switch (offset & 0x0f)
216 	{
217 	case 0x00:
218 	case 0x01:
219 	case 0x02:
220 	case 0x03:
221 	case 0x04:
222 	case 0x05:
223 	case 0x06:
224 	case 0x07:
225 		/* Even though the 7800 doesn't use the TIA graphics the collision registers should
226 		 still return a reasonable value */
227 		return 0x00;
228 	case 0x08:
229 		return ((m_io_buttons->read() & 0x02) << 6);
230 	case 0x09:
231 		return ((m_io_buttons->read() & 0x08) << 4);
232 	case 0x0a:
233 		return ((m_io_buttons->read() & 0x01) << 7);
234 	case 0x0b:
235 		return ((m_io_buttons->read() & 0x04) << 5);
236 	case 0x0c:
237 		if (((m_io_buttons->read() & 0x08) ||(m_io_buttons->read() & 0x02)) && m_p1_one_button)
238 			return 0x00;
239 		else
240 			return 0x80;
241 	case 0x0d:
242 		if (((m_io_buttons->read() & 0x01) ||(m_io_buttons->read() & 0x04)) && m_p2_one_button)
243 			return 0x00;
244 		else
245 			return 0x80;
246 	default:
247 		logerror("undefined TIA read %x\n",offset);
248 	}
249 	return 0xff;
250 }
251 
252 // TIA
tia_w(offs_t offset,uint8_t data)253 void a7800_state::tia_w(offs_t offset, uint8_t data)
254 {
255 	if (offset < 0x20)
256 	{ //INPTCTRL covers TIA registers 0x00-0x1F until locked
257 		if (data & 0x01)
258 		{
259 			if (m_ctrl_lock && offset == 0x01)
260 				m_maria_flag = 1;
261 			else if (!m_ctrl_lock)
262 				m_maria_flag = 1;
263 		}
264 		if (!m_ctrl_lock)
265 		{
266 			m_ctrl_lock = data & 0x01;
267 			m_ctrl_reg = data;
268 		}
269 	}
270 	m_tia->tia_sound_w(offset, data);
271 }
272 
273 
274 // TIMERS
275 
TIMER_DEVICE_CALLBACK_MEMBER(a7800_state::interrupt)276 TIMER_DEVICE_CALLBACK_MEMBER(a7800_state::interrupt)
277 {
278 	// DMA Begins 7 cycles after hblank
279 	machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(7), timer_expired_delegate(FUNC(a7800_state::maria_startdma), this));
280 	m_maria->interrupt(m_lines);
281 }
282 
TIMER_CALLBACK_MEMBER(a7800_state::maria_startdma)283 TIMER_CALLBACK_MEMBER(a7800_state::maria_startdma)
284 {
285 	m_maria->startdma(m_lines);
286 }
287 
288 
289 
290 // ROM
bios_or_cart_r(offs_t offset)291 uint8_t a7800_state::bios_or_cart_r(offs_t offset)
292 {
293 	if (!(m_ctrl_reg & 0x04))
294 		return m_bios[offset];
295 	else
296 		return m_cart->read_40xx(offset + 0x8000);
297 }
298 
299 /***************************************************************************
300     ADDRESS MAPS
301 ***************************************************************************/
302 
a7800_mem(address_map & map)303 void a7800_state::a7800_mem(address_map &map)
304 {
305 	map(0x0000, 0x001f).mirror(0x300).rw(FUNC(a7800_state::tia_r), FUNC(a7800_state::tia_w));
306 	map(0x0020, 0x003f).mirror(0x300).rw(m_maria, FUNC(atari_maria_device::read), FUNC(atari_maria_device::write));
307 	map(0x0040, 0x00ff).bankrw("zpmirror"); // mirror of 0x2040-0x20ff, for zero page
308 	map(0x0140, 0x01ff).bankrw("spmirror"); // mirror of 0x2140-0x21ff, for stack page
309 	map(0x0280, 0x029f).mirror(0x160).m("riot", FUNC(mos6532_new_device::io_map));
310 	map(0x0480, 0x04ff).mirror(0x100).m("riot", FUNC(mos6532_new_device::ram_map));
311 	map(0x1800, 0x1fff).ram().share("6116_1");
312 	map(0x2000, 0x27ff).ram().share("6116_2");
313 								// According to the official Software Guide, the RAM at 0x2000 is
314 								// repeatedly mirrored up to 0x3fff, but this is evidently incorrect
315 								// because the High Score Cartridge maps ROM at 0x3000-0x3fff
316 								// Hardware tests show that only the page at 0x2700 appears at
317 								// 0x2800, and only on some hardware (MARIA? motherboard?) revisions,
318 								// and even then with inconsistent and unreliable results.
319 	map(0x4000, 0xffff).w(m_cart, FUNC(a78_cart_slot_device::write_40xx));
320 	map(0x4000, 0xbfff).r(m_cart, FUNC(a78_cart_slot_device::read_40xx));
321 	map(0xc000, 0xffff).r(FUNC(a7800_state::bios_or_cart_r));    // here also the BIOS can be accessed
322 }
323 
324 
325 /***************************************************************************
326     INPUT PORTS
327 ***************************************************************************/
328 
329 static INPUT_PORTS_START( a7800 )
330 	PORT_START("joysticks")
331 	PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)    PORT_PLAYER(2) PORT_8WAY
332 	PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN)  PORT_PLAYER(2) PORT_8WAY
333 	PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT)  PORT_PLAYER(2) PORT_8WAY
334 	PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
335 	PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)    PORT_PLAYER(1) PORT_8WAY
336 	PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN)  PORT_PLAYER(1) PORT_8WAY
337 	PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT)  PORT_PLAYER(1) PORT_8WAY
338 	PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_8WAY
339 
340 	PORT_START("buttons")
341 	PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON2)       PORT_PLAYER(2)
342 	PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2)       PORT_PLAYER(1)
343 	PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1)       PORT_PLAYER(2)
344 	PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON1)       PORT_PLAYER(1)
345 	PORT_BIT(0xF0, IP_ACTIVE_LOW, IPT_UNUSED)
346 
347 	PORT_START("console_buttons")
348 	PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)  PORT_NAME("Reset")         PORT_CODE(KEYCODE_R)
349 	PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)  PORT_NAME("Select")        PORT_CODE(KEYCODE_S)
350 	PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
351 	PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)  PORT_NAME(DEF_STR(Pause))  PORT_CODE(KEYCODE_O)
352 	PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
353 	PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
354 	PORT_DIPNAME(0x40, 0x40, "Left Difficulty Switch")
355 	PORT_DIPSETTING(0x40, "A - Right Position" )
356 	PORT_DIPSETTING(0x00, "B - Left Position" )
357 	PORT_DIPNAME(0x80, 0x80, "Right Difficulty Switch")
358 	PORT_DIPSETTING(0x80, "A - Right Position" )
359 	PORT_DIPSETTING(0x00, "B - Left Position" )
360 INPUT_PORTS_END
361 
362 /***************************************************************************
363 Atari 7800 NTSC Palette Notes:
364 
365 Palette on a modern flat panel display (LCD, LED, Plasma, etc.) appears
366 different from a traditional CRT. The most outstanding difference is Hue 1x,
367 the hue begin point. Hue 1x looks very 'green' (~-60 to -45 degrees -
368 depending on how poor or well it handles the signal conversion and its
369 calibration) on a modern flat panel display, as opposed to 'gold' (~-33
370 degrees) on a CRT.
371 
372 The potentiometer (pot adjustment) for the 7800 modifies the delay line
373 regarding colors it will exhibit and is extremely sensitive.  The slightest
374 turn can have a significant impact.
375 
376 A system whose potentiometer is not properly calibrated via
377 'CPS 7800 Diagnostic Test Cartridge' or/and just slightly off from the
378 desired factory settings may exhibit consequences such as too much blue in
379 place of green (Pot adjusted slightly too far left) or washed out reddish
380 tones in place of where most other systems display a darker reddish tones
381 (Pot adjusted slightly too far right).
382 
383 This is a result of the phase shifting of lesser degrees (Pot adjusted more
384 to the left) or phase shifting of greater degrees (Pot adjusted more to the
385 right).
386 
387 Turning the pot adjustment to the right, it can be observed that the values
388 of the higher end of the scale will match the lower end of the scale.
389 For example, after some turning to the right, the values of Dx, Ex, Fx,
390 can be set to match 1x, 2x, 3x.
391 
392 After further turning to the right, now the palette can be brought to make
393 Ax, Bx, Cx, Dx, Ex, Fx will match 1x, 2x, 3x, 4x, 5x, 6x.
394 
395 Ultimately though, too much turning to the right results in all colors being
396 wiped from the scale, excluding the hue begin point 1x (Which remains
397 unchanged while tweaking the potentiometer either left or right).
398 
399 Continuously turning the pot adjustment to the left, red and blue become the
400 most dominant two colors encompassing the palette with only a slight
401 influence of green at the highest end of the palette (Fx), once turned all
402 the way leftward.
403 
404 The degree range for adjustment of the phase shifting on the 7800 appears
405 to be as low as approximately 15 degrees when tuned all the way left, and
406 seems to be able to achieve as high as approximately 45 degrees when turned
407 right before losing all color (Excluding 1x) from the palette scale.
408 
409 For even a properly calibrated system at power on, the system's phase
410 shift appears as low as ~23 degrees and after a considerable consistent
411 runtime ('warm-up'), can be as high as ~28 degrees.
412 
413 In general, the low end of ~23 degrees lasts for maybe several seconds,
414 whereas higher values such as ~25-27 degrees is the most dominant during
415 system run time.  180 degrees colorburst takes place at ~25.7 degrees (A
416 near exact match of Hue 1x and 15x - To the naked eye they appear to be
417 the same).
418 
419 However, consistent system run time causes Hue 15x (F$) to become
420 stronger/darker gold (More brown then ultimately red-brown); as well
421 as leans Hue 14x (E$) more brown than green.  Once achieving a phase shift
422 of 27.7, Hue 14x (E$) and Hue 15x (F$) near-exact match Hue 1x and 2x
423 respectively.
424 
425 Therefore, an ideal phase shift while accounting for the reality of
426 shifting while warming up, as well as maintaining differences between 1x,
427 2x and 14x, 15x, would likely fall between a 25.7 and 27.7. Phase shifts
428 26.2 degrees and 26.7 degrees places Hue 15x (F$) between Hue 1x and
429 Hue 2x, having 26.2 degrees leaning closer to Hue 1x and 26.7 degrees
430 leaning closer to Hue 2x.
431 
432 The above notion would also harmonize with what has been documented for
433 the colors of 1x, 2x, 14x, 15x on the 7800.  1x = Gold, 2x = Orange,
434 14x (E$) = Orange-Green. 15x (F$) = Light Orange.  Color descriptions are
435 best measured in the middle of the brightness scale.  It should be
436 mentioned that Green-Yellow is referenced at Hue 13x (D$), nowhere near
437 Hue 1x.  A Green-Yellow Hue 1x is how the palette is manipulated and
438 modified (in part) under a modern flat panel display.
439 
440 Additionally, the blue to red (And consequently blue to green) ratio
441 proportions may appear different on a modern flat panel display than a CRT
442 in some instances for the Atari 7800 system.  Furthermore, you may have
443 some variation of proportions even within the same display type.
444 
445 One side effect of this on the console's palette is that some values of
446 red may appear too pinkish - Too much blue to red.  This is not the same
447 as a traditional tint-hue control adjustment; rather, can be demonstrated
448 by changing the blue ratio values via MESS HLSL settings.
449 
450 Lastly, the Atari 2600 & 5200 NTSC color palettes hold the same hue
451 structure order and have similar appearance differences that are dependent
452 upon display type.
453 ***************************************************************************/
454 
455 /***************************************************************************
456     PALETTE - 25.7 PHASE SHIFT
457 ***************************************************************************/
458 
459 #define NTSC_GREY \
460 	rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
461 	rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
462 	rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
463 	rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
464 
465 #define NTSC_GOLD \
466 	rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
467 	rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
468 	rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
469 	rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
470 
471 #define NTSC_ORANGE \
472 	rgb_t(0x31,0x00,0x00), rgb_t(0x42,0x06,0x00), rgb_t(0x53,0x17,0x00), rgb_t(0x64,0x28,0x00), \
473 	rgb_t(0x75,0x39,0x00), rgb_t(0x86,0x4A,0x00), rgb_t(0x97,0x5B,0x0A), rgb_t(0xA8,0x6C,0x1B), \
474 	rgb_t(0xB9,0x7D,0x2C), rgb_t(0xCA,0x8E,0x3D), rgb_t(0xDB,0x9F,0x4E), rgb_t(0xEC,0xB0,0x5F), \
475 	rgb_t(0xFD,0xC1,0x70), rgb_t(0xFF,0xD2,0x85), rgb_t(0xFF,0xE3,0x9C), rgb_t(0xFF,0xF4,0xB2   )
476 
477 #define NTSC_RED_ORANGE \
478 	rgb_t(0x3E,0x00,0x00), rgb_t(0x4F,0x00,0x00), rgb_t(0x60,0x08,0x00), rgb_t(0x71,0x19,0x00), \
479 	rgb_t(0x82,0x2A,0x0D), rgb_t(0x93,0x3B,0x1E), rgb_t(0xA4,0x4C,0x2F), rgb_t(0xB5,0x5D,0x40), \
480 	rgb_t(0xC6,0x6E,0x51), rgb_t(0xD7,0x7F,0x62), rgb_t(0xE8,0x90,0x73), rgb_t(0xF9,0xA1,0x83), \
481 	rgb_t(0xFF,0xB2,0x98), rgb_t(0xFF,0xC3,0xAE), rgb_t(0xFF,0xD4,0xC4), rgb_t(0xFF,0xE5,0xDA   )
482 
483 #define NTSC_PINK \
484 	rgb_t(0x3F,0x00,0x03), rgb_t(0x50,0x00,0x0F), rgb_t(0x61,0x00,0x1B), rgb_t(0x72,0x0F,0x2B), \
485 	rgb_t(0x83,0x20,0x3C), rgb_t(0x94,0x31,0x4D), rgb_t(0xA5,0x42,0x5E), rgb_t(0xB6,0x53,0x6F), \
486 	rgb_t(0xC7,0x64,0x80), rgb_t(0xD8,0x75,0x91), rgb_t(0xE9,0x86,0xA2), rgb_t(0xFA,0x97,0xB3), \
487 	rgb_t(0xFF,0xA8,0xC8), rgb_t(0xFF,0xB9,0xDE), rgb_t(0xFF,0xCA,0xEF), rgb_t(0xFF,0xDB,0xF4   )
488 
489 #define NTSC_PURPLE \
490 	rgb_t(0x33,0x00,0x35), rgb_t(0x44,0x00,0x41), rgb_t(0x55,0x00,0x4C), rgb_t(0x66,0x0C,0x5C), \
491 	rgb_t(0x77,0x1D,0x6D), rgb_t(0x88,0x2E,0x7E), rgb_t(0x99,0x3F,0x8F), rgb_t(0xAA,0x50,0xA0), \
492 	rgb_t(0xBB,0x61,0xB1), rgb_t(0xCC,0x72,0xC2), rgb_t(0xDD,0x83,0xD3), rgb_t(0xEE,0x94,0xE4), \
493 	rgb_t(0xFF,0xA5,0xE4), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
494 
495 #define NTSC_PURPLE_BLUE \
496 	rgb_t(0x1D,0x00,0x5C), rgb_t(0x2E,0x00,0x68), rgb_t(0x40,0x00,0x74), rgb_t(0x51,0x10,0x84), \
497 	rgb_t(0x62,0x21,0x95), rgb_t(0x73,0x32,0xA6), rgb_t(0x84,0x43,0xB7), rgb_t(0x95,0x54,0xC8), \
498 	rgb_t(0xA6,0x65,0xD9), rgb_t(0xB7,0x76,0xEA), rgb_t(0xC8,0x87,0xEB), rgb_t(0xD9,0x98,0xEB), \
499 	rgb_t(0xE9,0xA9,0xEC), rgb_t(0xFB,0xBA,0xEB), rgb_t(0xFF,0xCB,0xEF), rgb_t(0xFF,0xDC,0xF4   )
500 
501 #define NTSC_BLUE1 \
502 	rgb_t(0x02,0x00,0x71), rgb_t(0x13,0x00,0x7D), rgb_t(0x24,0x0B,0x8C), rgb_t(0x35,0x1C,0x9D), \
503 	rgb_t(0x46,0x2D,0xAE), rgb_t(0x57,0x3E,0xBF), rgb_t(0x68,0x4F,0xD0), rgb_t(0x79,0x60,0xE1), \
504 	rgb_t(0x8A,0x71,0xF2), rgb_t(0x9B,0x82,0xF7), rgb_t(0xAC,0x93,0xF7), rgb_t(0xBD,0xA4,0xF7), \
505 	rgb_t(0xCE,0xB5,0xF7), rgb_t(0xDF,0xC6,0xF7), rgb_t(0xF0,0xD7,0xF7), rgb_t(0xFF,0xE8,0xF8   )
506 
507 #define NTSC_BLUE2 \
508 	rgb_t(0x00,0x00,0x68), rgb_t(0x00,0x0A,0x7C), rgb_t(0x08,0x1B,0x90), rgb_t(0x19,0x2C,0xA1), \
509 	rgb_t(0x2A,0x3D,0xB2), rgb_t(0x3B,0x4E,0xC3), rgb_t(0x4C,0x5F,0xD4), rgb_t(0x5D,0x70,0xE5), \
510 	rgb_t(0x6E,0x81,0xF6), rgb_t(0x7F,0x92,0xFF), rgb_t(0x90,0xA3,0xFF), rgb_t(0xA1,0xB4,0xFF), \
511 	rgb_t(0xB2,0xC5,0xFF), rgb_t(0xC3,0xD6,0xFF), rgb_t(0xD4,0xE7,0xFF), rgb_t(0xE5,0xF8,0xFF   )
512 
513 #define NTSC_LIGHT_BLUE \
514 	rgb_t(0x00,0x0A,0x4D), rgb_t(0x00,0x1B,0x63), rgb_t(0x00,0x2C,0x79), rgb_t(0x02,0x3D,0x8F), \
515 	rgb_t(0x13,0x4E,0xA0), rgb_t(0x24,0x5F,0xB1), rgb_t(0x35,0x70,0xC2), rgb_t(0x46,0x81,0xD3), \
516 	rgb_t(0x57,0x92,0xE4), rgb_t(0x68,0xA3,0xF5), rgb_t(0x79,0xB4,0xFF), rgb_t(0x8A,0xC5,0xFF), \
517 	rgb_t(0x9B,0xD6,0xFF), rgb_t(0xAC,0xE7,0xFF), rgb_t(0xBD,0xF8,0xFF), rgb_t(0xCE,0xFF,0xFF   )
518 
519 #define NTSC_TURQUOISE \
520 	rgb_t(0x00,0x1A,0x26), rgb_t(0x00,0x2B,0x3C), rgb_t(0x00,0x3C,0x52), rgb_t(0x00,0x4D,0x68), \
521 	rgb_t(0x06,0x5E,0x7C), rgb_t(0x17,0x6F,0x8D), rgb_t(0x28,0x80,0x9E), rgb_t(0x39,0x91,0xAF), \
522 	rgb_t(0x4A,0xA2,0xC0), rgb_t(0x5B,0xB3,0xD1), rgb_t(0x6C,0xC4,0xE2), rgb_t(0x7D,0xD5,0xF3), \
523 	rgb_t(0x8E,0xE6,0xFF), rgb_t(0x9F,0xF7,0xFF), rgb_t(0xB0,0xFF,0xFF), rgb_t(0xC1,0xFF,0xFF   )
524 
525 #define NTSC_GREEN_BLUE \
526 	rgb_t(0x00,0x24,0x0B), rgb_t(0x00,0x35,0x10), rgb_t(0x00,0x46,0x22), rgb_t(0x00,0x57,0x38), \
527 	rgb_t(0x05,0x68,0x4D), rgb_t(0x16,0x79,0x5E), rgb_t(0x27,0x8A,0x6F), rgb_t(0x38,0x9B,0x80), \
528 	rgb_t(0x49,0xAC,0x91), rgb_t(0x5A,0xBD,0xA2), rgb_t(0x6B,0xCE,0xB3), rgb_t(0x7C,0xDF,0xC4), \
529 	rgb_t(0x8D,0xF0,0xD5), rgb_t(0x9E,0xFF,0xE5), rgb_t(0xAF,0xFF,0xF1), rgb_t(0xC0,0xFF,0xFD   )
530 
531 #define NTSC_GREEN \
532 	rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1B), \
533 	rgb_t(0x10,0x6B,0x1B), rgb_t(0x21,0x7C,0x2C), rgb_t(0x32,0x8D,0x3D), rgb_t(0x43,0x9E,0x4E), \
534 	rgb_t(0x54,0xAF,0x5F), rgb_t(0x65,0xC0,0x70), rgb_t(0x76,0xD1,0x81), rgb_t(0x87,0xE2,0x92), \
535 	rgb_t(0x98,0xF3,0xA3), rgb_t(0xA9,0xFF,0xB3), rgb_t(0xBA,0xFF,0xBF), rgb_t(0xCB,0xFF,0xCB   )
536 
537 #define NTSC_YELLOW_GREEN \
538 	rgb_t(0x00,0x23,0x0A), rgb_t(0x00,0x34,0x10), rgb_t(0x04,0x45,0x13), rgb_t(0x15,0x56,0x13), \
539 	rgb_t(0x26,0x67,0x13), rgb_t(0x37,0x78,0x13), rgb_t(0x48,0x89,0x14), rgb_t(0x59,0x9A,0x25), \
540 	rgb_t(0x6A,0xAB,0x36), rgb_t(0x7B,0xBC,0x47), rgb_t(0x8C,0xCD,0x58), rgb_t(0x9D,0xDE,0x69), \
541 	rgb_t(0xAE,0xEF,0x7A), rgb_t(0xBF,0xFF,0x8B), rgb_t(0xD0,0xFF,0x97), rgb_t(0xE1,0xFF,0xA3   )
542 
543 #define NTSC_ORANGE_GREEN \
544 	rgb_t(0x00,0x17,0x07), rgb_t(0x0E,0x28,0x08), rgb_t(0x1F,0x39,0x08), rgb_t(0x30,0x4A,0x08), \
545 	rgb_t(0x41,0x5B,0x08), rgb_t(0x52,0x6C,0x08), rgb_t(0x63,0x7D,0x08), rgb_t(0x74,0x8E,0x0D), \
546 	rgb_t(0x85,0x9F,0x1E), rgb_t(0x96,0xB0,0x2F), rgb_t(0xA7,0xC1,0x40), rgb_t(0xB8,0xD2,0x51), \
547 	rgb_t(0xC9,0xE3,0x62), rgb_t(0xDA,0xF4,0x73), rgb_t(0xEB,0xFF,0x82), rgb_t(0xFC,0xFF,0x8E   )
548 
549 #define NTSC_LIGHT_ORANGE \
550 	rgb_t(0x19,0x07,0x00), rgb_t(0x2A,0x18,0x00), rgb_t(0x3B,0x29,0x00), rgb_t(0x4C,0x3A,0x00), \
551 	rgb_t(0x5D,0x4B,0x00), rgb_t(0x6E,0x5C,0x00), rgb_t(0x7F,0x6D,0x00), rgb_t(0x90,0x7E,0x09), \
552 	rgb_t(0xA1,0x8F,0x1A), rgb_t(0xB2,0xA0,0x2B), rgb_t(0xC3,0xB1,0x3C), rgb_t(0xD4,0xC2,0x4D), \
553 	rgb_t(0xE5,0xD3,0x5E), rgb_t(0xF6,0xE4,0x6F), rgb_t(0xFF,0xF5,0x82), rgb_t(0xFF,0xFF,0x96   )
554 
555 static constexpr rgb_t a7800_colors[256] =
556 {
557 	NTSC_GREY,
558 	NTSC_GOLD,
559 	NTSC_ORANGE,
560 	NTSC_RED_ORANGE,
561 	NTSC_PINK,
562 	NTSC_PURPLE,
563 	NTSC_PURPLE_BLUE,
564 	NTSC_BLUE1,
565 	NTSC_BLUE2,
566 	NTSC_LIGHT_BLUE,
567 	NTSC_TURQUOISE,
568 	NTSC_GREEN_BLUE,
569 	NTSC_GREEN,
570 	NTSC_YELLOW_GREEN,
571 	NTSC_ORANGE_GREEN,
572 	NTSC_LIGHT_ORANGE
573 };
574 
575 static constexpr rgb_t a7800p_colors[256] =
576 {
577 	NTSC_GREY,
578 	NTSC_ORANGE_GREEN,
579 	NTSC_GOLD,
580 	NTSC_ORANGE,
581 	NTSC_RED_ORANGE,
582 	NTSC_PINK,
583 	NTSC_PURPLE,
584 	NTSC_PURPLE_BLUE,
585 	NTSC_BLUE1,
586 	NTSC_BLUE2,
587 	NTSC_LIGHT_BLUE,
588 	NTSC_TURQUOISE,
589 	NTSC_GREEN_BLUE,
590 	NTSC_GREEN,
591 	NTSC_YELLOW_GREEN,
592 	NTSC_ORANGE_GREEN
593 };
594 
595 /***************************************************************************
596     PALETTE - 24.7 PHASE SHIFT
597 
598 
599 define NTSC_GREY
600     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
601     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
602     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
603     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
604 
605 define NTSC_GOLD
606     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
607     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
608     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
609     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
610 
611 define NTSC_ORANGE
612     rgb_t(0x30,0x00,0x00), rgb_t(0x41,0x07,0x00), rgb_t(0x52,0x18,0x00), rgb_t(0x63,0x29,0x00), \
613     rgb_t(0x74,0x3A,0x00), rgb_t(0x85,0x4B,0x00), rgb_t(0x96,0x5C,0x0A), rgb_t(0xA7,0x6D,0x1B), \
614     rgb_t(0xB8,0x7E,0x2C), rgb_t(0xC9,0x8F,0x3D), rgb_t(0xDA,0xA0,0x4E), rgb_t(0xEB,0xB1,0x5F), \
615     rgb_t(0xFC,0xC2,0x70), rgb_t(0xFF,0xD3,0x85), rgb_t(0xFF,0xE4,0x9B), rgb_t(0xFF,0xF5,0xB1   )
616 
617 define NTSC_RED_ORANGE
618     rgb_t(0x3D,0x00,0x00), rgb_t(0x4E,0x00,0x00), rgb_t(0x5F,0x09,0x00), rgb_t(0x70,0x1A,0x00), \
619     rgb_t(0x81,0x2B,0x09), rgb_t(0x92,0x3C,0x1A), rgb_t(0xA3,0x4D,0x2B), rgb_t(0xB4,0x5E,0x3C), \
620     rgb_t(0xC5,0x6F,0x4D), rgb_t(0xD6,0x80,0x5E), rgb_t(0xE7,0x91,0x6F), rgb_t(0xF8,0xA2,0x80), \
621     rgb_t(0xFF,0xB3,0x94), rgb_t(0xFF,0xC4,0xAA), rgb_t(0xFF,0xD5,0xC0), rgb_t(0xFF,0xE6,0xD6   )
622 
623 define NTSC_PINK
624     rgb_t(0x3F,0x00,0x00), rgb_t(0x50,0x00,0x09), rgb_t(0x61,0x00,0x15), rgb_t(0x72,0x10,0x26), \
625     rgb_t(0x83,0x21,0x37), rgb_t(0x94,0x32,0x48), rgb_t(0xA5,0x43,0x59), rgb_t(0xB6,0x54,0x6A), \
626     rgb_t(0xC7,0x65,0x7B), rgb_t(0xD8,0x76,0x8C), rgb_t(0xE9,0x87,0x9D), rgb_t(0xFA,0x98,0xAE), \
627     rgb_t(0xFF,0xA9,0xC2), rgb_t(0xFF,0xBA,0xD8), rgb_t(0xFF,0xCB,0xEE), rgb_t(0xFF,0xDC,0xF4   )
628 
629 define NTSC_PURPLE
630     rgb_t(0x36,0x00,0x2E), rgb_t(0x47,0x00,0x3A), rgb_t(0x58,0x00,0x46), rgb_t(0x69,0x0C,0x55), \
631     rgb_t(0x7A,0x1D,0x66), rgb_t(0x8B,0x2E,0x77), rgb_t(0x9C,0x3F,0x88), rgb_t(0xAD,0x50,0x99), \
632     rgb_t(0xBE,0x61,0xAA), rgb_t(0xCF,0x72,0xBB), rgb_t(0xE0,0x83,0xCC), rgb_t(0xF1,0x94,0xDD), \
633     rgb_t(0xFF,0xA5,0xE4), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
634 
635 define NTSC_PURPLE_BLUE
636     rgb_t(0x23,0x00,0x55), rgb_t(0x34,0x00,0x61), rgb_t(0x45,0x00,0x6D), rgb_t(0x56,0x0F,0x7E), \
637     rgb_t(0x67,0x20,0x8F), rgb_t(0x78,0x31,0xA0), rgb_t(0x89,0x42,0xB1), rgb_t(0x9A,0x53,0xC2), \
638     rgb_t(0xAB,0x64,0xD3), rgb_t(0xBC,0x75,0xE4), rgb_t(0xCD,0x86,0xEA), rgb_t(0xDE,0x97,0xEA), \
639     rgb_t(0xEF,0xA8,0xEA), rgb_t(0xFF,0xB9,0xEA), rgb_t(0xFF,0xCA,0xEF), rgb_t(0xFF,0xDB,0xF4   )
640 
641 define NTSC_BLUE1
642     rgb_t(0x09,0x00,0x6E), rgb_t(0x1A,0x00,0x7A), rgb_t(0x2B,0x08,0x88), rgb_t(0x3C,0x19,0x99), \
643     rgb_t(0x4D,0x2A,0xAA), rgb_t(0x5E,0x3B,0xBB), rgb_t(0x6F,0x4C,0xCC), rgb_t(0x80,0x5D,0xDD), \
644     rgb_t(0x91,0x6E,0xEE), rgb_t(0xA2,0x7F,0xF4), rgb_t(0xB3,0x90,0xF4), rgb_t(0xC4,0xA1,0xF4), \
645     rgb_t(0xD5,0xB2,0xF4), rgb_t(0xE6,0xC3,0xF4), rgb_t(0xF7,0xD4,0xF4), rgb_t(0xFF,0xE5,0xF7   )
646 
647 define NTSC_BLUE2
648     rgb_t(0x00,0x00,0x6D), rgb_t(0x00,0x05,0x80), rgb_t(0x10,0x16,0x91), rgb_t(0x21,0x27,0xA2), \
649     rgb_t(0x32,0x38,0xB3), rgb_t(0x43,0x49,0xC4), rgb_t(0x54,0x5A,0xD5), rgb_t(0x65,0x6B,0xE6), \
650     rgb_t(0x76,0x7C,0xF7), rgb_t(0x87,0x8D,0xFF), rgb_t(0x98,0x9E,0xFF), rgb_t(0xA9,0xAF,0xFF), \
651     rgb_t(0xBA,0xC0,0xFF), rgb_t(0xCB,0xD1,0xFF), rgb_t(0xDC,0xE2,0xFF), rgb_t(0xED,0xF3,0xFF   )
652 
653 define NTSC_LIGHT_BLUE
654     rgb_t(0x00,0x05,0x57), rgb_t(0x00,0x16,0x6E), rgb_t(0x00,0x27,0x84), rgb_t(0x09,0x38,0x97), \
655     rgb_t(0x1A,0x49,0xA8), rgb_t(0x2B,0x5A,0xB9), rgb_t(0x3C,0x6B,0xCA), rgb_t(0x4D,0x7C,0xDB), \
656     rgb_t(0x5E,0x8D,0xEC), rgb_t(0x6F,0x9E,0xFD), rgb_t(0x80,0xAF,0xFF), rgb_t(0x91,0xC0,0xFF), \
657     rgb_t(0xA2,0xD1,0xFF), rgb_t(0xB3,0xE2,0xFF), rgb_t(0xC4,0xF3,0xFF), rgb_t(0xD5,0xFF,0xFF   )
658 
659 define NTSC_TURQUOISE
660     rgb_t(0x00,0x15,0x34), rgb_t(0x00,0x26,0x4A), rgb_t(0x00,0x37,0x60), rgb_t(0x00,0x48,0x77), \
661     rgb_t(0x0A,0x59,0x8A), rgb_t(0x1B,0x6A,0x9B), rgb_t(0x2C,0x7B,0xAC), rgb_t(0x3D,0x8C,0xBD), \
662     rgb_t(0x4E,0x9D,0xCE), rgb_t(0x5F,0xAE,0xDF), rgb_t(0x70,0xBF,0xF0), rgb_t(0x81,0xD0,0xFF), \
663     rgb_t(0x92,0xE1,0xFF), rgb_t(0xA3,0xF2,0xFF), rgb_t(0xB4,0xFF,0xFF), rgb_t(0xC5,0xFF,0xFF   )
664 
665 define NTSC_GREEN_BLUE
666     rgb_t(0x00,0x21,0x0A), rgb_t(0x00,0x32,0x1F), rgb_t(0x00,0x43,0x35), rgb_t(0x00,0x54,0x4B), \
667     rgb_t(0x04,0x65,0x60), rgb_t(0x15,0x76,0x71), rgb_t(0x26,0x87,0x82), rgb_t(0x37,0x98,0x93), \
668     rgb_t(0x48,0xA9,0xA4), rgb_t(0x59,0xBA,0xB5), rgb_t(0x6A,0xCB,0xC6), rgb_t(0x7B,0xDC,0xD7), \
669     rgb_t(0x8C,0xED,0xE8), rgb_t(0x9D,0xFE,0xF9), rgb_t(0xAE,0xFF,0xFF), rgb_t(0xBF,0xFF,0xFF   )
670 
671 define NTSC_GREEN
672     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1D), \
673     rgb_t(0x0A,0x6B,0x30), rgb_t(0x1B,0x7C,0x41), rgb_t(0x2C,0x8D,0x52), rgb_t(0x3D,0x9E,0x63), \
674     rgb_t(0x4E,0xAF,0x74), rgb_t(0x5F,0xC0,0x85), rgb_t(0x70,0xD1,0x96), rgb_t(0x81,0xE2,0xA7), \
675     rgb_t(0x92,0xF3,0xB8), rgb_t(0xA3,0xFF,0xC8), rgb_t(0xB4,0xFF,0xD3), rgb_t(0xC5,0xFF,0xDF   )
676 
677 define NTSC_YELLOW_GREEN
678     rgb_t(0x00,0x26,0x0B), rgb_t(0x00,0x37,0x10), rgb_t(0x00,0x48,0x16), rgb_t(0x0A,0x59,0x18), \
679     rgb_t(0x1B,0x6A,0x18), rgb_t(0x2C,0x7B,0x18), rgb_t(0x3D,0x8C,0x27), rgb_t(0x4E,0x9D,0x38), \
680     rgb_t(0x5F,0xAE,0x49), rgb_t(0x70,0xBF,0x5A), rgb_t(0x81,0xD0,0x6B), rgb_t(0x92,0xE1,0x7C), \
681     rgb_t(0xA3,0xF2,0x8D), rgb_t(0xB4,0xFF,0x9C), rgb_t(0xC5,0xFF,0xA8), rgb_t(0xD6,0xFF,0xB4   )
682 
683 define NTSC_ORANGE_GREEN
684     rgb_t(0x00,0x1E,0x09), rgb_t(0x00,0x2F,0x0E), rgb_t(0x11,0x40,0x0E), rgb_t(0x22,0x51,0x0E), \
685     rgb_t(0x33,0x62,0x0E), rgb_t(0x44,0x73,0x0E), rgb_t(0x55,0x84,0x0E), rgb_t(0x66,0x95,0x17), \
686     rgb_t(0x77,0xA6,0x28), rgb_t(0x88,0xB7,0x39), rgb_t(0x99,0xC8,0x4A), rgb_t(0xAA,0xD9,0x5B), \
687     rgb_t(0xBB,0xEA,0x6C), rgb_t(0xCC,0xFB,0x7D), rgb_t(0xDD,0xFF,0x8A), rgb_t(0xEE,0xFF,0x96   )
688 
689 define NTSC_LIGHT_ORANGE
690     rgb_t(0x0A,0x11,0x02), rgb_t(0x1B,0x22,0x02), rgb_t(0x2C,0x33,0x02), rgb_t(0x3D,0x44,0x02), \
691     rgb_t(0x4E,0x55,0x02), rgb_t(0x5F,0x66,0x02), rgb_t(0x70,0x77,0x02), rgb_t(0x81,0x88,0x09), \
692     rgb_t(0x92,0x99,0x1A), rgb_t(0xA3,0xAA,0x2B), rgb_t(0xB4,0xBB,0x3C), rgb_t(0xC5,0xCC,0x4D), \
693     rgb_t(0xD6,0xDD,0x5E), rgb_t(0xE7,0xEE,0x6F), rgb_t(0xF8,0xFF,0x80), rgb_t(0xFF,0xFF,0x8F   )
694 ***************************************************************************/
695 
696 
697 /***************************************************************************
698     PALETTE - 25.2 PHASE SHIFT
699 
700 
701 define NTSC_GREY
702     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
703     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
704     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
705     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
706 
707 define NTSC_GOLD
708     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
709     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
710     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
711     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
712 
713 define NTSC_ORANGE
714     rgb_t(0x30,0x00,0x00), rgb_t(0x41,0x07,0x00), rgb_t(0x52,0x18,0x00), rgb_t(0x63,0x29,0x00), \
715     rgb_t(0x74,0x3A,0x00), rgb_t(0x85,0x4B,0x00), rgb_t(0x96,0x5C,0x0A), rgb_t(0xA7,0x6D,0x1B), \
716     rgb_t(0xB8,0x7E,0x2C), rgb_t(0xC9,0x8F,0x3D), rgb_t(0xDA,0xA0,0x4E), rgb_t(0xEB,0xB1,0x5F), \
717     rgb_t(0xFC,0xC2,0x70), rgb_t(0xFF,0xD3,0x85), rgb_t(0xFF,0xE4,0x9B), rgb_t(0xFF,0xF5,0xB1   )
718 
719 define NTSC_RED_ORANGE
720     rgb_t(0x3E,0x00,0x00), rgb_t(0x4F,0x00,0x00), rgb_t(0x60,0x09,0x00), rgb_t(0x71,0x1A,0x00), \
721     rgb_t(0x82,0x2B,0x0B), rgb_t(0x93,0x3C,0x1C), rgb_t(0xA4,0x4D,0x2D), rgb_t(0xB5,0x5E,0x3E), \
722     rgb_t(0xC6,0x6F,0x4F), rgb_t(0xD7,0x80,0x60), rgb_t(0xE8,0x91,0x71), rgb_t(0xF9,0xA2,0x82), \
723     rgb_t(0xFF,0xB3,0x96), rgb_t(0xFF,0xC4,0xAC), rgb_t(0xFF,0xD5,0xC2), rgb_t(0xFF,0xE6,0xD8   )
724 
725 define NTSC_PINK
726     rgb_t(0x3F,0x00,0x00), rgb_t(0x50,0x00,0x0C), rgb_t(0x61,0x00,0x18), rgb_t(0x72,0x0F,0x28), \
727     rgb_t(0x83,0x20,0x39), rgb_t(0x94,0x31,0x4A), rgb_t(0xA5,0x42,0x5B), rgb_t(0xB6,0x53,0x6C), \
728     rgb_t(0xC7,0x64,0x7D), rgb_t(0xD8,0x75,0x8E), rgb_t(0xE9,0x86,0x9F), rgb_t(0xFA,0x97,0xB0), \
729     rgb_t(0xFF,0xA8,0xC5), rgb_t(0xFF,0xB9,0xDB), rgb_t(0xFF,0xCA,0xEF), rgb_t(0xFF,0xDB,0xF4   )
730 
731 define NTSC_PURPLE
732     rgb_t(0x35,0x00,0x31), rgb_t(0x46,0x00,0x3D), rgb_t(0x57,0x00,0x49), rgb_t(0x68,0x0C,0x58), \
733     rgb_t(0x79,0x1D,0x69), rgb_t(0x8A,0x2E,0x7A), rgb_t(0x9B,0x3F,0x8B), rgb_t(0xAC,0x50,0x9C), \
734     rgb_t(0xBD,0x61,0xAD), rgb_t(0xCE,0x72,0xBE), rgb_t(0xDF,0x83,0xCF), rgb_t(0xF0,0x94,0xE0), \
735     rgb_t(0xFF,0xA5,0xE4), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
736 
737 define NTSC_PURPLE_BLUE
738     rgb_t(0x20,0x00,0x59), rgb_t(0x31,0x00,0x65), rgb_t(0x42,0x00,0x71), rgb_t(0x53,0x10,0x82), \
739     rgb_t(0x64,0x21,0x93), rgb_t(0x75,0x32,0xA4), rgb_t(0x86,0x43,0xB5), rgb_t(0x97,0x54,0xC6), \
740     rgb_t(0xA8,0x65,0xD7), rgb_t(0xB9,0x76,0xE8), rgb_t(0xCA,0x87,0xEB), rgb_t(0xDB,0x98,0xEB), \
741     rgb_t(0xEC,0xA9,0xEB), rgb_t(0xFD,0xBA,0xEB), rgb_t(0xFF,0xCB,0xEF), rgb_t(0xFF,0xDC,0xF4   )
742 
743 define NTSC_BLUE1
744     rgb_t(0x05,0x00,0x70), rgb_t(0x16,0x00,0x7C), rgb_t(0x27,0x09,0x8B), rgb_t(0x38,0x1A,0x9C), \
745     rgb_t(0x49,0x2B,0xAD), rgb_t(0x5A,0x3C,0xBE), rgb_t(0x6B,0x4D,0xCF), rgb_t(0x7C,0x5E,0xE0), \
746     rgb_t(0X8D,0x6F,0xF1), rgb_t(0x9E,0x80,0xF6), rgb_t(0xAF,0x91,0xF6), rgb_t(0xC0,0xA2,0xF6), \
747     rgb_t(0xD1,0xB3,0xF6), rgb_t(0xE2,0xC4,0xF6), rgb_t(0xF3,0xD5,0xF6), rgb_t(0xFF,0xE6,0xF7   )
748 
749 define NTSC_BLUE2
750     rgb_t(0x00,0x00,0x6B), rgb_t(0x00,0x08,0x7E), rgb_t(0x0C,0x19,0x91), rgb_t(0x1D,0x2A,0xA2), \
751     rgb_t(0x2E,0x3B,0xB3), rgb_t(0x3F,0x4C,0xC4), rgb_t(0x50,0x5D,0xD5), rgb_t(0x61,0x6E,0xE6), \
752     rgb_t(0x72,0x7F,0xF7), rgb_t(0x83,0x90,0xFF), rgb_t(0x94,0xA1,0xFF), rgb_t(0xA5,0xB2,0xFF), \
753     rgb_t(0xB6,0xC3,0xFF), rgb_t(0xC7,0xD4,0xFF), rgb_t(0xD8,0xE5,0xFF), rgb_t(0xE9,0xF6,0xFF   )
754 
755 define NTSC_LIGHT_BLUE
756     rgb_t(0x00,0x08,0x52), rgb_t(0x00,0x19,0x68), rgb_t(0x00,0x2A,0x7F), rgb_t(0x05,0x3B,0x93), \
757     rgb_t(0x16,0x4C,0xA4), rgb_t(0x27,0x5D,0xB5), rgb_t(0x38,0x6E,0xC6), rgb_t(0x49,0x7F,0xD7), \
758     rgb_t(0x5A,0x90,0xE8), rgb_t(0x6B,0xA1,0xF9), rgb_t(0x7C,0xB2,0xFF), rgb_t(0x8D,0xC3,0xFF), \
759     rgb_t(0x9E,0xD4,0xFF), rgb_t(0xAF,0xE5,0xFF), rgb_t(0xC0,0xF6,0xFF), rgb_t(0xD1,0xFF,0xFF   )
760 
761 define NTSC_TURQUOISE
762     rgb_t(0x00,0x17,0x2D), rgb_t(0x00,0x28,0x43), rgb_t(0x00,0x39,0x59), rgb_t(0x00,0x4A,0x6F), \
763     rgb_t(0x08,0x5B,0x83), rgb_t(0x19,0x6C,0x94), rgb_t(0x2A,0x7D,0xA5), rgb_t(0x3B,0x8E,0xB6), \
764     rgb_t(0x4C,0x9F,0xC7), rgb_t(0x5D,0xB0,0xD8), rgb_t(0x6E,0xC1,0xE9), rgb_t(0x7F,0xD2,0xFA), \
765     rgb_t(0x90,0xE3,0xFF), rgb_t(0xA1,0xF4,0xFF), rgb_t(0xB2,0xFF,0xFF), rgb_t(0xC3,0xFF,0xFF   )
766 
767 define NTSC_GREEN_BLUE
768     rgb_t(0x00,0x23,0x0A), rgb_t(0x00,0x34,0x15), rgb_t(0x00,0x45,0x2B), rgb_t(0x00,0x56,0x41), \
769     rgb_t(0x04,0x67,0x56), rgb_t(0x15,0x78,0x67), rgb_t(0x26,0x89,0x78), rgb_t(0x37,0x9A,0x89), \
770     rgb_t(0x48,0xAB,0x9A), rgb_t(0x59,0xBC,0xAB), rgb_t(0x6A,0xCD,0xBC), rgb_t(0x7B,0xDE,0xCD), \
771     rgb_t(0x8C,0xEF,0xDE), rgb_t(0x9D,0xFF,0xEE), rgb_t(0xAE,0xFF,0xFA), rgb_t(0xBF,0xFF,0xFF   )
772 
773 define NTSC_GREEN
774     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1B), \
775     rgb_t(0x0D,0x6B,0x25), rgb_t(0x1E,0x7C,0x36), rgb_t(0x2F,0x8D,0x47), rgb_t(0x40,0x9E,0x58), \
776     rgb_t(0x51,0xAF,0x69), rgb_t(0x62,0xC0,0x7A), rgb_t(0x73,0xD1,0x8B), rgb_t(0x84,0xE2,0x9C), \
777     rgb_t(0x95,0xF3,0xAD), rgb_t(0xA6,0xFF,0xBD), rgb_t(0xB7,0xFF,0xC9), rgb_t(0xC8,0xFF,0xD4   )
778 
779 define NTSC_YELLOW_GREEN
780     rgb_t(0x00,0x24,0x0B), rgb_t(0x00,0x35,0x10), rgb_t(0x00,0x46,0x15), rgb_t(0x10,0x57,0x15), \
781     rgb_t(0x21,0x68,0x15), rgb_t(0x32,0x79,0x15), rgb_t(0x43,0x8A,0x1C), rgb_t(0x54,0x9B,0x2D), \
782     rgb_t(0x65,0xAC,0x3E), rgb_t(0x76,0xBD,0x4F), rgb_t(0x87,0xCE,0x60), rgb_t(0x98,0xDF,0x71), \
783     rgb_t(0xA9,0xF0,0x82), rgb_t(0xBA,0xFF,0x93), rgb_t(0xCB,0xFF,0x9F), rgb_t(0xDC,0xFF,0xAA   )
784 
785 define NTSC_ORANGE_GREEN
786     rgb_t(0x00,0x1B,0x08), rgb_t(0x08,0x2C,0x0B), rgb_t(0x19,0x3D,0x0B), rgb_t(0x2A,0x4E,0x0B), \
787     rgb_t(0x3B,0x5F,0x0B), rgb_t(0x4C,0x70,0x0B), rgb_t(0x5D,0x81,0x0B), rgb_t(0x6E,0x92,0x11), \
788     rgb_t(0x7F,0xA3,0x22), rgb_t(0x90,0xB4,0x33), rgb_t(0xA1,0xC5,0x44), rgb_t(0xB2,0xD6,0x55), \
789     rgb_t(0xC3,0xE7,0x66), rgb_t(0xD4,0xF8,0x77), rgb_t(0xE5,0xFF,0x85), rgb_t(0xF6,0xFF,0x91   )
790 
791 define NTSC_LIGHT_ORANGE
792     rgb_t(0x12,0x0C,0x00), rgb_t(0x23,0x1D,0x00), rgb_t(0x34,0x2E,0x00), rgb_t(0x45,0x3F,0x00), \
793     rgb_t(0x56,0x50,0x00), rgb_t(0x67,0x61,0x00), rgb_t(0x78,0x72,0x00), rgb_t(0x89,0x83,0x08), \
794     rgb_t(0x9A,0x94,0x19), rgb_t(0xAB,0xA5,0x2A), rgb_t(0xBC,0xB6,0x3B), rgb_t(0xCD,0xC7,0x4C), \
795     rgb_t(0xDE,0xD8,0x5D), rgb_t(0xEF,0xE9,0x6E), rgb_t(0xFF,0xFA,0x80), rgb_t(0xFF,0xFF,0x92   )
796 ***************************************************************************/
797 
798 
799 /***************************************************************************
800     PALETTE - 25.7 PHASE SHIFT
801 
802 
803 define NTSC_GREY
804     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
805     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
806     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
807     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
808 
809 define NTSC_GOLD
810     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
811     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
812     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
813     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
814 
815 define NTSC_ORANGE
816     rgb_t(0x31,0x00,0x00), rgb_t(0x42,0x06,0x00), rgb_t(0x53,0x17,0x00), rgb_t(0x64,0x28,0x00), \
817     rgb_t(0x75,0x39,0x00), rgb_t(0x86,0X4A,0x00), rgb_t(0x97,0x5B,0x0A), rgb_t(0xA8,0x6C,0x1B), \
818     rgb_t(0xB9,0x7D,0x2C), rgb_t(0xCA,0x8E,0x3D), rgb_t(0xDB,0x9F,0x4E), rgb_t(0xEC,0xB0,0x5F), \
819     rgb_t(0xFD,0xC1,0x70), rgb_t(0xFF,0xD2,0x85), rgb_t(0xFF,0xE3,0x9C), rgb_t(0xFF,0xF4,0xB2   )
820 
821 define NTSC_RED_ORANGE
822     rgb_t(0x3E,0x00,0x00), rgb_t(0x4F,0x00,0x00), rgb_t(0x60,0x08,0x00), rgb_t(0x71,0x19,0x00), \
823     rgb_t(0x82,0x2A,0x0D), rgb_t(0x93,0x3B,0x1E), rgb_t(0xA4,0x4C,0x2F), rgb_t(0xB5,0x5D,0x40), \
824     rgb_t(0xC6,0x6E,0x51), rgb_t(0xD7,0x7F,0x62), rgb_t(0xE8,0x90,0x73), rgb_t(0xF9,0xA1,0x83), \
825     rgb_t(0xFF,0xB2,0x98), rgb_t(0xFF,0xC3,0xAE), rgb_t(0xFF,0xD4,0xC4), rgb_t(0xFF,0xE5,0xDA   )
826 
827 define NTSC_PINK
828     rgb_t(0x3F,0x00,0x03), rgb_t(0x50,0x00,0x0F), rgb_t(0x61,0x00,0x1B), rgb_t(0x72,0x0F,0x2B), \
829     rgb_t(0x83,0x20,0x3C), rgb_t(0x94,0x31,0x4D), rgb_t(0xA5,0x42,0x5E), rgb_t(0xB6,0x53,0x6F), \
830     rgb_t(0xC7,0x64,0x80), rgb_t(0xD8,0x75,0x91), rgb_t(0xE9,0x86,0xA2), rgb_t(0xFA,0x97,0xB3), \
831     rgb_t(0xFF,0xA8,0xC8), rgb_t(0xFF,0xB9,0xDE), rgb_t(0xFF,0xCA,0xEF), rgb_t(0xFF,0xDB,0xF4   )
832 
833 define NTSC_PURPLE
834     rgb_t(0x33,0x00,0x35), rgb_t(0x44,0x00,0x41), rgb_t(0x55,0x00,0x4C), rgb_t(0x66,0x0C,0x5C), \
835     rgb_t(0x77,0x1D,0x6D), rgb_t(0x88,0x2E,0x7E), rgb_t(0x99,0x3F,0x8F), rgb_t(0xAA,0x50,0xA0), \
836     rgb_t(0xBB,0x61,0xB1), rgb_t(0xCC,0x72,0xC2), rgb_t(0xDD,0x83,0xD3), rgb_t(0xEE,0x94,0xE4), \
837     rgb_t(0xFF,0xA5,0xE4), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
838 
839 define NTSC_PURPLE_BLUE
840     rgb_t(0x1D,0x00,0x5C), rgb_t(0x2E,0x00,0x68), rgb_t(0x40,0x00,0x74), rgb_t(0x51,0x10,0x84), \
841     rgb_t(0x62,0x21,0x95), rgb_t(0x73,0x32,0xA6), rgb_t(0x84,0x43,0xB7), rgb_t(0x95,0x54,0xC8), \
842     rgb_t(0xA6,0x65,0xD9), rgb_t(0xB7,0x76,0xEA), rgb_t(0xC8,0x87,0xEB), rgb_t(0xD9,0x98,0xEB), \
843     rgb_t(0xE9,0xA9,0xEC), rgb_t(0xFB,0xBA,0xEB), rgb_t(0xFF,0xCB,0xEF), rgb_t(0xFF,0xDC,0xF4   )
844 
845 define NTSC_BLUE1
846     rgb_t(0x02,0x00,0x71), rgb_t(0x13,0x00,0x7D), rgb_t(0x24,0x0B,0x8C), rgb_t(0x35,0x1C,0x9D), \
847     rgb_t(0x46,0x2D,0xAE), rgb_t(0x57,0x3E,0xBF), rgb_t(0x68,0x4F,0xD0), rgb_t(0x79,0x60,0xE1), \
848     rgb_t(0x8A,0x71,0xF2), rgb_t(0x9B,0x82,0xF7), rgb_t(0xAC,0x93,0xF7), rgb_t(0xBD,0xA4,0xF7), \
849     rgb_t(0xCE,0xB5,0xF7), rgb_t(0xDF,0xC6,0xF7), rgb_t(0xF0,0xD7,0xF7), rgb_t(0xFF,0xE8,0xF8   )
850 
851 define NTSC_BLUE2
852     rgb_t(0x00,0x00,0x68), rgb_t(0x00,0x0A,0x7C), rgb_t(0x08,0x1B,0x90), rgb_t(0x19,0x2C,0xA1), \
853     rgb_t(0x2A,0x3D,0xB2), rgb_t(0x3B,0x4E,0xC3), rgb_t(0x4C,0x5F,0xD4), rgb_t(0x5D,0x70,0xE5), \
854     rgb_t(0x6E,0x81,0xF6), rgb_t(0x7F,0x92,0xFF), rgb_t(0x90,0xA3,0xFF), rgb_t(0xA1,0xB4,0xFF), \
855     rgb_t(0xB2,0xC5,0xFF), rgb_t(0xC3,0xD6,0xFF), rgb_t(0xD4,0xE7,0xFF), rgb_t(0xE5,0xF8,0xFF   )
856 
857 define NTSC_LIGHT_BLUE
858     rgb_t(0x00,0x0A,0x4D), rgb_t(0x00,0x1B,0x63), rgb_t(0x00,0x2C,0x79), rgb_t(0x02,0x3D,0x8F), \
859     rgb_t(0x13,0x4E,0xA0), rgb_t(0x24,0x5F,0xB1), rgb_t(0x35,0x70,0xC2), rgb_t(0x46,0x81,0xD3), \
860     rgb_t(0x57,0x92,0xE4), rgb_t(0x68,0xA3,0xF5), rgb_t(0x79,0xB4,0xFF), rgb_t(0x8A,0xC5,0xFF), \
861     rgb_t(0x9B,0xD6,0xFF), rgb_t(0xAC,0xE7,0xFF), rgb_t(0xBD,0xF8,0xFF), rgb_t(0xCE,0xFF,0xFF   )
862 
863 define NTSC_TURQUOISE
864     rgb_t(0x00,0x1A,0x26), rgb_t(0x00,0x2B,0x3C), rgb_t(0x00,0x3C,0x52), rgb_t(0x00,0x4D,0x68), \
865     rgb_t(0x06,0x5E,0x7C), rgb_t(0x17,0x6F,0x8D), rgb_t(0x28,0x80,0x9E), rgb_t(0x39,0x91,0xAF), \
866     rgb_t(0x4A,0xA2,0xC0), rgb_t(0x5B,0xB3,0xD1), rgb_t(0x6C,0xC4,0xE2), rgb_t(0x7D,0xD5,0xF3), \
867     rgb_t(0x8E,0xE6,0xFF), rgb_t(0x9F,0xF7,0xFF), rgb_t(0xB0,0xFF,0xFF), rgb_t(0xC1,0xFF,0xFF   )
868 
869 define NTSC_GREEN_BLUE
870     rgb_t(0x00,0x24,0x0B), rgb_t(0x00,0x35,0x10), rgb_t(0x00,0x46,0x22), rgb_t(0x00,0x57,0x38), \
871     rgb_t(0x05,0x68,0x4D), rgb_t(0x16,0x79,0x5E), rgb_t(0x27,0x8A,0x6F), rgb_t(0x38,0x9B,0x80), \
872     rgb_t(0x49,0xAC,0x91), rgb_t(0x5A,0xBD,0xA2), rgb_t(0x6B,0xCE,0xB3), rgb_t(0x7C,0xDF,0xC4), \
873     rgb_t(0x8D,0xF0,0xD5), rgb_t(0x9E,0xFF,0xE5), rgb_t(0xAF,0xFF,0xF1), rgb_t(0xC0,0xFF,0xFD   )
874 
875 define NTSC_GREEN
876     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1B), \
877     rgb_t(0x10,0x6B,0x1B), rgb_t(0x21,0x7C,0x2C), rgb_t(0x32,0x8D,0x3D), rgb_t(0x43,0x9E,0x4E), \
878     rgb_t(0x54,0xAF,0x5F), rgb_t(0x65,0xC0,0x70), rgb_t(0x76,0xD1,0x81), rgb_t(0x87,0xE2,0x92), \
879     rgb_t(0x98,0xF3,0xA3), rgb_t(0xA9,0xFF,0xB3), rgb_t(0xBA,0xFF,0xBF), rgb_t(0xCB,0xFF,0xCB   )
880 
881 define NTSC_YELLOW_GREEN
882     rgb_t(0x00,0x23,0x0A), rgb_t(0x00,0x34,0x10), rgb_t(0x04,0x45,0x13), rgb_t(0x15,0x56,0x13), \
883     rgb_t(0x26,0x67,0x13), rgb_t(0x37,0x78,0x13), rgb_t(0x48,0x89,0x14), rgb_t(0x59,0x9A,0x25), \
884     rgb_t(0x6A,0xAB,0x36), rgb_t(0x7B,0xBC,0x47), rgb_t(0x8C,0xCD,0x58), rgb_t(0x9D,0xDE,0x69), \
885     rgb_t(0xAE,0xEF,0x7A), rgb_t(0xBF,0xFF,0x8B), rgb_t(0xD0,0xFF,0x97), rgb_t(0xE1,0xFF,0xA3   )
886 
887 define NTSC_ORANGE_GREEN
888     rgb_t(0x00,0x17,0x07), rgb_t(0x0E,0x28,0x08), rgb_t(0x1F,0x39,0x08), rgb_t(0x30,0x4A,0x08), \
889     rgb_t(0x41,0x5B,0x08), rgb_t(0x52,0x6C,0x08), rgb_t(0x63,0x7D,0x08), rgb_t(0x74,0x8E,0x0D), \
890     rgb_t(0x85,0x9F,0x1E), rgb_t(0x96,0xB0,0x2F), rgb_t(0xA7,0xC1,0x40), rgb_t(0xB8,0xD2,0x51), \
891     rgb_t(0xC9,0xE3,0x62), rgb_t(0xDA,0xF4,0x73), rgb_t(0xEB,0xFF,0x82), rgb_t(0xFC,0xFF,0x8E   )
892 
893 define NTSC_LIGHT_ORANGE
894     rgb_t(0x19,0x07,0x00), rgb_t(0x2A,0x18,0x00), rgb_t(0x3B,0x29,0x00), rgb_t(0x4C,0x3A,0x00), \
895     rgb_t(0x5D,0x4B,0x00), rgb_t(0x6E,0x5C,0x00), rgb_t(0x7F,0x6D,0x00), rgb_t(0x90,0x7E,0x09), \
896     rgb_t(0xA1,0x8F,0x1A), rgb_t(0xB2,0xA0,0x2B), rgb_t(0xC3,0xB1,0x3C), rgb_t(0xD4,0xC2,0x4D), \
897     rgb_t(0xE5,0xD3,0x5E), rgb_t(0xF6,0xE4,0x6F), rgb_t(0xFF,0xF5,0x82), rgb_t(0xFF,0xFF,0x96   )
898 ***************************************************************************/
899 
900 
901 /***************************************************************************
902     PALETTE - 26.2 PHASE SHIFT
903 
904 
905 #define NTSC_GREY \
906     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
907     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
908     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
909     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
910 
911 #define NTSC_GOLD \
912     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
913     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
914     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
915     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
916 
917 #define NTSC_ORANGE \
918     rgb_t(0x31,0x00,0x00), rgb_t(0x42,0x06,0x00), rgb_t(0x53,0x17,0x00), rgb_t(0x64,0x28,0x00), \
919     rgb_t(0x75,0x39,0x00), rgb_t(0x86,0X4A,0x00), rgb_t(0x97,0x5B,0x0B), rgb_t(0xA8,0x6C,0x1C), \
920     rgb_t(0xB9,0x7D,0x2D), rgb_t(0xCA,0x8E,0x3E), rgb_t(0xDB,0x9F,0x4F), rgb_t(0xEC,0xB0,0x60), \
921     rgb_t(0xFD,0xC1,0x71), rgb_t(0xFF,0xD2,0x86), rgb_t(0xFF,0xE3,0x9D), rgb_t(0xFF,0xF4,0xB3   )
922 
923 #define NTSC_RED_ORANGE \
924     rgb_t(0x3E,0x00,0x00), rgb_t(0x4F,0x00,0x00), rgb_t(0x60,0x08,0x00), rgb_t(0x71,0x19,0x00), \
925     rgb_t(0x82,0x2A,0x0F), rgb_t(0x93,0x3B,0x20), rgb_t(0xA4,0x4C,0x31), rgb_t(0xB5,0x5D,0x42), \
926     rgb_t(0xC6,0x6E,0x53), rgb_t(0xD7,0x7F,0x64), rgb_t(0xE8,0x90,0x75), rgb_t(0xF9,0xA1,0x86), \
927     rgb_t(0xFF,0xB2,0x9A), rgb_t(0xFF,0xC3,0xB0), rgb_t(0xFF,0xD4,0xC6), rgb_t(0xFF,0xE5,0xDC   )
928 
929 #define NTSC_PINK \
930     rgb_t(0x3E,0x00,0x06), rgb_t(0x4F,0x00,0x12), rgb_t(0x60,0x00,0x1E), rgb_t(0x71,0x0E,0x2E), \
931     rgb_t(0x82,0x1F,0x3F), rgb_t(0x93,0x30,0x50), rgb_t(0xA4,0x41,0x61), rgb_t(0xB5,0x52,0x72), \
932     rgb_t(0xC6,0x63,0x83), rgb_t(0xD7,0x74,0x94), rgb_t(0xE8,0x85,0xA5), rgb_t(0xF9,0x96,0xB6), \
933     rgb_t(0xFF,0xA7,0xCB), rgb_t(0xFF,0xB8,0xE1), rgb_t(0xFF,0xC9,0xEF), rgb_t(0xFF,0xDA,0xF4   )
934 
935 #define NTSC_PURPLE \
936     rgb_t(0x32,0x00,0x38), rgb_t(0x43,0x00,0x44), rgb_t(0x54,0x00,0x50), rgb_t(0x65,0x0C,0x5F), \
937     rgb_t(0x76,0x1D,0x70), rgb_t(0x87,0x2E,0x81), rgb_t(0x98,0x3F,0x92), rgb_t(0xA9,0x50,0xA3), \
938     rgb_t(0xBA,0x61,0xB4), rgb_t(0xCB,0x72,0xC5), rgb_t(0xDC,0x83,0xD6), rgb_t(0xED,0x94,0xE4), \
939     rgb_t(0xFE,0xA5,0xE4), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
940 
941 #define NTSC_PURPLE_BLUE \
942     rgb_t(0x1B,0x00,0x5F), rgb_t(0x2C,0x00,0x6B), rgb_t(0x3D,0x00,0x77), rgb_t(0x4E,0x11,0x88), \
943     rgb_t(0x5F,0x22,0x99), rgb_t(0x70,0x33,0xAA), rgb_t(0x81,0x44,0xBB), rgb_t(0x92,0x55,0xCC), \
944     rgb_t(0xA3,0x66,0xDD), rgb_t(0xB4,0x77,0xED), rgb_t(0xC5,0x88,0xED), rgb_t(0xD6,0x99,0xED), \
945     rgb_t(0xE7,0xAA,0xED), rgb_t(0xF8,0xBB,0xED), rgb_t(0xFF,0xCC,0xF0), rgb_t(0xFF,0xDD,0xF5   )
946 
947 #define NTSC_BLUE1 \
948     rgb_t(0x00,0x00,0x72), rgb_t(0x10,0x00,0x7E), rgb_t(0x21,0x0D,0x8E), rgb_t(0x32,0x1E,0x9F), \
949     rgb_t(0x43,0x2F,0xB0), rgb_t(0x54,0x40,0xC1), rgb_t(0x65,0x51,0xD2), rgb_t(0x76,0x62,0xE3), \
950     rgb_t(0x87,0x73,0xF4), rgb_t(0x98,0x84,0xF9), rgb_t(0xA9,0x95,0xF9), rgb_t(0xBA,0xA6,0xF9), \
951     rgb_t(0xCB,0xB7,0xF9), rgb_t(0xDC,0xC8,0xF9), rgb_t(0xED,0xD9,0xF9), rgb_t(0xFE,0xEA,0xF9   )
952 
953 #define NTSC_BLUE2 \
954     rgb_t(0x00,0x00,0x65), rgb_t(0x00,0x0C,0x7A), rgb_t(0x05,0x1D,0x8E), rgb_t(0x16,0x2E,0x9F), \
955     rgb_t(0x27,0x3F,0xB0), rgb_t(0x38,0x50,0xC1), rgb_t(0x49,0x61,0xD2), rgb_t(0x5A,0x72,0xE3), \
956     rgb_t(0x6B,0x83,0xF4), rgb_t(0x7C,0x94,0xFF), rgb_t(0x8D,0xA5,0xFF), rgb_t(0x9E,0xB6,0xFF), \
957     rgb_t(0xAF,0xC7,0xFF), rgb_t(0xC0,0xD8,0xFF), rgb_t(0xD1,0xE9,0xFF), rgb_t(0xE2,0xFA,0xFF   )
958 
959 #define NTSC_LIGHT_BLUE \
960     rgb_t(0x00,0x0D,0x48), rgb_t(0x00,0x1E,0x5E), rgb_t(0x00,0x2F,0x74), rgb_t(0x00,0x40,0x8A), \
961     rgb_t(0x11,0x51,0x9B), rgb_t(0x22,0x62,0xAC), rgb_t(0x33,0x73,0xBD), rgb_t(0x44,0x84,0xCE), \
962     rgb_t(0x55,0x95,0xDF), rgb_t(0x66,0xA6,0xF0), rgb_t(0x77,0xB7,0xFF), rgb_t(0x88,0xC8,0xFF), \
963     rgb_t(0x99,0xD9,0xFF), rgb_t(0xAA,0xEA,0xFF), rgb_t(0xBB,0xFB,0xFF), rgb_t(0xCC,0xFF,0xFF   )
964 
965 #define NTSC_TURQUOISE \
966     rgb_t(0x00,0x1C,0x1C), rgb_t(0x00,0x2D,0x32), rgb_t(0x00,0x3E,0x49), rgb_t(0x00,0x4F,0x5F), \
967     rgb_t(0x05,0x60,0x73), rgb_t(0x16,0x71,0x84), rgb_t(0x27,0x82,0x95), rgb_t(0x38,0x93,0xA6), \
968     rgb_t(0x49,0xA4,0xB7), rgb_t(0x5A,0xB5,0xC8), rgb_t(0x6B,0xC6,0xD9), rgb_t(0x7C,0xD7,0xEA), \
969     rgb_t(0x8D,0xE8,0xFB), rgb_t(0x9E,0xF9,0xFF), rgb_t(0xAF,0xFF,0xFF), rgb_t(0xC0,0xFF,0xFF   )
970 
971 #define NTSC_GREEN_BLUE \
972     rgb_t(0x00,0x25,0x0B), rgb_t(0x00,0x36,0x10), rgb_t(0x00,0x47,0x18), rgb_t(0x00,0x58,0x2E), \
973     rgb_t(0x07,0x69,0x42), rgb_t(0x18,0x7A,0x53), rgb_t(0x29,0x8B,0x64), rgb_t(0x3A,0x9C,0x75), \
974     rgb_t(0x4B,0xAD,0x86), rgb_t(0x5C,0xBE,0x97), rgb_t(0x6D,0xCF,0xA8), rgb_t(0x7E,0xE0,0xB9), \
975     rgb_t(0x8F,0xF1,0xCA), rgb_t(0xA0,0xFF,0xDA), rgb_t(0xB1,0xFF,0xE6), rgb_t(0xC2,0xFF,0xF2   )
976 
977 #define NTSC_GREEN \
978     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x04,0x5A,0x1A), \
979     rgb_t(0x15,0x6B,0x1A), rgb_t(0x26,0x7C,0x22), rgb_t(0x37,0x8D,0x33), rgb_t(0x48,0x9E,0x44), \
980     rgb_t(0x59,0xAF,0x55), rgb_t(0x6A,0xC0,0x66), rgb_t(0x7B,0xD1,0x77), rgb_t(0x8C,0xE2,0x88), \
981     rgb_t(0x9D,0xF3,0x99), rgb_t(0xAE,0xFF,0xA8), rgb_t(0xBF,0xFF,0xB4), rgb_t(0xD0,0xFF,0xC0   )
982 
983 #define NTSC_YELLOW_GREEN \
984     rgb_t(0x00,0x21,0x0A), rgb_t(0x00,0x32,0x0F), rgb_t(0x0A,0x43,0x11), rgb_t(0x1B,0x54,0x11), \
985     rgb_t(0x2C,0x65,0x11), rgb_t(0x3D,0x76,0x11), rgb_t(0x4E,0x87,0x11), rgb_t(0x5F,0x98,0x1E), \
986     rgb_t(0x70,0xA9,0x2F), rgb_t(0x81,0xBA,0x40), rgb_t(0x92,0xCB,0x51), rgb_t(0xA3,0xDC,0x62), \
987     rgb_t(0xB4,0xED,0x73), rgb_t(0xC5,0xFE,0x84), rgb_t(0xD6,0xFF,0x90), rgb_t(0xE7,0xFF,0x9C   )
988 
989 #define NTSC_ORANGE_GREEN \
990     rgb_t(0x05,0x13,0x04), rgb_t(0x16,0x24,0x04), rgb_t(0x27,0x35,0x04), rgb_t(0x38,0x46,0x04), \
991     rgb_t(0x49,0x57,0x04), rgb_t(0x5A,0x68,0x04), rgb_t(0x6B,0x79,0x04), rgb_t(0x7C,0x8A,0x09), \
992     rgb_t(0x8D,0x9B,0x1A), rgb_t(0x9E,0xAC,0x2B), rgb_t(0xAF,0xBD,0x3C), rgb_t(0xC0,0xCE,0x4D), \
993     rgb_t(0xD1,0xDF,0x5E), rgb_t(0xE2,0xF0,0x6F), rgb_t(0xF3,0xFF,0x80), rgb_t(0xFF,0xFF,0x8D   )
994 
995 #define NTSC_LIGHT_ORANGE \
996     rgb_t(0x21,0x02,0x00), rgb_t(0x32,0x13,0x00), rgb_t(0x43,0x24,0x00), rgb_t(0x54,0x35,0x00), \
997     rgb_t(0x65,0x46,0x00), rgb_t(0x76,0x57,0x00), rgb_t(0x87,0x68,0x00), rgb_t(0x98,0x79,0x0C), \
998     rgb_t(0xA9,0x8A,0x1D), rgb_t(0xBA,0x9B,0x2E), rgb_t(0xCB,0xAC,0x3F), rgb_t(0xDC,0xBD,0x50), \
999     rgb_t(0xED,0xCE,0x61), rgb_t(0xFE,0xDF,0x72), rgb_t(0xFF,0xF0,0x87), rgb_t(0xFF,0xFF,0x9D   )
1000 ***************************************************************************/
1001 
1002 
1003 /***************************************************************************
1004     PALETTE - 26.7 PHASE SHIFT
1005 
1006 
1007 define NTSC_GREY
1008     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
1009     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
1010     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
1011     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
1012 
1013 define NTSC_GOLD
1014     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
1015     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
1016     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
1017     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xFF,0x97   )
1018 
1019 define NTSC_ORANGE
1020     rgb_t(0x32,0x00,0x00), rgb_t(0x43,0x06,0x00), rgb_t(0x54,0x17,0x00), rgb_t(0x65,0x28,0x00), \
1021     rgb_t(0x79,0x39,0x00), rgb_t(0x87,0x4A,0x00), rgb_t(0x98,0x5B,0x0C), rgb_t(0xA9,0x6C,0x1D), \
1022     rgb_t(0xBA,0x7D,0x2E), rgb_t(0xCB,0x8E,0x3F), rgb_t(0xDC,0x9F,0x50), rgb_t(0xED,0xB0,0x61), \
1023     rgb_t(0xFE,0xC1,0x72), rgb_t(0xFF,0xD2,0x87), rgb_t(0xFF,0xE3,0x9E), rgb_t(0xFF,0xF4,0xB4   )
1024 
1025 define NTSC_RED_ORANGE
1026     rgb_t(0x3E,0x00,0x00), rgb_t(0x4F,0x00,0x00), rgb_t(0x60,0x07,0x00), rgb_t(0x71,0x18,0x00), \
1027     rgb_t(0x82,0x29,0x10), rgb_t(0x93,0x3A,0x21), rgb_t(0xA4,0x4B,0x32), rgb_t(0xB5,0x5C,0x43), \
1028     rgb_t(0xC6,0x6D,0x54), rgb_t(0xD7,0x7E,0x65), rgb_t(0xE8,0x8F,0x76), rgb_t(0xF9,0xA0,0x87), \
1029     rgb_t(0xFF,0xB1,0x9C), rgb_t(0xFF,0xC2,0xB2), rgb_t(0xFF,0xD3,0xC8), rgb_t(0xFF,0xE4,0xDE   )
1030 
1031 define NTSC_PINK
1032     rgb_t(0x3E,0x00,0x09), rgb_t(0x4F,0x00,0x15), rgb_t(0x60,0x00,0x21), rgb_t(0x71,0x0E,0x31), \
1033     rgb_t(0x82,0x1F,0x42), rgb_t(0x93,0x30,0x53), rgb_t(0xA4,0x41,0x64), rgb_t(0xB5,0x52,0x75), \
1034     rgb_t(0xC6,0x63,0x86), rgb_t(0xD7,0x74,0x97), rgb_t(0xE8,0x85,0xA8), rgb_t(0xF9,0x96,0xB9), \
1035     rgb_t(0xFF,0xA7,0xCE), rgb_t(0xFF,0xB8,0xE4), rgb_t(0xFF,0xC9,0xEF), rgb_t(0xFF,0xDA,0xF4   )
1036 
1037 define NTSC_PURPLE
1038     rgb_t(0x30,0x00,0x3D), rgb_t(0x41,0x00,0x48), rgb_t(0x52,0x00,0x54), rgb_t(0x63,0x0C,0x64), \
1039     rgb_t(0x74,0x1D,0x75), rgb_t(0x85,0x2E,0x86), rgb_t(0x96,0x3F,0x97), rgb_t(0xA7,0x50,0xA8), \
1040     rgb_t(0xB8,0x61,0xB9), rgb_t(0xC9,0x72,0xCA), rgb_t(0xDA,0x83,0xDB), rgb_t(0xEB,0x94,0xE5), \
1041     rgb_t(0xFC,0xA5,0xE5), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
1042 
1043 define NTSC_PURPLE_BLUE
1044     rgb_t(0x18,0x00,0x62), rgb_t(0x29,0x00,0x6E), rgb_t(0x3A,0x01,0x7A), rgb_t(0x4B,0x12,0x8B), \
1045     rgb_t(0x5C,0x23,0x9C), rgb_t(0x6D,0x34,0xAD), rgb_t(0x7E,0x45,0xBE), rgb_t(0x8F,0x56,0xCF), \
1046     rgb_t(0xA0,0x67,0xE0), rgb_t(0xB1,0x78,0xEE), rgb_t(0xC2,0x89,0xEE), rgb_t(0xD3,0x9A,0xEE), \
1047     rgb_t(0xE4,0xAB,0xEE), rgb_t(0xF5,0xBC,0xEE), rgb_t(0xFF,0xCD,0xE0), rgb_t(0xFF,0xDE,0xF5   )
1048 
1049 define NTSC_BLUE1
1050     rgb_t(0x00,0x00,0x72), rgb_t(0x0C,0x00,0x7F), rgb_t(0x1D,0x0E,0x8F), rgb_t(0x2E,0x1F,0xA0), \
1051     rgb_t(0x3F,0x30,0xB1), rgb_t(0x50,0x41,0xC2), rgb_t(0x61,0x52,0xD3), rgb_t(0x72,0x63,0xE4), \
1052     rgb_t(0x83,0x74,0xF5), rgb_t(0x94,0x85,0xFA), rgb_t(0xA5,0x96,0xFA), rgb_t(0xB6,0xA7,0xFA), \
1053     rgb_t(0xC7,0xB8,0xFA), rgb_t(0xD8,0xC9,0xFA), rgb_t(0xE9,0xDA,0xFA), rgb_t(0xFA,0xE8,0xFA   )
1054 
1055 define NTSC_BLUE2
1056     rgb_t(0x00,0x00,0x62), rgb_t(0x00,0x0F,0x77), rgb_t(0x01,0x20,0x8D), rgb_t(0x12,0x31,0x9E), \
1057     rgb_t(0x23,0x42,0xAF), rgb_t(0x34,0x53,0xC0), rgb_t(0x45,0x64,0xD1), rgb_t(0x56,0x75,0xE2), \
1058     rgb_t(0x67,0x86,0xF3), rgb_t(0x78,0x97,0xFF), rgb_t(0x89,0xA8,0xFF), rgb_t(0x9A,0xB9,0xFF), \
1059     rgb_t(0xAB,0xCA,0xFF), rgb_t(0xBC,0xDB,0xFF), rgb_t(0xCD,0xEC,0xFF), rgb_t(0xDE,0xFD,0xFF   )
1060 
1061 define NTSC_LIGHT_BLUE
1062     rgb_t(0x00,0x10,0x42), rgb_t(0x00,0x21,0x58), rgb_t(0x00,0x32,0x6E), rgb_t(0x00,0x43,0x84), \
1063     rgb_t(0x0E,0x54,0x96), rgb_t(0x1F,0x65,0xA7), rgb_t(0x30,0x76,0xB8), rgb_t(0x41,0x87,0xC9), \
1064     rgb_t(0x52,0x98,0xDA), rgb_t(0x63,0xA9,0xEB), rgb_t(0x74,0xBA,0xFC), rgb_t(0x85,0xCB,0xFF), \
1065     rgb_t(0x96,0xDC,0xFF), rgb_t(0xA7,0xED,0xFF), rgb_t(0xB8,0xFE,0xFF), rgb_t(0xC9,0xFF,0xFF   )
1066 
1067 define NTSC_TURQUOISE
1068     rgb_t(0x00,0x1E,0x14), rgb_t(0x00,0x2F,0x2A), rgb_t(0x00,0x40,0x40), rgb_t(0x00,0x51,0x56), \
1069     rgb_t(0x04,0x62,0x6B), rgb_t(0x15,0x73,0x7C), rgb_t(0x26,0x84,0x8D), rgb_t(0x37,0x95,0x9E), \
1070     rgb_t(0x48,0xA6,0xAF), rgb_t(0x59,0xB7,0xC0), rgb_t(0x6A,0xC8,0xD1), rgb_t(0x7B,0xD9,0xE2), \
1071     rgb_t(0x8C,0xEA,0xF3), rgb_t(0x9D,0xFB,0xFF), rgb_t(0xAE,0xFF,0xFF), rgb_t(0xBF,0xFF,0xFF   )
1072 
1073 define NTSC_GREEN_BLUE
1074     rgb_t(0x00,0x26,0x0B), rgb_t(0x00,0x37,0x10), rgb_t(0x00,0x48,0x16), rgb_t(0x00,0x59,0x25), \
1075     rgb_t(0x08,0x6A,0x38), rgb_t(0x19,0x7B,0x49), rgb_t(0x2A,0x8C,0x5A), rgb_t(0x3B,0x9D,0x6B), \
1076     rgb_t(0x4C,0xAE,0x7C), rgb_t(0x5D,0xBF,0x8D), rgb_t(0x6E,0xD0,0x9E), rgb_t(0x7F,0xE1,0xAF), \
1077     rgb_t(0x90,0xF2,0xC0), rgb_t(0xA1,0xFF,0xD0), rgb_t(0xB2,0xFF,0xDC), rgb_t(0xC3,0xFF,0xE8   )
1078 
1079 define NTSC_GREEN
1080     rgb_t(0x00,0x26,0x0B), rgb_t(0x00,0x37,0x10), rgb_t(0x00,0x48,0x16), rgb_t(0x08,0x59,0x18), \
1081     rgb_t(0x19,0x6A,0x18), rgb_t(0x2A,0x7B,0x18), rgb_t(0x3B,0x8C,0x29), rgb_t(0x4C,0x9D,0x3A), \
1082     rgb_t(0x5D,0xAE,0x4B), rgb_t(0x6E,0xBF,0x5C), rgb_t(0x7F,0xD0,0x6D), rgb_t(0x90,0xE1,0x7E), \
1083     rgb_t(0xA1,0xF2,0x8F), rgb_t(0xB2,0xFF,0x9F), rgb_t(0xC3,0xFF,0xAB), rgb_t(0xD4,0xFF,0xB7   )
1084 
1085 define NTSC_YELLOW_GREEN
1086     rgb_t(0x00,0x1E,0x09), rgb_t(0x00,0x2F,0x0E), rgb_t(0x11,0x40,0x0E), rgb_t(0x22,0x51,0x0E), \
1087     rgb_t(0x33,0x62,0x0E), rgb_t(0x44,0x73,0x0E), rgb_t(0x55,0x84,0x0E), rgb_t(0x66,0x95,0x17), \
1088     rgb_t(0x77,0xA6,0x28), rgb_t(0x88,0xB7,0x39), rgb_t(0x99,0xC8,0x4A), rgb_t(0xAA,0xD9,0x5B), \
1089     rgb_t(0xBB,0xEA,0x6C), rgb_t(0xCC,0xFB,0x7D), rgb_t(0xDD,0xFF,0x8A), rgb_t(0xEE,0xFF,0x96   )
1090 
1091 define NTSC_ORANGE_GREEN
1092     rgb_t(0x0D,0x0F,0x01), rgb_t(0x1E,0x20,0x01), rgb_t(0x2F,0x31,0x01), rgb_t(0x40,0x42,0x01), \
1093     rgb_t(0x51,0x53,0x01), rgb_t(0x62,0x64,0x01), rgb_t(0x73,0x75,0x01), rgb_t(0x84,0x86,0x08), \
1094     rgb_t(0x95,0x97,0x19), rgb_t(0xA6,0xA8,0x2A), rgb_t(0xB7,0xB9,0x3B), rgb_t(0xC8,0xCA,0x4C), \
1095     rgb_t(0xD9,0xDB,0x5D), rgb_t(0xEA,0xEC,0x6E), rgb_t(0xFB,0xFD,0x7F), rgb_t(0xFF,0xFF,0x8F   )
1096 
1097 define NTSC_LIGHT_ORANGE
1098     rgb_t(0x28,0x00,0x00), rgb_t(0x39,0x0E,0x00), rgb_t(0x4A,0x1F,0x00), rgb_t(0x5B,0x30,0x00), \
1099     rgb_t(0x6C,0x41,0x00), rgb_t(0x7D,0x52,0x00), rgb_t(0x8E,0x63,0x00), rgb_t(0x9F,0x74,0x10), \
1100     rgb_t(0xB0,0x85,0x21), rgb_t(0xC1,0x96,0x32), rgb_t(0xD2,0xA7,0x43), rgb_t(0xE3,0xB8,0x54), \
1101     rgb_t(0xF4,0xC9,0x65), rgb_t(0xFF,0xDA,0x78), rgb_t(0xFF,0xEB,0x8E), rgb_t(0xFF,0xFC,0xA4   )
1102 ***************************************************************************/
1103 
1104 
1105 /***************************************************************************
1106     PALETTE - 27.2 PHASE SHIFT
1107 
1108 
1109 define NTSC_GREY
1110     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
1111     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
1112     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
1113     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
1114 
1115 define NTSC_GOLD
1116     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
1117     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
1118     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
1119     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xF7,0x97   )
1120 
1121 define NTSC_ORANGE
1122     rgb_t(0x32,0x00,0x00), rgb_t(0x43,0x05,0x00), rgb_t(0x54,0x16,0x00), rgb_t(0x65,0x27,0x00), \
1123     rgb_t(0x76,0x38,0x00), rgb_t(0x87,0X49,0x00), rgb_t(0x98,0x5A,0x0C), rgb_t(0xA9,0x6B,0x1D), \
1124     rgb_t(0xBA,0x7C,0x2E), rgb_t(0xCB,0x8D,0x3F), rgb_t(0xDC,0x9E,0x50), rgb_t(0xED,0xAF,0x61), \
1125     rgb_t(0xFE,0xC0,0x72), rgb_t(0xFF,0xD1,0x88), rgb_t(0xFF,0xE2,0x9E), rgb_t(0xFF,0xF3,0xB4   )
1126 
1127 define NTSC_RED_ORANGE
1128     rgb_t(0x3F,0x00,0x00), rgb_t(0x50,0x00,0x00), rgb_t(0x61,0x07,0x00), rgb_t(0x72,0x18,0x01), \
1129     rgb_t(0x83,0x29,0x12), rgb_t(0x94,0x3A,0x23), rgb_t(0xA5,0x4B,0x34), rgb_t(0xB6,0x5C,0x45), \
1130     rgb_t(0xC7,0x6D,0x56), rgb_t(0xD8,0x7E,0x67), rgb_t(0xE9,0x8F,0x78), rgb_t(0xFA,0xA0,0x89), \
1131     rgb_t(0xFF,0xB1,0x9E), rgb_t(0xFF,0xC2,0xB4), rgb_t(0xFF,0xD3,0xCA), rgb_t(0xFF,0xE4,0xE0   )
1132 
1133 define NTSC_PINK
1134     rgb_t(0x3E,0x00,0x0C), rgb_t(0x4F,0x00,0x18), rgb_t(0x60,0x00,0x24), rgb_t(0x71,0x0E,0x34), \
1135     rgb_t(0x82,0x1F,0x45), rgb_t(0x93,0x30,0x56), rgb_t(0xA4,0x41,0x67), rgb_t(0xB5,0x52,0x78), \
1136     rgb_t(0xC6,0x63,0x89), rgb_t(0xD7,0x74,0x9A), rgb_t(0xE8,0x85,0xAB), rgb_t(0xF9,0x96,0xB6), \
1137     rgb_t(0xFF,0xA7,0xD1), rgb_t(0xFF,0xB8,0xE7), rgb_t(0xFF,0xC9,0xEF), rgb_t(0xFF,0xDA,0xF4   )
1138 
1139 define NTSC_PURPLE
1140     rgb_t(0x2F,0x00,0x3F), rgb_t(0x40,0x00,0x4B), rgb_t(0x51,0x00,0x57), rgb_t(0x62,0x0C,0x66), \
1141     rgb_t(0x73,0x1D,0x77), rgb_t(0x84,0x2E,0x88), rgb_t(0x95,0x3F,0x99), rgb_t(0xA6,0x50,0xAA), \
1142     rgb_t(0xB7,0x61,0xBB), rgb_t(0xC8,0x72,0xCC), rgb_t(0xD9,0x83,0xDD), rgb_t(0xEA,0x94,0xE5), \
1143     rgb_t(0xFB,0xA5,0xE5), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
1144 
1145 define NTSC_PURPLE_BLUE
1146     rgb_t(0x16,0x00,0x64), rgb_t(0x27,0x00,0x70), rgb_t(0x38,0x02,0x7D), rgb_t(0x49,0x13,0x8E), \
1147     rgb_t(0x5A,0x24,0x9F), rgb_t(0x6B,0x35,0xB0), rgb_t(0x7C,0x46,0xC1), rgb_t(0x8D,0x57,0xD2), \
1148     rgb_t(0x9E,0x68,0xE3), rgb_t(0xAF,0x79,0xEF), rgb_t(0xC0,0x8A,0xEF), rgb_t(0xD1,0x9D,0xEF), \
1149     rgb_t(0xE2,0xAC,0xEF), rgb_t(0xF3,0xBD,0xEF), rgb_t(0xFF,0xCE,0xF0), rgb_t(0xFF,0xDF,0xF5   )
1150 
1151 define NTSC_BLUE1
1152     rgb_t(0x00,0x00,0x71), rgb_t(0x09,0x00,0x7F), rgb_t(0x1A,0x10,0x90), rgb_t(0x2B,0x21,0xA1), \
1153     rgb_t(0x3C,0x32,0xB2), rgb_t(0x4D,0x43,0xC3), rgb_t(0x5E,0x54,0xD4), rgb_t(0x6F,0x65,0xE5), \
1154     rgb_t(0x80,0x76,0xF6), rgb_t(0x91,0x87,0xFC), rgb_t(0xA2,0x98,0xFC), rgb_t(0xB3,0xA9,0xFC), \
1155     rgb_t(0xC4,0xBA,0xFC), rgb_t(0xD5,0xCB,0xFC), rgb_t(0xE6,0xDC,0xFC), rgb_t(0xF7,0xED,0xFC   )
1156 
1157 define NTSC_BLUE2
1158     rgb_t(0x00,0x00,0x5E), rgb_t(0x00,0x11,0x74), rgb_t(0x00,0x22,0x8A), rgb_t(0x0F,0x33,0x9C), \
1159     rgb_t(0x20,0x44,0xAD), rgb_t(0x31,0x55,0xBE), rgb_t(0x42,0x66,0xCF), rgb_t(0x53,0x77,0xE0), \
1160     rgb_t(0x64,0x88,0xF1), rgb_t(0x75,0x99,0xFF), rgb_t(0x86,0xAA,0xFF), rgb_t(0x97,0xBB,0xFF), \
1161     rgb_t(0xA8,0xCC,0xFF), rgb_t(0xB9,0xDD,0xFF), rgb_t(0xCA,0xEE,0xFF), rgb_t(0xDB,0xFF,0xFF   )
1162 
1163 define NTSC_LIGHT_BLUE
1164     rgb_t(0x00,0x12,0x3B), rgb_t(0x00,0x23,0x51), rgb_t(0x00,0x34,0x68), rgb_t(0x00,0x45,0x7E), \
1165     rgb_t(0x0C,0x56,0x90), rgb_t(0x1D,0x67,0xA1), rgb_t(0x2E,0x78,0xB2), rgb_t(0x3F,0x89,0xC3), \
1166     rgb_t(0x50,0x9A,0xD4), rgb_t(0x61,0xAB,0xE5), rgb_t(0x72,0xBC,0xF6), rgb_t(0x83,0xCD,0xFF), \
1167     rgb_t(0x94,0xDE,0xFF), rgb_t(0xA5,0xEF,0xFF), rgb_t(0xB6,0xFF,0xFF), rgb_t(0xC7,0xFF,0xFF   )
1168 
1169 define NTSC_TURQUOISE
1170     rgb_t(0x00,0x20,0x0C), rgb_t(0x00,0x31,0x22), rgb_t(0x00,0x42,0x38), rgb_t(0x00,0x53,0x4E), \
1171     rgb_t(0x04,0x64,0x63), rgb_t(0x15,0x75,0x74), rgb_t(0x26,0x86,0x85), rgb_t(0x37,0x97,0x96), \
1172     rgb_t(0x48,0xA8,0xA7), rgb_t(0x59,0xB9,0xB8), rgb_t(0x6A,0xCA,0xC9), rgb_t(0x7B,0xDB,0xDA), \
1173     rgb_t(0x8C,0xEC,0xEB), rgb_t(0x9D,0xFD,0xFC), rgb_t(0xAE,0xFF,0xFF), rgb_t(0xBF,0xFF,0xFF   )
1174 
1175 define NTSC_GREEN_BLUE
1176     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1C), \
1177     rgb_t(0x0B,0x6B,0x2F), rgb_t(0x1C,0x7C,0x40), rgb_t(0x2D,0x8D,0x51), rgb_t(0x3E,0x9E,0x62), \
1178     rgb_t(0x4F,0xAF,0x73), rgb_t(0x60,0xC0,0x84), rgb_t(0x71,0xD1,0x95), rgb_t(0x82,0xE2,0xA6), \
1179     rgb_t(0x93,0xF3,0xB7), rgb_t(0xA4,0xFF,0xC6), rgb_t(0xB5,0xFF,0xD2), rgb_t(0xC6,0xFF,0xDE   )
1180 
1181 define NTSC_GREEN
1182     rgb_t(0x00,0x25,0x0B), rgb_t(0x00,0x36,0x10), rgb_t(0x00,0x47,0x15), rgb_t(0x0D,0x58,0x16), \
1183     rgb_t(0x1E,0x69,0x16), rgb_t(0x2F,0x7A,0x16), rgb_t(0x40,0x8B,0x21), rgb_t(0x51,0x9C,0x32), \
1184     rgb_t(0x62,0xAD,0x43), rgb_t(0x73,0xBE,0x54), rgb_t(0x84,0xCF,0x65), rgb_t(0x95,0xE0,0x76), \
1185     rgb_t(0xA6,0xF1,0x87), rgb_t(0xB7,0xFF,0x98), rgb_t(0xC8,0xFF,0xA3), rgb_t(0xD9,0xFF,0xAF   )
1186 
1187 define NTSC_YELLOW_GREEN
1188     rgb_t(0x00,0x1B,0x08), rgb_t(0x06,0x2C,0x0B), rgb_t(0x17,0x3D,0x0B), rgb_t(0x28,0x4E,0x0B), \
1189     rgb_t(0x39,0x5F,0x0B), rgb_t(0x4A,0x70,0x0B), rgb_t(0x5B,0x81,0x0B), rgb_t(0x6C,0x92,0x12), \
1190     rgb_t(0x7D,0xA3,0x23), rgb_t(0x8E,0xB4,0x34), rgb_t(0x9F,0xC5,0x45), rgb_t(0xB0,0xD6,0x56), \
1191     rgb_t(0xC1,0xE7,0x67), rgb_t(0xD2,0xF8,0x78), rgb_t(0xE3,0xFF,0x86), rgb_t(0xF4,0xFF,0x92   )
1192 
1193 define NTSC_ORANGE_GREEN
1194     rgb_t(0x13,0x0B,0x00), rgb_t(0x24,0x1C,0x00), rgb_t(0x35,0x2D,0x00), rgb_t(0x46,0x3E,0x00), \
1195     rgb_t(0x57,0x4F,0x00), rgb_t(0x68,0x60,0x00), rgb_t(0x79,0x71,0x00), rgb_t(0x8A,0x82,0x08), \
1196     rgb_t(0x9B,0x93,0x19), rgb_t(0xAC,0xA4,0x2A), rgb_t(0xBD,0xB5,0x3B), rgb_t(0xCE,0xC6,0x4C), \
1197     rgb_t(0xDF,0xD7,0x5D), rgb_t(0xF0,0xE8,0x6E), rgb_t(0xFF,0xF9,0x7F), rgb_t(0xFF,0xFF,0x92   )
1198 
1199 define NTSC_LIGHT_ORANGE
1200     rgb_t(0x2D,0x00,0x00), rgb_t(0x3E,0x0A,0x00), rgb_t(0x4F,0x1B,0x00), rgb_t(0x60,0x2C,0x00), \
1201     rgb_t(0x71,0x3D,0x00), rgb_t(0x82,0x4E,0x00), rgb_t(0x93,0x5F,0x05), rgb_t(0xA4,0x70,0x16), \
1202     rgb_t(0xB5,0x81,0x27), rgb_t(0xC4,0x90,0x37), rgb_t(0xD7,0xA3,0x49), rgb_t(0xE8,0xB4,0x5A), \
1203     rgb_t(0xF9,0xC5,0x6B), rgb_t(0xFF,0xD6,0x80), rgb_t(0xFF,0xE7,0x96), rgb_t(0xFF,0xF8,0xAC   )
1204 ***************************************************************************/
1205 
1206 
1207 /***************************************************************************
1208     PALETTE - 27.7 PHASE SHIFT
1209 
1210 
1211 define NTSC_GREY
1212     rgb_t(0x00,0x00,0x00), rgb_t(0x11,0x11,0x11), rgb_t(0x22,0x22,0x22), rgb_t(0x33,0x33,0x33), \
1213     rgb_t(0x44,0x44,0x44), rgb_t(0x55,0x55,0x55), rgb_t(0x66,0x66,0x66), rgb_t(0x77,0x77,0x77), \
1214     rgb_t(0x88,0x88,0x88), rgb_t(0x99,0x99,0x99), rgb_t(0xAA,0xAA,0xAA), rgb_t(0xBB,0xBB,0xBB), \
1215     rgb_t(0xCC,0xCC,0xCC), rgb_t(0xDD,0xDD,0xDD), rgb_t(0xEE,0xEE,0xEE), rgb_t(0xFF,0xFF,0xFF   )
1216 
1217 define NTSC_GOLD
1218     rgb_t(0x1A,0x07,0x00), rgb_t(0x2B,0x18,0x00), rgb_t(0x3C,0x29,0x00), rgb_t(0x4D,0x3A,0x00), \
1219     rgb_t(0x5E,0x4B,0x00), rgb_t(0x6F,0x5C,0x00), rgb_t(0x80,0x6D,0x00), rgb_t(0x91,0x7E,0x09), \
1220     rgb_t(0xA2,0x8F,0x1A), rgb_t(0xB3,0xA0,0x2B), rgb_t(0xC4,0xB1,0x3C), rgb_t(0xD5,0xC2,0x4D), \
1221     rgb_t(0xE6,0xD3,0x5E), rgb_t(0xF7,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xFF,0x97   )
1222 
1223 define NTSC_ORANGE
1224     rgb_t(0x32,0x00,0x00), rgb_t(0x43,0x05,0x00), rgb_t(0x54,0x16,0x00), rgb_t(0x65,0x27,0x00), \
1225     rgb_t(0x76,0x38,0x00), rgb_t(0x87,0x49,0x00), rgb_t(0x98,0x5A,0x0C), rgb_t(0xA9,0x6B,0x1D), \
1226     rgb_t(0xBA,0x7C,0x2E), rgb_t(0xCB,0x8D,0x3F), rgb_t(0xDC,0x9E,0x50), rgb_t(0xED,0xAF,0x61), \
1227     rgb_t(0xFE,0xC0,0x72), rgb_t(0xFF,0xD1,0x88), rgb_t(0xFF,0xE2,0x9E), rgb_t(0xFF,0xF3,0xB4   )
1228 
1229 define NTSC_RED_ORANGE
1230     rgb_t(0x3F,0x00,0x00), rgb_t(0x50,0x00,0x00), rgb_t(0x61,0x06,0x00), rgb_t(0x72,0x17,0x03), \
1231     rgb_t(0x83,0x28,0x14), rgb_t(0x94,0x39,0x25), rgb_t(0xA5,0x4A,0x36), rgb_t(0xB6,0x5B,0x47), \
1232     rgb_t(0xC7,0x6C,0x58), rgb_t(0xD8,0x7D,0x69), rgb_t(0xE9,0x8E,0x7A), rgb_t(0xFA,0x9F,0x8B), \
1233     rgb_t(0xFF,0xB0,0x9F), rgb_t(0xFF,0xC1,0xB5), rgb_t(0xFF,0xD2,0xCB), rgb_t(0xFF,0xE3,0xE1   )
1234 
1235 define NTSC_PINK
1236     rgb_t(0x3D,0x00,0x10), rgb_t(0x4E,0x00,0x1C), rgb_t(0x5F,0x00,0x27), rgb_t(0x70,0x0D,0x37), \
1237     rgb_t(0x81,0x1E,0x48), rgb_t(0x92,0x2F,0x59), rgb_t(0xA3,0x40,0x6A), rgb_t(0xB4,0x51,0x7B), \
1238     rgb_t(0xC5,0x62,0x8C), rgb_t(0xD6,0x73,0x9D), rgb_t(0xE7,0x84,0xAE), rgb_t(0xF8,0x95,0xBF), \
1239     rgb_t(0xFF,0xA6,0xD3), rgb_t(0xFF,0xB7,0xE9), rgb_t(0xFF,0xC8,0xEE), rgb_t(0xFF,0xD9,0xF4   )
1240 
1241 define NTSC_PURPLE
1242     rgb_t(0x2D,0x00,0x42), rgb_t(0x3E,0x00,0x4E), rgb_t(0x4F,0x00,0x5A), rgb_t(0x60,0x0C,0x6A), \
1243     rgb_t(0x71,0x1D,0x7B), rgb_t(0x82,0x2E,0x8C), rgb_t(0x93,0x3F,0x9D), rgb_t(0xA4,0x50,0xAE), \
1244     rgb_t(0xB5,0x61,0xBF), rgb_t(0xC6,0x72,0xD0), rgb_t(0xD7,0x83,0xE1), rgb_t(0xE8,0x94,0xE6), \
1245     rgb_t(0xF9,0xA5,0xE6), rgb_t(0xFF,0xB6,0xE9), rgb_t(0xFF,0xC7,0xEE), rgb_t(0xFF,0xD8,0xF3   )
1246 
1247 define NTSC_PURPLE_BLUE
1248     rgb_t(0x13,0x00,0x67), rgb_t(0x24,0x00,0x73), rgb_t(0x35,0x03,0x80), rgb_t(0x46,0x14,0x91), \
1249     rgb_t(0x57,0x25,0xA2), rgb_t(0x68,0x36,0xB3), rgb_t(0x79,0x47,0xC4), rgb_t(0x8A,0x58,0xD5), \
1250     rgb_t(0x9B,0x69,0xE6), rgb_t(0xAC,0x7A,0xF0), rgb_t(0xBD,0x8B,0xF0), rgb_t(0xCE,0x9C,0xF0), \
1251     rgb_t(0xDF,0xAD,0xF0), rgb_t(0xF0,0xBE,0xF0), rgb_t(0xFF,0xCF,0xF1), rgb_t(0xFF,0xE0,0xF6   )
1252 
1253 define NTSC_BLUE1
1254     rgb_t(0x00,0x00,0x70), rgb_t(0x05,0x01,0x80), rgb_t(0x16,0x12,0x91), rgb_t(0x27,0x23,0xA2), \
1255     rgb_t(0x38,0x34,0xB3), rgb_t(0x49,0x45,0xC4), rgb_t(0x5A,0x56,0xD5), rgb_t(0x6B,0x67,0xE6), \
1256     rgb_t(0x7C,0x78,0xF7), rgb_t(0x8D,0x89,0xFE), rgb_t(0x9E,0x9A,0xFE), rgb_t(0xAF,0xAB,0xFE), \
1257     rgb_t(0xC0,0xBC,0xFE), rgb_t(0xD1,0xCD,0xFE), rgb_t(0xE2,0xDE,0xFE), rgb_t(0xF3,0xEF,0xFE   )
1258 
1259 define NTSC_BLUE2
1260     rgb_t(0x00,0x03,0x5B), rgb_t(0x00,0x14,0x71), rgb_t(0x00,0x25,0x87), rgb_t(0x0C,0x36,0x9A), \
1261     rgb_t(0x1D,0x47,0xAB), rgb_t(0x2E,0x58,0xBC), rgb_t(0x3F,0x69,0xCD), rgb_t(0x50,0x7A,0xDE), \
1262     rgb_t(0x61,0x8B,0xEF), rgb_t(0x72,0x9C,0xFF), rgb_t(0x83,0xAD,0xFF), rgb_t(0x94,0xBE,0xFF), \
1263     rgb_t(0xA5,0xCF,0xFF), rgb_t(0xB6,0xE0,0xFF), rgb_t(0xC7,0xF1,0xFF), rgb_t(0xD8,0xFF,0xFF   )
1264 
1265 define NTSC_LIGHT_BLUE
1266     rgb_t(0x00,0x15,0x35), rgb_t(0x00,0x26,0x4B), rgb_t(0x00,0x37,0x61), rgb_t(0x00,0x48,0x78), \
1267     rgb_t(0x0A,0x59,0x8B), rgb_t(0x1B,0x6A,0x9C), rgb_t(0x2C,0x7B,0xAD), rgb_t(0x3D,0x8C,0xBE), \
1268     rgb_t(0x4E,0x9D,0xCF), rgb_t(0x5F,0xAE,0xE0), rgb_t(0x70,0xBF,0xF1), rgb_t(0x81,0xD0,0xFF), \
1269     rgb_t(0x92,0xE1,0xFF), rgb_t(0xA3,0xF2,0xFF), rgb_t(0xB4,0xFF,0xFF), rgb_t(0xC5,0xFF,0xFF   )
1270 
1271 define NTSC_TURQUOISE
1272     rgb_t(0x00,0x22,0x0A), rgb_t(0x00,0x33,0x19), rgb_t(0x00,0x44,0x2F), rgb_t(0x00,0x55,0x45), \
1273     rgb_t(0x04,0x66,0x5A), rgb_t(0x15,0x77,0x6B), rgb_t(0x26,0x88,0x7C), rgb_t(0x37,0x99,0x8D), \
1274     rgb_t(0x48,0xAA,0x9E), rgb_t(0x59,0xBB,0xAF), rgb_t(0x6A,0xCC,0xC0), rgb_t(0x7B,0xDD,0xD1), \
1275     rgb_t(0x8C,0xEE,0xE2), rgb_t(0x9D,0xFF,0xF3), rgb_t(0xAE,0xFF,0xFF), rgb_t(0xBF,0xFF,0xFF   )
1276 
1277 define NTSC_GREEN_BLUE
1278     rgb_t(0x00,0x27,0x0C), rgb_t(0x00,0x38,0x11), rgb_t(0x00,0x49,0x16), rgb_t(0x00,0x5A,0x1B), \
1279     rgb_t(0x0D,0x6B,0x25), rgb_t(0x1E,0x7C,0x36), rgb_t(0x2F,0x8D,0x47), rgb_t(0x40,0x9E,0x58), \
1280     rgb_t(0x51,0xAF,0x69), rgb_t(0x62,0xC0,0x7A), rgb_t(0x73,0xD1,0x8B), rgb_t(0x84,0xE2,0x9C), \
1281     rgb_t(0x95,0xF3,0xAD), rgb_t(0xA6,0xFF,0xBD), rgb_t(0xB7,0xFF,0xC9), rgb_t(0xC8,0xFF,0xD4   )
1282 
1283 define NTSC_GREEN
1284     rgb_t(0x00,0x24,0x0B), rgb_t(0x00,0x35,0x10), rgb_t(0x01,0x46,0x15), rgb_t(0x12,0x57,0x15), \
1285     rgb_t(0x23,0x68,0x15), rgb_t(0x34,0x79,0x15), rgb_t(0x45,0x8A,0x19), rgb_t(0x56,0x9B,0x2A), \
1286     rgb_t(0x67,0xAC,0x3B), rgb_t(0x78,0xBD,0x4C), rgb_t(0x89,0xCE,0x5D), rgb_t(0x9A,0xDF,0x6E), \
1287     rgb_t(0xAB,0xF0,0x7F), rgb_t(0xBC,0xFF,0x8F), rgb_t(0xCD,0xFF,0x9B), rgb_t(0xDE,0xFF,0xA7   )
1288 
1289 define NTSC_YELLOW_GREEN
1290     rgb_t(0x00,0x18,0x07), rgb_t(0x00,0x29,0x0C), rgb_t(0x1E,0x3A,0x08), rgb_t(0x2F,0x4B,0x08), \
1291     rgb_t(0x40,0x5C,0x08), rgb_t(0x51,0x6D,0x08), rgb_t(0x62,0x7E,0x08), rgb_t(0x73,0x8F,0x0D), \
1292     rgb_t(0x84,0xA0,0x1E), rgb_t(0x95,0xB1,0x2F), rgb_t(0xA6,0xC2,0x40), rgb_t(0xB7,0xD3,0x51), \
1293     rgb_t(0xC8,0xE4,0x62), rgb_t(0xD9,0xF5,0x73), rgb_t(0xEA,0xFF,0x82), rgb_t(0xFB,0xFF,0x8E   )
1294 
1295 define NTSC_ORANGE_GREEN
1296     rgb_t(0x1B,0x07,0x00), rgb_t(0x2C,0x18,0x00), rgb_t(0x3D,0x29,0x00), rgb_t(0x4E,0x3A,0x00), \
1297     rgb_t(0x5F,0x4B,0x00), rgb_t(0x70,0x5C,0x00), rgb_t(0x81,0x6D,0x00), rgb_t(0x92,0x7E,0x09), \
1298     rgb_t(0xA3,0x8F,0x1A), rgb_t(0xB4,0xA0,0x2B), rgb_t(0xC5,0xB1,0x3C), rgb_t(0xD6,0xC2,0x4D), \
1299     rgb_t(0xE7,0xD3,0x5E), rgb_t(0xF8,0xE4,0x6F), rgb_t(0xFF,0xF5,0x83), rgb_t(0xFF,0xFF,0x97   )
1300 
1301 define NTSC_LIGHT_ORANGE
1302     rgb_t(0x33,0x00,0x00), rgb_t(0x44,0x05,0x00), rgb_t(0x55,0x16,0x00), rgb_t(0x66,0x27,0x00), \
1303     rgb_t(0x77,0x38,0x00), rgb_t(0x88,0x49,0x00), rgb_t(0x99,0x5A,0x0D), rgb_t(0xAA,0x6B,0x1E), \
1304     rgb_t(0xBB,0x7C,0x2F), rgb_t(0xCC,0x8D,0x40), rgb_t(0xDD,0x9E,0x51), rgb_t(0xEE,0xAF,0x62), \
1305     rgb_t(0xFF,0xC0,0x73), rgb_t(0xFF,0xD1,0x89), rgb_t(0xFF,0xE2,0x9F), rgb_t(0xFF,0xF3,0xB5   )
1306 ***************************************************************************/
1307 
1308 /* Initialise the palette */
a7800_palette(palette_device & palette) const1309 void a7800_state::a7800_palette(palette_device &palette) const
1310 {
1311 	palette.set_pen_colors(0, a7800_colors);
1312 }
1313 
1314 
a7800p_palette(palette_device & palette) const1315 void a7800_pal_state::a7800p_palette(palette_device &palette) const
1316 {
1317 	palette.set_pen_colors(0, a7800p_colors);
1318 }
1319 
1320 
1321 /***************************************************************************
1322     MACHINE DRIVERS
1323 ***************************************************************************/
1324 
machine_start()1325 void a7800_state::machine_start()
1326 {
1327 	save_item(NAME(m_p1_one_button));
1328 	save_item(NAME(m_p2_one_button));
1329 	save_item(NAME(m_bios_enabled));
1330 	save_item(NAME(m_ctrl_lock));
1331 	save_item(NAME(m_ctrl_reg));
1332 	save_item(NAME(m_maria_flag));
1333 
1334 	// set up RAM mirrors
1335 	uint8_t *ram = reinterpret_cast<uint8_t *>(memshare("6116_2")->ptr());
1336 	membank("zpmirror")->set_base(ram + 0x0040);
1337 	membank("spmirror")->set_base(ram + 0x0140);
1338 
1339 	// install additional handlers, if needed
1340 	if (m_cart->exists())
1341 	{
1342 		switch (m_cart->get_cart_type())
1343 		{
1344 		case A78_HSC:
1345 			// ROM+NVRAM accesses for HiScore
1346 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_10xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_10xx)));
1347 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_30xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_30xx)));
1348 			break;
1349 		case A78_XB_BOARD:
1350 		case A78_TYPE0_POK450:
1351 		case A78_TYPE1_POK450:
1352 		case A78_TYPE6_POK450:
1353 		case A78_TYPEA_POK450:
1354 		case A78_VERSA_POK450:
1355 			// POKEY and RAM regs at 0x400-0x47f
1356 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_04xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_04xx)));
1357 			break;
1358 		case A78_XM_BOARD:
1359 			// POKEY and RAM and YM regs at 0x400-0x47f
1360 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_04xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_04xx)));
1361 			// ROM+NVRAM accesses for HiScore
1362 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_10xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_10xx)));
1363 			m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::read_30xx)), write8sm_delegate(*m_cart, FUNC(a78_cart_slot_device::write_30xx)));
1364 			break;
1365 		}
1366 	}
1367 }
1368 
machine_reset()1369 void a7800_state::machine_reset()
1370 {
1371 	m_ctrl_lock = 0;
1372 	m_ctrl_reg = 0;
1373 	m_maria_flag = 0;
1374 	m_bios_enabled = 0;
1375 }
1376 
a7800_ntsc(machine_config & config)1377 void a7800_state::a7800_ntsc(machine_config &config)
1378 {
1379 	/* basic machine hardware */
1380 	M6502(config, m_maincpu, A7800_NTSC_Y1/8); /* 1.79 MHz (switches to 1.19 MHz on TIA or RIOT access) */
1381 	m_maincpu->set_addrmap(AS_PROGRAM, &a7800_state::a7800_mem);
1382 	TIMER(config, "scantimer").configure_scanline(FUNC(a7800_state::interrupt), "screen", 0, 1);
1383 
1384 	/* video hardware */
1385 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1386 	m_screen->set_raw(7159090, 454, 0, 320, 263, 27, 27 + 192 + 32);
1387 	m_screen->set_screen_update("maria", FUNC(atari_maria_device::screen_update));
1388 	m_screen->set_palette("palette");
1389 
1390 	PALETTE(config, "palette", FUNC(a7800_state::a7800_palette), ARRAY_LENGTH(a7800_colors));
1391 
1392 	ATARI_MARIA(config, m_maria, 0);
1393 	m_maria->set_dmacpu_tag(m_maincpu);
1394 	m_maria->set_screen_tag(m_screen);
1395 
1396 	/* sound hardware */
1397 	SPEAKER(config, "mono").front_center();
1398 	TIA(config, "tia", 31400).add_route(ALL_OUTPUTS, "mono", 1.00);
1399 
1400 	/* devices */
1401 	mos6532_new_device &riot(MOS6532_NEW(config, "riot", A7800_NTSC_Y1/8));
1402 	riot.pa_rd_callback().set(FUNC(a7800_state::riot_joystick_r));
1403 	riot.pb_rd_callback().set(FUNC(a7800_state::riot_console_button_r));
1404 	riot.pb_wr_callback().set(FUNC(a7800_state::riot_button_pullup_w));
1405 
1406 	A78_CART_SLOT(config, "cartslot", a7800_cart, nullptr);
1407 
1408 	/* software lists */
1409 	SOFTWARE_LIST(config, "cart_list").set_original("a7800").set_filter("NTSC");
1410 }
1411 
a7800_pal(machine_config & config)1412 void a7800_pal_state::a7800_pal(machine_config &config)
1413 {
1414 	a7800_ntsc(config);
1415 
1416 	/* basic machine hardware */
1417 	m_maincpu->set_clock(CLK_PAL);
1418 
1419 	m_screen->set_raw(7093788, 454, 0, 320, 313, 35, 35 + 228 + 32);
1420 
1421 	subdevice<palette_device>("palette")->set_init(FUNC(a7800_pal_state::a7800p_palette));
1422 
1423 	/* devices */
1424 	subdevice<mos6532_new_device>("riot")->set_clock(CLK_PAL);
1425 
1426 	/* software lists */
1427 	subdevice<software_list_device>("cart_list")->set_filter("PAL");
1428 }
1429 
1430 
1431 /***************************************************************************
1432     ROM DEFINITIONS
1433 ***************************************************************************/
1434 
1435 ROM_START( a7800 )
1436 	ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
1437 	ROM_SYSTEM_BIOS( 0, "a7800", "Atari 7800" )
1438 	ROMX_LOAD("7800.u7", 0x3000, 0x1000, CRC(5d13730c) SHA1(d9d134bb6b36907c615a594cc7688f7bfcef5b43), ROM_BIOS(0))
1439 	ROM_SYSTEM_BIOS( 1, "a7800pr", "Atari 7800 (prototype with Asteroids)" )
CRC(a0e10edf)1440 	ROMX_LOAD("c300558-001a.u7", 0x0000, 0x4000, CRC(a0e10edf) SHA1(14584b1eafe9721804782d4b1ac3a4a7313e455f), ROM_BIOS(1))
1441 ROM_END
1442 
1443 ROM_START( a7800p )
1444 	ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
1445 	ROM_LOAD("7800pal.rom", 0x0000, 0x4000, CRC(d5b61170) SHA1(5a140136a16d1d83e4ff32a19409ca376a8df874))
1446 ROM_END
1447 
1448 
1449 /***************************************************************************
1450  DRIVER INIT
1451  ***************************************************************************/
1452 
1453 void a7800_ntsc_state::init_a7800_ntsc()
1454 {
1455 	m_ispal = false;
1456 	m_lines = 263;
1457 	m_p1_one_button = 1;
1458 	m_p2_one_button = 1;
1459 }
1460 
1461 
init_a7800_pal()1462 void a7800_pal_state::init_a7800_pal()
1463 {
1464 	m_ispal = true;
1465 	m_lines = 313;
1466 	m_p1_one_button = 1;
1467 	m_p2_one_button = 1;
1468 }
1469 
1470 
1471 /***************************************************************************
1472     GAME DRIVERS
1473 ***************************************************************************/
1474 
1475 //    YEAR  NAME    PARENT  COMPAT  MACHINE     INPUT  CLASS             INIT             COMPANY   FULLNAME             FLAGS
1476 CONS( 1986, a7800,  0,      0,      a7800_ntsc, a7800, a7800_ntsc_state, init_a7800_ntsc, "Atari",  "Atari 7800 (NTSC)", 0 )
1477 CONS( 1986, a7800p, a7800,  0,      a7800_pal,  a7800, a7800_pal_state,  init_a7800_pal,  "Atari",  "Atari 7800 (PAL)",  0 )
1478