I am officially announcing that Kupid 2.0 is in development. I have been working on it for months, but have been holding back releasing news until I was more confident that my design theories would work in practice (it is far, far, more technically complicated than 1.0). I am now sufficiently confident that my design will work - below are some details.
Kupid 2.0 is a complete redesign of the original Kupid, from the ground up. Rather than going the long way around and indirectly simulating button presses, piggy-backing off a PS1 controller PCB (which is a slow process both in the actual simulation and in the amount and difficulty of soldering tiny wires) and waiting for each character to be completely entered into RPGM before the next keyboard key can be pressed, Kupid 2.0 will use a much more powerful and faster microcontroller which will emulate an entire PlayStation controller on a single chip.
Further, 2.0 will include a built-in keystroke buffer allowing you to type as quickly as you can while not having to worry about Kupid catching up - it will remember every keystroke you make and execute them automatically when it is ready.
Kupid 2.0 is estimated to be approximately twice as fast as 1.0 (estimated as inputting an average 3 to 6 characters per second (i.e. average between 36 and 72 words per minute)), but will still cost about $35 when available for sale.
As development continues, more photos will be posted, as well as videos of Kupid 2.0 in action, circuit schematics, logic graphs, and source code (written in assembly - the current code which allows the MCU to communicate with the PlayStation is about 110 lines, but will likely grow to at least 1,500 by the end).
Below is a photograph of the very first 2.0 prototype (click to open larger image) and a short section of the source code.

Please post questions, comments, and suggestions in the Kupid thread (http://www.pavilionboards.com/forum/...ad.php?t=23058).
Please post questions, comments, and suggestions in the Kupid thread (http://www.pavilionboards.com/forum/...ad.php?t=23058).
Kupid 2.0 is a complete redesign of the original Kupid, from the ground up. Rather than going the long way around and indirectly simulating button presses, piggy-backing off a PS1 controller PCB (which is a slow process both in the actual simulation and in the amount and difficulty of soldering tiny wires) and waiting for each character to be completely entered into RPGM before the next keyboard key can be pressed, Kupid 2.0 will use a much more powerful and faster microcontroller which will emulate an entire PlayStation controller on a single chip.
Further, 2.0 will include a built-in keystroke buffer allowing you to type as quickly as you can while not having to worry about Kupid catching up - it will remember every keystroke you make and execute them automatically when it is ready.
Kupid 2.0 is estimated to be approximately twice as fast as 1.0 (estimated as inputting an average 3 to 6 characters per second (i.e. average between 36 and 72 words per minute)), but will still cost about $35 when available for sale.
As development continues, more photos will be posted, as well as videos of Kupid 2.0 in action, circuit schematics, logic graphs, and source code (written in assembly - the current code which allows the MCU to communicate with the PlayStation is about 110 lines, but will likely grow to at least 1,500 by the end).
Below is a photograph of the very first 2.0 prototype (click to open larger image) and a short section of the source code.

Code:
SlaveSPITransferIn: SBIC PORTB, 3 ;skip next instruction if the ATTN line is LOW RCALL ResetSPI SBIS USISR, USIOIF ;skip next instruction if the Counter Overflow Interrupt Flag in the USI Status Register is set to 1 RJMP SlaveSPITransferIn ;go to the beginning of the transfer loop CPI r17, 0b00000010 ;compare r17 (byte counter) to 2, if equal, then zero-flag in status register is set to one. BREQ SendByte4 CPI r17, 0b00000011 ;compare r17 (byte counter) to 3, if equal, then zero-flag in status register is set to one. BREQ SendByte5 IN r16, USIDR ;copy the contents of the USI Data Register to register 16 CPI r16, 0b00000000 ;compare r16 to the first, fourth, and fifth expected bytes from the Playstation, if equal, then zero-flag in status register is set to one. BREQ SendByte1 CPI r16, 0b10000000 ;compare r16 to the second expected byte from the Playstation, if equal, then zero-flag in status register is set to one. BREQ SendByte2 CPI r16, 0b01000010 ;compare r16 the third expected byte from the Playstation, then zero-flag in status register is set to one. BREQ SendByte3 RJMP SlaveSPITransferOut
Please post questions, comments, and suggestions in the Kupid thread (http://www.pavilionboards.com/forum/...ad.php?t=23058).


Comment