Разработка и ромхакинг > Ромхакинг
[SMD] Неполноценный хак FIFA 96
Беларус учит русский:
Думаю, раз он точный и это не форк (т.е. оригинал), то нет особой разницы какую использовать.
У меня ночная сборка - 0.6.3
При этом у него нет автоисправления контрольной суммы, т.е. ром с защитой будет активно сопротивляться изменениям. Видимо, придётся добавлять исправление в Глитчер.
FIFA вроде бы без такой защиты.
Je$TeR:
--- Цитата: Razuka от 05 Март 2024, 10:33:21 ---Пенальти в игре ботов - вещь достаточно редкая
--- Конец цитаты ---
А я не про игру ботов говорю. Или кроме ботов никто в эту игру играть не должен? :biggrin:
У ботов этого бага, кстати, нет, следовательно - ты про него даже не догадывался.
--- Цитата: Razuka от 05 Март 2024, 10:33:21 ---И каких либо прочих отрицательных отклонений после внесенного изменения в код игры я пока не заметил
--- Конец цитаты ---
В этом и проблема. Ты что-то меняешь и при этом не понимаешь что конкретно.
--- Цитата: perfect_genius от 05 Март 2024, 12:17:49 ---Да, Глитчер пока не может такое изменить, он только инвертирует.
--- Конец цитаты ---
Кстати, где он? И ты говорил новая версия скоро будет. Я с ней смогу спрайты стран заменить?
Razuka:
--- Цитата: Je$TeR от 06 Март 2024, 00:26:33 ---В этом и проблема. Ты что-то меняешь и при этом не понимаешь что конкретно.
--- Конец цитаты ---
Кстати, забавный момент через Глитчер нашел. Жаль только, что не записал видео.
В каком-то из проходов программы наткнулся видимо на команду, которая должна ограничивать время дриблинга футболистов.
Т.е. в стандартной игре они больше предпочитают играть в пас, а тут очень все поменялось в плане процесса владения мячом. Игроки уже явно предпочитали одиночные действия и не особо спешили расставаться с мячиком и порой весьма эффектно смотрелись на поле. Единственное, что еще омрачало происходящее действие - так это сопутствующие графические артефакты.
И это с моей непрофессиональной точки зрения очень странно. По идее, инструкции, отвечающие за AI, не должны как-то затрагивать графику или что-то иное, но, видимо, в данном коде всё возможно. :neznayu:
Добавлено позже:
--- Цитата: Je$TeR от 06 Март 2024, 00:26:33 ---Я с ней смогу спрайты стран заменить?
--- Конец цитаты ---
Не уверен, что это возможно сделать в ближайшее время через Глитчер.
Он все же, наверное, про другое.
Тут, вероятно, потребуется помощь специалиста, чтобы он потратил свое время на эту задачу. Само собой, что не всегда такие моменты могут исполняться на безвозмездной основе. И это нормально.
Добавлено позже:
--- Цитата: Je$TeR от 06 Март 2024, 00:26:33 ---У ботов этого бага, кстати, нет, следовательно - ты про него даже не догадывался.
--- Конец цитаты ---
А поясни, если не сложно, что там за баг.
Даже интересно стало. Так как я думал, что все баги Fifa 96 уже знаю.
Je$TeR:
--- Цитата: Razuka от 06 Март 2024, 00:59:11 ---А поясни, если не сложно, что там за баг.
--- Конец цитаты ---
После пробивания пенальти, если ты промазал, твой игрок стоит как вкопаный секунд 5 и даже кнопка B не работает. Как следствие - невозможно сделать добивающий удар = потерянный гол >:(. У бота этой проблемы нету, я из-за этого бага боту поручаю пенальти пробивать.
--- Цитата: Razuka от 06 Март 2024, 00:59:11 ---Кстати, забавный момент через Глитчер нашел. Жаль только, что не записал видео.
В каком-то из проходов программы наткнулся видимо на команду, которая должна ограничивать время дриблинга футболистов.
--- Конец цитаты ---
Может ты в тактику залез, есть же long ball. А формации искать пробовал? Те которые 4-4-2 и т.д.
Беларус учит русский:
--- Цитата: Je$TeR от 06 Март 2024, 00:26:33 ---где он? И ты говорил новая версия скоро будет. Я с ней смогу спрайты стран заменить
--- Конец цитаты ---
Тэстирую сейчас. Будет быстрее и со всякими удобствами. Но что-то менять или размножать пока не может, этим займусь после тэста.
--- Цитата: Razuka от 06 Март 2024, 00:59:11 ---забавный момент через Глитчер нашел. Жаль только, что не записал видео.
--- Конец цитаты ---
Тебе достаточно закрыть Глитчер, скопировать файл [поиск на паузе] и дописать в названии комментарий себе. Например "[поиск на паузе] забавный момент", чтобы разобраться в будущем.
--- Цитата: Razuka от 06 Март 2024, 00:59:11 ---омрачало происходящее действие - так это сопутствующие графические артефакты
--- Конец цитаты ---
Т.е. ты заметил интересное, нажал пункт 3 и продолжал отсеивать инструкции до конца, пока не осталась одна?
Обычно при отсеивании пропадают все ненужные графические баги.
--- Цитата: Je$TeR от 06 Март 2024, 01:23:12 ---твой игрок стоит как вкопаный секунд 5 и даже кнопка B не работает
--- Конец цитаты ---
Жаль, что твои сохранения не подходит к эмуляторам на ПК. Я бы посмотрел можно ли это исправить.
Razuka:
--- Цитата: Je$TeR от 06 Март 2024, 01:23:12 ---А формации искать пробовал? Те которые 4-4-2 и т.д.
--- Конец цитаты ---
Я пока не искал что-то, кроме бага со вбросом мяча.
По большей части, когда есть немного времени, я просто смотрю, что происходит на экране при работе Глитчера.
Добавлено позже:
--- Цитата: perfect_genius от 06 Март 2024, 01:46:24 ---Будет быстрее и со всякими удобствами.
--- Конец цитаты ---
Класс :thumbup:
Будем ждать с нетерпением!
Добавлено позже:
--- Цитата: perfect_genius от 06 Март 2024, 01:46:24 ---Тебе достаточно закрыть Глитчер, скопировать файл [поиск на паузе] и дописать в названии комментарий себе.
--- Конец цитаты ---
Да, я это понимаю - просто не всегда сразу осознаешь, что этот момент нужно было бы сохранить для последующего подробного изучения.
Добавлено позже:
--- Цитата: perfect_genius от 06 Март 2024, 01:46:24 ---Т.е. ты заметил интересное, нажал пункт 3 и продолжал отсеивать инструкции до конца, пока не осталась одна?
--- Конец цитаты ---
Не... я продолжал тыкать пункт "1" :lol:
Добавлено позже:
--- Цитата: perfect_genius от 06 Март 2024, 01:46:24 ---Жаль, что твои сохранения не подходит к эмуляторам на ПК. Я бы посмотрел можно ли это исправить.
--- Конец цитаты ---
Сохранения Je$TeR должны подходить, по идее.
Это Vurzum играет на смартфоне и его сэйвы несовместимы.
Беларус учит русский:
--- Цитата: Razuka от 06 Март 2024, 09:12:44 ---я продолжал тыкать пункт "1"
--- Конец цитаты ---
Тогда претензии насчёт графических багов неуместны :?
дополнение:
Глитчер просто бомбардирует всех кандидатов на инструкции. Отвечают ли они за графику, звук или ИИ - определить невозможно. Это делает человек, запуская багованный ром в эмуляторе и видя, что нужная ему инструкция задета, и далее начинает локализовывать её.
--- Цитата: Razuka от 06 Март 2024, 09:12:44 ---Будем ждать с нетерпением!
--- Конец цитаты ---
Там именно удобства, ничего кардинально нового: ром не надо переименовывать, отмена ошибочно нажатой клавиши и бэкап перед интересными багами для продолжения поиска с этого места в будущем.
Также изменены сообщения на более подробные.
Razuka:
--- Цитата: perfect_genius от 06 Март 2024, 12:55:07 ---Тогда претензии насчёт графических багов неуместны
--- Конец цитаты ---
У меня вообще нет ни к кому претензий :) Даже к разработчиками этой игры.
Я только немного завидую этим парням (https://www.romhacking.net/hacks/8267/), которые умудрились каким-то образом "подчинить" себе NHL '94 и сделать NHL '94: 2024 Edition
Последнее обновление от 14.02.2024
Там все переработано, включая AI и графику.
Они даже фотки реальных игроков туда запихнули 0_0
Вот, кстати ветка форума, где, как я понял, создатель этого мода (Adam Catalyst) подробно описывает свой хак:
https://forum.nhl94.com/index.php?/topic/22589-how-to-use-the-hacks-in-adam-catalyst%E2%80%99s-roms-nhl-94/
Фактически, это руководство, которое, возможно, нам тоже могло бы пригодиться в определенных аспектах.
Vurzum:
Razuka, не сыпь нам соль на рану :lol:
Je$TeR:
Пока Razuka брутфорсит багофикс на сброс мяча, у меня возникли задачи поинтереснее.
Это в первую очередь вопросы к вам, Марат, и perfect_genius, раз уж вы сюда заглядываете да и хрен, кроме вас, мне кто объяснит :lol:
Мне известно, где в роме находятся команды (1314DA), игроки (133854), составы команд (146ADE), и составы лиг (14A69E). Все идут блоки прямо друг за другом.
Мне также известно откуда эти блоки читаются: D0D22 - адрес блока игроков относительно CFD7A т.е. CFD7A + 63ADA = 133854 (CFD7A - начало списка указателей?)
Замена адреса необходима для того, если добавлять новых игроков, расширив список и перенеся его в конец рома.
Итак, что же я сделал? Перед самым списком игроков я прописал еще одного (сломав последнюю команду, но это не важно) и заставил читать блоки игроков с 63AC4. Это сбило ID всем игрокам, но они читались. Вместе с моим игроком. Не читался только последний игрок. Его ID в оригинале был DEE, в итоге я поменял DEE на DEF и вместо последнего игрока я получил буквально пустоту. (игрок без имени, все параметры 0).
Предположим, у блока фиксированный размер.
Тот факт, что айдишники сместились, а последний игрок перестал читаться говорит, что нет указателя на непосредственное окончание блока.
Количество ID у игроков DEE+1 (0 ид) т.е. DEF
Количество байт, которые занимает блок с игроками 146ADE - 133854 = 1328A
Я искал 01328A и не нашел во всем роме. :wall: Почему?
С размерами других блоков та же фигня.
Добавлено позже:
Еще, я заглянул как устроены составы в FIFA 98, там более 300 команд т.е. лимит на 256 преодолен. Я посмотрел, что из себя представляют блоки - они те же самые, с одним отличием:
В 96 формат записи XX 00 YYYY - где X - ид команды, Y - ид игрока, зачем нули - не знаю.
В 98 формат - XXXX YYYY, без нулей.
Вопрос: может ли кто из вас перенести формат чтения из 98 фифа в 96? Нули я сам перепишу (да, тяжело будет), имеется ввиду сам адрес отвечающий за формат.
perfect_genius, можно ли будет это глитчером найти?
Yoti:
--- Цитата: Je$TeR от 07 Март 2024, 14:06:17 ---зачем нули - не знаю
--- Конец цитаты ---
Выглядит как обычный short int в LE записи.
Марат:
Надо не размер блока с игроками искать, а индекс количества игроков. Т.е. сравниваться будет индекс игрока и ограничение. Допустим, у тебя количество игроков def, а максимальный индекс dee. Значит, будет сравнение не превышает ли индекс игрока количества игроков. Или по другому говоря, имеется массив с игроками. И делается проверка не выходит ли индекс за границы массива. Т.е. тебе надо искать 0DEF, а не размер блока.
Беларус учит русский:
--- Цитата: Je$TeR от 07 Март 2024, 14:06:17 ---можно ли будет это глитчером найти?
--- Конец цитаты ---
Глитчер сможет найти только один из этих указателей. А раз ты всё это уже нашёл, то моя программа ничем пока не поможет.
--- Цитата: Je$TeR от 07 Март 2024, 14:06:17 ---XX 00 YYYY - где X - ид команды, Y - ид игрока, зачем нули - не знаю.
--- Конец цитаты ---
Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.
Марат:
--- Цитата: perfect_genius от 07 Март 2024, 19:43:14 ---Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.
--- Конец цитаты ---
Ну, ради справедливости, надо сказать, что Сега может и побайтно читать.
Добавлено позже:
И ID команды она считывает именно как байт.
Беларус учит русский:
Т.е. из двух байт 0x0001 он может считать 01, обратившись по адресу левого, чётного байта, который 0x00?
Марат:
Да нет, конечно. Просто указываешь адрес нужного тебе байта и читаешь его командой move.b (A0)+,D0. Допустим в A0 будет адрес 0x000001. Сега может читать как по чётным адресам, так и по нечётным, но побайтно. По два байта или по четыре байта, т.е. командами типа move.w, move.l можно читать только с чётных адресов. Ну и запись также.
Je$TeR:
--- Цитата: Марат от 07 Март 2024, 18:50:58 ---Надо не размер блока с игроками искать, а индекс количества игроков. Т.е. сравниваться будет индекс игрока и ограничение. Допустим, у тебя количество игроков def, а максимальный индекс dee. Значит, будет сравнение не превышает ли индекс игрока количества игроков. Или по другому говоря, имеется массив с игроками. И делается проверка не выходит ли индекс за границы массива. Т.е. тебе надо искать 0DEF, а не размер блока.
--- Конец цитаты ---
Ага, я тоже так подумал и стал искать по всему рому 0DEE и 0DEF (все таки 0 ид считается, или нет?) Таких байтов оказалась куча. Ну я и решил автоматически заменить все 0DEE и 0DEF сразу по всем 470 адресам, или сколько их там было...
И знаешь что поменялось? А ничего :lol:
--- Цитата: perfect_genius от 07 Март 2024, 19:43:14 ---Глитчер сможет найти только один из этих указателей.
--- Конец цитаты ---
Я имею ввиду, найти инструкцию, отвечающую за формат чтения именно этого блока
--- Цитата: perfect_genius от 07 Март 2024, 19:43:14 ---Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.
--- Конец цитаты ---
Но я ведь не только за 96 говорю. Еще раз:
Если в фифа 96 ид команды 8A записан в составах игроков как 8A 00, то в фифа 98 ид 8A записан как 00 8A.
При этом, в составах лиг в фифа 96 ид команды 8A без нулей, а в фифа 98 с нулями уже сами ид лиг.
И я пытаюсь узнать, можно ли перенести этот формат чтения из 98 в 96? Если да, то можно будет обойти лимит в 256 команд. И что из себя инструкция представляет? Возможно там пару байт заменить, а эффект огромен.
Наверное проще приложить ром, чтобы можно было сравнить, 143BCE начало блока с составами игроков в 98, 14960E - cоставы лиг, соответственно.
Марат:
$7C6f6, 7c722, 90fea, 91212 - по этим адресам поменяй и 100% получиться.
Je$TeR:
--- Цитата: Марат от 08 Март 2024, 07:18:17 ---90fea
--- Конец цитаты ---
Вот это помогло. Странно но я DEF на DF0 тоже массово менял, почему у меня тогда не получилось?
Это только на игроков ты мне скинул, или остальные 3 на другое? Хотя, как они могут быть на другое, они все 0DEF... :facepalm:
Но остальное должно быть где-то рядом
Марат:
Их надо все 4 менять. Это всё связанно. Потому что созданные игроки через меню Create player получают нумерацию начиная с def. Если их не менять, то возможно, вместо этих игроков у тебя будут игроки, которых ты добавил через хекс эдитор
Навигация
Перейти к полной версии