Разработка и ромхакинг > Ромхакинг
Вопросы новичков
<< < (7/22) > >>
Беларус:
Пипец. Российский продукт, а родные буковки не поддерживает o_0
Багованность Иды не знает границ. Не удивлюсь, если у Гидры такой проблемы нет.
LostHotDog:
как включить netplay?
drksnc:
Здравствуйте. К ромхакингу отношусь буквально никак, но вот задался вопросом о небольшом графическом хаке для Streets of Rage 2. Хотелось бы заменить картинки в начальной заставке и в концовке. Как я понял, есть два варианта решения:
1) Найти в роме сжатые тайлы, разжать, каким-то образом из этих тайлов собрать картинку и заменить её, при этом, как я понимаю, мне придется мириться с ограничениями оригинальной палитры.
2) Добавить куда-то в конец рома свой набор тайлов, найти в роме код, который указывает на оригинальные тайлы и заменить указатель на свой. Как при этом сделать свою палитру я не очень представляю.
Пока что я мучаю первый вариант, причем достаточно безуспешно в плане поиска оффсета для нужных мне тайлов. Портреты персонажей чисто из спортивного интереса заменить получилось, но вот дальше дело не идёт. В интернете ничего не нашел по поводу того как именно искать оффсеты, через TileMolester пытался искать какие-то паттерны в роме, но сжатые тайлы лежат просто в рандомных местах. Причем, все хаки что я потыкал имеют неизмененные интрухи и концовки, а в утилите для декомпрессии захардкожены оффсеты только под тайтл скрины и портреты, что наталкивает на мысль что задача это нетривиальная, либо просто особо никому ненужная. ) В любом случае, прошу посильной помощи и извиняюсь за возможно неправильную терминологию.
Беларус:
Разве в этом хаке не изменены?


Или ты про город и Мистера Икс над ним?
drksnc:

--- Цитата: perfect_genius от 10 Октябрь 2022, 12:43:12 ---Разве в этом хаке не изменены?
Или ты про город и Мистера Икс над ним?

--- Конец цитаты ---
Спасибо, этот хак я пропустил, смотрел другой с черепахами, а этот скипнул. Посмотрю. Но город и мистера Икса тоже было в планах заменить.
Nik Pi:
drksnc, попробуй найти этих людей, которые хакали игру, спроси у них. Поди, на ромхакинг.нет сидят. Может и утилиту какую-нить подгонят  ;)
drksnc:
Получилось найти оффсет через трейслог и заменить тайлы. Есть баги, но они понятные, нужно подменять тайлы. Честно говоря, так и не нашел никакого способа сбора мозайки, так что наделал своих костылей в виде утилиты, которая сравнивает цвета тайлов в мозайке и блоков 8х8 уже в готовой картинке, таким образом получил маску, наложив которую на картинку того же разрешения можно получить тайлсет. Всем спасибо за наводки, автор хака с черепашками дал ссылку на свой блог, что очень помогло.
anikeev.alexandr:

--- Цитата: perfect_genius от 20 Август 2022, 10:34:04 ---anikeev.alexandr, вот турнирный хак, где выход из боя сделан на Mode. Нужное тебе изменение можно найти вручную двоичным поиском отсекая: вставляешь половину оригинального рома и смотришь, на какой половине оказался нужный код. Снова делишь ту половину на половину...
Или найди патчер, дающий выбирать какие из изменений вносить. Так должно быть легче найти.
--- Конец цитаты ---

perfect_genius, огромнейшее спасибо за Вашу помощь и извиняюсь за очень долгую задержку! Скинутый Вами РОМ-файл - это то, что мне и было нужно! Буду пользоваться! :)
Vertigo:
Добрый день.
Мне посоветовали обратиться сюда за помощью, надеюсь, что пишу в нужной теме.

Я пробую свои силы в редактировании текста в игре Animal Crossing Wild World на Nintendo DS. На данный момент получилось отрисовать кириллицу для текста и внутриигровой клавиатуры, сделать табличные файлы, также переведены и вставлены в игру некоторые небольшие файлы (имена персонажей, некоторые меню). Но с крупным переведённым текстом возникает проблема - он через несколько диалоговых окон зависает.
Текстовые файлы находятся в формате bmg, сжаты lz77. Крупные тексты при декомпрессии разделяются на несколько bin файлов, из которого собираю один целый.
Далее при помощи Cartographer получаю текст в txt (вместе с управляющими кодами), перевожу, далее при помощи Atlas пересчитываю указатели и вставляю новый текст.
Переведённый файл сжимаю обратно lz77, прописываю заголовок и при помощи Tinke вставляю в ром.

Я явно что-то делаю не так, но не могу разобраться, что именно. Что можно попробовать сделать или что почитать в таком случае? Пока подозреваю, что проблема со сжатием переведённого файла обратно - пробовала таким же образом распаковать и сжать оригинальный английский файл, также на том же месте зависает игра.

Прошу прощения, если моё сообщение выглядит сумбурно.

Программы, которые использую:
Tinke - просмотр файловой системы рома, редактирование
CrystalTile2 - просмотр и редактирование данных рома, распаковка и сжатие
ButchLZ77 - тоже распаковка и сжатие, но не всегда работает
HexWorkshop - хекс-редактор
Cartographer - извлечение исходного текста
Atlas - вставка изменённого текста
Kruptar 7.11 - тоже извлечение и вставка текста, но текст с управляющими кодами у меня корректно вывести не получается
Эмулятор - MelonDS, также есть Nintendo DS Lite
Sharpnull:

--- Цитата: Vertigo от 24 Февраль 2023, 16:09:13 ---Переведённый файл сжимаю обратно lz77, прописываю заголовок
--- Конец цитаты ---
В заголовке правильно указываете размеры? Здесь что-то про это: https://gbatemp.net/threads/acww-text-compression.335270/#post-4410911. Сжатие нужно тоже проверить, например: сжать оригинальный текст и сравнить с оригинальным сжатым файлом с этим текстом, в идеале должно совпасть, но иногда сжатие от разработчиков сделано хуже, чем от ромхакеров (у меня такое было с серией Sonic, которые в 3D) или наоборот, есть много корявых программ от ромхакеров, где могут быть ошибки сжатия иногда.
Yoti:

--- Цитата: Vertigo от 24 Февраль 2023, 16:09:13 ---пробовала таким же образом распаковать и сжать оригинальный английский файл, также на том же месте зависает игра
--- Конец цитаты ---
Без изменений файла?
Vertigo:

--- Цитата: Sharpnull от 24 Февраль 2023, 16:47:14 ---В заголовке правильно указываете размеры? Здесь что-то про это: https://gbatemp.net/threads/acww-text-compression.335270/#post-4410911. Сжатие нужно тоже проверить, например: сжать оригинальный текст и сравнить с оригинальным сжатым файлом с этим текстом, в идеале должно совпасть, но иногда сжатие от разработчиков сделано хуже, чем от ромхакеров (у меня такое было с серией Sonic, которые в 3D) или наоборот, есть много корявых программ от ромхакеров, где могут быть ошибки сжатия иногда.

--- Конец цитаты ---
Эту тему на ГБАтемпе тоже смотрела, она мне в целом помогла понять структуру заголовка для небольших файлов. Размеры новые указываю, если укажу неверно, то игра уже при запуске логотипа Нинтендо "подавится" файлом.
У меня в файле sequence3.bmg заголовок выглядит так:
h4C5A3737F7 - подпись LZ77÷
h202400 - размер несжатого файла (т.е. переворачиваю h002420 = d9248 байт)
Далее идут байты размеров сжатых частей(?)
DC08
C811
8E14
Если отнять прибавить длину заголовка сжатия (в примере на гбатемпе было 0A, в моём случае это 0Е), то полученное значение будет началом следующей сжатой части файла.
И далее 10001000 - первые 2 байта указывают тип сжатия, следующие - размер несжатой части (4096 байтов).Но я себя еще раз перепроверю.

С оригинальным текстом я пробовала сжатие делать, не всё совпадает. Пробовала обе программы для распаковки и сжатия, а также два формата: LZ77 и LZ77 vram safe (последний тоже рекомендовали на гбатемпе).


У меня почему-то не выходит вложением прикрепить оригинальный сжатый файл, даже зип архивом, выдаёт ошибку. Надеюсь, что можно ссылкой: https://dropmefiles.com/E4imy

--- Цитата: Yoti от 24 Февраль 2023, 17:04:14 ---Без изменений файла?

--- Конец цитаты ---
Да, текст внутри не меняла

Добавлено позже:

--- Цитата: Vertigo от 24 Февраль 2023, 17:43:08 ---Но я себя еще раз перепроверю.

--- Конец цитаты ---
Нашла у себя ошибку в расчетах, теперь и английский текст вступления , и русский текст не зависают. Впредь буду внимательнее проверять свои расчёты. :)
Надеюсь, что проблема больше не побеспокоит, большое спасибо за ответы
FireFox Фан:
Доброго времени суток!

Напомните, чем открыть и заменить графику в NES\FDS и GB(C)?
Nik Pi:

--- Цитата: FireFox Фан от 03 Март 2023, 19:00:46 ---Доброго времени суток!

Напомните, чем открыть и заменить графику в NES\FDS и GB(C)?

--- Конец цитаты ---
Tie Molester/Tile Layer Pro/FaTilety в зубы, и ищи не запакованную графику
Turbo2000:
Привет, пробую отладчик (gensida для Ida pro), можете помочь разобраться, может что не так с ромом, но он рабочий.
Во время отладки попадаю вот в такой бесконечный цикл (Самое интересное, что Ghidra это кусок кода точно так же интерпретирует)
 Screenshot 2023-03-20 225850.png (21.55 КБ. 828x178 - просмотрено 128 раз.)
Ghidra
 Screenshot 2023-03-20 230318.png (92.05 КБ. 1909x740 - просмотрено 121 раз.)
Но если поставить точку прерывания по адресу FE0, то тоже вывозится.
Смотрю регистры, и память, там одинаковые значения, и никак не выходит из цикла.
Подскажите, пожалуйста,
Версия Ghidra 10.1.5
Версия Ida Version 7.7.220118 Windows x64 (32-bit address size)

Добавлено позже:

--- Цитата: Turbo2000 от 20 Март 2023, 22:07:54 ---Привет, пробую отладчик (gensida для Ida pro), можете помочь разобраться, может что не так с ромом, но он рабочий.
Во время отладки попадаю вот в такой бесконечный цикл (Самое интересное, что Ghidra это кусок кода точно так же интерпретирует)
(Ссылка на вложение)
Ghidra
(Ссылка на вложение)
Но если поставить точку прерывания по адресу FE0, то тоже вывозится.
Смотрю регистры, и память, там одинаковые значения, и никак не выходит из цикла.
Подскажите, пожалуйста,
Версия Ghidra 10.1.5
Версия Ida Version 7.7.220118 Windows x64 (32-bit address size)

--- Конец цитаты ---

Это какая-то ловушка или защита рома, или просто ошибка диззасмеблирования?
Марат:
А что не так? Он ожидает пока что-то извне изменит память по адресу ffe006.
Это может быть одно из прерываний процессора: строчное, кадровое, переферийное(джойстик).
Беларус:
В Дюне, вроде как, две копии игры в роме же? Не может ли быть так, что он попал в неработающую половину с какими-то его багами? :lol:
Turbo2000:

--- Цитата: perfect_genius от 21 Март 2023, 00:30:34 ---В Дюне, вроде как, две копии игры в роме же? Не может ли быть так, что он попал в неработающую половину со какими-то его багами? :lol:

--- Конец цитаты ---
Да, это версия Dune - The Battle for Arrakis (U) [!].gen, не самый лучший кандидат для исследования?
Turbo2000:

--- Цитата: Марат от 20 Март 2023, 22:34:54 ---А что не так? Он ожидает пока что-то извне изменит память по адресу ffe006.
Это может быть одно из прерываний процессора: строчное, кадровое, переферийное(джойстик).

--- Конец цитаты ---
То есть это просто ожидание на прерывание?
Тогда все понятнее. Но дождаться прерывание нет возможности, попадает в бесконечный цикл при отладке.
А здесь в чем смысл?

Судя по дебаггеру, A3 указывает на начало видео памяти, D0 пуст, D4 пару десятков, и получается, что постоянно пишется 0 в начало видеопамяти.
При этом регистры A3 и D0 никак не меняются, чего здесь я не понимаю, тоже могут быть изменения извне? Где про это можно почитать?
Марат:
Обнуление какого-то места в видеопамяти. В a3 порт данных видеопамяти.  Он не в начало пишет. Адрес указывается изначально через адресный порт видеопамяти $C00000. после каждой записи адрес автоинкрементируется внутри видеопамяти. Здесь есть довольно много интересной информации http://tv-games.ru/media/open/igrovie_pristavki_remont.html
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии