Files posted by retango
I share here an Excel tool I made that helps creating JoyToKey config files for different systems. With this tool, you can configure JoyToKey profiles for up to 12 systems and 6 pairs of physical controllers for each system. It semi-automates the process, preparing the text for the cfg files.
I have a cab with 2 Ultimarc U360s (each one as a joystick with 8 buttons), and I also have several retro usb controllers that I use with different emulated systems. This tool helped a lot in the tedious process of making the JoyToKey profiles for all the possible combinations of controllers - system.
I attach in this post the instructions (also copied below), an example file in pdf, the actual Excel file (zipped), and the JoyToKey profiles and RetroArch config files that I use in the example.
I hope you find it useful, please feel free to use it, improve or re-distribute it.
PS: the spreadsheet is initially protected so you can only enter data in the allowed cells, you can unprotect in the Review pane, it has no password.
With this spreadsheet, you can configure JoyToKey profiles for up to 12 systems and 6 pairs of physical controllers.
Step 1: Configure Key bindings for each "System"
First you should configure each emulated system, you can configure up to 12 systems.
In the "Main" worksheet, between rows 1 and 27, you must complete 3 columns for each system.
On the light gray column, you must specify which "Emulated Buttons" the system uses, and name them. On the Player 1 and 2 columns, you must enter which "Key" binds to each Emulated Button for players 1 and 2 in the selected System.
E.g., for NES you need the Pad plus buttons "B", "A", "Select" and "Start". First enter the names of each "Emulated Button" on the light gray column (in this case, I chose "B", "A", "Select" and "Start"). Then enter which "Key" corresponds to each "Emulated Button" for each player in your designed emulator, for example in Retroarch in my case.
The "Keys" you enter should match one of the available standard Windows keys, which you can find in the "Key Codes" worksheet. If you enter a "Key" that is not found, the cell will turn red. Look into "Key Codes" for the names I chose for each key.
Step 2: Configure each "Physical Controller"
Next you should configure each "Physical Controller", up to 6, in the "Main" worksheet, between columns A and D, rows 28 to 100.
In my case I use Ultimarc's U360s with 8 buttons each for my arcade cabinet, Logitech F710, and some RetroLink imitation controllers and adapters.
For each controller, you should name each "Physical Button" in column C, and enter in column D which actual button number it is. You can configure up to 10 buttons for each controller (plus the Pad), numbers 1 to 10. (Sorry if you need more!)
To find out which number corresponds to each Physical Button, plug your controller, go to "Set up USB Game Controllers" in Windows, select the controller and go to "Properties". You should get to the window you see on the right. Then press each button and see which number lights up in this window.
Here you can also optionally chose a button for each physical controller that will always work as "Escape" (in all systems) when pressed for more than half a second. You enter the "Escape button" number to the right of the controller name, on column D. Leave it blank if you do not want to use this feature.
Each physical controller will use 2 Joystick tabs in JoyToKey, always the same number in all the system. In order for this to work, you should map each Physical controller to a Joystick Number in JoyToKey. With your joystick/s plugged, in JoyToKey got to "Settings", "Configure Joysticks", "2.Advanced Setting for each device". Then select your plugged joystick in "Please select a device", and "Specify a preferred number when this device is connected". Now JoyToKey will always assign the selected Joystick number when this device is selected. (This is stored in the JoyToKey.ini file)
Step 3: Map each "Physical button" to each "Emulated Button"
You then need to map each "Physical Button" of each "Physical Controller", to the different "Emulated Buttons" in each system. (the direction Pads are always mapped to the same keys)
This is done between columns E and AN, rows 28 to 100. For each "System"-"Physical Controller" pair, you need to complete only the light gray column: enter the name of the "Emulated Button" that is assigned to each "Physical Button". The Keys the correspond to that Emulated Button are completed automatically.
Step 4: Create the .cfg files.
When you are finished mapping, you have to create the JoyToKey .cfg file for each system. This is a semi-automatic method.
With RocketLauncherUI, create an empty JoyToKey Profile for each system (or emulator), and locate the file .cfg it creates. Then go the "JoyToKey cfg" spreadsheet, enter the system number (1-12) in cell C1, select column A (go to cell A1, and press Ctrl+Shift+↓), and copy paste into your .cfg file.
Alternatively, you can print the "JoyToKey Maps" spreadsheet, and enter profiles manually.
Works with JoyToKey v 5.7.
Spreadsheets are protected for your convenience. If you want to Unprotect them, just go to the Review Pane in Excel and press "Unprotect Sheet". There is no password.
I share a script I made for Rocket Launcher that programs UGC files (e.g 4-way, 8-way, 2-way, analog, etc.. ) to Ultimarc's UltraStik 360 Joysticks before launching a Rom, without requiring LedBlinky. It uses the User Function feature of RL. (Updated to new script language as of RocketLauncher v1.2, Jan-2017)
(Note: RocketLauncher can now handle UltraStick directly from RLUI. However, it requires you to enter the profile for each system / game manually. The only advantage of this script is that it allows you the define the profile for each system / rom using a .ini file)
UltraStik 360 Programmer
You can define a different UGC file for each Rom or System. It also programs the Joysticks when you exit a Rom, allowing you to define a UGC file for the Front-end. UltraStik 360 Programmer can replace LedBlinky if you are using it only to program you U360s (as I was doing!).
UGC files (UltraStik Game Configuration) tells the UltraMap.exe program which maps to download to which joysticks (numbered 1 to 4). For example, 4-way.ugc tells UltraMap to program the 4-way Map (4-way.um, located in the Maps subfolder of the UltraMap program folder) to both joysticks 1 and 2. In this pack I include 6 UGC files: 2-way, 2-way-vertical, 4-way, 4-way-diagonal, 8-way, analog.
With the UltraStick 360 Programmer, you can specify a system (MAME, Nintendo Entertainment System, Atari 2600, etc..) to use a different UGC file per Rom (a "Per Rom System"), or to use the same UGC file for all roms. I include UGC files for most MAME games in the default ini file, with the default as 8-way.
Copy "Global.ahk" to the "Rocket Launcher\Lib\User Functions" folder. WARNING: If you have other User Functions already programmed in User Functions.ahk, do not overwrite your file. You should edit it and add the code provided here. Copy "UltraStik 360 Programmer.ini" to the "Rocket Launcher\Lib\User Functions" folder Edit "UltraStik 360 Programmer.ini" to specify the location of the UltraMap software (in the UltraMapExe key). If you don't have it installed, please download it from http://www.ultimarc.com/ultrastik_prog.html and install it. By default, it installs itself in C:\Program Files (x86)\UltraMap. Copy the provided UGC files to the UltraMap program folder (in the same folder where UltraMap.exe is in). Also copy the Maps that are in the Maps folder to your UltraMap/Maps folder. Feel free to modify these UGC files with the UltraMap software. That's it, enjoy! You can further edit the ini file to better suit your needs
In the ini file (UltraStik 360 Programmer.ini, located in Rocket Launcher\Lib) you define a global default UGC (typically 8-way). This UGC is used when there is no specified UGC for either the System or the Rom.
In the [PerRomSystems] section of the ini file, enter "System Name"=true for systems that can have a different UGC files for each Rom. (e.g. MAME=true). If a system is a PerRomSystem, the script looks for a specific UGC for each Rom. If it does not find it, it looks for a default system UGC in the [systems] section. And if it does not find it either, it uses de global default UGC.
In the [systems] section, enter the ugc file for each system (without quotes and without the .ugc extension, e.g. Nintendo Entertainment System=8-way). If the current System is a Per Rom System, this UGC will be used as default when no rom UGC is specified. If the current system is not a Per Rom System, this UGC will be loaded for all roms of the system. If a system is not specified in this section, UltraStik 360 Programmer will use the global default.
The system "FrontEnd" is the system name assigned to the front end. This UGC is loaded each time you exit a rom.
The system "Pause" is the system name assigned Rocket Launcher's Pause. This UGC is loaded each time you enter Pause. When exiting Pause the programmer reloads the Rom's UGC.
In the [Roms] section, enter the UGC file for each rom, for all PerRomSystems (without quotes and without the .ugc extension, e.g. invaders=2-way). If a rom is not specified, the script will use the UGC given in Systems, or the global default.
Credits: I used rom UGC configs prepared by EMDB for HyperMap (http://forum.arcadecontrols.com/inde...,134128.0.html), and took the main idea of this Programmer from byancey (http://forum.arcadecontrols.com/inde...tml#msg1483682). Thanks to both!
v2.0 - Compatible with RocketLauncher v1.2 (new location and scripting language)
v1.01 - Works with RocketLauncher 1.01, takes advantage of the new Pause Features: StartPauseUserFeatures and StopPauseUserFeatures.