Наконец-то, я с
Bmpcorp-om закончили перевод замечательной игры Double dragon 3.Для себя я узнал много нового и интересного.
Скачать перевод можно из подписи и по этой ссылке http://shedevr.org.ru/cgi-bin/gamez.cgi?n=137Меня интересует мнение обычных геймеров. Ведь, именно для них, мы с товарищем старались.
Напоследок хотел поблагодарить всех, кто помогал при создании данного перевода.
Отдельное спасибо
Ансу и
BHLady.
Под четким цензорством
Анса было исправлено много недочетов.
Анс, именно тот человек, которого надо слушать и запоминать, что он говорит. Благодаря
BHLady, я смог разобраться с Rle.
Она вообще тот человек, чьи советы действительно помогают. Может кому-нибудь пригодится методика борьбы с «местным» Rle.
Леди писала:
А теперь серьёзно. Таких мазохистов, как эти разрабы, я ещё не видела. С помощью хитроумной комбинации они кодируют два символа тремя! А внешне кажутся такими порядочными!
А теперь действительно механизм запаковки. Управляющие байты располагаются триплетами. Средний символ - тот, который печатается. Первый - сколько раз нужно напечатать второй символ. Третий символ, если из него вычесть 40h, определяет длину строки текста, которая располагается за управляющим триплетом и выводится на экран за вторым символом (повторённым указанное число раз).
Ну а напоследок самое интересное. После блока текста идёт ещё один триплет: [81] [х] [00]. Второй байт [х] определяет, сколько ещё нужно напечатать пробелов, чтобы экран окончательно заполнился. Т.е. длина напечатанного тобой текста (включая все служебные пробелы] + [х] = const. Если это равенство не будет выполняться, то произойдёт смещение цвета. Одним словом, перевести можно, но очень хороший геморрой.
Все верно. Но к счастью, разобраться оказалось не так трудно. Чтобы цвет не изменялся при переводе на русский язык, надо к байту (X) прибавить некоторое значение (Y). Оно находится так: это число, показывающее сколько раз мы отключили RLE.
Проще говоря, сколько раз вместо байта 02 поставили байт 01.Как говорила Леди, байт 02 означает, что букву надо повторить два раза. Если поставить 01, 03,..04,….n, то буква будет повторена 1,3, 4…n раз. Операция с повторением мне пригодилась лишь два раза,
когда писал имена Джимми и Билли. В остальных случаях я отключал повтор.
Вот пример контрольного триплета, который проверяет значение символов на экране.
[81] [B1] [45]. Он располагается в конце блока с текстом!Допустим, мы три раза заменили байт 02 на 01,т.е. Y=3. Теперь X[B1] + Y[03]=B4 или [81] [B4] [45]. Все, никакого искажения палитры нет.
В DD 2 : Revenge применяется такая же система, но сложнее.Весь текст закодирован таким образом, даже надпись Double Dragon (тайловая карта) на титульном экране. У букв OU- общее основание и оно дублируется.
Одной из проблем является сдвиг строк. Объяснить мне это довольно трудно(из-за малого опыта), но чтобы все строки выводились ровно - необходимо манипулировать их координатами. Начало и конец каждой строки идет с триплета, например такого [2D] [00] [47]. При изменении количества повторяющихся символов (например, с 02 на 01), строка сдвигается либо влево либо вправо от остальных строк. Чтобы она «встала на место» надо прибавить(отнять) значение от байта [2D]. Манипулирую этими значениями возможно весь текст сделать ровным. Даже, когда в оригинале на строке одно слово по центру. Например, было так (оригинал): Однажды
На город напали воины тени.
Стало(наш перевод): Однажды на город напали воины тени.
Проще говоря, в триплетах по центру всегда стоит байт пробела [00].
[2D] [00] [47], расстояние от конца строки до начало следующей, занимает 2D(45) пробелов. Поставив вместо 2D 01, пробел получается длиной в один байт и строки соединяются.Таким образом, количество символов было сокращено на 44. Это значение надо добавить к байту X в контрольном триплете, чтобы палитра стала нормальной.Но проблема в том, что максимум Х=FF. И если он был равен хотя бы E2, то
не прибавить к нему 2D... и палитра будет неправильной. Решение есть, но пока я его не нашел.Но надеюсь найду.
В второй части игры, применение этого алгоритма бывает оправданно, например когда кодируют тремя символами четыре или повторяющиеся слоги. Пример, кодировка[04] [.] [2D] вывод ….(четыре точки), или так: кодировка [02] [AN] [00] [2D] вывод an angel(5 символов). Ребята, если вам попадется подобная кодировка, то спрашивайте. Чем смогу, помогу.
Вторая часть оказалась сложнее, чем я думал.В основном из-за того, что в игре очень короткие строки.По одному - два слова, плюс в строке находятся не только текст, но и часть рисунка..
Начата работа над переводом Double Dragon 2:Revenge.
Перевод скрипта – Rex O, графика – Bmpcorp, хакинг – я. Перевод: в стадии тестирования.