| Разработка и ромхакинг > Ромхакинг и программирование |
| [SMD] Wiz'n'Liz читы |
| (1/1) |
| ByteFun:
Платформа: Sega MD Картридж: Wiz'n'Liz Софт: IDA Pro 6.8.150 + SMD Loader + GensIDA Debugger Начинающий в ROM хакинге. При старте игры "ONE PLAYER START", настройки LEVEL - SORCERER; SKILL - TAXING, при входе в уровень появляется моргающий кролик, иконка над игроком сигнализирует о его наличии на карте. Чем чаще моргает иконка, тем меньше времени остается на поимку кролика. По истечении времени кролик лопается, обнуляя прогресс сбора букв на уровне. Цель: найти счетчик времени до разрыва этого кролика в RAM, за"NOP"ить участок отсчета счетчика. Не лезет в голову как отловить это значение. Прошу помощи реверсеров в идеях по достижению этой цели. Любые предложения и мысли? PS: offset 0xC874, декремент глобального таймера, для отключения отсчета времени. |
| DrMefistO:
Можно отталкиваться от того, что происходит, если не поймать, или если поймать: либо графика там какая-то выводится, либо бонус какой-то конкретный дают (например, увеличивается число жизней на 2). И, потом смотреть, откуда вызывается это изменение и при каких условиях. |
| ByteFun:
Выводится текст о потере кролика. Строки без ссылок на место в коде. Скорее всего таблица строк. Пока не разобрался с ними. Думал решить проблему легче, чем перелопачивание кучи кода между счетчиком и выводом строки. Как вариант опереться на моргание спрайтом, но я даже не представляю как VDP работает =( |
| krocki:
002840: 536E - код вычитания времени мигания...меняем на 6002 время не уменьшается, но так вроде не пойдёт при старте... <_< лучше сделать так 002844: 6A04 меняем на 6004 - индикатор иконки направления на зайца, всегда будет показывать на него. ;) |
| DrMefistO:
У меня в видосах есть как раз инструкции о том, как ставить бряки на вывод текста. Советую ознакомиться: http://www.emu-land.net/forum/index.php/topic,81112.msg1377638.html Добавлено позже: Либо тут: http://www.emu-land.net/forum/index.php/topic,74518.msg1173101.html Добавлено позже: Если вкратце, то через Tools->Plane Explorer ищешь точку, где нужный текст уже выведен ставишь игру на паузу, затем ставишь бряк на [базовый адрес VDP_RAM + адрес тайла], и ждёшь пока сработает. |
| krocki:
Спрайт мигания вроде здесь 002DA4: 302C ps - адрес на зайца у всех разный... |
| ByteFun:
--- Цитата: krocki от 25 Июнь 2020, 02:17:39 ---2840 --- Конец цитаты --- Как?? Да, я ступил, искал инструкции декремента по первым двум байтам 53 79, проверяя каждую. А тут со смещением относительно адреса... |
| krocki:
в отладчике перейди по этому смещению 002840 это и есть инструкция кода вычитания времени мигания. вначале даётся значения = 10 для одного зайца и уменьшается до нуля, после становится значение 65535 так сказать улетает в трубу. |
| ByteFun:
Как обычно, затер это дело двумя заглушками и моргающего зайца вообще не стало :lol: ОГРОМНОЕ спасибо krocki за прямое решение! DrMefistO обязательно ознакомлюсь с материалом, есть желание учиться ковырять MD :) |
| krocki:
--- Цитата: ByteFun от 25 Июнь 2020, 02:46:33 ---Как обычно, затер это дело двумя заглушками и моргающего зайца вообще не стало :lol: --- Конец цитаты --- инструкция правильная она отвечает за время, но просто нопить\затирать её не канает. я же небе написал юзай только 2й код...так у тебя не будет пропадать индикатор по истечении времени. |
| ByteFun:
--- Цитата: krocki от 25 Июнь 2020, 02:49:39 ---инструкция правильная она отвечает за время, но просто нопить\затирать её не канает. я же небе написал юзай только 2й код...так у тебя не будет пропадать индикатор по истечении времени. --- Конец цитаты --- Чекнул различия. Ну изначально задача была убрать его присутствие и его (зайца) негативные эффекты. Бонусов он не дает, только отнимает буквы. На высоких уровнях время на поимку уменьшается до безумия и его почти не реально догнать на более запутанных локациях. |
| krocki:
буквы с 2й кодом не пропадают, если время зайца кончается... отключение таймера зайцев (мигающие зайцы не появляются) - 002690: 000A заменяем на FFFF |
| Навигация |
| Главная страница сообщений |