Difference between revisions of "Palettes"

From SpecNext official Wiki
Jump to: navigation, search
(Created page with "This article should be updated with links to downloadable palette files of the available ZX Spectrum NEXT palettes for various editing tools.")
 
 
(10 intermediate revisions by 6 users not shown)
Line 1: Line 1:
This article should be updated with links to downloadable palette files of the available ZX Spectrum NEXT palettes for various editing tools.
+
To increase the number of available colours on screen, the Spectrum Next supports palletized colours.
 +
 
 +
Colour IDs in [[Layer 2]], [[Tilemap]] and [[Sprites]] are always taken as palette indices. Colour values in the ULA are mapped to the palette as fixed indices, or can be taken as partial palette indices if Enhanced ULA mode is enabled. The palette entry numbers for standard ULA mode are: 0-7 for the standard ink colors, 8-15 for BRIGHT ink colors, 16-23 for standard paper and border colors, and 24-31 for BRIGHT paper colors.
 +
 
 +
With Enhanced ULA mode enabled, the {{NextRegNo|$42}} defines how particular ULA attribute breaks into INK and PAPER color. The INK colors are mapped from index 0 in palette, PAPER (and BORDER) colors are mapped from index 128, except when in "full ink" mode (ink mask = 255), then PAPER and BORDER color is taken from {{NextRegNo|$4A}}.
 +
 
 +
Palette configuration can be done through registers $40-$44 and $6B. {{NextRegNo|$43}} sets which palette is being set up. There are two palettes each for Layer 2, Sprites, Tilemap and ULA; which one of the two is used for each is selected using the lower bits of {{NextRegNo|$43}} and in {{NextRegNo|$6B}}.
 +
 
 +
Once a palette is selected, {{NextRegNo|$40}} sets the palette entry number to set up; you can then send the color to set it to on {{NextRegNo|$41}} ''or'' {{NextRegNo|$44}} which then auto-increment. $41 is used for sending 8-bit colours in RRRGGGBB format; the "missing" third blue bit is set to an OR between the other two. $44 is used for sending 9-bit colours in two byte packets; the first byte sent should be RRRGGGBB as with $41, and the second byte's LSB fills in the third blue bit. For Layer 2 color the top bit in second byte signals "priority" colour, which makes particular Layer 2 pixel to be drawn on top of everything else, overriding current order of layers.
 +
 
 +
 
 +
[[File:256-palette.png|left|thumb| Default 256 colour 8-bit indexed palette.]]

Latest revision as of 18:30, 31 October 2024

To increase the number of available colours on screen, the Spectrum Next supports palletized colours.

Colour IDs in Layer 2, Tilemap and Sprites are always taken as palette indices. Colour values in the ULA are mapped to the palette as fixed indices, or can be taken as partial palette indices if Enhanced ULA mode is enabled. The palette entry numbers for standard ULA mode are: 0-7 for the standard ink colors, 8-15 for BRIGHT ink colors, 16-23 for standard paper and border colors, and 24-31 for BRIGHT paper colors.

With Enhanced ULA mode enabled, the Enhanced ULA Ink Color Mask ($42) defines how particular ULA attribute breaks into INK and PAPER color. The INK colors are mapped from index 0 in palette, PAPER (and BORDER) colors are mapped from index 128, except when in "full ink" mode (ink mask = 255), then PAPER and BORDER color is taken from Transparency colour fallback Register ($4A).

Palette configuration can be done through registers $40-$44 and $6B. Enhanced ULA Control Register ($43) sets which palette is being set up. There are two palettes each for Layer 2, Sprites, Tilemap and ULA; which one of the two is used for each is selected using the lower bits of Enhanced ULA Control Register ($43) and in Tilemap Control Register ($6B).

Once a palette is selected, Palette Index Register ($40) sets the palette entry number to set up; you can then send the color to set it to on Palette Value Register ($41) or Enhanced ULA Palette Extension ($44) which then auto-increment. $41 is used for sending 8-bit colours in RRRGGGBB format; the "missing" third blue bit is set to an OR between the other two. $44 is used for sending 9-bit colours in two byte packets; the first byte sent should be RRRGGGBB as with $41, and the second byte's LSB fills in the third blue bit. For Layer 2 color the top bit in second byte signals "priority" colour, which makes particular Layer 2 pixel to be drawn on top of everything else, overriding current order of layers.


Default 256 colour 8-bit indexed palette.