Автор Тема: Tales of Series (перевод игр от команды Temple of Tales Translations)  (Прочитано 22921 раз)

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

Оффлайн mlegion

  • Пользователь
  • Сообщений: 25
    • Просмотр профиля
3) Tales Of Eternia (PSP) - полный русский перевод 1.00
» октябрь-ноябрь 2024
А когда планируется версия для PS1?

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4635
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
при желании можете не интегрировать в наш перевод
Спасибо!

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
А когда планируется версия для PS1?
Не планируется. Мы с 2014 старались над PS1-версией и переводили с английского. Упёрлись в целую кучу ограничений, а потом переводчица слилась. Запланировали в 2022 начать всё с нуля с японского. В начале 2023 года приступили. Всё завершили недавно и отдали тестерам текущую сборку. Возможно ViT доделает, то с чем мы работали в 2014-2018 годах. Но как он будет решать проблему с MIPS поинтерами, изменять размеры рамок и их координаты, а также пытаться внедрять субтитры для скитов - этого я не знаю. PSP-версия чем хороша для перевода, что расширенное пространство на экране даёт возможность гораздо дальше двигать влево или вправо окошки или раздвигать их. Нам практически ничего не пришлось сокращать. Чего не скажешь про PS1-версию. Там нет места куда-то двигать. Без сокращений ни как не обойтись. А зачем тебе PS1-версия? PSP по многим параметрам лучше. Да, есть момент с ресайзингом 4:3 <> 16:9. Много где бэграунды порезаны. Но это порт как ни крути, а не конкретная доработка. Даже если сильно мозолит глаза, то можно в этой PSP-версии обратно включить 4:3 режим через дебаг режим. Ещё на PS1-версию ни кто до сих пор не сделал Undub, а для PSP он есть. Да даже если и будет, то толку? Мы переводили с японского. Текст местами прям кардинально отличается от того, что вы можете встретить в английской озвучке. Такой рассинхрон смысловой вам не будет резать ухо? Английский перевод на столько неудачный, что даже западная аудитория затеяла свой собственный "re-translate".

А теперь?
Извиняюсь, не заметил такое давнее сообщение. По SO позже напишу в соответствующую тему. Ведь мы 3 серии игр переводим: Tales Of, Star Ocean и Valkyrie Profile.

Оффлайн mlegion

  • Пользователь
  • Сообщений: 25
    • Просмотр профиля
А зачем тебе PS1-версия? PSP по многим параметрам лучше. Да, есть момент с ресайзингом 4:3 <> 16:9. Много где бэграунды порезаны.
Вот именно по этой причине мне и хотелось бы иметь версию для PS1. Надеюсь, что в будущем всё же удастся перенести именно ваш перевод с японского на оригинальную версию игры.

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Вот именно по этой причине мне и хотелось бы иметь версию для PS1. Надеюсь, что в будущем всё же удастся перенести именно ваш перевод с японского на оригинальную версию игры.
Я же выше упомянул, что в PSP-версии есть возможность включить 4:3 режим.
Разметка экрана и область бэкграунда будет как в ПС1. В чём проблема его включить и так играть?

Оффлайн mlegion

  • Пользователь
  • Сообщений: 25
    • Просмотр профиля
Разметка экрана и область бэкграунда будет как в ПС1. В чём проблема его включить и так играть?
Не стоит так настаивать на предлагаемом вами способе игры. У других людей могут быть свои причины и предпочтения выбирать конкретную версию. Тем более, что я высказал исключительно пожелание. Однако я был бы благодарен за инструкцию по активации этого режима с изменением соотношения сторон. Если оно, конечно, реализуемо на самой приставке без особого ущерба для работоспособности и возможных иных графических артефактов.

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля


Группа в ВК:
https://vk.com/temple_of_tales_translations
Страница проекта: http://temple-tales.ru/translations_topps1.html

Рады представить финальную версию нашего перевода Сказаний Фантазии. На этот проект мы потратили 8 лет. Конечно же, общее время работы над ним гораздо меньше, но жизнь всегда вносит свои коррективы. Были взлёты, падения, долгие паузы, а бывали и скрупулёзно проведённые ночи за текстурами, текстами и видеофайлами. Многие из нас не выпускали из объятий hex-редактор, фотошоп, дебаггер, эксель, ноутпад++, ida pro и т.д. Несмотря на то, что объём текста в Фантазии меньше, чем в Сказаниях времён PS2 или PS3, времени на неё ушло больше, чем на то, что мы уже выпустили раньше. Данный проект представляет собой перевод текста и текстур на русский язык. Версия 1.00 позиционируется как полная, а прогресс перевода составляет 100% от общего количества контента. Перевод осуществлялся с английского (~70%) и японского (~30) языков. Также проводилась сверка с японским оригиналом. Скачать перевод можно с нашего сайта или с Zone Of Games. Раздачи на рутрекере также созданы.

Желаем вам приятной и увлекательной игры!

УЧАСТНИКИ ПРОЕКТА:
- Evil Finalist (Вадим Стрежов): руководство проекта, работа с текстурами, разбор ресурсов и вставка контента (PS1-версия)
- OldSchool Jill (Юлия Андреева): редактирование (сюжет, квесты, сценки, НИПы и меню)
- Kagiri-To (Павел Хезин): перевод с английского ~66% (сюжет, квесты, сценки, НИПы, глоссарий и прочее)
- Femisto (Екатерина Вересковская): перевод с японского ~33% (сюжет, сценки, НИПы и глоссарий)
- Kai Kiske (Викентий Селюцкий): переводчик (меню)
- Polka (Динара Овчинникова): художник, работа с текстурами
- RangerRus: хакинг, разбор ресурсов (PS1-версия)
- NeXoGone: работа с видеороликами
- edgbla: дополнительный хакинг
- TTEMMA (Артём Филатов): дополнительный хакинг


УЧАСТНИКИ ТЕСТИРОВАНИЯ v1.00:
- OldSchool Jill (Юлия Андреева): тестирование на эмуляторе
- Litrics (aka Syrin) (Анастасия Степанова): тестирование на эмуляторе
- Kai Kiske (Викентий Селюцкий): тестирование на PS1
- ZeroCold1981 (Юрий Усков): тестирование на эмуляторе
- paysley (Анастасия Сильванова): тестирование на эмуляторе
- Dmitry Caelum (aka Stella) (Дмитрий Каелум): тестирование на PSP
- Kagiri-To (Павел Хезин): тестирование на эмуляторе
- Evil Finalist (Вадим Стрежов): тестирование на эмуляторе ePSXe и планшете на базе ОС Android - RetroArch (ядро PCSX ReARMed)


УЧАСТНИКИ КАВЕРА "СЛЕДУЙ ЗА МЕЧТОЙ":
- Sabi-tyan (Александра Горошникова): вокал
- Femisto (Екатерина Вересковская): перевод с японского
- Polka (Динара Овчинникова): адаптированная лирика, работа с субтитрами, обложка для Ютуба
- Redead (Борис Карташов): звукорежиссура
- NeXoGone: работа с субтитрами, работа с видео
- Anita: работа с видео


Если вы желаете отблагодарить финансово за труды нашей команды, то ознакомьтесь с информацией ниже. Многие проекты очень сильно нуждаются в помощи, так как стоимость их реализации высокая. И продвигаются проекты только лишь за счёт сборов средств на оплату услуг переводчика японского языка и программистов.

Карта Сбербанка: 5469 9802 0654 4716
Карта ВТБ: 4272 2908 4659 1246
ЮMoney/Яндекс кошелёк: 410011235819402


Оффлайн mlegion

  • Пользователь
  • Сообщений: 25
    • Просмотр профиля
Evil Finalist, спасибо за работу и удачи в будущих переводах!

Оффлайн grooomy

  • Пользователь
  • Сообщений: 1689
    • Просмотр профиля
Отличная новость! Хотя я лично, жду перевода валькирии. :)

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля


Платформа: PlayStation Portable
Перевод: Японский >>> Русский
Начало проекта: 04.04.2023
Завершение проекта: 11.07.2024
Дата релиза: конец ноября (ориентировочно 30.11.2024)

Группа в ВК: https://vk.com/temple_of_tales_translations
Страница проекта: https://temple-tales.ru/translations_toeps1.html


Сообщаем о дате выпуска полного перевода Сказаний Этернии: как и обещали летом, релиз планируем в конце ноября этого года (30 ноября или чуть раньше на пару дней). У нас практически закончилось тестирование. Большая часть тестеров проходила игру на эмуляторе PPSSPP, а наш админ проводил тестирование на консоли PS Vita через 6.61 Adrenaline. Перед выпуском мы записали несколько видеодемонстраций, а также хотим показать различные особенности, с которыми столкнулись во время работы над этим переводом. Помимо этого, мы представляем русский кавер опенинга нашего производства этой игры. Напоминаем, что перевод выполнялся полностью с японского языка!

УЧАСТНИКИ ПРОЕКТА:
- Вадим Стрежов (Evil Finalist): руководство проекта, работа с текстурами и видео, вставка контента
- Каролина Лебедева (Coronel Karol): перевод (сюжет, сценки, квесты, НИП'ы и меню), редактирование
- Riku_KH3: хакинг, разбор ресурсов, работа с шрифтами, внедрение субтитров в сценки
- Артём Филатов (TTEMMA): хакинг окон рамок и координат построения текста


УЧАСТНИКИ ТЕСТИРОВАНИЯ v1.00:
- Syrin Nen (Litrics aka Syrin): тестирование на эмуляторе PPSSPP
- Юрий Усков (ZeroCold1981): тестирование на эмуляторе PPSSPP
- Каролина Лебедева (Coronel Karol): тестирование на эмуляторе PPSSPP и консоли PS Vita
- Вадим Стрежов (Evil Finalist): тестирование на эмуляторе PPSSPP и консоли PS Vita


Оставайтесь с нами. Дальше будет только интереснее ; )


1. РУССКИЙ КАВЕР ОПЕНИНГА
Представляем вашему вниманию русский кавер опенинга Сказаний Этернии нашего производства.

Курирование кавера:
Динара Овчинникова
Вокальное исполнение:
Екатерина Шадринцева (miru)

Вот ссылки на личные страницы певицы с безупречным голосом:
1) https://vk.com/mirudesu
2) https://t.me/mirupun
3) https://youtube.com/@mirupun

Остальные участники кавера:
- Перевод с английского: Динара Овчинникова
- Адаптированная лирика: Динара Овчинникова
- Звукорежиссура: Егор Зрайковский
- Работа с видео и субтитрами: Вадим Стрежов и NeXoGone
- Координатор проекта: Динара Овчинникова


Данный кавер будет доступен с нашим переводом игры опционально (при желании можете не интегрировать его в наш перевод).
Ну а те, кому интересно, могут ознакомиться с кавером по ссылке ниже.

*альтернативая ссылка на VK Video:
https://vk.com/video-181931421_456239180


2. ХАКИНГ ОКОН РАМОК И КООРДИНАТ ПОСТРОЕНИЯ ТЕКСТА
Сегодня мы покажем результат кропотливого хакинга из-под пера Артёма Филатов (TTEMMA), благодаря которому нам удалось уместить гораздо больше текста перевода в различных окошках, и теперь сокращений нет. Такая возможность доступна лишь в PSP-версии, так как изначально в PS1-версии большая часть рамок меню была ориентирована только под 4:3 экран, и при портировании на PSP их размеры практически не изменились. В итоге мы имеем то, что при портировании игры разработчиками на PSP-версию по бокам окон меню есть пустое пространство, так как ориентация экрана в порте 16:9. Уважаемый Артём Филатов воспользовался этим преимуществом и расширил многие области, а также изменил координаты построения текста в нужных местах. Результат можно посмотреть на скриншотах, приложенных к этой записи.

*большее количество скриншотов указано в этой записи: https://vk.com/wall-181931421_3016





3. ПЕРЕВОД СЦЕНОК 1-71
Представляем для ознакомления 71 записанную сценку из японской версии игры. Всего в игре 345 сценок. 81 из них – это короткие монологи героев, которые в основном подсказывают, что нужно делать или куда идти по сюжету. А остальные 264 сценки – это различные беседы между персонажами, которые могут быть смешными, драматичным, а иногда и серьёзными. Они раскрывают характер героев игры и помогают лучше понять мир Этернии в целом. На текущий момент нам приходится играть в японскую версию игры и записывать каждую сценку по отдельности, а уже потом монтировать всё в видеоредакторе Sony Vegas. Поэтому оформление сценок длится так долго. К релизу игры в ноябре мы вряд ли успеем смонтировать их все, но постараемся сделать это после релиза. Общая продолжительность всех сценок игры будет составлять примерно 2,5 часа.

НАД СЦЕНКАМИ РАБОТАЛИ:
- Coronel Karol (Каролина Лебедева): перевод с японского
- Evil Finalist (Вадим Стрежов): работа с видео и субтитрами


*альтернативая ссылка на VK Video:
https://vk.com/video-181931421_456239182


4. ПРОКРУЧИВАЕМЫЕ ТИТРЫ НА ПРОЗРАЧНОМ ФОНЕ 1
О хакинге и сценках мы рассказали, а теперь пришло время окунуться в производственный процесс по созданию прокручиваемых титров. Занимаемся титрами мы не в первый раз, но во всех прошлых случаях дело ограничивалось строками, за вывод которых отвечал игровой движок. В Этернии же титры являются частью видеофайла, а это значит, что приходится вручную вставлять текст и создавать анимацию прокрутки. Помимо перевода самих титров, мы добавили в начало и нас – всех, кто трудился над переводом этой игры. Создавать титры проще всего в видеоредакторе Sony Vegas. Ниже мы прилагаем пошаговую инструкцию, по которой вы можете создать собственные анимированные титры, если в этом будет необходимость.

1) Выбираем вкладку "Media Generator";
2) Из списка щёлкаем по "Credit Roll";
3) Выбираем нужный стиль титров (в нашем случае это "прокручивание на прозрачном фоне") и перетягиваем это окошко на рабочую область;
4) Настраиваем нужные параметры: длительность, строки, шрифт, позицию на экране, отступы и т.д.

В качестве демонстрации к данной записи мы прилагаем 2 видеофайла с титрами. Это один и тот же видеоролик, но с разными треками. Интересный факт: в японской и английской версиях в титрах звучат разные композиции. А какой трек вам понравился больше?

*альтернативные ссылки на VK Video:
https://vk.com/video-181931421_456239183
https://vk.com/video-181931421_456239184



5. ПРОКРУЧИВАЕМЫЕ ТИТРЫ НА ПРОЗРАЧНОМ ФОНЕ 2
Демонстрируем вам вторую часть финальных титров. Они запускаются после дополнительной сюжетной катсцены. К данной записи мы прилагаем 2 видеофайла. Это один и тот же видеоролик, но с разными треками – в японской и английской версиях звучат разные композиции. И есть разница между PSP и PS1-версиями – для японской PSP-версии уважаемый Мотои Сакураба написал эксклюзивную инструментальную композицию. Приятного прослушивания!

*альтернативные ссылки на VK Video:
https://vk.com/video-181931421_456239187
https://vk.com/video-181931421_456239189



6. ЛЕГЕНДА ОБ УЛТАСЕ ВЕЕ
А сейчас мы хотим вас познакомить с легендой об Ултасе Вее. В игре это пьеса, и её постановку игрок может посмотреть в театре в столице Инферии. Легенда повествует о таинственном герое в маске, который раскрывает серию похищений благородных дворянок. Пьеса состоит из восьми актов. Сама легенда примечательна тем, что один из персонажей использует её мораль, передав другому слова: "Поручаю Ултаса Вея тебе". В какой момент это происходит – увидите сами. Кроме того, если вы захотите открыть в игре все предметы и титулы, то пьесу придётся смотреть до конца, так как за просмотр всех актов игрок получит предмет "сценарий пьесы", без которого Килу не достанется титул "Куратор".

*альтернативая ссылка на VK Video:
https://vk.com/video-181931421_456239185


7. МИНИ-ИГРЫ
Что может заинтересовать, удержать и не отпускать во время прохождения игры? Правильно! Мини-игры! Именно о них сегодня и пойдёт речь. Их наличие и разнообразие является одним из очень важных факторов в жанре jRPG. В Этернии же мини-игр больше, чем во всех остальных играх серии Сказаний. Все они по-своему интересные – какие-то лёгкие, а какие-то весьма непростые. Среди них есть сплав по реке, катание на поезде, карты, соревнование по скоростному поеданию, морской бой, танцы и многое другое. К данному посту мы прилагаем видео с записью нескольких из них с нашим переводом. А вы любите мини-игры?

*альтернативая ссылка на VK Video:
https://vk.com/video-181931421_456239186


8. ТЕСТ КРЕЙМЕЛА
Ещё хотим показать для ознакомления видеозапись "Тест креймела". Данный тест может пройти любой игрок в самой игре – для этого необходимо подойти к гадалке, которая находится в святилище Фарлос. Сам тест необычен тем, что подобные вещи в играх серии "Tales Of" являются редкостью. Это одна из них. Вопросов очень много. Кто-то проходил этот тест полностью? А какой тип личности по тесту креймела у вас?

*альтернативая ссылка на VK Video:
https://vk.com/video-181931421_456239087

9. РЕЖИМ ОТЛАДКИ И ЧИТЫ
Данная запись посвящена запуску режима отладки (Debug mode) в Этернии с нашим переводом. Одна из наших подписчиц, Ирина Нелюбина, попросила нас рассказать о том, как запускать этот режим. Мы откликнулись на эту просьбу, а уважаемая Каролина Лебедева перевела весь перечень читов и настроек на русский язык. Если вам есть, чем дополнить данную информацию, то просим написать об этом в комментариях. Давайте поможем друг другу!

ИНСТРУКЦИЯ:
01. Открываем эмулятор PPSSPP.
02. Щёлкаем в верхней строке по кнопке "Настройки", а затем по строчке "Ещё настройки...".
03. В открывшихся настройках выбираем пункт "Системные".
04. Далее ищем пункт "Коды к игре" и в этой строке ставим галочку напротив "Включить коды".
05. К данной записи прилагается файл ULES00176.ini. Скачайте его. Он содержит набор кодов и текст их перевода. Затем открывайте папку:
C:\Users\Admin\Documents\PPSSPP\PSP\Cheats
И скопируйте файл ULES00176.ini туда.
06. Далее запускаем игру и жмём на паузу. Открываем меню индивидуальных настроек игры. Затем жмём на кнопку "Читы".
07. В открывшихся настройках выбираем интересующие нас читы, а самое главное - ищем строку "Режим отладки". Ставим там галочку.
08. Теперь возвращаемся в игру – главном меню в самому низу должен появиться пункт "Режим отладки". Выбираем его.
09. Вас перенесёт на отдельную локацию – карту отладчика.
10. Здесь вы можете нажать кнопки "SELECT" или "START" и попробовать настроить то, что вам нужно, а также подойти к различным персонажам и выбрать любые другие возможности, которые доступны в режиме отладки.


Ссылки на скачивание файла ULES00176.ini:
1) https://cdn.discordapp.com/attachments/1006946714810327151/1307274091568435242/ULES00176.ini?ex=6739b55f&amp;is=673863df&amp;hm=10ac1bb810011c59f1cca19f6d519b4da2b64820ac4e4b9d0744dd0fe675275d&amp;
2) https://vk.com/doc17188115_685122427?hash=b48nHUgf1H8OPJb6DMjCc46leGgOcS39VHF3spn3xGc&amp;dl=ymkUnmrKRkRTiZh6FXzTZnSKcHh76M1QjuWXkhpNE0z
 
Все изображения пошаговые из инструкции можно глянуть здесь (8 изображений):
1) https://vk.com/wall-181931421_3121
2) https://t.me/temple_tales/18/1784
3) https://dtf.ru/games/3188165-rezhim-otladki-i-chity-v-tales-of-eternia-psp
4) https://discord.com/channels/1006944382856994816/1006946714810327151/1307273943262036019



10. ВЫРАВНИВАНИЕ ТЕКСТА В ДИАЛОГАХ
Вы когда-нибудь задумывались о том, насколько разработчики и переводчики заботятся об удобстве чтения текста в диалогах? Бывает и такое, что даже официальные переводы не могут похвастаться ровными переносами строк. В основном это связано с тем, что в одних играх переносы строк автоматические и фиксированные, а в других их необходимо делать вручную. В Сказаниях Этернии есть чёткое ограничение по количеству как самих строк, так и количеству символов в одной строке. Если превысить показатель хотя бы на одну букву, то будет рушиться вся конструкция рамки и переносов. В этой записи мы хотим похвалить нашу переводчицу Каролину Лебедеву, которая во время всей своей работы над проектом старалась учитывать эти моменты, и по возможности красиво выровняла буквально все диалоги и различные описания в меню. Поистине достойный труд, как и любое достижение программистов в хакинге видеоигр! Результат можно посмотреть на нескольких скриншотах, приложенных к этой записи.





Помимо этого, мы также хотим продемонстрировать показательные примеры плохих переносов текста в одном из официальных переводов – Tales Of Symphonia. Около 10-ти скриншотов будут размещены в одном из комментариев под этой записью. Гораздо большее количество примеров и спорные моменты официального перевода размещены в нашем сервере в дискорде, а также в группе в телеграме:

Наш сервер в Discord
https://discord.gg/nGXe6yqZrW

Ссылка на чат со скриншотами
https://discord.com/channels/1006944382856994816/1006947251362480178/1299643863127953439

Телеграм
https://t.me/temple_tales/1237/1467



11. ВНЕДРЕНИЕ ИСКУССТВЕННЫХ СУБТИТРОВ В СЦЕНКИ
Мы уже не раз упоминали об уважаемом программисте Riku_KH3, который проделал огромную работу по многим нашим проектам. Но сегодня мы хотим вам рассказать об его уникальном хаке, который многих программистов просто ставит в ступор. Речь пойдёт про искусственные субтитры к тем сценкам (skits), которые доступны в английской версии игры. Изначально субтитры для обоих версий (PS1 и PSP) разработчиками предусмотрены не были. Сценки просто озвучены, и в них можно увидеть небольшие анимации с аватарками персонажей. Многим игрокам по разным причинам тяжело воспринимать на слух, и мы очень рады тому, что Riku_KH3 согласился внедрить искусственные субтитры. Отображаются они тем же шрифтом, что и все диалоги персонажей. Результат можно посмотреть на скриншоте, приложенном к этой записи. Данные сценки запускаются на карте мира при нажатии кнопки "SELECT".




12. ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ К ПЕРЕВОДУ:
Представляем вашему вниманию перевод интервью с разработчиками Tales Of Eternia, а именно – с Дзюном Тоёдой и Савако Натори, а также с Мутсуми Иноматой, которая работала над дизайном персонажей игры.

Данное интервью взято из гайдбука Tales Of Eternia Official GuideBook 2001 года и переведено с японского Каролиной Лебедевой (Coronel Karol). В нём разработчики ответили на ряд вопросов редакции и обсудили авторские идеи, заложенные в игре, характеры персонажей и их взаимоотношения, а также то, что вдохновляло на создание такого интересного сеттинга и многое другое. Интервью никогда не переводилось на другие языки. Призываем всех его прочитать, ведь вы откроете для себя много нового - мы гарантируем! С текстом интервью можете ознакомиться на нашем сайте, пройдя по ссылке ниже.



А также обратите внимание на перевод словаря имён и терминов из Tales Of Eternia. Данный материал взят из гайдбука Tales Of Eternia Official GuideBook 2001 года и тоже переведён с японского Каролиной Лебедевой (Coronel Karol). Этот словарь здорово помог в процессе перевода Сказаний Этернии. Заглянув в него, вы сможете увидеть, как переведены те или иные термины из игры от нашей команды.

Помимо самого перевода словаря, уважаемая Каролина постаралась подробнее разобрать различные отсылки, задуманные одним из разработчиков – Дзюном Тоёдой. Их не получится просто так найти в поисковике, и нужно углубляться в науку и другие дисциплины. Если имя или термин содержит в себе отсылку к известным личностям или реально существующим понятиям, то после описания следует пояснение переводчика. Весь материал словаря поделён на разделы и расположен в алфавитном порядке. Словарь никогда не переводился на другие языки. Призываем его прочитать, ведь вы откроете для себя много нового – мы гарантируем!

Отдельно хотим обратить внимание тех, кто проходил игру на английском языке и хорошо помнит многие имена, названия и термины – представленный вариант перевода значительно отличается от того, что сделали англоязычные переводчики! Можно наглядно убедиться, насколько люди, участвовавшие в западной локализации, не прочувствовали масштаб и сути творения, вышедшего из-под пера Дзюна Тоёды. С текстом материала можно ознакомиться на нашем сайте, пройдя по ссылке ниже.

а) Перевод словаря имён и терминов:
https://temple-tales.ru/games/toe/dictionary.html

б) Перевод интервью с разработчиками:
https://temple-tales.ru/games/toe/interview.html




13. ИДЁТ СБОР СРЕДСТВ НА ОПЛАТУ УСЛУГ ПЕРЕВОДЧИКОВ И ПРОГРАММИСТОВ
Если вы желаете отблагодарить финансово за труды нашей команды, то ознакомьтесь с информацией ниже. Поверьте, эти проекты очень сильно нуждаются в помощи, так как стоимость их реализации высокая. И продвигаются проекты только лишь за счёт сборов средств на оплату услуг переводчика японского языка и программистов.

Идёт сбор средств на оплату услуг
переводчика японского Tales Of Xillia 2

Собрано: 25 753,34 / 350 000
Карта Сбербанка: 5469 9802 0654 4716
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 18.11.2024
Список донатеров: http://temple-tales.ru/donations_tox2.txt

Идёт сбор средств на оплату услуг
программистов и переводчика японского
Star Ocean 2: The Second Story R
Star Ocean 2: Second Evolution

Собрано: 13 333,34 / 350 000
Карта Сбербанка: 5469 9802 0654 4716
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 07.11.2024
Список донатеров: http://temple-tales.ru/donations_so2.txt

Идёт сбор средств на оплату услуг
программиста и переводчика
Valkyrie Profile: Lenneth

Собрано: 84 000 / 200 000
Карта ВТБ: 4272 2908 4659 1246
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 13.11.2024
Список донатеров: http://temple-tales.ru/donations_vp1_psp.txt
« Последнее редактирование: 06 Апрель 2025, 12:14:34 от Evil Finalist »

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля


ВНИМАНИЕ, КОНКУРС!!!
Перед выпуском нашего полного перевода Tales Of Eternia мы хотим объявить о начале второго конкурса "Найди ошибку".
Его суть очень проста. Кто найдёт больше всего орфографических, пунктуационных и лексических ошибок, а также опечаток, тот и станет победителем.
Всего будет 3 призовых места. Конкурс продлится до 31 января 2025 года 20:00 по московскому времени.
Не упустите свой шанс!

ВСЕ ПОДРОБНОСТИ ЧИТАЙТЕ В НАШЕМ
ОТДЕЛЬНОМ СООБЩЕСТВЕ ПО КОНКУРСАМ:

https://vk.com/temple_of_tales_quiz

✅ Призы:
А) Игровые консоли

– Sony Playstation Vita (Fat)
– Nintendo Switch Lite


Б) Лицензионные диски и картриджи
- Tales of Graces f Remastered (PS5)
- Tales of Graces f Remastered (Switch)
- Tales of Symphonia Remastered Chosen Edition (Switch)
- Tales of Arise (PS4)
- Tales of Arise (PS5)
- Tales of Vesperia + Tales of Berseria + Tales of Zestiria Compilation (PS4)


В) Лицензионные фигурки (тип А)
- Tales of Berseria - Velvet ~ 1/8 scale (Kotobukiya)
- Tales of Zestiria - Edna ~ 1/8 scale (Alter)
- Tales of Zestiria - Sorey ~ 1/8 scale (Kotobukiya)
- Tales of Zestiria - Mikleo ~ 1/8 scale (Kotobukiya)
- Tales of Zestiria - Alisha Diphda ~ 1/8 scale (Alter)
- Tales of the Abyss - Luke fone Fabre ~ 1/8 scale (Alter)
- Tales of Vesperia - Yuri Lowell ~ Ichiban Kuji Tales of Series (Banpresto)
- Tales of Vesperia - Raven ~ 1/8 scale (Alter)
- Tales of Vesperia - Flynn Scifo ~ 1/8 scale (Alter)
- Tales of Graces f - Asbel Lhant ~ 1/8 scale (Alter)
- Tales of Graces f - Cheria Barnes ~ Ichiban Kuji Tales of Series 20th Anniversary (Banpresto)
- Tales of Xillia - Milla Maxwell ~ 1/8 scale (Alter)
- Tales of Xillia - Milla Maxwell ~ Ichiban Kuji Tales of Series (Banpresto)
- Tales of Xillia - Jude Mathis ~ 1/8 scale (Alter)
- Tales of Xillia 2 - Ludger Will Kresnik ~ Ichiban Kuji Tales of Series 3 (Banpresto)


Г) Лицензионные фигурки (тип Б)
- Tales of Phantasia - Dhaos ~ Trading figure (Kotobukiya)
- Tales of Phantasia - Mint Adenade ~ Trading figure (Kotobukiya)
- Tales of Phantasia - Klarth F. Lester ~ Trading figure (Kotobukiya)
- Tales of Phantasia - Chester Barklight ~ Trading figure (Kotobukiya)
- Tales of Phantasia - Suzu Fujibayashi ~ Trading figure (Kotobukiya)
- Tales of Destiny - Rutee Kartret ~ One Coin Grande Figure Collection (Kotobukiya)
- Tales of Destiny - Lion Magnus ~ One Coin Grande Figure Collection (Kotobukiya)
- Tales of Destiny 2 - Judas ~ One Coin Grande Figure Collection (Kotobukiya)
- Tales of Symphonia - Kratos Aurion ~ One Coin Figure Series (Kotobukiya)
- Tales of Symphonia - Shihna Fujibayashi + Corrine ~ One Coin Figure Series (Kotobukiya)
- Tales of Symphonia - Lloyd Irving ~ One Coin Figure Series (Kotobukiya)
- Tales of Symphonia - Collet Brunel ~ One Coin Figure Series (Kotobukiya)
- Tales of Symphonia - Genius Sage ~ One Coin Figure Series (Kotobukiya)
- Tales of the Abyss - Guy Cecil ~ One Coin Grande Figure (Kotobukiya)
- Tales of the Abyss - Jade Curtiss ~ One Coin Grande Figure (Kotobukiya)
- Tales of the Abyss - Natalia Luzu Kimlasca-Lanvaldear ~ One Coin Grande Figure (Kotobukiya)
- Tales of the Abyss - Anise Tatlin ~ One Coin Grande Figure (Kotobukiya)
- Tales of Vesperia - Raven ~ One Coin Figure Collection (Kotobukiya)
- Tales of Vesperia - Flynn Scifo ~ One Coin Figure Collection (Kotobukiya)
- Tales of Vesperia - Duke Pantarei ~ One Coin Figure Collection (Kotobukiya)
- Tales of Vesperia - Rita Mordio ~ One Coin Figure Collection (Kotobukiya)
- Tales of Vesperia - Patty Fleur ~ One Coin Figure Collection (Kotobukiya)
- Tales of Vesperia - Estellise Sidos Heurassein ~ One Coin Figure Collection (Kotobukiya)


Искать ошибки можно только в двух играх с нашим русским переводом:

- Tales Of Phantasia (версия перевода 1.01)
Скачать игру с переводом можно тут:
https://temple-tales.ru/translations_topps1.html

- Tales Of Eternia (версия перевода 1.00)
Скачать игру с переводом можно тут:
https://temple-tales.ru/translations_toeps1.html

Все остальные неразыгранные призы перейдут в следующий конкурс, который планируется в 2025 году.
Кроме того, список призов будет пополняться. Не бойтесь попробовать свои силы.
Если вам понравится такая инициатива, то мы продолжим и дальше радовать вас подобными идеями.

Желаем вам удачи!
« Последнее редактирование: 25 Ноябрь 2024, 15:28:43 от Evil Finalist »

Оффлайн Cheshire Kotovsky

  • Пользователь
  • Сообщений: 2500
  • Пол: Мужской
  • I dont bite... too hard
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Хороший способ сделать пост в стиле "нам нужны тестеры, но нам нечем платить :cool:"
Ну а если серьезно, тупо времени на это нет... А жаль, я с вашим переводом как раз недавно обломался) Только прошел Фантазию, сделал обзор и вы тут же, буквально через пару дней выпускаете свой перевод, как назло :lol:

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Хороший способ сделать пост в стиле "нам нужны тестеры, но нам нечем платить :cool:"
Ну а если серьезно, тупо времени на это нет... А жаль, я с вашим переводом как раз недавно обломался) Только прошел Фантазию, сделал обзор и вы тут же, буквально через пару дней выпускаете свой перевод, как назло :lol:
Прикольная реакция, но я подхвачу) В шутку, но с долей правды.
Ты не правильно понял суть конкурса. Призы достанутся только достойным.
Достойным! Поверь, найти ошибки в этих переводах не так уж и просто.
Особенно в Tales Of Eternia (PSP). Я даже больше скажу.
Слабо найти в Tales Of Eternia (PSP) столько, чтобы занять первое место?

По поводу Фантазии, тут да, упущение. А я бы очень сильно хотел увидеть отзыв на наш перевод в твоём видео ;)

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4635
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Слабо найти в Tales Of Eternia (PSP) столько, чтобы занять первое место?
Где его взять-то? Ссылка выше называется "...toeps1.html":lol:

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Где его взять-то? Ссылка выше называется "...toeps1.html":lol:
Я же ведь в шапке поста написал - когда.
И тебе на pspx.ru ответили когда, там же ведь ты тоже уточнял.
Зачем по нескольку раз спрашивать одно и то же?

Нашёл до чего докопаться. До названия ссылки, серьёзно?
Ну раз уж так, поясню. Почему так сложилось.

История работы над Этернией в цифрах
Начало проекта: 04.09.2014
Перевод PS1-версии (с английского языка): 3 квартал 2014 — конец 2016
Пауза и отмена PS1-версии: начало 2017 — начало 2023
Хакинг PSP-версии: в течение 2022
Перевод PSP-версии (с японского языка): 2 квартал 2023 — 11 июля 2024
Завершение перевода: 11.07.2024
Тестирование: 11.07.2024 — конец ноября 2024
Дата релиза: 29.11.2024 или 30.11.2024


Вот почему в ссылке использовано "ps1".
Так как за 10 лет мы не только отказались от PS1-версии, но и успели много где распространить информацию.
Если менять название ссылки, то во всех остальных местах она не будет работать.
Во втором квартале 2023 начали переводить с нуля PSP-версию. И осилили этот проект за 1,5 года.

Оффлайн md_max

  • Пользователь
  • Сообщений: 414
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Прикольно что у нас есть люди которые увлекаются и переводят JRPG этой серии.

После прохождения Breath of Fire 3, в 4 ку я тоже играл, но перевод там был на ps1 сами знаете какой, искал похожую и ей оказалась Tales Of Eternia. С тех пор, ценю эту серию игр. Хотя последнюю я забросил, наивный бред какой то.

А вот Tales Of Xillia вообще не понравилась. Мне не нравится современность, потому я и в финалки не играл. Но самое главное мне не понравилась боевка.
В коллекция держу;
Tales of Berseria, до сих пор держу вашу версию для PS3. Знаю о пк версии, но мне консоль проще.
Tales of Destiny II, она же Tales of Eternia для PS1.
Tales of Graces F
Tales of Legendia, так и не прошел, мне она кажется какой то детской. Музыка раздражает, вроде и поет не плохо, но уж больно часто.
Tales of Symphonia
Tales of Vesperia - Definitive Edition
 

« Последнее редактирование: 27 Ноябрь 2024, 04:50:41 от md_max »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4635
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Если менять название ссылки, то во всех остальных местах она не будет работать.
Пустая страница с редиректом спасёт отца русской демократии.

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля




Скачать с сайта: https://temple-tales.ru/translations_toeps1.html
Группа в ВК: https://vk.com/temple_of_tales_translations
Канал Ютуба: https://www.youtube.com/channel/UCJfDLKD1ClnKgLBdf7eblNA

Японский > Русский

Рады представить вам финальную версию нашего перевода Сказаний Этернии. На этот проект мы потратили 1,5 года. Общее время работы над переводом составило около одного года, а всё остальное время ушло на редактирование, тестирование, работу с текстурами и видео. Данный проект представляет собой перевод текста и текстур на русский язык, а также включает в себя русский кавер опенинга игры. Версия 1.00 позиционируется как полная, а её перевод составляет 100% от общего количества контента. Игра была переведена полностью с японского языка в одно лицо уважаемой Каролиной Лебедевой (Coronel Karol). Раздачи на рутрекере созданы не будут, так как содержимое нашего перевода не соответствует правилам этого ресурса. Скачать перевод можно по ссылке выше в сообщении.

Желаем вам приятной и увлекательной игры!

УЧАСТНИКИ ПРОЕКТА:
- Вадим Стрежов (Evil Finalist): руководство проекта, работа с текстурами и видео, вставка контента
- Каролина Лебедева (Coronel Karol): перевод (сюжет, сценки, квесты, НИПы и меню), редактура
- Riku_KH3: хакинг, разбор ресурсов, работа с шрифтами, внедрение субтитров в сценки
- Артём Филатов (TTEMMA): хакинг окон рамок и координат построения текста

УЧАСТНИКИ ТЕСТИРОВАНИЯ v1.00:
- Анастасия Степанова (Litrics aka Syrin): тестирование на эмуляторе PPSSPP
- Юрий Усков (ZeroCold1981): тестирование на эмуляторе PPSSPP
- Каролина Лебедева (Coronel Karol): тестирование на эмуляторе PPSSPP и консоли PS Vita
- Вадим Стрежов (Evil Finalist): тестирование на эмуляторе PPSSPP и консоли PS Vita

УЧАСТНИКИ КАВЕРА "Flying":
- Екатерина Шадринцева (miru): вокал
- Динара Овчинникова (Polka): перевод с английского, адаптирование лирики
- Егор Зрайковский (БАКА): звукорежиссура
- NeXoGone: работа с видео
- Вадим Стрежов (Evil Finalist): работа с субтитрами


Альтернативная ссылка на VK Video:
https://vk.com/video-181931421_456239190

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
1. Перевод словаря имён и терминов:
https://temple-tales.ru/games/toe/dictionary.html
2. Перевод интервью с разработчиками:
https://temple-tales.ru/games/toe/interview.html

Если вы желаете отблагодарить финансово за труды нашей команды, то ознакомьтесь с информацией ниже. Поверьте, эти проекты очень сильно нуждаются в помощи, так как стоимость их реализации высокая. И продвигаются проекты только лишь за счёт сборов средств на оплату услуг переводчика японского языка и программистов.

Идёт сбор средств на оплату услуг
переводчика японского Tales Of Xillia 2:

Собрано: 26 593,34 / 350 000
Карта Сбербанка: 5469 9802 0654 4716
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 21.11.2024
Список донатеров: https://temple-tales.ru/donations_tox2.txt

Идёт сбор средств на оплату услуг
программистов и переводчика японского
Star Ocean 2: The Second Story R + Star Ocean 2: Second Evolution:

Собрано: 13 333,34 / 350 000
Карта Сбербанка: 5469 9802 0654 4716
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 21.11.2024
Список донатеров: https://temple-tales.ru/donations_so2.txt

Идёт сбор средств на оплату услуг программиста
и переводчика Valkyrie Profile: Lenneth:

Собрано: 85 000 / 200 000
Карта ВТБ: 4272 2908 4659 1246
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 23.11.2024
Список донатеров: https://temple-tales.ru/donations_vp1_psp.txt

Оффлайн Partsigah

  • Пользователь
  • Сообщений: 5463
  • Трёхглазый пуйошник
    • Steam
    • Youtube
    • Просмотр профиля
Конкурс продлится до 31 января 2025 года 20:00 по московскому времени.
Ну, как раз успею к версии 1,1 допройти фантазию.

Оффлайн md_max

  • Пользователь
  • Сообщений: 414
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
А зачем тебе PS1-версия? PSP по многим параметрам лучше.
Да, есть момент с ресайзингом 4:3 <> 16:9. Много где бэграунды порезаны.
Все-таки чем она лучше, за исключением облегчения перевода?
Канон это версия для ps1. Там есть вибрация, в psp версии её нет по понятным причинам. Да и картинка более плавная в версии для ps1.
Это риторические рассуждения. Спасибо за перевод, но версия для ps1 по мне лучше.


Оффлайн grooomy

  • Пользователь
  • Сообщений: 1689
    • Просмотр профиля
Да, версия для PS1 имеет ряд преимуществ (и на PSP воспроизводится и на вите). Но обладателям современных широкоформатных устройств наверняка лучше будет версия PSP из-за её 16:9, никто не станет вникать в тонкости. Ну а нам олдам конечно лучше была бы версия для PS1 с не порезанной картинкой. Я например на старом CRT мониторе это дело гоняю и на Anbernic RG35xxSP и там и там 4:3 с шейдерами. Никакие PSP версии и рядом не стояли.

Но и за это большое спасибо.

Оффлайн Partsigah

  • Пользователь
  • Сообщений: 5463
  • Трёхглазый пуйошник
    • Steam
    • Youtube
    • Просмотр профиля
Прошёл вчера перевод фантазии. Один раз в диалоге на карте сабы съехали, а так всё ровно.
Завалил почти все доп. квесты за счёт чего интересно, сколько в игре концовок? У меня был ласт босс на три фазы.

Оффлайн Беларус

  • Модератор
  • Сообщений: 1484
    • ВКонтакте
    • Steam
    • Просмотр профиля
в диалоге на карте сабы съехали
Чего не сфоткал? Может, помнишь какие-то слова из того диалога?

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Ориентировочная дата выпуска полной русской локализации v1.000

Сейчас у нас идёт завершение редактуры Сказаний Перерождения и подготовка к финальному тестированию. Ориентировочную дату выпуска полной русской локализации v1.000 мы наметили на середину или конец лета этого года. Те, кто давно следит за переводом этой игры, знают, что мы пытались начать этот проект ещё аж в 2014 году, но сразу столкнулись с рядом проблем и ограничений. Радует, что теперь вся самая сложная работа в техническом плане осталась позади. За это время накопилось столько всего, чем непременно хочется поделиться в отдельных записях. В ближайшие месяцы до выпуска перевода мы запишем и покажем вам несколько видеодемонстраций, а также расскажем о проработке глоссария, как мы уже делали это по Tales of Eternia и Star Ocean 6: The Divine Force. Но это далеко не всё, на чём мы остановимся. Ряд последующих новостей будет также посвящён самому процессу нашей локализации Сказаний Перерождения. Ожидайте дальнейших новостей.

Страница нашей локализации:
https://temple-tales.ru/translations_torps2.html

Немного истории в числах:
- Начало проекта: 19.08.2014
- Пауза: середина 2015 — конец 2020
- Демо перевод v0.005: 30.12.2020
- Демо перевод v0.012: 26.07.2021
- Демо перевод v0.040: 26.06.2022
- Демо перевод v0.075: 08.07.2023
- Демо перевод v0.201: 27.09.2024
- Завершение проекта: 1 квартал 2026
- Дата релиза: 2-3 квартал 2026


УЧАСТНИКИ ПРОЕКТА:
- Evil Finalist (Вадим Стрежов): руководство проекта, разбор ресурсов, вставка контента, работа с текстурами и видео, перевод (меню)
- Coronel Karol (Каролина Лебедева): редактура и перевод (сценарий, сценки, квесты, НИПы, хроника и меню), перевод глоссария
- Shiro: перевод (сценарий, сценки, квесты, НИПы, хроника и меню)
- Polka (Динара Овчинникова): работа с текстурами, логотип
- RangerRus: хакинг, разбор ресурсов

ДОПОЛНИТЕЛЬНЫЙ ХАКИНГ:
- Ethanol
- Julian Lightfellow
- SymphoniaLauren
- Stewie
- StorMyu
- Evil Finalist
- Riku_KH3
- TTEMMA
- RedCode

УЧАСТНИКИ ТЕСТИРОВАНИЯ v1.000:
- OldSchool Jill (Юлия Андреева): тестирование на эмуляторе PCSX2
- Litrics (aka Syrin) (Анастасия Степанова): тестирование на эмуляторе PCSX2
- Lost Dreamer (Сергей Аненко): тестирование на эмуляторе PCSX2
- Coronel Karol (Каролина Лебедева): тестирование на эмуляторе PCSX2
- Evil Finalist (Вадим Стрежов): тестирование на PS2 FAT и платформе Steam Deck OLED

УЧАСТНИКИ ТЕСТИРОВАНИЯ ДЕМОПЕРЕВОДОВ:
- Scorp666ion (Максим Гребенщиков)
- Dmitry Caelum (aka Stella) (Дмитрий Каелум)
- Vikent (Викентий Денисов)
- Kagiri-To (Павел Хезин)
- Coronel Karol (Каролина Лебедева)
- Evil Finalist (Вадим Стрежов)
- Allegretto (Евгений Овчинников)
- Polka (Динара Овчинникова)

УЧАСТНИКИ СОЗДАНИЯ РУССКОГО КАВЕРА "Good Night / Спокойной ночи":
* Кавер выполнен командой Harmony Team
- Roanne: вокал
- Cleo-chan, j.am, Polka, Yuki Eiri: перевод и адаптация лирики
- HaruWei, Epistafy: звукорежиссура
- Evil Finalist: Работа с субтитрами

⬜ ТЕКУЩАЯ ИНФОРМАЦИЯ О ЛОКАЛИЗАЦИИ ВСЕХ ПУНКТОВ ИГРЫ:

(1) Технический план:
🟢 100% Разбор ресурсов
🟡 095% Текстуры
🟢 100% Видеоролики
🟢 100% Вставка контента
🟡 090% Редактура
🟡 090% Тестирование

(2) Текстовый план (диалоги):
🟢 100% Сюжет
🟢 100% НИПы
🟢 100% Надписи
🟢 100% Сценки
🟢 100% Квесты
🟢 100% Битвы
🟢 100% Глоссарий

(3) Текстовый план (меню):
🟢 100% Синопсис
🟢 100% Энциклопедия
🟢 100% Бестиарий (названия)
🟢 100% Бестиарий (описания врагов)
🟢 100% Открытия
🟢 100% Титулы
🟢 100% Предметы
🟢 100% Рецепты
🟢 100% Форс (приёмы)
🟢 100% Куб форс
🟢 100% Тактика
🟢 100% Скрытые способности
🟢 100% Локации (описания)
🟢 100% Руководство (сражения)
🟢 100% Магазины (названия)
🟢 100% Система поставки продуктов
🟢 100% Кнопки и другие мелочи (меню)
🟢 100% Кнопки и другие мелочи (сражения)
🟢 100% Настройки
🟢 100% Магазин бонусов
🟢 100% Титры
🟢 100% Саундтрек (трек-лист)

(4) Дополнительный хакинг:

🟢 100% Реверс-инжиниринг для поддержки субтитров в видеороликах (софтсабы)
🟢 100% Реверс-инжиниринг для поддержки субтитров в битвах (софтсабы):
     а) проставление таймингов в соответствии с текстом и озвучкой
     б) проставление имён озвученных персонажей и сверка с озвучкой
     в) субтитры дополнительных сюжетных диалогов, победных лозунгов, реплик во время исполнения приёмов и т.д.
🟢 100% Реверс-инжиниринг для поддержки полной кириллицы в текстуре 00001.tm2:
     а) расширение количества русских букв до 33-х для 3-х типов шрифта в битвах и меню
     б) приведение в полное соответствие кодировки в диалогах и во всех остальных областях игры, значения которых отличались
     в) исправление отображения всех символов кириллицы во всплывающих названиях скрытых способностей во время битв
🟢 100% Исправление отображения ширины знаков в диалогах
🟢 100% Центрирование текста в сценках
🟢 100% Перенос кнопки "Далее" в отдельных сценках
🟢 100% Уменьшение размера пробела между словами (в 2 раза)
🟢 100% Исправление отображения знака ";"
🟢 100% Добавление новых иконок стихий вместо кандзи
🟢 100% Исправление ограничения вывода текста в битве с Вальту
🟢 100% Добавление предмета "яблочное желе" в 4 магазина в начале игры (как в PSP-версии)
🟢 100% Перенос строки "СНАРЯЖЕНИЕ ЗАКАЛЕНО" вниз для корректного отображения других всплывающих строк (в битвах)
🟢 100% Исправление алфавитной сортировки названий врагов в энциклопедии
🟢 100% Расширение окон описаний врагов в энциклопедии
🟢 100% Перенос и расширение вместимости текста в энциклопедии
🟢 100% Исправление моноширинного шрифта на обычный во всплывающих строках при получении ингредиентов из волшебного котелка
🟢 100% Исправление моноширинного шрифта на обычный в разных строках меню в пунктах поставки продуктов
🟢 100% Исправление моноширинного шрифта на обычный в разных строках энциклопедии
🟢 100% Добавление дополнительной строки в названии типов ландшафта на карте мира и центрирование текста в обоих строках
🟢 100% Исправление переносов строк и отображения ширины знаков в хронике
🟢 100% Перестановка ячеек, всплывающих при приготовлении блюд после битв для их корректного отображения

Оставайтесь с нами.
Дальше будет только интереснее ; )

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

VK Donut: https://vk.com/donut/temple_of_tales_translations
VK Donut: https://vk.com/donut/temple_of_tales_quiz
VK Donut: https://vk.com/donut/temple_of_tales_music
Boosty: https://boosty.to/temple-tales
------------------------------------------------------------------------------------
Идёт сбор средств на оплату услуг
переводчика японского Tales Of Xillia 2
:
Собрано: 150 826,64 / 350 000
Карта Сбербанка: 5469 9802 0654 4716
ЮMoney/Яндекс кошелёк: 410011235819402
последнее обновление от 09.03.2026
Список донатеров: http://temple-tales.ru/donations_tox2.txt
------------------------------------------------------------------------------------
Наше основное сообщество по переводам ВКонтакте: https://vk.com/temple_of_tales_translations
Наше сообщество по конкурсам ВКонтакте: https://vk.com/temple_of_tales_quiz
Наше музыкальное сообщество ВКонтакте: https://vk.com/temple_of_tales_music
Наш телеграм-канал: https://t.me/temple_tales
Наш Discord: https://discord.gg/hsbhqPyCW2
Наш YouTube канал: https://www.youtube.com/@temple-tales
« Последнее редактирование: 17 Март 2026, 19:27:09 от Evil Finalist »

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Введение


Добрый день! На связи админ Evil Finalist. Пришло время делиться с вами информацией о процессе работы над Сказаниями Перерождения, который длился все эти годы. Так как этот проект стоит особняком и о нём лучше рассказывать совершенно в другом ключе, то придётся посвятить этому несколько постов. Ведь работа над Tales of Rebirth приближается к концу, а перед всеми релизами, вышедшими из-под нашего пера (Tales of Eternia и Star Ocean 6: The Divine Force), мы делимся интересной информацией. Впоследствии все записи по этой теме соберём в отдельную статью и выложим её на нашем сайте. А пока что напишу немного вводных слов, чтобы вы понимали, чего стоит ожидать в ближайшие месяцы.

Эта история про одну из самых капризных локализаций, которую мы пытались начать в 2014 году. Подумать только, прошло почти 12 лет. Какое-то время меня не покидала мысль, что этому не будет конца и края. Но особая любовь к этой видеоигре не давала опустить руки. Tales of Rebirth не является каким-то эталоном или шедевром в жанре японских RPG, но у неё есть своя уникальная сердцевина, явно выделяющаяся на фоне других тайтлов. Она может затянуть и не отпускать.

За прошедшие годы работы над проектом у нас накопилось множество интересных ситуаций. На сегодняшний день большая часть из них не представляла бы таких трудностей, как 5-10 лет назад. Ведь тогда я совершенно ничего не понимал: ни в разборе ресурсов игр, ни в монтировании видео, ни в обработке текстур, поинтерах и в том, как с ними взаимодействовать, а также как работать с hex-редактором и со многим другим. Особую сложность добавляло ещё то, что эта игра не была официально переведена на английский язык, а также в сети отсутствовали какие-либо фанатские релизы – так было вплоть до конца 2024 года.

В нашей команде никогда не было постоянного программиста или ромхакера, как у наших коллег по цеху, который всегда мог бы быть на подхвате и решать любые проблемы в каждом проекте. Поэтому на начальном этапе нам посильную помощь оказал RangerRus – ему посвящена отдельная запись (https://vk.com/wall-181931421_2526). Рейнджер справился с главными архивами и базовыми форматами, а потом ушёл со сцены фанатских переводов. В процессе работы с готовым материалом я обнаружил, что при первичном анализе файлов было пропущено много текстов и текстур. На самом деле ресурсы Tales of Rebirth таят в себе гораздо больше сюрпризов и ограничений, чем могло показаться на первый взгляд. Необходимо было найти всё остальное, но на тот момент я понятия не имел, как к этому подступиться. Именно поэтому мне пришлось искать других умельцев, которые могли бы решить разные задачи или помочь в ромхакинге добрым советом. Обо всех этих людях я непременно расскажу в будущих записях. Очень часто поиски и просьбы о помощи заходили в тупик, и ряд задач приходилось решать самому. Со временем анализ структуры файлов привёл к пониманию того, что даже без знания языков программирования можно вполне справляться своими силами – не обязательно всегда просить о помощи там, где оступился. Тем не менее, методом проб и ошибок можно очень долго блуждать и ни к чему не прийти.

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

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

Оставайтесь с нами.
Дальше будет только интереснее!


Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Глава 1 + Глава 2

https://vk.com/temple_of_tales_translations
https://temple-tales.ru/games/tor/russian_localization.html
Все ссылки для скачивания программ указаны в статье на сайте.

Глава 1. Сборник базовых программ
Первое, с чего стоит начать, – это описания базовых программ. Большая часть из них вам должна быть знакома, а какими-то, скорее всего, вы уже пользуетесь (например, Microsoft Excel). В статье я приложил таблицу, в которой указал их основные функции, сослужившие службу во время реализации нашего проекта, а также ссылки для скачивания этих программ. Отдельно стоит упомянуть онлайн-сервис Google Keep. Для его работы обязательно требуется аккаунт в Google. Это очень мощный инструмент по распознаванию текста на изображениях, который выдаёт лучший результат по сравнению с конкурентами. В нашем деле он очень сильно пригодился во время составления лок-кита, но об этом я расскажу позже.

01. Microsoft Excel
- Программа для работы с электронными таблицами.
02. Notepad++
- Продвинутый текстовый редактор.
03. WinMerge
- Приложение для сравнения и слияния текстовых файлов.
04. Google Keep
- Оптическое распознавание текста, дающее результат высокой точности.
05. Photoshop
- Продвинутый графический редактор.
06. Jasc Paint Shop Pro 9
- Простой графический редактор.
07. OPTPiX iMageStudio 3.12a
- Графический редактор для создания и редактирования текстур платформы PS2.
08. HprSnap 5.6
- Программа для быстрого захвата изображений с экрана и их редактирования.
09. Crystal Tile 2
- Универсальный редактор тайловой графики.
10. TileMolester v0.19b
- Альтернативный редактор тайловой графики.
11. TiledGGD v2.1.2.1
- Альтернативный редактор тайловой графики.
12. Texture Finder v2.1
- Утилита для поиска текстур в различных файлах.
13. Hex Editor Neo v6.54
- Универсальный hex-редактор с огромным набором функций.
14. HxD 2.5
- Простой hex-редактор с минимальным набором функций.
15. Total Commander 11.56 Extended
- Гибкий файловый менеджер.
16. UltraISO 9.7.6.3860
- Создание и редактирование различных форматов образов CD/DVD-дисков.
17. Sony Vegas
- Универсальный видеоредактор для монтажа видео и аудиообработки.
18. TMPGEnc Video Mastering Works 5
- Приложение для перекодирования видео.
19. PSS demux v1.05
- Инструмент для расклейки видеофайлов формата PSS на отдельные части: видео (MPEG2) и аудио (WAV).
20. Cube Media Player 2
- Проигрыватель для извлечения аудио- и видеофайлов из игр на платформе PS2.
21. MFAudio 1.1
- Аудио конвертер форматов платформы PS2.
22. Audacity
- Аудиоредактор звуковых файлов, который предназначен для работы с несколькими дорожками.
23. ps2str
- Инструмент для склеивания аудио (SS2) и видео (MPEG2) файлов в формат PSS.

Глава 2. Сборник уникальных программ
В этой главе я кратко описал все программы, которые были созданы специально для работы над этим проектом и указал ссылки для их скачивания. Многие из них универсальны – они стабильно продолжают облегчать процесс работы над нашими проектами. А ещё я упомянул зарубежные разработки фанатов, без которых многие моменты дались бы гораздо тяжелее в плане перевода и укладки текста. Впоследствии в остальных главах я частенько буду ссылаться на эти программы, так как о них нужно будет рассказать подробнее.

01. ToR toolkit
Разработчик: RangerRus
- Распаковка/запаковка файлов форматов dat, scpk, sce.
- Распаковка/запаковка отдельных файлов: 11190.bin, 11181.pak3, 00013.pak3, 11217.bin.
02. CODES
Разработчик: RangerRus
- Программа для обработки текстов с заданной таблицей кодов (tbl).
(Только для работы с текстами; не работает с некоторым диапазоном HEX-значений между строками 0d и 0a)
03. TXTCompile
Разработчик: RangerRus
- Склейка всех текстовых файлов в единый массив данных с указанием исходных названий файлов.
- Расклейка единого массива данных на отдельные текстовые файлы.
04. TxSrt
Разработчик: RangerRus
- Анализ текстового файла и создание списка дубликатов строк этого файла.
- Сортировка и удаление из текстового файла заданных дубликатов строк.
- Обратная сортировка текстового файла с возвращением заданных дубликатов строк.
05. copyfiles
Разработчик: RangerRus
- Копирование всех файлов заданного типа во всех директориях и поддиректориях в отдельную папку.
- Обратное перемещение всех файлов заданного типа из общей папки в исходные директории и поддиректории.
06. COMPTOE
Разработчик: Soywiz
- Компрессор/декомпрессор файлов, которые имеют тип сжатий 1 (LZ77) или 3 (LZSS+RLE).
07. HexFileReplace
Разработчик: XiGMA
- Вставка "файла 1" в любой "файл 2" по заданному смещению.
08. Mass Replace HEX
Разработчик: XiGMA
- Программа для обработки текстов с заданной таблицей кодов (tbl).
(В отличие от приложения CODES, работает со всеми диапазонами HEX-значений)
09. GameScriptEditor
Разработчик: Lady3millennium
- Специализированный текстовый редактор с рядом уникальных функций, который упрощает работу с текстом в процессе перевода, а также имеет окно предварительного просмотра с преобразованным текстом в соответствии с набором различных условий.
10. ExtractorExcelToText
Разработчик: Lady3millennium
- Извлечение текста из Excel в текстовый файл с заданным диапазоном и возможностью перезаписи.
11. SearchingDuplicatedStrings
Разработчик: Lady3millennium
- Анализ текстового файла и упорядоченное создание списка дубликатов строк этого файла.
(В отличие от приложения TxSrt, сортирует все дубликаты в одном месте для того, чтобы можно было отследить количество дубликатов каждой строки)
12. TextToHexConverter
Разработчик: Lady3millennium
- Преобразование текста в шестнадцатеричные значения.
(В отличие от онлайн-декодеров, данная программа не имеет ограничений и позволяет работать с текстами больших размеров и любым количеством строк, а также позволяет задавать нужные интервалы и символы между значениями)
13. Pakomposer (v1.9fix2)
Разработчик: Infernal
- Распаковка и запаковка контейнеров, которые имеют тип 0, 1 и 3.
- Анализирует файлы и применяет декомпрессор COMPTOE, если файлы имеют тип сжатий 1 (LZ77) или 3 (LZSS+RLE).
- Анализирует распакованные файлы и применяет компрессор COMPTOE, если файлы необходимо сжать типом 1 (LZ77) или 3 (LZSS+RLE).
14. abcde
Разработчик: abw
- Универсальное извлечение и вставка текста с гибким набором настроек.
15. ELF Text Injector
Разработчик: RikuKH3
- Вставка дампа текста, созданного через приложение "abcde: Atlas + Cartographer", в заданный файл с учётом оптимизации (дубликаты строк заменяются одной общей строкой, адрес к которой присваивается всем прилегающим к ней поинтерам).
16. ToR MFH to TIM2 Extractor
Разработчик: TTEMMA
- Извлечение файлов TIM2 из контейнера MFH.
17. TextRangeModule
Разработчик: TTEMMA
- Вставка заданных значений в любой файл по заданному смещению.
(В отличие от приложения HexFileReplace, здесь заданные значения и смещения указаны только в отдельном текстовом файле)
18. SFM2 module
Разработчик: Ethanol
- Извлечение/вставка текста из типа файлов SFM2.
19. Pakomposer (v1.10fix2)
Разработчик: Ethanol
- Обновлённая версия программы старой программы "Pakomposer v1.9fix2", которая корректно строит парсинг файлов, а также учитывает формат разметки области хранения данных для контейнеров.
20. tn_anp3
Разработчик: SymphoniaLauren
- Конвертор графических файлов из формата anp3 в TIM2.
21. ToR Toolset (PSP)
Разработчик: Vash
- Распаковка/запаковка типов файлов: dat, scpk, skt, sce.
22. armips
Разработчик: Kingcom
- Реверс-инжиниринг через ассемблер armips для применения различных хаков.
311550-0

Просьба не размещать с помощью тэга img изображение со стороной более 700 пикселей. ghostdog3
« Последнее редактирование: 06 Апрель 2026, 09:46:04 от Evil Finalist »

Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Глава 3. Начальный этап исследования игровых ресурсов
https://vk.com/temple_of_tales_translations
https://temple-tales.ru/games/tor/russian_localization.html

Дело было в 2014 году. После хакинга Tales of Symphonia я снова обратился к RangerRus по поводу разбора ресурсов Tales of Rebirth PS2-версии. Он ответил, что в головной части главных архивов DAT.BIN, FLD.BIN, MOV.BIN отсутствуют указатели к файлам. Это означает, что основные бинарники являются просто склейкой файлов. Где искать таблицу с указателями — неизвестно. В тот период у меня не было хороших знакомых на сцене ромхакинга, да и я сам понятия не имел, где именно среди файлов искать эту таблицу.

Сам RangerRus тоже не понял, где искать, хотя, скорее всего, ему просто не хотелось тратить время на её поиски. Почему я так решил? Дело в том, что сейчас я сам могу спокойно разобраться в большей части таких моментов, когда бинарник находится в одном месте, а таблица к нему — в другом. Метод поиска я чуть позже распишу в следующей главе.

А тогда я попытался связаться с французским ромахакером StorMyu, который в 2010 году основал собственный мультиязычный проект по переводу Tales of Rebirth. Он занимался сразу обеими версиями: PS2 и PSP. На одном из форумов он не отвечал, потому пришлось попытать удачу через электронную почту. В итоге StorMyu пошёл мне на встречу и согласился помочь, правда, только небольшой консультацией. Делиться наработками в виде программ он не захотел. StorMyu дал понять, что таблица находится в исполняемом ELF-файле, а ещё указал смещение (т.е. офсет - так называют адрес, указывающий на начало определённых данных в заданном файле), с которого начинается сама таблица. Также он предоставил таблицу кодов (TBL) к текстам игры. И на этом, пожалуй, всё.

Но эта помощь стала отправной точкой, и дело наконец-то пошло в гору. Таблица находилась по смещению 0xD76B0 в файле SLPS_254.50. Так как ToR — игра для консоли PS2, то принцип построения порядка байтов в поинтерах здесь имеет вид little-endian, что характерно для этой платформы. Это тип поинтеров, у которых порядок байтов начинается от большего значения к меньшему, так что легко можно прочитать и понять адрес, если просто развернуть этот порядок. Для простоты понимания, поинтеры (указатели) - это участок памяти размером по 2 или 4 байта, указывающий на начало данных другого участка памяти (в нашем случае - файлов, строк, таблиц и т.д.).

После этого RangerRus сделал первую ревизию приложения ToR toolkit. На тот момент она могла лишь распаковывать и запаковывать главные архивы DAT.BIN, FLD.BIN, MOV.BIN с учётом декомпрессии и компрессии внутренних файлов. Практически все файлы в бинарниках имели тип сжатия 3 (LZSS+RLE). Но благо, что в сети уже была программа COMPTOE по работе с этим типом сжатия. За неё стоит сказать спасибо уважаемому ромхакеру Carlos Ballesteros Velasco (Soywiz). Это такой интересный человек, руководивший испанской командой "Tales Translations", которая занималась фанатскими переводами игр серии Tales of (https://blog.tales-tra.com). За время своей деятельности они успели перевести на испанский язык Tales of Destiny (PS1), Tales of Eternia (PSP), Tales of the Abyss (PS2) и Tales of Vesperia (X360). Soywiz решил не утаивать свои труды и поначалу размещал репозитории практически всех своих проектов. Правда, в какой-то момент он перестал это делать, но в будущем нам ещё повезёт: репозиторий перевода Tales of the Abyss (PS2) был одним из последних загруженных на GitHub, что очень сильно помогло уже в нашем проекте по переводу TotA. Впрочем, это уже совсем другая история.

Гораздо позже я обнаружил, что почти во всех играх Namco Tales Studio используется тип сжатия 3 (LZSS+RLE). Так что в будущем программа COMPTOE позволит нам распаковать практически любой файл во множестве игр серии Tales of и даже совладать с особыми контейнерами-матрёшками. Если все файлы в главном архиве сжаты, то это нормально. Так делают многие разработчики. Но если разжатый файл является контейнером, а внутри него — множество файлов, и среди них есть те, которые сжаты снова, а в разжатом виде опять определяются как контейнеры, то это уже второй уровень — в глубину. То есть когда внутри контейнера находится ещё один контейнер. Бывает даже три уровня в глубину и более. Поверьте на слово: например, в ресурсах Tales of Graces f (PS3) встречаются файлы, которые удаётся достать только лишь погрузившись в глубину на три уровня и более.

Временами я буду делать лирические отступления, чтобы немного рассказать вам о том, как работа с Tales of Rebirth положительно повлияла на множество других наших переводов. А ещё, пользуясь моментом, планирую освещать деятельность других команд и людей, которые были причастны к нашему общему делу и оставили в нём свой след.

Возвращаясь к анализу главных архивов, стоит пройтись по всем основным форматам, которые там находятся. Здесь я приступил к изучению того, что находится внутри каждого из них и что следует сразу отсекать. В файлах FLD.BIN для локализации нет ничего необходимого, поэтому описание этого файла я опущу. В MOV.BIN находятся все видеофайлы в формате PSS (видео MPEG2 и аудио SS2). Но обрабатывать их все необязательно. Для локализации потребуются только эти файлы:
00.mpg - опенинг
13.mpg - титры
17.mpg - сюжетный видеоролик в Белсасе
18.mpg - эпилог
19.mpg - пролог

И вот мы подбираемся к самому основному архиву - DAT.BIN. Именно здесь и находится всё самое основное, что мы будем искать.





Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Глава 4. Разбор основных форматов и поиск данных в оперативной памяти
https://vk.com/temple_of_tales_translations
https://temple-tales.ru/games/tor/russian_localization.html

После того, как мы с Рейнджером определились с идентификацией всех основных форматов в главном архиве DAT и отсортировали их по папкам, мне нужно было решить, какие следующие форматы файлов заказать для разбора.

Так как у меня уже был небольшой опыт работы над переводом Tales of Symphonia, я понимал, что, скорее всего, не вся часть текста будет в 2-3 разных форматах. Это было бы слишком просто. Если так случается, что диалоги — в одном формате, другой особый тип диалогов или текстов описаний — во втором, а весь текст менюшной составляющей — в третьем, то это неимоверная удача. Примерно так было в следующих играх: Tales of Xillia 1-2 (весь текст в одном формате), Tales of Legendia (диалоги и сценки в одном формате, а тексты меню — во втором) и в Tales of Symphonia: Dawn of the New World (весь текст диалогов, как и в Легендии, в одном формате, а все тексты, относящиеся к меню, скомпилированы во втором формате). Но Сказания Перерождения не тот случай. Это одна из тех игр старой школы, где каждая мелочь находится в разных местах и форматах. И, к сожалению, я не сразу сообразил, где все они располагаются. В будущем из-за этого мне придётся разбираться долго и кропотливо в каждом из них, потому что по каким-то мистическим обстоятельствам привлекать сторонних людей для помощи со многими другими нашими проектами получалось хорошо, а вот с Tales of Rebirth постоянно не везло.

После долгих поисков и изучений файлов стало понятно, что основной текст с диалогами, сценками и прочим находится в файлах формата SCE. Однако они были сгруппированы по разным типам контейнеров. Основные диалоги находились в контейнерах SCPK, а сценки — в SKT (Рейнджер почему-то назвал этот тип контейнеров SCE, как и расширение текстового формата). В итоге вторая часть заказа для Рейнджера заключалась в разборе форматов SCPK и SCE. Я не стал заказывать разбор SKT, так как посчитал излишним работать с ещё одним уровнем распаковки и запаковки. Поэтому я попросил хакера сделать так, чтобы программа сразу извлекала файлы SCE из SKT и делала дампы текстов из них без вмешательства пользователя. Спустя несколько лет я об этом пожалею, потому что отдельную распаковку для SKT всё же нужно было заказать. Кроме того, как выяснится в будущем, в ресурсах будут контейнеры и других типов: PAK0, PAK1, PAK2 и PA3. Но об этом я расскажу позже в другой главе.

В итоге в первые месяцы работы над переводом я решил пойти по пути отсеивания. Запустил игру и начал искать остальные встречающиеся тексты на экране через просмотр оперативной памяти эмулятора. Здесь стоит отдать должное уважаемому ромхакеру Артёму Филатову (TTEMMA). Он первый посоветовал этот способ и тем самым облегчил страдания, чтобы мне не пришлось искать бесконечно иголку в стоге сена, перебирая все распакованные файлы из главных архивов. Выбор пал на hex-редактор HxD. Ниже я распишу метод поиска через оперативную память и заострю внимание на каждом этапе по отдельности. Так как данный метод позволяет очень точно найти нужный файл, а также очень сильно облегчает процесс различных манипуляций практически с любыми файлами.

Этап 1. Работа с таблицей кодов

а) Перед тем, как приступить к поиску текста в Tales of Rebirth, нужно настроить работу с таблицей кодов, так как в этой игре своя уникальная кодировка. Здесь стоит вспомнить помощь ромхакера StorMyu. В предыдущей главе я упоминал, что он предоставил таблицу кодов (TBL). Выглядит она примерно вот так:



б) Если кому-то интересно, как она выглядит полностью, то можете скачать таблицу по этой ссылке (https://disk.yandex.ru/d/5Wk3yHVYCIHpxw) и оценить масштаб работы программиста. В ней около 3,5 тысяч знаков и значений, которые ему пришлось идентифицировать. Это очень муторная и кропотливая работа. Знаю не понаслышке, потому что мы делали то же самое с таблицей кодов для Tales of Phantasia (PS1). Кстати, в некоторых местах таблица у него неточная. Это я заметил уже в процессе работы над проектом. Поэтому со временем эту таблицу пришлось подкорректировать в соответствии с правильными значениями. Для наглядности приведу несколько примеров с изменениями:

было > стало
E27B=洲 > E27B=秀
E27C=秀 > E27C=秋
E27D=完 > E27D=終
E27E=終 > E27E=繍
E27F=繍 > E27F=習


в) Затем я настраиваю преобразование кодов в приложении CODES (упоминал во 2-й главе), которое отдельно заказывал у RangerRus специально для таких вот манипуляций. Чтобы можно было сделать быстрое преобразование из обычной японской кодировки Shift-JIS в уникальные значения игры и обратно.

99 A3; 82 9f;
99 A4; 82 a0;
99 A5; 82 a1;
99 A6; 82 a2;
99 A7; 82 a3;
99 A8; 82 a4;
99 A9; 82 a5;
99 AA; 82 a6;
99 AB; 82 a7;
99 AC; 82 a8;

82 9f; 99 A3;
82 a0; 99 A4;
82 a1; 99 A5;
82 a2; 99 A6;
82 a3; 99 A7;
82 a4; 99 A8;
82 a5; 99 A9;
82 a6; 99 AA;
82 a7; 99 AB;
82 a8; 99 AC;

Этап 2. Преобразование кодировки текста

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



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



в) После этого выбранную область вставляем в рабочее окно онлайн-сервиса Google Keep и дожидаемся обработки изображения. А потом жмём кнопку "Распознать текст".



г) Далее копируем распознанный текст в один из рабочих файлов программы CODES, а потом запускаем обработку файла для преобразования символов из кодировки Shift-JIS в кодировку игры.



д) И после, имея на руках преобразованный файл, открываем текстовый файл с преобразованными кодами в любом удобном hex-редакторе и выбираем область текста, которую нужно будет искать в оперативной памяти.



Этап 3. Поиск текстов через оперативную память

а) Открываем hex-редактор HxD, нажимаем в верхней строке "Инструменты", а потом выбираем пункт "Открыть основную память". Из представленного списка процессов выбираем эмулятор PCSX2 и нажимаем "ОК".



б) После того, как hex-редактор загрузит все значения эмулятора из оперативной памяти, открываем поиск с помощью горячих клавиш CTRL+F, затем выбираем вкладку "Hex-значения" и вставляем тот набор значений или текст, который я отметил в пункте "д": e8 93 9d 64 99 cd e8 fc 99 ba 99 b5 99 e3 99 c8. А теперь нажимаем "Найти всё" и ждём, когда редактор найдёт все адреса, в которых встречается данный текст.



в) В появившемся списке найденных адресов просматриваем несколько совпадений, выбираем для проверки первый из них и сверяем его с нашим преобразованным текстовым файлом. Если всё совпадает, то это значит, что мы нашли область того самого файла, в котором находится данный текст.

Внимание!!! Бывает так, что некоторые найденные данные могут не находиться в том файле, который необходимо найти. Если в следующем шаге поиски не увенчались успехом, то нужно проверять остальные найденные совпадения до тех пор, пока не найдёте нужный файл. По большей части это происходит потому, что разработчики организовали скрипт игры таким образом, чтобы данные из определённых мест дополнительно копировались в отдельные области оперативной памяти. Поэтому во время поиска вы можете наткнуться на дубликаты этих данных. Ещё бывают случаи, когда текст в оперативной памяти конструируется из отдельных блоков разных строк, но при просмотре оперативной памяти это может выглядеть так, будто это одна целая строка.



г) Теперь, когда в оперативной памяти найден файл с нужным нам текстом, можно приступить к поиску самого этого файла в распакованном архиве. Для этого мы открываем приложение Total Commander и находим директорию с распакованными файлами из архива DAT.BIN, а потом нажимаем в верхней строке на кнопку "Инструменты" и выбираем пункт "Поиск файлов". В открывшемся окне настраиваем поиск файлов в соответствии с тем, как указано на скриншоте ниже. Нужно обязательно поставить галочку в пункте "HEX-код", если мы будем искать текст из шестнадцатеричных значений. В поле с текстом вводим набор значений, который я отметил в пункте "д": e8 93 9d 64 99 cd e8 fc 99 ba 99 b5 99 e3 99 c8. После этого жмём на кнопку "Начать поиск" и ждём завершения. Как я показал на примере ниже, данный текст находится в файле 11190.bin. Это своеобразный текстовый файл, в котором находится весь текст хроники.

Внимание!!! На последнем этапе вам может показаться, что можно было пропустить поиск текста через оперативную память и после пункта "д" (выбор преобразованного текста) сразу приступить к пункту "и" (поиск с помощью Total Commander). Да, так сделать можно, и в какой-то момент вам будет сопутствовать удача, но рано или поздно вы столкнётесь с тем, что таким способом найти можно не все тексты. Потому что часто бывает, что текст находится совсем не там, где вы ищете с помощью Total Commander. Допустим, если какой-то из распакованных файлов — матрёшка, а в нём находится нужный нам текст, но он сжат или зашифрован, то поиск не увенчается успехом. Поиск текста через оперативную память позволяет убедиться в том, что текст действительно находится в оперативной памяти, и код игры его обрабатывает. Разумеется, при условии, что текст представлен в обычном виде, а не в виде глифов (бывают и такие случаи). Кроме того, поиск через оперативную память позволяет выбрать из найденной области любой диапазон значений и использовать их для дальнейшего поиска с помощью Total Commander. Также найденный текст можно попробовать изменить и посмотреть, как отобразятся изменения в реальном времени во время игрового процесса. Это очень удобно для проверки различных значений кодировки текста. А ещё данным методом можно искать в оперативной памяти не только текст, но и любые другие данные, если вы понимаете, как это нужно делать.


Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Глава 5. Разбор дополнительных файлов и начало работы с оверлеями
https://vk.com/temple_of_tales_translations
https://temple-tales.ru/games/tor/russian_localization.html

Пока Рейнджер был занят написанием кода по моему заказу, я искал остальные не найденные тексты, которые относились преимущественно к части игрового меню (хроника, различные описания, руководство, названия предметов и врагов, открытия, магазины и многое другое). Таким образом, через просмотр оперативной памяти эмулятора во время игрового процесса я обнаружил текст в следующих файлах:

а) 11190.bin – хроника (краткое описание всех событий игры).
б) 11181.pak3 – меню (заголовки, кнопки, настройки и многое другое).
в) 00013.pak3 – различный текст, который отображается в сражениях (в том числе и диалоги, которые появляются на движке боевой системы).
г) 11217.bin – энциклопедия (описания врагов, руководство и история сражений).
д) SLPS_254.50 – заголовки, кнопки, имена, названия и описания (сценки, враги, тактика, скрытые характеристики, приёмы, предметы, сплавка, рецепты, титулы, открытия и локации), а также другие различные тексты, которые не используются в игровом процессе.

По мере того, как RangerRus обновлял приложение ToR toolkit, я подкидывал ему вышеперечисленные файлы, которые тоже просил разобрать. С 11190.bin особо проблем не было, так как это самый обычный текстовик: в головной части находятся поинтеры, а всё, что ниже – это склейка строк с разделителем {00} между ними.

Перед тем как приступить к описанию следующих файлов, нужно рассказать об отдельных особенных файлах, которые частенько встречаются в нашем деле фанатских локализаций. Речь пойдёт об оверлеях (overlays). Чтобы получше объяснить, что это и для чего, пожалуй, стоит немного рассказать о характеристиках консолей старого поколения. PS1 на борту имела 2 МБ оперативной памяти и 1 МБ видеопамяти, а уже более старший брат PS2 обладал 32 МБ и 4 МБ видеопамяти. В рабочем режиме консоли сначала загружают данные в оперативную память. Для разного рода игр PlayStation 1-2 этого могло хватать, но для более сложных этого было уже недостаточно. Поэтому в качестве решения была придумана система разделениях одной программы на отдельные сегменты (оверлеи), где каждая часть является отдельным файлом. Во время игрового процесса, по мере необходимости, главный исполняемый файл может подгружать и выгружать нужные оверлеи. К примеру, если вы исследуете какую-то локацию в игре, то в оперативной памяти находится главный исполняемый файл и составляющие, а как только вы вступаете в битву, то система будет выгружать часть ненужных данных и подгружать оверлей, отвечающий за все скрипты, которые необходимы в этой части игрового процесса.

Именно таким типом файлов и является 11217.bin. Этот файл служит запуском и просмотром всей энциклопедии. Соответственно, среди всех этих данных оверлея и лежит текст описаний врагов, всего руководства и историй сражений. В первой 1/5 части файла находится основной код, а чуть ниже – поинтеры, которые записаны не прямыми указателями к строкам, а с учётом расположения этого файла в оперативной памяти консоли. Это означает, что для работы с этими поинтерами нужно высчитать разницу между фактическим расположением строк и расположением в оперативной памяти. Иногда эту разницу называют "поправкой". В нашем случае поправка для многих оверлеев в Tales of Rebirth (PS2) является числовым значением 2D8900. Высчитать эту разницу можно двумя способами. Первый способ для продвинутых пользователей, которые понимают, как работать с отладчиком эмулятора PCSX2. В тот момент я даже близко не понимал, что это за функционал и как к нему подступиться. Поэтому пришлось пойти по более простому пути. Второй способ заключается в том, что, зная месторасположение поинтеров и области текста, вы запоминаете смещение первого символа из области текста, а потом ищете поинтер с наименьшим значением адреса из всего набора поинтеров. Затем берём значение наименьшего поинтера и вычитаем из него значение фактического адреса первого символа из области текста. В итоге мы получаем число, которое и будет являться той самой поправкой.

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

Это далеко не всё, что следует рассказать об этом типе файлов. На приведённом изображении ниже я наглядно показал, что помимо основных областей, в хвосте файла есть область с дополнительным кодом и условно пустая область, заполненная нулевыми значениями. Работать обычным образом с такой структурой не представляется возможным и, разумеется, это накладывает множество ограничений. В первую очередь нужно сразу понять, что ничего лишнего стирать в оверлеях нельзя. Потому что это код, который в процессе работы может что-то переписывать среди своих данных. Именно поэтому пустую область исполняемых файлов использовать так просто нельзя, потому что если вы всё же попытаетесь записать туда какие-то данные, то вы рискуете нарушить обычный порядок вещей, который был задуман разработчикам. В самом худшем случае это может привести к зависаниям и вылетам, либо просто повлечёт за собой удаление текста во время игрового процесса. Без понимания принципа работы системы не так уж просто найти причину пропадания текста. Именно поэтому в пустые области оверлеев нельзя размещать любые данные. Следующее ограничение вытекает из принципа самого устройства оверлеев. Раз уж мы не можем ничего прописывать в пустые области, то не можем и увеличивать в размерах сам файл. Так как запись оверлея в оперативную память жёстко привязана к определённому смещению, а значит, после записи этого файла в оперативную память следуют какие-то другие не менее важные данные. Область работы исполняемого файла и оверлеев – это особая область работы с кодом в оперативной памяти на консоли, в которой слишком узкие рамки. Это не тот тип файлов, которые можно спокойно расширять (как, например, файлы с диалогами). Следовательно, мы подходим к тому, что записывать новые данные мы можем только в ограниченную область текста оверлея. В нашем случае у файла 11217.bin это диапазон: 6B70 – 134FE. Когда мы только начинали работать с текстом этого файла, я даже и не подозревал, что нам не хватит места на весь объём переведённого текста. В демонстрационных релизах локализации мне приходилось сокращать часть строк, чтобы текст умещался. Но это не было решением проблемы. Потому что сокращать приходилось очень много. Впоследствии эту проблему нам помог решить программист Ethanol, которому пришлось переписать приличную часть кода игры, чтобы чтение половины текста происходило не из оверлея, а совсем из другого места, но об этом я расскажу гораздо позже в другой главе, когда дело дойдёт до описания реверс-инжиниринга. В итоге на тот момент я попросил Рейнджера написать алгоритм, который высчитывает количество знаков переведённого текста. Если общее значение превышает число под отведённое пространство в оверлее, то программа об этом уведомляет. Таким образом это было лишь временное решение, чтобы уже можно было проверять изменения в игре.

Следующие файлы 11181.pak3 и 00013.pak3 оказались ещё одним типом контейнеров. Внутри 11181.pak3 находился такой же обычный бинарный файл с текстом, как и описанный мной выше 11190.bin. В контейнере он шестой по счёту. Здесь располагался текст отдельной части меню (заголовки, кнопки, настройки и многое другое). Я попросил Рейнджера сделать распаковку и запаковку текста без работы с самими контейнером по отдельности. А вот описанию контейнера 00013.pak3 уделю побольше внимания. Внутри находятся три оверлея, которые подгружаются во время сражений. Последний из них содержит нужный нам текст для перевода. Структура этого файла выглядит примерно так:

- Основной код (~80%)
- Поинтеры
- Дополнительная область с кодом
- Поинтеры
- Дополнительная область с кодом
- Поинтеры
- Дополнительная область с кодом
- Область текста
- Дополнительная область с кодом
- Область текста
- Поинтеры
- Дополнительная область с кодом
- Область текста
- Дополнительная область с кодом
- Поинтеры
- Дополнительная область с кодом
- Пустая область (~10%)


Как видите, здесь очень много областей разного типа, распределённых на части. Тем не менее с этим файлом мы справились, и проблем он нам особо не доставил, потому что огромная часть текста этого файла используется только в режиме отладки (debug mode) для нужд разработчиков. Часть строк я спокойно сокращал, чтобы уместился весь наш перевод. Это можно делать без проблем, потому что большая часть функционала режима отладки из кода Tales of Rebirth была удалена, в отличие от других игр серии, например, Tales of Eternia и Tales of Phantasia. И поэтому в этой игре он вообще никак не задействуется. Но мы ещё вернёмся к этому файлу и остальным оверлеям в 00013.pak3, так как здесь тоже придётся проделать некоторые манипуляции во время реверс-инжиниринга. Ведь этот оверлей содержит в себе определённые ограничения, с которыми я столкнусь чуть позже, и это будет очень сильно мешать созданию качественной локализации этой игры.

Что же касается всех остальных текстов игрового меню, которые находились в исполняемом файле SLPS_254.50, то RangerRus не захотел связываться с поиском всех поинтеров этого файла, объяснив это тем, что поиск будет слишком проблемным и долгим. Поэтому он предложил сделать так: выписать начало и конец всех смещений с полезным текстом; сделать их извлечение и обратную упаковку. Разумеется, я отказался, так это автоматически накладывало бы слишком жёсткое ограничение по количеству символов на 1 строку. Работать без изменения поинтеров – ужасная затея. Представьте себе ситуацию, когда для одной строки выделено 3 байта, а слово в этой строке "Axe". Без изменения поинтеров мы можем уместить только 3 символа на русском языке. А теперь помножьте это на 100, 1000 и более случаев с разного рода уникальных ситуаций. Вот примерно о таком хаосе и идёт речь, если пытаться переводить текст игры без изменения поинтеров.

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


Оффлайн Evil Finalist

  • Пользователь
  • Сообщений: 40
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
История русской локализации Tales of Rebirth (PS2)
Глава 6. Разбор исполняемого файла ELF с помощью IDA Pro
https://vk.com/temple_of_tales_translations
https://temple-tales.ru/games/tor/russian_localization.html

Если попалась игра, в которой куча строк текста находится в исполняемом файле и с этим некому помочь, то, скорее всего, вам прямая дорога к таким инструментам обратной разработки, как IDA Pro или Ghidra. Для новичков это очень непростое погружение, и многое в этих приложениях может быть непонятным. Тем не менее часть из этого я попытаюсь объяснить, так как со всеми текстами в файле ELF Сказаний Перерождения мне пришлось поработать очень активно. И всё это для возможности гибких изменений, чтобы работать с текстом без ограничений по количеству символов на каждую строку.

На изображении наглядная визуализация распределения поинтеров на блоки по разным местам исполняемого файла:



Если мы просто откроем исполняемый файл SLPS_254.50 в хекс-редакторе, то при беглом просмотре рано или поздно наткнёмся на блоки текста, которые распределены в хаотичном порядке близко к самому хвосту файла. На изображении выше я попытался визуально изобразить степень распределения текста и поинтеров в этой области. Все поинтеры скучкованы по разным блокам, а всего этих блоков более четырёх десятков. Кроме того, многие из них попадаются прямо посреди участков с записанными текстовыми данными. Всё это очень непросто отследить, высчитать, а также написать алгоритм для извлечения и вставки текста. В этом нам поможет комплекс нескольких программ. По началу мне советовали использовать специальное приложение под названием Kruptar авторства Джинни (https://magicteam.net/index.php?page=programs). С одной стороны, я посчитал его слишком запутанным, а с другой – простым, так как программа имеет ряд ограничений, а созданный в ней проект привязан к своему файлу, в котором сконцентрированы все данные. Это, в свою очередь, накладывает ряд неудобств из-за невозможности внешней манипуляций на каждом шагу. Затем мне посоветовали поэкспериментировать с IDA Pro – эта программа умеет работать с архитектурой консолей PS1-2. Впоследствии я отказался от работы с IDA Pro и перешёл на более удобный мне способ извлечения и упаковки текста в исполняемых файлах. Тем не менее иногда я до сих пор открываю различные файлы PSX-EXE или ELF в IDA Pro для поиска каких-то данных, так как эта программа строит удобную карту взаимосвязей между различными функциями. Поэтому для начала я покажу вам, как искать поинтеры к строкам текстов в исполняемом файле с использованием IDA Pro и простого хекс-редактора.

Этап 1. Поиск любого текста в SLPS_254.50 через хекс-редактор и IDA Pro

а) Открываем любой хекс-редактор и ищем текст. К этому моменту у нас уже должен быть набит глаз для таких поисков. Возьмём для примера блок со строками текста, в котором находятся названия сценок. Первая строка начинается со смещения 0x1133E0, следующая с 0x1133F8 и т.д. О том, что именно этот блок является текстом, можно легко понять, если использовать на этой области преобразование кодировки текста, о которой я уже писал во втором этапе в четвёртой главе.



б) Теперь загружаем SLPS_254.50 в IDA Pro. Программа автоматически распознаёт файл как "ELF for MIPS", а среди перечня работы с архитектурой процессоров должна автоматически выбрать "MIPS little endian". Нажимаем "ОК" и ждём, как приложение просчитает взаимосвязи всех функций. После полного анализа вы услышите звуковое уведомление. Затем щёлкаем по вкладке "Hex View-1" и наблюдаем по головной части данных, что программа просчитала весь файл немного не так, как располагаются значения при открытии через хекс-редактор. Дело в том, что все смещения в IDA Pro указаны сразу с учётом расположения этих данных относительно оперативной памяти консоли. Поверьте, это весьма удобно для поиска поинтеров, которые имеют не фактический адрес. А ведь практически все поинтеры в исполняемом файле ELF именно такого типа. Теперь нам нужно найти здесь начало того же текста, как это было сделано в хекс-редакторе на смещении 0x1133E0. Для этого мы открываем в верхней строке вкладку "Search" и выбираем пункт "Sequence of bytes". Далее вводим все значения той самой строки, которую нашли через обычный хекс-редактор: 99 9c 9a 6e 9a 83 9a 8d 9a 5d 99 cd 9d 61 99 a6 99 cd 99 9d. Затем нажимаем "ОК" и, если всё написано верно, программа покажет расположение того самого текста.



Этап 2. Поиск поинтеров в SLPS_254.50

а) Обратите внимание на выделенные красным цветом смещения строк в хекс-редакторе и IDA Pro на предыдущих двух изображениях. Имея на руках оба этих адреса, мы можем спокойно высчитать поправку для поиска будущих поинтеров. Для этого берём числовое значение смещения 0x2123E0 (IDA Pro) и вычитаем из него значение 0x1133E0 (хекс-редактор), а как результат получаем число поправки FF000. Теперь, когда нам известно смещение, где находится текст и число поправки, мы можем высчитать значение поинтера и адрес его расположения.

б) В этом и следующем пунктах я опишу метод поиска поинтеров через любой хекс-редактор. После того, как находим любую строку с текстом, запоминаем числовое значение смещения этой строки (в нашем примере это 0x1133E0), а затем к этому числу прибавляем поправку FF000 и получаем значение 002123E0. Если попытаться найти это значение через поиск, то у вас ничего не получится, потому что текущий вид этого значения имеет тип порядка байтов big-endian. Напоминаю, что принцип построения порядка байтов в поинтерах PS2 консоли имеет вид little-endian, а это значит, что необходимо развернуть полученное значение по байтам наоборот: 00 21 23 E0 >> E0 23 21 00.



в) Теперь, когда у нас на руках есть реальное значение самого поинтера, то его можно легко найти в исполняемом файле. Просто копируем 4 байта "E0 23 21 00" в строку поиска и жмём искать по всему файлу. Результатом должно быть одно найденное место, которое и будет являться поинтером. Запоминаем, что начало и конец этого поинтера находятся на смещениях 0xF5368 и 0xF536B.



г) Метод поиска поинтеров через IDA Pro гораздо проще, чем через хекс-редактор. Потому что вся разница сводится к тому, что на этапе 1 в пункте "б", найденный текст по первому байту уже подсвечивается смещением, которое можно спокойно вводить в поиск в пункте "Sequence of bytes". Только не забудьте во всплывающем окне поиска поставить галочку "Find all occurences", чтобы поиск работал по всему файлу.



Достаточно просто искать поинтеры таким вот способом, не правда ли? Если посмотрим на весь диапазон поинтеров, которые располагаются друг за другом выше от найденного указателя, то обнаружим, что все поинтеры, которые скучкованы в этом блоке, находятся в диапазоне от 0xF42A8 до 0xF536B. Всё, что находится за пределами этого диапазона – это уже совсем другие данные или другая группа поинтеров. Именно с этим диапазоном нам и нужно будет дальше работать. Потому что найти всё это одно дело, а составить алгоритм для правильной адресации, извлечения текстов с учётом разделителей, вставки изменённого текста с учётом пересчёта поинтеров и многого другого – совсем другая задача, которая требует использования совсем других подручных средств. В этом нам поможет приложение "abcde", которое я указал среди перечня сборника уникальных программ во второй главе, а также небольшое дополнение к нему под названием "ELF Text Injector", которое я специально заказывал у RikuKH3, чтобы облегчить себе работу по вставке текстов в ELF-файлы. Далее я поэтапно покажу, как пользоваться этими приложениями, которые не имеют графический интерфейс и в которых все настройки прописываются в основном в качестве числовых значений.

Этап 3. Установка Strawberry Perl, Python и работа с приложением abcde

а) Для начала необходимо установить Strawberry Perl. Это бесплатный дистрибутив на языке программирования Perl для операционных систем Windows. Он включает в себя всё для запуска и разработки Perl-приложений. Скачать его можно с официального сайта: https://strawberryperl.com. Без этого abcde работать нормально не будет, так как приложение написано на этом языке. После этого требуется установить дистрибутив Python. "Он тоже бесплатный, но на другом одноимённом языке программирования. Его тоже можно скачать с официального сайта: https://www.python.org/downloads. Один из моих знакомых Ethanol (уважаемый программист) написал специальный код на языке Python для работы с приложением abcde. Поэтому будем использовать его наработки.



б) Далее к этому пункту я прилагаю архив с приложением abcde v0.0.10, который включает в себя все готовые настройки для работы с нашим типом поинтеров. Его можно распаковать в любую папку. Внимание!!! Для корректной работы программы и всех скриптов необходимо, чтобы путь к программе не содержал никаких пробелов. В противном случае приложение не будет извлекать текст и вставлять его обратно.

Скачать #1
https://temple-tales.ru/games/tor/data_design/files/abcde_v0.0.10.zip

Скачать #2 (зеркало)
https://disk.yandex.ru/d/CRbc-SWxnXHC-w

Красным я выделил файлы, которые были созданы дополнительно для работы с приложением, а зелёным - те, которые относятся к ресурсам игры: исполняемый файл и таблица с кодами для правильной идентификации кодировки игры.



в) Теперь нужно корректно настроить работу программы для извлечения строк текста. Сначала подготавливается TBL для работы с кодировкой игры (ToR.tbl). Об этом я уже рассказывал в четвёртой главе. Только разница с программой CODES в том, что abcde читает другой формат таблицы. Разделитель значений здесь другой. Кроме того, программа ругается на использование символов "<" и ">", а значит, в нашей таблице мы их опустим и заменим на "[" и "]" соответственно. Готовая таблица в формате TBL для приложения abcde прилагается в архиве, ссылка на который размещена в прошлом пункте.



г) Далее настраиваем работу с поинтерами через файл "!abcde_script_skits.txt". Все строки настроек я описывать не буду – пройдусь по основным, которые необходимы для понимания принципа работы. Этой базовой информации хватает для того, чтобы работать с исполняемыми файлами консолей PS1-2 и других аналогичных файлов, в которых поинтеры лежат в открытом виде.



#GAME NAME: Tales of Rebirth
Здесь указывается название игры. Данная строка ни на что далее не влияет, и является по своей сути простой меткой на случай, если у вас будет накоплено много файлов данного типа для разных игр.

#BLOCK NAME: Skits
В этой строке прописывается название блока текста. А это на тот случай, если таких скриптов будет много в рамках одной игры. В принципе, можно даже указать название файла, если в нём всего 1 блок поинтеров и создавать другие нет надобности.

#POINTER ENDIAN: LITTLE
С этого параметра начинается ввод важных данных, которые дают понять, с каким типом порядка байтов программе необходимо работать: big-endian или little-endian. В нашем случае это little-endian (особенность платформы PS2), но если бы мы работали с какой-нибудь игрой на ПК, то, скорее всего, пришлось бы указать big-endian. Приложение считывает синтаксис в этой строке только в таком виде:
BIG
LITTLE


#POINTER TABLE START: $F42A8
#POINTER TABLE STOP: $F536B

Помните, как был найден диапазон поинтеров для блока названия сценок? Об этом я писал на этапе 2 после пункта "г". Именно этот диапазон и нужно прописывать в этих двух строках. Одна из них указывает начало смещения, с которого начинается таблица поинтеров для данного блока, а вторая указывает самый последний байт крайнего поинтера в этом блоке. Приложение считывает синтаксис в этих строках только в таком виде:
$*****
Вместо звёздочек нужно написать смещение.

#POINTER SIZE: $04
Помимо типа порядка байтов, программа учитывает и размер поинтеров. Они бывают по 2 и 4 байта. Соответственно, в этой строке приложение будет считывать только следующий синтаксис:
$02
$04


#POINTER SPACE: $00
Если так случилось, что между поинтерами есть какое-то пространство, то эту особенность можно прописать в этой строке. Приложение будет учитывать эти пробелы между поинтерами, а если поинтеры идут друг за другом без дополнительного пространства, как в нашем случае, то необходимо указывать просто нулевое значение. Приложение считывает синтаксис в этих строках только в таком виде:
$**
Вместо звёздочек нужно написать размер в байтах, которое будет соответствовать дополнительному пространству.

Наглядное представление пространства между поинтерами при просмотре через хекс-редактор на изображении ниже (поинтеры выделены голубым цветом):



#BASE POINTER: $-FF000
Одно из первостепенных неудобств при работе с поинтерами в исполняемых файлах это то, что всегда нужно учитывать поправку. Разумеется, в этом приложении предусмотрен учёт разницы между фактическим расположением поинтеров в файле и оперативной памяти. Здесь приложение считывает синтаксис в этой строке только в таком виде:
$-*****
Вместо звёздочек нужно написать размер поправки.

#TABLE: ToR.tbl
Ну и напоследок стоит упомянуть таблицу кодов, которую здесь тоже нужно прописывать в виде названия файла. Именно на эту таблицу приложение и будет опираться во время извлечения строк с текстом.

д) Заранее подготавливаем файлы с командами для извлечения и вставки текста через командную строку:

Файл 1, извлечение
!abcde_dump_skits.bat
perl abcde.pl -m bin2text -cm abcde::Cartographer "SLPS_254.50" "!abcde_script_skits.txt" Tales_of_Rebirth_dump_skits -s
pause


Файл 2, вставка
!abcde_inception_skits.bat
perl abcde.pl -m text2bin -cm abcde::Atlas "SLPS_254.50" Tales_of_Rebirth_dump_skits.txt
pause


Все файлы должны находиться в корневой папке приложения.

е) После того, как закончили готовиться к работе, копируем исполняемый файл игры в директорию программы и нажимаем пакетный bat-файл "!abcde_dump_skits.bat". После обработки получаем файл с извлечёнными строками текста "Tales_of_Rebirth_dump_skits.txt". Если всё сделано корректно, то вы увидите вот такое сообщение в командной строке:



ж) Файл с извлечёнными строками текста будет выглядеть примерно так:



Первые несколько частей содержат дублирующую информацию из настраиваемого файла скрипта, но в немного изменённом виде, а чуть ниже уже идут строки с метками #JMP и //POINTER #0. С метками поинтеров всё просто. Для каждого поинтера есть свой индивидуальный блок с множеством сегментов. Здесь сразу указаны смещения поинтера и строки, порядковый номер и сами строки с извлечённым текстом.

Когда вы сделаете множество вот таких файлов с извлечёнными строками с текстом, то все блоки с поинтерами и прилагаемыми к ним данными можете копировать между собой или объединять в один файл без ограничений, а нумерация #0, #1, #2 и т.д. не будет мешать самому процессу работы. Данные номера – это просто заметка о порядковом номере извлечения. Так что в них нет ничего особенного. А вот что касается метки #JMP, то это вспомогательный сегмент, о котором стоит рассказать подробнее в следующем пункте, так как его роль очень важна.

з) #JMP – это отдельная настройка, которую программа высчитывает самостоятельно и которая потребуется нам дальше для обратной вставки изменённого текста. В извлечённом файле данная строка имеет вот такой вид:

#JMP($1133E0, $1195C0) // Jump to insertion point

В скобках указан диапазон смещений между первым байтом первой извлечённой строки и последним байтом последней строки. Иначе говоря, данный интервал даёт нам представление о размере той области, в которой находятся извлечённые строки с текстом. Это очень полезная информация, и её нужно куда-то выписывать отдельно. Потому что, как я говорил в начале этой главы, в исполняемом файле есть несколько десятков отдельных блоков поинтеров, соответственно, и областей с текстом тоже. При обратной вставке текст нужно укладывать строго в те области, в которых изначально находился японский текст. Только таким образом в коде игры мы ничего не сломаем. Когда я активно занимался исполняемым файлом и идентифицировал все блоки поинтеров и области текста, то составил несколько строк с диапазоном, куда программе можно укладывать текст. Если кому-то интересно, то вот этот список:

112EA0;11332E
113DBC;1195C6
119890;11C8A6
11C8A8;11D99E
11D9A0;11E36E
11E370;11E88E
11E890;11F38E
11F3C0;11FCDE
11FCE0;1200B5
120228;1206C6
1206D8;120776
120778;12280E
122B30;12A63E
12A640;12AAAE
12AB28;12AFC6
12B0E8;12B15E
12B1A0;12BACE
12BAD0;12D0FE
12DCA0;12EBBE
12EBC0;12EF76
12EFF0;130A5E

Внимание!!! При обратной вставке текста программа использует файл с извлечёнными строками текста "Tales_of_Rebirth_dump_skits.txt", а это значит, что во время этого процесса менять диапазон, прописанный в строке #JMP, можно как угодно. Это очень удобно, так как объём переведённого текста всегда отличается в большую или меньшую сторону. Возможность укладки текста в доступные области ограничена лишь вашими собственными нуждами. В общем, как вам удобно, так и выбирайте. Но к этому нужно подходить с умом, потому что когда областей мало, то расчёты сводятся к минимуму, а когда нужно работать с огромным количеством областей, то тут уже требуется провести достаточно большое количество расчётов.

и) После того, как были извлечены все строки с названиями сценок в диапазоне 0xF42A8 - 0xF536B, их все можно переводить в этом документе ТХТ, но это достаточно неудобно, так как файл слишком большой, и в нём не так просто ориентироваться. А если учесть то, что таких файлов придётся сделать несколько десятков, то приходит понимание, что всё это нужно как-то систематизировать. В этом нам поможет Microsoft Excel. Для этого я создаю отдельную таблицу с фильтрами для столбцов, а также присваиваю каждой строке свой ID, чтобы всегда можно было развернуть порядок строк на обратный, как оно есть в исходном файле, а также сместить все лишние строки вниз, чтобы они не мешали во время процесса перевода. К этому пункту прилагаю готовый файл для экселя, а также на изображении ниже наглядно показываю, как выглядит текст до сортировки текста и после того, как всё упорядочено:



Скачать #1
https://temple-tales.ru/games/tor/data_design/files/Skits.xlsx

Скачать #2 (зеркало)
https://disk.yandex.ru/i/z-J4JIO7-zVtSw

к) Как только текст переведён, можно отсортировывать все строки согласно корректным значениям алфавитного порядка по колонке ID, а затем выделить весь текст и скопировать его в файл с извлечёнными строками "Tales_of_Rebirth_dump_skits.txt".



л) Обратная вставка строк с текстом в исполняемый файл осуществляется через командную строку. Для этого просто запускаем пакетный bat-файл, о подготовке которого я упоминал ранее:

Файл 2, вставка
!abcde_inception_skits.bat
perl abcde.pl -m text2bin -cm abcde::Atlas "SLPS_254.50" Tales_of_Rebirth_dump_skits.txt
pause


Если всё сделано корректно, то вы увидите вот такое сообщение в командной строке:



Внимание!!! Всегда проверяйте числовые значения, которые прописаны в командной строке после вставки. Приложение прописывает там весь диапазон области для вставки, а также сколько байт было записано. Если общий объём вашего переведённого текста будет превышать установленный диапазон для вставки, то в командной строке программа уведомит вас о том, сколько байт было превышено.

м) В завершении этого этапа хочу отметить, что перед тем, как вставлять текст обратно в исполняемый файл, необходимо отредактировать файл с таблицей кодов. Так как для извлечения текста нужен один набор кодов, а для обратной вставки он немного поменяется, потому что в файле шрифта игры при адаптации кириллицы приходится использовать многие коды для русских букв. Именно поэтому всегда нужно иметь наготове 2 файла с таблицей кодов: для японской версии и для русской.

Это далеко не всё. Ведь всегда можно улучшить и как-то оптимизировать процесс запаковки или вставки текста. В самом начале главы я упоминал про дополнительную программу "ELF Text Injector" авторства RikuKH3. Дело в том, что работа с abcde хоть и решает множество задач, но во время вставки текста всегда тянет за собой весь дистрибутив, а также не учитывает оптимизацию текста. Именно поэтому в какой-то момент мне захотелось облегчить процесс. Я заказал у RikuKH3 данную программу и кратко описал задачу: что именно мне требуется для работы с Tales of Rebirth, а также чтобы это по необходимости можно было применить к любым другим файлам. Использование данной программы полностью заменяет пункт "л" на этапе 3. Приложение вы можете скачать из таблицы сборника уникальных программ во второй главе. А уже саму настройку и использование программы я опишу на этапе 4.

Этап 4. Использование ELF Text Injector для оптимизации вставляемого текста

а) В первую очередь важно понять, что ELF Text Injector распознаёт синтаксис abcde и для вставки использует файл извлечённого текста "Tales_of_Rebirth_dump_skits.txt". Ничего заново настраивать не нужно. Кроме того, приложение также подхватывает таблицу кодов TBL. Всё, что требуется, это подготовить файл с командами для вставки текста через командную строку, а также создать дополнительный файл "tor_elftext.lst" со списком диапазона смещений, в которые будет укладываться текст. Выглядит этот файл со списком вот так:



б) Обратная вставка строк с текстом в исполняемый файл осуществляется через командную строку. Для этого просто запускаем пакетный bat-файл, о подготовке которого я упоминал в прошлом пункте:

!1_Text_Injector_RUN.bat
@copy /y SLPS_254.50 SLPS_254.50_new > NUL
tor_elftext.exe -LittleEndian "tor_elftext.tbl" "!2_ELF_Russian_compiled.txt" "SLPS_254.50_new"
@pause


Если всё сделано корректно, то в командной строке вы увидите вот такое сообщение:



Как и в случае с abcde, данная программа уведомляет о том, сколько байт было записано из доступного диапазона.

в) Но это всё, по сути, тоже самое, что и при использовании самого abcde. А вот что гораздо важнее – ELF Text Injector делает оптимизацию текста и экономит место во время укладки в заданный диапазон. Для полного понимания плюсов этого алгоритма на нём стоит остановиться подробнее. Дело в том, что разработчики множества игр используют как раз-таки этот метод. Его суть заключается в том, что если в процессе перевода имеется две и более строки с одинаковым текстом, то есть дубликаты, то программа укладывает только одну строку, а все поинтеры содержат адрес к этой самой строке. В результате у нас не записываются остальные дублирующие строки, а значит, происходит экономия места. Если попытаться изобразить это в хекс-редакторе, то выглядеть это будет примерно так: