Chief-NET

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

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


Вы здесь » Chief-NET » Базовый хакинг » Поинтеры.


Поинтеры.

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

1

В общем дело такое, если кого не затруднит, прошу помочь и объяснить, как нужно менять указатели, чтобы увеличить или уменьшить длину строки.
Я приведу пример из рома, который мне знаком, это Pokemon Sapphire (GBA).
(0x001C6D08)  1862921 Hi! Sorry to keep you waiting!|Welcome to the world...
Поинтеры         адреса            Ofs
086D1C08     (0x0000A3C0)     1862921
886D1C08     (0x0000A410)     1863049
AA6D1C08    (0x0000A558)     1863083

1862921 Hi! Sorry to keep you waiting!|Welcome to the world of POKёMON!|My name is BIRCH.|But everyone calls me the POKёMON\PROFESSOR.|
1863049 This is what we call a “POKёMON.”
1863083 This world is widely inhabited by\creatures known as POKёMON.|We humans live alongside POKёMON,\at times as friendly playmates, and@at times as cooperative workmates.|And sometimes, we band together\and battle others like us.|But despite our closeness, we don’t\know everything about POKёMON.|In fact, there are many, many\secrets surrounding POKёMON.|To unravel POKёMON mysteries,\I’ve been undertaking research.@That’s what I do.|

Судя по всему поинтеры тут абсолютные, т.к. находил я их пользуясь этой формулой Ptr = 0x33A54 + 0x08000000 = 0x8033A54.

2

В конце каждого диалога стоит символ FF (в хекс коде)

1862921 Hi! Sorry to keep you waiting!|Welcome to the world of POKёMON!|My name is BIRCH.|But everyone calls me the POKёMON\PROFESSOR.|FF

Если ты напишешь

Hi! Sorry to keep FFou waiting!|Welcome to the world of POKёMON!|My name is BIRCH.|But everyone calls me the POKёMON\PROFESSOR.|FF

То в игре выведется только

Hi! Sorry to keep

Это укорачивание строки.

Т.е. ты просто напиши на старом месте новый текст, какая-то фраза будет длиннее, какая-то короче. Но в общем текст должен влезть на старое место. Каждый диалог оканчивай символом его окончания FF. И всё. А потом просто перепишешь поинтеры, с учётом нового текста, чтобы они указывали на начало фраз... Всё...

Вручную это делать очень долго. Тебе поможет программа - круптар...

3

Т.е. у тебя например 2 поинтера и текст
/ - перенос строки
FF - окончание строки

vasia/go*home.FF
hurry*up!FF

Всего 25 символов, включая символы окончания диалога и переноса.

ты пишешь

вася/иди*домой.FF
скорее!FF*

На старое место влезло, даже 1 символ лишний, но его в игре не будет, так как символ окончания строки до него стоит.

Написал текст - и переделывай поинтеры, чтобы они указывали на новый текст. 1-ый поинтер не изменится, так как начало одинаковое, а вот второй изменится, так как 1-ая фраза стала на русском длиннее, и начало 2-ой фразы сдвинулось... Ффффссёёёёё...

Отредактировано Guyver (2010-08-06 07:48:37)

4

Огромедное вам спасибо! Ух, какая же свобода действий чувствуется когда можно менять длину строк! Здорово!

5

А подскажите, как сделать так, что бы текст и графику брало с конца рома, где пустое место?
Есть 00EA 882D 0020 0122 0C92 0000 0440 2500 FC88 2D00
___поинтер начала стр.______что за код?___________поинтер конец стр.

мне нужно вставить по адресу 1D0200
D88EA адрес текста

Отредактировано Voodoo (2012-07-10 01:48:04)

6

Зависит от того, что за платформа.
И я сомневаюсь, что второй - поинтер конца строки, скорее поинтер следующей, или нет?

Отредактировано alex_231 (2012-07-10 01:57:03)

7

Зависит от того, что за платформа.
И я сомневаюсь, что второй - поинтер конца строки, скорее поинтер следующей, или нет?

NeoGeo Pocket Color

Да, точно на следующий, перепутал

\New Game\Continue\
Там указаны поинтеры на начала слов.

Есть 00EA 882D 0020 0122 0C92 0000 0440 2500 FC88 2D00
___поинтер начала стр.______что за код?___________поинтер начала стр.

Отредактировано Voodoo (2012-07-10 02:15:17)

8

Ну, тогда, скорее всего, значение нового поинтера для адреса 1D0200 будет 00 02 3D (правда не берусь утверждать так как с платформой не работал).

9

Ну, тогда, скорее всего, значение нового поинтера для адреса 1D0200 будет 00 02 3D (правда не берусь утверждать так как с платформой не работал).

Спасибо, то что нужно. А то я вводил 1D и получал порцию глюков : )

10

Еще наткнулся на то что вставленные строки нужно сдвинуть назад, на одну букву. Подскажите есть какие-то поинтеры указывающие на место положение где будет печататься текст в роме, если есть то как их искать?

11

Приставка денди? Всё зависит от игры. И от свободного места. Если оно расположено в том же банке, что и текст, то вообще проблем не будет. Если же нет...

12

Нет, это не денди ;)

По поводу сдвига не понял, можно поподробнее, что тебе нужно сделать?

13

Мне нужно надписи "Новая игра", "Продолжить" сдвинуть на одну букву влево. Но там еще есть красная стрелка ее тоже нужно передвинуть влево... Я думаю проще будет перерисовать надписи и вместить на прежнее место вместо англ. букв.

14

И еще есть в коде какие-то символы 04FA (03FA) не пойму зачем они, в роди бы как ни на что не влияют если их не не вставлять, все также работает...

Если я их буду удалять, потом оно не вылезет мне где-то боком?

Отредактировано Voodoo (2012-07-10 05:38:48)

15

Ну да, так действительно проще, только если под шрифт останется достаточно места, чтобы остальной алфавит поместился.
Если же нет, то нужно менять параметры вывода текста (то есть изменять саму программу вывода надписей), но тут два варианта, в зависимости от того, как выводятся эти надписи: кодами тайлов напрямую в карту тайлов в видеопамяти, либо графикой в видеопамять, со статичной картой тайлов.

16

В игре куча тайлов с японскими надписями и японским алфавитом + в роме куча свободного места, есть где с графикой развернутся. А то в игре есть немало МТЕ графики, и складывать пазлы с букв будет ой как не просто. Проще нарисовать на пустом месте полную картинку и поменять поинтеры...я так думаю.


Вы здесь » Chief-NET » Базовый хакинг » Поинтеры.