Проект начался в октябре 2012
г. Изначально я хотел вскрыть
ресурсы одной игры, но весь
контент оказался зашифрован
(или запакован) и, чтобы
вскрыть алгоритм шифровки,
мне понадобился отладчик
процессора Cell. Я скачал
исходники RPCS3, отстроил код
и запустил, программа вылетела
с ошибкой, не успев ничего
сделать. Меня это жутко
расстроило, и я решил
построить свой лунапарк.
К проекту RPCS3 этот эмулятор
не имеет никакого отношения,
не позаимствовано ни строчки
кода. Все написано полностью с
нуля на основе моих
собственных исследований.
На данный момент реализована
эмуляция PPU, SPU и RSX.
Поддерживаются почти все
инструкции. Вершинные и
пиксельные шейдеры
транслируются напрямую - из
бинарного кода RSX в бинарный
код DirectX, без промежуточного
представления в виде
исходного кода. Есть кэш
текстур, поверхностей и
шейдеров. Все вызовы в ОС
перехватываются и
исполняются нативно, то есть
официальная прошивка для
работы не нужна.
Динамической рекомпиляции
PPU и SPU не будет. Сейчас уже
реализована статическая
рекомпиляция PPU:
генерируется файл на c++,
который в оффлайне
компилируется и полученная dll
подгружается и исполняется,
заменяя работу интерпретатора.
Рекомпиляции подвергаются не
только простые блоки, но и
ветвление, и вызовы функций.
Инструкция по использованию
рекомпиляции будет позже.
Эмулятор не имеет
графического интерфейса. Путь
к эмулируемому эльфу и все
настройки задаются в
конфигурационном файле
sw_emu.ini, который должен
находится в папке с
эмулятором.