Added a Rewinder lua script by Jonathan Blow
This commit is contained in:
parent
a29bbff104
commit
f4bd60246a
|
@ -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;
|
Loading…
Reference in New Issue