Changes

Gate Array

1,848 bytes added, Sunday at 17:46
/* Green Screen Colours */
==== ROM configuration selection ====
Bit 2 is used to enable or disable the lower ROM area. The lower ROM area occupies memory addresses &0000-&3fff and is used to access the operating system ROM. When the lower ROM area is is enabled, reading from &0000-&3FFF will return data in the ROM. When a value is written to &0000-&3FFF, it will be written to the RAM underneath the RAMROM. When it is disabled, data read from &0000-&3FFF will return the data in the RAM.
Similarly, bit 3 controls enabling or disabling of the upper ROM area. The upper ROM area occupies memory addressess &C000-&FFFF and is BASIC or any expansion ROMs which may be plugged into a ROM board/box. See the document on [[Upper ROM Bank Number|upper rom selection]] for more details. When the upper ROM area enabled, reading from &c000-&ffff, will return data in the ROM. When data is written to &c000-&FFFF, it will be written to the RAM at the same address as the ROM. When the upper ROM area is disabled, and data is read from &c000-&ffff it will be the data in the RAM.
Bit 4 controls the interrupt generation. It can be used to delay interrupts. See the document on interrupt generation for more information.
==== Summary ====
| 5 || 1
|-
| 4 || x || rowspan="2" |Lower ROM address and ASIC I/O page RMR addressing mode
|-
| 3 || x
|}
The lower {| class="wikitable"|+ RMR addressing modes!Bit 4!Bit 3!Lower ROM address and ![[Default I/O Port SummaryASIC|ASIC I/O page]] modes are:  |-Mode- ROM address ASIC I/O Page 00 |0|0|&0000-&3FFF |Disabled 01 |-|0|1|&4000-&7FFF |Disabled 10 |-|1|0|&8000-&BFFF |Disabled 11 |-|1|1|&0000-&3FFF |&4000-&7fff7FFF|}
The physical ROMs are also accessible as upper ROMs by using the [[Upper ROM Bank Number]] port and the RMR register.
=== Register MMR (RAM memory mapping) ===
This register exists only in CPCs with 128K RAM (like the CPC 6128), or CPCs equipped with [[Standard Memory Expansions]]).  Note: In the CPC 6128, the register is a separate [[PAL16L8|PAL chip]] that assists the Gate Array chip. See its wiki page.
{| class="wikitable"
<br>
=== Palette sorted by Hardware Firmware Colour Numbers === The firmware colour palette is sorted by luminance value.
{| class="wikitable"
|-
|-
!Hardware Number
!Firmware Number
!Hardware Number
!Colour Name
!R %
!Colour
|-
| 0 (40h) || 13 54h || White Black || 50 0|| 50 0|| 50 0|| #666000|| bgcolor="#808080000000" |
|-
| 1 (41h) || 44h (13or 50h) || White Blue || 50 0|| 50 0|| 50|| #666006|| bgcolor="#808080000080" |
|-
| 2 (42h) || 19 55h || Sea Green Bright Blue || 0||100 0|| 50100|| #0F600F|| bgcolor="#00ff800000ff" |
|-
| 3 (43h) || 25 5Ch || Pastel Yellow Red ||10050||100 0|| 50 0|| #FF6600|| bgcolor="#ffff80800000" |
|-
| 4 (44h) || 1 58h || Blue Magenta || 050|| 0|| 50|| #006606|| bgcolor="#000080800080" |
|-
| 5 (45h) || 7 5Dh || Purple Mauve ||10050|| 0|| 50100|| #F0660F|| bgcolor="#ff00808000ff" |
|-
| 6 (46h) || 10 4Ch || Cyan Bright Red ||100|| 0|| 50|| 50 0|| #066F00|| bgcolor="#008080ff0000" |
|-
| 7 || 45h (47hor 48h) || 16 || Pink Purple ||100|| 50 0|| 50|| #F66F06|| bgcolor="#ff8080ff0080" |
|-
| 8 (48h) || (7) 4Dh || Purple Bright Magenta ||100|| 0|| 50100|| #F06F0F|| bgcolor="#ff0080ff00ff" |
|-
| 9 (49h) || (25) 56h || Pastel Yellow Green ||100 0||10050|| 50 0|| #FF6060|| bgcolor="#ffff80008000" |
|-
| 10 (4Ah) || 24 46h || Bright Yellow Cyan ||100 0||10050|| 050|| #FF0066|| bgcolor="#ffff00008080" |
|-
| 11 (4Bh) || 26 57h || Bright White Sky Blue ||100 0||10050||100|| #FFF06F|| bgcolor="#ffffff0080ff" |
|-
| 12 (4Ch) || 6 5Eh || Bright Red Yellow ||10050|| 050|| 0|| #F00660|| bgcolor="#ff0000808000" |
|-
| 13 (4Dh) || 8 40h (or 41h) || Bright MagentaWhite ||10050|| 050||10050|| #F0F666|| bgcolor="#ff00ff808080" |
|-
| 14 (4Eh) || 15 5Fh || Orange Pastel Blue ||10050|| 50|| 0100|| #F6066F|| bgcolor="#ff80008080ff" |
|-
| 15 (4Fh) || 17 4Eh || Pastel MagentaOrange ||100|| 50||100 0|| #F6FF60|| bgcolor="#ff80ffff8000" |
|-
| 16 (50h) || (1) 47h || Blue Pink || 0100|| 050|| 50|| #006F66|| bgcolor="#000080ff8080" |
|-
| 17 (51h) || (19) 4Fh || Sea Green || 0Pastel Magenta ||100|| 50||100|| #0F6F6F|| bgcolor="#00ff80ff80ff" |
|-
| 18 (52h) || 18 52h || Bright Green || 0||100|| 0|| #0F0|| bgcolor="#00ff00" |
|-
| 19 || 42h (53hor 51h) || 20 || Bright Cyan Sea Green || 0||100||10050|| #0FF0F6|| bgcolor="#00ffff00ff80" |
|-
| 20 (54h) || 0 53h || Black Bright Cyan || 0|| 0100|| 0100|| #0000FF|| bgcolor="#00000000ffff" |
|-
| 21 (55h) || 2 5Ah || Bright Blue Lime || 050||100|| 0||100|| #00F6F0|| bgcolor="#0000ff80ff00" |
|-
| 22 (56h) || 9 59h || Pastel Green || 050|| 50100|| 050|| #0606F6|| bgcolor="#00800080ff80" |
|-
| 23 (57h) || 11 5Bh || Sky Blue Pastel Cyan || 050|| 50100||100|| #06F6FF|| bgcolor="#0080ff80ffff" |
|-
| 24 (58h) || 4 4Ah || Magenta Bright Yellow || 50100|| 0100|| 50 0|| #606FF0|| bgcolor="#800080ffff00" |
|-
| 25 || 43h (59hor 49h) || 22 || Pastel Green Yellow || 50||100|| 50|| #6F6|| bgcolor="#80ff80" | |-| 26 (5Ah) || 21 || Lime || 50||100|| 0|| #6F0|| bgcolor="#80ff00" | |-| 27 (5Bh) || 23 || Pastel Cyan || 50||100||100|| #6FFFF6|| bgcolor="#80ffffffff80" |
|-
| 28 (5Ch) 26|| 3 4Bh || Red Bright White || 50|| 0|| 0|| #600||bgcolor="#800000" | |-| 29 (5Dh) || 5 || Mauve || 50|| 0100||100|| #60F||bgcolor="#8000ff" | |-| 30 (5Eh) || 12 || Yellow || 50|| 50|| 0|| #660||bgcolor="#808000" | |-| 31 (5Fh) || 14 || Pastel Blue || 50|| 50||100|| #66FFFF||bgcolor="#8080ffffffff" |
|}
 
Note: We can observe that the official Amstrad names of some colours are a bit silly: "red" is in fact brown, "yellow" is in fact khaki and "white" is in fact grey.
<br>
=== Intensities Amstrad Colour Names ===
The 0%, 50%, and 100% values in the above tables are "should-be" values. However, the real hardware doesn't exactly match that intensities. The actual intensities depend on the luminance mixing (R,G,B tied together via resistors), on chipset (classic CPC, or newer ASIC ones), and on the load applied by external hardware (Monitor, or TV set).<gallery>On an actual Amstrad CPC, the half-intensity Cpc 6128 master colour signal is measured to be closer to 40% rather than the expected 50%chat. This was verified by Grim and independently confirmed by Nocash. [https://www.grimware.org/doku.php/documentations/devices/gatearray#inkr Source]* [[CPC Palette]] - some more details This explains why the Amstrad engineers used the following values to adapt the old jpg|Master colour palette to the new 12-bit palette on the Amstrad Plus:chart* 0% became #0Cpc 6128 farbtabelle.jpg|Farbtabelle* 50% became #6. They specifically chose #6 for the 50% value instead of the expected #7 or #8, to better match the real Amstrad CPC Cpc 6128 palettedes couleurs.jpg|Palette des couleurs* 100% became #FCpc 6128 tabla de colores.jpg|Tabla de colores</gallery>
<br>
=== Palette sorted by Firmware Hardware Colour Numbers === The firmware colour palette is sorted by luminance value.
{| class="wikitable"
|-
|-
!Firmware Number
!Hardware Number
!Colour NameFirmware Number
!R %
!G %
!ASIC
!Colour
!Colour Name
!German Name
!French Name
!Spanish Name
|-
| 0(40h) || 54h 13 ||Black 50|| 050|| 0|| 050|| #000666||bgcolor="#000000808080"||| White || Weiß || Blanc || Blanco
|-
| 1(41h) || 44h (or 50h13) ||Blue 50|| 0|| 050|| 50|| #006666||bgcolor="#000080808080"||| White || Weiß || Blanc || Blanco
|-
| 2(42h) || 55h ||Bright Blue 19 || 0|| 0100||10050|| #00F0F6||bgcolor="#0000ff00ff80"||| Sea Green || Seegrün || Vert marin || Verde marino
|-
| 3(43h) || 5Ch 25 ||Red 100|| 50100|| 0|| 050|| #600FF6||bgcolor="#800000ffff80"||| Pastel Yellow || Pastellgelb || Jaune pastel || Amarillo pastel
|-
| 4(44h) || 58h 1 ||Magenta || 50 0|| 0|| 50|| #606006||bgcolor="#800080000080"||| Blue || Blau || Bleu || Azul
|-
| 5(45h) || 5Dh 7 ||Mauve || 50100|| 0||10050|| #60FF06||bgcolor="#8000ffff0080"||| Purple || Purpur || Pourpre || Púrpura
|-
| 6(46h) || 4Ch ||Bright Red ||10010 || 0|| 050|| 50|| #F00066||bgcolor="#ff0000008080"||| Cyan || Blaugrün || Turquoise || Ciano
|-
| 7|| 45h (or 48h47h) ||Purple 16 ||100|| 050|| 50|| #F06F66||bgcolor="#ff0080ff8080"||| Pink || Rosa || Rose || Rosa
|-
| 8(48h) || 4Dh ||Bright Magenta (7) ||100|| 0||10050|| #F0FF06||bgcolor="#ff00ffff0080"||| Purple || Purpur || Pourpre || Púrpura
|-
| 9(49h) || 56h (25) ||Green 100|| 0100|| 50|| 0|| #060FF6||bgcolor="#008000ffff80"||| Pastel Yellow || Pastellgelb || Jaune pastel || Amarillo pastel
|-
|10(4Ah) || 46h 24 ||Cyan 100||100|| 0|| 50|| 50|| #066FF0||bgcolor="#008080ffff00"||| Bright Yellow || Hellgelb || Jaune vif || Amarillo brillante
|-
|11(4Bh) || 57h 26 ||Sky Blue 100|| 0|| 50100||100|| #06FFFF||bgcolor="#0080ffffffff"||| Bright White || Leuchtendweiß || Blanc brillant || Blanco brillante
|-
|12(4Ch) || 5Eh 6 ||Yellow 100|| 50|| 50 0|| 0|| #660F00||bgcolor="#808000ff0000"||| Bright Red || Hellrot || Rouge vif || Rojo brillante
|-
|13|| 40h (or 41h4Dh) ||White 8 || 50100|| 50 0|| 50100||#666F0F||bgcolor="#808080ff00ff"||| Bright Magenta|| helles Magenta || Magenta vif || Magenta brillante
|-
|14(4Eh) || 5Fh 15 ||Pastel Blue 100|| 50|| 50||100 0|| #66FF60||bgcolor="#8080ffff8000"||| Orange || Orange || Orange || Naranja
|-
|15(4Fh) || 4Eh ||Orange 17 ||100|| 50|| 0100|| #F60F6F|| bgcolor="#ff8000ff80ff"||| Pastel Magenta|| Pastell-magenta || Magenta pastel || Magenta pastel
|-
|16(50h) || 47h (1) ||Pink 0||100|| 50 0|| 50|| #F66006||bgcolor="#ff8080000080"||| Blue || Blau || Bleu || Azul
|-
|17(51h) || 4Fh (19) ||Pastel Magenta 0||100|| 50||100|| #F6F0F6||bgcolor="#ff80ff00ff80"||| Sea Green || Seegrün || Vert marin || Verde marino
|-
|18|| (52h ) ||Bright Green 18 || 0||100|| 0|| #0F0||bgcolor="#00ff00"||| Bright Green || Hellgrün || Vert vif || Verde brillante
|-
|19|| 42h (or 51h53h) ||Sea Green 20 || 0||100|| 50100|| #0F60FF||bgcolor="#00ff8000ffff"||| Bright Cyan || helles Blaugrün || Turquoise vif || Ciano brillante
|-
|20(54h) || 53h ||Bright Cyan 0 || 0||100 0||100 0|| #0FF000||bgcolor="#00ffff000000"||| Black || Schwarz || Noir || Negro
|-
|21(55h) || 5Ah 2 ||Lime 0|| 50 0||100|| 0|| #6F000F||bgcolor="#80ff000000ff"||| Bright Blue || Hellblau || Bleu vif || Azul brillante
|-
|22(56h) || 59h 9 ||Pastel Green 0|| 50||100|| 50 0|| #6F6060||bgcolor="#80ff80008000"||| Green || Grün || Vert || Verde
|-
|23(57h) || 5Bh 11 ||Pastel Cyan 0|| 50||100||100|| #6FF06F||bgcolor="#80ffff0080ff"||| Sky Blue || Himmelblau || Bleu ciel || Azul cielo
|-
|24(58h) || 4Ah 4 ||Bright Yellow ||100||10050|| 0|| 50|| #FF0606||bgcolor="#ffff00800080"||| Magenta || Magenta || Magenta || Magenta
|-
|25(59h) || 22 || 50||100|| 50|| #6F6|| bgcolor="#80ff80" | || Pastel Green || Pastellgrün || Vert pastel || Verde pastel|-| 43h 26 (or 49h5Ah) ||Pastel Yellow 21 || 50||100|| 0|| #6F0|| bgcolor="#80ff00" | || Lime || Limonengrün || Vert citron || Verde lima|-| 27 (5Bh) || 23 || 50||100||100|| #6FF|| bgcolor="#80ffff" | || Pastel Cyan || Pastell-blaugrün|| Turquoise pastel|| Ciano pastel|-| 28 (5Ch) || 3 || 50|| 0|| 0||#FF6600||bgcolor="#ffff80800000"||| Red || Rot || Rouge || Rojo|-| 29 (5Dh) || 5 || 50|| 0||100|| #60F|| bgcolor="#8000ff" | || Mauve || Hellviolett || Mauve || Malva
|-
|2630 (5Eh) || 4Bh 12 || 50|| 50|| 0|| #660|| bgcolor="#808000" | || Yellow || Gelb || Jaune || Amarillo|-| 31 (5Fh) ||Bright White 14 ||10050||10050||100|| #FFF66F||bgcolor="#ffffff8080ff"||| Pastel Blue || Pastellblau || Bleu pastel || Azul pastel
|}
 
Note: We can observe that the official Amstrad names of some colours are a bit silly: "red" is in fact brown, "yellow" is in fact khaki and "white" is in fact grey.
<br>
=== Green Screen Colours Intensities ===
On a green screenThe 0%, where all colours 50%, and 100% values in the above tables are shades of unsaturated green"should-be" values. However, the colours real hardware doesn't exactly match that intensities. The actual intensities depend on the luminance mixing (in BASIC coloursR,G,B tied together via resistors) are in order of increasing intensity. Black is darkest green, white is brightest greenon chipset (classic CPC, or newer ASIC ones), and colour 13 is a medium greenon the load applied by external hardware (Monitor, or TV set).
The luminance (Y) On an actual Amstrad CPC, the half-intensity colour signal is not exactly correlated measured to be closer to 40% rather than the actual luminance of colour images broadcast in RGBexpected 50%. This was verified by [[Grim]] and independently confirmed by [[Nocash]]. [https://www.grimware. We have other valuesorg/doku.php/documentations/devices/gatearray#inkr Source]* [[CPC Palette]] - some more details
This explains why the Amstrad preferred engineers used the following values to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited adapt the number of brightness levels old colour palette to 21 (for example, colours 9 and 6 would have had the same luminance).new 12-bit palette on the Amstrad Plus:* 0% became #0* 50% became #6. They opted specifically chose #6 for a table the 50% value instead of 27 linear brightness steps. They assigned values of 1 (1kΩ) for bluethe expected #7 or #8, 3 (3.3kΩ) for red, and 9 (10kΩ) for greento better match the real Amstrad CPC palette.* 100% became #F
<br>
=== To calculate the luminance value Green Screen Colours ===
'''Red''' On a green screen, where all colours are shades of unsaturated green, the firmware colours are in order of increasing intensity. Black is darkest green, bright white is brightest green, and firmware colour 13 is a medium green.
0% =&gt; do The luminance (Y) is not add anything exactly correlated to the actual luminance of colour images broadcast in RGB. Amstrad preferred to propose a completely different image system, not comparable to a conversion to monochrome, which would have limited the number of brightness levels to 21 (for example, colours 9 and 6 would have had the same luminance).
50% =&gt; add They opted for a table of 27 linear brightness steps. They assigned values of 1 (1kΩ) for blue, 3 (3.3kΩ) for red, and 9 (10kΩ) for green.
100% =&gt; add 6 === To calculate the luminance value ====
'''GreenRed'''
*0% =&gt; do not add anything *50% =&gt; add 3 *100% =&gt; add 6
50% =&gt; add 9 '''Green'''
*0% =&gt; do not add anything *50% =&gt; add 9 *100% =&gt; add 18
'''Blue'''
*0% =&gt; do not add anything  *50% =&gt; add 1  *100% =&gt; add 2
<br>
11,404
edits