| Добавление данных ром | 
|  | 
| 
| Lex89 | Дата: Среда, 18.02.2015, 18:50 | Сообщение # 1 |  | Рядовой Группа: Проверенные Сообщений: 14 Статус: Оффлайн | Нашел нужные данные про набор суперударов (хранятся где-то отдельно) персонажа, их спокойно можно заменять на другие. Пытаюсь добавить дополнительный суперудар (дописываю 4 значения) - ром умирает и больше не запускается. Каким образом нужно организовать добавление данных в ром, дабы избежать крашей? |  |  |  |  | 
| 
| TLT | Дата: Четверг, 19.02.2015, 00:06 | Сообщение # 2 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Можно начать с объявления платформы и игры. Если 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 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Цитата 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 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Ты какой 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 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | 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 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | А что ты затираешь? 
 
   Вот так.
 |  |  |  |  | 
| 
| Lex89 | Дата: Понедельник, 23.02.2015, 11:36 | Сообщение # 11 |  | Рядовой Группа: Проверенные Сообщений: 14 Статус: Оффлайн | Я вообще ничего не затираю, я вставляю новые 4 байта. |  |  |  |  | 
| 
| TLT | Дата: Понедельник, 23.02.2015, 15:04 | Сообщение # 12 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Цитата Lex89 (  ) Я вообще ничего не затираю, я вставляю новые 4 байта.Как понять? С ума сошел! Т.е. смещаешь весь дальнейший код дальше? Вот и причина. В ROM так работать нельзя - код привязан по адресам. Если ты в середину вставляешь что-то, не поверх, а сдвигая последующий байт-код, ты нарушаешь адресную структуру. Движок игры ссылается на адрес, а на этом адресе уже не будет того, что должно быть, т.к. ты сдвинул код. Ну ты насмешил меня. Я даже не предположил, что ты не знаешь такие простые моменты.
 
 Вот у тебя и хакнутый ром больше, хотя ты не говорил, что расширял...
 
 В том то и дело, что не хватает места. В твоём случае нужно использовать поинтеры. Нужно поставить поинтер и скопировать кусок кода в конце ROM или в какую-нибудь заглушку. И сослаться на него, указав адрес начала куска.
 
 
   Вот так.
 |  |  |  |  | 
| 
| TLT | Дата: Понедельник, 23.02.2015, 15:07 | Сообщение # 13 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Ищи инфу про ПОИНТЕРЫ - читай, изучай, применяй. В 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 |  |   Генералиссимус Группа: Администраторы Сообщений: 2393 Статус: Оффлайн | Решения есть. Читай доки. Применяй. 
 
   Вот так.
 |  |  |  |  |