Swizzle blocks are only accessible using the "VBLOCK2" format.
+# REMAP Area Format<a name="remap_format"></a>
+
+The REMAP area is divided into two areas:
+
+* Register-to-SHAPE. This defines which registers have which shapes.
+ Each entry is 8-bits in length.
+* SHAPE Table entries. These are 32-bits in length and are aligned
+ to (start on) a 16 bit boundary.
+
+REMAP Table Entries:
+
+| 7:5 | 4:0 |
+| -------- | ------ |
+| shapeidx | regnum |
+
+When both shapeidx and regnum are zero, this indicates the end of the
+REMAP Register-to-SHAPE section. The REMAP Table section size is then
+aligned to a 16-bit boundary. 32-bit SHAPE Table Entries then fill the
+remainder of the REMAP area, and are indexed in order by shapeidx.
+
+In this way, multiple registers may share the same "shape" characteristics.
+
# SHAPE Table Format<a name="shape_format"></a>
The shape table format is included here for convenience:
VBLOCK2 extends the VBLOCK fields:
-| 15:12 | 11:10 | 9:8 | 7:5 | 4:0 |
-| ----- | ----- | ---- | --- | ---- |
-| rsvd | rplen2 | pplen2 | swlen | ilen |
+| 15 | 14:12 | 11:10 | 9:8 | 7:5 | 4:0 |
+| ---- | ----- | ----- | ---- | --- | ---- |
+| rsvd | mapsz | rplen2 | pplen2 | swlen | ilen |
* ilen is the instruction length (number of 16-bit blocks)
* swlen specifies the number of "swizzle" blocks
* rplen2 extends rplen by 2 bits
* pplen2 extends pplen by 2 bits
-* 4 bits are reserved for additional tables (Matrices?)
+* mapsz indicates the size of the "remap" area. See table below for size
+* 1 bit is reserved for extensions
+
+Mapsz to Remap size is in number of 16-bit blocks:
+
+| mapsz | remap size |
+| ----- | ---------- |
+| 0 | 0 |
+| 1 | 6 |
+| 2 | 7 |
+| 3 | 8 |
+| 4 | 10 |
+| 5 | 12 |
+| 6 | 14 |
+| 7 | 16 |