Palettes: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
mNo edit summary
m (Split to "colors" page)
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:Palmap.png|thumb]]
[[File:Palmap.png|thumb|Palette organisation]]
There are 2 banks of 256 palettes of 16 colors available, made of 16bit RGB definitions.
There are 2 banks (one usable at a time) of 256 palettes available. Each palette has 16 entries, the first is the transparent index ("color 0"), the 15 others are real colors, made of 16bit RGB definitions.
Palettes are located at $400000 in the 68k's memory map.


The bank used for video output is set by registers REG_PALBANK1 ($3A000F) and REG_PALBANK0 ($3A001F).
[[Sprites|Sprite]] tiles can use any of the 256 palettes, while the [[Fix layer|fix]] tiles can only use the first 16.


Only one bank can be used at a time. They can be switched by using register ???
The maximum number of colors on screen without [[timer interrupt]] tricks is: 256 palettes * 15 colors = '''3840''' (out of 2^16 = 65536).


'''Color definition word''':
=Color format=
D
<span style="color:red;">R0</span>
<span style="color:green;">G0</span>
<span style="color:blue;">B0</span>
<span style="color:red;">R4 R3 R2 R1</span>
<span style="color:green;">G4 G3 G2 G1</span>
<span style="color:blue;">B4 B3 B2 B1</span>


{{Template:16BitRegister|[[Dark bit]]|1|R0|1|G0|1|B0|1|R4|1|R3|1|R2|1|R1|1|G4|1|G3|1|G2|1|G1|1|B4|1|B3|1|B2|1|B1|1|}}
See [[colors]].


[[Sprites|Sprite]] tiles can use any of the 256 palettes, while [[Fix layer|fix]] tiles can only use the 16 firsts.
=Special colors=


Max colors on screen without [[68k interrupts|RLI]] tricks: 256*16=4096 out of 2^16=65536.
There are two special colors used:


Palettes are stored in [[Palette RAM]].
*The first color of the palette bank ($400000) is the [[reference color]] for the video output. It has to be $8000 (black) otherwise monitors won't be happy and other colors won't be displayed correctly.
*The last color of the palette bank ($401FFE) is the [[backdrop color]] (the color of the backmost "layer" on the screen). Caused by line buffers in {{Chipname|NEO-B1}} being cleared to $FFF (Last color of last palette).
 
=Access=
 
Palettes are located at $400000 in the [[68k memory map]], and they're physically stored in the [[palette RAM]].
 
Byte access may be allowed, but it will trash the corresponding word's other byte (/WE are tied together). Maybe {{Chipname|NEO-C1}} doesn't assert {{Sig|PAL|PAL}} during byte access ?
 
The palettes can be read and written at any time. During active display, since the CPU has priority over rendering, the color read or written will be displayed during at least one pixel, resulting in noticeable "snow" if multiple colors are updated. A workaround is to update the palette only during blanking (horizontal or vertical), over multiple frames if necessary.
 
The bank can be set by writing a byte to registers {{Reg|REG_PALBANK1}} or {{Reg|REG_PALBANK0}}.


[[Category:Video system]]
[[Category:Video system]]

Revision as of 04:06, 12 October 2016

Palette organisation

There are 2 banks (one usable at a time) of 256 palettes available. Each palette has 16 entries, the first is the transparent index ("color 0"), the 15 others are real colors, made of 16bit RGB definitions.

Sprite tiles can use any of the 256 palettes, while the fix tiles can only use the first 16.

The maximum number of colors on screen without timer interrupt tricks is: 256 palettes * 15 colors = 3840 (out of 2^16 = 65536).

Color format

See colors.

Special colors

There are two special colors used:

  • The first color of the palette bank ($400000) is the reference color for the video output. It has to be $8000 (black) otherwise monitors won't be happy and other colors won't be displayed correctly.
  • The last color of the palette bank ($401FFE) is the backdrop color (the color of the backmost "layer" on the screen). Caused by line buffers in NEO-B1 being cleared to $FFF (Last color of last palette).

Access

Palettes are located at $400000 in the 68k memory map, and they're physically stored in the palette RAM.

Byte access may be allowed, but it will trash the corresponding word's other byte (/WE are tied together). Maybe NEO-C1 doesn't assert PAL during byte access ?

The palettes can be read and written at any time. During active display, since the CPU has priority over rendering, the color read or written will be displayed during at least one pixel, resulting in noticeable "snow" if multiple colors are updated. A workaround is to update the palette only during blanking (horizontal or vertical), over multiple frames if necessary.

The bank can be set by writing a byte to registers REG_PALBANK1 or REG_PALBANK0.