核心下载地址:
- https://binbashbanana.github.io/
- https://buildbot.libretro.com/nightly/emscripten/
声明变量
var Module = new class{
noInitialRun = true;//布尔值 true 不主动运行Module.callMain
arguments = ["-v", "--menu"];//-v代表输出日志 --menu打开RetroArch系统,如果是路径则直接打开游戏rom,第三个值决定canvas,默认值#canvas
preRun = [];
postRun = [];
totalDependencies = 0;
canvas = document.querySelector('#canvas'); //设置canvas 兼容处理
wasmBinary = Uint8Array; //设置wasm的数据值,如果不设置,js载入后会自动下载xxx.wasm,例如把核心打包下载节省带宽时就需要了
print(text){} //控制台输出
printErr(text){} //日志输出 注意这个函数this不一定是Module
onRuntimeInitialized(){}//wasm加载完毕时运行
}
简单例子
/js/mgba_libretro.js
/js/mgba_libretro.wasm
/1.gba
/index.html
按键处理
可以创建事件触发
document.dispatchEvent(new KeyboardEvent('keydown',{code:'KeyX'})); document.dispatchEvent(new KeyboardEvent('keyup',{code:'KeyX'}));
数据本地化
由于无法确定是否有 IDBFS 因此最好自己参照写一个自定义的硬盘挂载
/*
var MYDFS = new NengeDisk();
MYDFS.SetModule(this);
MYDFS.setMEMFS(FS.filesystems.MEMFS);
let path = "/home/web_user/retroarch/userdata";
FS.createPath('/',path, !0, !0);//创建一个目录
await MYDFS.syncfs(FS.mount(MYDFS, {}, path).mount); //挂载一个MYDFS硬盘,确保已经同步完毕
*/
//在callMain之前挂载
常见BUG处理
- 声音,由于手机策略上问题,声音初始化必须有交互事件