What's new

winteriscoming

Champion
Joined
Feb 16, 2016
Messages
1,440
Reaction score
1,185
Location
Indiana, US
How feasible would it be to create a physical JVS I/O emulator that takes input and sends it to the NAOMI/Chihiro/etc in place of actual pcb?

My idea here would be mainly for driving games that may be compatible in a given game's cabinet, but not all controls map up.

Wouldn't it be nice to tell the emulator what game you're booting and for Crazy Taxi, the up shifter puts it in drive, for ID3 the up/down work as needed... the view change button could be the item button in Mario Kart, etc.

Wire your cabinet controls into the emulator and let the software take care of button mappings.

Is enough known about JVS to emulate it this way? The NAOMI emulator would be doing it, right?
 
I don't have the technical knowhow to do something like this but my S-JIHP was designed to make button mapping much easier.

I do know you wouldn't need to emulate the jvs itself, just reroute the signals.
 
It might be nice to eliminate the JVS board altogether and not worry about changing any physical connectors. For example, I'd rather pay $30 for a Raspberry Pi that manages mappings and all i/o communication in JVS standard, than buy JVS i/o that seems to go for much higher prices.

In my case I'm scratch building a driver cab, so will have to invest in some kind of compatible i/o board. So if I could do it for cheaper, and it happens to be a more convenient setup, so much the better.
 
you mean like TeensyJVS?
That's awesome! I'll look into this. Looks like they're doing what I hoped and driving a physical NAOMI.

I was thinking I came across a different Teensy based project that allowed actual JVS I/O to act as a pc interface (not what I'm wanting).
 
Here's a kind of similar project. Maybe you can find some of the information useful.

https://github.com/aostanin/saturnjvs

SaturnJVS

A project to build a replacement JVS I/O board for a NAOMI arcade board which uses Sega Saturn controllers as input.

Details

This relies on two boards which communicate by I2C. One board handles JVS communication with the NAOMI while the other handles controller input from Sega Saturn controllers. Originally, the plan was to support different types of controllers by swapping controller input boards.
Both boards rely on Atmel AVR ATmega328P microcontrollers and the firmware is written using the Arduino framework. The boards, however, are custom made and not arduino boards (though Arduino boards might be usable as well).
 
Last edited:
Nice find- I'll have to try that out too.
It seems that we've got a few threads on this topic recently- can they be merged?
 
I've been thinking more about this project idea. I know that there are other JVS solutions in active development, but in my limited research I'm not seeing where anyone has the exact same goals in mind. Plus I'd like the satisfaction of putting together a solution on my own.

Since starting this thread a while ago, I've had more Arduino experience and am more confident in my abilities to put something together to meet my needs.

There are Ardiuno Mega 2560 clones for like $10-$12. These have over 50 digital i/o pins, several analog inputs, and a few different serial ports.

In addition to the Mega, this project requires a TTL to RS485 adapter for JVS protocol communication with the game PCB (Chihiro/NAOMI/Triforce), and then just wiring adapters to accept the digital and analogue connectors from the cabinet. We're probably talking less than $20 in parts and hopefully something relatively simple to DIY with basic soldering skills.

My goals are as follows:
-Completely replace the JVS I/O board with this solution.
-Configure this board via software to accept inputs from a given cabinet (OR2SP in my case) and remap outputs over JVS so that any game is compatible without wiring changes. This would work by telling the board which game you're booting (probably via serial/USB from the netboot source machine) and then it configures what it sends to the game board accordingly. So for example, if I boot up Crazy Taxi, the controls for the shifter would work as they should automatically. Nothing physically has to change about the wiring or controls.
-Fake outputs and configuration that aren't integral to game-play, like make sure to tell the game board that coin meters are wired up, but none would actually need to be physically connected. Make sure to tell the game board that the JVS I/O meets whatever specs are needed for the game.
-Configurable outputs for lighting button lights.
-Optionally allow USB output, perhaps via HID standard, for using cabinet controls on PC. I've already been playing around with the Mega as a HID device for another project, so it's possible.
-Completely free and open-source plans and software. I'm not planning on selling anything. Source your own parts and build one or don't.

With these goals in mind, it should be possible for my OR2SP cabinet to "just work" with most driving games I currently have available to boot up into it (Lindbergh, Chihiro, NAOMI1/2). Taking into account additional controls found in some games where OR2's available buttons might be lacking, it would just be a matter of prioritizing which buttons do what. For example, I might forego a view change button in favor of using it as a boost button in a game that has a boost and view change button.

The motivation behind this is that I like swapping games frequently, so don't want to mess with frequent wiring changes, and it's disappointing running into games where controls don't map up perfectly, so some features (like a boost button) aren't available without some wiring work.

Anyone else interested in something like this?
 
I confirmed that I can get the TeensyJVS code linked above to compile and run on the Mega2560. That will be a great starting point.

I don't currently have an RS458 module, so I'll have to wait I can get one to proceed. I'll initially try getting the stock TeensyJVS code working on this board before attempting changes.
 
It occurred to me when I started thinking about mounting all of the headers and such for the cabinet wiring that I should be able to come up with a PCB using my CNC machine. That should make assembling this way easier! :D

So far I've got a draft finished, but won't be able to tell if I've got hole placement correct for the RS485 module until I receive it. I made this so it's single sided with only 6 connections that need to be bridged with an external wire.

At the moment it's only wired up to work exactly with OR2 controls with the additional pins needed for WMMT shifters. Once I get things figured out, it could be redesigned to accommodate more. The Arduino Mega should theoretically be able to act as a 100% pin-to-pin Type 1 I/O replacement. There are enough digital and analog I/O pins. I don't know if I'd be interested in maxing it out, though, as it won't be needed for my purposes.

This was my first time using Eagle. While not the most intuitive program, it's very powerful and I've figured out how to make it work the way I need it to and generate files I can use for CNC milling.
Board.png
 
Last edited:
If you're making it a drop in replacement for the JVS I/O, a great addition would be a JAMMA edge connector. Like, detect when a game board is connected to the edge, and just disable the JVS functionality and pass through the inputs to the game board. Instantly making your JVS cabinet JAMMA compatible without even having to flick a switch.
 
Sign me in for this project and let me know if I can help you in any way (I have some Arduino, adapters and JVS boards at home).

One idea for the future, and lcd screen that allow you to select the game and remap the controls accordingly.

Best regards.
 
If you're making it a drop in replacement for the JVS I/O, a great addition would be a JAMMA edge connector. Like, detect when a game board is connected to the edge, and just disable the JVS functionality and pass through the inputs to the game board. Instantly making your JVS cabinet JAMMA compatible without even having to flick a switch.
I was thinking it could be JAMMA compatible for playing JVS games in a JAMMA cab, kind of like the Capcom I/O by accepting a JAMMA harness (which could be done by wiring up a harness to plug into the 60 pin digital I/O port), but what you're suggesting would be way out of scope for what I'd want to accomplish for my personal use. Video signals will not be passing through this board.
Sign me in for this project and let me know if I can help you in any way (I have some Arduino, adapters and JVS boards at home).

One idea for the future, and lcd screen that allow you to select the game and remap the controls accordingly.

Best regards.
If you're netbooting anyway, I would think the host computer could handle changing controls. Or maybe there's a button you push to cycle through saved mappings. The JVS screen shows the name of the attached device. If the name can be updated on-the-fly, that might be an option. We'll have to see how this shakes out.
 
Where do I make a donation?
No donations needed. I want this to happen for my personal use and it won't be expensive from a bill of materials standpoint, so I can fund it at the moment.

Even buying parts in slight bulk, I'm at:
-15x 100x70mm single sided copper clad PCBs for less than $10.
-10x USB Type B ports for less than $5.
-5x TTL to RS485 adapters for less than $8.
-1x Arduino Mega 2560 clone for $12 (that I already had on hand).

Throw in some diodes and headers I have on hand, and we're at less than $35, and I've got the potential to make up to 5 Arduino shields with this stock of materials, in which case it would just be an additional $12 per unit to add the Arduino.

I ordered extras for testing purposes along the way, but all told, I'm hoping the end result would be about $20 in parts for a single DIY unit. I'd likely have to seriously up-charge if I were to sell an assembled unit because $20 is not worth the time it would take me to assemble one. Maybe if my CNCed PCBs work out, I could sell those, but eve then I have a hard time imagining it being worth the hassle to make a few bucks per PCB.
 
I've come to the conclusion that due to a combination of inadequate end mills and traces that are too narrow, that my PCB needs to be redesigned to allow for much thicker traces.

I've got a version of it that I'll test out. Since I'm currently attempting a single sided PCB, the main draw back to the new design is that it will require more external wires for manual routing. I've got it down to 12, which isn't crazy high and only double what I had in the first version of the PCB. After all the time I've spent on this, I could have just manually wired everything up on a perf board! :P

The custom PCB will be very helpful, though, since it will take care of most of the trace routing and the position of everything. Plus it's been a lot of fun learning how to use Eagle.
 
Back
Top