What's new
wow this is advancing quick!

I will try to get this weekend some evtest values from my wheels :)
 
The way JVS works, is that the master sends out a request for input state, and the IO board replies within about 1ms. I will hook up the logic analyzer later and check how it performs in this regards, but I'm pretty sure the "lag" will be neglbile.
just wanted to make a comment on this, from what I've seen the fastest JVS I/O responds within 3 ~ 4ms. Some of the slower ones are closer to 10ms. I think the standard allows for 10ms.

So basically if your responding within 1ms you are very much in the clear.
 
Nothing like fresh HW - couldn't resist and stopped by a local store and picked up two ridiculously overpriced header connectors, everything works :) Tbh, this is the simplest design I have ever done, but always nice with a successful 'bringup'. Was particulary happy with the micro USB connector - as I wasn't quite sure the type I ordered were 1-1 copies of the brand-name type I used when designing.

A couple of pics, the thing is tiny :)

IMG_0048.JPG


The first run will be 28 boards. What do you guys think of the power connector - it will power the PI for those that are inclined to not use a micro usb into the PI to to that. I'm a bit tempted to either just leave the footprint there, or supply the connector unsoldered and a cable like in the picture - that way I can't really be blamed in case someone blows up their PI..
 

Attachments

  • IMG_0055.JPG
    IMG_0055.JPG
    316.6 KB · Views: 110
Nothing like fresh HW - couldn't resist and stopped by a local store and picked up two ridiculously overpriced header connectors, everything works :) Tbh, this is the simplest design I have ever done, but always nice with a successful 'bringup'. Was particulary happy with the micro USB connector - as I wasn't quite sure the type I ordered were 1-1 copies of the brand-name type I used when designing.

A couple of pics, the thing is tiny :)

IMG_0048.JPG


The first run will be 28 boards. What do you guys think of the power connector - it will power the PI for those that are inclined to not use a micro usb into the PI to to that. I'm a bit tempted to either just leave the footprint there, or supply the connector unsoldered and a cable like in the picture - that way I can't really be blamed in case someone blows up their PI..
first run will be 27 boards now ;) One for me please :)
 
Just waiting you sell these IMUJI "invzm mini USB JVS I/O" ;) to take you one, too !
 
I want one of them please :)
Awesome work. Thank you....
 
It's not ready by a long shot, there is quite a bit of 'user logic' that needs to be put in place for it to work like an appliance. In the meantime, I took a capture using my LA for those that asked about lag:
mini-io response time.png

This is a capture going in/out of the serial transceiver, top is the request from the game, and the second is the response from the raspberry.

sega IO response time.png
This is a capture of a Sega IO (one of the jamma versions) for comparison.

This is from a raspberry Pi 3 - but I expect similar results on the zero. The JVS daemon is writtin in C, runs with real-time priority and accesses the UART directly, and besides, it's not exactly number crunching going on. In any case, well within spec :)
 
Fast PCB turnaround there- looks great!
I'd either leave the power plug off, or switch it to a side entry type (side-entry package won't fit the board silkscreen template you're using quite right, but it should work...
Either way, put me down for two as previously mentioned. (unless you have a limit of one per)
 
Last edited:
It's not ready by a long shot, there is quite a bit of 'user logic' that needs to be put in place for it to work like an appliance. In the meantime, I took a capture using my LA for those that asked about lag:
mini-io response time.png

This is a capture going in/out of the serial transceiver, top is the request from the game, and the second is the response from the raspberry.

sega IO response time.png
This is a capture of a Sega IO (one of the jamma versions) for comparison.

This is from a raspberry Pi 3 - but I expect similar results on the zero. The JVS daemon is writtin in C, runs with real-time priority and accesses the UART directly, and besides, it's not exactly number crunching going on. In any case, well within spec :)
If you get stuck at some point, send me some snapshots or dumps of the LA. I'm sure I can help.

I actually built a small C programm that reads some commands from the COM port (via RS485-232 adapter) and communicates with a JVS I/O.
 
If that's OK, I'll take 2 of them.
Do you want paypal "reservation" or is it too soon?
 
If you get stuck at some point, send me some snapshots or dumps of the LA. I'm sure I can help.
I actually built a small C programm that reads some commands from the COM port (via RS485-232 adapter) and communicates with a JVS I/O.
Thanks for offer, the JVS code is actually pretty much done and stable, it's the USB/peripheral stuff and general linux distro stuff that is complex & messy. Even with the USB input being open source, I wan't it to work out-of-the-box for most people.
An example is my six-axis controller, where the linux input system is completely off when it comes to naming:
Code:
    {
	.name = "Sony PLAYSTATION(R)3 Controller",
	.hasHat = 0,
	.button1 = BTN_DEAD,
	.button2 = 300,
	.button3 = BTN_BASE5,
	.button4 = 302,
	.button5 = 301,
	.button6 = BTN_BASE6,
	.buttonStart = BTN_TOP,
	.buttonCoin = BTN_TRIGGER,
	.buttonTest = BTN_TRIGGER_HAPPY1,
	.up = BTN_TOP2,
	.down = BTN_BASE,
	.left = BTN_BASE2,
	.right = BTN_PINKIE,
	.x = ABS_X,
	.y = ABS_Y,
	.racingGas = ABS_MT_TOUCH_MINOR,
	.racingBrake = ABS_MT_TOUCH_MAJOR
    }
This is btw how the controller definition will look, I may have to add some stuff. The naming is what evtest spits out. Anyone got a a big collection of controllers laying around?
I have two issues atm.
  • How to decide which input is player1 and player2, hot-plugging of devices, and the fact that the 360 wireless receiver presents itself as 4 pads..
  • How to switch game-dependent mappings, i.e. racing vs flight/analog. In retrospect, this should probably have been a physical button and corresponding LED on the pcb..
For player1 vs player 2 (or 3), I may go with physical port. Something like just sorting the physical connection alphabetically:

Code:
/dev/input/event6 - usb-3f980000.usb-1.2/input0 - PS3/USB Cordless Gamepad
/dev/input/event5 - usb-3f980000.usb-1.3/input0 - Sony PLAYSTATION(R)3 Controller
/dev/input/event4 - usb-3f980000.usb-1.4/input0 - Logitech Logitech Cordless RumblePad 2
/dev/input/event3 - usb-3f980000.usb-1.5/input0 - Xbox 360 Wireless Receiver
/dev/input/event2 - usb-3f980000.usb-1.5/input0 - Xbox 360 Wireless Receiver
/dev/input/event1 - usb-3f980000.usb-1.5/input0 - Xbox 360 Wireless Receiver
/dev/input/event0 - usb-3f980000.usb-1.5/input0 - Xbox 360 Wireless Receiver
 
Things are progressing nicely, the event API is working well (unlike the joystick API). The USB input side of things is what's taking time and is complex.

I assume, most people will use this thing with 360 pads or similar controllers - maybe a few fighting aficionados will hook up arcade style custom stuff. I've ditched to idea of using xboxdrv, as it's more complex to set up than simply doing the mapping directly.

General Analog and Racing is totally incompatible, up/down=left/right and crazy taxi which is the only racing title I've tried uses digital up/down for forward/reverse.

A couple of questions:
are there any multiplayer games (except shooters), that have inputs for multiple players, or is it safe to map analog0,1,2,3 to both sticks on a 360 controller?
Details on controls for ANY racing games are most welcome.
About switching between racing/analog mode - current thinking is to push and hold left stick down for 5 seconds, this will switch to racing mode until reboot.

Still waiting for evtest on racing wheels..
 
An important and basic question...
What do you guys mostly want this for:
  • consolization/bench for normal games
  • Racing
  • Exotic titles you can't play on your normal cab, i.e. odd controllers etc
  • Hacking/Playing around with JVS
 
What do you guys mostly want this for:


consolization/bench for normal games

Racing

Exotic titles you can't play on your normal cab, i.e. odd controllers etc

Hacking/Playing around with JVS
yes
 
General Analog and Racing is totally incompatible, up/down=left/right and crazy taxi which is the only racing title I've tried uses digital up/down for forward/reverse.

A couple of questions:
are there any multiplayer games (except shooters), that have inputs for multiple players, or is it safe to map analog0,1,2,3 to both sticks on a 360 controller?
Details on controls for ANY racing games are most welcome.
About switching between racing/analog mode - current thinking is to push and hold left stick down for 5 seconds, this will switch to racing mode until reboot.

Still waiting for evtest on racing wheels..
All Racing games will use digital input along with the Analog ones, like gear switching, turbo, or events like Jambo Safari.

Most of them will only use AD0 & AD1 and 2 or 3 digital inputs.

Some Naomi games, like zombie revenge, or Virtua Striker on Triforce support Analog joysticks, so AD0 & AD1 will be used for player 1 and AD2 & AD3 for Player 2.

What kind of details do you need for Racing games?

Best regards.
 
Back
Top