X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=plugins%2Fdfinput%2Fpad.c;h=53a254a403b895a175447fcd9cc50f7a06ceddab;hp=ab55db0f2ee289f53b1cd34f1dde35776a99dd95;hb=92ca1ba64e939942ab05aaa3d578f0d165634275;hpb=b944a30eda75c36c94ef71e7768497801887612b diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c index ab55db0f..53a254a4 100644 --- a/plugins/dfinput/pad.c +++ b/plugins/dfinput/pad.c @@ -21,7 +21,7 @@ #include -#include "../../libpcsxcore/psemu_plugin_defs.h" +#include "psemu_plugin_defs.h" #include "main.h" enum { @@ -206,11 +206,21 @@ static void do_cmd2(unsigned char value) case CMD_READ_DATA_AND_VIBRATE: if (value == 1 && CurPad == 0 && in_enable_vibration) - plat_trigger_vibrate(); + plat_trigger_vibrate(0); break; } } +static void do_cmd3(unsigned char value) +{ + if (in_enable_vibration && CurCmd == CMD_READ_DATA_AND_VIBRATE && CurPad == 0) { + if (value >= 0xf0) + plat_trigger_vibrate(1); + else if (value > 0x40) + plat_trigger_vibrate(0); + } +} + #if 0 #include unsigned char PADpoll_(unsigned char value); @@ -224,7 +234,8 @@ unsigned char PADpoll(unsigned char value) { unsigned char PADpoll_pad(unsigned char value) { - if (CurByte == 0) { + switch (CurByte) { + case 0: CurCmd = value; CurByte++; @@ -233,10 +244,13 @@ unsigned char PADpoll_pad(unsigned char value) { CurCmd = CMD_READ_DATA_AND_VIBRATE; return do_cmd(); - } - - if (CurByte == 2) + case 2: do_cmd2(value); + break; + case 3: + do_cmd3(value); + break; + } if (CurByte >= CmdLen) return 0xff; // verified