Short Waves 0.0.1: эмулятор PS3 от разработчика InoriRus

English version is situated below.

Вчера с администраторами EmuPlace связался разработчик InoriRus - автор эмулятора PS3 под названием Short Waves и предложил ознакомиться с его проектом. Ниже вы можете ознакомиться с информацией об эмуляторе (взято из readme):

Эмулятор Short Waves
Версия 0.0.1 (30.12.2013)

Системные требования: рекомендуется 4-ядерный процессор и DirectX 9.0 совместимая видеокарта, Windows XP или Vista 32-bit. Версия для семерки 64 бит давно не тестировалась (ноутбук сгорел), поэтому может и не запуститься.

До запуска коммерческих игр еще далеко (года два-три). Чудес не ожидайте. Пока можно запускать только небольшие homebrew приложения.

Проект начался в октябре 2012 г. Изначально я хотел вскрыть ресурсы одной игры, но весь контент оказался зашифрован (или запакован) и, чтобы вскрыть алгоритм шифровки, мне понадобился отладчик процессора Cell. Я скачал исходники RPCS3, отстроил код и запустил, программа вылетела с ошибкой, не успев ничего сделать. Меня это жутко расстроило, и я решил построить свой лунапарк.

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

На данный момент реализована эмуляция PPU, SPU и RSX. Поддерживаются почти все инструкции. Вершинные и пиксельные шейдеры транслируются напрямую - из бинарного кода RSX в бинарный код DirectX, без промежуточного представления в виде исходного кода. Есть кэш текстур, поверхностей и шейдеров. Все вызовы в ОС перехватываются и исполняются нативно, то есть официальная прошивка для работы не нужна.

Динамической рекомпиляции PPU и SPU не будет. Сейчас уже реализована статическая рекомпиляция PPU: генерируется файл на c++, который в оффлайне компилируется и полученная dll подгружается и исполняется, заменяя работу интерпретатора. Рекомпиляции подвергаются не только простые блоки, но и ветвление, и вызовы функций. Инструкция по использованию рекомпиляции будет позже.

Эмулятор не имеет графического интерфейса. Путь к эмулируемому эльфу и все настройки задаются в конфигурационном файле sw_emu.ini, который должен находится в папке с эмулятором.

Соответствие кнопок на клавиатуре и геймпаде жестко зашито в коде, и через конфигурационный файл пока менять нельзя.
VK_LEFT = LEFT
VK_DOWN = DOWN
VK_RIGHT = RIGHT
VK_UP = UP
VK_END = START
'3' = R3
'8' = L3
VK_DELETE = SELECT
'A' = SQUARE
'S' = CROSS
'D' = CIRCLE
'W' = TRIANGLE
'0' = R1
'1' = L1
'9' = R2
'2' = L2
'F' = ANALOG_LEFT
'H' = RIGHT
'T' = ANALOG_UP
'G' = ANALOG_DOWN
'J' = ANALOG_LEFT
'L' = ANALOG_RIGHT
'I' = ANALOG_UP
'K' = ANALOG_DOWN

Нажатием на кнопку ESC эмулируемой программе посылается сигнал REQUEST_EXITGAME – принудительное завершение игры или выключение питания на реальной приставке.

Исходный код эмулятора пока закрыт.

Если есть вопросы, пишите:
[см. почтовый адрес автора в readme]


Автор просит всех желающих принять участие в тестировании и сообщить ему при возникновении проблем:

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


<!--BBvideo-->_uVideoPlayer({'url':'http://www.youtube.com/watch?v=Y0crhBqyU1Q','width':'640','height':'360'},'scr00aT1pNgOl');<!--/BBvideo-->

Скачать эмулятор можно по ссылке отсюда.

Short Waves 0.0.1: new PS3 emulator from InoriRus 

English version for our foreign folks :) If you are going to repost this material, put the link to the source please.

Yesterday EmuPlace administration was contacted by InoriRus - the developer of the PlayStation 3 emulator - who offered us to test his project. Below you can read some information about the emulator, which has been taken from the readme file and translated into English:

Short Waves Emulator
Version 0.0.1 (30.12.2013)

System requirements: quad-core CPU and DirectX 9.0 compatible graphics card are recommended, Windows XP or Vista 32-bit. Version for Windows 7 64-bit has not been tested for a long time (my laptop kicked the bucket), so it may not work.

It is still far from launching games (2-3 years). Do not expect miracles. As of now the emu can launch just small homebrew apps.

The project started its life in October 2012. Initially I wanted to extract resources of one game, but it turned out the whole content was encrypted (and packed). In order to crack the encryption algorithms I had to use Cell debugger. I downloaded the RPCS3 source code, compiled and tried to launch it. The emu crashed with error without doing anything. This had really disappointed me and I decided to build my own Theme park.

My emulator has no relation to RPCS3, not a single line of code has been borrowed. Everything is written from scratch on the ground of my personal research.

As of now I have implemented PPU, SPU and RSX emulation. Almost all instructions are supported. Vertex and Pixel shaders are translated directly: from RSX binary code and into DirectX binary code, without temporal appearance in its original source code. There are texture, surface and shader caches. All OS calls are intercepted and executed natively, i.e. official firmware is not required.

I won’t implement dynamic recompilation of PPU and SPU. Static recompilation of PPU has already been implemented: a file is generated using C++ which then is recompiled offline. The resulting .dll is uploaded and executed. All this is done in place of interpretator. Recompilation affects not only simple blocks, but also branching and function calls. A manual on how to use recompilation will be available later.

The emu does not have GUI. The path to the emulated .elf file and all settings are set in the config file sw_emu.ini, that must be placed in the emu's folder.

The gamepad button bindings on the keyboard are hardwired into the code and currently you can't change them through config file.

VK_LEFT = LEFT
VK_DOWN = DOWN
VK_RIGHT = RIGHT
VK_UP = UP
VK_END = START
'3' = R3
'8' = L3
VK_DELETE = SELECT
'A' = SQUARE
'S' = CROSS
'D' = CIRCLE
'W' = TRIANGLE
'0' = R1
'1' = L1
'9' = R2
'2' = L2
'F' = ANALOG_LEFT
'H' = RIGHT
'T' = ANALOG_UP
'G' = ANALOG_DOWN
'J' = ANALOG_LEFT
'L' = ANALOG_RIGHT
'I' = ANALOG_UP
'K' = ANALOG_DOWN

By pressing ESC button Short Waves receives REQUEST_EXITGAME signal - force game exit or power off the real hardware.

Right now the source code is closed.

The author asks for help in testing the emu:

I'd like to have some feedback concerning possible errors. For instances, today I've found that psgl tests don't work on some graphics cards. 

You can download Short Waves 0.0.1 PS3 emulator from here

0

Комментарии 5

  1. Iriday
    Iriday от 31 декабря 2013 03:18
    О_о неожиданно.. успехов работе..! 1 разработка емуля хорошо а 2 лучше)
  2. Apocalypse
    Apocalypse от 31 декабря 2013 04:46
    Круто! Ждем чудес через 2-3 года!
  3. Miha_xXx
    Miha_xXx от 31 декабря 2013 11:19
    Ну ок, разраб молодец, а вот закрытый исходный код не круто!
  4. Iriday
    Iriday от 31 декабря 2013 14:40
    может как то разрабы 2 емулей объединяться 7( так дела намного лучше пойдут.. надеюсь так и будет..
    и конечно то что я тут написал ничего не изменит.
    Еще вопрос интересует.. автор планирует дальше емуль развивать? и в одиночку или планирует еще людей подключить (именно норм программистов) ?
Добавить комментарий

Оставить комментарий