Красный Омега PS2 эмулятор

Привет всем любителям ретро игр (игры для Play Station 2 вполне подпадают под эту категорию). Я представляю на вашу оценку свой проект клона PCSX2 эмулятора — «Красный Омега». Коротко о проекте — это клон PCSX2 для Windows 10 с упрощённым интерфейсом, минимальным порогом вхождения и реализацией управления через «Touch» пользовательский интерфейс.


fiwr6l8uammkw1f0j-m2kp2leho.jpeg

Предупреждаю, что качество картинки — «вырви глаз». Плевать в экран безполезно. Пробывал — не помогает :)

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


Что-же, начнём с простого — пользовательского интерфейса.

Оригинальный проект PCSX2 имеет сложный интерфейс (на мой взгляд). Да, он удобен в процессе отладки патчей для игр —, но непрофессионального пользователя огромное количество ненужного функционала вводит в ступор. В моём проекте, я поставил целью создать простой, интуитивно понятный интерфейс. Как результат — удалён весь функционал отладки и конфигурация эмулятора установлена в коде для поддержки большинства игр.
Следующим изменением интерфейса является переход под «Touch» дизайн — «скупой» интерфейс в стиле Win95:


ixy1nncnsacq0rf8v8hbe3_6kkq.png

заменён на «плиточный» (по большей части), что позволяет взаимодействовать с программой как «указателем мыши», так и касанием сенсорного экрана дисплея: oab7vfmjvuzu4jg9sg2jl4bdnmu.png
Обращаю внимание — это НЕ Windows Store приложение. Однако, имитация очень близка.
Как результат, включена поддержка управления в играх через «Touch Screen». Поверх изображения добавлены полу-прозрачные элементы управления игровым контроллером. Но при-этом, от него можно отказаться, переключившись на физический «Game Pad»


Следующий момент — управление или точнее менеджмент ресурсами

Отдельным моментом является удобность в управлении файловами образами игр, BIOS’ами, картами памяти и сохранениями. Оригинальный проект PCSX2 представляет ограниченные возможности по управлению образами игр и их загрузками. Для улучшения данного функционала, загрузкам BIOS’ов, образов игр и их сохранений уделена почти треть пространства пользовательского интерфейса.
BIOS’ы загружаются как из отдельных файлов, так и из zip архивов. Исчерпывающая информация представлена в визуально-текстовой форме:


7ngysshl-se9plyyqhh2nb7g_jy.png

Образы игр загружаются из ISO файлов и проверяются на совместимость — если ранее файловый образ игры проверялся ВО ВРЕМЯ запуска эмулятора, то данный проект проверяет тип образа, его корректное имя и играбельность отдельно от процесса запуска игры:


oab7vfmjvuzu4jg9sg2jl4bdnmu.png

Управление сохранениями координально изменено. Оригинальный проект PCSX2 имеет ограничение в 10-ть файлов-слотов на одну игру, без возможности определения даты и прогресса сохранений:


9a6oy7fvhgxtgvuuvegzmyrowxe.png

Данный проект позволяет создавать до 100 файлов сохранений на одну игру во время игрового процесса. Каждый файл сохранения идентифицируется датой записи, длительностью сохранённой игровой сессии, захваченным изображением с экрана:


8oisrtdeejm9wxa8dnooy2ngspq.png


Кроме созданных сохранений, при остановке игры, или закрытии программы текущее состояние эмулятора сохранается в файл «Автосохранение» — это позволяет при следующем запуске данного эмулятора продолжить игру, даже если предыдущее состояние игры было по ошибке не сохранено. В дополнении, уменьшено время загрузки данных из сохранений — оригинальный проект PCSX2 требует загрузки BIOS’а, образа игры и затем требуется выбрать файл сохранения — время загрузки может составить до 30 секунд. Данный проект сокращает время загрузки сохранения до 3–5 секунд.
Картами памяти в данном проекте можно управлять более «гибким» образом:


0lbpj01nvhqpzhokbgv1udlqquq.png

Карты памяти можно создавать во время работы эмулятора и переключать с одной карты памяти на другую для загрузки или сохранения данных в играх во время игрового процесса. Имена созданных файлов карт памяти генерируются на основе имени игры и уникального идентификационного номера диска — для каждой текущей игры доступны только «свои» карты памяти.


Игровой контроллер

Данный проект позволяет переключать тип управления в играх с сенсорного на физический игровой контроллер:


vhqvichyxqcdiylrpkud2xmbosw.png



Захват

Функции захвата изображений и видео реализованы в оригинальном проекте PCSX2 в ограниченном виде и без внимательного изучения пользовательского интерфейса можно упустить данную функциональность. В данном проекте я переписал решение для захвата изображения игрового процесса с использованием нового SDK и расположил необходимые кнопки управления поверх игрового изображения:


yrnkuobcmashnishxzff9yia2li.png

Качество сжатия отдельных изображений находится на фиксированном уровне. Качество записи «живого» видео игрового процесса может быть настроенно в диапазоне от 10% до 99%. Имена созданных файлов генерируются на основе имени игры и значения текущего времени. Видео и аудио игрового процесса записываются в форматах, совместимых с mp4 файлами. Отдельная панель управления позволяет просматривать изображения и видео во время паузы:


t5j9kig86wrcpfsipylhrhfleee.png


0icvwmecqwujagzw7iwchuwkyom.png


ymxswkg2xinvks0ehrcihb9j2-w.jpeg


Общие настройки

Кроме управления игровым процессом, имеется панель общих настроек: «Режим отображения», «Режим управления», «Установить окно поверх всех», «Качество сжатия видео», «Отключить широкоформатный режим», «Текущий перевод». «Режим отображения» позволяет переключать область прорисовки игры из полноэкранного в «оконный»


3-qmcascuqzwrxpzxnqju-tcpqs.png

«Режим управления» позволяет переключать схему управления от кнопочного в сенсорный


oylewqf0lvuj0mevlk8mha0c_4c.png


Остальные настройки просты в понимании.


Заключение

Данный проект прошёл большой путь от исходной версии PCSX2 эмулятора, но всё еще не вышел из статуса тестовой версии. Исходный код опубликован на GitHub: OmegaRed и CodeProject: Omega Red PS2 emulator.

© Habrahabr.ru