Документация основана на учениях Джинни.
Для работы нам понадобятся: 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 и любуемся на новую заставку.