Эмуляция > Эмуляторы консолей 1-4 поколений
Покадровое сохранение скриншотов
(1/1)
2nd Channel:
Есть ли во Fceux или в каком-либо ином эмуляторе NES возможность покадрово и автоматически сохранять скриншоты?
Желателен эмулятор, в котором можно отключать фоны и спрайты
Ogr:
Пишешь видео с чего угодно, потом получившиеся видео сохраняешь по кадрам, вроде в virtual dab была такая функция. Чтобы не шакалилась, пишешь с максимальным битрейтом.
2nd Channel:
Не хочу возиться с такими костылями.
Как альтернатива, во FceuX можно понизить скорость до 1% и скринить. Но так долго и не совсем удобно (приходится постоянно жать кнопку скриншота, чтобы не пропустить очередной кадр).

В ZSnes, вроде была функция остановки эмуляции и перехода на следующий кадр на кнопку. Если нет автоматического сохранения, то хотя бы такой функционал устроил
Ogr:

--- Цитата: 2nd Channel от 13 Декабрь 2024, 02:04:09 ---Но так долго и не совсем удобно (приходится постоянно жать кнопку скриншота, чтобы не пропустить очередной кадр).
--- Конец цитаты ---
Можно сделать автоматическое нажатие при помощи программ для макросов.
2nd Channel:

--- Цитата: Ogr от 13 Декабрь 2024, 03:23:10 ---Можно сделать автоматическое нажатие при помощи программ для макросов.

--- Конец цитаты ---
Как ещё один вариант, да. Но лучше было бы, конечно, что-то более подходящее. Спасибо за советы
Sharpnull:
UPD: Я не заметил, что в Mesen можно сохранять в PNG сразу через Lua :) Вторая версия скрипта в SaveScreenshotsMesen_v2.lua.7z.
Mesen + Lua-скрипт
Создать в папке с ромом папку с именем рома с _s на конце, например, C:\test rom.nes создать папку C:\test rom.nes_s, там будут скриншоты. Запустить игру в Mesen (который новый), открыть Debug > Script Window, открыть скрипт SaveScreenshotsMesen_v2.lua, начнётся сразу сохранение кадров, если эмуляция не на паузе, можно включать и выключать Lua-скрипт.
В Mesen можно отключать фон и спрайты. Для FCEUX можно написать похожий скрипт.
UPD2: Для консолей, которые не поддерживает Mesen, можно сделать Lua-скрипт для BizHawk, там есть void client.screenshot([string path = nil]), string event.onframeend(nluafunc luaf, [string name = nil]), string gameinfo.getromname(), про полный путь до рома не знаю.
Mesen + Lua-скрипт + Python-скрипт
Создать в папке с ромом папку с именем рома с _s на конце, например, C:\test rom.nes создать папку C:\test rom.nes_s, там будут скриншоты. Запустить игру в Mesen (который новый), открыть Debug > Script Window, открыть скрипт SaveScreenshotsMesen.lua, начнётся сразу сохранение кадров, если эмуляция не на паузе, можно включать и выключать Lua-скрипт. Скриншоты сохраняются байтами RGB (24 бита), для преобразования в PNG я написал скрипт на Python 3 + Pillow (он же PIL, установка и обновление через командную строку от админа pip install -U pillow), в rgb_to_png.py передать один аргумент на .bin скриншот, для преобразования всех скриншотов положить rgb_to_png.py в папку со скриншотами и запустить без аргументов.
rgb_to_png.py предполагает, что скриншот 256x240, в Mesen я выбирал без обрезки кадра, с обрезкой и для других эмулируемых консолях разрешение измените в rgb_to_png.py, сейчас задано как (256, 240). В Mesen можно отключать фон и спрайты.
2nd Channel:

--- Цитата: Sharpnull от 13 Декабрь 2024, 06:13:18 ---UPD: Я не заметил, что в Mesen можно сохранять в PNG сразу через Lua :) Вторая версия скрипта в SaveScreenshotsMesen_v2.lua.7z.
Mesen + Lua-скрипт
Создать в папке с ромом папку с именем рома с _s на конце, например, C:\test rom.nes создать папку C:\test rom.nes_s, там будут скриншоты. Запустить игру в Mesen (который новый), открыть Debug > Script Window, открыть скрипт SaveScreenshotsMesen_v2.lua, начнётся сразу сохранение кадров, если эмуляция не на паузе, можно включать и выключать Lua-скрипт.
В Mesen можно отключать фон и спрайты. Для FCEUX можно написать похожий скрипт.
UPD2: Для консолей, которые не поддерживает Mesen, можно сделать Lua-скрипт для BizHawk, там есть void client.screenshot([string path = nil]), string event.onframeend(nluafunc luaf, [string name = nil]), string gameinfo.getromname(), про полный путь до рома не знаю.
Mesen + Lua-скрипт + Python-скрипт
Создать в папке с ромом папку с именем рома с _s на конце, например, C:\test rom.nes создать папку C:\test rom.nes_s, там будут скриншоты. Запустить игру в Mesen (который новый), открыть Debug > Script Window, открыть скрипт SaveScreenshotsMesen.lua, начнётся сразу сохранение кадров, если эмуляция не на паузе, можно включать и выключать Lua-скрипт. Скриншоты сохраняются байтами RGB (24 бита), для преобразования в PNG я написал скрипт на Python 3 + Pillow (он же PIL, установка и обновление через командную строку от админа pip install -U pillow), в rgb_to_png.py передать один аргумент на .bin скриншот, для преобразования всех скриншотов положить rgb_to_png.py в папку со скриншотами и запустить без аргументов.
rgb_to_png.py предполагает, что скриншот 256x240, в Mesen я выбирал без обрезки кадра, с обрезкой и для других эмулируемых консолях разрешение измените в rgb_to_png.py, сейчас задано как (256, 240). В Mesen можно отключать фон и спрайты.
--- Конец цитаты ---
Благодарю. Разобрался (проверил только 2-ой вариант, первый для меня сложнее).
Только понадобилось здесь галочку поставить.


Всё работает
Sharpnull:

--- Цитата: 2nd Channel от 13 Декабрь 2024, 08:29:26 ---проверил только 2-ой вариант, первый для меня сложнее
--- Конец цитаты ---
1-ю версию не нужно использовать, делает тоже самое, но лишние действия, оставил для информации. Забыл, что ставил Allow acces to I/O and OS functions. Имя скриншота на основе номера кадра, поэтому при перемотки назад или повторном прохождении будет перезапись. Номер кадра можно отобразить через настройку Preferences > Advanced > Show frame counter.
Навигация
Главная страница сообщений

Перейти к полной версии