Разбираем раздел BMP3 в файле sd.bin
Разбираем раздел BMP3 в файле sd.bin
Основная интерфейсная графика находится в файле sd.bin. В этом файле, в разделе BMP3 собрана основная часть - интересная с точки зрения локализации. В 56095 BMP3 раздел начинается с адреса 186000h
Далее идёт заголовок блоков в котором под каждую запись выделено 8 байт:
2 байта - номер блока;
3 байта - смещение блока относительно начала заголовка блоков;
3 байта - размер блока.
Заголовок блоков заканчивается строкой FF FF FF FF FF FF FF FF
Блок состоит из контейнеров изображений и устроен аналогично заголовку блоков. Те же 2 байта номер контейнера, 3 байта смещение относительно заголовка, 3 байта - размер, и заканчивается так же - FF FF FF FF FF FF FF FF
Первые четыре байта - размер всего раздела.Далее идёт заголовок блоков в котором под каждую запись выделено 8 байт:
2 байта - номер блока;
3 байта - смещение блока относительно начала заголовка блоков;
3 байта - размер блока.
Заголовок блоков заканчивается строкой FF FF FF FF FF FF FF FF
Блок состоит из контейнеров изображений и устроен аналогично заголовку блоков. Те же 2 байта номер контейнера, 3 байта смещение относительно заголовка, 3 байта - размер, и заканчивается так же - FF FF FF FF FF FF FF FF
Разбираем раздел BMP3 в файле sd.bin
Контейнер устроен очень просто:
Следующие 4 байта - размер распакованных bmp данных.
Ещё 4 байта - размер самого контейнера или сжатых данных.
Распаковывается по алгоритму из этой темы viewtopic.php?f=5&t=39#p710, спасибо bellic
Для обратной упаковки алгоритма сжатия пока нет поэтому я использую вот такой костыль: через каждые восемь байт вставляется контрольный байт 00h, который указывает распаковщику, что следующие 8 байт не сжимаются. Идея не моя а пользователя с лексус клуба с ником grem. При этом нужно учитывать, что размер и так не сжатого bmp ещё увеличивается процентов на 12. Увеличивать же размер файла sd.bin бесконтрольно тоже нельзя. Он имеет свою область в оперативной памяти, и может перекрыть соседний блок.
Первые четыре байта - сигнатура или версия сжатия. Не меняется в разделе BMP3. Значение всегда 03ff00ffh/Следующие 4 байта - размер распакованных bmp данных.
Ещё 4 байта - размер самого контейнера или сжатых данных.
Распаковывается по алгоритму из этой темы viewtopic.php?f=5&t=39#p710, спасибо bellic
Для обратной упаковки алгоритма сжатия пока нет поэтому я использую вот такой костыль: через каждые восемь байт вставляется контрольный байт 00h, который указывает распаковщику, что следующие 8 байт не сжимаются. Идея не моя а пользователя с лексус клуба с ником grem. При этом нужно учитывать, что размер и так не сжатого bmp ещё увеличивается процентов на 12. Увеличивать же размер файла sd.bin бесконтрольно тоже нельзя. Он имеет свою область в оперативной памяти, и может перекрыть соседний блок.
- bellic
- Сообщения: 1505
- Зарегистрирован: 11 мар 2017, 07:47
- Откуда: Rostov-on-Don
- Контактная информация:
Разбираем раздел BMP3 в файле sd.bin
edwardy, у тебя хорошо получается разбирать и раскладывать по "полочкам"...
(правда я не проверял твои выкладки...)
...
А вот как ты нашел для магнитолы "56095" этот адрес BMP3-раздела 186000h?
Это скорее не вопрос, а предложение - поискать этот адрес..
...
Я сделал следующее:
Прибавил к значению 186000h начальный адрес размещения твоего модуля SD.BIN в памяти
(он там равняется 88730000) и получил 888B6000 (все естественно в HEX)
Ну и поиском нашел это смещение в SD.BIN: Там видны названия и других таблиц и видимо их смещения тоже имеются...
А вот я для примера выложил примерно это же место в SD-модуле для магнитолы NSZT-W62G: Т.к. в моем модуле начальный адрес размещения другой, соответственно и смещение до таблицы немного другое (выделено)
Ну и мой SD.BIN на случай если захочешь посмотреть адреса и таблицы в живую:
(правда я не проверял твои выкладки...)
...
А вот как ты нашел для магнитолы "56095" этот адрес BMP3-раздела 186000h?
Это скорее не вопрос, а предложение - поискать этот адрес..
...
Я сделал следующее:
Прибавил к значению 186000h начальный адрес размещения твоего модуля SD.BIN в памяти
(он там равняется 88730000) и получил 888B6000 (все естественно в HEX)
Ну и поиском нашел это смещение в SD.BIN: Там видны названия и других таблиц и видимо их смещения тоже имеются...
А вот я для примера выложил примерно это же место в SD-модуле для магнитолы NSZT-W62G: Т.к. в моем модуле начальный адрес размещения другой, соответственно и смещение до таблицы немного другое (выделено)
Ну и мой SD.BIN на случай если захочешь посмотреть адреса и таблицы в живую:
Разбираем раздел BMP3 в файле sd.bin
В твоем случае смещение BMP3 396000h. Адрес где оно прописано 774h
Разбираем раздел BMP3 в файле sd.bin
Есть еще место с графикой - это папка SD рядом с PRG. В ней может быть несколько файлов, например в моей есть только BMP3.SD. Структура этого файла полностью совпадает со структурой раздела BMP3 в файле sd.bin. Сегодня попробую развернуть. Посмотрю, есть ли там что-нибудь кроме значков.
- bellic
- Сообщения: 1505
- Зарегистрирован: 11 мар 2017, 07:47
- Откуда: Rostov-on-Don
- Контактная информация:
Разбираем раздел BMP3 в файле sd.bin
По моим подсчетам ты ошибся!
В моем случае BMP3 в самом файле находится по смещению BA6000h, с учетом расположения в RAM (Offset SD.BIN in RAM = 89FE0000h) - 8AB86000h, и данная константа расположена по адресу 75Ch.
P.S. Если что - могу расписать как получил эти цифры!
Разбираем раздел BMP3 в файле sd.bin
У тебя в файле 3 раздела:
BMP2 начало 6000h конец 36A010h
BMP3 начало 396000h размер 7E3770h конец B79770h
BMP4 начало BA6000h.
Возможно есть еще что-то до конца не проверял. Находится визуально. Потом проверяется, что такие цифры есть в таблице.
BMP2 начало 6000h конец 36A010h
BMP3 начало 396000h размер 7E3770h конец B79770h
BMP4 начало BA6000h.
Возможно есть еще что-то до конца не проверял. Находится визуально. Потом проверяется, что такие цифры есть в таблице.
- bellic
- Сообщения: 1505
- Зарегистрирован: 11 мар 2017, 07:47
- Откуда: Rostov-on-Don
- Контактная информация:
Разбираем раздел BMP3 в файле sd.bin
Не претендую на правильность, но я делал так:
1. Открываю свой LOADING.KWI в JRemaker-ре и получаю из него адрес начала BMP3 - 31F3904h
2. Открыв LOADING.KWI в WinHEX-се перехожу на этот адрес (31F3904h) и копирую 4 байта 0112147Ch начала таблицы:
3. Открываю распакованный из Лоадинга файл SD.BIN и ищу эту последовательность из 4-х байтов: Она нашлась по адресу BA6000h
4. Ну и дальше - плюсуем к ней Начальный адрес в РАМ, получаем 8Ab86000h, которое находится по адресу 75Сh
Не видно только BMP5... А он в JRemaker-ре указан... но это может быть его так назвал автор..))
- bellic
- Сообщения: 1505
- Зарегистрирован: 11 мар 2017, 07:47
- Откуда: Rostov-on-Don
- Контактная информация:
Разбираем раздел BMP3 в файле sd.bin
Аналогично "пробивается" и твой SD.BIN...
я собственно с проверки твоего файла и начал, ...
я собственно с проверки твоего файла и начал, ...
- bellic
- Сообщения: 1505
- Зарегистрирован: 11 мар 2017, 07:47
- Откуда: Rostov-on-Don
- Контактная информация:
Разбираем раздел BMP3 в файле sd.bin
Блин, только сейчас заметил, что в JRemaker-ре BMP5 копирует BMP3 !!!
Кто сейчас на конференции
Сейчас этот форум просматривают: Bing и 53 гостя