[SOLVED] IPAC2 controller for a 2 players retropie 4.4 bartop arcade with MAME and 9 other consoles.
-
After a long time researching and experimenting as a newbie to get my bartop arcade running I completely got lost in the settings and tweaking jungle of Retropie…. There are too many files you can tweak to change the systems behaviour. I bought a raspberry pi3B and a complete arcade button set and installed Retropie 4.4 (stretch), connected my WiFi and used a Windows 10 PC for the setup. At first I used a detailed manual from theink/Iberov I found on Github, see https://github.com/iberov/retropie_ipac2_setup_wiki
It worked fine until I upgraded to Retropie 4.4… then I encountered a few bugs I could not explain and I got lost again, so I decided to set up my system again from scratch, using his guidelines (Thanks anyway @Theink/Iberov, without this guidline I would never have come so far!). My bartop arcade cabinet is fully working now and I like to share my experiences. In this post I will show a short version of my adventure, the whole story can be found (however only in the Dutch language) on my blog at www.apinventions.wordpress.comThe IPAC2:
I first started with the IPAC2 controller with the default “out of the box” MAME settings so I would not get any problems running MAME games. I only limited my in game buttons to 6 per player instead of 8, so I could use a few connections for administration buttons and 2 additional pinball buttons. These are the changes I made in the IPAC2, using the programming software from Ultimarc:
1A pause game (P)
1B reset game (F3)
2A confirm quit game (enter)
2B quit game (esc)
I removed all shifted settings which are standard available in the IPAC2 to avoid any confusion later.
My arcade cabinet has only these four admin buttons placed in the bottom of the marquee together with a hardware system reboot & system exit button for the Raspberry Pi3B, connected to pins 5 & 6 of the GPIO connector. There are lots of guidelines on the internet for building such a connection.
The game buttons I used are based on the layout of a standard SNES controller, per player joystick up/down/left/right and buttons A, B, X, Y, left sholder, right sholder , select and start.
For MAME I only use the COIN1 button (key code num5), the COIN2 button is unused. The consoles that can be controlled by using a snes-like controller are snes, nes, gba, atari 2600,7800, lynx, megadrive, vectrex and sg-1000.The button mappings:
As described in the manual from Theink/Iberov, Retropie has 3 levels of button configurations which can be overwritten when you start a certain emulator or a certain game. The config hierarchy goes like this:
• global settings (a retroarch.cfg file placed in the config directory under ../all)
• system specific (a retroarch.cfg file placed in the config directory inside each console directory).
• ROM specific (gamename.zip.cfg file placed in the rom directory per game.
While you are still inside the main menu the global settings apply. When you start an emulator which does not have system specific settings written for it, the global one keeps on working. If you have a custom configuration file written for a specific system and you start the emulator, the global settings are overwritten and the system specific settings apply. If you exit the emulator the global settings start working again. If you start a specific ROM which has its own custom mapping both previous settings are overwritten and only the ROM custom mapping applies. All these files are just plain text files and can be edited with window notepad or wordpad.
These are the global mappings for player 1 and 2 and the hotkeys I added to the existing retroarch.cfg file in the config directory under /all:
input_player1_select = "v"
input_player1_start = "num1"
input_player1_left = "left"
input_player1_right = "right"
input_player1_up = "up"
input_player1_down = "down"
input_player1_a = "z"
input_player1_b = "shift"
input_player1_x = "alt"
input_player1_y = "ctrl"
input_player1_l = "space"
input_player1_r = "x"
input_player1_l2 = "nul"
input_player1_r2 = "nul"
input_player1_l3 = "nul"
input_player1_r3 = "nul"input_player2_select = "l"
input_player2_start = "num2"
input_player2_left = "d"
input_player2_right = "g"
input_player2_up = "r"
input_player2_down = "f"
input_player2_a = "i"
input_player2_b = "w"
input_player2_x = "s"
input_player2_y = "a"
input_player2_l = "q"
input_player2_r = "k"
input_player2_l2 = "nul"
input_player2_r2 = "nul"
input_player2_l3 = "nul"
input_player2_r3 = "nul"#hotkeys
input_enable_hotkey = "v"
input_exit_emulator = "num1"
input_save_state = "x"
input_load_state = "space"
input_state_slot_increase = "right"
input_state_slot_decrease = "left"
input_menu_toggle = "nul"
input_reset = "nul"Note 1:
For the mappings per console I replaced the key codes with “nul” for buttons that are not available on a certain console. For example the Atari 2600 only uses a B button, so the other play buttons are mapped to “nul”.Note 2:
For some pinball games I replaced the mapping for the original pinball button control
(often they are joystick up or right and A) to the mapping of my pinball buttons ( C and J connected to 1SW7 and 2SW7 of the IPAC2), these pinball buttons are mounted (just as on a real pinball machine) on the left & right side of the cabinet.Note 3:
The IPAC2 uses th mappings l-ctrl, l-shift and l-alt. When copying this text unchanged into the retroarch.cfg file they are not recognized. You must use ctrl, shift and alt instead. The same goes for the numerical values of player 1 start (1) and player 2 start (2). These values must be added into the retroarch.cfg file as num1 and num2.Note 4:
All other setting files inside the whole Retropie system I left completely untouched.
I never used the Retropie editing menus, just plain Windows notepad and file saving via WiFi. -
@alexp You can avoid all this by flashing the ipac2 to gamepad enabled firmware 1.39 and setting the buttons as Gamepad buttons. Both sides work and it is 1000x easier. ES configures everything easily, no extra cfgs needed.
Use this guide, but use the ipac2 instead of the miniipac.
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.