Последняя версия эмулятора
1.3

PPSSPP FAQ - Разработка


, , просмотров: 2 324 шт.
Что такое PPSSPP?
PPSSPP - эмулятор PSP, написанный на C++. Он способен оптимизировать инструкции от процессора PSP для процессоров на архитектурах x86, x64 и ARM, используя рекомпиляторы JIT (dynarecs).
PPSSPP может работать как на низкопроизводительных устройствах, так и на более сильных ARM телефонах и планшетах, которые поддерживают OpenGL ES 2.0.

Открытый исходный код
PPSSPP является проектом с открытым исходным кодом, под лицензией GPL 2.0 (или более поздней). Любой желающий может внести свои улучшения в код.
Исходный код находится на Github странице PPSSPP, используя Git систему управления кодом.
Следуя традициям Dolphin, проект PPSSPP очень открыт. Любой желающий может принять непосредственное участие в развитии, сделав запросы на изменение кода, и если вы сделаете значительный вклад вам может быть дано право редактировать код напрямую.

Создание билда
Android:
Вы можете создать билд для Android, используя Windows, MacOSX или Linux.
Перед созданием билда для Android, убедитесь, что вы установили Android SDK и NDK правильно, и что переменная $NDK настроена.
  • Зайдите на ppsspp/android и запустите ab.cmd, либо ab.sh, в зависимости от вашей операционной системы.
  • Откройте проект в Eclipse (Импортируйте его в вашу рабочую среду, также импортируйте "native" проект и подготовьте библиотеку PPSSPP для Android)
  • Создайте билд и запустите его на вашем устройстве. Если вы восстанавливаете часть NDK, вам придется добавить пространство в PPSSPPActivity.java или обновить проект в Eclipse, чтоб сделать новый .apk для вашего устройства.

Кроме того, можно собрать эмулятор, используя Ant. Если вы знаете, как в нем работать, это будет легко для вас.

Логгирование и отладка
Вы можете заметить, что, опираясь на логи, можно выяснить причины многих ошибок. Поскольку PPSSPP имитирует PSP OS, мы получаем нечто похожее на трассировщик системных вызовов.
Есть бездисплейные (без дисплея/аудио) билды, которые очень полезны при работе с pspautotests через test.py. Настоятельно рекомендуем использовать их для нахождения ошибок.
Версии Windows и Qt имеют интерактивные отладчики (Qt в настоящее время не работает). В данный момент эта функция недоступна для мобильных платформ и "SDL" билдов.

Тестовый набор
Так как этот эмулятор должен эмулировать целую OS PSP, тесты очень важны. Некоторые авторы эмулятора PSP помогали создавать тестовый набор, названный pspautotest, и мы сделали его очень функциональным. Есть два скрипта: test.py и gentest.py. gentest.py использует psplink, чтобы управлять тестовой программой на вашем реальном PSP и захватывает текстовую информацию, которую затем сохраняет как [тест].expected. Так же вы можете управлять тем же самым тестом на PPSSPP при помощи test.py, который автоматически сравнивает выходную информацию.

Структура исходного кода
Зависимости:
PPSSPP имеет несколько зависимостей: zlib, OpenGL и его собственная зависимость FFMPEG. Он использует OpenGL ES 2.0 так, что тот же код графики может быть разделен между всеми платформами. Это добавляет несколько библиотек, таких как CityHash и libzip, нужных для простоты построения на Windows.

HLE
PPSSPP является HLE("высокий уровень эмуляции") эмулятором, он имитирует OS PSP посредством софта, а не полными аппаратными средствами. Программа, работающая на OS PSP, может отправлять списки изображения для графических чипов, но не может получить доступ к флеш-памяти или Media Engine, вместо этого она должна пройти через библиотеки и ядро OS PSP. Мы имитируем данный процесс. Это большая работа, PSP OS очень сложна и функциональна, поэтому достижение 100% эмуляции почти невозможно. Тем не менее, мы хотим быть близко к этому...

Atrac3+
Теперь работает, как нужно, поскольку Maxim добавил поддержку расшифровки формата аудио Sony в FFMPEG!

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

Не нужно копировать код из JPCSP, чтобы легко добиться задачи. Пишите код специально для PPSSPP. Использование JPCSP как документации PSP по оборудованию/OS прекрасно подойдет.

Стиль кодирования PPSSPP примерно такой же, как стиль кодирования Dolphin... Единственным отличием является то, что внутренний суффикс имеет значение '_' вместо 'm_' , кроме того, мы предпочитаем открывать скобки на строке источника. Стиль не строго соблюдается, но лучше написать код, в том же стиле, чтобы сделать редактирование и понимание кода проще для других участников проекта.

Список задач, которые необходимо сделать
Если вы не знаете с чего начать, выберите что-нибудь из списка ниже!

Промежуточные задачи:
  • Запуская игры, посмотрите на логи, чтобы увидеть, какие функции отсутствуют или содержат ошибки. Исправьте или реализуйте нужную функцию и посмотрите, идет ли игра дальше.
  • Работа через автоматизированный тестовый набор (см. test.py ). Нужно убедиться, что все работает правильно.
  • Порт PPSSPP на новые платформы, см. ниже.


Дополнительные задачи:
  • Написать окончание для OpenGL ES 3.0 (отдельно от внутреннего интерфейса OpenGL ES 2.0 ), сделать возможным использование новых функций, таких как uniform buffers и VAOs, для увеличения скорости работы и совместимости.
  • Доделать D3D9.
  • Оптимизация работы с декодированием текстур и переформатированием для ARM NEON и SSE2. Обратите внимание, что у вас должно быть совестимое устройство для проверки - не все устройства поддерживают ARM NEON (хотя почти во всех новых устройстах поддержка есть) 

Портирование PPSSPP
Вы можете портировать PPSSPP на другие платформы. Вот неполный список платформ, на которые PPSSPP может быть портирован:

Платформа:  Статус портирования:    Комментарий:
Windows  Завершено  JIT для x86 и x64
Android  Завершено  JIT для ARM
Ouya (Android)  Скоро  Геймпад и JIT
Linux  Завершено  JIT для x86 и x64
MacOSX  Завершено  JIT для x86 и x64. Порт пока что плохой.
Blackberry 10  Завершено  JIT для ARM
Symbian  Завершено  JIT для ARM
Pandora  Завершено(неофициально)  
iOS  Завершено(неофициально)  JIT(нужен Jailbreak)
Raspberry Pi
 Завершено(?)   
MeeGo  Скоро(?)  
Windows Phone 7.x  Невозможно   Нет встроенной поддержки кода. 
Windows Phone 8  Невозможно   JIT не поддерживается, будет очень медленно. 
Windows RT  Возможно  JIT не поддерживается, будет очень медленно. 
Xbox 360  Возможно  Только взломанные консоли. 
Playstation 3  Возможно   Только взломанные консоли. 
Wii  Возможно   Только взломанные консоли. 
Xbox Original  Возможно   Медленно. Только взломанные консоли. 
Playstation 2  Невозможно   Отсутствие ОЗУ, слабый процессор. 
Gamecube  Невозможно  Отсутствие ОЗУ. 
Dreamcast  Невозможно   Отсутствие ОЗУ, слабый процессор. 
P166MMX
 Невозможно   Слабый процессор. 
Nintendo DS
 Вы издеваетесь?   Значительно слабже минимальных требований.
C64  Иди отсюда  Да...

авторизуйтесь для отправки комментария

комментариев 0

Комментариев нет. Будь первым!