SHOW:
|
|
- or go back to the newest paste.
1 | dofile("tablehandling.lua") | |
2 | ||
3 | oldrecord = {} | |
4 | newrecord = {} | |
5 | ||
6 | function nothingpressed() | |
7 | local k = joypad.get(1) | |
8 | return not(k.Left or k.Right or k.Up or k.Down or k.A or k.B or k.X or k.Y or k.L or k.R or k.Start or k.Select) | |
9 | end | |
10 | ||
11 | mode = "recording" | |
12 | ||
13 | --ENTER BIG OFFSETS MANUALLY HERE-- | |
14 | offset = 0 | |
15 | --ENTER BIG OFFSETS MANUALLY HERE-- | |
16 | ||
17 | while(true) do | |
18 | emu.frameadvance() | |
19 | keys = input.get() | |
20 | if keys["R"] == true then | |
21 | mode = "replay" | |
22 | end | |
23 | if keys["F11"] then | |
24 | table.save(oldrecord,"recorded.txt") | |
25 | gui.text(0,100,"current record saved to recorded.txt") | |
26 | end | |
27 | if keys["F12"] then | |
28 | oldrecord = table.load("recorded.txt") | |
29 | gui.text(0,105,"loaded record from recorded.txt") | |
30 | end | |
31 | --note: you will see the offset change one | |
32 | --frame later than you expect. | |
33 | if keys["NumberPadPlus"] then | |
34 | offset = offset + 1 | |
35 | end | |
36 | if keys["NumberPadMinus"] then | |
37 | offset = offset - 1 | |
38 | end | |
39 | if keys["NumberPad0"] then | |
40 | offset = 0 | |
41 | end | |
42 | -- "recording" mode records controller data (for first controller) | |
43 | if mode == "recording" then | |
44 | gui.text(180,10,"offset: " .. tostring(offset)) | |
45 | gui.text(180,0,"recording, press R to switch") | |
46 | cf = emu.framecount() | |
47 | ||
48 | if oldrecord[cf] == nil then -- Check bounds | |
49 | oldrecord[cf] = {} -- | |
50 | end | |
51 | oldrecord[cf] = joypad.get(1) -- Log input to the table every frame | |
52 | end | |
53 | -- "replay" mode does the following: | |
54 | -- _if the emulator is in "rerecording" mode, it will input | |
55 | -- the previously recorded keys | |
56 | -- _you can specify an offset for that by pressing | |
57 | -- numpad+, numpad-, or numpad0_ | |
58 | -- or you can override it by entering some new input. | |
59 | -- _if you want no input in the next frame, | |
60 | -- use numpad* | |
61 | if mode == "replay" then | |
62 | gui.text(180,0,"replay mode (old minus new)") | |
63 | cf = emu.framecount() -- Pause the game | |
64 | newrecord[cf] = {} -- Useless | |
65 | gui.text(180,10,"offset: " .. tostring(offset)) -- Display offset | |
66 | keys = input.get() | |
67 | oldrecord[cf] = joypad.get(1) -- Load table of keyboard keys pressed | |
68 | if oldrecord[cf+offset] ~= nil then -- If current input is within the bounds of the movie | |
69 | --if not nothingpressed() and keys["NumberPadStar"] then -- If something on the controller is pressed and * is pressed... | |
70 | if nothingpressed() and not keys["NumberPadStar"] then -- If nothing is pressed | |
71 | --joypad.set(oldrecord[cf+offset],1) | |
72 | gui.text(0, 0, "RECORDED input used from frame " .. tostring(cf+offset)) -- Do nothing new | |
73 | - | else if not nothingpressed() and not keys["NumberPadStar"] then -- If something is pressed, but not * |
73 | + | elseif not nothingpressed() and not keys["NumberPadStar"] then -- If something is pressed, but not * |
74 | joypad.set(oldrecord[cf+offset],1) | |
75 | gui.text(0, 0, "MANUAL input used") | |
76 | - | else if keys["NumberPadStar"] then |
76 | + | elseif keys["NumberPadStar"] then |
77 | joypad.set(oldrecord[cf+offset],1) | |
78 | gui.text(0, 0, "MANUAL input used") | |
79 | else | |
80 | gui.text(0, 0, "Stop that") | |
81 | end | |
82 | else | |
83 | gui.text(0,0,"no controller data available") | |
84 | end | |
85 | end | |
86 | end |