What's new

invzim

Champion
Joined
Apr 9, 2016
Messages
731
Reaction score
1,404
Location
Oslo, Norway
The work has begun :)

Keyboard output with MAME mapping is a no-brainer and default, I always strive for things to 'just work' for 'most cases'. There will be no XBOX360/One, PS4 support as I assume official licenses are out of reach and I'm not in the possession of the crypto stuff Brooks have - I actually have no idea how they pulled it off.

What I'm aiming for with this one is a single firmware that presents itself to the computer as:
  • A Capable keyboard (enough simultaneous button presses for fighting games etc)
  • A Mouse (I got a dynamic golf panel and would very much like to play marble madness on it)
  • Two Joypads

The idea is to have an .ini file on micro-sd and use the OLED/buttons to toggle/set configuration - i.e. to switch from keyboard to joypad without having to re-flash the firmware.

I've gotten some input on making it 'xinput', which I frankly don't completely understand as x-input is an old windows API, these requests also mention the xbox 360 controller and steam..?

Is the challenge at hand to make the JVS-PAC2 work 'out-of-the-box' with steam titles?
 

xodaraP

Enlightened
Joined
Sep 21, 2016
Messages
4,399
Reaction score
3,013
Location
Gold Coast, Australia
XInput is used when people have controllers that aren't officially supported by Windows (unsigned/outdated drivers)'to make a generic controller compatible with Windows/Steam titles.

It turns any controller into a DirectInput compatible controller basically, which means that it gets picked up as an Xbox 360 controller.

I imagine what people are asking is can you support XInput for this functionality, but from memory the JVS-PAC is already supported by DirectInput? Maybe not since you're using it as a HID rather than a controller.
 

randomdoohickey

Student
Joined
Aug 28, 2018
Messages
70
Reaction score
31
Location
Valley of the Sun
DirectInput actually has massive issues in modern versions of Windows, which is why Playstation controllers need custom software like the latest Steam client updates to actually be useful. The "just work" factor requires xinput for modern versions of Windows and it's implemented by all kinds of unlicensed stuff.
 

xodaraP

Enlightened
Joined
Sep 21, 2016
Messages
4,399
Reaction score
3,013
Location
Gold Coast, Australia
DirectInput isn't the issue, legacy devices are. XInput is great though because it lets you continue using them.

It's the Windows equivalent of the Brook Universal board I installed in my fight stick to allow it to work on PS4 :)
 

skate323k137

Grand Master
Joined
Jul 23, 2015
Messages
1,306
Reaction score
871
Location
Michigan
Having used the 1st, the "unsupported" keymap that avoided function keys was what allowed me to use it for things like X2 games.

I did love the default mame keymap as well as the option for a "windows friendly" keymap.

Honestly as long as it works as well as the 1st I'll be happy; improvements are a bonus. I'll be happy to have them available again!
 

randomdoohickey

Student
Joined
Aug 28, 2018
Messages
70
Reaction score
31
Location
Valley of the Sun
Supposedly you can emulate the original 360/One controllers in every way but the protection and every OS in the land won't care, including Windows. Pretty sure both the 360 and One controller USB HIDs are plug-n-play on every non-Apple OS at this point, but feel free to correct me on this one. The de faco 360 controller to emulate would be the official wired 360 controller that was commonly sold with the "Xbox 360 Controller for Windows" branding on the box, but may be better to target One emulation at this point.

You'll also want to make a switch between Microsoft's official Xbox 360 arcade button layout, which is the SNK MVS/AES ABCD arc with extra buttons (what a lot of arcade ports expect and works great in MAME), and the PS3/PS4/One layout you see on all modern fight sticks. Worth testing how much stuff changes the button layout exceptions when you're emulating a One controller instead of a 360 controller.
 
Last edited:

invzim

Champion
Joined
Apr 9, 2016
Messages
731
Reaction score
1,404
Location
Oslo, Norway
Allright - thanks for input all!

The terminology surrounding "xusb/xinput/directinput" still makes little sense to me as it seems it's all USB HID beneath it all regardless. I'll aim for similarity with the 360 controller for PC first which should take care of most 'modernn' PC based software - I guess this is more important than PS3 console support these days. I'm sure I'll understand more as I dig through it. This should in theory open up for racing cabs and stuff like that too as as this version will do analog.
 

Brettster

Enthusiast
Joined
Nov 20, 2016
Messages
192
Reaction score
132
Location
Leeds, UK
Excellent news :)
I use a steam PC in my Vewlix all the time so having this would be ideal, currently I'm using 2x PS360+'s which sometimes get swapped over so P1 is P2 :(
it also means I need to unplug a load of cables when I want to to use JVS stuff in the cab too.

So I guess this would allow me to play Mame etc along with games in Steam and only move the USB cable when I want to JVS!! awesome
 

xodaraP

Enlightened
Joined
Sep 21, 2016
Messages
4,399
Reaction score
3,013
Location
Gold Coast, Australia
Allright - thanks for input all!

The terminology surrounding "xusb/xinput/directinput" still makes little sense to me as it seems it's all USB HID beneath it all regardless. I'll aim for similarity with the 360 controller for PC first which should take care of most 'modernn' PC based software - I guess this is more important than PS3 console support these days. I'm sure I'll understand more as I dig through it. This should in theory open up for racing cabs and stuff like that too as as this version will do analog.
It is all USB HID at the base of it, but the APIs determine which buttons are mapped where and give a standard that games can adhere to since not all controllers are created equal
 

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
9,649
Reaction score
8,812
Location
NH, USA
This would be super helpful for making a "steam box" that can run in a JVS cab.

I've noticed a number of games (such as say Mortal Kombat X) really don't like to work well with anything but "Xbox 360" controllers, so having that feature would be super useful.
 

SNK-NEO-GEO

Enlightened
Joined
Jul 21, 2015
Messages
3,173
Reaction score
1,795
Location
Virginia
Excellent news :)
I use a steam PC in my Vewlix all the time so having this would be ideal, currently I'm using 2x PS360+'s which sometimes get swapped over so P1 is P2 :(
it also means I need to unplug a load of cables when I want to to use JVS stuff in the cab too.

So I guess this would allow me to play Mame etc along with games in Steam and only move the USB cable when I want to JVS!! awesome
this is my use case as well.

Most Steam games work out of the box with an Xbox 360 controller as oppose to a PS3 or other controllers.
 

ReplicaX

Professional
Joined
Jul 21, 2015
Messages
388
Reaction score
443
Location
Boston, MA
Allright - thanks for input all!

The terminology surrounding "xusb/xinput/directinput" still makes little sense to me as it seems it's all USB HID beneath it all regardless. I'll aim for similarity with the 360 controller for PC first which should take care of most 'modernn' PC based software - I guess this is more important than PS3 console support these days. I'm sure I'll understand more as I dig through it. This should in theory open up for racing cabs and stuff like that too as as this version will do analog.
Direct Input is considered legacy, so for example with a 360 controller I know: No Rumble and both triggers are one button or some cases another Axis.

XInput is still the standard even today and replaced DInput.

I think most ppl are looking for full I/O compatibility to map everything (1P, 2P, Kicks, Service, Test, Coins) on HID like the original JVS-PAC and having a XInput config for standards like Steam, Analog controls, and other Windows Titles.
 

Dreygor

Grand Master
Joined
Dec 18, 2016
Messages
944
Reaction score
647
Location
Midway, GA USA
Yeah this is real struggle. I have a control panel hooked up to a PC using an IPAC2. However what I am finding is that some emulators will not let you re-map some controls for keyboards. They have hard coded key functions that overlap with the default IPAC2/MAME key set ups.

I actually ended up using a program called Virtual controller to get around some of it and it can be difficult in it's own right.

https://sourceforge.net/projects/vjoy-controller/

Basically what it does it loads the drivers for an xbox controller and lets you bind keyboard keys to them to forward to an emulator.

Also I am want to to bind two keys to a single action. I want to bind player one button one (LCTRL) and player one start button (NUMBER 1) for exit which is escape (ESC) in most cases. This would make it function like my TTX2 set up for exiting games.
 

twistedsymphony

Enlightened
Staff member
Immortal
Joined
Jul 21, 2015
Messages
9,649
Reaction score
8,812
Location
NH, USA
some emulators will not let you re-map some controls for keyboards. They have hard coded key functions that overlap with the default IPAC2/MAME key set ups.
this is the biggest problem to using the keyboard as an input device.
generally no game or emulator will hard map anything to a joystick, but they have no problems doing that with a keyboard.

the other issue with keyboard as input is a lot of PC games seem to only allow 1 player to be mapped to the keyboard, so you can't support 2 players with keyboard input.
 

stickcross

Student
Joined
Jan 18, 2016
Messages
42
Reaction score
36
I sent you an email through your site, but I prefer to write you here because there is no restriction on the number of words and can also discuss with everyone.

I have the first version which is a very good product, the only thing I missed the most is to change the keymap because the key "ctrl" is problematic.

Personally I use it as a keyboard version and for steam games that require the Xinput I use X360CE that turns the keyboard into a 360 controller.

I use it on two New Net City linked with a J-Pac + JVStoJamma (riverservice) in the slave.
The J-pac has the opportunity through a command line to send a different configuration to fly.
I use this function with hyperspin which when I run a game 4 Players, hyperspin sends the command to the J-Pac and configures it in 3 and 4 Players and when it's a game 2 players the slave is configured in player 2 for the versus fighting for example.

As you have implemented your Jammafier work in the JVSPAC2 (link of 2 JVS nodes), what would be interesting, it is to be able to have the 4 players and to be able to configure it on the fly like the J-Pac.

This would allow me to have a wiring much simpler and less expensive.
 

Dreygor

Grand Master
Joined
Dec 18, 2016
Messages
944
Reaction score
647
Location
Midway, GA USA
Here is an example of the way I try to set my control panels up. I have seen people do the triggers and bumpers differently though.



There are a few things I learned. It's best to put the EXIT button somewhere other than the top or the front of the control panel. It seemed like it "accidently" got hit allot. I hid all the other buttons inside of the control panel because once it's set up you shouldnt really need them. I opted not to install a button for PAUSE at all. I also rebound enter to F2. While tab will bring up the MAME menu you sometimes need F2 to bring up the actual PCB service menu.

As mentioned earlier, would really like to figure out how to bind two keys to trigger ESC. Ideally 1SW1 and P1 START. Then do away with the exit/escape button all together.

Here's a few diagrams I use while I am setting up control panels. May help someone else or something.







 

randomdoohickey

Student
Joined
Aug 28, 2018
Messages
70
Reaction score
31
Location
Valley of the Sun
it seems it's all USB HID beneath it all regardless
Indeed that appears to be the case. Making sure you put in the right USB device ID group to make various OSs think it's xinput compliant is the most important.

I've noticed a number of games (such as say Mortal Kombat X) really don't like to work well with anything but "Xbox 360" controllers, so having that feature would be super useful.
This is where things get interesting. There's a decent number of high-profile titles out there that aren't just xinput/dinput, but will ask Windows for the controller's USB ID directly. If the game gets back anything other a limited list of known-good Microsoft/Sony/Nintendo OEM USB IDs it won't play nice and enable native gamepad support.

The best option is likely to have separate options for emulating either a 360 or One controller ID and have an independent option for selecting either the 360 button layout or the One button layout. Default should arguably be 360 emulation with a 360 button layout.

Given the use case of the JVS-PAC, I wouldn't bother with either Sony or Nintendo controller emulation. That and the PS4 uses Bluetooth for controller authentication anyways, even in wired mode (which is why the 8 minute controller timeout disconnect is a thing and Brook has to push firmware updates to their PS4 boards after Sony tweaks the controller authentication).
 
Last edited:
Top