What's new
@winteriscoming can you add a USB host ? i have written my idea in a other tread when you have a USB host you can use it to remap a lightgun to the analog signals so you have a lightgun for real Hardware like naomi !
i want to use a Raspberry to make this but the Timings a Horrible will test it with a DUE.


The Ideas on the Raspberry was that you can use it as an multigame loader with on screen menu like

Press p1 Start and P2 Start @ same time Raspberry Switch the VGA signal to the Raspberry loader menu comes on and is controlled by the joysticks or something else when the game loads the use the informations from the Rs232 port of the Dimmboard to look when the game is complete loaded and the raspberry swich back to naomi Hardware.
This is out of scope for my project.

If you want to use USB controllers and light guns, then you might like this project: Mini USB JVS IO board?

At the moment, I'm considering my hardware features to be locked in. I don't want to do to another revision a week after the last one. It's doing what I originally intended for it to do, so I want to finalize the code soon and move on to something else.
 
maybe a short video about it?
You and your video requests! :P

I don't have anything to record at the moment, but here's a work in progress screenshot of the profile GUI:
MEGA JVS PROFILE GUI WIP.png

So far I've got it to where it can successfully read in profiles, populate drop-down boxes with valid values, and populate entries with the current values read from the profile.

What I still need to do is manage saving changes and overall profile management such as being able to manually sort them in a list and add new profiles.
 
Last edited:
I still need to work in an overall profile list manager that will include deleting a profile, but I've got the following working:
-Save Current Profile - Any changes made to the currently selected profile are saved over the current profile.
-Add As New Profile - The currently loaded profile along with any changes are added as a new profile at the end.
-Export Current Profile - The currently loaded profile along with any changes are exported to a file. These can be shared with others for importing into their profiles file without affecting their existing profiles.
-Import Profile - Opens a previously exported profile and appends it to the end of the currently open profiles file.

MEGA JVS PROFILE GUI WIP2.png

I'm also trying to think of a better way other than manual entry to manage steering wheel scaling values. At the moment it would require entering a min and max value without any reference to what the actual min and max are.
 
Last edited:
So far so good with the profile editor.

I now have a separate screen that's an overall profile manager where the list of profiles is displayed. From here a profile can be moved up or down in the list or deleted.

All of that seems to be working well.

None of it looks as nice as I would ultimately have preferred, but the "native" python GUI manager tkinter isn't that intuitive for me, so I'm glad to have gotten it to where it's at least functional. I went ahead and settled on tkinter as it's supposed to come pre-installed with python so hopefully that makes it easier for others to get up and going. Install python3 and this profile application *should* just work.

Simply due to the fact that the last used profile on the MEGA JVS is currently stored in a byte, the max supported number of profiles is 255. If you need anywhere near that many, I feel sorry for you, because you'll be hitting the profile button to change profiles one by one. I may eventually build in some better profile navigation utilizing cabinet controls, but for now that's what it's going to be. At any rate, I built out a file with 255 profiles and successfully navigated and loaded up the last one on the MEGA JVS, so that's working fine.

I'm still contemplating how I want to handle the wheel scaling in the profile editor... I'm thinking I'll have a separate config file for the editor where you'll enter your wheel's actual min and max so that the values can be used as starting point for changes.
 
Epiphany time:

I think I've confirmed that when wired up properly, the Arduino can be powered by the cabinet and plugged into USB. I was reading over some of my original posts and plans in this thread and see mention of having the netboot source (i.e. raspberry pi or other) send some kind of command to the MEGA JVS for profile switching. That should be totally doable with ease!

I'm thinking that I don't want to bother restricting profiles to unique names. At the moment a profile can be copied and have the same name. The only thing that matters to the MEGA JVS is the index location of a profile. I'm already going to limit the number of profiles to 255, so what if the MEGA JVS accepts input over the USB to serial connection in the form of a byte of data that contains the index of the desired profile? Assuming the Arduino can interface with an RPi this way, simple modifications to the python code used in netbooting could result in the RPi sending the appropriate command to the MEGA JVS for automatic profile switching according to the game being booted.

The only thing that would be needed by the end user is to configure something that ties a game to a given profile index. If I boot Crazy Taxi, I tie it to profile index 5 and the code handles the rest.

I don't currently have an RPi netboot setup, but have one on hand I can use for testing.
 
I'm trying to figure out a good stopping point for this MEGA JVS project to where I'm happy with the features and am ready to release it. I think the idea in the previous post might be it. I can keep coming up with various ideas that will keep me wrapped up in coding and testing, but ultimately they will delay things and I am interested in moving on to other projects. That's not to say I wouldn't come back at some point and work in more software features.

Some ideas that are on the chopping block:
-Profile creation mode managed on the MEGA JVS - I think the PC-based editor should be sufficient, and probably more intuitive.
-Edit/create profiles over USB - This doesn't serve much purpose other than a little more convenience. Go pull the SD card and put it back in when done. :)
-More robust information on the display - Currently it shows profile names when swapping profiles and the logo after a timeout. There's potential to show the user more information about the status. It might be nice to have, but not necessary.
-USB-assisted control mapping - This is one I would like to explore eventually. The idea is that you could have the MEGA JVS plugged up over USB and use an app to help in figuring out button mappings without having to reference manuals for every game. You'd go into a game's input test menu and in the PC app you can activate the various inputs to see which ones are which for the game. This could be helpful in a driving cabinet where you don't have all controls wired up, so you have no way of activating an input to see if it's needed for the game. So in the app you activate P1_UP and the MEGA JVS activates this input and you'd see if it triggers anything you need in the test menu. After you figure out a specific input, you can think about which of your cabinet controls you want to map to it. So you could essentially test inputs and map them up with this app and end up with a usable profile for the game.
 
Allowing for potential future software features that use the USB serial connection, I have implemented profile changing over USB that requires a simple 4 byte command, the first 3 bytes being an indicator that the profile index is in the 4th byte. Future serial commands could follow a similar protocol to avoid conflicts, or maybe I will need a better protocol.

I tested sending the command to the MEGA JVS with a simple Python script that should be easy to integrate into any variation of Triforce Tools.

I might leave my testing at that and say it's up to someone else to integrate the functionality into a Netboot solution. I don't want to go down a road where I'm being asked for support on setting up netbooting.

Here's the test script where 'COM22' needs to be changed to the applicable port and the rightmost byte in the packet is the desired profile index. The setting for dsrdtr needs to be True or the Arduino will reset when the serial connection is made, and lose sync with JVS.
Code:
import serial
packet = bytes([0x70,0x72,0x6F,55])
ser=serial.Serial(port='COM22',bytesize=serial.EIGHTBITS,baudrate=115200,parity=serial.PARITY_EVEN,stopbits=serial.STOPBITS_ONE,dsrdtr=True)
ser.write(packet)
ser.close()
exit()
 
I think your just teasing everyone now. great work
Not teasing, just sharing progress. That was the last feature I wanted to implement before calling it "finished". Now I just need to review and clean up the code some.

I still have a little more testing to do, too. I put in an order with Digikey that includes a 60 pin connector housing and pins that I'll use to put together an adapter to plug a 2p 6-button control panel up to the MEGA JVS for testing out fighting and other non-driving games. I want to be pretty confident in its abilities before recommending it for use. So far it's only been tested in driving games which aren't anywhere near the number of digital controls used in other games.
 
-USB-assisted control mapping - This is one I would like to explore eventually. The idea is that you could have the MEGA JVS plugged up over USB and use an app to help in figuring out button mappings without having to reference manuals for every game. You'd go into a game's input test menu and in the PC app you can activate the various inputs to see which ones are which for the game. This could be helpful in a driving cabinet where you don't have all controls wired up, so you have no way of activating an input to see if it's needed for the game. So in the app you activate P1_UP and the MEGA JVS activates this input and you'd see if it triggers anything you need in the test menu. After you figure out a specific input, you can think about which of your cabinet controls you want to map to it. So you could essentially test inputs and map them up with this app and end up with a usable profile for the game.
I wasn't going to implement this, but started playing around with it while I'm waiting for a parts order to come in and found a quick way to put it together. I'm not finished with the profile creation from this specific screen, but I do have it to where each digital switch can be toggled in the UI and the MEGA JVS toggles that switch over JVS.
 
Something just occurred to me - the InitialD games seem to be picky with their IO boards, does your board work with them?
 
Back
Top