DC-SWAT Forum

Полная версия: Возможно подключить купюроприемник, монетоприемник к Dreamcast?
Вы просматриваете yпpощеннyю веpсию форума. Пеpейти к полной веpсии.
Страниц: 1 2 3
А в SH4 ассемблере есть подобие INT 3? По-моему легче (как для нас, так и для процессораSmile) было бы джампом сделать в эти самые 32 пустых килобайта, сделать там свое черное дело (+ скопировать строки, которые мы затерли джампом) и вернуться обратно.
Вот только.. если еще в PE я представляю себе как это сделать, так как под винду есть OllyDbg, то в SH-ELF бинарниках ууу....))
в элфах для пс2 я спокойно правил код, т.к файл не динамический. в дриме я пока не знаю...

в пс2 printf и подобные функции вывода отладочных собщений можно выводить подкоректировав код. т.к основная программа проверяет переменную типа debug ( или подобную) на 0 или другой код. в релизе он обычно занулён. пэтому либо отключить поверку либо в перемнную искусвенно записать что нужно...

или нет кода инициализации SIO или кода вывода в этот самий порт, решается дописываенимем его в какенить заведомо ненужные участки элфа и соответвенно навдятся джампы или джлалы (j или jal )
Ну начнем с того что для дрима ты не найдешь elf файл игры, там только бинарник уже и он не динамический, уже заточено там все под конкретные адреса. Да и вообще у дрима такая система, там все программы не динамические, все всегда сидит в бинарнике, никакой прошивки как таковой нет, ну кроме работы GD-ROM и еще кое чего.
По поводу дебага. Во первых, скорее всего при сборке релиза он вообще там не компилится и это правильно, зачем занимать место не нужным мусором.
Во вторых, для дебага использовался спец. девайс, который цеплялся к G2 Bus (скорее всего он был просто встроен в Devkit), сериал порт же никогда в коммерческих играх не использовался для дебага, ну может если только единичные случаи о которых мало кому известно.
я првёл аналогию. если бинарник, то тем проще. я же написал глвное чтобы не динамич.

ну бинарник это отдельный файл типа ехе или в образе игры гдето сидит и грузиться просто заливкой в память.

хотяя чтото приоминаю например про IP.BIN ам в какойто стандартн адрес заливается.

да, при релизе могли отключить все сообщения. действительно инфа в игре бепослезная , но по ней многие хакеры-крякеры могли чтонить отследить...))
Цитата:По поводу дебага. Во первых, скорее всего при сборке релиза он вообще там не компилится и это правильно, зачем занимать место не нужным мусором.
Короче Ayla на форуме dcemulation занимался тем, что переводил Shenmue на французкий язык. Так вот он мне рассказывал, как он адреса менял и заменял дебаг мэсседжи на свой код, ибо больше его никак втулить нельзя было. Т.е. там существует некая хрень, насколько я понял, связанная с форматом инструкций самого проца просто, адреса переходов и вообще все смещение они относительны адреса команды (либо программного счетчика). Поэтому просто взять и переместить кусок кода там как бы нельзя, а в конец нельзя лепить потому что там некая секция .bss, в которую тоже запрещена запись. Одним словом, пространство для своих кодов остается только в debug-сообщениях.
Хотя если честно, как по мне, мне кажется что он где-то привирает.
Допустим, что у нас даже такой формат команды, очень сложный и замороченный, и зависящий от PC (т.е. от текущего положения вызывающей команды):
http://s1.ipicture.ru/uploads/20120114/1AK2GI3B.jpg
Что мешает нам, скажем, в зависимости от изменившегося PC, просто изменить displacement так, чтобы наше результирующее смещение не указывало в точности на наши данные? Ну и т.п., вы меня поняли.
{....}
далi буде....
IP.BIN и "BOOT.BIN" грузятся всегда в одни и те же определенные адреса.
Да действительно конкретно встроить в код (т.е. прям в бинарник с игрой) свой кусок, наверное возможно только в места под ресурсы (важность которых может быть игнорированна) или в места под текстовые сообщение, которые не используются или их можно усечь. Потом уже в бинарнике ставить просто прыжок в ту область, тем самым не вызывать смещение кода.
Ну да, все верно.
Не знаю, мне кажется было бы неплохо иметь какой-либо автоматизированный дебаггер\дизассемблер, который умел бы распознавать код вызовов Katana (99% игр на дрим были написаны именно под нее, насколько я понимаю), это бы существенно упростило понимание программ. Так конечно в куче асма понять что-то очень затруднительно.
Вот тебе пожалуйста дизасм бинарников Dreamcast с возможностью подхвата MAP-файлов KATANA: http://www.mediafire.com/?z9ijh9qjvd3ji8j
Хотя мне он лично ничего не дает Smile
Я дебажил Win32 PE бинарники (ну еще немного (совсем немного) dotNET). Но это был совсем другой уровень, учитывая наличие и функционал программ для этого.
Более высокий уровень (нежели та консольная программка) предоставляют дебаггеры в эмуляторах. Но вот SWAT к примеру говорит, что там мало что соответствует действительности (то-есть реальному выполнению кода на SH4 в Dreamcast), и единственный нормальный эмулятор с более-менее правдоподобным дебаггером - это lxdream, но он написан под LinuxSmile
Нам удалось запустить его под cygwin, но скорость его работы с включенным opengl рендерингом (который кстати не нативный, а тоже портированный под cygwin - Mesa 3D) через X сервер оставляет желать лучшего, намного лучшегоSmile
В смысле, почему мало соответствует?
Я имел ввиду не выполнение кода, а эмуляцию железа. Железо в эмуляторах не эмулируется на низком уровне, кроме как в lxdream, но в нем конечно тоже далеко не все есть. Эмуляторы склонны и к поглощению ошибок в коде, так как они сами их могут порождать тоже, а вылетать сразу не очень то весело для пользователя. Я лично сталкивался не раз когда один и тот же код работал в эмуле, а на дриме нет.
ну... найти место вписывать свой код это не такая уж и проблема. можно дописать в конец файла. и потом сместить указатель на HEAP...

я как то же искал эмкль который может пошагам показать как пашет SH4 при работе эмуля дрима... но както так и не понял верно ли он работает...

так BOOT.BIN это и есть екзешник игры?

для пс2 есть визуализаторы-дисасемблеры. конечно кот в асме видить трудно... но прикол в том что при компиляция си кода компиль делает похожие весчи. например а вызов функции JAL , потом можно предзагрузить адреса регов
Да BOOT.BIN это и есть исполняемый файл, название правда условное, как правило он называется 1ST_READ.BIN
Может не в тему но...
http://emdkay.net/bartop/dreamcast10arcade5.jpg
Дак это не NAOMI ? Просто сверху плата SEGA, и там видно процессор от Dreamcasta
Страниц: 1 2 3
URL ссылки