コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }