2. Shape Area
The Shape area describes data regarding a shape. Mapping for this area is as follows.
u32 | shape_tag |
u32 | this_shape_index |
u32 | shape_size |
u32 | shape_name_index |
u32 | shape_type |
u32 | shape_tri_link |
u32 | shape_mat_link |
u32 | shape_part_num |
u32 | nintendo_extension_block_size |
u32 | user_extension_block_size |
u32 | shape_part_link(0) |
|
|
u32 | shape_part_link(shape_part_num - 1) |
|
|
|
Figure: Shape Area Memory Map
u32 shape_tag |
Tag indicating Shape. Set the following flag.
TAG_SHAPE 0x00030100 |
u32 this_shape_index | Index number of this Shape |
u32 shape_size | Size of this Shape |
u32 shape_name_index | Index number of shape name in NameList |
u32 shape_type |
Type of Shape. Currently, the following flags are defined.
SHAPE_TYPE_CLEAR 0x00000000 SHAPE_TYPE_AA 0x00000001 SHAPE_TYPE_RA 0x00000002 SHAPE_TYPE_ZB 0x00000004 SHAPE_TYPE_CULL_BACK 0x00000010 SHAPE_TYPE_CULL_FRONT 0x00000020 SHAPE_TYPE_CULL_BOTH 0x00000030 SHAPE_TYPE_CLEAR clears Shape type. SHAPE_TYPE_AA performs anti-alias process. SHAPE_TYPE_RA performs reduced alias process. SHAPE_TYPE_ZB performs z-buffer process. SHAPE_TYPE_CULL_BACK performs back-face culling. SHAPE_TYPE_CULL_FRONT performs front-face culling. SHAPE_TYPE_CULL_BOTH performs culling. SHAPE_TYPE_AA and SHAPE_TYPE_RA cannot be specified both at the same time. Also, when specifying SHAPE_TYPE_CULL_*, only one of the above (BACK, FRONT and BOTH) can be specified. When shape data is put through the anti-alias, z buffer and back-face culling processes, set flag as below.
SHAPE_TYPE_AA | SHAPE_TYPE_ZB | SHAPE_TYPE_CULL_BACK |
u32 shape_tri_link | Index number of TriGroup in TriList |
u32 shape_mat_link |
Index number of MatList If Mat is not linked, set the following flag. SHAPE_MAT_LINK 0xffffffff |
u32 shape_part_num |
Number of Parts contained in Shape Set the following flag if the Part node is not linked. SHAPE_NOPART 0x00000000 |
u32 nintendo_extension_block_size | Nintendo extension block size |
u32 user_extension_block_size | User extension block size |
u32 shape_part_link |
Index number of PartList If shape_part_num = SHAPE_NOPART, this field is ignored. |
NintendoExtensionBlock | Nintendo extension block |
UserExtensionBlock | User extension block |