Mooltipass Graphics Bundle Composition - mooltipass/minible GitHub Wiki
Bundle Composition
Contents |
---|
Bundle Header |
File addresses |
Update file(s) |
String file(s) |
Font file(s) |
Bitmap file(s) |
Binary file(s) |
Language map(s) |
Bundle Header
bytes | name | description |
---|---|---|
0->3 | magic_header | 0x12345678 |
4->7 | total_size | Bundle total size |
8->11 | crc32 | Bundle CRC32 starting from byte 12 |
12->75 | signed_hash | TBD |
76->79 | update_file_count | Number of update files |
80->83 | update_file_offset | Start address to find update file addresses |
84->87 | string_file_count | Number of string files |
88->91 | string_file_offset | Start address to find string file addresses |
92->95 | fonts_file_count | Number of font files |
96->99 | fonts_file_offset | Start address to find font file addresses |
100->103 | bitmap_file_count | Number of bitmap files |
104->107 | bitmap_file_offset | Start address to find bitmap file addresses |
108->111 | binary_img_file_count | Number of binary files (keyboard LUTs) |
112->115 | binary_img_file_offset | Start address to find binary file addresses |
116->119 | language_map_item_count | Number of language map items |
120->123 | language_map_offset | Start address to find language map items |
124->127 | language_bitmap_starting_id | Starting index for language bitmaps |
Bitmap File
bytes | name | description |
---|---|---|
0->1 | width | Bitmap width |
2 | height | Bitmap height |
3 | xpos | Recommended X display position |
4 | ypos | Recommended Y display position |
5 | depth | Number of bits per pixel |
6->7 | flags | Flags defining data format |
8->9 | dataSize | Payload datasize |
10->... | data | Bitmap data |
Font File
bytes | description |
---|---|
0->5 | Font header |
6->65 | 15x uint16_t (interval_start-interval_end) of unicode chars for which we provide support description |
66->(66+described_chr_countx2) | Uint16_t array of glyph indexes (set to an index when we support the char, 0xFFFF otherwise) |
(66+described_chr_countx2)->(66+described_chr_countx2+chr_countx8) | Glyph array |
(66+described_chr_countx2+chr_countx8)->... | Pixel data for glyphs |
Font Header
bytes | name | description |
---|---|---|
0 | height | Font height |
1 | depth | Number of bits per pixel |
2->3 | described_chr_count | Number of characters for which we describe support |
4->5 | chr_count | Number of characters in this font |
Font Glyph
bytes | name | description |
---|---|---|
0 | xrect | x width of rectangle |
1 | yrect | y height of rectangle |
2 | xoffset | x offset of glyph in rectangle |
3 | yoffset | y offset of glyph in rectangle |
4->7 | glyph_data_offset | offset from beginning of pixel data for this glyph data |
Text File
bytes | description |
---|---|
0->1 | Number of strings in text file (nb_strings) |
2->2+2xnb_strings | Array of offset addresses for the nb_strings (addra, addrb, addrc...) |
addra->addra+1 | Length of string #0 (length0), including final 0 |
addra+2->addra+2+length0 | String #0 |
addrb->addrb+1 | Length of string #1 (length1), including final 0 |
addrb+2->addrb+2+length1 | String #1 |
Language Map Entry
bytes | description |
---|---|
0->35 | Unicode string of language description, with terminating 0x0000 |
36->37 | String file ID for that language |
38->39 | Starting font ID for that language |
40->41 | Starting bitmap ID for that language |
42->43 | Recommended keyboard layout ID |
Keyboard File Entry
bytes | description |
---|---|
0->39 | Unicode string of layout description, with terminating 0x0000 |
40->119 | 20x uint16_t (interval_start-interval_end) of unicode chars for which we provide support description |
120->... | Array of uint16_t, each describing how to type a glyph (see below) |
bits | description |
---|---|
15 | If 14->8 is 0: dead key bitmask |
14->8 | 0: only one key is required, 0x3f: not implemented, else: first key to type |
7->0 | HID key to type (0x80: shift bitmask, 0x40: alt bitmask, 0x03: europe key) |