arcadegenius.yo1.dog
Warning: This tool is still in Alpha stage.For a while I have had the idea for a tool to help people quickly figure out which games would be supported at what level on various configurations of MAME cabinets. This includes both controls and video.
Ideally the tool would be able to answer these kinds of questions:
- If I build a cabinet with 2x 8-way joysticks, 6 buttons each, and a horizontal NTSC CRT TV, which of my favorite games will be supported by this setup?
- What if I used a 31kHz PC monitor instead?
- Do I really need a spinner?
It would tell you that Metal Slug would play great, Elevator Action would be playable but suffer from the lack of a 4 way joystick, Missile Command would be unplayable due to the lack of a trackball, and Pacman would look terrible due to it being a vertical game on a horizontal 15khz CRT (and would also suffer from the lack of a 4 way joystick).
Of course, there are a lot of opinions and words like "playable", "looks terrible", etc. are very subjective. My idea was for the tool to point out potential issues and start with a default set of "opinions" of how important each of those issues are. But, those opinions would be editable by the user. For example, the user could change the opinions such that even if fractional scaling of the video would be required, the video looks "good" not "bad". Or that an 8-way joystick is a "good" not "bad" control for 4-way games.
Video CompatibilityI tackled what I thought would be the hardest part of this first: how to determine video compatibility. I realized this problem was already solved by people like Calamity and the GroovyMAME project. You give GroovyMAME your monitor specs and a ROM name and it determines the best modeline that can be used. It even tells you what types of compromises had to be made (fractional scaling, uneven stretching, interlacing, doublescan, etc.). So, I ripped the SwitchRes/modeline C++ code right out of GroovyMAME and compiled it to run in WebAssembly in a browser. Using the exact same code as GroovyMAME ensures the tool returns the exact same results as if you were testing it on an actual setup running GroovyMAME
theoretically******
******A bunch of asterisks here because 1. C++ is defiantly not my strong suit so it's possible I messed up something when porting the code and 2. I won't pretend like I understand enough to know if I am accounting for all variables involved.
Controls CompatibilityThe next step is controls. The plan is to leverage the controls.dat project - specifically my
controls.json project. The hope is this will help people determine what controls they really need on their control panel. When they see that only 2 games on their list of 50 favorite games requires a spinner, they may decide not to include one. Or that the 5th and 6th buttons for player 3 and 4 are used by 0 games and can be removed. It could get really intense with a control panel builder/layout tool that encourages/enforces best practices like button layout, control spacing, player spacing, viewing angle, etc. That may be a little too ambitious.
FutureIn the future I can see the tool helping with other aspects of MAME cabinet setups - especially the parts that can be difficult for newbies. For example, it could help you pick your graphics card, OS, etc. for best compatibility with CRT Emudriver. Explain your options for lightguns depending on your setup. Etc. General advice can become much more concise and specific when you know the details of the person's setup.
Known BugsSome of the presets result in errors as the strings are garbled when sent to WebAssembly. Prob some bug in my C++ code.