implement upkr unpacker in wasm, use to load compressed base

This commit is contained in:
2021-11-20 23:36:16 +01:00
parent f7e3202c39
commit 93b2bb60bd
6 changed files with 149 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
import loaderUrl from "data-url:../../platform/loader.wasm";
import platformUrl from "data-url:../../platform/platform.wasm";
import baseUrl from "data-url:../../uw8-tool/base1.wasm";
import baseUrl from "data-url:../../uw8-tool/base.upk";
async function loadWasm(url, imports) {
let wasm_module = await (await fetch(url)).arrayBuffer();
@@ -66,9 +66,13 @@ async function runModule(data) {
let loadMem = loaderImport.env.memory.buffer;
let loader = await loadWasm(loaderUrl, loaderImport);
let baseModule = await (await fetch(baseUrl)).arrayBuffer();
let packedBaseModule = await (await fetch(baseUrl)).arrayBuffer();
if (dataU8Array[0] != 0) {
new Uint8Array(loadMem).set(new Uint8Array(packedBaseModule));
let baseEnd = loader.exports.uncompress(0, 0x84000);
let baseModule = loadMem.slice(0x84000, baseEnd);
new Uint8Array(loadMem).set(dataU8Array);
new Uint8Array(loadMem).set(new Uint8Array(baseModule), data.byteLength);