Автор Тема: Хак TMNT TF (nes). Кто-нибудь может помочь?  (Прочитано 11412 раз)

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

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Ради развлечения взялся я недавно хакать TMNT Tournament Fighters на NES.
Целью ставил попробовать добавить еще одного персонажа.

Переписал довольно много кода, добавил несколько chr банков, чтобы содержать дополнительную графику, в общем, привел меню выбора игрока, уровня, версус экран, в удобоваримый вид (см. скриншот) .
Однако, несколько часов поиска не дали ответа на один вопрос:
Где хранятся комбинации спецприемов для персонажей?
Например, вниз, назад, А, в случае Леонардо.
Насколько я понял, $608 содержит переменную, которая увеличивается при последовательном наборе кнопок из комбинации. Т.е. нажимаешь вниз - $608 присваивается 1, назад - 2.
Но, где хранится переменная и адрес, по которому проверяется какие именно кнопки должны быть нажаты, я не нашел.
Буду очень благодарен, если кто-нибудь сможет мне помочь с этим.

Оффлайн iddqd

  • Пользователь
  • Сообщений: 5885
  • Пол: Мужской
  • murderforkill
    • Просмотр профиля

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #2 : 06 Август 2010, 08:55:25 »
Так как в данный момент я занят в других проектах, которые отнимают много сил и времени, я вряд ли буду продолжать в одиночку заниматься черепахами.
В связи с этим выкладываю ips патч до рабоче-тестовой версии, возможно кому-нибудь будет интересно.

Внимание.
Патч ставится на (U) [!] версию.
Нормальная игра за нового персонажа (Slash) невозможна. Отсутствуют таблицы анимаций, урона, не изменена практически вся графика персонажа в бою.
Патч выкладывается исключительно для интересующихся.

P.S. Я приверженец тезиса - "Информация должна быть свободной", поэтому вы можете использовать мои наработки в любых целях, кроме коммерческих, если возможно - со ссылкой на автора.
Если кто-то готов заняться отыскиванием всех таблиц урона и проч., то можно довести хак до рабочего состояния вместе.

P.P.S. В правилах не нашел указаний относительно некропостинга, поэтому, если я что-то нарушил, то категорически извиняюсь.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #3 : 06 Август 2010, 22:07:29 »
$5390 - таблицы анимаций
$6770 - таблицы урона

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #4 : 08 Август 2010, 07:34:53 »
Выкладываю апдейт-багфикс к хаку. Ставится на чистую игру.
Исправил серьезный баг в новом коде, который калечил графику персонажей в бою и крашил Шреддера.
Также увеличил количество программных банков для хранения новых таблиц данных.

Ti_,
5391h или 9381d - таблицы дистанций, с которых удар рукой превращается в ближний удар рукой.
6770h еще не проверил.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #5 : 08 Август 2010, 13:56:02 »
Ti_,
5391h или 9381d - таблицы дистанций, с которых удар рукой превращается в ближний удар рукой.
Т.е. их там много? Тогда надо написать какие найденные/какие нужно найти и т.д.

Вот вроде как таблица  кадров при движении назад:
$5724

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #6 : 08 Ноябрь 2010, 22:19:40 »
Ti_,
Я неверно выразился. Не нахождение таблиц, а, скорее, нахождение тех мест в коде, где выводится число для загрузки по таблице. Так просто и не объяснишь.
Вот, например:
$612 - номер удара. 00 для простого удара рукой Лео, 07 для простого удара ногой и т.п. В случае со Слешем, при ударе рукой в $612 неверно заносится вместо 00 - 02. Из-за этого проигрывается не та анимация.
В $612 пишется так:
8332 - ldy $12
       lda 9388, y
       sta $612, x
То есть проблема в $12. А вот где в $12 заносится неверное значение, я найти не могу. Глаз замылился.

Добавлено позже:
Этот хак не пошел на Nestopia, а значит не пошел бы и на настоящей NES.
Начал с нуля, удвоил количество банков, пошагово переписываю код для возможности добавления новых персонажей.
Но, так как в последнее время был занят в другой области, то работа движется очень медленно.

Добавлено еще позже:
Нашел кое-какие интересные данные, которыми хочу поделиться:
$4C0 - Порядковый номер мелодии в прослушивании BGM в опциях.
$829D от $4C0 - Настоящий номер мелодии.
(Например, если $4C0 = 0 - "BGM 01", то $829D = 2E)

$9E - номер уровня
 $E3CB - загрузка данных о параллаксе на уровне
 $E3DF - загрузка данных о графике уровня
  $E928, $E927 - данные о палитре
 $E3F9 - загрузка структуры уровня
  $E920 (1E930h) - ссылки на структуру уровней story по порядку
 $E46D - загрузка музыки уровней
  далее $9025-$8F80 - продолжается загрузка музыки
   
$A0DC (20ECh); $A03F; $A1A4; $A1EE - четыре канала мелодии уровня "Pirate Ship".

 
 


Добавлено позже:
Столкнулся с серьезной проблемой.
Разбирающиеся ромхакеры, помогите, пожалуйста.

Суть проблемы:
Пытаюсь вынести процедуру, которая загружает номера банков для графики персонажей в бою, в другой Prg-банк.
Для этого копирую из 0x027152 (оригинальная процедура) 39 байт в 0x002070 (свой банк).
В 0x027152 вписываю следующий код:
lda #60
sta $d5
lda #80
sta $d6
jsr fec0
jsr fed0
rts
Этот код заносит в $d5 и $d6 оффсет для перехода. Прыжки fec0 и fed0 - мой код смены банков туда и обратно.
Результат: при входе в бой ром крашится через несколько секунд.
Подозреваю, что это может быть связано с прерываниями, но как исправить не разумею.

Прилагаю ips патч, в котором можно посмотреть на проблему.
Буду очень благодарен за помощь.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #7 : 09 Ноябрь 2010, 17:15:22 »
я не пойму в каком адресном пространстве ($8000-$FFFF)  эта процедура?
lda #60
sta $d5
lda #80
sta $d6
jsr fec0
jsr fed0
rts
Если в диапазоне переключаемых страниц ($8000-$BFFF), то вполне очевидно почему не работает, потому как после переключения страниц идет возрат к этому коду, а его уже нет, так как страница переключилась. Следовательно код должен быть продублирован на всех сраницах, которые будут замещать какое-то время оригинальную, либо написан в диапазоне непереключаемых страниц ($С000-$FFFF).

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #8 : 09 Ноябрь 2010, 18:42:14 »
В диапазоне переключаемых страниц. По $B142.
В $B142 заношу оффсет в $D5 и $D6. Перехожу к $FEC0, где меняю нулевую переключаемую страницу ($8000-$9FFF) на свой банк. Перехожу к $8060, где расположен дубль процедуры загрузки номеров банков. После загрузки идет RTS к $B14D, которая меняет нулевую переключаемую страницу обратно, и возврат к оригинальному коду.
Добавлено позже:
Нашел проблему.
Нулевая страница не меняется обратно.
Банк я меняю так:
FEC0 (смена на мой банк) :
lda #06
sta $8000
lda #01
sta $8001
jmp ($00d5)

FED0 (смена обратно):
lda #06
sta $8000
lda #01
sta $8001
rts

Вот вторая часть, $FED0, почему-то не меняет банк обратно.
« Последнее редактирование: 09 Ноябрь 2010, 19:42:21 от BalinDMK »

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #9 : 09 Ноябрь 2010, 19:45:18 »
На самом деле банк обратно у тебя не меняется, у тебя в обоих случаях присваевается банк под номером 1, а во втором случае следовало брать номер последнего банка. причем я так понимаю это должна быть переменная, в которой сохранен номер предыдущего банка.
« Последнее редактирование: 09 Ноябрь 2010, 19:55:06 от evgeny »

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #10 : 09 Ноябрь 2010, 23:42:14 »
Я так понимаю, никакого простого способа определить, какой именно банк находится в нулевой странице, нет?
Пробую учитывать все записи 06 в $8000 и сохранять номера банков в $D7, а при возврате грузить из $D7, но все равно крашится. Правда уже по-другому.
Причем, создается ощущение, что неверный банк записывается в первую страницу ($A000-BFFF).

Чуть не забыл, искреннее спасибо за помощь, evgeny!
« Последнее редактирование: 10 Ноябрь 2010, 02:21:30 от BalinDMK »

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #11 : 10 Ноябрь 2010, 04:27:22 »
Обычно перед переключением банка сохраняют значение и в переменной, так что, возможно такая переменная уже есть. Бывает еще в самих банках в определенных местах пишут номера, т.е. допустим ,по адресу $9FFF.И в каждом банке свой номер, потом просто считывается $9FFF и узнается какой банк. Но мне непонятно зачем переключать этот банк на 2(1) страницу? Как там может быть твой банк, если 0-6 должны быть оригинальные банки, новые добавляются ведь после них, перед последней страницей $C000-$FFFF. К тому же вполне возможно что там (в нулевом банке) переключаются даные DMC семплов, а это значит, что если банк во время проигрывания будет не на своем месте, то будут сбои в семлах.

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #12 : 10 Ноябрь 2010, 07:28:06 »
Нет, похоже, что переменной нет. Насчет нумерования банков я уже и сам думал, пока представляется лучшей идеей.
Дело в том, что я пытаюсь сделать romhacker friendly код, чтобы после добавления одного персонажа можно было добавить и других. Для этого увеличил количество банков вдвое. Ром использует вторую часть банков, поэтому первая свободна под мой код и данные.
Я дублирую каждую важную процедуру и данные, скажем загрузку палитр иконок, в свой банк, а на то место, где она была, устанавливаю джамп на смену банка, выполняю процедуру, возвращаюсь в оригинальный код.
Это позволяет располагать загружаемые данные как угодно, оставляя место под одного или более дополнительных игроков.
Насчет семплов, да, но после выполнения каждой процедуры я меняю банк обратно (по крайней мере думал, что меняю), поэтому все данные располагаются там где и должны.
Прошу прощения за косноязычие, я в последнее время совсем разучился внятно излагать мысли.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #13 : 10 Ноябрь 2010, 08:07:12 »
Семплы тут скорее всего не процессор проигрывает, DMA там, так что, может работать параллельно  с процессором и считывать данные невзирая на то, что банки переключаются. Считывание не будет останавливаться и ждать пока страница переключится обратно. Вобще с DMA есть всякие ньюансы, побочные действия бывают. Подробностей не знаю, но вроде бы идет влияние на mid-screen эффекты и прерывания, так, что с семлами осторожность надо проявлять.

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #14 : 10 Ноябрь 2010, 22:14:56 »
Проблему решил загрузкой того же банка не в нулевую страницу, а в первую.
Спасибо!

Оффлайн Dragon

  • Пользователь
  • Сообщений: 183
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #15 : 18 Ноябрь 2010, 17:02:34 »
BalinDMK, молодец! Я вот тоже хотел бы свой хак этой шедевральной игры сделать. В частности хотелось бы сделать немного сильнее Майка (уж больно он слабый), упростить ряд суперприемов (огонь у Шредера и суперудар Лео), ну и кое-какие баги еще исправить. Хотелось бы еще добавить нового персонажа - Сплинтера, причем в качестве секретного) Подскажи, пожалуйста, какими прогами пользуешься для работы  :)

Оффлайн Shredder

  • Пользователь
  • Сообщений: 583
  • Пол: Мужской
  • Ninja Master
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #16 : 19 Ноябрь 2010, 23:59:13 »
BalinDMK, отличные новости, молодец! Приятно знать, что кто-то занимается этой игрой.

Тебе удалось как-нибудь решить вот эту проблему?
http://www.emu-land.net/forum/index.php/topic,27498.msg395115.html#msg395115

И как насчёт того, чтобы использовать сразу мой хак, и в него уже пробовать добавлять персонажей? Именно по той причине, что я сделал там нормальную скорость ударов игрокам вместо "замедленного кино" и убрал множество неприятных багов. А силовые показатели персонажей легко можно изменить, если кому-то по-своему нравится, это не суть.
« Последнее редактирование: 20 Ноябрь 2010, 00:01:18 от Shredder »

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #17 : 21 Ноябрь 2010, 02:21:33 »
Подскажи, пожалуйста, какими прогами пользуешься для работы  :)
Дебаггерами в трех версиях Fceu, TileLayerPro для замены графики, Tiny Hexer для работы с кодом.

Тебе удалось как-нибудь решить вот эту проблему?
Да, проблему решить удалось. Я переписываю код, чтобы данные грузились из другого места и не были "вплотную" как в оригинале.

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

P.S: Вот скриншот из последней версии хака:


Оффлайн Shredder

  • Пользователь
  • Сообщений: 583
  • Пол: Мужской
  • Ninja Master
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #18 : 21 Ноябрь 2010, 06:49:13 »
В общем, как я там и говорил, ты взялся переписывать весь ром... Т.к. это единственный путь.
Ну тогда удачи. Ждём первую альфа/бета версию хака)

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #19 : 21 Ноябрь 2010, 06:56:21 »
В общем, как я там и говорил, ты взялся переписывать весь ром... Т.к. это единственный путь.
Ну тогда удачи. Ждём первую альфа/бета версию хака)
Ну да, по сути, да.
Спасибо. Все, что отвечает за графику, я почти доделал. На очереди коллизии.

Оффлайн Dragon

  • Пользователь
  • Сообщений: 183
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #20 : 21 Ноябрь 2010, 21:26:02 »
BalinDMK, спасибо огромное за помощь! Работа вовсю кипит, как я смотрю  :wow:
Слэша специально сделали побольше размером чем обычные черепашки или так получилось просто? :)

Оффлайн Brick_Man

  • Пользователь
  • Сообщений: 1949
  • Пол: Мужской
  • Rebuilt.
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #21 : 21 Ноябрь 2010, 21:52:36 »
Классная затея! :wow:
Только нос у Слэша больно длинный - на клюв немного смахивает. :D

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #22 : 21 Ноябрь 2010, 23:18:54 »
я тоже уже давно наблюдаю за темой, но не хотел прерывать серьёзный разговор ромхакеров и потому ничего не писал. Но раз уж другие высказались то скажу и я - очень интересный проект и надеюсь что всё пройдёт успешно :)

Оффлайн ryach

  • Пользователь
  • Сообщений: 6
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #23 : 22 Декабрь 2010, 01:25:51 »
как продвигается работа?

Оффлайн BalinDMK

  • Пользователь
  • Сообщений: 75
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #24 : 22 Февраль 2011, 18:52:45 »
как продвигается работа?

Да пока никак.
С кодом все, вроде бы, неплохо, а вот с графикой проблемы.
Я нарисовал, кажется, два или три варианта, которые сносно выглядели, но, после вставки в ром, вызывали пресловутое мерцание а-ля Hothead vs Hothead.
А так как мне, естественно, лень автоматизировать процесс, то это все долго и нудно: рисовать, замерять размеры, разбивать на куски, перерисовывать куски, менять таблицу сборки... в общем, после третьей неудачи просто опустились руки.
Дело в том, что все (за исключением Хотхеда) персонажи, даже, казалось бы, большой Шреддер - высокие, но узкие. И при отображении приземистого, широкого Слеша возникают проблемы.
Как-то так.

P.S.: Если кто-нибудь знает, скажите мне, пожалуйста, все-таки, что в правилах по поводу некропостинга?
Просто я редко бываю, и при каждом некро-ответе чувствую себя, как будто куру краду.

Оффлайн Brick_Man

  • Пользователь
  • Сообщений: 1949
  • Пол: Мужской
  • Rebuilt.
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #25 : 22 Февраль 2011, 19:03:53 »
BalinDMK, некропостинг правилами форума не запрещён, но мне почему-то за это дали карточку. <_<

Оффлайн Doctor Venkman

  • Emu-Land Team
  • Сообщений: 6524
  • Пол: Мужской
  • Я киберпанк!
    • Twitter
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #26 : 22 Февраль 2011, 19:11:02 »
BalinDMK,
Если пост по делу, то никаких притензий.

Оффлайн Pain

  • Пользователь
  • Сообщений: 6232
  • Пол: Мужской
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #27 : 22 Февраль 2011, 19:30:56 »
Какой некро постинг? Всего 2 месяца прошло <_<

Оффлайн x149te

  • Пользователь
  • Сообщений: 160
  • Пол: Мужской
  • Живой
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #28 : 19 Январь 2012, 01:29:27 »
BalinDMK, как дела с проектом? Очень уж затея классная)

Оффлайн _Io_

  • Пользователь
  • Сообщений: 1
    • Просмотр профиля
Re: Хак TMNT TF (nes). Кто-нибудь может помочь?
« Ответ #29 : 30 Март 2015, 16:29:15 »
Вот ссылка на TMNT TF в сборке MUGEN со Слэшем и не только...)
http://tmntmods.proboards.com/thread/10/tmnt-8bit-tournament-fighters-mugen
и еще одна http://www.mugenimperiolatino.com/index.php?topic=6634.0
Версия бета 5.0.1 Черепахам добавили оружие и новые супер удары!!