fix input drops

This commit is contained in:
HorizonCode 2022-08-11 16:23:52 +02:00
parent c4978fa9a2
commit 475ad8955d

19
app.js
View File

@ -4,6 +4,8 @@ const path = require("path");
const fs = require("fs");
let lastFrame = "";
let emulator;
let currentKey = "";
let keyCooldown = 0;
const mainHTML = fs.readFileSync(path.join(__dirname, "html", "gb.html"), "utf8");
const KEYMAP = {
RIGHT: 0,
@ -25,10 +27,15 @@ async function run() {
path: "./rom.gb",
interval: 16.6666667,
onFrame: function(frame) {
if (lastFrame !== frame) {
lastFrame = frame;
if (currentKey !== "") {
emulator.gameboy.pressKey(currentKey);
keyCooldown--;
if (keyCooldown <= 0) {
currentKey = "";
}
}
lastFrame = frame;
}
});
fastify.get("/", async(request, reply) => {
@ -43,8 +50,12 @@ async function run() {
fastify.get("/control", async(request, reply) => {
const button = request.query.button;
if (button) {
const mappedButton = KEYMAP[button.toUpperCase()];
if (mappedButton) emulator.pressKeys(emulator.gameboy, [mappedButton]);
if (keyCooldown > 0)
return;
if (KEYMAP[button]) {
currentKey = button;
keyCooldown = 10;
}
}
});