From b3a8512129d84c2375b8250ca7bb16606aab9136 Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Fri, 7 Apr 2023 17:08:04 +0200 Subject: [PATCH] update frame pacing calculation in web runtime fixes carts running too slow in chrome --- web/src/microw8.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/web/src/microw8.js b/web/src/microw8.js index dcdc845..d457702 100644 --- a/web/src/microw8.js +++ b/web/src/microw8.js @@ -274,7 +274,7 @@ export default function MicroW8(screen, config = {}) { try { let restart = false; - let thisFrame; + let nextFrame = 0; if (!isPaused) { let gamepads = navigator.getGamepads(); let gamepad = 0; @@ -321,13 +321,12 @@ export default function MicroW8(screen, config = {}) { } canvasCtx.putImageData(imageData, 0, 0); - let timeOffset = ((time * 6) % 100 - 50) / 6; - thisFrame = startTime + time - timeOffset / 8; - } else { - thisFrame = Date.now(); + let thisFrame = Math.floor(time * 6 / 100); + let timeOffset = time - thisFrame * 100 / 6; + nextFrame = Math.ceil(startTime + (thisFrame + 1) * 100 / 6 + Math.min(4, timeOffset)); } let now = Date.now(); - let nextFrame = Math.max(thisFrame + timePerFrame, now); + nextFrame = Math.max(nextFrame, now); if (restart) { runModule(currentData);