Перейти к содержимому


Фотография

nes tmnt3 хак облегчающий управление.

nes tmnt3 A+B

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Ilya Indigo

Ilya Indigo

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 29 Ноябрь 2015 - 14:26

Добрый день.
Я пытаюсь самостоятельно улучшить игру на nes tnmt 3 (ром приложил), сделав срабатывание суперудара одновременным нажатием на A+B, а не так как реализрвано в этой игре, где нужно сначала нажать на прыжок A, а потом спустя 100-200 мс нажать на удар B и если не успеешь, то это приводит к потере жизни, а выполнять данный приём нужно ой как часто.
Я увидел один из роликов на ютубе, в котором расматривается использование отладчика, hex-редактора и сканера памяти на FCEUX.
С программировании на ассемблере немного знаком знаком, но не скажу что помню все его комманды и флаги очень хорошо, да и не под 6502 но документацию на него, хоть и на английском, я нащёл.
https://en.wikibooks...i/6502_Assembly
http://www.6502.org/...502opcodes.html

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

Если у вас есть источники и/или мануалы по процессу ромхакинга и опасания работы инструментов fceux или иных, поделитесь пожалуйста или объясните что зачем там нужно и с помощью чего мне выполнить мою задачу. А именно, найти код, который срабатываеет при выполнении суперприёма, и сделать так, что бы он выполнялся сразу при одновременном зажатии кнопок A+B.

 


  • 0

#2 Ilya Indigo

Ilya Indigo

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 23 Декабрь 2015 - 18:59

Так никто и не ответил. Видимо или меня сочли нубом или разбирающихся в этом людей тут мало или они заняты.
То что я планировал сделать, я несколько недель назад реализовал.
Почитал некоторую документацию о том, как дэнди опрашивает джойстики, узнал про порты джойстиков 4016 и 4017, и дело сдвинулось с мёртвой точки и за неделю я реализовал это, чего мечтал ещё в детсве и что меня всегда напрягало в 3-их черепашках и что до сих пор никому в голову не пришло реализовать.
Хак я сделал не только на tmnt3, если на ромхакинге админ даст добро, размещу там свои хаки и приведу тут ссылку на них.
Хотя могу привести код рома, который я модифицировал, который можно ввести вручную в любом hex-редакторе (Я использую okteta).
00EE2F и 03DFC9 это начальные адреса рома (не памяти NES) в которые нужно начать перезаписывать текущие данные рома. Этот хак реализует простой суперприём на A+B, с котрым теперь босы, особенно последние, особенно при TurboA+TurboB не представляют особой сложности, и большой палец правый руки теперь без мозоли, от монотоных и неприятных действий.
А также при нажатии на Select меняется оружие и суперудар у персанажа, при этом до момента оканчания сцены свет повязки, аватарка и имя не меняется. При игре вдвоём я зделал невозможным выбор одинаковых оружий и обоих игроков, так как это нелогично. Блокировать отнятие энергии у персанажа тоже не стал делать, так как тогда играть только на одних суперприёмах, которые теперь делаются один за другим очень легко, будет очень просто.

00EE2F:
4C B9 9F

03DFC9:
B5 54
C9 20
F0 1D
C9 C0
D0 08
A9 08
9D 0B 05
4C E6 D0
BD EF 04
F0 03
4C D9 A4
BD E9 04
4A
90 03
4C C6 D0
B5 68
69 00
29 03
E0 00
F0 05
C5 68
4C ED 9F
C5 69
F0 EF
95 68
4C 30 CE

Проблема у меня уже появилась в другом и с другим. Помимо удобного вызова суперудара, я решил реализовать смену черепашек на кнопку Select.
После проведённой ранее работы, мне несколько минут понадобилось, чтобы узнать, что за то, какая у игроков черепашка отвечают регистры 0068 и 0069 соответственно, но простая замена получилось простой сменой оружия и суперударов, хак которого на ромхакинге. При этом свет повязки, автарка и имя персанажа не менялись, точнее менялись лишь после смены сцены.
Я хочу реализовать эту смену сразу по нажатию Select.
Я определил начальные адреса PPU 4-ёх таблиц (они одинаковые) спрайтов (не уверен что это имено спрайты, а не фон, но они 8*8) начала панели информации о персанаже, которые изменяются, когды вы теряете жизнь и выбираете черепашку. 2882 2C82 2B02 2F02. Нащёл код, который производит в них запись.

0F:81D9:8D 07 20  STA $2007 = #$00
 0F:81DC:B9 00 03  LDA $0300,Y @ $0300 = #$00
 0F:81DF:C8        INY
 0F:81E0:C9 FF     CMP #$FF
 0F:81E2:D0 F5     BNE $81D9
 0F:81E4:F0 C5     BEQ $81AB
 0F:81E6:BE 00 03  LDX $0300,Y @ $0300 = #$00
 0F:81E9:C8        INY
 0F:81EA:B9 00 03  LDA $0300,Y @ $0300 = #$00
 0F:81ED:C8        INY
 0F:81EE:8D 07 20  STA $2007 = #$00
 0F:81F1:CA        DEX
 0F:81F2:D0 FA     BNE $81EE
 0F:81F4:F0 B5     BEQ $81AB
 0F:81F6:BE 00 03  LDX $0300,Y @ $0300 = #$00
 0F:81F9:C8        INY
 0F:81FA:B9 00 03  LDA $0300,Y @ $0300 = #$00
 0F:81FD:C8        INY
 0F:81FE:8D 07 20  STA $2007 = #$00
 0F:8201:CA        DEX
...........................................................................

И да, ячейки 0300-0302, имеют непосредственное отношение к смене аватарки и имени черепахи.
Я до конца не разобрался что именно тут делается дальше, так как код сложный и запутаный из-за постоянных условий и переходов, и попытался помимо смены оружия сделать переход в "подозрительное" место, где опрашиваются 0068/0069 ячейки, а потом выполняются какие то действия. Но это не сработало, так как по этим адрессам во время игры находился совсем другой код. Это, как я понял работа маппера, который переключает ячейки по 16к памяти, и этот код появляется только при смерти персанажа или смены сцены и обратится к нему во время игры я не знаю как и возможно ли это вообще?

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

Прикрепленные файлы


  • 1

#3 Diablo

Diablo

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 379 сообщений

Отправлено 23 Декабрь 2015 - 19:52

Молодец, отличная работа.


  • 0

#4 Greengh0st

Greengh0st

    Продвинутый пользователь

  • Администраторы
  • 1 500 сообщений

Отправлено 24 Декабрь 2015 - 23:13

Продолжай))


  • 0

#5 Mefistotel

Mefistotel

    Продвинутый пользователь

  • Журналисты
  • PipPipPip
  • 148 сообщений
  • ГородМагадан

Отправлено 24 Декабрь 2015 - 23:39

Тебе бы могли помочь Марат или Алекс с форума Chief-net, но они здесь не бывают.
Мануалы Гривера ты все прочитал?
  • 0





Темы с аналогичным тегами nes, tmnt3, A+B

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Рейтинг@Mail.ru Яндекс.Метрика