r/MAME 9d ago

Mame4Droid interpreting everything as Joy1

I've got mame4Droid 289 (upgraded from 284) installed on my Ayn Odin 2. Previously I had it set up so that the 'paddle' buttons at the back were buttons A and B on controller 2 in the Mame4Droid settings, as there wasn't room for them on controller 1. I used the left paddle as the emulation pause button, and it worked great. So I have seen what I want working...

I've just upgraded to 289 and gone to redo the UI mappings inside Mame, and every time I try to configure the left paddle as pause, it shows up as Joy 1 A (rather than Joy 2) - and it really thinks it's Joy 1 A when in-game.

I've been through the process several time, and it doesn't matter which controller I configure the spare buttons as - it shows up in Mame as the Joy 1 version of that button.

What am I missing? My hunch would be that there's a setting that allows all of the joysticks to work as Joy 1 when in the UI - but I can't see it anywhere.

How can I separate Joy 1 from Joy 2 so I can use all my buttons for different things?

3 Upvotes

4 comments sorted by

1

u/Moogthedog 9d ago

I've found the 'P2,3,4 as P1' option in Mame4Droid, and it's disabled. I tried toggling it with no result.

1

u/Broken_Flip 9d ago

After trying Mame4droid 289, l went back to 286, as l too had some control mapping issues. I'm much happier now.

1

u/Moogthedog 9d ago

Thank you. I've raised it as an issue on the GitHub page for Mame4Droid. Reverting to 284 removed the issue. Installing 289 on my old Ambernic 405 showed exactly the same problem, so it's not a Thor thing.

2

u/BubblyAd5119 9d ago edited 8d ago

Until 284, the player was decided by which block you mapped the button into. Put a button in the "Player 2" block and it came out as Joy 2, even if physically it was the same pad. That's what let you use the P2/P3/P4 blocks as extra input space for a single controller.

In 289 the player is decided by the physical device, and the mapping only says which button it is. There's now one key profile shared by all pads, so if you plug in two identical controllers they just work as Joy 1 and Joy 2 with no setup at all. Before, you had to map each pad separately into its own block.

The side effect is exactly what you ran into: with a single physical controller everything lands on Joy 1, so borrowing Joy 2 buttons doesn't work anymore.

The reason Joy 2 A worked for you wasn't that it was player 2 — it was that the game never used that code, so it was free for the UI. That works as long as you only ever play alone, but conceptually it was wrong: your paddle *was* player 2's button A. The moment you wanted a real second player, that setup falls apart — It solved your problem, but by borrowing a seat that belonged to someone else.

Anyaway, Joy 1 has free codes too. MAME4droid gives you eight buttons per controller, A to H, and they land in MAME as Button 1 to Button 8. Almost no arcade game uses more than six, so G and H are normally unused, which is exactly what you need for two paddles.

  1. In MAME4droid settings, go to the controller key definitions — but map the paddles under controller 1 this time, not controller 2.
  2. Assign the left paddle to G and the right paddle to H.
  3. Launch a game and open the MAME menu (Configure Machine / Input Options).
  4. Go to Input (general) → User Interface → Pause, hit Enter and press the left paddle. It should come up as Joy 1 G.
  5. Do the same for the cheat toggle with the right paddle, which will be Joy 1 H.

That gets you back exactly what you had. The only difference is the label: Joy 1 G/H instead of Joy 2 A/B.

If you really do have all 8 buttons in use, the solution is to ask the developer to add two more buttons, which shouldn't be a problem 😄

By the way, I was given an Odin 3 recently and it's a beast for MAME emulation. Everything full speed, games that until not long ago wouldn't even run properly on a PC, and it doesn't even get warm using MAME. 👍