Следующая новость
Предыдущая новость

Прогресс эмуляции за июль 2017

Прогресс эмуляции за июль 2017
Второй летний месяц закончился, а значит, можно подводить итоги. Приступаем!
RPCS3Эмулятор PlayStation 3 развивается быстрыми, стабильными темпами. За прошедший месяц было совершено порядка 200 коммитов в основную ветку развития. Основные изменения:

  • реализована поддержка релокаций в LLVM рекомпиляторе PPU
  • реализован фреймскип (пропуск кадров), должно помочь в графически тяжелых играх, жертвуя при этом плавностью анимации
  • возможность многопоточной обработки вершин
  • исправлена эмуляция инструкций FCGT и FCMGT в SPU
  • исправлен "синий / зеленый фильтр", который присутствовал во многих играх (например, Persona 5), а также экстремально высокий уровень яркости
  • исправлены отсутствующие персонажи в Red Dead Redemption, Mafia II и, возможно, в некоторых других играх
  • в Tales of Vesperia теперь отображается почти вся геометрия
  • исправлено мерцание текстур в некоторых играх при использовании Vulkan рендерера
  • LLVM рекомпилятор PPU теперь может повторно использовать загруженные исполняемые файлы
  • улучшена скорость при использовании Vulkan рендерера
  • компиляция функций SPU в asmjit теперь многопоточная (спидап)
  • скомпилированные функции SPU в asmjit рекомпиляторе теперь кэшируются (спидап)
  • реализовано определение состояния зацикливания в SPU (спидап)
  • исправлено начальное состояние таймера в sys_timer, Kingdom Hearts II и другие игры серии ушли в ингейм
  • множество улучшений в LLVM рекомпиляторе PPU, теперь он используется по умолчанию
  • бесчисленное множество фиксов и улучшений в GUI
  • реализован вершинный кэш (ощутимый спидап в большинстве игр)
  • переписан кэш текстур (спидап)
  • теперь возможна загрузка и использование билдов эмулятора под Linux системы с использованием AppImage

Благодаря всем этим изменениям такие игры, как Demon's Souls и Persona 5, стали практически играбельными на не самом топовом железе!.Dolphin.Эмулятор GameCube / Wii традиционно выдает сотни коммитов в месяц. Но в этом месяце произошло особое событие, которое сейчас и рассмотрим.Убершейдеры (смешное название, правда?). Начнем с того, что GameCube - одна из первых консолей с программируемым графическим конвейером, так называемым TEV юнитом (Texture EnVironment). Это означает, что в процессе эмуляции необходимо дизассемблировать микрокод GPU консоли, разбирать его и воссоздавать на современном GLSL / HLSL в виде фрагментных (пиксельных) и вершинных шейдеров. Казалось бы, всё хорошо и замечательно работает, но есть одна проблема: сгенерированные шейдеры должны скомпилироваться драйвером вашей видеокарты, используя при этом ЦП. В графически тяжелых играх каждый спецэффект, как то взрыв, отражение, блик и т.д. может порождать собственный шейдер, который должен быть тут же скомпилирован. К чему же это приводит?.
.Неприятные микрофризы в процессе игры, которые ломают весь геймплей. Разработчики рассматривали несколько вариантов решения данной проблемы:
1. Скомпилировать все шейдеры для всех игр, для различных конфигураций ПК и версий драйверов и хранить их в кэше. Звучит просто, не правда ли? Однако это безумная затея: возможных комбинаций больше, чем песчинок на планете Земля...
2. Предугадать, какие шейдеры требует игра. На самом деле, решение очень сложное, практически нереализуемое. Единственный способ точно узнать, какие шейдеры могут понадобиться игре в различных ситуациях - это пройти её от начала и до конца.
3. Расшаривание шейдеров. Идея заключается в том, что каждому шейдеру можно присвоить UID (Unique ID), и компилировать его перед запуском игры. Решение теоретически должно сработать, однако код графической части эмулятора постоянно изменяется, и не факт, что в скором времени не придется избавляться от UID.
4. Асинхронная компиляция шейдеров. Было реализовано в одном из форков эмулятора разработчиком Tino. Идея заключается в том, чтобы игнорировать компиляцию нового шейдера в тот момент, когда это требуется, а продолжать использовать предыдущий. Новый шейдер компилируется в отдельном потоке, затем применяется после завершения процесса.5. Решение. Написать интерпретатор графического конвейераGameCube /Wii в шейдерах и запускать его на видеокарте. Идея просто безумная, но тем она интереснее для реализации :D Работы в данном направлении были начаты еще в далеком 2015 году разработчикомphire, и доведены до логического завершения разработчикомStenzek. И это действительно работает!.PCSX2
Эмулятор PlayStation 2 развивается достаточно медленно, всего 24 коммита за месяц. Из заметного:

  • удалены хаки для Metal Gear Solid 3 Subsistence
  • исправлены проблемы с эффектом глубины в Finding Nemo
  • упрощены геометрические шейдеры
  • некоторые изменения в GUI
  • переработан алгоритм вычисления высоты фреймбуффера
  • добавлен CRC хак для Dragon Ball Z Budokai Tenkaichi 3


.PPSSPP.Эмулятор PSP недалеко ушел от своего старшего брата, всего 52 коммита:

  • исправлена поддержка Windows XP в LocalFileLoader
  • исправлено масштабирование текстур в D3D11
  • реализована возможность запуска без RIP-адресации между сгенерированным кодом и глобальными данными
  • добавлена поддержка геймпадов NYKO CORE
  • улучшена поддержка полноэкранного режима на мониторах 21:9
  • исправлены SIMD оптимизации при манипуляции с 20 битными значениями
  • исправлен вылет эмулятора на FreeBSD при запуске игры

Xenia - Cxbx-Reloaded

Эмулятор Xbox 360 снова не может порадовать большим прогрессом. Из заметного: исправлены темные цвета в Vulkan рендерере, а также белые рамки вокруг некоторых текстур, добавлена WIP реализация NtProtectVirtualMemory.Эмулятор Xbox выдал в этом месяце 116 коммитов, неплохой результат. Из наиболее заметных изменений - огромные улучшения в HLE эмуляции звука, а также большой объем работ проведен в LLE эмуляции графического процессора..Cemu.Очередной публичный релиз версии 1.8.2. Улучшена производительность рекомпилятора, улучшена эмуляция звука, а также программного декодирования видео. Из наиболее приятных измененний - начаты работы по поддержке RPL библиотек (по аналогии с SPRX модулями в RPCS3). В настоящее время неюзабельно, но в будущем использование LLE-модулей вместо HLE может серьезно улучшить совместимость эмулятора. Ну и, по традиции, превью новой версии:.Вот таким насыщенным получился июль, начинаем мониторить август.Источник

Последние новости