** [[#BusType]] is 0 (LeftJoyRail) or 1 (RightJoyRail). [[#GetExternalDeviceId|DeviceId]] is 0x20 ("Ronde").
* 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.
+
** [[#BusType]] is 2 (InternalBus). [[#GetExternalDeviceId|DeviceId]] is 0x21 ("LarkMic").
−
* Used by Starlink: Battle For Atlas.
+
** 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.
−
** [[#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>.
+
* "Starlink: Battle For Atlas" controller mount
+
** [[#BusType]] is 1 (RightJoyRail). [[#GetExternalDeviceId|DeviceId]] 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>.