| При написании АСМ-кода для различных игр на Сегу, процесс отладки и проверки этого кода бывает сильно затруднен. Не всегда возможно точно знать результат работы последней команды, быть уверенным, что сработал бранч в нужном месте. Конечно, современные эмуляторы позволяют просматривать RAM, VRAM, регистры и пр., но этого не всегда достаточно. А если код в добавок ко всему большой, это настоящая головная боль. Намучавшись так с отлаживанием некоторых больших кусков кода, у меня появилась абсолютно сумасшедшая для меня тогда идея - сделать инструмент, который мог бы как-то облегчить этот нелегкий процесс. Но я пошел намного дальше, и в результате появился... SANDBOX. M68K Sandbox - моя первая программа для Сеги, написанная целиком на ассемблере. Она изначально задумывалась как инструмент для отладки программ. Идея проста - вы пишите какой-нибудь законченный кусок кода, включаете его в программу и запускаете в эмуляторе. А SANDBOX предоставит вам средства для отладки, например возможность просматривать регистры и RAM. Но самое главное, при написании ASM-кода вы сможете воспользоваться дополнительными командами, для вывода текста, значений регистров и даже приостановки программы в любом месте. Например, команда OUT выводит строку на экран, команды OUTW, OUTB и OUTL выводят на экран числа из регистров, памяти - откуда угодно. PAUSE может приостановить выполнение программы в любом месте и ждать нажатия кнопки на джойпаде. Причем когда программа приостановлена, вы можете просматривать состояния регистров и памяти на данный момент. А теперь пример из жизни. Допустим, вы не знаете, что делает BCC (или знаете, но сомневаетесь и хотите проверить), можно написать следующий код: Code move.w #$10,d0 cmpi.w #$20,d0 bcc.s BCCWorks out "BCC didn't work!" rts BCCWorks: out 'BCC worked!' rts Когда вы скомпилируете проект и запустите его в SANDBOX'е, вот что получится в результате: (Кстати да, в моей программке можно просматривать исходнички ) BCC не сработал? Попробуйте другое значение в cmp, экспериментируйте! В комплекте с программой поставляются множество примеров, которые расскажут вам об основных вещах в АСМе и о том, как пользоваться дополнительными командами. Кстати, намного более полная версия примера с BCC тоже есть. SANDBOX можно использовать для изучения кода и проверки кода из других игр, пример из Соник 1 тоже в комплекте Новые программы добавляются в Sandbox очень легко - вы просто ложите АСМ-файлы со своим кодом в отдельную папку и после компиляции они будут включены в РОМ. А компиляция - совсем простой процесс: нажимаете на build.bat - и готово. При запуске РОМа в эмуляторе будут показаны все включенные туда ASM-файлы, можно выбирать любой и запускать: Еще пример, вывод одного числа из регистра d0 в различных типах и системах счисления: Code move.b #$F0,d0 ; let's put $F0 to d0 and see it in different modes! outb d0 ; see as Unsigned Hexadecimal break outb d0,signed ; see as Signed Hexadecimal break outb d0,dec ; see as Unsigned Decimal break outb d0,dec+signed ; see as Signed Decimal break outb d0,bin ; see as Unsigned Binary break outb d0,bin+signed ; see as Signed Binary pause move.w #$1020,d0 outw d0 ; see as Unsigned Hexadecimal word break outw d0,signed ; see as Signed Hexadecimal word break outb d0 ; see as byte pause move.l #-$1,d0 outl d0 ; see as unsigned break outl d0,signed ; see as signed break outl d0,trim+signed ; see as signed with triming! rts Результат: Тестовая программая, заполняющая память: Программа пока что в стадии бета-версии, возможны глюки, и просмотр исходного кода работает очень глючно. Если вы заметите внезапные вылеты, баги, пожалуйста, сообщайте. SANDBOX пока что полностью на английском, включая комментарии в примерах и коде самой программы, русские символы пока не поддерживаются, хоть их довольно легко добавить - просто дорисуйте буквы в файле шрифта. Есть только документация на русском. Переводить программу на русский я не планировал, потому что во-первых, она была рассчитана на иностранное сообщество, а во вторых многие термины я знаю только в английском варианте и никак не могу подобрать им нормального перевода =Ъ Скачать И не забудьте прочитать Readme_ru.htm, там даны описания всех команд.
S1 Hacking Studio - Хакерские гиды - Мой бложик
|