Разработка и ромхакинг > Инструменты
[SMD] Видео - отладка игр с помощью Gensida
(1/1)
DrMefistO:
В этом видео показаны основные возможности специального дебагер-плагина для 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
Навигация
Перейти к полной версии