require"gd" --画像を保存するため reset_count = 0 --繰り返し回数 reset_max = 100 --最大繰り返し回数 thread_count = 300 --何フレーム後の画像を保存するか start = 0 --スタートをしたフレーム state = savestate.create() --ステートセーブを作成 flag = 0 --やり直しの状態を管理するフラグ vba.registerafter( function() if flag == 0 then print("end") savestate.load(state)--やり直し開始であれば flag = 1 --フラグを1に進める elseif flag == 1 then --フラグが1であれば --1フレーム進めた状態をSSする savestate.save(state) flag = 2 --フラグを2に進める --セーブステートをしたフレーム数 start = emu.framecount() end end) while true do if flag == 2 then --待ち中であれば、Aを押し続ける joypad.set(1,{A=true}) --現在のフレーム - SSフレームが基準のフレーム数を超えたら if emu.framecount() - start >= thread_count then --スクリーンショットを取る local gdstr = gui.gdscreenshot() --スクリーンショットの名前と保存先 gd.createFromGdStr(gdstr):png("saveimage/"..start..".png") flag = 0 --やり直し --やり直し回数を1増やす reset_count = reset_count + 1 end end if reset_count == reset_max then --やり直し回数が最大繰り返し回数になったら終了 print("end") --終了したことを示す break --無限ループから脱出 end emu.frameadvance() --1フレーム進める end emu.pause() --エミュレーターを一時停止