Форум Magic Team

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

Название: Перевод игры Ghost Trick
Отправлено: cpp от 25 Октября 2012, 21: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, 08:41:28
Можно ли дорисовать русские буквы на пустое место в шрифтах и как в таком случае игра поймет, что нужно использовать эти клетки?
Нужно. У каждой клетки есть индекс. Индекс = код символа.
Название: Перевод игры Ghost Trick
Отправлено: cpp от 26 Октября 2012, 18:47:18
М, я понял кажется.
Там буквы закодированы двумя байтами от 0x00 0x00 (0) и далее. Причем второй байт служит для каких-то служебных целей (концы строк, эффекты, видимо), обычные буквы и знаки везде содержат 0x00. Поменял вручную несколько букв на 0x73 0x00 (пустая область), нарисовал там квадрат, ну и он отобразился в игре. Правда, с шириной небольшие проблемы, но я там видел файлы с названиями "CharWidth.bin" - там, видимо, хранится ширина. Вобщем надо копать.
Но шрифт! Вот что с ним не так? Как его правильно открыть? У меня получилось очертания букв получить с такими настройками: 16x16, byte jump 32, 4 color 2bpp. Но он выглядит совсем не так, как в игре. Там если все 4 цвета поменять, в буквах есть пробелы. Приложил скриншот с тем, что я получил (внизу - увеличенный текст из эмулятора), а также сам шрифт.
Название: Перевод игры Ghost Trick
Отправлено: Джинни от 27 Октября 2012, 14:02:26
Возможно используется кодировка Shift-JIS. Часто в японских играх.
Формат графики, думаю, надо конвертировать собственными силами. Вряд ли есть такой в тайловых редакторах.
Название: Перевод игры Ghost Trick
Отправлено: cpp от 27 Октября 2012, 22: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, 06:29:21
Молодец. Ещё палитру нормальную подключи и вообще будет здорово :)
Название: Перевод игры Ghost Trick
Отправлено: cpp от 29 Октября 2012, 01:01:31
http://ssmaker.ru/6580ea88/ вот с нормальной палитрой.
http://SSMaker.Ru/f661e2ea/ вот я перерисовал букву M, закодировал шрифт назад и посмотрел на результат. Работает!
Теперь буду делать редактор текста
Название: Перевод игры Ghost Trick
Отправлено: Mefistotel от 29 Октября 2012, 11:50:56
Действительно молодец. :)
Если у редактора будет возможность вставлять более емкий по сравнению с оригиналом текст, то будет супер. То есть он должен работать по указателям и должна быть возможность изменения адресов хранения текста. По аналогии как Круптар)
Название: Перевод игры Ghost Trick
Отправлено: JurasskPark от 29 Октября 2012, 15:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Название: Перевод игры Ghost Trick
Отправлено: Oraculum от 29 Октября 2012, 21:02:23
А зачем редактор текста? Там специфические коды с текстом идут?
Тексты в игре сжаты и лежат в файлах с расширением .xml.lz

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


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

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