From d68a207df60b46da4937a7b6e0d01e783e14bb8a Mon Sep 17 00:00:00 2001 From: dylan <> Date: Tue, 9 May 2023 23:06:09 -0700 Subject: [PATCH] Comparing to pico-8 builtins --- builtins.ts | 45 ++++++++++++++-- codetab.ts | 8 +-- pico8_builtins.txt | 126 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 173 insertions(+), 6 deletions(-) create mode 100644 pico8_builtins.txt diff --git a/builtins.ts b/builtins.ts index 98dbd26..3cb26dd 100644 --- a/builtins.ts +++ b/builtins.ts @@ -70,6 +70,7 @@ export const measureText = (text: string) => { } const faux = { + // Graphics cls: () => { resetRepl(); clearScreen(); @@ -78,16 +79,54 @@ const faux = { spr: drawSprite, txt: drawText, rect: fillRect, + // Input btn: keyDown, btnp: keyPressed, btnr: keyReleased, + // Cart + save: saveCart, + load: loadCart, + // JS + Array, + BigInt: BigInt, + Boolean, + Date, + Error, + Function, + Infinity: Infinity, + JSON: JSON, + Map, + NaN: NaN, + Number, + Object, + Promise, + Proxy, + Reflect: Reflect, + RegExp, + Set, + String, + Symbol: Symbol, + WeakMap, + WeakRef, + WeakSet, + isFinite, + isNaN, + // Math + max: Math.max, + min: Math.min, + floor: Math.floor, + ceil: Math.ceil, + sin: Math.sin, + cos: Math.cos, + atan2: Math.atan2, + sqrt: Math.sqrt, + abs: Math.abs, + rand: Math.random, + // Other code: (n: number) => { return runCode(getCodeSheet(n)); }, log: console.log, - JSON: JSON, - save: saveCart, - load: loadCart, }; for (const key in faux) { diff --git a/codetab.ts b/codetab.ts index 2dd3b6d..20358b1 100644 --- a/codetab.ts +++ b/codetab.ts @@ -64,6 +64,8 @@ const values = [ "null", "true", "undefined", + "NaN", + "Infinity", ]; const operator = [ "&&", @@ -659,6 +661,9 @@ const draw = () => { const lines = token.value.split("\n"); lines.forEach((line, i) => { let color = tokenColors[token.type]; + if (builtins.includes(token.value)) { + color = builtinColor; + } if (keywords.includes(token.value)) { color = keywordColor; } @@ -671,9 +676,6 @@ const draw = () => { if (punctuation.includes(token.value)) { color = punctuationColor; } - if (builtins.includes(token.value)) { - color = builtinColor; - } drawText(1+x+cx-scrollX, 1+y+cy-scrollY, line, color); if (i === lines.length-1) { cx += measureText(line)+1; diff --git a/pico8_builtins.txt b/pico8_builtins.txt new file mode 100644 index 0000000..ffc5620 --- /dev/null +++ b/pico8_builtins.txt @@ -0,0 +1,126 @@ +- [x] load +- [x] save +- [ ] folder +- [ ] ls +- [x] run +- [ ] stop +- [ ] resume +- [ ] assert +- [ ] reboot +- [ ] reset +- [ ] info +- [ ] flip +- [ ] printh +- [ ] time/t +- [ ] stat +- [ ] extcmd + +- [ ] clip +- [ ] pset +- [ ] pget +- [ ] sget +- [ ] sset +- [ ] fget +- [ ] fset +- [?] print +- [ ] cursor +- [ ] color +- [x] cls +- [ ] camera +- [ ] circ +- [ ] circfill +- [ ] oval +- [ ] ovalfill +- [ ] line +- [ ] rect +- [x] rectfill +- [ ] pal +- [ ] palt +- [x] spr +- [ ] sspr +- [ ] fillp + +- [ ] add +- [ ] del +- [ ] deli +- [ ] count +- [ ] all +- [ ] foreach +- [ ] pairs + +- [x] btn +- [x] btnp + +- [ ] sfx +- [ ] music + +- [ ] mget +- [ ] mset +- [ ] map +- [ ] tline + +- [ ] peek +- [ ] poke +- [ ] peek2 +- [ ] poke2 +- [ ] peek4 +- [ ] poke4 +- [ ] memcpy +- [ ] reload +- [ ] cstore +- [ ] memset + +- [x] max +- [x] min +- [ ] mid +- [x] flr +- [x] ceil +- [x] cos +- [x] sin +- [x] atan2 +- [x] sqrt +- [x] abs +- [x] rnd +- [ ] srand + +-- skipping these in favor of bitwise operations if needed +- [ ] band +- [ ] bor +- [ ] bxor +- [ ] bnot +- [ ] shl +- [ ] shr +- [ ] lshr +- [ ] rotl +- [ ] rotr + +- [ ] menuitem + +-- js comes with stuff here (String, Number, typeof, etc.) +- [ ] tostr +- [ ] tonum +- [ ] chr +- [ ] ord +- [ ] sub +- [ ] split +- [ ] type + +- [ ] cartdata +- [ ] dget +- [ ] dset + +- [ ] serial + +- [ ] setmetatable +- [ ] getmetatable +- [ ] rawset +- [ ] rawget +- [ ] rawequal +- [ ] rawlen + +-- js comes with stuff here +- [ ] cocreate +- [ ] coresume +- [ ] assert +- [ ] costatus +- [ ] yield \ No newline at end of file