11 дней не было интернета,пишу с чужого ноута(файлы потом прикреплю).11 дней назад должен был отписать вот это.
Всё!Накипело:
1.При запаковке оригинального меню/шрифтов без их изменения размер сжатого файла остаётся тот же,что и до его распаковки(самое начало,когда вытаскиваем из распакованного Zlib'ом GAME.DTZ),при малейших изменениях в меню/шрифтах размер при сжатии может менятся как в большую,так и в меньшую сторону.Это зависит от того,на какие символы (ASCII) вы заменили оригинальные и от длинны совпадений этих символов(допустим:ММММММММММММММММММММММВВВВВВВВВВВВВВВВВВВВВВВ,условно сжимает в 22М23В),чем длиннее совпадения,тем меньше размер сжатого файла(при условии что эти символы присутствуют в словаре сжатия),так как нули есть в словаре полюбому ,используют иммено их (так можно использовать любой из 255(6) символов ASCII),если знать наиболее встречающийся символ (и забивать его вместо 0) в меню/шрифтах можно сжать ещё раза в 2->т.е. в 2 раза меньше вырезаных текстур.
2.
Можно обойтись без вырезания:
2.1.Не вырезать,а вставлять более простые текстуры(которые вам не важны и имеют множества совпадений символов) и за счёт этого заменить нужные вам текстуры(т.е. сложные текстуры компенсируют простые).
2.2.Из-за ввода новых символов запаковать
полностью старым словарём нельзя ,
но так как даже при максимальном сжатии используется не слишком оптимизированный словарь,под модифицированный файл (меню/шрифтов) можно и нужно создавать свой оптимизированный словарь (т.е. для каждой модификации своя дата сжатия).Как я понял сделать это можно настроив размер буфера для сжатого файла(да,да,как оказалось так можно сделать),а конкретней ввести размер сжатого оригинального файла в байтах и за счёт этого можно либо получить новый сжатый файл (меню/шрифтов) с оптимизированной датой и нужным нам размером ,или в противном случае компрессор не сможет этого сделать и выплюнет ошибку,если совпадений ,чтобы сжать файл до нужного размера,нехватает.
Проще для понимания и с несколькими подробностями (и про использование буфера тоже) описано здесь:
http://www.w3.org/TR...ransitional.dtd
2.3.Из предыдущего случая,если совпадений не хватает,придётся перепаковывать весь GAME.DTZ и в движке переписывать адреса затронутых конфигураций.
Вывод:размер сжатого файла зависит от сложности текстуры,самые сложные текстуры могут сделать нужный нам размер файла недосягаемым(из за чего,как я говорил выше,придётся делать перепак GAME.DTZ и всей игры).Это говорит о том,что при приготовлении GAME.DTZ делали с расчётом на модифицирование/исправление адресов и лежащих в нём ресурсов(и само собой чтобы с экономить память),в то время как шрифты и меню так же делались с расчётом на экономию памяти,но уже на века,без возможности глобального модифицирования(о добавлении чего то своего я вообще молчу),видимо это ещё и защита от таких как мы.
Немного информации про GAME.DTZ:
!!!!!!!!!!(
здесь не прав,ошибся,но всё равно читать)В отличие от других запакованных текстурных директорий имеет полный словарь(все 255(6) символов ASCII) за счёт чего,что бы мы в распакованном GAME.DTZ не меняли (без его увеличения конечно) ,после его сжатия он будет иметь либо оригинальный, либо меньший размер,
но никак не больший,что существенно облегчает его модификацию (если не считать меню и шрифты)(
здесь не прав,ошибся,но всё равно читать)!!!!!!!!!!.Но к сожалению полного словаря нет у шрифтов и меню и даже если её сделать,размер сжатого файла будет больший,т.к. словарь сжатия в файле сжимается стандартным словарём и соответственно чем больше словарь,тем меньше размер сжатого файла,но + сжатый словарь всё портит.
Есть идея крепкого варианта моддинга
всех ресурсов в GAME.DTZ,но она очень сложная,на PSP-версиях идея будет лагать,т.к. в PSP всего 64 мб внутренней памяти,из которых половина (30 с копейками) идёт на прошивку.Об идее раскажу позже.
Что забыл написать потом добавлю.
И кстати словари от PSP-версий(меню/шрифты) прикрепил.
Сообщение отредактировал DenielX: 26 November 2012 - 17:51