public void Update(byte[] data) { // Buttons A = (data[1] & 0x01) != 0; B = (data[1] & 0x02) != 0; X = (data[1] & 0x04) != 0; Y = (data[1] & 0x08) != 0; Z = (data[2] & 0x02) != 0; Start = (data[2] & 0x01) != 0; // D-Pad Up = (data[1] & 0x80) != 0; Down = (data[1] & 0x40) != 0; Left = (data[1] & 0x10) != 0; Right = (data[1] & 0x20) != 0; // Joysticks joystick.rawX = data[3]; joystick.rawY = data[4]; cStick.rawX = data[5]; cStick.rawY = data[6]; // Triggers L.rawValue = data[7]; R.rawValue = data[8]; L.full = (data[2] & 0x08) != 0; R.full = (data[2] & 0x04) != 0; // Normalize joystick.Normalize(); cStick.Normalize(); L.Normalize(); R.Normalize(); }
public void Update(byte[] data) { int offset = Utils.GetExtensionOffset((InputReport)data[0]); if (offset > 0) { // Buttons A = (data[offset + 5] & 0x10) == 0; B = (data[offset + 5] & 0x40) == 0; X = (data[offset + 5] & 0x08) == 0; Y = (data[offset + 5] & 0x20) == 0; LFull = (data[offset + 4] & 0x20) == 0; // Until the Click RFull = (data[offset + 4] & 0x02) == 0; // Until the Click ZL = (data[offset + 5] & 0x80) == 0; ZR = (data[offset + 5] & 0x04) == 0; Plus = (data[offset + 4] & 0x04) == 0; Minus = (data[offset + 4] & 0x10) == 0; Home = (data[offset + 4] & 0x08) == 0; // Dpad Up = (data[offset + 5] & 0x01) == 0; Down = (data[offset + 4] & 0x40) == 0; Left = (data[offset + 5] & 0x02) == 0; Right = (data[offset + 4] & 0x80) == 0; // Joysticks LJoy.rawX = (byte)(data[offset] & 0x3F); LJoy.rawY = (byte)(data[offset + 1] & 0x3F); RJoy.rawX = (byte)(data[offset + 2] >> 7 | (data[offset + 1] & 0xC0) >> 5 | (data[offset] & 0xC0) >> 3); RJoy.rawY = (byte)(data[offset + 2] & 0x1F); // Triggers L.rawValue = (byte)(((data[offset + 2] & 0x60) >> 2) | (data[offset + 3] >> 5)); R.rawValue = (byte)(data[offset + 3] & 0x1F); L.full = LFull; R.full = RFull; // Normalize LJoy.Normalize(); RJoy.Normalize(); L.Normalize(); R.Normalize(); } wiimote = new Wiimote(data, wiimote); }
public bool T1, T2, T3, T4, T5; // Touch Frets public void Update(byte[] data) { // http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Guitar_Hero_(Wii)_Guitars // Byte 0: bits 0-5 = joy X // Byte 1: bits 0-5 = joy Y // Byte 2: bits 0-4 = touch // Byte 3: bits 0-4 = whammy // Byte 4: bit 2 = Plus, bit 4 = Minus, bit 6 = Strum Down // Byte 5: bit 0 = Strum Up, bit 3 = yellow // bit 4 = green, bit 5 = blue // bit 6 = red, bit 7 = orange int offset = Utils.GetExtensionOffset((InputReport)data[0]); if (offset > 0) { joystick.rawX = data[offset] & 0x3F; joystick.rawY = data[offset + 1] & 0x3F; touchBar = (byte)(data[offset + 2] & 0x1F); whammyBar.rawValue = (byte)(data[offset + 3] & 0x1F); Plus = (data[offset + 4] & 0x04) == 0; Minus = (data[offset + 4] & 0x10) == 0; StrumDown = (data[offset + 4] & 0x40) == 0; StrumUp = (data[offset + 5] & 0x01) == 0; Yellow = (data[offset + 5] & 0x08) == 0; Green = (data[offset + 5] & 0x10) == 0; Blue = (data[offset + 5] & 0x20) == 0; Red = (data[offset + 5] & 0x40) == 0; Orange = (data[offset + 5] & 0x80) == 0; switch (touchBar) { default: case 0x0F: T1 = T2 = T3 = T4 = T5 = false; break; case 0x04: T1 = true; T2 = T3 = T4 = T5 = false; break; case 0x07: T1 = T2 = true; T3 = T4 = T5 = false; break; case 0x0A: T2 = true; T1 = T3 = T4 = T5 = false; break; case 0x0C: case 0x0D: T2 = T3 = true; T1 = T4 = T5 = false; break; case 0x12: case 0x13: T3 = true; T1 = T2 = T4 = T5 = false; break; case 0x14: case 0x15: T3 = T4 = true; T1 = T2 = T5 = false; break; case 0x17: case 0x18: T4 = true; T1 = T2 = T3 = T5 = false; break; case 0x1A: T4 = T5 = true; T1 = T2 = T3 = false; break; case 0x1F: T5 = true; T1 = T2 = T3 = T4 = false; break; } joystick.Normalize(); whammyBar.Normalize(); whammyBar.full = whammyBar.rawValue >= whammyBar.max; } wiimote = new Wiimote(data, wiimote); }