--local inspect = require("inspect")
local char = string.char
local movie_loaded = false
local handle = nil
local frame = 0
local playerKeys = {
{"right", "left", "down", "up", "start", "select", "B", "A"},
{"right", "left", "down", "up", "start", "select", "B", "A"}
}
function writeFrame()
local input = {}
input[1] = joypad.get(1)
input[2] = joypad.get(2)
local chunk = {0, 0}
for i = 1, 2 do
for k = 7, 0, -1 do
local key = playerKeys[i][k + 1]
if input[i][key] == true then
chunk[i] = bit.bor(chunk[i], bit.lshift(1, k))
end
end
handle:write(char(chunk[i]))
end
end
emu.speedmode("turbo")
while (true) do
if movie.active() == true then
if movie_loaded == false then
movie.playbeginning()
local movie_filename = movie.getname()
local output_filename = string.sub(movie_filename, 0, #movie_filename - 4) .. ".r08"
print("Writing to " .. output_filename .. "...")
handle = io.open(output_filename, "wb+")
if (handle == nil) then
print("Error opening dump file!")
else
movie_loaded = true
emu.unpause()
end
end
if movie.framecount() > 0 and movie.mode() ~= "finished" and emu.lagged() == false then
writeFrame();
frame = frame + 1;
end
end
if movie_loaded == true and movie.mode() == "finished" then
handle:close()
print("DONE Frames written: "..tostring(frame))
movie_loaded = false
frame = 0
movie.stop()
emu.pause()
end
emu.frameadvance();
end