Dolphin, октябрь 2014: исправления, запуск новых игр

.fez {width:640px;} .cnt {text-align:center;} .left {padding-top:3px; padding-right:5px;} .topleft {padding-top:2px; padding-right:5px; text-align:right; vertical-align:top;} Как обычно, в конце очередного месяца разработчики эмулятора Dolphin выложили отчет о проделанной работе за предыдущие 30 дней. Октябрь-месяц в основном прошел под знаком исправлений:

Поддержка более высоких внутренних разрешений

Наверное, одно из самых значительных преимуществ эмулятора Dolphin заключается в том, что игры можно запускать в повышенном разрешении – в режиме Full HD (1920х1080) и больше. До недавних пор разрешение в Dolphin ограничивалось четырехкратным повышением (4х – 2560x2112). Но причиной тому были не технические препятствия, а споры о том, как лучше всего реализовать данную функцию в графическом интерфейсе программы. Вообще стоит сказать, что поддержка более высоких разрешений была добавлена neobrain’ом давным-давно, но ею нельзя было воспользоваться, потому что разработчики не могли прийти к общему соглашению в вопросе ее реализации в интерфейсе. RachelB, скорее всего, это все надоело, и он добавил управление разрешением в .ini-файлы.

Теперь очень большие разрешения можно включить через .ini-файл настроек видеорежима, либо через .ini-файл конкретной игры. Чтобы увеличить разрешение в пять раз (5х), нужно добавить строку "EFBScale = 8", в шесть (6х) – "EFBScale = 9" и так далее.

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

Исправление загрузок/сохранений MMU на границах страниц памяти

В плане запуска GameCube игр, Dolphin – очень совместимый эмулятор. C учетом всех веток эмулятора (некоторые из которых так никогда и не были добавлены в основную ветку), Dolphin может запустить все игры для GameCube… кроме одной. Star Wars Rogue Squadron III: Rebel Strike – единственная игра, которую Dolphin вообще не мог загрузить.

К неведению разработчиков, после недавних изменений в MMU, PAL версия игры формально начала работать, правда при этом она постоянно вылетала и имела кучу других жутких багов: например, у десантников отсутствовали головы, у AT-ST – ноги, были проблемы с цветами и анимацией.

Так как проблемы с анимацией присутствовали лишь в JIT и JITIL рекомпиляторах, Fiora решила заняться проблемой. В итоге незначительные изменения, которые должны были исправить PAL версию игры, исправили практически все проблемы игры, связанные с MMU. И впервые в истории Dolphin, заработала NTSC версия Rebel Strike.

До изменений PAL версия была едва ли играбельной

Теперь игру можно пройти до конца

Увы, но в игре осталось множество других багов: подвисания, проблемы с zfreeze и плохой эмуляцией звука в режиме HLE (В LLE все в порядке) – все глюки Rogue Leader перешли и в Rebel Strike (у игр один разработчик и один движок). Но самые бесбашенные ребята подтверждают, что на Dolphin’е игру можно пройти от начала и до конца. Почему они в этом уверенны? Потому что они ее прошли на эмуляторе.

Папки карт памяти теперь поддерживают более 127 файлов

Благодаря представлению обыкновенных карт памяти в виде папок, в эмуляторе можно добавить новый функционал. Но карты памяти от GameCube имеют одну особенность: в них нельзя разместить больше 127 файлов, даже если карта памяти не полная. Это аппаратное ограничение, которое можно было бы обойти только с помощью какого-нибудь дикого хака.

Данное изменение позволяет эмулятору работать с неограниченным числом сохранений, без всяких проблем. Благодаря данному решению загружается нужное сохранение и около сотни других сохранений. При этом предпочтение отдается сохранениям, которые используются игрой. А это значит, что игры вроде Super Smash Bros. Melee и Metal Gear Solid: The Twin Snakes как и раньше смогут сканировать КП для открытия всяких бонусов и пасхальных яиц.

Точный захват видео и звука

В прошлом видеозахват в Dolphin имел ряд существенных недостатков:
1. Видео сохранялось только тогда, когда эмулятор отрисовывал кадры. Бывает так, что загрузочные экраны выдают один кадр каждые несколько секунд. На практике это означало, что запись не соответствовала тому, что происходило на экране.

2. До недавних пор звук захватывался в реальном времени. Если компьютер не мог воспроизвести видео в реальном времени, то звук ломался.

3. Если запись видео происходила не на полной скорости, то тогда из-за проблемы №1 аудио и видео ряд оказывались рассинхронизированными.

Да, захват видео в Dolphine оставлял желать лучшего. Больше всего неудобств оно доставляло ребятам из TASVideos. Их сверхбыстрые прохождения невозможно записать без полноценной функции захвата видео и аудио.

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

RisingFog занялся решением проблем с захватом видео: взял вышеупомянутый патч, исправил баги, добавил пару необходимых функций для улучшения совместимость. В итоге теперь Dolphin может нормально записывать видеоролики – без всяких патчей, хаков и прочего барахла.

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

Реализация Bounding Box через программную эмуляцию

Разработчик Crudelios трудился чуть ли не целую вечность над очень сложной задачей – эмуляцией эффект Bounding Box в играх серии Paper Mario.
 

В итоге после многих добавлений и исправлений он пришел к кардинальному решению – реализации данного эффекта через программный видеорежим. Режимы OpenGL и D3D эмулируют его таким же образом. Это, конечно, влияет на скорость эмуляции – в среднем нагрузка возрастает на 20% – но только тогда, когда этот эффект используется игрой. Учитывая, что старая реализация данной функции работала через пень-колоду, и что новые ревизии эмулятора получили значительную прибавку в производительности, данное решение того стоило. Между прочим Super Paper Mario всегда вылетал на таких моментах, из-за неправильной эмуляции bounding box. Но теперь эта проблема решена!
 

Теперь, когда bounding box работает как следует, опция по отключению его эмуляции была, наконец-то, убрана. Эта функция используется лишь в четырех играх (в том числе и в Resident Evil на Wii: по непонятной причине разработчики включили ее, при том что она вообще не используется в игре), а без нее эти игры не работают.

Исключение опции MMU speedhack

Не стоит паниковать раньше времени: MMU speedhack, от которого зависят более 100 игр, никуда не исчез. Просто после точного тестирования был выявлен ряд закономерностей:
1. Включение опции MMU speedhack никак не влияло на игры, которые его не использовали (в том числе и на производительность).

2. Случайное отключение MMU speedhack может привести к тому, что игры перестанут работать.

3. Игры, не занесенный в базу данных файла .ini, вылетают, пока кто-то не сообщит об ошибке.
И что самое главное, MMU speedhack, несмотря на свое название, является более точным методом эмуляции данной функции – по сравнению с обыкновенной реализацией. Почему? Потому что есть три уровня эмуляции MMU, и MMU speedhack как раз занимает место посередине:
  • Эмуляции MMU отключена: большинство игр и не подозревают, что она вообще существует.
  • MMU speedhack: для MMU выделяется огромное количество памяти. Благодаря этому большинство игр с MMU работают без проблем.
  • Полная эмуляция MMU: точный мапинг MMU с проверкой учета исключений. Требует значительных ресурсов, точная эмуляция весьма сложна.
Поэтому с учетом этой информации разработчики решили включить MMU speedhack по умолчанию и убрать соответствующую опцию по его отключению.

MMU: отключение BAT Resolution

Одна из самых «тяжелых» и продвинутых функций MMU, реализованных в Dolphin. Когда Fiora искала возможности по оптимизации различных функций, она поняла, что игры с MMU тратят значительное количество времени на трансляцию BAT.

Подвох заключался в том, что для большинства игр (за исключением нескольких) это действие было совершенно не нужно. Отключение BAT Resolution дает 10% прибавку к скорости в играх, использующих MMU. При этом нет никаких побочных последствий. Единственная игра, которая, возможно, и нуждается в этой функции (Star Wars: The Clone Wars), не запускается на эмуляторе.

D3D: исправление XFB Scaling

В прошлом месяце писалось, что патч, исправляющий XFB Scaling, был не полным – он не работал в режиме D3D. Долго ждать не пришлось: вскоре slx7R4GDZM сделал патч и для D3D. Теперь XFB Scaling работает в обоих видеорежимах.
 

До

После

Исправление точного физического доступа памяти к MEM2 через MMU

Некоторые игры для Wii требуют полной эмуляции MMU. По различным причинам многие такие игры в прошлом не работали на Dolphin. Skidau нашел одну из причин: MEM2 не соединялся с MMU. Исправление данной ошибки привело к тому, что одна из игр Wii, использующих MMU, – Toy Story 3 – начала запускаться.
 

Hash: unroll CRC loop

Включение опции Safe Texture Cache, конечно, не приводит к такой же потери производительности, как при активации программного режима или режима интерпретатора, но она все равно работает медленнее, чем Medium и Fast Texture Cache. Например, в игре для виртуальной консоли Castlevania III: Dracula's Curse, частота кадров при использовании Medium Texture Cache и среднестатистического процессора Ivy Bridge достигает 300 кадров в секунду. Но для правильной работы игры требуется Safe Texture Cache – а с ним частота падает до 40 кадров в секунду на том же процессоре.
 

Опустим технические подробности и перейдем к сути: благодаря новому алгоритму работы с контрольными суммами, скорость эмуляции с Safe Texture Cache возросла на 5-50%, в зависимости от игры.

Cache D3D State

В Dolphin, как известно, есть два равных видеорежима, каждый со своими плюсами и минусами. Но в последнее время режим OpenGL начал обгонять режим D3D. Разработчик kayru решил устранить данный разрыв, и ускорил производительность D3D на 15%-30%. Как видно по графику, больше всего D3D ускорился на картах производства NVIDIA, хотя до производительности OpenGL он, в большинстве случаев, все еще не дотягивает. А вот для пользователи карт от AMD, D3D становиться еще более предпочтительным. (да, HD5850 – очень старая видеокарта, но в то же время мы наглядно видим, насколько старая видеокарта может влиять на частоту кадров).
 

Но это еще не все: в ревизии 4.0-3926 D3D режим получил еще одну прибавку в скорости – около 10%, в зависимости от игры. А теперь складываем все показатели вместе и…

DSP-HLE: Clamp AX Volume

За последние годы звуковой режим HLE получил много улучшений и достиг того уровня, когда в большинстве игр между HLE и LLE практически нет различий. К сожалению, во многих играх для Wii и GameCube присутствовала одна странность: звук в режиме HLE начинал трещать без всяких видимых причин.

Оказывается, при переписывании New-AX-HLE была упущена одна деталь: из-за нее звук, при превышении определенного порога громкости, начинал заедать. В DSP-LLE данная ошибка отсутствовала, и поэтому он стал ключевым при поиске решения.
 

До

После

В итоге во всех играх Wii, GameCube и Wiiware было исправлено невероятное количество статических шумов. Если у вас звук периодически трещит – качайте последнюю ревизию.

D3D: включение клиппинга глубины

Режим D3D годами преследовала одна странная проблема: объекты уровней, графического интерфейса и прочие предметы, которые должны были отсекаться режимом D3D, по непонятной причине им отрисовывались.
 

До

После

Это происходило потому, что клиппинг был… выключен. Вот тебе на. Но когда его в D3D режиме включили, баги с отсеканиями еще больше проявили себя – тяжелое наследство режима D3D9. Вскоре новое исправление должно исправить большинство проблем и в целом уравнять режимы OpenGL и D3D.

К сожалению, те игры, которые исправлялись хаком для Sonic Unleashed, убранным ранее, теперь в D3D снова не работают. В OpenGL они с недавних пор не работают, а вот в D3D их графический интерфейс отображался, потому что там был отключен клиппинг.

Сейчас решение вопроса с отсеканием является одним из самых важных: в разработке находится ряд исправлений. Изображения внизу демонстрируют, что даже с этими исправлениями клиппинг в Dolphin все еще работает с ошибками.
 

Тест запущен на приставке Wii

Тест запущен на эмуляторе Dolphin

0

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

  1. metalslayer
    metalslayer от 2 ноября 2014 22:30
    А что там насчёт других эмулей?
  2. mckertis
    mckertis от 1 ноября 2014 22:59
    Это все замечательно, но когда наконец появится возможность редактировать гребаные имена игр в общем списке ? Исошки дампили куча народу, и теперь одни названия все маленькими буквами, другие большими, третьи вперемешку, четвертые символьной графикой, пятые иероглифами.
  3. от 4 ноября 2014 00:14
    Круто! Спасибо,вам за месячные итоги, всегда интересно читать.
  4. Shutter95
    Shutter95 от 5 ноября 2014 11:13
    Улучшения действительно заметны. No More Heroes 2 эмулируется фуллспид без проблем с графикой
  5. max_masters98
    max_masters98 от 6 ноября 2014 11:57
    Spyro: Enter the Dragonfly на эмуляторе PCSX2 эмулируется хорошо. Если бы не та подсказка про патч, я бы просто напросто бы забыл про игру. NTSC-USA образ в ней есть небольшие подлагивания. PAL-EUR образ - полёт нормальный.
Добавить комментарий

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