Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

[ Каскадный ] · Стандартный · Линейный

> Кому рассказать как переводить, игры для GBA

PokePerevod
post Среда, 16 июля 2003, 15:48
Отправлено #1


Маньяк
****

Группа: Пользователи
Сообщений: 256
Регистрация: 05 мая. 2003
Пользователь №: 2 021





Народ, я понимаю, что 90% населения GBX это игруны...
но все же...

я могу _постараться_ рассказать как переводить игры для GBA... (товарищ Хаос alien.gif , молчи! )
(пока только с английского smile.gif )

если эта тема интересна, предлагайте игры на примере которых я буду стараться рассказывать smile.gif ,
(или буду объяснять почему перевод конкретных игр соложен и долог smile.gif )

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

если тема СОЗДАНИЯ переводов НЕ интересна,
(в смысле интересно пользоваться готовыми переводами),
то так прямо и скажите... wink.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topicStart Poll
Ответов
PokePerevod
post Пятница, 18 июля 2003, 12:55
Отправлено #2


Маньяк
****

Группа: Пользователи
Сообщений: 256
Регистрация: 05 мая. 2003
Пользователь №: 2 021





Глава 4 - Волшебные поинтеры и с чем их едят.
-------------------------------------------------

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

Если приглядеться к тому, как переводят в лоб, то можно заметить, что:

1. глазами находят текст и запоминают смещение, где это текст лежит в файле
2. вычисляют, где этот текст оканчивается (каким нибудь непечатным символом типа 0x00)
3. подбирают перевод фразы сходный по длине с оригинальной строкой
4. набивают его в те же места.

Данный процесс вполне поддается описанию, скажем на Visual Basic'e, главный вопрос в том, как программно отличить печатные символы от непечатных. Тут нам на помощь приходят все те же таблицы символов (codepages). Однако в СВОИХ таблицах мы опишем коды ТОЛЬКО печатных символов. Теперь программа может отличить коды печатных символов от непечатных и все, что остается это разобраться в том, как отличить текстовую строку в файле от двоичных инструкций. Для этого опять вернемся в лобовому переводу - там мы глазами читаем весь файл по байтику, пока не встретим последовательность печатных символов. Ура ключевое слово произнесено (кто не догадался я не виноват, в качестве эксперимента могу вам прочитать двоичный образ скажем Winword.exe и найти там текст, думаю к концу чтения все станет понятно :-)

Далее все (или почти все) делает железяка - сканирует файл и вынимает ВСЕ последовательности печатных символов (тех, что есть в таблице, остальные считает непечатными) если встречает 2 или более печатных символа подряд, то такая последовательность записывается в файл отчета (на пример report.txt)

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

десятичное_смещение_в_двоичном_файле+пробел+последовательность_символов+crlf (признак конца строки)

Следует заметить, что если мы говорим о том, что переводиться будет приставочная игра, со своей кодировкой, то нам такой выходной файл ничего не даст, на персоналке в нашей windows-1251 мы все равно ничего не поймем, значит строка вынутая из файла должна быть перекодирована из кодировки приставки в кодировку PC. Это тоже не проблема просто помимо кодов печатных символов нужно в нашей таблице указать какими кодами этот символ должен отображаться в кодировке PC. Поэтому в итоге таблица имеет структуру типа:

80=A
81=B
82=C
83=D
84=E
85=F

и так далее...

Причем ДО знака равенства пишется HEX код символа, а после знака равенства, каким ОДНИМ символом этот код выглядит на PC. Причем если вы вспомните Главу 1 (если конечно вы ее не пропустили), то скорее всего догадаетесь, что посмотрев на эту таблицу в шестнадцатиричном виде мы можем сделать и обратное преобразование.

http://pokeperevod.НАРОД.ru/xImage3.gif (слово "НАРОД" нужно писать по английски )
...извините за неудобства, пока не разобрался как картинки заливать на форум...

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

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

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

А где же поинтеры? спросите вы - а это есть десятичное_смещение_в_двоичном_файле в файле вынутого текста, которое объяснит программе из какого места файла вынули эту строчку и даст возможность положить перевод в то же самое место.

... есть еще один тип указателей(поинтеров), я бы назвал их внутриРОМовыми, то есть
сама игра, когда хочет вывести текст на экран нашей приставки, тоже должна знать
где в картридже находится НАЧАЛО текста для вывода...
(в утилите я это называю GBA поинтеры)

...до них я думаю мы еще дойдем в этих объяснялках...


Несколько общих замечаний:
-------------------------------
1. Никто не мешает удлинить строку перевода, просто надо понимать, что вы рискуете забить своим текстом непечатные символы, и соответственно сделать игру неработоспособной.
2. Если перевод получается короче оригинала, нужно понимать, что если вы не нарастите свой укороченный перевод пробелами до оригинальной длины, то при выводе текста игра выведет еще и текст длиннее перевода. Игра ведь не знает, что строка стала короче и выведет то количество символов, которое было в оригинале. Если только в подсистеме вывода текста у игры нет зарезервированного специального кода, который говорит о том, что строка окончена.
3. Спец. символы, которые описаны в пункте 2 мы также можем описать как печатные и следовательно в своем текстовом редакторе сами расставлять концы строк.
4. При создании таблицы перекодировки нужно понимать, что одному коду всегда соответствует один символ (изображение) иначе программа перекодировки не сможет понять, как перекодировать переведенный текст. Иными словами таблица перекодировки должна быть обратимой.
5. Не переводите непонятные строки, скорее всего это исполняемые инструкции (или графика smile.gif ), просто оставьте их без изменений.


НЕОБРАТИМАЯ ТАБЛИЦА - это когда нельзя применив одну и ту же таблицу воссоздать первоначальный файл. Проверить обратимость очень просто, нужно ВЫНУТЬ текст из ROM'a затем НЕ изменяя полученный report.txt ВЕРНУТЬ его в ROM и потом сравнить (побайтно) полученные файлы, делать это например умеет WindowsCommander (выделить в одном окне входной и
выходной файлы, а потом file -> compare by content) если входной и выходной файлы РАЗЛИЧАЮТСЯ то таблица НЕОБРАТИМА, то есть один тот же символ может перекодироваться в разные коды... такой таблицей пользоваться НЕСТОИТ поскольку она будет портить неоднозначные символы...


Все вышеописанные размышления, легли в основу программульки под названием PokePerevod...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
PokePerevod   Кому рассказать как переводить   Среда, 16 июля 2003, 15:48
Rabb   Немного непонял тему но давай начнём с марио   Среда, 16 июля 2003, 15:53
PokePerevod   а содержимое понял ? :) ...скажи пожалуйста назв...   Среда, 16 июля 2003, 16:23
Rabb   1093 - Super Mario Advance 4   Среда, 16 июля 2003, 16:58
revil   он японский, а AxelS как я понял английский релиз ...   Среда, 16 июля 2003, 17:05
PokePerevod   это как в известном анекдоте: до Штирлица не дошл...   Среда, 16 июля 2003, 17:09
Mugz   Аксель! Буду очень благодарен. Вот списки. Ta...   Среда, 16 июля 2003, 17:31
Bartman89   Аксельс вроде мы с тобой знакомы :) Вообщем так......   Среда, 16 июля 2003, 17:38
PokePerevod   думаю, что да :) (если убрать букву "S" у AxelS)...   Среда, 16 июля 2003, 17:50
PokePerevod   Mugz, ПЛИИИЗ напиши названия в таком виде, чтобы...   Среда, 16 июля 2003, 17:55
Rabb   Ахел а ти с немецкого тоже переводишь?   Среда, 16 июля 2003, 18:28
Mugz   :) Ладно. Возмем тот же адванс варс. Как текст пер...   Среда, 16 июля 2003, 18:36
PokePerevod   немецкий язык это английский + всего несколько ум...   Среда, 16 июля 2003, 18:37
Rabb   Давай скорее!! Сделаем из покемонов новых ...   Среда, 16 июля 2003, 18:39
PokePerevod   Mugz, к тебе вопрос как к админу - мы будем делат...   Среда, 16 июля 2003, 18:54
PokePerevod   Покемоны это приоритет :) (лично для меня ;) ) ....   Среда, 16 июля 2003, 19:00
Mugz   Мда. Похудеть можно. Ладно на досуге займусь. О те...   Среда, 16 июля 2003, 19:16
AxeL   Сорри за оффтоп. Axels - смени ты ник а? Раздражае...   Среда, 16 июля 2003, 19:40
Mugz   Мерись. Ничего с этим не поделаешь...   Среда, 16 июля 2003, 19:48
Bartman89   это уже хорошо, но торопиться нужно меделенно :) ...   Среда, 16 июля 2003, 22:41
Rabb   Барт !!Ну можешь тада забить на модератора...   Среда, 16 июля 2003, 22:46
Bartman89   Ну так давайте мне 2 значка :D Буду самый модный...   Среда, 16 июля 2003, 22:49
PokePerevod   такой же сорри, но видимо ты личные письма в фору...   Четверг, 17 июля 2003, 09:55
PokePerevod   на кой ... было квотить всю таблицу, я честно не ...   Четверг, 17 июля 2003, 10:00
Wish   такой же сорри, но видимо ты личные письма в фору...   Четверг, 17 июля 2003, 10:17
Rabb   такой же сорри, но видимо ты личные письма в фору...   Четверг, 17 июля 2003, 10:21
AxeL   Мля..... Воксель Пиксель Тексель :D   Четверг, 17 июля 2003, 10:35
Chaos   Народ, вы вообще о чем говорите - о его нике или о...   Четверг, 17 июля 2003, 10:36
PokePerevod   сейчас переименуюсь и начнем... :) ник вобщем-то...   Четверг, 17 июля 2003, 12:59
Bartman89   Тыгдым,тыгдым :) Вынул текст!сначала шла белиб...   Четверг, 17 июля 2003, 13:57
PokePerevod   большое человеческое СПАСИБО тебе, что ты сюда не...   Четверг, 17 июля 2003, 15:11
Bartman89   Окей!Всё понятно....щас пойду изучать редактор...   Четверг, 17 июля 2003, 15:14
PokePerevod   а тебе понятно, что если ты нарисовал русские бук...   Четверг, 17 июля 2003, 17:36
Bartman89   а тебе понятно, что если ты нарисовал русские бук...   Четверг, 17 июля 2003, 18:30
PokePerevod   так удобней ТЕБЕ, но не остальным, читающим эти п...   Пятница, 18 июля 2003, 11:41
PokePerevod   я в некотором смысле тут буду повторяться, но так ...   Пятница, 18 июля 2003, 12:00
PokePerevod   Далее речь пойдет ТОЛЬКО об однобайтовых кодировка...   Пятница, 18 июля 2003, 12:16
Chaos   Ну, Axel, ну ты дал, конечно, прикурить. Я себе эт...   Пятница, 18 июля 2003, 12:22
PokePerevod   ...а ты хорошо смотрел, что на МОЕМ сайте лежит (...   Пятница, 18 июля 2003, 12:35


Reply to this topicStart new topic
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Вс., 06 июля 2025, 12:29
Skin Designed (c) by Rooq.net, All Rights Reserved.