Автор неизвестен - Учебник по ромхакингу Sega MegaDrive
Название: | Учебник по ромхакингу Sega MegaDrive | |
Автор: | Автор неизвестен | |
Жанр: | Хакерство | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Учебник по ромхакингу Sega MegaDrive"
Аннотация к этой книге отсутствует.
Читаем онлайн "Учебник по ромхакингу Sega MegaDrive". [Страница - 2]
- 1
- 2
- 3
- 4
- . . .
- последняя (5) »
игры, и установить так называемую точку остановки. Почему на титульный
экран? Потому что, находясь на титульном экране игры, процессор ещё не установил стартовые очки здоровья
персонажа.
Итак, выйдем на титульный экран игры, и откроем дебаггер, встроенный в эмулятор. Нажимаем Tools,
M68k Debug:
Далее нужно нажать на кнопку Add, чтобы добавить точку остановки на запись в ячейку памяти по её адресу.
Это означает то, что мы сейчас скажем компьютеру адрес здоровья, чтобы он, при установке очков здоровья,
остановился и показал нам операцию процессора. Нам нужно вписать адрес ячейки памяти где очки здоровья,
который мы нашли ранее, поставить галочку Enable, что означает «включить», поставить галочку «Write», что
означает, что мы просим компьютер остановить игру, когда в этот адрес запишется стартовое значение
здоровья, и нажать ОК:
Нажимаем старт. Игра остановится, и в окошке M68k Debug мы увидим операцию процессора, которая
отвечает за перемещение данных в ячейку памяти здоровья:
Разберем эту инструкцию, которая выделена зеленым цветом на скриншоте. Для этого запомните, что
вы находитесь на 6-ой странице, и перейдите на 10-ую страницу. В 7-ой части изучите 5-ый пример, (а точнее
5.1) и снова вернитесь сюда.
Итак, если вы поняли 5-ый пример седьмой главы, то теперь можно догадаться, что нам нужно
изменить тройку на желаемое нами число.
Теперь, чтобы изменить инструкцию процессора в дампе игры, нам нужно для начала узнать её длину.
Она может состоять из нескольких байтов. Если не знать её длину, то будет непонятно, какой опкод у
инструкции. Для того, чтобы вычислить длину инструкции, мы, из картинки выше, возьмем адрес
инструкции, что идет ниже нашей инструкции записи здоровья, а именно “10CF8”, и вычтем из неё адрес
инструкции, подсвеченной зеленым цветом, а именно 10CF0. Всё это проделаем в калькуляторе, в котором
заранее выбран режим программиста, и нажата кнопка HEX:
Результат оказался равен восьми. Итак, мы вычислили длину инструкции, она оказалась равна восьми
байтам.
Теперь пойдем её изменять. Для этого нужно запустить hex-редактор HxD, открыть файл игры, нажать
«Поиск», «Перейти», вписать адрес 10CF0, который мы нашли ранее, и нажать ОК
Курсор мыши окажется на адресе 10CF0, и мы увидим те самые 8 байт, которые будем изменять:
Итак, мы видим 33 FC 00 03 FF FF 47 B6. Разберем эту команду процессора.
«33 FC» означает запись числа word, «00 03» означает три очка здоровья, «FF FF 47 B6» – это адрес
очков здоровья в RAM памяти.
Давайте изменим эту тройку на тридцать. Так будет намнооого легче играть)). Но не забывайте, что
здесь другая система исчисления, так что 30 это будет не 30, а «1E», мы же не забыли про специальный
калькулятор?
Далее нужно сохранить этот файл с помощью «файл»-«сохранить как», дать название, например «cave
story мод здоровья.gen».
Иногда, получается так, что мод(модификация) не запускается сразу, т.к. вместо игры появляется
красный экран. Чтобы вылечить это, нам нужна программа Fixheadr. В таком случае, тянем на значок этой
программы наш файл мода игры, и получаем рабочий мод. Ссылка на программу будет в конце книги.
Также хочется отметить, что если увеличить здоровье персонажа в игре Cave Story, то при
восстановлении здоровья на «контрольном пункте» оно снова станет неизменным. Это связано с тем, что
игра, дополнительно использует ещё одно значение – значение максимального здоровья персонажа, которого
он достиг в игре. На контрольном пункте, при восстановлении здоровья, игра считывает текущее
максимальное значение очков здоровья, и копирует это значение в ячейку здоровья. Так что, придётся ещё и
вычислить, тем же самым путем, которым мы уже вычисляли, адрес максимального стартового значения
здоровья, и сделать его также равным 30, при старте игры. Подсказка: ram-адрес максимального стартового
значения здоровья FF4814.
Не всегда всё так легко получается при модификации игр, т.к. одна и та же инструкция может
использоваться игрой для разных целей. Например, бывает так: функция уменьшения здоровья персонажа и
здоровья босса использует одну и ту же инструкцию. И, если ты, желая сделать бессмертие в игре, сотрешь
инструкцию, то персонаж станет бессмертным, но и босс тоже, и, при этом, игру будет невозможно пройти. В
таком случае, нужно уметь пользоваться трейсером, понимать команды процессора более глубоко, а
возможно, придется даже писать свой код вместо кода --">
экран? Потому что, находясь на титульном экране игры, процессор ещё не установил стартовые очки здоровья
персонажа.
Итак, выйдем на титульный экран игры, и откроем дебаггер, встроенный в эмулятор. Нажимаем Tools,
M68k Debug:
Далее нужно нажать на кнопку Add, чтобы добавить точку остановки на запись в ячейку памяти по её адресу.
Это означает то, что мы сейчас скажем компьютеру адрес здоровья, чтобы он, при установке очков здоровья,
остановился и показал нам операцию процессора. Нам нужно вписать адрес ячейки памяти где очки здоровья,
который мы нашли ранее, поставить галочку Enable, что означает «включить», поставить галочку «Write», что
означает, что мы просим компьютер остановить игру, когда в этот адрес запишется стартовое значение
здоровья, и нажать ОК:
Нажимаем старт. Игра остановится, и в окошке M68k Debug мы увидим операцию процессора, которая
отвечает за перемещение данных в ячейку памяти здоровья:
Разберем эту инструкцию, которая выделена зеленым цветом на скриншоте. Для этого запомните, что
вы находитесь на 6-ой странице, и перейдите на 10-ую страницу. В 7-ой части изучите 5-ый пример, (а точнее
5.1) и снова вернитесь сюда.
Итак, если вы поняли 5-ый пример седьмой главы, то теперь можно догадаться, что нам нужно
изменить тройку на желаемое нами число.
Теперь, чтобы изменить инструкцию процессора в дампе игры, нам нужно для начала узнать её длину.
Она может состоять из нескольких байтов. Если не знать её длину, то будет непонятно, какой опкод у
инструкции. Для того, чтобы вычислить длину инструкции, мы, из картинки выше, возьмем адрес
инструкции, что идет ниже нашей инструкции записи здоровья, а именно “10CF8”, и вычтем из неё адрес
инструкции, подсвеченной зеленым цветом, а именно 10CF0. Всё это проделаем в калькуляторе, в котором
заранее выбран режим программиста, и нажата кнопка HEX:
Результат оказался равен восьми. Итак, мы вычислили длину инструкции, она оказалась равна восьми
байтам.
Теперь пойдем её изменять. Для этого нужно запустить hex-редактор HxD, открыть файл игры, нажать
«Поиск», «Перейти», вписать адрес 10CF0, который мы нашли ранее, и нажать ОК
Курсор мыши окажется на адресе 10CF0, и мы увидим те самые 8 байт, которые будем изменять:
Итак, мы видим 33 FC 00 03 FF FF 47 B6. Разберем эту команду процессора.
«33 FC» означает запись числа word, «00 03» означает три очка здоровья, «FF FF 47 B6» – это адрес
очков здоровья в RAM памяти.
Давайте изменим эту тройку на тридцать. Так будет намнооого легче играть)). Но не забывайте, что
здесь другая система исчисления, так что 30 это будет не 30, а «1E», мы же не забыли про специальный
калькулятор?
Далее нужно сохранить этот файл с помощью «файл»-«сохранить как», дать название, например «cave
story мод здоровья.gen».
Иногда, получается так, что мод(модификация) не запускается сразу, т.к. вместо игры появляется
красный экран. Чтобы вылечить это, нам нужна программа Fixheadr. В таком случае, тянем на значок этой
программы наш файл мода игры, и получаем рабочий мод. Ссылка на программу будет в конце книги.
Также хочется отметить, что если увеличить здоровье персонажа в игре Cave Story, то при
восстановлении здоровья на «контрольном пункте» оно снова станет неизменным. Это связано с тем, что
игра, дополнительно использует ещё одно значение – значение максимального здоровья персонажа, которого
он достиг в игре. На контрольном пункте, при восстановлении здоровья, игра считывает текущее
максимальное значение очков здоровья, и копирует это значение в ячейку здоровья. Так что, придётся ещё и
вычислить, тем же самым путем, которым мы уже вычисляли, адрес максимального стартового значения
здоровья, и сделать его также равным 30, при старте игры. Подсказка: ram-адрес максимального стартового
значения здоровья FF4814.
Не всегда всё так легко получается при модификации игр, т.к. одна и та же инструкция может
использоваться игрой для разных целей. Например, бывает так: функция уменьшения здоровья персонажа и
здоровья босса использует одну и ту же инструкцию. И, если ты, желая сделать бессмертие в игре, сотрешь
инструкцию, то персонаж станет бессмертным, но и босс тоже, и, при этом, игру будет невозможно пройти. В
таком случае, нужно уметь пользоваться трейсером, понимать команды процессора более глубоко, а
возможно, придется даже писать свой код вместо кода --">
- 1
- 2
- 3
- 4
- . . .
- последняя (5) »
Книги схожие с «Учебник по ромхакингу Sega MegaDrive» по жанру, серии, автору или названию:
Сергей Тулупов - Учебник повелителя времени (СИ) Жанр: Фэнтези: прочее Год издания: 2015 |