Ссылки Команда Главная Форум Гостевая
МЕНЮ
Новости
01.01.2017
Переводы
01.01.2017
Проекты
10.05.2010
Программы
26.05.2012
Документация
26.11.2016
Прохождения
08.05.2011
Разное
07.06.2009
    rss
БАННЕРЫ
Наш баннер
Сайт JurasskPark
Griever Stuff
Новая реальность
Emu-Land
ConsolGames
CHIEF-NET
PSCD.RU
Langrisser
Battletoads
Valid HTML 4.01 Transitional
Правильный CSS!
 

 

 

 

 

Добавление заставки в GBA-ROM

Документация основана на учениях Джинни.



Для работы нам понадобятся: Photoshop, No$gba Debugger, GBA Crusher John'a Sensebe и программы Джинни, а также ROM с игрой 2334 - Naruto - Ninja Council (U), который я переименовал в naruto.gba.

Итак, у нас есть изображение заставки, которое мы хотим вставить в свой перевод. Изображение должно быть размером 240x160, 256 цветов и 8 bit. В данном примере будем вставлять такое изображение.

скриншот


Открываем изображение в Photoshop'e и сохраняем как Photoshop RAW.

скриншот


При сохранении появится диалоговое окно. Нажимаем Да или Ок (если Photoshop на английским языке).

скриншот


Снова предупреждение и снова нажимаем Да.

скриншот


Сохраняем палитру изображения в формат .ACT. Для этого переходим в Таблицу цветов (Сolor Table).

скриншот


Нажимаем кнопку Сохранить, и сохраняем палитру.

скриншот


Теперь с помощью программы palgba.exe конвертируем палитру в формат PGB c помощью команды:

palgba.exe filename.act filename.pgb

Где filename.act - это палитра, которую мы сохранили с помощью Photoshop, а filename.pgb - это палитра, которую мы должны получить после конвертирования через PALGBA. Рекомендую для таких операций создавать BAT'ник, чтобы не писать команды в Командной строке.

PGB палитру конвертируем в INTRO_PAL.INC с помощью bin2asm.exe командой:

bin2asm.exe filename.pgb INTRO_PAL.INC

Внимание! Название INTRO_PAL.INC нельзя менять, т.к. используется для сборки логотипа в ASM коде.

Запускаем GBA Crusher. Открываем файл изображения RAW черех кнопку Add File(s). Выбираем режим LZ77, Vram safe.

скриншот


Нажимаем кнопку CRUNCH IT! и сохрянем файл под новым именем, например, Intro.lz77. После чего появляется окно, где показано насколько сжалось изображение. В моём случае на 79%.

скриншот


Теперь открываем через GBA Crusher уже изображение Intro.lz77 и выбираем режим Huffman, 4 bit.

скриншот


Нажимаем кнопку CRUNCH IT! и сохрянем файл под новым именем, например, Intro.lz77.huff4bit. После чего появляется окно, где показано насколько сжалось изображение. В данном случае уже только 11%.

скриншот


Если посмотреть на изображение, то можно увидеть прогрессию сжатия.

скриншот


Теперь с помощью программы bin2asm.exe полученный файл Intro.lz77.huff4bit конвертируем в INTRO_GFX.INC.

bin2asm.exe Intro.lz77.huff4bit INTRO_GFX.INC

Теперь кладём в одну папку INTRO_PAL.INC, INTRO_GFX.INC и INTRO_BLACKOUT.ASM (INTRO_BLACKOUT.ASM выбран из-за того, что начальный экран у игры полностью чёрный, если бы начальный экран был белым, то нам понадобился бы INTRO_WHITEOUT.ASM).

Открываем файл INTRO_BLACKOUT.ASM и находим вторую строчку org 087E0000h. В 87E0000h меняем 7E0000 на тот адрес, куда будем вставлять изображение. Для это открываем ROM и ищем место, где все значения забиты FF. В моём случае я взял адрес 007A8000 и изменил 087E0000h на 087A8000h.

В конце ASM файла есть ещё один адрес.

StartAddress: dd 080000C0h

Это точка возврата из процедуры, обычно она такая и есть. Так что не меняем.

Запускаем No$gba Debugger. Переходим в меню Utility->Assemble file. Выбираем INTRO_BLACKOUT.ASM. Появляется окно No$gba Cartloader Warnings. Нажимаем кнопку Ок и получаем откомпилированный код INTRO_BLACKOUT.gba.

скриншот


Теперь с помощью программы filewrite.exe запишем INTRO_BLACKOUT.gba в ROM.

Команда:

filewrite.exe INTRO_BLACKOUT.gba naruto.gba 0 $7A8000

Где $7A8000 - это адрес, который мы указывали в INTRO_BLACKOUT.ASM, как адрес, по которому будет находится заставка.

Теперь запускаем No$gba Debugger, но уже без ROM'a. Cамая первая строка в окне кода слева - это инструкция вызова подпрограммы, которую мы должнв заменить на b 87A8000h, где 7A8000 - должен быть ваш адрес заставки. Нажимаем на первую строку правой кнопкой мыши и выбираем пункт Change Instruction. Вводим b 87A8000h.

скриншот


В окне внизу нажимаем правой кнопкой мыши и выбираем пункт Goto.

скриншот


Вводим адрес 8000000.

скриншот


Увиденные тут первые четыре байта мы должны внести в начало ROM'a.

скриншот


Вносим эти байты.

скриншот


Запускаем ROM и любуемся на новую заставку.

скриншот