Автор Тема: Наши хаки  (Прочитано 1716666 раз)

0 Пользователей и 16 Гостей просматривают эту тему.

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3300 : 15 Май 2015, 18:54:16 »
Зачем так усложнять? Найти код взаимодействий игроков. И там по ситуации смотреть, и не факт что даже цикл, ведь всего 2 игрока. Может просто функция быть, где X(attacker) и Y(target) номера слотов. И вначале она запускается как x=0/y=1, а потом x=1/y=0.   Может быть даже 2 функции вообще подряд:   JSR check_p1_vs_p2;  JSR check_p2_vs_p1;.
Суть в том, чтобы сделать чтобы порядок чередовался, для этого достаточно любого счетчика кадрового или игрового если есть, точно также как и делают со спрайтами в играх, чередуя в каждом кадре их, чтобы отобразить больше, хоть и мерцанием.

LDA Frame_counter
AND #1
BEQ varian1
 JSR check_2_vs_1
 JSR check_1_vs_2
JMP next_code

varian1:
 JSR check_1_vs_2
 JSR check_2_vs_1

next_code:
 ....



Ну видимо там именно цикл, потому что кроме перебива ударов есть и другие глюки в пользу p2, например на p2 хитбоксы почему-то меньше, чем на p1. Причина этого мне не понятна, т.к. числовое значение для границ хитбоксов в РОМе и при расчётах в RAM одинаково, а на деле хитбоксы на p1 больше, чем на p2. Я даже видео сделал по этому поводу:

Ну, или просто скриншотик)


Короче, глючья в пользу этого p2 там навалом, и подозреваю, что оно идёт из одного и того же источника, и связано именно с "приоритетом в цикле".

Скажи, а можно сделать так, чтобы перебивал тот игрок, кто раньше кнопку нажал, вплоть до тысячных/миллионных долей секунды? Или НЕС такие трюки не позволяет?
Какая-то теория по этому вопросу есть тут - http://wiki.nesdev.com/w/index.php/Clock_rate , но там всё не на русском, поэтому не очень понятно.
« Последнее редактирование: 15 Май 2015, 19:09:55 от Shredder »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3263
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Наши хаки
« Ответ #3301 : 15 Май 2015, 19:55:15 »
Ну видимо там именно цикл, потому что кроме перебива ударов есть и другие глюки в пользу p2, например на p2 хитбоксы почему-то меньше, чем на p1. Причина этого мне не понятна, т.к. числовое значение для границ хитбоксов в РОМе и при расчётах в RAM одинаково, а на деле хитбоксы на p1 больше, чем на p2. Я даже видео сделал по этому поводу:

Ну, или просто скриншотик)


Короче, глючья в пользу этого p2 там навалом, и подозреваю, что оно идёт из одного и того же источника, и связано именно с "приоритетом в цикле".

Скажи, а можно сделать так, чтобы перебивал тот игрок, кто раньше кнопку нажал, вплоть до тысячных/миллионных долей секунды? Или НЕС такие трюки не позволяет?
Какая-то теория по этому вопросу есть тут - http://wiki.nesdev.com/w/index.php/Clock_rate , но там всё не на русском, поэтому не очень понятно.
Данные джойстиков каждый кадр считываются кодом чтения джоев. 1 Раз. Ты же не будешь их скажем каждую строку считывать, загрузив проц по полной. 
К тому же тебе всё равно придётся менять цикл или последовательность (1-ый против 2-ого, или 2-ой против 1-ого), потому что механика столкновений тоже 1 раз кадр обрабатывается (или ты хочешь обрабатывать кнопки и столкновения быстрее чем в 60 фпс?).
Эмуляторы в любом случае больше 1 нажатия за кадр не поддерживают.

Насчёт того что там 'именно цикл' это сути не меняет никак. Был цикл всегда в одну 'сторону' . Надо сделать чтобы был и в другую, и чередовать по кадрам.

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3302 : 15 Май 2015, 20:07:30 »
В играх НЕС есть какой-нибудь общий счётчик кадров (ячейка в памяти) ? Или в каждой игре он свой?

Добавлено позже:
В TMNT TF вижу, что значение ячейки $0022 непрерывно увеличивается на 1 и зацикливается, начинаясь с нуля, когда достигает макс. значения в hex - FF (255). В принципе, можно повесить рандом на эту ячейку. Но идея с записью в память соотношения перехватов от обоих игроков и слежения, чтобы они всегда были равны, - выглядит лучше. Я уже написал часть этого кода. Смущает только тот факт, что приходится плодить костыли вместо исправления [потенциального] корня проблемы.
« Последнее редактирование: 15 Май 2015, 20:18:58 от Shredder »

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3303 : 15 Май 2015, 21:01:24 »
Ti_, Shredder, поможете мне с этим ромом? Cheetahmen_The_(Unl)_(T-Rus_by_LANCUSTER).zip
Нужно на первом уровне включить персонажу прыжок (кнопка В), а на втором и третьем отключить возможность прыгать в воздухе.
Сможете помочь?

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3304 : 15 Май 2015, 21:55:42 »
lancuster
Включить кнопку B без полномасштабной переделки игры, думаю, не получится, т.к., судя по логике, "высота для прыжка" там уже используется для хождения по диагонали (вверх-вниз). Потому игрок там и не прыгает, что вертикальная координата смещается по нажатию вверх или вниз, а иного способа прыжка в игре не предусмотрено. "Повторные прыжки" во втором и третьем уровнях при нажатии прыжка во время воздушного удара - это, судя по всему, баги. Устранить их можно, сделав подпрограмму, если позволяет место в РОМе, или "заткнув" дырку в основном коде, если для этого не требуется код бОльшего объёма.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3305 : 15 Май 2015, 22:26:01 »
Можно освободить место, убрав пробелы из текста (заменив их на переносы). Там их много. Тогда получится?

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3306 : 15 Май 2015, 23:41:07 »
на втором и третьем отключить возможность прыгать в воздухе.

Для второго уровня найди в роме адрес 91BC и замени 2904 на EAEA
Для третьего - 1113D, замени 2904 на EAEA

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3307 : 15 Май 2015, 23:56:17 »
Для второго уровня найди в роме адрес 91BC и замени 2904 на EAEA
Для третьего - 1113D, замени 2904 на EAEA
И тогда точно получится? Хорошо, завтра попробую.
Ещё такой вопрос. Там нумерация уровней отображается вот так: 1, 2, 3, 3, 4, 5. Хотя должна быть 1, 2, 3, 4, 5 и 6 соответственно. Как это исправить? Да, и вот ещё: в игре по-прежнему присутствует баг, известный из второй части. Это когда герой убивает босса, тот умирает, а герой остается на прежнем месте. Связано это с тем, что герой наносит двойной удар. Решающий удар тоже должен быть двойной. Но если удар не двойной - сам понимаешь... Так вот, как в хексе исправить этот баг, сделав боссов проходимыми при любом раскладе?

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3308 : 16 Май 2015, 00:30:02 »
И тогда точно получится?

Точно.

Ещё такой вопрос. Там нумерация уровней отображается вот так: 1, 2, 3, 3, 4, 5. Хотя должна быть 1, 2, 3, 4, 5 и 6 соответственно. Как это исправить?

Где отображается? Перед стартом уровня? У меня всё нормально.

Да, и вот ещё: в игре по-прежнему присутствует баг, известный из второй части. Это когда герой убивает босса, тот умирает, а герой остается на прежнем месте. Связано это с тем, что герой наносит двойной удар. Решающий удар тоже должен быть двойной. Но если удар не двойной - сам понимаешь... Так вот, как в хексе исправить этот баг, сделав боссов проходимыми при любом раскладе?

Данная игра - кладезь багов. Посмотри патч для второй части, вроде там был аналогичный баг и кто-то его исправлял. Может, возьмёшь код оттуда.

 :lol:

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3309 : 16 Май 2015, 00:41:36 »
Точно.

Где отображается? Перед стартом уровня? У меня всё нормально.

Данная игра - кладезь багов. Посмотри патч для второй части, вроде там был аналогичный баг и кто-то его исправлял. Может, возьмёшь код оттуда.

 :lol:
Попробую. Но это, в принципе, прокатит только на 4 уровне.
Насчёт нумерации - смотри лучше. Последний уровень показан как пятый, хотя он по идее шестой.

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3310 : 16 Май 2015, 01:12:30 »
Насчёт нумерации - смотри лучше. Последний уровень показан как пятый, хотя он по идее шестой.

Уровень с птицей в конце?

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3311 : 16 Май 2015, 01:27:46 »
Да. И пятый уровень, который значится как 4. Который не мог пройти Нёрд. И там, где экран мерцает - значится 3 вместо 4.

Добавлено позже:
Да, и ещё. Проблема в том, что патч заточен под определенный ром определенного размера. Пропатчив ром иного размера, можно нарушить его работоспособность в целом.

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3312 : 16 Май 2015, 01:45:45 »
Да. И пятый уровень, который значится как 4. Который не мог пройти Нёрд. И там, где экран мерцает - значится 3 вместо 4.

Повторюсь - у меня всё нормально с нумерацией. Именно в твоём роме, в других не знаю. Проверил не единожды. Но если сдохнуть в пятом уровне, упав в яму, то попадаешь в какой-то однокомнатный "девятый", а из него сразу в "десятый", с кашей из графики, из которого нет выхода, кроме как потерять все жизни.

Да, и ещё. Проблема в том, что патч заточен под определенный ром определенного размера. Пропатчив ром иного размера, можно нарушить его работоспособность в целом.

Не патчить, а посмотреть, какой код добавляет патч, затем портировать его в другой ром.
Тебе необходимо сделать, чтобы босс не травмировался об тело игрока подобно простым врагам и не получал от этого урон. А получал урон и сдыхал только от ударов рукой.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3313 : 16 Май 2015, 01:56:06 »
Как я его посмотрю? Может, там этих кодов штук 100. Как я это узнаю? Буду каждый отдельно пробовать?
А так, чтоб навскидку - я так не умею. :(

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3314 : 16 Май 2015, 13:10:57 »
lancuster
Боссов оказалось исправить не сложно. Патч к игре можешь забрать на моём сайте:
http://www.nesx.ru/cheetahmen-bugfix-t18.html

Будет время и желание, может поковыряю и остальные баги.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3315 : 16 Май 2015, 13:50:17 »
Shredder , спасибо. ;)
Потом подумай, как исправить глюки в 10 уровне, сделав его проходимым при любом раскладе. А я потом сделаю левел-хак всех уровней.

Добавлено позже:
Shredder, скажи, а можно в этой игре проставить переносы в тексте? Я пытался в хексе проставить 0E, чтобы расширить текст. Но вместо этого выходит точка, которая даже не отображается на экране. Как сделать перенос строки в этой игре?
« Последнее редактирование: 16 Май 2015, 14:55:01 от lancuster »

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3316 : 16 Май 2015, 16:41:25 »
lancuster
Исправлен глюк с нумерацией уровней при заходе в бонусный уровень в 3-м раунде и глюк с вывалом непонятно куда из бонуса 5-го раунда. Забрать патч можно в той же теме.

С текстом ничего не скажу, переводами никогда не занимался)

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3317 : 16 Май 2015, 16:51:23 »
Понятно. Насчёт нумерации - спасибо, забрал. ;)
Можешь ещё последний недочет исправить. В 5 уровне не всегда можно успеть среагировать, поскольку враги летят очень быстро, а пули от них разлетаются во все стороны. Сможешь хотя бы замедлить их движение?
Да, и напоследок. Скоро будет готов мой перевод второй части этой игры. Сделаешь дебаг прыжков для Cheetahmen II?

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3318 : 16 Май 2015, 16:52:38 »
Что такое "дебаг прыжков"?

Добавлено позже:
С врагами если приноровиться, то всё можно пройти. В некоторых случаях надо использовать частичное отступление и другую тактику. Поэтому я считаю, что править ничего не нужно. Иначе будет слишком легко)

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3319 : 16 Май 2015, 17:02:10 »
Что такое "дебаг прыжков"?

Добавлено позже:
С врагами если приноровиться, то всё можно пройти. В некоторых случаях надо использовать частичное отступление и другую тактику. Поэтому я считаю, что править ничего не нужно. Иначе будет слишком легко)
Хорошо. Тогда я изменю их расположение на уровне. :)
Дебаг прыжков - в смысле "убрать прыжок в воздухе". А то ведь тоже будет слишком легко. ;)

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3320 : 16 Май 2015, 17:04:14 »
На вторую часть есть хак от другого автора. Там это разве не убрано (не смотрел)?

А в первой лучше бы поменять местами кнопки удара и прыжка, иначе неудобно прыгать на B.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3321 : 16 Май 2015, 17:09:19 »
На вторую часть есть хак от другого автора. Там это разве не убрано (не смотрел)?

А в первой лучше бы поменять местами кнопки удара и прыжка, иначе неудобно прыгать на B.
Там перерисован лайфбар, убран глюк с непроходимостью босса на 4 уровне и пофиксена нумерация всех уровней. Прыжок в воздухе остался. Управление менять не умею. Если подскажешь, какие значения нужно менять в хексе - тогда я сделаю. Или допили свой фикс-патч.
Вот ещё вопрос. На 10 уровне должен появляться грифон. Но из-за какого-то глюка там не видно, куда прыгать, и грифон часто вообще не появляется. Сможешь это исправить?
И, кстати, возможно ли перемещать врагов из одного уровня в другой? Чтоб было более-менее разнообразно?

Добавлено позже:
Вот как примерно выглядит борьба с грифоном на 10 уровне:
« Последнее редактирование: 16 Май 2015, 17:22:21 от lancuster »

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3322 : 16 Май 2015, 17:40:46 »
Да пофиг на кнопки, не так это важно.

И, кстати, возможно ли перемещать врагов из одного уровня в другой? Чтоб было более-менее разнообразно?

Не знаю. Но думаю, что да.

Вот ещё вопрос. На 10 уровне должен появляться грифон. Но из-за какого-то глюка там не видно, куда прыгать, и грифон часто вообще не появляется. Сможешь это исправить?


Добавлено позже:
Вот как примерно выглядит борьба с грифоном на 10 уровне:

Десятого уровня в этой игре вообще не существует. Это баг из-за неправильного кода в точке перехода в шестой из бонуса пятого. Всего в игре 6 уровней.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3323 : 16 Май 2015, 18:47:55 »
Эммм... Ну, тогда исправь этот баг. И тогда я смогу сделать нормальный левел-хак для этой игры. :)

Оффлайн Shredder

  • Пользователь
  • Сообщений: 587
  • Пол: Мужской
  • Ninja Master
    • ВКонтакте
    • Просмотр профиля
Наши хаки
« Ответ #3324 : 16 Май 2015, 18:53:36 »
Он уже исправлен.

Добавлено позже:
Кстати, почему игра так много весит? 416 кб. Намного более сложные игры весят 128. Неужели в ней такое количество говнокода? Или это просто плохой дамп?

Оффлайн Doomguard45

  • Пользователь
  • Сообщений: 237
    • Просмотр профиля
Наши хаки
« Ответ #3325 : 16 Май 2015, 19:20:23 »
Он уже исправлен.

Добавлено позже:
Кстати, почему игра так много весит? 416 кб. Намного более сложные игры весят 128. Неужели в ней такое количество говнокода? Или это просто плохой дамп?

экшон 52, 52 игры =)

Оффлайн babulya

  • Пользователь
  • Сообщений: 1203
  • Пол: Мужской
    • Просмотр профиля
Наши хаки
« Ответ #3326 : 16 Май 2015, 19:48:14 »
Shredder, если ты про первую часть, то она из сборника и, возможно, она использует спрайты и звуки из других игр. А когда вытянули её из сборника, то и весь сопутствующий код тоже пришлось вытащить.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3327 : 16 Май 2015, 20:54:24 »
Shredder, там куча спрайтов из других игр. Причём они даже не используются.
Кстати, как считаешь, может так быть, что в первом уровне нет прыжка из-за того, что это хорошо переделанный Slashers? Там тоже нет прыжка, а кнопка В служит альтернативой основного удара.

Добавлено позже:
Shredder, а во второй части уберешь прыжки в воздухе?

Добавлено позже:
Shredder, редактируя карту первого уровня, я заметил, что фон (точнее - деревья) убивают героя так же, как и лужа с ямой. Мне бы хотелось сделать так, чтоб деревья были не только фоном, но и были твердыми. Чтоб персонаж упирался в деревья, а не падал в них. Сможешь так сделать?
« Последнее редактирование: 17 Май 2015, 17:39:14 от lancuster »

Оффлайн Крылатый Кот

  • Пользователь
  • Сообщений: 82
  • Пол: Мужской
    • Просмотр профиля
Наши хаки
« Ответ #3328 : 17 Май 2015, 21:48:46 »
Прошу обратить внимание на игру Galaxy 5000 (http://www.emu-land.net/consoles/dendy/roms?act=showonly&id=538). Если играть вдвоём, то доступна только первая планета Mercury, т.е. после прохождения всех трасс на ней показывается экран The End и очки игроков.
Хотелось бы убрать это ограничение.

Оффлайн lancuster

  • Пользователь
  • Сообщений: 4214
  • Пол: Мужской
  • A nullo diligitur, qui neminem diligit...
    • Просмотр профиля
Наши хаки
« Ответ #3329 : 17 Май 2015, 23:10:47 »
Shredder, сможешь исправить баг с некоторыми врагами? Там выходит такая штука: если на второй странице поставить в хексе O (не ноль) - тогда летит космический корабль. Но вместе с этим на земле отображается и кусок дерева, с которым данный объект был связан. То же самое и с черной преследующей бабочкой, которая в хексе значится как N. Сможешь отделить противников от фона, к которым они прикреплены?

Добавлено позже:
Прошу обратить внимание на игру Galaxy 5000
Это космическая гонка от Activision? :)

Добавлено позже:
Shredder, я так понял, этот глюк с картой дублируется на все уровни. Поэтому, если не отделить некоторых врагов от фона - игра будет не такой интересной, какой должна быть. Потому что ВСЕ преследующие враги прикреплены к фону.
« Последнее редактирование: 18 Май 2015, 01:32:01 от lancuster »