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