Adjustments for use in the web frontend
This commit is contained in:
parent
8ae8980fc8
commit
4f0b889b74
|
@ -1,7 +1,5 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
//////////////////////////////////// Audio ////////////////////////////////////
|
|
||||||
|
|
||||||
// Dedicated audio output processor
|
// Dedicated audio output processor
|
||||||
class Audio extends AudioWorkletProcessor {
|
class Audio extends AudioWorkletProcessor {
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
let Constants = {
|
"use strict";
|
||||||
|
export default {
|
||||||
|
|
||||||
// Core
|
// Core
|
||||||
VB: {
|
VB: {
|
||||||
|
@ -85,5 +86,3 @@ let Constants = {
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export { Constants };
|
|
||||||
|
|
37
web/Core.js
37
web/Core.js
|
@ -1,5 +1,5 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
import { Constants } from "./Constants.js";
|
import Constants from /***/"./Constants.js";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -258,6 +258,41 @@ new class Core {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Attempt to produce a ROM from an ISX debugger file
|
||||||
|
fromISX(message) {
|
||||||
|
|
||||||
|
// Transfer the input data into WebAssembly memory
|
||||||
|
let input = new Uint8Array(message.data);
|
||||||
|
let inPtr = this.Realloc(0, input.length);
|
||||||
|
let inMem = new Uint8Array(this.memory.buffer, inPtr, input.length);
|
||||||
|
for (let x = 0; x < input.length; x++)
|
||||||
|
inMem[x] = input[x];
|
||||||
|
|
||||||
|
// Attempt to decode the ISX file as a ROM
|
||||||
|
let outPtr = this.FromISX(inPtr, input.length);
|
||||||
|
this.Realloc(inPtr, 0);
|
||||||
|
|
||||||
|
// The data is not an ISX file
|
||||||
|
if (outPtr == 0) {
|
||||||
|
this.dom.postMessage({ promised: true, data: null });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transfer the decoded ROM from WebAssembly memory
|
||||||
|
let output = new Uint8Array(this.GetISXLength(outPtr));
|
||||||
|
let outMem = new Uint8Array(this.memory.buffer,
|
||||||
|
this.GetISXROM(outPtr), output.length);
|
||||||
|
for (let x = 0; x < output.length; x++)
|
||||||
|
output[x] = outMem[x];
|
||||||
|
this.Realloc(outPtr, 0);
|
||||||
|
|
||||||
|
// Notify DOM thread
|
||||||
|
this.dom.postMessage({
|
||||||
|
promised: true,
|
||||||
|
data : output.buffer
|
||||||
|
}, [ output.buffer ]);
|
||||||
|
}
|
||||||
|
|
||||||
// Specify anaglyph colors
|
// Specify anaglyph colors
|
||||||
setAnaglyph(message) {
|
setAnaglyph(message) {
|
||||||
this.SetAnaglyph(message.sim, message.left, message.right);
|
this.SetAnaglyph(message.sim, message.left, message.right);
|
||||||
|
|
26
web/VB.js
26
web/VB.js
|
@ -1,5 +1,5 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
import { Constants } from "./Constants.js";
|
import Constants from /**/"./Constants.js";
|
||||||
|
|
||||||
// Instantiation guard
|
// Instantiation guard
|
||||||
const GUARD = Symbol();
|
const GUARD = Symbol();
|
||||||
|
@ -864,6 +864,28 @@ class VB {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Decode an ISX debugger file to a Virtual Boy ROM
|
||||||
|
async fromISX(data) {
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
if (data instanceof ArrayBuffer)
|
||||||
|
data = new Uint8Array(data);
|
||||||
|
if (
|
||||||
|
!(data instanceof Uint8Array) &&
|
||||||
|
!(data instanceof Uint8ClampedArray)
|
||||||
|
) data = Uint8Array.from(data);
|
||||||
|
|
||||||
|
// Send the memory to the core
|
||||||
|
data = data.slice();
|
||||||
|
let response = await this.#toCore({
|
||||||
|
command : "fromISX",
|
||||||
|
promised : true,
|
||||||
|
data : data.buffer,
|
||||||
|
transfers: [ data.buffer ]
|
||||||
|
});
|
||||||
|
return response.data == null ? null : new Uint8Array(response.data);
|
||||||
|
}
|
||||||
|
|
||||||
// Suspend automatic emulation
|
// Suspend automatic emulation
|
||||||
async suspend() {
|
async suspend() {
|
||||||
|
|
||||||
|
@ -932,4 +954,4 @@ class VB {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export { VB };
|
export default VB;
|
||||||
|
|
Loading…
Reference in New Issue