async function load() { const mod = await Scheme.load_main("game.wasm", {}, { window: { get() { return window; }, innerWidth() { return window.innerWidth; }, innerHeight() { return window.innerHeight; }, requestAnimationFrame(f) { window.requestAnimationFrame(f); }, setTimeout(f, delay) { window.setTimeout(f, delay); } }, document: { get() { return document; }, body() { return document.body; }, getElementById: Document.prototype.getElementById.bind(document), createTextNode: Document.prototype.createTextNode.bind(document), createElement: Document.prototype.createElement.bind(document) }, element: { value(elem) { return elem.value; }, setValue(elem, value) { elem.value = value; }, setWidth(elem, width) { elem.width = width; }, setHeight(elem, height) { elem.height = height; }, appendChild(parent, child) { return parent.appendChild(child); }, setAttribute(elem, name, value) { elem.setAttribute(name, value); }, removeAttribute(elem, name) { elem.removeAttribute(name); }, remove(elem) { elem.remove(); }, replaceWith(oldElem, newElem) { oldElem.replaceWith(newElem); }, addEventListener(elem, name, f) { elem.addEventListener(name, f); }, removeEventListener(elem, name, f) { elem.removeEventListener(name, f); }, clone(elem) { return elem.cloneNode(); } }, event: { preventDefault(event) { event.preventDefault(); }, keyboardCode(event) { return event.code; } }, canvas: { getContext(elem, type) { return elem.getContext(type); }, setFillColor(context, color) { context.fillStyle = color; }, setFont(context, font) { context.font = font; }, setTextAlign(context, align) { context.textAlign = align; }, clearRect(context, x, y, w, h) { context.clearRect(x, y, w, h); }, fillRect(context, x, y, w, h) { context.fillRect(x, y, w, h); }, fillText(context, text, x, y) { context.fillText(text, x, y); }, drawImage(context, image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) { context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight); }, setScale(context, sx, sy) { context.scale(sx, sy); }, setTransform(context, a, b, c, d, e, f) { context.setTransform(a, b, c, d, e, f); }, setImageSmoothingEnabled(context, enabled) { context.imageSmoothingEnabled = (enabled == 1); } }, audio: { new(src) { return new Audio(src); }, play(audio) { audio.play(); }, pause(audio) { audio.pause(); }, volume(audio) { return audio.volume; }, setVolume(audio, vol) { audio.volume = vol; }, setLoop(audio, loop) { audio.loop = (loop == 1); }, seek(audio, time) { audio.currentTime = time; } }, image: { new(src) { const img = new Image(); img.src = src; return img; } } }); } window.addEventListener("load", load);