Я заметил, что практически никто не интересуется хакингом SADX (никто по ходу не врубается, как поменять что-то, кроме текстур, потому как, по-видимому, не понимает советов и инструкций), и потому я попытаюсь рассказать о том, как менять, перемещать и добавлять объекты на уровень. Итак, что нам нужно:
1. Hex Workshop - hex-редактор.
2. Cheat Engine - программа для просмотра и изменения процессов в памяти (Memory Editor).
3. Sonic Adventure DX.
Сначала нам нужно выбрать уровень, который мы будем хакать. Префиксы некоторых уровней даю ниже.
Emerald Coast - 01
Windy Valley - 02
Speed Highway - 04
Red Mountain - 05
Lost World - 07
Ice Cap - 08
А теперь обо всем вкратце.
Все объекты на уровнях (кроме Adventure Fields (aka Поля Приключений)) грузятся при помощи файлов SET|уровень|часть уровня|персонаж.bin. В нашем случае это SET|01|00|S.bin.
При помощи Cheat Engine мы будем узнавать координаты будущего объекта, используя координаты Соника и вносить все изменения в файл при помощи Hex Workshop'а. Стоит учитывать, что в уровень можно добавлять такие объекты, которые в нем изначально не использовались. Мы будем все делать на примере первого уровня, а именно Emerald Coast`а!
Не забудьте, что игру нужно запускать в оконном режиме.
Если кто не знает, как запустить в оконном режиме, то залезьте в папку с игрой и найдите файл sonicDX.ini. Откройте Блокнотом и найдите там строчку 'screen=1'. Теперь поменяйте ‘1’ на ‘0’ и сохраните изменения.
Итак, сначала мы научимся добавлять кольца на уровень.
1. Запустите игру и Cheat Engine (далее - CE).
2. В CE откройте процесс ‘sonic.exe’ и добавьте (кнопка ‘Add Address Manually’) следующие адреса:
Sonic X - 03B2CAB0
Sonic Y - 03B2CAB4
Sonic Z - 03B2CAB8
X, Y, Z - координаты положения Соника в уровне, а следующий «код» - адрес в памяти. Все значения должны иметь тип Float. В общем, примерно так:
[Address] 03B2CAB0
[Description] Sonic X
[Type] Float
[Pointer] – галочку ставить НЕ надо.
3. Теперь в Hex Workshop’е откройте файл SET0100S.BIN. Затем в Options - Preferences установите значение Rows равное 32. Это нужно для более удобного представления столбцов.
4. Теперь идите в конец файла и добавляйте 20 битов (Edit - Insert). Не забудьте указать тип значений как Hex.
5. Как вы видите добавились красные нули. Все они составляют структуру одного объекта. Теперь рассмотрим то, что нам нужно изменить.
0000 0000 0000 0000 0000 0000x 0000 0000y 0000 0000z 0000 0000 0000 0000 0000 0000
Выделенные биты - это положение объекта по осям X, Y и Z. Первые 8 цифр – X, следующие 8 – для Y, и остальные 8 – для Z.
6. Теперь вернитесь к CE.
Выделив биты отвечающие за положение по X мы вставим значение Соника по оси X, которое получим из CE (не забудьте заменить запятую на точку перед дробной частью! То есть, если у вас число 456,98965, поменяйте запятую на точку. Вот так: 456.98965) .
Выделив биты, найдите внизу и дважды щелкните на цифре "0" справа от надписи "Float" и вставьте скопированное из CE.
Проделайте тоже самое с другими битами.
7. Теперь идите наверх файла и найдите первую строку.
Выделите 4 первых цифры слева и в поле справа от Unsigned Long введите 790 (в оригинале там было 789). Значит, мы добавили 1 бит. Эти биты отвечают за количество загружаемых объектов.
8. После добавления сохраняем файл, перезапускаем уровень и видим, что кольцо появилось там, где стоял Соник! Но есть небольшая проблемка: кольцо провалилось куда-то в пол. Исправить это очень просто. Добавьте к значению нашего кольца по Y еще 10-15 единиц (тех, что ПЕРЕД точкой, а не после неё).
Теперь вы уже научились добавлять кольца. Добавлять другие объекты ничуть не сложнее. Мы просто изменим объект.
1. Выберете место для нового объекта и повторите все действия по добавлению кольца.
Я, например, выбрал это место для добавления ‘бегательной панели-ускорителя’.
2. Теперь вернитесь в Hex Workshop. Взгляните на первую группу нулей, которые мы добавляли…
0000 0000 0000 0000 0000 0000x 0000 0000y 0000 0000z 0000 0000 0000 0000 0000 0000
Эти нули (точнее первая пара) и определяют, какой объект будет загружаться.
3. Поскольку нам нужна Dash Panel, измените значение первых двух нулей на 03 (значение для "бегательной панели"), введя в поле Unsigned Byte значение 3.
4. Перезагрузите уровень (Пауза [Enter] – Quit (Выход) и зайдите на уровень ещё раз) и проверьте.
Работает!
Хотя вам наверняка захочется изменить направление панели. Для этого вновь вернемся в Hex Workshop.
1. Посмотрите на выделенные курсивом и жирным биты. Они отвечают за поворот панели по осям X, Y и Z соответственно.
0000 0000x 0000y 0000z 0000 0000x 0000 0000y 0000 0000z 0000 0000 0000 0000 0000 0000
Что ж, остается только ввести значение для поворота. Вводить нужно от 0 до 255 в поле Unsigned Byte.
Даю доп. ориентиры:
0 градусов – 0. ^
90 градусов по часовой – 31. >
180 градусов – 63. v
90 градусов против часовой (270 градусов по часовой) – 127. <
Список основных объектов:
00. Ring (Кольцо)
01. Spring ('Пружина' 1)
02. Spring ('Пружина' 2)
03. Dash Panel (‘Бегательная панель-ускоритель’)
04. Spinning Spike Ball + Chain (Вращающийся вокруг чего-то там шар с шипами)
05. Falling Spike Ball (Падающий шар с шипами)
06. Spikes (Шипы)
07. Nothing (Ничего [?])
08. Egg Prison (‘Тюрьма’ с птичками флики. Ставиться в конце уровня)
09. Switch (Переключатель. Очевидно, для «ракеты», которая доставляет вас в различные недоступные места на уровне. Имеется на уровне Red Mountain)
0A(10). Plant (Дерево. Пальма)
0B(11). Dash Hoop (Кольцо-ускоритель. Есть на уровне Windy Valley за Тейлза)
Оригинальный английский мануал - by X-Hax (aka Dude).
Перевод – by ХЗ кто (XDDDD).
Выложено на SF21 GreenDrekon’ом (и на Sonic-World (английский мануал) толи v3, толи speed_of_sound’ом).
Редактирование, разжёвывание, доработка и дополнительный перевод – by Maxwells.