Picture Packager
РУССКИЙ | ENGLISH

about:
Идея программы состоит в следующем: В телефоне мы имеем определенную область памяти где лежат картинки и индекс этих картинок с их адресами (PIT). Обычно если нам надо поменять картинку, то мы заменяем ее место в памяти на равную картинку или меньшую размером и обновляем запись в индексе. Но если мы хотим заменить картинку на бОльшую по размеру, то нужно найти где то свободное место и записывать ее туда, при этом место где картинка лежала ранее "пропадает". Теперь если описать место занимаемое всеми картинками и при каждой смене переписывать их все вместе с индексом, то можно получить определенные преимущества. Например можно будет заменить некоторую картинку на бОльшую, если при этом стереть или укоротить какую либо другую, так чтобы общее место оставалось таким же. Эта программа позволяет анализировать ФФ и вывести место занимаемое картинками, распаковывать картинки. И самое главное она берет указанные по маске картинки, пытается уложить их в указанные блоки, и при успехе создает патч.

форматы входных картинок:
Сразу хочу сказать что smelter и SPC распаковывают даже черно-белые картинки как 24bit поэтому эти картинки не подходят (на всех не хватит места). Также палитра при распаковке картинок из этих программ получается неверной (см. ниже). Так что я советую распаковывать PicPac'ом.
Немного о палитрах:
1bit = bmp 1bit: черный(0,0,0) и белый(255,255,255) =)
2bit = bmp 4bit: используются только черный(0,0,0), белый(255,255,255), прозрачный(0,255,0), любой другой заменяется на серый. (Сделано из-за того что smelter распаковывает серый как синий, а SPC как серый) Небольшие отклонения цветов возможны - программа сама приведет к нужному виду. Т.к. у формата bmp нет 2bit цветности, то вместо нее используется 4bit (16 color). Для верного результата используйте цвета как можно ближе к описанным.
*Палитра для предыдуших 2х форматов в телефоне используется от вашей цветовой схемы. Так что то что я тут написал "серый" может быть и любым другим, так же как и черный с белым. От самой картинки это не зависит. А вот следующие 3 формата уже хранят палитру в себе.
8bit =bmp 8bit (256цветов). При этом телефоном используется 8градаций на красный и зелёный и только 4 на синий. (8*8*4=256) Палитру 256ти цветного режима для Photoshop можете скачать здесь. Но и без палитры программа подберет наиболее близкие цвета, если в вашей картинке используется несоответствующая палитра. Причем алгоритм производит эту конвертацию точнее чем SPC.
* (Правда до dithering и noise diffusion еще далеко, так что маньяки могут делать эти махинации в фотошопе с помощью предложенной палитры m55.act. Для справки: Image-> Mode-> Indexed Color...-> Palette=adaptive, Forced=custom-> Load)
12bit = bmp 16-24bit: Тут уже идет по 16 комбинаций на каждый цвет. Так и получаются наши 16*16*16=4096 цвета. Я существенно увеличил чуствительность по прозрачному цвету, теперь надо иметь строго (0,255,0) а не так как это реализовано у SPC. Сделано изза того что в картинке указать не трудно, а в телефоне есть некоторые непрозрачные картинки с зеленым цветом. Например 768ая картинка от настройки контраста, которую SPC залил бы с дыркой в середине. Можно реализовать и заливку (0,255,0) цвета как непрозрачного, но пока думаю это не нужно. Палитра также подбирается автоматически и не заваливается так в сторону синего как у SPC (непонимаю зачем они так сделали). В телефон как 12bit льются bmp форматов: 16bit и 24bit.
16bit = bmp 32bit: Встречаются пока только на CF62 и только как сжатые. Пока нет информации поддерживают ли другие x60 этот формат. Так что будьте внимательны, если у вас стоит ZIP:1 в ini и вы пытаетесь ужать 32bit BMP - она будет записана как 16с! Заметьте что PicPac сам создает 32bit только при распаковке 16с, так что если вы сами не добавляли 32bit картинок то накладок быть не должно. Картинки в этом формате занимают в памяти телефона столько же места как и 12с но позволяют передать большее количество цветов, так что если у вас CF62 то приоритетнее использовать 16с вместо 12с.
Так что теперь можете ставить цветные картинки вместо ч/б, с легкостью менять размеры и не боятся что SPC не найдет для них места или залезет на FFS расширенного диска A. Ненужные картинки можете стирать, потому что их место в PIT заменяется ссылкой на прозрачную картинку 1х1 пиксель. (Сама прозрачная картинка записывается всего один раз).

analize:
Указываете ФФ и получаете в зависимости от настроек список места под картинками и дополнительную информацию. Этот список можно прямиком записывать в free.ini. Настройки:
Search PITs with more than ... rings Программа ищет PITы с более чем указано количеством картинок. Обычно более 100. В м55 их изачально несколько, опция на всякий случай.
Check GAPs for free space Просматривать промежутки между картинками на наличие свободного места (байты 0xFF). Иногда картинки лежат не одна за другой, а с некоторым промежутком заполненным 0xFF, являющимся пустотой и не используемым.
Search FF for free blocks at least ... bytes Искать в ФФ свободное место с длинной больше чем указано. Обратите внимание на адреса найденных блоков, это может быть ваш флекс EEFS и т.д.!
LogGAPs Вывести также промежутки между блоками картинок. Знающие могут посмотреть эти места в прошивке, иногда там просто мусор. И тогда это место тоже можно прибавить к месту картинок.
Log only first PIT Считывать данные только с первого найденного PITa (если их найдено несколько). При включенной опции картинки будут сохраняться просто под номерами, если опция выключена и вы считываете несколько ПИТов, то картинки сохраняются как mask_P_N_PIT.bmp.

misc
Filter table Выводить в таблицу только не дубликаты. (т.е. картинк под разными номерами, но физически лежащими в одном и том же месте ФФ) Например при чтении всех ПИТов М55 будет выведено не 3тысячи картинок а 848.
Show transparency Показывать прозрачность у картинок в таблице.
Add FF name as mask При распаковке имена мелодий будут начинаться с имени ФФ из которого они извлечены.
Настройки автоматически сохраняются при выходе в файле PicPac.ini Чтобы сбросить настройки по умолчанию - просто сотрите этот файл.
Show only .. PIT in table если считано несколько ПИТов, то можно работать только с одним выбранным. Картинки из него будут извлекать просто под номерами. (Если у вас в ФФ остались остатки старых ПИТов и только один правильный и он не первый)

compress:
Чтобы запаковать картинки вам надо иметь файл free.ini в каталоге программы. Его параметры:
PIT:[adress]
Адрес, начиная с которого пишутся индексы картинок.
NUM:[num]
Количество мелодий в этом PIT.
ZIP:1
Картинки будут писаться как сжатые. Для 60ой серии и С55.(По умолчанию, если строки нет ZIP:0)
ADR:[смещение]
и
MUL:[множитель]
Параметры пересчета PIT записей в адрес картинки. По умолчанию ADR вычисляется автоматически, а MUL:4000
INF:[адрес]
Адрес в прошивке по которому лежит PitAdr и MaxPitNumber. Необходимо когда вы хотите использовать увеличенный ПИТ. (см. ниже)
Далее идут сами блоки в которые будут паковаться картинки в формате:
[hex start]-[hex end] ;comment
например:
38C2C0-38F93D ;13950b
Всю эту информацию вы можете получить используя analize
Теперь имея free.ini вы кликаете на любой картинке и программа считывает все картинки в данном каталоге с такой же маской файла. Если некоторые файлы одинаковы (попиксельно) то в патч пишется только первый, а остальные пишуться только в PIT как ссылки на первый. Если какого-либо файла нет, то на его место в PIT будет записана ссылка на прозрачную картинку 1х1 пиксель. (Сама прозрачная картинка записывается всего один раз). При успешной укладке мелодий по блокам вы получаете патч который сохраняется в каталоге проги с именем pic_package.vkp
Опции компрессора:
Log duplicates Вывести все номера картинок и у каждой ее дубликаты в логе. Если вы хотите посмотреть какие картинки прога считает одинаковыми.
Ask to execute and exit При успешной упаковке будет выведен вопрос: 'Вы хотите закрыть PicPac и запустить полученный патч в V_Klay?'
Fill free space by 0xFF Заполнять всё оставшееся после упаковки картинок место в блоках байтами 0xFF. Т.е. после применения этого патча пустоты будут видны в дампе smelter'a , сделано чтобы затирать старые ПИТы при 4.08 и т.д.

history:
v0.8 -Изменен интерфейс.
-Исправлен баг с невыводом последнего блока картинок в анализаторе
-Исправлен баг в обработке путей из-за которого появлялось 'file not found'
-Добавлено заполнение оставшегося в блоках места байтами 0xFF
-Теперь можно работать с несколькими ПИТ.
-Поддержка С55 (пока только основного ПИТ).
-NUM: в ini теперь отсчитывается от 1!
-Обновлены все ini идущие вместе с прогой.
-Можно упаковывать не только папку, а и текущие загруженные в программу данные. (чтобы не извлекать все картики если вы хотели лишь заменить парочку)
v0.71 -Улучшено определение PITов картинки которых лежали близко к концу ФФ.
v0.7 -Проверка блоков в ini на пересечения.
-Высчитывается длинна нового ПИТа и проверяется не пересекает ли он какие либо блоки.
-Обновлен хелп по поводу INF
-Обновлены все ini идущие с архивом.
v0.63 -Исправлен серьезный баг с упаковкой 12bit картинок из-за которого телефон глючил.
v0.62 -Поддержка правильных ФФ от MC60.
-Обновлен free_MC60.ini
v0.61 -Исправлен баг с прозрачным цветом.
-Исправлен баг с упаковкой некоторых 8с
-Теперь нормально воспринимает 128х128 bmp созданные в Photoshop CS8
v0.6 -Переписан алгоритм сжатия картинок. Теперь 8с/12с/16с сжимаются лучше, иногда даже лучше чем у сименса.
-Много мелких исправлений, влияющих на скорость.
v0.52 -Тестировано на CF62 (respect to Vampik). Некоторые бугфиксы с прозрачным цветом, а так же улучшена компактность укладки картинок для этой модели. Flooded должен уменьшиться при равных условиях. Внимание: картинки формата 16с теперь соответствуют 32bit BMP. Хелпа подправлена.
v0.51 -Поддержка увеличенных PIT'ов. Для этого в ini добавлен параметр INF в котором находиться адрес по которому лежит информация о PIT1 (адрес PIT и количество картинок)
-Обновлен free_M55v10.ini и free_M55v11.ini, добавлены INF.
v0.5 -Добавлена поддержка 60серии и их сжатых форматов картинок. (ZIP:1 в ini при сжатии, при распаковке - автоматом)
-ini файл теперь нужен только для compress.
-Добавлена возможность искать PIT'ы с указанным количеством картинок.
-В ini добавлено 2 дополнительных параметра ADR и MUL для поддержки телефонов с нестандартным пересчетом ПИТ записей (МС60 и CF62)
-Опция для извлечения дубликатов (полезно когда сохраняешь картинки из всех 4х ПИТов м55 =) )
-Анализатором генерится текст который сразу можно сохранить как free.ini без редактирования. Параметры IMG и PIT заполняются автоматически для первого найденного ПИТа
-Если сжатие прошло успешно, то задается вопрос. При нажатии yes - PicPac закрывается и сгенерированный патч открывается в V-Klay. No - продолжить работу.
v0.4 -Добавлена поддержка извлечения картинок. Они сохраняются в своих форматах (1/2/8/16bit). При этом палитра у 8битных не меняется как у SPC и smelter. Т.е. они извлекаются в таких же цветах в которых хранятся в телефоне.
-Подправлен free_M55.ini
-По умолчанию анализатор показывает только место от картинок первого ПИТа. Изменяется через Сheck only first PIT в опциях.
-Доработана палитра 8bit для Adobe Photoshop.
v0.3 -Добавлен поиск дубликатов при кодировании. Теперь если у вас есть несколько идентичных картинок, то в блок пишется только первая, а остальные пишутся только в PIT как ссылка на первую.
-Картинки по блокам теперь укладываются более интеллектуально =) параметр flooded должен снизится при равных условиях.
-Выводится оставшееся место в блоках после упаковки.
-В анализаторе добавлена отключаемая опция "check gaps for free space". С ней блоки будут обьеденяться в один, если между ними 0xFF. Если опция отключена, то выводится просто точный дамп ваших PIT'ов.
-Так же появилась опция "search FF for free space". По умолчанию длинна блока задана как для 101x80x16b Перед использованием забейте ваш диск до отказа, и потом не забудьте проверить не попадают ли найденные блоки на EEPROM или EEFS =)
v0.2 -Теперь патч сохраняется в один выйл .vkp , вместо множества .bin
-Добавлено определение ФФ от S55 в анализаторе (спасибо ValeraVi)
-Добавлено два параметра в ini : PIT и IMG. Теперь программа должна работать с любым телефоном для которого прописан ini
-Обновлен файл free.ini для М55 и добавлен примерный для S55.
v0.1 -Первая версия выложенная в инет =)

 

| Sep. sepich@rambler.ru ICQ#6333555 |