Форум-Шморум
Главная | Защита от неуязвимости Дона и Кейси - Форум | Мой профиль | Выход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Drag  
Форум » TMNT:TF (NES) » КЛУБ » Защита от неуязвимости Дона и Кейси
Защита от неуязвимости Дона и Кейси
UndeadДата: Вторник, 03.06.2014, 22:02 | Сообщение # 1
Группа: Пользователи
Сообщений: 31
Награды: 0
Статус: ушел
Сделал патч, который устраняет все известные баги, в результате которых Дон или Кейси могут получить неуязвимость. Для применения достаточно распаковать архив, запустить exe-файл и указать путь к американскому (!) рому, после этого жмём Patch и всё готово. Пользуйтесь на здоровье wink
Прикрепления: invuln_fix_v2.zip (3.2 Kb)


Сообщение отредактировал Undead - Среда, 04.06.2014, 22:18
 
jokinglyДата: Вторник, 03.06.2014, 23:06 | Сообщение # 2
Oldman Raving Ninja Rabbid
Группа: Админко
Сообщений: 526
Награды: 4
Статус: ушел
Проверить у меня нет ни желания, ни знаний. Но горячо плюсую  patsak

Я не боюсь того, кто изучает 10'000 ударов. Я боюсь того, кто изучает один удар 10'000 раз...

 
spolanДата: Вторник, 03.06.2014, 23:11 | Сообщение # 3
Группа: Победители турниров
Сообщений: 432
Награды: 5
Статус: ушел
а там нечего проверять, т.к. ничего не фиксит, кроме того, что и так запрещено
 
UndeadДата: Вторник, 03.06.2014, 23:22 | Сообщение # 4
Группа: Пользователи
Сообщений: 31
Награды: 0
Статус: ушел
Цитата spolan ()
а там нечего проверять, т.к. ничего не фиксит, кроме того, что и так запрещено

Не совсем понял, что ты имеешь в виду под "и так запрещено" - то ли что у вас на турнирах бессмертие правилами запрещено, то ли ситуации, в которых дону с кейси программно запрещено пускать шар. Но если второе, то слив засчитан - так и скажи, что не умеешь использовать HEX.

Цитата jokingly ()
Проверить у меня нет ни желания, ни знаний. Но горячо плюсую patsak

Спасибо wink

Сделал в виде exe-патча при помощи проги ipsexe, теперь установить сможет даже ребёнок. Распаковываем архив, указываем путь к американскому (!) рому, жмём Patch и всё готово. Патч в первом сообщении.


Сообщение отредактировал Undead - Среда, 04.06.2014, 22:15
 
Smoke332Дата: Среда, 04.06.2014, 03:45 | Сообщение # 5
Группа: Пользователи
Сообщений: 35
Награды: 0
Статус: ушел
Ох, какой же у вас знатный конструктивный диалог получился...
Короче, делать седня ночью было нечего, а спать уже поздно ложить(вставать надо в 6) решил попробовать проверить бесметрие после мясорубки. В обычном роме получилось сделать где то 4 раза и все разы дон выпустил мяч после мясорубки, всего попыток 20 было. В хаке мяч после мясорубки не получилось выпустить ни разу, всего попытал раз 40. Следовательно и бессмертия сделать не получилось. Не претендую на объективность, просто вдруг кроме меня никто и проверять не станет, а делать все равно нечего было...


Let's kick Shell!

Сообщение отредактировал Smoke332 - Среда, 04.06.2014, 03:45
 
UndeadДата: Среда, 04.06.2014, 04:14 | Сообщение # 6
Группа: Пользователи
Сообщений: 31
Награды: 0
Статус: ушел
Бессмертие Дона - это побочный эффект от разрешения ему пускать в прыжке шар. Прыжок - это состояние 01 по адресу 0520 в оперативке игры. В оригинальном роме они добавили проверку-запрет на пускание шара только если Дон был перекинут или взят Шреддером в "мясорубку" (состояния 0A и 0B в 0520 соответственно), но при этом почему-то забыли об остальных ситуациях игры с кодами от 02 до 09, в которых тоже положено было запретить пускать шар. В итоге Дон может получить бессмертие, если перебрасывает кого-то сам (09) и в это время выпустит шар, либо выпустив шар во время суперудара (08), либо находясь в состоянии "получил удар" (03) - это "отшатывание" после обычных ударов и момент сразу после выкидывания Шреддером из своей мясорубки, а также нахождение под вихрем Кейси, пока он ещё крутится. Этот вихрь я кстати называю песком) Бессмертие получается как побочный эффект от преждевременного прерывания любых специфических состояний игры, в которых персонажу на время прописывается неуязвимость (03, 09 и т.п.): при нормальном положении дел эта неуязвимость снимается сразу после завершения такого состояния, но при прерывании этого состояния пусканием шара байт бессмертия в ячейке памяти не обнуляется и мы получаем баги. И самый смак в том, что отсечь это всё можно одним единственным байтом - меняем 0A на 02 по нужному адресу в роме, а так как на это значение в исполняемом коде происходит CPY и затем BCS (переход по указанному адресу, если установлен флаг C), то отсекаются сразу все состояния бОльшие, чем 01, что нам и было нужно.

Доку по программированию Денди, если кому интересно, можно взять здесь:
http://tv-games.narod.ru/library/nes.htm
Там она самая первая в списке, под названием "Архитектура и программирование Dendy."

Список номеров состояний игрока, записываемых в ячейку 0520 в TMNT TF:

код прыжка – 01
код взятия шара – 02
код при попадании по персу (отдаление или лежание) – 03
код нокдауна или после осыпания песком Кейси, когда песок заканчивает крутиться и перс остаётся шататься – 04
код пускания шара – 05
код поворота в другую сторону – 06
код приседа – 07
код выполнения суперудара – 08
код броска, когда бросаешь ты сам – 09
код бросания тебя противником – 0A
код взятия тебя Шреддером – 0B
код победной стойки – 0C

Выявить эти состояния просто: открываем эмулятор fceuxdsp, ставим break на 0520 и смотрим, что туда записывается.


Сообщение отредактировал Undead - Среда, 04.06.2014, 04:45
 
jokinglyДата: Среда, 04.06.2014, 09:21 | Сообщение # 7
Oldman Raving Ninja Rabbid
Группа: Админко
Сообщений: 526
Награды: 4
Статус: ушел
Undead, очень здорово, что ты понимаешь, что делаешь. Но думаю продолжать играть все равно будем на оригинальном РОМе.
P.S. Была у меня давно идея (можно сказать мечта) набраться знаний и добавить в игру крысу или еще кого-нить (нарисовать спрайты в том же стиле)... Эх...


Я не боюсь того, кто изучает 10'000 ударов. Я боюсь того, кто изучает один удар 10'000 раз...

 
UndeadДата: Среда, 04.06.2014, 18:25 | Сообщение # 8
Группа: Пользователи
Сообщений: 31
Награды: 0
Статус: ушел
Цитата jokingly ()
P.S. Была у меня давно идея (можно сказать мечта) набраться знаний и добавить в игру крысу или еще кого-нить (нарисовать спрайты в том же стиле)... Эх...

Были такие попытки со стороны одного человека (не меня). Но там вся суть в том, что, из-за специфики построения данных, чтобы добавить туда хотя бы ещё одного персонажа, весь РОМ пришлось бы полностью переписывать. Как по мне, задача практически непосильная для одного человека... Поэтому работа была в итоге заброшена.

Была у меня идея заказать кому-то (или даже группе людей) работу по такой переделке за деньги, но пока что нужными средствами не располагаю. Точно не знаю, сколько для этого нужно, читал недавно ориентировку, но там речь шла про создание браузерной игры и в конце называлась сумма около 80 т.р. (в других источниках счёт идёт вообще на миллионы). Про приставочные ничего не нашёл.

Добавлено (04.06.2014, 18:25)
---------------------------------------------
Хотя в случае TF требуется не создание с нуля, а реверс-инжиниринг с последующим расширением-переработкой.


Сообщение отредактировал Undead - Среда, 04.06.2014, 18:40
 
jokinglyДата: Среда, 04.06.2014, 21:04 | Сообщение # 9
Oldman Raving Ninja Rabbid
Группа: Админко
Сообщений: 526
Награды: 4
Статус: ушел
Undead, грузанул...

Я не боюсь того, кто изучает 10'000 ударов. Я боюсь того, кто изучает один удар 10'000 раз...

 
UndeadДата: Среда, 04.06.2014, 22:26 | Сообщение # 10
Группа: Пользователи
Сообщений: 31
Награды: 0
Статус: ушел
Кое-что меня не устроило в работе патча. А именно: то, что нельзя было пустить шар, не отпуская кнопки "Вниз". Поэтому я его переделал, версия #2 в первом сообщении. Теперь всё должно работать в точности так же, как и в оригинале. По сути это не критично, но вдруг кому-то помешает. Кстати, у Майка в оригинале тоже нельзя пустить шар, не отпустив кнопку "Вниз". У всех остальных - можно.
 
Форум » TMNT:TF (NES) » КЛУБ » Защита от неуязвимости Дона и Кейси
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024