5 个版本

0.1.5 2020年5月31日
0.1.4 2020年5月31日
0.1.2 2020年5月29日
0.1.1 2020年5月29日
0.1.0 2020年5月29日

#255 in 模拟器

MIT 许可证

155KB
2.5K SLoC

NPM

gc_nes_web

gc_nes_web 封装了我 gc_nes_core crate 公开的公共函数,通过 Web Assembly - Javascript 互操作在浏览器中使用。它提供加载和运行 NES ROM、提供输入以及提取渲染图像数据的功能。音频目前不支持。

在 NPM 项目中安装

npm install gc_nes_web

使用 JavaScript 与 NES 模拟器

// Import the package
const wasm = await import ("gc_nes_web");
// Create the NES object
let nes = this.state.wasm.nes(romArrayOfBytes);
// Run the emulator to the completion of the next frame and retrieve it
let frame = nes.frame();
// Or run just one cycle and get the frame separately
nes.cycle();
let frame = nes.get_screen();
// Drawing to a Canvas
let offscreenCanvas = new OffscreenCanvas(256, 240);
let offscreenCanvasContext = offscreenCanvas.getContext("2d");
let imageData = offscreenCanvasContext?.createImageData(256, 240);
imageData.data.set(frame);
offscreenCanvasContext.putImageData(imageData, 0, 0);
// mainCanvasContext is the 2D context for the Canvas you actually want to draw to.
mainCanvasContext.drawImage(offscreenCanvas, 0, 0);

通过 wasm-pack,gc_nes_web 完全支持 TypeScript

立即尝试

您可以在我的网站上尝试 gc_nes_emulator,网址为 https://garettcooper.com/#/nes-emulator

当前版本:0.1.5

依赖项

~1.6–2.5MB
~38K SLoC