SHBIN: Difference between revisions
mNo edit summary |
Update DVOJ section |
||
(3 intermediate revisions by the same user not shown) | |||
Line 45: | Line 45: | ||
| 0x4 | | 0x4 | ||
| 0x4 | | 0x4 | ||
| Unknown, same value as in DVLE. ( | | Unknown, same value as in DVLE. (Likely a version number) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
Line 95: | Line 95: | ||
| 0x4 | | 0x4 | ||
| 0x2 | | 0x2 | ||
| Unknown, same value as in DVLP. ( | | Unknown, same value as in DVLP. (Likely a version number) | ||
|- | |- | ||
| 0x6 | | 0x6 | ||
Line 103: | Line 103: | ||
| 0x7 | | 0x7 | ||
| 0x1 | | 0x1 | ||
| true = merge vertex | | true = merge vertex and geometry shader outmaps (geometry shader) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
Line 187: | Line 187: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x2 | ||
| Label ID | | Label ID | ||
|- | |||
| 0x0 | |||
| 0x2 | |||
| Unknown (always 1?) | |||
|- | |- | ||
| 0x4 | | 0x4 | ||
Line 196: | Line 200: | ||
| 0x8 | | 0x8 | ||
| 0x4 | | 0x4 | ||
| | | Size of label's location (in words). 0xFFFFFFFF/(uint32_t)-1 if there is no size. | ||
|- | |- | ||
| 0xC | | 0xC | ||
Line 206: | Line 210: | ||
=== Constant Table Entry === | === Constant Table Entry === | ||
Each executable's constants are stored | Each executable's constants are stored in a constant table. This information is used by ctrulib's SHDR framework to automatically send those values to the GPU when changing to a given program. An entry is constituted by a header and the constant data, the latter of which uses a format specific to the constant type. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 309: | Line 313: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! Size | |||
! Description | ! Description | ||
|- | |- | ||
| | | 0x0 | ||
| 0x2 | |||
| Output type (see table below) | | Output type (see table below) | ||
|- | |- | ||
| | | 0x2 | ||
| 0x2 | |||
| Register ID | | Register ID | ||
|- | |- | ||
| | | 0x4 | ||
| 0x2 | |||
| Output attribute component mask (e.g. 5=xz) | | Output attribute component mask (e.g. 5=xz) | ||
|- | |||
| 0x6 | |||
| 0x2 | |||
| Unknown (Consistently the same number throughout the DVLE, may vary between DVLEs?) | |||
|- | |||
|} | |} | ||
Line 420: | Line 433: | ||
|- | |- | ||
| 0x04 | | 0x04 | ||
| | | 0x2 | ||
| Unknown. | | Unknown. (Likely a version number) | ||
|- | |||
| 0x06 | |||
| 0x1 | |||
| Shader type (0x0 = vertex shader, 0x1 = geometry shader; might contain other flags) | |||
|- | |||
| 0x07 | |||
| 0x1 | |||
| true = merge vertex and geometry shader outmaps (geometry shader) | |||
|- | |- | ||
| 0x08 | | 0x08 | ||
| | | 0x2 | ||
| | | Bitmask of used input registers. | ||
|- | |||
| 0x10 | |||
| 0x2 | |||
| Bitmask of used output registers. | |||
|- | |- | ||
| 0x0C | | 0x0C | ||
Line 457: | Line 482: | ||
| 0x28 | | 0x28 | ||
| 0x4 | | 0x4 | ||
| Offset | | Offset to operand descriptor table | ||
|- | |- | ||
| 0x2C | | 0x2C | ||
| 0x4 | | 0x4 | ||
| Number of | | Number of operand descriptor table entries (each entry is 8-bytes long) | ||
|- | |- | ||
| 0x30 | | 0x30 |