Введение в хакинг для начинающих
Автор гида: vladikcomperВы решили заняться хакингом классических Сониковских игр, но не знаете с чего начать? В этом гиде я постараюсь помочь вам и рассказать про хакинг в общих чертах.
В мире уже существует множество специальных программ, которые заметно упрощают процесс хакинга Сониковских игр и расширяют просторы для творчества. После недолгого изучения некоторых программ, вы сможете уверенно редактировать уровни, палитры и спрайты, причем для некоторых вещей вам даже не понадобятся навыки программирования и работы в HEX редакторе.
Итак, начнем наше погружение в мир хакинга! Для начала, определимся с инструментами.
Дизасембл
Главное, что Вам потребуется для хакинга - это дизасембл. Дизасембл - это "разобранный" на части ROM игры, где многие данные (графика, палитры и др.) разбиты на отдельные файлы, которые удобно редактировать, а код игры дизассемблирован (переведен на язык ассемблера). В дизасембле есть компилятор, который компилирует из исходного кода игры новый ROM.
Имея полный код игры и все данные, разбитые на файлы, возможности хакинга безграничны. Можно полностью переделать игру, добавлять абсолютно новый контент, все, что угодно (в пределах возможностей приставки, разумеется). Впрочем, этому еще надо научиться. На начальных порах вам предстоит познакомиться с великолепными программами, редакторами уровней, спрайтов, которые будут изменять файлы за вас. Они отчасти помогут разобраться, как устроена игра, которую вы хакаете.
Но вначале давайте выберем себе дизасембл. На данный момент дизасемблированы все классические Сониковские игры, и к ним существуют даже по несколько версий дизасемблов. За дизасемблами обратимся к замечательному и огромному сайту - Sonic Retro.
http://info.sonicretro.org/Disassemblies
Как видите, на каждую игру существует множество версий дизасемблов, одни из них довольно старые, другие посвежее и полнее - легко запутаться в этом разнообразии.
Дизасемблы Соник 1
Всем новичкам рекомендую начинать хакинг именно с Соник 1. Игра относительно мала и изучена больше всех остальных. Именно для первого Соника написано большинство гидов и программ. Ее движок намного проще для изучения, чем движки сиквелов. Если вы решили начать свой хакерский путь с Соник 1, рекомендую два варианта:
Sonic 1 (Split and Text by Hivebrain) (ASM68K) — Очень старый (2005 год), но до сих пор популярный дизасембл. Главный его плюс — организованность кода и простота. Под него на данный момент написано большинство гидов, и на моем сайте вся информация по Соник 1 дается для него. На смену ему вот уже много лет приходит Sonic 1 SVN Disassembly, но все никак не придет. Последний никак не может избавится от неорганизованности и страдает перегруженностью константами.
S1 Hacking Studio 2 — это готовый инструментарий для хакинга, включающий все нужные редакторы игры (которые будут описаны позже в этой статье). Программа работает с обновленным дизасемблом Hivebrain'а, он основан на версии указанной выше, но более подробно комментирован и усовершенствован. Обновления никак не сказываются на совместимости - абсолютно все гиды, написанные под старый дизасембл, будут работать и в новом. С помощью программы вы также можете одним кликом добавлять в игру Spin Dash, Jump Dash, исправлять оригинальные баги. Все уже настроено и готово к работе.
Дизасемблы Соник 2
Движок Соник 2 основан на доработанном и улучшенном движке первой части, поэтому с точки зрения хакинга эти две игры очень похожи. Кстати, когда хакинг только зарождался, Соник 2, был напротив, самой популярной в хакинге игрой, но стоило появиться одному интересному гиду, и дела изменились.
Sonic 2 (Split and Text by Xenowhirl) — самый рекомендуемый дизасембл для этой игры. К слову, он выглядит намного лучше и разнобраннее дизасембла Hivebrain'а на Соник 1, но это и понятно - дизасембл вышел в 2007 году. Хотя все это компенсируется усложненностью движка и большим количеством кода. Все гиды для Соник 2 на моем сайте рассчитаны именно на этот дизасембл.
Хакинг игр Sonic 3, Sonic & Knuckles и Sonic 3 & Knuckles, к сожалению, очень слабо развит на данной момент, так что он в рамках этой статьи рассмотрен не будет.
Редакторы ассемблера
Если вы хотите всерьез заняться изучением Ассемблера, вам не обойтись без хорошего редактора с подсветкой синтаксиса. Если же программирование - не ваш конек, и вы просто ограничитесь применением гидов, можете пропустить этот раздел и использовать для редактирования кода обычный Блокнот.
Сега использует процессор Motorola 68000, или, сокращенно, M68K. Ассемблер M68K мало распрастранен, поэтому мало какой редактор поддерживает подсветку его синтаксиса. Когда мне понадобился такой редактор, я потратил немало усилий, чтобы найти его.
Esrael Neto Assembler Editor
Когда-то я пользовался специальным для этого ассемблера редактором - Esrael Neto Assembler Editor, который написал небезызвестный Esrael. В нем очень хорошая подсветка синтаксиса, она так мне понравилась, что примерно те же цвета я стал использовать для подсветки кода на страницах сайта (в теме Синюшная). К сожалению, мне пришлось от него отказаться из-за багов. Впрочем, может баги были только у меня, так что посмотрите его.
http://info.sonicretro.org/images/4/49/68kd.7z
ConTEXT
ConTEXT - это лучший вариант, который я могу предложить на данный момент. Очень советую использовать именно его.
Скачайте редактор с официального сайта (http://www.contexteditor.org/) и установите его. Для удобной работы предлагаю немного настроить его. Откройте окно настроек среды (Options->Enviroment Options). Зайдите во вкладку Editor. Убедитесь, что включены опции Auto Indent и Tab Indent, поставьте Tab Width на 8, а Tab Mode на Hard Tabs. Выключите Smart Tabs.
Кстати, на ConTEXT есть русская локализация (официальная), однако перевод неполный и местами неточный, поэтому я, во избежании путаницы, давал названия на английском языке.
Этот редактор очень гибкий, и позволяет настроить подсветку синтаксиса со всеми тонкостями. На этот редактор я даже нашел готовую подсветку синтаксиса, сделанную Ambil'ом. Я дополнил ее отсутсвующими словами и изменил цвета - и получил наконец точную копию подсветки, что была в ESE ASM.
Чтобы установить подсветку синтаксиса M68K, скачайте этот архив: [файл утерян]. Распакуйте CHL-файл из него в папку Highlighters программы.
HEX-редакторы
Как известно, все файлы - это массивы из байтов определенной длины, будь то текстовичок, программа или РОМ Сеговской игры. Работая над хаком, вам часто может понадобиться изменять данные, которыми оперирует игра. Данные состоят из байтов, следовательно, вам нужно будет изменять значения байтов.
Для этого потребуется шестнадцатеричный редактор, или HEX-редактор (HEX = Hexadecimal).
HEX Workshop
Очень известный HEX-редактор, который обладает огромной кучей функций (многие из которых вам вряд ли пригодятся). Я им не пользовался, но многие говорят, что он очень хорош и горячо рекомендуют. Единственный минус - он платный, но при сильном желании это не будет помехой.
Официальный сайт редактора — http://www.hexworkshop.com/
WinHEX
Еще один известный и многофункциональный редактор. Я пользуюсь им уже очень давно, и мне его хватает, поэтому я не перехожу на другие редакторы и даже не присматривался к ним. WinHEX довольно удобен в обращении, интерфейс редактора чист и опрятен, функции поиска, замены и перехода к оффсету в наличии имеются, для меня это главное. :) Он тоже платен, есть бесплатная версия, но она ни на что не годится. Ищите кряк.
Официальный сайт редактора — http://www.winhex.com/winhex/
Редакторы Соников и программы для хакинга
TODOh