Rendering Functions

These functions handle all visual output: clearing the screen, drawing sprites, tilemaps, and geometric shapes.

clear

clear(colorIndex)

Clear the entire screen with a palette color.

Parameters:

colorIndex (number) – Palette index (0–15) used as the background color.

Call this once at the start of _draw() to reset the screen before drawing the new frame.

Warning

An out-of-range palette index is a fatal runtime error: it is printed to the output panel and stops the game loop.

clear(0)   -- black background
clear(12)  -- light blue background

sprite

sprite(index, x, y, width, height)

Draw one sprite or a rectangular block of sprites from the sprite sheet.

Parameters:
  • index (number) – Sprite index in the sprite sheet (0–255).

  • x (number) – Destination x position in pixels.

  • y (number) – Destination y position in pixels.

  • width (number) – Optional width in sprite units (1 unit = 8 pixels). Defaults to 1.

  • height (number) – Optional height in sprite units (1 unit = 8 pixels). Defaults to 1.

width and height may be omitted to draw a single 8 x 8 sprite. Larger values draw a block of tiles from the sprite sheet. Positions are floored to whole pixels by the renderer.

sprite(0, 10, 20)         -- single sprite at (10, 20)
sprite(32, 40, 50, 2, 1)  -- 2-sprite-wide strip starting at index 32
sprite(0, x, y, 1, 2)     -- 1 wide, 2 tall (8x16 px character)

map

map(x, y)

Draw the tilemap created in the map editor.

Parameters:
  • x (number) – X position in pixels where the map starts.

  • y (number) – Y position in pixels where the map starts.

This draws the entire map at once. The map uses the same 8 x 8 tile size as the sprite sheet.

map(0, 0)  -- draw the map at the world origin

To read map tiles from Lua, use mget(). To inspect sprite flags on a tile sprite, use fget().

camera

camera(x, y)

Set the camera offset. All subsequent drawing calls are shifted by this offset.

Parameters:
  • x (number) – Horizontal camera offset in pixels.

  • y (number) – Vertical camera offset in pixels.

A common pattern is to center the camera on the player inside _draw(). Call camera(0, 0) to reset the camera.

-- Center on the player (320x180 screen)
camera(player.x - 160, player.y - 90)

line

line(colorIndex, x0, y0, x1, y1)

Draw a straight line between two points.

Parameters:
  • colorIndex (number) – Palette color index.

  • x0 (number) – Start x position.

  • y0 (number) – Start y position.

  • x1 (number) – End x position.

  • y1 (number) – End y position.

line(8, 0, 0, 319, 179)  -- diagonal across the screen

rect

rect(colorIndex, x, y, width, height)

Draw an outlined (unfilled) rectangle.

Parameters:
  • colorIndex (number) – Palette color index.

  • x (number) – Top-left x position.

  • y (number) – Top-left y position.

  • width (number) – Width in pixels.

  • height (number) – Height in pixels.

rect(7, 20, 20, 32, 16)  -- white outline rectangle

fill_rect

fill_rect(colorIndex, x, y, width, height)

Draw a filled rectangle.

Parameters:
  • colorIndex (number) – Palette color index.

  • x (number) – Top-left x position.

  • y (number) – Top-left y position.

  • width (number) – Width in pixels.

  • height (number) – Height in pixels.

fill_rect(11, 0, 160, 320, 20)  -- green ground strip
fill_rect(8, 30, 40, 10, 10)    -- small red square

Note

line(), rect(), and fill_rect() do not validate colorIndex: an out-of-range value silently draws with a garbage color instead of raising an error. Only clear() and set_col() check their palette index.