diff --git a/README.md b/README.md index 73b86235e01ac5a0fed65a41e79ab20ae451f4e0..9ea8f7e3d62fcc60fe68271c8ded9c495db3fdc3 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ A Game Boy emulator that is written in Rust 🦀. * Web and SDL front-ends * Fullscreen mode * Support for multiple MBCs: MBC1, MBC2, MBC3, and MBC5 +* Transparent RAM saving using [Web Storage API](https://developer.mozilla.org/docs/Web/API/Window/localStorage) * Variable CPU clock speed * Debug mode: VRAM and registers diff --git a/examples/web/util.ts b/examples/web/util.ts index d52196c025576237af8c49dd7a1f98a18f56ec4f..37a00f53f35e731290ed7797421d93b7b6e12b81 100644 --- a/examples/web/util.ts +++ b/examples/web/util.ts @@ -1,18 +1,17 @@ export const bufferToBase64 = (buffer: Uint8Array) => { - const array = Array(buffer.length) - .fill("") + const data = Array(buffer.length) + .fill(null) .map((_, i) => String.fromCharCode(buffer[i])) .join(""); - const base64 = btoa(array); + const base64 = btoa(data); return base64; }; export const base64ToBuffer = (base64: string) => { - const data = window.atob(base64); - const length = data.length; - const buffer = new Uint8Array(length); - for (let i = 0; i < length; i++) { - buffer[i] = data.charCodeAt(i); - } + const data = atob(base64); + const array = Array(data.length) + .fill(null) + .map((_, i) => data.charCodeAt(i)); + const buffer = new Uint8Array(array); return buffer; };