Автор Тема: [NES] Учебник по ромхакингу  (Прочитано 26254 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« : 20 Сентябрь 2016, 16:00:42 »
Я взялся за написание нормального русскоязычного дока по ромхакингу на NES.

На данный момент готов только уровень для новичков, остальные 4 уровня будут написаны в будущем.

Учебник по ромхакингу NES [001].chm
https://yadi.sk/d/9O-jbWDw35qvkX
У кого открывается пустой .chm, разблокируй его в свойствах файла.

Учебник по ромхакингу NES [001].pdf
https://yadi.sk/i/JRO905jj35qwB3
Упор идет на .chm, а внешний вид .pdf меня не интересует
« Последнее редактирование: 30 Декабрь 2016, 21:19:50 от p_star »

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #1 : 20 Сентябрь 2016, 18:34:46 »
Будет неплохо, если все статьи будут собраны в один документ. PDF, DOC, TXT, любой другой формат - неважно. Многим новичкам уже порядком надоело слышать от знающих людей "кури доки", "ищи сам" и прочее.
Важно не только собрать весь материал, но и оформить его должным образом, чтобы новички опять не занимались поиском нужной информации.
P. S.: скоро, может, я тоже что-то добавлю. Это зависит от того, будет ли у меня достаточно свободного времени и вдохновения писать обучающий урок. ;)

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #2 : 20 Сентябрь 2016, 18:41:21 »
lancuster, мой документ будет в формате .chm  :)
для статей есть отдельное место в конце. да, надо будет их отсортировать по группам, если много наберется

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1568
  • Пол: Мужской
    • Steam
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #3 : 20 Сентябрь 2016, 18:44:47 »
Будет неплохо, если все статьи будут собраны в один документ. PDF
Согласен. Не у всех есть винда, чтобы смотреть без костылей chm. PDF наверное лучший выбор.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #4 : 20 Сентябрь 2016, 18:46:45 »
lancuster, мой документ будет в формате .chm  :)
для статей есть отдельное место в конце. да, надо будет их отсортировать по группам, если много наберется
Скомпиленный html-документ? А что, если люди захотят читать его на телефонах, смартах и прочем?
Статьи нужно не только упорядочить, но ещё и указать авторство тех, кто их написал, и время написания указать, чтоб люди были в курсе, кто для них старался.

Оффлайн Arbars

  • Пользователь
  • Сообщений: 1409
  • Пол: Мужской
  • Линукс кұрылысшы
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #5 : 20 Сентябрь 2016, 18:56:42 »
Соглашусь на счёт PDF. Можно ещё вариант с dejavu рассмотреть.

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #6 : 20 Сентябрь 2016, 19:02:53 »
lancuster, мне удобнее работать именно с chm. на смартфонах несколько программ для его открытия.
pdf много весит, долго загружается, особенно на мобиле. так что никаких pdf)
сами потом без проблем можете сконвертировать во что хотите если вам так надо

про статьи согласен

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #7 : 20 Сентябрь 2016, 19:17:21 »
Тогда уж лучше пусть будет в 2х вариантах: в виде статей и в виде одного большого документа. Так будет удобней для всех.

Оффлайн Kinbeas

  • Пользователь
  • Сообщений: 3620
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #8 : 20 Сентябрь 2016, 19:25:51 »
А что, если люди захотят читать его на телефонах, смартах и прочем?
И хакать захотят на смартфонах? Может пусть люди перестанут в*ся и принимать в том формате, котором подают?

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #9 : 20 Сентябрь 2016, 19:31:38 »
в принципе, прога Dr.Explain позволяет конвертировать проект также в HTML, RTF и PDF. так что выложу без проблем, лишние пару кликов мне сделать не сложно

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #10 : 20 Сентябрь 2016, 19:32:43 »
И хакать захотят на смартфонах? Может пусть люди перестанут в*ся и принимать в том формате, котором подают?
Знаешь, что я скажу? Один мой знакомый, который выучил ассемблер, мог читать доки в телефоне, резать ромы на телефоне, а уже собирать, редактировать и тестировать - на компе. Да и то он у него уже загнулся. Мой тоже, кстати, начинает спотыкаться... :(
Так что ответ я уже озвучил: кому удобно читать статьи - пусть читает статьи, кому удобно читать цельный документ - пусть читает его.

Оффлайн DendyJunior3

  • Пользователь
  • Сообщений: 282
  • Пол: Мужской
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #11 : 20 Сентябрь 2016, 19:33:38 »
Мертворожденный проект

Оффлайн Arbars

  • Пользователь
  • Сообщений: 1409
  • Пол: Мужской
  • Линукс кұрылысшы
    • ВКонтакте
    • Просмотр профиля
Re: [NES] Учебник по ромхакингу
« Ответ #12 : 20 Сентябрь 2016, 19:34:33 »
И хакать захотят на смартфонах? Может пусть люди перестанут в*ся и принимать в том формате, котором подают?
Интересная ты личность, как я погляжу... А если я, к примеру, вообще распечатать мануал захочу (да, есть у меня такая привычка - распечатывать хорошие, нужные мануалы)? PDF вполне подойдёт.

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #13 : 20 Сентябрь 2016, 19:36:36 »
братки, пишите по делу. срача не по теме мне и в своей группе хватает  ^_^

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #14 : 20 Сентябрь 2016, 19:41:13 »
братки, пишите по делу. срача не по теме мне и в своей группе хватает  ^_^
Вас понял, кэп. Постараюсь в ближайшее время написать хотя бы одну статейку.

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #15 : 20 Сентябрь 2016, 21:06:00 »
Неужели кто то взялся собрать всё в одну кучу...ну наконец то!!! Молодчик neoborg
Кстати chm будет удобней намного чем другие.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9359
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #16 : 20 Сентябрь 2016, 21:09:10 »
Один мой знакомый, который выучил ассемблер
лучше бы и ты его выучил, вместо того чтоб строчить тыщи бестолковых мессаг, может таки (ром)хакером стал бы, полноценным ))

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #17 : 20 Сентябрь 2016, 21:19:11 »
krocki, спасибо  :)

Оффлайн DendyJunior3

  • Пользователь
  • Сообщений: 282
  • Пол: Мужской
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #18 : 20 Сентябрь 2016, 21:26:06 »
Кстати chm будет удобней намного чем другие.
особенно для пользователей линукс

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4403
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #19 : 20 Сентябрь 2016, 22:56:04 »
Chm должен умереть.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #20 : 20 Сентябрь 2016, 23:24:12 »
лучше бы и ты его выучил, вместо того чтоб строчить тыщи бестолковых мессаг, может таки (ром)хакером стал бы, полноценным ))
Для меня это типа хобби, так что пока нет... Времени нет на изучение. :-\

Оффлайн Skay

  • Пользователь
  • Сообщений: 4114
  • Пол: Мужской
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #21 : 20 Сентябрь 2016, 23:26:06 »
еслиб было голосование за формат, я бы голосовал за гитбук.
вот пример https://www.gitbook.com/book/andreyakinshin/problembookdotnet/details/ru
о том, что за зверь такой https://sohabr.net/habr/post/218433/  в коментах еще есть варианты, но chm точно ненадо.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #22 : 20 Сентябрь 2016, 23:27:30 »
К слову. Первый урок от меня, для новичков. Если "многобукав" - проходите мимо. :lol:
В статье всё расписано пошагово, скрины прилагаются:
[NES Ромхакинг] Первый урок. Введение
Чуть позже, возможно, выложу ещё дополнение, как делать бесконечные жизни, сердечки, оружие и прочее.  ;)

Оффлайн Zetper

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
  • Потерянный в пустоте
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #23 : 20 Сентябрь 2016, 23:31:01 »
К слову. Первый урок от меня, для новичков. Если "многобукав" - проходите мимо. :lol:
В статье всё расписано пошагово, скрины прилагаются:
[NES Ромхакинг] Первый урок. Введение
Чуть позже, возможно, выложу ещё дополнение, как делать бесконечные жизни, сердечки, оружие и прочее.  ;)
Ошибка
Тема форума доступна только для участников сообщества

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #24 : 20 Сентябрь 2016, 23:43:05 »
Тогда вот:
[NES Ромхакинг] Первый урок. Введение
    Многие из вас, желавшие поиграть в игры Денди, Сеги и других платформ, дабы поностальгировать и вспомнить "детство золотое", задавались вопросом - как воплотить это в жизнь, как можно поиграть в эти игры на мобильном телефоне/смартфоне/планшете/ПК и пр.? Попробовав самые разные эмуляторы консолей, вы выбираете один из них (или сразу несколько, как я) в качестве оптимального варианта на все случаи. И, естественно, начинаете воплощать мечту детства - играете во все игры, которые раньше были вам недоступны или неизвестны.
Но со временем просто играть вам, разумеется, надоедает, и поэтому вы начинаете задаваться вопросом: как можно видоизменить/улучшить/переделать эти игры? Ведь, как известно, и разработчики оригинальных игр, и пираты, не брезговали ромхакингом. Действительно, зачем тратить на разработку новую игру (читай - сиквел того же Мегамена) много денег и времени, когда можно использовать уже готовый движок, готовую музыку и звуковые эффекты, готовые спрайты, и переделать их с тем, чтобы выпустить сиквел как можно скорее. Удобно, не так ли? И геймеры довольны, и разрабы озолотились. ;) Увы, этим также пользовались и пираты, выпуская псевдо-сиквелы, годами обманывая геймеров Европы, Азии и стран СНГ... :(
... Но мы с вами не будем брать пример с пиратов и намеренно затирать копирайты разработчиков, верно? Если так - давайте же приступим к изучению ромхакинга! :)
    Для первого урока по ромхакингу NES игр вам понадобится:
A) эмулятор, имеющий в себе кучу встроенных утилит - в данном случае это FCEUX 2.2.3. Его можно найти на сайте emu-russia.net . Если у вас более старая версия этого эмуля - ничего страшного, на ромхакинг это никак не повлияет. Просто в новой версии добавлены новые мапперы (включая CoolBoy).
Б) ром Super Mario Bros. (JU) [!]. Если его нет - можете скачать его на том же сайте. Или найти на сайте romfind.com
Итак, перейдём, непосредственно, к делу. Открываем Супер Марио с помощью указанного эмуля и нажимаем "старт". Для начала научимся менять количество жизней этого героя. Заходим в Tools->RAM Search. В появившемся окне выставляем Equal to - Specific Value - в форме рядом с этой фразой вбиваем цифру 2 и жмём на Search:

"Почему 2, если у героя на самом деле 3 жизни?" - спросите вы. Отвечаю: в некоторых играх есть такая особенность - когда отображаемая цифра или количество палочек-сердечек не совпадают с тем значением, что указано в ram. Например, когда вы ищете лайфбар, состоящий из 10 палочек/сердечек, и не находите - вам придётся выставить условие поиска Less than - Previous value, чтобы найти количество сердец по значению, которое уменьшается на определённое число каждый раз при получении урона. Конкретно в Супер Марио герою присваивают 2 жизни, хотя отображается 3. Из этого следует, что жизни у Марио уменьшаются вот так: 2, 1, 0 (то есть, ноль тоже используется как значение, и game over происходит после того, как значение "уходит в минус", а точнее - становится равно FF).
После того, как вы нажмёте на Search, вы получите:

Как видите, количество переменных резко уменьшилось. Нажимаем ещё раз, чтобы отсеять те, которые меняются в данный момент игры. Теперь их стало ещё меньше, верно? Чтобы знать наверняка, что изменится после потери жизни - выставляем условие поиска: Less than - Previous value. Это позволит выделить те переменные, что изменились после потери жизни. Теперь идём и напарываемся на гумбу. Смотрим внимательно на результаты в RAM Search. Даже без повторного поиска видим, что переменная 075A стала 1, была 2, а количество изменений равно 1.
Чтобы убедиться в этом - нажмите правой кнопкой мыши на этой переменной. Вы попадёте в HEX Editor - шестнадцатиричный редактор - где курсор будет стоять на этой переменной (как на этом скрине). И вводите, к примеру, 08 вместо текущего значения. После потери жизни их станет 8 (нумерацию жизней в этой игре я уже написал). Если произошло так, как я написал - значит, вы нашли значение жизней. Теперь осталось лишь ввести нужное вам значение в ROM и сохранить результат для дальнешего использования.
Для этого жмём на самом значении правой кнопкой мыши и выбираем Add Write Breakpoint For Address 075A:

Тут же откроется отладчик. Сворачивайте его. Если закроете - придётся залезать в Debug->Debugger и включать его заново. Жмём Reset (или Power, роли не играет). И тут же наш брейкпоинт срабатывает. В данный момент значение А переменной равно нулю, так что пропускаем это, нажав Run в отладчике. И в этот раз значение А переменной равна нулю, снова жмём Run. Теперь мы видим, что значение стало равно 02. Это - то. что мы искали:

К слову, при наведении на нужную нам строку в самом низу отладчика отображается местонахождение этого выражения в ROM. Запоминаем эту строку, заходим в HEX-editor, View-ROM File, и находим это место. Меняем 02 на какое хотите (желательно не выше 63 (62) - в хексе это 99). Да, если хотите сделать конкретное значение - вам понадобится Калькулятор, а точнее - инженерный Калькулятор. В поле вводите любое число в десятичной (DEC) системе (например, 20), переключаетесь в HEX - получаете 14. Именно HEX значения вам понадобятся в ромхакинге. :)
Второй способ: нам известно значение в RAM - тогда включаем HEX Editor и переходим к этому адресу. Для прокрутки я использую кнопки PgUp и PgDn. Можно также перейти напрямую по адресу, зайдя в хексе File->Goto address и вписав туда полученный адрес. Делаем, как на этом скриншоте:

Дальше - также меняете значение и жмёте Save ROM, чтобы сохранить изменения в текущем роме, или Save ROM As, чтобы сохранить изменения в новом роме, не меняя текущий:

   Собственно, подобным образом можно не только накручивать жизни и сердечки в играх, но ещё и увеличить время, скорость персонажей и многое-многое другое. ;)
P. S.: также рекомендую вам скачать и установить утилиту Insectduel_s SMB Utility Rus.exe, с помощью которой вы сможете в Супер Марио задать количество жизней одним кликом, указать количество миров, изменить время, свойства уровней, превращения Боузера после смерти, переделать все уровни, задать их тип и погодные условия, а также переписать интро игры.
Для изменения заставки игры я рекомендую использовать smbte10b.zip. Правда, нужно учесть, что место на заставке не резиновое, за поля залезать нежелательно, иначе изменения не сохранятся.
Благодарю за внимание. ;)
« Последнее редактирование: 23 Сентябрь 2016, 14:30:07 от lancuster »

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #25 : 21 Сентябрь 2016, 00:17:41 »
lancuster, спасибо, почитал)

Оффлайн DendyJunior3

  • Пользователь
  • Сообщений: 282
  • Пол: Мужской
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #26 : 21 Сентябрь 2016, 00:18:20 »
Чуть позже, возможно, выложу ещё дополнение, как делать бесконечные жизни, сердечки, оружие и прочее
лучше напиши как менять кнопки А и В местами, это пока единственное что мне нужно от хакинга

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #27 : 21 Сентябрь 2016, 00:19:48 »
лучше напиши как менять кнопки А и В местами, это пока единственное что мне нужно от хакинга
Ты удивишься, но я тоже хочу это узнать.  :)

Добавлено позже:
Да, и лучше бы ты первый урок прочитал, чтобы в дальнейшем знать, что и как делать, чтоб не переспрашивать по тыщу раз. ;)

Оффлайн neoborg

  • Пользователь
  • Сообщений: 128
  • Пол: Мужской
  • Самый лысый ромхакер BZK
    • ВКонтакте
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #28 : 21 Сентябрь 2016, 00:21:21 »
напиши как менять кнопки А и В местами
первый вопрос по делу) класс

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4256
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
[NES] Учебник по ромхакингу
« Ответ #29 : 21 Сентябрь 2016, 00:25:31 »
Ну, а я пока продолжу:
     Первый урок вышел достаточно длинным, чтобы вписывать в него что-то ещё. Поэтому выкладываю дополнение отдельной темой - "Как сделать бесконечные жизни и пр.."
    Если вы уже прочли предыдущую статью - значит, вы уже знаете, что нужно делать.
    Открываете ром, заходите в Debug->Debugger, вводите в появившееся окно 075A, ставите галочку на Write и нажимаете ОК. Затем традиционно идёте на гумбу и сливаете жизнь. В этот момент сработает брейкпоинт:

    То, что выделено на скриншоте (на что указывает стрелка сбоку) - это и есть код уменьшения жизни (сокр. англ. DEC - DECREASE | Уменьшение). Его необходимо затереть. Для этого переходим по указанному адресу в ROM к данным трём байтам и делаем вот это:

Теперь значение будет записываться в LDA, а не будет уменьшаться, как было изначально.
Можно было затереть все три байта вот так: EA EA EA. Но к Супер Марио это неприменимо, так как после потери жизни вы получите game over.
Так что - да, в некоторых играх тупое затирание байтов типа этого:
Цитата
EA - NOP
EA - NOP
EA - NOP

не прокатит. В таких играх нужно заменять только один байт, но (!) на специальные значения. Вот так:
Цитата
85 - A5
C6 - A5
CE - AD
8D - AD
9D - AD

Если будут выражения типа 99 ХХ ХХ - тогда, конечно, прокатит затирание байтов EA-шками.
... Ну, и, разумеется, делаем Save ROM или Save ROM As.
Спасибо за внимание! ;)