Список форумов www.shedevr.org.ru www.shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Хак Battle City

 
Начать новую тему   Ответить на тему    Список форумов www.shedevr.org.ru -> Ромхакинг в России и в мире
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Чт Янв 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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Чт Янв 20, 2011 3:00 pm    Заголовок сообщения: Ответить с цитатой

АнС, Спасибо огромное!!! Very Happy то, что нужно.
Исходник я пробовал читать, но ничего не понял.. тяжеловато для меня.
Подскажи тогда ещё, пожалуйста, а как скорость движения танка увеличить? Embarassed
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Чт Янв 20, 2011 5:07 pm    Заголовок сообщения: Ответить с цитатой

SCratORS писал(а):
Подскажи тогда ещё, пожалуйста, а как скорость движения танка увеличить? Embarassed


Со скоростью не всё так просто, там уже нужно либо много кода менять, либо смириться с некоторыми побочными эффектами. Проблема в том, что вместе с танком ускоряется анимация взрыва/появления танка.

Для небольшого ускорения движения, как в 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.

Дальше такими варварскими способами увеличивать скорость бессмысленно, и так уже анимации мелькают.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Чт Янв 20, 2011 8:03 pm    Заголовок сообщения: Ответить с цитатой

Огромное, тебе, человеческое спасибо... =)
кстати на 166% ускорении, танк на месте не стоит, кнопку отпускаешь, а он медленно продолжает "плыть" =) но это не суть...
а на 33% - это самый раз... просто чуть-чуть быстрее... теперь есть чем убить пару минут свободного времени.
Кстати при изменении времени появления противника, если поставить слишком маленький промежуток, то при расчетах по формуле получатся отрицательный результат, и танки появляются наоборот очень медленно... приходится выбирать так чтобы на 35 уровне результат был положительным... ну да ладно, это мелочи... ставишь 35 уровень, проходишь его, и дальше веселишься =)
Спасибо ещё раз, АнС!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Чт Янв 20, 2011 9:30 pm    Заголовок сообщения: Ответить с цитатой

SCratORS писал(а):
кстати на 166% ускорении, танк на месте не стоит, кнопку отпускаешь, а он медленно продолжает "плыть" =) но это не суть...


А фикс по адресу 0x1B8F не забыл?

SCratORS писал(а):
Кстати при изменении времени появления противника, если поставить слишком маленький промежуток, то при расчетах по формуле получатся отрицательный результат, и танки появляются наоборот очень медленно...


Да, так как 4 - довольно большой коэффициент при таком количестве уровней. Я в Binary City изменил формулу на "60 - №уровня", так что в течение игры время появления врагов уменьшается незаметно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Пт Янв 21, 2011 8:21 am    Заголовок сообщения: Ответить с цитатой

Цитата:
А фикс по адресу 0x1B8F не забыл?


Забыл, Embarassed теперь нормально.

Цитата:
60 - №уровня


190 - (№уровня)*4 - (количество_игроков - 1)*20

190 - 0х3B3
20 - 0x3C1
А 4 где найти?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Пт Янв 21, 2011 12:04 pm    Заголовок сообщения: Ответить с цитатой

SCratORS писал(а):
190 - 0х3B3
20 - 0x3C1
А 4 где найти?


Это надо изменить инструкции сдвига влево.
По адресу 0x3AE есть два байта 0A 0A. Каждый из них умножает номер уровня на два. Если затереть их с помощью EA EA, коэффициент будет равен единице. Если затереть только один - будет двойка. А если заменить 0A на 4A, будет сдвиг вправо, то есть деление на два, так что можно получить коэффициент 0.5 или 0.25.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Пт Янв 21, 2011 11:17 pm    Заголовок сообщения: Ответить с цитатой

АнС, спасибо, на все вопросы ответил!
Все, сделал веселушку =)
Если кому вдруг будет интересно, то скачать можно тут:
http://scrators.narod.ru/dendy/dendy_bc_smb.zip
тут SuperMarioBros со сложными уровнями, ну и БаттлСити немного переделаный, - прикольно помочиться с кучей врагов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Сб Янв 22, 2011 12:11 am    Заголовок сообщения: Ответить с цитатой

Нда, и в чём смысл такого хака танчиков?
А этот хак Марио типа сам сделал?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Сб Янв 22, 2011 1:15 pm    Заголовок сообщения: Ответить с цитатой

Марио сам делал.
А танки.. незнаю.. мне весело в шустром темпе постреляться... забавно помойму, попробуй базу уберечь =) ну я конечно понимаю, что Speed-ерам это не сложно,. ну я то простой игрок =)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Сб Янв 22, 2011 2:04 pm    Заголовок сообщения: Ответить с цитатой

SCratORS писал(а):
Марио сам делал.


Лол, а ничего, что это один из самых известных старых хаков SMB? Confused
http://shedevr.org.ru/forum/viewtopic.php?p=27203#27203
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Сб Янв 22, 2011 9:10 pm    Заголовок сообщения: Ответить с цитатой

Да, это он самый,.. как то я увидел видео вконтакте с этими уровнями... решил сам сделать.. 2 уровня сделал, потом случайно нашёл уже хакнутого марио, но он не работал, зависал сразу после запуска,.. тогда я просто выдернул уровни из него, и запихал в оригинал =)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Сб Янв 22, 2011 9:23 pm    Заголовок сообщения: Ответить с цитатой

Присваивать-то зачем?
В общем, тебе сюда: http://shedevr.org.ru/forum/viewtopic.php?t=4155
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Пн Янв 24, 2011 8:44 am    Заголовок сообщения: Ответить с цитатой

А я и не присваивал, я просто взял эти уровни из не работающего марио и запихал в оригинального, что бы работало. Т.к работающую готовую версию не нашел. Может у кого и есть работающая версия от автора - я не знаю... Но мне пришлось самому хакать, вот и все.
Но это ладно, не суть.
Скажи лучше, а можно в тапочках сделать чтобы появлялось не 6 танков противника, а больше?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
АнС
RRC2008
RRC2008


Зарегистрирован: 08.11.2003
Сообщения: 2796

СообщениеДобавлено: Пн Янв 24, 2011 12:50 pm    Заголовок сообщения: Ответить с цитатой

И так всё работало, хак старый, давно проверенный и даже, в некотором роде, легендарный.

Больше 6 танков просто так не получится, это надо вносить существенные изменения в исходник и заново компилировать. Да и тормоза начнутся - процессор-то слабенький. Даже с 6 танками в оригинале иногда проявляется лаг. Чтобы избежать его, мне пришлось в Binary City переписать кучу исходных процедур, оптимизировать всё, что можно. В результате где-то 7 танков оно ещё потянет, но 8 уже нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
SCratORS



Зарегистрирован: 20.01.2011
Сообщения: 9

СообщениеДобавлено: Пн Янв 24, 2011 11:10 pm    Заголовок сообщения: Ответить с цитатой

Эх, жаль... ну да ладно, буду довольствоваться тем что имею =)
Спасибо за помощь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.shedevr.org.ru -> Ромхакинг в России и в мире Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group