@thenick775/mgba-wasm 2.1.3 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mgba.d.ts +5 -0
- package/dist/mgba.js +62 -41
- package/dist/mgba.wasm +0 -0
- package/dist/mgba.wasm.map +1 -1
- package/package.json +1 -1
package/dist/mgba.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ declare namespace mGBA {
|
|
|
26
26
|
|
|
27
27
|
export type coreSettings = {
|
|
28
28
|
frameSkip?: number;
|
|
29
|
+
baseFpsTarget?: number;
|
|
29
30
|
rewindBufferCapacity?: number;
|
|
30
31
|
rewindBufferInterval?: number;
|
|
31
32
|
audioSampleRate?: number;
|
|
@@ -35,6 +36,8 @@ declare namespace mGBA {
|
|
|
35
36
|
audioSync?: boolean;
|
|
36
37
|
threadedVideo?: boolean;
|
|
37
38
|
rewindEnable?: boolean;
|
|
39
|
+
timestepSync?: boolean;
|
|
40
|
+
showFpsCounter?: boolean;
|
|
38
41
|
};
|
|
39
42
|
|
|
40
43
|
export interface mGBAEmulator extends EmscriptenModule {
|
|
@@ -54,10 +57,12 @@ declare namespace mGBA {
|
|
|
54
57
|
listSaves(): string[];
|
|
55
58
|
loadGame(romPath: string, savePathOverride?: string): boolean;
|
|
56
59
|
loadState(slot: number): boolean;
|
|
60
|
+
pauseAudio(): void;
|
|
57
61
|
pauseGame(): void;
|
|
58
62
|
quickReload(): void;
|
|
59
63
|
quitGame(): void;
|
|
60
64
|
quitMgba(): void;
|
|
65
|
+
resumeAudio(): void;
|
|
61
66
|
resumeGame(): void;
|
|
62
67
|
saveState(slot: number): boolean;
|
|
63
68
|
screenshot(fileName?: string): boolean;
|
package/dist/mgba.js
CHANGED
|
@@ -300,6 +300,16 @@ Module.resumeGame = () => {
|
|
|
300
300
|
resumeGame();
|
|
301
301
|
};
|
|
302
302
|
|
|
303
|
+
Module.pauseAudio = () => {
|
|
304
|
+
const pauseAudio = cwrap('pauseAudio', null, []);
|
|
305
|
+
pauseAudio();
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
Module.resumeAudio = () => {
|
|
309
|
+
const resumeAudio = cwrap('resumeAudio', null, []);
|
|
310
|
+
resumeAudio();
|
|
311
|
+
};
|
|
312
|
+
|
|
303
313
|
Module.getVolume = () => {
|
|
304
314
|
const getVolume = cwrap('getVolume', 'number', []);
|
|
305
315
|
return getVolume();
|
|
@@ -497,6 +507,15 @@ Module.setCoreSettings = (coreSettings) => {
|
|
|
497
507
|
|
|
498
508
|
if (coreSettings.rewindEnable !== undefined)
|
|
499
509
|
setIntegerCoreSetting('rewindEnable', coreSettings.rewindEnable);
|
|
510
|
+
|
|
511
|
+
if (coreSettings.baseFpsTarget !== undefined)
|
|
512
|
+
setIntegerCoreSetting('baseFpsTarget', coreSettings.baseFpsTarget);
|
|
513
|
+
|
|
514
|
+
if (coreSettings.timestepSync !== undefined)
|
|
515
|
+
setIntegerCoreSetting('timestepSync', coreSettings.timestepSync);
|
|
516
|
+
|
|
517
|
+
if (coreSettings.showFpsCounter !== undefined)
|
|
518
|
+
setIntegerCoreSetting('showFpsCounter', coreSettings.showFpsCounter);
|
|
500
519
|
};
|
|
501
520
|
// end include: /home/mgba/src/src/platform/wasm/pre.js
|
|
502
521
|
|
|
@@ -1116,32 +1135,32 @@ async function createWasm() {
|
|
|
1116
1135
|
// === Body ===
|
|
1117
1136
|
|
|
1118
1137
|
var ASM_CONSTS = {
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1138
|
+
310256: () => { console.error("thread instantiation failed") },
|
|
1139
|
+
310305: ($0, $1) => { Module.canvas.width = $0; Module.canvas.height = $1; },
|
|
1140
|
+
310362: ($0, $1, $2, $3, $4, $5, $6) => { Module.version = { gitCommit : UTF8ToString($0), gitShort : UTF8ToString($1), gitBranch : UTF8ToString($2), gitRevision : $3, binaryName : UTF8ToString($4), projectName : UTF8ToString($5), projectVersion : UTF8ToString($6) }; },
|
|
1141
|
+
310594: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1142
|
+
310692: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1143
|
+
310790: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1144
|
+
310888: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1145
|
+
310986: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1146
|
+
311084: ($0, $1) => { const funcPtr = $0; const ctx = $1; const func = wasmTable.get(funcPtr); if (func) func(ctx); },
|
|
1147
|
+
311182: () => { FS.syncfs(function (err) { assert(!err); }) },
|
|
1148
|
+
311226: ($0) => { var str = UTF8ToString($0) + '\n\n' + 'Abort/Retry/Ignore/AlwaysIgnore? [ariA] :'; var reply = window.prompt(str, "i"); if (reply === null) { reply = "i"; } return allocate(intArrayFromString(reply), 'i8', ALLOC_NORMAL); },
|
|
1149
|
+
311451: () => { if (typeof(AudioContext) !== 'undefined') { return true; } else if (typeof(webkitAudioContext) !== 'undefined') { return true; } return false; },
|
|
1150
|
+
311598: () => { if ((typeof(navigator.mediaDevices) !== 'undefined') && (typeof(navigator.mediaDevices.getUserMedia) !== 'undefined')) { return true; } else if (typeof(navigator.webkitGetUserMedia) !== 'undefined') { return true; } return false; },
|
|
1151
|
+
311832: ($0) => { if(typeof(Module['SDL2']) === 'undefined') { Module['SDL2'] = {}; } var SDL2 = Module['SDL2']; if (!$0) { SDL2.audio = {}; } else { SDL2.capture = {}; } if (!SDL2.audioContext) { if (typeof(AudioContext) !== 'undefined') { SDL2.audioContext = new AudioContext(); } else if (typeof(webkitAudioContext) !== 'undefined') { SDL2.audioContext = new webkitAudioContext(); } if (SDL2.audioContext) { if ((typeof navigator.userActivation) === 'undefined') { autoResumeAudioContext(SDL2.audioContext); } } } return SDL2.audioContext === undefined ? -1 : 0; },
|
|
1152
|
+
312384: () => { var SDL2 = Module['SDL2']; return SDL2.audioContext.sampleRate; },
|
|
1153
|
+
312452: ($0, $1, $2, $3) => { var SDL2 = Module['SDL2']; var have_microphone = function(stream) { if (SDL2.capture.silenceTimer !== undefined) { clearInterval(SDL2.capture.silenceTimer); SDL2.capture.silenceTimer = undefined; SDL2.capture.silenceBuffer = undefined } SDL2.capture.mediaStreamNode = SDL2.audioContext.createMediaStreamSource(stream); SDL2.capture.scriptProcessorNode = SDL2.audioContext.createScriptProcessor($1, $0, 1); SDL2.capture.scriptProcessorNode.onaudioprocess = function(audioProcessingEvent) { if ((SDL2 === undefined) || (SDL2.capture === undefined)) { return; } audioProcessingEvent.outputBuffer.getChannelData(0).fill(0.0); SDL2.capture.currentCaptureBuffer = audioProcessingEvent.inputBuffer; dynCall('vi', $2, [$3]); }; SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode); SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination); SDL2.capture.stream = stream; }; var no_microphone = function(error) { }; SDL2.capture.silenceBuffer = SDL2.audioContext.createBuffer($0, $1, SDL2.audioContext.sampleRate); SDL2.capture.silenceBuffer.getChannelData(0).fill(0.0); var silence_callback = function() { SDL2.capture.currentCaptureBuffer = SDL2.capture.silenceBuffer; dynCall('vi', $2, [$3]); }; SDL2.capture.silenceTimer = setInterval(silence_callback, ($1 / SDL2.audioContext.sampleRate) * 1000); if ((navigator.mediaDevices !== undefined) && (navigator.mediaDevices.getUserMedia !== undefined)) { navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(have_microphone).catch(no_microphone); } else if (navigator.webkitGetUserMedia !== undefined) { navigator.webkitGetUserMedia({ audio: true, video: false }, have_microphone, no_microphone); } },
|
|
1154
|
+
314145: ($0, $1, $2, $3) => { var SDL2 = Module['SDL2']; SDL2.audio.scriptProcessorNode = SDL2.audioContext['createScriptProcessor']($1, 0, $0); SDL2.audio.scriptProcessorNode['onaudioprocess'] = function (e) { if ((SDL2 === undefined) || (SDL2.audio === undefined)) { return; } if (SDL2.audio.silenceTimer !== undefined) { clearInterval(SDL2.audio.silenceTimer); SDL2.audio.silenceTimer = undefined; SDL2.audio.silenceBuffer = undefined; } SDL2.audio.currentOutputBuffer = e['outputBuffer']; dynCall('vi', $2, [$3]); }; SDL2.audio.scriptProcessorNode['connect'](SDL2.audioContext['destination']); if (SDL2.audioContext.state === 'suspended') { SDL2.audio.silenceBuffer = SDL2.audioContext.createBuffer($0, $1, SDL2.audioContext.sampleRate); SDL2.audio.silenceBuffer.getChannelData(0).fill(0.0); var silence_callback = function() { if ((typeof navigator.userActivation) !== 'undefined') { if (navigator.userActivation.hasBeenActive) { SDL2.audioContext.resume(); } } SDL2.audio.currentOutputBuffer = SDL2.audio.silenceBuffer; dynCall('vi', $2, [$3]); SDL2.audio.currentOutputBuffer = undefined; }; SDL2.audio.silenceTimer = setInterval(silence_callback, ($1 / SDL2.audioContext.sampleRate) * 1000); } },
|
|
1155
|
+
315320: ($0, $1) => { var SDL2 = Module['SDL2']; var numChannels = SDL2.capture.currentCaptureBuffer.numberOfChannels; for (var c = 0; c < numChannels; ++c) { var channelData = SDL2.capture.currentCaptureBuffer.getChannelData(c); if (channelData.length != $1) { throw 'Web Audio capture buffer length mismatch! Destination size: ' + channelData.length + ' samples vs expected ' + $1 + ' samples!'; } if (numChannels == 1) { for (var j = 0; j < $1; ++j) { setValue($0 + (j * 4), channelData[j], 'float'); } } else { for (var j = 0; j < $1; ++j) { setValue($0 + (((j * numChannels) + c) * 4), channelData[j], 'float'); } } } },
|
|
1156
|
+
315925: ($0, $1) => { var SDL2 = Module['SDL2']; var buf = $0 >>> 2; var numChannels = SDL2.audio.currentOutputBuffer['numberOfChannels']; for (var c = 0; c < numChannels; ++c) { var channelData = SDL2.audio.currentOutputBuffer['getChannelData'](c); if (channelData.length != $1) { throw 'Web Audio output buffer length mismatch! Destination size: ' + channelData.length + ' samples vs expected ' + $1 + ' samples!'; } for (var j = 0; j < $1; ++j) { channelData[j] = HEAPF32[buf + (j*numChannels + c)]; } } },
|
|
1157
|
+
316414: ($0) => { var SDL2 = Module['SDL2']; if ($0) { if (SDL2.capture.silenceTimer !== undefined) { clearInterval(SDL2.capture.silenceTimer); } if (SDL2.capture.stream !== undefined) { var tracks = SDL2.capture.stream.getAudioTracks(); for (var i = 0; i < tracks.length; i++) { SDL2.capture.stream.removeTrack(tracks[i]); } } if (SDL2.capture.scriptProcessorNode !== undefined) { SDL2.capture.scriptProcessorNode.onaudioprocess = function(audioProcessingEvent) {}; SDL2.capture.scriptProcessorNode.disconnect(); } if (SDL2.capture.mediaStreamNode !== undefined) { SDL2.capture.mediaStreamNode.disconnect(); } SDL2.capture = undefined; } else { if (SDL2.audio.scriptProcessorNode != undefined) { SDL2.audio.scriptProcessorNode.disconnect(); } if (SDL2.audio.silenceTimer !== undefined) { clearInterval(SDL2.audio.silenceTimer); } SDL2.audio = undefined; } if ((SDL2.audioContext !== undefined) && (SDL2.audio === undefined) && (SDL2.capture === undefined)) { SDL2.audioContext.close(); SDL2.audioContext = undefined; } },
|
|
1158
|
+
317420: ($0, $1, $2) => { var w = $0; var h = $1; var pixels = $2; if (!Module['SDL2']) Module['SDL2'] = {}; var SDL2 = Module['SDL2']; if (SDL2.ctxCanvas !== Module['canvas']) { SDL2.ctx = Module['createContext'](Module['canvas'], false, true); SDL2.ctxCanvas = Module['canvas']; } if (SDL2.w !== w || SDL2.h !== h || SDL2.imageCtx !== SDL2.ctx) { SDL2.image = SDL2.ctx.createImageData(w, h); SDL2.w = w; SDL2.h = h; SDL2.imageCtx = SDL2.ctx; } var data = SDL2.image.data; var src = pixels / 4; var dst = 0; var num; if (typeof CanvasPixelArray !== 'undefined' && data instanceof CanvasPixelArray) { num = data.length; while (dst < num) { var val = HEAP32[src]; data[dst ] = val & 0xff; data[dst+1] = (val >> 8) & 0xff; data[dst+2] = (val >> 16) & 0xff; data[dst+3] = 0xff; src++; dst += 4; } } else { if (SDL2.data32Data !== data) { SDL2.data32 = new Int32Array(data.buffer); SDL2.data8 = new Uint8Array(data.buffer); SDL2.data32Data = data; } var data32 = SDL2.data32; num = data32.length; data32.set(HEAP32.subarray(src, src + num)); var data8 = SDL2.data8; var i = 3; var j = i + 4*num; if (num % 8 == 0) { while (i < j) { data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; data8[i] = 0xff; i = i + 4 | 0; } } else { while (i < j) { data8[i] = 0xff; i = i + 4 | 0; } } } SDL2.ctx.putImageData(SDL2.image, 0, 0); },
|
|
1159
|
+
318888: ($0, $1, $2, $3, $4) => { var w = $0; var h = $1; var hot_x = $2; var hot_y = $3; var pixels = $4; var canvas = document.createElement("canvas"); canvas.width = w; canvas.height = h; var ctx = canvas.getContext("2d"); var image = ctx.createImageData(w, h); var data = image.data; var src = pixels / 4; var dst = 0; var num; if (typeof CanvasPixelArray !== 'undefined' && data instanceof CanvasPixelArray) { num = data.length; while (dst < num) { var val = HEAP32[src]; data[dst ] = val & 0xff; data[dst+1] = (val >> 8) & 0xff; data[dst+2] = (val >> 16) & 0xff; data[dst+3] = (val >> 24) & 0xff; src++; dst += 4; } } else { var data32 = new Int32Array(data.buffer); num = data32.length; data32.set(HEAP32.subarray(src, src + num)); } ctx.putImageData(image, 0, 0); var url = hot_x === 0 && hot_y === 0 ? "url(" + canvas.toDataURL() + "), auto" : "url(" + canvas.toDataURL() + ") " + hot_x + " " + hot_y + ", auto"; var urlBuf = _malloc(url.length + 1); stringToUTF8(url, urlBuf, url.length + 1); return urlBuf; },
|
|
1160
|
+
319876: ($0) => { if (Module['canvas']) { Module['canvas'].style['cursor'] = UTF8ToString($0); } },
|
|
1161
|
+
319959: () => { if (Module['canvas']) { Module['canvas'].style['cursor'] = 'none'; } },
|
|
1162
|
+
320028: () => { return window.innerWidth; },
|
|
1163
|
+
320058: () => { return window.innerHeight; }
|
|
1145
1164
|
};
|
|
1146
1165
|
|
|
1147
1166
|
// end include: preamble.js
|
|
@@ -12876,6 +12895,8 @@ var _quitMgba = Module['_quitMgba'] = () => (_quitMgba = Module['_quitMgba'] = w
|
|
|
12876
12895
|
var _quickReload = Module['_quickReload'] = () => (_quickReload = Module['_quickReload'] = wasmExports['quickReload'])();
|
|
12877
12896
|
var _pauseGame = Module['_pauseGame'] = () => (_pauseGame = Module['_pauseGame'] = wasmExports['pauseGame'])();
|
|
12878
12897
|
var _resumeGame = Module['_resumeGame'] = () => (_resumeGame = Module['_resumeGame'] = wasmExports['resumeGame'])();
|
|
12898
|
+
var _pauseAudio = Module['_pauseAudio'] = () => (_pauseAudio = Module['_pauseAudio'] = wasmExports['pauseAudio'])();
|
|
12899
|
+
var _resumeAudio = Module['_resumeAudio'] = () => (_resumeAudio = Module['_resumeAudio'] = wasmExports['resumeAudio'])();
|
|
12879
12900
|
var _setEventEnable = Module['_setEventEnable'] = (a0) => (_setEventEnable = Module['_setEventEnable'] = wasmExports['setEventEnable'])(a0);
|
|
12880
12901
|
var _bindKey = Module['_bindKey'] = (a0, a1) => (_bindKey = Module['_bindKey'] = wasmExports['bindKey'])(a0, a1);
|
|
12881
12902
|
var _saveState = Module['_saveState'] = (a0) => (_saveState = Module['_saveState'] = wasmExports['saveState'])(a0);
|
|
@@ -12904,21 +12925,21 @@ var _emscripten_stack_set_limits = (a0, a1) => (_emscripten_stack_set_limits = w
|
|
|
12904
12925
|
var __emscripten_stack_restore = (a0) => (__emscripten_stack_restore = wasmExports['_emscripten_stack_restore'])(a0);
|
|
12905
12926
|
var __emscripten_stack_alloc = (a0) => (__emscripten_stack_alloc = wasmExports['_emscripten_stack_alloc'])(a0);
|
|
12906
12927
|
var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])();
|
|
12907
|
-
var _GBAInputInfo = Module['_GBAInputInfo'] =
|
|
12908
|
-
var _binaryName = Module['_binaryName'] =
|
|
12909
|
-
var _projectName = Module['_projectName'] =
|
|
12910
|
-
var _projectVersion = Module['_projectVersion'] =
|
|
12911
|
-
var _gitCommit = Module['_gitCommit'] =
|
|
12912
|
-
var _gitCommitShort = Module['_gitCommitShort'] =
|
|
12913
|
-
var _gitBranch = Module['_gitBranch'] =
|
|
12914
|
-
var _gitRevision = Module['_gitRevision'] =
|
|
12915
|
-
var _GBIORegisterNames = Module['_GBIORegisterNames'] =
|
|
12916
|
-
var _GBSavestateMagic = Module['_GBSavestateMagic'] =
|
|
12917
|
-
var _GBSavestateVersion = Module['_GBSavestateVersion'] =
|
|
12918
|
-
var _GBA_LUX_LEVELS = Module['_GBA_LUX_LEVELS'] =
|
|
12919
|
-
var _GBAVideoObjSizes = Module['_GBAVideoObjSizes'] =
|
|
12920
|
-
var _GBASavestateMagic = Module['_GBASavestateMagic'] =
|
|
12921
|
-
var _GBASavestateVersion = Module['_GBASavestateVersion'] =
|
|
12928
|
+
var _GBAInputInfo = Module['_GBAInputInfo'] = 122336;
|
|
12929
|
+
var _binaryName = Module['_binaryName'] = 198368;
|
|
12930
|
+
var _projectName = Module['_projectName'] = 198372;
|
|
12931
|
+
var _projectVersion = Module['_projectVersion'] = 198376;
|
|
12932
|
+
var _gitCommit = Module['_gitCommit'] = 198352;
|
|
12933
|
+
var _gitCommitShort = Module['_gitCommitShort'] = 198356;
|
|
12934
|
+
var _gitBranch = Module['_gitBranch'] = 198360;
|
|
12935
|
+
var _gitRevision = Module['_gitRevision'] = 198364;
|
|
12936
|
+
var _GBIORegisterNames = Module['_GBIORegisterNames'] = 60704;
|
|
12937
|
+
var _GBSavestateMagic = Module['_GBSavestateMagic'] = 75968;
|
|
12938
|
+
var _GBSavestateVersion = Module['_GBSavestateVersion'] = 75972;
|
|
12939
|
+
var _GBA_LUX_LEVELS = Module['_GBA_LUX_LEVELS'] = 105440;
|
|
12940
|
+
var _GBAVideoObjSizes = Module['_GBAVideoObjSizes'] = 149776;
|
|
12941
|
+
var _GBASavestateMagic = Module['_GBASavestateMagic'] = 149552;
|
|
12942
|
+
var _GBASavestateVersion = Module['_GBASavestateVersion'] = 149556;
|
|
12922
12943
|
function invoke_iiiii(index,a1,a2,a3,a4) {
|
|
12923
12944
|
var sp = stackSave();
|
|
12924
12945
|
try {
|
package/dist/mgba.wasm
CHANGED
|
Binary file
|