Тема, созданная для помощи в переводе.
Задача - изменить цвет первой буквы в заставке игры 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 байту, минимум знаний и очень мало затраченного времени.
1. Guyver - 14 Января, 2020 - 14:14:56 - перейти к сообщению
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 - перейти к сообщению
Вот, наваял чутка.
Но про знания ты верно подметил, без них в дебаге нет особого смысла.
Нужно хотя бы представление об основных командах иметь.
Но про знания ты верно подметил, без них в дебаге нет особого смысла.
Нужно хотя бы представление об основных командах иметь.