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

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


Сообщения - Марат

Страницы: [1] 2 3 4 5 ... 19 Далее
1
А через какой тайловый редактор надо bin-файл открывать, чтобы графику посмотреть? А то я сколько ни открывал, а там каша.
YY-chr, например.

2
И кто какие проги использует для создания карты?
Никто не создаёт в них карты. Эта программа была сделана для того, чтобы помочь ромхакерам вносить графические изменения в уже существующую игру.

3
Открыл Winhex 21.0 и там много всего разного.., но insert->insert bytes не нашёл. Специально переключил на английский.
Эти слова шли же после после упоминания программы Translhextion.
В WinHex просто создаём новый файл через меню Файл->Создать... В появившемся меню указываем размер файла в байтах.

4
Для того чтобы создать пустой файл нужного размера можно использовать хекс эдитор какой нибудь, winhex, например. Или translhextion. Создать новый файл, потом insert->insert bytes at end...

5
Ну это она и есть. Там, когда сохраняешь, должно быть предупреждение о том, что файл  будет увеличен. Если нажать Yes, то файл будет сохранен в увеличенном размере 16 КБ, если нажать No, то файл будет сохранен в оригинальном размере.

Добавлено позже:
Это при условии, что вы редактируете какой-то свой файл, а не создали его через меню программы.

Добавлено позже:
Там также 16КБ создаётся и сохраняется (версия 2021/06/06). Они похоже так и не сделали опцию настройки размера файла, нужно самому разделять и объединять файлы.
Я всегда считал этот редактор хренью, к тому же заброшенный, хотя пригодился однажды. В любом случае, всегда нужно уметь самому программно редактировать графику, даже если кто-нибудь осилит сделать удобный редактор пиксель арта.
Не знаю, я всегда использую его, как просмотрщик. Когда надо что то по быстрому найти.

6
Я использую эту программу, чтобы попытаться нарисовать спрайт персонажа, но в итоге всегда сохраняется файл .chr размером 16 кб. Но подходит только 8 кб. Что я делаю не так? Или эта программа предназначена не для рисования с нуля, а только для редактирования?
Это такой баг в программе. Есть более новая версия написанная на c# yy-chr .net. лучше пользоваться ей. Либо хекс эдитором удалять лишние данные.

7
Отремонтировал запись в SRAM. Пришлось поискать информацию, как работает SRAM.
Отремонтировал остальные турниры. Теперь все турниры работают. Правда, особо их не тестил. Возможно, на финише могут вылезти баги.
По-прежнему, не работают трансферы и кастомные команды.

8
Крашится IDA 8,3 на условных брейкпоинтах.
Сначала брейкпоинт срабатывает нормально.
Потом делаешь сброс на эмуляторе, игра доходит до брейкпоинта и IDA крашится.
Содержимое скрипта брейкпоинта
Reg = idaapi.get_reg_val('A0')
return Reg == 0x1A4

Сообщение, которое выскакивает при крахе:
Цитата
Failed to retrieve register value
  File "<string>", line 2, in main
  File "C:\IDA Pro 8.3 (x86, x86_64)\python\3\ida_dbg.py", line 4278, in get_reg_val
    return _ida_dbg.get_reg_val(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Цитата
Oops! internal error 40198 occurred.
Further work is not possible and IDA will close.
Would you like to create a crash dump for a bug report?



Добавлено позже:
И ещё не нашёл где находится TileDataPreview

9
Нет, она работала, до того как я внес составы лиг из FIFA 98.
А потом все мои силы были сосредоточены на запуск Friendly режима.
Но, естественно, я не менял все значения. Я изменил какое-то количество, пока игра не заработала во Friendly режиме. Дальше я уже пытался запустить другой турнир. И понял, что там тоже много чего надо менять и бросил. Тем более там не обойтись без переноса кода, так как в  FIFA 98, есть команда add.l d0,d0. А в FIFA 99 такой команды естественно нет. И если раньше мне удавалось её записать вместо другой команды, то в других турнирах такой возможности уже не было.

10
Скорее всего я не все адреса изменил. Я особо не искал их. Поменял в двух местах

11
Sram был настроен на область после рома, т.е. после 2 мегабайт, я его перенастроил на область после 3 мегабайт. Адрес 0x300000-30ffff.
Работает френдли режим потому что я изменил код чтения составов лиг, чтобы он читал данные от fifa 98. И вообще мог переключать список лиг и список команд.
Всё таки фифа 96 оперирует байтами, а фифа 98 вордами. Это ещё повезло, что была возможность одну из команд, заменить на нужную для меня, не поломав систему.

Добавлено позже:
Например, нужно научить игру понимать данные из fifa 98. Т.е.  почти все тоже самое, что было проделано для friendly режима, но плюс могут быть дополнительные тонкости, связанные с турниром.
Турниры из fifa 98 я не планировал переносить. Только научить читать данные команд, лиг, игроков из fifa 98.

12
Я даже знаю почему.
Потому что я весь необходимый код поправил для Friеndly режима. А остальные режимы я не трогал. Там тоже много чего надо менять.
А Ром я дампил через хекс эдитор дебагера, поэтому он, видимо, 8 мегабайт. Это я не проверял. Но лишние данные можно легко удалить.

13
Самый главный прорыв - это перенос форматов команд и лиг из 98 в 96, которые Марат пытался осуществить. Пытался, но, видимо, не получилось. При этом, какие адреса за размеры отвечают, он не говорит. Жаль, я бы сейчас больше сборных добавил.
Слишком геморно, я потратил достаточно много времени и мне удалось лишь осуществить возможность выбора команд во Friendly режиме. Но при этом почему-то сломалась система чтения игроков. Хотя до этого было всё нормально.
Также во время игры неправильно отображается название второй команды. Т .е. тут проблемы будут тянуться одна за другой и их надо постоянно исправлять. Честно говоря, надоело всё это.
Адреса я особо никуда не записывал, вот приложил ром, можете скачать и посмотреть, какие изменения внесены.
Игра работает во Friendly режиме. Я не переносил названия лиг, поэтому названия лиг не соответствуют командам.

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

15
Ну, допустим, я перенес из FIFA 98 составы команд в конец рома и подправил код. Дальше я могу перенести самих игроков из FIFA 98. Это не проблема. Но вот с составами лиг уже посложнее. Началась проблема с нехваткой памяти. Я не знаю почему она появляется, возможно надо перенести ещё названия команд.

16
Их надо все 4 менять. Это всё связанно. Потому что созданные игроки через меню Create player  получают нумерацию начиная с def. Если их не менять, то возможно, вместо этих игроков у тебя будут игроки, которых ты добавил через хекс эдитор

17
$7C6f6, 7c722, 90fea, 91212 - по этим адресам поменяй и 100% получиться.

18
Да нет, конечно. Просто указываешь адрес нужного тебе байта и читаешь его командой move.b (A0)+,D0. Допустим в A0 будет адрес 0x000001. Сега может читать как по чётным адресам, так и по нечётным, но побайтно. По два байта или по четыре байта, т.е. командами типа move.w, move.l можно читать только с чётных адресов. Ну и запись также.

19
Без нулей иксы или игреки встанут на нечётный адрес и Сега не сможет получить к ним доступ. Т.е. для выравнивания.
Ну, ради справедливости, надо сказать, что Сега может и побайтно читать.

Добавлено позже:
И ID команды она считывает именно как байт.

20
Надо не размер блока с игроками искать, а индекс количества игроков. Т.е. сравниваться будет индекс игрока и ограничение. Допустим, у тебя количество игроков def, а максимальный индекс dee. Значит, будет сравнение не превышает ли индекс игрока количества игроков. Или по другому говоря, имеется массив с игроками. И делается проверка не выходит ли индекс за границы массива. Т.е. тебе надо искать 0DEF, а не размер блока.

21
Это что угодно, но только не то, что мне нужно. Спрайт, который мне надо заменить, начинается в 12CB68, где 30 FB - отвечает за сжатие или чего-то там.
Твоя таблица же идет после нужной мне графики, блоков с командами, с игроками, и чем только можно. Т.е. почти в конце рома. На что она может ссылаться - я не знаю.
Так это не тебе. Это для поиска вбрасывания мяча. Флаги бы я нашёл без проблем 100%. Искать графику дебагом это вообще проще простого. Гораздо сложнее искать функции движка игры.

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

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

23
По идее, достаточно найти список этих адресов. Глитчер будет искать такие структуры в будущем. А пока вариант - найти с ним один такой указатель и уже самому найти весь список в роме с хекс-редактором.

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

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

25
Марат, да, в FCEUX есть такой тип бряка, называется Forbid (запрет). Он запрещает другим брякам срабатывать на указанном CPU адресе или диапазоне адресов.
Точно, я почему-то для себя перевёл forbid, как забыть :lol:

26
Главная прелесь FIFA в том, что там можно играть вчетвером за одну команду, а не смотреть, как игра играет сама с собой. Лучше народ собрать и чемпионат какой нибудь пройти.
Помню раньше проходил чемпионат в Pro Moves Soccer, и там можно было смотреть игры твоих соперников. И чтобы получить более справедливый счёт, я смотрел их игры. Да и в целом нравилось наблюдать как играет компьютер.

27
А есть возможность добавить пропуск срабатывания брейкпоинта по определенному адресу? Т.е. допустим я ставлю брейк на чтение по адресу 0xff0000  и у меня срабатывает брейк по адресу 0x1000. Но это место не то, которое мне необходимо и мне надо сделать так, чтобы в этом месте бряк на чтение не срабатывал. На каком тодебагере, сейчас не вспомню, можно было добавлять диапазон адресов, в которых бы ни один брейкпоинт не срабатывал бы. Возможно, fceux. Называлось что то типа "забыть".

28
Да всё там правильно. Там же цикл с предикрементом. Перед тем как в первый раз будет обращение к регистру а1, он будет увеличен на 4 и как раз будет указывать на первый longword из таблицы.

29
Интересно, кто его пометил как T+Rus? Там должно быть, как минимум T-Rus o_0

30
Видимо, потому что sub_7EC, вызывается из других мест типа JSR sub_7EC или просто JMP sub _7EC. А после второго bsr, даже метки нет.

Страницы: [1] 2 3 4 5 ... 19 Далее