Хабрахабр

Omega Red + PS1 эмулятор = Кодзима гений

Привет всем читателям!

Более подробно:
Я продолжаю тему программного эмулятора для PlayStation 2 и PlayStation Portable — Omega Red.

Данную публикацию я написал в связи с добавлением программного эмулятора для PlayStation 1.
Добро пожаловать под «кат».

Идея добавить поддержку эмуляции первой игровой приставки линейки PlayStation логична, однако при попытке реализации возникла проблема — OpenSource версия лет 15-ть, как перестала поддерживаться сообществом и интеграция в проект с технологиями DirectX11 и WPF представила реальную проблему.
Как понятно из заголовка — данная статья представляет результат моего исследования в интеграции PCSX-Reloaded эмулятора PlayStation 1. На первый взгляд подобное решение кажется не эффективным, но оно позволяет использовать уже отлаженный код программного рендерера, и для первой версии более чем подходящее решение.
Дополнительно я добавил ряд функций для совместимости с PCSX-Reloaded:
Версия видео рендерера представлена в виде программной реализации и после создания итогового изображения в системной памяти этот результат копируется в видео память DirectX11.

  1. Визуальная вибрация — игровой контроллер «Dualshock» для игровых приставок линейки PlayStation имеет функционал «обратной отдачи» для более глубокого погружения игровой процесс. Эмулятор Omega Red поддерживает подобную функцию для внешнего игрового контроллера, но «обратная отдача» для сенсорного экрана пока что из области фантастики. Однако, исследуя код PCSX-Reloaded я наткнулся на указатель функции обратного вызова от эмулятора игрового контроллера к графическому рендереру. Идея отображать «обратную отдачу» через визуальную трансформацию изображения занятна и я решил реализовать её в своём проекте.

  2. Общая карта памяти — оригинальный проект Omega Red создаёт карту памяти для игры на основе уникального серийного номера игрового диска, что позволяет предотвратить затирание сохранения одной игры из игровой сессии другой игры. Этот приём работает для игр PlayStation 2, занимающие один диск DVD, но в случае с играми PlayStation 1 возникает проблема переноса сохранения с игровой сессии на одном диске на игровую сессию на другом игровом диске — игры на PlayStation 1 могут занимать два и более диска. Для решения подобной проблемы я добавил общую карту памяти.

Кроме требований совместимости, я добавил несколько общих улучшений, среди них:

  1. Выбор видео битрэйта для видео записи игрового процесса:

    Выбор размера целевого файла видео записи:

  2. Разделение БИОСов и игровых дисков по группам для PlayStation 1, PlayStation 2 и PlayStation Portable.

  3. Вывод имени текущих БИОСа и игрового диска в названии соответствующих разделов.

Демонстрацию работы игр для всех трёх платформ можно увидеть в демо:

В настоящий момент программа доступна по ссылке: Omega Red и представлена на GitHub: OmegaRed.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть