From 893158e136b14d1f6f40b700b5ed31652874a3f5 Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Sun, 17 Apr 2022 12:26:01 +0200 Subject: [PATCH] use setTimeout instead of requestAnimationFrame for 60 fps update --- web/src/microw8.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/web/src/microw8.js b/web/src/microw8.js index 56c713c..0c80e38 100644 --- a/web/src/microw8.js +++ b/web/src/microw8.js @@ -256,9 +256,8 @@ export default function MicroW8(screen, config = {}) { } try { - let now = Date.now(); let restart = false; - if (now >= nextFrame && !isPaused) { + if (!isPaused) { let gamepads = navigator.getGamepads(); let gamepad = 0; for (let i = 0; i < 4; ++i) { @@ -286,7 +285,7 @@ export default function MicroW8(screen, config = {}) { } let u32Mem = U32(memory.buffer); - u32Mem[16] = now - startTime; + u32Mem[16] = Date.now() - startTime; u32Mem[17] = pad | gamepad; if(instance.exports.upd) { instance.exports.upd(); @@ -302,13 +301,14 @@ export default function MicroW8(screen, config = {}) { buffer[i] = palette[memU8[i + 120]] | 0xff000000; } canvasCtx.putImageData(imageData, 0, 0); - nextFrame = Math.max(nextFrame + timePerFrame, now); } + let now = Date.now(); + nextFrame = Math.max(nextFrame + timePerFrame, now); if (restart) { runModule(currentData); } else { - window.requestAnimationFrame(mainloop); + window.setTimeout(mainloop, Math.round(nextFrame - now)) } } catch (err) { config.setMessage(cartridgeSize, err.toString());