Разработка и ромхакинг > Ромхакинг

[SMD] Неполноценный хак FIFA 96

<< < (6/13) > >>

Беларус учит русский:

--- Цитата: Je$TeR от 01 Март 2024, 19:05:17 ---блоки увеличить и спрайты стран заменить
--- Конец цитаты ---
Сейчас идея следующей функции - менять элементы местами или повторять. Т.е. работа с указателями.
Условный пример - в меню есть Start game и Options. Глитчер даст поменять их местами. Или поменять их указатели, т.е. зайдя в первое попадёшь во второе. Или флаги в игре поменять местами, или размножить. И т.д.
Тебе же надо создать новые флаги? С этим программа пока сможет помочь лишь частично - найдёт указатель нужного флага и можешь переуказать его на конец рома, где должен будешь вставить свой флаг. Формат флага может тебе разобрать хакер. Или, может быть, в конце года буду учить Глитчер разбирать структуры - это даст разобраться в формате флагов и блоков.

Razuka, жаль, что я пока не могу никого уговорить им пользоваться :lol:
Уже неделю или две тэстирую новую версию, которая находит нужное ещё быстрее - всего за полчаса. Думаю, когда покажу, что сделал в каких играх и за какое время, то интерес к программе повысится.
Например, в Streets of Rage нельзя выбирать двух одинаковых персонажей. Глитчер дал снять этот блок за минут 10.

Razuka:

--- Цитата: perfect_genius от 02 Март 2024, 00:21:41 ---жаль, что я пока не могу никого уговорить им пользоваться
Уже неделю или две тэстирую новую версию, которая находит нужное ещё быстрее - всего за полчаса. Думаю, когда покажу, что сделал в каких играх и за какое время, то интерес к программе повысится.
--- Конец цитаты ---

Я уверен, что всё получится, так как думаю, что в этом аспекте ром-хакинга ты скорее всего первопроходец.
У меня совсем мало опыта и знаний в этой области, но я реально пока не сталкивался и не слышал о программах такого рода для Sega.
Не знаю, можно ли Глитчер считать частью процесса реверс-инжиниринга, но то, что он делает - это фактически ноу-хау.
Он позволяет в этом слепом пространстве машинного кода среди всех этих массивов данных найти методом проб и ошибок нужные адреса и тут же протестировать все изменения с ними.
Реально, если освоить до автоматизма твою программу, то, вероятно, многое можно изменить в различных механиках большинства игр.
Для меня это очень волнительный момент, так как позволяет прикоснуться к неведомым мне знаниям  :wow:

Единственный момент - надо как-то заставить Землю вращаться помедленнее, чтобы хотя бы на пару часов в сутках было поболее, чем сейчас.

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

--- Цитата: Rexi от 02 Март 2024, 00:04:37 ---Вопрос а этот редактор он как приватный? Не для всех?
--- Конец цитаты ---
Какой редактор?
Который я уже дважды выкладывал в этой теме? )
Если про редактор для редактирования хар-к игроков, то мне его делали на заказ для Fifa 96 (для других версий он может быть немного несовместим из за разности расположения требуемых адресов с данными).

Razuka:
Забавно, конечно!
Я смог с помощью Глитчера сделать такую ситуацию как на скрине: игрок повернулся спиной к полю (лицом к зрителям).
И он таки стал теперь кидать корректно  :lol:
Правда у игроков его команды теперь странные удары по мячу, как будто бы бьют обратно ходу своего движения.

А в другом случае игрок нормально стоял по отношению к линии поля и кинул мячик тоже хорошо, но на экране присутствовали граф. артефакты.

Буду продолжать эксперименты )

Razuka:
Опаньки!
Где-то примерно на 98-м проходе спустя примерно минут 80 после начала опытов я смог заставить игрока кинуть мячик четко в поле  :gamer:

Но возник главный вопрос!!!
perfect_genius, как мне найти теперь нужную инструкцию, которая была изменена Глитчером? :lol:
Где эта информация хранится?

P.S. На меня уже жена странно смотрит.

Razuka:

--- Цитата: perfect_genius от 01 Март 2024, 12:33:21 ---Баг исправлен только наполовину.
--- Конец цитаты ---
Данный баг со вбросом мяча из за боковой линии оказался более устойчив, чем мы предполагали.
Сегодня поймал его вновь на ближней линии, но со вбросом мяча направо.
Т.е., после патча я перестал наблюдать баг на ближней линии со вбросом мяча на левую сторону, а вот на правую сторону игрок раз пять подряд метал, пока не сменил направление вброса. :wall:
К сожалению, не сделал сэйв, но записывал видео - выложу чуть позже.

Беларус учит русский:
Какой кошмар! :ohmy:
Я думал, что ты попробовал и уже удалил эту старую версию. Я даже убрал её в теме, чтобы не скачивали. В ней мелкие баги и алгоритм поиска надёжный, но медленный. Новая версия быстрее в 2-3 раза, так что лучше не используй старую.

--- Цитата: Razuka от 02 Март 2024, 01:58:47 ---как мне найти теперь нужную инструкцию, которая была изменена Глитчером?
--- Конец цитаты ---
Пункт 3 (нужное изменение получено) начинает локализовывать нужную инструкцию. Т.е. надо просто продолжать, это закончится очень быстро, баги начнут исчезать. В конце и выдаст адрес инструкции и ром останется изменённым. Т.е. даже если не сохранил адрес, то можно будет сравнить с оригиналом и увидеть различие.


--- Цитата: Razuka от 02 Март 2024, 00:46:21 ---думаю, что в этом аспекте ром-хакинга ты скорее всего первопроходец
--- Конец цитаты ---
Если только для Сеги. Есть Поганка, Visual Poganka и Пакостник, но они универсальные и не подходят обычным людям.
Особенность Сеги (код и адреса только по чётным адресам) даёт возможность сильно сузить область поиска, это и есть "ноу-хау" :)

Да, баги бывают очень весёлыми и даже могут стать фичами. Чего только я не видел в процэсе, можно добиться всего. Все ходили задом наперёд, телепортировались за спину, главгерой убивал всех криком, в футболе все делали подкаты и т.д. Достаточно сохраниться перед моментом, который надо изменить, и далее начинаешь менять игру в Глитчере. Опыт с ФИФА показал, что так можно повлиять и на поведение.


--- Цитата: Razuka от 02 Март 2024, 11:57:36 ---Сегодня поймал его вновь
--- Конец цитаты ---
Тогда баг делится уже на 4 части, я исправил только одну :D
Привыкай сохраняться перед вбрасыванием, чтобы накопить несколько сохранений для всех вариантов: ближняя линия вправо, дальняя линия влево и вправо.
Вот тогда и будем исправлять каждую.
Далее я добавлю в Глитчер изменение чисел в роме, с ним попробую изменить область/угол сброса.

Razuka:

--- Цитата: perfect_genius от 02 Март 2024, 14:26:24 ---Новая версия быстрее в 2-3 раза
--- Конец цитаты ---
perfect_genius, подскажи, пожалуйста, а где можно скачать новую версию? В твоей теме вроде бы не видно ее...  :neznayu:

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

--- Цитата: perfect_genius от 02 Март 2024, 14:26:24 ---Пункт 3 (нужное изменение получено) начинает локализовывать нужную инструкцию. Т.е. надо просто продолжать, это закончится очень быстро, баги начнут исчезать. В конце и выдаст адрес инструкции и ром останется изменённым.
--- Конец цитаты ---
А... вот оно что. Надо просто дойти до конца.
Понял, спасибо!

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

--- Цитата: perfect_genius от 02 Март 2024, 14:26:24 ---Далее я добавлю в Глитчер изменение чисел в роме, с ним попробую изменить область/угол сброса.
--- Конец цитаты ---
Ух... кажется, высшие силы услышали наши молитвы. :thumbup:

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

--- Цитата: Vurzum от 23 Февраль 2024, 05:38:02 ---Вот если бы фифой увлекся настоящий хакер, тогда бы нам с вами повезло.
--- Конец цитаты ---
Я про это  :lol:

Марат:

--- Цитата: perfect_genius от 02 Март 2024, 14:26:24 ---Привыкай сохраняться перед вбрасыванием, чтобы накопить несколько сохранений для всех вариантов: ближняя линия вправо, дальняя линия влево и вправо.

--- Конец цитаты ---
Я вам открою один секрет, есть некоторые параметры и они используются и для ближней и для дальней стороны. Так что если вы исправите этот параметр и он будет правильно работать на ближней стороне, то тогда он начнет глючит на дальней стороне.
Таким образом вам нужно искать другой какой то параметр.

Je$TeR:

--- Цитата: perfect_genius от 02 Март 2024, 00:21:41 ---Тебе же надо создать новые флаги?
--- Конец цитаты ---
Там примерно такая ситуация:

--- Цитата: Sharpnull от 09 Сентябрь 2023, 18:45:37 ---Для графики используется сжатие RefPack, которое использует EA, только они понаделали разных вариантов, ещё нужно найти правильную программу. Например, графика для флага Малайзии при выборе лиги в роме с позиции 12CB68: байты 30 FB, где FB - магический байт всегда, а в байте 30 хранится формат сжатия, вместо него в этой игре может быть 10/11, 46/47, 30/31/32/33/34/35, 7A/7B, 72/73, всего 5 алгоритмов, код распаковки с 0xADD60.
--- Конец цитаты ---
Мне, короче говоря, нужно сначала научить читать конкретную графику без сжатия. Потом добавить спрайт в конец рома (через yychr, как я понял) и заставить ром читать нужный мне спрайт.

--- Цитата: perfect_genius от 02 Март 2024, 00:21:41 ---Формат флага может тебе разобрать хакер.
--- Конец цитаты ---
О чем речь? Я знаю, что спрайт 64х64 максимум, Sharpnull говорил мне еще карта тайлов нужна. Но я бы предпочел сам разобраться, чем постоянно просить за каждый спрайт. А спрайт, допустим, есть у меня.

Razuka:

--- Цитата: Марат от 02 Март 2024, 16:50:59 ---Я вам открою один секрет, есть некоторые параметры и они используются и для ближней и для дальней стороны. Так что если вы исправите этот параметр и он будет правильно работать на ближней стороне, то тогда он начнет глючит на дальней стороне.
Таким образом вам нужно искать другой какой то параметр.
--- Конец цитаты ---

Да, будем искать и тестировать :)
Я уверен, что всё можно поправить - это лишь вопрос времени.

Беларус учит русский:

--- Цитата: Je$TeR от 02 Март 2024, 18:53:16 ---еще карта тайлов нужна
--- Конец цитаты ---
Это усложняет дело, забыл про карту тайлов. Т.е. надо будет найти уже минимум два указателя, т.е. понадобится два поиска, раз поиск структур только в будущем.
Ничего, алгоритм Глитчера находил комбинацию из двух инструкций, находящихся в разных концах рома. Так что и эти указатели должен найти, посмотрим ^_^

Razuka:
Вот, что проявилось!
Номера игроков-ботов. Это, конечно, все пока предварительно, но... получается, что можно номера игроков в теории отображать не только на реальных игроках, управляемых человеком, но и компьютером!
Я действительно думал об этом, почему разрабы не реализовали эту фичу? Было бы удобно, конечно, фамилии игроков видеть, чтобы понимать кто там чего делает.

Je$TeR:

--- Цитата: perfect_genius от 03 Март 2024, 00:04:06 ---Это усложняет дело, забыл про карту тайлов. Т.е. надо будет найти уже минимум два указателя
--- Конец цитаты ---
Забыл сказать, что там надо достать 2 спрайта одновременно. Один - спрайт страны, другой - мигающая иконка, у каждой страны своя. Если методом перебора всё делать, то можно наткнуться на оба сразу.

Беларус учит русский:
Razuka, у меня такое тоже появлялось. Думал, или стандартная функция включилась, или это от дебага. Потому что игра меня очень удивила своими сообщениями об ошибках: что-то типа "Ошибка выделения памяти. Требуется выделить 14000, имеется 0", "Неизвестный формат упаковки данных" и т.д.
Т.е. в играх Сеги бывают динамические выделения памяти?! :ohmy:

Je$TeR, я имел в виду про один элемент. Т.е. и у мигающей иконки тоже два указателя, скорее всего - на набор тайлов и на карту тайлов. И оба могут быть сжаты, и у каждого свой формат. А ещё вспомнил, что должна быть ещё палитра :lol: Вот тебе уже три указателя на элемент. Поиск палитры в роме должен быть простым, тоже придётся делать отдельной функцией Глитчера.
Мне осталось протестировать её ещё на нескольких играх и потом начну эксперименты с указателями.

Razuka:
Как жаль, что у нас нет полной карты адресов и описания того, что и как в них зашито.
Интересно даже, чисто гипотетически, сохранились ли какие либо документы или инструкции у разработчиков?
Глупый вопрос, конечно. Лежит, где-нибудь пылится дизайн-документ или как там это еще называется... исходники, блок-схемы и т.д. без дела, покрытые коммерческой тайной правообладателя.
А мы тут как слепые котята тыркаемся во тьме машинных кодов.
Реально не хватает местного аналога G.E.C.K. - звучит, конечно, дико  0_0

Беларус учит русский:
Вот я когда-то ковырял UMK3 в отладчике. Нашёл функцию распаковки графики и подсматривал, по каким адресам она обращается, собирал их:
По идее, достаточно найти список этих адресов. Глитчер будет искать такие структуры в будущем. А пока вариант - найти с ним один такой указатель и уже самому найти весь список в роме с хекс-редактором.

Марат:

--- Цитата: perfect_genius от 03 Март 2024, 13:49:03 ---По идее, достаточно найти список этих адресов. Глитчер будет искать такие структуры в будущем. А пока вариант - найти с ним один такой указатель и уже самому найти весь список в роме с хекс-редактором.
--- Конец цитаты ---

Вот тебе таблица со списком адресов:
$15AEF0 - $15E0E3 - таблица с 4 байтными относительными поинтерами (3196 поинтеров). Поинтер вычисляется относительно адреса таблицы. Т.е. берём $15AEF0 и прибавляем к нему значение из таблицы. Например, поинтер с индексом 1 (поинтер с индексом 0 не используется) в таблице - 00006428. 15AEF0 + 6428 =  $161318. По этому адрес находится какая-то структура размером $116 байт. Размер структуры я определил вычтя адрес следующего поинтера от текущего, т.е. 653E - 6428 = $116.

Беларус учит русский:
Спасибо, проспойлерил мне всё :lol:
Я сейчас пока не ищу указатели, у меня вообще нет цэли разбирать конкретно эту игру. Я хочу сделать общее решение для всех игр, чтобы фанаты могли делать всё сами. Так что эта информация для Razuka и Je$TeR - вы теперь в хекс-редакторе пробуйте менять эти адреса в списке местами или копировать один в другой, чтобы узнать за что они отвечают, что меняется в игре. Т.е. вручную то, что будет пытаться делать Глитчер на следующей неделе :)

Марат, а как ты это нашёл? Просто так прошёлся в хекс-редакторе глазами и зацепился? Таких списков указателей в роме несколько же?

Razuka:
ChatGPT Understands Assembly
https://swedishembedded.com/gpt-translate-assembly/

На полном серьёзе верю в возможности ChatGPT в относительно скором будущем в плане "чтения" и понимания кода ассемблера.
Хотелось бы на его основе получить всю расшифровку кода, а также инструменты и редакторы для простой и доступной модификации Рома.
Ох, сложно представить, какие тогда откроются возможности для творчества и полета фантазии.  :lol:

P.S.
Теперь можно кидаться помидорами :facepalm:

Марат:

--- Цитата: perfect_genius от 03 Март 2024, 16:08:12 ---Марат, а как ты это нашёл? Просто так прошёлся в хекс-редакторе глазами и зацепился? Таких списков указателей в роме несколько же?
--- Конец цитаты ---

Ida + Дебаг конечно же.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

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