Новости:

01.01.2017: Релиз испанской версии Naruto - Ninja Council (GBA)
02.12.2016: Добавлена документация по Kruptar 7
09.10.2015: Обновление перевода игры Battletoads (NES) [версия 1.3]
22.01.2015: Kruptar Open Source
18.10.2014: Релиз обновлённой русской версии Castlevania - Dawn of Sorrow (GBA) от Owls Group
01.05.2014: Релиз русской версии Taiyou no Yuusha Firebird (NES)
24.06.2012: Добавлена доработанная документация и инструкция
26.05.2012: Обновление ORITON [версия 2.050]
11.05.2012: Обновление ORITON [версия 2.048]
11.03.2012: Обновление Kruptar 7 [версия 7.1.1.17]
29.01.2012: Обновление LZ77Restructor 2 [версия 1.02]
01.01.2012: Релиз русской версии Drill Dozer (GBA)

Подробнее на страничке новостей.
Ознакомьтесь с правилами нашего форума.

Главное меню

Перевод игры Ghost Trick

Автор cpp, 25 октября 2012, 22:24:51

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

cpp

Привет!
Хотелось бы перевести игру Ghost Trick (DS) на русский. После гугления на эту тему, нашел два начинания:
1)На русский - так и не начат. Автор темы - переводчик, он не умеет вскрывать ромы и ему никто не помог это сделать.
2)На бразильский (или испанский?) - застрял на половине.
Также был найден скрипт на Python (по-видимому, от автора бразильского перевода), который достает текст и запаковывает его.  Тексты в игре сжаты и лежат в файлах с расширением .xml.lz, я ума не приложу, как еще их можно открыть, кроме этого скрипта.
Шрифты я нашел в четырех файлах (возможно, их там больше; я открывал только те, в названии которых есть слово font). Все замечательно открылись в CrystalTile2 с настройками 16х16, Tile form: GBA 4bpp. Один из шрифтов содержит также катакану, а еще каждый символ повернут на 90 градусов. Есть один шрифт 8х8.
Сейчас я переписываю тот самый скрипт на православный C++, попутно понимая, что в нем происходит.
Так как из опыта в ромхакинге у меня только перерисовывание шрифтов в Pokemon Platinum и последующая "BCTABKA BOT TAKOIO TPAHCLUTHOIO TEKCTA", то у меня возникают некие вопросы:
1. Можно ли дорисовать русские буквы на пустое место в шрифтах и как в таком случае игра поймет, что нужно использовать эти клетки?
2. Не был ли изобретен бразильский велосипед? Я имею в виду, возможно, этот скрипт легко можно заменить каким-то более цивилизованным и стандартным решением?


В прикрепленыше шрифты, открытые в CrystalTile2.

Джинни

Цитата: cpp от 25 октября 2012, 22:24:51Можно ли дорисовать русские буквы на пустое место в шрифтах и как в таком случае игра поймет, что нужно использовать эти клетки?
Нужно. У каждой клетки есть индекс. Индекс = код символа.

cpp

М, я понял кажется.
Там буквы закодированы двумя байтами от 0x00 0x00 (0) и далее. Причем второй байт служит для каких-то служебных целей (концы строк, эффекты, видимо), обычные буквы и знаки везде содержат 0x00. Поменял вручную несколько букв на 0x73 0x00 (пустая область), нарисовал там квадрат, ну и он отобразился в игре. Правда, с шириной небольшие проблемы, но я там видел файлы с названиями "CharWidth.bin" - там, видимо, хранится ширина. Вобщем надо копать.
Но шрифт! Вот что с ним не так? Как его правильно открыть? У меня получилось очертания букв получить с такими настройками: 16x16, byte jump 32, 4 color 2bpp. Но он выглядит совсем не так, как в игре. Там если все 4 цвета поменять, в буквах есть пробелы. Приложил скриншот с тем, что я получил (внизу - увеличенный текст из эмулятора), а также сам шрифт.

Джинни

Возможно используется кодировка Shift-JIS. Часто в японских играх.
Формат графики, думаю, надо конвертировать собственными силами. Вряд ли есть такой в тайловых редакторах.

cpp

Буду здесь писать свой прогресс, вдруг кто-то захочет помочь/подсказать/ткнуть в очевидные ошибки  :)
ЦитироватьФормат графики, думаю, надо конвертировать собственными силами.

Я понял, что нужно изменить по сравнению с 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 + вытаскивание текста в одной программе: скриншот

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


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

Сделал конвертер шрифта в обычный файл. Распознается, как GBA 8bpp - скриншот

Джинни

Молодец. Ещё палитру нормальную подключи и вообще будет здорово :)

cpp

http://ssmaker.ru/6580ea88/ вот с нормальной палитрой.
http://ssmaker.ru/f661e2ea/ вот я перерисовал букву M, закодировал шрифт назад и посмотрел на результат. Работает!
Теперь буду делать редактор текста

Mefistotel

Действительно молодец. :)
Если у редактора будет возможность вставлять более емкий по сравнению с оригиналом текст, то будет супер. То есть он должен работать по указателям и должна быть возможность изменения адресов хранения текста. По аналогии как Круптар)

JurasskPark

А зачем редактор текста? Там специфические коды с текстом идут?

Oraculum

Цитата: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Цитата: cpp от 25 октября 2012, 22:24:51Тексты в игре сжаты и лежат в файлах с расширением .xml.lz


JurasskPark

Цитата: Oraculum от 29 октября 2012, 22:02:23
Цитата: JurasskPark от 29 октября 2012, 16:49:18
А зачем редактор текста? Там специфические коды с текстом идут?
Цитата: cpp от 25 октября 2012, 22:24:51Тексты в игре сжаты и лежат в файлах с расширением .xml.lz
Ну так не редактор, а конвертер.

Oraculum

Цитата: 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
Ну так не редактор, а конвертер.
Естественно, редактор будет включать в себя распаковщик и запаковщик.

cpp

Ну, во-первых, специфические коды идут, да. Например, всякие там раскрашивания текста, портреты, звуки.
А во-вторых, это хороший повод попрактиковаться в программировании  :)


http://ssmaker.ru/1c0e1191/

JurasskPark

Г слишком уж ровная по сравнению с остальными.

Джинни

Это специально такой жуткий шрифт?)))

TrickZter


German

Я думал это стилизация, хотя в игре текст идёт более удобочитаемым шрифтом. Может. не туда смотрю?  :)

TrickZter

Цитата: German от 31 октября 2012, 09:58:09Я думал это стилизация, хотя в игре текст идёт более удобочитаемым шрифтом. Может. не туда смотрю?  :)
В оригинале шрифт не только прямее, но и многоцветный (с полутонами), а ТС сделал кривой одноцветный шрифт. Судя по всему, шрифт он вручную не рисовал, а нафотошопил из какого-нибудь имеющегося в системе шрифта. С полутонами он, может быть, смотрелся ещё ничего, но если из фигурного шрифта делать чисто белый (с заменой полутонов на белый цвет), то ожидаемо получается "вырвиглаз".

greengh0st

Ну что есть новости?


Voodoo

Там текст запакован в не стандартный .lz архив, удалось его достать?

Mefistotel

Ни у кого контакты автора темы не сохранились? Почта или агент какой.