From f4bd60246aa66b47afb300b0a7a5bdb16bf6b2d3 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 2 Aug 2009 00:37:19 +0000 Subject: [PATCH] Added a Rewinder lua script by Jonathan Blow --- output/luaScripts/Rewinder.lua | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 output/luaScripts/Rewinder.lua diff --git a/output/luaScripts/Rewinder.lua b/output/luaScripts/Rewinder.lua new file mode 100644 index 00000000..c9257f20 --- /dev/null +++ b/output/luaScripts/Rewinder.lua @@ -0,0 +1,71 @@ +-- NES Braidulator VERSION 1 +--(C) Antony Lavelle 2009 got_wot@hotmail.com http://www.the-exp.net +-- A Lua script that allows 'Braid' style time reversal for Nes games being run in FCEUX +--'Braid' is copyright Jonathan Blow, who is not affiliated with this script, but you should all buy his game because it's ace. +--This is my first ever time scripting in Lua, so if you can improve on this idea/code please by all means do and redistribute it, just please be nice and include original credits along with your own :) + + + +--Change these settings to adjust options + + +--Which key you would like to function as the "rewind key" + +local rewindKey = 'select' + + +--How much rewind power would you like? (The higher the number the further back in time you can go, but more computer memory is used up) +--Do not set to 0! + +local saveMax = 1000; + + + + +--The stuff below is for more advanced users, enter at your own peril! + + + +local saveArray = {};--the Array in which the save states are stored +local saveCount = 1;--used for finding which array position to cycle through +local save; -- the variable used for storing the save state +local rewindCount = 0;--this stops you looping back around the array if theres nothing at the end +local savePreventBuffer = 1;--Used for more control over when save states will be saved, not really used in this version much. +while (true) do + savePreventBuffer = savePreventBuffer-1; + if savePreventBuffer==0 then + savePreventBuffer = 1; + end; + joyput = joypad.read(1); + if joyput[rewindKey] then + savePreventBuffer = 5; + if rewindCount==0 then + --makes sure you can't go back too far could also include other things in here, left empty for now. + else + savestate.load(saveArray[saveCount]); + saveCount = saveCount-1; + rewindCount = rewindCount-1; + if saveCount==0 then + saveCount = saveMax-1; + end; + end; + end; + if savePreventBuffer==1 then + gui.text(80,15,""); + saveCount=saveCount+1; + if saveCount==saveMax then + saveCount = 1; + end + rewindCount = rewindCount+1; + if rewindCount==saveMax-1 then + rewindCount = saveMax-2; + end; + save = savestate.create(); + savestate.save(save); + saveArray[saveCount] = save; + end; + local HUDMATH = (math.ceil((100/saveMax)*rewindCount));--Making the rewind time a percentage. + local HUDTEXT = "REWIND POWER: ".. HUDMATH .."%"; + gui.text(80,5,HUDTEXT);--Displaying the time onscreen. + FCEU.frameadvance(); +end;