Line 866: |
Line 866: |
| == PairPalma == | | == PairPalma == |
| Takes an input [[#PalmaConnectionHandle]], no output. | | Takes an input [[#PalmaConnectionHandle]], no output. |
| + | |
| + | This eventually uses [[BTM_services#BlePairDevice|BlePairDevice]] if needed, and updates state. |
| | | |
| == SetPalmaBoostMode == | | == SetPalmaBoostMode == |
Line 908: |
Line 910: |
| | | |
| == IAppletResource == | | == IAppletResource == |
| + | This is "nn::hid::IAppletResource". |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 1,507: |
Line 1,511: |
| |- | | |- |
| | 326 || [10.0.0+] GetUniquePadAppletDetailedUiType | | | 326 || [10.0.0+] GetUniquePadAppletDetailedUiType |
| + | |- |
| + | | 327 || [14.0.0+] GetAbstractedPadIdDataFromNpad |
| + | |- |
| + | | 328 || [14.0.0+] AttachAbstractedPadToNpad |
| + | |- |
| + | | 329 || [14.0.0+] DetachAbstractedPadAll |
| + | |- |
| + | | 330 || [14.0.0+] CheckAbstractedPadConnection |
| |- | | |- |
| | 500 || SetAppletResourceUserId | | | 500 || SetAppletResourceUserId |
Line 1,519: |
Line 1,531: |
| |- | | |- |
| | 505 || EnableAppletToGetSixAxisSensor | | | 505 || EnableAppletToGetSixAxisSensor |
| + | |- |
| + | | 506 || [14.0.0+] EnableAppletToGetPadInput |
| + | |- |
| + | | 507 || [14.0.0+] EnableAppletToGetTouchScreen |
| |- | | |- |
| | 510 || [[#SetVibrationMasterVolume]] | | | 510 || [[#SetVibrationMasterVolume]] |
Line 4,454: |
Line 4,470: |
| |- | | |- |
| | 0x0 | | | 0x0 |
− | | 0x43F0 ([1.0.0-8.1.0] 0x4410) | + | | 0x43F8 ([9.0.0-12.1.0] 0x43F0, [1.0.0-8.1.0] 0x4410) |
| | [[#NpadInternalState]] | | | [[#NpadInternalState]] |
| |} | | |} |
Line 4,602: |
Line 4,618: |
| | 0x4 | | | 0x4 |
| | [[#NpadLagerType|LagerType]] | | | [[#NpadLagerType|LagerType]] |
| + | |- |
| + | | 0x43F0 |
| + | | 0x1 * 6 |
| + | | [13.0.0+] Array of [[#SixAxisSensorProperties]] |
| |} | | |} |
| | | |
Line 7,277: |
Line 7,297: |
| |- | | |- |
| | 3 || U | | | 3 || U |
| + | |} |
| + | |
| + | = SixAxisSensorProperties = |
| + | This is "nn::hid::server::SixAxisSensorProperties". |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Bit |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | IsSixAxisSensorDeviceNewlyAssigned |
| + | |- |
| + | | 1 |
| + | | IsFirmwareUpdateAvailableForSixAxisSensor |
| |} | | |} |
| | | |
Line 7,443: |
Line 7,478: |
| ! Description | | ! Description |
| |- | | |- |
− | | 1 || JoyRight, HandheldRight || RightController || JoyDual, JoyRightHorizontal, JoyRightVertical, JoyDualRightOnly, HandheldJoyConRightOnly, HandheldJoyConLeftJoyConRight, HandheldLarkHvc1JoyConRight, HandheldLarkNesLeftJoyConRight, HandheldNone || Joy-Con right controller | + | | 1 || JoyRight, HandheldRight || RightController || JoyDual, JoyRightHorizontal, JoyRightVertical, JoyDualRightOnly, HandheldJoyConRightOnly, HandheldJoyConLeftJoyConRight, HandheldLarkHvc1JoyConRight, HandheldLarkNesLeftJoyConRight, HandheldNone || Joy-Con right controller (USB PID 0x2007) |
| |- | | |- |
− | | 2 || JoyLeft, HandheldLeft || LeftController || JoyDual, JoyLeftHorizontal, JoyLeftVertical, JoyDualLeftOnly, HandheldJoyConLeftOnly, HandheldJoyConLeftJoyConRight, HandheldJoyConLeftLarkHvc2, HandheldJoyConLeftLarkNesRight, HandheldNone || Joy-Con left controller | + | | 2 || JoyLeft, HandheldLeft || LeftController || JoyDual, JoyLeftHorizontal, JoyLeftVertical, JoyDualLeftOnly, HandheldJoyConLeftOnly, HandheldJoyConLeftJoyConRight, HandheldJoyConLeftLarkHvc2, HandheldJoyConLeftLarkNesRight, HandheldNone || Joy-Con left controller (USB PID 0x2006) |
| |- | | |- |
− | | 3 || FullKey || FullKeyController || SwitchProController || Pro Controller | + | | 3 || FullKey || FullKeyController || SwitchProController || Pro Controller (USB PID 0x2009) |
| |- | | |- |
| | 4 || JoyLeft || LeftController || || Reserved | | | 4 || JoyLeft || LeftController || || Reserved |
Line 7,463: |
Line 7,498: |
| | 10 || LarkNesRight, HandheldLarkNesRight || RightController || LarkNesRight, HandheldLarkNesRightOnly, HandheldJoyConLeftLarkNesRight, HandheldLarkHvc1LarkNesRight, HandheldLarkNesLeftLarkNesRight, HandheldNone || NES right controller | | | 10 || LarkNesRight, HandheldLarkNesRight || RightController || LarkNesRight, HandheldLarkNesRightOnly, HandheldJoyConLeftLarkNesRight, HandheldLarkHvc1LarkNesRight, HandheldLarkNesLeftLarkNesRight, HandheldNone || NES right controller |
| |- | | |- |
− | | 11 || Lucia || FullKeyController || LuciaU, LuciaJ, LuciaE || SNES controller | + | | 11 || Lucia || FullKeyController || LuciaU, LuciaJ, LuciaE || SNES controller (USB PID 0x2017) |
| |- | | |- |
| | 12 || Palma || Embedded || Unknown || Poké Ball Plus controller | | | 12 || Palma || Embedded || Unknown || Poké Ball Plus controller |
Line 7,485: |
Line 7,520: |
| | 21 || System || Embedded || CompatibleJoyCon, HandheldNone || Third party Joy-Con left controller | | | 21 || System || Embedded || CompatibleJoyCon, HandheldNone || Third party Joy-Con left controller |
| |- | | |- |
− | | 22 || Lagon || FullKeyController || Lagon || N64 controller | + | | 22 || Lagon || FullKeyController || Lagon || N64 controller (USB PID 0x2019) |
| + | |- |
| + | | 23 || ? || ? || ? || Joy-Con Charging Grip (USB PID 0x200E) |
| + | |- |
| + | | 24 || ? || ? || ? || Nintendo, USB PID 0x200F |
| + | |- |
| + | | 25 || ? || ? || ? || Nintendo, USB PID 0x2008 |
| + | |- |
| + | | 26 || ? || ? || ? || Nintendo, USB PID 0x2018 |
| + | |- |
| + | | 27 || ? || ? || ? || Nintendo, USB PID 0x201A |
| + | |- |
| + | | 28 || Lager || FullKeyController || || Sega Genesis controller (USB PID 0x201E) |
| |- | | |- |
− | | 28 || Lager || FullKeyController || || Sega Genesis controller | + | | 29 || ? || ? || ? || Nintendo, USB PID 0x201F |
| |} | | |} |
| | | |
Line 7,728: |
Line 7,775: |
| | 14 || SuspendFeature | | | 14 || SuspendFeature |
| |- | | |- |
− | | [[5.1.0]]+ 15 || ReadPlayLog | + | | 15 || [5.1.0+] ReadPlayLog |
| |- | | |- |
− | | [[5.1.0]]+ 16 || ResetPlayLog | + | | 16 || [5.1.0+] ResetPlayLog |
| |} | | |} |
| | | |
Line 9,267: |
Line 9,314: |
| * [[Ring-Con]] | | * [[Ring-Con]] |
| * Famicom right controller (with microphone) | | * Famicom right controller (with microphone) |
| + | ** [[#BusType]] is 2, ExternalDeviceId is 0x21. SendAndReceive is not used. EnableJoyPollingReceiveMode is used where the input buffer is an u32 with value 0, [[#JoyPollingMode]] = 2. GetJoyPollingReceivedData is used to get the output data. |
| + | * Used by Starlink: Battle For Atlas. |
| + | ** [[#BusType]] is 1, ExternalDeviceId is 0x28. EnableJoyPollingReceiveMode is used where the input buffer is an u16 with value 0x09, [[#JoyPollingMode]] = 0. SendAndReceive is called from 1 func. GetJoyPollingReceivedData is used to determine whether to call the same func which calls SendAndReceive, which is only done if <code>out_size==0x4 && data[0]==0x09 && (data[1] & 1 == 1)</code>. |
| | | |
| = RomFS = | | = RomFS = |