DSM/Mitsubishi CAPS: Difference between revisions
Jump to navigation
Jump to search
Line 24: | Line 24: | ||
|- | |- | ||
|11 | |11 | ||
|Always 00h, | |Always 00h, separator or null byte for the string? | ||
|- | |- | ||
|12 | |12 | ||
|Always the same in all headers in the same file, often seen: 09h 11h, is this multiplier or record length? | |Always the same in all headers that are in the same file, often seen: 09h 11h, is this multiplier or record length? | ||
|- | |- | ||
|13 | |13 |
Revision as of 21:25, 18 April 2023
File Formats
IDX - Index
Index files are broken up into 2048 byte chunks, which I will refer to as "pages". Index file must be at least 1 page in size, meaning the smallest IDX file will be 2048 bytes, filled mostly with null bytes(00h).
Header
The first 32 bytes of each page is the "header". The header's first 8 bytes contain the filename, if the filename is less than 8 bytes the remaining bytes will be padded with 20h. After the name is "IDX", followed by 00h as a seperator.
Byte 13 (14th byte) is the "page number", starting with 01h and incrementing each page.
Bytes 14-32 appear to be other informational flags which have yet to be understood.
Byte # | Description |
---|---|
0-7 | Uppercase ASCII, matches file name, if name < 8 bytes it is padded with 20h |
8-10 | 49h 44h 58h, literal: "IDX", Uppercase ASCII |
11 | Always 00h, separator or null byte for the string? |
12 | Always the same in all headers that are in the same file, often seen: 09h 11h, is this multiplier or record length? |
13 | The "page" count, starts at 01h increments by 1 every "header" |
14-31 | Other flags |
22 | Number of records on this page |
Examples
NU = NULL BYTE (00h) PA = PADDING (20h)
SEIBI.IDX - 2048 bytes
Byte : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Hex : 53 45 49 42 49 20 20 20 49 44 58 00 09 01 00 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 39 39 39 39 39 39 39 39 39 01 ASCII: S E I B I I D X 9 9 9 9 9 9 9 9 9
UNKATA.IDX - 2048 bytes
Byte : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Hex : 55 4E 4B 41 54 41 20 20 49 44 58 00 09 01 00 00 00 00 00 00 01 00 01 00 00 00 00 00 00 00 00 00 39 39 39 39 39 39 39 39 39 01 ASCII: U N K A T A I D X 9 9 9 9 9 9 9 9 9
SHARYO.IDX - bytes
#Header - 32 bytes: \/ Page (1) \/ Number of records Byte : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hex : 53 48 41 52 59 4F 20 20 49 44 58 00 11 01 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 ASCII: S H A R Y O I D X Data : PA PA NU 11 1 6 #VIN (02) - 21 bytes \/-- Count Column (2) Byte : 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Hex : 34 41 33 41 43 38 34 4C 33 59 45 30 35 31 32 36 31 02 00 00 00 ASCII: 4 A 3 A C 8 4 L 3 Y E 0 5 1 2 6 1 Data : 2 NU NU NU #VIN (03) - 21 bytes Hex : 34 41 33 43 53 34 34 54 58 4D 45 30 30 36 31 30 36 03 00 00 00 ASCII: 4 A 3 C S 4 4 T X M E 0 0 6 1 0 6 Data : 3 NU NU NU #VIN (04) - 21 bytes Hex : 4A 41 33 41 4D 36 34 4A 37 52 59 30 30 35 33 35 33 04 00 00 00 ASCII: J A 3 A M 6 4 J 7 R Y 0 0 5 3 5 3 Data : 4 NU NU NU #VIN (05) - 21 bytes Hex : 4A 41 34 47 4A 33 31 53 31 4D 4A 30 31 33 39 31 34 05 00 00 00 ASCII: J A 4 G J 3 1 S 1 M J 0 1 3 9 1 4 Data : 5 NU NU NU #VIN (06) - 21 bytes Hex : 4A 41 37 4C 53 32 31 47 34 52 50 30 31 32 37 33 34 06 00 00 00 ASCII: J A 7 L S 2 1 G 4 R P 0 1 2 7 3 4 Data : 6 NU NU NU #??? (07) - 18 bytes Hex : 5A 31 36 41 57 59 30 59 30 30 31 36 39 37 20 20 20 07 ... \ ASCII: Z 1 6 A W Y 0 Y 0 0 1 6 9 7 ... + 1893 Null Bytes (2048 byte total header space) Data : PA PA PA 7 ... /
| Always 11?? #Header 2 (Start at 2048 Bytes) - 32 Bytes \/ \/Page? (2) \/ Number of records Byte : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hex : 53 48 41 52 59 4F 20 20 49 44 58 00 11 02 00 01 01 00 01 00 00 00 60 00 00 00 00 00 00 00 00 00 ASCII: S H A R Y O I D X ' Data : PA PA NU 11 2 1 1 1 60