New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
midvunit.cpp linking (Cruis'n World, Cruis'n USA) #9958
Comments
|
Please disregard what I said years ago. At the time, I was in quite an angry mood figuring out its network system due to working with a sync related issue when linking these games with LCD monitors. I didn't give any accurate information then because I didn't look through things carefully. I had plans years ago to implement the 'NODEVICE_LAN' flag through a PR but personal problems prevented me from doing so. What we know:
Networking like this is just the tip of the iceberg. |
|
Main issue is that this link was designed around identical CPUs all running in sync, and MAME does a burst of instructions all at once for each CPU. Emulating each machine in one instance works if you can remove the burst and let each CPU step through each instruction. If you can figure out how other emulators implement their network link cables, that might prove useful here. There also might have been one additional piece to the puzzle with a missing hardware interrupt, but would've only had evidence to it ever being used in early Cruis'n USA versions. As far as I could tell it went unused. |
There was a commit around a month ago for UDP multicast support which would allow for 'many to many' communications similar to that of an ethernet hub where everyone receives everything simultaneously. Because V-Unit uses a multicast topology (compared to Sega and Namco using ring topology), this approach would greatly work in its favor. Unfortunately, this commit got reverted due to compatibility problems and a new approach is being in the works right now. When this will get done is yet to be determined. You can view the full story here: #9744 |
|
Which emulator are you thinking of? It's not just a case of figuring out
how they do it, but whether it would be useful.
…On 29/06/2022 01:35, Risugami wrote:
If you can figure out how other emulators implement their network
link cables, that might prove useful here.
Message ID: ***@***.***>
|
|
This isn’t really a network link cable, though. This is just a simple mailbox between the CPUs. You always get these kinds of issues when you have multiple reasonably fast CPUs that communicate with shared state and expect fast synchronisation. Sega 32X is another good example – pretty much every software emulator has timing issues because the software on the two SH2 CPUs communicates using simple semaphores in shared memory. Using a timeslice-based scheduler means the CPUs end up waiting for a lot longer to see the activity from the other side than they would in real life. There are a bunch of ways to get around the issues, none of which are really practical to do in MAME:
|
There is no support for LAN Play on these classics, we should be able to link up to 4 players.
Info I could gather about how the LAN stuff works so far:
http://forum.arcadecontrols.com/index.php?topic=137697.80
https://www.mameworld.info/ubbthreads/showflat.php?Cat=&Number=379199
There are no warnings about LAN Play when starting these games so I'm assuming this is just something that not many people noticed.
The text was updated successfully, but these errors were encountered: