about:
Идея программы состоит в следующем: В телефоне мы имеем определенную область
памяти где лежат мелодии и индекс этих мелодий с их адресами (RIT).
Обычно если нам надо поменять мелодию, то мы заменяем ее место в памяти
на равную мелодию или меньшую размером и обновляем запись в индексе.
Но если мы хотим заменить мелодию на бОльшую по размеру, то нужно найти
где то свободное место и записывать ее туда, при этом место где мелодия
лежала ранее "пропадает". Теперь если описать место занимаемое
всеми мелодиями и при каждой смене переписывать их все вместе с индексом,
то можно получить определенные преимущества. Например можно будет заменить
некоторую мелодию на бОльшую, если при этом стереть или укоротить какую
либо другую, так чтобы общее место оставалось таким же. Эта программа
позволяет анализировать ФФ и вывести место занимаемое мелодиями, распаковывать
мелодии. И самое главное она берет указанные по маске мелодии, пытается
уложить их в указанные блоки, и при успехе создает патч.
Но основное назначение из-за которого я писал эту прогу - чтобы высвободить
место занимаемое встроенными мелодиями (которые вы все равно никогда
не слышите т.к.используете свои) под что нибудь нужное. Например под
флекс-диск телефона, или картинки для PicPac =)
analize:
Указываете ФФ и получаете в зависимости от настроек список места под
мелодиями и дополнительную информацию. Этот список можно прямиком записывать
в free.ini. Настройки:
Search RITs with more than ... rings Программа ищет
RITы с более чем указано количеством мелодий. Обычно более 100. По
аналогии с PIT в м55 их может быть несколько, опция на всякий случай.
Check GAPs for free space Просматривать промежутки
между мелодиями на наличие свободного места (байты 0xFF). Иногда мелодии
лежат не одна за другой, а с некоторым промежутком заполненным 0xFF
по всей видимости являющимся пустотой и не используемым.
Search FF for free blocks at least ... bytes Искать
в ФФ свободное место с длинной больше чем указано. Обратите внимание
на адреса этих блоков, это может быть ваш флекс EEFS и т.д.!
LogGAPs Вывести также промежутки между блоками мелодий.
Знающие могут посмотреть эти места в прошивке, иногда там просто мусор.
И тогда это место тоже можно прибавить к месту мелодий.
Log only first RIT Считывать данные только с первого найденного RITa
(если их найдено несколько). Опция на всякий случай.
Filter table Выводит в таблицу только
wav/mid/srt и фильтрует записи с одинаковыми ID (т.е. получаете таблицу
которую видете в смельтере)
Add FF name as mask При распаковке имена мелодий будут начинаться с
имени ФФ из которого они извлечены. Иначе только _N_ID.ext
Настройки автоматически сохраняются при выходе в файле RingPac.ini Чтобы сбросить
настройки по умолчанию - просто сотрите этот файл.
extract:
Распаковывать можно либо по одиночке, либо все мелодии сразу. Это делается через
правый клик на таблице. При этом вы получите столько файлов, сколько записей
у вас в RIT. Имена файлов заканчиваются на _N(номер в RIT)_ID(первый байт этой
RIT
записи).ext
Файлы с расширением .x01 - это пока неизвестный тип (мне =)
Предположительно, это тон кнопки при нажатии.
.rit - это пустые записи RIT в которых содержится только ID.
По всей видимости эти записи используются как ссылки (например как эту использовать
'ID мелодий назад'нюю) По крайней мере если эти пустые записи обнулить, то некоторые
мелодии пропадают, хотя адреса этих мелодий не хранились в пустых записях (они
храняться совсем в других).
mid/wav/srt стандартные.
По поводу srt провел небольшие изыскания и выяснилось что если они заканчиваются
на:
0xFDFF0300 - повтор 3 раза
0xFCFF0000 - всегда повторять
0xFEFF0000 - однократно
Если мелодия начинается на 0x53525446 (SRTF) то это можно спокойно удалить и
сэкономить 4 байта =)
Вибра содержится как мелодия srt, для м55v10 это мелодия 39_2F.
compress:
Чтобы запаковать мелодии вам надо иметь файл free.ini в каталоге программы. Его
параметры:
RIT:[adress]
Адрес, начиная с которого пишутся индексы мелодий.
NUM:[num]
Количество мелодий в этом RIT.
Далее идут сами блоки в которые будут паковаться мелодии в формате:
[hex start]-[hex end] ;comment
например:
38C2C0-38F93D ;13950b
Всю эту информацию вы можете получить используя analize
Теперь имея free.ini вы кликаете на любой мелодии и программа считывает все мелодии
в данном каталоге с такой же маской файла и поддерживаемыми расширениями. Если
некоторые файлы одинаковы (побайтно) то в патч пишется только первый а остальные
пишуться только в RIT как ссылки на первый. Если какого-либо файла нет, то на
его место в RIT будет записана ссылка на самый большой файл из упаковываемых.
(Т.е. если вы распаковали мелодии и стерли все mid/wav оставив только srt, то
при упаковке на все места mid/wav будет записана ссылка на самый большой из srt)
Если вы например хотите заменить 01_04.wav на определенную srt , то обзовите
эту
srt как 01_04.srt, а сам wav сотрите.
При
успешной укладке мелодий по блокам вы получаете патч который сохраняется
в каталоге
проги с именем ring_package.vkp
Опции компрессора:
Log duplicates Вывести все номера мелодий и у каждой ее дубликаты в логе. Если
вы хотите посмотреть какие мелодии прога считает одинаковыми.
Ask to execute and exit При успешной упаковке будет выведен
вопрос: 'Вы хотите
закрыть RingPac и запустить полученный патч в V_Klay?'
Fill free space by 0xFF Заполнять все оставшееся в блоках место
байтами 0xFF. Т.е. после применения этого патча пустоты будут видны дампе smelter'a
и возможно
определяться SPC (вроде он может сам искать пустое место).
|