Автор Тема: Кто поможет вытащить спрайты из SNES?  (Прочитано 1264 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DMI3Y

  • Пользователь
  • Сообщений: 4
  • Пол: Мужской
  • Space Ranger
    • ВКонтакте
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« : 20 Октябрь 2020, 01:03:13 »
Нужно из этой игры Joe and Mac 2: Lost in the Tropics вытащить финального босса, в спрайтах. Кто поможет? :? Или подскажите какой прогой пользоваться. На сайтах такого спрайта нет, всё перерыл

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #1 : 20 Октябрь 2020, 06:40:27 »
Открываете Mesen-S (или другой эмулятор как bsnes-plus), доходите до босса, открываете окно Debug -> Sprite Viewer: Ctrl+S для сохранения всех спрайтов на экране, так делаете для каждого нужного кадра. Там есть Lua-скрипты, что возможно поможет сохранить все кадры.

Добавлено позже:
Знаю ещё два метода:
* Правильный и очевидный - изучить код, чтобы узнать структуры данных и т. п. Будут получены палитры, тайлы, карты (tilemap).
* Автоматизированный способ описанный мной выше. Требует некоторых знаний программирования.
Отключить в эмуляторе фоны (в Mesen - Options > Video > Advanced: Hide background layer 0/1/2/3), если так неудобно играть, то можно записать геймплей без отключения фонов (Mesen - Tools > Movies > Record) и после воспроизвести (Play) с отключёнными фонами. Записать lossless (без потерь) видео средствами эмулятора (а не дурацким Bandicam и т. п.) в месте с нужными спрайтами (Mesen - Tools > Video Recorder > Record: Camstudio). С помощью ffmpeg нарезать видео на кадры (PNG). С помощью Python и библиотеки PIL (pillow) найти все спрайты на кадрах, используя какой-нибудь метод "заливки" (обход графа), чтобы отделить связанные пиксели от сплошного фона. Позже удалить дубликаты спрайтов.
Из минусов: спрайты могут быть наложены (главный герой + босс, например), тогда они не подойдут или придётся вручную удалять. Из плюсов: в конце получим готовые спрайты в отдельных файлах.
« Последнее редактирование: 20 Октябрь 2020, 20:25:51 от paul_met »

Онлайн Witch

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #2 : 20 Октябрь 2020, 12:35:10 »
А есть сейв перед боссом? А то не хочется проходить всю игру.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #3 : 20 Октябрь 2020, 18:17:57 »
А есть сейв перед боссом?
Зачем, если savestate несовместимы между эмуляторами и версиями.
Введите пароль MHDQ FDPS NJTP BGFB и GG читы 6DC4-3D64 (Invincibility), B9C1-3467 (Infinite Lives Player 1). Выйти из деревни, идти вниз и влево, потом линейно минут 10.

Онлайн Witch

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #4 : 20 Октябрь 2020, 19:36:39 »
С неуязвимостью не пускают к боссам, а если её отключить у меня реакция уже не та пройти несколько динозавров подряд.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5144
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #5 : 20 Октябрь 2020, 20:45:05 »
С неуязвимостью не пускают к боссам
Вот это поворот. Я в Mesen-S DevWin 0.4.0.66 использовал этот пароль и именно эти читы, чтобы пройти до последнего босса.

Онлайн Witch

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #6 : 20 Октябрь 2020, 20:47:50 »
Может читы не полностью работают из-за конкретного эмулятора snes9x-1.53-win32-x64?

Оффлайн DMI3Y

  • Пользователь
  • Сообщений: 4
  • Пол: Мужской
  • Space Ranger
    • ВКонтакте
    • Просмотр профиля
Кто поможет вытащить спрайты из SNES?
« Ответ #7 : 21 Октябрь 2020, 11:19:40 »
Открываете Mesen-S (или другой эмулятор как bsnes-plus), доходите до босса, открываете окно Debug -> Sprite Viewer: Ctrl+S для сохранения всех спрайтов на экране, так делаете для каждого нужного кадра. Там есть Lua-скрипты, что возможно поможет сохранить все кадры.

Добавлено позже:
Знаю ещё два метода:
* Правильный и очевидный - изучить код, чтобы узнать структуры данных и т. п. Будут получены палитры, тайлы, карты (tilemap).
* Автоматизированный способ описанный мной выше. Требует некоторых знаний программирования.
Отключить в эмуляторе фоны (в Mesen - Options > Video > Advanced: Hide background layer 0/1/2/3), если так неудобно играть, то можно записать геймплей без отключения фонов (Mesen - Tools > Movies > Record) и после воспроизвести (Play) с отключёнными фонами. Записать lossless (без потерь) видео средствами эмулятора (а не дурацким Bandicam и т. п.) в месте с нужными спрайтами (Mesen - Tools > Video Recorder > Record: Camstudio). С помощью ffmpeg нарезать видео на кадры (PNG). С помощью Python и библиотеки PIL (pillow) найти все спрайты на кадрах, используя какой-нибудь метод "заливки" (обход графа), чтобы отделить связанные пиксели от сплошного фона. Позже удалить дубликаты спрайтов.
Из минусов: спрайты могут быть наложены (главный герой + босс, например), тогда они не подойдут или придётся вручную удалять. Из плюсов: в конце получим готовые спрайты в отдельных файлах.
Спасибо за дельный совет

Добавлено позже:
Открываете Mesen-S (или другой эмулятор как bsnes-plus), доходите до босса, открываете окно Debug -> Sprite Viewer: Ctrl+S для сохранения всех спрайтов на экране, так делаете для каждого нужного кадра. Там есть Lua-скрипты, что возможно поможет сохранить все кадры.

Добавлено позже:
Знаю ещё два метода:
* Правильный и очевидный - изучить код, чтобы узнать структуры данных и т. п. Будут получены палитры, тайлы, карты (tilemap).
* Автоматизированный способ описанный мной выше. Требует некоторых знаний программирования.
Отключить в эмуляторе фоны (в Mesen - Options > Video > Advanced: Hide background layer 0/1/2/3), если так неудобно играть, то можно записать геймплей без отключения фонов (Mesen - Tools > Movies > Record) и после воспроизвести (Play) с отключёнными фонами. Записать lossless (без потерь) видео средствами эмулятора (а не дурацким Bandicam и т. п.) в месте с нужными спрайтами (Mesen - Tools > Video Recorder > Record: Camstudio). С помощью ffmpeg нарезать видео на кадры (PNG). С помощью Python и библиотеки PIL (pillow) найти все спрайты на кадрах, используя какой-нибудь метод "заливки" (обход графа), чтобы отделить связанные пиксели от сплошного фона. Позже удалить дубликаты спрайтов.
Из минусов: спрайты могут быть наложены (главный герой + босс, например), тогда они не подойдут или придётся вручную удалять. Из плюсов: в конце получим готовые спрайты в отдельных файлах.
А допустим взять игру Felix the Cat на NES и отключить задний фон, то сам спрайт чёрного цвета (felix) и обычный фон чёрного цвета. Как в данной ситуации быть? Менял палитру, меняется вместе со спрайтом
« Последнее редактирование: 21 Октябрь 2020, 11:45:20 от DMI3Y »