Новости:

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)

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

Главное меню

Shining Force Gaiden: Final Conflict

Автор Hatsuyuki, 28 сентября 2010, 23:43:21

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

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

Hatsuyuki

Они под английский заточены. Например, там при сжатии используется тот факт, что в английском нет развитой системы окончаний и многие слова просто повторяются (часть 'word_count'). И эта часть придумана не для красоты, а из-за необходимости, как я понял.

Добавлено позже:

Ещё цитаты (tech9c.txt):

ЦитироватьFirst comes the font. Do note that you are restricted to the visible tiles
 and a few extra. A total of $00-$56.

 Find 'sf3_font.bin' for the data. When done, copy it to 'Tools\rom_insert'.

 If you need more than $57 tiles, a modification of the script6-1 overage check
 in 'script_inserter', 'huffman.cpp' is needed. You will have to manually update
 the starting locations of the empty space in the font table.

 Edit: Because the script compresses better, the limit is now redirected to $60.
       So this step is not required. If you need more space, then you can lower
       the # tiles used.

 If you need more than $60 tiles, then this will take some more work. You
 will have to delve into Chapter 3 and modify any substring ranges. There's
 plenty of code here to change (t7a.asm, t3d_2.asm, substring_formatter, and others).

Сколько понадобится для русского? :)

ЦитироватьIf you run of out script space, then you'll need to expand the # pages from 12 to (*).
 Again, finding the space may prove difficult as the ROM doesn't allow much more
 without a serious recompression of the graphics.

Если бы всё было так просто, я бы и без вас всё сделал, уж поверьте :)
Otium sine litteris mors est et hominis vivi sepultura.

Джинни

Цитата: Hatsuyuki от 26 декабря 2010, 20:07:10Они под английский заточены. Например, там при сжатии используется тот факт, что в английском нет развитой системы окончаний и многие слова просто повторяются (часть 'word_count'). И эта часть придумана не для красоты, а из-за необходимости, как я понял.
Это называется МТЕ. И используется для сжатия текста. Русский текст тоже поддаётся сжатию таким образом.

$57 - это 87 символов. То есть должно хватить. Английские можно только заглавные оставить. И не делать копии похожих (например, таких как кириллическая А и латинская A).

TrickZter

Да и в русском шрифте можно повыкидывать лишние буквы. В большинстве случаев буквы ЪЫЬ не нужны.

Добавлено позже:

В итоге получается:
весь набор A-Z - 26 букв
БГДЁЖЗИЙЛПУФЦЧШЩЭЮЯ - 19 букв
весь набор а-я - 33 буквы
. , ! ? : ; ( ) " - 9 символов
Итого: 87

Не влез только апостроф, но без него можно обойтись. Или же можно выкинуть точку с запятой (не самый нужный символ) и оставить апостроф. Ещё, как вариант, можно унифицировать У и Y.

Джинни

Дефиса/тире не хватает. Скобки редко используются в диалогах. Если вообще используются

TrickZter

Да, забыл.  %) Тогда или скобки убрать, или отказаться от точки с запятой и апострофа.

Hatsuyuki

Цитата: Джинни от 26 декабря 2010, 13:35:29Это называется МТЕ. И используется для сжатия текста. Русский текст тоже поддаётся сжатию таким образом.
Результаты исследований по эффективности ты тоже, конечно, предъявишь? Я и не говорил, что принципиально нельзя это использовать. Я говорил про эффективность применения данного метода для русских текстов и для английских :)

Видео и звук в распространённых форматах тоже можно дополнительно пожать обычным архиватором (поубивал бы) LOL
Otium sine litteris mors est et hominis vivi sepultura.

Джинни

Цитата: Hatsuyuki от 26 декабря 2010, 22:31:40Результаты исследований по эффективности ты тоже, конечно, предъявишь? Я и не говорил, что принципиально нельзя это использовать. Я говорил про эффективность применения данного метода для русских текстов и для английских Улыбка
Эффективность нормальная. Не намного хуже, чем с английским текстом. Просто слова в таблицу следует записывать без окончаний.

TrickZter

Насколько я понял, словарь там генерится автоматом. Правда, не уверен, умеет ли прога генерить словарь из частей слова. Куски с апострофами там есть, но это ещё не показатель.

Добавлено позже:

Хе, у них в словаре два одно-буквенных слова. Это говорит о том, что словарь оптимизирован далеко не лучшим образом.
Если переделать процедуру на поиск произвольных текстовых фрагментов, включая пробелы и знаки препинания, то сжатие может получиться даже лучше, чем у англов.
Сразу говорю: я в си не шарю, так что вопрос не ко мне  :)

JurasskPark

И я не шарю.
Качай архив.

TrickZter

Вообще так-то написать такую прогу с нуля - дело получаса. Когда я делал подобную штуку для FF6, у меня примерно столько времени и ушло :) Правда, там не MTE, а DTE был, но смысл тот же.

Hatsuyuki

Там дальше ещё сжатие по Хаффману идёт. Вы уверены, что вот эта ваша модификация действительно улучшит процесс в целом? :)

Цитата: tech3c.txt
The unused font numbers will be assigned to the most common words. So let's say

$C0 = "to". $C1 = "you". $C2 = "the".

That also means that

$B0 = " to", $C1 = " you", $C2 = " the"

are very likely to occur. But we have to be considerate of how Huffman works.
Going from [A-Z,a-z] -> [A-Z,a-z,{codes}] will cause our tree sizes to expand
sharply. But if we do

$D0B0 = " to", $D0C1 = " you", $C2 = " the"

then we only go [A-Z,a-z] -> [A-Z,a-z,$D0] which will curb the symbol population.
[$D0] -> [{codes}] which will result in decently sized codewords.


While the first approach will generate a smaller file, our tree space will be
absorbed. The second method uses the clean memory more efficiently. Why should
we do this?

Admittedly the first one would suit us fine if we had large volumes of space.
We're tight on it. But we can defrag the unused tree area and copy over some
of our binary data.


Based on the 16 most common substrings:

(1)
$48B free bytes

Total size: 26.64 KB
WARNING: Overage of 0.64 KB

$1FF free bytes after defrag


(2)
$6F2 free bytes [tree area]

Total size: 27.05 KB
WARNING: Overage of 1.05 KB

$2BA free bytes after defrag

Я уже давно забыл, как работает Хаффман, но тут вроде обосновывается их подход :)
Otium sine litteris mors est et hominis vivi sepultura.

Джинни

Сжатие хаффман+мте - тоже хорошо.

TrickZter

Цитата: Hatsuyuki от 26 декабря 2010, 21:20:42Вы уверены, что вот эта ваша модификация действительно улучшит процесс в целом?
Абсолютно.
MTE - это запись нескольких байт при помощи одного байта (бывает и больше, но обычно используется один). Чем длиннее слово и чем чаще оно встречается, тем больше эффект от сжатия. Тот, кто переводил на английский, очевидно рассчитывал только из частоты повторения, совершенно не учитывая длину слова.
Какой смысл заносить слово, состоящее из одного символа в словарь? Никакого. Как оно раньше занимало 1 байт, так оно его и занимает - 0% сжатия, при этом расходуется одно место в словаре.

Ценность слова посчитать довольно просто: нужно вычесть из длины слова размер MTE и умножить результат на количество повторений слова.
Допустим, имеем слово, состоящее из 5 букв и встречающееся 100 раз, MTE будем считать однобайтовым, получаем:
(5-1)*100 = 400 (экономим 400 байт)
А теперь посчитаем ценность 1-символьного слова, которое, допустим, встречается 1000000 раз:
(1-1)*1000000 = 0 (экономим 0 байт)

Хорошо оптимизированный MTE в любом случае лучше будет сжиматься, чем плохо оптимизированный.

Добавлено позже:

Цитата: Джинни от 26 декабря 2010, 21:30:37Сжатие хаффман+мте - тоже хорошо.
Именно. В GBAшных игрушках часто используются сразу два метода хаффман+LZ77, вместе они дают большее сжатие, чем просто хаффман или просто LZ77.

Hatsuyuki

В любом случае замеры интересно будет посмотреть :)
Otium sine litteris mors est et hominis vivi sepultura.

JurasskPark

Где новости о переводе?

Hatsuyuki

Там же, где шрифты и прочее, видимо :)
Otium sine litteris mors est et hominis vivi sepultura.

JurasskPark


TrickZter

Цитата: JurasskPark от 13 февраля 2011, 17:38:54
Не понял...  *SCRATCH*
Думаю, можно читать так: "За перевод даже не брался."

Hatsuyuki

Началась старая песня :)
Otium sine litteris mors est et hominis vivi sepultura.