| Разработка и ромхакинг > Ромхакинг |
| [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 + Дебаг конечно же. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |