BRFNT files: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
Randomdude (talk | contribs)
mNo edit summary
Randomdude (talk | contribs)
No edit summary
Line 12: Line 12:
10h bytes
10h bytes


0000: 'RFNT'
0x0000: 'RFNT'


0004: FE FF 01 04
0x0004: FE FF 01 04


0008: DWORD length of whole file
0x0008: DWORD length of whole file


000C: WORD ??
0x000C: WORD ??


000E: WORD ?? (language flag?)
0x000E: WORD ?? (language flag?)


FINF Header
FINF Header
20H bytes:
20H bytes:


0000: 'FINF'
0x0000: 'FINF'


0004: DWORD finf size
0x0004: DWORD finf size


0008: BYTE ??
0x0008: BYTE ??


0009: BYTE font height - 1
0x0009: BYTE font height - 1


000A: WORD ??
0x000A: WORD ??


000C: BYTE ??
0x000C: BYTE ??


000D: BYTE character width or height + 1 (?)
0x000D: BYTE character width or height + 1 (?)


000E: BYTE character height or width + 1 (?)
0x000E: BYTE character height or width + 1 (?)


000F: BYTE 00 (?)
0x000F: BYTE 00 (?)


0010: DWORD TGLP section position
0x0010: DWORD TGLP section position


0014: DWORD CWDH section position
0x0014: DWORD CWDH section position


0018: DWORD CMAP section position
0x0018: DWORD CMAP section position


001C: BYTE font height - 1 (excluding left line?)
0x001C: BYTE font height - 1 (excluding left line?)


001D: BYTE font width - 1 (excluding bottom line?)
0x001D: BYTE font width - 1 (excluding bottom line?)


001E: BYTE character width or height - 1 (?)
0x001E: BYTE character width or height - 1 (?)


001F: BYTE 00 (?)
0x001F: BYTE 00 (?)


TGLP Header
TGLP Header
30h bytes
30h bytes


0000: 'TGLP'
0x0000: 'TGLP'


0004: DWORD length of 'TGLP' section
0x0004: DWORD length of 'TGLP' section


0008: BYTE font width - 1
0x0008: BYTE font width - 1


0009: BYTE font height - 1
0x0009: BYTE font height - 1


000A: BYTE character width - 1
0x000A: BYTE character width - 1


000B: BYTE character height - 1
0x000B: BYTE character height - 1


000C: DWORD length of 1 image
0x000C: DWORD length of 1 image


0010: WORD images count
0x0010: WORD images count


0012: WORD ??
0x0012: WORD ??


0014: WORD characters per row
0x0014: WORD characters per row


0016: WORD characters per column
0x0016: WORD characters per column


0018: WORD width of image
0x0018: WORD width of image


001A: WORD height of image
0x001A: WORD height of image


001C: DWORD position of data
0x001C: DWORD position of data


TGLP Data
TGLP Data
Line 120: Line 120:


CWDH Section
CWDH Section
0000: 'CWDH'
0x0000: 'CWDH'


0004: DWORD length of this section
0x0004: DWORD length of this section


0008: DWORD last character ? (= character count - 1)
0x0008: DWORD last character ? (= character count - 1)


000C: DWORD first character ? (= 0)
0x000C: DWORD first character ? (= 0)


0010: character count * (
0x0010: character count * (


BYTE space width ?
BYTE space width ?
Line 138: Line 138:
Type 1 :
Type 1 :


0000: ‘CMAP’
0x0000: ‘CMAP’


0004: DWORD length of this section
0x0004: DWORD length of this section


0008: WORD UTF-16 code of first char
0x0008: WORD UTF-16 code of first char


000A: WORD UTF-16 code of last char
0x000A: WORD UTF-16 code of last char


000C: DWORD 0 ?
0x000C: DWORD 0 ?


0010: DWORD position of next CMAP + 8
0x0010: DWORD position of next CMAP + 8


0014: WORD offset of first char
0x0014: WORD offset of first char


0016: WORD ?
0x0016: WORD ?


Type 2 :
Type 2 :


0000: ‘CMAP’
0x0000: ‘CMAP’


0004: DWORD length of this section
0x0004: DWORD length of this section


0008: WORD 0
0x0008: WORD 0


000A: WORD -1
0x000A: WORD -1


000C: 00 02 00 00 ?
0x000C: 00 02 00 00 ?


0010: DWORD position of next CMAP + 8 (0 if no next)
0x0010: DWORD position of next CMAP + 8 (0 if no next)


0014: WORD characters in this table (tbl_char count)
0x0014: WORD characters in this table (tbl_char count)


0016: tbl_char count * (
0x0016: tbl_char count * (


WORD UTF-16 code of char
WORD UTF-16 code of char
WORD offset of char )
WORD offset of char )
????: WORD 0
????: WORD 0
[[Category:File formats]]

Revision as of 01:24, 8 June 2010

This is incomplete.

Stores images of characters used to display text. Can be found in Mario Kart Wii and possibly others.

The file structure is composed by a header and sections. There always appears to be a FINF, TGLP and CWDH section along with one or more CMAP sections.

The file is not completely known.

The endianess is Big Endian.

RFNT Header 10h bytes

0x0000: 'RFNT'

0x0004: FE FF 01 04

0x0008: DWORD length of whole file

0x000C: WORD ??

0x000E: WORD ?? (language flag?)

FINF Header 20H bytes:

0x0000: 'FINF'

0x0004: DWORD finf size

0x0008: BYTE ??

0x0009: BYTE font height - 1

0x000A: WORD ??

0x000C: BYTE ??

0x000D: BYTE character width or height + 1 (?)

0x000E: BYTE character height or width + 1 (?)

0x000F: BYTE 00 (?)

0x0010: DWORD TGLP section position

0x0014: DWORD CWDH section position

0x0018: DWORD CMAP section position

0x001C: BYTE font height - 1 (excluding left line?)

0x001D: BYTE font width - 1 (excluding bottom line?)

0x001E: BYTE character width or height - 1 (?)

0x001F: BYTE 00 (?)

TGLP Header 30h bytes

0x0000: 'TGLP'

0x0004: DWORD length of 'TGLP' section

0x0008: BYTE font width - 1

0x0009: BYTE font height - 1

0x000A: BYTE character width - 1

0x000B: BYTE character height - 1

0x000C: DWORD length of 1 image

0x0010: WORD images count

0x0012: WORD ??

0x0014: WORD characters per row

0x0016: WORD characters per column

0x0018: WORD width of image

0x001A: WORD height of image

0x001C: DWORD position of data

TGLP Data Bitmap is formed in a Zig-zag way.

A single block of bitmap looks like this:

00 01 02 03 04 05 06 07

08 09 0A 0B 0C 0D 0E 0F

10 11 12 13 14 15 16 17

18 19 1A 1B 1C 1D 1E 1F

Multiple blocks:

B01 B02 B03 ... B08 (assume width=64)

B09 B0A B0B ...

...

Multiple images:

I01

I02

I03

...

CWDH Section 0x0000: 'CWDH'

0x0004: DWORD length of this section

0x0008: DWORD last character ? (= character count - 1)

0x000C: DWORD first character ? (= 0)

0x0010: character count * (

BYTE space width ? BYTE character width BYTE smaller than character width ) ????: (0~3) * 00 (align to 4 bytes)

CMAP Section Type 1 :

0x0000: ‘CMAP’

0x0004: DWORD length of this section

0x0008: WORD UTF-16 code of first char

0x000A: WORD UTF-16 code of last char

0x000C: DWORD 0 ?

0x0010: DWORD position of next CMAP + 8

0x0014: WORD offset of first char

0x0016: WORD ?

Type 2 :

0x0000: ‘CMAP’

0x0004: DWORD length of this section

0x0008: WORD 0

0x000A: WORD -1

0x000C: 00 02 00 00 ?

0x0010: DWORD position of next CMAP + 8 (0 if no next)

0x0014: WORD characters in this table (tbl_char count)

0x0016: tbl_char count * (

WORD UTF-16 code of char WORD offset of char ) ????: WORD 0