russian ROMhacking
[ Новые сообщения · Участники · Правила форума · Поиск ]
Страница 1 из 11
Форум ромхакеров » Всё о ромхакинге » Ромхакинг » Добавление данных ром
Добавление данных ром
Lex89Дата: Среда, 18.02.2015, 18:50 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Нашел нужные данные про набор суперударов (хранятся где-то отдельно) персонажа, их спокойно можно заменять на другие. Пытаюсь добавить дополнительный суперудар (дописываю 4 значения) - ром умирает и больше не запускается. Каким образом нужно организовать добавление данных в ром, дабы избежать крашей?
 
TLTДата: Четверг, 19.02.2015, 00:06 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Можно начать с объявления платформы и игры. Если NES, то там есть мапперы, там просто так расширять/добавлять нельзя. Если SMD, то пробллем не должно быть, вроде. Поинтеры.


Вот так.
 
Lex89Дата: Четверг, 19.02.2015, 09:34 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Игра на SMD - Tecmo Cup.



FF отделяет наборы суперударов персонажей друг от друга
0C - тип суперудара
41 - сам суперудар
Суперудары идут последовательно без каких-либо разделений.
Вставляю конструкцию 0B 01 38 00 между двумя суперударами или после всех - игра перестает работать. Хеш сумму пробовал фиксить, не помогает.


Сообщение отредактировал Lex89 - Четверг, 19.02.2015, 09:35
 
TLTДата: Суббота, 21.02.2015, 13:14 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Цитата Lex89 ()
Вставляю конструкцию 0B 01 38 00 между двумя суперударами или после всех - игра перестает работать. Хеш сумму пробовал фиксить, не помогает.

ROM не запускается или что-то в процессе игры?
Какой экран показывается, чёрный, синий, красный?
Пробовал вообще любые другие изменения в ROM вносить, там нет защиты на изменение данных?
Пробовал ли вставлять в указанный участок какой-то другой приём, дублируя?
Попробуй заэнопить, заменить на кусок EA.
Возможно, где-то есть проверка, где-то продублированы код, нужно менять во всех участках?
Я уже не говорю про то, что возможны проблемы с особенностями движка игры, возможно ты не так понял функционал этих участков.



Вот так.
 
Lex89Дата: Суббота, 21.02.2015, 18:06 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Цитата TLT ()

ROM не запускается или что-то в процессе игры?
Какой экран показывается, чёрный, синий, красный?
Пробовал вообще любые другие изменения в ROM вносить, там нет защиты на изменение данных?
Пробовал ли вставлять в указанный участок какой-то другой приём, дублируя?
Попробуй заэнопить, заменить на кусок EA.
Возможно, где-то есть проверка, где-то продублированы код, нужно менять во всех участках?
Я уже не говорю про то, что возможны проблемы с особенностями движка игры, возможно ты не так понял функционал этих участков.

Ром не запускается, экран черный. Прием "0B 01 38 00" был скопирован из другого набора. (в обычной игре в некоторых наборах повторы есть) Наборы суперударов меняются только здесь, в данных самих персонажей содержатся лишь имя, характеристики, внешность и ссылка на этот самый набор суперударов.(правда принцип самой ссылки я не совсем понял, но ссылается именно туда). Изменяются данные свободно, можно в любом наборе заменить любой прием на любой из доступных в игре. (ровно как и изменять имена и характеристики персонажей) Но добавить что-то - бесполезно, сразу черный экран. Если например где-то в тексте лишнюю букву приписать, будет та же история.


Сообщение отредактировал Lex89 - Суббота, 21.02.2015, 18:18
 
TLTДата: Суббота, 21.02.2015, 20:40 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Ты какой 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
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Цитата 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
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Lex89, а проблема возникает во всех вариантах ROM или ты только в одном пробовал?
Скинь в тему патч или ROM с изменениями, может кто-то глянет...



Вот так.
 
Lex89Дата: Воскресенье, 22.02.2015, 02:41 | Сообщение # 9
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Проблема во всех вариантах рома.
Вот ром+хакнутый нерабочий вариант.
Изменено вот здесь:

(добавляем прием 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
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
А что ты затираешь?


Вот так.
 
Lex89Дата: Понедельник, 23.02.2015, 11:36 | Сообщение # 11
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Я вообще ничего не затираю, я вставляю новые 4 байта.
 
TLTДата: Понедельник, 23.02.2015, 15:04 | Сообщение # 12
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Цитата Lex89 ()
Я вообще ничего не затираю, я вставляю новые 4 байта.

Как понять? С ума сошел! Т.е. смещаешь весь дальнейший код дальше? Вот и причина. В ROM так работать нельзя - код привязан по адресам. Если ты в середину вставляешь что-то, не поверх, а сдвигая последующий байт-код, ты нарушаешь адресную структуру. Движок игры ссылается на адрес, а на этом адресе уже не будет того, что должно быть, т.к. ты сдвинул код. Ну ты насмешил меня. Я даже не предположил, что ты не знаешь такие простые моменты.

Вот у тебя и хакнутый ром больше, хотя ты не говорил, что расширял...

В том то и дело, что не хватает места. В твоём случае нужно использовать поинтеры. Нужно поставить поинтер и скопировать кусок кода в конце ROM или в какую-нибудь заглушку. И сослаться на него, указав адрес начала куска.



Вот так.
 
TLTДата: Понедельник, 23.02.2015, 15:07 | Сообщение # 13
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Ищи инфу про ПОИНТЕРЫ - читай, изучай, применяй. В SMD на все 32 мегабита применяй без проблем, а на NES уже такое не прокатит, без понимания банков мапперов... Нужно иметь логику и понимание структуры ROM для тех или иных платформ, понимать особенности архитектуры системы.


Вот так.
 
Lex89Дата: Понедельник, 23.02.2015, 21:49 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 13
Статус: Оффлайн
Ну я знал, что глупость делаю, потому и спросил, как это сделать smile
Имя поменять через поинтер проблем не возникает -

У игрока конкретного поинтера на набор я найти не могу, ссылка на набор приемов идет в 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
Генералиссимус
Группа: Администраторы
Сообщений: 1666
Статус: Оффлайн
Решения есть. Читай доки. Применяй.


Вот так.
 
Форум ромхакеров » Всё о ромхакинге » Ромхакинг » Добавление данных ром
Страница 1 из 11
Поиск: