Локализация Tomb Raider для Nokia N-Gage
#1
Отправлено 23 December 2017 - 02:20
#2
Отправлено 29 December 2017 - 18:42
Теперь немного о самой версии для N-Gage:
Как выяснилось, мы имеем дело с прямым консольным портом, выходившим на PlayStation 1, который сильно порезали в плане озвучки голосов и видеороликов, судя по всему, для экономии места и возможности впихнуть игру на носитель объёмом 16 мегабайт. В остальном, это всё та же самая игра, со всеми вытекающими.
продолжу чуть позже.
Пост, оказывается, тоже не могу редактировать :/
Продолжу:
Поскольку версия Tomb Raider для N-Gage - прямой порт с PSX, в ней сохранился т.н. Last Secret Bug, который (после распаковки контейнера) успешно исправляется патчером для ps1 версии.
Теперь немного о самой игре, отличиях и где что лежит.
Упаковка данных:
В game_data.dz упакованы .psx файлы идентичные таковым, вытянутым мной из PS1 US версии TR, что подтвердил HXD при сравнении файлов.
CUT1.PSX CUT2.PSX CUT3.PSX CUT4.PSX GYM.PSX LEVEL1.PSX LEVEL10A.PSX LEVEL10B.PSX LEVEL10C.PSX LEVEL2.PSX LEVEL3A.PSX LEVEL3B.PSX LEVEL4.PSX LEVEL5.PSX LEVEL6.PSX LEVEL7A.PSX LEVEL7B.PSX LEVEL8A.PSX LEVEL8B.PSX LEVEL8C.PSX TITLE.PSXОрганизация данных аналогична таковой в ПК версии, основное отличие (в плане подхода к переводу) - текстуры, в т.ч. шрифтов, 4 битные. В сети я даже нашёл конвертер PHD->PSX, не без помощи которого на консоль было перенесёно дополнение Unfinished Business. Однако, текстуры он не конвертирует.
Ссылка: http://www.tombraide...ad.php?t=194134
Пересобирая game_data.dz я поэкспериментировал со степенью сжатия данных и убедился, что от степени компрессии напрямую зависит время загрузки. С минимальным сжатием размер архива вырос до ~13 мегабайт, а время загрузки первой локации уменьшилось с ~9 до ~5 секунд.
Имеем:
1. Исправление бага
2. Уменьшение времени загрузки
3. + 6mb занимаемого места на карте памяти.
Шрифты:
Поскольку, главная цель всего этого - русификация, я стал смотреть в сторону уже существующих переводов, которые выходили для PS1. Судя по отзывам, лучший из них был от студии "Лисы", которые отличались от локализаторов того времени более высоким качеством своих работ.
Беглый осмотр данных в тайловом редакторе подтвердил то, что писали в отзывах. Кириллический шрифт хоть и не содержал строчных букв, зато заглавная кириллица отрисована вся, кроме "Ё" и "Ъ". В других же версиях, авторы не заморочились с тем, чтобы нарисовать "Щ", "Ё", "Й". Подозреваю, что и перевод текста у них на том же уровне...
В идеале, конечно было бы нарисовать весь наш алфавит с нуля, но я столкнулся с тем, что:
1. Шрифт повторяется в каждом файле.
2. Глифы меняют своё расположение (подозреваю, что их карта хранится где-то рядом)
3. Каждый глиф имеет собственную палитру, потому, даже перерисовав попиксельно каждую букву очень сложно получить соответствующие цвета в игре. Буквы на экране разного оттенка.
4.Всем известно, что в латинице сильно меньше букв, чем в кириллице, и трезво оценивая свои знания и навыки, я понимаю, что добавить недостающие глифы я не сумею. Из более или менее простых решений задачи нехватки места под весь алфавит в голову пришла идея отфильтровать в переведённом тексте все заглавные буквы, которые не будут использоваться и пожертвовать ими во благо остальных.
5. Следующей особенностью версии для N-Gage является низкое разрешение экрана, всего 176х208 пикселей. 176 пикселей ширины! Если то пересчитать на количество символов в строке, опираясь на ТЕКУЩИЙ ШРИФТ, В КОТОРОМ ТОЛЬКО КАПС (тот самый, из перевода от "Лис"), то это не более 14 знаков на строку.
Например для реплики Лары в самом начале игры "Добро пожаловать ко мне домой." выделено всего 2 строки и в текущем виде мы не видим всего текста, т.к. слева и справа он уходит за рамки видимого экрана. Что является очередным поводом полностью переделать шрифт с учётом особенностей платформы и упростить+заузить символы дабы свести к минимуму головную боль с подгонкой текста под эти ограничения, и получить максимально качественный перевод, благо есть на что равняться.
6. Пожалуй, самая главная на текущий момент проблема - это та самая таблица ширины глифов, которая хранится в исполняемом файле. Точнее, даже не она, а сам файл.
Игра была в своё время отвязана от оригинального носителя командой blz-pda. Смею предположить, что они "прикрутили" некий лоадер, заменив им оригинальный исполняемый файл tombraider.app, а оригинальный переименовали в tombraider.nax, применив при том сжатие, что-то zlib-подобное, из-за чего я не могу отредактировать эту самую таблицу. В оригинальном файле она нашлась без проблем, но алгоритм защиты от копирования не позволяет его запустить.
Имеем:
1. Кириллический шрифт от "пиратов".
2. Головную боль с приведением шрифта к "нормальному".
Текст.
Здесь ничего экзотического. Лежит открыто в текстовом файле, кодировка юникод. После перевода прогоняем по таблице для замены символов и получаем то, что можно вставить в игру.
Пожалуй, единственной особенностью является реализация поддержки расширенной латиницы: европейские "зяблы" выводятся на экран путём наложения '^` поверх латинских глифов.
Проблем с редактированием и вставкой текста нет.
Видео.
Его в игре попросту нет. Все видеоролики заменены экранами с низкокачественным фоном, в роли которого выступает какой-то из узнаваемых кадров того самого видео, на фоне которого скроллится текст, пересказывающий содержание вырезанного контента.
Не знаю, по какой причине, но разработчики не заморочились над тем, чтобы фоны выглядели хорошо, а просто сохранили какой-то из кадров в виде gif картинки, без какой-либо оптимизации палитры, да и ещё и с широкими чёрными полосами сверху и снизу. Смотрится это поистине убого, но исправимо, над чем сейчас и работаю. Что-то беру из ремастера оригинальных видео, над которыми поработали другие фанаты, что-то - из юбилейной версии, что стилистически вписывается в оригинал.
Позже выложу примеры того, что получается.
Озвучка.
Ей постигла участь схожая с видеороликами - пустили под нож и заменили субтитрами.
#3
Отправлено 31 December 2017 - 22:14
1. Переведены названия предметов, оружия и т.п. Всё, что появляется в инвентаре.
2. Переведено обучение в доме Лары, за что отдельная благодарность ребятам из ”ElikaStudio”, прослушивание записей их туториала сильно ускорило перевод этой части текста. Не обошлось, конечно, без моих стилистических правок и вынужденной подгонки под текущие ограничения вывода текста. Очень жаль, что всю озвучку порезали, она отлично вписалась бы!
Буду благодарен любой помощи в разборе форматов, переводе текста и перерисовке заставок.
Всех с наступающим новым годом!
#4
Отправлено 02 January 2018 - 19:02
Есть сдвиги в хакинге
1. Разобрался с декомпрессией/компрессией сжатых кусков кода в исполняемом файле, поэтому вопрос с редактированием таблицы ширины символов больше не стоит, осталось с самими глифами и их палитрами что-то придумать.
2. Поскольку часть текста зашита в исполняемый файл (меню и всякие системные сообщения), теперь нет проблем и с этим. Меню потихоньку перевожу.
#5
Отправлено 13 January 2018 - 18:04
Всем привет. Если кому-то интересна судьба проекта, то за прогрессом перевода текстовой части можно следить здесь: http://notabenoid.org/book/72187
Пожалуй, основной и практически единственной проблемой в технической части остаётся шрифт, точнее извлечение и вставка глифов с правильной палитрой. Таблица ширины символов найдена и проведена пробная правка/вставка - всё в порядке. Оооочень хочется заменить шрифт "ingame" на такой же, что используется в меню игры, даже глифы уже готовы.Но...
Буду благодарен любой помощи, готов поделиться всей информацией, что сам раскопал.
#6
Отправлено 29 January 2018 - 00:26
- 0x00 Нуль-терминатор (конец разбираемой строки)
- 0x01..0x0A Цифры, отображающие количество оставшихся патронов
- 0x0B..0x12 Различные специальные пиктограммы, в их числе значок динамика, патронов, а также курсорные стрелки
- 0x13..0x1F Незадействованный игнорируемый диапазон. Игра пропускает символ, оказавшийся в данном диапазоне
- 0x20 Пробел. Обнаружив проблел, игра просто делает отступ и переходит к обработке следующего символа
- 0x21..0x7E Стандартные символы ASCII-таблицы, за исключением некоторых подмененных, выделенных под другие цели. См.ниже
- 0x7F..0x81 Изображения трех секретов (дракончиков). Присутствует только в TR2, выводится на экран статистики вместе с другим текстом
- 0x82..0xFF Незадействованный игнорируемый диапазон. Игра пропускает символ, оказавшийся в данном диапазоне
- Цифры. Ширина занимаемого цифрой поля (отступ), в отличии от других символов, не зависит от табличного значения. Она всегда 12. Отступ, указанный в таблице для каждой конкретной цифры, используется для выравнивания спрайта цифры внутри общей ширины поля в 12 единиц. Это также означает, что табличные отступы для цифр не должны превышать 12 единиц
- Диакритические знаки. Для рисования всяких черточек, галочек, точечек над символами нижнего регистра, игра использует четыре специальных символа: ( ) $ ~. На них игрой назначены спрайты диакритических знаков, причем спрайты рисуются, но табличные значения отступа игнорируются. Отступ не производится вовсе, чтобы следующий выводимый символ оказался ровно под нарисованным только что спрайтом. Например, последовательность символов t~est на экране даст результат tёst.
Все спрайты символов закреплены за объектом ID_ALPHABET (для TR1 код 190, для TR2 код 255). Насчет полного списка объектов смотреть тут. Общее понимание структуры файла уровня можно получить на том же сайте. Как устроена структура файла в PS-версии игры понятия не имею, но можно поискать в коде OpenLara или спросить у XProgger в Discord личным сообщением совета, куда смотреть.
Что было сделано нами для того чтобы включить поддержку кириллицы в TR1? Все латинские буквы были заменены на транслит-аналоги кириллицы. Оставшиеся буквы были разбросаны по таблице вместо некоторых неиспользуемых знаков пунктуации. Размеры спрайтов и UV-координаты соответствующих текстур скорректированы, табличные значения отступов скорректированы. Код не менялся.
Что было сделано нами для того чтобы включить поддержку кириллицы в TR2-TR3? PaulD поправил код игры таким образом чтобы участок 0x82..0xFF более не считался невалидным, и расширил таблицы T_RemapASCII и T_TextSpacing. Машинист добавил к объекту ID_ALPHABET 66 спрайтов под русские символы, разместил все их текстуры на новой текстурной странице, создал спрайты типового размера, подобрал для каждого символа подходящий табличный отступ. Вуаля, работают оба алфавита, причем даже не надо мудрить с транслитом при заполнении текста в файле.
#7
Отправлено 31 January 2018 - 12:45
Большое спасибо за техническую информацию.
С Тимуром (XProgger) я уже успел познакомиться на facebook и пообщаться в телеграмме, от него получил немало полезной информации.
На данный момент для меня остаётся актуальным вопрос работы с графикой, а именно выемка для редактирования и обратная вставка спрайтов с глифами шрифта, т.к. текущий (выдернуть из "пиратского" перевода от "Лис" для PS1) слишком широк, для экрана N-Gage (разрешение 176х208 точек). Я немного поправил таблицу ширины символов и уменьшил расстояние между буквами на 1-2 пикселя, но этого недостаточно
Прикладываю картинку, чтобы можно было посмотреть, как выглядит сейчас. За качество не судите строго, такое мне выдал тестер...
http://gbx.ru/?act=A...e=post&id=41193
Структура файлов в PSX во многом повторяет таковую для PC версии, главное отличие в текстурах, которые 4-bit а не 8-bit. Если кто-то из команды, работавшей над переводом для PC взялся бы помочь с этим...
К сожалению, я не программист и всё делаю путём проб и ошибок. Готов предоставить все файлы и ту информацию, что сумел найти в сети или понять сам.
Пока, я в тупике, но не унываю
#8
Отправлено 02 February 2018 - 00:18
Структура файлов в PSX во многом повторяет таковую для PC версии, главное отличие в текстурах, которые 4-bit а не 8-bit. Если кто-то из команды, работавшей над переводом для PC взялся бы помочь с этим...arsunt(собака)gmail.com
К сожалению, я не программист и всё делаю путём проб и ошибок. Готов предоставить все файлы и ту информацию, что сумел найти в сети или понять сам.
Пока, я в тупике, но не унываю
Если предоставите информацию по различиям структуры файлов уровней между Playstation и PC, окажу всю необходимую помощь по модификации спрайтов текста.
#9
Отправлено 11 February 2019 - 22:29
После длительного перерыва продолжил работу над переводом NGE версии, шрифт побеждён, наконец! (На скриншоте видно, что с таблицей ширины и вертикальным положением некоторых глифов нужно будет поработать, но это мелочи
Фотка с телефона прикрепляться не захотела, даю линк:
https://pp.userapi.c...a76vN-Gxnxg.jpg
Arsunt, вы писали про диакритики. В целом понятно и я этим планирую воспользоваться для отрисовка буквы ё. Спасибо.Единственное, что не могу понять, как выводится немецкая ß, я на неё одну букву повесил
#10
Отправлено 15 May 2019 - 20:57
Напомню о себеДобрый день! Последние полгода был очень занят и совсем пропустил ваше сообщение. Я рад, что вы вернулись к проекту.
После длительного перерыва продолжил работу над переводом NGE версии, шрифт побеждён, наконец! (На скриншоте видно, что с таблицей ширины и вертикальным положением некоторых глифов нужно будет поработать, но это мелочи
Фотка с телефона прикрепляться не захотела, даю линк:Смотрится неплохо!
https://pp.userapi.c...a76vN-Gxnxg.jpg
Arsunt, вы писали про диакритики. В целом понятно и я этим планирую воспользоваться для отрисовка буквы ё. Спасибо.Единственное, что не могу понять, как выводится немецкая ß, я на неё одну букву повесилНемецкая 'ß' используется вместо символа '=' (равно)
#11
Отправлено 18 January 2020 - 18:56
Напомню о себе. Проект не помер, просто медленно продвигается.
Видео с текущим прогрессом можно глянуть тут:
https://www.youtube....0&v=P6F-C-mD9sE
Ответить
3 посетителей читают эту тему
0 пользователей, 3 гостей, 0 скрытых