Новости:

01.01.2017: Релиз испанской версии Naruto - Ninja Council (GBA)
02.12.2016: Добавлена документация по Kruptar 7
09.10.2015: Обновление перевода игры Battletoads (NES) [версия 1.3]
22.01.2015: Kruptar Open Source
18.10.2014: Релиз обновлённой русской версии Castlevania - Dawn of Sorrow (GBA) от Owls Group
01.05.2014: Релиз русской версии Taiyou no Yuusha Firebird (NES)
24.06.2012: Добавлена доработанная документация и инструкция
26.05.2012: Обновление ORITON [версия 2.050]
11.05.2012: Обновление ORITON [версия 2.048]
11.03.2012: Обновление Kruptar 7 [версия 7.1.1.17]
29.01.2012: Обновление LZ77Restructor 2 [версия 1.02]
01.01.2012: Релиз русской версии Drill Dozer (GBA)

Подробнее на страничке новостей.
Ознакомьтесь с правилами нашего форума.

Главное меню

Интро для GB ромов. Как?

Автор lupus, 08 февраля 2012, 00:15:51

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

lupus

Юрасик выкладывал мануал по вставке интро в ромы GBA. С этим всё понятно. Возник вопрос, есть ли способ аналогичной вставки интрошки в ром GB/GBC?
Заранее спасибо.

Джинни

Способ везде одинаковый: пишешь код, внедряешь в программу.

inside

А как в этих случаях быть со ресурсами? Ведь внутри рома где-то зашиты обращения к ресурсам по определённым адресам (ну как минимум к строкам). Добавляя свой код мы сдвигаем адресное пространство, и ресурсы уже находятся по  другим адресам.
I wanna be a romhacker

Джинни

Ресурсы так же внедряются, как и код. Код легко добавляется без сдвигания. :) На это есть джампы.

TrickZter

Цитата: inside от 08 февраля 2012, 10:53:33
А как в этих случаях быть со ресурсами? Ведь внутри рома где-то зашиты обращения к ресурсам по определённым адресам (ну как минимум к строкам). Добавляя свой код мы сдвигаем адресное пространство, и ресурсы уже находятся по  другим адресам.
Зачем сдвигать?

1. Запихиваешь интрушку в конец рома.
2. В начале рома направляешь поинтер на интрушку.
3. В конце интрушки ставишь тот поинтер, который изменил в начале рома.
???
PROFIT!

inside

Цитировать2. В начале рома направляешь поинтер на интрушку.
Ну так чтобы направить нужно как минимум один джамп написать, он же тоже место занимает?

Или по ROM'у напихана куча NOP'ов на такие случаи? :)
I wanna be a romhacker

TrickZter

В самом начале есть джамп на код начальной заставки (или чего-нибудь другого), его меняешь, чтобы он указывал на конец рома - в то место, где будет лежать интрушка, в конце интрушки делаешь джамп в то место, на которое шёл оригинальный джамп. Таким образом длина кода остаётся неизменной (если не считать интрушку).

Джампов в коде очень и очень много, так что есть варианты - интрушку можно вставлять в разные места.

Джинни

Если ты заменяешь какой-то код джампом в другое место, то этот код нужно написать в новом месте да и всё.

lupus