Anonymous

ULAplus: Difference between revisions

From Sinclair Wiki
395 bytes added ,  10 February 2014
no edit summary
mNo edit summary
No edit summary
Line 2: Line 2:
[[Category:Spectrum]]
[[Category:Spectrum]]
[[Category:Video]]
[[Category:Video]]
[[File:ZX64_palette.png|frame|256 Colour Palette]]
The ULAplus specification is an enhanced ULA for the ZX Spectrum designed by Cheveron, Nikki, CSmith and KLP2. It can be implemented as a plug-in replacement for the ULA in the 48K machines, in emulators, or in clones. It is designed to make it easy to re-colour existing software with the minimum of effort.
The ULAplus specification is an enhanced ULA for the ZX Spectrum designed by Cheveron, Nikki, CSmith and KLP2. It can be implemented as a plug-in replacement for the ULA in the 48K machines, in emulators, or in clones. It is designed to make it easy to re-colour existing software with the minimum of effort.
==Colour Modes==
The current specification allows for four colour spaces:
* original spectrum behaviour
* RGB
* HSL (not yet finalized)
* CMYK
Any hardware implementing ULAplus must implement at least the original spectrum attributes and one other to be considered a ULAplus device.


==I/O Ports==
==I/O Ports==
 
ULAplus is controlled by two ports.
The mode is controlled by two ports.


[[ZXI_standard|0xBF3B]] is the register port (write only)
[[ZXI_standard|0xBF3B]] is the register port (write only)
Line 25: Line 33:
           The sub-group must be zero. Sub-group entries 1-63 are reserved for mode specific controls.</pre>
           The sub-group must be zero. Sub-group entries 1-63 are reserved for mode specific controls.</pre>


[[ZXI_standard|0xFF3B]] is the data (read/write)
[[ZXI_standard|0xFF3B]] is the data port (read/write)
 
When the palette group is selected, the byte written will describe the colour.
 
When the mode group is selected, the byte output will be interpreted as follows:


When the palette group is selected, the byte output will be
<pre>Bit 0: Palette mode select; on when set.</pre>
interpreted as follows:


===RGB colour space===
[[File:ULAplus_rgb.png|frame|G3R3B2 encoding]]
For a device using the RGB colour space the palette entry is interpreted as follows
<pre>Bits 0-1: Blue intensity.
<pre>Bits 0-1: Blue intensity.
Bits 2-4: Red intensity.
Bits 2-4: Red intensity.
Bits 5-7: Green intensity.</pre>
Bits 5-7: Green intensity.</pre>


This mode uses a sub-set of 9-bit RGB. The low bit is duplicated (Bb becomes Bbb). This gives access to a fixed half the potential 512 colour palette. The jump in intensity happens in the lower range where it is less noticeable.
This colour space uses a sub-set of 9-bit RGB. The low bit is duplicated (Bb becomes Bbb). This gives access to a fixed half the potential 512 colour palette. The jump in intensity happens in the lower range where it is less noticeable.
 
When the mode group is selected, the byte output will be interpreted as follows:
 
<pre>Bit 0: Palette mode select; on when set.</pre>


==Software==
==Software==