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

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

1. Guyver - 14 Января, 2020 - 14:14:56 - перейти к сообщению
Тема, созданная для помощи в переводе.

Задача - изменить цвет первой буквы в заставке игры Tetra Star - Fighter (J).nes не зная асма, программирования и прочей лабуды.



1. Открываем ром в ДжиннТайлМэппере и смотрим что там внутри



Как правило, карта тайлов палитры (не сами цвета, а указания на то, в каком месте какой цвет использовать), находятся сразу до/после картинки. Мне чаще встречается что после. Смотрим где кончается картинка заставки - это адрес 34A0 ( буква А в "Тексте, коде и прочем мусоре" ) и дальше, на первый взгляд.

2. Открываем пакостник и задаём этот адрес в начале. Менять будем по 1 байту и каждый раз запускать игру, чтобы проверить что получилось. Менять будем все байты, увеличивая их, к примеру, на 1:



3. Поменяли (Перепакостить) - запускаем файл (перед этим в программе подключили эмулятор для быстрого запуска)



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

4. Поэтому двигаемся на 1 шаг вперёд - диапазон адресов 34A1 - 34A2 и опять перепакостим ром. Запускаем. Смотрим что получилось и т.д. и т.п.

5. Рано или поздно находим место, где задана палитра буквы, вот где она:



Палитра буквы находится по адресу 34AD. По умолчанию там стоит байт AE. А следующий байт - это AF. Это цвета следующих букв, третьей и четвёртой, и двух тайлов под ними.

Т.е. в этом месте задаётся цвет сразу 4-ёх тайлов одним байтом. По алгоритму, который используется в очень многих играх.



На скрине выше видно, что при изменениях по адресу 34AE меняется цвет 4 тайлов.

Поменяв 1 байт по адресу 34AD на AF мы справимся с задачей (можно подбором увидеть, как 1 байт меняет цвета. Но мы знаем, что у следующих букв байт этот AF (буквы ЖМ), поэтому тут даже подбирать не нужно, просто меняем буквам НА такой же байт AF).



Вот и всё. Для нахождения цвета первой (и, как мы поняли, второй тоже) буквы нам понадобилось 14 шагов при движении вперёд по 1 байту, минимум знаний и очень мало затраченного времени.
2. Altman - 14 Января, 2020 - 15:23:09 - перейти к сообщению
14 шагов А?!
3. Guyver - 14 Января, 2020 - 15:24:33 - перейти к сообщению
Ну, каждый из них занимает 1-2 секунды и проверка в эмуляторе секунд 5... Т.е. я нашёл цвет меньше чем за пару минут. Если ставить бряки и разбираться в коде игры - времени, по-моему, будет затрачено больше. А ещё и знания нужны. Без них никуда...
4. Altman - 14 Января, 2020 - 16:21:24 - перейти к сообщению
Благодарю! Спустя столько лет, я увидел гайд для первоклассников.
Мечты сбываются.

Всех С Новым Годом!

Подмигивание
5. alex_231 - 15 Января, 2020 - 10:24:35 - перейти к сообщению
Guyver пишет:
Ну, каждый из них занимает 1-2 секунды и проверка в эмуляторе секунд 5... Т.е. я нашёл цвет меньше чем за пару минут. Если ставить бряки и разбираться в коде игры - времени, по-моему, будет затрачено больше. А ещё и знания нужны. Без них никуда...


Нет, не больше.
Твоим способом проблематично будет найти карту палитры, если она находится в другом месте (не рядом с графикой), такое нечасто, но встречается.
6. Guyver - 15 Января, 2020 - 11:03:30 - перейти к сообщению
Это да. Напишешь мини-туториал как это сделать с помощью дебага? Закатив глазки
7. alex_231 - 15 Января, 2020 - 14:53:55 - перейти к сообщению
Вот, наваял чутка.

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

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