Перейти к содержимому
Zone of Games Forum
hitman33333

.info - файл субтитров MI 2: SE

Рекомендованные сообщения

Здравствуйте!

Помогите вскрыть и запаковать субтитры формата .info из Monkey Island 2 SE вот файл

В прогромировании я ни буб-бум =) Вот здесь чел создал прогу для MI 1, но во 2 части структуру поменяли... =( один умный чел, на этом форуме написал:

 

Spoiler

The format of the fr.speech.info is the following:

byte 0-3 : identification data (?)

byte 4-279203 : index table in 32 byte records (8725 entries)

byte 279204- : localization text in pointer text - English original - translation format separated by bytes 00.

The index table's 32 byte records contain pointers to the actual speech file, and to the localization data in this file. Bytes 20-31 contain the three 4-byte reversed pointers, bytes 20-23 for the pointer text (like 'GUY_4_shore_11_1a'), bytes 24-27 for English original (like 'It doesn't seem to open.'), bytes 28-31 for the translation (like 'Зa n'a pas l'air de s'ouvrir.'). Reversed values mean, the actual value of the pointer is byte0+256*byte1+256*256*byte2+256*256*256*byte3. Pointers have an offset which is the position of the first byte in the file. So correct pointers for the n-th item are:

pointer text of the n-th item: (value from the reversed 4 bytes starting at position 4+(n-1)*32+20) + 4+(n-1)*32+20

English original of the n-th item: (value from the reversed 4 bytes starting at position 4+(n-1)*32+24) + 4+(n-1)*32+24

localized text of the n-th item: (value from the reversed 4 bytes at position 4+(n-1)*32+28) + 4+(n-1)*32+28

Where n starts with 1.

Hope it helps.

Я короче супер-пупер СТРАННЫМ способом переводить начал xD xD xD Делал так, открыл en.speech.info Hex Workshop'ом и заменил все 00 (NULL) на 0В 0A(Абзац), сохранил вышел! открыл полученный файл Блокнотом, удалил все оставил только субтитры, они получились вида:

GUY_31_catalog_235_1 - ссыль на звук шоле...

Hey You Kids, Get Off My Lawn - менять низя! железно =)

Hey You Kids, Get Off My Lawn - а вот это сам текст саба, его и менять =)

Сохранил полученое, скопировал все в Exel xD, затем промтом (для проверки) перевел весь .xls и переведеный вариант вставил рядом с оригиналов во второй столбик. После чего в третем столбике поставил команду C1=A1 C2=A2 C3=B3 и потом автоматом применил эту функцию ко всему документу, получилось типа:

GUY_31_catalog_235_1

Hey You Kids, Get Off My Lawn

Эй Вы Обманываете, Выходить из Моей Лужайки

После чего сохраняем, копируем третий столбик в txt и открыв его в HEX меняем 0D 0A на 00. Собственно перевод готов! осталось обратно воткнуть и все! Но здесь загвоздка...

Открываем Hex Workshop'ом новый en.speech.info и заменяем все субтитры на полученный переведеный вариант, сохраняем и запускаем игру! Вуаля, и звук пропал и сабы косячные... =((( Где-то сабы пустые, где-то строки типа "GUY_31_ca", где-то обрывки фраз, типа "черн" "айбрш"" Как выяснилось, все из-за какого-то мну абсолютно неведомого offset'а... как я понял это смещение откуда игре считывать саб... то есть если перевод сделать равным количеством символов, то все должно быть ОГОНЬ Валера =) Ну или какой-нибудь УМНЫЙ человек поможет разобрать прогу для конвертации... Или скажите как в Hex Workshop менять этот offset... =(

з.ы. пробовал менять в NotePad+ Перевод вручную, запускал игру все огонь! но если два субтитра поменять с другой длинной, то все... вместо саба пустота... =(

А то пока многоуважаймые ENPY снизойдут со своим переводом, уже настанет конец света =)

________________________________________________________________________________

___________________________________

ахахахаха! :yahoo: смарите какой у мну русик получился! СУПЕР КРИВОЙ!!! но всеже местами работающий xD xD xD шрифт кстати взял из 1 части вроде как подошли! кому интересно гляньте (перевод промт): http://narod.ru/disk/40084433001/localization.rar.html

Установка, просто разархивируйте в корневик с игрой. А чтобы удалиь "русик" просто удалите файлы xD xD xD

Изменено пользователем hitman33333

Поделиться сообщением


Ссылка на сообщение

под сполером и так все практически расписано

Поделиться сообщением


Ссылка на сообщение
под сполером и так все практически расписано

ну я так и подумал! но я нифига не знаю в кодинге! в нете искал этот offset но ниче практическиприменимого не нашел =( может покажешь пример скрипта, или дай ссль со всем разжжовыванием процесса, был бы очень благодарен!!!

Поделиться сообщением


Ссылка на сообщение

В любом Hex-редакторе приставлена структура любого файла в шестнадцатеричном виде.Один адрес(offset) содержит один байт( byte )

Поделиться сообщением


Ссылка на сообщение

Ну вообще то, обычно используются 4 байт(редко 8) для задания оффсета. В один байт можно записать только число из диапазона 0..255.

Поделиться сообщением


Ссылка на сообщение

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

И по теме, зачем гадить то друг другу? Энпи же уже занимаются переводом, у них сейчас трудности с перерисовкой текстур. Зачем эта самодеятельность?

Изменено пользователем MeteoraMan

Поделиться сообщением


Ссылка на сообщение

Hey You Kids, Get Off My Lawn

Эй Вы Обманываете, Выходить из Моей Лужайки?)))

Клёвый переводчег, чо

Изменено пользователем Буслик

Поделиться сообщением


Ссылка на сообщение
GUY_31_catalog_235_1

Почитав текст под спойлером, я думаю, что это ссылка на текст

bytes 20-23 for the pointer text (like 'GUY_4_shore_11_1a')

Возможно я ошибаюсь.

Вуаля, и звук пропал и сабы косячные... =((( Где-то сабы пустые, где-то строки типа "GUY_31_ca", где-то обрывки фраз, типа "черн" "айбрш"" Как выяснилось, все из-за какого-то мну абсолютно неведомого offset'а... как я понял это смещение откуда игре считывать саб

Offset (офсет) — компенсация за выход из позиции. Обычно говорят, что длинные позиции ликвидируют, а короткие — покрывают.

Типа не даёт возможность читать дальше текст.

Поделиться сообщением


Ссылка на сообщение

да че вы к переводу прикопались? написал же он лишь для примера. Вот если получится все упаковать как надо, то и перевод будет =)

Не могли бы показать где здесь offset или длинна строки? чтоб можно было поменять и текст влазил без обрезаний.

1fff230bc98a5ee72be96a50c4c08df8.jpeg

_________________

А разве самостоятельность это плохо? К тому же конкуренция залог качества! Да к томуже перевод от ENPY естественно будет лучше, а этот вариант будет тем кому не ткрпится, ведь ENPY могут переводить еще год или два... они прям как blizzard =)

Поделиться сообщением


Ссылка на сообщение
да че вы к переводу прикопались? написал же он лишь для примера. Вот если получится все упаковать как надо, то и перевод будет =)

Не могли бы показать где здесь offset или длинна строки? чтоб можно было поменять и текст влазил без обрезаний.

1fff230bc98a5ee72be96a50c4c08df8.jpeg

_________________

А разве самостоятельность это плохо? К тому же конкуренция залог качества! Да к томуже перевод от ENPY естественно будет лучше, а этот вариант будет тем кому не ткрпится, ведь ENPY могут переводить еще год или два... они прям как blizzard =)

от 4 по 279203(00000004-000442a3) располагается таблица индексов или таблица смещений.Берешь по 4 байта переворачиваешь это и есть смещение(offset) которое будеть указывать на начало строки

hitman33333

ты ручками собрался таблицу менять?

Изменено пользователем BumB_32

Поделиться сообщением


Ссылка на сообщение
от 4 по 279203(00000004-000442a3) располагается таблица индексов или таблица смещений.Берешь по 4 байта переворачиваешь это и есть смещение(offset) которое будеть указывать на начало строки

f712375894bf9ebbbc61beca648b2e04.jpeg

изучил начальные байты сопаставил тем что писал чел с ксенакса, получается испльзуется не 4 байта а 32 байта, на всю строчку типа:

GUY_4_shore_11_1a It doesn't seem to open. It doesn't seem to open. а внутри них (32 байтах) идет разделение на загаловок, оригинал. англ и перевод.

Взял как ты сказал первые 4 байта (93BF0300), перевернул их получил 0030FB39 что это не понятно, попробывал перевести в 10 систему получил 3210041 ваще фантастика какая-та. А первый саб по offset идет 00042A3 (279203)... Вот теперь не понятно как правильно исчисляется то...

__________________

ты ручками собрался таблицу менять?

нет конечно как-нить автоматизирую потом =)

__________________

ой, ошибся в переворачивании... получим 03BF93 но все равно по этому адресу нет саба, а все еще идет таблица... в 10 системе 245651 тож слишком большое чило... а вот кстати последние 4 байта из "32-байтника" при переворачивании получается 0442AF почти, но всеже чуть не попадает саб с загаловком начинается с 0442A4... опять не ясно =(

Изменено пользователем hitman33333

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас



Zone of Games © 2003–2025 | Реклама на сайте.

×