Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Je$TeR

Страницы: [1] 2 Далее
1
Отремонтировал остальные турниры. Теперь все турниры работают. Правда, особо их не тестил.
Если все работает, останется только за графику взяться.

2
Нет, она работала, до того как я внес составы лиг из FIFA 98.
Игроки не работали? Или срам не работал?
Но, естественно, я не менял все значения.
Но, когда мне нужны были адрес размера игроков, ты ведь сразу нашел все 4 каким-то образом. Возможно остальные следует поискать таким же способом, чтобы потом не думать, что ты что-то сломал? Но сами лиги сейчас вроде бы работают, только с отображением команд  проблема.

в  FIFA 98, есть команда add.l d0,d0. А в FIFA 99 такой команды естественно нет
Если я бы понимал, за что она отвечает, сказал бы, нужна она или нет. Так-то я все турниры проходил, и в 96 и в 98. Возможно и без неё можно обойтись.

3
Скорее всего я не все адреса изменил.
Чёрт возьми, не удивительно. Только что прошелся по адресам размера на блок игроков, там везде 0DEF, и действительно, почему это система чтения игроков сломалась? Да уж  :rofl:
Ты нас так не пугай больше. Сейчас везде поменял на 1519 в твоем роме, все прекрасно работает.
Желательно, записывай где нибудь изменения, которые вносишь, а то размеры составов уже не понятно где находятся, и придется потом гадать, чего ты поменял, а чего нет.

4
Sram был настроен на область после рома, т.е. после 2 мегабайт, я его перенастроил на область после 3 мегабайт. Адрес 0x300000-30ffff.
Почему тогда он не сохраняется? Не появляется даже сам файл. Введенные коды для турниров тоже не запоминает.

Например, нужно научить игру понимать данные из fifa 98. Т.е.  почти все тоже самое, что было проделано для friendly режима, но плюс могут быть дополнительные тонкости, связанные с турниром.
Сейчас вспомнил, что состав турнамента в World встроенный, т.е. все команды прописаны заранее. При этом Champions Cup команды из World не читает. Так что там, скорее всего, действительно надо подправлять, но не думаю, что там что-то сильно отличается. Но это тоже будет полезно, можно будет лигу чемпионов нормальную добавить.

5
Потому что я весь необходимый код поправил для Friеndly режима.
Ты хочешь сказать, что ты специально отключил sram?

А остальные режимы я не трогал. Там тоже много чего надо менять.
Например?
Указатели на сам текст мне известны (на адрес и размер блока - нет)
На цвета плашек - тоже (там по дебильному устроено, действительно менять нужно)
Спрайты - отдельный разговор.
Если ты пытался еще и устройтсво турниров из 98 перенести, то там у сборных все иначе устроено, там у них меню отдельное. В 96 это проще сделано. Но то, что сейчас даже больше чем 16 лиг можно сделать, все равно круто.

Терзают смутные сомнения уже насчет переносов блоков
Её доработать можно, Sharpnull же её тебе писал

6
Начнем, с того, что у тебя ром весит 8192  0_0
Я не знаю, может ли это быть причиной неисправностей, я лишь знаю что так делать нежелательно.

Также во время игры неправильно отображается название второй команды.
Там не вторая команда сломана. Все команды, после PSV Eindhoven перестают читаться, т.е. они читаются в списках, но не отображаются во время матча. Начиная с Pahang идут кастомные команды, что как бы намекает. Возможно еще где-то размер не указан. С игроками, подозреваю, такая же ерунда, но это я сам сейчас посмотрю.
Посчитал количество команд, которые читаются правильно. EE, о чем я и говорил.
А с игроками сложнее. Видимо они читаются не по порядку. Но багованные игроки выглядят так, когда игра пытается читать несуществующие ид игроков.

Игра работает во Friendly режиме.
Я даже знаю почему. У тебя запись в sram не работает. Сейчас не работают кастомные команды и трансферы сломаны. Кастомные игроки не запоминаются. Все чемпионаты, когда только формируются, уже пишутся в sram. Формат команд поменялся и ,скорее всего, поэтому режимы лиг не работают.

Я не переносил названия лиг, поэтому названия лиг не соответствуют командам.
Я знаю, где это править, но там тоже головняк. Потом надо будет про это отдельно расписать.

Однако, это не мешает им пользоваться кому-то еще.
Или в этом контексте есть какой-то ограничивающий фактор?  o_0
Ты её в публичный доступ не выкладывал. Но так-то она все равно бесполезна станет, как только блок с игроками перенести.

7
Этот тестовый код уже может изменить и поведение игроков, по идее.
Ну уж действительно :lol:
Если бы он мог плотно редактировать формации, я уверен, у меня игроки с поля по одному исчезали бы, и я бы даже не заметил, что нужное изменение произошло.
Я, конечно, находил какие-то адреса, но это не те, что мне нужны. И я думаю, что формации устроены намного сложнее, чем я предполагал. В том же меню еще графику искать. Короче говоря, искать кучу адресов в разных местах.
Ну и слом формации поведения в одном моменте позабавил  :biggrin:
А в другом наткнулся на неиспользованную часть графики.



Добавлено позже:
Вообще, оглядываясь назад, уже можно констатировать то, как много мы все сообща сделали в этом непростом деле:
Я картинки со странами всё никак не заменю
- создан редактор для редактирования параметров, амплуа и имен игроков
тебе его делали за деньги и он для твоего личного пользования.
созданы инструкции для редактирования цветов команд и формы игроков
Они в открытом виде были, их, разве что, редактировать не очень удобно, а так...

Самый главный прорыв - это перенос форматов команд и лиг из 98 в 96, которые Марат пытался осуществить. Пытался, но, видимо, не получилось. При этом, какие адреса за размеры отвечают, он не говорит. Жаль, я бы сейчас больше сборных добавил.

8
Ты ожидал получить другое расположение?
Если в свойствах команды ввести номер несуществующей формации, то все игроки, кроме вратаря, исчезнут.
Я надеялся сломать чтение нужной мне формации, надеясь на похожий эффект. Получил только эффект с вратарем и игроком в одной точке, в центре поля, затем экран гас.
Пункт 3 же.
Он фильтрацию начинает. Если уже нашел нужное, нужно бесконечно 3, что ли, жать?

9
Попытался найти глитчером формации, больше сотни попыток перебрал. В некоторых попытках с поля пропадали игроки, но тут же гас экран. Но даже если бы и нашел, все равно не понятно, как результат в виде нужного адреса получить.

10
Я перенес составы команд из 98 в 99(96).

Если я правильно понял, то ты взял блок составов из 98, перенес в 96 и там поменял формат записи для ид команд т.е. вместо 86 00 у команды стало 00 86. Но команд в 98 больше, чем в 96, там и 0101 ид есть.
И если переносить еще и составы лиг - а именно там расположение команд указано... да, игра может ругаться на недостающие команды, но и на лиги тоже - лиг тоже больше. А формат у составов лиг менял? В 96 они 0X YY, а в 98 XX 00 YYYY. Еще попробуй лишние лиги удалить из списка. В 96 0B - максимум. Ну и\или команды перенести можно, да.

11
Ну, допустим, я перенес из FIFA 98 составы команд в конец рома и подправил код.
Что все это значит?  o_0
Ты перенес блок с командами, или блок с составами команд?
Ты все это перенес из 98 в 96 или просто в конец рома?

Но вот с составами лиг уже посложнее.
Если все таки речь о переносе из 98 в 96, то лиг в 98 больше и они больше размера занимают. Но я, все таки, пока не до конца понимаю о чем речь. Ты именно 98 разбираешь?

12
Инвертируем её и что мы должны увидеть в игре? Какой эффект?
Скорее мы должны увидеть, что все команды исчезли, (кроме кастомных). Да, за это могут отвечать другие инструкции, но в данном случае остается только перебирать их все.
В игре же можно промотать все эти 239 команд в меню?
Нет.
1. Они разбросаны по лигам и проматываются по кругу, но допустим, их всех в одну лигу засунули.
2. Видно только те команды, которые прописаны в таблицу составов (к какой лиге приписана команда)
3. В оригинале есть невидимые лиги (трансферы, кастомные команды), трансферы просто служат массивом для игроков, их нельзя проматывать. (но их можно в обычные превратить)

Чтобы новая команда читалась, она:
1. Должна быть в списке команд (у которого фиксированный размер)
2. Должна быть в таблице лиг, чтобы ее высветить (у которой фиксированный размер)
3. Иметь игроков в таблице составов,(у которой фиксированный размер) но я не уверен
Если же речь идет о том, чтобы просто отключить проверку на размер блока, то кракозябры из команды получатся только в том случае, если отключить проверку у команд и у лиг одновременно.

Добавлено позже:
Небольшое уточнение: лиги могут в себе содержать ид одной и той же команды хоть тысячу раз, если вместимость позволяет. Поэтому, если убрать проверку на размер у составов лиг, то получим кучу существующих команд повторяющихся много раз в случайном порядке.
Короче говоря, глитчером следовало бы сначала проверку на составы лиг отключить, а следом можно и остальное.

13
Их надо все 4 менять. Это всё связанно. Потому что созданные игроки через меню Create player  получают нумерацию начиная с def. Если их не менять, то возможно, вместо этих игроков у тебя будут игроки, которых ты добавил через хекс эдитор
Ты имеешь ввиду Custom Players? Я менял эти параметры поочередно, изменения почти незаметные были. Я так понял, что кастомные игроки получают айдишники вслед за обычными.
С командами та же самая фигня, количество команд - 239 т.е. EF (и вот это уже точно хрен найдешь, но возможно там и 00 EF), и у кастомных команд тоже айди EF, F0, F1, F2
Блоки с составами тоже, по идее, должны быть EF

upd: у составов лиг должно быть EF, а что у составов команд - черт его знает.

14
90fea
Вот это помогло. Странно но я DEF на DF0 тоже массово менял, почему у меня тогда не получилось?

Это только на игроков ты мне скинул, или остальные 3 на другое? Хотя, как они могут быть на другое, они все 0DEF... :facepalm:
Но остальное должно быть где-то рядом

15
Надо не размер блока с игроками искать, а индекс количества игроков. Т.е. сравниваться будет индекс игрока и ограничение. Допустим, у тебя количество игроков def, а максимальный индекс dee. Значит, будет сравнение не превышает ли индекс игрока количества игроков. Или по другому говоря, имеется массив с игроками. И делается проверка не выходит ли индекс за границы массива. Т.е. тебе надо искать 0DEF, а не размер блока.
Ага, я тоже так подумал и стал искать по всему рому 0DEE и 0DEF (все таки 0 ид считается, или нет?) Таких байтов оказалась куча. Ну я и решил автоматически заменить все 0DEE и 0DEF сразу по всем 470 адресам, или сколько их там было...
И знаешь что поменялось? А ничего :lol:

Глитчер сможет найти только один из этих указателей.
Я имею ввиду, найти инструкцию, отвечающую за формат чтения именно этого блока

Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.
Но я ведь не только за 96 говорю. Еще раз:
Если в фифа 96 ид команды 8A записан в составах игроков как 8A 00, то в фифа 98 ид 8A записан как 00 8A.
При этом, в составах лиг в фифа 96 ид команды 8A без нулей, а в фифа 98 с нулями уже сами ид лиг.
И я пытаюсь узнать, можно ли перенести этот формат чтения из 98 в 96? Если да, то можно будет обойти лимит в 256 команд. И что из себя инструкция представляет? Возможно там пару байт заменить, а эффект огромен.
Наверное проще приложить ром, чтобы можно было сравнить, 143BCE начало блока с составами игроков в 98, 14960E - cоставы лиг, соответственно.

16
Пока 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, можно ли будет это глитчером найти?

17
А поясни, если не сложно, что там за баг.
После пробивания пенальти, если ты промазал, твой игрок стоит как вкопаный секунд 5 и даже кнопка B не работает. Как следствие - невозможно сделать добивающий удар = потерянный гол >:(. У бота этой проблемы нету, я из-за этого бага боту поручаю пенальти пробивать.

Кстати, забавный момент через Глитчер нашел. Жаль только, что не записал видео.
В каком-то из проходов программы наткнулся видимо на команду, которая должна ограничивать время дриблинга футболистов.
Может ты в тактику залез, есть же long ball. А формации искать пробовал? Те которые 4-4-2 и т.д.

18
Пенальти в игре ботов - вещь достаточно редкая
А я не про игру ботов говорю. Или кроме ботов никто в эту игру играть не должен? :biggrin:
У ботов этого бага, кстати, нет, следовательно - ты про него даже не догадывался.

И каких либо прочих отрицательных отклонений после внесенного изменения в код игры я пока не заметил
В этом и проблема. Ты что-то меняешь и при этом не понимаешь что конкретно.

Да, Глитчер пока не может такое изменить, он только инвертирует.
Кстати, где он? И ты говорил новая версия скоро будет. Я с ней смогу спрайты стран заменить?

19
Но предлагать не считать багом то, что мешает, прерывает игру, образуя цикличную петлю
Я сказал что баг - не сам бросок мяча, а то, что на позиции игрока не хватает, читай внимательно.
Он не образует цикл, бот может кинуть по линии пару раз, но потом кидает нормально, это не критичный баг. Задачи для разбора рома есть более интересные и критичные, например баг с пенальти, про который никто из вас даже и не вспомнил.
 
Честно говоря, я не понимаю Jestera. Вернее, я только понимаю, что ему это не интересно
Поймешь, когда узнаешь, что починив один баг, ты получил 2 новых, потому что возможно окажется, что все элементы поведения ИИ взаимосвязаны, и для исправления одного бага или коррекции геймплея скорее всего придется разбирать весь ИИ. Потому что, чтобы исправить поведение ИИ, нужно понимать как он в игре устроен. И никто этого сейчас не понимает.

А в чём проблема такого управления?
Есть 2 способа отбрать мяч: подкат через А (= штрафные\карточи\травмы), или выбивание через B. Но B это еще и переключение между игроками. Т.е. хочешь выбить мяч и вместо этого ты куда-то переключился, потому что, недостаточно близко к мячу. По сути, 2 разных действия на одну кнопку.

20
Je$TeR, это тебе. Кол-во попыток вбрасывания можешь посчитать
Ты читал, что я написал?
В подобных случаях бот кидает мяч ровно по штрафной линии, на которой мяч принимает другой игрок и выбивает его головой в центр поля. Просто иногда там игрок не стоит.
Иногда - означает в другой расстановке.
Если тут и есть баг, то лишь в том, что после такого броска команда бросающего не меняется.
Сделать так, чтобы за подобный бросок игрок желтую карточку получал, или менялась команда, мне кажется, гораздо проще, чем пытаться ковырять направление броска со всех позиций.

21
в нем игрок Нигерии (зеленая футболка) бросает мячик налево и ровно по линии поля (баг)
А я ведь предупреждал, результат не соразмерен усилиям когда речь идет о поведении ИИ. Ты еще месяц будешь ковыряться с этим броском мяча, да и не баг это. В подобных случаях бот кидает мяч ровно по штрафной линии, на которой мяч принимает другой игрок и выбивает его головой в центр поля. Просто иногда там игрок не стоит.
Для сравнения, поменяв выбивание мяча на другую кнопку (а не на B, сейчас) сейчас бы улучшило геймплей многократно и было бы намного проще,  но с данной программой сейчас этого и не сделать наверное.

22
Флаги бы я нашёл без проблем 100%. Искать графику дебагом это вообще проще простого.
Ну так нашел бы уже, чего уж там :lol: Я пол года спрайт заменить не могу. Хотя найти и заменить - это не одно и то же.

23
Je$TeR, я имел в виду про один элемент. Т.е. и у мигающей иконки тоже два указателя
Понятное дело, просто если ломать глитчером в конкретном месте, скорее всего на оба поочередно наткнешься.
А ещё вспомнил, что должна быть ещё палитра
Зачем? Они все одну палитру используют. Или я не понимаю о чем речь.
Вот тебе таблица со списком адресов:
$15AEF0 - $15E0E3 - таблица с 4 байтными относительными поинтерами (3196 поинтеров)
Это что угодно, но только не то, что мне нужно. Спрайт, который мне надо заменить, начинается в 12CB68, где 30 FB - отвечает за сжатие или чего-то там.
Твоя таблица же идет после нужной мне графики, блоков с командами, с игроками, и чем только можно. Т.е. почти в конце рома. На что она может ссылаться - я не знаю.
Таких списков указателей в роме несколько же?
Мне Sharpnull находил: D0D22 адрес (00063ADA) на блок с игроками (133854) при этом ссылается он относительно CFD7A (63ADA+CFD7A = 133854), этих списков определенно несколько.

24
Это усложняет дело, забыл про карту тайлов. Т.е. надо будет найти уже минимум два указателя
Забыл сказать, что там надо достать 2 спрайта одновременно. Один - спрайт страны, другой - мигающая иконка, у каждой страны своя. Если методом перебора всё делать, то можно наткнуться на оба сразу.

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

26
Зато моя программа снова показала, что годится для хакинга.
Было бы здорово, если бы твоя программа помогла бы мне блоки увеличить и спрайты стран заменить.

27
45 минут - это слишком долго.
У меня тайм = 6 минут. Матч = 12 минут.
ну ты же претендовал на реализм  :lol:, а в реальности матчи по 6 минут никто не играет.

upd: похоже Coverage в игре действительно не работает. Ставил все на минимум, игроки бегают где хотят.

28
В этом контексте, если вратаря не ослабить, то голов почти не будет.
В 45 минутном матче боты себе делают счет 5-5, не понимаю о чем ты. Возможно ты 4-минутные матчи смотришь.

Однако, в последующих играх серии (97, 98) боты охотно травмируются.
Если бот не умеет делать замены, то для него это только хуже. Да, боту может вручную сделать замену игрок, но расчет был явно не на это.

29
Например, такие голевые комбинации (как на видео) в базовой игре без редактирования параметров голкипера крайне редки. Там вратари ловят 99% подобных мячей.
Я такие 99% мячей забиваю, с этой же позиции. В твоей версии вратарь будет совсем дырявым.

Я это делаю прежде всего для симуляции футбольного менеджера, когда живой игрок выступает только за тренера и скаута.
Главная прелесь FIFA в том, что там можно играть вчетвером за одну команду, а не смотреть, как игра играет сама с собой. Лучше народ собрать и чемпионат какой нибудь пройти.

З.Ы. теперь понятно, почему у тебя "травмы не работают", бот в игре травмы не получает.

30
Это явно просто указатели. И с буквами G и D тоже. Так что попробую в Глитчер добавить перемешиватель указателей.
Я не знаю о каких указателях речь, но вся графика стран в роме запакована и не редактируется.
Je$TeR, что думаешь насчёт его пункта 3?
Я думаю, что он заморачивается совсем не тем, чем стоило бы. Для изменения поведения ИИ усилий нужно много, а результат незначительный. Да и не замечал я разницу в поведении вратаря от всех остальных, думаю, это очередное "мародер едет быстрее дерт девила в RRR".

Страницы: [1] 2 Далее