russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 11
Форум ромхакеров » Всё о ромхакинге » Готовые проекты » M68K Sandbox [SMD]
M68K Sandbox [SMD]
vladikcomperДата: Пятница, 05.11.2010, 18:58 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 30
Статус: Оффлайн
При написании АСМ-кода для различных игр на Сегу, процесс отладки и проверки этого кода бывает сильно затруднен. Не всегда возможно точно знать результат работы последней команды, быть уверенным, что сработал бранч в нужном месте. Конечно, современные эмуляторы позволяют просматривать 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'е, вот что получится в результате:

(Кстати да, в моей программке можно просматривать исходнички happy )
BCC не сработал? Попробуйте другое значение в cmp, экспериментируйте!

В комплекте с программой поставляются множество примеров, которые расскажут вам об основных вещах в АСМе и о том, как пользоваться дополнительными командами. Кстати, намного более полная версия примера с BCC тоже есть.

SANDBOX можно использовать для изучения кода и проверки кода из других игр, пример из Соник 1 тоже в комплекте smile

Новые программы добавляются в 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 - Хакерские гиды - Мой бложик
 
Форум ромхакеров » Всё о ромхакинге » Готовые проекты » M68K Sandbox [SMD]
Страница 1 из 11
Поиск: