Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - lancuster

Страницы: Назад 1 ... 69 70 71 72 [73] 74 75 76 77 ... 146 Далее
2161
Да, это нужно. Потому как я упомнил в своих статьях только о двух командах - LDA и DEC - да и то не подробно. А кроме них, этих команд в ассемблере целая туча. И без них действительно не сделать серьезных вещей. :(
Да, и кстати. NES может отображать только 16 цветов, так что в нескольких наборах цветов некоторые обязательно будут повторяться.

2162
Тут у многих ники с маленькой буквы, даже у модераторов. И вообще, чё ты придрался к моему нику?.. Я обещал помочь со статьями - я своё обещание сдержал. Чего тебе ещё нужно?
Для Сеги примерно тот же принцип, только там чуть другие инструменты нужны.

2163
Ну, если бы Xerox подсказал. :)
Мы с ним Чип и Дейл 4 делали, много объектов приходилось пересаживать на другой набор цветов.

2164
Ого, куда оффтоп зашел! Скоро, глядишь, "у кого длиннее и толще" начнут писать... :lol:

2165
M3tro ™, начнем с того, что в твоём нике сразу 2 ошибки можно заметить. Во-первых - вместо английской "e" у тебя значится цифра 3, и на конце - знак торговой марки... Ты себя продаешь, что ли? Или билеты на фильм "Метро"? :lol:
Во-вторых, я назвался так, чтобы как раз не путали с городом, так же, как и ты со своим ником поступил. И если ты не в курсе, то в английском языке "u" произносится не только как "у", но и "а". Пример: слова "custom", "cut". Ты же не произносишь "кустом", "кут", верно? Значит, знаешь это. Так что не пиши через "у" (опять же - жмёшь на ник, и он сам вставляется, лол).
В-третьих, по поводу вклада в учебник. Я уже его внес, начал в тот же день. Статьи по этому делу выложил в той же теме. Так что - жду, когда ты изменишь мнение обо мне. :)

2166
Я тоже заметил. Но меня больше интересует, знает ли он, как поменять местами кнопки, или просто так сказал. :)

2167
Прикольно, однако!

Попробовал чисто прикола ради выложить из тайлов фразу "Google Rulit", только не очень получилось:
Чтобы получилось "очень" - нужно тайлы перерисовать. А для этого нужно скачать один из вышеуказанных редакторов. Я рекомендую YY-CHR, поскольку считаю его самым удобным из всех.

2168
neoborg, про граф.редактор статью выкладывать?

2169
Например? По перемене кнопок есть?

2170
Я бы так не сказал. Просто там людей толковых мало. Как и здесь, впрочем. :)

2171
Урок № 2: Редактирование титульника
Итак, мы с вами научились находить переменные, отвечающие за жизни, менять их количество, а также делать бесконечными жизни и энергию. В данном уроке мы рассмотрим титульный экран ещё одной, не менее известной игры на NES - Ghosts'n Goblins.
Но перед тем, как приступить непосредственно к редактированию самого титульника, скажу пару слов о строении титульников в NES играх. Титульные экраны могу составляться либо микроблоками (тайлами 8х8 пикселей), так и макроблоками размерами 2х2 тайла. В некоторых играх используется оптимизация кода засчёт упрощения оформления повторяющихся строк (для примера: чтобы не писать "48 48 48 48 48 48 48 48 48 48", некоторые разработчики оформляют данную строку более кратко: "0A 48", что означает 10 байт одним тайлом). Подобные ухищрения проводятся в основном для экономии места в коде.
В данной же игре нам не придётся расшифровывать код титульника, ибо в ней титульник полностью открыт. Более того - он оформлен микротайлами, что удобно для его редактирования.
Открываем ром Ghosts'n Goblins (U) [!].nes на эмуляторе FCEUX 2.2.3, дожидаемся загрузки титульника, затем нажимаем на клавишу "\" (чуть выше Enter). Эмулятор перейдёт в режим паузы (будет виден значок в правом нижнем углу). Делается это для того, чтобы в процессе редактирования игра не проигрывалась сама собой и не отвлекала вас, а сам титульник был перед глазами. Отключить паузу эмулятора можно, зайдя в Debugger и нажав Run.
Теперь, когда титульник перед вами, вам нужно выяснить, как же он устроен. Для этого заходите в Debug->Name Table Viewer. Появится окно, в котором вы можете изучить строение титульника, наводя курсор на определённый тайл и узнавая его значение:

Также будет отображаться его положение на экране и адрес в PPU, но это нам не нужно, так как мы хотим постоянный результат. Так что снова лезем в Debug->Hex Editor и снова переключаемся в ROM File. Теперь разворачиваем окно Name Table Viewer и смотрим значение первого тайла титульника. Хекс редактор также должен быть включён (как на скрине). В хекс редакторе заходим в Edit->Find... и вписываем все значения с первого тайла в окно поиска:

Желательно написать больше значений, чтобы сразу найти нужное нам место. Только смотрите, пишите внимательно, не ошибайтесь - в Name Table Viewer нет сетки, показывающей границы тайлов, а потому съехать вниз или вверх и ввести значение с другой строки запросто можно.
Итак, вы ввели первую строку титульника и тут же её нашли. Жмём повторно на кнопку и убеждаемся, что больше совпадений нет. Это то, что мы искали. На скрине для удобства выделена вся первая строка. Теперь для наглядности мы попробуем затереть эту строку. Смотрим в Name Table Viewer, какое значение отвечает за пустоту. Это значение FF. Смело вводим это значение на всю строку.
Нажимаем Reset или Power, зажимаем "\" и дожидаемся титульника (можно ускорить это дело, зажав также кнопку Tab).
Мы видим, что у нас получилось затереть первую строку:

Таким образом мы может переделать весь титульник. Чтобы точно знать, на что будете заменять существующие значения, сверните или закройте Name Table, и откройте параллельно с хекс-редактором PPU Viewer (Debug->PPU Viewer):

И точно так же глядите значения тайлов и вбивайте их в хекс.
Но чтобы результат был более приемлемым - вам придётся придумать, как вам оформить новый титульник, а также предварительно перерисовать графику в тайловом редакторе типа YY-CHR или Tile Layer Pro. Но об этом мы узнаем в следующем уроке.
Благодарю за внимание! :)

2172
Так "подробно" всё объяснил. Прям не придерёсси... :lol:

2173
Да, это и так было понятно. Просто это единственное видео, в которой хакают Контру и в котором это было нормально описано. :)

2174
пока ехал на работу посмотрел с телефона как хакать контру на жизни, приехал и за 5 минут по тому примеру нахакал жизней в мегамене
У Кластера в видео было рассказано подобное. Думаю, ты Кластера как раз и смотрел.  :cool:

2175
Ну, а я пока продолжу:
     Первый урок вышел достаточно длинным, чтобы вписывать в него что-то ещё. Поэтому выкладываю дополнение отдельной темой - "Как сделать бесконечные жизни и пр.."
    Если вы уже прочли предыдущую статью - значит, вы уже знаете, что нужно делать.
    Открываете ром, заходите в 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.
Спасибо за внимание! ;)

2176
лучше напиши как менять кнопки А и В местами, это пока единственное что мне нужно от хакинга
Ты удивишься, но я тоже хочу это узнать.  :)

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

2177
Тогда вот:
[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. Правда, нужно учесть, что место на заставке не резиновое, за поля залезать нежелательно, иначе изменения не сохранятся.
Благодарю за внимание. ;)

2178
К слову. Первый урок от меня, для новичков. Если "многобукав" - проходите мимо. :lol:
В статье всё расписано пошагово, скрины прилагаются:
[NES Ромхакинг] Первый урок. Введение
Чуть позже, возможно, выложу ещё дополнение, как делать бесконечные жизни, сердечки, оружие и прочее.  ;)

2179
лучше бы и ты его выучил, вместо того чтоб строчить тыщи бестолковых мессаг, может таки (ром)хакером стал бы, полноценным ))
Для меня это типа хобби, так что пока нет... Времени нет на изучение. :-\

2180
Не пять, а три. И тебе это не поможет. Ты все равно самых простых вещей не знаешь. В частности ассемблера.
Я тебя не слушаю, посолю и скушаю.  :P :P :P :P :P :P :P :P :P :P
И я не собирался у тебя учиться, лолъ, ептъ. :biggrin:

2181
Он слишком гордый для этого. :)
Вообще, он говорил, что разобрать игру можно через Блокнот. Я его урок не смотрел (ещё бы - 5 с половиной часов видео!), так что ничего об этом сказать не смогу. Ну, разве что сам ГУРУ снизойдет до нас, плебеев... :lol:

2182
братки, пишите по делу. срача не по теме мне и в своей группе хватает  ^_^
Вас понял, кэп. Постараюсь в ближайшее время написать хотя бы одну статейку.

2183
Не, ну чисто просто интересно стало. CaH4e3, можно заценить твой лучший хак?
Он уже его выложил. Рыбакоп 3 называется, лолъ. :D

Добавлено позже:
Вообще, не понимаю эту дурацкую привычку: заходить в тему, чтобы тупо писать "все хаки - говно, а я такой молодец". Больше походит на новый вид садомазохизма: посещать темы, чтобы удовлетворять своё непомерно раздутое эго. :D

2184
И хакать захотят на смартфонах? Может пусть люди перестанут в*ся и принимать в том формате, котором подают?
Знаешь, что я скажу? Один мой знакомый, который выучил ассемблер, мог читать доки в телефоне, резать ромы на телефоне, а уже собирать, редактировать и тестировать - на компе. Да и то он у него уже загнулся. Мой тоже, кстати, начинает спотыкаться... :(
Так что ответ я уже озвучил: кому удобно читать статьи - пусть читает статьи, кому удобно читать цельный документ - пусть читает его.

2185
Вот потому все ваши хаки - говно.
Вспоминаю реплику Нагиева из "Самого лучшего фильма": "Вы все - говно!". :lol:
Скажи, а Кеня случайно не твой внебрачный сын, или внук? Уж больно одинаково вы оба выражаетесь. :D

2186
Санчез, проблема в том, что так, как ты делаешь, будут поступать единицы. Новичкам такое не под силу.
Это ты привык препарировать игры. Мы же обходимся стандартными инструментами - пинцетом, йодом и ватно-марлевой повязкой. :lol:

2187
Тогда уж лучше пусть будет в 2х вариантах: в виде статей и в виде одного большого документа. Так будет удобней для всех.

2188
lancuster, мой документ будет в формате .chm  :)
для статей есть отдельное место в конце. да, надо будет их отсортировать по группам, если много наберется
Скомпиленный html-документ? А что, если люди захотят читать его на телефонах, смартах и прочем?
Статьи нужно не только упорядочить, но ещё и указать авторство тех, кто их написал, и время написания указать, чтоб люди были в курсе, кто для них старался.

2189
Вот, Ланкустер, тут чел один начал писать Учебник по ромхаккингу NES, не знаю, может тебе пригодится. Может и ты туда чего тоже внесёшь.
Было бы хорошо, чтоб и он внёс туда свои 5 копеек ;).
Я бы, может, и взялся, если бы:
а) вы перестали коверкать мой ник или хотя бы научились нажимать на ник, чтобы ответить
и б) если сами отнесетесь к этому серьезно. Хотя я лично полагаю, что если я начну описывать то, что знаю - Санчез или облолкает всё написанное или тупо отстранится от участия (что в принципе одно и то же).
Спроси того же mr.gamer , хочет ли он менять своё отношение ко мне, например. Или же спроси у себя, изменится ли твоё мнение, если я поделюсь своими знаниями с остальными... :)

2190
Будет неплохо, если все статьи будут собраны в один документ. PDF, DOC, TXT, любой другой формат - неважно. Многим новичкам уже порядком надоело слышать от знающих людей "кури доки", "ищи сам" и прочее.
Важно не только собрать весь материал, но и оформить его должным образом, чтобы новички опять не занимались поиском нужной информации.
P. S.: скоро, может, я тоже что-то добавлю. Это зависит от того, будет ли у меня достаточно свободного времени и вдохновения писать обучающий урок. ;)

Страницы: Назад 1 ... 69 70 71 72 [73] 74 75 76 77 ... 146 Далее