Ticket #106: cwiid-0.6.00-classic_fake-with_dirty_axis_tweaks.patch

File cwiid-0.6.00-classic_fake-with_dirty_axis_tweaks.patch, 2.1 kB (added by thomas, 21 months ago)

Third party classic controller patch for original libcwiid-0.6.00 with dirty axis tweaks added.

  • cwiid_internal.h

    diff -ruN libcwiid-orig/cwiid_internal.h libcwiid/cwiid_internal.h
    old new  
    117117#define EXT_PARTIAL 0xFF 
    118118#define EXT_NUNCHUK 0x00 
    119119#define EXT_CLASSIC 0x01 
     120#define EXT_CLASSIC_FAKE 0x2D /* some third party classic controllers seems to have this ID */ 
    120121 
    121122/* IR Enable blocks */ 
    122123#define MARCAN_IR_BLOCK_1       "\x00\x00\x00\x00\x00\x00\x90\x00\xC0" 
  • process.c

    diff -ruN libcwiid-orig/process.c libcwiid/process.c
    old new  
    216216                        classic_mesg->r_stick[CWIID_X] = (data[0] & 0xC0)>>3 | 
    217217                                                         (data[1] & 0xC0)>>5 | 
    218218                                                         (data[2] & 0x80)>>7; 
     219                        if (classic_mesg->l_stick[CWIID_X] < 30) 
     220                                classic_mesg->l_stick[CWIID_X] -= 
     221                                7-(7*(100-(29-classic_mesg->l_stick[CWIID_X])*4)/100); 
     222                        if (classic_mesg->r_stick[CWIID_X] < 20) 
     223                                classic_mesg->r_stick[CWIID_X] = 
     224                                (classic_mesg->r_stick[CWIID_X]-1)*0.8334; 
     225                        else if (classic_mesg->r_stick[CWIID_X] > 19) 
     226                                classic_mesg->r_stick[CWIID_X] -= 
     227                                4-(4*(100-(31-classic_mesg->r_stick[CWIID_X])*7)/100); 
    219228                        classic_mesg->r_stick[CWIID_Y] = data[2] & 0x1F; 
    220229                        classic_mesg->l = (data[2] & 0x60)>>2 | 
    221230                                          (data[3] & 0xE0)>>5; 
     231                        classic_mesg->l *= 1.15; 
    222232                        classic_mesg->r = data[3] & 0x1F; 
    223233                        classic_mesg->buttons = ~((uint16_t)data[4]<<8 | 
    224234                                                  (uint16_t)data[5]); 
  • thread.c

    diff -ruN libcwiid-orig/thread.c libcwiid/thread.c
    old new  
    214214                                                status_mesg->ext_type = CWIID_EXT_NUNCHUK; 
    215215                                                break; 
    216216                                        case EXT_CLASSIC: 
     217                                        case EXT_CLASSIC_FAKE: 
    217218                                                status_mesg->ext_type = CWIID_EXT_CLASSIC; 
    218219                                                break; 
    219220                                        default: 
     221                                                printf("Unknown extension connected: 0x%X\n", buf); 
    220222                                                status_mesg->ext_type = CWIID_EXT_UNKNOWN; 
    221223                                                break; 
    222224                                        }