Forums Logo

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

Reply to this topicStart new topicStart Poll

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

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

Rabb
post Среда, 16 июля 2003, 22:46
Отправлено #21


ОРК
*****

Группа: Пользователи
Сообщений: 659
Регистрация: 13 июля 2003
Из: Рига
Пользователь №: 3 221





Барт !!Ну можешь тада забить на модератора smile.gif


--------------------
GBX
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Bartman89
post Среда, 16 июля 2003, 22:49
Отправлено #22


you will be under my wheel's! YOU!
*******

Группа: Пользователи
Сообщений: 2 723
Регистрация: 04 фев. 2003
Из: Обнинск
Пользователь №: 831





QUOTE (Rabb @ Среда, 16 Июля 2003, 22:46)
Барт !!Ну можешь тада забить на модератора smile.gif

Ну так давайте мне 2 значка lol.gif Буду самый модный lol2.gif


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Четверг, 17 июля 2003, 09:55
Отправлено #23


Маньяк
****

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





QUOTE (AxeL @ Среда, 16 Июля 2003, 19:40)
Сорри за оффтоп. Axels - смени ты ник а? Раздражает

такой же сорри, но видимо ты личные письма в форуме не читаешь...

...я тебе уже писал: "без проблем, предложи СВОИ варианты, МНЕ самому лень придумывать...
но должно быть похоже на Аксель smile.gif "
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Четверг, 17 июля 2003, 10:00
Отправлено #24


Маньяк
****

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





QUOTE (Bartman89 @ Среда, 16 Июля 2003, 22:41)
Таблица класс!Щас займусь cool.gif

на кой ... было квотить всю таблицу, я честно не понимаю...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Wish
post Четверг, 17 июля 2003, 10:17
Отправлено #25


status: IN GAME
*******

Группа: Пользователи
Сообщений: 2 615
Регистрация: 27 фев. 2003
Из: ubi bene, ibi patria
Пользователь №: 1 259





QUOTE (AxelS @ Четверг, 17 Июля 2003, 9:55)
QUOTE (AxeL @ Среда, 16 Июля 2003, 19:40)
Сорри за оффтоп. Axels - смени ты ник а? Раздражает

такой же сорри, но видимо ты личные письма в форуме не читаешь...

...я тебе уже писал: "без проблем, предложи СВОИ варианты, МНЕ самому лень придумывать...
но должно быть похоже на Аксель smile.gif "

Pixel lol.gif


--------------------
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Rabb
post Четверг, 17 июля 2003, 10:21
Отправлено #26


ОРК
*****

Группа: Пользователи
Сообщений: 659
Регистрация: 13 июля 2003
Из: Рига
Пользователь №: 3 221





QUOTE (AxelS @ Четверг, 17 Июля 2003, 9:55)
QUOTE (AxeL @ Среда, 16 Июля 2003, 19:40)
Сорри за оффтоп. Axels - смени ты ник а? Раздражает

такой же сорри, но видимо ты личные письма в форуме не читаешь...

...я тебе уже писал: "без проблем, предложи СВОИ варианты, МНЕ самому лень придумывать...
но должно быть похоже на Аксель smile.gif "

Вот тебе ник
AkCeJIb


--------------------
GBX
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
AxeL
post Четверг, 17 июля 2003, 10:35
Отправлено #27


Маньяк
****

Группа: Пользователи
Сообщений: 454
Регистрация: 31 дек. 2002
Из: Москва
Пользователь №: 321





Мля.....
Воксель
Пиксель
Тексель
lol.gif


--------------------
Остановите Землю, я сойду...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chaos
post Четверг, 17 июля 2003, 10:36
Отправлено #28


Потерянный
****

Группа: Пользователи
Сообщений: 358
Регистрация: 29 июня 2003
Из: Новосибирск
Пользователь №: 2 963





Народ, вы вообще о чем говорите - о его нике или о переводах?!
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Четверг, 17 июля 2003, 12:59
Отправлено #29


Маньяк
****

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





QUOTE (Chaos @ Четверг, 17 Июля 2003, 10:36)
Народ, вы вообще о чем говорите - о его нике или о переводах?!

сейчас переименуюсь и начнем... smile.gif

ник вобщем-то пофигу какой (для меня лично smile.gif ), просто удобней, когда это часть Email'а,
тогда его хоть вспомнить можно, после периодов офлайна smile.gif (в смысле отпуска)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Bartman89
post Четверг, 17 июля 2003, 13:57
Отправлено #30


you will be under my wheel's! YOU!
*******

Группа: Пользователи
Сообщений: 2 723
Регистрация: 04 фев. 2003
Из: Обнинск
Пользователь №: 831





Тыгдым,тыгдым smile.gif Вынул текст!сначала шла белиберда
6126526 9T
6126550 9T
6126574 9T
6126598 9T
6126622 9T
6126694 9T
6126722 !V
6126746 !V
6126766 9T
6126790 9T
6126814 9T
6126838 9T
6126910 9T
6126982 9T
6127054 9T
6127126 9T
6132521 Macro Land, where the Black Hole/Army's iron fist has crushed/all opposition. Elsewhere,/their grip is tightening...
6132641 Hawke! Come to me.
6132661 By your command,
6132679 my lord Sturm.
6132697 How goes the Macro Land invasion?
6132733 Excellent, my lord. The other COs/have just completed their operations.
6132809 Our objective is clear,
6132834 is it not?
6132849 To establish a base of Black Hole/operations here on Wars World.
6132917 Yes.
6132922 Recently, I instigated a great/conflict between the countries here.
6132990 I sought to conquer them all amidst/the unrest.
6133039 I failed.
только такое ощущение...что это текст не сначала! crazy.gif Кстати...Циферки перед словами удалять?И что вообще считается мусором? smile.gif И ещё...как собственно перводить-то?В блокноте?Или ещё как обьясните неучу! wink.gif


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Четверг, 17 июля 2003, 15:11
Отправлено #31


Маньяк
****

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





QUOTE
Вынул текст!сначала шла белиберда

большое человеческое СПАСИБО тебе, что ты сюда не все 2-3 мега этой билиберды запихнул ! smile.gif

QUOTE
6127054 9T
6127126 9T
И что вообще считается мусором? smile.gif

это МУСОР, точнее так, все, что ты не можешь прочитать (глазами) можно "назвать" мусором...

просто сделай НОВЫЙ текстовый файл в Notepad и скопируй (Cut/Paste) ТОЛЬКО ТЕ строки, которые считаешь нужными для перевода...

QUOTE
6132641 Hawke! Come to me.
6132661 By your command,
6132679 my lord Sturm.
6132697 How goes the Macro Land invasion?

эти цифорки в начале каждой строки это УКАЗАТЕЛЬ (с точки зрения HEX редактора)
на то место, ОТКУДА эта строка была ВЫнута и КУДА ее класть, если нажать
вернуть перевод в РОМ...
!!! если будешь проверять мои слова тулзой типа GoldFinger то от МОЕГО адреса
нужно не забывать отнимать единицу!!! (я с ромом работаю как со строкой и первый байт у меня
=1 а не 0 как у HEX редакторов)

QUOTE
Кстати...Циферки перед словами удалять?

поэтому ЭТИ цифорки трогать НЕЛЬЗЯ (без понимания того, что ты делаешь smile.gif ),
в том смысле, что исправив эту цифру ты говоришь - "теперь КЛАДИ строку начиная
с этого адреса" соответственно, указывая ДРУГОЙ адрес в роме нужно знать поверх чего
ты хочешь сунуть текст...

QUOTE
только такое ощущение...что это  текст не сначала! crazy.gif

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

QUOTE
И ещё...как собственно перводить-то?В блокноте?

можно и там, НО в notepad'e ты не сможешь узнать ДЛИННУ строки перевода,
(он этого тебе не покажет smile.gif ), поэтому если "перевод" окажется длиннее оригинала,
то при возврате его в ром "хвост" перевода накроет следующие за ним байты и ты
испортишь ром... но если все делать аккуратно (и если тебе в Notepad удобно), то можно
и там...

вообще для перевода в утилите есть "Редактор перевода", который например не даст тебе
при переводе вылезти за размер оригинальной строки и таким образом убережет от порчи рома smile.gif
кроме того он МНЕ кажется удобнее... (можно, например выделить часть строки (Shift+стрелки smile.gif) и увидеть длинну ВЫДЕЛЕНОГО фрагмента текста...)

то есть суммируя эту часть ответов -
1. каждая строка файла перевода (файл который ты ВЫНУЛ smile.gif ) независима
2. порядок строк в файле перевода ничего не значит, просто вынимание работает последовательно
поэтому адреса у строк перевода вначале будут попорядку...
3. утилите наплевать откуда ты взял адреса и сами строки перевода (хоть сам сочини)
фактичеки это нечто типа IPS типа "по такому-то смещению вбей такую-то строку байт",
единственное отличие в том, что перед тем как вернуть строку я ее перекодирую
по таблице перекодировки...(windows-1251 <--> кодировка рома)
4. желательно (не необязательно) пользоваться встроенным редактором перевода
он не даст тебе испортить ром (без дополнительного разрешения smile.gif )


...для начала, конечно имеет смысл объяснить, что такое таблица и для чего она нужна...
(думаю я сделаю это отдельным постом в этой теме, а не "ответом" тебе smile.gif )
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Bartman89
post Четверг, 17 июля 2003, 15:14
Отправлено #32


you will be under my wheel's! YOU!
*******

Группа: Пользователи
Сообщений: 2 723
Регистрация: 04 фев. 2003
Из: Обнинск
Пользователь №: 831





Окей!Всё понятно....щас пойду изучать редактор перевода smile.gif


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Четверг, 17 июля 2003, 17:36
Отправлено #33


Маньяк
****

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





QUOTE (Bartman89 @ Четверг, 17 Июля 2003, 15:14)
Окей!Всё понятно....

а тебе понятно, что если ты нарисовал русские буквы ПОВЕРХ английских,
то тебе нужно сделать вторую таблицу - РУССКУЮ, где вместо английских букв
будут русские (так же, как ты их перерисовывал) и ВСтавлять свой перевод тебе
нужно именно с этой РУССКОЙ таблицей ?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Bartman89
post Четверг, 17 июля 2003, 18:30
Отправлено #34


you will be under my wheel's! YOU!
*******

Группа: Пользователи
Сообщений: 2 723
Регистрация: 04 фев. 2003
Из: Обнинск
Пользователь №: 831





QUOTE (PokePerevod @ Четверг, 17 Июля 2003, 17:36)
QUOTE (Bartman89 @ Четверг, 17 Июля 2003, 15:14)
Окей!Всё понятно....

а тебе понятно, что если ты нарисовал русские буквы ПОВЕРХ английских,
то тебе нужно сделать вторую таблицу - РУССКУЮ, где вместо английских букв
будут русские (так же, как ты их перерисовывал) и ВСтавлять свой перевод тебе
нужно именно с этой РУССКОЙ таблицей ?

То есть я сначала загружаю РОМ...гружу твою англ таблицу...затем создаю свою таблицу с Русскими бувами?Но я нарисовал не все русские буквы! confused.gif куда остальные девать?И вообще лучше постучи мне в аську!Так удобней wink.gif Спасиба smile.gif


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Пятница, 18 июля 2003, 11:41
Отправлено #35


Маньяк
****

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





QUOTE
И вообще лучше постучи мне в аську!Так удобней wink.gif Спасиба smile.gif

так удобней ТЕБЕ, но не остальным, читающим эти пояснилки...
поэтому извиняй, буду писать ТУТ smile.gif

QUOTE
То есть я сначала загружаю РОМ...гружу твою англ таблицу...затем создаю свою таблицу с Русскими бувами?

вообще-то для СОЗДАНИЯ или МОДИФИКАЦИИ таблицы тебе ром НЕ нужен smile.gif
он нужен для ГЕНЕРАЦИИ таблиц и для проверки твоей таблицы (в смысле вынуть
текст и посмотреть, правильно ли ты таблицу сделал или нет...)

QUOTE
Но я нарисовал не все русские буквы! confused.gif куда остальные девать?

поиск свободного места в знакогенераторе - это работа творческая... smile.gif

...тебе нужно посмотреть (используя Tile Layer или лучше даже Tile Molester) на
изображения символов в игре (то самое место где ты их перерисовывал smile.gif ),
там ты вероятно увидешь "пустые" тайлы (клетки 8х8 точек) они чаще всего
черного цвета (хотя это зависти от выбранной палитры smile.gif )
ну так вот буржуинам нет смысла рисовать изображения букв которые им не нужны
(например русские smile.gif ) хотя они оставляют немного тайлового места на случай если
они будут делать скажем немецкую или испанскую версию и им тогда понадобится
дорисовать недостающие изображения символов (типа умляутов или перевернутого
знака вопроса у испанцев). Если версия игры EURO то ты вероятно увидешь
там такие значки из разных алфавитов...

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

далее нарисовав изображения "нового" символа в знакогенераторе, тебе нужно
ДОПИСАТЬ в таблицу код этого символа...

...предвидя вопрос "как расчитать код нового символа для таблицы ?" отвечаю smile.gif

Представим ты нашел, что коду x41 (в HEX) соответствует заглавная английская буква "A",
то есть в таблице у тебя написано 41=A...(!!! и ты можешь с этой таблицей вынуть текст из
рома и его прочитать, в смысле ты уверен, что английская часть таблицы у тебя правильная)
...далее разглядывая изображения шрифта в роме, немного выше ты увидел черное место
(ну или белое :-) ) или символ, который считаешь ненужным скажем немецкий умляут(U с двумя точками),
причем не забудь включить показ сетки (Grid lines=ON)...
...далее считаешь "клеточки"(тайлы) в обратном порядке начиная с "А", скажем насчитал 5,
зовешь калькулятор(calc) переключаешь в режим HEX и пишешь 41 - 5 = получаешь 3C,
значит если ты в этом тайле нарисуешь скажем букву "Ц" то в таблице нужно дописать
строчку "3C=Ц"...ну и так далее в том-же духе
...!!! не забудь этот занимательный рассказ относится к случаю, когда изображение одной буквы
вписывается в один квадратик (он же тайл), если скажем изображение одной буквы нарисовано
в ДВУХ тайлах (например, как в сапфировых покемонах), то тогда ты число отсчитанных тайлов
должен сначала поделить на число тайлов в символе... поясню, скажем насчитал 10 тайлов
(каждая буква занимает 2 тайла) значит в калькуляторе пришешь 41 - (10 / 2) = smile.gif


немного введения...(с этого по хорошему следовало бы начать, ну да ладно...)

обычно процедура перевода следующая:
-------------------------------------------
1. используя TileLayer или Tile Molester находишь ИЗОБРАЖЕНИЯ букв в роме
просто нужно открыть в программе файл с ромом и листать...листать...листать
пока не увидишь нечто похожее на буквы smile.gif
2. генеришь английскую таблицу и разглядывая изображения символов дописываешь недостающие
символы (коды символов типа ":","-","=" вобщем все какие найдешь)
3. ищешь пустое место в знакогенераторе выше или ниже английских
4. пытаешься там нарисовать подобие русских букв и высчитывая какие у этих символов
были бы коды дописываешь их в таблицу
5. вынимаешь с английский текст (тулзой PokePerevod :-) )
6. в полученном текстовом файле находишь английский текст, который встречается в начале игры
7. создаешь текстовый файл с парой таких строк (пункт 6.)
8. в редакторе перевода вместо английского текста набиваешь весь русский алфавит
9. возвращаешь переводенные строчки в РОМ
10. запускаешь игру и смотришь видно или не видно твои русские буквы
11. если все видно, то можешь красиво перерисовать шрифт и начинать перевод
12. если НЕ видно или видно не все русские буквы, то для них ищешь новые места в знакогенераторе
исправляешь таблицу и далее пункт 9-12 smile.gif
13. если ничего не получается или свободных мест нет, тогда остается только нарисовать
русские буквы ПОВЕРХ английских (хотя поскольку русских букв больше, то все равно придется
поискать место...)
14. после этого у тебя будут ДВЕ таблицы "английская" и "русская", первая для ВЫнимания текста,
вторая для Вставления твоего перевода обратно...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Пятница, 18 июля 2003, 12:00
Отправлено #36


Маньяк
****

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





я в некотором смысле тут буду повторяться,
но так думаю будет понятнее...


Глава Первая - В начале были буквы.
---------------------------------------

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

Начнем с простого, наверное вы читаете этот текст на PC :-) и соответственно объяснять, что такое IBM PC не надо smile.gif .

У персоналки (IBM PC) есть BIOS, в котором кроме всего прочего есть место где нарисованы шрифты, если посмотреть на экран пока машина грузится (русские Win9x нагляднее), то можно увидеть, что сначала выводимый на экран текст русскими буквами не читается, в смысле буквы мы видим, но они какие то не русские :-), потом весь русский тест видимый на экране внезапно становится понятным. Это значит, система загрузила MODE/DISPLAY/COUNTRY.sys которые в определенное место в памяти записывают новые ИЗОБРАЖЕНИЯ символов - шрифты :-). Ура с одним термином разобрались, идем дальше...

А когда мы располагаем, изображения символов в определенном порядке, на пример под номером 65 у нас нарисована заглавная английская буква "А", под номером 66 будет нарисована буква "B" и так далее... значит мы придумали кодовую страницу (code page или character set). Причем обратите внимание, что программе глубоко наплевать что мы увидим на мониторе. Она просто говорит подсистеме ввода/вывода покажи на экране символы с кодами (hex) 66,55,43,4B :-), а что увидит пользователь программу никак не волнует.

Далее, производители персоналок договорились о СТАНДАРТНОЙ кодовой странице, которая состоит из 255 (или 256 :-) символов и английские буквы там всегда имеют одинаковые коды, а остальные как захочет производитель :-)...

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

Далее несколько констант (я буду пользоваться этими названиями ниже):

Для русских символов существует несколько СТАНДАРТНЫХ кодовых страниц (мы же блин не американы какие то, нас умом не понять :-)


MS DOS codepage - "cp866"
MS Windows - "Windows-1251"
Unix - "ISO8859-5"
Mainframe - "cp1025"

Есть еще одна кодовая страница рожденная основоположниками FIDO в России под названием KOI8-R (ее использование, впрочем не лишено определенного смысла...)

Есть или вернее было еще несколько кодовых страниц на ПК типа Искра1030, Роботрон и т.д. о них читайте в учебниках истории развития компьютеров.

Как вы наверно догадываетесь текст написанный в одной кодировке "не читается" при использовании другой кодовой страницы (объяснять не буду, если не понятно почитайте спец. литературу для супер-чайников).

Однобайтовая кодировка (кодовая страница) - это когда одному байту соответствует один символ и получается, что всего символов закодированных таким образом может быть 255 (или 256 :-). Бывают еще двухбайтовые кодировки (double byte character set), когда одному изображению символа соответствует два байта и соответственно в кодировке может использоваться 65536 символов. Ярким представителем такой кодировки является Unicode. А есть еще смешанные кодировки (multi byte character set) типа UTF-8 когда английские буквы кодируются одним байтом, а все остальные символы двумя...(на самом деле и юникод бывает разный но речь сейчас не о том...)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Пятница, 18 июля 2003, 12:16
Отправлено #37


Маньяк
****

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





Далее речь пойдет ТОЛЬКО об однобайтовых кодировках.
(с двух и более байтовыми кодировками утилита PokePerevod пока не умеет работать...)

Глава 2 - Особенности перевода приставочных игр.
------------------------------------------------------

Рассмотрим вариант, когда программа работает не персоналке, а на приставке типа GameBoy. Дело в том, что у GB/GBA своего BIOS'a нет (в том понимании как это есть у IBM PC),
(не то, чтобы совсем нет smile.gif , просто там нет изображений букв),
поэтому вся программа (включая подсистему ввода вывода находится в так называемом ROM картридже). И соответственно, имея образ этого картриджа можно поправить как шрифты, так и текст игры. Вообще поправить можно все, что угодно, но мы с вами говорим о переводе а не о ломании игр. Разница между PC и GB лишь в том, что там нет понятия стандартная кодовая страница (кодировка). Каждый производитель игр может сочинить свой charset (кодировку) где,
например коду 0x00 будет соответствовать изображение английской буквы "A" и сообственно сложность при переводе приставочных игр заключается в том, чтобы догадаться какими кодами кодируются символы выводимые на экран и собственно суметь ПРОЧИТАТЬ текст.

Далее задача раскладывается на четыре:

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

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

Во многих руководствах и мини туториалах по переводу приставочных игр говорится о ЗАМЕНЕ изображений английских символов русскими и последующем переводе. Однако такой подход приводит к тому, что тот текст который еще НЕ переведен не читаем (вспомните работу русского scandisk при загрузке Win9x) и соответственно у игрока нет никаких шансов догадаться о том, что там ему говорят... Это не дает возможности нормально играть в частично переведенную игру. Поэтому далее я постараюсь объяснить, как можно переводить и оставлять понятным, то, что еще не переведено.

Глава 3 - Перевод в лоб.
---------------------------

Вернемся к нашим баранам. Сначала попробуем разобраться с двоичными файлами (играми) на PC.

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

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

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

Следует заметить, что если в результате наших изменений мы вдруг забьем несколько позиций "непечатных" символов, то программа может перестать работать (это запросто могут оказаться исполняемые инструкции). С другой стороны часть непечатных символов (с нашей точки зрения) может быть вполне печатными (на пример немецкие умляуты).
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Chaos
post Пятница, 18 июля 2003, 12:22
Отправлено #38


Потерянный
****

Группа: Пользователи
Сообщений: 358
Регистрация: 29 июня 2003
Из: Новосибирск
Пользователь №: 2 963





Ну, Axel, ну ты дал, конечно, прикурить. Я себе эту штучку в блокнотик вынес и там читать буду smile.gif Создал бы документацию и выложил бы у нас на Шедевре.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Пятница, 18 июля 2003, 12:35
Отправлено #39


Маньяк
****

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





QUOTE (Chaos @ Пятница, 18 Июля 2003, 12:22)
Я себе эту штучку в блокнотик вынес и там читать буду smile.gif Создал бы документацию и выложил бы у нас на Шедевре.

...а ты хорошо смотрел, что на МОЕМ сайте лежит (уже более полугода ? smile.gif )
просто ввиду именно твоего случая (когда люди читают только то, что им под нос суют smile.gif )
я решил опубликовать это тут...

(на Шедевре впрочем тоже буду, как только с ДимКом согласуем все детали...)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PokePerevod
post Пятница, 18 июля 2003, 12:55
Отправлено #40


Маньяк
****

Группа: Пользователи
Сообщений: 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

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

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