лучшие хаки на соника
Hacks
From Sonic Retro
Sonic hacks are altered versions of Sonic the Hedgehog games that have been edited through the process of ROM Hacking. From the emergence of Cyan Helkaraxe’s Sonic 1 Beta Hoax in 1999, the production of hacks has been a vital part of the Sonic research community and scene. Starting with the early documents penned by Cyan and saxman, to the Nemesis guides, the Sonic Community Hacking Guide, and beyond, researchers have used their understanding of the Sonic games to alter them in various ways. While earlier hacks were simple, such as minor palette changes, a number of hacks today are very complex. Over time, as the scene learns more about the underlying code behind the »Sonic the Hedgehog series, the extent of these modifications has expanded. Modifications now include:
Today, with the assistance of hex editors, disassemblies and specific Sonic Hacking Utilities, fans have been creating more extensive modifications.
Hacks in the Sonic community are now usually distributed as full ROMs. In the past, IPS patches were used, since these are usually much smaller than a full ROM and were, therefore, easier to distribute in a time when dial-up was widely used. It was also believed, that since patches do not contain any copyrighted code, it was not illegal to distribute one. This format fell out of use when split disassemblies became available as a way to edit game data, and when dial-up was being replaced by faster broadband connections. The massive shifts in the ROM that can result from reassembly made IPS patches very large, and they would often contain a good volume of code anyway, thus eliminating the alleged legal advantage. Though saxman’s RXL patch format was designed to replace IPS, it quickly faded into obscurity along with its predecessor. Another format, [1], takes shifted data into account, resulting in much smaller patches. (Note that xdelta-1.x used the original format known as xdelta; xdelta-3.x uses the standard VCDIFF format.)
Subcategories
This category has the following 26 subcategories, out of 26 total.
Sonic hacks
From Sonic Retro
Sonic hacks are altered versions of Sonic the Hedgehog games that have been edited through the process of ROM Hacking. From the emergence of Cyan Helkaraxe’s Sonic 1 Beta Hoax in 1999, the production of hacks has been a vital part of the Sonic research community and scene. Starting with the early documents penned by Cyan and saxman, to the Nemesis guides, the Sonic Community Hacking Guide, and beyond, researchers have used their understanding of the Sonic games to alter them in various ways. While earlier hacks were simple, such as minor palette changes, a number of hacks today are very complex. Over time, as the scene learns more about the underlying code behind the »Sonic the Hedgehog series, the extent of these modifications has expanded. Modifications now include:
Today, with the assistance of hex editors, disassemblies and specific Sonic Hacking Utilities, fans have been creating more extensive modifications.
Hacks in the Sonic community are now usually distributed as full ROMs. In the past, IPS patches were used, since these are usually much smaller than a full ROM and were, therefore, easier to distribute in a time when dial-up was widely used. It was also believed, that since patches do not contain any copyrighted code, it was not illegal to distribute one. This format fell out of use when split disassemblies became available as a way to edit game data, and when dial-up was being replaced by faster broadband connections. The massive shifts in the ROM that can result from reassembly made IPS patches very large, and they would often contain a good volume of code anyway, thus eliminating the alleged legal advantage. Though saxman’s RXL patch format was designed to replace IPS, it quickly faded into obscurity along with its predecessor. Another format, [1], takes shifted data into account, resulting in much smaller patches. (Note that xdelta-1.x used the original format known as xdelta; xdelta-3.x uses the standard VCDIFF format.)
Contents
List of notable Sonic hacks
Sega Mega Drive
The majority of Sonic ROM hacks are modifications of Sega Mega Drive games, since these are smaller and relatively simple compared to the games of later consoles. Also, many ROM hackers in the Sonic scene grew up with the Genesis and its games, so they hold fond memories of these games.
Хакинг классического Sonic the Hedgehog для Sega
В этой статье я хочу разобрать внутреннее устройство легендарной игры Sonic the Hedgehog для приставки Sega Mega Drive, а также способы ее модификации или, как еще говорят, хакинга. Эта игра насчитывает порядка сотни хаков, включающих как действительно достойные работы (такие как Pana Der Hejhog или Sonic Remastered), так и странные и даже жутковатые (вроде An Ordinary Sonic ROM Hack). Чтобы понять, как их создавать, нужно разобраться, как писать на языке ассемеблера Motorola 68K (обычно игры для приставок тех времен писались именно на ассемблере), откуда взять дизассемблированный вариант игры и какую архитектуру имеет ее движок.
Дизассемблирование ROM-файлов для Sega осуществляется при помощи коммерческого дизассемблера и дебаггера IDA Pro. Затем происходит кропотливый процесс разметки, структурирования и причесывания сырого ассемблерного кода с использованием дебаггера (и смекалки). Этот процесс требует хорошего понимания технических особенностей платформы Sega Mega Drive и игр для нее.
К счастью, на GitHub уже есть дизассемблированные и размеченные версии всех игр серии Sonic the Hedgehog, созданные энтузиастами при поддержке сайта Sonic Retro. Лучше всего размечен и структурирован исходный код именно первой игры серии. Эта версия кода находится в репозитории sonicretro / s1disasm и именно она будет разобрана в статье.
Погружение в внутреннее устройство игрушки начнем с теории.
Технический обзор приставки
Sega Mega Drive (известная в США как Sega Genesis) оснащена 32-битным центральным процессором Motorola MC68000 (сокращенно Motorola 68K) и дополнительным звуковым сопроцессором Zilog Z80 (взамодействие с Z80 происходит через общую память). Объем оперативной памяти (RAM) – 64K. Разрешение экрана в основном режиме (в американской версии) – 320×224 пикселей.
Использованный процессор Motorola 68K в свое время был достаточно распространен. Этот чип применялся в самых разных системах, от популярных домашних компьютеров и игровых приставок до космических шаттлов. Одна из модификаций Motorola 68K даже была установлена в легендарном Apple Macintosh.
Графическая подсистема Mega Drive основана на видеоконтроллере Yamaha YM7101 и поддерживает аппаратную работу с двумя слоями фона и отрисовку до 80 спрайтов поверх них. Подробнее графика в игре будет разобрана далее; прочитать о графике в Sega Mega Drive отдельно можно в статье «Как работала графическая система Sega Mega Drive: Video Display Processor».
Для сборки игры используется макроассемблер AS. Набор инструкций этой платформы совершенно не сложный и содержит всего 82 инструкции. Для сравнения: по подсчетам пользователя ResearchGate современный Intel Core i7 имеет 338 инструкций.
Разберем основные инструкции Motorola 68K.
Операция копирования
move – скопировать данные из источника в приемник.
При записи операнда в скобках вычисление происходит со значением по такому адресу в памяти:
Такой режим адресации возможен только для адресных регистров ( a* ).
Арифметические операции
Операции управления потоком выполнения
Операции ветвления
Более подробно изучить команды Motorola 68K вам поможет отличный мануал (с ужасным фоном и шрифтами) автора Марки Джестера, где каждая из команд разобрана максимально подробно.
Сборка игры
Репозиторий s1disasm содержит Python-скрипт, автоматически запускающий нужную версию ассемблера для текущей операционной системы со всеми необходимыми флагами. Также этот скрипт выполняет специфическую для игры Sonic the Hedgehog операцию «Kosinski compression», которая сжимает карты уровней и другие бинарные данные (чтобы они поместились в память картриджа).
Все, что нужно сделать пользователю, это перейти в git-ветку AS ( git checkout AS ) и выполнить команду:
Архитектура движка игры
Игровые параметры
Дробные переменные хранятся в формате с фиксированной точкой, поэтому для получения реальных значений их необходимо разделить на 256. Так, ускорение Соника составит 0xC / 256 = 0.046875, а торможение – 0x80 / 256 = 0.5 (пикселей на игровой цикл в квадрате).
Графика
Для примера приведем скриншот игры с включенным режимом Low Color (нулевой бит регистра Mode Register 1 выставлен в ноль):
Video Display Processor позволяет аппаратно работать с двумя фоновыми слоями – background (слой B) и foreground (слой A), а также со слоем спрайтов, которые отображаются поверх фона. Фоновые слои собираются из тайлов 8×8 пикселей с помощью карт тайлов. Спрайты также собираются из тайлов; максимальный размер спрайта – 4×4 тайла. Таким образом, максимальный размер аппаратного спрайта составляет 32×32 пикселя.
Как видно из названия, подпрограмма LoadTilesAsYouMove занимается подгрузкой тайлов на фоновые слои по мере продвижения игрока по уровню. В игре Sonic the Hedgehog размер обоих тайловых плоскостей составляет 64×32 тайла или 512×256 пикселей.
Графический процессор также позволяет устанавливать не только общее смещение фонового слоя, но и смещение его отдельных горизонтальных рядов тайлов, используя так называемую таблицу скроллинга. Эта возможность позволяет перемещать удаленные элементы фона медленнее, чем близкие. Таким образом создается эффект параллакса, который имитирует 3D-графику и придает сцене объем. Этот эффект используется почти во всех уровнях Sonic the Hedgehog.
Эффект параллакса в фоновом слое уровня Marble Zone:
Игровые объекты
Отметим, что система координат в игре типична для экранной графики и имеет ось X направленную вправо, и ось Y, направленную вниз.
Хак: no-ring challenge
В качестве примера реализуем довольно простой хак, который может понравиться самым ярым фанатам игры: no-ring challenge. Этот хак предлагает пройти игру без золотых колец. В результате, каждая атака Соника будет сразу убивать его и заставлять игрока проходить уровень заново (либо с точки сохранения).
Перейдем в главную подпрограмму объекта «Кольцо» – Ring_Main и добавим в самое ее начало простейшую инструкцию прыжка ( bra ) на процедуру удаления кольца:
Можно убедиться, что в получившемся ROM’е кольца и бонусные мониторы с кольцами на уровнях будут отсутствовать, что усложнит прохождение. Патч целиком можно посмотреть на GitHub. Туда же выложен готовый бинарник на случай, если кто-то захочет поиграть в такую версию игры, не разбираясь со сборкой.
Хак: притягивание колец
В первой и второй играх серии бонусный щит только защищает игрока, но при этом не имеет никаких дополнительных функций. Попробуем его улучшить и добавить к нему возможность электрического щита из Sonic the Hedgehog 3 – притягивание колец.
Алгоритм Sonic the Hedgehog 3
Алгоритм, использующийся для этого эффекта, подробно описан в вики Sonic Retro. Если персонаж, обладающий электрическим щитом, находится ближе, чем в 64 пикселях от кольца по каждой из осей, кольцо переходит в режим намагниченности и начинает движение. В дальнейшем этот флаг больше не снимается с кольца. В режиме намагниченности кольцо ускоряется на 0.1875 за каждый шаг в сторону игрока, если оно уже движется в нужную сторону по данной оси. Если же кольцо движется от игрока, ускорение составляет 0.75.
Разница в значениях предусмотрена для того, чтобы кольца с одной стороны не слишком перестреливали, но, с другой стороны, если перестрел уже случился либо если игрок движется быстро и резко оказывается с противоположной стороны, быстро «исправлялись» и меняли свое направление движения.
Реализация алгоритма
Добавим в начало подпрограммы Ring_Animate код, устанавливающий флаг намагниченности в случае, если игрок ближе к кольцу, чем на 64 пикселя по каждой оси:
Реализация алгоритма предполагает разное ускорение в зависимости от того, летит кольцо в сторону игрока или нет, что по сути может быть представлено как сравнение знаков значений скорости кольца и разницы положений кольца и игрока. В псевдокоде такое сравнение может иметь примерно такой вид:
Для простой реализации такого сравнения вспомним, что способ хранения знаковых целых чисел в большинстве процессоров (включая Motorola 68K) подразумевает возможность определить знак числа простым считыванием самого старшего бита, причем 0 будет обозначать положительное число, а 1 – отрицательное. Проверить равенство битов в байте можно с помощью операции исключающего «или» – XOR ( eor на Motorola 68K).
Как уже было отмечено выше, дробные значения (включая скорость игровых объектов) хранятся в формате с фиксированной точкой, поэтому необходимые значения ускорения (0.1875 и 0.75) необходимо домножить на 256 (получив 48 и 192 соответственно).
Реализуем процедуру притягивания колец:
Для того, чтобы кольцо действительно осуществляло движение согласно установленным скоростям, необходимо добавить вызов упомянутой выше подпрограммы SpeedToPos :
Собираем итоговый ROM игры, запускаем и — вуаля — фича из Sonic 3 доступна в Sonic 1!
На GitHub можно просмотреть патч целиком, а также скачать получившийся бинарник.
Заключение
Эта статья является лишь базовым разбором методов модификации игры. Статья не рассматривает инструменты для редактирования уровней (SonED2, Chaos), создание новых персонажей, игровых объектов и механик. Также не рассмотрен симулятор/отладчик Motorola 68K EASy68K, который может помочь более пристально разобраться, как работает процессор Sega.
Тем не менее, я получил большое удовольствие, покопавшись в кишках любимой игры детства. Надеюсь, этой статьей мне удастся разбудить в ком-то такую же ностальгию, к тому же черпать вдохновение для работы можно и из сотен уже реализованных хаков, и из последующих игр серии.
Sonic Хаки
Вадим’блин Кулёв запись закреплена
Вадим’блин Кулёв запись закреплена
Илья Сергеевич запись закреплена
И так ребята, спустя несколько бессонных ночей и дней у экрана я закончил свой хак!
И так представляю вешему вниманию Sonic the hedgehog 3 Forever!
Или же Sonic Forever Edition!
Название тоже не с потолка взятое, данный хак сделан под стиль моего спрайтового мульт-сериала «Соник Навсегда»
Показать полностью.
Что в этом хаке?
Ну ясный перец, что изменена графика персонажей и пару звуков (не говоря о худе и т. д.)
Изменены персонажи, теперь вам предстоит играть в место Соника за Семиуса а в место Тейлза за Соника.
Если кто незнает кто такой Семиус то это МОЙ персонаж, который играет ключевую роль в моем спрайтовом сериале «Sonic Forever».
Соник теперь умеет литать (в сериале такого нет, это фишка хака)
К сожалению Супер Соник не желтого цвета а лишь сияет синим (или голубым) цветом.
Ну и Наклз не остался не тронутым. Я подумывал о том, что стоит ли мне его менять?
Кроме того, его спрайты в катсценах очень трудно менять и случался даже баг внося изминения в концовочный арт.
Так что я его оставил Накалзом но с небольшими изминениями.
Наконец Эггман.
Все вы знаете, что больше всего я люблю ТРЕТЬЮ часть про Соника и решил батников и т. д. Оставить в этом стиле. Мой сериал как раз сделан под стиль третьего Соника (не говоря о том, что это продолжение после событий игры).
По этому Эгги выглядит также как и выглядил но. Чучуть иначе. Сами увидите в ходе прохождения. Будьте внимательны!
Остальное в прочем увидите сами.
Да, еще вот.
Взломанная Sonic The Hedgehog
Наверное, многие помнят те времена, когда отечественные геймеры могли часами сидеть за приставкой от Sony.
Данная игра является одним из легендарных хитов того времени.
Особенности игрового процесса
Приключения Соника снова начинаются! Если вы с ним еще не знакомы, то речь идет о человекоподобном еже, который обладает выдающимися суперспособностями – он невероятно быстро бегает. Сонику под силу перегнать скорость звука, так что в этом ему практически нет равных.
Если говорить об игровом процессе более подробно, то никаких радикальных изменений не произошло. Как и в оригинале, вам нужно будет либо бежать, либо катиться.
Оформление
Эта аркадная игра примечательна по-настоящему первоклассной графикой. Ее можно смело приравнивать к консольному уровню. Абсолютно все локации детально прорисованы. Разработчики сделали все возможное для того, чтобы представить оригинальную графику в современной обработке. Окружающий мир изобилует яркими и красочными цветами.
Что касается анимации, то она не претерпела никаких изменений: все оригинальные движения героев были сохранены.
Также стоит отметить наличие звукового сопровождения (бодренькая музыка и различные эффекты).
Основные плюсы
У нас на сайте Вы можете скачать взломанную игру Sonic The Hedgehog (Соник Хеджхог) на Андроид бесплатно!