Добрый день.
Я пытаюсь самостоятельно улучшить игру на 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.
#1
Отправлено 29 Ноябрь 2015 - 14:26
#2
Отправлено 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к памяти, и этот код появляется только при смерти персанажа или смены сцены и обратится к нему во время игры я не знаю как и возможно ли это вообще?
Я посмотрел различные статьи о ромхакинге денди, и о том, как менять палитры, таблицы, цвета и тому подобное, это я уже умею. Но вот как заставить маппер переключиться на нужный мне блок памяти и возможно ли такое вообще я не знаю и снова прошу помощи.
Прикрепленные файлы
#3
Отправлено 23 Декабрь 2015 - 19:52
Молодец, отличная работа.
#4
Отправлено 24 Декабрь 2015 - 23:13
Продолжай))
#5
Отправлено 24 Декабрь 2015 - 23:39
Мануалы Гривера ты все прочитал?
Темы с аналогичным тегами nes, tmnt3, A+B
Наши проекты →
Готовые проекты →
Frankenstein - Monster Returns [NES]Автор admin , 30 Дек 2023 Frankenstein - Monster Return и 5 еще... |
|
|
||
Наши проекты →
Готовые проекты →
Totally Rad [NES]Автор admin , 06 Июл 2023 Totally Rad, NES, Сильнейший маг и 1 еще... |
|
|
||
Наши проекты →
Готовые проекты →
Excitebike [NES]Автор admin , 01 Мар 2023 Excitebike, NES, Мотоцикл |
|
|
||
Наши проекты →
Готовые проекты →
Pocohontos [NES]Автор admin , 26 Фев 2023 Pocohontos, NES, Перевод и 1 еще... |
|
|
||
Наши проекты →
Готовые проекты →
R.C. Pro-Am [NES]Автор admin , 25 Фев 2023 R.C. Pro-Am, RC Pro-Am, NES |
|
|
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных