Разработка и ромхакинг > Ромхакинг и программирование
[Видео] Отладка игр с помощью Gensida (SMD)
(1/1)
DrMefistO:
Неправильный vimeo url
В этом видео показаны основные возможности специального дебагер-плагина для IDA, позволяющего отлаживать игры для Sega Mega Drive / Genesis. Если вы еще стеснялись использовать Gensida, то вот Вам отличная возможность начать.

Сссылка на тему по Gensida: http://www.emu-land.net/forum/index.php/topic,74337.0.html
krocki:
В дебагере важны две вещи:
1: Больше функций.
2: Удобства в использовании тех же функций.
Doomguard45:
Заметил, что дебаггер не всегда запускает игру, останавливал дебаггер и запускал вновь - и всё работает, не понял с чем это связано
Lin:
Скажите, чем отлаживать игры Sega/Mega CD?
DrMefistO:

--- Цитата: Doomguard45 ---Заметил, что дебаггер не всегда запускает игру, останавливал дебаггер и запускал вновь - и всё работает, не понял с чем это связано
--- Конец цитаты ---

Да, известная трабла. Бывает, если останавливать эмуляцию, а затем снова ее запускать. Постараюсь ее пофиксить в одном из будущих релизов.

--- Цитата: Lin ---Скажите, чем отлаживать игры Sega/Mega CD?
--- Конец цитаты ---

Теоретически, можно с помощью Gensida. Только Loader'а нет для анализа внутренностей. А так - как отладчик оно будет работать.

P.S. Позже залью на youtube, правда разбив на части.
SeregaZ:
не программист, французским не владею: а тут можно как-то получать некий... эээ... лог команд для звукового процессора?
shadwolf21:
 :wow: Ого!очень крутая штука! :D Спасибо большое автору за то, что создает такие полезные вещи и причем за просто так :) очень сильно помогает при отладке. Но есть вопрос. Я может чего то не догоняю, как можно просмотреть значения регистров $0C00000, $0C00004, или там к примеру $0A10000, $0A10002 ,$0A10004 - Gensida я так понимаю распознает их, и помечает именами как в следующей команде:
 lea     (VDP_DATA).l,a4
если я к примеру захочу посмотреть значение регистра VDP_DATA ($0C00000) - меня пересылают на следующую строчку:
VDP:00C00000 extern VDP_DATA
Я думал что все эти регистры копируются на какую то область данных, в которой потом спокойно можно смотреть текущие значения, но данная запись ссылается на внешнюю переменную.Вот и возник вопрос как посмотреть текущие значения таких вот регистров
DrMefistO:
shadwolf21, спасибо за интерес к отладчику)

Если нужно, могу добавить чтение данных регистров. Просто по сути, это регистры-статуса, либо же, результат чтения будет зависеть от ранее записанной в командный порт команды.
Например, записав в VDP_CTRL команду чтения VRAM, то в VDP_DATA будет находиться текущий word читаемых из VRAM данных.

С регистрами версии и статуса VDP проще, если их только на чтение опрашивать.

Насчёт чтения регистров джойстиков - не могу понять, что даст знание последних записанных туда данных.

В общем, с какой целью тебе нужно знать значения по данным адресам?
shadwolf21:
DrMefistO,  да, я с тобой согласен в плане того, что в эти регистры только пишется инфа, а если что то нужно с них получить, то существуют специальные механизмы для этого - как ты говорил чтение из VRAM памяти. Просто при отладке всякие ситуации могут случиться и как бы хочется контролировать что по факту туда записывается и вообще что там есть. Вот для чего эта штука была бы полезна  :)  .Нууу я так считаю)
DrMefistO:

--- Цитата: shadwolf21 от 04 Март 2018, 12:04:41 ---DrMefistO,  да, я с тобой согласен в плане того, что в эти регистры только пишется инфа, а если что то нужно с них получить, то существуют специальные механизмы для этого - как ты говорил чтение из VRAM памяти. Просто при отладке всякие ситуации могут случиться и как бы хочется контролировать что по факту туда записывается и вообще что там есть. Вот для чего эта штука была бы полезна  :)  .Нууу я так считаю)
--- Конец цитаты ---
К примеру, запись в VDP_DATA регистр: записанное будет либо в VRAM, либо в CRAM, либо в VSRAM.
Запись в VDP_CTRL отслеживать полезно только при пошаговой отладке, но функционал по отслеживанию работы с VDP уже есть в меню Tool->VDP RAM. А там две вкладки с необходимой фигнёй.

Какие ещё реальные примеры необходимой инфы есть? Просто я хочу понять, что реально нужно, чтобы добавлять.
shadwolf21:
DrMefistO, я просто спросил, можно ли так такого добиться в твоей наработке и ответ на свой вопрос получил. То что касается добавлять или нет - я тебя не заставляю этого делать, тут уж тебе решать. То что касается целесообразности)да ты меня почти убедил что вроде как этого делать не стоит, но я тебе еще раз повторяю - ситуации при отладке разные бывают, и тут я считаю что такой контроль через прямой просмотр данных регистров был бы не лишним. Но все равно спасибо что продолжаешь заниматься данным продуктом, и не забрасываешь его оказывая обратную связь  :)
mr287cc:
Апну некротопик.
Просто мысли вслух. Хотелось бы поиметь выгрузку, готовую к компиляции vasm'ом, например. На данный момент у компилятора есть вопросы к выгруженным данным.

1. Это, похоже что ненужная компилятору инфа, я выпилил описание структуры из исходника, ошибки исчезли.


--- Код: ---struct_sprite   struc ; (sizeof=0x8)
y:              dc.w ?                  ; ------yy yyyyyyyy (Vertical coordinate of sprite)
hsize_vsize:    dc.b ?                  ; ----hhvv (HSize and VSize in cells)
link:           dc.b ?                  ; -lllllll (Link field)
pcvhn:          dc.w ?                  ; pccvhnnn nnnnnnnn
                                        ; (p - Priority, cc - Color palette,
                                        ; v - VF, h - HF, n - Start tile index)
x:              dc.w ?                  ; ------xx xxxxxxxx (Horizontal coordinate of sprite)
struct_sprite   ends

--- Конец кода ---

2. Компилятору не нравится "extern". Можно решить скрытием данных сегментов перед выгрузкой дизасма, но тогда придётся ручками набивать include файл с дефайнами регистров.

3. Это, я так понимаю, данные, которые почему-то пометились как код, ничего не поделать, придётся идти в Ida и переразмечать.


--- Код: ---error 9 in line 70874 of "Fantastic Dizzy.gen.asm": instruction not supported on selected architecture
>                addi.w  #$96A,a0

error 9 in line 70875 of "Fantastic Dizzy.gen.asm": instruction not supported on selected architecture
>                cmpi.l  #$FAB12C8,a4

error 9 in line 70882 of "Fantastic Dizzy.gen.asm": instruction not supported on selected architecture
>                move.w  dword_0(pc)

error 9 in line 70888 of "Fantastic Dizzy.gen.asm": instruction not supported on selected architecture
>                chk

error 1 in line 70892 of "Fantastic Dizzy.gen.asm": illegal operand types
>                jsr
--- Конец кода ---

Может есть что-то ещё.
DrMefistO:
Про портирование исходников я делал несколько видео. Советую посмотреть тут:
http://www.emu-land.net/forum/index.php/topic,81112.0.html
Навигация
Главная страница сообщений

Перейти к полной версии