0% found this document useful (0 votes)
31 views

PICO-8 Cheat Sheet (4k - Dark)

The PICO-8 Cheat Sheet provides a comprehensive overview of the PICO-8 fantasy console, including specifications, comments, types, shortcuts, audio functions, and memory layout. It outlines various programming commands, control structures, and functions for creating games and applications using the Lua subset. Additionally, it includes resources for further exploration and development within the PICO-8 environment.

Uploaded by

kaboubi7015
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

PICO-8 Cheat Sheet (4k - Dark)

The PICO-8 Cheat Sheet provides a comprehensive overview of the PICO-8 fantasy console, including specifications, comments, types, shortcuts, audio functions, and memory layout. It outlines various programming commands, control structures, and functions for creating games and applications using the Lua subset. Additionally, it includes resources for further exploration and development within the PICO-8 environment.

Uploaded by

kaboubi7015
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

PICO-8 Cheat Sheet PICO-8

v0.2.5g
PICO-8 Resources: https://www.lexaloffle.com/pico-8.php?page=resources By @Liquidream - v1.5
Inspired by @LightBWK‘s

SPECIFICATIONS COMMENTS & TYPES SHORTCUTS COL PALETTES AUDIO STRINGS & GLYPHS RAM MEMORY LAYOUT
Display: 128x128,16-cols -- THIS IS A COMMENT -- COMMON SFX(N,[CH],[OFFSET],[LEN]) S="HELLO" S=[[HELLO 0X0 GFX
Input: 6-Button controllers --[[ THIS IS AMULTI- 0 1 2 3 -16 -15 -14 -13 MULTILINE]] 0X1000 GFX2/Map2 (Shared)
ALT+ENTER Fullscreen MUSIC([N,[FADE,[MASK]]])
Carts: 32k data enc.PNG files LINE COMMEN
T ]] CTRL+R Reload/Run 4 5 6 7 -12 -11 -10 -9 PRINT(S,[X,Y,COL]) 0X2000 Map
Sound: 4-channel,64 chip blerps
Code: Lua subset
O=NIL N=23 -- GLOBAL SCOPE
LOCAL S="TEXT"-- LOCAL SCOPE
CTRL+S Quick-Save
8 9 10 11 -8 -7 -6 -5
TRACKER ?S,[X,Y,COL] -- SHORTHAND
#S -- LENGTH
0X3000
0X3100
GFX Flags
Song
CTRL+M Mute/Unmute
(Max 8192 code tokens) ENTER/P Pause Menu C D F G A C D F G A "STR="..S -- CONCAT 0X3200 SFX
12 13 14 15 -4 -3 -2 -1
CPU: 8MHz,4M lua vm insts/sec TABLES ESC Console/Editor # #
S D
# # #
G H J
# #
2 3
# # #
5 6 7
CHR(VAL0,VAL1,...) 0X4300 User Data
Sprite:1 bank of 128 8x8 SPR's CTRL+6 Save Screenshot PAL(C0,C1,[P])--P:0=DRAW ORD(STR,[POS],[LEN]) 0X5600 Custom Font (If def.)
T={1,2,3,4} T={A="X",B=1} C D E F G A B C D E F G A B
(+ 128 shared) CTRL+7 Save Label Image PAL(TABLE,[P])--P:1=DISP SPLIT(STR,[SEP],[TO_NUM]) 0X5E00 Persistent Cart Data
ADD(T,VAL,[I]) DEL(T,VAL) Z X C V B N M Q W E R T Y U
Map: 128x32 Tilemap CTRL+8 Start GIF/video --P:2=2ND PAL SUB(STR,POS0,[POS1]) 0X5F00 Draw State
DELI(T,[I])
(+ 128x32 shared) CTRL+9 Save GIF/video PALT(COL, T) -- TRANS(BOOL) TOSTR(VAL,[FLAGS]) 0X5F40 Hardware State
PRINT(T[1]) -- 1-BASED
CTRL+P Toggle CPU Meter TONUM(VAL,[FLAGS]) 0X5F80 GPIO Pins (128 Bytes)
#T/COUNT(T[,VAL])
CONTROLS ALL(T) FOREACH(T,F) -- CODE EDITOR SCREEN X
EFFECT TYPE(VAL) 0X6000 Screen Data (8K)
2 CTRL+X,C,V Cut,Copy,Paste VOLUME 0x8000 User Data
PAIRS(T) IPAIRS(T) CAMERA([X,Y]) 0,0
T=PACK(...) CTRL+Z,Y Undo,Redo INSTRUMENT/CUSTOM 
INS.

0 1 × A,B,C=UNPACK(T,[I],[J]) CTRL+F Search


CLS([COL])
COLOR([COL])
Y
OCTAVE
TONE
MEMORY FUNCTIONS
5 CTRL+G Next Result CSTORE(DEST,SRC,LEN,[FILENAME])
PGET(X,Y)
4 FLOW CONTROL CTRL+H Next Res(all tabs) PSET(X,Y,[COL]) 127,127
--INSTRUMENT
0 Triangle
--EFFECT
0 None
MEMCPY(DEST_ADDR,SRC_ADDR,LEN)
MEMSET(DEST_ADDR,VAL,LEN)
3 ::LABEL:: -- LABEL CTRL+L Jump to Line No. FLIP()
CTRL+ , Jump Start,End 1 Tilt.Saw 1 Slide RELOAD(DEST,SRC,LEN,[FILENAME])
P1: Z,X | C,V | N,M GOTO LABEL -- JUMP CLIP([X,Y,W,H,CLIP_PREV]) 2 Saw 2 Vibrato
ALT+ , Prev,Next Func() POKE(ADDR,VAL1[,VAL2,...])
P2:SFED LSHIFT,A | TAB,Q IF (TRUE) CLS() -- INLINE IF 3 Square 3 Drop PEEK(ADDR,[N]) -- @ADDR
PAUSE: P/ENTER IF <CONDITION> THEN
CTRL+ ,
CTRL+W,E
Jump Word
Start,End Line
SHAPES 4 Pulse 4 Fade In PEEK2(ADDR) -- %ADDR
BTN([I],[P]) -- IF BLOCK CIRC(X,Y,R,[COL]) 5 Organ 5 Fade Out POKE2(ADDR,VAL)
CTRL+D Duplicate Line
BTNP([I],[P]) ELSEIF <CONDITION> THEN CIRCFILL(X,Y,R,[COL]) 6 Noise 6 Arp Fast PEEK4(ADDR) -- $ADDR
TAB Indent Selection
-- ELSEIF BLOCK LINE(X0,Y0,X1,Y1,[COL]) 7 Phaser 7 Arp Slow A = 0.5 N = -25792.5 POKE4(ADDR,VAL)
SHIFT+TAB Un-indent Sel.
COMMAND LINE ELSE CTRL+B Un/Comment Block OVAL(X0,Y0,X1,Y1,[COL]) B = 23130.5 O = 4 SERIAL(CH,ADDR,LEN)
HELP -- ELSE BLOCK CTRL+U HELP for keyword OVALFILL(X0,Y0,X1,Y1,[COL]) MATH C = 20767.5 P = -20032.5

SAVE <FILENAME>.P8 /.PNG END SHIFT+L,R,U,D,O,X: RECT(X0,Y0,X1,Y1,[COL]) -- NUMERIC RANGE


D
E
=
=
3
32125.5
Q
R
=
=
-2560.5
1
COROUTINES
LOAD <FILENAME>.P8 WHILE <CONDITION> DO RECTFILL(X0,Y0,X1,Y1,[COL]) -32768.0 .. 32767.99 C=COCREATE(FUNC)
F = -18402.5 S = -20128.5
RUN([PARAM]) IMPORT S.PNG -- WHILE BLOCK CTRL+J Hiragana FILLP([MASK]) MAX(X,Y) G = -1632.5 T = 6943.5 CORESUME(C,[...]) COSTATUS(C)
S/SPLORE EXPORT X.BIN/X.HTML BREAK -- EXIT LOOP EARLY CTRL+K Katakana MIN(X,Y) 0.75
H = 20927.5 U = 2 YIELD()
32768 16384 8192 4096
FOLDER MKDIR <DIR_NAME> END CTRL+P Puny Font MID(X,Y,Z) I = -19008.5 V = -2624.5
LS([DIR]) CD CLS INFO
REPEAT CTRL+TAB Next Tab 2048 1024 512 256 FLR(X) J = -26208.5 W = 31455.5 SYSTEM & DEBUG
SHUTDOWN REBOOT " +SHIFT Prev Tab CEIL(X) K = -20192.5 X = 5 TIME()/T()
SAVE/LOAD("@CLIP") -- REPEAT BLOCK 128 64 32 16
COS(A)
L = 0 Y = 3855.5
A)
0.5 0.0
UNTIL <CONDITION> -- SPRITE/MAP EDITOR COS(X) ASSERT(CONDITION,[MESSAGE])
SAVE("@URL") -- P8 EDU URL SIN(A)
M = -24351.5 Z = 21845.5
PRINTH(STR,[FILE],[O/W],[DESK])
EXTCMD(CMD_STR,[P1],[P2]) FOR I=1,10 DO SPACE Pan view 8 4 2 1 SIN(X)
(INVERTED)

TAB Fullscreen ATAN2(DX,DY) STOP([MESSAGE])


-- COUNT UP
FUNCTIONS -- (DOWN:FOR I=10,0,-1 DO) Mousewheel Zoom CARTRIDGE DATA RESUME() -- "."=Frame-by-Frame
SPRITES SQRT(X) 0.25
SHIFT+,/. Zoom In/Out -- GAME SAVES TRACE([C],[MESSAGE],[SKIP])
END ABS(X)
FUNCTION SUM(A,B) -- DECLARE F,V Flip Y,X SPR(N,X,Y,[W,H,FLIP_X,FLIP_Y]) CARTDATA("ID") STAT(X) -- Status of X:
FOR V IN ALL(T) DO RND(X) -- 0 <= N < X 0 Mem Usage 1 CPU Used
RETURN A+B -- RETURN VALUE R Rotate SSPR(SX,SY,SW,SH,DX,DY, DGET(I) -- 0..63
END -- TABLE/ARRAY SRAND(X) -- SET RND SEED 4 Clipboard 6 Param str
, , , Move [DW,DH,FLIP_X,FLIP_Y]) SGN(X) -- -1 OR 1 DSET(I,VAL)
END S Select SGET(X,Y) SSET(X,Y,[COL]) 7 Curr fps 30 Keypressed
PROGRAM STRUCTURE FOR K,V IN PAIRS(T) DO -- DRAW TOOL FGET(N,[F]) FSET(N,[F],V) -- FUNC -- OPERATOR
SYSTEM FLAGS 31 Key char 32,33 Mouse X,Y
_INIT() -- 1X ON STARTUP -- TABLE: T[K]=V BAND(X,Y) & 34 Mouse btns 36 Mouse Wheel
CTRL+LMB Replace Col POKE(0x5F2D,FLAGS)
_UPDATE() -- UPDATE @ 30FPS END RMB Grab Col MAP BOR(X,Y)
BXOR(X,Y)
|
^^ -- DEVKIT MODE FLAGS:
38,39 Rel.X,Y move (Req. 0x4)
46..49 Curr SFX (CH 0..3)
_UPDATE60() -- UPDATE @ 60FPS CTRL+G Toggle Gridlines MAP(TILE_X,TILE_Y,[SX,SY],
_DRAW() -- 1X/VISIBLE FRAME OPERATORS -- SFX/MUSIC EDITOR [TILE_W,TILE_H],[LAYERS])
BNOT(X)
SHL(X,N)
~
<<
0x1 Enable
0x2 Mouse buttons>btn()
50..53 Curr Note (CH 0..3)
+ - * / ^ % = 54 Patt.Idx 55 Patt.Played
SPACE Play/Pause MGET(X,Y) SHR(X,N) >> 0x4 Pointer lock 56 Patt.Ticks 57 Music Playing
#INCLUDE <FILE_NAME>.LUA += -= *= /= ^= %= MSET(X,Y,VAL)
#INCLUDE ONETAB.P8:1 SHIFT+LMB Set all notes LSHR(X,N) >>> POKE(0x5F5C,D)--BTNP 1X DELAY 80..85 UTC Time (Y,M,D,H,M,S)
< > <= >= == ~= != TLINE(X0,Y0,X1,Y1,MX,MY,MDX,
#INCLUDE ALLTABS.P8 , Modify speed ROTL(X,N) <<> POKE(0x5F5D,D)-- REPEAT DELAY 90..95 Local Time
#LIST "A".."B" [MDY],[LAYERS])
+,- Prev/Next Pattern ROTR(X,N) >>< POKE(0x5F34,1)--INT.FILLP 100 Breadcrumb Label
AND OR NOT
a Release Loop POKE(0x5F36,0x8)--DRAW SPR 0 110 Frame-by-Frame Mode

You might also like