Corpse Party: Book of Shadows [Инструкция по переводу и инструменты]
В связи с тем, что Vincente, которая занималась переводом текста, внезапно заявила, что не собирается выпускать перевод (ссылка), я решил сделать эту инструкцию. Так как для меня это означает, что, фактически, над переводом никто не работает и не работал, а сил и времени с моей стороны в это дело было вложено немало... Здесь собраны все необходимые инструменты (основная часть, до этого времени, была приватной) с описанием и доступной инструкцией общего процесса, так что любой желающий, без каких-либо знаний технической части, сможет вставить свой перевод в игру.
1) Распаковка/запаковка ресурсов
С самим ISO-образом работаем по стандарту в UMDGen, там особых нюансов нет, с извлечением и заменой файлов все должно быть интуитивно понятно. В папочке MOV находится видео PMF (формат встречается в каждой второй PSP игре, работу с ним я здесь описывать не стану, благо готовых инструкций полно) и почти все необходимые нам ресурсы хранятся в DATA0.AFS. Для работы с ним используем AFSExplorer v3.7, при открытии картина следующая:
FONTS - это шрифты, SCENE00 - текст, все остальное - графика/изображения. Файлы извлекаются правым кликом, командой Export. Вставка/замена файлов командой Import, но тут все немного комплекснее: если новый файл превышает размер оригинального, то появляется сообщение "File length exceeds available reserved space..." с предложением зарезервировать место под новый файл. Если появилось такое сообщение, то сначала соглашаемся и сразу же (в таком случае файлы вставляем по-одному) нажимаем 'Advanced->Modify reserved space...->Regenerate AFS!' и сохраняем новый AFS. На этом этапе в новосозданном AFS старый файл еще не заменен, под него только выделено место, так что открываем его и импортируем (на этот раз предупреждений не выскочит) и снова сохраняем командой 'Regenerate AFS!' уже в третий и финальный AFS.
2) Замена шрифта
Переделанный русский шрифт находится в 'Corpse_Party_BoS_font_ru_RikuKH3', для того чтобы русский текст нормально отображался нужно заменить оригинальные DFRRA14.FNT и DFRRA14.FNI на модифицированные DFRRA14_ru.FNT и DFRRA14_ru.FNI.
3) Работа с текстом
Все необходимое для работы с содержимым SCENE00 находится в 'Corpse_Party_BoS_text_inject_rev3_RikuKH3', скрипты сконвертированы в удобноредактируемый текстовый формат и работать с ними можно в любом удобном редакторе. Запуском приложенных BAT-файлов, из содержимого *.txt генерируются готовые для вставки в игру *.BIN. Формат следующий:
В специальных скобках находится имя говорящего, оно обязательно должно совпадать с тем, что внутри 'DATA.txt'. То есть, разумнее всего сначала перевести и выписать имена из DATA.txt и потом во всех остальных файлах автозаменой пройтись по 【...】 (если заменять со скобками, то ничего лишнего не заденет).
Команда <LINE> служит для перехода на другую строку, их можно свободно удалять/вставлять. Т.к. шрифт в игре имеет разную ширину букв, для удобства приложены две программы - 'cpbos_linecalc' и 'cpbos_text_fomatter'. Первая показывает влезает ли строка и занимаемое место в пикселях, вторая - сканирует и сама разбивает слишком длинные строки и переносит слова. Я бы советовал печатать все в одну строку, вручную вставляя <LINE> лишь в исключительных случаях, и прогонять финальный текст через 'cpbos_text_fomatter'.
4) Работа с графикой
В игре используется два формата для изображений - KLZ и p2t, и тот и другой распаковывается в TIM2 (*.tm2) и запаковывается обратно при помощи утилит в 'cpbos_image_batch_scripts'. Для работы непосредственно с TIM2-форматом используем 'OptPix iMage Studio 3.12'. Для работы с графикой нужны навыки работы с прозрачностью (альфой):
После открытия *.tm2, для редактирования его сохраняем в PNG или PSD. Для тех кто не знает как работать с прозрачностью, проще всего открыть PNG в фотошопе, добавить временно новый слой под основное изображение и залить его в любой удобный цвет:
После того как закончили, просто удаляем временный слой, убеждаемся что новая картинка отображается схоже со старой и сохраняем в тот же PNG. Тут основные настройки для сохранения в подходящий для нашей игры *.tm2:
В комплекте с 'cpbos_linecalc' приложен AutoIt скрипт, который настроен по нажатию F6 копировать строку из Блокнота/Notepad в окошко калькулятора строк. Для этого запускаем Блокнот с текстом, cpbos_linecalc и AutoIt3 скрипт (раскладка клавиатуры перед запуском должна на русском стоять). Сам AutoIt3.au3 можно подправить для работы с другими редакторами, для этого нужно заменить в нем [CLASS:Notepad] на название своего (полностью, без квадратных скобок, например: Programmer's Notepad).
cpbos_text_fomatter по-умолчанию сканирует все строки и разбивает только те, которые превышают лимит. Галочка "Full reformat" перед началом дополнительно ищет и заменяет все двойные пробелы и склеивает все уже разбитые строки в одну. Кнопка "Check for Errors" предназначена для проверки уже обработанного и финального текста на наличие слишком длинных фраз (т.к. лимит в игре - 3 строки).
В 'FONT' содержатся: DFRRA14_ru.FNT - файл растрового шрифта 16x16, DFRRA14_ru.FNI - файл с описанием ширины каждого символа, DFRRA14.act - палитра для редактирования глифов в TileMolester/Photoshop, *.txt/*.png - описание значений ширины и настроек для редактирования.
В директории 'EBOOT' находится информация по ASM-поинтерам на текст, который хранится в EBOOT.BIN (текста там очень мало, в основном системные окошки сохранения и главного меню) и пример файла, где несколько фраз сдвинуты. Руководствуясь имеющимися значениями и значениями позиций самого текста, можно вычислить значения для остальных фраз (на случай если перевод не влезет и появится необходимость что-то сдвинуть). В примере фразы перенесены в область системных сообщений видеокодека, в самой игре они, фактически, не используется, так что это место можно использовать как угодно. Сам текст в 2-байтной ShiftJIS кодировке (8440-8460, 8470-8491), но разумнее использовать 1-байтную кодировку, которую я добавил перед релизом (A1-DF,5C,5E,60).
Последний раз редактировалось riku.kh3; 03.01.2015 в 01:02.
Хоть эта конкретная игра и жанр мне особо неинтересны, но всё равно спасибо за документацию и инструменты на паблик, т.к. это может пригодиться для работы с другими играми, которые будут использовать похожие форматы рано или поздно и случается весьма неожиданно.
А по поводу картинки с сообщением из скайпа.
продолжение
Когда мы выкладывали перевод ВСС патчем, точно так же на трекерах люди само-организовались и сделали ISO образы под псп и пс2, ну как бы мы посчитали что против ветра не попрёшь, это естественно случается независимо от нашего желания или нежелания, меняется только наше личное восприятие того, что неизбежно в реалиях свободного обмена информацией без явного уважения авторского права. Даже в самом патче было написано что переводчики не одобряют перезалив перевода в виде ISO файла. но кому какое дело, а возмущение лишено смысла. В общем перевод ЛСС вышел точно так же на паблик независимо от того, что прошлый ВСС юзеры пиратили как только могли. Ну это лирика, споры не развожу просто делюсь мнением людей, попавших в похожую ситуацию с переводом-патчем. п.с. не страдаю копирастией, просто на тот момент попытались сделать как лучше, а получилось как всегда.
И в чем проблема, что какие-то другие люди выложили ISO? Хотелось получить минуту славы? Ну вхреначили бы себя в какую-нибудь инфу про авторов или еще куда. Непонятно мне это, короче. Никто не помнит переводчиков, всем плевать на разборщиков ресурсов, с этим или мириться, или не делать вообще.
Кстати для AFS есть более удобная программа AFS Packer от Paco-chan, только там с нулевыми именами косяк. /upd мигель поправил, теперь все норм.
А кто шрифт рисовал? Ты?
Последний раз редактировалось Scorpeg; 16.01.2015 в 22:30.
Да где другое. Вон написано "побежали пиратить патч". У кого спиратили? У переводчика игры спиратили патч? Чушь и ахинея.
Так кто шрифт рисовал русский?
Варианта всего два: либо девочка повзрослеет, либо нет. Не понимать с её стороны, что она, мягко говоря, угробила туеву хучу времени riku.kh3 - это, по всей видимости, норма. Лайки и респекты в соцсетях правят балом.
Вообще резко против каких-либо ватермарков и копирайтов на пиратский контент (коим и является любой неофициальный перевод, будь-то патч или сам образ, как бы это не пытались представить авторы таковых трудов... патч - это лишь уловка, чтобы обойти закон). Указание авторства и не больше.
На таг-тиме ещё на момент локализации патапонов поднимал эту тему, когда прозвучала мысль о ватермарках на мозолящих глаз местах. После небольшой беседы с участниками перевода, пришли к выводы, что это лишнее. В итоге и себя упомянули и ни одного из издателей/создателей не забыли. А бред про распространение в нете неугодным автору патча способом - это вообще что-то из разряда фантастики. Нужно серьёзно болеть, чтобы не понимать оного!
Решил тут небольшой нюанс по графике описать. В TIM2 формате используется нестандартная прозрачность и OPTPiX некорректно сохраняет такие файлы в PNG. Поэтому для извлечения графики надо использовать что-то стороннее, здесь опишу как это делается через программу TiledGGD:
Открываем в TiledGGD свой TIM2/tm2 файл.
1) Image --> Format --> 8 Bit per pixel
2) Image --> Go to offset --> 40
3) Стрелочками на клавиатуре настраиваем разрешение.
4) Palette --> Format --> 4-bytes per color
5) Palette --> Mode --> Tiled
6) Palette --> Alpha Settings --> Alpha Stretch --> Enable 0-128 и снимаем галочку 'Ignore Alpha value'
7) Palette --> Go to Offset --> (для значения см. программу ниже)
И сохраняем в PNG командой File --> Save Graphics
Чтобы отредактированный PNG сконвертировать через OPTPiX назад в TIM2 применяем дополнительные настройки в Options --> Alpha Channel Settings:
Во вложении маленькая программка, она показывает разрешение и копирует значение Palette Offset в буффер обмена.
Последний раз редактировалось riku.kh3; 09.02.2015 в 15:03.
Обожемой вот это изврат. А не было чтоли просто конверторов в PNG? У меня даже мой просмотрщик картинок XnView открывает TIM2 и может их сохранить хоть во что. Там был какой-то принципиальный момент так сохранять? Или эту сугубо чтобы Optpix открыл с прозрачностью? А то по-моему там вообще нет альфы, есть просто прозрачный цвет, как у гифа. Какой у тебя там файл посмотреть, с этими надписями?
Последний раз редактировалось Scorpeg; 09.02.2015 в 00:03.
У меня даже мой просмотрщик картинок XnView открывает TIM2
Сообщение от riku.kh3
В TIM2 формате используется нестандартная прозрачность и OPTPiX некорректно сохраняет такие файлы в PNG.
Scorpeg, не умничай коли не знаешь что TIM2 может быть нестандартным, сильно отличаясь из игры в игру и в зависимости от платформы. В данном случае нестандартный альфа канал, бывает мульти-палитра или необычное цветовое пространство или например swizzling, во всех эти случаях XnView и другие общие могут косячить.
Вроде я riku.kh3 спрашивал, а комментируешь ты, причем не тот вопрос, который я спросил. Ты и игру даже не открывал и не в курсе, о чем речь на самом деле в деталях, так ведь?
Последний раз редактировалось Scorpeg; 09.02.2015 в 00:33.
>а комментируешь ты
Это форум, а не твои личные сообщения. >причем не тот вопрос
на время постинга моего предыдущего сообщения твоё не имело четкого вопроса. Позже ты его отредактировал и дописал вопрос, пытаясь упрекнуть задним числом. >Ты и игру даже не открывал
Проблема с текстурами общая и я уже с ней сталкивался ранее. Что приводило к необходимости искать/дописывать сторонний софт и прочие костыли в точности как у riku.kh3 с этой игрой.
---
Возвращаясь к теме, вот результат распознавания альфа канала тремя способами, сверху вниз - xnview, optpix, TiledGGD. В первом случае альфа вообще игнорируется, во втором кое какая выходит (ps: загрузить альфу и вынести её на новый слой, сохранить пнж), но действительно неправильная по сравнению с третьим. Если бы там была сплошная прозрачность, то её можно было бы в хексе исправить, но тут затухающий градиент получается.
на время постинга моего предыдущего сообщения твоё не имело четкого вопроса. Позже ты его отредактировал и дописал вопрос, пытаясь упрекнуть задним числом.
Имело, про нормальные конверторы в PNG. Остальные вопросы я потом дописал, угу. А остальное написано в качестве иллюстрации, что умничаешь в данном случае именно ты.
Scorpeg добавил 09.02.2015 в 09:22
Сообщение от riku.kh3
Scorpeg, пожалуйста, пробуй. Сначала моим способом через TiledGGD советую, чтобы иметь представление как должна картинка выглядеть.
Ты мне просто скажи оригинал где лежит, какой путь к файл и как называется? Образ у меня есть.
Последний раз редактировалось Scorpeg; 09.02.2015 в 09:31.
Причина: добавил, подумав
Так, чет я не в настроении пока умничать (шея болит и спать хочу), действительно нормального конвертора не нашлось. Но всё равно так конвертить, как предлагает riku это изврат, но других вариантов, кроме самому написать, я не нашел. Короче я потренируюсь на конверторе для Ever17 и потом уже этим займусь, наверное.
Scorpeg, пиши... но мне, лично, даже малейших потерь в качестве из-за неоптимально растянутой альфы совсем не хочется, и я склонен автору TiledGGD в этом деле довериться... т.к. человек ее написавший явно в графике разбирается. В отличие от:
Сообщение от Scorpeg
Обожемой вот это изврат. А не было чтоли просто конверторов в PNG? У меня даже мой просмотрщик картинок XnView открывает TIM2 и может их сохранить хоть во что. Там был какой-то принципиальный момент так сохранять? Или эту сугубо чтобы Optpix открыл с прозрачностью? А то по-моему там вообще нет альфы, есть просто прозрачный цвет, как у гифа. Какой у тебя там файл посмотреть, с этими надписями?
Тем более что в TiledGGD после запуска один раз только настройки выставить, а для каждого последующего файла только разрешение и оффсеты.