Интеграция MGBA: знакомство с интегрированным GBA

Ваши глаза не обманывают вас. Начиная с 5.0 – 82052 , теперь Dolphin имеет mGBA , непосредственно встроенную в это новый способ взаимодействия Game Boy Advance с играми GameCube. Для тех, кто не знает, mGBA – самый известный и точный эмулятор GBA того времени, который с момента своего создания быстро улучшался. Недавно мы писали о mGBA, добавляющем поддержку наш протокол TCP GBA , но это что-то совершенно новое. С интеграцией и синхронизацией, выполняемой bonta , подключение ваших любимых игр GameCube к Game Boy Advance для многопользовательской игры и других бонусных функций теперь значительно упрощено. Урезанная версия mGBA, получившая название Integrated GBA , загрузится вместе с Dolphin при установке на один или несколько портов контроллера. Эти экземпляры mGBA синхронизируются с эмуляцией GameCube для безупречной стабильности соединения. Объединив эти два эмулятора в одном пакете, возможности подключения GBA теперь работают с популярными функциями, такими как сохранения, входные записи и netplay ! Все это сопровождается дополнительным бонусом в виде улучшенной производительности и совместимости. Если вы нам не верите, проверьте это сами!

Добраться до этого момента было нелегким делом. который охватывает поколения разработчиков и эмуляторов. Если мы собираемся рассказать полную историю имитации взаимодействия GBA с GCN, нам нужно начать с самого начала.

Наследие GameCube и Game Boy Advance Communication

Как особенность GameCube, возможность подключения Game Boy Advance была в значительной степени продвинута в первые дни системы на мероприятиях. например, E3, журналы и, конечно же, телевизионные рекламные ролики. С талантливыми разработчиками из Sonic Team USA , Nintendo EAD , The Pokemon Company и других, выпускающих названия, которые использовали бы преимущества этой функции, было легко увидеть потенциал. И, в лучшем случае, игры с подключением GBA невероятно увлекательны и предоставляют уникальные возможности, которые вы не сможете найти ни на одной другой консоли.

Как известно тем, у кого был GameCube, таких впечатлений было немного и они были редкостью. Эта функция была оставлена ​​в неудобном месте, где она была дорогостоящей и требовала большого количества игр, чтобы оправдать стоимость, но из-за небольшой базы пользователей большинство разработчиков не желали вкладывать значительные усилия в возможности подключения GBA. Есть некоторые неоспоримые жемчужины, но чаще всего возможности подключения GBA плохо закреплялись как своего рода функция флажка. Теперь, когда библиотека настроена, мы можем отсортировать типы возможностей подключения GBA по пяти приблизительным категориям.

Тем не менее, несколько игр, которые действительно поддерживали возможность подключения к GBA, представляли собой интересную проблему эмуляции. За прошедшие годы несколько разработчиков взялись за мультисистемную миссию.

Эмуляция GBA <-> Эмуляция GCN

Самые ранние зарегистрированные реализации эмуляции подключения GBA восходят к примерно 2015, причем эта функция впервые была обнаружена в Дельфин г 5617 . Хотя мы не знаем точных деталей подключения самых ранних версий к эмулятору GBA, мы знаем из учетных записей разработчиков, что несколько идей были опробованы с акцентом на лучший эмулятор GBA того времени VBA-M .

Но прежде чем мы смогли подключиться к другому эмулятору, мы нужно было понять, как на самом деле работает соединение. Игры GameCube на самом деле шифруют двоичный файл GBA, который отправляется в различные игры, и то, как он это делает, на самом деле создавало небольшую проблему для Dolphin на раннем этапе. Процесс шифрования происходил на цифровом сигнальном процессоре (DSP) под специальным микрокодом, который мы называем Микрокод GBA . Это может показаться странным, поскольку большинство людей рассматривают цифровой сигнальный процессор (DSP) GameCube / Wii специально для

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

Наиболее примечательной частью этого процесса является то, что шифр, используемый GBA BIOS для дешифрования, включает этап, на котором данные подвергаются операции XOR с ником автора, kawasedo. Это относится к Томохиро Кавасэ , который также закодировал функции эмуляции NES, которые будут использоваться в играх с подключением к GBA, таких как Metroid Prime и многие другие.

Все это происходит один раз во время первоначального подключения и занимает лишь небольшую часть. кадра. После этого игра быстро переходит к предыдущему микрокоду, прежде чем вы даже услышите прерывание звука. Особо следует отметить, что в некоторых играх для Nintendo от первых производителей этот шаг пропущен и микрокоды не меняются местами. В этих редких случаях игра (или служебный диск) реализует процесс шифрования непосредственно в коде PowerPC. Это включает в себя The Legend of Zelda: The Wind Waker , Animal Crossing и, возможно, некоторые служебные диски.

Если не считать этого небольшого шика, протокол, в котором GCN взаимодействовал с GBA, был чрезвычайно простым. Соединительный кабель GBA подключается к порту данных GBA и подключается к порту контроллера GameCube. На стороне GameCube связь затем обрабатывалась последовательным интерфейсом (SI). Основная проблема заключалась в том, чтобы найти хороший способ реализовать связь между двумя совершенно разными эмуляторами. Хотя мы знаем, что были опробованы несколько методов, сохранившаяся реализация той эпохи использовала протокол управления передачей (TCP) для связи между эмуляторами GameCube и GBA. Хотя использование сети может показаться странным выбором , решение было принято в попытке сохранить опыт наличие нескольких отдельных устройств, подключенных к GameCube. Идея заключалась в том, чтобы при желании вы могли подключить VBA-M на том же ПК

или вы можете подключить его с другого компьютера в той же сети. Эти усилия были инициированы shuffle2 , и хотя старые журналы поддержки, похоже, указывают на то, что эта функция была просто фреймворком и имела очень мало функциональных возможностей, пользователи утверждали, что получение Остров GBA из Animal Crossing был возможен. Принимайте это как хотите.

Признаки жизни

Хотя первоначальная опция контроллера GBA появилась в , первое свидетельство true играбельность появилась в начале 2015 , с сообщениями о разработке от shuffle2 , объясняющий, как использовать новые параметры Joybus в VBA-M и что делать в Dolphin. Он, конечно, включил сом e скриншоты, которые поразят будущих игроков.

Соединение GBA наконец заработало, но производительность была ужасной. Это произошло из-за обфускации, о которой мы упоминали ранее. DSP-HLE от Dolphin не поддерживает микрокод GBA, что вынуждает пользователей возвращаться к DSP-LLE. И это не рекомпилятор DSP-LLE мы наслаждаемся сегодня. Нет, это был интерпретатор DSP-LLE . shuffle2 потерял интерес к проекту, сказав, что пока не будут решены крайние проблемы с производительностью, нет особого смысла что-либо делать. В конечном итоге это будет исправлено с помощью DSP-HLE-реализации микрокода GBA, разработанной … shuffle2 . Благодаря поддержке DSP-HLE производительность в нескольких играх, которые работа резко возросла, но не устранила основные проблемы с удобством использования и низкая совместимость.

Разочарование по поводу того, как медленно развивается эта функция, в конечном итоге обострило отношения между разработчиками VBA-M и Dolphin. в 2014 . Результатом драмы стали shuffle2 теряет интерес к проекту подключения VBA-M к Dolphin, но это не будет его последним набегом на сферу подключения GBA. Он вернулся в 2021, на этот раз используя ядро ​​GBA Higan в качестве катализатора своего нового эксперимента. Когда вы думаете о лучших эмуляторах GBA, использование ядра GBA от Higan может показаться странным на первый взгляд, особенно в 2020. Он был довольно незрелым и не мог сравниться с высокой совместимостью или производительностью VBA-M. Но это не то, что ему нужно. Ядро GBA Higan предлагало то, чего VBA-M абсолютно не мог: чистая, модернизированная кодовая база, с которой было проще работать и интегрировать.

Он также отказался от реализации связи TCP. shuffle2 вместо этого написал новый

Метод связи с общей памятью . Это был метод межпроцессного взаимодействия с меньшими накладными расходами, который позволял более жесткую синхронизацию, но означал, что вы не могли запускать GBA на отдельных машинах. Увидев, насколько проблематично запуск эмулятора GBA по локальной сети для предыдущего метода, он в любом случае больше не считал эту идею жизнеспособной.

Эти изменения принесли немедленные результаты, так как произошли огромные видимые улучшения как в производительности, так и в совместимости. <-> The Legend of Zelda: Four Swords Adventures (и Four Swords +!) теперь были плавными и отзывчивыми. Было множество новых игр, которые также работали, например The Legend of Zelda: The Wind Waker , Коллекция головоломок Nintendo , Animal Crossing и Mega Man X: Command Mission . Теперь поддерживалось более полудюжины игр. И что еще более впечатляюще? Все эти игры были запущены на полной скорости ! Мы в блоге были так взволнованы этой функцией, что сделали видео в преддверии ее возможного выпуска!

Те, кто тогда следил за разработкой, уже знают, что эта реализация никогда не будет объединена. Как мы с болью узнали в блоге, иногда самое сложное – это не доказать, что что-то может работать, а, скорее, это процесс очистки и доведения до завершения. Совместимость и производительность были отличными, но использовать это было сложно, и было много способов вызвать сбои. Также был

маленькие проблема, заключающаяся в том, что вы могли подключить только один эмулятор GBA за раз в прототипе, а реализация была заблокирована для Windows машины. Хотя все эти проблемы можно было исправить, затратив достаточно времени и усилий, проект в конечном итоге застопорился и никогда не увидит свет.

Современный TCP GBA

С из-за постоянной приостановки проекта Higan Dolphin Shared Memory, эмуляция подключения GBA находилась в режиме жизнеобеспечения. Ранний протокол поддерживал только несколько игр и не имел особого смысла. Это было медленно, громоздко и, что еще хуже, многие разработчики с обеих сторон проявляли пренебрежение к поддерживающему проекту подключения. Поскольку разработчики VBA-M даже составляли планы по удалению этой функции из официальных сборок, действительно казалось, что все разваливается … пока этого не произошло.

Одной из основных причин, по которой вещи смогли выдержать тяжелые времена, был разработчик, известный как

скидау . Они участвовали как в Dolphin, так и в VBA-M, а также помогали с GBA-частью 2015 реализация. В течение последующих лет они оказывали поддержку и помогали пользователям наладить работу функций подключения GBA. Благодаря этому опыту они получили глубокие знания о проблемах и проблемах, связанных с подключением GBA. В отличие от shuffle2 , которые использовали то, что узнали из 2011 реализация для создания нового протокола,

скидау взяли то, что они узнали, и попытались улучшить текущую ситуацию TCP GBA. В 2020, плоды их труда были доставлены с множеством изменений как в Dolphin, так и в VBA-M.

Leave a comment

Your email address will not be published. Required fields are marked *