Разработка и ромхакинг > Ромхакинг и программирование
Помощь! Чит Mighty Final Fight
(1/1)
Mumba13:
Всем привет! Я только начинаю познавать ромхакинг, так что прошу помидорами не бросаться. Решил почитирить в игре Mighty Final Fight, опыт и здоровье взломал без проблем. Но этого мне показалось мало и я решил сделать убийство с одного удара. Нашел адреса куда пишутся здоровья врагов их всего два, так как в игре на экране может быть не больше 2х врагов. Поставил брэйпоинт на запись нашел инструкцию которая пишет в адрес значение нового здоровья. Выше нашел как реализовано уменьшение здоровья, но проблема в том что я не могу поставить брэйкпоинт потому что перед адресом инструкции стоит еще цифра с двоеточием 06:86EA, когда я пытаюсь поставить брэйкпоинт на этот адрес, он ставится, но срабатывает на адрес 3:86EA, а там совсем другой код, а в поле адреса для брэйкпоинта можно ввести только 4 символа. Подскажите что я делаю не так или может быть есть другое решение?
Sharpnull:
В Mesen отладчик лучше. Можно поставить breakpoint на PRG ROM, также есть условия срабатывания.

Добавлено позже:
По-моему у вас ещё старый FCEUX, последний здесь: https://ci.appveyor.com/project/zeromus/fceux > Выбрать систему > Artifacts.
Mumba13:
Мне кажется тут дело не в отладчике, а в моей не опытности

Добавлено позже:

--- Цитата: Sharpnull от 15 Сентябрь 2020, 17:43:11 ---По-моему у вас ещё старый FCEUX, последний здесь: https://ci.appveyor.com/project/zeromus/fceux > Выбрать систему > Artifacts.
--- Конец цитаты ---
FCEUX у меня последней версии 2.2.3, скачанный сегодня с официального сайта
Sharpnull:
Mumba13, у вас срабатывание на 3:86EA вместо 06:86EA, потому что breakpoint ставится на адреса CPU, а банки меняются, поэтому если поставить на PRG ROM, то будет срабатывание только в одном месте. Не знаю как сделать такое в FCEUX, я не эксперт. Рекомендую Mesen.

--- Цитата: Mumba13 от 15 Сентябрь 2020, 17:48:57 ---FCEUX у меня последней версии 2.2.3, скачанный сегодня с официального сайта
--- Конец цитаты ---
Это старый. Я дал ссылка на официальный последний.
Mumba13:
Это последняя версия 2.2.3, с того сайта точно такая же.
А какая последняя версия Mesen? Официальный сайт что то не работает.
Sharpnull:

--- Цитата: Mumba13 от 15 Сентябрь 2020, 17:58:24 ---Это последняя версия 2.2.3, с того сайта точно такая же.
--- Конец цитаты ---
Циферки одинаковые, но версии разные.

--- Цитата: Mumba13 от 15 Сентябрь 2020, 17:58:24 ---А какая последняя версия Mesen? Официальный сайт что то не работает.
--- Конец цитаты ---
https://mesen.ca. Только хотел сказать, что Россия опять шатает интернет, поэтому заходите через Tor Browser, VPN или другие способы. Проверить сайт на доступность: https://ping-admin.ru/free_ping/. Один из серверов США тоже не сработал, Россию проверял не всю, но которые были недоступно.
--------
Стабильная у Mesen 0.9.9, а последняя вообще https://ci.appveyor.com/project/Sour/mesen/build/artifacts, но её лучше не использовать.
CaH4e3:
впиши в condition брикпоинта K==#06 и будет тебе щастье
Sharpnull:
Не догадался посмотреть как условия задавать.
Mumba13, про другие возможности условий в fceux.chm.
Cyneprepou4uk:
Mumba13, если ты имеешь в виду брейкпоинт с типом execute, то удобно будет дважды кликнуть на адрес 86EA в 06:86EA, и в появившемся окне уже будут стоять необходимые условия
Mumba13:

--- Цитата: Cyneprepou4uk от 15 Сентябрь 2020, 18:56:37 ---Mumba13, если ты имеешь в виду брейкпоинт с типом execute, то удобно будет дважды кликнуть на адрес 86EA в 06:86EA, и в появившемся окне уже будут стоять необходимые условия

--- Конец цитаты ---
Спасибо большое, очень помог.
Sharpnull:

--- Цитата: Cyneprepou4uk от 15 Сентябрь 2020, 18:56:37 ---Mumba13, если ты имеешь в виду брейкпоинт с типом execute, то удобно будет дважды кликнуть на адрес 86EA в 06:86EA, и в появившемся окне уже будут стоять необходимые условия

--- Конец цитаты ---
В Mesen это делается одним нажатием слева от адреса. Я раньше не замечал, но он сразу ставит на PRG ROM, а не CPU, хех.

Добавлено позже:
Правда в Mesen есть интересный прикол, не знаю как в FCEUX. Бывает код исполняется из RAM (самомодификация, все дела) в адресах Эхо (с $0800), я ставлю там breakpoint, а он улетает в адреса $0000-$07FF и естественно ничего не останавливается :)

Добавлено позже:
Проверил, в FCEUX всё правильно.
Mumba13:
Разобрался с Mesen. Не хватает конечно такого же Ram Search. Как вставлять свой код в код игры? Я примерно понимаю, что нужно прыгнуть в неиспользуемую область памяти там написать свой код и потом прыгнуть в следующую инструкцию, но как это сделать если инструкция использует всего 2 байта, а прыжок с адресом занимает 3 байта?
Sharpnull:

--- Цитата: Mumba13 от 16 Сентябрь 2020, 13:58:47 ---Не хватает конечно такого же Ram Search.
--- Конец цитаты ---
Да, в Mesen ограниченный Cheat Finder и он ищет только по $0-7FF. В Mesen есть баги, у меня бывало не изменялся код после вставки.

--- Цитата: Mumba13 от 16 Сентябрь 2020, 13:58:47 ---Как вставлять свой код в код игры?
--- Конец цитаты ---
В Mesen выделить в Debugger участок кода, ПКМ > Edit Selected Code. Правда, если область ещё не использовалась, то в Mesen нельзя будет так сделать. В таком случае можно байты напрямую вставить в Memory Tools, лучше способа не знаю.

--- Цитата: Mumba13 от 16 Сентябрь 2020, 13:58:47 ---как это сделать если инструкция использует всего 2 байта, а прыжок с адресом занимает 3 байта?
--- Конец цитаты ---
Может взять ещё инструкцию и перенести в код куда прыжок.
--------
Или перенести код, который мешает, и сделать JSR на него (до или после). Конечно там не должно быть выходящих branch инструкций.
Mumba13:

--- Цитата: Sharpnull от 16 Сентябрь 2020, 14:16:45 ---В Mesen выделить в Debugger участок кода, ПКМ > Edit Selected Code. Правда, если область ещё не использовалась, то в Mesen нельзя будет так сделать. В таком случае можно байты напрямую вставить в Memory Tools, лучше способа не знаю.
--- Конец цитаты ---
Удобненько, а то я все время в HEX редакторе менял.

--- Цитата: Sharpnull от 16 Сентябрь 2020, 14:16:45 ---Может взять ещё инструкцию и перенести в код куда прыжок.
--- Конец цитаты ---
Так я и думал, а остаточные байты заполнять NOP
Навигация
Главная страница сообщений

Перейти к полной версии