Background overview
Root / Documentation / [.]
Created:
* Summary
Each screen of the system has two background layers (sometimes abbreviated as BG layers) available for use. These background layers provide a basic tile map system. Tiles can be placed on each layer, and each layer can be scrolled independently. Layers can also be saved as or loaded from `SCR` resources.
* Interface
** Commands
| sbs:page/docs-ptc-bgclr[`BGCLR`] | Clears the background layer(s) specified. |
| sbs:page/docs-ptc-bgpage[`BGPAGE`] | Sets the current screen to modify the background layers of. |
| sbs:page/docs-ptc-bgput[`BGPUT`] | Places a tile on a background layer. |
| sbs:page/docs-ptc-bgfill[`BGFILL`] | Fills a rectangular region of a background layer with a tile. |
| sbs:page/docs-ptc-bgofs[`BGOFS`] | Scrolls a background layer. |
| sbs:page/docs-ptc-bgread[`BGREAD`] | Reads a tile from a background layer. |
| sbs:page/docs-ptc-bgcopy[`BGCOPY`] | Copies a region of tiles to another part of the layer. |
| sbs:page/docs-ptc-bgclip[`BGCLIP`] | Sets clipping boundaries for both background layers. |
** Functions
{| sbs:page/docs-ptc-bgchk[`BGCHK`] | Gets the current animation state of a background layer.}
** Resources
| `BGU0U`-`BGU3U`| `CHR` tile resources for the upper screen. |
| `BGU0L`-`BGU3L`| `CHR` tile resources for the lower screen. |
| `SCU0U`-`SCU1U`| `SCR` resources for the upper screen. |
| `SCU0L`-`SCU1L`| `SCR` resources for the lower screen. |
| `COL0U` | `COL` resource for upper screen tiles. Shared with the text console. |
| `COL0L` | `COL` resource for lower screen tiles. Shared with the lower screen text console and panel background. |
* Additional Information
Each background layer is a 64x64 grid of 4-bit color 8x8 pixel tiles. Tile resources are shared between both layers, but are separate by screen. Layer 0 is the foreground layer and layer 1 is the background layer - there is no way to switch the order of these layers.
Each tile's data is stored in a 16-bit number. The format for a single tile's data is broken down into bits as follows:
```none
PPPPVHTT TTTTTTTT
15 8 7 0
```
Within this value, the components are
- `P` is 4 bits [0-15] representing the color palette of the tile
- `V` is 1 bit [0-1] representing if the tile is flipped vertically
- `H` is 1 bit [0-1] representing if the tile is flipped horizontally
- `T` is 10 bits [0-1023] representing the tile character to use.
Every BG command that accepts or returns a tile value has three forms:
- one that takes each component as separate arguments
- one that accepts combined data as a number
- one that accepts combined data as a 4-digit hexadecimal string.
For example, `BGPUT` can be used in each of these ways:
```
X=5:Y=7
' components
TILE=32
H=0
V=1
PAL=9
' combined (number)
TD=TILE+H*1024+V*2048+PAL*4096
' combined (string)
TD$=HEX$(TD,4)
' all three of these will put the same tile
BGPUT 0,X,Y,TILE,PAL,H,V
BGPUT 0,X+1,Y,TD
BGPUT 0,X+2,Y,TD$
```
No posts yet (will you be the first?)