Line 12: |
Line 12: |
| | 0x0 | | | 0x0 |
| | 0x400 | | | 0x400 |
− | | DebugPad | + | | [[#DebugPad]] |
| |- | | |- |
| | 0x400 | | | 0x400 |
Line 28: |
Line 28: |
| | 0x3C00 | | | 0x3C00 |
| | 0x1000 (0x400 * 0x04) | | | 0x1000 (0x400 * 0x04) |
− | | BasicXpad | + | | [[#BasicXpad]] |
| |- | | |- |
| | 0x4C00 | | | 0x4C00 |
Line 63: |
Line 63: |
| |} | | |} |
| | | |
− | == TouchScreen == | + | == DebugPad == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 71: |
Line 71: |
| |- | | |- |
| | 0x0 | | | 0x0 |
− | | 0x28 | + | | 0x20 |
− | | [[#TouchScreenHeader]] | + | | [[#DebugPadHeader]] |
| |- | | |- |
− | | 0x28 | + | | 0x20 |
− | | 0x298 * 17 | + | | 0x28 * 17 |
− | | Array of [[#TouchScreenState]] | + | | Array of [[#DebugPadState]] |
| |} | | |} |
| | | |
− | === TouchScreenHeader === | + | === DebugPadHeader === |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 88: |
Line 88: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in ticks? | + | | Timestamp in ticks |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Number of Entries, always 17 | + | | Number of Entries (always 17) |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 100: |
Line 100: |
| | 0x18 | | | 0x18 |
| | 0x8 | | | 0x8 |
− | | Maximum Entry Index, always 16 | + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === DebugPadState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x20 |
| + | | |
| + | |} |
| + | |
| + | == TouchScreen == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#TouchScreenHeader]] |
| |- | | |- |
| | 0x20 | | | 0x20 |
− | | 0x8 | + | | 0x298 * 17 |
− | | Timestamp in samples | + | | Array of [[#TouchScreenState]] |
| |} | | |} |
| | | |
− | === TouchScreenState === | + | === TouchScreenHeader === |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 115: |
Line 143: |
| |- | | |- |
| | 0x0 | | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| | 0x10 | | | 0x10 |
− | | [[#TouchScreenStateHeader]] | + | | 0x8 |
| + | | Latest Entry Index |
| |- | | |- |
− | | 0x10 | + | | 0x18 |
− | | 0x28 * 16 | + | | 0x8 |
− | | [[#TouchScreenStateData]] | + | | Maximum Entry Index (always 16) |
| |} | | |} |
| | | |
− | ==== TouchScreenStateHeader ==== | + | === TouchScreenState === |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 131: |
Line 167: |
| |- | | |- |
| | 0x0 | | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| | 0x8 | | | 0x8 |
| | Timestamp in samples | | | Timestamp in samples |
| |- | | |- |
− | | 0x8 | + | | 0x10 |
| | 0x8 | | | 0x8 |
| | Touch count | | | Touch count |
| + | |- |
| + | | 0x18 |
| + | | 0x28 * 16 |
| + | | [[#TouchScreenStateData]] |
| |} | | |} |
| | | |
Line 208: |
Line 252: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in ticks? | + | | Timestamp in ticks |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Number of Entries, always 17 | + | | Number of Entries (always 17) |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 220: |
Line 264: |
| | 0x18 | | | 0x18 |
| | 0x8 | | | 0x8 |
− | | Maximum Entry Index, always 16 | + | | Maximum Entry Index (always 16) |
| |} | | |} |
| | | |
Line 232: |
Line 276: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples | + | | Timestamp in samples (global) |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples again? | + | | Timestamp in samples |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 292: |
Line 336: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in ticks? | + | | Timestamp in ticks |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Number of Entries, always 17 | + | | Number of Entries (always 17) |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 304: |
Line 348: |
| | 0x18 | | | 0x18 |
| | 0x8 | | | 0x8 |
− | | Maximum Entry Index, always 16 | + | | Maximum Entry Index (always 16) |
| |} | | |} |
| | | |
Line 316: |
Line 360: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples | + | | Timestamp in samples (global) |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples again? | + | | Timestamp in samples |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 329: |
Line 373: |
| | 0x20 | | | 0x20 |
| | Keys Down, each key gets one bit based on the HID keyboard scan code (F1 is 0x3A, bit 0x3A is set) | | | Keys Down, each key gets one bit based on the HID keyboard scan code (F1 is 0x3A, bit 0x3A is set) |
| + | |} |
| + | |
| + | == BasicXpad == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#BasicXpadHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x28 * 17 |
| + | | Array of [[#BasicXpadState]] |
| + | |} |
| + | |
| + | === BasicXpadHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === BasicXpadState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x20 |
| + | | |
| + | |} |
| + | |
| + | == HomeButton == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#HomeButtonHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x18 * 17 |
| + | | Array of [[#HomeButtonState]] |
| + | |} |
| + | |
| + | === HomeButtonHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === HomeButtonState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x10 |
| + | | |
| + | |} |
| + | |
| + | == SleepButton == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#SleepButtonHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x18 * 17 |
| + | | Array of [[#SleepButtonState]] |
| + | |} |
| + | |
| + | === SleepButtonHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === SleepButtonState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x10 |
| + | | |
| + | |} |
| + | |
| + | == CaptureButton == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#CaptureButtonHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x18 * 17 |
| + | | Array of [[#CaptureButtonState]] |
| + | |} |
| + | |
| + | === CaptureButtonHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === CaptureButtonState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x10 |
| + | | |
| + | |} |
| + | |
| + | == InputDetector == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#InputDetectorHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x18 * 2 |
| + | | Array of [[#InputDetectorState]] |
| + | |} |
| + | |
| + | === InputDetectorHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === InputDetectorState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x10 |
| + | | |
| |} | | |} |
| | | |
Line 336: |
Line 660: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Offset | + | ! Offset |
− | ! Size in bytes | + | ! Size in bytes |
− | ! Description | + | ! Description |
| |- | | |- |
| | 0x30 | | | 0x30 |
Line 612: |
Line 936: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples | + | | Timestamp in samples (global) |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples again | + | | Timestamp in samples |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 739: |
Line 1,063: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in ticks? | + | | Timestamp in ticks |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Number of entries, always 17 | + | | Number of entries (always 17) |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 751: |
Line 1,075: |
| | 0x18 | | | 0x18 |
| | 0x8 | | | 0x8 |
− | | Maximum Entry Index, up to 16 | + | | Maximum Entry Index (up to 16) |
| |} | | |} |
| | | |
Line 763: |
Line 1,087: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples | + | | Timestamp in samples (global) |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 771: |
Line 1,095: |
| | 0x10 | | | 0x10 |
| | 0x8 | | | 0x8 |
− | | Timestamp in samples again | + | | Timestamp in samples |
| |- | | |- |
| | 0x1C | | | 0x1C |
Line 856: |
Line 1,180: |
| | 0 | | | 0 |
| | UnintendedHomeButtonInputProtectionEnabled (if cleared) | | | UnintendedHomeButtonInputProtectionEnabled (if cleared) |
| + | |} |
| + | |
| + | == Gesture == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x20 |
| + | | [[#GestureHeader]] |
| + | |- |
| + | | 0x20 |
| + | | 0x68 * 17 |
| + | | Array of [[#GestureState]] |
| + | |} |
| + | |
| + | === GestureHeader === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of Entries (always 17) |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index (always 16) |
| + | |} |
| + | |
| + | === GestureState === |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples (global) |
| + | |- |
| + | | 0x8 |
| + | | 0x60 |
| + | | |
| + | |} |
| + | |
| + | == ConsoleSixAxisSensor == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | |
| + | |- |
| + | | 0x8 |
| + | | 0x1 |
| + | | |
| + | |- |
| + | | 0x9 |
| + | | 0x3 |
| + | | Padding |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | |
| + | |- |
| + | | 0x10 |
| + | | 0xC |
| + | | |
| + | |- |
| + | | 0x1C |
| + | | 0x4 |
| + | | Padding |
| |} | | |} |