BMG files are the jnlib file format for storing text strings. The BMG file header is as follows: ||Offset||Type||Meaning | 0x00 | u32 | File signature. {{"MESG"}} for BMG files. | 0x04 | u32 | File type. {{"bmg1"}} for BMG files. | 0x08 | u32 | File size | 0x0C | u32 | Number of data blocks. | 0x10 | u8 | Character set. Can be narrow character (1), wide character (2), Shift-JIS (3), or UTF-8 (4). | 0x11 | u8[[0xF] | Unused? The BMG file is composed of multiple data blocks. These are {{INF1}}, {{MID1}}, {{DAT1}}, {{STR1}}, {{FLW1}}, and {{FLI1}}. The data blocks have a common header structure: ||Offset||Type||Meaning | 0x00 | char[[4] | Tag | 0x04 | u32 | Block size, including this header. !!INF1 Block The {{INF1}} (info) block stores basic info about the BMG file. It takes the following structure: ||Offset||Type||Meaning | 0x00 | u16 | Number of entries | 0x02 | u16 | Size of entry (always 4?) | 0x04 | u16 | Group ID | 0x06 | u8 | Color ID | 0x07 | u8 | | 0x08 | u32[[...] | Offsets to strings. This is a list of offsets into the {{DAT1}} block. !!MID1 Block !!DAT1 Block The {{DAT1}} block stores message data. This block is an unstructured string pool referenced by the offset array in the {{INF1}} block. !!STR1 Block !!FLW1 Block !!FLI1 Block