Форум Magic Team

Переводы, переводы, переводы... => Ромхакинг и перевод => Тема начата: cpp от 25 октября 2012, 22:24:51

Название: Перевод игры Ghost Trick
Отправлено: cpp от 25 октября 2012, 22:24:51
Привет!
Хотелось бы перевести игру Ghost Trick (DS) на русский. После гугления на эту тему, нашел два начинания:
1)На русский (http://www.shedevr.org.ru/forum/viewtopic.php?t=4225) - так и не начат. Автор темы - переводчик, он не умеет вскрывать ромы и ему никто не помог это сделать.
2)На бразильский (или испанский?) (http://romhacking.trd.br/index.php?/topic/7147-nds-ghost-trick-phantom-detective/) - застрял на половине.
Также был найден скрипт на Python (http://pastebin.com/5rjf3DV8) (по-видимому, от автора бразильского перевода), который достает текст и запаковывает его.  Тексты в игре сжаты и лежат в файлах с расширением .xml.lz, я ума не приложу, как еще их можно открыть, кроме этого скрипта.
Шрифты я нашел в четырех файлах (возможно, их там больше; я открывал только те, в названии которых есть слово font). Все замечательно открылись в CrystalTile2 с настройками 16х16, Tile form: GBA 4bpp. Один из шрифтов содержит также катакану, а еще каждый символ повернут на 90 градусов. Есть один шрифт 8х8.
Сейчас я переписываю тот самый скрипт на православный C++, попутно понимая, что в нем происходит.
Так как из опыта в ромхакинге у меня только перерисовывание шрифтов в Pokemon Platinum и последующая "BCTABKA BOT TAKOIO TPAHCLUTHOIO TEKCTA", то у меня возникают некие вопросы:
1. Можно ли дорисовать русские буквы на пустое место в шрифтах и как в таком случае игра поймет, что нужно использовать эти клетки?
2. Не был ли изобретен бразильский велосипед? Я имею в виду, возможно, этот скрипт легко можно заменить каким-то более цивилизованным и стандартным решением?


В прикрепленыше шрифты, открытые в CrystalTile2.
Название: Перевод игры Ghost Trick
Отправлено: Джинни от 26 октября 2012, 09:41:28
Цитата: cpp от 25 октября 2012, 22:24:51Можно ли дорисовать русские буквы на пустое место в шрифтах и как в таком случае игра поймет, что нужно использовать эти клетки?
Нужно. У каждой клетки есть индекс. Индекс = код символа.
Название: Перевод игры Ghost Trick
Отправлено: cpp от 26 октября 2012, 19:47:18
М, я понял кажется.
Там буквы закодированы двумя байтами от 0x00 0x00 (0) и далее. Причем второй байт служит для каких-то служебных целей (концы строк, эффекты, видимо), обычные буквы и знаки везде содержат 0x00. Поменял вручную несколько букв на 0x73 0x00 (пустая область), нарисовал там квадрат, ну и он отобразился в игре. Правда, с шириной небольшие проблемы, но я там видел файлы с названиями "CharWidth.bin" - там, видимо, хранится ширина. Вобщем надо копать.
Но шрифт! Вот что с ним не так? Как его правильно открыть? У меня получилось очертания букв получить с такими настройками: 16x16, byte jump 32, 4 color 2bpp. Но он выглядит совсем не так, как в игре. Там если все 4 цвета поменять, в буквах есть пробелы. Приложил скриншот с тем, что я получил (внизу - увеличенный текст из эмулятора), а также сам шрифт.
Название: Перевод игры Ghost Trick
Отправлено: Джинни от 27 октября 2012, 15:02:26
Возможно используется кодировка Shift-JIS. Часто в японских играх.
Формат графики, думаю, надо конвертировать собственными силами. Вряд ли есть такой в тайловых редакторах.
Название: Перевод игры Ghost Trick
Отправлено: cpp от 27 октября 2012, 23:03:09
Буду здесь писать свой прогресс, вдруг кто-то захочет помочь/подсказать/ткнуть в очевидные ошибки  :)
ЦитироватьФормат графики, думаю, надо конвертировать собственными силами.

Я понял, что нужно изменить по сравнению с 4 color 2bpp из CT2:

1  ряд +1
2  ряд -1
3  ряд +1
4  ряд -1
5  ряд +1
6  ряд -1
7  ряд +1
8  ряд -1
9  ряд +1
10 ряд -1
11 ряд +1
12 ряд -1
13 ряд +1
14 ряд -1
15 ряд +1
16 ряд -1

Собственно, каждые 2 ряда должны поменяться местами. Я думаю, что это связано с тем, что CT2 читает файл, как Big Endian, а нужно Little Endian (или наоборот :) ).


По поводу самого текста.
Вот такая вот карта символов у игры:

char charmap[]={
'0','1','2','3','4','5','6','7','8','9',   //9
'A','B','C','D','E','F','G','H','I','J',   //19
'K','L','M','N','O','P','Q','R','S','T',   //29
'U','V','W','X','Y','Z','a','b','c','d',   //39
'e','f','g','h','i','j','k','l','m','n',   //49
'o','p','q','r','s','t','u','v','w','x',   //59
'y','z','!','?','?','?','?','?','?','?',   //69
'?','?','?','?','?','?','?','?','?','?',   //79
'?','?','?','?','*','?','?','?','?','?',   //89
'?','?','?','?','?','?','?','?','?','?',   //99
'?','?','?','?','?','?','?','?','?','*',   //109
'?','?','?','?','*','*','*','*','*','*',   //119
'*','*','*','*','*','*','*','*','*','*',   //129
'*','*','*','*','*','*','*','*','*','*',   //139
'*','*','*','*','*','*','*','*','*','*',   //149
'*','*','*','*','*','*','*','*','*','*',   //159
'*','*','*','*','*','*','*','*','*','*',   //169
'*','*','*','*','*','*','*','*','*','*',   //179
'*','*','*','*','*','*','*','*','*','*',   //189
'*','*','*','*','*','*','*','*','*','*',   //199
'*','*','*','*','*','*','*','*','*','*',   //209
'*','*','*','*','*','*','*','*','*','*',   //219
'*','*','*','*','*','.','*','?','?','(',   //229
')','?','?','*','"','?','?',':','*',',',   //239
'+','/','#','\'','-','*','*','%','*','*',  //249
'*','*','&','?','?',' '};                 //255

* - пустые места (и те, что я еще пока не разобрал). Русский алфавит можно вставить после символа ?
Также я сделал распаковку LZSS + вытаскивание текста в одной программе: скриншот (http://ssmaker.ru/886d7ebf/)

Осталось прикрутить GUI для перевода, который будет расставлять вместо русских букв их индексы, нарисовать русский шрифт на этих самых индексах и расковырять файлы, где записана ширина символов. Вроде ничего не забыл :) 


******************
(обновление)

Сделал конвертер шрифта в обычный файл. Распознается, как GBA 8bpp - скриншот (http://ssmaker.ru/a8d7042f/)
Название: Перевод игры Ghost Trick
Отправлено: Джинни от 28 октября 2012, 07:29:21
Молодец. Ещё палитру нормальную подключи и вообще будет здорово :)
Название: Перевод игры Ghost Trick
Отправлено: cpp от 29 октября 2012, 02:01:31
http://ssmaker.ru/6580ea88/ вот с нормальной палитрой.
http://SSMaker.Ru/f661e2ea/ вот я перерисовал букву M, закодировал шрифт назад и посмотрел на результат. Работает!
Теперь буду делать редактор текста
Название: Перевод игры Ghost Trick
Отправлено: Mefistotel от 29 октября 2012, 12:50:56
Действительно молодец. :)
Если у редактора будет возможность вставлять более емкий по сравнению с оригиналом текст, то будет супер. То есть он должен работать по указателям и должна быть возможность изменения адресов хранения текста. По аналогии как Круптар)
Название: Перевод игры Ghost Trick
Отправлено: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Название: Перевод игры Ghost Trick
Отправлено: Oraculum от 29 октября 2012, 22:02:23
Цитата: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Цитата: cpp от 25 октября 2012, 22:24:51Тексты в игре сжаты и лежат в файлах с расширением .xml.lz

Название: Перевод игры Ghost Trick
Отправлено: JurasskPark от 29 октября 2012, 22:52:15
Цитата: Oraculum от 29 октября 2012, 22:02:23
Цитата: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Цитата: cpp от 25 октября 2012, 22:24:51Тексты в игре сжаты и лежат в файлах с расширением .xml.lz
Ну так не редактор, а конвертер.
Название: Перевод игры Ghost Trick
Отправлено: Oraculum от 29 октября 2012, 23:34:22
Цитата: JurasskPark от 29 октября 2012, 22:52:15
Цитата: Oraculum от 29 октября 2012, 22:02:23
Цитата: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Цитата: cpp от 25 октября 2012, 22:24:51Тексты в игре сжаты и лежат в файлах с расширением .xml.lz
Ну так не редактор, а конвертер.
Естественно, редактор будет включать в себя распаковщик и запаковщик.
Название: Перевод игры Ghost Trick
Отправлено: cpp от 30 октября 2012, 16:48:04
Ну, во-первых, специфические коды идут, да. Например, всякие там раскрашивания текста, портреты, звуки.
А во-вторых, это хороший повод попрактиковаться в программировании  :)


http://ssmaker.ru/1c0e1191/
Название: Перевод игры Ghost Trick
Отправлено: JurasskPark от 30 октября 2012, 16:54:10
Г слишком уж ровная по сравнению с остальными.
Название: Перевод игры Ghost Trick
Отправлено: Джинни от 30 октября 2012, 18:31:20
Это специально такой жуткий шрифт?)))
Название: Перевод игры Ghost Trick
Отправлено: TrickZter от 31 октября 2012, 06:19:14
Вырвиглазный шрифт :o
Название: Перевод игры Ghost Trick
Отправлено: German от 31 октября 2012, 09:58:09
Я думал это стилизация, хотя в игре текст идёт более удобочитаемым шрифтом. Может. не туда смотрю?  :)
(http://api.ning.com/files/CnmfgTHWa2vI1ITemq5hb-9-dEqP35Mh3b4bn6OVfajlOTzSUclbn0bONjEy366FtbsKnqAWYxHyRwrO6gmYzz5bc1yTOtff/GhostTrick05.jpg)
Название: Перевод игры Ghost Trick
Отправлено: TrickZter от 01 ноября 2012, 07:49:18
Цитата: German от 31 октября 2012, 09:58:09Я думал это стилизация, хотя в игре текст идёт более удобочитаемым шрифтом. Может. не туда смотрю?  :)
В оригинале шрифт не только прямее, но и многоцветный (с полутонами), а ТС сделал кривой одноцветный шрифт. Судя по всему, шрифт он вручную не рисовал, а нафотошопил из какого-нибудь имеющегося в системе шрифта. С полутонами он, может быть, смотрелся ещё ничего, но если из фигурного шрифта делать чисто белый (с заменой полутонов на белый цвет), то ожидаемо получается "вырвиглаз".
Название: Перевод игры Ghost Trick
Отправлено: greengh0st от 25 ноября 2012, 01:01:41
Ну что есть новости?

Название: Перевод игры Ghost Trick
Отправлено: Voodoo от 29 ноября 2012, 02:36:55
Там текст запакован в не стандартный .lz архив, удалось его достать?
Название: Перевод игры Ghost Trick
Отправлено: Mefistotel от 21 января 2016, 15:32:20
Ни у кого контакты автора темы не сохранились? Почта или агент какой.