What's new
Nice! What are you using to create your PCBs?
That's not a specific enough question! :D

There's the software side and the hardware side.

It's a pretty complex tool-chain on the software side. I'll admit I'm probably not handling everything as efficiently as possible, but I'm doing what works for me.
1. Design in Eagle and do a few different exports to EPS.
2. Import EPS files into CorelDRAW for slight vector manipulation. Eagle exports lines as lines with a given width. I need them converted to shapes.
3. Import modified EPS into Vectric Aspire to generate tool paths as gcode.
4. Open gcode in Mach3 for cutting.

Eagle apparently has the capacity to output gcode, but I haven't messed with it and really like using Aspire.

On the hardware side I've got a large 4ftx5ft cutting area CNC machine from CNCrouterparts.com. I'm milling the PCB blanks with a v-bit and drilling the holes (via CNC) with a drill bit.

Basically I'm using a giant CNC machine to mill a tiny 100mm x 70mm board.

An alternative would potentially be DIY chemical etching. I've never messed with this and don't like the idea of having drill out all of the holes manually.
 
Nice! What are you using to create your PCBs?
That's not a specific enough question! :D
There's the software side and the hardware side.

It's a pretty complex tool-chain on the software side. I'll admit I'm probably not handling everything as efficiently as possible, but I'm doing what works for me.
1. Design in Eagle and do a few different exports to EPS.
2. Import EPS files into CorelDRAW for slight vector manipulation. Eagle exports lines as lines with a given width. I need them converted to shapes.
3. Import modified EPS into Vectric Aspire to generate tool paths as gcode.
4. Open gcode in Mach3 for cutting.

Eagle apparently has the capacity to output gcode, but I haven't messed with it and really like using Aspire.

On the hardware side I've got a large 4ftx5ft cutting area CNC machine from CNCrouterparts.com. I'm milling the PCB blanks with a v-bit and drilling the holes (via CNC) with a drill bit.

Basically I'm using a giant CNC machine to mill a tiny 100mm x 70mm board.

An alternative would potentially be DIY chemical etching. I've never messed with this and don't like the idea of having drill out all of the holes manually.
haha ya sorry. I have questions on just PCB design more than anything. :)

I mean to say:

1. What CNC machine do you have and you've answered it. so thank you!
2. What software are you using to design the etch? answered that too!
3. That is awesome keep up the good work! Not a question, just very cool!
 
Here's my CNC machine drilling holes:
CNC drilling.png
 
That is awesome! Ya doing that with chemical etching would not be fun.
The nice thing about the CNC machine is that once it's going it can be relatively left unattended. I spend too much time watching it, though, instead of getting back to work like I should be doing...
 
That is awesome! Ya doing that with chemical etching would not be fun.
The nice thing about the CNC machine is that once it's going it can be relatively left unattended. I spend too much time watching it, though, instead of getting back to work like I should be doing...
Believe me, I'd probably do the same thing :) But I digress.

I'm missing a few components but I am setting up a measly breadboard for now.

So with this project you have going, I got to wondering about how you would go about implementing the analog controls. But I think an earlier post answered this question too. I will re-read that post and provide a more relevant question to contribute to this thread.
 
I was working on assembling a board yesterday and testing as I went. I confirmed I've got the JVS port, RS-485 adapter and Sense line components all working correctly. I went to work on it some more to install pins for accepting the cabinet's control connectors and ripped some pins out while removing the board from the Arduino Mega... :(

The other issue is that for years now I've been torturing myself on soldering projects by using an iron with the most gigantic tip ever. It never occurs to me to order an iron more appropriate for precision work. In fact, I know I've got a couple smaller tipped irons around somewhere, but can't ever find them. :S

I also noticed while assembling the last board that I had a couple of issues that need to be fixed in the PCB design.

At any rate, I hope to get one assembled today and confirm operation before diving into the code changes to accommodate configurations.
 
if you solder more than a couple of times a year you need a good soldering station with temp control and swap-able tips.
 
I scored an older second hand Metcal MX-500, practically unused, complete with talon tweezers - HIGHLY recommended. Metcals patents have expired, and some ex-employees now make knockoffs under the name Thermaltronics which is a bit less expensive.
 
I'm working through a few kinks in the code and a couple slight board issues, but I've confirmed my board works with the connectors from the cabinet, including all digital inputs (P1 and P2 switches, 2 coin switches, Test switch), analog inputs, and lamp outputs.

I have no idea why I had the analog connector down as a 40-pin, though... It's only 26! At any rate, I fortunately had the pins assigned correctly so that it can still plug in and work with my board.

The other issue I'm seeing is that while my View Change lamp is working as it should, driven by MOSFET sinking it to ground with an output from the Arduino, the Start lamp is locked on regardless of the assigned pin's state. I'll have to check that one out. It could be a hardware or a software issue.

Oh, and something I forgot to comment on: I received by .85mm drill bits yesterday and they are PERFECT for this application. The pins can be pressed into the holes and friction holds them firm in place while I solder. It's way better than when I had holes that were too large and had to manage keeping pins/components held in while soldering. I'm not sure what size the larger drill bit is, but now I know the holes were way too big before.

EDIT: The Start Lamp issue is definitely a hardware issue... :whistling:
JVS board - missing pin.png
 
Last edited:
Lamps are good to go from a hardware perspective.

I may have had an issue with the MOSFET driving Start as diode tests were looking off on it. I replaced it, but also realized I wasn't correctly assigning the output pin on the Arduino as an output.

Start lamp.png
View change.png
 
I'm able to play OR2SP successfully!

I don't know how to take an effective video, since it would just look like me playing the game, without really being apparent that I'm on a custom I/O board.

Here's a pic of it installed.
Installed board.png

One thing I haven't worked out is mounting. The Arduino Mega has mounting holes, so it will probably just be a matter of removing my shield board, utilizing those and reinstalling the shield. That would be the easiest route.
 
Maybe this shows how little exposure I've had to JVS cabinets, but I noticed a behavior that surprised me. I mapped the shifter to P1 Up and Down and View change as P1 Button 1. I noticed in the test menu that I could navigate the menu with those buttons!

Why didn't they map the controls for OR2SP/ID3 this way!? It would be so much easier to navigate the menus without having to crouch down with a hand in the coin door!
 
With a simple control remapping, I can now play Crazy Taxi: High Roller!

This is game is so different when you can actually have access to all the controls. There's a JUMP button that I knew was there, but never got to use. Now it's mapped to my cabinet's View Change button. It totally changes up the gameplay. I have never played in a dedicated CTHR before, so this is my first time being able to play it the way it's meant, which is pretty cool.

What I need to work on now is how to manage mapping changes on the fly.

There are a few routes I could take:
1. Hard code all mappings and have a dedicated button to cycle between profiles.
2. Hard code all mappings and send a command to the Mega via USB for which game to change to.
3. Send mappings over USB.

Option 1 would allow for my I/O to be used without a computer. In a scenario where one computer manages netbooting multiple cabinets, that might be preferable so you don't have to have each I/O plugged into the netboot source. Not to mention, the netboot computer can potentially be located far away from the cabinet. The only way I would know how to display the name is if the system is reset and the I/O board name is updated to include the mapping profile. I don't think I can send an updated name without a command from the motherboard. An alphanumeric LCD or something could be incorporated. You could also just boot up a game, go to the game specific input test and change mappings until the controls align.

Option 2 could work along with Option 1. If you happen to be able to plug up, you can more quickly assign the game profile.

Option 3 would be nice, but all mappings would have to be managed outside of the I/O and some kind of protocol would need to be established for sending/receiving the mappings. It wouldn't be too hard to do, though.
 
Just to log a couple of things that need to change in the board design:
1. 12V header needs to be 5 pins, not 4.
2. Analog header needs to be 26 pins, not 40. Unfortunately the extra space made available by this reduction isn't helpful because nothing was having to be routed around this connector.
3. Consider reverse polarity protection at 5v and 12v headers.
4. Consider onboard button (with expansion header for remote button) for swapping mapping profiles. A remote button could be mounted into the panel behind the coin door.

On a side note, I confirmed the board can operate successfully with 12v going into the Vin pin on the Arduino. The board did warm up, presumably at the regulator, but hopefully it stays within operating spec. This allows the board to be used without a computer plugged up to it via USB, but allows for optional simultaneous USB usage.
 
With a simple control remapping, I can now play Crazy Taxi: High Roller!

This is game is so different when you can actually have access to all the controls. There's a JUMP button that I knew was there, but never got to use. Now it's mapped to my cabinet's View Change button. It totally changes up the gameplay. I have never played in a dedicated CTHR before, so this is my first time being able to play it the way it's meant, which is pretty cool.

What I need to work on now is how to manage mapping changes on the fly.

There are a few routes I could take:
1. Hard code all mappings and have a dedicated button to cycle between profiles.
2. Hard code all mappings and send a command to the Mega via USB for which game to change to.
3. Send mappings over USB.

Option 1 would allow for my I/O to be used without a computer. In a scenario where one computer manages netbooting multiple cabinets, that might be preferable so you don't have to have each I/O plugged into the netboot source. Not to mention, the netboot computer can potentially be located far away from the cabinet. The only way I would know how to display the name is if the system is reset and the I/O board name is updated to include the mapping profile. I don't think I can send an updated name without a command from the motherboard. An alphanumeric LCD or something could be incorporated. You could also just boot up a game, go to the game specific input test and change mappings until the controls align.

Option 2 could work along with Option 1. If you happen to be able to plug up, you can more quickly assign the game profile.

Option 3 would be nice, but all mappings would have to be managed outside of the I/O and some kind of protocol would need to be established for sending/receiving the mappings. It wouldn't be too hard to do, though.
nicr progress. Definitely option#1 should be the best. There are not so many different configurations out there.
 
Maybe this shows how little exposure I've had to JVS cabinets, but I noticed a behavior that surprised me. I mapped the shifter to P1 Up and Down and View change as P1 Button 1. I noticed in the test menu that I could navigate the menu with those buttons!

Why didn't they map the controls for OR2SP/ID3 this way!? It would be so much easier to navigate the menus without having to crouch down with a hand in the coin door!
My creaking knee's agree with you, Always wondered why you couldn't navigate the menus using the existing keys as well as the normal test/service buttons.

Your work is very impressive, keep it up for us mere mortals to gasp in amazement!
 
Back
Top