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)