-
More Peripherals and some tablet bytes.
02/16/2017 at 20:25 • 0 commentsThe 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
-
New peripherals and more progress.
02/15/2017 at 14:31 • 0 commentsI have an example working but it still uses 40 bytes per map. I'm re-writing it again and learning a lot about c++ in the process.
Guitar hero controller came in and the library identifies it and correctly displays the raw bytes.
-
Refactor in progress.
02/13/2017 at 04:33 • 0 commentsspent some time today breaking up the huge frankenclass and refactoring the code.
We plan to have different classes for the following peripherals. We have a classic controller and a nun-chuck. We eBay everything else except for the Taiko drums. The peripherals where suprisingly cheep with one exception. We where suprised by how unreasonably expensive the Taiko Drums where for what is essentially 4 buttons shaped like a drum.
* Classic Controller * Nunchuck * Guitar Hero Guitar * Guitar Hero Drums * DJ Hero * Drawesome Tablet * Taiko drums * Wii Motion Plus
-
Working Release.
02/13/2017 at 04:29 • 0 commentsSerching wiichuck in the arduino library manager will allow you to use the library. It currently supports nunchucks.