Автор Тема: [3DS] Luigi Mansion  (Прочитано 4214 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн .:SapiK:.

  • Пользователь
  • Сообщений: 49
  • Пол: Мужской
    • Просмотр профиля
[3DS] Luigi Mansion
« : 18 Ноябрь 2020, 09:59:55 »
Всем привет. Решил попробовать свои силы в хаке и переводе данной игры, ресурсы нашел, текст лежит в открытом виде, файл со шрифтом так же найден, но не могу его правильно отобразить и соответственно экспортировать. Может у знающих людей найдется минутка глянуть, подсказать. Заранее благодарен.






Оффлайн Zetper

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
  • Потерянный в пустоте
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #1 : 18 Ноябрь 2020, 10:44:38 »
А как полностью называется программа который ты просматриваешь картинку на первом фото ?

Оффлайн .:SapiK:.

  • Пользователь
  • Сообщений: 49
  • Пол: Мужской
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #2 : 18 Ноябрь 2020, 11:27:19 »
Zetper, вот https://github.com/IcySon55/Kuriimu тулкит в его составе утилита kukki.

Сейчас нашел в файле шрифта русские буквы...  0_0


Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #3 : 19 Ноябрь 2020, 07:19:00 »
Осталось посмотреть немецкий или ещё какой текст и выяснить, какие коды используются для расширенной латиницы и посчитать, какие для кириллицы.
Чисто теоретически, это вполне может быть UTF.
Ну и с поинтерами разобраться.
Попробуй программу autodump и автоматический поиск поинтеров.
http://coreline.su/#soft/

Оффлайн .:SapiK:.

  • Пользователь
  • Сообщений: 49
  • Пол: Мужской
    • Просмотр профиля
Re: [3DS] Luigi Mansion
« Ответ #4 : 19 Ноябрь 2020, 12:14:05 »
lupus, Спасибо большое, в игре действительно юникод, русские символы занимают в два раза больше места. Разбираюсь с Autodump, вот что выдает после поиска, текст находится в каждой четвертой строке, можно ли как-то автоматизировать его выбор или только руками проставлять?

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #5 : 19 Ноябрь 2020, 15:29:29 »
Судя по приложенному скрину, поинтеры распознались неверно.
Выложи сюда лангпак, посмотрю, что с ним можно сделать.

Оффлайн .:SapiK:.

  • Пользователь
  • Сообщений: 49
  • Пол: Мужской
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #6 : 19 Ноябрь 2020, 15:32:34 »
lupus, спасибо.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #7 : 20 Ноябрь 2020, 15:45:30 »
.:SapiK:., завтра гляну.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #8 : 21 Ноябрь 2020, 14:40:29 »
Глянул я твой лангпак. К сожалению, автодамп его не переварил, хотя формат хранения текста довольно простой.
Текст начинается с 0xe40c, поинтеры на него лежат в интервале 0x5bb4-0xe404. Сами поинтеры 4 байта с интервалом 0x10.
Если какие-то знания в ромхакинге у тебя есть, то этого +/- должно хватить, чтобы извлечь текст.
Как вариант, можно создать проект для круптара, но для этого придутся составить таблицу всех используемых символов и управляющих команд. Ну, или ловить MetLob'а и просить написать плагин к автодампу для работы с текстом в твоей игре.
Очень "грязный" дамп текста во вложении.

Upd:
Ещё не сказал, например последовательность 0x7F00080000000E000000 означает, что в этом месте нужно показать иконку <домик> (строка "Press <домик> to return to HOME Menu"
0x7F000800000001000000 - скорее всего <кнопка Start>
Строка заканчивается на 0x7f или 0x7f00. И, скорее всего есть какое-то выравнивание строк по адресам, т.к. разное количество 0x00 между строками.
« Последнее редактирование: 21 Ноябрь 2020, 14:55:35 от lupus »

Оффлайн .:SapiK:.

  • Пользователь
  • Сообщений: 49
  • Пол: Мужской
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #9 : 23 Ноябрь 2020, 11:10:09 »
lupus, спасибо за дамп текста, адреса поинтеров, потихоньку перевожу дамп, попутно пытаюсь освоить круптар 7. Проект создал, указал адреса текста, поинтеров, таблицы, но все же текст выводиться не корректно, буду разбираться. Почему-то съедается первый символ в каждой строке. Еще раз спасибо.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #10 : 23 Ноябрь 2020, 12:14:25 »
Помог, чем смог.

Оффлайн MetLob

  • Пользователь
  • Сообщений: 14
  • Пол: Мужской
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #11 : 27 Ноябрь 2020, 17:44:48 »
Ну, или ловить MetLob'а и просить написать плагин к автодампу для работы с текстом в твоей игре.
Очень "грязный" дамп текста во вложении.

Я, видимо, сам поймался...

Вот маленький ликбез к созданию проекта АвтоДампа, если поинтеры содержат размер строки.

Сначала настраиваем тип поинтеров:


Здесь таблица поинтеров начинается с 0x5BAC. Размер элемента таблицы с указателем = 16.
Сначала идут номер сообщения (4 байта), затем неизвестные 4 байта, затем оффсет (абсолютный), затем размер данных сообщения.
Поэтому выставляем параметры так:


Затем открываем файл, выбирая Дефолтный плагин. Обязательно открываем диалог с выбором указателей.
Автоматический поиск указателей ищет поинтеры (с сопутствующей инфой), размером в 16 байт. Ищет он с 0, 16, 32 и т.д., а наши указатели начинаются с позиции, кратной 12 (x5BAC), следовательно внизу, как на скрине, необзходимо проставить 12 (нажать ентер).


После этого АД автоматически найдет область с указателями. Всегда нужно проверять, верно ли он нашел, но для этого файла он справился.

После открытия файла, как уже было замечено, текст перемешан с множеством служебных кодов.
Каждый код начинается с байта 7F.
Затем у каждого кода есть продолжение: собственно код команды (2 байта):
0000 - окончание сообщения (очистка экрана)
0100 - перенос
0200 - ожидание нажатия кнопки
0800 - различные кнопки
0E00 - неизвестный мне (используется в строке Vs. <код>)
0F00 - число
1100 - переход на другое сообщение
1500 - смена цвета
1900 - кнопки L/R

Это все основные команды. Но у некоторых команд есть и параметры (4 байтовые значения):
0800: 01000000 - кнопка A
0800: 02000000 - кнопка B
0800: 03000000 - кнопка X
0800: 04000000 - кнопка Y
0800: 05000000 - кнопка ←
0800: 06000000 - кнопка →
0800: 0C000000 - Circle PAD
0800: 0D000000 - START
0800: 0E000000 - HOME
1900: 07000000 05000000 - кнопка L
1900: 08000000 06000000 - кнопка R

0F00: 00000000 - количество призраков
0F00: 01000000 - количество золота

1500: 01000000 - GREEN
1500: 02000000 - RED
1500: 03000000 - YELOW
1500: FFFFFFFF - WHITE

Необходимо создать таблицу декодирования (как вставлять, есть в документации)
Но вот тут есть проблемки формата, а именно в дурацком выравнивании:
1) Сам байт начала команды (7F) расположен в любом месте (без выравнивания)
2) Каждый КОД команды выравнивается по своему размеру: 2.
3) Каждый ПАРАМЕТР команды выравнивается по своему размеру: 4.

Отсюда получаем, что после 7F может идти 1 байт нуля, если 7F стоит на ЧЕТНОМ месте,
а после КОДА команды - иногда добавляется 2 нулевых байта, чтобы параметры начинались с позиции, кратной 4.

Я создал такую вот таблицу декодирования (в качестве переноса в АД проставил 0100):
7F0000=<END>
7F00=<#0>
7F=<#>
0200=<BTN>
080001000000=<A>
0800000001000000=<0\A>
080002000000=<B>
0800000002000000=<0\B>
080003000000=<X>
0800000003000000=<0\X>
080004000000=<Y>
0800000004000000=<0\Y>
080005000000=<←>
0800000005000000=<0\←>
080006000000=<→>
0800000006000000=<0\→>
08000C000000=<CPAD>
080000000C000000=<0\CPAD>
08000D000000=<START>
080000000D000000=<0\START>
08000E000000=<HOME>
080000000E000000=<0\HOME>
19000700000005000000=<L>
190000000700000005000000=<0\L>
19000800000006000000=<R>
190000000800000006000000=<0\R>

0E0000000000=<UNK>
0F0000000000=<GHOSTS>
0F00000000000000=<0\GHOSTS>
0F0001000000=<GOLDS>
0F00000001000000=<0\GOLDS>

1100,2=<GOTO>

150001000000=<GREEN>
1500000001000000=<0\GREEN>
150002000000=<RED>
1500000002000000=<0\RED>
150003000000=<YELOW>
1500000003000000=<0\YELOW>
1500FFFFFFFF=<WHITE>
15000000FFFFFFFF=<0\WHITE>

В этой таблице я сделал по 2 команды на 1 (с добавочными нулями и без):
Например, <#> в тексте будет означать 7F, а <#0> - 7F00.
<0\HOME> будет означать, что перед параметром команды 0800 будут два нуля: 0800 0000 E000000
При изменении текста нужно следить за нулями: просто добавляя или удаляя "0\" из команды.

В этом случае краша в игре не должно быть. Знаю - муторно, но это все, что я мог сделать на скорую руку.
При более тесном сотрудничестве смогу легко написать тулзу, которая будет фикстить бинарный файл на эти нули. Тогда проблема слежения за позицией байта будет не актуальна.

ПС: проект для АД во вложении

Оффлайн MD.Haus

  • Пользователь
  • Сообщений: 61
  • Пол: Мужской
  • Иисус жив , Ленин жив , Цой жив , Джексон жив
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #12 : 26 Апрель 2021, 10:56:05 »
lupus, спасибо за дамп текста, адреса поинтеров, потихоньку перевожу дамп, попутно пытаюсь освоить круптар 7. Проект создал, указал адреса текста, поинтеров, таблицы, но все же текст выводиться не корректно, буду разбираться. Почему-то съедается первый символ в каждой строке. Еще раз спасибо.
Привет! Я тоже хочу поучаствовать в переводе! Опыта ноль, но есть желание!может спишемся и займемся на пару?

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #13 : 26 Август 2021, 06:47:53 »
Доброе утро, есть ссылка, как китайцы перевели данную игру https://xzonn.top/posts/Luigi-Mansion-Chinese-Localization.html
Я ток не понял как они файл шрифта обработали. Что такое LA44?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #14 : 26 Август 2021, 07:21:15 »
Что такое LA44?
Это формат изображения. В Kuriimu открыть Kukkii, а там File > Open Raw Image можно выбрать Format. L (luminance) - оттенки серого (чёрно-белое), A (alpha) - прозрачность, значит 4 бита на оттенки серого и 4 бита на прозрачность. Задаются в программе: ImageFormats.cs, LA.cs, LaPixelDescriptor.cs.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #15 : 26 Август 2021, 17:16:48 »
Там же кириллица встроенная, вроде, не?

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #16 : 26 Август 2021, 22:18:59 »
Там же кириллица встроенная, вроде, не?
Судя по статье выше, скорее всего нет:

Библиотека шрифтов в этой игре хранится в /Region_JP/Fonts/main.gzfи/Region_JP/Fonts/location.gzf.Файл можно открыть с помощью программного обеспечения Kukkii серии Kuriimu.,Но на картинке ошибка.Проанализировав исходный код, было обнаружено,Изображение файла шрифта необходимо принудительно LA44отформатировать,В этом формате изображения в библиотеке шрифтов можно экспортировать как обычно..в то же время,Воспользуйтесь преимуществами поддержки формата GZF в исходном коде Kukkii,Я получил место хранения всех символьных данных,И извлеките с помощью скрипта Python.

тем не мение,Возникла проблема с процессом импорта:Игра не считывает смещение изображения, хранящееся в файле,Но 0x1780данные изображения при чтении по умолчанию.следовательно,Это ограничивает количество символов, которые шрифт может хранить.,Т.е. 496.

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #17 : 26 Август 2021, 22:22:35 »
при попытке открытия файла получается чушь даже после форматирования LA44. В чем соль?

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7393
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #18 : 26 Август 2021, 22:54:30 »
В чем соль?
нууууууууу, соль обычно в солонке... :crazy:

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #19 : 27 Август 2021, 20:08:46 »
lupus, Да действительно.... шрифт присутствует... только в одно файле
« Последнее редактирование: 27 Август 2021, 20:16:08 от Romanbb »

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #20 : 29 Август 2021, 12:57:04 »
Доброго дня, распаковал ever oasis взял main.gzf (шрифт гораздо более обширный), написал пару слов на русском в файле main.gmsg. Но игра в упор не видит великий и могучий(((( Подозреваю что нужно игру научить брать именно русские буквы... как то.... как это сделать? может кто знает ?

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #21 : 29 Август 2021, 16:07:59 »
Так русский каким-нибудь юникодом или utf должен быть.
Выше MetLob писал, чем и как текст редактировать.

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #22 : 21 Сентябрь 2021, 22:59:16 »
Так русский каким-нибудь юникодом или utf должен быть.
Выше MetLob писал, чем и как текст редактировать.

Этот метод не работает.Текст просто отсутствует(((( Что я делаю не так?

Оффлайн Romanbb

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #23 : 22 Сентябрь 2021, 20:08:48 »
Разобрался...
« Последнее редактирование: 22 Сентябрь 2021, 20:17:26 от Romanbb »

Оффлайн caninosvermelhos

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #24 : 23 Февраль 2022, 00:30:21 »
Разобрался...

Упс, и привет, ребята, извините, я открываю этот пост через некоторое время, я пытаюсь найти ту же игру для pt-br, я пытался найти этот инструмент, который вы упомянули, под названием autoDump, но безуспешно, не могли бы вы помочь мне с инструментами, чтобы я мог начать локализацию?
Извините за мой странный русский, я использую переводчик

Добавлено позже:
Разобрался...
Как вы исправили это отсутствие текста на экране? я столкнулся с той же проблемой
« Последнее редактирование: 23 Февраль 2022, 02:34:48 от caninosvermelhos »

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7393
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #25 : 24 Февраль 2022, 03:48:53 »
я пытался найти этот инструмент, который вы упомянули, под названием autoDump, но безуспешно
http://coreline.su/#soft/

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 205
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #26 : 24 Февраль 2022, 05:33:49 »
Сайт только через VPN открывается. Конспираторы  :cop:

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #27 : 24 Февраль 2022, 22:26:08 »
Сайт только через VPN открывается. Конспираторы  :cop:
Без всяких впн. Вопросы к провайдеру…

Оффлайн caninosvermelhos

  • Пользователь
  • Сообщений: 3
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #28 : 25 Февраль 2022, 04:10:42 »
Спасибо, понял, но не могу импортировать перевод, когда меняю файлы, они все пустые, наверное какая-то проблема с id или указателями, этот проект работает с каким регионом игры? или это не имеет значения?

Я очень хочу локализовать эту игру, потому что я уже локализую особняки Луиджи 3 и 2 для бразильского португальского языка.

Оффлайн lupus

  • Пользователь
  • Сообщений: 3812
  • Пол: Мужской
  • man with no face
    • ВКонтакте
    • Просмотр профиля
[3DS] Luigi Mansion
« Ответ #29 : 25 Февраль 2022, 11:14:24 »
caninosvermelhos, try to understand post from MetLob upper on this page.