Главная » Записи по метке: длиннопост
Метки:

длиннопост

SWF NSWF

ПредисловиеВсе мы любим, когда наша любимая игра переведена на русский язык и мы можем легко понять, что говорит наш любимый персонаж.Но порой не всегда локализации идеальны: в каждой найдётся куча отсебятины, иногда информации, которой в оригинале и не было, а то и неправильно интерпретированная речь, которую нам и расхлёбывать *кашляет по-ватчдоговски*
Но качество локализаций к данной статье не имеют отношения и не о них пойдёт речь. А речь пойдёт о том, как мне удалось расшифровать русскую локализацию, чтобы в будущем каждый мог изменить строки как захочется.
Осторожно, много скринов!
С чего всё началось?А началось всё с этого мема:
Да. К политике нынешней данный мем особо отношения не имеет, да и не должен.Данный скриншот был сделан в игре Need for Speed: Undercover 2008 года. Сама игра по себе является проходняком, ибо сделана на коленке (на самом деле EA тупо торопила разработчика лишь бы выпустить продукт). Но вот текст на этом меме был отфотошоплен оченькриво и с неправильными шрифтами (оригинальные шрифты для игры — Aquarius Medium и Light для заголовка, Helvetica Neue STD для обычных текстов в данном окошке) Мне это, скажем так, изрядно не понравилось и я поставил себе цель воссоздать этот мем методами самого геймплея этой игры.
И это звучит достаточно легко в теории, но на практике это что угодно, кроме «легко». Было. Как и ЧемПервым делом я решил полезть в ресурсы игры. Для этих дел есть разработанная моддерским сообществом программа Labrune за авторством nlgzrgn Собственно, её интерфейс.Она спокойно читает файлы игр, начиная с NFS: Underground вплоть до NFS: World, ибо вся линейка этих игр была сделана одним разработчиком на почти одинаковом движке (ходят слухи, что при разработке этих игр разрабы из-за торопливости не особо морочились убирать остатки старого кода со старых игр, а просто переносили всё в один компилятор и за счёт остатков, найденных в коде, выходили новые моды, сильно расширяюшие функционал игр (как пример этого — последняя версия Unlimiter’а для Most Wanted 2005, берущая часть функционала из NFS Underground 2)). Читает спокойно до тех пор, пока не скормишь ей файл с русскими текстами

Чё?


И Hex-редактор тоже не может помочь. Выделенная фраза означает «Ты лидер!». Как я узнал — читайте дальше.
Вместо текстов в лучшем случае кракозябра, в худшем случае пустота. На момент написания статьи не исправлено/не воплощено. И теперь самое интересное!Тогда я решил править runtime память, если Labrune даже не хочет править файлы и даже сохранять их.
Открыв игру, предварительно выбрав английский язык, я сначала баловался с английским текстом, занимаясь поиском его положения через Cheat Engine и правя его.
Первый текст, который появляется при запуске Undercover, это PSA — Public Service Announcement, то бишь «не гоняйте пацаны вы матерям ещё нужны»
Вот он.Вычислив адрес, с которого начинается этот текст, я решил изменить этот текст на что-нибудь интересное:

Ундерковёр — яркий пример того, что происходит, когда ты пилишь разрабов чтобы они ежегодно выпускали игру уровня ААА, но при этом не дав времени её отделать. И да, из-за того, что тебе приходится выпускать игру чуть ли не под самый поздний квартал года, в игре обязательно будет много неиспользуемого контента.
Поискав нужные мне адреса конкретных строк, я начал их править. И сразу скажу, изменения появлялись лишь только когда я убирал текст и снова вызывал для отображения. Сразу текст не меняется. То есть — для появления этого окошка мне приходилось перезапускать гонку.
Вот так всё начиналось. До русского текста ещё далеко. Мусор в начале второй строки «vremya sra4a» там из-за того, что я где-то убрал байт, отвечающий за начало текста и игра подхватила этот кусок для отображения.Играться с англ текстом было детским садом, и всё же хотелось сделать по-русски.
Я перезапустил игру, сменив в стиме язык игры на русский Игра, запустившись, выдала уже такое содержание:
Текст уже короче, и надо как-то узнать, под какими значениями идёт кириллица.
Благо у меня уже есть адрес для правки текста, сейчас я к нему обращусь, и… И он уже бесполезен, потому что русский текст всегда длиннее, вследствие чего место прошлого текста уже занял мусор, так что нужно было искать новый адрес. Благо текст, как в прошлый раз, начинался с латиницы и кусок памяти с ней было легко найти.
Первая идея была такая — скопировать каждый отдельный символ, подразумевавший определённую букву в тексте, в блокнот и оттуда же закинуть в адрес своё. Было муторно записывать каждую кракозябру в блокнот, надеясь, что она поможет в дальнейшем. Результат — неудовлетворительный.
Как итог — в игре мусор… …и в Cheat Engine тоже. Вторая и более правильная мысль — та, ради которой вы дочитали до этого момента — это зайти в содержимое памяти по нужному адресу (тыкнув Memory View или CTRL+B, выбрав нужный адрес) и прочитать байты, отвечающие за кириллицу. Но перед этим дайте я игру перезапущу, чтобы игра выдала норм текст, ок? Ок.
Вот так выглядит память игры во время запуска процесса. На данный момент Memory Viewer показывает кусок памяти, начиная с адреса, который указывает на начало текста PSA. Выделенный байт 00 означает технический конец текста.Стерев всё, что было в блокноте и написав шаблон алфавита для заглавных и строчных букв, я начал вглядываться в байты, записывая эквивалент буквы в блокнот. То есть э — B9, т — 86, о — 81, пробел — 20, с — 88, и так далее…
Я решил проверить мою новую теорию, изменив вступительный текст с имеющимся байтами…
… и теория оказалась верной! «Gentera Style 204» стоит там из-за того, что я на тот момент не знал, что нужно ставить байт 00 для обозначения конца читаемого текста. Но само подтверждение теории меня очень обрадовало!В ходе дальнейшего реверсинга байтов выяснилось, что исполнительный файл игры для отображения кириллицы использует байты от 81 примерно до FF, а также использует байт 80 совместно с другим соседним байтом справа для отображения других символов, например для отображения буквы ъ — 80 89, Ж — 80 83, Ю — 80 88, Щ — 80 80, и т.д.
В итоге за 2 дня тестирования я составил такую карту используемых символов кириллицы:
Скобки означают, что я на данный момент не уверен, какой из байтов используется для отображения такого-то символа, либо может использоваться комбинация этих байтов для отображения «Й»․ Отсутствующий байт у буквы Ё — значит я не нашёл байт от этой буквы, и не велика потеря — в тексте игры нет строк, где есть буквы ё и Ё — всегда е. Почему? Спросите у 1С-СофтКлаб или у самих Black Box.И таким методом я и воссоздал тот самый пресловутый мем и разреверсил кириллицу. Хоть и не полностью, но это уже хорошо.

Ну и ещё.
Что было дальше?Дальше я принялся реверсить кириллицу для остальных игр NFS, и на это у меня ушло гораздо меньше времени, благо нашлись более быстрые способы просмотра изменений в тексте и часть байтов совпадала с предыдущими значениями. Это уже для ProStreet Это уже для Most Wanted (2005). Заметьте, комбинация байтов 80 XX тогда ещё не использовалась. *скоро будут байты для NFS: Carbon, Underground и Underground 2*

Послесловие

Своей находкой я поделился с NFS комьюнити, автор проги заметил это и мне ответил:
Я дальше не знаю, что под конец написать, поэтому вот вам котик
Хорошего дня!

  • 2f08090719192b89f27f056291202182a7edc559
  • 65dedb2fee5b3a2adda4bfac1127d175970d70ad
  • 2300f2e07d9cfde243505537213216c67ba63ee4
  • d803536670a674bc84dbb79b262e727cbfb84241
  • b79490ea79f8104a4dbe8f231312278dd968260d
  • e5347cd9112ec2cd5f3eceb6f681fb0e81e0fdcf

  В Бразилии, где много-много диких обезьян, негров, крокодайлов и прочего неугодного —  проживает зверёк, чьи прыть и наглость воистину шокируют местных жителей. Мы говорим не о древних рептилиях и даже не о ягуарах, повергающих Южноамериканскую фауну в благоговейный трепет. О них и так все знают. Мы же познакомим вас с настоящим мафиози Амазонского разлива — Гигантской, или Бразильской выдрой. Предлагаю заранее отдать должные почести аква-версии свирепого Медоеда, ибо неверных эти отшибленные гасят толпой.

  Гигантским зверя, как мы могли убедиться, просто так не назовут. Наш сегодняшний гость — самый крупный представитель подсемейства выдровых. Длина тушки этого здоровяка может доходить до 2 метров. 70 см из них занимает хвост, но сути дела это не меняет. Форма тела зверя обтекаемая, так что Выдры выполняют головокружительные финты без особых сложностей, даже несмотря на свои размеры.

  Вес выдры превышает 20 кг, гигантская выдра с большим отрывом является самым крупным представителем подсемейства выдровых.

  Думаю, догадаться, где живёт Бразильская Выдра, тоже труда не составит. В Австралии? А вот и нет!) Животина облюбовала Амазонку и пресные водоёмы. Особенно Выдр привлекают заболоченные местности, где без труда можно найти покушать. Кстати, о пище. Жрут зверюги всё подряд. За день троглодиты способны поглотить до 15 % от собственного веса.

  Крупную добычу животные убивают толпой. Сила и наглость позволяют Выдрам охотиться даже на кайманов, аллигаторов и анаконд. Эти ребята настолько уверены в себе, что без труда нападают на ягуара — крупнейшего хищника Южноамериканского континента. Не веришь? Смотри, паразит!

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

  Только родители семейства имеют право на спаривание. Все остальные члены группы — их старшие и младшие детёныши. Сородичи поддерживают тёплые взаимоотношения: вычёсывают друг другу шёрстку, общаются с помощью различных звуков и просто классно проводят время. Особенно классно его проводят главы семейства, время от времени воспроизводя новых членов своего клана.

  В помёте рождается от 1 до 5 щенков. Пока малыши не подрастут, всё семейство будет охранять логово. Через 3-4 месяца молодь переходит на твёрдую пищу, а дееспособной боевой единицей детёныш становится к году. Тут у молодого и амбициозного Выдрёнка встаёт выбор: остаться с семьей или замутить собственный синдикат. Выбирая взрослую и независимую жизнь, самцы и самки из разных групп отправляются на поиски друг друга, дабы образовать новую шайку беспредельщиков. Если похождения не увенчались успехом, родня принимает незадачливого мачо или сердцеедку обратно.

  • 16cf8ebed83677dac2b0f62eb7060a2c51ab7119
  • 5dfcf5faa9ae60a58c9c0524e359d7e666de8f15
  • 8ee27180540dc919a84e369cdb43fca2d23b367f
  • f650b25fd14698b78b32c0fb04899eb2cd7a3886
  • e2d76cef772d42e887b49ba6ea00e4d000e27a9c
  • 908905104b6edc71f760656d6fe6d571a49bcde7
  • 91e0bff0db6cd7549ba877a83b282cc1930c9604
  • 77d4a6065a3712cbda74f8c0244406d76dca16c6
  • 2d30de40ca58639c3be542d4f64b0cbcbe63a3fe

  Морские биологи — люди ленивые и над названиями не парятся совсем. Рыба-меч, рыба-пила, волосатая рыба-лягушка… стоп, что? Волосатая — да, окей. Рыба — ну, допустим. Но лягушка — последнее, на что похожа эта штука! Давайте пристально взглянем на это эээ… существо, живущее в Индийском океане, и разберёмся: что это такое и с чем его едят.

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

  Окей, а причём же здесь лягушки? Во-первых, взгляните на его грудные плавникиШирокие и мощные — они похожи на лягушачью лапку. Ими рыбина неуклюже передвигается по дну, когда лежать камнем ей всё-таки надоедает. Во-вторых, приглядитесь к пасти. Широкий рот один в один напоминает кусало земноводных.

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

  Удочка волосатой рыбы-лягушки короткая, но это нашей героине лишь в плюс. Как только жертва повелась на бутафорного червячка, в ход вступает жабья пасть — ею косматый колобок попросту всасывает неосторожную мелкую рыбёшку в себя. Что видит ни о чем не подозревающая добыча? Сначала пучок водорослей, потом халявный обед, а и в итоге — гигантскую пасть, что затягивает несчастное создание, как чёрная дыра.

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

  А вот про размножение лягушек известно чуть более, чем ничего. Точно есть самцы и самки, и они точно дают потомство — но как они это делают — никто не знает. Зато известно, что родители из рыб-лягушек никакущиеУ всех видов этого семейства практикуется каннибализм в отношении своих детей. Учитывая образ жизни взрослых особей, иронично, что выживает лишь самый шустрый молодняк.


  Чему нас учит эта история? Тому, что нужно всегда помнить две вещи: во-первых, бесплатный сыр бывает только в мышеловке, а во-вторых — никогда не верьте волосатым камням.

Авторизация
*
*
Войти с помощью: 
Регистрация
*
*
*
Пароль не введен

Подписка пользователя

Войти с помощью: 
Генерация пароля