UNPKG

@thenick775/mgba-wasm

Version:
50 lines (34 loc) 1.33 kB
# mGBA-wasm This package is a bundled version of my [mGBA fork](https://github.com/thenick775/mgba/tree/feature/wasm) compiled to webassembly. This core currently powers [gbajs3](https://gba.nicholas-vancise.dev)! To instantiate the emulator using react: ``` import mGBA, { type mGBAEmulator } from '@thenick775/mgba-wasm'; import { useEffect, useState } from 'react'; export const useEmulator = (canvas: HTMLCanvasElement | null) => { const [emulator, setEmulator] = useState<mGBAEmulator | null>(null); useEffect(() => { const initialize = async () => { if (canvas) { const Module = await mGBA({ canvas }); const mGBAVersion = Module.version.projectName + ' ' + Module.version.projectVersion; console.log(mGBAVersion); await Module.FSInit(); setEmulator(Module); } }; initialize(); }, [canvas]); return emulator; }; ``` This core uses threads, you must serve these files in a way that supports cross origin isolation: ``` Cross-Origin-Opener-Policy same-origin Cross-Origin-Embedder-Policy require-corp ``` See the feature/wasm [README](https://github.com/thenick775/mgba/tree/feature/wasm#readme) for further details such as: - available emulator interface methods - building from source - embedding and usage in vanilla javascript