Skip to content

Instantly share code, notes, and snippets.

@Dinir
Created October 18, 2016 01:16
Show Gist options
  • Save Dinir/b96d12d03ff7209e89e99369afb55af1 to your computer and use it in GitHub Desktop.
Save Dinir/b96d12d03ff7209e89e99369afb55af1 to your computer and use it in GitHub Desktop.
PICO-8 Manual (Korean)
============================================================================================
PICO-8 v0.1.8
http://www.pico-8.com
(c) Copyright 2014-2016 Lexaloffle Games LLP
๋งŒ๋“  ์ด: Joseph White // hey@lexaloffle.com
์˜ฎ๊ธด ์ด: Dinir Nertan // DinirNertan@gmail.com
PICO-8์€ ์•„๋ž˜์˜ ๊ธฐ์ˆ ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค:
SDL2 http://www.libsdl.org
Lua 5.2 http://www.lua.org // license.txt ๋ฅผ ์ฐธ์กฐ
GIFLIB http://giflib.sourceforge.net/
============================================================================================
PICO-8์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!
PICO-8์€ ์ž‘์€ ๊ฒŒ์ž„์ด๋‚˜ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ๊ณต์œ ํ•˜๊ณ  ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ ์ฝ˜์†”์ž…๋‹ˆ๋‹ค.
๊ธฐ๊ณ„๋ฅผ ์ผœ๋ฉด ์ฆ‰์„์—์„œ ๋ฃจ์•„ ํ”„๋กœ๊ทธ๋žจ์„ ์งค ์ˆ˜ ์žˆ๋Š” ์‰˜์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์Šคํ”„๋ผ์ดํŠธ, ๋งต, ์†Œ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋นŒํŠธ์ธ ํˆด๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
PICO-8์˜ ๊ฐ€ํ˜นํ•œ ์ œํ•œ ์‚ฌํ•ญ์€ ์ž‘์—…์— ์žฌ๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ์ž‘์ง€๋งŒ ๋‹ค์–‘ํ•œ ๊ฒƒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ์„ ๋…๋ คํ•˜๋ฉฐ ๋˜ PICO-8 ์นดํŠธ๋ฆฌ์ง€๊ฐ€ ๋‚˜๋ฆ„์˜ ๋…ํŠนํ•œ ์™ธ๊ด€๊ณผ ๋Š๋‚Œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธธ ๋ฐ”๋ผ๋ฉฐ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๊ณ ๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
:: ํ‚ค
์ „์ฒดํ™”๋ฉด ์ „ํ™˜: Alt+Enter
๋‚˜๊ฐ€๊ธฐ: Alt+F4 ๋˜๋Š” command-Q
๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ/์‹คํ–‰/์นดํŠธ ์žฌ์‹œ์ž‘: Ctrl+R
ํ€ต ์„ธ์ด๋ธŒ: Ctrl+S
P: ์ผ์‹œ์ •์ง€ (์‹คํ–‰ ์ค‘์ผ ๋•Œ)
ํ”Œ๋ ˆ์ด์–ด 1 ๊ธฐ๋ณธ ํ‚ค: ํ™”์‚ดํ‘œ ํ‚ค + ZX / NM / CV
ํ”Œ๋ ˆ์ด์–ด 2 ๊ธฐ๋ณธ ํ‚ค: SDFE + ํƒญ,Q / shift A
// KEYCONFIG ์—์„œ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
:: ์ŠคํŽ™
๋””์Šคํ”Œ๋ ˆ์ด: 128x128, ๊ณ ์ • 16์ƒ‰ ํŒ”๋ ˆํŠธ
์ž…๋ ฅ: 6๋ฒ„ํŠผ
์นดํŠธ๋ฆฌ์ง€ ์šฉ๋Ÿ‰: 32k
์†Œ๋ฆฌ: 4 ์ฑ„๋„, 64๊ฐœ์˜ ์ •์˜ ๊ฐ€๋Šฅ ์Œ์ƒ‰
์ฝ”๋“œ: ๋ฃจ์•„ (์ตœ๋Œ€ 8192๊ฐœ ํ† ํฐ)
์Šคํ”„๋ผ์ดํŠธ: ๋‹จ์ผ ๋ฑ…ํฌ๋กœ 128๊ฐœ์˜ 8x8 ์Šคํ”„๋ผ์ดํŠธ (+128๊ฐœ์˜ ๊ณต์œ  ์Šคํ”„๋ผ์ดํŠธ)
๋งต: 128x32 ์นธ์˜ 8-๋น„ํŠธ ์…€ (+128x32 ์นธ์˜ ๊ณต์œ  ๋งต)
:: Hello World
PICO-8์„ ๋ถ€ํŒ…ํ•œ ๋‹ค์Œ์—, ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์น˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด์„ธ์š”:
PRINT("HELLO WORLD")
RECTFILL(80,80,120,100,12)
CIRCFILL(70,90,20,14)
FOR I=1,4 DO PRINT(I) END
(์ฐธ๊ณ : PICO-8์—์„œ๋Š” ๋Œ€๋ฌธ์ž ์˜์–ด๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์บก์Šค ๋ฝ์„ ํ‚ค์ง€ ๋ง๊ณ  ํ‰์†Œ์ฒ˜๋Ÿผ ์ณ๋ณด์„ธ์š”!)
์ฝ”๋“œ ํŽธ์ง‘ ๋ชจ๋“œ์—์„œ ์ด๋Ÿฐ ๋ช…๋ น์–ด๋“ค๊ณผ ๋ณ„๋„๋กœ ์ œ๊ณต๋˜๋Š” ๋‘ ๊ฐœ์˜ ํŠน๋ณ„ํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ _update, _draw ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์•„๋ž˜์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ปค์„œ ํ‚ค๋ฅผ ํ†ตํ•ด ๋™๊ทธ๋ผ๋ฏธ๋ฅผ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ESC ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋กœ ๋“ค์–ด๊ฐ„ ๋‹ค์Œ, ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด๋ณด์„ธ์š”:
X = 64 Y = 64
FUNCTION _UPDATE()
IF (BTN(0)) THEN X=X-1 END
IF (BTN(1)) THEN X=X+1 END
IF (BTN(2)) THEN Y=Y-1 END
IF (BTN(3)) THEN Y=Y+1 END
END
FUNCTION _DRAW()
RECTFILL(0,0,127,127,5)
CIRCFILL(X,Y,7,8)
END
์ด์ œ ESC๋ฅผ ๋‹ค์‹œ ๋ˆŒ๋Ÿฌ ๋ฉ”์ธ ์ฝ˜์†” ํ™”๋ฉด์œผ๋กœ ๋Œ์•„์™€์„œ, RUN ์„ ์ž…๋ ฅํ•ด์„œ ์‹ค์ œ๋กœ ์ž‘๋™๋˜๋Š” ๋ชจ์Šต์„ ๋ณด์„ธ์š”.
๋” ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ›๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์˜ˆ์ œ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
:: ์˜ˆ์ œ ์นดํŠธ๋ฆฌ์ง€
์•„๋ž˜์˜ ์นดํŠธ๋ฆฌ์ง€๋“ค์€ PICO-8์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
INSTALL_DEMOS
CD DEMOS
API PICO-8์—์„œ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜ ๋Œ€๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋ฐ๋ชจ
JELPI 2์ธ ํ”Œ๋ ˆ์ด๋ฅผ ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ ๊ฒŒ์ž„ ๋ฐ๋ชจ
CAST 2.5D ๋ ˆ์ด์บ์Šคํ„ฐ ๋ฐ๋ชจ
MANDEL ๋งŒ๋ธ๋ธŒ๋กœํŠธ ํƒ์ƒ‰๊ธฐ
COLLIDE ๋ฒฝ-์บ๋ฆญํ„ฐ ๊ฐ„ ์ถฉ๋Œ ์˜ˆ์ œ
BUTTERFLY ์‹œ์—๋ฅดํ•€์Šคํ‚ค ์‚ผ๊ฐํ˜•
DRIPPY ํ˜๋Ÿฌ๋‚ด๋ฆฌ๋Š” ์„  ๊ทธ๋ฆฌ๊ธฐ
STOMPY ์Œ์•… ์นดํŠธ๋ฆฌ์ง€
WOO ์Œ์•… ์นดํŠธ๋ฆฌ์ง€
์นดํŠธ๋ฆฌ์ง€๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, PICO-8์„ ์—ด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค:
LOAD JELPI
RUN
ESC๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉˆ์ถ”๊ณ , ํ•œ ๋ฒˆ ๋” ๋ˆŒ๋Ÿฌ์„œ ํŽธ์ง‘ ๋ชจ๋“œ๋กœ ๋“ค์–ด๊ฐ€๋ณด์„ธ์š”.
:: ํŒŒ์ผ์‹œ์Šคํ…œ
๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ(ํด๋”)๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
DIR ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋‚ด์šฉ์„ ํ‘œ์‹œ
CD BLAH ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ€๊ฒฝ
CD .. ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
CD / (PICO-8 ๊ฐ€์ƒ ๋“œ๋ผ์ด๋ธŒ ๋‚ด์˜) ์ตœ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
MKDIR ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
FOLDER ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŠธ OS์˜ ํŒŒ์ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๊ธฐ
LOAD BLAH ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์นดํŠธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
SAVE BLAH ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์นดํŠธ ์ €์žฅํ•˜๊ธฐ
ํŒŒ์ผ์„ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ๋ณต์‚ฌ ๋˜๋Š” ์‚ญ์ œ๋ฅผ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์—”, FOLDER ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ํ˜ธ์ŠคํŠธ OS ๋‚ด์—์„œ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
PICO-8์˜ ๊ธฐ๋ณธ ์œ„์น˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:
Windows: C:/Users/์‚ฌ์šฉ์ž์ด๋ฆ„/AppData/Roaming/pico-8/carts
OSX: /Users/์‚ฌ์šฉ์ž์ด๋ฆ„/Library/Application Support/pico-8/carts
Linux: ~/.lexaloffle/pico-8/carts
๊ธฐ๋ณธ ์œ„์น˜์™€ ๊ธฐํƒ€ ์„ค์ •์„ pico-8/config.txt์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒ: Dropbox๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด, ๋“œ๋ผ์ด๋ธŒ ์œ„์น˜๋ฅผ Dropbox ๊ณต์œ  ํด๋” ๋‚ด์— ์„ค์ •ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋””์Šคํฌ๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์ปดํ“จํ„ฐ์— ์„ค์น˜๋œ PICO-8์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
:: ๋ฐฑ์—…
๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‚˜๊ฐ”์„ ๊ฒฝ์šฐ๋‚˜ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ ๋ฎ์–ด์”Œ์› ์„ ๊ฒฝ์šฐ, pico-8/backup์— ํ•ด๋‹น ์นดํŠธ๋ฆฌ์ง€์˜ ๋ฐฑ์—…์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
:: ์„ค์ •
:: config.txt
config.txt์—์„œ ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PICO-8์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ˆ˜์ •ํ•˜์„ธ์š”.
Windows: C:/Users/์‚ฌ์šฉ์ž์ด๋ฆ„/AppData/Roaming/pico-8/config.txt
OSX: /Users/์‚ฌ์šฉ์ž์ด๋ฆ„/Library/Application Support/pico-8/config.txt
Linux: ~/.lexaloffle/pico-8/config.txt
-home ์Šค์œ„์น˜(์•„๋ž˜ ์ฐธ์กฐ)๋ฅผ ์ด์šฉํ•ด์„œ config.txt๋ฅผ ๋น„๋กฏํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ์— ์ €์žฅํ•˜์„ธ์š”.
:: ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ
// ์ฐธ๊ณ : ์•„๋ž˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” config.txt ์— ์ €์žฅ๋œ ์„ธํŒ…๋ณด๋‹ค ์šฐ์„ ํ•จ
pico-8 [์Šค์œ„์น˜] [ํŒŒ์ผ์ด๋ฆ„.p8]
-run ์‹คํ–‰๊ณผ ๋™์‹œ์— ํŒŒ์ผ์ด๋ฆ„.p8์„ ๊ตฌ๋™
-width n ์œˆ๋„์šฐ๋‚˜ ํ™”๋ฉด์˜ ๋„ˆ๋น„๋ฅผ ์ •ํ•˜๊ณ  ์Šค์ผ€์ผ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ํ™”๋ฉด์— ๋งž๊ฒŒ ์Šค์ผ€์ผ์„ ์กฐ์ •
-height n ์œˆ๋„์šฐ๋‚˜ ํ™”๋ฉด์˜ ๋†’์ด๋ฅผ ์ •ํ•˜๊ณ  ์Šค์ผ€์ผ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ํ™”๋ฉด์— ๋งž๊ฒŒ ์Šค์ผ€์ผ์„ ์กฐ์ •
-scale n PICO-8์—์„œ ํ‘œ์‹œํ•  ํ”ฝ์…€์˜ ์Šค์ผ€์ผ ์กฐ์ •. "-scale 3" ์„ ์ž…๋ ฅํ•˜๋ฉด ๊ฐ๊ฐ์˜ ํ”ฝ์…€์„ 3x3 ์‚ฌ์ด์ฆˆ๋กœ ํ‘œ์‹œ
-windowed n ์ฐฝ๋ชจ๋“œ๋ฅผ ๋„๊ฑฐ๋‚˜(0) ์ผœ๊ธฐ(1)
-sound n ์†Œ๋ฆฌ ํฌ๊ธฐ 0..256
-music n ์Œ์•… ํฌ๊ธฐ 0..256
-joystick n ์กฐ์ด์Šคํ‹ฑ ์ปจํŠธ๋กค์„ n ๋ฒˆ์งธ ํ”Œ๋ ˆ์ด์–ด์˜ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค (0..7)
-aspect n ํ™”๋ฉด ๋น„์œจ ์„ค์ •. 420 = 1:1(๊ธฐ๋ณธ), 560 = 4:3, 525 = 5:4.
-run filename ์ž๋™์œผ๋กœ ํ•ด๋‹น ์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์„œ ๊ตฌ๋™
-splore splore ๋ชจ๋“œ๋กœ ์‹คํ–‰
-home path config.txt๋ฅผ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ฒฝ๋กœ๋ฅผ ์„ค์ •
-gif_len n ์ตœ๋Œ€ gif ๊ธธ์ด๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ • (1..120)
:: ์ปจํŠธ๋กค๋Ÿฌ ์„ค์ •
PICO-8์€ SDL2 ์ปจํŠธ๋กค๋Ÿฌ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋™ ์‹œ์— ์•Œ๋ ค์ง„ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , config.txt๊ฐ€ ์žˆ๋Š” ํด๋”์— ๋“ค์–ด์žˆ๋Š” sdl_controllers.txt์— ์ปค์Šคํ…€ ๋งตํ•‘์ด ์žˆ๋Š”์ง€ ๋˜ํ•œ ์ฐพ์•„๋ด…๋‹ˆ๋‹ค sdl_controllers.txt ๋Š” ํ•œ ์ค„์— ํ•œ ๊ฐœ์˜ ๋งตํ•‘์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•˜์‹œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์œ„ํ•œ ์ปค์Šคํ…€ ๋งตํ•‘์„ ๋งŒ๋“œ์‹œ๋ ค๋ฉด, SDL2์— ๋”ธ๋ ค์˜ค๋Š” ์ปจํŠธ๋กค๋งต ํ”„๋กœ๊ทธ๋žจ์„ ์“ฐ๊ฑฐ๋‚˜, ์—ฌ๊ธฐ๋ฅผ ํ™œ์šฉํ•ด๋ณด์„ธ์š”. http://www.generalarcade.com/gamepadtool/
ํ‚ค๋ณด๋“œ ํ‚ค์˜ ๋งตํ•‘์„ ๋ณ€๊ฒฝํ•˜์‹œ๋ ค๋ฉด, KEYCONFIG ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
:: ์นดํŠธ๋ฆฌ์ง€ ๊ณต์œ ํ•˜๊ธฐ / HTML5๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
์นดํŠธ๋ฆฌ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:
1. .p8 ์ด๋‚˜ .p8.png ํŒŒ์ผ์„ ๋‹ค๋ฅธ PICO-8 ์‚ฌ์šฉ์ž์™€ ์ง์ ‘ ๊ณต์œ ํ•˜๊ธฐ
2. Lexaloffle ๊ฒŒ์‹œํŒ์— ์˜ฌ๋ ค ์›น ๋ฒ„์ „์„ ์–ป๊ธฐ
http://www.lexaloffle.com/pico-8.php?page=submit
save() ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์–ด๋–ป๊ฒŒ .p8.png ๋ฅผ ๋งŒ๋“œ๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”. (.png๋กœ ๊ฒ€์ƒ‰)
3. ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์Šคํƒ ๋“œ์–ผ๋ก  HTML5 ๋ฒ„์ „์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ:
EXPORT FOO.HTML
์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค: foo.html๊ณผ foo.js (๋‘˜ ๋‹ค ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!)
์ถ”์ถœํ•œ ์นดํŠธ๋ฆฌ์ง€์˜ ๋ฐฐํฌ์™€ ์‚ฌ์šฉ์€ ์ œ์ž‘์ž์™€ ๊ธฐ์—ฌ์ž์˜ ํ—ˆ๊ฐ€ ์•„๋ž˜์— ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
.html ํŒŒ์ผ์€ ์ž์œ ๋กญ๊ฒŒ ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์œผ๋กœ์„œ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์„ค์ •์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ ๋ช‡ ๊ฐœ์™€ ์™ธ๋ถ€ ์‚ฌ์ดํŠธ ๋งํฌ (๊ธฐ๋ณธ์ ์œผ๋กœ PICO-8 ๊ฒŒ์‹œํŒ) ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ์ค‘์— ํ™”๋ฉด์ด ์Šคํฌ๋กค๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”Œ๋ ˆ์ด์–ด์˜ ๋„ˆ๋น„์™€ ๋†’์ด ๋˜ํ•œ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณดํ†ต ํ™”๋ฉด์ด ํ‘œ์‹œ๋˜๋Š” ์บ”๋ฒ„์Šค ํฌ๊ธฐ์— ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์ฐธ๊ณ ํ•˜์„ธ์š” (๊ธฐ๋ณธ๊ฐ’์€ 580,540).
:: ์Šคํฌ๋ฆฐ์ƒท, ๋น„๋””์˜ค, ์นดํŠธ๋ฆฌ์ง€ ๋ผ๋ฒจ
์นดํŠธ๋ฆฌ์ง€๋ฅผ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”:
F6 ๋ฐ”ํƒ•ํ™”๋ฉด์— ์Šคํฌ๋ฆฐ์ƒท์„ ์ €์žฅ
F7 ์นดํŠธ๋ฆฌ์ง€ ๋ผ๋ฒจ ์ด๋ฏธ์ง€๋ฅผ ์บก์ณ
F8 ๋น„๋””์˜ค ๋…นํ™” ์‹œ์ž‘
F9 ๋ฐ”ํƒ•ํ™”๋ฉด์— GIF ๋น„๋””์˜ค๋ฅผ ์ €์žฅ (์ตœ๋Œ€: ๊ธฐ๋ณธ๊ฐ’ 8์ดˆ)
// F6..F9๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด F1..F4๋ฅผ ์‚ฌ์šฉ
์นดํŠธ๋ฆฌ์ง€ ๋ผ๋ฒจ์€ save() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ p8.png๋กœ ์ €์žฅํ•  ๋•Œ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
๋น„๋””์˜ค ์ €์žฅ์€ ์•„๋ฌด๋•Œ๋‚˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํ•ญ์ƒ ๋…นํ™”์ค‘์ž…๋‹ˆ๋‹ค) -- F8์„ ๋ˆ„๋ฅด๋ฉด ๋…นํ™” ์‹œ์ž‘ ์‹œ์ ์„ ๋ฆฌ์…‹ํ•ด์„œ 8์ดˆ ์ดํ•˜์˜ ๋น„๋””์˜ค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
GIF์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด, config.txt์˜ gif_len ๊ฐ’์„ ์›ํ•˜๋Š” ์ดˆ ๋‹จ์œ„์˜ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”. GIF ํ˜•์‹์—์„  30fps๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถœ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, PICO-8์—์„œ๋Š” ๋Œ€์‹  ๊ฐ€์žฅ ๊ทผ์‚ฌํ•œ ๊ฐ’์ธ 33.3fps๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
:: ๋‚ด๋ณด๋‚ด๊ธฐ / ๊ฐ€์ ธ์˜ค๊ธฐ
1. ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ๋ฅผ .png ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด:
import("blah.png") -- 128x128 ์˜ pico-8 ํŒ”๋ ˆํŠธ์— ๋งž์ถ˜ png ํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜ด
export("blah.png") -- ์ถ”์ถœํ•œ png๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด folder()๋ฅผ ์‚ฌ์šฉ
2. ํšจ๊ณผ์Œ์ด๋‚˜ ์Œ์•…์„ ์ถ”์ถœํ•˜๋ ค๋ฉด:
export("blah.wav") -- ํ˜„์žฌ ํŒจํ„ด์˜ ์Œ์•…์„ ๋‚ด๋ณด๋‚ด๊ธฐ(์Œ์•… ํŽธ์ง‘ ๋ชจ๋“œ์ผ ๋•Œ)
export("blah.wav") -- ํ˜„์žฌ SFX๋ฅผ ๋‚ด๋ณด๋‚ด๊ธฐ(SFX ํŽธ์ง‘ ๋ชจ๋“œ์ผ ๋•Œ)
export("blah%d.wav") -- ๋ชจ๋“  SFX๋ฅผ blah0.wav, blah1.wav .. blah63.wav ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
// ๋ช…๋ น์–ด ์ž…๋ ฅ ์ฐฝ์—์„œ๋Š” ๊ด„ํ˜ธ์™€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Œ: EXPORT BLAH.WAV
:: PICO-8์˜ ํŠน์ง•
์ฃผ์˜ํ•ด์•ผ ํ•  ์•Œ๋ ค์ง„ ํŠน์ง•๋“ค:
- ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ์™€ ๋งต์˜ ์•„๋ž˜์ชฝ ์ ˆ๋ฐ˜์€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.
// ์–ด๋–ค ๋ง์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ์•„๋ž˜์ชฝ ์ ˆ๋ฐ˜์€ ํ•œ ์ชฝ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ๊ฒƒ
- PICO-8์—์„œ ์ˆซ์ž๋Š” 32767.99๊นŒ์ง€๋งŒ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.
// ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค 1์”ฉ ์˜ฌ๋ผ๊ฐ€๋Š” ์นด์šดํ„ฐ๋ฅผ ์‹คํ•ญํ•˜๋ฉด, ์•ฝ 18๋ถ„ ํ›„์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•จ!
- Lua ๋ฐฐ์—ด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 0-based๊ฐ€ ์•„๋‹Œ 1-based์ž…๋‹ˆ๋‹ค. FOREACH ๋Š” T[0]์ด ์•„๋‹Œ T[1]๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
- cos()์™€ sin()๋Š” 0..PI*2 ๋Œ€์‹  0..1 ๊ฐ’์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ sin()๋Š” ๋’ค์ง‘ํžŒ ์œ„์ƒ ๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
- sgn(0) ์€ 1์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
- ์ „์ฒดํ™”๋ฉด ์ „ํ™˜: OSX์—์„œ๋Š” alt-enter๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š” (command-F ๋Š” ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์— ์“ฐ์ž…๋‹ˆ๋‹ค).
- .png ํ˜•์‹์œผ๋กœ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์ถ”์ถœํ•˜๋ ค๋ฉด, EXPORT๋ง๊ณ  SAVE๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. EXPORT๋Š” ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ๋งŒ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค!
:: Splore
SPLORE๋Š” ๋กœ์ปฌ ๊ณต๊ฐ„์ด๋‚˜ ๊ฒŒ์‹œํŒ(์˜จ๋ผ์ธ)์—์„œ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์ฐพ์•„์„œ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋นŒํŠธ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. SPLORE [enter]๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, PICO-8์— -splore๋ฅผ ๋ถ™์—ฌ์„œ ์‹คํ–‰ํ•˜์„ธ์š”.
SPLORE๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋งŒ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:
LEFT์™€ RIGHT๋กœ ์นดํŠธ๋ฆฌ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ”๊พธ๊ธฐ
UP๊ณผ DOWN์œผ๋กœ ๋ฆฌ์ŠคํŠธ ์•ˆ์˜ ํ•ญ๋ชฉ์„ ์„ ํƒœ
X,O ๋‚˜ MENU๋กœ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์‹คํ–‰
์นดํŠธ๋ฆฌ์ง€ ์‹คํ–‰ ์ค‘์— MENU๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ฆ๊ฒจ์ฐพ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ splore๋กœ ๋‚˜๊ฐ€์„ธ์š”.
ํ‚ค๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์นดํŠธ๋ฆฌ์ง€ ๋ฆฌ์ŠคํŠธ์—์„œ F๋ฅผ ๋ˆŒ๋Ÿฌ, ์„ ํƒ๋œ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒŒ์‹œํŒ ์นดํŠธ๋ฆฌ์ง€ ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ์ƒ์œ„ ํ•ญ๋ชฉ์„ ์„ ํƒํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐฑ์‹ ํ•˜์„ธ์š”. ์˜คํ”„๋ผ์ธ ์ƒํƒœ์ผ ๊ฒฝ์šฐ๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐฑ์‹ ๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ๋‹ค์šด๋กœ๋“œํ•œ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ธํ„ฐ๋„ท ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ธฐ๊ณ„์— PICO-8์„ ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ์—๋„, INSTALL_GAMES ๋ฅผ ํ†ตํ•ด ์‚ฌ์ „์— ์„ค์น˜๋œ ๊ฒŒ์‹œํŒ ์นดํŠธ๋ฆฌ์ง€ ์ผ๋ถ€๋ฅผ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
============================================================================================
ํŽธ์ง‘ ๋ชจ๋“œ
============================================================================================
ESC๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ฝ˜์†”๊ณผ ํŽธ์ง‘๊ธฐ ์‚ฌ์ด๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”
์šฐ์ธก ์ƒ๋‹จ์˜ ํŽธ์ง‘ ๋ชจ๋“œ ํƒญ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ALT+LEFT/RIGHT๋กœ ํŽธ์ง‘ ๋ชจ๋“œ ์‚ฌ์ด๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”
** ๊ฒฝ๊ณ : ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ์˜ ์ ˆ๋ฐ˜ (๋ฑ…ํฌ 2, 3)๊ณผ ๋งต์˜ ์•„๋ž˜์ชฝ ์ ˆ๋ฐ˜์€ ์นดํŠธ๋ฆฌ์ง€ ๋‚ด์—์„œ ๊ฐ™์€ ๊ณต๊ฐ„์„ ์”๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐ„์„ ์–ด๋–ป๊ฒŒ ์“ธ์ง€๋Š” ๋‹น์‹ ์˜ ์ž์œ ์ง€๋งŒ, ํ•œ์ชฝ์„ ํŽธ์ง‘ํ•˜๋ฉด์„œ ๊ทธ๋ฆฐ ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ์ชฝ์— ์ฒ˜์ฐธํ•œ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ์Œ์„ ์—ผ๋‘ํ•ด๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค
:: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ
shift๋ฅผ ๋ˆ„๋ฅธ ์ฑ„๋กœ ์„ ํƒ (ํ˜น์€ ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•ด์„œ ๋“œ๋ž˜๊ทธ)
CTRL-X, C, V ์„ ํƒ ์˜์—ญ์„ ์ž๋ฅด๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™์—ฌ๋„ฃ๊ธฐ
CTRL-Z, Y ์ทจ์†Œ, ์žฌ์‹คํ–‰
CTRL-F ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰
CTRL-G ์ด์ „ ๊ฒ€์ƒ‰์„ ๋ฐ˜๋ณต
ALT-UP, DOWN ์ด์ „/๋‹ค์Œ ํ•จ์ˆ˜๋กœ ์ด๋™
์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์˜ ์šฐ์ธก ํ•˜๋‹จ์—์„œ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์€ ์ตœ๋Œ€ 8192๊ฐœ์˜ ํ† ํฐ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ† ํฐ์€ ๋‹จ์–ด(๋ณ€์ˆ˜ ๋ช…) ํ˜น์€ ์˜คํผ๋ ˆ์ดํ„ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์Œ์ด๋‚˜ ๋ฌธ์ž์—ด์€ 1๊ฐœ์˜ ํ† ํฐ์œผ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ, ๋งˆ์นจํ‘œ, LOCAL, ์„ธ๋ฏธ์ฝœ๋ก , END, ์ฃผ์„์€ ํ† ํฐ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฒ„ํŠผ์„ ์˜๋ฏธํ•˜๋Š” ํŠน์ˆ˜๊ธฐํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ ค๋ฉด SHIFT-L,R,U,D,O,X๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
:: ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ
์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ๋Š” ์Šคํ”„๋ผ์ดํŠธ ์ˆ˜์ค€์˜ ํŽธ์ง‘์ด๋‚˜ ํ”ฝ์…€ ์ˆ˜์ค€์˜ ํŽธ์ง‘ ๋ชจ๋‘์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด ์•„๋ž˜์˜ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ๋Š” ์Šคํ”„๋ผ์ดํŠธ์‹œํŠธ๋ฅผ 8x8 ๋‹จ์œ„๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ๋˜ํ•œ ์ž์œ ํ˜•ํƒœfreeform ๋„๊ตฌ(pan, select)์„ ์ด์šฉํ•˜๋ฉด ๋” ํฐ ์ง€์—ญ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ
ํด๋ฆญ๊ณผ ๋“œ๋ž˜๊ทธ๋กœ ํŽธ์ง‘
๋ณด์—ฌ์ง€๋Š” ์˜์—ญ์— ์ ์šฉ
CTRL์„ ๋ˆŒ๋Ÿฌ ์ƒ‰์„ ์ฐพ์•„ ๋ฐ”๊พธ๊ธฐ
๋งˆ์šฐ์Šค ์™ผ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ์ƒ‰์„ ์„ ํƒ
์Šคํƒฌํ”„ ๋„๊ตฌ
์Šคํƒฌํ”„ ์•ˆ์— ์ €์žฅ๋œ ๊ฒƒ์„ ์ฐ์–ด๋‚ด๊ธฐ
LCONTROL์„ ๋ˆŒ๋Ÿฌ ํˆฌ๋ช…๋„๋ฅผ ๋ฐ˜์˜ํ•ด ์ฐ๊ธฐ
์„ ํƒ ๋„๊ตฌ // ๋‹จ์ถ•ํ‚ค: LSHIFT, S
์„ ํƒ ์˜์—ญ ๋งŒ๋“ค๊ธฐ
Enter๋‚˜ ํด๋ฆญ์œผ๋กœ ์„ ํƒ ์ทจ์†Œ
ํ”ฝ์…€ ์ˆ˜์ค€์˜ ์„ ํƒ ์˜์—ญ์ด ์—†์„ ๊ฒฝ์šฐ, ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ์Šคํ”„๋ผ์ดํŠธ ์ˆ˜์ค€์˜ ์„ ํƒ ์˜์—ญ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด, ์Šคํ”„๋ผ์ดํŠธ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ์—์„œ shift-๋“œ๋ž˜๊ทธ๋ฅผ ํ•˜์„ธ์š”.
ํŒฌ ๋„๊ตฌ // ๋‹จ์ถ•ํ‚ค: space
์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ ๋ณด๊ธฐ
์ฑ„์šฐ๊ธฐ ํˆด
ํ˜„์žฌ ์„ ํƒ ์ƒ‰์ƒ์œผ๋กœ ์ฑ„์šฐ๊ธฐ
ํ˜„์žฌ ์„ ํƒ ์˜์—ญ์— ์ ์šฉ
์„ ํƒ ์˜์—ญ์ด ์—†์„ ๊ฒฝ์šฐ, ๋ณด์—ฌ์ง€๋Š” ์˜์—ญ์— ์ ์šฉ
์ถ”๊ฐ€ ํ‚ค
CTRL-Z ์ทจ์†Œ // 0.2.0 ํ˜„์žฌ ํ•œ ๋‹จ๊ณ„๋งŒ ๊ฐ€๋Šฅ
CTRL-C ์„ ํƒ ์˜์—ญ์ด๋‚˜ ์Šคํ”„๋ผ์ดํŠธ ๋ณต์‚ฌ
CTRL-V ํ˜„์žฌ ์Šคํ”„๋ผ์ดํŠธ ์œ„์น˜์— ๋ถ™์—ฌ๋„ฃ๊ธฐ
Q,W ์ด์ „/๋‹ค์Œ ์Šคํ”„๋ผ์ดํŠธ๋กœ
1,2 ์ด์ „/๋‹ค์Œ ์ƒ‰์œผ๋กœ
Tab ์ „์ฒดํ™”๋ฉด ๋ณด๊ธฐ๋กœ ์ „ํ™˜
Mousewheel ํ™•๋Œ€/์ถ•์†Œ (์ „์ฒดํ™”๋ฉด์—์„  ๊ฐ€์šด๋ฐ ์ง€์ ์„ ๊ธฐ์ค€์œผ๋กœ ์ ์šฉ)
์„ ํƒ ์˜์—ญ/์Šคํ”„๋ผ์ดํŠธ์— ๋Œ€ํ•œ ์ž‘์—…
f ๋’ค์ง‘๊ธฐ
v ์ƒํ•˜๋กœ ๋’ค์ง‘๊ธฐ
r ํšŒ์ „(์„ ํƒ ์˜์—ญ์ด ์ •์‚ฌ๊ฐํ˜•์ด์–ด์•ผ ํ•จ)
์ปค์„œ ํ‚ค๋กœ ์ด๋™ (์„ ํƒ์ด ์Šคํ”„๋ผ์ดํŠธ์ผ ๊ฒฝ์šฐ ์ˆœํ™˜)
์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ
8๊ฐœ์˜ ์›์€ ํ˜„์žฌ ์Šคํ”„๋ผ์ดํŠธ์— ๋Œ€ํ•œ ์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๊ฐ๊ฐ true(on) ๋˜๋Š” false(off) ์ƒํƒœ๋ฅผ ์ง€๋‹ ์ˆ˜ ์žˆ์œผ๋ฉฐ, FSET, FGET ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋“ค ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ์˜ ๋ฒˆํ˜ธ๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ 0,1,2..7 ์ž…๋‹ˆ๋‹ค. fset() ํ•ญ๋ชฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
:: ๋งต ํŽธ์ง‘๊ธฐ
pico-8 ๋งต์€ 128x32 (ํ˜น์€ ๊ณต์œ  ๊ณต๊ฐ„์„ ํฌํ•จํ–ˆ์„ ๊ฒฝ์šฐ 128x64) ๊ฐœ์˜ 8๋น„ํŠธ ๊ฐ’ ๋ธ”๋ก์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ๊ฐ์˜ ๊ฐ’์€ ํŽธ์ง‘๊ธฐ์—์„œ ์Šคํ”„๋ผ์ดํŠธ(0..255)๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’๋“ค๋กœ ์–ด๋–ค ๊ฒƒ์„ ํ‘œ์‹œํ•  ๊ฒƒ์ธ๊ฐ€๋Š” ๋ฌผ๋ก  ๋‹น์‹ ์˜ ์ž์œ ์ž…๋‹ˆ๋‹ค.
๋งต ํŽธ์ง‘๊ธฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋„๊ตฌ๋“ค์€ ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ ํด๋ฆญํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•ด์„œ ๋งต์— ๊ฐ’์„ ์น ํ•˜์„ธ์š”.
์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๊ทธ๋ฆฌ๋ ค๋ฉด, ์Šคํ”„๋ผ์ดํŠธ ๋‚ด๋น„๊ฒŒ์ดํ„ฐ์—์„œ shift+๋“œ๋ž˜๊ทธ๋กœ ๋ธ”๋ก์„ ๋งŒ๋“ค์–ด ์„ ํƒํ•˜์„ธ์š”.
๋ธ”๋ก ๋‹จ์œ„๋กœ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋ ค๋ฉด, ์„ ํƒ ๋„๊ตฌ๋ฅผ ์“ด ๋‹ค์Œ ์Šคํƒฌํ”„ ๋„๊ตฌ๋ฅผ ์จ์„œ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”.
๋งต ์ฃผ๋ณ€์„ ๋‘˜๋Ÿฌ๋ณด๋ ค๋ฉด, ํŒฌ ๋„๊ตฌ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ space๋ฅผ ๋ˆ„๋ฅด์„ธ์š”.
Q,W ๋กœ ์ด์ „/๋‹ค์Œ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
:: SFX ํŽธ์ง‘๊ธฐ
ํ•œ ์นดํŠธ๋ฆฌ์ง€์—๋Š” 64๊ฐœ์˜ SFX("ํšจ๊ณผ์Œ")์„ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํšจ๊ณผ์Œ์œผ๋กœ ํ˜น์€ ์Œ์•…์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ SFX๋Š” 32๊ฐœ์˜ ๋…ธํŠธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ๊ฐ์˜ ๋…ธํŠธ๋Š” ๋‹ค์Œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค:
์ฃผํŒŒ์ˆ˜ (C0..C5)
์•…๊ธฐ (0..7)
๋ณผ๋ฅจ (0..7)
ํšจ๊ณผ (0..7)
๊ฐ SFX๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ๋„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:
์žฌ์ƒ ์†๋„ (SPD) : ๊ฐ ๋…ธํŠธ๋ฅผ ํ”Œ๋ ˆ์ดํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” 'ํ‹ฑ'์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
// 1 ์€ ๋น ๋ฅด๊ณ , 3์€ 1๋ณด๋‹ค 3๋ฐฐ ๋Š๋ฆผ
๋ฃจํ”„์˜ ์‹œ์ž‘๊ณผ ๋ : ๋ฐ˜๋ณตํ•ด์„œ ์žฌ์ƒํ•  ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
// ์‹œ์ž‘ ์ธ๋ฑ์Šค >= ๋ ์ธ๋ฑ์Šค ์ผ ๋•Œ ๋ฃจํ”„๋Š” ๊บผ์ง
SFX๋ฅผ ์ˆ˜์ •/ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: ํ”ผ์น˜ ๋ชจ๋“œ(ํšจ๊ณผ์Œ ํŽธ์ง‘์— ์ ํ•ฉ) ์™€ ํŠธ๋ž˜์ปค ๋ชจ๋“œ(์Œ์•… ํŽธ์ง‘์— ์ ํ•ฉ)์ž…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ํ™”๋ฉด ์ขŒ์ธก ์ƒ๋‹จ ๋ฒ„ํŠผ ๋˜๋Š” TAB์„ ๋ˆŒ๋Ÿฌ์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1. ํ”ผ์น˜ ๋ชจ๋“œ
ํ”ผ์น˜ ์˜์—ญ์„ ํด๋ฆญํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๊ฐ ๋…ธํŠธ์— ๋Œ€ํ•œ ์ฃผํŒŒ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”. ํ˜„์žฌ ์„ค์ •๋œ ์•…๊ธฐ๋Š” ๊ฐ ๋…ธํŠธ์˜ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
shift๋ฅผ ๋ˆ„๋ฅธ ์ฑ„๋กœ ํ˜„์žฌ ์•…๊ธฐ๋งŒ ์ ์šฉํ•˜์„ธ์š”.
CTRL์„ ๋ˆŒ๋Ÿฌ์„œ ๋…ธํŠธ๋ฅผ C ๋งˆ์ด๋„ˆ ํŽœํ…Œํ† ๋‹‰ ์Šค์ผ€์ผ์— ๋งž์ถ”์„ธ์š”.
2. ํŠธ๋ž˜์ปค ๋ชจ๋“œ
๊ฐ ๋…ธํŠธ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: ์ฃผํŒŒ์ˆ˜ ์˜ฅํƒ€๋ธŒ ์•…๊ธฐ ๋ณผ๋ฅจ ํšจ๊ณผ
๋…ธํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋ ค๋ฉด q2w3er5t6y7ui zsxdcvgbhnjm (ํ”ผ์•„๋…ธ ๋ ˆ์ด์•„์›ƒ) ๋ฅผ ๋ˆ„๋ฅด์„ธ์š”.
์ƒˆ๋กœ์šด ๋…ธํŠธ์—๋Š” ํ˜„์žฌ ์„ ํƒ๋œ ์•…๊ธฐ/ํšจ๊ณผ ๊ฐ’์ด ๋ฐฐ์ •๋ฉ๋‹ˆ๋‹ค.
๋…ธํŠธ๋ฅผ ์ง€์šฐ๋ ค๋ฉด backspace๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋ณผ๋ฅจ์„ 0์œผ๋กœ ๋งž์ถ”์„ธ์š”.
ํด๋ฆญ, shift-ํด๋ฆญ์œผ๋กœ ์˜์—ญ์„ ์„ ํƒํ•ด์„œ ๋ณต์‚ฌ(CTRL-C)ํ•˜๊ฑฐ๋‚˜ ๋ถ™์—ฌ๋„ฃ์„(CTRL-V) ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3. ๊ณตํ†ต ์ปจํŠธ๋กค
- + SFX ๊ฐ„ ์ด๋™
< > ์†๋„ ๋ณ€๊ฒฝ
SPACE ์žฌ์ƒ/๋ฉˆ์ถค
A ๋ฃจํ”„ ์ค‘์ธ ์ƒ˜ํ”Œ์˜ ๋ฃจํ”„ ํ’€๊ธฐ
ํด๋ฆญ ๋˜๋Š” ์™ผ์ชฝ ํด๋ฆญ SPD๊ฐ’๊ณผ LOOP๊ฐ’์˜ ์ฆ๊ฐ€/๊ฐ์†Œ
// Shift๋ฅผ ๋ˆ„๋ฅธ ์ฑ„๋กœ ์กฐ์ž‘ํ•˜๋ฉด 4 ๋‹จ์œ„๋กœ ์ฆ๊ฐ€/๊ฐ์†Œ
// ๋˜๋Š”, ํด๋ฆญํ•œ ์ฑ„๋กœ ์ขŒ/์šฐ ํ˜น์€ ์ƒ/ํ•˜๋กœ ๋“œ๋ž˜๊ทธํ•ด์„œ ์กฐ์ž‘
Shift-ํด๋ฆญ ๋ชจ๋“  ๋…ธํŠธ์— ๋™์ผํ•œ ์•…๊ธฐ, ํšจ๊ณผ ๋˜๋Š” ๋ณผ๋ฅจ์„ ์ ์šฉ
:: ํšจ๊ณผ
0 ์—†์Œ
1 ์Šฌ๋ผ์ด๋“œ // ํ˜„์žฌ ๋…ธํŠธ๋กœ ์Šฌ๋ผ์ด๋“œ
2 ๋น„๋ธŒ๋ผํ†  // 1/4ํ†ค ๋ฒ”์œ„์—์„œ ํ”ผ์น˜ ๋–จ๊ธฐ
3 ๋“œ๋ž // ๋…ธํŠธ ์ฃผํŒŒ์ˆ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๋–จ์–ด๋œจ๋ฆผ
4 ํŽ˜์ด๋“œ ์ธ // ๋ณผ๋ฅจ์„ 0์—์„œ๋ถ€ํ„ฐ ์˜ฌ๋ฆผ
5 ํŽ˜์ด๋“œ ์•„์›ƒ // ๋ณผ๋ฅจ์„ 0์œผ๋กœ ์ค„์ž„
6 ๋น ๋ฅธ ์•„๋ฅดํŽ˜์ง€์˜ค // 4 ์†๋„๋กœ 4๊ฐœ์˜ ๋…ธํŠธ๋ฅผ ์ˆœํ™˜
7 ๋Š๋ฆฐ ์•„๋ฅดํŽ˜์ง€์˜ค // 8 ์†๋„๋กœ 4๊ฐœ์˜ ๋…ธํŠธ๋ฅผ ์ˆœํ™˜
SFX ์†๋„ <= 8์ผ ๊ฒฝ์šฐ, ์•„๋ฅดํŽ˜์ง€์˜ค ์Šคํ”ผ๋“œ๋Š” ๊ฐ๊ฐ 2, 4๋กœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
:: ์Œ์•… ํŽธ์ง‘๊ธฐ
PICO-8์—์„œ ์Œ์•…์€ 'ํŒจํ„ด'์˜ ์—ฐ์†์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒจํ„ด์€ ํ•œ ๊ฐœ์˜ SFX๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„ ๋„ค ๊ฐœ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
:: ์ˆœ์„œ ์กฐ์ ˆ
์žฌ์ƒ ์ˆœ์„œ๋Š” ์šฐ์ธก ์ƒ๋‹จ์˜ 3๊ฐœ์˜ ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒจํ„ด์˜ ์žฌ์ƒ์ด ๋๋‚˜๋ฉด, ์•„๋ž˜์˜ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ํŒจํ„ด์„ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค:
- ๋‚จ์€ ํŒจํ„ด์ด ์—†์Œ (์Œ์•… ๋ฉˆ์ถค)
- STOP ๋ช…๋ น์ด ํ˜„์žฌ ํŒจํ„ด์— ์„ค์ •๋˜์–ด ์žˆ์Œ (3๋ฒˆ์งธ ๋ฒ„ํŠผ)
- LOOP BACK ๋ช…๋ น์ด ํ˜„์žฌ ํŒจํ„ด์— ์„ค์ •๋˜์–ด ์žˆ์Œ (2๋ฒˆ์งธ ๋ฒ„ํŠผ): ์ด ๊ฒฝ์šฐ ์Œ์•… ์žฌ์ƒ๊ธฐ๋Š” LOOP START ๋ฒ„ํŠผ (1๋ฒˆ์งธ ๋ฒ„ํŠผ) ์ด ์„ค์ •๋œ ํŒจํ„ด ํ˜น์€ ํ•ด๋‹น ํŒจํ„ด์ด ์—†์„ ๊ฒฝ์šฐ 0๋ฒˆ ํŒจํ„ด์œผ๋กœ ๋Œ์•„๊ฐ€ ์žฌ์ƒ์„ ๊ณ„์†ํ•จ
ํŒจํ„ด ๋‚ด์— ์†๋„๊ฐ€ ๋‹ค๋ฅธ SFX๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ์ˆœํ™˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ ํŒจํ„ด์˜ ์žฌ์ƒ์ด ๋๋‚  ๋•Œ ํŒจํ„ด์˜ ์žฌ์ƒ์ด ๋๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์น™ ๋ฐ•์ž๋‚˜ ๋”๋ธ”ํƒ€์ž„ ๋“œ๋Ÿผ ๋น„ํŠธ ๋“ฑ์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋”๋ธ” ํƒ€์ž„: ๊ฐ™์€ ๋ฆฌ๋“ฌ์„ ์†๋„๋งŒ ๋‘ ๋ฐฐ ๋น ๋ฅด๊ฒŒ ํ•ด์„œ ์—ฐ์ฃผํ•˜๋Š” ๊ฒƒ)
:: ์Œ์•… ๋ณต์‚ฌํ•˜๊ธฐ
์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒจํ„ด์„ ์„ ํƒํ•˜๋ ค๋ฉด: ํŒจํ„ด ๋‚ด๋น„๊ฒŒ์ดํ„ฐ์—์„œ ์ฒ˜์Œ ํŒจํ„ด์„ ํด๋ฆญํ•ด์„œ ์„ ํƒํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ํŒจํ„ด์„ shift-ํด๋ฆญ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํŒจํ„ด์€ CTRL-C์™€ CTRL-V๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์นดํŠธ๋ฆฌ์ง€์— ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ๋Š” ํ•„์š”ํ•  ๊ฒฝ์šฐ ํŒจํ„ด์ด ์ฐธ์กฐํ•˜๋Š” SFX๋“ค๋„ ๊ฐ™์ด ๋ณต์‚ฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค (์ด ๋•Œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
============================================================================================
Lua ๋ฌธ๋ฒ• ์ž…๋ฌธ์„œ
============================================================================================
PICO-8 ํ”„๋กœ๊ทธ๋žจ์€ Lua ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค๋งŒ, ํ‘œ์ค€ Lua ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ•„์ˆ˜์ ์ธ Lua ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ์ž…๋‹ˆ๋‹ค.
๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ์‹ถ์œผ์‹œ๊ฑฐ๋‚˜ ์ œ๋Œ€๋กœ ๋œ Lua์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด www.lua.org ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
:: ์ฝ”๋ฉ˜ํŠธ
-- ํ•˜์ดํ”ˆ์„ ๋‘ ๊ฐœ ์จ์„œ ์ค„์ด ๋๋‚  ๋•Œ๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋ฌด์‹œ
--[[ ์—ฌ๋Ÿฌ ์ค„๋กœ ๋œ
์ฝ”๋ฉ˜ํŠธ ]]
:: ํƒ€์ž…types๊ณผ ํ• ๋‹นassignment
Lua์— ์กด์žฌํ•˜๋Š” ํƒ€์ž…์€ ์ˆ˜numbers, ๋ฌธ์ž์—ดstrings, ๋ถˆ ๋Œ€์ˆ˜booleans, ํ…Œ์ด๋ธ”tables์ด ์žˆ์Šต๋‹ˆ๋‹ค.
NUM = 12/100
S = "THIS IS A STRING"
B = FALSE
T = {1,2,3}
PICO-8์—์„œ ์“ฐ์ด๋Š” ๋ชจ๋“  ์ˆซ์ž๋Š” ๊ฐ€์ˆ˜๋ถ€:์ง€์ˆ˜๋ถ€๊ฐ€ 16:16์ธ ๊ณ ์ •์†Œ์ˆ˜์  ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, -32768.0 ~ 32767.99 ์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
16์ง„์ˆ˜์™€ fractional parts๋ฅผ ๋ณ‘ํ–‰ํ•œ ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
0x11 -- 17
0x11.4000 -- 17.25
0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋กœ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค: 0x7fff.ffff
:: ์กฐ๊ฑด๋ฌธconditionals
IF NOT B THEN -- B๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ
PRINT("B IS FALSE") -- "B๋Š” ๊ฑฐ์ง“" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
ELSE -- ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ
PRINT("B IS NOT FALSE") -- "B๋Š” ๊ฑฐ์ง“์ด ์•„๋‹˜" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
END -- ์กฐ๊ฑด๋ฌธ ๋
-- ELSEIF์™€ ํ•จ๊ป˜ ์“ฐ์ผ ๊ฒฝ์šฐ
IF X == 0 THEN -- X๊ฐ€ 0์ผ ๊ฒฝ์šฐ
PRINT("X IS 0") -- "X๋Š” 0" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
ELSEIF X < 0 THEN -- ๊ทธ๋ ‡์ง€ ์•Š๊ณ  X๊ฐ€ 0๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ
PRINT("X IS NEGATIVE") -- "X๋Š” ์Œ์ˆ˜" ๋ผ๊ณ  ์ถœ๋ ฅ
ELSEIF X > 0 THEN -- ๊ทธ๋ ‡์ง€ ์•Š๊ณ  X๊ฐ€ 0๋ณด๋‹ค ํด ๊ฒฝ์šฐ
PRINT("X IS POSITIVE") -- "X๋Š” ์–‘์ˆ˜" ๋ผ๊ณ  ์ถœ๋ ฅ
ELSE -- ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ
PRINT("THIS IS LINE IS NEVER REACHED") --[[ "์ด ์ค„์€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ" ๋ผ๊ณ  ์ถœ๋ ฅ
(์ด ์ค„์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” X ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค) ]]
END -- ์กฐ๊ฑด๋ฌธ ๋
IF (4 == 4) THEN PRINT("EQUAL") END
-- 4๊ฐ€ 4์ผ ๊ฒฝ์šฐ, "๊ฐ™์Œ" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
IF (4 ~= 3) THEN PRINT("NOT EQUAL") END
-- 4๊ฐ€ 3์ด ์•„๋‹ ๊ฒฝ์šฐ, "๊ฐ™์ง€ ์•Š์Œ" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
IF (4 <= 4) THEN PRINT("LESS THAN OR EQUAL") END
-- 4๊ฐ€ 4์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ ์„ ๊ฒฝ์šฐ, "์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
IF (4 > 3) THEN PRINT("MORE THAN") END
-- 4๊ฐ€ 3๋ณด๋‹ค ํด ๊ฒฝ์šฐ, "๋” ํผ" ์ด๋ผ๊ณ  ์ถœ๋ ฅ
:: ๋ฐ˜๋ณต๋ฌธloops
FOR X=1,5 DO -- X๊ฐ€ 1์—์„œ 5๊นŒ์ง€์˜ ๊ฐ’์„ ์ทจํ•  ๋•Œ์— ์‹คํ–‰
PRINT(X) -- X๋ฅผ ์ถœ๋ ฅ
END -- ๋ฐ˜๋ณต๋ฌธ ๋
-- 1,2,3,4,5๋ฅผ ์ถœ๋ ฅ
X = 1
WHILE(X <= 5) DO -- X๊ฐ€ 5๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ์— ์‹คํ–‰
PRINT(X) -- X๋ฅผ ์ถœ๋ ฅ
X = X + 1 -- X์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€
END -- ๋ฐ˜๋ณต๋ฌธ ๋
FOR X=1,10,3 DO PRINT(X) END -- 1,4,7,10
FOR X=5,1,-2 DO PRINT(X) END -- 5,3,1
:: ํ•จ์ˆ˜functions์™€ ์ง€์—ญ ๋ณ€์ˆ˜local variables
Y=0
FUNCTION PLUSONE(X) -- PLUSONE์ด๋ผ๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ, ์ธ์ž๊ฐ’์œผ๋กœ X๋ฅผ ๋ฐ›๋Š”๋‹ค
LOCAL Y = X+1 -- ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ง€์—ญ๋ณ€์ˆ˜ Y์— X+1์˜ ๊ฐ’์„ ํ• ๋‹น
RETURN Y -- ์ด ํ•จ์ˆ˜๋Š” Y๋ฅผ ๋ฐ˜ํ™˜
END -- ํ•จ์ˆ˜ ๋
PRINT(PLUSONE(2)) -- 3
PRINT(Y) -- 0
-- Y๋Š” ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ด๋ฏ€๋กœ ํ•จ์ˆ˜ ๋ฐ”๊นฅ์—์„œ ์ ‘๊ทผํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์—†์Œ
:: ํ…Œ์ด๋ธ”tables
Lua์—์„œ ํ…Œ์ด๋ธ”์€ ์—ฌ๋Ÿฌ ํ‚ค-๊ฐ’ ์Œ๋“ค์˜ ๋ชจ์ž„์ด๋ฉฐ, ์ด ๋•Œ ํ‚ค์™€ ๊ฐ’์˜ ํƒ€์ž…์€ ํ˜ผ์šฉํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์ˆ˜ ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•ด์„œ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
A={} -- ๋นˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
A[1] = "BLAH"
A[2] = 42
A["FOO"] = {1,2,3}
-- ๋ฐฐ์—ด์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 1-based ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉ (๋ฐฐ์—ด ๋‚ด ํ• ๋‹น๋œ ์ฒซ๋ฒˆ์งธ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ 1๋ถ€ํ„ฐ ์ง€์ •ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค).
A = {11,12,13,14}
PRINT(A[2]) -- 12
-- ์—ฐ์†๋œ ๋„ค ๊ฐœ์˜ 1-based ์ •์ˆ˜๋กœ ์ธ๋ฑ์Šค๊ฐ€ ์ง€์ •๋œ ํ…Œ์ด๋ธ”์˜ ์‚ฌ์ด์ฆˆ
PRINT(#A) -- 4
-- ์ธ๋ฑ์Šค๊ฐ€ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ dot notation์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
PLAYER = {}
PLAYER.X = 2 -- PLAYER["X"] ๋กœ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ
PLAYER.Y = 3
-- ์•„๋ž˜ api ์ฐธ์กฐ์—์„œ ํ…Œ์ด๋ธ” ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
:: PICO-8 ์†๊ธฐ
PICO-8์€ ํ”ํžˆ ์“ฐ์ด๋Š” ํŒจํ„ด์— ๋Œ€ํ•ด ๋น„ํ‘œ์ค€์ ์ธ ๋” ์งง์€ ํ‘œ๊ธฐ ๋ฐฉ๋ฒ•์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
1. IF THEN END ๋ฌธ์žฅ์„ ํ•œ ์ค„์— ์“ธ ๋•Œ THEN๊ณผ END๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
IF (NOT B) I=1 J=2
-- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: IF (NOT B) THEN I=1 J=2 END
-- ์กฐ๊ฑด์„ ๋‘˜๋Ÿฌ์‹ธ๋Š” ๊ด„ํ˜ธ๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”
2. ๋‹จํ•ญ ์ˆ˜์‹ ์—ฐ์‚ฐ์ž
a += 2 -- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: a = a + 2
a -= 2 -- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: a = a - 2
a *= 2 -- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: a = a * 2
a /= 2 -- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: a = a / 2
a %= 2 -- ๋‹ค์Œ์˜ ์ฝ”๋“œ์™€ ๋™์ผ: a = a % 2
3. != ์—ฐ์‚ฐ์ž
์†๊ธฐ ํ‘œ๊ธฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ, pico-8์—์„œ๋Š” ~= ๋Œ€์‹  !=๋„ "๊ฐ™์ง€ ์•Š์Œ"์„ ๋œปํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
============================================================================================
API
============================================================================================
PICO-8์€ Lua ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  PICO-8์˜ ๋ฏธ๋‹ˆ๋ฉ€ํ•œ ๋””์ž์ธ๊ณผ ์ œํ•œ๋œ ํ™”๋ฉด ์‚ฌ์ด์ฆˆ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์€ api๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. api ์‚ฌ์šฉ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด๋ ค๋ฉด /DEMOS/API.P8 ์„ ์ฐธใ…ˆํ•˜์„ธ์š”.
ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
function_name parameter [optional_parameter]
-- ํ•จ์ˆ˜_์ด๋ฆ„ ์ธ์ž [์„ ํƒ์ _์ธ์ž]
์‹œ์Šคํ…œ ํ•จ์ˆ˜๋ฅผ ๋ช…๋ น์ค„์—์„œ ๋ถ€๋ฅผ ๋•Œ๋Š” ๊ด„ํ˜ธ์™€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
load blah.p8 --> load("blah.p8")
--------------------------------------------------------------------------------------------------------
์‹œ์Šคํ…œ
--------------------------------------------------------------------------------------------------------
load filename
save filename
์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
".png" ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ png ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์„ธ์š” -- ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ…์ŠคํŠธ ํ˜•์‹ (".p8")์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
".p8"์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
save("blah") --> save("blah.p8")
save("blah.png") --> save("blah.p8.png")
load("blah.png") --> load("blah.p8.png") (blah.png๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ)
๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ pico-8์€ ".p8"์„ ๋ถ™์—ฌ์„œ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
".png"๋Š” ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ์— ํ•œํ•ด์„œ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
load ("blah") --> "blah.p8"์ด ์—†์„ ๊ฒฝ์šฐ "blah.p8.png"๋ฅผ ์ฐพ๊ณ  ์ด๋„ ์—†์„ ๊ฒฝ์šฐ "blah.png"๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
์นดํŠธ๋ฆฌ์ง€๋ฅผ ํ•œ ๋ฒˆ ์ด์ƒ ๋ถˆ๋Ÿฌ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ–ˆ์„ ๊ฒฝ์šฐ, CTRL-S ๋กœ ํ€ต์„ธ์ด๋ธŒ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
:: ํ…์ŠคํŠธ ๋ผ๋ฒจ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„ .png ์นดํŠธ๋ฆฌ์ง€๋กœ ์ €์žฅํ•˜๊ธฐ
์นดํŠธ๋ฆฌ์ง€์— ์ €์žฅ๋  ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด, ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ F7์„ ๋ˆŒ๋Ÿฌ์„œ ํ™”๋ฉด์„ ์บก์ณํ•˜์„ธ์š”. ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์˜ ์ฒซ ๋‘ ์ค„์— ์“ด ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์นดํŠธ๋ฆฌ์ง€์˜ ๋ผ๋ฒจ๋กœ ์“ฐ์—ฌ์ง‘๋‹ˆ๋‹ค.
e.g.
-- OCEAN DIVER LEGENDS
-- BY LOOPY
:: .png ํ˜•์‹์˜ ์ฝ”๋“œ ์‚ฌ์ด์ฆˆ ์ œํ•œ
.png ํ˜•์‹์œผ๋กœ ์ €์žฅํ•  ๋•Œ, ์••์ถ•๋œ ์ฝ”๋“œ์˜ ํฌ๊ธฐ๋Š” ๋ฐ˜๋“œ์‹œ 15360 ๋ฐ”์ดํŠธ ์ด๋‚ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณด๋ ค๋ฉด INFO ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์••์ถ• ์‚ฌ์ด์ฆˆ ์ œํ•œ์€ .p8 ํฌ๋งท์—์„œ๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์••์ถ• ์ฝ”๋“œ ์‚ฌ์ด์ฆˆ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ํ•„์š”๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ๊ฐ€ ์ปค์ง„ ์ฝ”๋“œ๋Š” 8192 ํ† ํฐ ์ œํ•œ์— ๋ณดํ†ต ๋จผ์ € ๋„๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
folder
ํ˜ธ์ŠคํŠธ OS ์—์„œ ์นดํŠธ๋ฆฌ์ง€๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํด๋”๋ฅผ ์—ด๊ธฐ
ls
ํ˜„์žฌ ํด๋”์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์—ด๊ฑฐํ•ด์„œ ๋ณด์ด๊ธฐ
run
ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ ์ง€์ ์—์„œ๋ถ€ํ„ฐ ์‹คํ–‰
ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—์„œ ๋ฆฌ์…‹ ๋ชฉ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ
resume
ํ˜„์žฌ ์นดํŠธ๋ฆฌ์ง€ ์ƒํƒœ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ (๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
reboot
๊ธฐ๊ณ„๋ฅผ ์žฌ๋ถ€ํŒ…
์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ์Œ
stat x
x:0 ํ˜„์žฌ Lua ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ถœ๋ ฅ (0..1024MB)
x:1 ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์—์„œ์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ถœ๋ ฅ (1.0์€ 30fps ์†๋„์—์„œ 100% ์‚ฌ์šฉ๋Ÿ‰์„ ์˜๋ฏธ)
info
ํ˜„์žฌ ์นดํŠธ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์ •๋ณด ์ถœ๋ ฅ:
์ฝ”๋“œ ์‚ฌ์ด์ฆˆ, ํ† ํฐ, ์••์ถ• ์‚ฌ์ด์ฆˆ
flip
๋ฐฑ ๋ฒ„ํผback buffer๋ฅผ ์Šคํฌ๋ฆฐ์œผ๋กœ ๋„˜๊ธฐ๊ณ  ๋‹ค์Œ ํ”„๋ ˆ์ž„๊นŒ์ง€ ๋Œ€๊ธฐ (30fps)
๋ณดํ†ต ์ง์ ‘ ์ด ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•  ์ผ์€ ์—†์Œ -- _draw()๊ฐ€ ๋Œ€์‹  ์ด ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•จ
ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”„๋ ˆ์ž„์„ ์˜ฌ๋ฆฌ๊ธฐ ์ „์— flip์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๊ณ , _draw() ํ•จ์ˆ˜๊ฐ€ ์•„์ง ์‹คํ–‰์ค‘์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๋ฐฑ ๋ฒ„ํผ์— ๋‹ด๊ธด ํ˜„์žฌ ์ฝ˜ํ…์ธ ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
printh str
๋””๋ฒ„๊ทธ ๋ชฉ์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ํ˜ธ์ŠคํŠธ OS์˜ ์ฝ˜์†”์— ์ถœ๋ ฅ
--------------------------------------------------------------------------------------------
ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ
--------------------------------------------------------------------------------------------
๋‹ค์Œ์˜ ํŠน๋ณ„ ํ•จ์ˆ˜ 3๊ฐœ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ ์–ธํ–ˆ์„ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค:
_update()
30fps์—์„œ ๋งค ์—…๋ฐ์ดํŠธ ์‹œ๊ธฐ๋งˆ๋‹ค ํ˜ธ์ถœ
_draw()
๋งค ๋ฒˆ ํ”„๋ ˆ์ž„์„ ๋ณด์—ฌ์•ผ ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ
_init()
ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•  ๋•Œ ํ˜ธ์ถœ
_draw()๋Š” ๋ณดํ†ต 30fps์˜ ์†๋„๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ ์‹œ๊ฐ„ ์•ˆ์— ์ด ํ•จ์ˆ˜๊ฐ€ ์ œ ์ž‘์—…์„ ๋‹ค ๋๋‚ด์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, pico-8์€ ํ”„๋กœ๊ทธ๋žจ์„ 15fps์˜ ์†๋„๋กœ ๋‚ฎ์ถฐ ๋Œ๋ฆฌ๋Š” ๋Œ€์‹  _update() ํ•จ์ˆ˜๋ฅผ ๋งค ํ”„๋ ˆ์ž„์ด ๋ณด์—ฌ์ง€๋Š” ๊ฐ„๊ฒฉ ๋‹น ๋‘ ๋ฒˆ ์”ฉ ํ˜ธ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
:: PICO-8์„ 60fps๋กœ ๊ตฌ๋™ํ•˜๊ธฐ
_update() ๋Œ€์‹  _update60()์„ ์„ ์–ธํ•  ๊ฒฝ์šฐ, PICO-8์€ 60fps ๋ชจ๋“œ๋กœ ๊ตฌ๋™๋ฉ๋‹ˆ๋‹ค:
- _update60()๊ณผ _draw()๋Š” 60fps์˜ ์†๋„๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
- 30fps๋กœ ์†๋„๊ฐ€ ๋–จ์–ด์ง€๊ธฐ ์ „๊นŒ์ง€ PICO-8 CPU์˜ ์ ˆ๋ฐ˜๋งŒ์„ ๋งค ํ”„๋ ˆ์ž„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
** ๋ชจ๋“  PICO-8์ด 60fps๋ฅผ ์ง€์›ํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๊ธฐ์—์„œ๋Š” _update60()์ด ํ”„๋ ˆ์ž„ ๋‹น ๋‘ ๋ฒˆ ์”ฉ ํ˜ธ์ถœ๋˜๊ณ  _draw()๋Š” 30fps์˜ ์†๋„๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. 30fps ํ™˜๊ฒฝ์—์„œ ๊ตฌ๋™ํ•  ๋•Œ์˜ ํ”„๋กœ๊ทธ๋žจ ์ž‘๋™ ๋ชจ์Šต์„ ๋ณด๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ์ฝ”๋“œ์˜ ์•„๋ž˜์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
u60=_update60 _update60=nil function _update() u60() u60() end
--------------------------------------------------------------------------------------------
๊ทธ๋ž˜ํ”ฝ
--------------------------------------------------------------------------------------------
PICO-8์€ 128๊ฐœ์˜ 8x8 ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•œ ๊ฐœ์˜ ๋ฑ…ํฌ์™€, ๋งต์˜ ํ•˜๋‹จ๋ถ€ ์ ˆ๋ฐ˜๊ณผ ๊ณต์œ ํ•˜๋Š” 128๊ฐœ์˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด 256๊ฐœ์˜ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธsprite sheet๋ผ ๋ถ€๋ฅด๋ฉฐ, 128x128 ์‚ฌ์ด์ฆˆ์˜ ํ”ฝ์…€ ์ด๋ฏธ์ง€๋ผ๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
PICO-8์˜ ๋ชจ๋“  ๊ทธ๋ฆฌ๊ธฐ ์ž‘์—…์€ ํ˜„์žฌ ๊ทธ๋ฆฌ๊ธฐ ์ƒํƒœ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋Š” ์นด๋ฉ”๋ผ ํฌ์ง€์…˜ (๋ชจ๋“  ์ขŒํ‘œ์— ์˜คํ”„์…‹์„ ์„ค์ •ํ•  ๋•Œ), ํŒ”๋ ˆํŠธ ๋งคํ•‘(์Šคํ”„๋ผ์ดํŠธ ์ƒ‰๊น”์„ ๋‹ค์‹œ ์น ํ•  ๋•Œ), ์„ ํƒํ•œ ์‚ฌ๊ฐํ˜•, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ž„์˜๋กœ ์ง€์ •๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๋ฉด ํ•ญ์ƒ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ํ˜„์žฌ ์„ ํƒํ•œ ์ƒ‰ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ธฐ ์ƒํƒœ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ๋ฆฌ์…‹๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค์Œ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
clip() camera() pal() color()
์ปฌ๋Ÿฌ ์ธ๋ฑ์Šค:
0 ๊ฒ€์ • 1 ์–ด๋‘์šดํŒŒ๋ž‘ 2 ์–ด๋‘์šด๋ณด๋ผ 3 ์–ด๋‘์šด์ดˆ๋ก
4 ๊ฐˆ์ƒ‰ 5 ์–ด๋‘์šดํšŒ์ƒ‰ 6 ๋ฐ์€ํšŒ์ƒ‰ 7 ํ•˜์–‘
8 ๋นจ๊ฐ• 9 ์ฃผํ™ฉ 10 ๋…ธ๋ž‘ 11 ์ดˆ๋ก
12 ํŒŒ๋ž‘ 13 ๋‚จ์ƒ‰ 14 ๋ถ„ํ™ 15 ๋ณต์ˆญ์•„์ƒ‰
clip [x y w h]
์Šคํฌ๋ฆฐ์˜ ํด๋ฆฌํ•‘ ๊ฒฝ๊ณ„๋ฅผ ํ”ฝ์…€๋กœ ์ •์˜
clip()์œผ๋กœ ํ˜ธ์ถœํ•ด์„œ ๋ฆฌ์…‹
pget x y
pset x y [c]
x, y ์ง€์  ํ”ฝ์…€์˜ ์ƒ‰๊น”์„ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ c๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
sget x y
sset x y [c]
์Šคํ”„๋ผ์ดํŠธ์‹œํŠธ ์ƒ์˜ x, y ์ง€์  ํ”ฝ์…€์˜ ์ƒ‰๊น”์„ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ c๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
fget n [f]
fset n [f] v
์Šคํ”„๋ผ์ดํŠธ์˜ ํ”Œ๋ž˜๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ v๋กœ ์„ค์ •
f ํ”Œ๋ž˜๊ทธ ์ธ๋ฑ์Šค 0..7
v ๋ถˆ ๋Œ€์ˆ˜ ๊ฐ’์œผ๋กœ์„œ true ํ˜น์€ false
ํ”Œ๋ž˜๊ทธ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋Š” ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ์˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์•Œ๋ก๋‹ฌ๋กํ•œ ๋ฒ„ํŠผ ํ•œ ์ค„์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ์˜ ์˜๋ฏธ๋Š” ์‚ฌ์šฉ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด ์–ด๋–ค ๊ทธ๋ฃน('๋ ˆ์ด์–ด')์˜ ์Šคํ”„๋ผ์ดํŠธ๊ฐ€ ๋งต์— ๊ทธ๋ ค์ ธ์•ผ ํ•˜๋Š”์ง€ ๋“ฑ์„ ์ง€์‹œํ•˜๊ธฐ ์œ„ํ•ด ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ”Œ๋ž˜๊ทธ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ๋žต๋˜์—ˆ์„ ๊ฒฝ์šฐ, ๋ชจ๋“  ํ”Œ๋ž˜๊ทธ๋Š” ๋น„ํŠธํ•„๋“œ์˜ ํ˜•ํƒœ๋กœ ์ „๋‹ฌ/์„ค์ •๋ฉ๋‹ˆ๋‹ค.
fset(2, 1+2+8) -- ๋น„ํŠธ 0,1,3์„ ์„ค์ •
fset(2, 4, true) -- ๋น„ํŠธ 4๋ฅผ ์„ค์ •
print(fget(2)) -- 27 (1+2+8+16)
print str [x y [col]]
๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
๋ฌธ์ž์—ด๋งŒ ์ธ์ž๋กœ ์ž…๋ ฅํ–ˆ์„ ๊ฒฝ์šฐ, ์ปค์„œ๊ฐ€ ํ™”๋ฉด ๋์— ๋‹ค๋‹ค๋ฅด๋ฉด ์ž๋™์œผ๋กœ ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด์„ ์ ์šฉํ•˜๊ณ  ํ™”๋ฉด์„ ์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค. (ํ„ฐ๋ฏธ๋„์ฒ˜๋Ÿผ ๋ฐ˜์‘)
cursor x y
์ปค์„œ ์œ„์น˜์™€ ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด ์—ฌ๋ฐฑ์„ ์„ค์ •
color col
๊ทธ๋ฆฌ๊ธฐ ํ•จ์ˆ˜๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ƒ‰์„ ์„ค์ •
cls
ํ™”๋ฉด ์ง€์šฐ๊ธฐ
camera [x y]
๋ชจ๋“  ๊ทธ๋ฆฌ๊ธฐ ํ•จ์ˆ˜์— -x, -y์˜ ์˜คํ”„์…‹์„ ์ง€์ •
camera()๋กœ ํ˜ธ์ถœํ•ด์„œ ๋ฆฌ์…‹
circ x y r [col]
circfill x y r [col]
x,y ์ง€์ ์— r์˜ ๋ฐ˜์ง€๋ฆ„์„ ๊ฐ–๋Š” (์ƒ‰์น ๋œ) ์› ๊ทธ๋ฆฌ๊ธฐ
line x0 y0 x1 y1 [col]
์„  ๊ทธ๋ฆฌ๊ธฐ
rect x0 y0 x1 y1 [col]
rectfill x0 y0 x1 y1 [col]
(์ƒ‰์น ๋œ) ์ง์‚ฌ๊ฐํ˜• ๊ทธ๋ฆฌ๊ธฐ
pal c0 c1 [p]
ํ˜ธ์ถœ ์‹œ์  ์ดํ›„๋ถ€ํ„ฐ ๋ชจ๋“  ๊ทธ๋ฆฌ๊ธฐ ํ•จ์ˆ˜์—์„œ c0 ์ƒ‰ ๋Œ€์‹  c1 ์ƒ‰์„ ์‚ฌ์šฉ (์ปฌ๋Ÿฌ ๋ฆฌ๋งคํ•‘)
pal()๋กœ ํ˜ธ์ถœํ•˜์—ฌ ํˆฌ๋ช…๊ฐ’์„ ํฌํ•จํ•ด ์‹œ์Šคํ…œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฆฌ์…‹
ํŒ”๋ ˆํŠธ ์ข…๋ฅ˜ ๋‘ ๊ฐ€์ง€(p; ๊ธฐ๋ณธ๊ฐ’์€ 0)
0 ๊ทธ๋ฆฌ๊ธฐ ํŒ”๋ ˆํŠธ : ์ƒˆ๋กœ ๊ทธ๋ฆด ์ƒ‰๋“ค์— ์ ์šฉ // e.g. ์Šคํ”„๋ผ์ดํŠธ ์ปฌ๋Ÿฌ ๋ฆฌ๋งคํ•‘
1 ์Šคํฌ๋ฆฐ ํŒ”๋ ˆํŠธ : ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ƒ‰๋“ค์— ์ ์šฉ // e.g. ํŽ˜์ด๋“œ ํšจ๊ณผ
c0 ์ปฌ๋Ÿฌ ์ธ๋ฑ์Šค 0..15
c1 ์ƒˆ๋กœ ์ ์šฉํ•  ์ปฌ๋Ÿฌ ์ธ๋ฑ์Šค
palt c t
์ปฌ๋Ÿฌ ์ธ๋ฑ์Šค์˜ ํˆฌ๋ช…๋„๋ฅผ t(๋ถˆ ๋Œ€์ˆ˜ ๊ฐ’)๋กœ ์ ์šฉ
ํˆฌ๋ช…๋„์˜ ์ ์šฉ ์ƒํƒœ๋Š” spr(), sspr(), map() ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ
e.g. palt(8, true) -- ๋นจ๊ฐ„ ์ƒ‰์„ ๊ทธ๋ฆฌ์ง€ ์•Š์Œ
palt()๋กœ ํ˜ธ์ถœํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฆฌ์…‹: 0๋ฒˆ ์ƒ‰์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ƒ‰์„ ๋ถˆํˆฌ๋ช…ํ•˜๊ฒŒ
spr n x y [w h] [flip_x] [flip_y]
n (0..255) ๋ฒˆ์งธ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ x,y ์œ„์น˜์— ๊ทธ๋ฆฌ๊ธฐ
๋„ˆ๋น„์™€ ๋†’์ด์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1,1
w, h ๊ฐ’์„ ํ†ตํ•ด ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ์˜ ์ด์›ƒํ•˜๋Š” ๋ช‡ ์นธ๊นŒ์ง€ ํ†ต์งธ๋กœ ๊ทธ๋ฆด ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •
0๋ฒˆ ์ƒ‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ทธ๋ ค์ง (palt()๋ฅผ ์ฐธ์กฐ)
flip_x=true ์ขŒ์šฐ ๋’ค์ง‘๊ธฐ
flip_y=true ์ƒํ•˜ ๋’ค์ง‘๊ธฐ
sspr sx sy sw sh dx dy [dw dh] [flip_x] [flip_y]
์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ์˜ (sx, sy)์—์„œ ๊ฐ€๋กœ ์„ธ๋กœ (sw, sh)๊นŒ์ง€์˜ ์˜์—ญ์„ ๊ฐ€์ ธ์™€์„œ
ํ™”๋ฉด์˜ (dx, dy)์—์„œ ๊ฐ€๋กœ ์„ธ๋กœ (dw, dh)๊นŒ์ง€ ๋Š˜๋ ค์„œ ๊ทธ๋ฆฌ๊ธฐ // ์ˆ˜์น˜๋Š” ํ”ฝ์…€ ๋‹จ์œ„
0๋ฒˆ ์ƒ‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ทธ๋ ค์ง (palt()๋ฅผ ์ฐธ์กฐ)
dw, dh๋Š” ๋ช…์‹œ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ sw, sh์™€ ๋™์ผํ•œ ๊ฐ’
flip_x=true ์ขŒ์šฐ ๋’ค์ง‘๊ธฐ
flip_y=true ์ƒํ•˜ ๋’ค์ง‘๊ธฐ
--------------------------------------------------------------------------------------------
ํ…Œ์ด๋ธ”
--------------------------------------------------------------------------------------------
add t v
ํ…Œ์ด๋ธ” t์˜ ๋์— v๋ฅผ ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์Œ: t[#t+1] = v
FOO={} -- ๋นˆ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ
ADD(FOO, 11)
ADD(FOO, 22)
PRINT(FOO[2]) -- 22
del t v
ํ…Œ์ด๋ธ” t์—์„œ ์ฒ˜์Œ์œผ๋กœ ์ฐพ์•„๋‚ธ v ๊ฐ’์„ ์ œ๊ฑฐ
ํ…Œ์ด๋ธ” ์•ˆ์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋Š” ๊ฑธ ๋ง‰๊ธฐ ์œ„ํ•ด ๋‚จ์€ ๊ฐ’๋“ค์€ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์”ฉ ์˜ฎ๊ฒจ์ง‘๋‹ˆ๋‹ค.
v๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ ์ง€์šธ ๊ฐ’์ž„์„ ๊ธฐ์–ตํ•˜์„ธ์š”!
del()์€ ํ…Œ์ด๋ธ”์„ ์ˆœํ™˜ํ•˜๋ฉด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ํ˜ธ์ถœํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
A={1,10,2,11,3,12}
FOR ITEM IN ALL(A) DO
IF (ITEM < 10) THEN DEL(A, ITEM) END
END
FOREACH(A, PRINT) -- 10,11,12
PRINT(A[3]) -- 12
all t
FOR ๋ฃจํ”„ ์•ˆ์—์„œ ํ…Œ์ด๋ธ” ์•ˆ์˜ ๋ชจ๋“  ๊ฐ’์„ ์ถ”๊ฐ€๋œ ์ˆœ์„œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋ฉฐ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์”๋‹ˆ๋‹ค (ํ…Œ์ด๋ธ”์€ 1-based ์ •์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ์”๋‹ˆ๋‹ค).
T = {11,12,13};
ADD(T,14)
ADD(T,"HI")
FOR V IN ALL(T) DO PRINT(V) END -- 11 12 13 14 HI
PRINT(#T) -- 5
foreach t f
ํ…Œ์ด๋ธ” t์˜ ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด, ํ•จ์ˆ˜ f์— ์ธ์ž๋กœ ๊ทธ ๊ฐ’๋งŒ์„ ๋„ฃ์–ด์„œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
FOREACH(T, PRINT)
pairs t
FOR ๋ฃจํ”„ ์•ˆ์—์„œ ํ…Œ์ด๋ธ” t ์•ˆ์˜ ๋ชจ๋“  ํ‚ค-๊ฐ’ ์Œ๋“ค์„ ๋Œ์•„๊ฐ€๋ฉฐ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด ์”๋‹ˆ๋‹ค.
all()๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์ˆœ์„œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ชจ๋“  ์Œ๋“ค์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
T = {["HELLO"]=3, [10]="BLAH"}
T.BLUE = 5;
FOR K,V IN PAIRS(T) DO
PRINT("K: "..K.." V:"..V)
END
Output:
K: 10 v:BLAH
K: HELLO v:3
K: BLUE v:5
--------------------------------------------------------------------------------------------
์ž…๋ ฅ
--------------------------------------------------------------------------------------------
btn [i [p]]
ํ”Œ๋ ˆ์ด์–ด p์˜ ๋ฒ„ํŠผ i์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ด(p์˜ ๊ธฐ๋ณธ๊ฐ’์€ 0)
i: 0..5: ์ขŒ ์šฐ ์ƒ ํ•˜ o x
p: ํ”Œ๋ ˆ์ด์–ด ๋ฒˆํ˜ธ 0..7
์ธ์ž๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ํ”Œ๋ ˆ์ด์–ด 0, 1์˜ ๋ชจ๋“  ๋ฒ„ํŠผ์— ๋Œ€ํ•œ ๋น„ํŠธํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜
// P0: ๋น„ํŠธ 0..5 P1: ๋น„ํŠธ 8..13
ํ”Œ๋ ˆ์ด์–ด ๋ฒ„ํŠผ ๊ธฐ๋ณธ ๋งคํ•‘:
player 0: ํ™”์‚ดํ‘œ ํ‚ค, Z,X / C,V / N,M
player 1: ESDF, LSHIFT,A / TAB,Q,E
btnp [i [p]]
๊ธฐ๋ณธ์ ์œผ๋กœ btn()๊ณผ ๋™์ผํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์— ๋ˆŒ๋ฆฌ์ง€ ์•Š์€ ๋ฒ„ํŠผ์— ๋Œ€ํ•ด์„œ๋งŒ ์ฐธ์„ ๋ฐ˜ํ™˜
๋ฒ„ํŠผ์„ 15ํ”„๋ ˆ์ž„ ์ด์ƒ ๋ˆ„๋ฅด๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ์ดํ›„ 4 ํ”„๋ ˆ์ž„๋งˆ๋‹ค ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
'๊ณ„์† ํ•˜์‹œ๋ ค๋ฉด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์„ธ์š”' ํ˜น์€ ๋ฉ”๋‰ด ์•„์ดํ…œ ์ด๋™์˜ ๊ตฌํ˜„์— ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
--------------------------------------------------------------------------------------------
์˜ค๋””์˜ค
--------------------------------------------------------------------------------------------
sfx n [channel [offset]]
SFX n๋ฒˆ(0..)์„ channel ๋ฒˆ ์ฑ„๋„(0..3)์—์„œ offset ๋ฒˆ์งธ (0..31) ๋…ธํŠธ๋ถ€ํ„ฐ ์žฌ์ƒ
n์„ -1๋กœ ์„ค์ •ํ•ด ํ•ด๋‹น ์ฑ„๋„์˜ ์žฌ์ƒ์„ ์ •์ง€
n์„ -2๋กœ ์„ค์ •ํ•ด ํ•ด๋‹น ์ฑ„๋„์˜ ๋ฃจํ”„๋ฅผ ์ •์ง€
ํ•ด๋‹น ์ฑ„๋„์—์„œ ์žฌ์ƒ ์ค‘์ด๋˜ SFX๋Š” ์ฆ‰์‹œ ๊บผ์ง
์ฑ„๋„์„ -1(๊ธฐ๋ณธ๊ฐ’)๋กœ ์„ค์ •ํ•ด ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ด์ง€ ์•Š์€ ์ฑ„๋„์„ ์ž๋™์œผ๋กœ ์„ ํƒ
// ์•„๋ฌด๊ฒƒ๋„ ์žฌ์ƒ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, music()์— channel_mask๋ฅผ ๋ถ€์—ฌํ•˜์ง€ ์•Š์•„
// ํ˜„์žฌ ์žฌ์ƒ์ค‘์ธ ์Œ์•…์ด ๋ชจ๋“  ์ฑ„๋„์„ ๋…์ฐจ์ง€ํ•œ ๊ฒƒ์€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด๋ณผ ๊ฒƒ. (e.g. 1+2๋กœ ์ฒ˜์Œ ๋‘ ์ฑ„๋„์„ ์„ ํƒ)
music [n [fade_len [channel_mask]]]
์Œ์•…์„ n๋ฒˆ ํŒจํ„ด(0..63)๋ถ€ํ„ฐ ์žฌ์ƒ
n์„ -1๋กœ ์„ค์ •ํ•ด ์Œ์•…์„ ์ •์ง€
fade_len (ํŽ˜์ด๋“œ ์‹œ๊ฐ„)์˜ ๋‹จ์œ„๋Š” ms (default: 0)
channel_mask๋กœ ์–ด๋–ค ์ฑ„๋„์— ์Œ์•…์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •
e.g. ์ฑ„๋„ 0..2 ์—์„œ ์žฌ์ƒ์‹œํ‚ค๋ ค๋ฉด: 1+2+4 = 7
์Œ์•… ์žฌ์ƒ์— ํ• ๋‹น๋œ ์ฑ„๋„์€ sfx()์—์„œ ์ฑ„๋„ ๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„ ์š”์ฒญํ–ˆ์„ ๋•Œ๋งŒ ํšจ๊ณผ์Œ์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
--------------------------------------------------------------------------------------------------------
๋งต
--------------------------------------------------------------------------------------------------------
mget x y
mset x y v
x,y์˜ ๋งต ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ v๋กœ ๋ฐ”๊พธ๊ธฐ
map cel_x cel_y sx sy cel_w cel_h [layer]
ํ™”๋ฉด์˜ ํ”ฝ์…€ sx, sy์ง€์ ์—์„œ๋ถ€ํ„ฐ ๋งต์˜ ์ผ๋ถ€ ์ง€์—ญ์„ cel ๋‹จ์œ„๋ฅผ ์จ์„œ ๊ฐ€์ ธ์™€ ๊ทธ๋ฆฌ๊ธฐ
๋ ˆ์ด์–ด๊ฐ€ ๋ช…์‹œ๋˜์—ˆ์„ ๊ฒฝ์šฐ cel ์ค‘์—์„œ ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ผœ์ ธ์žˆ๋Š” cel๋งŒ ๊ทธ๋ ค์ง
// ๋ ˆ์ด์–ด๋Š” ๋น„ํŠธํ•„๋“œ ๊ฐ’์ž…๋‹ˆ๋‹ค. 0x5๋Š” ๋น„ํŠธ 0๊ณผ 2๊ฐ€ ์ผœ์ง„ ์…€๋งŒ ๊ทธ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.
// ๊ธฐ๋ณธ๊ฐ’์€ ๋ชจ๋“  ์Šคํ”„๋ผ์ดํŠธ
์˜ˆ์™ธ: 0๋ฒˆ ์Šคํ”„๋ผ์ดํŠธ๋Š” ์–ธ์ œ๋‚˜ ๋นˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
e.g. map(0,0, 20,20, 4,2)
-> ๋งต์˜ 0,0์ง€์ ์—์„œ๋ถ€ํ„ฐ 4x2์— ํ•ด๋‹นํ•˜๋Š” ์˜์—ญ์„ ํ™”๋ฉด์˜ 20,20์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.
--------------------------------------------------------------------------------------------------------
๋ฉ”๋ชจ๋ฆฌ
--------------------------------------------------------------------------------------------------------
PICO-8์—๋Š” 3๊ฐ€์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:
1. ๋ฒ ์ด์Šค ram (32k): ์•„๋ž˜ ๋ ˆ์ด์•„์›ƒ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ๋‹ค์Œ์˜ ํ•จ์ˆ˜๋“ค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: peek() poke() memcpy() memset().
2. ์นดํŠธ rom: 0x4300๊นŒ์ง€ ๋ฒ ์ด์Šค RAM๊ณผ ๊ฐ™์€ ๋ ˆ์ด์•„์›ƒ์„ ์”๋‹ˆ๋‹ค. reload()๋ฅผ ์จ์„œ ๋ฒ ์ด์Šค RAM์œผ๋กœ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3. lua ram (1MB): ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ณ€์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง‰ํ›„ ์ธ๋ฌผ์€ ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์„ธ์š”.
๊ธฐ์ˆ ์  ์ฐธ๊ณ  ์‚ฌํ•ญ: // ๋ชจ๋ฅด๊ณ  ๋„˜์–ด๊ฐ€๋„ ๋ฉ๋‹ˆ๋‹ค
ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ˆ˜์ •๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์นดํŠธ rom์˜ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ spr(), sfx()๋ฅผ ํฌํ•จํ•œ ๋ช‡๋ช‡ api ํ•จ์ˆ˜๋Š” ๋ฒ ์ด์Šค ram์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. PICO-8์€ ๋‹ค์Œ 3๊ฐ€์ง€ ๊ฒฝ์šฐ์— ์ž๋™์œผ๋กœ ์นดํŠธ rom์„ ๋ฒ ์ด์Šค ram์œผ๋กœ ๋ณต์‚ฌ(reload()๋ฅผ ํ˜ธ์ถœ)ํ•ฉ๋‹ˆ๋‹ค:
1. ์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ (0.1.6 ๋ฒ„์ „๋ถ€ํ„ฐ)
2. ์นดํŠธ๋ฆฌ์ง€๋ฅผ ๊ตฌ๋™ํ•  ๋•Œ
3. ํŽธ์ง‘๊ธฐ๋ฅผ ๋‚˜๊ฐˆ ๋•Œ
:: ๋ฒ ์ด์Šค ram ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ
0x0 gfx
0x1000 gfx2/๋งต2 (๊ณต์œ )
0x2000 ๋งต
0x3000 gfx_props
0x3100 ์Œ์•…
0x3200 sfx
0x4300 ์œ ์ € ๋ฐ์ดํ„ฐ
0x5e00 ์ง€์†์ persistent ์นดํŠธ ๋ฐ์ดํ„ฐ (256 ๋ฐ”์ดํŠธ)
0x5f00 ๊ทธ๋ฆฌ๊ธฐ ์ƒํƒœstate
0x5f40 ํ•˜๋“œ์›จ์–ด ์ƒํƒœ
0x5f80 gpio ํ•€ (128 ๋ฐ”์ดํŠธ) // ๊ฐœ๋ฐœ ์ค‘
0x6000 ํ™”๋ฉด (8k)
'์œ ์ € ๋ฐ์ดํ„ฐ'์— ๋ถ€์—ฌ๋œ ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋Š” ์—†์œผ๋ฉฐ memcpy(), peek(), poke()๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ง€์†์  ์นดํŠธ ๋ฐ์ดํ„ฐ๋Š” 0x5e00..0x5eff์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  cartdata()๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งŒ ์—ฌ๊ธฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
์ปฌ๋Ÿฌ ํฌ๋งท (gfx/screen)์€ ๋ฐ”์ดํŠธ ๋‹น 2ํ”ฝ์…€ ์”ฉ์ž…๋‹ˆ๋‹ค: ๋‚ฎ์€ ์ชฝ ๋น„ํŠธ๊ฐ€ ๊ฐ ์Œ์˜ ์™ผ์ชฝ ํ”ฝ์…€์„ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.
๋งต ํฌ๋งท์€ ์…€ ๋‹น 1๋ฐ”์ดํŠธ์ด๋ฉฐ, ์ด ๋ฐ”์ดํŠธ๋Š” ์Šคํ”„๋ผ์ดํŠธ ์ธ๋ฑ์Šค๋ฅผ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.
peek addr
poke addr val
๋ฒ ์ด์Šค ram์˜ ์ฃผ์†Œ addr์—์„œ 1๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ฝ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๋Œ€๋Š” 0x0..0x7fff
๋ฒ”์œ„ ๋ฐ–์—์„œ ์ฝ๊ณ  ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•  ๊ฒฝ์šฐ ํดํŠธ ๋ฐœ์ƒ
memcpy dest_addr source_addr len
๋ฒ ์ด์Šค ram์˜ source_addr์—์„œ len๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ dest_addr๋กœ ๋ณต์‚ฌ
๋ณต์‚ฌ ๋ฒ”์œ„๊ฐ€ ์ด์ „ ๋ฒ”์œ„๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Œ
reload dest_addr source_addr len [filename]
memcpy์™€ ๋™์ผํ•˜๋‚˜ ์นดํŠธ rom์—์„œ ๋ณต์‚ฌ
์ฝ”๋“œ ์„น์…˜ ( >= 0x4300) ์€ ๋ณดํ˜ธ๋œ ๊ตฌ์—ญ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์—†์Œ
ํŒŒ์ผ ์ด๋ฆ„์ด ๋ช…์‹œ๋˜์—ˆ์„ ๊ฒฝ์šฐ ํ•ด๋‹น ์นดํŠธ๋ฆฌ์ง€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ด
cstore dest_addr source_addr len [filename]
memcpy์™€ ๋™์ผํ•˜๋‚˜ ๋ฒ ์ด์Šค ram์—์„œ ๋ณต์‚ฌํ•ด์„œ ์นดํŠธ rom์œผ๋กœ ๋ถ™์ž„
cstore()๋Š” cstore(0, 0, 0x4300)์™€ ๋™์ผ
์นดํŠธ ๊ตฌ์„ฑ ํˆด์„ ์“ฐ๊ฑฐ๋‚˜ ๋งต/gfx ์—๋””ํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ๋งต/์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ์˜ ์ƒํƒœ๋ฅผ ์‹œ๊ฐํ™”ํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ์Œ
์ฝ”๋“œ ์„น์…˜ ( >= 0x4300) ์€ ๋ณดํ˜ธ๋œ ๊ตฌ์—ญ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์—†์Œ
ํŒŒ์ผ ์ด๋ฆ„์ด ๋ช…์‹œ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋””์Šคํฌ ์ƒ์˜ ๋ช…์‹œ๋œ ์นดํŠธ๋ฆฌ์ง€์— ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์“ฐ์—ฌ์ง‘๋‹ˆ๋‹ค. ํ•œ ์„ธ์…˜์—์„œ ์ตœ๋Œ€ 64 ์นดํŠธ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
'์นดํŠธ๋ฆฌ์ง€ ๋ฐ์ดํ„ฐ' ์„น์…˜์—์„œ cstore ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”.
memset dest_addr val len
len๋ฐ”์ดํŠธ ๊ธธ์ด์˜ ๊ฐ’์„ val๋กœ ์„ค์ •
(๊ฝค ๋น ๋ฆ„ -- ํด๋ฆฌํ•‘ ์—†๋Š” ๊ฐ€๋กœ ์Šค์บ”๋ผ์ธ ๋“ฑ์„ ๊ทธ๋ฆด ๋•Œ ์“ธ ์ˆ˜ ์žˆ์Œ)
--------------------------------------------------------------------------------------------------------
์ˆ˜ํ•™
--------------------------------------------------------------------------------------------------------
max x y
min x y
mid x y z
์ธ์ž๊ฐ’ ์ค‘ ์ตœ๋Œ€, ์ตœ์†Œ, ์ค‘๊ฐ„ ๊ฐ’์„ ๋ฐ˜ํ™˜
์˜ˆ๋ฅผ ๋“ค๋ฉด mid(7,5,10)์€ 7์„ ๋ฐ˜ํ™˜
flr x
x๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ // x-(x%1)
flr(4.1) --> 4
flr(-2.3) --> -3.0
cos x
sin x
1.0์„ ์› ํ•œ ๋ฐ”ํ€ด๋ผ๊ณ  ํ•  ๋•Œ x์˜ ์ฝ”์‚ฌ์ธ ๊ฐ’์„ ๋ฐ˜ํ™˜
์‚ฌ์ธ ๊ฐ’์€ ํ™”๋ฉด ๊ณต๊ฐ„์— ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์œ„ ์•„๋ž˜๊ฐ€ ๋ฐ˜์ „๋˜์–ด ๋ฐ˜ํ™˜๋จ
e.g. sin(0.25) ๋Š” -1์„ ๋ฐ˜ํ™˜
y๊ฐ€ ๋’ค์ง‘ํžˆ์ง€ ์•Š์€ ๋ผ๋””์šฐ์Šค-๊ธฐ๋ฐ˜ ์‚ผ๊ฐํ•จ์ˆ˜๋ฅผ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด, ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”:
cos1 = cos function cos(angle) return cos1(angle/(3.1415*2)) end
sin1 = sin function sin(angle) return sin1(-angle/(3.1415*2)) end
atan2 dx dy
dx, dy ๋ฅผ 0..1 ์‚ฌ์ด์˜ ๊ฐ๋„ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟˆ
์ฝ”์‚ฌ์ธ/์‚ฌ์ธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํ™”๋ฉด ๊ณต๊ฐ„์— ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๊ฐ๋„๋Š” ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ์•„๊ฐ
e.g. atan(1, -1) ์€ 0.125์„ ๋ฐ˜ํ™˜ (โ†˜)
sqrt x
x์˜ ์ œ๊ณฑ๊ทผ ๊ฐ’์„ ๋ฐ˜ํ™˜
abs x
x์˜ ์ ˆ๋Œ€๊ฐ’์„ ๋ฐ˜ํ™˜
rnd x
0 <= n < x์„ ๋งŒ์กฑํ•˜๋Š” ๋‚œ์ˆ˜ n์„ ๋ฐ˜ํ™˜
์ •์ˆ˜ ๊ฐ’์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ flr(rnd(x))๋ฅผ ํ˜ธ์ถœ
srand x
๋‚œ์ˆ˜ ์‹œ๋“œ๋ฅผ ์„ค์ •
์นดํŠธ๋ฆฌ์ง€๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์„ค์ •๋จ
Bitwise operations
band x y
bor x y
bxor x y
bnot x
shl x y
shr x y
// ์‹œํ”„ํŠธ๋Š” ๋…ผ๋ฆฌ ์‹œํ”„ํŠธ (sign bit๋Š” ์‹œํ”„ํŠธ ๋˜์ง€ ์•Š์Œ)
--------------------------------------------------------------------------------------------------------
์ปค์Šคํ…€ ๋ฉ”๋‰ด ์•„์ดํ…œ
--------------------------------------------------------------------------------------------------------
menuitem index [label callback]
๋ฉˆ์ถค ๋ฉ”๋‰ด์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€
index ๊ฐ’์€ 1..5 ์‚ฌ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ๊ฐ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์ด ๋ณด์—ฌ์ง€๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •
label ๊ฐ’์€ ์ตœ๋Œ€ 16๊ธ€์ž ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•จ
callback ์€ ํ•ด๋‹น ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜
๋ผ๋ฒจ์ด๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฉ”๋‰ด ํ•ญ๋ชฉ์€ ์ œ๊ฑฐ๋จ
์˜ˆ:
menuitem(1, "restart puzzle", function() reset_puzzle() sfx(10) end)
--------------------------------------------------------------------------------------------------------
๋ฌธ์ž์—ด
--------------------------------------------------------------------------------------------------------
s = "the quick brown fox"
-- ๊ธธ์ด
print(#s) --> 19
-- ๋ฌธ์ž์—ด ํ•ฉ์น˜๊ธฐ
print("three "..4) --> "three 4"
-- sub()๋กœ ๋ถ€๋ถ„์—ด ์ฐพ์•„๋‚ด๊ธฐ
print(sub(s,5,9)) --> "quick"
print(sub(s,5)) --> "quick brown fox"
--------------------------------------------------------------------------------------------
์นดํŠธ๋ฆฌ์ง€ ๋ฐ์ดํ„ฐ
--------------------------------------------------------------------------------------------
๊ฐ ์นดํŠธ๋ฆฌ์ง€๋Š” (์นดํŠธ ์ž์ฒด๊ฐ€ ์•„๋‹Œ) ์‚ฌ์šฉ์ž์˜ PICO-8์— 64๊ฐœ(256๋ฐ”์ดํŠธ) ์˜ ์ง€์†์  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ตœ๊ณ  ์ ์ˆ˜๋‚˜ ํ”Œ๋ ˆ์ด์–ด ์ €์žฅ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๋ณด๊ด€ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
256๋ฐ”์ดํŠธ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— cstore()๋ฅผ ์ด์šฉํ•ด ์นดํŠธ๋ฆฌ์ง€์— ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ ์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐœ ํŠน์ • ๋ฒ„์ „์˜ ์นดํŠธ๋ฆฌ์ง€์—๋งŒ ๊ท€์†๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, ๊ฒŒ์ž„์ด ์—…๋ฐ์ดํŠธ ๋˜๋ฉด ์„ธ์ด๋ธŒ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋˜ ๋‹ค๋ฅธ ๋Œ€์•ˆ์œผ๋กœ, ๋‹ค๋ฅธ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ cstore()๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์นดํŠธ ๊ต์ฒดswap๋ฅผ ์š”๊ตฌํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ์•ฝ๊ฐ„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋กœ์ปฌ ํด๋”์—์„œ ๊ตฌ๋™ํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ-์นดํŠธ ๊ฐ„์˜ ์ฐŒ๊บผ๊ธฐlitter๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
cartdata id
์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋ถ€๋ฅผ ๋•Œ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜์„ธ์š”. id๋Š” ์ตœ๋Œ€ 64์ž์˜ ๋ฌธ์ž์—ด๋กœ, ๋‹ค๋ฅธ ์นดํŠธ๋ฆฌ์ง€์™€ ์ค‘๋ณต๋˜์ง€ ์•Š์„ ์ •๋„๋กœ ํŠน๋ณ„ํ•œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
e.g. cartdata("zep_jelpi")
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž๋Š” a..z, 0..9, underscore (_) ์ž…๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
cartdata๋Š” ์นดํŠธ๋ฆฌ์ง€๋ฅผ ์‹คํ–‰ํ•  ๋•Œ 1ํšŒ ์ดˆ๊ณผํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
cartdata id๊ฐ€ ์ •ํ•ด์ง€๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ 0x5e00..0x5eff ๊ฐ€ ์˜๊ตฌ ์ €์žฅ์†Œpermanent storage๋กœ์„œ ํ• ๋‹น๋˜๋ฉฐ, ์ด๋Š” ์ง์ ‘ ํ˜น์€ dget/dset์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
dget index
index(0..63)์— ์ €์žฅ๋œ ์ˆซ์ž๋ฅผ ๊ฐ€์ ธ์˜ด
cartdata()๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„์—๋งŒ ์‚ฌ์šฉ
dset index value
index(0..63)์— value ๊ฐ’์„ ์ €์žฅ
cartdata()๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„์—๋งŒ ์‚ฌ์šฉ
์“ฐ์—ฌ์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์šธflush ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค -- ๋ฐ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ์˜๊ตฌ ์ €์žฅ์†Œ์— ์ €์žฅ๋˜๋ฉฐ, ์ง์ ‘ POKE()๋ฅผ ํ†ตํ•ด ๋ถˆ๋Ÿฌ์™€๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
------------------------------------------------------------------------------------------------------------
๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ
------------------------------------------------------------------------------------------------------------
v0.1.8
์ถ”๊ฐ€: 60fps ์ง€์›
์ถ”๊ฐ€: ์Œ์•… ์ถ”์ถœ
์ถ”๊ฐ€: ์‚ฌ์šฉ์ž ์ง€์ • GIF ๊ธธ์ด (์ตœ๋Œ€ 120์ดˆ)
์ถ”๊ฐ€: -,+๋กœ ์Šคํ”„๋ผ์ดํŠธ ํƒญ, sfx์™€ ์Œ์•… ํŒจํ„ด ์‚ฌ์ด๋ฅผ ์ด๋™
์ถ”๊ฐ€: sfx ํŽธ์ง‘๊ธฐ: home, end, pageup/down, mousewheel๋กœ ํ•ญ๋ชฉ ๊ฐ„ ์ด๋™
์ถ”๊ฐ€: <, > ์ด๋‚˜ ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋กœ sfx ์†๋„ ์กฐ์ ˆ
์ถ”๊ฐ€: ๋งˆ์šฐ์Šค ๊ฐ€์šด๋ฐ ๋ฒ„ํŠผ์œผ๋กœ ์Šคํ”„๋ผ์ดํŠธ์‹œํŠธ/๋งต ํŒจ๋‹pan
์ถ”๊ฐ€: splore ๋‹จ์ถ•ํ‚ค: S
์ถ”๊ฐ€: ์‚ฌ์ „ ์„ค์น˜๋œ BBS ์นดํŠธ ์…€๋ ‰์…˜ (INSTALL_GAMES๋กœ ์„ค์น˜)
์ถ”๊ฐ€: .p8.png๋กœ ์ €์žฅํ•  ๋•Œ ๋ผ๋ฒจ์ด ์—†์„ ๊ฒฝ์šฐ ๊ฒฝ๊ณ 
์ถ”๊ฐ€: (OSX) ~/Library/Logs์— ๋กœ๊ทธ ์ €์žฅ (Console.app์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Œ)
๋ณ€๊ฒฝ: CTRL-S๋กœ bbs ์นดํŠธ์— ์ €์žฅํ•  ์ˆ˜ ์—†์Œ
๋ณ€๊ฒฝ: dir()์™€ splore์—์„œ .p8 ํŒŒ์ผ๋งŒ ํ‘œ์‹œํ•จ
๋ณ€๊ฒฝ: ๋ช…๋ น์–ด ํžˆ์Šคํ† ๋ฆฌ ์ˆ˜๋ฅผ 256์œผ๋กœ ์ฆ๊ฐ€
๋ณ€๊ฒฝ: ์นดํŠธ ๊ตฌ๋™ ์ค‘์ผ ๋•Œ exit() / shutdown()๋ฅผ ์‹คํ–‰ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™” ์—†์Œ
๊ณ ์นจ: ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰(stat(0))์ด ํ˜ธ์ŠคํŠธ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
๊ณ ์นจ: ํ˜„์žฌ ์นดํŠธ๋ฅผ load()๋กœ ๋‹ค์‹œ ๋ถ€๋ฅผ ๋•Œ ๋Œ์•„๊ฐ€๋Š” ๋””์Šคํฌ ๋ชจ์–‘์ด ๋ณด์—ฌ์ง
๊ณ ์นจ: GIF ์ €์žฅ์‹œ 64x64 ๋น„์œจ์„ ๋งž์ถ”์ง€ ์•Š์Œ / ๋ฏธ๋Ÿฌ ๋ชจ๋“œ
๊ณ ์นจ: ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ / ๋ฌธ์ž์—ด ๋ฌธ์ œ
๊ณ ์นจ: ๋น„์–ด์žˆ๋Š” ๋งต ์…€์ด mapdraw() ์‹คํ–‰ ์‹œ cpu๋ฅผ ์‚ฌ์šฉํ•จ
๊ณ ์นจ: mapdraw()๋กœ ๋งต ์˜์—ญ์˜ ์•„๋ž˜์ชฝ ์ ˆ๋ฐ˜์„ ๊ทธ๋ฆด ๋•Œ ๋Š๋ ค์ง
๊ณ ์นจ: +=, : ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์€ ์ค„์— ์žˆ์„ ๋•Œ ์ „์ฒ˜๋ฆฌpreprocess ๊ณผ์ •์—์„œ ์˜๋ฏธ๊ฐ€ ๋‹ฌ๋ผ์ง
๊ณ ์นจ: ์‹๋ณ„์ž๊ฐ€ ์–ธ๋”์Šค์ฝ”์–ด๋กœ ์‹œ์ž‘ํ•  ๋•Œ ์ถ”๊ฐ€์ ์ธ ํ† ํฐ์œผ๋กœ ์ฒ˜๋ฆฌ๋จ
๊ณ ์นจ: ์••์ถ• ์ฝ”๋“œ ๊ธธ์ด ์ œํ•œ์ด ์ดˆ๊ณผํ•˜๋Š” ์นดํŠธ๋ฆฌ์ง€๋ฅผ .png ํฌ๋งท์œผ๋กœ ์ €์žฅํ•  ๋•Œ ์•„๋ฌด ๋ฉ”์„ธ์ง€ ์—†์ด ์กฐ์šฉํ•˜๊ฒŒ ์‹คํŒจ
๊ณ ์นจ: ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์šฐํด๋ฆญํ•ด๋„ ํ˜„์žฌ ํŽธ์ง‘์ค‘์ธ ์Šคํ”„๋ผ์ดํŠธ๋กœ ์ ์šฉ๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: (Windows) ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์„ ๋•Œ ์—ฌ๋ฐฑ์ด ํ•œ ์นธ ์ถ”๊ฐ€๋จ
๊ณ ์นจ: spr()๋กœ ๋‚ฎ์€ ์Œ์ˆ˜ ๋Œ€ ์ขŒํ‘œ ์˜์—ญ์— ๊ทธ๋ฆด ๋•Œ ์ž์› ์†Œ๋ชจ๋Ÿ‰์ด ๋†’์•„์ง
๊ณ ์นจ: ํŒŒ์ดํ”„ ๋ฌธ์ž๊ฐ€ ์ฝœ๋ก  ๋ฌธ์ž์™€ ๋˜‘๊ฐ™์ด ์ทจ๊ธ‰๋จ
๊ณ ์นจ: (Raspberry Pi) ํ…์ŠคํŠธ ์ž…๋ ฅ ์ค‘ shiftํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฌธ์ž๊ฐ€ ์ถ”๊ฐ€๋จ
๊ณ ์นจ: ํŽธ์ง‘๊ธฐ ๋ชจ๋“œ ๋ฒ„ํŠผ์„ ์นดํŠธ ๋Ÿฐํƒ€์ž„ ๋•Œ์—๋„ ํด๋ฆญ ๊ฐ€๋Šฅ
๊ณ ์นจ: .p8.pngํŒŒ์ผ์„ ๋ถ€๋ฅผ ๋•Œ๋งˆ๋‹ค ๋ผ๋ฒจ์ด ๋ฆฌ์…‹๋˜์–ด์„œ ๋‹ค์‹œ ์ฐ์–ด์•ผ ํ•จ
๊ณ ์นจ: export() ์‹คํŒจ ์‹œ์— ์‹คํŒจ๋ฅผ ์•Œ๋ฆฌ์ง€ ์•Š์Œ
๊ณ ์นจ: ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ mset()์œผ๋กœ ๋ฐ”๋€ ๋ถ€๋ถ„์„ peek() / sget()์œผ๋กœ ์ฝ์„ ์ˆ˜ ์—†์Œ
๊ณ ์นจ: cstore()๊ฐ€ ํŽธ์ง‘๋œ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•จ
๊ณ ์นจ: ์Œ์•… ์žฌ์ƒ ์ค‘ ํŒจํ„ด์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ํŠ€๋Š” ์†Œ๋ฆฌ๊ฐ€ ๋‚จ
v0.1.7
์ถ”๊ฐ€: menuitem()
์ถ”๊ฐ€: ์ฝ”๋“œ ๋‚ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ ๋ฌธ์žglyph (shift-L, R, U, D, X, O)
์ถ”๊ฐ€: ์‚ฌ์šฉ์ž ์ง€์ • ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ (e.g. pico8 -home mydata)
์ถ”๊ฐ€: ์›น gpio ํ•€: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ pico8_gpio[]๋ฅผ ์ฝ๊ณ  ์“ฐ๊ธฐ
๊ณ ์นจ: SPLORE ๊ฒ€์ƒ‰์ด ๋ฆฌ์…‹๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: Splore๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•ญ๋ชฉ์„ ๋กœ๋“œํ•œ ํ›„์— 33๋ฒˆ์งธ ์นดํŠธ๋ฅผ ์Šคํ‚ต
๊ณ ์นจ: splore์—์„œ ๋กœ์ปฌ ์ด์ง„ ํŒŒ์ผ์„ ์„ ํƒํ–ˆ์„ ๋•Œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ฆฌ์ŠคํŠธ ํ˜น์€ ๋ฌธ์žฅ์˜ ๊ตฌ๋ถ„์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
๊ณ ์นจ: html๋กœ ์ถ”์ถœ๋œ ์นดํŠธ๊ฐ€ ์Šค์Šค๋กœ cstore๋ฅผ ํ•  ์ˆ˜ ์—†์Œ
v0.1.6
์ถ”๊ฐ€: SPLORE ๋กœ์ปฌ & bbs ์นดํŠธ๋ฆฌ์ง€ ํƒ์ƒ‰๊ธฐ
์ถ”๊ฐ€: setmetatable(), cocreate(), coresume(), costatus(), yield()
์ถ”๊ฐ€: ์นดํŠธ ์ „ํ™˜ ํ˜น์€ ์นดํŠธ์— ์“ฐ๊ธฐ ์ค‘์ผ ๋•Œ ๋Œ์•„๊ฐ€๋Š” ์นดํŠธ ์•„์ด์ฝ˜ ํ‘œ์‹œ
์ถ”๊ฐ€: ์นดํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ”Œ๋ ˆ์ดํ•  ๋•Œ๋ฅผ ์œ„ํ•œ ์˜๊ตฌ ์ €์žฅ์†Œ
์ถ”๊ฐ€: ์กฐ์ • ๊ฐ€๋Šฅํ•œ ํ™”๋ฉด ๋น„์œจ (-aspect 420 -> 1:1)
๋ณ€๊ฒฝ: Lua ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ: 1024k (๊ธฐ์กด 512k)
๋ณ€๊ฒฝ: ์Œ์•…์ด sfx์— ์†์‹ค์„ ๋‹นํ•œ ํ›„being clobbered์—๋„ ์ด์ œ ๋‹ค์‹œ ์ •์ƒ์ ์œผ๋กœ ์žฌ์ƒ๋จ
๋ณ€๊ฒฝ: SFX ์†๋„๊ฐ€ 8 ์ดํ•˜์ผ ๋•Œ ์•„๋ฅดํŽ˜์ง€์˜ค ์†๋„๋ฅผ ๋‘ ๋ฐฐ๋กœ
๋ณ€๊ฒฝ: ์••์ถ•๋œ ์ฝ”๋“œ ๊ธธ์ด ์ œํ•œcompressed code limit์„ ์ดˆ๊ณผํ•ด๋„ .p8 ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์Œ
๋ณ€๊ฒฝ: spr() ์†Œ๋ชจ ์ž์›๋Ÿ‰์„ ๋ฐ˜์œผ๋กœ ์ค„์—ฌ map()๊ณผ ๋น„์Šทํ•ด์ง€๋„๋ก ํ•จ
๋ณ€๊ฒฝ: 16์ง„์ˆ˜ ์†Œ์ˆ˜ ํ‘œ๊ธฐ: 0x0.3 == 0x0.3000, (์ด์ „์—” 0x0.0003)
๋ณ€๊ฒฝ: : ์—ฐ์‚ฐ์ž๋ฅผ ํ† ํฐ ์ˆ˜์— ํฌํ•จํ•˜์ง€ ์•Š์Œ (.์™€ ๋™์ผ)
๋ณ€๊ฒฝ: cstore() ์‹คํ–‰ ์‹œ ๋””์Šคํฌ์— ์ง์ ‘ ๊ธฐ๋ก
๋ณ€๊ฒฝ: cstore(), reload() ์‹คํ–‰ ์‹œ ์ฝ๊ฑฐ๋‚˜ ์“ด ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
๋ณ€๊ฒฝ: ๊ตฌ๋™ ์ค‘ save() ์‹คํ–‰ ์‹œ ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Œ (cstore()๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•  ๊ฒƒ)
๋ณ€๊ฒฝ: ๊ตฌ๋™ ์ค‘ load() ์‹คํ–‰์‹œ ์ง€์ •๋œ ์นดํŠธ๋ฆฌ์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰
๊ณ ์นจ: ์˜ค๋””์˜ค ๋ฏน์„œ์—์„œ ์ŒํŒŒ ํ˜•ํƒœ๊ฐ€ ๋Š๊ฒจ์„œ ์ƒ๊ธฐ๋Š” ํŠ€๋Š” ์†Œ๋ฆฌpops
๊ณ ์นจ: HTML5๋กœ ์ถ”์ถœํ–ˆ์„ ๋•Œ Chrome์—์„œ ์†Œ๋ฆฌ๊ฐ€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋Š๊น€
๊ณ ์นจ: GIF๋กœ ์ถ”์ถœํ•  ๋•Œ ํ™”๋ฉด ํŒ”๋ ˆํŠธ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œ
๊ณ ์นจ: ํ‚ค์ž…๋ ฅ์ด ๊ฒฉ๋ ฌํ•ด์งˆ ๊ฒฝ์šฐ ํŠธ๋ž˜์ปค์™€ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ์ฝ๊ธฐ ํ–‰์œ„ ์ค‘๋ณต์ด ์ƒ๊น€
๊ณ ์นจ: ์ฃผ์„ ์•ˆ์˜ +=๊ฐ€ ํ”„๋ฆฌํ”„๋กœ์„ธ์„œpreprocessor๋ฅผ ๋ง๊ฐ€๋œจ๋ฆผ
๊ณ ์นจ: sspr()๊ฐ€ ์ผ๋ถ€๋ถ„๋งŒ ์„ ํƒ๋˜์—ˆ์„ ๋•Œ์—๋„ ๋™์ผํ•œ cpu ์‚ฌ์šฉ๋Ÿ‰์„ ๊ฐ€์ง
๊ณ ์นจ: ์ž˜๋ชป๋œ ์ธ์ž ๊ฐ’์„ cartdata()๋กœ ๋ณด๋ƒˆ์„ ๋•Œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ๋ช…๋ น์ค„์—์„œ EXPORT๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๊ด„ํ˜ธ์™€ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋„ฃ์–ด์•ผ ํ•จ
v0.1.5
์ถ”๊ฐ€: Raspberry Pi ๋นŒ๋“œ
์ถ”๊ฐ€: ํ”Œ๋ ˆ์ด์–ด ๋ฒ„ํŠผ์˜ ํ‚ค๋ณด๋“œ ์„ค์ • (KEYCONFIG)
์ถ”๊ฐ€: ์Œ์•… ํŠธ๋ž˜์ปค ์„ ํƒ / ๋ณต์‚ฌ / ๋ถ™์—ฌ๋„ฃ๊ธฐ
์ถ”๊ฐ€: ์˜ค๋””์˜ค ๋„๊ตฌ์—์„œ ํ•œ ๋‹จ๊ณ„ ์‹คํ–‰ ์ทจ์†Œ
์ถ”๊ฐ€: ์†Œ๋ฆฌ ํŽธ์ง‘๊ธฐ์—์„œ ์ฃผํŒŒ์ˆ˜ ๋ฏธ๋ฆฌ ๋“ฃ๊ธฐ
๊ณ ์นจ: ๋ช…๋ น์–ด ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ถ€ํŒ… ๊ฐ„์—๋„ ๋ณด์กด
๊ณ ์นจ: Sfx ์ถ”์ถœ๊ธฐ
๊ณ ์นจ: ์ฃผ์†Œ ๋์˜ ์Šฌ๋ž˜์‹œ๋ฅผ ์Šฌ๋ž˜์‹œ ๋‘ ๊ฐœ๋กœ ์ฒ˜๋ฆฌ
๊ณ ์นจ: Windows์—์„œ ์ฝ˜์†”๋กœ ์นดํŠธ ๋ถ€๋ฅด๊ธฐ
v0.1.4d
v0.1.4c
๊ณ ์นจ: ์™ธ๊ตญ์–ด ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ๊ฐ™์ด ์‚ฝ์ž…์‹œํ‚ด
๊ณ ์นจ: ํƒญ์ด ๋“ค์–ด๊ฐ„ ์ค„์ด ์ปค์„œ ์œ„์น˜์™€ ๋””์Šคํ”Œ๋ ˆ์ด ์˜์—ญ์„ ๋ง๊ฐ€๋œจ๋ฆผ
v0.1.4b
๊ณ ์นจ: OSX ์ปค๋งจ๋“œํ‚ค ์กฐํ•ฉ
v0.1.4
์ถ”๊ฐ€: import("blah.png"), export("blah.png")๋กœ ์Šคํ”„๋ผ์ดํŠธ ์‹œํŠธ ๋ถˆ๋Ÿฌ๋“ค์ด๊ธฐ/์ถ”์ถœ
์ถ”๊ฐ€: export("blah%d.wav")๋กœ sfx ์ถ”์ถœ
์ถ”๊ฐ€: reload()์™€ cstore()์— ์™ธ๋ถ€ ์นดํŠธ๋ฆฌ์ง€ ์ธ์ž
์ถ”๊ฐ€: ์ง€์†์ Persistent ์นดํŠธ ๋ฐ์ดํ„ฐ (๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ 0x5e00)
์ถ”๊ฐ€: ํ† ํฐ ์ œํ•œ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•ด์„œ ํ† ํฐ & ๊ธ€์ž์ˆ˜ ์ œํ•œ ํ‘œ์‹œ๋กœ ์ „ํ™˜
์ถ”๊ฐ€: assert(), type()
์ถ”๊ฐ€: P๋กœ ๋ฉˆ์ถ”๊ธฐ
๋ณ€๊ฒฝ: ์ฝ”๋“œ ๊ธ€์ž์ˆ˜ ์ œํ•œ: 64k (๊ธฐ์กด 32k)
๋ณ€๊ฒฝ: ์ง€์—ญ ์„ ์–ธ๊ณผ ์„ธ๋ฏธ์ฝœ๋ก ์ด ํ† ํฐ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Œ
๋ณ€๊ฒฝ: ๊ด„ํ˜ธ ํ•œ์Œ๊ณผ ๋ธ”๋ก delimitations๋ฅผ ํ† ํฐ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ
๋ณ€๊ฒฝ: _update() ๋‚˜ _draw() ๋งŒ ์žˆ์–ด๋„ ๋ฉ”์ธ ๋ฃจํ”„ ์ง„์ž… ๊ฐ€๋Šฅ
๋ณ€๊ฒฝ: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ํ—ˆ์šฉ
๋ณ€๊ฒฝ: info()๊ฐ€ ํ˜„์žฌ(๋งˆ์ง€๋ง‰์œผ๋กœ ๋ถ€๋ฅด๊ฑฐ๋‚˜ ์ €์žฅํ•œ) ํŒŒ์ผ์ด๋ฆ„์„ ๋ณด๊ณ ํ•จ
๋ณ€๊ฒฝ: html5 ๋ฒ„์ „์ด NO_DYNAMIC_EXECUTION ๋กœ ์ปดํŒŒ์ผ ๋จ
๋ณ€๊ฒฝ: ํ•œ ์„ธ์…˜์—์„œ ์ตœ๋Œ€ 64๊ฐœ์˜ ํŒŒ์ผ๊นŒ์ง€๋งŒ cstore๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
๋ณ€๊ฒฝ: load() ์‹คํ–‰ ์‹œ ์ž๋™์œผ๋กœ ์นดํŠธ์˜ ๋ฐ์ดํ„ฐ ์„น์…˜์„ ๋ฒ ์ด์Šค ram์— ๋ณต์‚ฌํ•จ
๊ณ ์นจ: ์Šคํ”„๋ผ์ดํŠธ๋ฅผ Shift-๋“œ๋ž˜๊ทธ-๋ณต์‚ฌ -> ๋ถ™์—ฌ๋„ฃ๊ธฐ ์‹œ 1x1 ์˜์—ญ๋งŒ ๋ถ™์—ฌ๋„ฃ์Œ
๊ณ ์นจ: ".." ๋ฅผ ํ† ํฐ ํ•˜๋‚˜๋กœ ์ฒ˜๋ฆฌ
๊ณ ์นจ: ํŠธ๋ž˜์ปค์—์„œ . ๋Œ€์‹  D ๋ฅผ ํ‘œ์‹œ
๊ณ ์นจ: ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„
๊ณ ์นจ: ์ฝ”๋“œ ๊ธธ์ด๊ฐ€ ๋ฌธ์ž ์ œํ•œ์— ๊ฐ€๊นŒ์šธ ๊ฒฝ์šฐ์— ์‹คํ–‰ ์‹œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ํ† ํฐ ์ˆ˜ ์ œํ•œ์„ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ์–ด๋–ค ๋ช…๋ น์–ด๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Œ
๊ณ ์นจ: SFX ์„น์…˜์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ high bits๊ฐ€ .p8๋กœ ํฌ๋งทํ•  ๋•Œ ์ €์žฅ๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: ์นด๋ฉ”๋ผ ์œ„์น˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘์ด ์‹ฑํฌ๊ฐ€ ๋งž์ง€ ์•Š์Œ
๊ณ ์นจ: Windows ์ธ์Šคํ†จ๋Ÿฌ์—์„œ pico8.txt ๋งํฌ๊ฐ€ ๊นจ์ง
๊ณ ์นจ: print()์— ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ธ์ž๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ์—ฌ๋Ÿฌ์ค„์˜ ๋ฌธ์ž์—ด์ด๋‚˜ ํ™•์žฅ ๋ฌธ์žescape chars๊ฐ€ ํ† ํฐ ๊ฐฏ์ˆ˜์™€ print()์— ์˜ํ–ฅ์„ ์คŒ
๊ณ ์นจ: ์กฐ์ด์Šคํ‹ฑ์˜ left stick์ด ์™ผ์ชฝ ์œ„๋ฅผ ํ–ฅํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Œ
๊ณ ์นจ: Alt-F4๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ๋‚˜๊ฐ€๊ธฐ ์ „์— ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์Œ
๊ณ ์นจ: ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ์—์„œ ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ์˜ ๋ชจ๋“œ ๋ฒ„ํŠผ์ด ๋ณด์ด์ง€ ์•Š์Œ
๊ณ ์นจ: -sound ์ธ์ž๊ฐ€ html5 ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
v0.1.3
์ถ”๊ฐ€: ๋ช…๋ น์ค„๋กœ ๋ถ™์—ฌ๋„ฃ๊ธฐ
๊ณ ์นจ: lua ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
๊ณ ์นจ: ๋ช…๋ น์ค„ ๋กœ๋”ฉ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
๊ณ ์นจ: ๋ชจ๋“  ํŠธ๋ž™์— ์ˆœํ™˜ ์„ค์ •์ด ๋˜์–ด์žˆ์„ ๋•Œ ์Œ์•… ํŒจํ„ด์ด ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋๋‚จ
๊ณ ์นจ: sfx ์ฃผ์†Œ ๋Œ€์—ญ์—์„œ ํ™€์ˆ˜ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ฅผ peek()ํ–ˆ์„ ๋•Œ 7๋ฒˆ ๋น„ํŠธ๊ฐ€ ๋งˆ์Šคํ‚น ๋จ
๊ณ ์นจ: ์ฝ”๋“œ ๋‚ด์—์„œ cstore ์‹คํ–‰ ํ›„ ๋‹ค์‹œ ๋ถˆ๋ €์„ ๋•Œ ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†์–ด์•ผ ํ•จ
v0.1.2
์ถ”๊ฐ€: html5 ์นดํŠธ๋ฆฌ์ง€ ์ถ”์ถœ๊ธฐ
์ถ”๊ฐ€: ์นดํŠธ๋ฆฌ์ง€ ์„ธ์ด๋ธŒ ๋ฐ์ดํ„ฐ (64 ๊ณ ์ • ์†Œ์ˆ˜์  ์ˆ˜)
์ถ”๊ฐ€: 8-ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ
์ถ”๊ฐ€: ๋ฐ๋ชจ ์นดํŠธ: COLLIDE, BUTTERFLY
์ถ”๊ฐ€: ์ปค๋งจ๋“œ๋ผ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ // ์นดํŠธ ๋ถ€๋ฅด๊ธฐ, -run, ์„ค์ •
์ถ”๊ฐ€: ํŽ‘์…˜ ํ‚ค์˜ ๋Œ€์•ˆ (F6..F9์„ F1..F4์ฒ˜๋Ÿผ ์‚ฌ์šฉ)
์ถ”๊ฐ€: pairs()
์ถ”๊ฐ€: ๋””๋ฒ„๊ทธ๋ฅผ ์œ„ํ•œ printh()
์ถ”๊ฐ€: ์ฝ˜์†”์—์„œ ํƒญ์œผ๋กœ ํŒŒ์ผ์ด๋ฆ„ ์ž๋™์™„์„ฑ
์ถ”๊ฐ€: ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ์‹œ ์Šคํƒ ํŠธ๋ ˆ์ด์Šคstack trace ์ œ๊ณต
๋ณ€๊ฒฝ: ์Œ์•… ํŒจํ„ด ๊ธธ์ด๋ฅผ ์ฒซ๋ฒˆ์งธ ๋น„์ˆœํ™˜ ์ฑ„๋„์˜ ๊ธธ์ด๋กœ
๋ณ€๊ฒฝ: ๋…ธ์ด์ฆˆ ์•…๊ธฐ(6)์˜ ์ €๋Œ€์—ญ ํ™”์ดํŠธ ๋…ธ์ด์ฆˆlow frequency white nose๋ฅผ ๋ณผ๋ฅจ์œผ๋กœ ์กฐ์ ˆ ๊ฐ€๋Šฅ
๋ณ€๊ฒฝ: ์Šคํฌ๋ฆฐ์ƒท์ด ํ˜„์žฌ ํ•ด์ƒ๋„์—์„œ ์œˆ๋„์šฐ ๋‚ด์˜ ์ „์ฒด ์˜์—ญ์„ ์บก์ณ
๋ณ€๊ฒฝ: del() ์‹คํ–‰ ์‹œ ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋นˆ ๊ณต๊ฐ„์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋‚จ์€ ํ•ญ๋ชฉ๋“ค์„ ์•ž์œผ๋กœ ๋‹น๊น€
๋ณ€๊ฒฝ: add(),del(),count(),all()์ด ๋” ์ด์ƒ ์ถ”๊ฐ€์ ์ธ ํ•„๋“œ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ
๋ณ€๊ฒฝ: ๋ฌธ์„œ์—์„œ count() ์‚ญ์ œ -- ์ด์ œ legacy funcion์œผ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. # ์—ฐ์‚ฐ์ž๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์„ธ์š”.
๋ณ€๊ฒฝ: ์œˆ๋„์šฐ๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ์—๋งŒ ์ปค์„œ๊ฐ€ ๋ฐ˜์ง์ž„
๋ณ€๊ฒฝ: peek(), poke(), ์ด์ง„ ์—ฐ์‚ฐ์ž(band()..)๊ฐ€ ๋” ์ด์ƒ function call overhead๋ฅผ ๊ฐ–์ง€ ์•Š์Œ
๋ณ€๊ฒฝ: ๋…ธ๋ž€์ƒ‰์„ ์ข€ ๋” ๋”ฐ๋œปํ•˜๊ฒŒ
๋ณ€๊ฒฝ: ๋” ์ด์ƒ ๋งต ํŽธ์ง‘๊ธฐ์—์„œ ํŒจ๋‹ํ•œ ํ›„์— ์นด๋ฉ”๋ผ ์Šค๋‚ดํ•‘snapping์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
๊ณ ์นจ: 0 ์ด๋‚˜ >= 32761 ์—์„œ sqrt()๊ฐ€ ํฌ๋ž˜์‹œ
๊ณ ์นจ: ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ์˜ ์„ธ๋ฏธ์ฝœ๋ก  ๋ฌธ์ž
๊ณ ์นจ: .p8 ํ˜•์‹์œผ๋กœ ์ €์žฅํ•  ๋•Œ ๊ธด ์ค„์ด ๋‚˜๋ˆ ์ง
๊ณ ์นจ: pget()์ด ์นด๋ฉ”๋ผ ์œ„์น˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ
๊ณ ์นจ: peek(), poke()๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ ์ด์™ธ์˜ ๋ฒ”์œ„์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€
๊ณ ์นจ: ์ƒ‰ ์ฐพ์•„ ๋ฐ”๊พธ๊ธฐ๊ฐ€ ์„ ํƒ ์˜์—ญ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ ํ”ฝ์…€ ๋ฐ–๊นŒ์ง€ ์ƒ‰์น 
๊ณ ์นจ: ๋นˆ ์Œ์•… ํŒจํ„ด์„ ์žฌ์ƒํ•˜๋ฉด ์ดํ›„ ์Œ์•… ์žฌ์ƒ์„ ๋ฐฉํ•ดํ•จ
๊ณ ์นจ: ์‹œ์ž‘ ์‹œ ์œ ํšจํ•˜์ง€ ์•Š์€ sfx ํŽธ์ง‘ ์ƒํƒœ๋ฅผ ๊ฐ–์Œ
๊ณ ์นจ: ์ฃผํŒŒ์ˆ˜ ๋ณด๊ธฐ์—์„œ ์•…๊ธฐ๋ฅผ ๋ฒ”์œ„ ์ง€์ •ํ•  ๋•Œ ๋ณผ๋ฅจ๊นŒ์ง€ ๊ฐ™์ด ์ง€์ •๋จ
๊ณ ์นจ: gif ๋…นํ™” ์†๋„๊ฐ€ ์ผ์ •์น˜ ์•Š์Œ
๊ณ ์นจ: ์กฐ์ด์Šคํ‹ฑ ์‚ฌ์šฉ ์‹œ ํ‚ค ๋งคํ•‘์ด ๋˜์ง€ ์•Š๋˜ ๋ฌธ์ œUnmapped joystick support
๊ณ ์นจ: ์••์ถ•๋œ ์ฝ”๋“œ ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋” ์••์ถ• ์ „๋ณด๋‹ค ์ปค์ง
๊ณ ์นจ: ์ฒซ ๋ฒˆ์งธ ์ธ์ž ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ์•„๋‹ ๊ฒฝ์šฐ mid()๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†์Œ
๊ณ ์นจ: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ์Šคํฌ๋กค ํœ ์„ ๊ตด๋ฆฌ๋ฉด ์Šคํ”„๋ผ์ดํŠธ/๋งต ํ™•๋Œ€ ์ˆ˜์ค€์ด ๋ฐ”๋€œ
๊ณ ์นจ: CTRL-R(๋น ๋ฅธ ๊ตฌ๋™) ์‹œ ๋ช…๋ น์–ด ๋ชจ๋“œ์—์„œ ํ˜„์žฌ ์ค„ ์œ„๋กœ ๊ทธ๋ฆผ
๊ณ ์นจ: ๋ผ๋ฒจ ์บก์ณ(F7)๊ฐ€ ์Šคํฌ๋ฆฐ์˜ ํŒ”๋ ˆํŠธ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Œ
๊ณ ์นจ: API ํ•จ์ˆ˜์™€ 16์ง„์ˆ˜ ์ˆซ์ž์˜ ํ•˜์ด๋ผ์ดํŒ…
๊ณ ์นจ: ๊ฐ’์„ ์ค„์ด๋ฉฐ 0๊นŒ์ง€ ์ˆœํ™˜looping์‹œํ‚ฌ ๊ฒฝ์šฐ 1์—์„œ ์ˆœํ™˜์„ ๋ฉˆ์ถค
๊ณ ์นจ: nil๊ฐ’์ด false๋กœ ์ถœ๋ ฅ๋จ
๊ณ ์นจ: 16์ง„์ˆ˜ ์†Œ์ˆ˜์  ๋ถ€
๊ณ ์นจ: ํ”„๋ ˆ์ž„์„ ์Šคํ‚ตํ•  ๋•Œ btnp()๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋˜ ๋ฌธ์ œ
๊ณ ์นจ: ctrl-r๋กœ ๊ตฌ๋™ํ•  ๋•Œ ํŽธ์ง‘ ๋ชจ๋“œ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฌ๋˜ ๋ฌธ์ œ
๊ณ ์นจ: ํŠธ๋ž˜์ปค ๋…ธํŠธ์˜ ์—”ํŠธ๋ฆฌ ํ‚ค๊ฐ€ ๋งคํ•‘๋˜์–ด ํ”ผ์•„๋…ธ ํ˜•ํƒœ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ง์นจ
๊ณ ์นจ: ์ผ๋ถ€ ํŽธ์ง‘๊ธฐ ์—ฐ์‚ฐ ์ดํ›„์— ๊ณต์œ  gfx/map ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹ฑํฌ๊ฐ€ ์–ด๊ธ‹๋‚จ
๊ณ ์นจ: Alt-gr ๋ฌธ์ž ์ž…๋ ฅ
๊ณ ์นจ: poke()๋ฅผ ์ด์šฉํ•ด 16๋ฒˆ์งธ ์ด์ƒ์˜ ์—”ํŠธ๋ฆฌ์— ํ™”๋ฉด ํŒ”๋ ˆํŠธ๋ฅผ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Œ
๊ณ ์นจ: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ shift๋ฅผ ์ด์šฉํ•ด์„œ ์„ ํƒํ•  ๋•Œ ์ž˜๋ชป๋œ ์„ ํƒ ๋ฒ”์œ„๋ฅผ ๊ฐ–์Œ
๊ณ ์นจ: ์ตœ์ƒ์œ„ ํ…์ŠคํŠธ ๋„ˆ๋จธ๋กœ ๋“œ๋ž˜๊ทธํ–ˆ์„ ๋•Œ ์„ ํƒ ๋ฒ”์œ„๊ฐ€ ์ตœํ•˜๋‹จ๊นŒ์ง€ ๋’ค์ง‘ํž˜
๊ณ ์นจ: ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์ค‘๋ณต ํ•ญ๋ชฉ์ด ๋ฐœ์ƒ
v0.1.1
์ถ”๊ฐ€: ํ† ํฐ ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ œํ•œ (8192 ํ† ํฐ, 32k ascii ํ…์ŠคํŠธ)
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ ๋ฐ ๋งต ํŽธ์ง‘๊ธฐ์—์„œ freeform move, pan, selection
์ถ”๊ฐ€: Flood-fill ๋„๊ตฌ (์Šคํ”„๋ผ์ดํŠธ, ๋งต)
์ถ”๊ฐ€: .GIF ์ €์žฅ
์ถ”๊ฐ€: CTRL-Stamp ๋กœ ํˆฌ๋ช…๋„๋ฅผ ํฌํ•จํ•œ ์Šคํƒฌํ”„ ์ฐ๊ธฐ
์ถ”๊ฐ€: ๋งต๊ณผ ์Šคํ”„๋ผ์ดํŠธ์—์„œ ํ•œ ๋‹จ๊ณ„ ์‹คํ–‰ ์ทจ์†Œ ๊ธฐ๋Šฅ
์ถ”๊ฐ€: 2x2 ๋ธŒ๋Ÿฌ์‹œ
์ถ”๊ฐ€: sqrt(), atan2()
์ถ”๊ฐ€: CTRL-S ๋กœ ๋น ๋ฅธ ์ €์žฅ
์ถ”๊ฐ€: CTRL-R ๋กœ .p8 file์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰ (์™ธ๋ถ€์—์„œ ํ…์ŠคํŠธ๋ฅผ ํŽธ์ง‘ํ•  ๋•Œ ์œ ์šฉ)
์ถ”๊ฐ€: ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋‚˜๊ฐˆ ๋•Œ ์ž๋™์œผ๋กœ ๋ฐฑ์—… ๋งŒ๋“ค๊ธฐ
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ์Šคํฌ๋กค ํœ ๋กœ ํ™•๋Œ€/์ถ•์†Œ
์ถ”๊ฐ€: ์‚ฌ์šฉ์ž ์ •์˜ ํ•ด์ƒ๋„ // e.g. pico8 -width 580
์ถ”๊ฐ€: ๋ฌธ์ž์—ด์„ ์ดˆ๋ก์ƒ‰์œผ๋กœ ํ•˜์ด๋ผ์ดํŠธ
์ถ”๊ฐ€: ALT-click์œผ๋กœ ์šฐํด๋ฆญ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ (config.txt ์ฐธ์กฐ)
์ถ”๊ฐ€: spr(), sspr()์˜ ํˆฌ๋ช…๋„๋ฅผ ์กฐ์ •ํ•˜๋Š” palt()
์ถ”๊ฐ€: info()
๋ณ€๊ฒฝ: load()๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ .p8.png, .png์„ ์‹œ๋„ํ•จ
๋ณ€๊ฒฝ: ๊ทธ๋ฆฌ๊ธฐ ๋™์ž‘์ด ํ˜„์žฌ ์„ ํƒ์ค‘์ธ ์˜์—ญ์—๋งŒ ์ ์šฉ๋จ
๋ณ€๊ฒฝ: ์„ ํƒ ์˜์—ญ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ปค์„œ ์ด๋™ ๋™์ž‘์ด ํ•ด๋‹น ์˜์—ญ ์•ˆ์—์„œ๋งŒ ์ž‘๋™ํ•จ
๋ณ€๊ฒฝ: time() ์ œ๊ฑฐ
๋ณ€๊ฒฝ: ๋‚œ์ˆ˜ ์‹œ๋“œ๊ฐ€ ์นดํŠธ ๊ตฌ๋™์‹œ ์ž„์˜๋กœ ์„ค์ •๋จ
๋ณ€๊ฒฝ: api ํ•จ์ˆ˜๊ฐ€ ์ ˆ๋Œ€๋กœ ์นดํŠธ rom์„ ์ง์ ‘ ์ฝ์ง€ ์•Š์Œ
๋ณ€๊ฒฝ: sspr()๊ฐ€ dw, dh ๊ฐ’์œผ๋กœ ์Œ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
๊ณ ์นจ: ํฌ์†Œ ํ…Œ์ด๋ธ”sparse table์˜ ์ •์ˆ˜ ์ธ๋ฑ์‹ฑ ์‹คํŒจ
๊ณ ์นจ: ํ• ๋‹น ์—ฐ์‚ฐ์ž์™€ ์†๊ธฐ ํ˜• if-then-else ์ž‘๋™ ์‹คํŒจ
๊ณ ์นจ: w0 == 128์ผ ๋•Œ sspr() ์ž‘๋™ ์‹คํŒจ
๊ณ ์นจ: ์นด๋ฉ”๋ผ๊ฐ€ (0,0)์ด ์•„๋‹ ๋•Œ ์› ๊ทธ๋ฆฌ๊ธฐ ์‹คํŒจ
๊ณ ์นจ: CPU ๋…์ hogging
๊ณ ์นจ: ๋…ธ์ด์ฆˆ ์•…๊ธฐ๊ฐ€ rnd() ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ผ์นจ
๊ณ ์นจ: ํ”„๋กœ๊ทธ๋žจ ๋ฆฌ์…‹ ์‹œ์— ์˜ค๋””์˜ค ์‹œ์Šคํ…œ์ด ๋ฆฌ์…‹๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: % ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ€๋” ์Œ์ˆ˜ ๊ฐ’์— ๋Œ€ํ•ด ํ‹€๋ฆฌ๊ฒŒ ์ž‘๋™
๊ณ ์นจ: ๊ธธ์ด ์—ฐ์‚ฐ์ž (#)
๊ณ ์นจ: ์ œ๊ณฑ ์—ฐ์‚ฐ์ž (^)
๊ณ ์นจ: ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ๊ณผ ์•„๋ž˜์ชฝ์—์„œ ์ค„์ด ์ž˜๋ฆฌ๋Š” ๋ฒ„๊ทธ
๊ณ ์นจ: print()์˜ ์ •์ˆ˜ ํ‘œ์‹œ ์ •๋ฐ€๋„precision
๊ณ ์นจ: print()๊ฐ€ ์Œ์ˆ˜ y ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ ๋ฌธ์ œ ๋ฐœ์ƒ
๊ณ ์นจ: ํ† ํฐํ™”์™€ ํ‚ค์›Œ๋“œ ํ•˜์ด๋ผ์ดํŠธ
๊ณ ์นจ: ์Šคํ”„๋ผ์ดํŠธ ์†์„ฑ์ด ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: sfx 0..32 ๋งŒ์ด ์Œ์•… ํŒจํ„ด์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ
๊ณ ์นจ: .p8์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์ฝ”๋“œ ๋์— ์ƒˆ ์ค„์ด ์ƒ๊น€
๊ณ ์นจ: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ์™ผ์ชฝ ์—ฌ๋ฐฑ์„ ๋“œ๋ž˜๊ทธ๋กœ ์„ ํƒ -> ์ „์ฒด ์„ ํƒ
v0.1.0
์ถ”๊ฐ€: ๋ฐ๋ชจ ์นดํŠธ: hello.p8 (install_demos๋กœ ์„ค์น˜)
์ถ”๊ฐ€: ์–ด๋””์„œ๋“  CTRL-R๋กœ ์นดํŠธ ์‹คํ–‰/์žฌ์‹œ์ž‘
์ถ”๊ฐ€: gfx ํŽธ์ง‘๊ธฐ์—์„œ a,s ๋กœ ์ƒ‰ ์„ ํƒํ•˜๊ธฐ
์ถ”๊ฐ€: ํ‘์ƒ‰ ๋ฐฐ๊ฒฝํ™”๋ฉด
์ถ”๊ฐ€: ์ผ๊ด€์ consistent CPU ์ˆ˜ํ–‰ ๋น„์šฉ
์ถ”๊ฐ€: btn(), btnp()๋ฅผ ์ธ์ž ์—†์ด ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ ๋น„ํŠธํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜
์ถ”๊ฐ€: fget(id)๊ฐ€ ํ•ด๋‹น ์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ์˜ ๋น„ํŠธํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜
๋ณ€๊ฒฝ: ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด์„œ mapdraw()๋ฅผ map()์œผ๋กœ ๋ฐ”๊ฟˆ
๋ณ€๊ฒฝ: ๊ธฐ๋ณธ sleep ์‹œ๊ฐ„์„ 5ms๋กœ (๋žฉํƒ‘ ์ปดํ“จํ„ฐ์—์„œ CPU ์‚ฌ์šฉ์ด ๋” ์พŒ์ ํ•จ)
๊ณ ์นจ: ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ๋ฏธํ„ฐ
๊ณ ์นจ: ๋ถˆ์•ˆ์ •ํ•œ ์„  ๋ฐ ์› ๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ
๊ณ ์นจ: sfx ํŽธ์ง‘๊ธฐ์—์„œ shift-click ์œผ๋กœ ๋ณผ๋ฅจ ์ „์ฒด ์ ์šฉํ•˜๊ธฐ
๊ณ ์นจ: ์ˆ˜ ํฌ๋งทํŒ…์ด ๊ณผํ•™์  ๊ธฐ์ˆ˜๋ฒ•์œผ๋กœ ํ‘œ์‹œ๋จ
๊ณ ์นจ: ์ฝ˜์†”์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๊ฐ€ ์ž˜๋ฆผ
๊ณ ์นจ: ๋ฌธ์ž ์‹คํ–‰ ์ทจ์†Œtext undo๊ฐ€ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ ๋กค๋ฐฑ ํฌ์ธํŠธ๋ฅผ ์ €์žฅ
๊ณ ์นจ: print(str)๊ฐ€ ์ด์ „ x๊ฐ’์— ์ค„๋ฐ”๊ฟˆ ๋ฌธ์žcarriage return๋ฅผ ์ถ”๊ฐ€ํ•จ
v0.0.5
์ถ”๊ฐ€: help()
์ถ”๊ฐ€: Ctrl+F / Ctrl+G ๋กœ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰, ๋ฐ˜๋ณต
์ถ”๊ฐ€: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ del ํ‚ค
์ถ”๊ฐ€: IF ๋ฌธ์˜ ํ•œ ์ค„ ์งœ๋ฆฌ ์†๊ธฐ ํ‘œ๊ธฐ
์ถ”๊ฐ€: ๋‹จํ•ญ ์—ฐ์‚ฐ์ž += -= /= *= %=
์ถ”๊ฐ€: srand(), time(). rnd() ๋ฅผ ๋ฌธ์„œ์— ์ถ”๊ฐ€
์ถ”๊ฐ€: Ctrl+D ๋กœ ์ค„ ๋ณต์‚ฌ
์ถ”๊ฐ€: ๋Œ€ํ™”ํ˜• ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ํ•จ์ˆ˜ ls()
์ถ”๊ฐ€: band() bor() bxor() bnot() shl() shr()
์ถ”๊ฐ€: ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ์ค„ ๋ฒˆํ˜ธ
์ถ”๊ฐ€: dir() (ls() ์—์ผ๋ฆฌ์–ด์Šค)
๋ณ€๊ฒฝ: print()๋Š” ์ธ์ž ์—†์ด ํ˜ธ์ถœ ๋˜์—ˆ์„ ๋•Œ์—๋งŒ ์˜คํ†  ์Šคํฌ๋กค
๋ณ€๊ฒฝ: alt+up/down ๋กœ ํ•จ์ˆ˜ ์„ ์–ธ๋“ค๋กœ ๊ฑด๋„ˆ ๋›ฐ๊ธฐ (ctrl์—์„œ ๋ณ€๊ฒฝ)
๋ณ€๊ฒฝ: sspr() dw, dh์˜ ๊ธฐ๋ณธ๊ฐ’์„ sw, sh๋กœ ์ ์šฉ
๊ณ ์นจ: .p8 format์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŽธ์ง‘๊ธฐ ์ปค์„œ ์œ„์น˜ ์˜ค๋ฅ˜
๊ณ ์นจ: ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ์ „ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
๊ณ ์นจ: ์žฌ๋ถ€ํŒ… ํ›„ ์ค„ ๋ฐ”๊ฟˆ ๊นจ์ง
๊ณ ์นจ: mkdir()๋ฅผ ์ธ์ž ์—†์ด ๋ถ€๋ฅผ ๊ฒฝ์šฐ "(null)" ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ
๊ณ ์นจ: ์Šคํฌ๋กค ํœ ๋กœ ์ฝ”๋“œ๋ณด๋‹ค ํ›จ์”ฌ ์œ„๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ
๊ณ ์นจ: alt-f4๋กœ ๋น ๋ฅด๊ฒŒ ๋‚˜๊ฐ€๊ธฐ
v0.0.4
์ถ”๊ฐ€: Jelpi ๋ฐ๋ชจ ์นดํŠธ
์ถ”๊ฐ€: ๋‚ด๋ถ€ ์นดํŠธ // install_demos()๋กœ ์„ค์น˜
์ถ”๊ฐ€: ์กฐ์ด์Šคํ‹ฑ ์ง€์›
์ถ”๊ฐ€: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ ์‹คํ–‰ ์ทจ์†Œ/์žฌ์‹คํ–‰
์ถ”๊ฐ€: ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ ์Šคํฌ๋กค ํœ 
์ถ”๊ฐ€: LCTRL + UP/DOWN ๋กœ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ํ•จ์ˆ˜๊ฐ„ ์ด๋™
์ถ”๊ฐ€: LALT + LEFT/RIGHT ๋กœ ํŽธ์ง‘๊ธฐ ๋ชจ๋“œ ๋ฐ”๊พธ๊ธฐ
์ถ”๊ฐ€: btnp()
์ถ”๊ฐ€: ๋ฐ˜๋ณต ์ƒ˜ํ”Œlooping sample ๋ฐ˜๋ณต ํ’€๊ธฐ (ํŽธ์ง‘๊ธฐ์—์„œ a, ์ฝ”๋“œ์—์„œ sfx(-2, channel)๋กœ ์‚ฌ์šฉ)
๋ณ€๊ฒฝ: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘๋‹จ์‹œ ์Œ์•… ์žฌ์ƒ ์ค‘๋‹จ
๋ณ€๊ฒฝ: ์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ 8๊ฐœ ํ—ˆ์šฉ
๋ณ€๊ฒฝ: ๋…ธ์ด์ฆˆ ์•…๊ธฐ์˜ ์ €์Œ๋ถ€๋ฅผ ๊ฐ•ํ™”
๊ณ ์นจ: Home, end ํ‚ค
๊ณ ์นจ: ์Šคํ”„๋ผ์ดํŠธ ํ”Œ๋ž˜๊ทธ 4,5๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Œ
๊ณ ์นจ: mset()์ด ์ตœ์ƒ์œ„ 4 ๋น„ํŠธ๋ฅผ ๋ฒ„๋ฆผ
๊ณ ์นจ: ๊ธด ๋ฌธ์ž์—ด ํ•˜์ด๋ผ์ดํŠธ์‹œ ํฌ๋ž˜์‹œ ๋ฐœ์ƒ
v0.0.3
์ถ”๊ฐ€: ํŒ”๋ ˆํŠธ ๋งคํ•‘ ํƒ€์ž… 1 (ํ™”๋ฉด)
์ถ”๊ฐ€: ์ปฌ๋ ‰์…˜(ํ…Œ์ด๋ธ”)์„ c={1,2,..} ์ฒ˜๋Ÿผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ
์ถ”๊ฐ€: holdframe() // _draw(), update()์—์„œ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ ์„ ํƒ ์˜์—ญ ๊ฐ„์˜ ์„ ํƒ, ์ž‘์—…
์ถ”๊ฐ€: ๋งต ์„ ํƒ, ์Šคํƒฌํ”„ ๋„๊ตฌ
์ถ”๊ฐ€: ๋ชจ๋“œ ๋ณ€๊ฒฝ ์‹œ ๋ชจ๋“œ ํ™”๋ฉด ๋ณด์กด
์ถ”๊ฐ€: ์Œ์•… ์žฌ์ƒ์„ ์œ„ํ•œ ์ฑ„๋„ ๋งˆ์Šคํฌ
์ถ”๊ฐ€: ์‹ค์‹œ๊ฐ„ ์Œํ–ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘
์ถ”๊ฐ€: .png ์นดํŠธ ํ˜•์‹
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ ๋‚ด๋น„๊ฒŒ์ด์…˜ ํ‚ค (-, +)
๊ณ ์นจ: 4-์ฑ„๋„ ์†Œ๋ฆฌ ์ œํ•œ
๊ณ ์นจ: ์ž๋™ sfx ์ฑ„๋„ ์„ ํƒ (์ฑ„๋„ ์ธ๋ฑ์Šค: -1)
v0.0.2
์ถ”๊ฐ€: ๋ช…๋ น์–ด ํžˆ์Šคํ† ๋ฆฌ
์ถ”๊ฐ€: P2 ํ‚ค
์ถ”๊ฐ€: ๋ถ€ํŠธ ์‹œํ€€์Šค
์ถ”๊ฐ€: ์œˆ๋„์šฐ ๋ฐ 64๋น„ํŠธ ๋ฆฌ๋ˆ…์Šค ๋นŒ๋“œ
์ถ”๊ฐ€: ๋‚ด๋ถ€ API ํ•จ์ˆ˜์˜ CPU ์‚ฌ์šฉ๋Ÿ‰
์ถ”๊ฐ€: ๊ฐœ๋ณ„์  ์Œ์•… ์ฑ„๋„ ์ธ๋ฑ์Šค์™€ mute ์ƒํƒœ
์ถ”๊ฐ€: ๋ฉ”๋ชจ๋ฆฌ ๋งคํ•‘
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ‰ ์ฐพ์•„ ๋ฐ”๊พธ๊ธฐ
์ถ”๊ฐ€: ์Šคํ”„๋ผ์ดํŠธ์™€ ๋งต ๊ตฌ์—ญ์˜ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ
ํ–ฅ์ƒ: ์ฆ‰๊ฐ์  ๋ช…๋ น์–ด ํŽธ์ง‘
ํ–ฅ์ƒ: ํŽธ์ง‘๊ธฐ ์ปค์„œ ์›€์ง์ž„
๊ณ ์นจ: ์ž๋™ ์˜ค๋””์˜ค ์ฑ„๋„ ์„ ํƒ
v0.0.1
์ฒซ ์•ŒํŒŒ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment