форум группы Chief-Net » » Базовый хакинг » Тайловые карты Конами

Страниц (1): [1]
 

1. FastCat - 31 Мая, 2020 - 15:31:59 - перейти к сообщению
Доброго дня. Подскажите пожалуйста, как можно сделать так чтобы в игре влазило все слово которое нужно. К примеру возьмем игру Contra (U)!.nes
Использую hex редактор Translhextion, хочу изменить слово на главном экране SELECT на SELECTION, т.е. добавить еще три буквы ION. Вот нашел нужное слово, дописал еще три буквы, сохранил, запускаю и все черный экран. Подскажите на примере как это сделать Огорчение




2. Guyver - 31 Мая, 2020 - 15:37:54 - перейти к сообщению
Тебе нужно найти поинтер на это слово. И перенести его в свободное место, где тебе хватит букв, изменив этот поинтер.

Точнее, тебе нужно найти поинтеры на все слова, какое-то слово будет короче, какое-то длиннее, но они все в итоге "скомпенсируются" и всё влезет...

Про поинтеры с примерами ты можешь почитать статьи на нашем сайте.

http://chief-net.ru/index.php?op...=6&Itemid=33

Только вот хексредактор - это как на счётах в компьютерную эру считать. Он тебе не подойдёт для перевода (только для поиска/просмотра), нужно делать проект в круптаре.
3. FastCat - 31 Мая, 2020 - 16:14:35 - перейти к сообщению
как все сложно, 21 век, мда уж...
4. Mefistotel - 01 Июня, 2020 - 12:42:20 - перейти к сообщению
Есть способ попроще. Раздобыть волшебную палочку, загадать необходимое и сказать "бодиди-бадиди-бум". Вуаля.
P.S. Ссылка на документацию про пойнтеры не та.
Вот нужная:
http://chief-net.ru/index.php?op...09&Itemid=33
5. FastCat - 01 Июня, 2020 - 17:01:56 - перейти к сообщению
Mefistotel пишет:
Есть способ попроще. Раздобыть волшебную палочку, загадать необходимое и сказать "бодиди-бадиди-бум". Вуаля.
P.S. Ссылка на документацию про пойнтеры не та.
Вот нужная:
http://chief-net.ru/index.php?op...09&Itemid=33


я пытался по этому руководству сделать, но нифига не получается:
https://shedevr.org.ru/cgi-bin/docs.cgi?n=3

а еще я нашел эту прогу "Griever's pointer searcher", я так понимаю что это еще упрощает процесс, т.е. вбиваю адрес первой буквы и она находит мне сразу поинтер, так я понимаю?
Ну нашел допустим я поинтер слова PLAY, нашел поинтер второго слова SELECT, чтобы понять хоть что это работает, я вторым поинтером заменял первый, т.е. по сути как я понимаю должно было вывести при запуске игры SELECT SELECT, а в итоге ничего не изменилось. Значит я что-то делаю не так(((
6. Guyver - 01 Июня, 2020 - 17:48:03 - перейти к сообщению
Значит, ты не нашёл поинтер...
7. FastCat - 01 Июня, 2020 - 19:03:55 - перейти к сообщению
Guyver пишет:
Значит, ты не нашёл поинтер...


Я так все делаю?
8. FastCat - 01 Июня, 2020 - 19:46:17 - перейти к сообщению
Если этот адрес вбить в прогу, то вообще ничего не найдет, я так понимаю она работает 50 на 50. Поэтому ищем вручную
9. Guyver - 01 Июня, 2020 - 23:39:43 - перейти к сообщению
В проге поиска поинтеров ты забыл отнять от адреса 16 байт (h10), не? Я не знаю, прога сама их отнимает или нет...

Твоя фраза точно с этого адреса начинается? Ну т.е.

Фраза 1
стопбайт
Фраза 2
символ переноса
Фраза 3
символ переноса
Фраза 4
символ переноса
Фраза 5
стопбайт
Фраза 6
стопбайт
Фраза 7

В этом примере у тебя только 4 поинтера, на фразы 1,2,6,7. У тебя между словами стопбайты или символы переноса или что? (Сам я не смотрел). Если там поинтер только на первое слово, а остальное тупо переносами задаётся, то ты найдёшь только 1 поинтер вообще. Если стопбайты там - то найдёшь поинтеры на каждое из слов.
10. Mefistotel - 01 Июня, 2020 - 23:41:08 - перейти к сообщению
FastCat пишет:
Я так все делаю?

Да, всё верно, только у тебя таблица неполная. Добавь /00 - это пробел.
Ищи младший байт D5 выше или ниже текста в близости от текста. Меняй и проверяй.
Может быть так, что указатель на каждую строку идёт отдельно в коде и быть в самом начале рома.
11. FastCat - 02 Июня, 2020 - 00:32:46 - перейти к сообщению
Mefistotel пишет:
FastCat пишет:
Я так все делаю?

Да, всё верно, только у тебя таблица неполная. Добавь /00 - это пробел.
Ищи младший байт D5 выше или ниже текста в близости от текста. Меняй и проверяй.
Может быть так, что указатель на каждую строку идёт отдельно в коде и быть в самом начале рома.


Добавил в таблицу пробел, перенос и окончание текста
12. Guyver - 02 Июня, 2020 - 02:47:18 - перейти к сообщению
Перед словом у тебя стоит 2 байта. Как я думаю, это по оси х и у координаты вывода слова. Т.е. адрес смещается ещё на 2 байта, и отнимать нужно h12, а не h10. FE похож на стопбайт...
13. FastCat - 02 Июня, 2020 - 11:50:26 - перейти к сообщению
Я обнаружил в игре две фразы PLAY SELECT и соответственно находятся на разных адресах

Вот это первая фраза
https://prnt.sc/ss7eqe

А эта вторая соответственно по котороя я и ищу:
https://prnt.sc/ss7fny

А первая тогда откуда фраза взялась, в игре что-то нигде ее не нашел, что это за дубль такой, может мне нужно было искать по первой фразе? Ничего не понимаю.
14. FastCat - 02 Июня, 2020 - 15:16:14 - перейти к сообщению
Фиг поймешь вас, один говорит что нужно 10 отнимать, другой 12, на шедевре жирным текстом написано "от всех адресов надо отнимать 10 байт". Один говорит посмотри одну инструкцию, другой эта не то, смотри другую, в итоге в той другой, а именно во второй части про пойнтеры, как показано на примере игры Double Dragon 3 так там почему то адрес берется ВООБЩЕ не первой буквы, а то что перед ней, и как тут что понять, хз....... Хм
15. BoreS - 02 Июня, 2020 - 17:52:04 - перейти к сообщению
если ты не можешь разобраться съ такими простейшими вещами и начинаешь кого-то въ этомъ обвинять, то тебе вообще не стоитъ этимъ заниматься. Хотя бы до того момента, пока не научишься не только читать доки, но и понимать ихъ. Отъ того, что на дворе 21 векъ, не значитъ, что не надо думать своей головой.
16. FastCat - 02 Июня, 2020 - 22:18:40 - перейти к сообщению
BoreS пишет:
если ты не можешь разобраться съ такими простейшими вещами и начинаешь кого-то въ этомъ обвинять, то тебе вообще не стоитъ этимъ заниматься. Хотя бы до того момента, пока не научишься не только читать доки, но и понимать ихъ. Отъ того, что на дворе 21 векъ, не значитъ, что не надо думать своей головой.


Ну слушай если доки с ошибками, то как по ним что понимать? Ты сначала сам проверь прежде чем чесать языком и строить из себя героя защитника.
17. Griever - 02 Июня, 2020 - 22:20:55 - перейти к сообщению
Ну ведь мы и сами виноваты Закатив глазки
Те надписи, что интересуют FastCat (надписи титульника) - это не строки, а часть сжатой Konami RLE тайловой карты.
Чтобы изменить длину слова нужно её распаковать, отредактировать и попробовать упаковать в тот же размер или меньше.
18. Mefistotel - 02 Июня, 2020 - 23:45:15 - перейти к сообщению
Хоть кто-то нашёл время скачать ром и посмотреть.)))
FastCat, в моей доке нет никакой ошибки, просто надо знать адрес начала строки, если указатели стандартные. Строки не всегда начинаются с первой буквы слова. Перед словом могут идти координаты вывода строк, ширина строки и другие служебные байты. Пойнтер будет указывать именно на них.
Что касается данной игры, то Конами в своих играх всегда сжимали текст на титульниках, экранах копирайтов и прочих. Используй программу RLE Coder с сайта, только нужно найти адрес начала сжатой карты.
P.S. Сейчас скажет, что "третий про какую-то тайловую карту несёт"🤣
P.P.S. Изменил название темы.
19. FastCat - 03 Июня, 2020 - 00:52:32 - перейти к сообщению
Mefistotel пишет:
Хоть кто-то нашёл время скачать ром и посмотреть.)))
FastCat, в моей доке нет никакой ошибки, просто надо знать адрес начала строки, если указатели стандартные. Строки не всегда начинаются с первой буквы слова. Перед словом могут идти координаты вывода строк, ширина строки и другие служебные байты. Пойнтер будет указывать именно на них.
Что касается данной игры, то Конами в своих играх всегда сжимали текст на титульниках, экранах копирайтов и прочих. Используй программу RLE Coder с сайта, только нужно найти адрес начала сжатой карты.
P.S. Сейчас скажет, что "третий про какую-то тайловую карту несёт"🤣
P.P.S. Изменил название темы.


Ну вот вразумительный ответ! Про тайловые карты я уже понял потому что решил открыть программу yychr и просмотреть ром, в итоге алфавита там не нашел, так как графика пожата. Кстати, похожая ситуация с играми от Codemaster
20. BoreS - 03 Июня, 2020 - 00:54:44 - перейти к сообщению
FastCat пишет:
Ну слушай если доки с ошибками, то как по ним что понимать? Ты сначала сам проверь прежде чем чесать языком и строить из себя героя защитника.


Я не строю из себя защитника, и не чешу языком. Если ты чего-то не понимаешь или лень что-то проверить, то это твои проблемы, а не ошибки въ докахъ. И такие люди просто раздражаютъ. Сами даже не хотятъ разбираться, но виноваты все вокругъ, особенно те, кто посылаетъ хотя бы документацию почитать и вникнуть въ неё.
Скажи ещё спасибо, что здесь люди добрые и нянчатся съ тобой. На шедевре бы быстро послали съ такими вопросами.
21. FastCat - 03 Июня, 2020 - 00:59:06 - перейти к сообщению
BoreS пишет:
FastCat пишет:
Ну слушай если доки с ошибками, то как по ним что понимать? Ты сначала сам проверь прежде чем чесать языком и строить из себя героя защитника.


Я не строю из себя защитника, и не чешу языком. Если ты чего-то не понимаешь или лень что-то проверить, то это твои проблемы, а не ошибки въ докахъ. И такие люди просто раздражаютъ. Сами даже не хотятъ разбираться, но виноваты все вокругъ, особенно те, кто посылаетъ хотя бы документацию почитать и вникнуть въ неё.
Скажи ещё спасибо, что здесь люди добрые и нянчатся съ тобой. На шедевре бы быстро послали съ такими вопросами.


Заплачь еще возьми.
22. BoreS - 03 Июня, 2020 - 01:03:28 - перейти к сообщению
Всё съ тобой ясно.
23. Kolya88 - 03 Июня, 2020 - 16:29:02 - перейти к сообщению
Народ, подскажите как узнать размер заголовка рома y NES??
Вот тут выше читал что нужно отнимать 10h это я так понимаю размер, так а как можно где его посмотреть?
24. Guyver - 03 Июня, 2020 - 17:20:19 - перейти к сообщению
В хаксредакторе. Ромы бывают двух типов. У большинства заголовок 16 байт, т.е. h10.

CODE:
(Bytes 0->3 MUST BE What is stated below.)

0 = 4E (N)
1 = 45 (E)
2 = 53 (S)
3 = 1A (Character Break, necessary!)

(Bytes 4->8-15 Can BE MODIFIED!)

4 = PRG (Hex number depends on size of PRG file)-/-- (See Sect. 4)
5 = CHR (Hex number depends on size of CHR file)/
6 = Mapper 0-15/ V or H Mirroring, Battery, 4 Screen VRAM, Trainer Switches
Also is used as the "Ones" place holder digit for the extended iNES Header
format. (See Sect. 2)
7 = Mappers 16-?, the extended iNES Header format "Tens" place holder digit.
Again (See Sect. 2 for details on how this is set up.)

8->15 = Not used at this tume but MUST BE ALL ZEROS or games will not work.


Это был формат ines. Бывают ещё ромы немного другой системы. Про них я мало что знаю...
25. Kolya88 - 03 Июня, 2020 - 19:01:18 - перейти к сообщению
Ага, а если так вот через эмулятор можно посмотреть?
prg + chr = 16 + 8 = 18h это так получается?

или просто prg смотрим это у нас 16 = 10h
26. BoreS - 03 Июня, 2020 - 20:36:15 - перейти к сообщению
неужели всехъ новичковъ забанили въ гугле? %)
Даже на геймфаке есть статья по заголовкамъ.
https://gamefaqs.gamespot.com/ne...86-nes/faqs/2947

и даже целая вики есть съ этой информацией
http://wiki.nesdev.com/w/index.php/INES

да даже на хабре есть про это.
https://habr.com/ru/post/187876/
Люди, научитесь сперва пользоваться поискомъ!
27. Kolya88 - 04 Июня, 2020 - 00:51:30 - перейти к сообщению
BoreS спасибо!
28. Guyver - 04 Июня, 2020 - 11:26:17 - перейти к сообщению


В общем, можно лого править без труда, но соблюдать при этом определённые правила. Правим по адресу h000918B в роме:

Старый код:
Цитата:
/00/8BPLAY/00SELECT
/04/00/85/E4/E5/F0/F1/F2/1A/00/8 8/F3/F4/F5/C5/C6/C7/C8/C9/0C/00/ 881/00
PLAYER/03/00/85/CA/CB/CC/CD/CE/0 3/00/82/EF/D6/15/00/86/D9/DA/DB/ DC
/DD/DE/04/00/81/E6/0B/00/902/00P LAYERS/00/E9/EA/EB/EC/ED/EE/04/0 0/81
/F6/17/00/84/D7/D8/E7/E8/13/00/8 DTM/00AND/00/C3/001988/0E/00
/97KONAMI/00INDUSTRY/00CO.,LTD/10/00
/8BLICENSED/00BY/0E/00/97NINTEND O/00OF/00AMERICA
/00INCM/00/83/A0/A0/20/06/00/82XR/03P/83/00/00/20/05/05/05/00/83/CC/FF


Новый код:
Цитата:
/00/8EPLAY/00SELECTION
/04/00/85/E4/E5/F0/F1/F2/1A/00/8 8/F3/F4/F5/C5/C6/C7/C8/C9/0C/00/ 881/00
PLAYER/03/00/85/CA/CB/CC/CD/CE/0 3/00/82/EF/D6/15/00/86/D9/DA/DB/ DC
/DD/DE/04/00/81/E6/0B/00/902/00P LAYERS/00/E9/EA/EB/EC/ED/EE/04/0 0/81
/F6/17/00/84/D7/D8/E7/E8/13/00/8 DTM/00AND/00/C3/001988/0E/00
/94KON/00INDUSTRY/00CO.,LTD/10/00
/8BLICENSED/00BY/0E/00/97NINTEND O/00OF/00AMERICA
/00INCM/00/83/A0/A0/20/06/00/82XR/03P/83/00/00/20/05/05/05/00/83/CC/FF


SELECT - добавил 3 буквы, поэтому /8B увеличил на 3 и стало /8E
Удлиннил я слово на 3 буквы за счёт слова /97KONAMI (можно за счёт чего-то другого, или даже 1 байт за счёт одного, а оставшиеся 2 байта уже за счёт чего-то другого)
Поэтому стало /94KON (сократил слово на 3 байта и длину его тоже уменьшил на 3)

Как видно, посдвигались и остальные картинки. Поэтому их тоже все придётся двигать (искать что и где сдвигается), соблюдая баланс - подвинул что-то на 1 байт вправо - должен подвинуть на 1 байт влево что-то другое. Иначе будет каша вместо экрана...

После приведения экрана в порядок, если потребуется, то придётся искать, где задаётся цвет разных частей картинки, так как картинки сдвинутся, а их "цветовая матрица" останется на старом месте. И если буквы какие-то в неё попадут - у них будет другой цвет и его придётся менять. В общем, веселья будет много! Ха-ха

Т.е. просто методом проб и ошибок можно сдвинуть всё как нужно. Нужно найти и понять за что отвечает каждый байт за/перед очередным словом и т.д. Это не так сложно. Но использовать при этом только не хекс редактор, там это ОЧЕНЬ трудно будет сделать! Круптар с заданием нулевых поинтеров подойдёт для этих целей в самый раз...





П.С. Алфавит в игре прекрасно ищется и редактируется в формате 1bpp. Он легко перерисовывается в DjinnTileMapper'е по адресу карты тайлов 12FD7.

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®