Skip to content

Commit c5e40dd

Browse files
KethenMegamouse
authored andcommitted
Logitech G27 update bit 86 shifter_pressed behavior
1 parent 5deb0fc commit c5e40dd

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

rpcs3/Emu/Io/LogitechG27.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -751,8 +751,16 @@ void usb_device_logitech_g27::interrupt_transfer(u32 buf_size, u8* buf, u32 endp
751751
set_bit(buf, 82, true);
752752
// shifter connected
753753
set_bit(buf, 83, true);
754-
// shifter stick down
755-
set_bit(buf, 86, shifter_press);
754+
/*
755+
* shifter pressed/down bit
756+
* mechanical references:
757+
* - G29 shifter mechanical explanation https://youtu.be/d7qCn3o8K98?t=1124
758+
* - same mechanism on the G27 https://youtu.be/rdjejtIfkVA?t=760
759+
* - same mechanism on the G25 https://youtu.be/eCyt_4luwF0?t=130
760+
* on healthy G29/G27/G25 shifters, shifter is mechnically kept pressed in reverse, the bit should be set
761+
* the shifter_press mapping alone captures instead a shifter press without going into reverse, ie. neutral press, just in case there are games using it for input
762+
*/
763+
set_bit(buf, 86, shifter_press | shifter_r);
756764

757765
buf[3] = (steering << 2) | buf[3];
758766
buf[4] = steering >> 6;

0 commit comments

Comments
 (0)