View difference between Paste ID: av6KHXZC and FEA9U0ax
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