Эмулятор Game Boy с полноценным отладчиком? - PullRequest
6 голосов
/ 04 августа 2011

Как часть работы, которую я выполнял, чтобы ответить на этот вопрос о технической работе сбоя в Pokémon Red , я искал способ использовать стандартный отладчик для отладки Game Boy ROM. Хотя многие из эмуляторов, которые я нашел, имеют некоторую поддержку для отладки, ничто из того, что я нашел до сих пор, не помогло.

В качестве фона на данный момент я пытался использовать встроенные функции Visual Boy Advance для отладки, но они не особенно полезны для того, что я пытаюсь сделать. VBA не имеет возможности устанавливать точки останова, и поскольку он шагает вперед на уровне фреймов, а не инструкций, я не могу увидеть, как выполняется код, когда он мне действительно нужен. Хотя VBA говорит, что поддерживает отладку GDB, я не смог заставить ее работать. Я попытался кросс-компилировать GDB для ARM согласно инструкциям, но не смог заставить GDB подключиться к эмулятору (он распознал бы, что была программа для подключения, но сообщил, что протокол был нарушен). Я повторил это с одинаковым успехом как в Windows с Cygwin, так и в Ubuntu Linux. Мы с другом пытались использовать Insight / GDB, но столкнулись с точно такими же проблемами.

Я также пытался использовать отладчик NO $ GBA, но он отказался загружать мой ПЗУ для Pokémon Red (а затем оскорбил меня, сказав, что я ничего не могу сделать, это исправить, так как файл просто выровнен неправильно).

Кроме того, я попытался загрузить эту версию Visual Boy Advance, в которой утверждается, что в ней установлен отладчик, но по какой-то причине я не могу включить ее для включения отладчика. Нажатие F11 согласно его инструкциям не имеет никакого эффекта.

Я полагаю, что я проявил должную осмотрительность, пытаясь заставить работать отладчик, и я удивлен, что ни один из них не сработал. Кто-нибудь знает простой и понятный способ отладки игр Game Boy с использованием стандартных методов отладки? Меня больше всего интересует возможность поставить в память точки прерывания записи (чтобы посмотреть, какая подпрограмма забивает определенные части памяти). Я был бы очень признателен, если бы кто-то из первых рук сделал это, предоставив подробные сведения о том, как это сделать, поскольку он-лайн ресурсы по этому вопросу кажутся довольно ограниченными.

Ответы [ 3 ]

6 голосов
/ 03 ноября 2011

Если вы просто хотите отлаживать свои старые игры, вы можете также использовать bgb , который имеет несколько вариантов отладки, таких как трассировка, точки останова, профилировщик и многое другое.

4 голосов
/ 15 января 2012

Нет $ GBA для игр GBA; Вы не хотите $ GMB. Обратите внимание, что он очень глючный, и без зарегистрированной версии (которую невозможно получить легитимно) довольно уродливо.

bgb бесплатен и очень похож на No $ GMB, но еще хуже.

Предполагается, что VBA имеет отладчик, но существует миллион различных версий, поэтому удачи в поиске правильной.

1 голос
/ 05 августа 2011

Посетите сайт GbaDev.org и посмотрите на форумах. Это лучшее место в Интернете для вопросов GBA или даже GBC. Я могу сказать вам, что существует много версий VBA, но не существует. «Нет», который вы хотели, технически была платой за версию, но Мартин Корт уже несколько лет не отвечает на электронные письма или что-то еще, и я больше не уверен в его статусе. Я также могу ответить на некоторые вопросы лично для вас, если вы захотите или поможете с отладчиком.

Я смог зайти на сайт no $ main, загрузить версию no $ gmb для Windows и использовать ее для отладки при запуске в черно-белом режиме - этого должно быть достаточно для вас. F12 открывает ромы, F2 переключает точки останова, пробелы, F3 переходит, Ctrl-G переносит вас по адресу (или символу), а Ctrl_B разрешает условные точки останова (безусловно, самая мощная функция для вас.) (3000)! установил бы точку останова чтения / записи по адресу 0x3000. (0300..03003)! устанавливает на диапазон. Поскольку вы ищете конкретные изменения адреса, это то, что вы хотите.

...