Jump to content
(Public Beta) HyperSpin 2 is now available for everyone ×

UltraStik 360 Programmer


retango

Recommended Posts

Posted

UltraStik 360 Programmer

View File

Hi!
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.

Installation

  • 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

Ini File
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!

Change History

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.
ReTango


 

  • 2 weeks later...
Posted

This program is seamless. Makes it so easy to switch between UGC files. Two questions I have.

1. Does the UGC file loaded when entering a rom go for each controller, or just Player 1. I have four Ultrastiks, and had to set one up as reverse due to limited CP space.

2. When I load a game, I get a Windows "ding" sound, as soon as i start it. I assume it's the UGC loading into the controller. Aside from shutting off the sounds in control panel, is there a way to stop it?

Thanks!

  • 9 months later...
Posted

Unfortunately, I can't get Ultrastik Reprogrammer to work with Hyperspin 1.4.  The .ahk file is in the proper place, as is the .ini file.  The path to Ultramap is set, and the .ugc and map files are in place.  It seems like the .ahk file simply doesn't run.

 

I also tried to get it to work by running it with Antos' Event Dispatcher system.  When I run a command directly to Ultramap to install a .ugc on the Ultrastik, that works.  However If I run the .ahk with a system and rom name parameter, (EDS can execute ahk files directly) nothing happens.  Any ideas?  No log files are saved either, that I can see.

  • 2 weeks later...
Posted

It's now integrated into Rocketlauncher so you can setup the programmer per system and games.

 

 

Setting> mapping> Ultimarc>Utramap enabled = True

 

Keymapper> Ultrastick tab

hyperspin.jpg.de7f0a74dd9b65f109fccef6b430e474.jpg Puck-Man-logo.png.7e6e6d8d2b268d3fa2dce0a161d81f55.png27535b89d28068fdf7fac9fc9f1501b172791754.png.a7cdc9225a68d16f10e68f34c0c28e45.pngZF6W.gif.40b1846954b2ba73f2538aa28636dee9.gif1ms_pacmanclean_by_camdencc-d5rtgxu.gif.58793b235f2ce42b42f1895527f091e2.gif1jr_pacman2_by_camdencc-d5ru9rv.gif.c970d558ab803ea40e3f7c8b04d72935.gif d5f6ydj-003d34fc-4220-4236-b234-c9ce03e94d22.gif.23f07e68166969c75cc8c4c38a9b25a9.gif  Mr-Do_.gif.eca524a42658156c9adf8dec42d6f01b.gif  mario.gif.f7eb3915adb2be98540a89b1a20409c3.gif   220606053_Goldentee.jpg.4ef158f6566bb3ea590c35761e7bbe6c.jpg rtype.png.74f88dcb6cf3d865afd6fe16d20de479.png

  • 7 months later...
Posted

I posted the below at the RL forum as well.

Does this still work with the new User function? Will the ini file go in the user function folder?

At the moment I've tried adding it after ";Insert code Here" in the Global.ahk

Thank you

; Code in this file will always be run regardless of the system or game being launched
; Do not change the line with the class declaration! The class name must always be GlobalUserFunction and extend UserFunction
; This is just a sample file, you only need to implement the methods you will use the others can be deleted

class GlobalUserFunction extends UserFunction {

	; Use this function to define any code you want to run on initialization
	InitUserFeatures() {
		Global dbName
		RLLog.Info(A_ThisFunc . " - Starting")
		; INSERT CODE HERE
		StartGlobalUserFeatures(){
    Log("StartGlobalUserFeatures - Starting")
    Global systemName, romName
    ProgramUltraStik360(systemName, romName)
    Log("StartGlobalUserFeatures - Ending")
}

; Use this function to define any code you may need to stop or clean up in every module on exit
StopGlobalUserFeatures(){
    Log("StopGlobalUserFeatures - Starting")
    ProgramUltraStik360("FrontEnd","Rom")
    Log("StopGlobalUserFeatures - Ending")
}

; Use this function to define any code you want to run before Pause starts
StartPauseUserFeatures(){
	Log("StartPauseUserFeatures - Starting")
	ProgramUltraStik360("Pause","Rom")
	Log("StartPauseUserFeatures - Ending")
}

; Use this function to define any code you may need to stop or clean up after Pause ends
StopPauseUserFeatures(){
	Log("StopPauseUserFeatures - Starting")
        Global systemName, romName
	ProgramUltraStik360(systemName, romName)
	Log("StopPauseUserFeatures - Ending")
}




ProgramUltraStik360(systemName, romName)
{
	;SplitPath, A_LineFile, , iniPath ;should work, but doesn't!
	iniPath :=A_ScriptDir . "\lib"

    iniFile=%iniPath%\UltraStik 360 Programmer.ini
	IfNotExist, %iniFile% 
		Log("UltraStik 360 Programmer ini file not found: " . iniFile . ". Please put the ""UltraStik 360 Programmer.ini"" file in the ""Rocket Launcher\lib"" folder.")
		
    IniRead, UltraMapExe, %iniFile%, Settings, UltraMapExe, C:\Program Files (x86)\UltraMap\UltraMap.exe
	IfNotExist, %UltraMapExe% 	
	{
		Log("UltraMap Script could not find Ultramap.exe not found: " . UltraMapExe . ". Please check path in the ini file. Exiting UltraMap Script.")
		Return
	}	
	
    SplitPath, UltraMapExe, , ugcPath
    IniRead, ugcGlobalDefault, %iniFile%, Settings, ugcGlobalDefault
	If (ugcGlobalDefault="ERROR") 
	{
		ugcGlobalDefault=8-way
		logText:=logText . "ugcGlobalDefault not found in ini file. Using 8-way as Global Default. "
	}
    
	IniRead, IsPerRom, %iniFile%, PerRomSystems, %systemName%

If (%IsPerRom%) 
{
    IniRead, ugc, %iniFile%, Roms, %romName%
	If (ugc="ERROR") 
	{
		IniRead, ugc, %iniFile%, Systems, %systemName%
		If (ugc="ERROR") 
		{
			ugc:= ugcGlobalDefault
			logText:=logText . " System is " systemName . ", a system that uses a UGC file per rom. Rom is " . romName . ". No rom nor system UGC found in the ini file, using global default: " . ugc 
		}
		Else
			logText:=logText . " System is " systemName . ", a system that uses a UGC file per rom. Rom is " . romName . ". Rom UGC not found in the ini file, using system default: " . ugc 
	}
	Else
		logText:=logText . " System is " systemName . ", a system that uses a UGC file per rom. Rom is " . romName . ". Rom UGC found in the ini file: " . ugc 
}
Else 
{    
    IniRead, ugc, %iniFile%, Systems, %systemName%
	If (ugc="ERROR") 
	{
		ugc:= ugcGlobalDefault
		logText:=logText . " System is " systemName . ", a system that uses the same UGC file for all roms. System UGC not found in ini file, using global default: " . ugc 
	}
	Else 
		logText:=logText . " System is " systemName . ", a system that uses the same UGC file for all roms. System UGC found in ini file: " . ugc 

}
 
IfNotExist, %ugcPath%\%ugc%.ugc	
{
	Log("UltraStik 360 Programmer- UGC file not found: " . ugcPath . "\" . ugc . ".ugc. Exiting UltraMap Script. " . logText)
	Return
}	
	
Run, %UltraMapExe% %ugcPath%\%ugc%.ugc /logerrors %ugcPath%\UltraMapLog.log
Log("UltraStik 360 Programmer loaded """ . ugc . ".ugc"". " . logText)
}
		RLLog.Info(A_ThisFunc . " - Ending")
	}

 

56uIzxg.png

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...