Введение
Программное обеспечение для эмуляции Nintendo GameCube и Wii
Dolphin — это бесплатный эмулятор игровых консолей GameCube и Wii с открытым исходным кодом. С ростом мощности мобильного оборудования с годами запуск Dolphin на Android стал возможным вариантом. Dolphin получил высокую оценку в ИТ- и игровой прессе благодаря высокой совместимости, стабильному развитию, множеству доступных функций и возможности играть в игры с графическими улучшениями по сравнению с оригинальными платформами.
Истоки (20032006)
Dolphin был впервые выпущен в сентябре 2003 года Хенриком Ридгардом (ector) и F|RES как экспериментальный эмулятор GameCube, способный загружаться и запускать коммерческие игры. Звук еще не эмулировался, а общее качество работы было очень низким. Многие игры вылетали при запуске или работали крайне нестабильно; средняя скорость составляла от 2 до 20 кадров в секунду (FPS). Название эмулятора отсылает к кодовому имени разработки GameCube. В декабре 2004 года разработка Dolphin была временно приостановлена, а разработчики выпустили версию 1.01 как финальную версию эмулятора. Позже, в октябре 2005 года, разработчики возобновили работу над проектом.
Открытый исходный код, эмуляция Wii и версия 2.0 (20072010)
Dolphin стал проектом с открытым исходным кодом 13 мая 2007 года, когда разработчики опубликовали исходный код в репозитории SVN на Google Code под лицензией GPL 2.0. Как и в предыдущих сборках, различия между последовательными версиями обычно незначительны. К февралю 2009 года программное обеспечение смогло успешно загрузиться и запустить официальное меню Wii System Menu v1.0. Вскоре после этого почти все версии системного программного обеспечения Wii стали загружаемыми. К апрелю 2009 года в большинство коммерческих игр, как для GameCube, так и для Wii, можно было полноценно играть, хотя и с небольшими проблемами и ошибками, при этом значительное количество игр работало с небольшим количеством дефектов или без них. Настройки эмулятора позволили пользователям впервые играть в отдельные игры на полной скорости, звук был значительно улучшен, а графические возможности стали более стабильными, за исключением незначительных проблем. К концу октября 2009 года в эмулятор было добавлено несколько новых функций, таких как автоматическое пропускание кадров, что повысило производительность эмулятора, а также общую стабильность. Также была улучшена функция Netplay, позволяющая игрокам играть в многопользовательские игры для GameCube и Wii онлайн с друзьями, если игра не требовала Wii Remote. Графический интерфейс эмулятора также был переработан для удобства пользователей, а плагин Direct3D был дополнительно доработан. 12 апреля 2010 года был выпущен Dolphin 2.0.
Выпуски 3.0 и 3.5 (20102012)
К концу ноября 2010 года разработчики устранили большинство проблем со звуком, включая треск, расширили совместимость с играми и повысили общую скорость и точность эмуляции. В июне 2011 года вышла версия 3.0. Были исправлены некорректное поведение пользовательского интерфейса, аварийные завершения работы, графические артефакты и другие разнообразные ошибки. В примечаниях к выпуску указано, что большинство игр "работают идеально или с незначительными дефектами".
Порт на Android и версия 4.0 (2013)
6 апреля 2013 года команда разработчиков Dolphin выпустила первые сборки для мобильной операционной системы Google Android. По состоянию на сентябрь 2013 года лишь небольшое количество устройств обладало аппаратной частью, необходимой для поддержки OpenGL ES 3.0, а Google официально начал программную поддержку этого стандарта с июля 2014 года с выходом Android 4.3 Jelly Bean. Игры работали в среднем со скоростью один кадр в секунду. Разработчики отмечали Samsung Galaxy S4 как один из первых телефонов, способных запускать игры на более высокой скорости, однако даже он имел существенные ограничения по производительности. 22 сентября 2013 года вышла версия 4.0 Dolphin, содержащая улучшения серверной части для рендеринга OpenGL и звука OpenAL, расширенную поддержку контроллеров, улучшения сетевых функций и оптимизацию производительности для сборок macOS и Linux. Через несколько месяцев были выпущены версии 4.0.1 и 4.0.2, исправляющие незначительные ошибки.
Отмена устаревших технологий, улучшения точности и выпуск 5.0 (20132016)
12 октября 2013 года (4.0 155) поддержка Direct3D 9 была удалена из проекта, оставив Direct3D 11 и OpenGL в качестве двух оставшихся графических бэкэндов. Команда Dolphin объяснила это тем, что плагин был "по своей сути несовершенен", и попытки обойти его многочисленные недостатки "тратили время и замедляли разработку". 19 мая 2014 года команда Dolphin Team объявила о прекращении поддержки 32-битных версий Windows и Linux. Команда Dolphin заявила, что поддерживать 32-битные сборки становится всё сложнее, и 32-битные релизы просто предлагали худший опыт по сравнению с 64-битными. Кроме того, подавляющее большинство пользователей уже использовали 64-битные процессоры, а большинство пользователей 32-битных сборок были совместимы с 64-битными системами, но по ошибке использовали 32-битные версии. Совокупность этих факторов сделала поддержку 32-битных систем ненужной. 32-битные сборки для Android испытывали схожие проблемы, но поддержка ARMv7 оставалась ещё год, пока не был готов JIT-компилятор AArch64 и не появились соответствующие устройства. В течение 2014 года в Dolphin было реализовано несколько новых функций, включая эмуляцию загрузки дисков, нативную поддержку контроллеров GameCube, идеальную эмуляцию звука и исправления ошибок, которые присутствовали с самых первых дней существования эмулятора. Улучшения в блоке управления памятью (MMU) позволили многим играм впервые успешно запускаться и работать. Доработки эмулятора также позволили ему хорошо работать на Android с процессором Nvidia Tegra, хотя и с некоторыми трудностями. 25 мая 2015 года команда разработчиков Dolphin объявила об успешном изменении лицензии кодовой базы с "только GPL 2.0" на "GPL 2.0 или более поздней версии", чтобы улучшить совместимость лицензий с другими проектами с открытым исходным кодом и иметь возможность обмениваться кодом с ними. В течение декабря 2015 года проект Dolphin исправил проблемы со звуком в контроллерах TR Wii Remote. Через два месяца, в феврале 2016 года, после нескольких месяцев разработки, графический бэкэнд Direct3D 12 был интегрирован в основную ветку разработки. 24 июня 2016 года была выпущена версия 5.0 Dolphin, содержащая различные исправления и дополнения для эмулятора.
Развитие после 5.0 (2016 г. - продолжается)
Разработка графического рендерера на основе Vulkan началась в июне 2016 года. Через месяц разработчик объявил, что он "теперь полностью функционален" и что "пришло время для доработки, исправления ошибок и оптимизации производительности". Разработка рендерера продолжалась в отдельной ветке в течение следующих нескольких месяцев, пока код не был окончательно объединен в октябре 2016 года. В сентябре 2016 года разработчики Dolphin объявили, что эмулятор теперь способен запускать все официальные игры для GameCube. Последней игрой, поддержка запуска которой была добавлена, была Star Wars: The Clone Wars, эмуляция которой оказалась особенно сложной из-за использования игрой блока управления памятью. Эмуляция Triforce была удалена из-за отсутствия поддержки. В марте 2017 года была добавлена поддержка канала Wii Shop Channel. Две экспериментальные функции, так и не достигшие стабильности, были удалены в мае 2017 года: рендерер Direct3D 12, которому достойную замену нашёл бэкенд Vulkan, и альтернативный JIT-компилятор CPU IL. Продолжая работу, начатую ранее в этом году над вопросами, связанными с производительностью графики, разработчики Dolphin реализовали решение давней проблемы, известной как "заикание" при компиляции шейдеров. Эта проблема возникает из-за того, что эмулятор ожидает компиляции графическим драйвером шейдеров, необходимых для новых окружений или объектов. Решение, которое представляют Ubershaders, разрабатываемые с 2015 года, заключается в эмуляции конвейера рендеринга Wii и GameCube посредством интерпретатора, работающего на графическом процессоре хост-системы, до тех пор, пока не будет скомпилирован специализированный шейдер, который можно будет использовать для последующих кадров с меньшими затратами на производительность. Добавление опиралось на ряд функций, которые ранее были добавлены в эмулятор исключительно ради точности, таких как поддержка канала Wii Shop Channel. Также после тщательной реверс-инженерии была добавлена поддержка Wii File System – зашифрованной файловой системы, изначально разработанной для Wii U. Среди других новых функций были асинхронная компиляция шейдеров, аналогичная Ishiiruka, функция автоматического обновления и интеграция с Discord. Летом 2018 года Vulkan-рендерер Dolphin был портирован на macOS через MoltenVK, а Android-версия была возвращена в Google Play с ежемесячными обновлениями. В апреле 2019 года Dolphin добавил три новые функции: унификацию общих видео-бэкендов, браузер серверов NetPlay и эмуляцию Wii MotionPlus. Рендерер Direct3D 12 также был возвращён. В период с ноября 2019 года по январь 2020 года была добавлена поддержка Windows 10 на ARM. По словам разработчиков, это оказалось "довольно просто", поскольку поддержка AArch64 уже присутствовала как часть Android-порта. В статье утверждается, что RVZ, по сравнению с форматом NKit, корректно эмулирует время загрузки. Кроме того, в статье утверждается, что RVZ приближается к или превосходит размеры файлов "очищенных" образов дисков WIA и GCZ, оставаясь при этом без потерь. В мае 2021 года Dolphin добавил поддержку macOS на ARM64, что было очень востребованной функцией после объявления о переходе Mac на Apple Silicon. В июле 2021 года команда Dolphin объявила об интеграции эмулятора mGBA в Dolphin, позволяя эмулятору Game Boy Advance работать внутри Dolphin одновременно для имитации подключения GameCube к GBA. Помимо поддержки передачи данных в эмулируемые игры GBA, одновременно может быть активно до четырех экземпляров Game Boy Advance в Dolphin, что делает многопользовательскую игру в игры, требующие GBA, такие как The Legend of Zelda: Four Swords Adventures и Final Fantasy Crystal Chronicles, возможной в Dolphin локально и через netplay. В июне 2022 года разработчики Dolphin объявили, что последующие версии не будут работать на Windows 7, Windows 8 и Windows 8.1, объясняя это тем, что менее 2% пользователей и ни один из разработчиков больше не используют эти операционные системы, что затрудняет разработку и тестирование на них, а также тем, что новейшие версии зависимостей эмулятора, такие как Qt, больше не поддерживают их. В июле 2022 года разработчики Dolphin выпустили инфраструктуру графических модов, позволяющую пользователям вносить графические изменения во время рендеринга изображений игры. В сентябре 2022 года версия для macOS добавила собственный графический бэкенд Metal, который обеспечил улучшенную производительность по сравнению с бэкендом Vulkan, работающим через MoltenVK.
Отмененный релиз на Steam и возражения Nintendo (продолжается в 2023 году)
В марте 2023 года разработчики Dolphin объявили о выпуске версии эмулятора на платформе Steam в формате "раннего доступа" ко второму кварталу 2023 года. На странице Steam не было изображений официально лицензированных игр для Wii или GameCube, конкретных упоминаний Nintendo со стороны разработчиков Dolphin и заявления о том, что "это приложение не содержит игр". Разработчики Dolphin отметили, что версия для Steam будет лучше интегрирована с пользовательским интерфейсом Steam, после того как они получили Steam Deck до его выпуска. В мае 2023 года они объявили о бессрочной отсрочке релиза в Steam из-за запроса о прекращении деятельности, основанного на DMCA, отправленного Nintendo в Valve. Казначей проекта Пьер Бурдон, упомянутый в электронном письме, предположил, что наличие ключа AES 128, используемого для шифрования дисков с играми Wii, в исходном коде эмулятора могло позволить Nintendo заблокировать релиз в Steam. Представитель Nintendo заявил Kotaku, что Dolphin "незаконно обходит меры защиты Nintendo" и что "незаконные эмуляторы или пиратские копии игр наносят ущерб разработке и в конечном итоге подавляют инновации". Ютубер и разработчик видеоигр Димитрис Джаннакис сообщил на своем канале Modern Vintage Gamer, что в 2020 году обнаружил доказательства того, что пользователь с ником "Littlemac123" предупреждал о наличии ключей в исходном коде RetroArch Core. 20 июля 2023 года разработчики Dolphin объявили об отмене запланированного релиза эмулятора в Steam из-за юридических возражений Nintendo. В своем блоге они уточнили, что Nintendo не отправляла уведомление DMCA, а Valve обратилась к Nintendo за одобрением перед тем, как разрешить выпуск Dolphin в Steam. Они также заявили, что не будут удалять ключ дешифрования после консультаций с юристами, аргументируя это тем, что наличие ключа AES, используемого Wii для дешифрования розничных игр, подпадает под исключение для обратной инженерии в 17 U.S.C. § 1201(f), которое обеспечивает совместимость, и указали на то, что ключ стал общеизвестным с момента его обнаружения, а также используется с чит-кодами Action Replay и Gecko. Функции оригинальных контроллеров GameCube и Wii Remote можно назначить на контроллеры ПК. Эмулятор позволяет использовать настоящие контроллеры GameCube через USB-адаптер. Поддерживаются расширения контроллеров, включая адаптер Wii MotionPlus, Nunchuk, Classic Controller, гитары, барабаны и вертушки. Dolphin поддерживает два типа сетевой игры: эмулированный локальный мультиплеер и Nintendo Wi-Fi Connection. В сочетании с интегрированным эмулятором Game Boy Advance Dolphin поддерживает связь между играми для GameCube и Game Boy Advance. Dolphin может загружать пользовательские текстурные карты, которые могут иметь более высокое разрешение, чем оригинальные текстуры. Эмулятор также позволяет экспортировать текстуры игры для их модификации графическими художниками. Dolphin может выводить стереоскопическую 3D-графику на любой платформе, на которой он работает. Поддерживается специальное оборудование, такое как Nvidia 3D Vision. Возможность играть в игры в стереоскопическом 3D – это функция, которой не было в оригинальных консолях, хотя Nintendo первоначально планировала выпустить стереоскопический 3D-экран для GameCube. Доступны дополнительные функции для улучшения качества графики, такие как пространственное сглаживание, анизотропная фильтрация, постобработка пиксельными шейдерами и широкоэкранный хак для принудительного вывода широкоэкранного изображения в играх, которые не поддерживают его изначально. Игры также могут достигать частоты кадров выше, чем предполагалось.
Прием
Эмулятор Dolphin получил положительные отзывы от игрового сообщества, особенно хвалится возможность запускать игры с разрешением, превышающим родные 480p GameCube и Wii. Редактор PC Gamer Уэс Фенлон назвал его «одним из немногих эмуляторов, способных улучшить многие игры» и отметил его постоянное «внесение значительных, а порой и огромных улучшений в совместимость и производительность». Некоторые используют Dolphin для решения определенных проблем в играх; в 2012 году предприниматель и отец Майк Хойе, играя с дочерью в The Legend of Zelda: The Wind Waker, заметил, что игра обращается к главному герою как к мужчине, независимо от введенного имени. Он изменил весь текст диалогов в кат-сценах, чтобы персонаж был женского пола, отредактировав игру с помощью шестнадцатеричного редактора и протестировав ISO-образ с помощью Dolphin. Функция Netplay эмулятора, по мнению ArsTechnica, служит альтернативой прекратившей работу Nintendo Wi-Fi Connection. По данным статистики Dolphin (на март 2017 года), эмулятор имеет около 50 000 ежедневных активных пользователей, а исходный код доступен в специальном репозитории на GitHub.
Дельфин VR
Dolphin VR — это сторонний проект, предназначенный для расширения функциональности Dolphin и добавления возможности играть в игры в виртуальной реальности с точным масштабом, соответствующим реальным размерам, полным полем зрения (FOV), 3D-интерфейсом, независимым прицеливанием и возможностью оглядываться. Поддерживаются HTC Vive и Oculus Rift. Последняя версия — 5.0, а исходный код размещён на GitHub.
Несовместимость лицензии
Фонд свободного программного обеспечения придерживается позиции, что программное обеспечение, распространяемое по лицензии GPL, нельзя объединять с лицензией Oculus SDK.
Дельфины
DolphiniOS — это сторонний форк Dolphin для Apple iOS. Он недоступен в App Store и распространяется через репозиторий Cydia для устройств с джейлбрейком, репозиторий AltStore или IPA-пакет для установки вручную. Ранее DolphiniOS монетизировался за счёт предоставления раннего доступа к бета-версиям подписчикам Patreon, однако программа Patreon была приостановлена в 2020 году, и разработчики заявляют о полном прекращении этой практики. Вместе с этим было объявлено о приостановке разработки проекта из-за перерыва в работе ведущего разработчика. Первая предварительная версия была опубликована 9 декабря 2019 года, а релиз 1.0 последовал за ней через неделю. Версия 3.0 вышла 20 июня 2020 года. Среди заметных новых функций — возможность отображения игр в виде сетки, возможность обновления меню Wii System как в десктопной версии Dolphin, возможность установки WAD-файлов на Wii NAND и возможность смены диска во время работы эмулятора. Автор с сайта Wololo.net написал о производительности DolphiniOS: «На моём iPad Pro 10,5 дюйма (A10X) Mario Kart Wii работает довольно хорошо, и прохождение первых двух трасс Кубка Грибов дало отличные результаты!». Исходный код размещён на GitHub.
Исирука
В ответ на удаление поддержки Direct3D 9, разработчик Dolphin Тино создал неофициальный форк под названием Ishiiruka 18 октября 2013 года. Название происходит от японского слова, обозначающего морского свинью Далла. Хотя основное внимание уделяется Windows с поддержкой Direct3D 9 и 11, существуют также версии для Linux. Этот форк призван решить проблемы с производительностью, присутствующие в Dolphin, такие как микрозадержки из-за компиляции шейдеров, однако для этого используется асинхронная компиляция шейдеров, что не является полноценным решением и в некоторых случаях приводит к появлению объектов с задержкой (pop-in). Ishiiruka служит основой для официального клиента сетевых сообществ Super Smash Bros. Melee – Faster Melee и SmashLadder. Джон Линнеман из Eurogamer в октябре 2016 года в эпизоде Metroid Prime своей видеосерии Digital Foundry Retro рассказывает об Ishiiruka. Он сравнивает игру в Metroid Prime через Ishiiruka с игрой на оригинальном оборудовании, Wii, GameCube и стандартном Dolphin. Линнеман утверждает, что «преимущества [эмуляции] перевешивают любые незначительные проблемы, с которыми можно столкнуться». Он продолжает отмечать особенности Ishiiruka, которые «позволяют улучшить графику по сравнению со стандартным Dolphin. Например, можно добавить множество дополнительных улучшений, таких как глубина резкости, окклюзия окружающей среды, различные типы цветокоррекции и многое другое [ ]. Также стоит отметить, что эта версия Dolphin помогает избежать рывков, вызванных компиляцией шейдеров, которые были в официальном релизе эмулятора, и обеспечивает более плавный игровой процесс».
PrimeHack (первый взлом)
PrimeHack — это версия Dolphin, созданная shiiion, модифицированная для игры в Metroid Prime: Trilogy на ПК с использованием клавиатуры и мыши. Существуют две версии PrimeHack: одна основана на Ishiiruka, а другая — на оригинальном Dolphin. Последняя, по состоянию на октябрь 2019 года, является основным направлением разработки после периода приостановки с февраля по октябрь 2019 года. Исходный код размещен на GitHub.