Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Чт Янв 20, 2011 11:17 am Заголовок сообщения: Шедевровци! |
|
|
У меня вопросик про хак Battle City, никак сам не могу додуматься.
Имея оригинальный БаттлСити, какие байты нужно изменить чтобы добиться следующих результатов:
1. Ускоренное появление танков противника.
2. Мои пули летали побыстрее (или вообще чтобы быстрее летали пули).
Сам я нашёл такие моменты как
0xA80 - 05 -> 07 (6 танков противника)
0х2DE - 03 -> 64 (99 жизней)
0x26B5 - FC -> 0C (Не убиваемая База) |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Чт Янв 20, 2011 1:49 pm Заголовок сообщения: |
|
|
Тут и додумывать не надо, просто читай исходник Battle City.
Цитата: | 1. Ускоренное появление танков противника. |
Код: | Задержка между респаунами во фреймах может быть вычислена по формуле:
190 - (№уровня)*4 - (количество_игроков - 1)*20 |
190 (BE) хранится по адресу 3B3
20 (14) хранится по адресу 3C1
Тебе потребуется только менять значение по адресу 0x3B3.
Цитата: | 2. Мои пули летали побыстрее (или вообще чтобы быстрее летали пули). |
Тут смотря что тебе нужно. Вот, чтобы просто твои танки всегда стреляли быстрыми пулями (как при взятой звезде):
0x20D0 - измени F0 15 на EA EA |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Чт Янв 20, 2011 3:00 pm Заголовок сообщения: |
|
|
АнС, Спасибо огромное!!! то, что нужно.
Исходник я пробовал читать, но ничего не понял.. тяжеловато для меня.
Подскажи тогда ещё, пожалуйста, а как скорость движения танка увеличить? |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Чт Янв 20, 2011 5:07 pm Заголовок сообщения: |
|
|
SCratORS писал(а): | Подскажи тогда ещё, пожалуйста, а как скорость движения танка увеличить? |
Со скоростью не всё так просто, там уже нужно либо много кода менять, либо смириться с некоторыми побочными эффектами. Проблема в том, что вместе с танком ускоряется анимация взрыва/появления танка.
Для небольшого ускорения движения, как в Binary City (на 33% быстрее, чем в оригинале): начиная с 0x1C1D затри код с помощью восьми инструкций NOP (EA EA EA EA EA EA EA EA 4C 35 DC ...) Тогда статус танка будет обрабатываться в каждом кадре, а не три через один. Плюс, для возможности управлять танком в каждом кадре: по адресу 0x1B8F пишешь EA EA.
Для более заметного ускорения (как в Marble City - в 2 раза быстрее оригинала): 0x1C21 - поменять 4 байта на EA 20 3D DC, чтобы обработка статуса в каждом чётном кадре вызывалась 2 раза.
Для ещё большего ускорения (на 166% быстрее оригинала) можно сделать эту двойную обработку в каждом кадре: начиная с 0x1C1D поменяй код на EA EA EA EA EA 20 3D DC 4C 35 DC.
Дальше такими варварскими способами увеличивать скорость бессмысленно, и так уже анимации мелькают. |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Чт Янв 20, 2011 8:03 pm Заголовок сообщения: |
|
|
Огромное, тебе, человеческое спасибо... =)
кстати на 166% ускорении, танк на месте не стоит, кнопку отпускаешь, а он медленно продолжает "плыть" =) но это не суть...
а на 33% - это самый раз... просто чуть-чуть быстрее... теперь есть чем убить пару минут свободного времени.
Кстати при изменении времени появления противника, если поставить слишком маленький промежуток, то при расчетах по формуле получатся отрицательный результат, и танки появляются наоборот очень медленно... приходится выбирать так чтобы на 35 уровне результат был положительным... ну да ладно, это мелочи... ставишь 35 уровень, проходишь его, и дальше веселишься =)
Спасибо ещё раз, АнС! |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Чт Янв 20, 2011 9:30 pm Заголовок сообщения: |
|
|
SCratORS писал(а): | кстати на 166% ускорении, танк на месте не стоит, кнопку отпускаешь, а он медленно продолжает "плыть" =) но это не суть... |
А фикс по адресу 0x1B8F не забыл?
SCratORS писал(а): | Кстати при изменении времени появления противника, если поставить слишком маленький промежуток, то при расчетах по формуле получатся отрицательный результат, и танки появляются наоборот очень медленно... |
Да, так как 4 - довольно большой коэффициент при таком количестве уровней. Я в Binary City изменил формулу на "60 - №уровня", так что в течение игры время появления врагов уменьшается незаметно. |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Пт Янв 21, 2011 8:21 am Заголовок сообщения: |
|
|
Цитата: | А фикс по адресу 0x1B8F не забыл? |
Забыл, теперь нормально.
190 - (№уровня)*4 - (количество_игроков - 1)*20
190 - 0х3B3
20 - 0x3C1
А 4 где найти? |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Пт Янв 21, 2011 12:04 pm Заголовок сообщения: |
|
|
SCratORS писал(а): | 190 - 0х3B3
20 - 0x3C1
А 4 где найти? |
Это надо изменить инструкции сдвига влево.
По адресу 0x3AE есть два байта 0A 0A. Каждый из них умножает номер уровня на два. Если затереть их с помощью EA EA, коэффициент будет равен единице. Если затереть только один - будет двойка. А если заменить 0A на 4A, будет сдвиг вправо, то есть деление на два, так что можно получить коэффициент 0.5 или 0.25. |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Пт Янв 21, 2011 11:17 pm Заголовок сообщения: |
|
|
АнС, спасибо, на все вопросы ответил!
Все, сделал веселушку =)
Если кому вдруг будет интересно, то скачать можно тут:
http://scrators.narod.ru/dendy/dendy_bc_smb.zip
тут SuperMarioBros со сложными уровнями, ну и БаттлСити немного переделаный, - прикольно помочиться с кучей врагов. |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Сб Янв 22, 2011 12:11 am Заголовок сообщения: |
|
|
Нда, и в чём смысл такого хака танчиков?
А этот хак Марио типа сам сделал? |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Сб Янв 22, 2011 1:15 pm Заголовок сообщения: |
|
|
Марио сам делал.
А танки.. незнаю.. мне весело в шустром темпе постреляться... забавно помойму, попробуй базу уберечь =) ну я конечно понимаю, что Speed-ерам это не сложно,. ну я то простой игрок =) |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Сб Янв 22, 2011 9:10 pm Заголовок сообщения: |
|
|
Да, это он самый,.. как то я увидел видео вконтакте с этими уровнями... решил сам сделать.. 2 уровня сделал, потом случайно нашёл уже хакнутого марио, но он не работал, зависал сразу после запуска,.. тогда я просто выдернул уровни из него, и запихал в оригинал =) |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Пн Янв 24, 2011 8:44 am Заголовок сообщения: |
|
|
А я и не присваивал, я просто взял эти уровни из не работающего марио и запихал в оригинального, что бы работало. Т.к работающую готовую версию не нашел. Может у кого и есть работающая версия от автора - я не знаю... Но мне пришлось самому хакать, вот и все.
Но это ладно, не суть.
Скажи лучше, а можно в тапочках сделать чтобы появлялось не 6 танков противника, а больше? |
|
Вернуться к началу |
|
|
АнС RRC2008
Зарегистрирован: 08.11.2003 Сообщения: 2818
|
Добавлено: Пн Янв 24, 2011 12:50 pm Заголовок сообщения: |
|
|
И так всё работало, хак старый, давно проверенный и даже, в некотором роде, легендарный.
Больше 6 танков просто так не получится, это надо вносить существенные изменения в исходник и заново компилировать. Да и тормоза начнутся - процессор-то слабенький. Даже с 6 танками в оригинале иногда проявляется лаг. Чтобы избежать его, мне пришлось в Binary City переписать кучу исходных процедур, оптимизировать всё, что можно. В результате где-то 7 танков оно ещё потянет, но 8 уже нет. |
|
Вернуться к началу |
|
|
SCratORS
Зарегистрирован: 20.01.2011 Сообщения: 9
|
Добавлено: Пн Янв 24, 2011 11:10 pm Заголовок сообщения: |
|
|
Эх, жаль... ну да ладно, буду довольствоваться тем что имею =)
Спасибо за помощь. |
|
Вернуться к началу |
|
|
|