<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.c256foenix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Boris+Dietrich</id>
	<title>C256 Foenix Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.c256foenix.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Boris+Dietrich"/>
	<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Special:Contributions/Boris_Dietrich"/>
	<updated>2026-05-17T16:25:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=67</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=67"/>
		<updated>2019-04-11T17:50:36Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | -- ignored --||-- ignored --&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2040||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=66</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=66"/>
		<updated>2019-04-11T17:50:07Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | --ignored--||--ignored--&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2040||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=65</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=65"/>
		<updated>2019-04-11T17:47:56Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=64</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=64"/>
		<updated>2019-04-11T17:47:40Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||colspan=8;style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=63</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=63"/>
		<updated>2019-04-11T17:47:22Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000|colspan=8|style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=62</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=62"/>
		<updated>2019-04-11T17:47:01Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000|colspan=8||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=61</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=61"/>
		<updated>2019-04-11T17:46:46Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||colspan=8|style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00 00 00 00||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FF FF FF 00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00 00 88 00||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EE FF AA 00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC 44 CC 00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55 CC 00 00||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA 00 00 00||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77 EE EE 00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 55 88 DD 00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00 44 66 00||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 77 77 FF 00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33 33 33 00||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77 77 77 00||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66 FF AA 00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF 88 00 00||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BB BB BB 00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=60</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=60"/>
		<updated>2019-04-11T17:45:31Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is B -&amp;gt; G -&amp;gt; R -&amp;gt; A.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT of 16 base colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values (BGRA)&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 00000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF00||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 00008800||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | EEFFAA00||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC00||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 55CC0000||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | AA000000||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | 77EEEE00||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | 5588DD00||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 00446600||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | 7777FF00||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 33333300||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 77777700||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | 66FFAA00||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | FF880000||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB00||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=59</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=59"/>
		<updated>2019-04-11T17:42:03Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* VICKY - the graphics engine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel index value $00 is always transparent, regardless if it's bitmap, tile or sprite. The respective values of the first 4 bytes represented in the LUT are thus always ignored. &lt;br /&gt;
&lt;br /&gt;
Despite the fact that there is an ALPHA value in the LUT, it is not supported/used at all.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=58</id>
		<title>Sprites</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=58"/>
		<updated>2019-04-11T15:56:28Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sprite is a computer graphics term for a two-dimensional bitmap that is integrated into a larger scene.&lt;br /&gt;
&lt;br /&gt;
Originally sprites referred to independent objects that are composited together, by hardware, with other elements such as a background or tiles. The composition occurs as each scan line is prepared for the video output device, without involvement of the main CPU and without the need for a full-screen frame buffer. Sprites can be positioned or altered by setting attributes used during the hardware composition process. &lt;br /&gt;
&lt;br /&gt;
Vicky is able to render 32 non-multiplexed sprites with a resolution of 32x32 pixels each. Just as bitmaps, a [[LUT]] is required for selecting 256 out of 16.777.216 colors.&lt;br /&gt;
&lt;br /&gt;
== Sprite Registers ==&lt;br /&gt;
&lt;br /&gt;
Each Sprite has registers composed of a total of 8 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:02FF. The first one of each 8 byte block is always the control register with the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Bit&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_Enable||= $01&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT0||= $02&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT1||= $04&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT2||= $08&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH0||= $10&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH1||= $20&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH2||= $40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is an overview of all the attributes of the 8 byte block:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Address&lt;br /&gt;
|-&lt;br /&gt;
|SP00_CONTROL_REG||= $AF02*0&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_L||= $AF02*1&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_M||= $AF02*2&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_H||= $AF02*3&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_L||= $AF02*4&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_H||= $AF02*5&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_L||= $AF02*6&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_H||= $AF02*7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=SID&amp;diff=57</id>
		<title>SID</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=SID&amp;diff=57"/>
		<updated>2019-04-11T11:14:55Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Memory Addresses of the FPGA SID in the C256 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Memory Addresses of the FPGA SID in the C256==&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!address&lt;br /&gt;
!function&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E400||frequency voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E401||frequency voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E402||pulse wave duty cycle voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E403||pulse wave duty cycle voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E404||control register voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E405||attack/decay duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E406||sustain/release duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E407||frequency voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E408||frequency voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E409||pulse wave duty cycle voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40A||pulse wave duty cycle voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40B||control register voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40C||attack/decay duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40D||sustain/release duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40E||frequency voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40F||frequency voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E410||pulse wave duty cycle voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E411||pulse wave duty cycle voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E412||control register voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E413||attack/decay duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E414||sustain/release duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E415||filter cutoff frequency low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E416||filter cutoff frequency high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E417||filter resonance and routing&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E418||filter mode and main volume control&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E419||paddle x value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41A||paddle y value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41B||oscillator voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41C||envelope voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41D||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41E||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41F||not used&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=SID&amp;diff=56</id>
		<title>SID</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=SID&amp;diff=56"/>
		<updated>2019-04-11T11:14:41Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Memory Addresses of the FPGA SID in the C256==&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!address (decimal) !!function&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E400||frequency voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E401||frequency voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E402||pulse wave duty cycle voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E403||pulse wave duty cycle voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E404||control register voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E405||attack/decay duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E406||sustain/release duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E407||frequency voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E408||frequency voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E409||pulse wave duty cycle voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40A||pulse wave duty cycle voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40B||control register voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40C||attack/decay duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40D||sustain/release duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40E||frequency voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E40F||frequency voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E410||pulse wave duty cycle voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E411||pulse wave duty cycle voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E412||control register voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E413||attack/decay duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E414||sustain/release duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E415||filter cutoff frequency low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E416||filter cutoff frequency high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E417||filter resonance and routing&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E418||filter mode and main volume control&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E419||paddle x value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41A||paddle y value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41B||oscillator voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41C||envelope voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41D||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41E||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AF:E41F||not used&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=SID&amp;diff=55</id>
		<title>SID</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=SID&amp;diff=55"/>
		<updated>2019-04-11T11:13:41Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: Created page with &amp;quot;==Memory Addresses of the FPGA SID in the C256== {| {{Wikitable}} !address (decimal) !!function |- | $AFE400||frequency voice 1 low byte |- | $AFE401||frequency voice 1 high b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Memory Addresses of the FPGA SID in the C256==&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!address (decimal) !!function&lt;br /&gt;
|-&lt;br /&gt;
| $AFE400||frequency voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE401||frequency voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE402||pulse wave duty cycle voice 1 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE403||pulse wave duty cycle voice 1 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE404||control register voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AFE405||attack/decay duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AFE406||sustain/release duration voice 1&lt;br /&gt;
|-&lt;br /&gt;
| $AFE407||frequency voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE408||frequency voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE409||pulse wave duty cycle voice 2 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40A||pulse wave duty cycle voice 2 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40B||control register voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40C||attack/decay duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40D||sustain/release duration voice 2&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40E||frequency voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE40F||frequency voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE410||pulse wave duty cycle voice 3 low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE411||pulse wave duty cycle voice 3 high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE412||control register voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AFE413||attack/decay duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AFE414||sustain/release duration voice 3&lt;br /&gt;
|-&lt;br /&gt;
| $AFE415||filter cutoff frequency low byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE416||filter cutoff frequency high byte&lt;br /&gt;
|-&lt;br /&gt;
| $AFE417||filter resonance and routing&lt;br /&gt;
|-&lt;br /&gt;
| $AFE418||filter mode and main volume control&lt;br /&gt;
|-&lt;br /&gt;
| $AFE419||paddle x value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41A||paddle y value (not used on C256)&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41B||oscillator voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41C||envelope voice 3 (read only)&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41D||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41E||not used&lt;br /&gt;
|-&lt;br /&gt;
| $AFE41F||not used&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=54</id>
		<title>Sprites</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=54"/>
		<updated>2019-04-11T11:01:35Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Sprite Registers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SPRITES ==&lt;br /&gt;
&lt;br /&gt;
Sprite is a computer graphics term for a two-dimensional bitmap that is integrated into a larger scene.&lt;br /&gt;
&lt;br /&gt;
Originally sprites referred to independent objects that are composited together, by hardware, with other elements such as a background or tiles. The composition occurs as each scan line is prepared for the video output device, without involvement of the main CPU and without the need for a full-screen frame buffer. Sprites can be positioned or altered by setting attributes used during the hardware composition process. &lt;br /&gt;
&lt;br /&gt;
Vicky is able to render 32 non-multiplexed sprites with a resolution of 32x32 pixels each. Just as bitmaps, a [[LUT]] is required for selecting 256 out of 16.777.216 colors.&lt;br /&gt;
&lt;br /&gt;
== Sprite Registers ==&lt;br /&gt;
&lt;br /&gt;
Each Sprite has registers composed of a total of 8 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:02FF. The first one of each 8 byte block is always the control register with the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Bit&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_Enable||= $01&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT0||= $02&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT1||= $04&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT2||= $08&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH0||= $10&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH1||= $20&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH2||= $40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is an overview of all the attributes of the 8 byte block:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Address&lt;br /&gt;
|-&lt;br /&gt;
|SP00_CONTROL_REG||= $AF02*0&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_L||= $AF02*1&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_M||= $AF02*2&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_H||= $AF02*3&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_L||= $AF02*4&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_H||= $AF02*5&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_L||= $AF02*6&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_H||= $AF02*7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=53</id>
		<title>Sprites</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=53"/>
		<updated>2019-04-11T11:01:12Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SPRITES ==&lt;br /&gt;
&lt;br /&gt;
Sprite is a computer graphics term for a two-dimensional bitmap that is integrated into a larger scene.&lt;br /&gt;
&lt;br /&gt;
Originally sprites referred to independent objects that are composited together, by hardware, with other elements such as a background or tiles. The composition occurs as each scan line is prepared for the video output device, without involvement of the main CPU and without the need for a full-screen frame buffer. Sprites can be positioned or altered by setting attributes used during the hardware composition process. &lt;br /&gt;
&lt;br /&gt;
Vicky is able to render 32 non-multiplexed sprites with a resolution of 32x32 pixels each. Just as bitmaps, a [[LUT]] is required for selecting 256 out of 16.777.216 colors.&lt;br /&gt;
&lt;br /&gt;
== Sprite Registers ==&lt;br /&gt;
&lt;br /&gt;
Each Sprite has registers composed of a total of 8 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:02FF. The first one of each 8 byte block is always the control register with the following attributes:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Bit&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_Enable||= $01&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT0||= $02&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT1||= $04&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_LUT2||= $08&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH0||= $10&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH1||= $20&lt;br /&gt;
|-&lt;br /&gt;
|SPRITE_DEPTH2||= $40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is an overview of all the attributes of the 8 byte block:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Attribute&lt;br /&gt;
!Bit&lt;br /&gt;
|-&lt;br /&gt;
|SP00_CONTROL_REG||= $AF02*0&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_L||= $AF02*1&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_M||= $AF02*2&lt;br /&gt;
|-&lt;br /&gt;
|SP00_ADDY_PTR_H||= $AF02*3&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_L||= $AF02*4&lt;br /&gt;
|-&lt;br /&gt;
|SP00_X_POS_H||= $AF02*5&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_L||= $AF02*6&lt;br /&gt;
|-&lt;br /&gt;
|SP00_Y_POS_H||= $AF02*7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=52</id>
		<title>Sprites</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Sprites&amp;diff=52"/>
		<updated>2019-04-11T10:58:46Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: Created page with &amp;quot;== SPRITES ==  Sprite is a computer graphics term for a two-dimensional bitmap that is integrated into a larger scene.  Originally sprites referred to independent objects that...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SPRITES ==&lt;br /&gt;
&lt;br /&gt;
Sprite is a computer graphics term for a two-dimensional bitmap that is integrated into a larger scene.&lt;br /&gt;
&lt;br /&gt;
Originally sprites referred to independent objects that are composited together, by hardware, with other elements such as a background or tiles. The composition occurs as each scan line is prepared for the video output device, without involvement of the main CPU and without the need for a full-screen frame buffer. Sprites can be positioned or altered by setting attributes used during the hardware composition process. &lt;br /&gt;
&lt;br /&gt;
Vicky is able to render 32 non-multiplexed sprites with a resolution of 32x32 pixels each. Just as bitmaps, a [[LUT]] is required for selecting 256 out of 16.777.216 colors.&lt;br /&gt;
&lt;br /&gt;
== Sprite Registers ==&lt;br /&gt;
&lt;br /&gt;
Each Sprite has registers composed of a total of 8 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:02FF. The first one of each 8 byte block is always the Control Register with the following attributes:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|SPRITE_Enable||= $01&lt;br /&gt;
|SPRITE_LUT0||= $02&lt;br /&gt;
|SPRITE_LUT1||= $04&lt;br /&gt;
|SPRITE_LUT2||= $08&lt;br /&gt;
|SPRITE_DEPTH0||= $10&lt;br /&gt;
|SPRITE_DEPTH1||= $20&lt;br /&gt;
|SPRITE_DEPTH2||= $40&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is an overview of all the attributes of the 8 byte block:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|SP00_CONTROL_REG||= $AF02*0&lt;br /&gt;
|SP00_ADDY_PTR_L||= $AF0201&lt;br /&gt;
|SP00_ADDY_PTR_M||= $AF0202&lt;br /&gt;
|SP00_ADDY_PTR_H||= $AF0203&lt;br /&gt;
|SP00_X_POS_L||= $AF0204&lt;br /&gt;
|SP00_X_POS_H||= $AF0205&lt;br /&gt;
|SP00_Y_POS_L||= $AF0206&lt;br /&gt;
|SP00_Y_POS_H||= $AF0207&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=51</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=51"/>
		<updated>2019-04-11T10:23:00Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Bitmap Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=50</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=50"/>
		<updated>2019-04-11T10:22:32Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Bitmap Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
**Bit 0 = disable/enable&lt;br /&gt;
**Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=49</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=49"/>
		<updated>2019-04-11T10:22:24Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Bitmap Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
***Bit 0 = disable/enable&lt;br /&gt;
***Bit 1-3 = Target LUT address located at AF:2000 and up.&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=48</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=48"/>
		<updated>2019-04-11T10:20:27Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the lower 10 bits of target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=47</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=47"/>
		<updated>2019-04-11T10:10:46Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Adressing anything in the LUT is achieved by simply dividing the target color address by 4.&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=46</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=46"/>
		<updated>2019-04-11T10:08:34Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* VICKY - the graphics engine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenario 32 lines of 32 pixels), that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=45</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=45"/>
		<updated>2019-04-11T10:07:26Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=44</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=44"/>
		<updated>2019-04-11T10:07:06Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Bitmap Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
*BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
*BM_START_ADDY_L         = $AF0141&lt;br /&gt;
*BM_START_ADDY_M         = $AF0142&lt;br /&gt;
*BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=43</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=43"/>
		<updated>2019-04-11T10:06:15Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
BM_START_ADDY_L         = $AF0141&lt;br /&gt;
BM_START_ADDY_M         = $AF0142&lt;br /&gt;
BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In summary, the LUT has $400 (1024) bytes - and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=42</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=42"/>
		<updated>2019-04-11T10:03:56Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
BM_START_ADDY_L         = $AF0141&lt;br /&gt;
BM_START_ADDY_M         = $AF0142&lt;br /&gt;
BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In Summary, the LUT has $400 bytes and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!Hex Values&lt;br /&gt;
!Decimal RGB Value&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | 000000||0, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | FFFFFF||255, 255, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | 880000||136, 0, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | AAFFEE||170, 255, 238&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | CC44CC||204, 68, 204&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | 00CC55||0, 204, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | 0000AA||0, 0, 170&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | EEEE77||238, 238, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | DD8855||221, 136, 85&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | 664400||102, 68, 0&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | FF7777||255, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | 333333||51, 51, 51&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | 777777||119, 119, 119&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | AAFF66||170, 255, 102&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | 0088FF||0, 136, 255&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | BBBBBB||187, 187, 187&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=41</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=41"/>
		<updated>2019-04-11T07:37:17Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* LUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
BM_START_ADDY_L         = $AF0141&lt;br /&gt;
BM_START_ADDY_M         = $AF0142&lt;br /&gt;
BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In Summary, the LUT has $400 bytes and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!RGB Value&lt;br /&gt;
!Values&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||0, 0, 0|| style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | #000000&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||255, 255, 255||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | #FFFFFF&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||136, 0, 0||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | #880000&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||170, 255, 238||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | #AAFFEE&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||204, 68, 204||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | #CC44CC&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||0, 204, 85||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | #00CC55&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||0, 0, 170||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | #0000AA&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||238, 238, 119||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | #EEEE77&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||221, 136, 85||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | #DD8855&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||102, 68, 0||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | #664400&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||255, 119, 119||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | #FF7777&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||51, 51, 51||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | #333333&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||119, 119, 119||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | #777777&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||170, 255, 102||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | #AAFF66&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||0, 136, 255||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | #0088FF&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||187, 187, 187||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | #BBBBBB&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=40</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=40"/>
		<updated>2019-04-11T07:37:03Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
The bitmap is stored anywhere in $B0 bank memory. If the bitmap is supposed to start at $B0:0000, the BM_START_ADDY has to be set to $00:0000.&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140 (Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;br /&gt;
BM_START_ADDY_L         = $AF0141&lt;br /&gt;
BM_START_ADDY_M         = $AF0142&lt;br /&gt;
BM_START_ADDY_H         = $AF0143&lt;br /&gt;
&lt;br /&gt;
== LUT ==&lt;br /&gt;
&lt;br /&gt;
A LUT, namely a Look-Up-Table, stores a selection of colors. 256 colors are supported in the video composition, which are selectable out of 16.777.216 colors in the 24 Bit RGB color scheme. The LUT also contains an 8 Bit alpha channel, though it isn't supported. In Summary, the LUT has $400 bytes and the order for composing it is R value -&amp;gt; G value -&amp;gt; B value -&amp;gt; A value.&lt;br /&gt;
&lt;br /&gt;
As an example, if you would want to compose a LUT with the original 16 C64 VIC colors, it would look like this:&lt;br /&gt;
&lt;br /&gt;
{| {{Wikitable}}&lt;br /&gt;
!Address&lt;br /&gt;
!RGB Value&lt;br /&gt;
!Web Colour&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2000||0, 0, 0|| style=&amp;quot;text-align:center; background-color:#000000; color:#ffffff&amp;quot; | #000000&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2004||255, 255, 255||style=&amp;quot;text-align:center; background-color:#FFFFFF; color:#000000&amp;quot; | #FFFFFF&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2008||136, 0, 0||style=&amp;quot;text-align:center; background-color:#880000; color:#ffffff&amp;quot; | #880000&lt;br /&gt;
|-&lt;br /&gt;
|$AF:200C||170, 255, 238||style=&amp;quot;text-align:center; background-color:#AAFFEE; color:#000000&amp;quot; | #AAFFEE&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2010||204, 68, 204||style=&amp;quot;text-align:center; background-color:#CC44CC; color:#ffffff&amp;quot; | #CC44CC&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2014||0, 204, 85||style=&amp;quot;text-align:center; background-color:#00CC55; color:#000000&amp;quot; | #00CC55&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2018||0, 0, 170||style=&amp;quot;text-align:center; background-color:#0000AA; color:#ffffff&amp;quot; | #0000AA&lt;br /&gt;
|-&lt;br /&gt;
|$AF:201C||238, 238, 119||style=&amp;quot;text-align:center; background-color:#EEEE77; color:#000000&amp;quot; | #EEEE77&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2020||221, 136, 85||style=&amp;quot;text-align:center; background-color:#DD8855; color:#000000&amp;quot; | #DD8855&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2024||102, 68, 0||style=&amp;quot;text-align:center; background-color:#664400; color:#ffffff&amp;quot; | #664400&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2028||255, 119, 119||style=&amp;quot;text-align:center; background-color:#FF7777; color:#000000&amp;quot; | #FF7777&lt;br /&gt;
|-&lt;br /&gt;
|$AF:202C||51, 51, 51||style=&amp;quot;text-align:center; background-color:#333333; color:#ffffff&amp;quot; | #333333&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2030||119, 119, 119||style=&amp;quot;text-align:center; background-color:#777777; color:#ffffff&amp;quot; | #777777&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2034||170, 255, 102||style=&amp;quot;text-align:center; background-color:#AAFF66; color:#000000&amp;quot; | #AAFF66&lt;br /&gt;
|-&lt;br /&gt;
|$AF:2038||0, 136, 255||style=&amp;quot;text-align:center; background-color:#0088FF; color:#ffffff&amp;quot; | #0088FF&lt;br /&gt;
|-&lt;br /&gt;
|$AF:203C||187, 187, 187||style=&amp;quot;text-align:center; background-color:#BBBBBB; color:#000000&amp;quot; | #BBBBBB&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=39</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=39"/>
		<updated>2019-04-11T07:21:18Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixels&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 pixels for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140&lt;br /&gt;
(Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=38</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=38"/>
		<updated>2019-04-11T07:20:56Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, Vicky has to read 1 line of bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140&lt;br /&gt;
(Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=37</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=37"/>
		<updated>2019-04-11T07:20:01Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, VICKY has to read 1 line of Bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140&lt;br /&gt;
(Bit[0] - Enable, Bit[3:1] - LUT Select)&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=36</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=36"/>
		<updated>2019-04-11T07:19:35Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, VICKY has to read 1 line of Bitmap (640 pixels), 1 line of tiles for each layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single line interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140&lt;br /&gt;
; Bit[0] - Enable, Bit[3:1] - LUT Select,&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=35</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=35"/>
		<updated>2019-04-11T07:17:59Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte per pixel)&lt;br /&gt;
* 32 [[Sprites]] with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of [[tiles]] with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
During the video layer composition, VICKY has to read 1 line of Bitmap (640 pixels), 1 Line of Tiles for each Layer (4x 640 pixels) and all the lines that are part of the 32 Sprites (worst case scenarion 32 Lines of 32 Pixels) that are displayed on that line. Then a composition and Priority encoding is done. In order to establish a priority, in other words, to know which pixel will be in front, Vicky needs to store 10 lines of 640 Pixels then scan the lot and determine which one will be displayed.&lt;br /&gt;
&lt;br /&gt;
640 + 640 + 640 + 640 + 640 + (32 * 32) = 4224 Pixels are to be read during a single display interval. The pixel rate is 200Mbytes/sec, 5ns, so the overall operation takes 21.12us, without calculating the overhead in the FPGA to go from one process to the other.&lt;br /&gt;
&lt;br /&gt;
The Pixel value $00 is always transparant and the assigned value to a transparant pixel is automaticly the background color. Despite the fact that there is an ALPHA value, it is not supported.&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bitmap Layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BM_CONTROL_REG          = $AF0140&lt;br /&gt;
; Bit[0] - Enable, Bit[3:1] - LUT Select,&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=34</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=34"/>
		<updated>2019-04-11T07:09:10Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
* 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Mstr_Ctrl_Text_Mode_En&lt;br /&gt;
|= $01&lt;br /&gt;
|Enable the Text Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Text_Overlay&lt;br /&gt;
|= $02&lt;br /&gt;
|Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Graph_Mode_En&lt;br /&gt;
|= $04&lt;br /&gt;
|Enable the Graphic Mode&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Bitmap_En&lt;br /&gt;
|= $08&lt;br /&gt;
|Enable the Bitmap Module In Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_TileMap_En&lt;br /&gt;
|= $10&lt;br /&gt;
|Enable the Tile Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Sprite_En&lt;br /&gt;
|= $20&lt;br /&gt;
|Enable the Sprite Module in Vicky&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_GAMMA_En&lt;br /&gt;
|= $40&lt;br /&gt;
|Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
|-&lt;br /&gt;
|Mstr_Ctrl_Disable_Vid&lt;br /&gt;
|= $80&lt;br /&gt;
|This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=33</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=33"/>
		<updated>2019-04-11T07:05:32Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
* 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
*Mstr_Ctrl_Text_Mode_En  = $01        ::Enable the Text Mode&lt;br /&gt;
*Mstr_Ctrl_Text_Overlay  = $02        ::Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
*Mstr_Ctrl_Graph_Mode_En = $04        ::Enable the Graphic Mode&lt;br /&gt;
*Mstr_Ctrl_Bitmap_En     = $08        ::Enable the Bitmap Module In Vicky&lt;br /&gt;
*Mstr_Ctrl_TileMap_En    = $10        ::Enable the Tile Module in Vicky&lt;br /&gt;
*Mstr_Ctrl_Sprite_En     = $20        ::Enable the Sprite Module in Vicky&lt;br /&gt;
*Mstr_Ctrl_GAMMA_En      = $40        ::Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
*Mstr_Ctrl_Disable_Vid   = $80        ::This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=32</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=32"/>
		<updated>2019-04-11T07:04:58Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
* 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
* 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
* 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
* Text Mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
*Mstr_Ctrl_Text_Mode_En  = $01        Enable the Text Mode&lt;br /&gt;
*Mstr_Ctrl_Text_Overlay  = $02        Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
*Mstr_Ctrl_Graph_Mode_En = $04        Enable the Graphic Mode&lt;br /&gt;
*Mstr_Ctrl_Bitmap_En     = $08        Enable the Bitmap Module In Vicky&lt;br /&gt;
*Mstr_Ctrl_TileMap_En    = $10        Enable the Tile Module in Vicky&lt;br /&gt;
*Mstr_Ctrl_Sprite_En     = $20        Enable the Sprite Module in Vicky&lt;br /&gt;
*Mstr_Ctrl_GAMMA_En      = $40        Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
*Mstr_Ctrl_Disable_Vid   = $80        This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=31</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=31"/>
		<updated>2019-04-11T07:03:14Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* Modes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
- 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
- 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
- 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
- Text Mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
Mstr_Ctrl_Text_Mode_En  = $01        Enable the Text Mode&lt;br /&gt;
Mstr_Ctrl_Text_Overlay  = $02        Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
Mstr_Ctrl_Graph_Mode_En = $04        Enable the Graphic Mode&lt;br /&gt;
Mstr_Ctrl_Bitmap_En     = $08        Enable the Bitmap Module In Vicky&lt;br /&gt;
Mstr_Ctrl_TileMap_En    = $10        Enable the Tile Module in Vicky&lt;br /&gt;
Mstr_Ctrl_Sprite_En     = $20        Enable the Sprite Module in Vicky&lt;br /&gt;
Mstr_Ctrl_GAMMA_En      = $40        Enable the GAMMA correction - The Analog and DVI have different color values, the GAMMA is great to correct the difference&lt;br /&gt;
Mstr_Ctrl_Disable_Vid   = $80        This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=30</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=30"/>
		<updated>2019-04-11T07:02:40Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
- 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
- 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
- 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
- Text Mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modes ==&lt;br /&gt;
Modes are enabled and disabled via the Vicky Master Control Register at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
Mstr_Ctrl_Text_Mode_En  = $01       ; Enable the Text Mode&lt;br /&gt;
Mstr_Ctrl_Text_Overlay  = $02       ; Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
Mstr_Ctrl_Graph_Mode_En = $04       ; Enable the Graphic Mode&lt;br /&gt;
Mstr_Ctrl_Bitmap_En     = $08       ; Enable the Bitmap Module In Vicky&lt;br /&gt;
Mstr_Ctrl_TileMap_En    = $10       ; Enable the Tile Module in Vicky&lt;br /&gt;
Mstr_Ctrl_Sprite_En     = $20       ; Enable the Sprite Module in Vicky&lt;br /&gt;
Mstr_Ctrl_GAMMA_En      = $40       ; this Enable the GAMMA correction - The Analog and DVI have different color value, the GAMMA is great to correct the difference&lt;br /&gt;
Mstr_Ctrl_Disable_Vid   = $80       ; This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=29</id>
		<title>VICKY</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=VICKY&amp;diff=29"/>
		<updated>2019-04-11T07:02:15Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: Created page with &amp;quot;== VICKY - the graphics engine ==  &amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:  - 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VICKY - the graphics engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Vicky&amp;quot; is the name of the graphics engine of the C256 Foenix. It supports:&lt;br /&gt;
&lt;br /&gt;
- 640x480@60FPS Max Resolution @ 256 Colors (1 Byte Per pixel)&lt;br /&gt;
- 32 Sprites with a resolution of 32x32 pixel&lt;br /&gt;
- 4 layers of tiles with a resolution of 16x16 for each tile&lt;br /&gt;
- Text Mode&lt;br /&gt;
&lt;br /&gt;
Modes are enabled and disabled via the [[Vicky Master Control Register]] at $AF0000 via the control bits:&lt;br /&gt;
&lt;br /&gt;
Mstr_Ctrl_Text_Mode_En  = $01       ; Enable the Text Mode&lt;br /&gt;
Mstr_Ctrl_Text_Overlay  = $02       ; Enable the Overlay of the text mode on top of Graphic Mode (the Background Color is ignored)&lt;br /&gt;
Mstr_Ctrl_Graph_Mode_En = $04       ; Enable the Graphic Mode&lt;br /&gt;
Mstr_Ctrl_Bitmap_En     = $08       ; Enable the Bitmap Module In Vicky&lt;br /&gt;
Mstr_Ctrl_TileMap_En    = $10       ; Enable the Tile Module in Vicky&lt;br /&gt;
Mstr_Ctrl_Sprite_En     = $20       ; Enable the Sprite Module in Vicky&lt;br /&gt;
Mstr_Ctrl_GAMMA_En      = $40       ; this Enable the GAMMA correction - The Analog and DVI have different color value, the GAMMA is great to correct the difference&lt;br /&gt;
Mstr_Ctrl_Disable_Vid   = $80       ; This will disable the Scanning of the Video hence giving 100% bandwith to the CPU&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Main_Page&amp;diff=28</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Main_Page&amp;diff=28"/>
		<updated>2019-04-11T06:58:17Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= C256 FOENIX WIKI = &lt;br /&gt;
----&lt;br /&gt;
== SYSTEM SPECIFICATIONS == &lt;br /&gt;
The System is composed of 5 major blocks:&lt;br /&gt;
:: CPU: WDC 65C816 @ 14.318Mhz (Running @ 3.3V)&lt;br /&gt;
:: MEMORY: 2MBytes of Static RAM @ 10ns, 512K NOR Flash @ 55ns&lt;br /&gt;
:: GRAPHIC: [[VICKY]] Graphic Chipset - 640x480@60FPS Max Resolution @ 256Colors (1 Byte Per pixel), Includes Sprites, Tiles, Text Mode, DVI/VGA Output&lt;br /&gt;
:: SOUND: [[BEATRIX]] Sound Controller Chipset - Manages 2x OPL2, FPGASID, 16Bit Stereo CODEC&lt;br /&gt;
:: SYSTEM: [[GAVIN]] System Controller Chipset - Manages 1x SuperIO (Floppy, Serial Port, Parallel Port, MIDI, Keyboard Mouse), DMA, Interrupts, Etc...&lt;br /&gt;
&lt;br /&gt;
== GAVIN - SYSTEM CONTROLLER ==&lt;br /&gt;
&lt;br /&gt;
== VICKY - GRAPHIC ENGINE ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BEATRIX - SOUND CONTROLLER ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mediawiki Guides ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.c256foenix.com/index.php?title=Main_Page&amp;diff=27</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.c256foenix.com/index.php?title=Main_Page&amp;diff=27"/>
		<updated>2019-04-11T06:54:45Z</updated>

		<summary type="html">&lt;p&gt;Boris Dietrich: /* SYSTEM SPECIFICATIONS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki has been installed.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
== Getting started ==&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;br /&gt;
&lt;br /&gt;
= C256 FOENIX WIKI = &lt;br /&gt;
----&lt;br /&gt;
== SYSTEM SPECIFICATIONS == &lt;br /&gt;
The System is composed of 5 major blocks:&lt;br /&gt;
:: CPU: WDC 65C816 @ 14.318Mhz (Running @ 3.3V)&lt;br /&gt;
:: MEMORY: 2MBytes of Static RAM @ 10ns, 512K NOR Flash @ 55ns&lt;br /&gt;
:: GRAPHIC: [[VICKY]] Graphic Chipset - 640x480@60FPS Max Resolution @ 256Colors (1 Byte Per pixel), Includes Sprites, Tiles, Text Mode, DVI/VGA Output&lt;br /&gt;
:: SOUND: [[BEATRIX]] Sound Controller Chipset - Manages 2x OPL2, FPGASID, 16Bit Stereo CODEC&lt;br /&gt;
:: SYSTEM: [[GAVIN]] System Controller Chipset - Manages 1x SuperIO (Floppy, Serial Port, Parallel Port, MIDI, Keyboard Mouse), DMA, Interrupts, Etc...&lt;br /&gt;
&lt;br /&gt;
== GAVIN - SYSTEM CONTROLLER ==&lt;br /&gt;
&lt;br /&gt;
== VICKY - GRAPHIC ENGINE ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BEATRIX - SOUND CONTROLLER ==&lt;/div&gt;</summary>
		<author><name>Boris Dietrich</name></author>
		
	</entry>
</feed>