Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Некоторые маленькие игры создаются полностью на технологии Adobe (Macromedia) Flash или Adobe Flex.

Иногда встаёт вопрос: "как их русифицировать?"

В этой теме я постараюсь подробно описать, как мне удалось в такой игре заменить шрифт и перевести несколько строк текста без ограничений на длину строки (как решить эту проблему в играх не на Flash'е я немного писал тут: Длина строки).

Речь пойдёт об игре VVVVVV.

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Вся игра заключена в один файл: VVVVVV.exe (40 Мб)

Создана она на Flash'е (или на Flex'е), поэтому её exe-шник можно открыть и подредактировать в программе Flash Decompiler Trillix (или любом другом Flash-декомпиляторе).

Но сохранить отредактированный файл можно будет только как SWF, но нам нужен EXE.

Что представляет из себя файл VVVVVV.exe ?

На самом деле он "склеен" из двух файлов:

Flash-плеер.EXE и Flash-ролик.SWF

и в конец получившегося файла добавлено 8 байт:

4 байта: $FA123456

4 байта: размер SWF-ролика.

(так работают простейшие конверторы swf -> exe, в роли Flash-плеер.EXE они могут использовать Adobe Flash CS4\Players\FlashPlayer.exe, в нашем случае нельзя заменять оригинальный плеер игры)

Наша задача заключается в том, чтобы разделить VVVVVV.exe на Flash-плеер.EXE и Flash-ролик.SWF, отредактировать SWF, а затем опять склеить эти 2 файла в VVVVVV.exe, добавив в конец число $FA123456 и размер нового ролика. Для разъединения и склеивания можно воспользоваться какой-то готовой программой.

Разъединили.

Меняем шрифт (в оригинальном шрифте нет русских букв).

Открываем Flash-ролик.SWF во Flash Decompiler Trillix. Находим в разделе Images картинку со шрифтом:

839576.jpg Извлекаем, добавляем русские буквы: 839582.png

Заменяем в Flash Decompiler Trillix картинку со шрифтом на нашу. Сохраняем отредактированный SWF-ролик.

Чтобы посмотреть новый шрифт в игре склеиваем Flash-плеер.EXE и Flash-ролик.SWF, добавляем в конец служебные 8 байт. Запускаем, смотрим что получилось.

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Переводим текст меню.

Открываем наш Flash-ролик.SWF в HEX-редакторе, ищем ASCII-строку "start game".

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Можно перевести, но символов недостаточно, чтобы написать "НАЧАТЬ ИГРУ".

Замечаем, что байт перед этой строкой обозначает длину строки: 0A (10.)

Но мало изменять лишь этот байт - игра не запустится или зависнет.

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Разбираем формат SWF-файла, чтобы узнать, как изменять длину любой строки.

Для этого я воспользовался официальной спецификацией формата SWF (на англ. языке): SWF File Format Specification, Version 10 (последнюю версию всегда можно взять с оф.сайта).

Итак, любой SWF-файл состоит из заголовка файла (SWFHeader) и идущих следом друг за другом независимых блоков (TAG-ов).

Если заголовок начинается с CWS, ролик сжат, и нужно его сначала чем-то распаковать. В нашем случае он начинается с FWS – всё в порядке.

Каждый TAG имеет свой формат и содержит разные данные (есть tag со шрифтом, tag со звуками, tag со скриптами и т.д.).

Каждый TAG можно изменять/удалять/добавлять независимо от остальных (в разумных пределах). Нужно лишь в заголовке файла изменять одно значение - FileLength (смещение: 04) - размер всего SWF-файла.

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Написав по этой документации небольшую программку, я смог составить список всех TAG-ов в нашем Flash-ролике.SWF

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

Строка "start game" находится по смещению 22562DD, а это значит, что она содержится вот в этом TAG'е:

TAGtype = $52 TAGlen = $16C20A TAGpos = $2192BB4 TAGname = DoABC

(тип DoABC означает, что в этом теге содержится байт-код, который выполняет виртуальная машина ActionScript, а это усложняет отладку в программах вроде OllyDbg и SoftIce, однако, это же означает, что данный код не содержит абсолютных адресов, что упростит его изменение – мои догадки)

Начинается он со смещения 2192BB4, переходим сюда в HEX-редакторе. Попадаем на заголовок TAG'а. Первые 2 байта нас не интересуют (они содержат тип тега), далее идёт 4 байта, в которых указывается размер тега. И если мы увеличим длину строки в этом теге, то и размер тега нам тоже надо увеличить.

Итак, выяснили, чтобы заменить строку "start game" на "НАЧАТЬ ИГРУ" (наша строка на 1 байт длиннее) нужно сделать следующее:

1) заменить текст, вставив один лишний символ

2) перед строкой указать правильную длину строки: вместо 0A пишем 0B (11.)

3) указываем в заголовке тега длину на 1 больше, чем было

4) указываем в заголовке файла длину на 1 больше, чем было

Всё! Склеиваем Flash-плеер.EXE и отредактированный Flash-ролик.SWF, дописываем в конец 8 служебных байт, запускаем смотрим.

Если ничего не напортачили, всё будет работать. Вот, что у меня получилось после перевода таким методом двух пунктов меню:

 

  Скрытый текст (кликните чтобы развернуть/свернуть) (Показать содержимое)

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

Изменено пользователем enz°
  • Лайк (+1) 1

Поделиться сообщением


Ссылка на сообщение

@SkeleTos 

Перешли файл *.swf, посмотрю так ли это

А дальше будет видно, если в этом причина, то надо делать через программу Adobe Flash CS6 — шрифт и переносить в твой *.swf

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

    • Ха) 10 дней назад). Мне он лепит минусы на посты от 2016 года. И вот почему) Я, значит, решил почитать сей топик. Зашёл разговор за мат в переводах. Ну, каждый высказал своё мнение, кто-то — за, переводчик — против. Но! Почему-то переводчик решил, что его мнение/решение является единственным верным и не должно критиковаться/обсуждаться. И выпячив своё ЧСВ пошёл разбрасываться хамскими изречениями направо и налево. Я не большой сторонник всех этих ЧСВ и хамства, что я отобразил, нажав на соответствующую кнопочку под его постами. Эти мои действия пошатнули и без того некрепкое душевное равновесие переводчика и он начал мне строчить в личку с “угрозами” уровня яслей для детей с задержкой развития: “удаляй свои минусы, иначе будет хуже — я тебя всего заминусую, у меня стотыщмильёнов аккаунтов и пр.”. Что характерно, не наврал, действительно заминусовал 
    • Йа-йа, зер гут, Вольдемар. Касательно восставшего из ада. 
      Для меня было сомнительно, что по нему можно создать что-то толковое, если брать фильм за первоисточник.
      Я сейчас проверил, у меня на кинопоиске стоит оценка 3 из 10 у первого фильма.

      На мой взгляд, там был чисто унылый трэшак без задач с нулевым потенциалом. 
      Хотя описания сюжета последующих частей было забавно читать. 
      Сюжет 9-й части рекомендую. Там такой-то дебют шизофрении.
    • Это лучше, чем вырезать его полностью или “запикивать”. Последнее вообще смешно. До сих пор помню озвучку “Mafia II” от “1С”. 
    • Ещё бы не возбудились…  Ты только глянь на этого красавчика   
    • @Chillstream портировал нейросетевой русификатор для новеллы Ghost in the Pool. Теперь можно скачать на выбор версию для Switch или ПК.
    • Некий saintyukari адаптировал существующий русификатор Misao: Definitive Edition для Misao 2024 HD Remaster. Некий saintyukari адаптировал существующий русификатор Misao: Definitive Edition для Misao 2024 HD Remaster.
    • Как заменить шрифты Путь к шрифтам:
      Sea\Content\UI\Fonts Раньше я использовал старый метод: менял имя файла и его расширение с font.ttf на font.ufont. В предоставленных файлах (или: в файлах игры) нет файла с расширением .ufont. И ещё вопрос: какие основные английские шрифты используются в игре? https://disk.yandex.ru/d/JiW7HbGsb1Y8zQ
  • Изменения статусов

    • Дмитрий Соснов  »  Tirniel

      Привет! ты разбираешься в компьютерном железе, сможешь помочь с советом по апгрейду старого компа?
      · 1 ответ
    • SHAMAH

      Куда вход на сайт убрали и ЗАЧЕМ? Хотел файл скачать, там только медленная загрузка и “зарегистрируйтесь”. Все. Пришлось вручную страницу входа прописывать.
      · 0 ответов
    • Nosferatu  »  behar

      Добрый вечер.
      Подскажите пожалуйста, у вас не осталось случайно исходников для фикса на широкоформатные мониторы для игры Vampire The Masquerade Redemption?
      Если да, то не могли бы вы ими поделиться, а если нет, то прошу прощенья что побеспокоил.
      Заранее спасибо.
      · 0 ответов
    • AlcoKolyic  »  makc_ar

      Здраствуйте! Извините, а можно попросить ссылку на место где можно взять перевод (патч или образ игры с переводом) El Shaddai: Ascension of the Metatron для ps3, пожалуйста? А то в теме к этой игре у меня не получилось найти работающие ссылки… Первая ведет в группу в которой удалены большинство постов, а пост с этой игрой ведет на сайт https://psnext.ru который сейчас не имеет отношения к видеоиграм. 
      · 0 ответов
    • oleg72  »  Boor

      https://www.skidrowcodex.net/fate-reawakened-goldberg/
      · 0 ответов
  • Лучшие авторы


Zone of Games © 2003–2025 | Реклама на сайте.

×