Перейти к содержимому


Фото

Локализация Tomb Raider для Nokia N-Gage


10 ответов в этой теме

#1 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 23 December 2017 - 02:20

Друзья, всем привет! Мне удалось частично разобрать версию Tomb Raider для Nokia N-Gage. Как оказалось, это прямой порт с ps1, хоть и сильно порезанный в плане звука и видео. На данный момент получилось пересобрать и запустить игру, подсунув ей файлы со шрифтами из перевода от «Лис» (psx) и внеся тестовые правки в текст. Специально зарегистрировался на форуме, чтобы получить совет, а возможно, и помощь, поэтому распишу по пунктам: 1. Шрифт и таблица символов. Обратил внимание на то, что для этого перевода отрисовали всю кириллицу, раскидав некоторые глифы по полотну текстуры. Насколько я понимаю, таблица для шрифта имеет в себе не только ширину символов, но и их координаты на полотне. Поскольку текстура шрифта многократно повторяется в разных файлах, я задумался над тем, лежит ли таблица возле каждого из них или зашита в бинарник и одна для всех шрифтов?.. 2. Текстура шрифта. В версии для пк несколько иной формат хранения графики, при том, что сами текстуры и их разрешения одинаковы. Разница в глубине цвета. Моя проблема в загрузке правильной палитры и я вижу шрифт в искажённых цветах, что сильно затрудняет его редактирование. Подскажите, есть ли какой-то готовый софт для работы с текстурами psx версии или возможность адаптации инструментария, написанного для этого проекта? 3. Текст. Его не так много, как в некоторых других моих проектах и перевести не сложно, но зачем изобретать велосипед, если уже есть хороший и проверенный перевод. Был бы рад использовать его для адаптации и вставки. 4. Снова про шрифт. Некоторой проблемой является не только низкое разрешение, но и соотношение сторон экрана N-Gage. Если писать капсом, то в строку помещается всего 14 печатных символов. Во первых, перевод капсом делать не хочется, не в каменном веке. Во вторых, хочется уместить больше символов на один экран, учитывая отсутствие озвучки. В случае невозможности добавления дополнительных глифов для размещения всей строчной и заглавной кириллицы, думал отрисовать только те заглавные, которые будут использоваться в тексте, возможно, перерисовать весь алфавит и заузив ширину символов по таблице. Буду благодарен любой помощи. Э Спасибо.

#2 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 29 December 2017 - 18:42

Как уже писал выше, мне удалось распаковать и пересобрать основной игровой архив Tomb Raider и проверить работоспособность после всех манипуляций.
 
Теперь немного о самой версии для 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 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 31 December 2017 - 22:14

Немного о текущем прогрессе перевода, пока укладываю сына :)
1. Переведены названия предметов, оружия и т.п. Всё, что появляется в инвентаре.
2. Переведено обучение в доме Лары, за что отдельная благодарность ребятам из ”ElikaStudio”, прослушивание записей их туториала сильно ускорило перевод этой части текста. Не обошлось, конечно, без моих стилистических правок и вынужденной подгонки под текущие ограничения вывода текста. Очень жаль, что всю озвучку порезали, она отлично вписалась бы!

Буду благодарен любой помощи в разборе форматов, переводе текста и перерисовке заставок.

Всех с наступающим новым годом!

#4 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 02 January 2018 - 19:02

Есть сдвиги в хакинге :)

 

1. Разобрался с декомпрессией/компрессией сжатых кусков кода в исполняемом файле, поэтому вопрос с редактированием таблицы ширины символов больше не стоит, осталось с самими глифами и их палитрами что-то придумать.

2. Поскольку часть текста зашита в исполняемый файл (меню и всякие системные сообщения), теперь нет проблем и с этим. Меню потихоньку перевожу.



#5 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 13 January 2018 - 18:04

Всем привет. Если кому-то интересна судьба проекта, то за прогрессом перевода текстовой части можно следить здесь: http://notabenoid.org/book/72187

 

Пожалуй, основной и практически единственной проблемой в технической части остаётся шрифт, точнее извлечение и вставка глифов с правильной палитрой. Таблица ширины символов найдена и проведена пробная правка/вставка - всё в порядке. Оооочень хочется заменить шрифт "ingame" на такой же, что используется в меню игры, даже глифы уже готовы.Но...

 

Буду благодарен любой помощи, готов поделиться всей информацией, что сам раскопал.



#6 Arsunt

Arsunt

    Путешественник

  • Global Moderators
  • Pip
  • 156 сообщений

Отправлено 29 January 2018 - 00:26

Добрый день! Хотел ответить вам сразу, но это было бы малоэффективно без опубликованного программного кода. Теперь он готов. Правда он относится к TR2, но в первой части игры код вывода текста практически идентичен. Итак, нас интересует файл text.cpp. А именно функция T_DrawText. Игра пробегает строку в цикле, анализируя каждый символ, пока не встретит нуль-терминатор. Возможны несколько типов встреченных символов, в зависимости от диапазона в который они попадают:
  • 0x00 Нуль-терминатор (конец разбираемой строки)
  • 0x01..0x0A Цифры, отображающие количество оставшихся патронов
  • 0x0B..0x12 Различные специальные пиктограммы, в их числе значок динамика, патронов, а также курсорные стрелки
  • 0x13..0x1F Незадействованный игнорируемый диапазон. Игра пропускает символ, оказавшийся в данном диапазоне
  • 0x20 Пробел. Обнаружив проблел, игра просто делает отступ и переходит к обработке следующего символа
  • 0x21..0x7E Стандартные символы ASCII-таблицы, за исключением некоторых подмененных, выделенных под другие цели. См.ниже
  • 0x7F..0x81 Изображения трех секретов (дракончиков). Присутствует только в TR2, выводится на экран статистики вместе с другим текстом
  • 0x82..0xFF Незадействованный игнорируемый диапазон. Игра пропускает символ, оказавшийся в данном диапазоне
Среди символов ASCII-диапазона особенно выделяются:
  • Цифры. Ширина занимаемого цифрой поля (отступ), в отличии от других символов, не зависит от табличного значения. Она всегда 12. Отступ, указанный в таблице для каждой конкретной цифры, используется для выравнивания спрайта цифры внутри общей ширины поля в 12 единиц. Это также означает, что табличные отступы для цифр не должны превышать 12 единиц
  • Диакритические знаки. Для рисования всяких черточек, галочек, точечек над символами нижнего регистра, игра использует четыре специальных символа: ( ) $ ~. На них игрой назначены спрайты диакритических знаков, причем спрайты рисуются, но табличные значения отступа игнорируются. Отступ не производится вовсе, чтобы следующий выводимый символ оказался ровно под нарисованным только что спрайтом. Например, последовательность символов t~est на экране даст результат tёst.
Код ASCII-символа минус значение 0x20 дает индекс массива T_RemapASCII, в котором содержатся номера спрайтов, привязанных к текстурам выводимых символов. Номер спрайта также является индексом массива T_TextSpacing, который представляет собой таблицу отступов каждого из символов.

Все спрайты символов закреплены за объектом ID_ALPHABET (для TR1 код 190, для TR2 код 255). Насчет полного списка объектов смотреть тут. Общее понимание структуры файла уровня можно получить на том же сайте. Как устроена структура файла в PS-версии игры понятия не имею, но можно поискать в коде OpenLara или спросить у XProgger в Discord личным сообщением совета, куда смотреть.

Что было сделано нами для того чтобы включить поддержку кириллицы в TR1? Все латинские буквы были заменены на транслит-аналоги кириллицы. Оставшиеся буквы были разбросаны по таблице вместо некоторых неиспользуемых знаков пунктуации. Размеры спрайтов и UV-координаты соответствующих текстур скорректированы, табличные значения отступов скорректированы. Код не менялся.

Что было сделано нами для того чтобы включить поддержку кириллицы в TR2-TR3? PaulD поправил код игры таким образом чтобы участок 0x82..0xFF более не считался невалидным, и расширил таблицы T_RemapASCII и T_TextSpacing. Машинист добавил к объекту ID_ALPHABET 66 спрайтов под русские символы, разместил все их текстуры на новой текстурной странице, создал спрайты типового размера, подобрал для каждого символа подходящий табличный отступ. Вуаля, работают оба алфавита, причем даже не надо мудрить с транслитом при заполнении текста в файле.
To seek. To learn. To do. ©

#7 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 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 Arsunt

Arsunt

    Путешественник

  • Global Moderators
  • Pip
  • 156 сообщений

Отправлено 02 February 2018 - 00:18

Структура файлов в PSX во многом повторяет таковую для PC версии, главное отличие в текстурах, которые 4-bit а не 8-bit. Если кто-то из команды, работавшей над переводом для PC взялся бы помочь с этим...
К сожалению, я не программист и всё делаю путём проб и ошибок. Готов предоставить все файлы и ту информацию, что сумел найти в сети или понять сам.
Пока, я в тупике, но не унываю :)
arsunt(собака)gmail.com
Если предоставите информацию по различиям структуры файлов уровней между Playstation и PC, окажу всю необходимую помощь по модификации спрайтов текста.
To seek. To learn. To do. ©

#9 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 11 February 2019 - 22:29

Напомню о себе :)
После длительного перерыва продолжил работу над переводом NGE версии, шрифт побеждён, наконец! (На скриншоте видно, что с таблицей ширины и вертикальным положением некоторых глифов нужно будет поработать, но это мелочи ;)

Фотка с телефона прикрепляться не захотела, даю линк:
https://pp.userapi.c...a76vN-Gxnxg.jpg

Arsunt, вы писали про диакритики. В целом понятно и я этим планирую воспользоваться для отрисовка буквы ё. Спасибо.Единственное, что не могу понять, как выводится немецкая ß, я на неё одну букву повесил

#10 Arsunt

Arsunt

    Путешественник

  • Global Moderators
  • Pip
  • 156 сообщений

Отправлено 15 May 2019 - 20:57

Напомню о себе :)
После длительного перерыва продолжил работу над переводом NGE версии, шрифт побеждён, наконец! (На скриншоте видно, что с таблицей ширины и вертикальным положением некоторых глифов нужно будет поработать, но это мелочи ;)
Добрый день! Последние полгода был очень занят и совсем пропустил ваше сообщение. Я рад, что вы вернулись к проекту.
Фотка с телефона прикрепляться не захотела, даю линк:
https://pp.userapi.c...a76vN-Gxnxg.jpg
Смотрится неплохо!
Arsunt, вы писали про диакритики. В целом понятно и я этим планирую воспользоваться для отрисовка буквы ё. Спасибо.Единственное, что не могу понять, как выводится немецкая ß, я на неё одну букву повесил
Немецкая 'ß' используется вместо символа '=' (равно)
To seek. To learn. To do. ©

#11 lupus

lupus

    Искатель приключений

  • Members
  • 10 сообщений

Отправлено 18 January 2020 - 18:56

Напомню о себе. Проект не помер, просто медленно продвигается.

Видео с текущим прогрессом можно глянуть тут:

https://www.youtube....0&v=P6F-C-mD9sE





Ответить



  


1 посетителей читают эту тему

0 пользователей, 1 гостей, 0 скрытых