From ce859537944a9478d8f82927a6b443d2b8c5f0e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Sun, 19 Jun 2022 16:09:10 +0100
Subject: [PATCH] feat: initial working WASM for web

---
 examples/web/chip_ahoyto.d.ts         |   7 +++
 examples/web/chip_ahoyto.js           |  35 +++++++++++++--
 examples/web/chip_ahoyto_bg.wasm      | Bin 179355 -> 189592 bytes
 examples/web/chip_ahoyto_bg.wasm.d.ts |   3 ++
 examples/web/index.html               |   1 +
 examples/web/index.js                 |  61 ++++++++++++++++++++++++--
 src/chip8_neo.rs                      |   4 ++
 7 files changed, 103 insertions(+), 8 deletions(-)

diff --git a/examples/web/chip_ahoyto.d.ts b/examples/web/chip_ahoyto.d.ts
index 629da9d..f8874e8 100644
--- a/examples/web/chip_ahoyto.d.ts
+++ b/examples/web/chip_ahoyto.d.ts
@@ -26,6 +26,10 @@ export class Chip8Neo {
 */
   reset_hard_ws(): void;
 /**
+* @returns {Uint8Array}
+*/
+  vram_ws(): Uint8Array;
+/**
 */
   clock_ws(): void;
 }
@@ -41,8 +45,11 @@ export interface InitOutput {
   readonly chip8neo_load_rom_ws: (a: number, b: number, c: number) => void;
   readonly chip8neo_reset_ws: (a: number) => void;
   readonly chip8neo_reset_hard_ws: (a: number) => void;
+  readonly chip8neo_vram_ws: (a: number, b: number) => void;
   readonly chip8neo_clock_ws: (a: number) => void;
   readonly __wbindgen_malloc: (a: number) => number;
+  readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
+  readonly __wbindgen_free: (a: number, b: number) => void;
   readonly __wbindgen_exn_store: (a: number) => void;
 }
 
diff --git a/examples/web/chip_ahoyto.js b/examples/web/chip_ahoyto.js
index ef9c5a4..a1dfc09 100644
--- a/examples/web/chip_ahoyto.js
+++ b/examples/web/chip_ahoyto.js
@@ -67,6 +67,18 @@ function passArray8ToWasm0(arg, malloc) {
     return ptr;
 }
 
+let cachedInt32Memory0;
+function getInt32Memory0() {
+    if (cachedInt32Memory0.byteLength === 0) {
+        cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);
+    }
+    return cachedInt32Memory0;
+}
+
+function getArrayU8FromWasm0(ptr, len) {
+    return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
+}
+
 function logError(f, args) {
     try {
         return f.apply(this, args);
@@ -90,10 +102,6 @@ function handleError(f, args) {
         wasm.__wbindgen_exn_store(addHeapObject(e));
     }
 }
-
-function getArrayU8FromWasm0(ptr, len) {
-    return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
-}
 /**
 */
 export class Chip8Classic {
@@ -176,6 +184,24 @@ export class Chip8Neo {
         wasm.chip8neo_reset_hard_ws(this.ptr);
     }
     /**
+    * @returns {Uint8Array}
+    */
+    vram_ws() {
+        try {
+            if (this.ptr == 0) throw new Error('Attempt to use a moved value');
+            const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+            _assertNum(this.ptr);
+            wasm.chip8neo_vram_ws(retptr, this.ptr);
+            var r0 = getInt32Memory0()[retptr / 4 + 0];
+            var r1 = getInt32Memory0()[retptr / 4 + 1];
+            var v0 = getArrayU8FromWasm0(r0, r1).slice();
+            wasm.__wbindgen_free(r0, r1 * 1);
+            return v0;
+        } finally {
+            wasm.__wbindgen_add_to_stack_pointer(16);
+        }
+    }
+    /**
     */
     clock_ws() {
         if (this.ptr == 0) throw new Error('Attempt to use a moved value');
@@ -341,6 +367,7 @@ function initMemory(imports, maybe_memory) {
 function finalizeInit(instance, module) {
     wasm = instance.exports;
     init.__wbindgen_wasm_module = module;
+    cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);
     cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);
 
 
diff --git a/examples/web/chip_ahoyto_bg.wasm b/examples/web/chip_ahoyto_bg.wasm
index 43dfb96327c653b8664d889c35069827ad856c3a..21dabefd9e3d00745f8db9023d32a4039529a271 100644
GIT binary patch
delta 41761
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

delta 35345
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%0Au0!pz|Q;1
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
aXw#%)yO6bOw5SWtQim3$R7hbLtNTAcqApzk

diff --git a/examples/web/chip_ahoyto_bg.wasm.d.ts b/examples/web/chip_ahoyto_bg.wasm.d.ts
index 9d1e41a..9677a6d 100644
--- a/examples/web/chip_ahoyto_bg.wasm.d.ts
+++ b/examples/web/chip_ahoyto_bg.wasm.d.ts
@@ -8,6 +8,9 @@ export function chip8neo_new(): number;
 export function chip8neo_load_rom_ws(a: number, b: number, c: number): void;
 export function chip8neo_reset_ws(a: number): void;
 export function chip8neo_reset_hard_ws(a: number): void;
+export function chip8neo_vram_ws(a: number, b: number): void;
 export function chip8neo_clock_ws(a: number): void;
 export function __wbindgen_malloc(a: number): number;
+export function __wbindgen_add_to_stack_pointer(a: number): number;
+export function __wbindgen_free(a: number, b: number): void;
 export function __wbindgen_exn_store(a: number): void;
diff --git a/examples/web/index.html b/examples/web/index.html
index b50d7ca..ca1964d 100644
--- a/examples/web/index.html
+++ b/examples/web/index.html
@@ -4,6 +4,7 @@
         <title>CHIP-Ahoyto</title>
     </head>
     <body>
+        <canvas id="chip-canvas" width="960" height="480"></canvas>
         <script type="module" src="./index.js"></script>
     </body>
 </html>
diff --git a/examples/web/index.js b/examples/web/index.js
index 5dab7bf..a164b80 100644
--- a/examples/web/index.js
+++ b/examples/web/index.js
@@ -1,4 +1,19 @@
-import { default as wasm, Chip8Neo } from "./chip_ahoyto.js";
+import {
+    default as wasm,
+    Chip8Neo
+} from "./chip_ahoyto.js";
+
+const PIXEL_SET_COLOR = 0x50cb93ff;
+const PIXEL_UNSET_COLOR = 0x1b1a17ff;
+
+const state = {
+    canvas: null,
+    canvasScaled: null,
+    canvasCtx: null,
+    canvasScaledCtx: null,
+    image: null,
+    videoBuff: null
+};
 
 (async () => {
     // initializes the WASM module, this is required
@@ -7,8 +22,10 @@ import { default as wasm, Chip8Neo } from "./chip_ahoyto.js";
 
     const ROM = "roms/ibm_logo.ch8";
 
-    console.info("LOADED");
+    console.info("System Loaded!");
 
+    // loads the ROM data and converts it into the
+    // target u8 array bufffer
     const response = await fetch(ROM);
     const blob = await response.blob();
     const arrayBuffer = await blob.arrayBuffer();
@@ -19,7 +36,43 @@ import { default as wasm, Chip8Neo } from "./chip_ahoyto.js";
     chip8.reset_hard_ws();
     chip8.load_rom_ws(data);
 
-    console.info(`Loaded ${ROM}`);
+    console.info(`ROM Loaded ${ROM}`);
 
-    chip8.clock_ws();    
+    initCanvas();
+
+    while (true) {
+        chip8.clock_ws();
+        updateCanvas(chip8.vram_ws());
+        
+        // hack
+        await new Promise((resolve, reject) => {
+            setTimeout(resolve, 100);
+        })
+    }
 })();
+
+const initCanvas = () => {
+    // initializes the off-screen canvas that is going to be
+    // used in the drawing proces
+    state.canvas = document.createElement("canvas");
+    state.canvas.width = 64;
+    state.canvas.height = 32;
+    state.canvasCtx = state.canvas.getContext("2d");
+
+    state.canvasScaled = document.getElementById("chip-canvas");
+    state.canvasScaledCtx = state.canvasScaled.getContext("2d");
+
+    state.canvasScaledCtx.scale(state.canvasScaled.width / state.canvas.width, state.canvasScaled.height / state.canvas.height);
+    state.canvasScaledCtx.imageSmoothingEnabled = false;
+
+    state.image = state.canvasCtx.createImageData(state.canvas.width, state.canvas.height);
+    state.videoBuff = new DataView(state.image.data.buffer);
+}
+
+const updateCanvas = (pixels) => {
+    for (let i = 0; i < pixels.length; i++) {
+        state.videoBuff.setUint32(i * 4, pixels[i] ? PIXEL_SET_COLOR : PIXEL_UNSET_COLOR);
+    }
+    state.canvasCtx.putImageData(state.image, 0, 0);
+    state.canvasScaledCtx.drawImage(state.canvas, 0, 0);
+}
diff --git a/src/chip8_neo.rs b/src/chip8_neo.rs
index 730a15a..0b01cfa 100644
--- a/src/chip8_neo.rs
+++ b/src/chip8_neo.rs
@@ -378,6 +378,10 @@ impl Chip8Neo {
         self.reset_hard()
     }
 
+    pub fn vram_ws(&self) -> Vec<u8> {
+        self.vram()
+    }
+
     pub fn clock_ws(&mut self) {
         self.clock()
     }
-- 
GitLab