- Joined
- Oct 3, 2005
- Posts
- 6,059
I had been playing NAOMI games on my TV using a supergun and JAMMA converter board, but of course that gets pretty unwieldy. I was frustrated with the giant pile of electronics necessary to run it all. The NAOMI has its own PSU and already outputs VGA video and stereo line-level audio... so really, the supergun and JAMMA converter were only necessary to provide the input. I figured I could make a much smaller solution - something that would just act as a JVS IO slave, and provide the switch inputs from some kind of game controller.
The JVS IO protocol isn't documented anywhere in English, but there's a Japanese spec floating around, and some people have made working implementations.
This guy made a IO slave out of an Arduino-type board:
https://github.com/charcole/TeensyJVS
These two guys have pretty good documentation:
https://github.com/TheOnlyJoey/openjvs/wiki/Protocol
http://wiki.pcbotaku.com/wiki/JVS_I/O
So with those resources, the Japanese copy of the spec, and Google Translate, I was able to get a working implementation mocked up on my computer in an hour or two. It responded correctly to the sample frames on those web pages, and was reasonably simple to run.
So I started looking for a microcontroller that could handle it, and also poll some kind of game controller for input. It would have been trivial to support an SNES or PSX controller or something, but those are actually getting hard to find now. Most consoles for the last 10 years have been USB-based, so I decided to go with something that could host a USB bus.
I settled on the PIC32MX220, which was convenient because I already had a development kit from a college class.
With the PIC32 and a MAX485 transceiver, I was able to make up a prototype that could poll an Xbox controller and relay the results to a JVS game:
(Seen here amongst a very messy workspace)
So I made up a circuit board and ordered a batch from DirtyPCBs. The whole thing fits in 40x80mm - really tiny, though I used all through-hole parts to make the soldering easy.
The parts got here today, and I put one together - including a little aluminum case for it. (I didn't have anything to properly cut the end caps, though.)
There's two LED lights. I use one to indicate whether a USB gamepad device has been enumerated, and one to indicate that the JVS master has assigned an address to the adapter.
It works great for one player right now, but it's still a bit unfinished. Obviously I need to support USB hubs to handle multiple controllers, and it's a real pain to write all that USB driver code from scratch. I'm working on it, though. Also, there's an EEPROM on board for saving control settings, but the software doesn't yet support that.
The JVS IO protocol isn't documented anywhere in English, but there's a Japanese spec floating around, and some people have made working implementations.
This guy made a IO slave out of an Arduino-type board:
https://github.com/charcole/TeensyJVS
These two guys have pretty good documentation:
https://github.com/TheOnlyJoey/openjvs/wiki/Protocol
http://wiki.pcbotaku.com/wiki/JVS_I/O
So with those resources, the Japanese copy of the spec, and Google Translate, I was able to get a working implementation mocked up on my computer in an hour or two. It responded correctly to the sample frames on those web pages, and was reasonably simple to run.
So I started looking for a microcontroller that could handle it, and also poll some kind of game controller for input. It would have been trivial to support an SNES or PSX controller or something, but those are actually getting hard to find now. Most consoles for the last 10 years have been USB-based, so I decided to go with something that could host a USB bus.
I settled on the PIC32MX220, which was convenient because I already had a development kit from a college class.
With the PIC32 and a MAX485 transceiver, I was able to make up a prototype that could poll an Xbox controller and relay the results to a JVS game:
(Seen here amongst a very messy workspace)
So I made up a circuit board and ordered a batch from DirtyPCBs. The whole thing fits in 40x80mm - really tiny, though I used all through-hole parts to make the soldering easy.
The parts got here today, and I put one together - including a little aluminum case for it. (I didn't have anything to properly cut the end caps, though.)
There's two LED lights. I use one to indicate whether a USB gamepad device has been enumerated, and one to indicate that the JVS master has assigned an address to the adapter.
It works great for one player right now, but it's still a bit unfinished. Obviously I need to support USB hubs to handle multiple controllers, and it's a real pain to write all that USB driver code from scratch. I'm working on it, though. Also, there's an EEPROM on board for saving control settings, but the software doesn't yet support that.
Last edited: