clip( x, y, w, h )
Sets the clipping region in the draw state.
The x coordinate of the upper left corner of the clipping rectangle.

The y coordinate of the upper left corner of the clipping rectangle.

The width of the clipping rectangle, in pixels.

The height of the clipping rectangle, in pixels.

When the draw state has a clipping rectangle set, all draw operations will not affect any pixels in the graphics buffer outside of this rectangle. This is useful for reserving parts of the screen

When called without arguments, the function resets the clipping region to be the entire screen and returns the previous state as 4 return values x, y, w, h (since PICO-8 0.2.0d).

Technical notes[edit | edit source]

The actual current GPU clipping rectangle is memory-mapped and may be read or written directly with peek() and poke():

  • 0x5f20 / 24352: x_begin (no pixels < x_begin will be drawn)
  • 0x5f21 / 24353: y_begin (no pixels < y_begin will be drawn)
  • 0x5f22 / 24354: x_end (no pixels >= x_end will be drawn)
  • 0x5f23 / 24355: y_end (no pixels >= x_end will be drawn)

Important: These values are not in the same format as the arguments to clip(). See the draw state documentation for details.

Examples[edit | edit source]

-- set the clipping region to exclude 8 pixels at the top and bottom
clip(0, 8, 128, 112)

-- these circles are clipped to (0-127,8-119)
circfill(10, 10, 8, 8)
circfill(10, 118, 8, 8)

-- reset the clipping region to full screen

-- these circles are not clipped
circfill(40, 10, 8, 7)
circfill(40, 118, 8, 7)

-- get the current clip rectangle from its memory-mapped addresses
clip example

See also[edit | edit source]

Community content is available under CC-BY-SA unless otherwise noted.