fork download
  1.  
  2. require"gd" --画像を保存するため
  3. reset_count = 0 --繰り返し回数
  4. reset_max = 100 --最大繰り返し回数
  5. thread_count = 300 --何フレーム後の画像を保存するか
  6. start = 0 --スタートをしたフレーム
  7. state = savestate.create() --ステートセーブを作成
  8. flag = 0 --やり直しの状態を管理するフラグ
  9.  
  10. vba.registerafter( function()
  11. if flag == 0 then
  12. print("end")
  13. savestate.load(state)--やり直し開始であれば
  14. flag = 1 --フラグを1に進める
  15. elseif flag == 1 then --フラグが1であれば
  16. --1フレーム進めた状態をSSする
  17. savestate.save(state)
  18. flag = 2 --フラグを2に進める
  19. --セーブステートをしたフレーム数
  20. start = emu.framecount()
  21. end
  22. end)
  23.  
  24. while true do
  25. if flag == 2 then --待ち中であれば、Aを押し続ける
  26. joypad.set(1,{A=true})
  27. --現在のフレーム - SSフレームが基準のフレーム数を超えたら
  28. if emu.framecount() - start >= thread_count then
  29. --スクリーンショットを取る
  30. local gdstr = gui.gdscreenshot()
  31. --スクリーンショットの名前と保存先
  32. gd.createFromGdStr(gdstr):png("saveimage/"..start..".png")
  33. flag = 0 --やり直し
  34. --やり直し回数を1増やす
  35. reset_count = reset_count + 1
  36. end
  37. end
  38. if reset_count == reset_max then --やり直し回数が最大繰り返し回数になったら終了
  39. print("end") --終了したことを示す
  40. break --無限ループから脱出
  41. end
  42. emu.frameadvance() --1フレーム進める
  43.  
  44. end
  45. emu.pause() --エミュレーターを一時停止
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty