From cceb5afae840861a29165e5368a967ed56d59d37 Mon Sep 17 00:00:00 2001 From: Christian Hagenest Date: Sat, 2 Apr 2022 17:32:51 +0200 Subject: [PATCH] add save and load state functions to nes.embed.js --- nes-embed.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/nes-embed.js b/nes-embed.js index 27aabd5..bec024b 100644 --- a/nes-embed.js +++ b/nes-embed.js @@ -130,3 +130,26 @@ function nes_load_url(canvas_id, path){ document.addEventListener('keydown', (event) => {keyboard(nes.buttonDown, event)}); document.addEventListener('keyup', (event) => {keyboard(nes.buttonUp, event)}); + +function saveState(){ + try{ + var saveData = JSON.stringify(nes.toJSON()); + localStorage.setItem(romName, saveData); + }catch(oException){ + if(oException.name == 'QuotaExceededError'){ + console.log('localStorage out of memory'); + localStorage.clear(); + localStorage.setItem(calcMD5(rompath), saveData); + } + } +} + +function loadState(){ + var saveData = localStorage.getItem(romName); + if( saveData == null ) { + console.log("nothing to load"); + return; +} + var decodedData = JSON.parse(saveData); + nes.fromJSON(decodedData); +} \ No newline at end of file