Difference between revisions of "Tiles"
(→Tilemap Registers) |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 19: | Line 19: | ||
The first set of Tilemap manipulation registers are shown below: | The first set of Tilemap manipulation registers are shown below: | ||
− | {| | + | {| class="wikitable" |
!Attribute | !Attribute | ||
!Address | !Address | ||
|- | |- | ||
− | |TL0_CONTROL_REG|| | + | |TL0_CONTROL_REG|| $AF:0200 |
|- | |- | ||
− | |TL0_START_ADDY_L|| | + | |TL0_START_ADDY_L|| $AF:0201 |
|- | |- | ||
− | |TL0_START_ADDY_M|| | + | |TL0_START_ADDY_M|| $AF:0202 |
|- | |- | ||
− | |TL0_START_ADDY_H|| | + | |TL0_START_ADDY_H|| $AF:0203 |
|- | |- | ||
− | |TL0_TOTAL_X_SIZE_L|| | + | |TL0_TOTAL_X_SIZE_L|| $AF:0204 |
|- | |- | ||
− | |TL0_TOTAL_X_SIZE_H|| | + | |TL0_TOTAL_X_SIZE_H|| $AF:0205 |
|- | |- | ||
− | |TL0_TOTAL_Y_SIZE_L|| | + | |TL0_TOTAL_Y_SIZE_L|| $AF:0206 |
|- | |- | ||
− | |TL0_TOTAL_Y_SIZE_H|| | + | |TL0_TOTAL_Y_SIZE_H|| $AF:0207 |
|- | |- | ||
− | |TL0_WINDOW_X_POS_L|| | + | |TL0_WINDOW_X_POS_L|| $AF:0208 |
|- | |- | ||
− | |TL0_WINDOW_X_POS_H|| | + | |TL0_WINDOW_X_POS_H|| $AF:0209 |
|- | |- | ||
− | |TL0_WINDOW_Y_POS_L|| | + | |TL0_WINDOW_Y_POS_L|| $AF:020A |
|- | |- | ||
− | |TL0_WINDOW_Y_POS_H|| | + | |TL0_WINDOW_Y_POS_H|| $AF:020B |
|- | |- | ||
|TL1_CONTROL_REG || $AF:020C | |TL1_CONTROL_REG || $AF:020C | ||
Line 89: | Line 89: | ||
|LUT|| Bits 3-5 (8 possible LUTs) | |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. | Each Tileset has registers composed of a total of 4 bytes for manipulation, starting at $AF:0280 and spanning through to $AF:029F. | ||
Line 94: | Line 95: | ||
The first set of Tileset manipulation registers are shown below: | The first set of Tileset manipulation registers are shown below: | ||
− | {| | + | {| class="wikitable" |
!Attribute | !Attribute | ||
!Address | !Address | ||
Line 106: | Line 107: | ||
|TILESET0_ADDY_CFG||= $AF:0283 | |TILESET0_ADDY_CFG||= $AF:0283 | ||
|- | |- | ||
− | |TILESET1_ADDY_L || = $AF0284 |- | + | |TILESET1_ADDY_L || = $AF0284 |
− | |TILESET2_ADDY_L || = $AF0288 |- | + | |- |
− | |TILESET3_ADDY_L || = $AF028C |- | + | |TILESET2_ADDY_L || = $AF0288 |
− | |TILESET4_ADDY_L || = $AF0290 |- | + | |- |
− | |TILESET5_ADDY_L || = $AF0294 |- | + | |TILESET3_ADDY_L || = $AF028C |
− | |TILESET6_ADDY_L || = $AF0298 |- | + | |- |
+ | |TILESET4_ADDY_L || = $AF0290 | ||
+ | |- | ||
+ | |TILESET5_ADDY_L || = $AF0294 | ||
+ | |- | ||
+ | |TILESET6_ADDY_L || = $AF0298 | ||
+ | |- | ||
|TILESET7_ADDY_L || = $AF029C | |TILESET7_ADDY_L || = $AF029C | ||
|} | |} | ||
+ | For each successive tileset, add +4 to the address registers. | ||
+ | |||
+ | The Addresses are specified with the Video RAM offset of $B0:0000 (i.e. substract $B0:0000 from the address when writing the address). | ||
+ | |||
+ | The Tileset Configuration Register is shown below: | ||
+ | {| {{Wikitable}} | ||
+ | !Attribute | ||
+ | !Bit | ||
+ | |- | ||
+ | |TileStride 256|| Bit 3 | ||
+ | |} | ||
+ | |||
+ | Setting the TileStride allows designer to provide tiles as a bitmap sheet 256 pixel wide. |
Latest revision as of 19:53, 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 | = $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 |
For each successive tileset, add +4 to the address registers.
The Addresses are specified with the Video RAM offset of $B0:0000 (i.e. substract $B0:0000 from the address when writing the address).
The Tileset Configuration Register is shown below:
Attribute | Bit |
---|---|
TileStride 256 | Bit 3 |
Setting the TileStride allows designer to provide tiles as a bitmap sheet 256 pixel wide.