Difference between revisions of "Tiles"

From C256 Foenix Wiki
Jump to navigation Jump to search
(Created page with "Vicky II support 8 tilesets and 4 tilemaps. === Tiles === Tiles are tiny reusable bitmaps that are 16 pixels wide by 16 pixels high. === Tilesets === Tiles are combined in t...")
 
Line 17: Line 17:
 
Each Tilemap has registers composed of a total of 12 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:022F.  
 
Each Tilemap has registers composed of a total of 12 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:022F.  
  
The first set of sprite manipulation registers are shown below:
+
The first set of Tilemap manipulation registers are shown below:
  
 
{| {{Wikitable}}
 
{| {{Wikitable}}
Line 80: Line 80:
 
|}
 
|}
  
 +
'''NOTE: each tile referenced by the tilemap uses 2 bytes (16 bits).'''  The first byte is the tile number.  The second byte is configured as follows:
 +
{| {{Wikitable}}
 +
!Attribute
 +
!Bit
 +
|-
 +
|Tileset|| Bit 0-2 (8 possible tileset)
 +
|-
 +
|LUT|| Bits 3-5 (8 possible LUTs)
 +
|}
 
== Tileset Registers ==
 
== Tileset Registers ==
 +
Each Tileset has registers composed of a total of 4 bytes for manipulation, starting at $AF:0280 and spanning through to $AF:029F.
 +
 +
The first set of Tileset manipulation registers are shown below:
 +
 +
{| {{Wikitable}}
 +
!Attribute
 +
!Address
 +
|-
 +
|TILESET0_ADDY_L||= $AF:0280
 +
|-
 +
|TILESET0_ADDY_M||= $AF:0281
 +
|-
 +
|TILESET0_ADDY_H||= $AF:0282
 +
|-
 +
|TILESET0_ADDY_CFG||= $AF:0283
 +
|-
 +
|TILESET1_ADDY_L || = $AF0284 |-
 +
|TILESET2_ADDY_L || = $AF0288 |-
 +
|TILESET3_ADDY_L || = $AF028C |-
 +
|TILESET4_ADDY_L || = $AF0290 |-
 +
|TILESET5_ADDY_L || = $AF0294 |-
 +
|TILESET6_ADDY_L || = $AF0298 |-
 +
|TILESET7_ADDY_L || = $AF029C
 +
|}

Revision as of 20:41, 27 June 2021

Vicky II support 8 tilesets and 4 tilemaps.

Tiles

Tiles are tiny reusable bitmaps that are 16 pixels wide by 16 pixels high.

Tilesets

Tiles are combined in tilesets. Tilesets usually contain only unique tiles to save memory. Tilesets can contain a maximum of 256 tiles. Each tile has a unique number in the tileset. Tilesets must be stored in video RAM for Vicky II to be able to render them.

Tilemaps

Tilemaps combine tiles from the tilesets to create a world map. Tilemaps can be up to 1024 tiles wide by 1024 tiles high. Tilemaps must be stored in video RAM in order for Vicky II to render them.


Tilemap Registers

Each Tilemap has registers composed of a total of 12 bytes for manipulation, starting at $AF:0200 and spanning through to $AF:022F.

The first set of Tilemap manipulation registers are shown below:

Attribute Address
TL0_CONTROL_REG = $AF:0200
TL0_START_ADDY_L = $AF:0201
TL0_START_ADDY_M = $AF:0202
TL0_START_ADDY_H = $AF:0203
TL0_TOTAL_X_SIZE_L = $AF:0204
TL0_TOTAL_X_SIZE_H = $AF:0205
TL0_TOTAL_Y_SIZE_L = $AF:0206
TL0_TOTAL_Y_SIZE_H = $AF:0207
TL0_WINDOW_X_POS_L = $AF:0208
TL0_WINDOW_X_POS_H = $AF:0209
TL0_WINDOW_Y_POS_L = $AF:020A
TL0_WINDOW_Y_POS_H = $AF:020B
TL1_CONTROL_REG $AF:020C
TL2_CONTROL_REG $AF:0218
TL3_CONTROL_REG $AF:0224

For each successive tilemap, add +12 to the address registers.

The tilemap control register (TLx_CONTROL_REG) is always the first byte of the 12 byte block. The register is configured as follows:

Attribute Bit
TILE_Enable = $01
TILE_Collision_On = $40

The Tilemap Total Size X and Y must be less than 1024.

The Tilemap Window Position X and Y are defined as follows:

Attribute Bit
Direction Bit 14 ($4000)
Scroll Bits 10-13 ($4xx to $3Cxx)
Position = 0 to $3FF

NOTE: each tile referenced by the tilemap uses 2 bytes (16 bits). The first byte is the tile number. The second byte is configured as follows:

Attribute Bit
Tileset Bit 0-2 (8 possible tileset)
LUT Bits 3-5 (8 possible LUTs)

Tileset Registers

Each Tileset has registers composed of a total of 4 bytes for manipulation, starting at $AF:0280 and spanning through to $AF:029F.

The first set of Tileset manipulation registers are shown below:

Attribute Address
TILESET0_ADDY_L = $AF:0280
TILESET0_ADDY_M = $AF:0281
TILESET0_ADDY_H = $AF:0282
TILESET0_ADDY_CFG = $AF:0283
TILESET1_ADDY_L - TILESET2_ADDY_L - TILESET3_ADDY_L - TILESET4_ADDY_L - TILESET5_ADDY_L - TILESET6_ADDY_L - TILESET7_ADDY_L = $AF029C