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

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

Оффлайн paul_met

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

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #270 : 04 Февраль 2023, 19:09:11 »
paul_met, не, глухо вообще :( Скурил доку по VDP1, вычитал, что в адрес записывается при старте исключительно. Ок, поставил бряк на старте, 7 записей происходит. Далее я вычитал, что запись происходит побитово и определяет сразу верхнюю левую и нижнюю правую координаты. Там даже табличка была с примерами записей. В общем, я все регистры просмотрел, вообще ничего не нашел при стопах похожего) Похоже, второй эпик фейл со второй игрой  :lol:
Ну теоретически можно играть с расширенным экраном, но появляющимися из воздуха врагами )
Печаль, что Yabause такие вещи не фиксирует нигде, было бы очень полезно.
« Последнее редактирование: 04 Февраль 2023, 19:53:54 от yousver2 »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8047
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #271 : 04 Февраль 2023, 20:45:27 »
В общем, я все регистры просмотрел, вообще ничего не нашел при стопах похожего
Похожего на что? В системный адрес 05D0000A должно записываться 16 бит значение типа 50DF или 50EF (в зависимости от вертикального разрешения).
« Последнее редактирование: 04 Февраль 2023, 21:26:33 от paul_met »

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #272 : 04 Февраль 2023, 21:22:25 »
paul_met, да, получилось, спасибо) щас скрин сделаю))

258097-0

Щас попробую другое разрешение сделать

А это 352 на 240

258099-1

Добавлено позже:
paul_met, в хд разрешениях к сожалению все рушится и не работает, даже не знаю почему
« Последнее редактирование: 04 Февраль 2023, 22:37:30 от yousver2 »

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8047
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #273 : 05 Февраль 2023, 00:10:12 »
paul_met, в хд разрешениях к сожалению все рушится и не работает, даже не знаю почему
В высоком разрешении много ограничений, обычным переключением разрешения тут не ограничишься. Надо менять режим палитры, её расположение в видеопамяти, тип спрайтов и т.д. Максимум, что можно получить "малой кровью", двойное разрешение по вертикале (двойной интерлейс).

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #274 : 05 Февраль 2023, 00:27:03 »
paul_met, двойной интерлейс наверное только вертикальным шмапам подойдет, всем остальным играм немного странно будет играть с вытянутой картинкой по вертикали)) Ну что ж, хотя бы widescreen для 2д получил, уже хорошо. 352 на 224 можно растянуть на 16:9 с минимальным искажением, что несомненно радует

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #275 : 06 Февраль 2023, 08:19:50 »
Рекомендую почитать:

https://learnopengl.com/Getting-started/Transformations

https://learnopengl.com/Getting-started/Coordinate-Systems

В особенности по второй ссылке.



Тебе нужно менять именно projection matrix, что бы картинка рендерилась сжатой в штатный фреймбуфер 4:3.

Сама матрица проекции выглядит так:



Тебе нужен верхний левый элемент, который зависит от fov камеры и aspect ratio.

Причем, обрати внимание, матрица актуальна для современных видеокарт и их GAPI, у которых ожидаемые координаты вершин после всех трансформаций  лежат в диапазоне от -1 до 1 с нулем в середине экрана. А у сатурна передаются координаты в пикселях. Так что в матрице будет еще правая колонка в первой и второй строках, а этот самый коэффициент будет уже не с 1 в числителе.
« Последнее редактирование: 06 Февраль 2023, 08:30:52 от nonamezerox »

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #276 : 06 Февраль 2023, 10:32:32 »
nonamezerox, но фишка в том, что в твоих формулах слишком много неизвестных, которые просто так не найти :) Это хорошо, когда их все знаешь, а если не знаешь?

paul_met, а какие еще есть популярные коээфициенты сжатия картинки кроме 0001 1000? Я так думаю, их должно быть не менее 3-4 активно используемых в большинстве игр.
Я щас пытаюсь сделать widescreen для Hang On, продолжения мегадрайвовой гонки, очень классной

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #277 : 06 Февраль 2023, 10:41:11 »
nonamezerox, но фишка в том, что в твоих формулах слишком много неизвестных, которые просто так не найти  Это хорошо, когда их все знаешь, а если не знаешь?

Эм, неизвестных тут нет.

1/tan(fov/2) находится в 2 строка второй столбец и используется игрой (на него умножается координата y).

aspect = то что ты хочешь получить, 16 делить на 9.

Ищешь этот самый вторая строка второй столбец, делишь на aspect и пишешь в 1 строка 1 столбец (на него умножается x).


Добавлено позже:
Я так думаю, их должно быть не менее 3-4 активно используемых в большинстве игр.

Он зависит от fov камеры (для 3д).
« Последнее редактирование: 06 Февраль 2023, 10:50:17 от nonamezerox »

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #278 : 06 Февраль 2023, 10:50:13 »
nonamezerox, но ты можешь хотя бы примерно расписать, что мне нужно искать в дебаггере сатурна? Координату y камеры? Ну это найти несложно. А дальше мои действия какие должны быть? Поставить бряк на эту координату? Или не шевелиться в игре, и зная координаты, расчитать по формуле?

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #279 : 06 Февраль 2023, 10:53:47 »
nonamezerox, но ты можешь хотя бы примерно расписать, что мне нужно искать в дебаггере сатурна? Координату y камеры? Ну это найти несложно. А дальше мои действия какие должны быть? Поставить бряк на эту координату?

Нужно найти, на что умножается Y перед тем как формируется дисплей листы для vdp.

После чего эту штуку поделить на aspect и подставить туда на что умножается X перед тем как формируется дисплей листы для vdp.

То есть ставишь бряк на память дисплей листа и смотришь откуда туда пишется со стороны CPU1-2/DMA/DSP. и дальше находишь место где он генерируется и где перед генерацией у него умножются координаты x и y.

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #280 : 06 Февраль 2023, 12:21:46 »
nonamezerox, да, нашел нужный адрес, картинка сжимается и расширяется) Только в этой игре мне от этого лучше не стало, оказалось, что ничего не отрисовывается за пределами видимого экрана, который разрабы сделали - куча хлама :)) Это нужно еще видимую область расширять, попробую

258148-0
« Последнее редактирование: 06 Февраль 2023, 12:33:26 от yousver2 »

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #281 : 06 Февраль 2023, 12:58:57 »
nonamezerox, да, нашел нужный адрес, картинка сжимается и расширяется) Только в этой игре мне от этого лучше не стало, оказалось, что ничего не отрисовывается за пределами видимого экрана, который разрабы сделали - куча хлама :)) Это нужно еще видимую область расширять, попробую

(Ссылка на вложение)

Так, тогда смотри изменяется ли инфа по этому самому адресу и откуда (тут может собираться Model View Projection матрица из трех отдельных их последовательным перемножением. В таком случае операция над элементом (0.0) затронет так же и масштабирование от матрицы вида. Судя по картинке - да, ты меняешь уже сведенную матрицу MVP.

Твоя задача найти откуда появляются значения этих коэффициентов.

Общая суть такова:

Матрица модели (Model)  - своя на каждую модельку . Отвечает за расстановку моделек по сцене.

Матрица вида (View) - отвечает за камеру, она поворачивает и масштабирует всю сцену так что бы сцена попала нужным углом в ракурс камеры. Общая на весь кадр. Меняется согласно логике работы игровой камеры.

Её задача привести ракурс кадра так что бы вершины модели оказались в аппаратных координатах экрана.

Матрица проекции (Projection) - окончательно отвечает за угол обзора, соотношение сторон и еще масштабирует по оси Z (это та что направлена внутрь монитора). Общая на всю игру.

При рендеринге матрица каждой модели умножается на матрицу вида и проекции, после чего через итоговую MVP матрицу умножением прогоняются все вершины модели и отправляются на рендер в GPU.




Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #282 : 06 Февраль 2023, 13:07:14 »
nonamezerox, ок, щас попробую, спасибо

Добавлено позже:
Так, тогда смотри изменяется ли инфа по этому самому адресу и откуда

Не, адрес не меняется, записывается перед началом гонки, щас попробую посмотреть откуда

Добавлено позже:
nonamezerox вышел на еще адреса, которые делают абсолютно тоже самое, только теперь по 3 разным адресам. Видимо, это и есть модель, вид и проекция, только они делают тоже самое - вид как был как на скриншоте выше, так и остался) Ок, щас попробую проследить один из них, интересно откуда пишется он

п.с. Эти 3 адреса пишутся при запуске игры, после логотипа Сега примерно
И пишутся они с адреса 0x5818000. Дальше их след теряется ))
« Последнее редактирование: 06 Февраль 2023, 13:27:37 от yousver2 »

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #283 : 06 Февраль 2023, 13:37:15 »
nonamezerox, ок, щас попробую, спасибо

Добавлено позже:
Не, адрес не меняется, записывается перед началом гонки, щас попробую посмотреть откуда

Добавлено позже:
nonamezerox вышел на еще адреса, которые делают абсолютно тоже самое, только теперь по 3 разным адресам. Видимо, это и есть модель, вид и проекция, только они делают тоже самое - вид как был как на скриншоте выше, так и остался) Ок, щас попробую проследить один из них, интересно откуда пишется он

п.с. Эти 3 адреса пишутся при запуске игры, после логотипа Сега примерно

Вот смотри, примерно что должно происходить:

https://godbolt.org/z/nczqEoe4e

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #284 : 06 Февраль 2023, 13:46:59 »
nonamezerox, я просто смотрел , как в других играх это делается, на которых уже есть вайдскрины. Там сжатие картинки происходит от центра в обе стороны. А здесь почему-то картинка сужается справа налево только, при этом перс сужается влево тоже. Ну размеры перса наверное несложно будет найти, но от мусора это никак не избавляет. Все же у меня подозрение на поле видимости отрисовки, мож там клиппинг какой нибудь стоит, хз. Yabause эту игру не понимает, поэтому я лишен львинной доли фишек дебаггера

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #285 : 06 Февраль 2023, 14:13:59 »
Там сжатие картинки происходит от центра в обе стороны

Да, потому что ноль координат в центре экрана. И координаты с минусом в левой части и с плюсом в правой части экрана, соответсвенно.

Здесь же  координаты - с нулем в верхнем левом углу. Причем физические, в пикселях.

И где то в коде из них либо вычитаются -1 и делится на 2 (в зависимости от того какой формат с плавающей точкой применяется)  или это делается в самой матрице (в таком случае в матрице итоговой должна быть заполнена колонка на 4 столбец 1 и вторая строка. 

А коэффициенты в диагонали масштабируют к тому же с учетом выставленного разрешения, соответсвенно.


Т.Е. в случае сатурна мы имеем такую матрицу проекции:


« Последнее редактирование: 06 Февраль 2023, 15:12:52 от nonamezerox »

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #286 : 06 Февраль 2023, 15:15:57 »
nonamezerox, не, все, я сдался  :lol: Эта игра выше моего среднего уровня интеллекта)) Ну по крайней мере получил знания по нахождению матрицы, спасибо, в следующей игре надеюсь, что картинка будет отрисовываться дальше разрешения экрана, как в других играх

Оффлайн nonamezerox

  • Пользователь
  • Сообщений: 322
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #287 : 07 Февраль 2023, 08:27:52 »
Посоны, я просто оставлю это здесь:


Понимаю что оффтопик однако.

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #288 : 07 Февраль 2023, 08:36:44 »
ох ты ж б.. Напоминает SlaveDriver двиг, только покруче по эффектам)

Оффлайн HayaoYokogawa

  • Пользователь
  • Сообщений: 1984
  • Пол: Мужской
  • большой и толстый розовый динозавр
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #289 : 07 Февраль 2023, 09:29:14 »
Посоны, я просто оставлю это здесь:


Понимаю что оффтопик однако.
Ого. Аж поиграть захотелось. :wow:

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #290 : 17 Февраль 2023, 13:35:51 »
paul_met, если хочешь, можешь сделать патчик из этого и добавить на свой сайт. Можешь меня не указывать, мне это вообще неважно) просто добавь в качестве коллекции

Mobile Suit Gundam

RAM
73cb2 0160 - увеличивает дальность отрисовки спрайтов
73398 8001 - увеличить разрешение по горизонтали

Увеличить дальность прорисовки бэкграунда:
открыть хекс редактором первый трэк образа (либо весь образ, если он один)
Найти
014000E0 028000E0
Заменить
016000E0 028000E0

Второй скрин у меня чуть растянут по горизонтали, не обращайте внимания)

259623-0 259625-1

Добавлено позже:

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8047
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #291 : 17 Февраль 2023, 14:23:47 »
73398 8001 - увеличить разрешение по горизонтали
Чую, это не сработает на других эмуляторах (на SSF, например) и на железе тоже.

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #292 : 17 Февраль 2023, 14:28:50 »
paul_met, а, ну да, это ж рамка :) Хочешь ,я найду значения в образе)

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8047
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #293 : 17 Февраль 2023, 16:36:59 »
paul_met, а, ну да, это ж рамка :) Хочешь ,я найду значения в образе)
Дело не в этом. Чтобы корректно выполнить смену разрешения экрана необходимо повысить частоту CPU с помощью специального механизма (процедуры). Каждая игра делает это по-своему. В некоторых играх вообще отсутствует обращение к данной процедуре. Так что, просто записать необходимые биты по адресу 05F80000 будет недостаточно.

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #294 : 17 Февраль 2023, 16:45:20 »
paul_met, оу, ну ладно) Ну я тогда в таком их виде здесь оставлю, мож кому захочется на эмуляторе поиграть, на меднафене например норм пашет. У меня просто железа нет, поэтому заморачиваться ради него как то не очень хочется :)

Оффлайн ViToTiV

  • Пользователь
  • Сообщений: 165
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #295 : 20 Февраль 2023, 09:26:21 »
Посоны, я просто оставлю это здесь:
Понимаю что оффтопик однако.
чёт я сомневаюсь, что оно пойдёт на железе с такой скоростью, и пойдёт ли вообще

Оффлайн Dyons

  • Пользователь
  • Сообщений: 7137
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #296 : 20 Февраль 2023, 12:27:13 »
чёт я сомневаюсь, что оно пойдёт на железе с такой скоростью, и пойдёт ли вообще

че б ему не пойти, если таже Квака 2 на ПС1 пографонистей будет

Оффлайн yousver2

  • Пользователь
  • Сообщений: 2605
    • Просмотр профиля
Модифицируем игры для Sega Saturn
« Ответ #297 : 20 Февраль 2023, 12:39:26 »
Dyons, А еще есть Aliens Resurrection и Delta Force :) Они по-моему максимум выжимают из пс1