Magic Team

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Magic Team » О ромхакинге » вопрос о взломе ромов


вопрос о взломе ромов

Сообщений 1 страница 28 из 28

1

Привет всем.
Я новичок в ром переводах, а взломе ромов мало что понимаю. Хотя до этого пытался переводить пару ромов, но не получилось (мало знаний по взлому ромов). У меня к вам серьезный вопрос: можно ли изменять размер рома, увеличивать количество текста, вставлять всякие заставочки (по типу «Шедевровской») и т.д. Если можно, то как, объясните  поподробнее (и попроще конечно). Или на худой конец объясните азы матерого ромхакинга (работы с ассемблером и т.д.).

0

2

В основном, чтобы поместить текст/графику в конец РОМа(для ленивых при графике - лень пакер писать, или красноречивых при тексте :) ) нужно найти указатели на блоки текста(поинтеров)/графики и перебить их на новые.

Увеличивать кол-во текста не можно, а нужно, да и часто неизбежно это(могучий великий, как никак).

D.s3mm написал(а):

Или на худой конец объясните азы матерого ромхакинга (работы с ассемблером и т.д.).

Кто бы мне объяснил. Сейчас пытаюсь с несовским асмом разобраться, принцип действия, команды и т.п. я то понял, но в коде ни фига не разобрался.

Короче, сам я в этом деле недавно, поэтому могу и ошибаться, поподробней разьяснят ветераны.

Пользуясь случаем хотел бы задать вопрос: как всё-таки ставить эти брякпоинты??? На шедевре уже спрашивал, но кроме ненужного объяснения о том, что это такое, я ничего не услышал.

0

3

Смотря каким дебаггером пользуешься, например во Fceu в окне дебаггера вводишь диапазон адресов памяти и ставишь галочки (которые тебе нужны):
R - чтение из указанного диапазона
W - запись в диапазон
PC - выполнение процессором команды находящейся в диапазоне

когда одно из условий выполнится, выполнение программы остановится на команде производящей указанное действие, а в окне дебаггера будут видны последующие команды, выполнение которых можно спровоцировать кнопкой Step.

0

4

Ясно, значит их нужно ставить именно в дебаггере. А как остановить процесс именно на нужном событии? Например, я хочу увидеть процедуру генерации пароля в Little Ninja Brothers(NES), мне нужно просто вовремя остановить всё?

0

5

Азы матерого ромхака ты найдешь только в доке санчеза. На данный момент, единственная дока на русском, в которой что-то говорится об отладчике. Есть отличная дока для начинающих от Parasyt'a, но она на инглише. Очень хочу ее перевести, но сейчас я завяз в своих переводах =)

0

6

Спасибо за помощь, теперь понятно с какой стороны подходить к ентай проблеме.
И еще. А если не жалко оставьте ссылок  на проги типа ассемблеры ( ну нигде ни магу найти особенно для NES ), диссамблеры и т.д.

0

7

Посмотри тут.

0

8

Еще раз спасибо. Осталось во всем этом разобраться:))

0

9

Доброго всем сна.:)
Опять я и небез вопроса.
Для перерисовки букв у меня нет места. Фокус японскими закарючками которые можно перерисовать невыходит в место русских букв что-то нездоровое из другой части рома. Как мине быть.

0

10

Дебаг, дебаг и ещё раз дебаг...
Ищи процедуру загрузки шрифтов в видеопамять и меняй размер загружаемого блока.

0

11

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

0

12

Спасибо.
Дал бы кто ум мне понять о чем вы тут рассуждаите:( . (Это тонкий намек непонял поподробнее:)).
R.S. Еще один вопрос тут появился: нимогу найти пойтнеры в роме Double Dragon 3(ангельски язык, нес). Вычисляю пойтнер слова, изменяю на др пойтнер, но нечего неполучается(изменений никаких). Что не то?

Отредактировано D.s3mm (2006-08-29 07:07:13)

0

13

Griever написал(а):

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

Так ведь с умом же надо подходить, записывать туда, где память неиспользуется (в этот момент игры)

0

14

2D.s3mm
Для (U)-версии: 18FA6h - начало таблицы поинтеров. Только смотри, каждый поинтер указывает на одну строку, и указание идёт не на первую букву в строке, а на какой-то байт-параметр.
Для заставки указатели можешь не искать - это пожатые тайловые карты (RLE). Чтобы редактировать этот текст без ограничений, сначала нужно их разжать.

0

15

Спасибо!!!
Хое-хто мо ты яще мне кое-шо подкажаш :) . Как правильно перевести имя Yagyu Ranzou.

0

16

Хм... Да, RLE немного необычное. К счастью мне весь день было нечего делать =) Младшие шесть бит контрольного байта используются для формирования счетчика.
седьмой бит - флаг. Установленный флаг означает, что следующие X байт пойдут в карту нераспакованными
где X - младшие шесть бит того же контрольного байта. Соответственно неустановленный флаг говорит о том,
что следующий байт надо повторить X раз. Установка восьмого бита указывает на то, что следующий за ним
байт является счётчиком(все его 8 бит), а после него пойдёт байт который надо повторять столько раз.http://griever.ucoz.ru/files/DD1.png
http://griever.ucoz.ru/files/DD2.png
http://griever.ucoz.ru/files/dd3.png
В принципе, разжимать даже не обязательно. Во времена моей молодости, я перелопатил три экрана для
перевода Contra Force вручную (правда, там был обычный RLE, где флаг - только старший бит).
Теперь о том как у тебя не влезает текст(если ты, конечно, говорил о той же игре): В разговорах на улице
http://griever.ucoz.ru/files/0.png
можно свободно использовать твои "закорючки"
а вот на заставках, закорючек действительно нет, однако у тебя есть такие знаки, как скобки, $,#,",',/,(C),..
http://griever.ucoz.ru/files/1.png
Да тебе везёт как никогда! места хоть отбавляй =)
И, наконец, о тексте: текст на заставках, как ни странно, пожат тем же RLE, что и тайловые карты. Обрати внимание на слова Billy и
Jimmy.[Для прикола: в игре есть опечатка - в режиме двух игроков главного героя Billy назвали Bimmy] Там, где двойные буквы - там стоит контрольный байт на двойное повторение буквы. А перед началом каждой строки
обязан быть контольный байт на первые неповторяющиеся буквы строки. Вот на эти контрольные байты и указывают поинтеры!
Жать RLE текст не имеет никакого смысла. В итоге текст заставок получился большим по объёму, чем если бы разрабы
просто написали процедуру вывода текста на экран. Складывается такое впечатление, что это не текст, а просто
тайловая карта, пожавшая и картинку из заставки, и байты текста. Вот тебе и тонкая грань между текстом и тайловой
картой.;)

Отредактировано Griever (2006-08-30 07:37:46)

0

17

Огромное спасибо за помощь. Пол работы можно сказать сделано!!!

Griever написал(а):

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

Не я о другой Felix the Cat(U)(НЕС) называется.

Отредактировано D.s3mm (2006-08-30 07:51:48)

0

18

Как правильно перевести имя Yagyu Ranzou.

Если это японское имя, то Ягю Рандзо или Ягю Ранзо.
Дословно "ягю" переводится как "бизон". Но вообще-то имена не переводятся, только если это не прозвище или не говорящее имя.

0

19

Привет всем кто слышитJ. Я хочу вам задать нескромные и наглые вопросы, за который и по ушам схлопотать могу. Вы мне на форуме много наговорили, а понял я только немного. У меня возникло N-ццать вопросов:
1. Я вас тут всех послушал мало что понял, особенно про RLE. Я что-то читал в доке про DTE и MTE, а вот про RLE(что это такое и как этим пользоваться?) тишина.
2. Чем и как разжимать ромы(Поподробнее если это возможно).
3. Что такое тайловая карта и как ей пользаваться.
P.S. Спасибо хое-хто

0

20

Я хочу вам задать нескромные и наглые вопросы, за который и по ушам схлопотать могу

У нас не Шедевр.

Карта тайлов
RLE
А чтобы разжать ром надо выяснить как хранятся данные и вручную написать программку распаковщик(еще надо будет запаковщик
потом писать)

0

21

Griever: У нас не Шедевр.

Это хорошо, потому что у меня тоже наглый вопрос. Как пользоваться Круптаром???
Вроде я все делаю как написано в "Круптаре для чайников", но когда начинает извлекаться текст, все зависает на 0%. Сколько я игр не пробовал - все время так происходит. И даже когда я не использую пойнтеры (т.е. дело не в том, что я неправильно посчитал смещение).
P.S. Извиняюсь перед D.s3mm, что пишу в этой теме.

Отредактировано Tigran (2006-08-31 04:18:55)

0

22

Спасибо за ссылки

Tigran написал(а):

Извиняюсь перед D.s3mm, что пишу в этой теме.

Извенений ненадо в круптаре у меня тожа история.

Отредактировано D.s3mm (2006-08-31 05:19:43)

0

23

У нас не Шедевр.

Угу. Зато ссылки ведут туда...
Вот когда эти же самые вопросы будут на этом форуме задавать N-цатый раз, и в N-цатый раз тут будут так же вежливо на них отвечать, тогда и можно будет сказать, что "у нас не Шедевр".

0

24

Вроде, у вас всех не так составлена таблица. надо обязательно знаки окончания строк: посмотри

0

25

Tigran написал(а):

Это хорошо, потому что у меня тоже наглый вопрос. Как пользоваться Круптаром???

У меня тоже была такая проблема. Убедись, что таблица составленна именно для Круптара и не содержит ни одного лишнего знака(пробелы и отступы тоже считаются).

0

26

Tigran написал(а):

Это хорошо, потому что у меня тоже наглый вопрос. Как пользоваться Круптаром???

Хи. Это очень сложный вопрос. =)
Могу сказать, что в таблице почти всегда обязательно должен быть код окончания строки типа /00 или /FF, смотря какой он в игре.
Ещё один важный момент - это правильное использование пойнтеров.

0

27

Djinn написал(а):

в таблице почти всегда обязательно должен быть код окончания строки типа /00 или /FF

Ага, все дело было в этом.
Другой вопрос. Почему у меня на каждую строку получаются разные смещения.
Игра: Mafat Conspiracy - Golgo 13 (НЕС). Вот например 2 строки:
1. адрес: $2508, пойнтер: $F8A4;
2. адрес: $254E, пойнтер: $3EA5;
Высчитываю смещение по формуле:
((ptr - str) xor FFFFFFFF) + 1
Получается для первой строки: FFFF2C64,
для второй: FFFF3EA5.
Я что-то неправильно считаю?

0

28

$2508+$7FF0=$A4F8
$254E+$7FF0=$A53E
Всё правильно. В чём проблема?
Вычитай $7FF0 от значения каждого поинтера (не забывай переворачивать), и будешь получать реальный адрес строки.

0


Вы здесь » Magic Team » О ромхакинге » вопрос о взломе ромов