Formats¶
Below are the formats that are used by the older Puyo Puyo games and how they are structured.
Todo
Add formats that is out of scope for this project.
The fpd
format¶
The fpd
format is a binary character table format used by the developers of
Puyo Puyo! 15th Anniversary and Puyo Puyo 7 to convert Unicode characters into
an index that can be used by the mtx
for text. Each character entry in the
fpd
is 3 bytes long and formatted as follows: XX XX YY
. Where XX XX
is the
character’s Unicode code point in little-endian and YY
is the width of the
character.
Note
The character encoding can be considered to be UTF-16 little-endian.
However, the fpd
only can only store characters from the Basic Multilingual
Plane or U+0000
to U+FFFF
due to the format having a fixed width of 16 bits
per code point. So it is more accurately to say the encoding is the older UCS-2,
the predecessor to UTF-16.
The entries are placed next to each other, creating a zero-based index that is
offset by multiples of 0x03
. For example, the 1st character is at index
0x00
, the 2nd character is at index 0x03
, the 3rd character is at index
0x06
, etc.
Warning
If there are multiple entries that maps to the same code point in
the fpd
, then all other entries will be eventually be mapped to the first
entry in the ordered bidirectional dictionary.
This will lead to the loss of accuracy if the character graphics in the fmp
are different for the duplicate entries.
The fpd
is not used by the games internally except for the Nintendo DS version
of the games.
The fmp
format¶
The fmp
format is a 4 bits per pixel (4bpp) bitmap format used by the Nintendo
DS versions of Puyo Puyo! 15th Anniversary and Puyo Puyo 7 to store the
graphical data of characters corresponding to the fpd
file. Each character is
either 14x14 pixels (in puyo14.fmp
and test.fmp
) or 8x8 pixels
(in puyo8.fmp
).
Although it uses a bit-depth that can encode 16 colors, the format is mainly
black and white with 0x0
and 0x1
encoding an off and on pixel respectively.
Each 4 bits or nibble, not byte, is stored in little-endian where the least
significant nibble is store first before the most significant nibble.
Pixels are stored row by row, in top-to-bottom and left-to-right order. There are no headers or padding bytes in the file.
The mtx
format¶
The mtx
format is a binary-encoded format used by older Puyo games for
storing character dialog and text.
Todo
Information about the mtx format for PP15 and PP7
Todo
Look at the mtx format for PP20