Форум Magic Team

Переводы, переводы, переводы... => Ромхакинг и перевод => Тема начата: lupus от 07 Февраля 2012, 23:15:51

Название: Интро для GB ромов. Как?
Отправлено: lupus от 07 Февраля 2012, 23:15:51
Юрасик выкладывал мануал по вставке интро в ромы GBA. С этим всё понятно. Возник вопрос, есть ли способ аналогичной вставки интрошки в ром GB/GBC?
Заранее спасибо.
Название: Re: Интро для GB ромов. Как?
Отправлено: Джинни от 08 Февраля 2012, 07:52:42
Способ везде одинаковый: пишешь код, внедряешь в программу.
Название: Re: Интро для GB ромов. Как?
Отправлено: inside от 08 Февраля 2012, 09:53:33
А как в этих случаях быть со ресурсами? Ведь внутри рома где-то зашиты обращения к ресурсам по определённым адресам (ну как минимум к строкам). Добавляя свой код мы сдвигаем адресное пространство, и ресурсы уже находятся по  другим адресам.
Название: Re: Интро для GB ромов. Как?
Отправлено: Джинни от 08 Февраля 2012, 10:49:33
Ресурсы так же внедряются, как и код. Код легко добавляется без сдвигания. :) На это есть джампы.
Название: Re: Интро для GB ромов. Как?
Отправлено: TrickZter от 08 Февраля 2012, 10:51:02
А как в этих случаях быть со ресурсами? Ведь внутри рома где-то зашиты обращения к ресурсам по определённым адресам (ну как минимум к строкам). Добавляя свой код мы сдвигаем адресное пространство, и ресурсы уже находятся по  другим адресам.
Зачем сдвигать?

1. Запихиваешь интрушку в конец рома.
2. В начале рома направляешь поинтер на интрушку.
3. В конце интрушки ставишь тот поинтер, который изменил в начале рома.
???
PROFIT!
Название: Re: Интро для GB ромов. Как?
Отправлено: inside от 08 Февраля 2012, 15:54:55
Цитировать (выделенное)
2. В начале рома направляешь поинтер на интрушку.
Ну так чтобы направить нужно как минимум один джамп написать, он же тоже место занимает?

Или по ROM'у напихана куча NOP'ов на такие случаи? :)
Название: Re: Интро для GB ромов. Как?
Отправлено: TrickZter от 08 Февраля 2012, 16:01:41
В самом начале есть джамп на код начальной заставки (или чего-нибудь другого), его меняешь, чтобы он указывал на конец рома - в то место, где будет лежать интрушка, в конце интрушки делаешь джамп в то место, на которое шёл оригинальный джамп. Таким образом длина кода остаётся неизменной (если не считать интрушку).

Джампов в коде очень и очень много, так что есть варианты - интрушку можно вставлять в разные места.
Название: Re: Интро для GB ромов. Как?
Отправлено: Джинни от 08 Февраля 2012, 16:28:49
Если ты заменяешь какой-то код джампом в другое место, то этот код нужно написать в новом месте да и всё.
Название: Re: Интро для GB ромов. Как?
Отправлено: lupus от 08 Февраля 2012, 19:26:36
а пример можно? ))