Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06051 DIP/Input Minor Always Oct 25, 2015, 15:47 Oct 26, 2015, 22:11
Tester PhasecoreX View Status Public Platform MESS (Official Binary)
Assigned To Resolution Open OS Windows Vista/7/8 (64-bit)
Status [?] Acknowledged Driver atari400.cpp
Version 0.166 Fixed in Version Build 64-bit
Summary MESS-specific 06051: a800: Atari 800 Ctrlr Definition Does Not Work
Description I am currently writing a ctrlr config file that supports up to 4 XBox 360 controllers. I was able to set up UI navigation, arcade controls, and snes controls (as the defaults are messed up for the 4 buttons and 2 shoulders). What I can't get working is the Atari 800.

The ctrlr file loads up properly, and all of my UI controls are present. However, none of the <system name="a800"> inputs are loaded (except 1, more on that later). I have gone into the in-emulation config (pressing scroll lock to enable UI, then tab) and modified all of the machine inputs to my liking. If I leave the mappings in the newly generated a800.cfg file, the inputs are loaded correctly every time. However once I move all of my new input mappings into my ctrlr file (making sure that the a800.cfg file is cleared out when done), it does not load the mapped inputs. There is one key that is loaded, and it shows up in the tab machine config as a new key called "Unnamed Key", not where I assigned it.

Here are some excerpts from the generated config file. Top one is supposed to be the start button, the middle is supposed to be player 1 joystick right, the bottom is supposed to be player 1 button:

<port tag=":console" type="KEYBOARD" mask="1" defvalue="1">
    <newseq type="standard">
        KEYCODE_F1 OR JOYCODE_1_BUTTON8
    </newseq>
</port>
<port tag=":djoy_0_1" type="P1_JOYSTICK_RIGHT" mask="8" defvalue="8">
    <newseq type="standard">
        JOYCODE_1_XAXIS_RIGHT_SWITCH
    </newseq>
</port>
<port tag=":djoy_b" type="P1_BUTTON2" mask="16" defvalue="16">
    <newseq type="standard">
        JOYCODE_1_BUTTON2
    </newseq>
</port>

The one that maps to "Unnamed Key" is this one, which I originally was trying to map to the Atari's CONS.2: OPTION button:

<port tag=":console" type="KEYBOARD" mask="4" defvalue="4">
    <newseq type="standard">
        KEYCODE_F3 OR JOYCODE_1_BUTTON10
    </newseq>
</port>

So, generating the inputs will work fine (when MAME reads them from the a800.cfg), until you move them (unchanged) into the ctrlr file. I have even tried having only the a800 system in the ctrlr file (no <system name="default">), and it still does not work. So, MAME is reading and writing to the cfg file properly, but not reading from the ctrlr file properly (at least with the Atari 800, maybe with others too).
Steps To Reproduce 1. Have a800 and a couple of controllers (I am using 4 XBox 360 controllers)
2. Fire up a800, with a floppy of your choice
3. Press Scroll Lock, then Tab, then go to Input (this Machine)
4. Change some inputs to use buttons on the controller. For example, I have CONS.1: Select being the back button on the controller, CONS.2: Option being the right stick in button, and CONS.0: Start being the start button. The default directional controls for all four players are mapped to player 1's joystick by default (why?), so if you want multiple players to work, you need to manually configure all players joysticks. Hence, the ctrlr file.
5. Exit out of MAME, and launch it again. Notice that the controller mappings are loaded correctly (and are grayed out, since we are loading from the cfg/a800.cfg file).
6. Exit again, and open MAMEs cfg/a800.cfg file.
7. Move the entire <system name="a800"> section into MAMEs ctrlr/xbox.cfg (or whatever default controller file you are using). Make sure to remove the <image_directories> section, as ctrlr files do not use this.
8. Fire up MAME again, using your default controller file. Notice how default mappings are loaded correctly, but a800 specific mappings are not. If you modified the CONS.2: Option key, you may notice an "Unnamed Key" with your specified bindings.
Additional Information Attached screenshot shows the mystery "Unnamed Key", and an arrow pointing to where the inputs "Kbd F3 or Joy 1 Button 9" should have been assigned.
Flags
Regression Version
Affected Sets / Systems a800
Attached Files
png file icon Capture.PNG (864,982 bytes) Oct 25, 2015, 15:47 Uploaded by PhasecoreX
Relationships
There are no relationsihp linked to this issue.
Notes
2
User avatar
No.12087
Tafoid
Administrator
Oct 25, 2015, 21:27
I made an attempt to try to fix the unnamed key instance which may fix your error. Current GIT sources should have this new code if you can try it
User avatar
No.12089
PhasecoreX
Tester
Oct 26, 2015, 22:11
This did fix the unnamed key issue, but does not fix the a800 controls mapping issue.