diff --git a/index.ts b/index.ts index 1235ba3..c07f3a5 100644 --- a/index.ts +++ b/index.ts @@ -40,21 +40,301 @@ const sprites = [ ], ] +// deno-fmt-ignore +const font: {[key: string]: Array} = { + "a": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "b": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 1, 1, + ], + "c": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 1, + ], + "d": [ + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + ], + "e": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + ], + "f": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + ], + "g": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 1, 1, + ], + "h": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "i": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 1, 1, + ], + "j": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 1, 1, 0, + ], + "k": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "l": [ + 0, 0, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + ], + "m": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "n": [ + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "o": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + ], + "p": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 0, 0, + 0, 1, 0, 0, + ], + "q": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 0, 1, 1, + ], + "r": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "s": [ + 0, 0, 0, 0, + 0, 0, 1, 1, + 0, 1, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 1, + 0, 1, 1, 0, + ], + "t": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + ], + "u": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 0, + ], + "v": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 1, 0, + ], + "w": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 1, 1, 1, + ], + "x": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + ], + "y": [ + 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 1, 0, 1, + 0, 1, 1, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + ], + "z": [ + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + 0, 1, 1, 1, + ], + ",": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 1, 0, 0, + ], + ".": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + ], + " ": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + ], + "<": [ + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1, + ], + ">": [ + 0, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1, + 0, 0, 1, 0, + 0, 1, 0, 0, + ], + "=": [ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 0, + 0, 1, 1, 1, + 0, 0, 0, 0, + ], +} + const drawSprite = (x: number, y: number, spr: number) => { setPixelsInRect(x, y, 8, sprites[spr]); } -await mainloop((t) => { - console.log(t/1000); +const drawChar = (x: number, y: number, char: string) => { + setPixelsInRect(x, y, 4, font[char]); +} + +const drawText = (x: number, y: number, text: string) => { + [...text].forEach((char, i) => { + drawChar(x+4*i, y, char); + }); +} + +const draw = () => { clearScreen(); - for (let i = 0; i < 256; i++) { - drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 0); - drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 1); - drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 2); - } + drawText(5, 5, "=> hello, world <="); + drawText(5, 11, "the quick brown fox"); + drawText(5, 17, "jumps over the lazy"); + drawText(5, 23, "dog."); + // for (let i = 0; i < 256; i++) { + // drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 0); + // drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 1); + // drawSprite(Math.floor(Math.random()*120), Math.floor(Math.random()*120), 2); + // } setPixelColor(0, 0, 3); setPixelColor(0, 127, 4); setPixelColor(127, 0, 5); setPixelColor(127, 127, 6); +} + +draw(); + +await mainloop((t) => { + // console.log(t/1000); + draw(); frame(); }); diff --git a/window.ts b/window.ts index f7cc84f..c2c0635 100644 --- a/window.ts +++ b/window.ts @@ -115,8 +115,8 @@ const px = (x: number, y: number) => { const palette: Array<[number, number, number, number]> = [ [0, 0, 0, 0], - [0, 0, 0, 1], [1, 1, 1, 1], + [0, 0, 0, 1], [1, 0, 0, 1], [1, 1, 0, 1], [0, 1, 0, 1], @@ -138,8 +138,10 @@ const allPixelColors = new Float32Array( ) export const setPixelColor = (x: number, y: number, color: number) => { - const col = c(color); - allPixelColors.set(col, 4*6*(128*y+x)); + if (color !== 0) { + const col = c(color); + allPixelColors.set(col, 4*6*(128*y+x)); + } } export const setPixelsInRect = (x: number, y: number, w: number, pixels: Array) => {