Форум

Навигация Форума
Вы должны войти, чтобы создавать сообщения и темы.

Текст

12

https://github.com/Meloman19/PersonaText

Программа уже что-то может. Что собственно:

  • Открывает MSG1 файлы из любого типа файла. (ищет по факту наличия независимо от формата)
  • Текст формирует на основе вашего шрифта и выставленных соответствующих каждому символу знаков (оригинальный английский шрифт с картой символов уже есть, но можно брать своё)
  • Может сохранять полученный текст в текстовый файл. Так же в "Tool -> Extract text from..."  можно извлекать текст сразу из папки или выбранных нескольких файлов.
  • Все строки текста теперь сразу визуализируются. Так же в "Tool -> Text Visualizer" можно не открывая какой-либо файл смотреть, как будет выглядит твой текст с соответствующим шрифтом.
  • И само главное теперь готовый перевод можно запаковывать обратно в MSG1-файл.

 

 

 

3

Возможность обратного экспорта в PM1 не знаю когда реализую. Основная проблема: текст изобилует различными служебными данными: какой звук воспроизводить, какое действие сделать, кто говорит и т.д. Причём всё это вплетено в текст, а не отдельными разделами, что усложняет обратную вставку байтов.

А для чего PM2 и PM3? Может как раз они эту функцию выполняют или участвуют?

Однако того, что есть достаточно, чтобы начать перевод. Так же со временем научу прогу извлекать текст из BF и BMD файлов.

BF это контейнер, в котором лежит BMD (BMD лежит как в открытом виде так и в таких вот бинарниках и контейнерах) с текстом и служебными данными. Экстрактор BF давно написан и работает вроде исправно, экстрактор BMD работает с перебоями (вот пример файла, который он недораспаковывает). Одно ясно, bmd редактируются пока без особых проблем. Также текст лежит в файлах формата ftd.

Загруженные файлы:
  • zxedtDollqk.jpg
0
Цитата: wrr35 от 09.05.2017, 20:10

Возможность обратного экспорта в PM1 не знаю когда реализую. Основная проблема: текст изобилует различными служебными данными: какой звук воспроизводить, какое действие сделать, кто говорит и т.д. Причём всё это вплетено в текст, а не отдельными разделами, что усложняет обратную вставку байтов.

А для чего PM2 и PM3? Может как раз они эту функцию выполняют или участвуют?

Однако того, что есть достаточно, чтобы начать перевод. Так же со временем научу прогу извлекать текст из BF и BMD файлов.

BF это контейнер, в котором лежит BMD (BMD лежит как в открытом виде так и в таких вот бинарниках и контейнерах) с текстом и служебными данными. Экстрактор BF давно написан и работает вроде исправно, экстрактор BMD работает с перебоями (вот пример файла, который он недораспаковывает). Одно ясно, bmd редактируются пока без особых проблем. Также текст лежит в файлах формата ftd.

 

Это всё я и так знаю. Тут дело в другом: понять, как именно BMD файл или по другому MSG1 (в header такое название), расположен в том же BF файле, чтобы извлекать и запаковывать без проблем.

То же самое и с самим BMD файлом. Распаковщик работает с перебоями, потому что, как я уже говорил, в тексте намешаны служебные команды и отчленить их, а потом обратно присобачить - та ещё задачка. И тут проблема в том, что некоторые команды не понятно, что делают и при этом их значение различно в английской и японской версии - это значит, что они завязаны как-то, либо на тексте, либо на чём-то другом. В этом и заключается основная сложность. А так пожалуйста:

 

BDM файл во всей красе.

================================================

HEADER:

4 byte - 0x07000000

4 byte - MSG1 size

8 byte - "MSG1"

4 byte - END BLOCK's position

4 byte - Unknown (Don't changed)

4 byte - Count of MSG

4 byte - Unknown (Don't changed - always "00 00 02 00")

================================================

POINTER BLOCK:

---------------

For Each MSG:

                4 byte - Type of MSG (if 0 then MSG, if 1 then SEL)

                4 byte - MSG's position from POINTER BLOCK's position

---------------

4 byte - NAME BLOCK position from POINTER BLOCK's start position

4 byte - Count of using Name

8 byte - Unknown (fill 0)

================================================

MSG BLOCK:

---------------

For MSG_***:

7 byte - Name of MSG

17 byte - Unknown (Don't changed - always fill 0)

2 byte - Count of Strings

2 byte - Unknown (Don't changed)

For Each String: 4 byte - Unknown (Don't changed, may be link)

4 byte - Size of Strings Block

                ---------------

                STRING BLOCK:

                "F2 05 FF FF F1 41" - Start String

                "F1 21" - End String

                ---------------

                In end add last byte is "00". After that fill with zero to near position divisible by 4.

---------------

For SEL_***

7 byte - Name of MSG

19 byte - Unknown (Don't changed - always fill 0)

2 byte - Count of Strings

4 byte - Fill 0

For Each String: 4 byte - Unknown (Don't changed, may be link)

4 byte - Size of Strings Block

                ---------------

                STRING BLOCK:

                "F2 05 FF FF F1 41" - Start String

                "00" - End String

                ---------------

                In end add last byte is "00". After that fill with zero to near position divisible by 4.

---------------

================================================

NAME BLOCK:

For each Name: 4 byte - Unknown

 

After that starts Names. Name end with "00". After that fill with zero to

0

Meloman19, у меня вопрос по вставке готового текста в .pm1 на текущем этапе. Учитывая необходимость переноса строк, наиболее приемлемым вариантом покамест остается hex-редактор, верно?

0
Цитата: sgtWhite от 10.05.2017, 08:10

Meloman19, у меня вопрос по вставке готового текста в .pm1 на текущем этапе. Учитывая необходимость переноса строк, наиболее приемлемым вариантом покамест остается hex-редактор, верно?

Ну в общем-то да) разве что я ещё могу реализовать получение в битовом виде уже переведённого текста, но вот различные элементы pm1  файла придётся уже вручную считать и вписывать.

0

Тридцать тысяч внутриигровых сообщений (это только .pm1) ручной работы - каждая буква, каждый символ, каждый перенос и пробел. Мне нравится )) Буду набивать, но в данном случае действительно следует принять во внимание бренность бытия. Хотя, если перефразировать Шекли, то, скорее всего, "трудно только первую тысячу строк - потом привыкаешь" ))

0
Цитата: sgtWhite от 10.05.2017, 17:06

Тридцать тысяч внутриигровых сообщений (это только .pm1) ручной работы - каждая буква, каждый символ, каждый перенос и пробел. Мне нравится )) Буду набивать, но в данном случае действительно следует принять во внимание бренность бытия. Хотя, если перефразировать Шекли, то, скорее всего, "трудно только первую тысячу строк - потом привыкаешь" ))

Ну ты погоди ещё набивать - сначала всё переведи, благо готовый текст у тебя уже есть. Нужно доразобрать формат. Можно конечно пытаться вписывать текст на место прошлого, то есть не меняя длины, но зачем загонять себя в такие рамки)

0
Цитата: Meloman19 от 10.05.2017, 17:54

Можно конечно пытаться вписывать текст на место прошлого, то есть не меняя длины, но зачем загонять себя в такие рамки)

Согласен, это вообще не решение.

 

 

0

Программа обновилась. Теперь визуализирует открытый текст. Так же отдельно можно любой свой текст смотреть.

Поможет при составлении шрифта. А так же переводчикам, чтобы имена подгонять под достаточно маленькое поле.

1

Просто камня на камне не оставил ))

0
12

Комментарии запрещены.