LAYER DIM x1,y1,x2,y2

sets the clip window for the current layer from (x1,y1) to (x2,y2). Areas of the layer outside this window are not visible. Note that all Layer 1 modes and Layer 0 share the same clip window; Layer 2, Layer 3 and the Sprite System have their own separate clip windows. Refer to Chapter 22 for more information on how clipping windows are defined using the Next Registers. The compound command:

LAYER CLEAR

will reset all layer information to defaults. This is also done by NEW. It resets banks, mode, Layer 2 enable status, layer offsets / clipping windows and layer ordering.

Tiling

Since straight graphics commands can be slow, NextBASIC provides a set of commands that can help recreate parts of, or entire Layer 2 and LoRes screens, very quickly; something that can be very useful especially when a lot of screen elements are being repeated. These screen elements are called tiles and much like their real-word counterparts, they are a self-contained graphical rectangular pattern. Tiles can be repeated as many times as we need them to, or be completely independent.

Each tile can be 8x8 pixels or 16x16 pixels in size. This allows a 16K bank to hold 256 8x8 tiles or 64 16x16 tiles. Tiles are numbered 0...255. Therefore, a complete set of 8x8 tiles occupies a single 16K bank, and a complete set of 16x16 tiles occupies four 16K banks. If you use 16x16 tiles, you can restrict the tile number used and therefore reduce the memory requirements (e.g. if you need 64 or fewer different tiles, only 1 16K bank is required). Additionally for tiles to be recalled, a special linear map, called a tilemap2, of 8-bit tile numbers is needed. The user can specify any width up to 2048 tiles; each row of tiles follows directly after the previous one.

The tilemap must be fully contained inside a single 16K bank. This gives a maximum tilemap size of 256x64, 128x128, 2048x8 etc.

Any pixels in a tile which are the same colour as the current global transparency colour will not be written to the screen. If you want to draw pixels containing the global transparency colour you can temporarily change it to another colour (not used in your tiles) using the PALETTE OVER command before using TILE. Alternatively, you can use the LAYER ERASE command (see the Quick erase and fill section above) to clear regions of the screen to the global transparency colour before drawing tiles on top.

Layer 2 and LoRes tilemaps are stored separately, so you can use both simultaneously. The TILE commands affect the currently selected layer/mode. These are:

TILE BANK n

which defines bank n as containing the tiles (up to 4 banks n...n+3 if 16x16 tiles).

TILE DIM n,offset,w,tilesize

defines bank n as containing the tilemap, starting at offset offset in the bank. The tilemap is width w (1–2048) and uses 8x8 (tilesize=8) or 16x16 (tilesize=16) tiles.

TILE
TILE AT x,y

Draws an entire screen from tilemap, from tile offset x,y in the tilemap (0,0 if not specified).

TILE w,h
TILE w,h AT x,y

2 You may remember that we spoke of tiles before, when initially discussing Layer 3 in Chapter 14. The principle is the same (a repeated rectangular pattern) but the specifics change (9-bit colour vs. 4-bit or 1-bit colour and 16x16 -or- 8x8 pixel tiles vs. ONLY 8x8 pixel tiles).


ZX Spectrum Next User Manual, 3rd Edition (ISBN 978-1-5272-5496-1), written and illustrated by Phoebus R. Dokos. Copyright © 2020-2024 Phoebus Dokos / SpecNext Ltd. Licensed under CC BY-NC-SA 4.0. This is a transcription and can contain errors; check any doubt against the printed page.