Need some help with getting basic mame2003-plus control settings right for my config.
-
Hey folks - I've done a lot of reading of past threads regarding Mame2003+ and Retroarch's control scheme, but some of the options that are core specific are not clear to me, and I see some strange things between the general retroarch controls page and what I then see in the controls page under the core's options in the quick menu, so I'm still having trouble getting things working right with my setup. Let me try to be as specific as I can about the general setup and I'd love to hear suggestions, or what further info I can provide that would help narrow things down.
The control setup is as follows:
- Ultimarc Ultrastik 360 is directly connected via USB. Usually shows up as js1. I have added an Emulationstation script for game-start that checks what ROM is being launched and preloads one of various Ultrastik maps depending on what the original controls for the ROM were, e.g. 4-way, 8-way, pure analog, 2-way horizontal or vertical, etc.
- IPAC 2 is also connected and has buttons and an Ultimarc spinner, but no analog stick connected. The IPAC2 exposes a JS0 in addition to the mouse and keyboard events, but of course there's nothing attached there.
- There is a standard keyboard available but my intention is not to use it once I get all of the arcade controls working reliably.
Confusing thing #1: In the Retroarch user controls mapping pages, I have altered the original default setting such that the Ultrastik is used for "User 1" and the IPAC is "User 2", rather than the opposite which is what it came up with originally. However, when I go into the MAME2003+ controls settings page with any ROM loaded, it always still lists User #1 as the IPAC and User #2 as the Ultrastik. Shouldn't it follow suit?
I'm also a little confused as to the best way to deal with the Ultrastik such that it acts as a normal analog stick for the ROMs that take advantage of that, but obviously it needs to be "digital" for the ROMs that expect 4 way/8 way/etc. When I used to use ADVMAME, the Ultrastik internal maps did a great job of handling those situations without physical restrictors, but is it better to let MAME2003+ deal with this instead and keep the Ultrastik always in pure analog mode, or what? I don't fully understand what the "analog" vs. "digital" setting really means in terms of what it's doing under the covers in the core.
On a related note, I'm truly stuck trying to find the right combo of settings for Qbert. It looks like Mame2003+ wants to take a digital input for u/d/l/r and map it to ul/ur/dl/dr, but again this is a situation that the Ultrastik maps can handle really well by allowing an arbitrary directional output for any given physical position of the stick, but I haven't been able yet to figure out the right combination to make the stick and the Mame settings agree with each other to get the right motion consistently for the stick position.
Also, a concise description of exactly -which- Retroarch/Mame config files it is safe to nuke if I want to set things back to post-installation Retropie defaults would be appreciated, they seem to be spread around a bit depending on if they're core specific/rom specific/etc. The hierarchy (and number) of retroarch configs is still a source of a little bit of wariness.
Any hints here would of course be greatly appreciated. Thank you!
-
@andrewsi simple terms use mame ui to set your controllers up input->general is the global config file.
The retroarch input intergration into mame on every version out is simply not up to a usable standard as far as using retroarch remapping because mame has its own internal mapping already.
The difference between digital and analog is simple its setting the input general to digital hat or analog for the left right up down and analog controls. This setting is there for people that dont understand how to set mame controls up in mame itself.
Let me give you a quick setup guide.
options->legacy mappint(restart) (turn this on enables mames gui settings screen)
options-> input interface -> set this to simutaneous. (use keyboard and mouse)now load up smash tv its a dual joystick game
press your tab key then goto input->this game
now got to your quick menu and change analog and digital and you will see your default options change on that selection on the controls screen. All this is doing is setting a global default (input this game) for analog or digital controllers. You will see the controls update when you do this on that screen.
I dont really want to get into this too much on how it all works but in input this game select goto p1 left/up and set it to anything you like youll see it highlighted white because its not using defaults anymore. Now even when you change your analog/digital global settings that setting wont change.
The reason im telling you this is because retroarch only follows global control settings and things end up a mess and to give you a little insight into the issue and why its more wise to use the mame gui to set this all up.
-
@grant2258 Thanks for the insights. I did make some progress on my own with this yesterday, but your suggestions are helpful.
-
I was wondering if you wouldn't mind sharing how you solved this problem. I’m having a very similar problem. My setup is similar. IPac, Ultimate IO, Ultrastik 360 and a Servostik. I can’t seem to locate how to get analog controls working for Sinistar.
-
@citaria Basically, I gave up on using the libretro emulators for Arcade and went back to Advmame 3.9, which is a far simpler and more consistent means of getting controls set up how you want. The single advmame.rc file lets you override individual settings and controls however you need to.
It’s not perfect, it doesn’t seem that it’s still under active maintenance/development and there are a few outstanding quirks, particularly on the Pi4. Leaving SMT on is pretty a much a requirement to get sufficient performance, but there’s a bug that keeps any in-game config changes from being saved properly at exit because of a crash, so you have to change the SMT setting in the file to off, launch and make changes (or author them manually), then turn it back on. This is a bit of a headache during setup, but the in-game experience is pretty reasonable and all of the controls can be made to work as you want them to!
-
@andrewsi FYI advmame is under active development, they just haven't had a numbered release for quite a while.
it might be quite nice to have the rolling master version as an experimental package in retropie, as it looks like there have been many fixes.
-
@dankcushions Thanks for the pointer. I've switched over to building from the current master branch rather than taking the retropie prebuilt binaries. Unfortunately, it doesn't seem to fix the crash-on-exit problem when SMP is enabled, and performance is still jusssst-about-acceptable on the Pi4. It's good enough, but It's really a shame that there's this conflict between emulationstation and the other emus that seem to require the DRM/KMS driver on the Pi4, whereas Advmame gets SO much better performance when that's disabled because it can use the real frame buffer in that case.
-
Thanks for the response @andrewsi
I have been seriously considering that option as well. I hadn’t done that because I haven’t been able to get RGBCommander to property setup the analog map for the u360 controller.
Looks like I either need to solve one of those two problems! Heh. Getting analog controls working with Sinistar has been extremely frustrating with Retroarch, Mame2003 plus.
-
@andrewsi I have a few questions if you don’t mind. I’ve all but given up on Retroarch. I can’t seem to get my Ultrastik to work in analog mode on Sinistar.
My questions are.. are you using RGBCommander? You mention an emulation station script to configure the Ultrastik 360s maps. If it isn’t RGBCommander what script did you use? Also, if it was RGBCommander how did you configure it to get advmame to set the Ultrastik 360 to analog mode?
Apologies for so many questions!
-
@citaria I’ve never looked at RGBcommander. I wrote my own shell script that uses EmulationStation’s hooks to call a script when runcommand.sh gets launched. (See the docs.). That script compares the romname to the names of the ROMs I use, and depending which it is, it calls ultrastikcmd to program the correct map to the stick, analog in the case of Sinistar.
Ultrastikcmd is something I forked from an earlier GitHub project. It uses some old components that need to be compiled first but I’ve mashed everything into the same repo. See https://GitHub.com/andrewsil1/ultrastikcmd
-
Ah, I see. Thank you for the info. I will give it a try!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.