| Главная » Статьи » Гайды по хакингу Sonic 1 |
Вход в спецуровни через чекпоинты (часть 2)
Первая часть гайда: http://ultimatesofttn.ucoz.org/publ/gajdy_po_khakingu_sonic_1/vkhod_v_specurovni_cherez_chekpointy_chast1/2-1-0-3
Теперь нам надо заменить все константы на байты. Можно конечно сами константы добавить, но я их не особо люблю и поэтому предлагаю избавиться от них.
Во всём новом коде находим и заменяем:
Obj79_MapUnc_1F4A0 -> Map_obj79b
mappings ->$04
art_tile -> $02
render_flags -> $01
routine -> $24
x_pos -> $08
y_pos -> $0C
objoff_30 -> $30
objoff_32 -> $32
priority -> $18
width_pixels -> $19
mapping_frame -> $1A
x_vel -> $10
y_vel -> $12
objoff_34 -> $34
collision_property -> $21
Game_Mode -> $FFFFF600
objoff_36 -> $36
collision_flags -> $20
anim_frame -> $1B
Проверяем... ага, нету мапингов... да и скажу сразу, арта звездочек тоже нету. Не буду рассказывать как их выдрать, а просто приложу архив с уже готовым артом и мапингами. https://yadi.sk/d/lDeBb4Pykc8fP
Теперь в коде добавим новые мапинги. Рядом с Map_obj79 добавьте
Map_obj79b: include "_maps\obj79b.asm" Снова проверяем и... Скомпилировалось, но звездочки не появляются. Если ещё раз сравнить код из sonic1 и sonic2, то можно увидеть ещё одну важную деталь. В s2.asm в Obj79_CheckActivation в конце есть 3 строчки, которые нам нужны. Копируем и переносим в sonic1.asm передloc_16F76. Замените в этом коде Ring_count на $FFFFFE20, а loc_1F206 на loc_16F76.
При компиляции будет ошибка. Проблема в том, что код стал длинне и некоторые быстрые переходы уже не достают до нужного им кода. ВObj79_HitLamp найдите строчку bcc.s locret_16F90 и сотрите в ней .s
Снова проверяем. Работает! Работает, но не совсем. Звездочки отображаются не правильно и мы не попадаем в спец уровень при их прикосновении. Исправляем.
Переходим к Obj79_MakeStarsLoop, находим там строчку move.w #$47C,$02(a1) и меняем тут значение с $47C на $7A0. Это адресс, из которого будет браться арт для звездочек. В sonic2 этот арт лежит в другом месте, поэтому такой баг получился. Если у вас в хаке есть спиндеш, то адрес надо указать $6C0 (или $D800/$20, как предлагается в гиде по добавлению спиндеша).
Осталось исправить одну вещь, перемещение в спец уровень. Переходим к Obj79_Star. Честно скажу, не знаю в чём проблема, просто замените эти 6 строк на это
move.b #$D7,$20(a0) tst.b $21(a0) beq.s loc_1F554 move.b #$10,($FFFFF600).w (первые 2 строчки взяты из кода бампера) Всё готово . Если у вас что-то не получилось , то вот полный код чекпоинта:http://ultimatesofttn.ucoz.org/load/kod/kod_obektov/kod_chekpointa_s_vkhodom_na_specehtapy/6-1-0-4
Дизасембл с уже выполненым гайдом. https://yadi.sk/d/z_rjrPVskc8wc | |
| Просмотров: 565 | |
| Всего комментариев: 0 | |