ПОИСК |
Для поиска по сайту введите информацию в текстовое поле, затем нажмите на кнопку "поиск" |
|
|
|
N.E.S. |
|
|
История приставки |
|
Nintendo Entertainment System (NES) начала свою славную историю в августе 1985 года на территории США, то есть практически на два года позже своего японского аналога - Famicom. |
Превосходная для того времени графика, 5 канальный звук и огромное количество игр-шедевров создали такую атмосферу вокруг консоли, что приставка выпускается до сих пор, не смотря на официальное (?) прекращение выпуска NES в 1995 году!
|
|
|
Характеристики |
|
Ядро NES - 8-битный процессор NMOS 6502, работает на частоте 1.7734 МГц, что в сочетании с двумя Килобайтами видео памяти позволяло консоли поддерживать разрешение экрана 256 x 240 с 16-тью цветами на экране из 52 возможных.
|
Встроенный звук был 5-ти канальным. NES комплектовалась 2-мя джойстиками, но при желании к приставке можно было легко подключать самое разное оборудование, разработанное для Nintendo. Носителями информации служили картриджи и дискеты (Famicom). |
|
|
Аксессуары NES |
|
Для NES было создано большое количество специальных игровых устройств. Среди них: Power Pad - коврик с сенсорными кнопками, на которые нужно было наступать, таким образом осуществляя управление игрой; Uforce - сенсорный контроллер, который фиксировал движения руки игрока над своей поверхностью; Power Glove - перчатку, представляющую собой гибрид джойстика и перчатки; а так же легендарный робот Robotic Operating Buddy (R.O.B.), для которого выпустили всего 2 игры. |
|
|
|
|
|
|
|
|
Редактирование звуков и музыки в NES играх! |
|
|
————————————————————————————————
Вспомните, Рано или поздно у каждого из тех людей,
которые переводят (или пытаются переводить) Rom'ы возникает вопрос: А можно
ли изменить в игре звуки и музыку? И им как правило отвечают следующее: нужно
разобраться в формате хранения музыки. Дизассемблер и дебаггер в руки, и вперёд!
При ужасном слове "Ассемблер" у большинства вопрошающих опускаются
руки, а зря!!! Знание ассемблера это конечно хорошо, но что делать тем, кто
его не знает? Учить? Нет уж, дудки! Учиться некоторым ещё в школе надоело так,
что выучить хоть что-то новое они не в состоянии (как я например) ;о) Поэтому
нужно запастись терпением и кое-какими инструментами...
Итак, нам понадобятся: Rom, который мы будем ломать (не забудьте сделать его
резервную копию), любой хекс редактор (я использую Translhextion) и Корруптирующая
Экспертная Система ПОГАНКА (эту программу можно скачать на сайте группы MagicTeam).
Неплохо бы ещё иметь под рукой какую-нибудь музыкальную программу (например
Guitar Pro) для того, чтобы сначала сочинить в ней вашу новую мелодию, а уже
потом перенести её в Rom.
Как в Rom'е хранится музыка? В каждом роме по-разному, так что универсального
способа изменения музыки нет! Но всё-таки в большинстве игр алгоритм примерно
следующий: в каждом Rom'е есть свой "плеер", есть блок инструментов
в котором по-порядку идут все используемые в игре звуки, есть наконец сами
блоки с музыкой, данные из которых и берёт "плеер" при проигрывании
той или иной мелодии. Причём данные эти могут иметь в каждой игре свой вид.
Так же нужно помнить и о том, что у мелодии может быть вступление, куплет,
припев, окончание - поэтому где-то в Rom'е должны быть указатели на разные
места в блоке с музыкой. Тут всё очень похоже на обычный текст в игре, с поинтерами
на начало каждой фразы.
С чего нужно начинать? Допустим вы хотите изменить музыку в игре. Для начала
нужно найти те самые блоки с музыкой, данные из которых и берёт "плеер" при
проигрывании мелодии. В нелёгком поиске нам поможет программа ПОГАНКА, которую
разработал Virtual Killer. В качестве подопытного кролика будем использовать
игру Lode Runner, так как она довольно мало весит и поиск не отнимет у нас
очень много времени.
Начнём. Откроем программой Rom Lode Runner. Найдём место в игре, где лежит
музыка из начального экрана игры. ПОГАНКА использует для удобства две системы
счисления - десятичную (Decimal) и шестнадцетиричную (HexaDecimal). Я работаю
с десятичной ситемой, так как она мне более понятна. Программой мы будем "поганить" Rom
и после этого смотреть - не изменилась ли музыка, если она изменилась - то
мы нашли место, где лежат "музыкальные" данные, если не изменилась
- будем продолжать поганить Rom дальше. Даже самая маленькая мелодия в любой
игре занимает, как правило, больше чем 40 подряд идущих символов, так что я
обычно поганю от 10 до 15 символов (если поганить например больше символов,
то существует опасность того, что кроме данных с музыкой будут испорчены и
другие данные и игра просто зависнет). Забиваем Rom либо случайными байтами
(вместо музыки будет беспорядочный набор звуков), либо увеличенными/уменьшенными
на определённой число (в этом случае музыка просто транспонируется вверх/вниз
по октаве на это число или опять же будет представлять из себя беспорядочный
набор звуков).
Вот такими нехитрыми манипуляциями и прогоняем весь Rom: сначала поганим его
с 00 по 15 и смотрим что вышло - как и следовало ожидать ром виснет, так как
блоки с музыкой не располагаются в самом начале Rom'a, потом поганим Rom с
15 до 30, потом с 30 до 45 и так далее, пока не найдём место, где лежит необходимая
нам мелодия. Рано или поздно мы находим мелодию - её начало располагается по
адресу Decimal 8917. Переводим это число в шестнадцетиричную систему счисления
- получаем HexaDecimal 22D5. Ура! Теперь открываем Rom в хекс-редакторе и смотрим,
что представляют собой блоки с музыкой:
Мы видим, что в наборе знаков есть некая закономерность, одни знаки могут
повторяться чаще, чем другие, или стоять в строго определённых местах. Но сначала
просто берём и заменяем символы в Rom'e (начиная с 22D5) на другие и смотрим
что получается. Пытаемся вычислить алгоритм - какому символу какая нота соответствует.
Путём нехитрых манипуляций и логического мышления мы можем понять, что символ
00 обозначает окончание очередного музыкального фрагмента (если в середине
мелодии поставить 00, то она на этом месте и оборвётся), символ 81 обозначает
отсутствие звука, а остальные символы - это те или иные ноты в гамме. Причём
запись нужно вести так, чтобы между нотами обязательно были знаки 81, иначе
ноты не будут "обрываться" и никакой музыки у вас не получится. Через
каждые два знака должен стоять как минимум один знак 81, что можно заметить
при просмотре Rom'а в хекс-редакторе. Что ещё можно заметить? Если знаки стоят
рядом, то в мелодии они играются одновременно, например в начале мелодии: 81
81 20 81 81 81 81 37 34 81 81 знаки 37 и 34 будут играться одновременно...
Как вы могли заметить - длительности нот (шестнадцатая, восьмая, четвертная,
половинная, целая) задаются с помощью знака отсутствия звука, например в записи:
20 81 81 21 81 81 22 81 81 81 81 81 23 81 81 81 81 81 81 81 81 24 ... знаки
20 и 21 будут восьмыми, знак 22 - четвертной, знак 23 - половинный и т.д.
Следующий шаг - забиваем по-немногу всю мелодию в игре знаками
81 и таким образом чётко устанавливаем где она начинается, и где заканчивается.
После того, как вся мелодия забита этими знаками, необходимо по-порядку забить
в мелодию все знаки, начиная с 01 и заканчивая FF, чтобы составить соответствие
каждого знака определённой ноте в гамме.
В составлении схемы соответствия нам может помочь только музыкальный
слух (надеюсь он у вас есть?). Ещё при воспроизведении Rom'а в эмуляторе желательно
замедлить скорость игры, для того чтобы успевать заметить - какой знак какой
ноте соответствует. Для удобства я составляю подобную схему:
Как видно из схемы - не все знаки используются в гамме, например нота ля диез
имеет код 2F, а нота си код 34, а не 30 как можно было бы ожидать... Встречаются
и другие исключения - у многих разных знаков может быть одно и то же звучание
и т.д. Таким образом я составляю схему на все используемые ноты в игре.
Теперь осталось написать в какой-нибудь музыкальной программе
свою мелодию, перевести её в шестнадцетиричный код и вставить в игру. При этом
вы можете столкнуться с некоторыми трудностями - сочиняя новую мелодию необходимо
помнить о том, что она должна быть не длиннее оригинальной мелодии. Так же
не забывайте о том, что оригинальная мелодия - это не один непрерывный блок
с данными. Это несколько блоков, каждый из которых может повторяться в определённое
время определённое количество раз, т.е. где-то в Rom'е находятся указатели
на то, какой фрагмент из блока с данными будет проигран, сколько раз он будет
повторяться, какой фрагмент с данными будет играть после него и т.д. В соответствии
с этими указателями вы и должны составить новую мелодию, а если вы хотите поменять
указатели - нужно искать их так же, как и поинтеры на фразы из игр. Правила
тут будут одинаковые...
Для пробы изменим музыку на титульном экране игры: напишем коротенькую мелодию
из игры Марио, она будет выглядеть так:
После того, как мы вставим её в Rom, она будет выглядеть следующим
образом:
Таким способом находятся и заменяются все мелодии в игре. Это конечно дело
не двух часов - чтобы получились качественные мелодии нужно потратить не один
день, если процесс поиска всех мелодий может занять у вас весь день, то при
их изменении, записи сначала в нотах, а потом в шестнадцетиричном коде, дело
одним днём может и не ограничиться. Самые продвинутые могут написать специальные
программы для облегчения процесса редактирования мелодий для конкретной игры.
Вот такие у нас пироги. Для того, чтобы убедиться в том, что всё написанное
мной верно - вы можете скачать игру, в которой я изменил оригинальную музыку
на свою, получилось это вроде даже и не очень плохо... ;о) Удачи!
Скачать ром Mario Runner размер
zip архива 16.133 кБ
Внимание! Данный ром уже переведён на русский язык и не требует патча. Для того, чтобы поиграть в эту игру, вам понадобится эмулятор NES. Например VirtuaNES, который можно скачать по следующей ссылке: VirtuaNES
————————————————————————————————
|