P8SCII is PICO-8's character set. It has 256 codes, consisting of 16 control codes and 240 printable characters (letters, numbers, symbols).
For detailed information about control codes, see P8SCII Control Codes.
P8SCII reference[]
Control codes[]
Control codes describe effects that occur during printing of strings via the print() function. Typically, you specify a control code in a string literal with an escape sequence. Code strings can also be calculated by number with chr(). Except for cursor position, foreground color, and audio in progress, effects are reset at the end of the print() function call.
Some codes accept parameters as characters after the control code. See P8SCII Control Codes for more details.
Number | Escape Sequence | Character | Name | Parameters |
---|---|---|---|---|
0 | \0
|
none | Terminate printing | |
1 | \*
|
¹ | Repeat next character | P0: number of times to repeat |
2 | \#
|
² | Draw solid background | P0: color |
3 | \-
|
³ | Move cursor horizontally | P0: num of pixels minus 16 |
4 | \|
|
⁴ | Move cursor vertically | P0: num of pixels minus 16 |
5 | \+
|
⁵ | Move cursor | P0: horiz offset minus 16; P1: vert offset minus 16 |
6 | \^
|
⁶ | Special command | See P8SCII Control Codes |
7 | \a
|
⁷ | Audio command | See P8SCII Control Codes |
8 | \b
|
⁸ | Backspace | |
9 | \t
|
tab | Tab | |
10 | \n
|
newline | Newline | |
11 | \v
|
ᵇ | Decorate previous character | See P8SCII Control Codes |
12 | \f
|
ᶜ | Set foreground color | P0: color |
13 | \r
|
none | Carriage return | |
14 | \14
|
ᵉ | Switch font defined at 0x5600 | |
15 | \15
|
ᶠ | Switch font to default |
Symbols and Japanese punctuation[]
Characters 16-31 are symbols useful as icons or Japanese punctuation.
These can be typed by entering one of the Japanese modes (Ctrl+J/Ctrl+K) then pressing the key in the Entry column
Number | Character | Name | Unicode | Entry (in Japanese mode) |
---|---|---|---|---|
16 | ▮ | Vertical rectangle | U+25AE | Shift+1 |
17 | ■ | Filled square | U+25A0 | Shift+2 |
18 | □ | Hollow square | U+25A1 | Shift+3 |
19 | ⁙ | Five dot | U+2059 | Shift+4 |
20 | ⁘ | Four dot | U+2058 | Shift+5 |
21 | ‖ | Pause | U+2016 | Shift+6 |
22 | ◀ | Back | U+25C0 | Shift+7 |
23 | ▶ | Forward | U+25B6 | Shift+8 |
24 | 「 | Japanese starting quote | U+300C | [ |
25 | 」 | Japanese ending quote | U+300D | ] |
26 | ¥ | Yen sign | U+A5 | \ |
27 | • | Interpunct | U+2022 | / |
28 | 、 | Japanese comma | U+3001 | , |
29 | 。 | Japanese full stop | U+3002 | . |
30 | ゛ | Japanese dakuten | U+309B | e.g. ba |
31 | ゜ | Japanese handakuten | U+309C | e.g. pa |
ASCII characters[]
Printable characters 32-127 match the ASCII standard.
Within PICO-8, English letters in the range 65-90 print in lowercase (small caps), while letters in the range 97-122 print in uppercase.
Lowercase letters (small caps) can be typed in puny font mode (Ctrl+P).
Number | Character | Name | Number | Character | Name | |
---|---|---|---|---|---|---|
32 | space | space | 80 | P |
P | |
33 | ! |
! | 81 | Q |
Q | |
34 | " |
Double quote | 82 | R |
R | |
35 | # |
Number sign | 83 | S |
S | |
36 | $ |
Dollar sign | 84 | T |
T | |
37 | % |
Percent sign | 85 | U |
U | |
38 | & |
Ampersand | 86 | V |
V | |
39 | ' |
Single quote | 87 | W |
W | |
40 | ( |
( | 88 | X |
X | |
41 | ) |
) | 89 | Y |
Y | |
42 | * |
* | 90 | Z |
Z | |
43 | + |
+ | 91 | [ |
[ | |
44 | , |
, | 92 | \ |
\ | |
45 | - |
- | 93 | ] |
] | |
46 | . |
. | 94 | ^ |
Caret | |
47 | / |
/ | 95 | _ |
Underscore | |
48 | 0 |
0 | 96 | ` |
Backtick | |
49 | 1 |
1 | 97 | a |
a | |
50 | 2 |
2 | 98 | b |
b | |
51 | 3 |
3 | 99 | c |
c | |
52 | 4 |
4 | 100 | d |
d | |
53 | 5 |
5 | 101 | e |
e | |
54 | 6 |
6 | 102 | f |
f | |
55 | 7 |
7 | 103 | g |
g | |
56 | 8 |
8 | 104 | h |
h | |
57 | 9 |
9 | 105 | i |
i | |
58 | : |
: | 106 | j |
j | |
59 | ; |
; | 107 | k |
k | |
60 | < |
< | 108 | l |
l | |
61 | = |
= | 109 | m |
m | |
62 | > |
> | 110 | n |
n | |
63 | ? |
? | 111 | o |
o | |
64 | @ |
@ | 112 | p |
p | |
65 | A |
A | 113 | q |
q | |
66 | B |
B | 114 | r |
r | |
67 | C |
C | 115 | s |
s | |
68 | D |
D | 116 | t |
t | |
69 | E |
E | 117 | u |
u | |
70 | F |
F | 118 | v |
v | |
71 | G |
G | 119 | w |
w | |
72 | H |
H | 120 | x |
x | |
73 | I |
I | 121 | y |
y | |
74 | J |
J | 122 | z |
z | |
75 | K |
K | 123 | { |
{ | |
76 | L |
L | 124 | | |
Vertical bar | |
77 | M |
M | 125 | } |
} | |
78 | N |
N | 126 | ~ |
Tilde | |
79 | O |
O |
Typeable symbols[]
Characters 127-153 and 254-255 are graphical symbols proprietary to PICO-8.
Symbols in the range 128-153 can be entered in the PICO-8 editor by holding the Shift key and pressing a letter key, assigned in alphabetical order. Many symbols have intuitive assignments. For example, the Up, Down, Right, Left, X, and O keypad symbols are assigned to Shift-U, Shift-D, Shift-R, Shift-L, Shift-X, and Shift-O, respectively.
Tip: The btn() and btnp() functions accept the keypad symbols as an argument, as an alternative to the key code. Use the corresponding symbol as if it were a variable name, without string quotes:
if btn(❎) then
jump()
end
When printed, characters 128-255 are eight pixels wide. Characters 16-127 print as four pixels wide.
Note: PICO-8 uses variation selector 16 (U+FE0F) with the Unicode emoji symbols for Down key (⬇️), Left key (⬅️), O key (🅾️), Right key (➡️), and Up key (⬆️). Not all emoji-capable displays show an emoji variant glyph for Black Rightwards Arrow (U+27A1), but PICO-8 uses the variation selector anyway. The variation selector is not used with X key (U+274E).
Number | Character | Name | Unicode | Entry |
---|---|---|---|---|
127 | ○ | Hollow circle | U+25CB | |
128 | █ | Rectangle | U+2588 | Shift-A |
129 | ▒ | Checkerboard | U+2592 | Shift-B |
130 | 🐱 | Jelpi | U+1F431 | Shift-C |
131 | ⬇️ | Down key | U+2B07 U+FE0F | Shift-D |
132 | ░ | Dot pattern | U+2591 | Shift-E |
133 | ✽ | Throwing star | U+273D | Shift-F |
134 | ● | Ball | U+25CF | Shift-G |
135 | ♥ | Heart | U+2665 | Shift-H |
136 | ☉ | Eye | U+2609 | Shift-I |
137 | 웃 | Man | U+C6C3 | Shift-J |
138 | ⌂ | House | U+2302 | Shift-K |
139 | ⬅️ | Left key | U+2B05 U+FE0F | Shift-L |
140 | 😐 | Face | U+1F610 | Shift-M |
141 | ♪ | Musical note | U+266A | Shift-N |
142 | 🅾️ | O key | U+1F17E U+FE0F | Shift-O |
143 | ◆ | Diamond | U+25C6 | Shift-P |
144 | … | Ellipsis | U+2026 | Shift-Q |
145 | ➡️ | Right key | U+27A1 U+FE0F | Shift-R |
146 | ★ | Five-pointed star | U+2605 | Shift-S |
147 | ⧗ | Hourglass | U+29D7 | Shift-T |
148 | ⬆️ | Up key | U+2B06 U+FE0F | Shift-U |
149 | ˇ | Birds | U+2C7 | Shift-V |
150 | ∧ | Sawtooth | U+2227 | Shift-W |
151 | ❎ | X key | U+274E | Shift-X |
152 | ▤ | Horiz lines | U+25A4 | Shift-Y |
153 | ▥ | Vert lines | U+25A5 | Shift-Z |
Hiragana[]
Characters 154-203 are the Japanese Hiragana alphabet, and characters 204-253 are the Japanese Katakana alphabet. Japanese characters appear in order, followed by the four digraph indicators.
Japanese diacritics and punctuation can be found in characters 24-31.
Hiragana characters can be typed by entering Hiragana mode (Ctrl+J) and then typing out the character's sound, as seen in the table below.
Number | Character | Entry | Unicode | Number | Character | Entry | Unicode | |
---|---|---|---|---|---|---|---|---|
154 | あ | a | U+3042 | 179 | は | ha | U+306F | |
155 | い | i | U+3044 | 180 | ひ | hi | U+3072 | |
156 | う | u | U+3046 | 181 | ふ | fu | U+3075 | |
157 | え | e | U+3048 | 182 | へ | he | U+3078 | |
158 | お | o | U+304A | 183 | ほ | ho | U+307B | |
159 | か | ka | U+304B | 184 | ま | ma | U+307E | |
160 | き | ki | U+304D | 185 | み | mi | U+307F | |
161 | く | ku | U+304F | 186 | む | mu | U+3080 | |
162 | け | ke | U+3051 | 187 | め | me | U+3081 | |
163 | こ | ko | U+3053 | 188 | も | mo | U+3082 | |
164 | さ | sa | U+3055 | 189 | や | ya | U+3084 | |
165 | し | shi | U+3057 | 190 | ゆ | yu | U+3086 | |
166 | す | su | U+3059 | 191 | よ | yo | U+3088 | |
167 | せ | se | U+305B | 192 | ら | ra | U+3089 | |
168 | そ | so | U+305D | 193 | り | ri | U+308A | |
169 | た | ta | U+305F | 194 | る | ru | U+308B | |
170 | ち | chi | U+3061 | 195 | れ | re | U+308C | |
171 | つ | tsu | U+3064 | 196 | ろ | ro | U+308D | |
172 | て | te | U+3066 | 197 | わ | wa | U+308F | |
173 | と | to | U+3068 | 198 | を | wo | U+3092 | |
174 | な | na | U+306A | 199 | ん | nn | U+3093 | |
175 | に | ni | U+306B | 200 | っ | tt | U+3063 | |
176 | ぬ | nu | U+306C | 201 | ゃ | e.g: kya | U+3083 | |
177 | ね | ne | U+306D | 202 | ゅ | e.g. kyu | U+3085 | |
178 | の | no | U+306E | 203 | ょ | e.g: kyo | U+3087 |
Katakana[]
Characters 204-253 are the Japanese Katakana alphabet. Japanese characters appear in order, followed by the four digraph indicators.
Japanese diacritics and punctuation can be found in characters 24-31.
Katakana characters can be typed by entering Katakana mode (Ctrl+K) and then typing out the character's sound, as seen in the table below.
Number | Character | Entry | Unicode | Number | Character | Entry | Unicode | |
---|---|---|---|---|---|---|---|---|
204 | ア | a | U+30A2 | 229 | ハ | ha | U+30CF | |
205 | イ | i | U+30A4 | 230 | ヒ | hi | U+30D2 | |
206 | ウ | u | U+30A6 | 231 | フ | fu | U+30D5 | |
207 | エ | e | U+30A8 | 232 | ヘ | he | U+30D8 | |
208 | オ | o | U+30AA | 233 | ホ | ho | U+30DB | |
209 | カ | ka | U+30AB | 234 | マ | ma | U+30DE | |
210 | キ | ki | U+30AD | 235 | ミ | mi | U+30DF | |
211 | ク | ku | U+30AF | 236 | ム | mu | U+30E0 | |
212 | ケ | ke | U+30B1 | 237 | メ | me | U+30E1 | |
213 | コ | ko | U+30B3 | 238 | モ | mo | U+30E2 | |
214 | サ | sa | U+30B5 | 239 | ヤ | ya | U+30E4 | |
215 | シ | shi | U+30B7 | 240 | ユ | yu | U+30E6 | |
216 | ス | su | U+30B9 | 241 | ヨ | yo | U+30E8 | |
217 | セ | se | U+30BB | 242 | ラ | ra | U+30E9 | |
218 | ソ | so | U+30BD | 243 | リ | ri | U+30EA | |
219 | タ | ta | U+30BF | 244 | ル | ru | U+30EB | |
220 | チ | chi | U+30C1 | 245 | レ | re | U+30EC | |
221 | ツ | tsu | U+30C4 | 246 | ロ | ro | U+30ED | |
222 | テ | te | U+30C6 | 247 | ワ | wa | U+30EF | |
223 | ト | to | U+30C8 | 248 | ヲ | wo | U+30F2 | |
224 | ナ | na | U+30CA | 249 | ン | nn | U+30F3 | |
225 | ニ | ni | U+30CB | 250 | ッ | tt | U+30C3 | |
226 | ヌ | nu | U+30CC | 251 | ャ | e.g. kya | U+30E3 | |
227 | ネ | ne | U+30CD | 252 | ュ | e.g. kyu | U+30E5 | |
228 | ノ | no | U+30CE | 253 | ョ | e.g. kyo | U+30E7 |
Remaining symbols[]
The final two characters in the P8SCII set offer two more symbols.
These can be typed by entering one of the Japanese modes (Ctrl+J/Ctrl+K) then pressing the key in the Entry column
Number | Character | Name | Unicode | Entry (in Japanese) |
---|---|---|---|---|
254 | ◜ | Left arc | U+25DC | Shift+9 |
255 | ◝ | Right arc | U+25DD | Shift+0 |
Using PS8SCII codes[]
All characters and codes can appear in string literals using either typed characters or escape sequences. Some codes have special escape sequences, such as \n
for a newline code. All codes can be entered via their number using an escape sequence such as \0xxx
, where xxx
is the number in decimal.
print("press ❎ to jump\npress 🅾️ to use an item")
price = 729
print("cost: " .. chr(26) .. tostr(price))
The chr() function takes a number and returns a one-character string with the corresponding P8SCII character. The ord() function takes a one-character string and returns the P8SCII code for that character as a number.
All printable characters have an equivalent symbol in the Unicode character set. You can type a printable character in the PICO-8 editor by entering the corresponding symbol or by pasting it from the clipboard. PICO-8 uses the Unicode equivalent when saving to a .p8 file, printing to the console via printh(), or copying to the clipboard.
Note: The P8SCII value is not the same as the Unicode value! The character sets overlap in the ASCII range (32-126), with uppercase and lowercase swapped. Otherwise, a P8SCII printable character maps to a Unicode character with the same meaning (as for Japanese letters) or a pictographic equivalent (as for symbols).