Добавление данных ром
|
|
Lex89 | Дата: Среда, 18.02.2015, 18:50 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Нашел нужные данные про набор суперударов (хранятся где-то отдельно) персонажа, их спокойно можно заменять на другие. Пытаюсь добавить дополнительный суперудар (дописываю 4 значения) - ром умирает и больше не запускается. Каким образом нужно организовать добавление данных в ром, дабы избежать крашей?
|
|
| |
TLT | Дата: Четверг, 19.02.2015, 00:06 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Можно начать с объявления платформы и игры. Если NES, то там есть мапперы, там просто так расширять/добавлять нельзя. Если SMD, то пробллем не должно быть, вроде. Поинтеры.
Вот так.
|
|
| |
Lex89 | Дата: Четверг, 19.02.2015, 09:34 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Игра на SMD - Tecmo Cup.
FF отделяет наборы суперударов персонажей друг от друга 0C - тип суперудара 41 - сам суперудар Суперудары идут последовательно без каких-либо разделений. Вставляю конструкцию 0B 01 38 00 между двумя суперударами или после всех - игра перестает работать. Хеш сумму пробовал фиксить, не помогает.
Сообщение отредактировал Lex89 - Четверг, 19.02.2015, 09:35 |
|
| |
TLT | Дата: Суббота, 21.02.2015, 13:14 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Цитата Lex89 ( ) Вставляю конструкцию 0B 01 38 00 между двумя суперударами или после всех - игра перестает работать. Хеш сумму пробовал фиксить, не помогает. ROM не запускается или что-то в процессе игры? Какой экран показывается, чёрный, синий, красный? Пробовал вообще любые другие изменения в ROM вносить, там нет защиты на изменение данных? Пробовал ли вставлять в указанный участок какой-то другой приём, дублируя? Попробуй заэнопить, заменить на кусок EA. Возможно, где-то есть проверка, где-то продублированы код, нужно менять во всех участках? Я уже не говорю про то, что возможны проблемы с особенностями движка игры, возможно ты не так понял функционал этих участков.
Вот так.
|
|
| |
Lex89 | Дата: Суббота, 21.02.2015, 18:06 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Цитата TLT ( ) ROM не запускается или что-то в процессе игры? Какой экран показывается, чёрный, синий, красный? Пробовал вообще любые другие изменения в ROM вносить, там нет защиты на изменение данных? Пробовал ли вставлять в указанный участок какой-то другой приём, дублируя? Попробуй заэнопить, заменить на кусок EA. Возможно, где-то есть проверка, где-то продублированы код, нужно менять во всех участках? Я уже не говорю про то, что возможны проблемы с особенностями движка игры, возможно ты не так понял функционал этих участков. Ром не запускается, экран черный. Прием "0B 01 38 00" был скопирован из другого набора. (в обычной игре в некоторых наборах повторы есть) Наборы суперударов меняются только здесь, в данных самих персонажей содержатся лишь имя, характеристики, внешность и ссылка на этот самый набор суперударов.(правда принцип самой ссылки я не совсем понял, но ссылается именно туда). Изменяются данные свободно, можно в любом наборе заменить любой прием на любой из доступных в игре. (ровно как и изменять имена и характеристики персонажей) Но добавить что-то - бесполезно, сразу черный экран. Если например где-то в тексте лишнюю букву приписать, будет та же история.
Сообщение отредактировал Lex89 - Суббота, 21.02.2015, 18:18 |
|
| |
TLT | Дата: Суббота, 21.02.2015, 20:40 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Ты какой ROM юзаешь? Чет я не нашел хороший дамп этой игры. У меня эти: Tecmo Cup (J) [h1C] Tecmo Cup (J) [h2C] Tecmo Cup (J) [p1][!] Tecmo Cup (J) [T+Spa] Tecmo Cup (J) [x]
[!p] Незавершенный дамп. В подобные ромы вообще опасно играть, мало ли что он может показать, конечно же, если он вообще запустится. Опять же нужен только для полной коллекции.
[x] Ром содержит неверную контрольную сумму или записан по нестандартному алгоритму.
[h?] Хакнутая версия игры. Буквой "h" обозначаются игры с незначительными изменениями, сделанными народными умельцами aka хакерами. Была изменена цветовая гамма, название, музыка или еще что-нибудь. Также хак может давать возможность запускать игры не предназначенные для определенных регионов, убирая границы между PAL и NTSC. Вместо знака вопроса ставится номер хака, после чего еще может ставится код страны хакера.
Вот так.
|
|
| |
Lex89 | Дата: Суббота, 21.02.2015, 20:49 | Сообщение # 7 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Цитата TLT ( ) Ты какой ROM юзаешь? Чет я не нашел хороший дамп этой игры. У меня эти: Tecmo Cup (J) [h1C] Tecmo Cup (J) [h2C] Tecmo Cup (J) [p1][!] Tecmo Cup (J) [T+Spa] Tecmo Cup (J) [x] Использую Tecmo Cup (J) [x] Есть еще какой-то (JH) [x], но я его не запускал. Картидж оригинальный кстати у меня есть, надо будет погуглить по дампингу.
Сообщение отредактировал Lex89 - Суббота, 21.02.2015, 20:52 |
|
| |
TLT | Дата: Воскресенье, 22.02.2015, 00:33 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Lex89, а проблема возникает во всех вариантах ROM или ты только в одном пробовал? Скинь в тему патч или ROM с изменениями, может кто-то глянет...
Вот так.
|
|
| |
Lex89 | Дата: Воскресенье, 22.02.2015, 02:41 | Сообщение # 9 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Проблема во всех вариантах рома. Вот ром+хакнутый нерабочий вариант. Изменено вот здесь: (добавляем прием 04 01 23 00 (Power TCK) в конец набора приемов персонажа 01 0B 2A 01 02 52 10 0E 11 0F 0D 0F 10 0E 0F 0F 2D 03 39 06 00 00 (Ralph в режиме All-Stars). Результат:
Разбор байт приемов: 04 - тип приема, в данном случае - tackle. 01 - ?, стоит у каждого приема в наборах. 23 - сам прием (Power TCK). 00 - окончание приема. Набор приемов кончается на FF FF. Разбор байт игроков: 01 0B 2A 01 - отвечают за имена игроков. Каждый новый игрок начинается с 01 0B (в режиме All-Stars), либо 01 08(09) в режиме кампании. 02 52 - количество сил игрока. 10 - кол-во характеристики dribble. 0E - pass. 11 - shot. 0F - tackle. 0D - block. 0F - pass cut. 10 - trap. 0E - through. 0F - clear. 0F -competition. 2D 03 - скин персонажа. 39 06 - ссылка на набор суперударов. (в который мы добавили новый прием выше) 00 00 - конец игрока. Соотв. первые 4 байта - имя. 12 байт - характеристики. 2 байта - скин. 2 байта - ссылка. Сами значения характеристик в хекс-редакторе ниже игровых на единицу. Значения сил игроков ниже игровых на 10 единиц. Игроки находятся в командах, которые кончаются на FF. В начале каждой команды есть два байта (не помню точно, какие) - они отвечают за использование характеристик игроков конкретной команды. (Например, если поменять местами составы команд(вместе с хар-ками игроков, разумеется), то имена игроков изменятся, а их характеристики и приемы будут оставаться прежними, пока мы не сменим те 2 байта в начале команды на родные).
Сообщение отредактировал Lex89 - Воскресенье, 22.02.2015, 03:01 |
|
| |
TLT | Дата: Воскресенье, 22.02.2015, 23:19 | Сообщение # 10 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| А что ты затираешь?
Вот так.
|
|
| |
Lex89 | Дата: Понедельник, 23.02.2015, 11:36 | Сообщение # 11 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Я вообще ничего не затираю, я вставляю новые 4 байта.
|
|
| |
TLT | Дата: Понедельник, 23.02.2015, 15:04 | Сообщение # 12 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Цитата Lex89 ( ) Я вообще ничего не затираю, я вставляю новые 4 байта. Как понять? С ума сошел! Т.е. смещаешь весь дальнейший код дальше? Вот и причина. В ROM так работать нельзя - код привязан по адресам. Если ты в середину вставляешь что-то, не поверх, а сдвигая последующий байт-код, ты нарушаешь адресную структуру. Движок игры ссылается на адрес, а на этом адресе уже не будет того, что должно быть, т.к. ты сдвинул код. Ну ты насмешил меня. Я даже не предположил, что ты не знаешь такие простые моменты.
Вот у тебя и хакнутый ром больше, хотя ты не говорил, что расширял...
В том то и дело, что не хватает места. В твоём случае нужно использовать поинтеры. Нужно поставить поинтер и скопировать кусок кода в конце ROM или в какую-нибудь заглушку. И сослаться на него, указав адрес начала куска.
Вот так.
|
|
| |
TLT | Дата: Понедельник, 23.02.2015, 15:07 | Сообщение # 13 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Ищи инфу про ПОИНТЕРЫ - читай, изучай, применяй. В SMD на все 32 мегабита применяй без проблем, а на NES уже такое не прокатит, без понимания банков мапперов... Нужно иметь логику и понимание структуры ROM для тех или иных платформ, понимать особенности архитектуры системы.
Вот так.
|
|
| |
Lex89 | Дата: Понедельник, 23.02.2015, 21:49 | Сообщение # 14 |
Рядовой
Группа: Проверенные
Сообщений: 14
Статус: Оффлайн
| Ну я знал, что глупость делаю, потому и спросил, как это сделать Имя поменять через поинтер проблем не возникает - У игрока конкретного поинтера на набор я найти не могу, ссылка на набор приемов идет в 18-м байте: 01 0B 2A 01 02 52 10 0E 11 0F 0D 0F 10 0E 0F 0F 2D 03 39 06 00 00 Это просто указание "номера" набора приемов. Там наборы записаны друг за другом, и если их "пересчитывать" - то посчитанный набор по порядку будет равен этому самому байту. Всего есть номера 00->0D, любое дальнейшее значение просто отображает набор 0D. Выше всех наборов есть указание на тот байт, с которого наборы приемов заканчиваются. Если его сдвинуть ниже - вместо наборов приемов у игроков начнет показываться какая-то крякозябра. Т.е. "вшит" какой-то конкретный участок (тобишь ограничен границами) в коде под это дело, и конкретных ссылок на нужные байты нет - только этот "номер". Разве что попробовать сдвинуть байты начала и конца вниз, а затем перенести все наборы туда. Попробую на досуге.
А вот, кажется я понял как это работает. Там поинтер выше показывает начало набора. Если его сместить, то можно творить в самом наборе все что захочешь - можно грузить в дефолтные наборы сколько угодно приемов. Но вот способа назначить "порядковый номер" новому набору приемов я так и не нашел. Спасибо за помощь.
Сообщение отредактировал Lex89 - Вторник, 24.02.2015, 00:15 |
|
| |
TLT | Дата: Вторник, 24.02.2015, 03:11 | Сообщение # 15 |
Генералиссимус
Группа: Администраторы
Сообщений: 2367
Статус: Оффлайн
| Решения есть. Читай доки. Применяй.
Вот так.
|
|
| |