Частичный разбор формата uxc
Во время попытки русификации SCIF'овской сониевской хреновины, пришлось покопаться в прошивке. Один из "нескучных" форматов файлов почти получилось разобрать по запчастям.
Возможно кому-то пригодится.
string_ukrainian.uxc
: если в файле ничего нет - он заполняется 'FF' байтами
0000000: 7578 6307 0000 0000 0800 2700 d88c cd00 uxc.......'.....
[ header ] [] [] [ ][]
| | | | `- флаг?
| | | `-------- идентификатор?
| | `------------- тип ресурса?
| `------------------ ?
`-------------------------------------- заголовок
01 E0 04 1E
[] [ ]
| `------- заголовок записи?
`---------- номер записи
0000 19C0: - начало записей локализованных строк в string_danish.uxc / string_dutch.uxc да, похоже на то, string_english.uxc подтверждает
В самой строке не указана её длина, это странно, возможно строится индекс при загрузке
Сами строки - в UTF8, дополняются нулём до размера, кратного 2м
00000010 - 000019C0 - массив двухбайтных чисел, похожи на смещения (это было бы логично, учитывая фиксированную позицию начала данных, но смущает размер чисел)
string_dutch.uxc:
| len |
offset | # | D | H | # |len|
-------------------------------------
0000 19C0 | 00 | 8 | 8 | 0002 | 2 |
0000 19C8 | 01 | 16 | F | 0006 | 4 |
0000 19D8 | 02 | 20 | 14 | 000B | 5 |
0000 19EC | 03 | 12 | C | 000E | 3 |
0000 19F8 | 04 | 12 | C | 0011 | 3 |
0000 1A04 | 05 | 16 | F | 0015 | 4 |
0000 1A14 | 06 | 16 | F | 0019 | 4 |
0000 1A24 | 07 | 12 | C | 001C | 3 |
0000 1A30 | 08 | 12 | C | 001F | 3 |
0000 1A3C | 09 | 12 | C | 0022 | 3 |
0000 1A48 | 0A |
Это что касается файлов string*.uxc
view*.uxc
имеют другой формат:
00 1B 57 22
[] [ ]
| `------- заголовок записи?
`---------- уже не номер записи
viewSettingMenu.uxc
:
0000 0072: 02 1B 57 22
0000 00B6: 00 1B 57 22
0000 00F2: 00 1B 57 22
0000 0137: 00 1B 57 22
0000 01E5: 00 1B 57 22
0000 0284: 00 1B 57 22
0000 0323: 00 1B 57 22
0000 0368: 00 1B 57 22
0000 03F1: 00 1B 57 22
0000 042D: 00 1B 57 22
0000 0472: 00 1B 57 22
0000 0510: 00 1B 57 22
0000 059F: 00 1B 57 22
0000 05E4: 00 1B 57 22
0000 064C: 02 1B 57 22
0000 06B4: 03 1B 57 22
lang_cmn.uxc
:
01 60 06 36
| `------- заголовок записи?
`---------- номер записи
начало записей - 0x0068
0000 0068 | 00 - FONT_UNIVERS
0000 007C | 01 - FONT_JAPANESE
0000 0090 | 02 - FONT_KOREAN
0000 00A0 | 03 - FONT_S_CHINESE
0000 00B4 | 04 - FONT_T_CHINESE
-----
заголовок меняется на
05 60 06 26
| `------- заголовок записи?
`---------- номер записи
-----
0000 00C8 | 05 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 00DC | 06 | 60 06 26 | 01 00 00 00 01 60 06 02 00 00 00 FF 00 00 00 00
0000 00F0 | 07 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0104 | 08 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0118 | 09 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 012C | 0A | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0140 | 0B | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0154 | 0C | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0168 | 0D | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 017C | 0E | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0190 | 0F | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 01A4 | 10 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 01B8 | 11 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 01CC | 12 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 01E0 | 13 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 01F4 | 14 | 60 06 26 | 01 00 00 00 02 60 06 02 00 00 00 FF 00 00 00 00
0000 0208 | 15 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 021C | 16 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0230 | 17 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0244 | 18 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0258 | 19 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 026C | 1A | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0280 | 1B | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0294 | 1C | 60 06 26 | 01 00 00 00 03 60 06 02 00 00 00 FF 00 00 00 00
0000 02A8 | 1D | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 02BC | 1E | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 02D0 | 1F | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 02E4 | 20 | 60 06 26 | 01 00 00 00 04 60 06 02 00 00 00 FF 00 00 00 00
0000 02F8 | 21 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 030C | 22 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0320 | 23 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00
0000 0334 | 24 | 60 06 26 | 01 00 00 00 00 60 06 02 00 00 00 FF 00 00 00 00