mirror of
https://github.com/exoticorn/microw8.git
synced 2026-01-20 11:16:42 +01:00
sync sound registers to sound thread
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
let U8 = (...a) => new Uint8Array(...a);
|
||||
class APU extends AudioWorkletProcessor {
|
||||
constructor() {
|
||||
super();
|
||||
this.sampleIndex = 0;
|
||||
this.port.onmessage = (ev) => {
|
||||
this.load(ev.data[0], ev.data[1]);
|
||||
if(this.memory) {
|
||||
U8(this.memory.buffer, 80, 32).set(U8(ev.data));
|
||||
} else {
|
||||
this.load(ev.data[0], ev.data[1]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -38,6 +43,8 @@ class APU extends AudioWorkletProcessor {
|
||||
|
||||
let instance = await instantiate(data);
|
||||
|
||||
this.memory = memory;
|
||||
|
||||
this.snd = instance.exports.snd;
|
||||
|
||||
this.port.postMessage(2);
|
||||
|
||||
@@ -8,8 +8,8 @@ class AudioNode extends AudioWorkletNode {
|
||||
}
|
||||
}
|
||||
|
||||
let U8 = (d) => new Uint8Array(d);
|
||||
let U32 = (d) => new Uint32Array(d);
|
||||
let U8 = (...a) => new Uint8Array(...a);
|
||||
let U32 = (...a) => new Uint32Array(...a);
|
||||
|
||||
export default function MicroW8(screen, config = {}) {
|
||||
if(!config.setMessage) {
|
||||
@@ -272,8 +272,12 @@ export default function MicroW8(screen, config = {}) {
|
||||
instance.exports.upd();
|
||||
}
|
||||
platform_instance.exports.endFrame();
|
||||
|
||||
let soundRegisters = new ArrayBuffer(32);
|
||||
U8(soundRegisters).set(U8(memory.buffer, 80, 32));
|
||||
audioNode.port.postMessage(soundRegisters, [soundRegisters]);
|
||||
|
||||
let palette = U32(memory.buffer.slice(0x13000, 0x13000 + 1024));
|
||||
let palette = U32(memory.buffer, 0x13000, 1024);
|
||||
for (let i = 0; i < 320 * 240; ++i) {
|
||||
buffer[i] = palette[memU8[i + 120]] | 0xff000000;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user