NesBlockFinder 1.1 Программа для поиска блоков в любых NES-играх. NesScreenFinder 1.0 Программа для поиска описаний экранов в NES-играх с блоками размером 4x4. Author spiiin (sanya.boyko@gmail.com) NesBlockFinder Способ использования: 1. Запускаем ROM в эмуляторе Fceux, загружаем уровень, в котором нужно найти блоки. 2. Открываем окно Debug->Hex Editor... и в меню выбираем File->Dump to file->PPU Memory, появляется окна сохранения файла. 3. Сохраняем дамп в файл, например dump.bin. 4. Запускаем программу NESBlockFinder.exe, в поле ROM File выбираем ROM с игрой, а в поле PPU dump выбираем сохранённый файл dump.bin. 5. Отмечаем галочками необходимые методы поиска блоков (можно оставить выбранные по умолчанию пункты, они подходят для большинства игр). 6. Жмём кнопку Run и изучаем результаты поиска. Пример результата поиска: Search 2x2 blocks, left-right #выбранный метод поиска C0B3 (11 blocks around) #наиболее вероятный адрес расположения блоков для уровня в ROM. В скобках показано количество найденных блоков по этому адресу C283 (11 blocks around) #следующий вероятный адрес расположения блоков C285 (11 blocks around) ... 7. Открываем ROM в hex-редакторе, переходим по найденному адресу и пробуем изменить несколько байт в нём. Дальше открываем изменённый ROM в эмуляторе и проверяем, изменились ли блоки на уровне. 8. Если с первого раза не получилось, и блоки в игре не изменились, можно попробовать взять следующий адрес из списка обнаруженных программой и попробовать изменить данные в этому адресу. 9. Если выбранные методы не дают результата (находится слишком мало блоков или они не находятся совсем), нужно попробовать включить все возможные галочки, в частности, включить метод Search block parts with stride range, и перезапустить поиск. На практике, если было найдено >10 блоков, практически гарантированно, вы обнаружили область в ROM, в которой хранятся блоки. Описание способа поиска блоков: Search 2x2 blocks - искать блоки размером 2x2 Search 4x4 blocks - искать блоки размером 4x4 Search 2x4/4x2 blocks - искать блоки размером 4x2 и 2x4 (используются редко) Search 1x1 blocks - искать блоки размером 1x1 (тайлы). Такой метод позволяет обнаружить описание сцен, в которых не используюстя блоки (полноэкранные заставки, глобальные карты, кат-сцены). Данный метод позволяет искать в том числе и сжатые различными способами карты. Left-right block search - искать блоки, в которых описание тайлов хранится слева-направо сверху-вниз. Top-down block search - искать блок, в которых описание тайлов хранится сверху-вниз слева-направо. Search attributes - позволяет находить аттрибуты (биты палитры) блоков. Работает в играх с блоками размером 4x4, а также в некоторых других. Search block parts with stride 255 - искать блоки размером 2x2, в которых 1-е четв хранятся в массиве из 256 элементов, затем хранятся 2-е четвертинки блоков, затем 3-и и 4-и четверти. Распространённый случай. Search block parts with stride range - аналогично предыдущему методу, но поиск выполняется в массивах любой указанной длины. Эти методы поиска покрывают практически все возможные способы хранения информации о блоках в играх. NesScreenFinder Способ использования: 1-4 Аналогично инструкции для NesBlockFinder, запускаем программу NesScreenFinder и указываем в ней путь к ROM-файлу и дампу видеопамяти. 5. В поле Blocks address выставляем адрес начала описаний блоков (найденный в NesBlockFinder, и проверенный в hex-редакторе. Подсказка - список блоков почти всегда начинается с блока из 16-ти нулей). Поле Blocks count можно не изменять, в 99% случаев можно оставить значение по умолчанию (255 блоков). 6. Для игр, в которых экран описывается сверху-вниз, а не слева-направо, необходимо выставить чекбокс Top-down screen, так что в случае, если ничего не нашлось обычным поиском, следует попробовать использовать эту опцию. 7. Нажать кнопку Run, и дождаться результатов работы. Программа пока что работает только с играми с блоками размером 4x4 тайла, но существует много игр с таким форматом блоков.