![]() |
![]() |
||
EXTRACTOR | .RU – версия 2.2 |
||
![]() |
![]() |
Что у нас есть? Это тоже интересно ![]() |
Статьи и описания форматов игровых файлов Описание формата FNTЭта статья относится к играм: Автор материала: Siberian GRemlin Описание формата FNT из игр C&C, C&C 95, C&C: Red Alert, Dune 2, Kyrandia 3 Этот формат использовался Westwood с 92 по 97 год, чтобы храннить шрифты для своих игр. И способ хранения шрифтов по моему мнению весьма оригинальный и нестандартный. В файле такого формата хранится размер этого самого файла, кол-во символов их максимальная высота и ширана, причем что у каждого символа своя ширина и высота, которые для каждого символа хранятся в свою очередь в двух отдельных массивах. Само же графическое изображение хранится тоже в виде одномерного массива. Графическое изображение не так как я думал, что черно-белое, а на самом деле 4битное(16 цветов). Вот Формат заголовка этих шрифтов: FNTHeader: record FileSize: Word; //Размер всего файла. Unknown1: Word; //Мусор. всегда одно значение(0500). Unknown2: Word; //Мусор. всегда одно значение(000e). Unknown3: Word; //Мусор. всегда одно значение(0014). W_pos: Word; //Начало(Offset) массива ширины каждого символа. Grph_pos: Word; //Начало(Offset) 'массива' графики. H_pos: Word; //Начало(Offset) массива высоты каждого символа. Unknown4: Word; //Мусор. всегда одно значение(1012). Zero: byte; //Нулевой байт. Всегда. Counts: Byte; //Counts+1=Кол-во символов. H_max: Byte; //Максимальная высота символов. W_max: Byte; //Максимальная ширина символов. end; После заголовка идут массивы ширины, графики и высоты. Как я уже сказал пиксель шрифта 4битный, отсюда вытекает, что 2 пикселя хранятся в одном байте. С этим я неразобрался как декомпресить байт и получить два пикселя. Это дело описал Gordan Ugarkovic когда описывал формат FNT(за что ему отдельное спасибо). Я сделал проще - проанализировал значения байтов графики и вот что получилось:
Формат шрифта Tiberian Sun был немного модернизирован. FNTHeader: record FileSize: Word; //Размер всего файла. Unknown1: Word; //Мусор. всегда одно значение(0002). Unknown2: Word; //Мусор. всегда одно значение(000e). Unknown3: Word; //Мусор. всегда одно значение(0014). Unknown4: Word; //Мусор. всегда одно значение(0214). Unknown5: Word; //Мусор. всегда одно значение(0514). Unknown6: Word; //Мусор. всегда одно значение(0314). Unknown7: Word; //Мусор. всегда одно значение(0000). Unknown8: Word; //Мусор. всегда одно значение(0000). Unknown9: Word; //Мусор. всегда одно значение(1010). end; Больше я стал пока разбираться со шрифтами TS. |
||||||||||
© | 2000—2010 «EXTRACTOR.ru» — игровые ресурсы: распаковка музыки и графики, конверторы форматов и многое другое… ![]() |