Close

More Peripherals and some tablet bytes.

A project log for WiiChuck

A Wii controller library for talking to every Extension Controller made for the wii including Nunchuck and Classic Controller over i2c.

alex-camiloAlex Camilo 02/16/2017 at 20:250 Comments

The amazon fairy dropped off a "NES Classic Controller" and a "Classic Pro"

The classic pro comes up as a classic controller, The only difference is the analog R and L on the one I have are buttons and just return the max value when pushed. Although this may be a knock off controller since it doesn't have any Nintendo branding.

The NES Classic Controller I have also lacks Nintendo branding and the box has some engrish so i'm gonna assume it's a knock off too. It comes up as a Classic but always reports "81 81 81 81 00 00".

The Real cool peripheral i got was the Drawesome Tablet.

When connected the library detects it as a drawesome tablet but it only responds with "00 00 00 00 00 C0" for the first 6 registers. The rest of the 256 bit address space is 00 or FF with the exception of the ID Bytes. There is some sort of init sequence.

In lieu of a protocol analyser (or a scope with enough memory depth to catch the transmission) I hooked up the tablet to the WII and started the game. After I verified that the game and the tablet where talking I paired the wiimote with my laptop and fired up WMGUI and started dumping registers.

Register dump from an activated Drawesome tablet

0x00A40000: 54 5A 39 14 46 A5 34 3E  89 6D D7 1A 46 65 34 3E 
0x00A40010: 89 6D D7 1A 46 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40020: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40030: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40040: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40050: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40060: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40070: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40080: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A40090: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400A0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400B0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400C0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400D0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400E0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 1B 47 64 3B 3F 
0x00A400F0: 88 6E C8 1B 47 64 3B 3F  88 6E C8 19 E2 45 34 CB 

The only bytes changing where the first 6.

Registers 4 and 5 never change with position and only with pressure. looking at byte 5

regardless of position its 0xA5 when off board. A few cm away it jumps to 0x25. and at full pressure 0x2c. byte 4 also changes with pressure too.


bytes 0 1 2 3 look like position data. Here is a horizontal move along a grey line on the tablet. I traced the line with a stylus and grabbed data every second. Full pressure each time. Looks like x data is in the first 2 bytes and y data in the second 2 bytes. but i don't know if there are any flags in there. Bit 3 is pretty constant but bit 2 is changing waaaay to much for it to just be a LSB. Maybe flags, Maybe we have some other data in there.


I haven't checked for pen angle. The software doesn't seem to use that, just pressure and position.


0x00A40000: 10 48 D7 EA 47 2C 34 3E 
0x00A40000: 48 6C A9 E5 47 2C 34 3E 
0x00A40000: 48 6C A9 E5 47 2C 34 3E 
0x00A40000: 48 6C A9 E5 47 2C 34 3E 
0x00A40000: 48 6C A9 E5 47 2C 34 3E 
0x00A40000: 58 67 F6 E5 47 2C 34 3E 
0x00A40000: 62 67 F6 E5 47 2C 34 3E 
0x00A40000: 2B 63 DC E5 47 2C 34 3E 
0x00A40000: 29 63 DC E5 47 2C 34 3E 
0x00A40000: 8A 61 D1 E5 47 2C 34 3E 
0x00A40000: 8A 61 D1 E5 47 2C 34 3E 
0x00A40000: 58 5D D0 E5 47 2C 34 3E 
0x00A40000: 58 5D D0 E5 47 2C 34 3E 
0x00A40000: 64 5A 20 E6 47 2C 34 3E 
0x00A40000: 64 5A 20 E6 47 2C 34 3E 
0x00A40000: 36 58 3B E6 47 2C 34 3E 
0x00A40000: 36 58 38 E6 47 2C 34 3E 
0x00A40000: FA 56 14 E6 47 2C 34 3E 
0x00A40000: FB 56 14 E6 47 2C 34 3E 
0x00A40000: 39 52 1F E6 47 2C 34 3E 
0x00A40000: C6 52 1F E6 47 2C 34 3E 
0x00A40000: C0 4F 3D E6 47 2C 34 3E 
0x00A40000: CF 4F 3D E6 47 2C 34 3E 
0x00A40000: 93 4B 19 E6 47 2C 34 3E 
0x00A40000: 9B 4B 1B E6 47 2C 34 3E 

Discussions