cps2.cpp: Added TOURNAMENT board communication simulation. #9699
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Thanks to Darksoft for tracing the board, and @originalgrego for producing a proof of concept implementation.
To use this, enable communication in the Machine Configuration menu for four instances of
ssf2tb
or a clone, and then daisy-chain them using the variouscomm_*
options. Thecomm_remotehost
option for the head of the daisy chain must be empty. For example, to run them all on one machine:The TOURNAMENT board apparently can generate interrupts, but the game doesn’t seem to mind if it doesn’t – it still polls the USART. This is all simulated at a very high level due to the way MAME only synchronises with the wall clock once per frame – on a typical PC, the main thread is sleeping over 90% of the time when running a CPS2 game. Trying to do it more realistically would require major changes to MAME’s event loop.
The games will lose sync pretty quickly if they aren’t running at the same speed (e.g. if you try to fast-forward one of them). I’ve had it lose sync once with normal play, but it seems to work fairly well most of the time.