Эмулятор Dolphin - список изменений за лето 2016.

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

Наиболее заметные изменения:


Null Video Backendв исполненииdegasus

В то время как многие ожидали увидеть очередной рендерер на основеVulkan,degasusпридержал туз в рукаве  -Null Video Backend. Между прочим,Null Video Backendявляется самымбыстрымрендерером вDolphin. Остальные рендереры даже близко не стоят рядом с ним! Причина такой производительности... ну... просто оно ничего не рисует.Null Video Backendполезен в основном для тестеров и разработчиков, которые решают очень специфичные задачи. Обычные пользователи не должны использовать его, за исключением решения проблем с производительностью. Будем надеяться, что следующий рендерер будет именно тем, чего ждут пользователи!

JIT - повышение производительности Quantized Loads and Storesв авторствеmmastrac

На первый взгляд это довольно простое изменение, но на самом деле реализовать его было достаточно сложно. Ранее разработчики поняли, что многие парныеLoadsиStoresв играх, использующихGraphics Quantization Registers(GQR), равны нулю, поэтому они создали быстрый (оптимизированный) способ зануления при попадании на медленный алгоритм для ненулевых значений. В то время как это давало хорошую скорость в большинстве игр,mmastracсообразил, что прирост производительности может быть еще больше. Вместо того чтобы просто иметь оптимизированный способ зануления,Dolphinтеперь оптимизирует его для любой постоянной величины, что приводит к значительному повышению производительности для всех игр, которые используют ненулевые постоянные значения дляGQR. Это может привести к10%ускорению в этих играх.

Мы много раз пытались, но так и не  смогли найти лучший способ улучшения производительности при использовании ненулевыхGQR. Единственное, что мы обнаружили – это то, что Dirt 2 сломан, т.к. использует зарезервированные битыGQR.

Разделение записи видео / аудио файлов, которые ранее были искажены или рассинхронизированы(автор –Fog)

Возможности записи видео и звука были сильно улучшены с момента релизаDolphin 4.0. В то время как пользователи все еще должны вручную комбинировать звук  и видео, в большинстве игр всё просто работает. Но, т.к.Dolphinстановится все более точным, все орехи, как всегда, сыплются на  ранее написанный код.

Одно из основных правил при записи видео вDolphin– выходное разрешение не должно изменяться в процессе, иначе видео будет повреждено. Ранее это правило касалось только тех пользователей,  которые изменяли настройки графики во время записи видео, так что не было никакой реальной необходимости что то исправлять. Но, эмулятор становится всё более точным на протяжении многих лет и даже научился эмулировать изменение разрешения в играх. Одним из ключевых примеров является обнаружение эмуляторомGameCube Widescreen; т.к. это влечет за собой изменение разрешения игры, теперь можно легко получить сломанное видео. Это означало, что игры, созданные в формате 4:3, напримерF-Zero GX, а затем проверяемые перед главным меню на доступность широкоэкранного режима, не могут быть записаны с настройками по умолчанию.

Еще один пример – это  те игры, которые незначительно изменяют соотношение сторон картинки на протяжении игры, напримерSuper Smash Bros. Melee. Между главным меню и меню выбора персонажа соотношение сторон незначительно меняется, и теперь, когдаDolphinболее точно эмулирует пропорции игры, рисуемое изображение соответствует этому изменению. Это также приводит к повреждению видеозаписи игры!

Для устранения этих проблем Fogпредложил идею: разделять видео при изменении разрешения. Хоть это и не самое элегантное решение, но оно работает так, как планировалось, и запись не будет повреждена.

Что касается вопросов записи звука,Dolphinтеперь эмулирует изменение частоты дискретизации должным образом вместо того, чтобы использовать жестко прописанные значения. Некоторые игры значительно изменяют частоту дискретизации, и это может вызвать проблемы с синхронизацией звука и видео. СейчасDolphinразделяет запись звука при изменении частоты дискретизации, что позволяет гораздо легче синхронизировать видео и аудио файлы.

В качестве дополнительного бонуса,Fogтакже добавил настраиваемые пути для сохранения получаемых аудио- и видеофрагментов (например, теперь их можно сохранять на второй жесткий диск).

Освобождение ресурсов PatchEngine при завершении работы (JosJuice)


Раньше вDolphinчит-коды от предыдущей сессии игры очищались при загрузке следующей игры. Итак, допустим, вы играете вSuper Smash Bros. Meleeс кодамиNetPlay Gecko, а затем решаете поиграть вSuper Smash Bros. Brawlс чит-кодамиNetPlay. Все работает как задумано.

Проблема заключается в том, что есть конкретные случаи, когда мы можем пропустить это событие. А именно, хоумбрю, которые доставляют серьезные неприятностиsmashladderигркам. Они используютGeckoOSдля того, чтобы использовать сложные чит-кодыBrawlвProject M, но по тому, какDolphinприменяет чит-коды, если они уже ранее запускалиMelee, читы вMeleeбудут располагаться в самом начале блока памяти, что приведет в результате к чтению из памяти неверных данных и аварийному завершению работы эмулятора.

Это упущение случилось по той простой причине, что существует множество различныхGameCube/Wiiтипов файлов, и которые могут быть загружены вDolphinспецифичным образом. Теперь вместо очисткиPatchEngineпри загрузке игры, он очищается при выключении. Это полностью решает все вопросы с утечкойAction ReplayиGecko-кодов из одной игры в другую.

Восстановление Wiimote NetPlay в исполненииmimimiиJMC47

Забавный факт: Wiimote NetPlay никогда не был ни в одной из релизных версий эмулятора. Он был реализован вскоре после выхода Dolphin 4.0 и удален незадолго до релиза Dolphin 5.0, потому что никто из разработчиков не мог заставить его работать должным образом. Эмулируемый Wii Remote в NetPlay был экспериментальной функцией, который так и не оправдал всех надежд.

Для того чтобы сделать Wiimote NetPlay на самом деле готовым к использованию, должны были быть решены несколько вопросов:
  1. У вас был один шанс начать сессию Wiimote NetPlay. Если вы не смогли сделать это с первой попытки, вы должны были выйти из эмулятора, поскольку любые последующие попытки намертво вешали эмулятор.
  2. Каждый экземпляр Dolphin должен был случайным образом назначить Wiimote слоты для создания хаотичности и десинхронизации Wii Remote.
  3. Расширения Wiimote не работают.
  4. Большинство игр просто не загружаются.
Со всеми этими проблемами Wiimote NetPlay был очень незрелой особенностью и поэтому был удален передDolphin 5.0. С помощью исправлений от mimimi и JMC47 все эти вопросы должны быть решены. Это не означает, что можно бежать пробовать Wiimote NetPlay, это все еще особенность, которая должна использоваться только очень опытными пользователями, которые знакомы с NetPlay и его причудами. Данная реализация по-прежнему тянет за собой много данных от каждого игрока, пользователи должны синхронизировать свои настройки Wiimoteперед игрой, а также некоторые неизвестные данные из эмулятора попадают в свободную NAND память, а это означает, что портативная копия Dolphin без импортируемой с консоли NAND-памяти рекомендуется для использования в Wii NetPlay.

NetPlay: лучший пользовательский опыт (автор –Aestek)

Aestek поставил перед собой задачу: сделать NetPlay проще и эффективнее для пользования. В Dolphin 4.0 была добавлена куча улучшений для более легкой настройки  NetPlay, например, запрет записей на карту памяти, обход сервером пользователей, которые не могут открыть порты, а также автоматическая синхронизация важных настроек. Но это все внутренние особенности: сам интерфейс пользователя оставался в основном без изменений и не использовал новые функциональные возможности. Для того чтобы упростить внешний вид UI и сделать всё это более удобным для использования в NetPlay, Aestek сделал кучу изменений:
  1. Проверка NetPlayMD5 диска / SD: позволяет пользователям проверять и сравнивать контрольные суммы ихISO и SD. Если контрольные суммы MD5 не совпадают, это может привести к рассинхронизации.
  2. Отображение чата на экране: ранее беседа с другими пользователями при игре в полноэкранном режиме причиняла боль. Теперь есть настройка, позволяющая NetPlay отправлять сообщения на экран! Это также включает в себя сообщение "Обнаружена возможная рассинхронизация!".
  3. Оповещения больше не приводят к зависанию сессии NetPlay: если возникают нефатальные оповещения вDolphin во время NetPlay, они теперь отображается в чате.
  4. Симпатичный интерфейс пользователя  и цветной чат.
Это основные изменения; намного больше было сделано для получения лучшего пользовательского опыта!
.
.
Настраиваемый RTC, авторFog

Часы реального времени (Real Time Clock,RTC) используются во многих играх.Pokemon Channel, например, заставляет вас ждать в течение одного дня для получения нового контента.Animal Crossingимеет различные события для дня и ночи, а некоторые люди не имеют возможности играть в разное время суток.

DolphinэмулируетRTC, просто используя системное время хост-компьютера. Это элегантное решение. Мало того, что оно просто работает, но если кто-то хочет изменить время в игре, ему нужно просто изменить системное время! Очень просто. Но есть два случая, когда изменения системного времени недостаточно - Tool Assisted Speedrunning (TAS) иNetPlay. Многие игры используютRTCв качестве переменной для генерации случайных чисел, а также для создания реиграбельныхTASили стабильногоNetPlay.NetPlayпросто работает используя реальное время, но сTASвсё немного сложнее.

Для решения этих проблем Fogдобавил настраиваемый параметрRTCк дополнительным настройкамDolphin. Большинство пользователей может не беспокоиться об этом, но если вам когда-нибудь понадобится изменитьRTC, сделать это теперь намного проще!
.
Нравится16
Комментарии (2)
B
i
u
Спойлер