Автор Тема: Модифицируем игры для Sega Saturn  (Прочитано 40110 раз)

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

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« : 04 Сентябрь 2015, 19:08:21 »
Информация о модификации игр для Sega Saturn
--------------------------------------------------------------------------------------------
« Последнее редактирование: 21 Январь 2017, 16:48:09 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #1 : 06 Сентябрь 2015, 13:21:26 »
Возможно, особенно внимательные люди замечали, что в некоторые играх для Сатурна присутствуют небольшие чёрные полосы сверху и снизу экрана (иногда и по бокам экрана). Не то, чтобы это вызывало дискомфорт, но закрадывались некоторые вопросы о том, что скрывается за этими полосами и для чего они нужны. Отвечая на эти вопросы, можно было предположить два варианта:
1. За чёрными полосами ничего нет, картинка там не рендирится (либо просто мусор, который разработчики не пожелали убирать и просто скрыли за чёрными полосами).
2. Изображение всё-таки рендерится за чёрными полосами, но по какой-то причине его решили скрыть (для повышения производительности игры или полосы остались в результате прямого портирования игры с другой системы).
Забегая вперёд, скажу, что все эти варианты в то или иной степени справедливы для различных игр. Но что, если попробовать убрать эти полосы и посмотреть, что за ними? Если нам повезёт и картинка всё-таки рендерится под полосами, то мы увеличим видимый обзор в игре, что положительно скажется на игровом процессе. В противном случае мы получим пустоту или мусор.
Итак, способ убрать полосы существует и он проверен на нескольких играх. Причём для каждой игры нужен свой подход, но принцип всегда один и тот же. Полосы могут устанавливаться как по средствам VDP1, так по средствам VDP2. Это два разных видеопроцессора консоли (video display processor), которые отвечают за вывод спрайтов, примитивов и задних планов.  Например, одним из признаков, указывающих на то, что изображение обрезается, является запись типа "Horizontal/Vertical start/end" в меню дебаггера VDP2 в эмуляторе Yabause. Такая запись может присутствовать в любом из слоёв, отображаемых на экране. Значения, которые стоят напротив такой записи, являются координатами начала и конца отрисовки изображения. Если их изменить, то мы получим определённый результат.
154472-0
Так же бывает, что чёрные полосы рисует VDP1 с помощью примитивов. Такой способ мне пока встретился лишь один раз. Но случается и такое, что обнаружить, как формируются чёрные полосы довольно сложно, так как на них практически ничего не указывает. Тут уж приходится вычислять размер полос вручную и искать в дампе памяти соответствующие значения.
Обычно поиск таких значений в оперативной памяти не представляет особой сложности. Гораздо сложнее узнать откуда эти значения пишутся и в какой момент. Для этого необходимо ставить так называемые точки останова (брейкпоинты) на запись в память по определённому адресу. Когда эмулятор  отрапортовал о точке останова, нужно идти по коду в обратную сторону. Для этого надо знать SS ассемблер.
В виду того, что я немного продвинулся в этом плане, мне удалось достигнуть определённых результатов в устранении этих самых чёрных полос. Я приведу два примера, где чёрные полосы присутствуют со всех сторон.

Игра Shining Force 3. Тут у нас чёрные полосы присутствуют всегда и на любом экране. Полосы на титульном экране, который представляет собой обычную фоновою картинку (причём рисуется она в VDP1, что не совсем стандартно), являются результатом того, что сама фоновая картинка меньше разрешения экрана. По сему, её просто отцентрировали. Но, есть определённая хитрость. Так как фоновая картинка представляет собой distorted sprites (спрайт с 4-мя координатами, который можно искажать), то мы можем его растянуть на весь доступный экран. При этом он не особо потеряет в качестве. Ниже пример до и после масштабирования.
154454-1 154456-2
Что касается ингейма, то там основные операции по выводу изображения берёт на себя VDP2. Там встретилось несколько записей "Horizontal/Vertical start/end" - для переднего и заднего планов. Как оказалось, и значения для них берутся из разных мест. Убрать чёрные полосы для переднего плана оказалось просто, так как координаты шли друг за дружкой (скрин №2). А вот с задний планом оказалось по-другому. Координаты его полос оказались разбросаны. Путём долгих поисков удалось найти нужные значения. В результате мы получили желаемый результат (скрин №3).
154474-3 154460-4 154478-5
Самая большая проблема, что все найденные значения в оперативной памяти нужно ещё отыскать в ресурсах игры, если мы хотим сделать патч (ну а если просто через читы, то и этого достаточно). В случае с этой игрой удалось их найти только методом тыка, так как поиск по средствам дебаггера ничего путного не давал.

Игра Shining Holy Ark. Здесь ситуация аналогичная SFIII, так как движок у игр один с некоторыми отличиями. В данной игре больше разрешение экрана и немного отличался поиск значений. Но суть осталась такой же. Так что приведу только результаты работы.
154464-6154466-7
154468-8154470-9
« Последнее редактирование: 24 Январь 2016, 16:24:37 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #2 : 19 Сентябрь 2015, 16:06:21 »
Я пошёл дальше и на сей раз решил увеличить внутреннее разрешение отдельно взятой игры. Но начнём из далека:
Как известно, в играх для PS1 с некоторых пор стал возможен трюк, который позволяет включать широкоформатный режим (widescreen mode) за счёт изменения соотношения сторон картинки. Такой трюк годится не для всех игр и, к тому же, он ориентирован на 3D игры. В результате таких манипуляций увеличивается видимый обзор в игре, но HUD и прочие 2D элементы будут растягиваться. Полагаю, что и их пропорции можно откорректировать, но для этого требуется найти соответствующие значения. Возникает вопрос - а как на счёт игр для Saturn? Можно ли там сделать что-то вроде widescreen? Но на сей платформе преимущественно 2D игры. Что делать с ними? Что ж, есть один трюк. Можно увеличить внутреннее разрешение в самой игре. Естественно до строго обозначенных пределов - то есть можно выставить максимально возможное разрешение экрана, которых поддерживает сама консоль по спецификации (смотри скрин ниже).
155121-0

Итак, следуя возможным значениям из приведённой выше спецификации, можно попробовать выставить максимальное разрешение, например, по горизонтали - 352 пикселя (для обычного режима). Покурив официальную доку для Сатурна, я узнал как это сделать. В приведённом ниже примере, увеличено горизонтальное разрешение картинки до 352 пикселя. Соответственно увеличен видимый обзор в игре. Никаких нарушений пропорций HUD и прочих гейплейных элементов нет потому, что отсчёт ведётся от левого верхнего угла экрана. Картинка будет расширятся вправо и вниз. Помимо увеличенного разрешения экрана, необходимо было увеличить размер рендеринга и откорректировать прокрутку экрана в соответствии с новым разрешением. Чтобы до этого дойти, потребовалось уйму времени.
155123-1 155125-2

Итак мы получили увеличенный обзор по горизонтали. В данном случае у игры было уже максимальное разрешение по вертикали (256 пикселей в нормальном режиме). Если бы оно было 240 или 224 пикселя, то у нас бы получилось близкое соотношение сторон хотя бы к 16:10 (352/224=22/14 ~ 1.6). Можно ещё отцентрировать панели здоровья, облака диалогов и т.д. Но для этого надо ещё больше времени и экспериментов.
« Последнее редактирование: 19 Сентябрь 2015, 16:14:29 от paul_met »

Оффлайн TiberiyLTim

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
  • -=TLT=-
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #3 : 20 Сентябрь 2015, 21:09:45 »
А почему бы тебе не подготовить патч к какой-нибудь игре, например, улучшающий такие моменты в какой-то наиболее подходящей игрушке?

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #4 : 21 Сентябрь 2015, 00:07:31 »
Цитата: TiberiyLTim
в какой-то наиболее подходящей игрушке?

Что имеется в виду под "подходящей игрушкой"?

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4323
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #5 : 21 Сентябрь 2015, 13:58:19 »
Снимаю шляпу, крутая работа.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #6 : 23 Сентябрь 2015, 08:51:32 »
Снимаю шляпу, крутая работа.
Благодарю.

Тем не менее, такие хаки неплохо бы проверять и на железке, а то раз столкнулся с тем, что на Yabause работает увеличение на разрешения в меню одной игрушки, а в SSF  - нет. Вот и закрались сомнения.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #7 : 23 Сентябрь 2015, 09:47:58 »
Цитата: paul_met
Картинка будет расширятся вправо и вниз.

Тоесть теперь визуально игрок будет бегать не по центру экрана, а всегда левее от центра?

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #8 : 23 Сентябрь 2015, 13:56:03 »
Цитата: gepar
Тоесть теперь визуально игрок будет бегать не по центру экрана, а всегда левее от центра?

По идее, если исправить координаты скроллинга экрана, то всё будет по прежнему.

Оффлайн TiberiyLTim

  • Пользователь
  • Сообщений: 340
  • Пол: Мужской
  • -=TLT=-
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #9 : 23 Сентябрь 2015, 22:55:54 »
Что имеется в виду под "подходящей игрушкой"?

Игра, в которой данное улучшение наиболее подходит, где можно сделать комплексный подход с изменением всего, в том числе перенастроить скроллинг и пр. просто некоторые игры закладываются так, что там уже невозможно что-то сделать без глубокого дизасма и перекодинга - архитектура движка плохая и т.д.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #10 : 23 Сентябрь 2015, 23:06:16 »
Цитата: TiberiyLTim
Игра, в которой данное улучшение наиболее подходит, где можно сделать комплексный подход с изменением всего, в том числе перенастроить скроллинг и пр. просто некоторые игры закладываются так, что там уже невозможно что-то сделать без глубокого дизасма и перекодинга - архитектура движка плохая и т.д.

Ну вот к той же Истории Тора 2 весьма подходит хак с увеличением разрешения (не считая всяких менюшек и заставок - они просто изначально 320 пикселей в ширину).
« Последнее редактирование: 28 Сентябрь 2015, 15:03:45 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #11 : 09 Октябрь 2015, 12:28:45 »
Story of Thor 2 - хак по увеличению разрешения экрана до 352х256 (v1.0)


155786-0 155784-1
155788-2 155790-3
155792-4 155794-5

Архив с патчем прикреплён ниже (вторым прикреплён отдельный файл для русской версии игры)
« Последнее редактирование: 09 Октябрь 2015, 16:04:08 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #12 : 03 Ноябрь 2015, 12:28:09 »
Убраны горизонтальные чёрные полосы  + увеличено разрешение до 352x240 (площадь обзора увеличилась на 512 пикселей).
На SSF пока не работает из-за, как оказалось, некорректной его работы с TVMD:


Shining Force III (Сценарий 1)


Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #13 : 08 Ноябрь 2015, 18:52:12 »
Экспериментальный Hi-res режим (работает только при аппаратной эмуляции).

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1558
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #14 : 08 Ноябрь 2015, 19:00:31 »
Цитата: paul_met
Hi-res режим

Что именно подразумевается? Подмена текстур? Фильтры? Сглаживание? А оригинальный скрин можно увидеть?

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #15 : 08 Ноябрь 2015, 19:04:05 »
Цитата: s1nka
Что именно подразумевается? Подмена текстур? Фильтры? Сглаживание? А оригинальный скрин можно увидеть?

внутреннее разрешение увеличено до 704x480. Тогда, как оригинал был 320х240. Сравни со скринами выше просто.
Теперь при отведении камеры видна практически вся локация. Правда не всё рендериться.
« Последнее редактирование: 04 Февраль 2016, 20:48:16 от paul_met »

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #16 : 09 Ноябрь 2015, 20:24:54 »
paul_met, так алгоритм для включения отрисовки за границами стандартного экрана для игр на одном и том же движке такой же или ты каждый раз что-то меняешь? Может сконтактировать с разработчиком эмулятора SSF поделившись наработками и предложить добавить hi-res хаки для известных движков прямо в эмулятор.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #17 : 09 Ноябрь 2015, 21:55:06 »
Цитата: gepar
paul_met, так алгоритм для включения отрисовки за границами стандартного экрана для игр на одном и том же движке такой же или ты каждый раз что-то меняешь? Может сконтактировать с разработчиком эмулятора SSF поделившись наработками и предложить добавить hi-res хаки для известных движков прямо в эмулятор.
Смена разрешения, границы рендеринга, координаты отсчёта VDP1 и т.д., думаю, всегда идут по одному принципу, так как эмуляторы определяют эти параметры (например, Yabause в дебаг меню). Думаю, разработчикам это всё очень хорошо известно. Просто они не ставили перед собой цели делать такие хаки в эмуляторах. Если бы кто-то из них заморочился, то можно было бы вычислять все значения на этапе загрузки игры (например, пытаться запускать игру всегда в максимально возможном разрешении). Только вот как быть с фонами, рассчитанными на определённое разрешение? Можно их тупо отцентрировать, но если размера слоя не достаточно, появятся чёрные полосы, дыры и подобные баги. Некоторые фоны VDP2 можно растянуть до нужных размеров, но только те, что используют NBG0-1 или RBG0-1 слои (остальные не масштабируются). Если в VDP1 нет проблем с масштабированием, то есть косяк с цветопередачей (в Hi-res режиме можно юзать только 8-ми битный цвет по ходу). Можно ли конвертировать из 16 в 8 бит на лету или нет - я ещё не разобрался. Например, hi-res картинка, которую я приводил выше, в софте будет выглядеть с испорченной палитрой (кроме RGB слоя воды, так как он относится к VDP2).
В общем баги неизбежны. А в игра без скроллинга экрана (например, Resident Evil) вообще бесполезно что-либо делать. Там статичные фоны.
« Последнее редактирование: 09 Ноябрь 2015, 22:07:52 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #18 : 20 Ноябрь 2015, 15:30:06 »
Story of Thor 2 - хак по увеличению разрешения экрана до 352х256 (v1.1)


157769-0 157771-1 157773-2

Архив с патчем прикреплён ниже (вторым прикреплён отдельный файл для русской версии игры)
« Последнее редактирование: 22 Ноябрь 2015, 11:44:06 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #19 : 26 Ноябрь 2015, 14:51:21 »
Norse by Norsewest (Lost Vikings 2) - разрешение 352х240.
Панель персонажей пришлось переместить вниз из-за того, что под ней находился постоянно мерцающий мусор. На SSF хак не работает, увы.
157988-0 157990-1
157992-2 157994-3
 

Оффлайн Evgeniy

  • Пользователь
  • Сообщений: 411
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #20 : 04 Декабрь 2015, 16:08:11 »
paul_met,
Привет.
На сатурне есть хорошие капкомовские файтинги порты с cps2 и, причем эти порты самые лучшие.
Но есть недостаток в разрешении. У сатурна оно ниже всех. Повысить это реально или 352 максимум? в аркадный 384.
Хорошее видео сравнения ps1 и saturn.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #21 : 04 Декабрь 2015, 20:02:57 »
Цитата: Evgeniy
Повысить это реально или 352 максимум? в аркадный 384.
Список поддерживаемых разрешений экрана я приводил во 2-м посте темы. Выше 352 идёт только 640, но это уже hi-res. А вот с ним уже возникают проблемы. Чтобы подогнать игру под высокое разрешение , нужно много чего переделать. И  я пока не знаю как это сделать. Сеговские доки такие бестолковые в плане изложения материала. Где-то написано подробно, а где-то чёрт разберёшь что и откуда берётся. Так что нужно долго и упорно изучать. Ну и тестировать на реальной консоле, коей у меня нет.

Оффлайн Про Игрок

  • Пользователь
  • Сообщений: 1853
  • "А ты...знаешь что такое Red Sky Project!?"
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #22 : 05 Декабрь 2015, 02:48:00 »
Цитата
Story of Thor 2 - хак по увеличению разрешения экрана до 352х256 (v1.1)

Теперь можно будет вернуться за прохождение  игры  :cool:

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #23 : 06 Декабрь 2015, 13:13:33 »
Wrestlemania: The Arcade Game - разрешение 352х240 (исходное 320х224). На SSF пока не работает.
Какая-то реактивная версия на Сатурне. На других платформах помедленнее и полегче.
158514-0 158516-1

Оффлайн Evgeniy

  • Пользователь
  • Сообщений: 411
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #24 : 06 Декабрь 2015, 14:46:54 »
paul_met,
Вам бы на буржуйских форумах свои исследования на эту тему написать. Наверняка найдутся хакеры, которые имеют документацию или сами захотят увеличить разрешение. Может никто и не знает что это реально.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #25 : 06 Декабрь 2015, 14:55:37 »
paul_met,
Вам бы на буржуйских форумах свои исследования на эту тему написать. Наверняка найдутся хакеры, которые имеют документацию или сами захотят увеличить разрешение. Может никто и не знает что это реально.
А я итак дублирую инфу на двух буржуйских форумах.

Оффлайн black jaguar

  • Пользователь
  • Сообщений: 1873
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #26 : 06 Декабрь 2015, 16:15:51 »
что пишут в ответ?
« Последнее редактирование: 06 Декабрь 2015, 16:20:41 от paul_met »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8032
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #27 : 06 Декабрь 2015, 16:20:50 »
что пишут в ответ?
Cool, Nice и в таком же духе. Инициативы подобным заниматься никто не проявляет.

Оффлайн Evgeniy

  • Пользователь
  • Сообщений: 411
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #28 : 08 Декабрь 2015, 11:44:22 »
Есть всего один человек, который все знает про сатурн. Shima. Он в своем твиттере активно флудит. Наверняка он знает насчет разрешения.
Редкие выходы тестовых сборок ssf говорит о том, что он ещё не полностью забросил своё хобби.

Оффлайн blackbird_ru

  • Пользователь
  • Сообщений: 1026
  • Пол: Мужской
    • Просмотр профиля
Re: Модифицируем игры для Sega Saturn
« Ответ #29 : 08 Декабрь 2015, 16:30:23 »
Я так понимаю всё только для эмулятора?
Жаль, вот если бы на реальной консоли так шло.