@@ -698,17 +698,18 @@ void PAD_ControlMotor(s32 chan,u32 cmd)
698698 _CPU_ISR_Restore (level );
699699}
700700
701- u32 PAD_GetType (s32 chan )
701+ s32 PAD_GetType (s32 chan )
702702{
703703 u32 level ;
704704 u32 mask , sitype ;
705- u32 type = PAD_TYPE_NONE ;
705+ s32 type = PAD_TYPE_NONE ;
706706
707707 _CPU_ISR_Disable (level );
708708
709709 mask = PAD_ENABLEDMASK (chan );
710710 if (__pad_enabledbits & mask ) {
711- sitype = SI_GetType (chan )& ~0xff ;
711+ sitype = SI_GetType (chan );
712+ sitype = SI_DecodeType (sitype );
712713 switch (sitype )
713714 {
714715 case SI_GC_CONTROLLER :
@@ -792,7 +793,8 @@ u32 PAD_ScanPads(void)
792793 keys [2 ] = (u8 )(padstatus [i ].triggerL );
793794
794795 // Only update if keys did not roll over
795- if (keys [0 ] != 2 && keys [1 ] != 2 && keys [2 ] != 2 ) {
796+ if (keys [0 ] != 1 && keys [1 ] != 1 && keys [2 ] != 1 &&
797+ keys [0 ] != 2 && keys [1 ] != 2 && keys [2 ] != 2 ) {
796798 oldkeys [0 ] = __pad_keys [i ].keyboard_state [0 ];
797799 oldkeys [1 ] = __pad_keys [i ].keyboard_state [1 ];
798800 oldkeys [2 ] = __pad_keys [i ].keyboard_state [2 ];
@@ -907,6 +909,7 @@ s32 PAD_KeyboardUp(int pad, u8 *keys)
907909 s32 i , count = 0 ;
908910 if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
909911 for (i = 0 ; i < 3 ; i ++ ) {
912+ keys [i ] = 0 ;
910913 if (__pad_keys [pad ].keyboard_up [i ]) {
911914 keys [i ] = __pad_keys [pad ].keyboard_up [i ];
912915 count ++ ;
@@ -922,6 +925,7 @@ s32 PAD_KeyboardDown(int pad, u8 *keys)
922925 s32 i , count = 0 ;
923926 if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
924927 for (i = 0 ; i < 3 ; i ++ ) {
928+ keys [i ] = 0 ;
925929 if (__pad_keys [pad ].keyboard_down [i ]) {
926930 keys [i ] = __pad_keys [pad ].keyboard_down [i ];
927931 count ++ ;
@@ -937,6 +941,7 @@ s32 PAD_KeyboardHeld(int pad, u8 *keys)
937941 s32 i , count = 0 ;
938942 if (pad < PAD_CHAN0 || pad > PAD_CHAN3 || __pad_keys [pad ].chan == -1 || keys == NULL || PAD_GetType (pad ) != PAD_TYPE_KEYBOARD ) return 0 ;
939943 for (i = 0 ; i < 3 ; i ++ ) {
944+ keys [i ] = 0 ;
940945 if (__pad_keys [pad ].keyboard_state [i ]) {
941946 keys [i ] = __pad_keys [pad ].keyboard_state [i ];
942947 count ++ ;
0 commit comments