Решил я проэкспериментировать с записями [5.2 Management Header
Table].
Для начала установил адрес:размер=FFFFFFFF:0000 для двух
недокументированных записей [ 20 и 27]. Сделал болванку, засунул в
навигацию - изменений нет. Впрочем я предполагал, что такое может
быть, хорошо.
Тогда я в [5.1 Data Volume] установил бит флага 416:13 [Data
Contents.Index Data] в 0, и аналогичным образом обнулил запись 3
[Index Data Management] в [5.2 Management Header Table]. Ранее эта
запись у меня указывала на 0:3 INDEXDAT.KWI (В других системах этот
файл может называться POIDAT.KWI и.т.п).
После моих действий система должна была считать, что диск не содержит
POI информации.
Ожидал чего угодно, но... Как будто ничего не было, навигация
продолжает находить POI информацию. Полазил по LOADING.KWI (у меня
файл загрузки), и нашел две ссылки:
14162480 00 56 65 72 73 69 6F 6E
2E .Version.
14162496 54 58 54 00 41 4C 4C 44 41 54 41 2E 4B 57 49 00
TXT.ALLDATA.KWI.
14162512 41 4C 4C 44 41 54 41 2E 4B 57 49 00 4C 4F 41 44
ALLDATA.KWI.LOAD
14162528 49 4E 47 2E 4B 57 49 00 49 4E 44 45 58 44 41 54
ING.KWI.INDEXDAT
14162544 2E 4B 57 49 00 00 .KWI..
и
Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16247072 00 00 00 00 00 00 00 49 4E 44 45 58 44 41
54 .......INDEXDAT
16247088 2E 4B 57 49 .KWI
Резюме: Автонавигация не использует ту структуру данных, которая
описана в документации по KIWI, и так легко подменить карту не
получиться. Если в файле загрузки дублируется только структура диска,
не все потеряно, данные можно вставлять по тем же адресам, а вот если
там прописаны и основные координаты... Тогда увы...
Результат положительный, изменения малозначительные, но есть: при
задании конечной точки маршрута система выкидывает сообщения
"Голосовые команды управления недоступны для данного региона". Т.е
разработчики зачем-то прописали только INDEXDAT.KWI в загрузчик,
непонятно для чего, если таблицу они все равно читают.
Главное, чтобы они не прописали в загрузчик координаты региона,
которые находятся в [5.1 Data Volume], и дублируются в [6.1 Parcel
Data Management Distribution Header]. Проверить не просто - каждый
сегмент MainMap содержит координаты, чтобы "подвинуть" регион, надо
изменить их все.
Удалять INDEXDAT.KWI в лоб наверное не стоит - это один из основных
Management Distribution Header, проще чуть чуть его прочитать и просто
обнулить ссылки на данные.
Образ просто урезан до начала хтмлей (самих файлов), заголовок
оставлен.
Правда, по причине отсутствия болванки под руками писал на Verbatim
DVD-RW.
Результат отрицательный.
Миша, ты какими дисками пользовался, обычными +R?
Для carnavigat:
При работе с двуслойками пользовался Verbatim DVD+R DL 4x.
Насчет RW - однажды был удачный опыт, с RW прогрузилась прошивка,
затем загрузка застряла на этапе alldata... Поэтому, предполагаю, что
RW использовать можно, а у меня какой-то косяк....
А насчет физических адресов - они и не меняются.
> > Я формировал iso своей программой.- Скрыть цитируемый текст -
>
> - Показать цитируемый текст -
> > - Показать цитируемый текст -- Скрыть цитируемый текст -
00 02 38 D4 Voice Distribution Header Size (SWS)
00 0C of General-purpose Voice Languages (N)
что за тип данных SWS (Short Word Size Type)?
run_decode.rb возвращает для этого поля значение - SWS:0x2b51510
000238D4 = 145620
02b51510 = 45421840
что это за поле такое...
в озвучке 12 языков?
3400122E.PDF
34.1 Voice Distribution Header
name [Voice Distribution Header]
No. Offset Data
length
Data type Item name Remarks Classification
1 0 ,S SWS Voice Distribution Header Size a
2 4 2 N Number of General-purpose Voice Languages a
3 6 B1 A Sequence of General-purpose Voice Offset
Management Tables
(1) c
4 O1 B2 General-purpose Voice Offset Information c
5 O2 4 LWS Proper Voice Real Data Size (2) a
(1) A Sequence of General-purpose Voice Offset Management Tables
As many tables as the "number of general-purpose voice languages" are
created.
(2) Proper Voice Real Data Size
The size of the entire proper voice real data sequence, from the
beginning of the proper voice real data sequence to
the end of the voice data frame, is indicated.
SWS - это слово беззнаковое. unsigned int.
В европейских дисках - 12 не видел, а 6 языков было.
В японских дисках - 1 язык, там даже таблица маппинга сообщений
отсутствует. Сразу сообщения идут.
Штатовский диск есть, но я его не смотрел.
Там вроде обычный восьмибитовый ADPCM кодер. Т.е., можно вроде
выдирать последовательность, прикручивать к обычному RIFF-WAV
заголовку и слушать. За этом кстати вроде и основан руби-скрипт -
посмотри ссылку в "о проекте", там прямо исходники лежат.
щас смотрю начало двух войсов от Subaru и SAAB, они не отличаются
сильно.
Например вот здесь - 6.1 Parcel Data Management Distribution Header
Header Size SWS 2 байта
В твоем случае размер SWS - 4 байта.
00 02 38 D4 - 0x000238D4 * sizeof(Short Word) = 0x000471A8
00 0C - следующее поле(количество языков)