* With motionp enabled it changes slightly to this:
* Byte | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
* -----+-----+-----+-----+-----+-----+-----+-----+-----+
- * 1 | RX <4:3> | LX <5:1> | BDU |
- * 2 | RX <2:1> | LY <5:1> | BDL |
+ * 1 | RX <5:4> | LX <5:1> | BDU |
+ * 2 | RX <3:2> | LY <5:1> | BDL |
* -----+-----+-----+-----+-----------------------+-----+
- * 3 |RX<0>| LT <4:3> | RY <4:0> |
+ * 3 |RX<1>| LT <5:4> | RY <5:1> |
* -----+-----+-----------+-----------------------------+
- * 4 | LT <2:0> | RT <4:0> |
+ * 4 | LT <3:1> | RT <5:1> |
* -----+-----+-----+-----+-----+-----+-----+-----+-----+
* 5 | BDR | BDD | BLT | B- | BH | B+ | BRT | EXT |
* -----+-----+-----+-----+-----+-----+-----+-----+-----+
if (wdata->state.flags & WIIPROTO_FLAG_MP_ACTIVE) {
lx = ext[0] & 0x3e;
- ly = ext[0] & 0x3e;
+ ly = ext[1] & 0x3e;
} else {
lx = ext[0] & 0x3f;
- ly = ext[0] & 0x3f;
+ ly = ext[1] & 0x3f;
}
- rx = (ext[0] >> 3) & 0x14;
+ rx = (ext[0] >> 3) & 0x18;
rx |= (ext[1] >> 5) & 0x06;
rx |= (ext[2] >> 7) & 0x01;
ry = ext[2] & 0x1f;
input_report_abs(wdata->extension.input, ABS_HAT1Y, ly - 0x20);
input_report_abs(wdata->extension.input, ABS_HAT2X, rx - 0x20);
input_report_abs(wdata->extension.input, ABS_HAT2Y, ry - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT3X, rt - 0x20);
- input_report_abs(wdata->extension.input, ABS_HAT3Y, lt - 0x20);
+ input_report_abs(wdata->extension.input, ABS_HAT3X, rt);
+ input_report_abs(wdata->extension.input, ABS_HAT3Y, lt);
input_report_key(wdata->extension.input,
wiimod_classic_map[WIIMOD_CLASSIC_KEY_RIGHT],