Автор Тема: [SMD] Wiz'n'Liz читы  (Прочитано 1091 раз)

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

Оффлайн ByteFun

  • Пользователь
  • Сообщений: 45
  • Пол: Мужской
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« : 25 Июнь 2020, 00:49:27 »
Платформа: 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, декремент глобального таймера, для отключения отсчета времени.
« Последнее редактирование: 25 Июнь 2020, 01:34:43 от ByteFun »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1297
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #1 : 25 Июнь 2020, 01:59:01 »
Можно отталкиваться от того, что происходит, если не поймать, или если поймать: либо графика там какая-то выводится, либо бонус какой-то конкретный дают (например, увеличивается число жизней на 2). И, потом смотреть, откуда вызывается это изменение и при каких условиях.

Оффлайн ByteFun

  • Пользователь
  • Сообщений: 45
  • Пол: Мужской
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #2 : 25 Июнь 2020, 02:04:45 »
Выводится текст о потере кролика. Строки без ссылок на место в коде. Скорее всего таблица строк. Пока не разобрался с ними.
Думал решить проблему легче, чем перелопачивание кучи кода между счетчиком и выводом строки.
Как вариант опереться на моргание спрайтом, но я даже не представляю как VDP работает =(

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #3 : 25 Июнь 2020, 02:17:39 »
002840: 536E - код вычитания времени мигания...меняем на 6002 время не уменьшается, но так вроде не пойдёт при старте... <_<
лучше сделать так 002844: 6A04 меняем на 6004 - индикатор иконки направления на зайца, всегда будет показывать на него. ;)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1297
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
[SMD] Wiz\\\'n\\\'Liz читы
« Ответ #4 : 25 Июнь 2020, 02:19:02 »
У меня в видосах есть как раз инструкции о том, как ставить бряки на вывод текста. Советую ознакомиться: 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 + адрес тайла], и ждёшь пока сработает.
« Последнее редактирование: 25 Июнь 2020, 02:26:21 от DrMefistO »

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #5 : 25 Июнь 2020, 02:27:01 »
Спрайт мигания вроде здесь 002DA4: 302C
ps - адрес на зайца у всех разный...

Оффлайн ByteFun

  • Пользователь
  • Сообщений: 45
  • Пол: Мужской
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #6 : 25 Июнь 2020, 02:36:33 »
2840
Как?? Да, я ступил, искал инструкции декремента по первым двум байтам 53 79, проверяя каждую. А тут со смещением относительно адреса...

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #7 : 25 Июнь 2020, 02:44:00 »
в отладчике перейди по этому смещению 002840 это и есть инструкция кода вычитания времени мигания.
вначале даётся значения = 10 для одного зайца и уменьшается до нуля, после становится значение 65535 так сказать улетает в трубу.

Оффлайн ByteFun

  • Пользователь
  • Сообщений: 45
  • Пол: Мужской
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #8 : 25 Июнь 2020, 02:46:33 »
Как обычно, затер это дело двумя заглушками и моргающего зайца вообще не стало  :lol:
ОГРОМНОЕ спасибо krocki за прямое решение!
DrMefistO обязательно ознакомлюсь с материалом, есть желание учиться ковырять MD  :)

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #9 : 25 Июнь 2020, 02:49:39 »
Как обычно, затер это дело двумя заглушками и моргающего зайца вообще не стало  :lol:
инструкция правильная она отвечает за время, но просто нопить\затирать её не канает.
я же небе написал юзай только 2й код...так у тебя не будет пропадать индикатор по истечении времени.

Оффлайн ByteFun

  • Пользователь
  • Сообщений: 45
  • Пол: Мужской
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #10 : 25 Июнь 2020, 03:02:07 »
инструкция правильная она отвечает за время, но просто нопить\затирать её не канает.
я же небе написал юзай только 2й код...так у тебя не будет пропадать индикатор по истечении времени.

Чекнул различия. Ну изначально задача была убрать его присутствие и его (зайца) негативные эффекты.
Бонусов он не дает, только отнимает буквы. На высоких уровнях время на поимку уменьшается до безумия и его почти не реально догнать на более запутанных локациях.

Оффлайн krocki

  • Пользователь
  • Сообщений: 1250
  • Пол: Мужской
  • ...:::Hacking_Craft:::...
    • Просмотр профиля
[SMD] Wiz'n'Liz читы
« Ответ #11 : 25 Июнь 2020, 03:49:07 »
буквы с 2й кодом не пропадают, если время зайца кончается...
отключение таймера зайцев (мигающие зайцы не появляются) - 002690: 000A заменяем на FFFF