Kodi + Advanced Launcher + RL

johnodon

New member
RL Member
I'll preface this by saying I don't think this is an RL issue...

I see a few threads where people are using this configuration but I am having some issues. I was able to create new launchers for Nintendo GameCube, Nintendo 64 and Sega 32X in Advanced Launcher without issue. An example command line for the launcher is...

Code:
C:\RocketLauncher\RocketLauncher.exe -s "Sega 32X" -r "%rom%"

The above launches Fusion with the ROM I selected and my 'exit emulator' buttons work as expected. However, when I try the same command line with PC Games (C:\RocketLauncher\RocketLauncher.exe -s "PC Games" -r "%rom%"), I get following error:

WIPA2Xg.png


Although the Kodi log shows a good command line being passed...

Code:
06:11:39 T:7100  NOTICE: AdvancedLauncher: Load launchers.xml file
06:11:39 T:7100  NOTICE: AdvancedLauncher: Initialisation
06:11:39 T:7100  NOTICE: AdvancedLauncher: application : C:\RocketLauncher\RocketLauncher.exe
06:11:39 T:7100  NOTICE: AdvancedLauncher: arguments : -s "PC Games" -r "G:\Games\PC Games\Castle Crashers.lnk"

is the fact that I am using .LNK files the issue here. I wanted to do it this way so I had one folder as a point of reference for all PC Games. FYI...my PC Games launch fine in RLUI. I will say though that I use .LNK files to populate the DB in RL (I don't know if this is an issue as you are supposed to leave extensions empty...I think).

I've looks at the wiki for the command line parameters but the pieces about -p and -f somewhat baffle me (and I didn't need to use them for my emulators).

Below is my RL log from the time when I tried to launch Castle Crashers via Kodi/RL. From what I can see in this log, the command never even made it to RL.

Code:
17:53:22:674 | RL |      INFO  | +N/A   | Main - RocketLauncher v1.1.1.1 (www.rlauncher.com)
17:53:23:257 | RL |      INFO  | +593   | Main - System Specs:
					RocketLauncher Dir: C:\RocketLauncher
					RocketLauncher is: 32-bit
					OS: Microsoft Windows 10 Pro
					SKU: Professional
					Total Memory: 8188.17 MB
					Free Memory: 6455.96 MB
					Used Memory: 1732.215 MB
					SystemType: 64-bit
					Physical Processors: 1
					Logical Processors: 8
					GPU 1 Name: NVIDIA GeForce GTX 950
					GPU 1 RAM: -2048.00 MB
					GPU 1 Driver Version: 21.21.13.7270
					Sound 1 Device: NVIDIA High Definition Audio
					Sound 1 Status: Enabled
					OS Language: English_United_States
					System Locale: en-US
					Formats Locale: en-US
					Windows UI Language: en-US
					Text Encoding: Windows-1252
					OS Admin Status: No
					RL Compatibility Flags:  HIGHDPIAWARE
					Latest .Net Version: v4.0.30319
					Monitor #1 (\\.\DISPLAY1): 1920x1080 (1920x1020 work) [32bit] [60hz] [Landscape]  (Primary)
					Current AHK Desktop Width: 1920
					Current AHK Desktop Height: 1080
					Monitor #1 DPI: 150
					ErrorMode: 0
					AutoHotkey Path: 
					AHK Version: 1.1.13.00
					Unicode: No
17:53:23:257 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\RocketLauncher.exe exists
17:53:23:258 | RL |      INFO  | +0     | Main - Raw CLI received: "-s Nintendo GameCube -r G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"
17:53:23:258 | RL |      INFO  | +0     | Main - Loading Front End Plugin: "RocketLauncherUI"
17:53:23:258 | RL |      INFO  | +0     | Process.Process - "Exist" "RocketLauncherUI.exe" 
17:53:23:262 | RL |      INFO  | +0     | Main - RocketLauncherUI.exe is not currently running
17:53:23:262 | RL |      INFO  | +0     | Main - RocketLauncher received "Nintendo GameCube" and "Super Smash Bros. Melee (USA) (En,Ja) (v1.00)"
17:53:23:280 | RL |      INFO  | +16    | Main - Did not find a "C:\RocketLauncher\Settings\Nintendo GameCube\Game Options.ini" file, skipping any game-specific options.
17:53:23:280 | RL |      INFO  | +0     | Main - Super Smash Bros. Melee (USA) (En,Ja) (v1.00) is using the default emulator: Dolphin
17:53:23:280 | RL |      INFO  | +0     | Main - Checking for a [Dolphin] section in C:\RocketLauncher\Settings\Nintendo GameCube\Emulators.ini
17:53:23:280 | RL |      INFO  | +0     | Main - Checking for a [Dolphin] section in C:\RocketLauncher\Settings\Global Emulators.ini
17:53:23:281 | RL |      INFO  | +0     | Main - Found [Dolphin] in C:\RocketLauncher\Settings\Global Emulators.ini
17:53:23:281 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Modules\Dolphin\Dolphin.ahk exists
17:53:23:293 | RL |      INFO  | +16    | Main - CRC Check - CRC matches, this is an official unedited module.
17:53:23:293 | RL |      INFO  | +0     | Main - Super Smash Bros. Melee (USA) (En,Ja) (v1.00) will use module: C:\RocketLauncher\Modules\Dolphin\Dolphin.ahk
17:53:23:299 | RL |   WARNING  | +0     | RIniLoadVar - Created missing Global ini key: "Fade_Click_Through " in section: "Fade" in "C:\RocketLauncher\Settings\Global RocketLauncher.ini"
17:53:23:299 | RL |   WARNING  | +0     | RIniLoadVar - Created missing System ini key: "Fade_Click_Through " in section: "Fade" in "C:\RocketLauncher\Settings\Nintendo GameCube\RocketLauncher.ini"
17:53:23:335 | RL |      INFO  | +46    | Main - Using standard method with "Rom Extension" SkipChecks or without any SkipChecks.
17:53:23:340 | RL |      INFO  | +0     | CheckFile - Checking if C:\Emulators\Dolphin\Dolphin.exe exists
17:53:23:369 | RL |      INFO  | +32    | Main - INI Keys read
17:53:23:370 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Module Extensions\7z.exe exists
17:53:23:371 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Module Extensions\7z.dll exists
17:53:23:379 | RL |      INFO  | +15    | Main - "Super Smash Bros. Melee (USA) (En,Ja) (v1.00)" does not qualify for MultiGame. Only roms with any of these strings in their name are acceptable: \(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side
17:53:23:379 | RL |      INFO  | +0     | CheckPaths - Started
17:53:23:380 | RL |      INFO  | +0     | CheckPaths - Not scanning to find the rom because a full path was supplied to RocketLauncher via CLI
17:53:23:380 | RL |      INFO  | +0     | CheckPaths - Ended
17:53:23:381 | RL |      INFO  | +0     | BuildScript - User Variables:
					;----------------------------------------------------------------------------
					; INJECTED VARIABLES
					;----------------------------------------------------------------------------
					
					#NoTrayIcon
					#InstallKeybdHook
					MiscUtils.DetectHiddenWindows("On")
					SetTitleMatchMode, 2
					SendMode, Event
					0 = 4
					rlPath = C:\RocketLauncher
					pluginPath = C:\RocketLauncher\Plugins
					pluginName = RocketLauncherUI
					pluginExt = .plugin
					contextOnExit = 
					rlMode = 
					rlTitle = RocketLauncher
					rlVersion = 1.1.1.1
					rlAuthor = djvj
					rlURL = www.rlauncher.com
					langFile = C:\RocketLauncher\Data\Language\Localization.ini
					primMonitor = 1
					frontendPID = 0
					frontendPath = C:\RocketLauncher\RocketLauncherUI
					frontendExe = RocketLauncherUI.exe
					frontendExt = exe
					frontendName = RocketLauncherUI
					frontendDrive = C
					exitEmulatorKey = Esc|1joy7&1joy8|2joy7&2joy8
					restoreFE = false
					exitScriptKey = ~q & ~s
					toggleCursorKey = ~e & ~t
					emuFullPath = C:\Emulators\Dolphin\Dolphin.exe
					emuPath = C:\Emulators\Dolphin
					emuName = Dolphin
					emuExt = exe
					baseRomPath = 
					romPath = G:\Games\Nintendo Gamecube
					romPathFromIni = G:\Games\Nintendo Gamecube
					romExtension = .iso
					romExtensionOrig = .iso
					romExtensions = 7z|zip|wbfs|ciso|iso|elf|dol|gcm|wad
					executable = Dolphin.exe
					systemDbName = Nintendo GameCube
					systemName = Nintendo GameCube
					dbPath = G:\Games\Nintendo Gamecube
					dbName = Super Smash Bros. Melee (USA) (En,Ja) (v1.00)
					dbExt = iso
					romName = Super Smash Bros. Melee (USA) (En,Ja) (v1.00)
					romMapPath = 
					romMappingEnabled = false
					romMappingLaunchMenuEnabled = false
					romMappingFirstMatchingExt = false
					romMappingShowAllRomsInArchive = true
					romMappingNumberOfGamesByScreen = 7
					romMappingHideParent = false
					romMappingMenuWidth = 400
					romMappingMenuMargin = 65
					romMappingTextFont = Bebas Neue
					romMappingTextOptions = cFFFFFFFF r4 s60 Bold
					romMappingDisabledTextColor = ff888888
					romMappingTextSizeDifference = 7
					romMappingTextMargin = 15
					romMappingTitleTextFont = Bebas Neue
					romMappingTitleTextOptions = cFFFFFFFF r4 s90 Bold
					romMappingTitle2TextFont = Bebas Neue
					romMappingTitle2TextOptions = cFFFFFFFF r4 s22 Bold
					romMappingGameInfoTextFont = Bebas Neue
					romMappingGameInfoTextOptions = cFFFFFFFF r4 s22 Regular
					romMappingGameNameTextFont = Bebas Neue
					romMappingGameNameTextOptions = cFFFFFFFF r4 s40 Regular
					romMappingBackgroundBrush = aa000000
					romMappingColumnBrush = 33000000
					romMappingButtonBrush1 = 6f000000
					romMappingButtonBrush2 = 33000000
					romMappingBackgroundAlign = Stretch and Lose Aspect
					romMappingMenuFlagWidth = 55
					romMappingMenuFlagSeparation = 7
					romMappingDefaultMenuList = FullList
					romMappingSingleFilteredRomAutomaticLaunch = false
					altArchiveNameOnly = 
					altRomNameOnly = 
					altArchiveAndRomName = 
					altArchiveAndManyRomNames = 
					altRomNamesOnly = 
					romMapScenario = 
					skipchecks = false
					romMatchExt = false
					blockInputTime = 0
					blockInputFile = C:\RocketLauncher\Module Extensions\BlockInput.exe
					errorLevelReporting = false
					lockLaunch = false
					lockLaunchGame = 
					screenRotationAngle = 0
					screenRotationAngleGame = 
					setResolution = 
					logFile = 
					logLabel := ["    INFO"," WARNING","   ERROR","   DEBUG","   TRACE"]
					logLevel = 3
					logShowDebugConsole = false
					logShowCommandWindow = false
					logCommandWindow = false
					logIncludeModule = true
					logIncludeFileProperties = true
					logIncludeDLLLogs = false
					errorSounds = true
					rlDebugConsoleStdout = 
					sysLang = English_United_States
					sysType = 64-bit
					broadcastWindowTitle = 
					navUpKey = Up
					navDownKey = Down
					navLeftKey = Left
					navRightKey = Right
					navSelectKey = Enter
					navP2UpKey = Numpad8
					navP2DownKey = Numpad2
					navP2LeftKey = Numpad4
					navP2RightKey = Numpad6
					navP2SelectKey = NumpadEnter
					originalWidth = 1920
					originalHeight = 1080
					vdEnabled = false
					vdFullPath = 
					vdUseSCSI = true
					vdDriveLetter = 
					vdDriveLetterScsi = 
					vdAddDrive = true
					demulShooterPath = 
					servoStikEnabled = false
					servoStikExitMode = false
					ledblinkyEnabled = false
					ledblinkySystemName = 
					ledblinkyFullPath = 
					ledblinkyProfilePath = C:\RocketLauncher\Profiles\LEDBlinky
					ledblinkyRLProfile = C:\RocketLauncher\Profiles\LEDBlinky\RocketLauncher
					winIPACFullPath = 
					ultraMapEnabled = false
					ultraMapFullPath = 
					emuIdleShutdown = 0
					launchPasswordHash = UpUpDownDownLeftRightLeftRight
					hideCursor = false
					hideEmu = false
					hideFE = false
					suspendFE = false
					fadeIn = false
					fadeInDuration = 500
					fadeInTransitionAnimation = DefaultAnimateFadeIn
					fadeInDelay = 0
					fadeInExitDelay = 0
					fadeOutExitDelay = 0
					fadeOut = false
					fadeOutExtraScreen = false
					fadeOutDuration = 500
					fadeOutTransitionAnimation = DefaultAnimateFadeOut
					fadeOutDelay = 0
					fadeLyrInterpolation = 7
					fadeMuteEmulator = false
					fadeUseBackgrounds = false
					fadeClickThrough = false
					fadeSounds = true
					fade7zProgressMode = extraction
					fadeWidthBaseRes = 1920
					fadeHeightBaseRes = 1080
					fadeLyr1Color = FF000000
					fadeLyr1AlignImage = Stretch and Lose Aspect
					fadeLyr2Pos = Stretch and Lose Aspect
					fadeLyr2X = 0
					fadeLyr2Y = 0
					fadeLyr2W = 
					fadeLyr2H = 
					fadeLyr2Adjust = 1
					fadeLyr2PicPad = 0
					fadeLyr2Prefix = Extra Layer 1 - Console
					fadeLyr3Pos = Center
					fadeLyr3X = 450
					fadeLyr3Y = 450
					fadeLyr3W = 
					fadeLyr3H = 
					fadeLyr3Adjust = 1
					fadeLyr3PicPad = 0
					fadeLyr3Speed = 750
					fadeLyr3Animation = DefaultFadeAnimation
					fadeLyr37zAnimation = DefaultFadeAnimation
					fadeLyr3Type = imageandbar
					fadeLyr3ImgFollow7zProgress = true
					fadeLyr3Repeat = 1
					fadeLyr3BackImageTransparency = 30
					fadeLyr3StaticPos = No Alignment
					fadeLyr3StaticX = 0
					fadeLyr3StaticY = 870|1575
					fadeLyr3StaticW = 
					fadeLyr3StaticH = 
					fadeLyr3StaticAdjust = 1
					fadeLyr3StaticPicPad = 0
					fadeLyr3StaticPrefix = Info Bar
					fadeLyr4Adjust = 1
					fadeLyr4X = 1792|952
					fadeLyr4Y = 891|1596
					fadeLyr4W = 128
					fadeLyr4H = 
					fadeLyr4Pos = No Alignment
					fadeLyr4FPS = 50
					fadeLyr4PicPad = 0
					fadeTranspGifColor = FFFFFF
					fadeBarWindow = Image
					fadeBarWindowX = 
					fadeBarWindowY = 
					fadeBarWindowW = 900
					fadeBarWindowH = 
					fadeBarWindowR = 30
					fadeBarWindowM = 30
					fadeBarWindowHatchStyle = 8
					fadeBar = 7zOnly
					fadeProgressDuration = 0
					fadeBarBack = true
					fadeBarBackColor = FF555555
					fadeBarH = 30
					fadeBarR = 10
					fadeBarColor = DD00BFFF
					fadeBarHatchStyle = 8
					fadeBarPercentageText = true
					fadeBarInfoText = true
					fadeBarXOffset = 0
					fadeBarYOffset = 150
					fadeRomInfoDescription = filtered text
					fadeRomInfoSystemName = image
					fadeRomInfoYear = text with label
					fadeRomInfoDeveloper = text with label
					fadeRomInfoPublisher = text with label
					fadeRomInfoGenre = disabled
					fadeRomInfoRating = image
					fadeRomInfoOrder = Description|SystemName|Year|Developer|Genre|Rating|Publisher
					fadeRomInfoTextPlacement = User Defined
					fadeRomInfoTextMargin = 7
					fadeRomInfoText1Options = w1600|787 h90 x165 y870|1575 cFFE1E1E1 r4 s90 Left Regular
					fadeRomInfoText2Options = w400 x8 y15 cFF555555 r4 s60 Bold
					fadeRomInfoText3Options = w310 x165 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText4Options = w1305|492 h66 x460 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText5Options = cFF555555 r4 s42 Bold
					fadeRomInfoText6Options = h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular
					fadeRomInfoText7Options = h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular
					fadeStats_Number_of_Times_Played = text with label
					fadeStats_Last_Time_Played = text with label
					fadeStats_Average_Time_Played = text with label
					fadeStats_Total_Time_Played = text with label
					fadeStats_System_Total_Played_Time = text with label
					fadeStats_Total_Global_Played_Time = text with label
					fadeStatsInfoOrder = Number_of_Times_Played|Last_Time_Played|Average_Time_Played|Total_Time_Played|System_Total_Played_Time|Total_Global_Played_Time
					fadeStatsInfoTextPlacement = topRight
					fadeStatsInfoTextMargin = 7
					fadeStatsInfoText1Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText2Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText3Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText4Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText5Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText6Options = cFFB4B4B4 r4 s22 Bold
					fadeText1X = 0
					fadeText1Y = 0
					fadeText1Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText1 = Loading Game
					fadeText2X = 0
					fadeText2Y = 0
					fadeText2Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText2 = Extraction Complete, Ready
					fadeText3 = Loading Game
					fadeText4 = Loading Complete
					fadeFont = Bebas Neue
					fadeSystemAndRomLayersOnly = false
					fadeExtractionTime = disabled
					fadeExtractionTimeTextX = 0
					fadeExtractionTimeTextY = 0
					fadeExtractionTimeTextOptions = cFF555555 r4 s20 Bold
					fadeInterruptKey = 
					detectFadeErrorEnabled = true
					fadeImgPath = C:\RocketLauncher\Media\Fade
					RLDataPath = C:\RocketLauncher\Data
					RLMediaPath = C:\RocketLauncher\Media
					RLErrSoundPath = C:\RocketLauncher\Media\Sounds\Error
					modulesPath = C:\RocketLauncher\Modules
					moduleFullName = C:\RocketLauncher\Modules\Dolphin\Dolphin.ahk
					moduleName = Dolphin
					modulePath = C:\RocketLauncher\Modules\Dolphin
					moduleExtension = ahk
					moduleExtensionsPath = C:\RocketLauncher\Module Extensions
					libPath = C:\RocketLauncher\Lib
					sevenZEnabled = false
					sevenZPath = C:\RocketLauncher\Module Extensions\7z.exe
					sevenZDllPath = C:\RocketLauncher\Module Extensions\7z.dll
					sevenZExtractPath = C:\Users\odonnellj\AppData\Local\Temp\HS
					sevenZExtractPathOrig = 
					sevenZAttachSystemName = false
					sevenZDelTemp = true
					sevenZFormats = .zip|.rar|.7z|.lzh|.gzip|.tar
					sevenZFormatsNoP = zip|rar|7z|lzh|gzip|tar
					sevenZFormatsRegEx = \.zip|\.rar|\.7z|\.lzh|\.gzip|\.tar
					7zExtractPath = C:\Users\odonnellj\AppData\Local\Temp\HS
					mgEnabled = false
					mgKey = ~NumpadSub
					mgBackgroundColor = FF000000
					mgSidePadding = 0.2
					mgWidthBaseRes = 1920
					mgHeightBaseRes = 1080
					mgYOffset = 500|800
					mgFont = Arial
					mgText1Options = x10p y250|500 w80p Center cBBFFFFFF r4 s100 BoldItalic
					mgText1Text = Please select a game
					mgText2Options = w96p cFFFFFFFF r4 s50 Center BoldItalic
					mgText2Offset = 100
					mgUseSound = true
					mgSoundfreq = 300
					mgExitEffect = none
					mgSelectedEffect = rotate
					mgUseGameArt = false
					mgCandidate = 
					mgValidTypes = \(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side
					mgOnLaunch = false
					pauseEnabled = false
					pauseKey = ~NumpadAdd
					pauseBackToMenuBarKey = X
					pauseZoomInKey = C
					pauseZoomOutKey = V
					pauseScreenshotKey = ~PrintScreen
					pauseHiToTextPath = C:\RocketLauncher\Module Extensions\HiToText.exe
					pauseSaveStateKeyCodes = {Shift down}{F1 down}{F1 up}{Shift up}|{Shift down}{F2 down}{F2 up}{Shift up}|{Shift down}{F3 down}{F3 up}{Shift up}|{Shift down}{F4 down}{F4 up}{Shift up}|{Shift down}{F5 down}{F5 up}{Shift up}|{Shift down}{F6 down}{F6 up}{Shift up}|{Shift down}{F7 down}{F7 up}{Shift up}|{Shift down}{F8 down}{F8 up}{Shift up}
					pauseLoadStateKeyCodes = {F1 down}{F1 up}|{F2 down}{F2 up}|{F3 down}{F3 up}|{F4 down}{F4 up}|{F5 down}{F5 up}|{F6 down}{F6 up}|{F7 down}{F7 up}|{F8 down}{F8 up}
					keyboardEncoder = 
					keyboardEncoderEnabled = false
					keymapperEnabled = false
					keymapperAHKMethod = false
					keymapper = xpadder
					xpadderFullPath = C:\Utilities\Xpadder\xpadder.exe
					joyToKeyFullPath = C:\Utilities\JoyToKey\JoyToKey.exe
					profilePath = C:\RocketLauncher\Profiles
					keymapperProfilePath = C:\RocketLauncher\Profiles\xpadder
					keymapperFrontEndProfileName = RocketLauncherUI
					keymapperFrontEndProfile = false
					keymapperRocketLauncherProfileEnabled = false
					joyIDsEnabled = false
					joyIDsPreferredControllersGlobal = 
					joyIDsPreferredControllersSystem = use_global
					joyIDsPreferredControllersOnExit = 
					CustomJoyNamesEnabled = false
					CustomJoyNames = 
					rotateMethod = false
					FEProfile = C:\RocketLauncher\Profiles\xpadder\RocketLauncherUI
					defaultProfile = C:\RocketLauncher\Profiles\xpadder\_Default
					systemProfile = C:\RocketLauncher\Profiles\xpadder\Nintendo GameCube
					xPadderSystemProfile = C:\RocketLauncher\Profiles\xpadder\Nintendo GameCube\_Default
					emuProfile = C:\RocketLauncher\Profiles\xpadder\Nintendo GameCube\Dolphin
					romProfile = C:\RocketLauncher\Profiles\xpadder\Nintendo GameCube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00)
					RocketLauncherProfile = C:\RocketLauncher\Profiles\xpadder\RocketLauncher
					blankProfile = C:\RocketLauncher\Profiles\xpadder\_Default\blank
					ahkFEProfile = C:\RocketLauncher\Profiles\AHK\RocketLauncherUI
					ahkDefaultProfile = C:\RocketLauncher\Profiles\AHK\_Default
					ahkSystemProfile = C:\RocketLauncher\Profiles\AHK\Nintendo GameCube
					ahkEmuProfile = C:\RocketLauncher\Profiles\AHK\Nintendo GameCube\Dolphin
					ahkRomProfile = C:\RocketLauncher\Profiles\AHK\Nintendo GameCube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00)
					ahkRocketLauncherProfile = C:\RocketLauncher\Profiles\AHK\RocketLauncher
					bezelEnabled = false
					bezelICEnabled = false
					shaderName = false
					shaderColor = 
					shaderTransparency = 
					statisticsEnabled = true
					pressDuration = -1
					emuVolume = 1
					dxwndIni = C:\RocketLauncher\Module Extensions\dxwnd\dxwnd.ini
					dxwndFullPath = C:\RocketLauncher\Module Extensions\dxwnd\dxwnd.exe
					qResFullPath = C:\RocketLauncher\Module Extensions\QRes.exe
					mon1O = 
					pacDrivedllFile = C:\RocketLauncher\Module Extensions\PacDrive32.dll
					userFadeAnimIniFile = C:\RocketLauncher\Lib\User Fade Animations.ini
					testFile = 
					testDuration = 
					initialErrorMode = 0

17:53:23:387 | RL |      INFO  | +0     | BuildScript - Loaded XHotkey Init.ahk scripts
17:53:23:387 | RL |      INFO  | +0     | BuildScript - Loaded Statistics Init.ahk scripts
17:53:23:388 | RL |   WARNING  | +0     | BuildScript - "C:\RocketLauncher\Lib\User Functions Init.ahk" not found
17:53:23:388 | RL |      INFO  | +0     | BuildScript - Validating module
17:53:23:394 | RL |      INFO  | +0     | BuildScript - Validation complete
17:53:23:394 | RL |      INFO  | +0     | BuildScript - Module:
					MEmu = Dolphin
					MEmuV =  v4.0 r6928
					MURL = https://dolphin-emu.org/
					MAuthor = djvj & bleasby
					MVersion = 2.1.9
					MCRC = 48F41AEA
					iCRC = F063B9AF
					MID = 635038268884477733
					MSystem = "Nintendo Gamecube","Nintendo Wii","Nintendo WiiWare"
					;----------------------------------------------------------------------------
					; Notes:
					; Be sure you are running at least Dolphin v4.0 or greater.
					; If you get an error that you are missing a vcomp100.dll, install Visual C++ 2010: http://www.microsoft.com/download/en/details.aspx?id=14632
					; Also make sure you are running latest directx: http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3
					; Dolphin will sometimes crash when connnecting a Wiimote, then going back to the game. After all Wiimotes are connected that you want to use, it shouldn't have anymore issues.
					; Convert all your games to ciso using Wii Backup Manager to save alot of space by stripping everything but the game partition. http://www.wiibackupmanager.tk/
					; If you want to keep your Dolphin.ini in the emu folder, create a "portable.txt" file in MyDocuments\Dolphin Emulator\
					;
					; Bezels:
					; If the game does not fit the window, you can try setting stretch to window manually in dolphin.
					;
					; Setting up custom Wiimote or GCPad profiles:
					; First set UseCustomWiimoteProfiles or UseCustomGCpadProfiles to true in RocketLauncherUI for this module
					; Launch Dolphin manually and goto Options->(Wiimote or Gamecube Pad) Settings and configure all your controls how you want your default setup to look like. This will be used for all games that you don't set a custom profile for. No need to save any profiles.
					; All your controls are stored in WiimoteNew.ini or GCPadNew.ini and get copied to a _Default_(WiimoteNew or GCPadNew).ini on first launch. This ini contains all the controls for all 4 controllers.
					; Do not confuse this with Dolphin's built-in profiles as those only contain info for only one controller. The (WiimoteNew or GCPadNew).ini and all the profiles RocketLauncher uses contain info for all controllers in one file.
					; This new profile now called _Default_(WiimoteNew or GCPadNew).ini will be found in Dolphins settings folder: \Config\Profiles\(Wiimote or GCPad) (RL)\Default.ini
					; For each game or custom control sets you want to use, edit the controls for all the controllers to work for that game and exit Dolphin. Now copy the (WiimoteNew or GCPadNew).ini to the "(Wiimote or GCPad) (RL)" folder and name it whatever you like.
					; In RocketLauncherUI's module settings for Dolphin, Click the Rom Settings tab and add each game from your xml you want to use a this custom profile for.
					; Now for all those games you added, make sure the Profile setting it set to the custom profile you want to load when that game is launched.
					; Any game not added will use the "_Default_(WiimoteNew or GCPadNew).ini" profile RocketLauncher makes on first launch.
					;
					; To Pair a Wiimote:
					; Highly suggest getting a Mayflash DolphinBar as it makes pairing and using wiimotes as easy as with a real Wii: http://www.amazon.com/TOTALCONSOLE-W010-Wireless-Sensor-DolphinBar/dp/B00HZWEB74
					; If using the DolphinBar, just make sure Dolphin is set to continuously scan for wiimotes and set controls to use real wiimotes for as many wiimotes you have.
					; You do not need to pair the wiimote with the PC first as you would with a standard blueooth and wiimote.
					; DolphinBar should be on Mode 4. Wiimotes don't get paired until after Dolphin is running, not before!!
					; After Dolphin is running, press 1+2 on each wiimote and after a few moments, the wiimote will pair and vibrate and one led will lock solid. Do this for each wiimote. That's it!
					;
					; If using a standard LED Bar:
					; Make sure all your wiimotes have already been paired with your PC's bluetooth adapter
					; All 4 leds on the wiimote should be flashing
					; Press your Refresh key (set in RocketLauncherUI for this module) or enable continuous scanning in Dolphin
					; Press 1 + 2 on the wiimote and one led should go solid designating the player number
					;
					; MultiGame:
					; Currently unable to get disc swapping to work. See MultiGame section below for additional details.
					;
					; Netplay:
					; If you're using a GameCube game with saves, synchronize your memory cards, Wii NAND needs to be synchronized, and some settings (such as CPU Clock Override) must be either synchronized or disabled.
					; Because netplay may require different settings than you would normally use with local play, the module will look for any inis in your Dolphin user config folder ending with "_netplay" and use those configs instead of your normal ones.
					; So for example, after you tweak all your dolphin settings for netplay, copy your dolphin.ini to dolphin_netplay.ini in the same folder.
					; When the module launches and you choose multiplayer from RocketLauncher on screen menu, the module will backup dolphin.ini and copy dolphin_network.ini to dolphin.IniDelete
					; On exit, the module will restore your backed up dolphin.ini and any other ini files in this folder (and all subfolders) that had the "_netplay" in the name.
					; Guide on tweaking performance for netplay: https://dolphin-emu.org/docs/guides/netplay-guide/
					; Another guide: https://docs.google.com/document/d/1CIkBAGcf_-kBUa4urn4KUj2U4UA6y_2a7stXJz85yiE/
					;
					; Linking a GameCube game with VBA-M
					; Game tested: Legend of Zelda, The - Four Swords Adventures (USA)
					; VBA-M emulator tested: visualboyadvance-m2.0.0Beta1
					; dolphin emulator tested: dolphin-master-4.0-6725-x64
					; On RocketLaunchUI, dolphin, GameCube Module settings set your VBA-M executable and VBA Bios file path on the VBALink tab.
					; On RocketLaunchUI, dolphin, GameCube, Game name Module Settings enable VBA Link
					; If your Game Boy Advanced Windows appear frozen after the RocketLauncher fade screen loads, increase the value of the VBADelay on GameCube, VBALink settings. Default value is 500 milliseconds.
					; A game with one VBA window will use a two screens bezel file, Bezel [2S].png, the first screen for the GameCube game and the second one for the VBA screen. Two VBAs = Bezel [3S].png, again first screen for the GameCube game and second and third for the VBA screens, and so on.
					;----------------------------------------------------------------------------
					StartModule()
					BezelGui()
					FadeInStart()
					
					primaryExe := new Emulator(emuPath . "\" . executable)			; instantiate emulator executable object
					
					Fullscreen := moduleIni.Read("Settings", "Fullscreen","true","",1)
					UseCustomWiimoteProfiles := moduleIni.Read("Settings", "UseCustomWiimoteProfiles","false","",1)	; set to true if you want to setup custom Wiimote profiles for games
					UseCustomGCPadProfiles := moduleIni.Read("Settings", "UseCustomGCPadProfiles","false","",1)	; set to true if you want to setup custom GCPad profiles for games
					HideMouse := moduleIni.Read("Settings", "HideMouse","true","",1)					; hides mouse cursor in the emu options
					RefreshKey := moduleIni.Read("Settings", "RefreshKey","","",1)						; hotkey to "Refresh" Wiimotes, delete the key to disable it
					Timeout := moduleIni.Read("Settings", "Timeout","5","",1)							; amount in seconds we should wait for the above hotkeys to timeout
					renderToMain := moduleIni.Read("Settings", "Render_To_Main","false","",1)
					enableNetworkPlay := moduleIni.Read("Network", "Enable_Network_Play","false","",1)
					
					;options to Gamecube and VBA Link
					enableVBALink := moduleIni.Read(romName, "enableVBALink", "false","",1)
					VBAExePath := moduleIni.Read("VBA Link", "VBAExePath","","",1)
					VBABiosPath := moduleIni.Read("VBA Link", "VBABiosPath","","",1)
					VBADelay := moduleIni.Read("VBA Link", "VBADelay", 500,"",1)
					
					If (renderToMain = "true") {
						emuPrimaryWindow := new Window(new WindowTitle("Dolphin","wxWindowNR"))	; instantiate primary emulator window object
						emuGameWindow := emuPrimaryWindow
					} Else {
						emuPrimaryWindow := new Window(new WindowTitle("Dolphin","wxWindowNR"))	; instantiate primary emulator window object
						emuPrimaryWindow.ExcludeTitle := "FPS"	; when main window doesn't have the game, FPS will not be on the title bar
						emuGameWindow := new Window(new WindowTitle("FPS","wxWindowNR"))
					}
					emuPrimaryWindow := new Window(new WindowTitle("Dolphin","wxWindowNR"))	; instantiate primary emulator window object
					emuGameWindow := If renderToMain = "true" ? emuPrimaryWindow : new Window(new WindowTitle("FPS","wxWindowNR"))	; Older dolphins used "FPS ahk_class wxWindowClassNR"
					emuScanningWindow := new Window(new WindowTitle("Scanning for ISOs","#32770"))
					emuNetPlaySetupWindow := new Window(new WindowTitle("Dolphin NetPlay Setup","wxWindowNR"))
					emuNetPlayWindow := new Window(new WindowTitle("Dolphin NetPlay","wxWindowNR"))
					emuWiimoteWindow := new Window(new WindowTitle("Dolphin Controller Configuration","#32770"))
					emuOpenROMWindow := new Window(new WindowTitle("Select","#32770"))
					emuErrorWindow1 := new Window(new WindowTitle("Warning","#32770"))
					emuErrorWindow2 := new Window(new WindowTitle("Error","#32770"))
					emuWiimoteWindow.CreateControl("OK")
					
					; Determine where Dolphin is storing its ini, this will act as the base folder for settings and profiles related to this emu
					dolphinININewPath := new File(A_MyDocuments . "\Dolphin Emulator\Config\Dolphin.ini")	; location of Dolphin.ini for v4.0+
					dolphinINIOldPath := new File(emuPath . "\User\Config\Dolphin.ini")	; location of Dolphin.ini prior to v4.0
					portableTxtFile := new File(emuPath . "\portable.txt")
					If (!portableTxtFile.Exist() && dolphinININewPath.Exist())
					{	dolphinBasePath := A_MyDocuments . "\Dolphin Emulator"
						RLLog.Info("Module - Dolphin's base settings folder is not portable and found in: " . dolphinBasePath)
					} Else If (portableTxtFile.Exist() || dolphinINIOldPath.Exist())
					{	dolphinBasePath := emuPath . "\User"
						RLLog.Info("Module - Dolphin's base settings folder is portable and found in: " . dolphinBasePath)
					} Else
						ScriptError("Could not find your Dolphin.ini in either of these folders. Please run Dolphin manually first to create it.`n" . dolphinINIOldPath.FileFullPath . "`n" . dolphinININewPath.FileFullPath)
					dolphinINI := new IniFile(dolphinBasePath . "\Config\Dolphin.ini")
					
					If (enableVBALink = "true"){
						VBAExePath := AbsoluteFromRelative(EmuPath, VBAExePath)
						VBABiosPath := AbsoluteFromRelative(EmuPath, VBABiosPath)
						StringUtils.SplitPath(VBAExePath, VBAFile, VBAPath)
						SelectedNumberofPlayers := NumberOfPlayersSelectionMenu(4)
						If (SelectedNumberofPlayers = 1) {
							enableVBALink := "false"
						} Else {
							; backup original ini
							dolphinINIBackup := new File(dolphinBasePath . "\Config\Dolphin_Backup.ini")
							dolphinINI.Copy(dolphinINIBackup.FileFullPath)
							Loop, % SelectedNumberofPlayers
							{ 	tempCount := A_Index-1
								dolphinINI.Write(5, "Controls", PadType%tempCount%)
							}
						}
					}
					
					If (enableVBALink = "true")
						BezelStart(SelectedNumberofPlayers+1)
					Else
						BezelStart()
					
					If (enableVBALink = "true" and !bezelPath)   ; disabling fullscreen if VBA Link mode
						Fullscreen := "false"
					
					If (renderToMain = "true" && (enableVBALink = "true" || bezelEnabled = "true")) {   ; disabling toolbar and statusbar if bezels or vba link is used as it will show when rendering to the main window
						dolphinINI.Write("False", "Interface", "ShowToolbar")
						dolphinINI.Write("False", "Interface", "ShowStatusbar")
					}
					
					If (renderToMain = "true")
						hideEmuObj := Object(emuScanningWindow,0,emuNetPlayWindow,0,emuNetPlaySetupWindow,0,emuErrorWindow1,0,emuErrorWindow2,0,emuGameWindow,1)
					Else
						hideEmuObj := Object(emuScanningWindow,0,emuNetPlayWindow,0,emuNetPlaySetupWindow,0,emuErrorWindow1,0,emuErrorWindow2,0,emuPrimaryWindow,0,emuGameWindow,1)
					
					7z(romPath, romName, romExtension, sevenZExtractPath)
					
					If StringUtils.Contains(romExtension,"\.zip|\.7z|\.rar")
						ScriptError(MEmu . " does not support compressed roms. Please enable 7z support in RocketLauncherUI to use this module/emu.")
					
					If RefreshKey {
						RefreshKey := xHotKeyVarEdit(RefreshKey,"RefreshKey","~","Add")
						xHotKeywrapper(RefreshKey,"RefreshWiimote")
					}
					
					Fullscreen := If Fullscreen = "true" ? "True" : "False"
					HideMouse := If HideMouse = "true" ? "True" : "False"
					
					networkSession := ""
					If (enableNetworkPlay = "true") {
						RLLog.Info("Module - Network Multi-Player is an available option for " . dbName)
						dolphinNickname := dolphinINI.Read("NetPlay", "Nickname")
						dolphinAddress := dolphinINI.Read("NetPlay", "Address")
						dolphinCPort := dolphinINI.Read("NetPlay", "ConnectPort")
						dolphinHPort := dolphinINI.Read("NetPlay", "HostPort")
						netplayNickname := moduleIni.Read("Network", "NetPlay_Nickname","Player","",1)
						getWANIP := moduleIni.Read("Network", "Get_WAN_IP","false","",1)
						networkPlayers := 4	; Max amount of networkable players
					
						If (getWANIP = "true")
							myPublicIP := GetPublicIP()
					
						defaultServerIP := moduleIni.Read("Network", "Default_Server_IP", myPublicIP,"",1)
						defaultServerPort := moduleIni.Read("Network", "Default_Server_Port","","",1)
						lastIP := moduleIni.Read("Network", "Last_IP", defaultServerIP,"",1)	; does not need to be on the ISD
						lastPort := moduleIni.Read("Network", "Last_Port", defaultServerPort,"",1)	; does not need to be on the ISD
					
						If (netplayNickname != dolphinNickname)
							dolphinINI.Write(netplayNickname, "NetPlay", "Nickname")
					
						MultiplayerMenu(lastIP,lastPort,networkType,networkPlayers,0)
						If networkSession {
							RLLog.Info("Module - Using a Network for " . dbName)
					
							restoreIniObject := Object()	; initialize object
							currentObj := ""
							dolphinConfigPath := dolphinBasePath . "\Config"
							Loop, % dolphinConfigPath . "\*.ini"
							{
								If StringUtils.InStr(A_LoopFileName, "_netplay.ini","","","",0) {
									RLLog.Info("Module - Found a network specific ini: " . A_LoopFileFullPath)
									networkIni%A_Index%File := new File(A_LoopFileFullPath)
									originalIni%A_Index%File := new File(StringUtils.RegExReplace(A_LoopFileFullPath, "_netplay","","",-1,15))
									backupIni%A_Index%File := new File(originalIni%A_Index%File.FileFullPath . ".backup")
									originalIni%A_Index%File.Move(backupIni%A_Index%File,1)	; backup original ini
									networkIni%A_Index%File.Copy(originalIni%A_Index%File)	; copy network ini to original name
								}
							}
							
							moduleIni.Write(lastPort, "GlobalModuleIni", "Network", "Last_Port")
					
							If (networkType = "client") {
								moduleIni.Write(lastIP, "GlobalModuleIni", "Network", "Last_IP")	; Save last used IP and Port for quicker launching next time
								dolphinINI.Write(lastIP, "Network", "Address")
								dolphinINI.Write(lastPort, "Network", "ConnectPort")
							} Else	; server
								dolphinINI.Write(lastPort, "Network", "HostPort")
					
							dolphinINI.Write(romPath, "Network", "ISOPath0")	; makes browser only show the one game we want to play
							dolphinINI.Write(1, "General", "ISOPaths")	; makes browser only show the first path set
							dolphinINI.Write(romPath . "\" . romName . romExtension, "General", "LastFilename")
							RLLog.Info("Module - Starting a network session using the IP """ . networkIP . """ and PORT """ . networkPort . """")
						} Else
							RLLog.Info("Module - User chose Single Player mode for this session")
					}
					
					gcSerialPort := 5	; this puts the BBA network adapter into the serial port. If previous launch was Triforce, AM-Baseboard would be set here and would result in Unknown DVD command errors
					
					; Compare existing settings and if different than desired, write them to the emulator's ini
					dolphinINI.Write(Fullscreen, "Display", "Fullscreen", 1)
					dolphinINI.Write(renderToMain, "Display", "RenderToMain", 1)
					dolphinINI.Write(HideMouse, "Interface", "HideCursor", 1)
					dolphinINI.Write("False", "Interface", "ConfirmStop", 1)
					dolphinINI.Write("False", "Interface", "UsePanicHandlers", 1)
					dolphinINI.Write(gcSerialPort, "Core", "SerialPort1", 1)
					
					 ; Load default or user specified Wiimote or GCPad profiles for launching
					If (StringUtils.InStr(systemName, "wii") && UseCustomWiimoteProfiles = "true")
						ChangeDolphinProfile("Wiimote")
					If (UseCustomGCPadProfiles = "true")
						ChangeDolphinProfile("GCPad")
					
					HideAppStart(hideEmuObj,hideEmu)
					
					If networkSession
						primaryExe.Run()	; must be launched w/o /b for browser list to work
					Else
						primaryExe.Run(" /b /e """ . romPath . "\" . romName . romExtension . """")	; /b = batch (exit dolphin with emu), /e = load file
					
					emuGameWindow.Wait()
					emuGameWindow.Get("ID")
					emuGameWindow.WaitActive()
					
					If networkSession {
						RLLog.Info("Module - Opening NetPlay window")
					
						; Get the 6-letter ID of the game
						If (romExtension = ".wbfs")
							gameID := RLObject.readFileData(romPath . "\" . romName . romExtension,512,6,"UTF8")
						Else If (romExtension = ".iso")
							gameID := RLObject.readFileData(romPath . "\" . romName . romExtension,0,6,"UTF8")
						Else If (romExtension = ".ciso")
							gameID := RLObject.readFileData(romPath . "\" . romName . romExtension,32768,6,"UTF8")
					
						; Must wait for Dolphin to finish scanning isos before netplay window can be opened so the game list is populated. Opening too early and the game list will be blank or partially filled.
						If emuScanningWindow.Exist()
							emuScanningWindow.WaitClose(60)	; wait 60 seconds max. hopefully doesn't take longer than that to scan your isos...
						Else {
							errlvl := emuScanningWindow.Wait(5)	; wait 5 seconds max to appear
							If errlvl
								RLLog.Info("Module - Timed out waiting for ""Scanning for ISOs"" window to appear. It may have finished before it could be detected, moving on.")
							Else
								RLLog.Info("Module - ""Scanning for ISOs"" window found.")
						}
						emuPrimaryWindow.MenuSelectItem("Tools", "Start NetPlay")
						matchMode := A_TitleMatchMode	; store for restoration later
						MiscUtils.SetTitleMatchMode(3)	; changes match mode so title must match exactly
						emuNetPlaySetupWindow.Wait()
						emuNetPlaySetupWindow.WaitActive()
						emuNetPlayWindow.ExcludeTitle := emuNetPlaySetupWindow.WinTitle.GetWIndowTitle()		; set emuNetPlayWindow exclude title for the below command
						If (networkType = "client") {
							RLLog.Info("Module - Clicking Connect button")
					
							emuNetPlaySetupWindow.CreateControl("Button1")		; instantiate new control for button1
							emuErrorWindow1.CreateControl("Button1")
							emuErrorWindow2.CreateControl("Button1")
					
							While !breakLoops {
								emuNetPlaySetupWindow.GetControl("button1").Click()	; click connect button
								RLLog.Info("Module - Waiting for Host to start game")
								errlvl := emuNetPlayWindow.Wait(2)	; waits 2 seconds
								If errlvl {	; 1 if timed out, now check for any error windows and close them
									Loop, 2		; loop through both error windows
										If emuErrorWindow%A_Index%.Exist()	; error windows that can appear when host is not running yet
											emuErrorWindow%A_Index%.GetControl("button1").Click()	; click ok to clear the error
									RLLog.Info("Module - Host not running yet, trying again")
									Continue
								} Else {	; window exists
									RLLog.Info("Module - Connected to host, waiting for host to start game")
									Break
								}
							}
						} Else {	; server
							emuNetPlayWindow.CreateControl("ListBox1")	; create a control called ListBox1
							emuNetPlayWindow.CreateControl("Button8")	; create a control called Button8 (the Host's Start button)
							emuNetPlaySetupWindow.CreateControl("ListBox1")	; create a control called ListBox1
							emuNetPlaySetupWindow.CreateControl("Button3")	; create a control called Button3 (the Host button)
							emuNetPlaySetupWindow.GetControl("ListBox1").Get("List")	; Get the text from the ListBox
							loopList := emuNetPlaySetupWindow.GetControl("ListBox1").List	; can't use this object directly on the Parse Loop below
							Loop, Parse, loopList, `n
							{
								If StringUtils.InStr(A_Loopfield, gameID,"","","",0) {
									idLocation := A_Index	; record the location in the ListBox of our game
									RLLog.Info("Module - Game list shows """ . A_LoopField . """ as item " . A_Index)	; logging each items in ListBox
								}
							}
							If !idLocation {	; game was not found in list
								ScriptError("Could not find your """ . romName . """ in the game selection window for netplay. Possibly the gameID could not be found in your game. Please check your the RocketLauncher log and report this error.",,,,,1)
								Gosub, CloseProcess
								FadeInExit()
								Goto, CloseDolphin
							}
							emuNetPlaySetupWindow.GetControl("ListBox1").Control("Choose",idLocation)	; selects our game in the ListBox
							RLLog.Info("Module - Clicking Host button")
							emuNetPlaySetupWindow.GetControl("Button3").Click()	; click host button
							emuNetPlayWindow.Wait()	; this window should now appear when hosted correctly
							RLLog.Info("Module - Waiting for " . networkPlayers . " players until the game is started")
							While !breakLoops {
								emuNetPlayWindow.GetControl("ListBox1").Get("List")	; Get the text from the ListBox
								If StringUtils.InStr(emuNetPlayWindow.GetControl("ListBox1").List,"[" . networkPlayers . "]","","","",0) {
									RLLog.Info("Module - All players have joined, starting game")
									Break
								}
								TimerUtils.Sleep(100,0)
							}
							emuNetPlayWindow.GetControl("Button8").Click()	; click Start button
						}
						MiscUtils.SetTitleMatchMode(matchMode)	; restore old match mode
					}
					
					
					If (enableVBALink = "true") {
						vbaINI := new IniFile(VBAPath . "\vbam.ini")
						vbaINI.CheckFile()
						vbaINIBackup := new File(VBAPath . "\vbam_Backup.ini")
						vbaINI.Copy(vbaINIBackup.FileFullPath)
						;removing fullscreen from VBA-M
						vbaINI.Write(0, "preferences", "fullScreen")
						;setting other VBA-M ini options
						VBABiosPathDoubleSlash := StringUtils.Replace(VBABiosPath,"\","\\","all")
						vbaINI.Write(0, "preferences", "pauseWhenInactive")
						vbaINI.Write(VBABiosPathDoubleSlash, "GBA", "BiosFile")
						vbaINI.Write(1, "GBA", "LinkAuto")
						vbaINI.Write("127.0.0.1", "GBA", "LinkHost")
						vbaINI.Write(3, "GBA", "LinkType")
						vbaINI.Write(SelectedNumberofPlayers, "preferences", "LinkNumPlayers")
						vbaINI.Write(1, "preferences", "useBiosGBA")
						vbaINI.Write(1, "Display", "Stretch")
						vbaINI.Write(1, "Display", "Scale")
						
						;running VBA-M
						Loop % SelectedNumberofPlayers {
							currentScreen := A_Index + 1
							VBA%currentScreen%Exe := new Process(VBAExePath)	; instantiate a new process for each instance of VBA we need to run
							VBA%currentScreen%Exe.Run(" """ . VBABiosPath . """")
							; msgbox % "PID: " . VBA%A_Index%Exe.PID . "`nVBABiosPath: " . VBABiosPath
							VBA%currentScreen%Window := new Window(new WindowTitle("","","","",VBA%currentScreen%Exe.PID))
							VBA%currentScreen%Window.Wait()
							TimerUtils.Sleep(VBADelay,0)
							bezelBottomOffsetScreen%currentScreen% := 24 ; to hide emu bottom bar
						}
						;waiting for VBA-M windows bios loading
						timeout := A_TickCount
						VBAGBABiosWindow := new Window(new WindowTitle("gba_bios - VisualBoyAdvance-M"))
						Loop {	
							VBAGBABiosWindow.Get("List")	; Get a list of all vba-m hwnd IDs
							If (VBAGBABiosWindow.List[0] = SelectedNumberofPlayers){
								Loop % VBAGBABiosWindow.List[0] {	; loop through each vba-m window
									currentScreen := A_Index + 1
									Screen%currentScreen%ID := VBAGBABiosWindow.List[A_Index]	; record each vba-m window's hwnd ID
								}
								RLLog.Info("Module - gba_bios Loaded")
								Break
							}
							If (timeout < A_TickCount - 10000) {
								RLLog.Warning("Module - Timed out waiting gba_bios to load")
								Break
							}
							TimerUtils.Sleep(100,0)
						}
						;Resizing Windows to fill screen if no bezel file is found
						If !(bezelPath) {
							Loop % (SelectedNumberofPlayers + 1) {
								If (A_Index = 1) {	; the main Dolphin window
									X1 := 0
									Y1 := 0
									W1 := A_ScreenWidth//2
									H1 := A_ScreenHeight
									emuGameWindow.WinTitle.PID := ""	; remove PID from object's WinTitle so only the window hwnd ID is acted upon
									emuGameWindow.RemoveBorder()	
									emuGameWindow.RemoveTitlebar()
									emuGameWindow.ToggleMenu()
									emuGameWindow.Move(X1,Y1,W1,H1)
								} Else {	; the vba-m windows
									X%A_Index% := A_ScreenWidth//2
									Y%A_Index% := (A_Index-2)*(A_ScreenHeight//SelectedNumberofPlayers)
									W%A_Index% := A_ScreenWidth//2
									H%A_Index% := (A_ScreenHeight//SelectedNumberofPlayers)+bezelBottomOffsetScreen%A_Index%
									VBA%A_Index%Window.WinTitle.ID := Screen%A_Index%ID	; set ID of window into object
									VBA%A_Index%Window.WinTitle.PID := ""	; remove PID from object's WinTitle so only the window hwnd ID is acted upon
									VBA%A_Index%Window.RemoveBorder()
									VBA%A_Index%Window.RemoveTitlebar()
									VBA%A_Index%Window.ToggleMenu()
									VBA%A_Index%Window.Move(X%A_Index%,Y%A_Index%,W%A_Index%,H%A_Index%)
								}
							}
							TimerUtils.Sleep(50)
							Loop % SelectedNumberofPlayers {
								currentScreen := A_Index + 1
								VBA%currentScreen%Window.Activate()	; put focus on all the VBA windows
							}
							VBA1Window.Activate()	; put focus on the first VBA window
						}
					}
					
					BezelDraw()
					
					emuGameWindow.Activate()
					
					HideAppEnd(hideEmuObj,hideEmu)
					FadeInExit()
					primaryExe.Process("WaitClose")
					
					CloseDolphin:
					If networkSession {
						Loop {	
							If !IsObject(backupIni%A_Index%File)
								Break
							RLLog.Info("Module - Restoring the original ini: " . backupIni%A_Index%File.FileFullPath . " to " . originalIni%A_Index%File.FileFullPath)
							backupIni%A_Index%File.Move(originalIni%A_Index%File.FileFullPath,1)		; restore all backed up inis
						}
					}
					
					7zCleanUp()
					BezelExit()
					FadeOutExit()
					ExitModule()
					
					
					ChangeDolphinProfile(profileType) {
						Global settingsFile,romName,dolphinBasePath,RLLog,moduleIni
						profile := moduleIni.Read(romName, "profile", "Default","",1)
						RLProfilePath := new Folder(dolphinBasePath . "\Config\Profiles\" . profileType . " (RL)")
						currentProfileFile := new File(dolphinBasePath . "\Config\" . profileType . "New.ini")
						defaultProfileFile := new File(RLProfilePath.FilePath . "\_Default_" . profileType . "New.ini")
						customProfileFile := new File(RLProfilePath.FilePath . "\" . profile . ".ini")
						If !currentProfileFile.Exist() {
							RLLog.Warning("Module - You have custom " . profileType . " profiles enabled, but could not locate " . currentProfileFile.FileFullPath . ". This file stores all your current controls in Dolphin. Please setup your controls in Dolphin first.")
							Return
						}
						If !defaultProfileFile.Exist() {
							RLLog.Warning("Module - Creating initial Default " . profileType . " profile by copying " . profileType . ".ini to " . defaultProfileFile.FileFullPath)
							RLProfilePath.CreateDir()
							currentProfileFile.Copy(defaultProfileFile.FileFullPath)	; create the initial default profile on first launch
						}
						If (profile != "Default" && !customProfileFile.Exist())
							RLLog.Warning("Module - " . romName . " is set to load a custom " . profileType . " profile`, but it could not be found: " . customProfileFile.FileFullPath)
						currentProfileFile.Read()	; read current profile into memory
						customProfileFile.Read()	; read custom profile into memory
						If (currentProfileFile.Text != customProfileFile.Text) {	; if both profiles do not match exactly
							RLLog.Info("Module - Current " . profileType . " profile does not match the one this game should use.")
							If (profile != "Default") {	; if user set to use a custom profile
								RLLog.Info("Module - Copying this defined " . profileType . " profile to replace the current one: " . customProfileFile.FileFullPath)
								customProfileFile.Copy(currentProfileFile.FileFullPath,1)
							} Else {	; load default profile
								RLLog.Info("Module - Copying the default " . profileType . " profile to replace the current one: " . defaultProfileFile.FileFullPath)
								defaultProfileFile.Copy(currentProfileFile.FileFullPath,1)
							}
						} Else
							RLLog.Info("Module - Current " . profileType . " profile is already the correct one for this game, not touching it.")
					}
					
					ConnectWiimote(key) {
						Global Timeout,emuPrimaryWindow,emuGameWindow,emuWiimoteWindow
						If !emuWiimoteWindow.Exist()
						{
							MiscUtils.DetectHiddenWindows("OFF") ; this needs to be off otherwise WinMenuSelectItem doesn't work for some odd reason
							emuPrimaryWindow.Activate()
							emuPrimaryWindow.MenuSelectItem("Options","Controller Settings")
							emuWiimoteWindow.Wait()
							emuWiimoteWindow.WaitActive()
						}
						;emuWiimoteWindow.Activate() ; test if window needs to be active
						If !emuWiimoteWindow.GetControl(key)
							emuWiimoteWindow.CreateControl(key)
						emuWiimoteWindow.GetControl(key).Click()
						emuWiimoteWindow.GetControl("OK").Click()
						emuGameWindow.Activate()
					}
					
					PairWiimote:
						ConnectWiimote("Pair Up")
					Return
					
					RefreshWiimote:
						ConnectWiimote("Refresh")
					Return
					
					HaltEmu:
						If RefreshKey
							XHotKeywrapper(RefreshKey,"RefreshWiimote","OFF")
					Return
					
					MultiGame:
						; MultiGame doesn't work with Dolphin currently because Dolphin hides itself from Winspector Spy and cannot send any commands to the emulator through scripts.
						If (fullscreen = "True")
						{	KeyUtils.SetKeyDelay(50)
							KeyUtils.Send("{Alt Down}{Enter Down}{Enter Up}{Alt Up}")	; go windowed to get the menubar
						}
						If bezelEnabled
							emuGameWindow.ToggleMenu()	; put the menubar back
						; emuPrimaryWindow.MenuSelectItem("File","Change Disc...")
						emuPrimaryWindow.MessageUtils.PostMessage("0x111", "00288")	; Change Disc
						OpenROM(emuOpenROMWindow.WinTitle.GetWindowTitle(), selectedRom)
						emuPrimaryWindow.WaitActive()
						If bezelEnabled
							emuGameWindow.ToggleMenu()	; remove the menubar again
						If (fullscreen = "True")
							KeyUtils.Send("{Alt Down}{Enter Down}{Enter Up}{Alt Up}")	; restore fullscreen
					Return
					
					RestoreEmu:
						If RefreshKey
							XHotKeywrapper(RefreshKey,"RefreshWiimote","ON")
					Return
					
					CloseProcess:
						breakLoops := 1
						FadeOutStart()
						If (enableVBALink = "true") {
							Loop % SelectedNumberofPlayers
							{	currentScreen := A_Index + 1
								;VBA%currentScreen%Window.Activate()
								VBA%currentScreen%Window.Close()
								TimerUtils.Sleep(100,0)
							}
							dolphinINIBackup.Move(dolphinINI.FileFullPath)
							vbaINIBackup.Move(vbaINI,1)
						}
						If networkSession {
							If emuNetPlaySetupWindow.Exist()
								emuNetPlaySetupWindow.Close()
							If emuNetPlayWindow.Exist()
								emuNetPlayWindow.Close()
							If !emuGameWindow.Exist()	; if game never launched, close the main emu window
								emuPrimaryWindow.Close()
						}
						If emuGameWindow.Exist()
							emuGameWindow.Close() ; this needs to close the window the game is running in otherwise dolphin crashes on exit
					Return
					
					; Unused messages for reference from Dolphin v4.0 build 6980 x64:
					; emuPrimaryWindow.PostMessage("0x111", "0261")		; Toggle Fullscreen
					; emuPrimaryWindow.PostMessage("0x111", "0258")		; Toggle Play/Pause
					; emuPrimaryWindow.PostMessage("0x111", "0259")		; Stop
					; emuPrimaryWindow.PostMessage("0x111", "0260")		; Reset
					; emuPrimaryWindow.PostMessage("0x111", "00539")	; Show Toolbar
					; emuPrimaryWindow.PostMessage("0x111", "00540")	; Show Statusbar
					; emuPrimaryWindow.PostMessage("0x111", "05123")	; Refresh List
					; emuPrimaryWindow.PostMessage("0x111", "0305")		; Change Disc
					; emuPrimaryWindow.PostMessage("0x111", "00218")	; Load State Slot 1
					; emuPrimaryWindow.PostMessage("0x111", "00227")	; Load State Slot 10
					; emuPrimaryWindow.PostMessage("0x111", "00208")	; Save State Slot 1
					; emuPrimaryWindow.PostMessage("0x111", "00217")	; Save State Slot 10
					; emuPrimaryWindow.PostMessage("0x111", "00303")	; Start Netplay
					; emuPrimaryWindow.PostMessage("0x111", "05000")	; Open
					
					; Unused messages for reference from Dolphin v4.0.2 x86:
					; emuPrimaryWindow.PostMessage("0x111", "00248")	; Toggle Fullscreen
					; emuPrimaryWindow.PostMessage("0x111", "00245")	; Toggle Play/Pause
					; emuPrimaryWindow.PostMessage("0x111", "00246")	; Stop
					; emuPrimaryWindow.PostMessage("0x111", "00247")	; Reset
					; emuPrimaryWindow.PostMessage("0x111", "00501")	; Show Toolbar
					; emuPrimaryWindow.PostMessage("0x111", "00502")	; Show Statusbar
					; emuPrimaryWindow.PostMessage("0x111", "00217")	; Load State Slot 1
					; emuPrimaryWindow.PostMessage("0x111", "00226")	; Load State Slot 10
					; emuPrimaryWindow.PostMessage("0x111", "00207")	; Save State Slot 1
					; emuPrimaryWindow.PostMessage("0x111", "00216")	; Save State Slot 10
					; emuPrimaryWindow.PostMessage("0x111", "00286")	; Start Netplay
					; emuPrimaryWindow.PostMessage("0x111", "05000")	; Open
					; emuPrimaryWindow.PostMessage("0x111", "05006")	; Exit

17:53:23:417 | RL |      INFO  | +32    | BuildScript - Loaded Multi-Player scripts
17:53:23:419 | RL |      INFO  | +0     | BuildScript - Loaded Statistics.ahk script
17:53:23:419 | RL |   WARNING  | +0     | BuildScript - "C:\RocketLauncher\Lib\User Functions.ahk" not found
17:53:23:419 | RL |      INFO  | +0     | BuildScript - Finished injecting functions into module
17:53:23:421 | RL |      INFO  | +0     | Main - Module is built
17:53:23:421 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\AutoHotkey.dll exists
17:53:23:423 | RL |      INFO  | +0     | Main - Running module
17:53:23:640 | MD |      INFO  | +N/A   | Module initialized
17:53:23:643 | MD |      INFO  | +0     | StartModule - Started
17:53:23:643 | MD |      INFO  | +0     | StartModule - MEmu: Dolphin
					MEmuV: v4.0 r6928
					MURL: https://dolphin-emu.org/
					MAuthor: djvj & bleasby
					MVersion: 2.1.9
					MCRC: 48F41AEA
					iCRC: F063B9AF
					MID: 
					MSystem: "Nintendo Gamecube","Nintendo Wii","Nintendo WiiWare"
17:53:23:643 | MD |      INFO  | +0     | StartModule - You have a supported System Name for this module: "Nintendo GameCube"
17:53:23:643 | MD |      INFO  | +0     | PluginInit - Started
17:53:23:643 | MD |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\RocketLauncherUI\Databases\Nintendo GameCube\Nintendo GameCube.xml exists
17:53:23:693 | MD |      INFO  | +63    | PluginInit - Ended
17:53:23:697 | MD |      INFO  | +0     | StartModule - Ended
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - Fullscreen: true (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - UseCustomWiimoteProfiles: false (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - UseCustomGCPadProfiles: false (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - HideMouse: true (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - RefreshKey: (NO VALUE)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - Timeout: 5 (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - Render_To_Main: false (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - Enable_Network_Play: false (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - enableVBALink: false (DEFAULT)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - VBAExePath: (NO VALUE)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - VBABiosPath: (NO VALUE)
17:53:23:697 | MD |      INFO  | +0     | RIniFile.Read - Module - VBADelay: 500 (DEFAULT)
17:53:23:698 | MD |      INFO  | +0     | Module - Dolphin's base settings folder is not portable and found in: C:\Users\odonnellj\Documents\Dolphin Emulator
17:53:23:704 | MD |      INFO  | +0     | Process.Run - Running: C:\Emulators\Dolphin\Dolphin.exe /b /e "G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"
17:53:23:782 | MD |      INFO  | +78    | Window.Wait - Waiting for window "FPS ahk_class wxWindowNR"
17:53:33:897 | MD |      INFO  | +10125 | Window.WaitActive - Waiting for "FPS ahk_class wxWindowNR"
17:53:34:145 | MD |      INFO  | +250   | Process.Process - "WaitClose" "Dolphin.exe" 
18:12:11:290 | MD |     ERROR  | +1117141 | 2
18:12:11:290 | MD |      INFO  | +0     | CloseProcess - Started, user requested to end launched application
18:12:12:521 | MD |      INFO  | +1234  | CloseProcess - Ended
18:12:13:071 | MD |      INFO  | +547   | ExitModule - Started
18:12:13:071 | MD |      INFO  | +0     | Starting Updating Statistics:
18:12:13:322 | MD |      INFO  | +250   | Game section statistics updated.
18:12:13:325 | MD |      INFO  | +0     | ExitModule - Ended
End of Module Logs
18:12:13:419 | RL |      INFO  | +1130000 | Main - Module ended, exiting RocketLauncher normally
18:12:13:419 | RL |      INFO  | +0     | ExitScript - Started
18:12:13:455 | RL |      INFO  | +31    | SystemCursor - Restoring mouse cursor
18:12:13:490 | RL |      INFO  | +47    | ExitScript - Restored cursor

John
 

bleasby

RocketLauncher Developer
Developer
Below is my RL log from the time when I tried to launch Castle Crashers via Kodi/RL. From what I can see in this log, the command never even made it to RL.

What do you mean? From your log RL received the command line to run Super Smash Bros and not Castle Crashers. Also, you can clearly see that Rl received the command line to run the game on your log:

From your log, RL received this on your launch:

Code:
17:53:23:258 | RL |      INFO  | +0     | Main - Raw CLI received: "-s Nintendo GameCube -r G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"

and it used this command line to run your emulator:

Code:
17:53:23:704 | MD |      INFO  | +0     | Process.Run - Running: C:\Emulators\Dolphin\Dolphin.exe /b /e "G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"

about the other issues, it is impossible to help without the logs from your run attempts.
 

johnodon

New member
RL Member
What do you mean? From your log RL received the command line to run Super Smash Bros and not Castle Crashers. Also, you can clearly see that Rl received the command line to run the game on your log:

From your log, RL received this on your launch:

Code:
17:53:23:258 | RL |      INFO  | +0     | Main - Raw CLI received: "-s Nintendo GameCube -r G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"

and it used this command line to run your emulator:

Code:
17:53:23:704 | MD |      INFO  | +0     | Process.Run - Running: C:\Emulators\Dolphin\Dolphin.exe /b /e "G:\Games\Nintendo Gamecube\Super Smash Bros. Melee (USA) (En,Ja) (v1.00).iso"

about the other issues, it is impossible to help without the logs from your run attempts.

Yes...emulators seem to work fine. But I do not see an RL log entry from when I tried to run the Castle Crashers PC game. It should be at the very bottom of the RL log I posted above but is not there.

John
 
Last edited:

bleasby

RocketLauncher Developer
Developer
Yes...emulators seem to work fine. But I do not see an RL log entry from when I tried to run the Castle Crashers PC game. It should be at the very bottom of the RL log I posted above but is not there.

No, it shouldn't be at the bottom. The RL log is created from zero for every game run.
Any RL log will never have any reference to the previous games that you run.

What is happening is that you are not even sending any command line to RL from your FE.

Double check the FE configs, it is definitely something going on with it.

I am sorry but I am not familiarized with the AdvancedLauncher to give you any help on that.
 

johnodon

New member
RL Member
I agree. I don't think it is an RL issue. I just can't understand why every emulator I have setup to run via RL in AL works fine but PC games give me grief even though the command lines are identical. My only goal of posting here was to see if anyone else has been able to do this successfully with PC Games.

I'm going to try to point RL to the game EXE rather than the LNK to see if that makes a difference.

John
 

johnodon

New member
RL Member
Update:

So it appears that my issues may be centered around the fact that I am trying to use LNK (shortcut) files to launch games via AL/RL. I deleted the RL log file and tried to launch a PC game. A new RL log was not even created and I got the error show in the first post. So, this indicates that the error is occurring prior to RL being invoked.

I added a new PC game to my AL library but this time I pointed directly to the EXE. This time RL was invoked but naturally failed to load the game since I don't have that game in my PC Games DB in RL (see log below).

So, I need to figure out a way to make LNK files work with AL/RL so I don't have to hunt and peck for every PC game EXE. :)

Code:
14:51:46:064 | RL |      INFO  | +N/A   | Main - RocketLauncher v1.1.1.1 (www.rlauncher.com)
14:51:46:725 | RL |      INFO  | +656   | Main - System Specs:
					RocketLauncher Dir: C:\RocketLauncher
					RocketLauncher is: 32-bit
					OS: Microsoft Windows 10 Pro
					SKU: Professional
					Total Memory: 8188.17 MB
					Free Memory: 6472.04 MB
					Used Memory: 1716.129 MB
					SystemType: 64-bit
					Physical Processors: 1
					Logical Processors: 8
					GPU 1 Name: NVIDIA GeForce GTX 950
					GPU 1 RAM: -2048.00 MB
					GPU 1 Driver Version: 21.21.13.7270
					Sound 1 Device: NVIDIA High Definition Audio
					Sound 1 Status: Enabled
					OS Language: English_United_States
					System Locale: en-US
					Formats Locale: en-US
					Windows UI Language: en-US
					Text Encoding: Windows-1252
					OS Admin Status: No
					RL Compatibility Flags:  HIGHDPIAWARE
					Latest .Net Version: v4.0.30319
					Monitor #1 (\\.\DISPLAY1): 1920x1080 (1920x1020 work) [32bit] [60hz] [Landscape]  (Primary)
					Current AHK Desktop Width: 1920
					Current AHK Desktop Height: 1080
					Monitor #1 DPI: 150
					ErrorMode: 0
					AutoHotkey Path: 
					AHK Version: 1.1.13.00
					Unicode: No
14:51:46:725 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\RocketLauncher.exe exists
14:51:46:726 | RL |      INFO  | +16    | Main - Raw CLI received: "-s PC Games -r G:\Disney Interactive\Disney Infinity 3.0 PC\DisneyInfinity3.exe"
14:51:46:727 | RL |      INFO  | +0     | Main - Loading Front End Plugin: "RocketLauncherUI"
14:51:46:727 | RL |      INFO  | +0     | Process.Process - "Exist" "RocketLauncherUI.exe" 
14:51:46:730 | RL |      INFO  | +0     | Main - RocketLauncherUI.exe is not currently running
14:51:46:730 | RL |      INFO  | +0     | Main - RocketLauncher received "PC Games" and "DisneyInfinity3"
14:51:46:740 | RL |      INFO  | +0     | Main - Did not find a "C:\RocketLauncher\Settings\PC Games\Game Options.ini" file, skipping any game-specific options.
14:51:46:740 | RL |      INFO  | +0     | Main - DisneyInfinity3 is using the default emulator: PCLauncher
14:51:46:741 | RL |      INFO  | +0     | Main - Checking for a [PCLauncher] section in C:\RocketLauncher\Settings\PC Games\Emulators.ini
14:51:46:741 | RL |      INFO  | +0     | Main - Checking for a [PCLauncher] section in C:\RocketLauncher\Settings\Global Emulators.ini
14:51:46:742 | RL |      INFO  | +16    | Main - Found [PCLauncher] in C:\RocketLauncher\Settings\Global Emulators.ini
14:51:46:743 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Modules\PCLauncher\PCLauncher.ahk exists
14:51:46:748 | RL |      INFO  | +0     | Main - CRC Check - CRC matches, this is an official unedited module.
14:51:46:748 | RL |      INFO  | +0     | Main - DisneyInfinity3 will use module: C:\RocketLauncher\Modules\PCLauncher\PCLauncher.ahk
14:51:46:753 | RL |   WARNING  | +0     | RIniLoadVar - Created missing Global ini key: "Fade_Click_Through " in section: "Fade" in "C:\RocketLauncher\Settings\Global RocketLauncher.ini"
14:51:46:754 | RL |   WARNING  | +0     | RIniLoadVar - Created missing System ini key: "Fade_Click_Through " in section: "Fade" in "C:\RocketLauncher\Settings\PC Games\RocketLauncher.ini"
14:51:46:795 | RL |      INFO  | +46    | Main - Using SkipChecks method "Rom and Emu" or emuName = "PCLauncher".
14:51:46:795 | RL |      INFO  | +0     | Main - INI Keys read
14:51:46:796 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Module Extensions\7z.exe exists
14:51:46:797 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\Module Extensions\7z.dll exists
14:51:46:806 | RL |      INFO  | +16    | Main - "DisneyInfinity3" does not qualify for MultiGame. Only roms with any of these strings in their name are acceptable: \(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side
14:51:46:806 | RL |      INFO  | +0     | CheckPaths - Started
14:51:46:806 | RL |      INFO  | +0     | CheckPaths - Not scanning to find the rom because a full path was supplied to RocketLauncher via CLI
14:51:46:806 | RL |      INFO  | +0     | CheckPaths - Ended
14:51:46:808 | RL |      INFO  | +0     | BuildScript - User Variables:
					;----------------------------------------------------------------------------
					; INJECTED VARIABLES
					;----------------------------------------------------------------------------
					
					#NoTrayIcon
					#InstallKeybdHook
					MiscUtils.DetectHiddenWindows("On")
					SetTitleMatchMode, 2
					SendMode, Event
					0 = 4
					rlPath = C:\RocketLauncher
					pluginPath = C:\RocketLauncher\Plugins
					pluginName = RocketLauncherUI
					pluginExt = .plugin
					contextOnExit = 
					rlMode = 
					rlTitle = RocketLauncher
					rlVersion = 1.1.1.1
					rlAuthor = djvj
					rlURL = www.rlauncher.com
					langFile = C:\RocketLauncher\Data\Language\Localization.ini
					primMonitor = 1
					frontendPID = 0
					frontendPath = C:\RocketLauncher\RocketLauncherUI
					frontendExe = RocketLauncherUI.exe
					frontendExt = exe
					frontendName = RocketLauncherUI
					frontendDrive = C
					exitEmulatorKey = Esc|1joy7&1joy8|2joy7&2joy8
					restoreFE = false
					exitScriptKey = ~q & ~s
					toggleCursorKey = ~e & ~t
					emuFullPath = 
					emuPath = 
					emuName = PCLauncher
					emuExt = 
					baseRomPath = 
					romPath = G:\Disney Interactive\Disney Infinity 3.0 PC
					romPathFromIni = G:\Games\PC Games
					romExtension = .exe
					romExtensionOrig = .exe
					romExtensions = lnk
					executable = 
					systemDbName = PC Games
					systemName = PC Games
					dbPath = G:\Disney Interactive\Disney Infinity 3.0 PC
					dbName = DisneyInfinity3
					dbExt = exe
					romName = DisneyInfinity3
					romMapPath = 
					romMappingEnabled = false
					romMappingLaunchMenuEnabled = false
					romMappingFirstMatchingExt = false
					romMappingShowAllRomsInArchive = true
					romMappingNumberOfGamesByScreen = 7
					romMappingHideParent = false
					romMappingMenuWidth = 400
					romMappingMenuMargin = 65
					romMappingTextFont = Bebas Neue
					romMappingTextOptions = cFFFFFFFF r4 s60 Bold
					romMappingDisabledTextColor = ff888888
					romMappingTextSizeDifference = 7
					romMappingTextMargin = 15
					romMappingTitleTextFont = Bebas Neue
					romMappingTitleTextOptions = cFFFFFFFF r4 s90 Bold
					romMappingTitle2TextFont = Bebas Neue
					romMappingTitle2TextOptions = cFFFFFFFF r4 s22 Bold
					romMappingGameInfoTextFont = Bebas Neue
					romMappingGameInfoTextOptions = cFFFFFFFF r4 s22 Regular
					romMappingGameNameTextFont = Bebas Neue
					romMappingGameNameTextOptions = cFFFFFFFF r4 s40 Regular
					romMappingBackgroundBrush = aa000000
					romMappingColumnBrush = 33000000
					romMappingButtonBrush1 = 6f000000
					romMappingButtonBrush2 = 33000000
					romMappingBackgroundAlign = Stretch and Lose Aspect
					romMappingMenuFlagWidth = 55
					romMappingMenuFlagSeparation = 7
					romMappingDefaultMenuList = FullList
					romMappingSingleFilteredRomAutomaticLaunch = false
					altArchiveNameOnly = 
					altRomNameOnly = 
					altArchiveAndRomName = 
					altArchiveAndManyRomNames = 
					altRomNamesOnly = 
					romMapScenario = 
					skipchecks = false
					romMatchExt = false
					blockInputTime = 0
					blockInputFile = C:\RocketLauncher\Module Extensions\BlockInput.exe
					errorLevelReporting = false
					lockLaunch = false
					lockLaunchGame = 
					screenRotationAngle = 0
					screenRotationAngleGame = 
					setResolution = 
					logFile = 
					logLabel := ["    INFO"," WARNING","   ERROR","   DEBUG","   TRACE"]
					logLevel = 3
					logShowDebugConsole = false
					logShowCommandWindow = false
					logCommandWindow = false
					logIncludeModule = true
					logIncludeFileProperties = true
					logIncludeDLLLogs = false
					errorSounds = true
					rlDebugConsoleStdout = 
					sysLang = English_United_States
					sysType = 64-bit
					broadcastWindowTitle = 
					navUpKey = Up
					navDownKey = Down
					navLeftKey = Left
					navRightKey = Right
					navSelectKey = Enter
					navP2UpKey = Numpad8
					navP2DownKey = Numpad2
					navP2LeftKey = Numpad4
					navP2RightKey = Numpad6
					navP2SelectKey = NumpadEnter
					originalWidth = 1920
					originalHeight = 1080
					vdEnabled = false
					vdFullPath = 
					vdUseSCSI = true
					vdDriveLetter = 
					vdDriveLetterScsi = 
					vdAddDrive = true
					demulShooterPath = 
					servoStikEnabled = false
					servoStikExitMode = false
					ledblinkyEnabled = false
					ledblinkySystemName = 
					ledblinkyFullPath = 
					ledblinkyProfilePath = C:\RocketLauncher\Profiles\LEDBlinky
					ledblinkyRLProfile = C:\RocketLauncher\Profiles\LEDBlinky\RocketLauncher
					winIPACFullPath = 
					ultraMapEnabled = false
					ultraMapFullPath = 
					emuIdleShutdown = 0
					launchPasswordHash = UpUpDownDownLeftRightLeftRight
					hideCursor = false
					hideEmu = false
					hideFE = false
					suspendFE = false
					fadeIn = false
					fadeInDuration = 500
					fadeInTransitionAnimation = DefaultAnimateFadeIn
					fadeInDelay = 0
					fadeInExitDelay = 0
					fadeOutExitDelay = 0
					fadeOut = false
					fadeOutExtraScreen = false
					fadeOutDuration = 500
					fadeOutTransitionAnimation = DefaultAnimateFadeOut
					fadeOutDelay = 0
					fadeLyrInterpolation = 7
					fadeMuteEmulator = false
					fadeUseBackgrounds = false
					fadeClickThrough = false
					fadeSounds = true
					fade7zProgressMode = extraction
					fadeWidthBaseRes = 1920
					fadeHeightBaseRes = 1080
					fadeLyr1Color = FF000000
					fadeLyr1AlignImage = Stretch and Lose Aspect
					fadeLyr2Pos = Stretch and Lose Aspect
					fadeLyr2X = 0
					fadeLyr2Y = 0
					fadeLyr2W = 
					fadeLyr2H = 
					fadeLyr2Adjust = 1
					fadeLyr2PicPad = 0
					fadeLyr2Prefix = Extra Layer 1 - Console
					fadeLyr3Pos = Center
					fadeLyr3X = 450
					fadeLyr3Y = 450
					fadeLyr3W = 
					fadeLyr3H = 
					fadeLyr3Adjust = 1
					fadeLyr3PicPad = 0
					fadeLyr3Speed = 750
					fadeLyr3Animation = DefaultFadeAnimation
					fadeLyr37zAnimation = DefaultFadeAnimation
					fadeLyr3Type = imageandbar
					fadeLyr3ImgFollow7zProgress = true
					fadeLyr3Repeat = 1
					fadeLyr3BackImageTransparency = 30
					fadeLyr3StaticPos = No Alignment
					fadeLyr3StaticX = 0
					fadeLyr3StaticY = 870|1575
					fadeLyr3StaticW = 
					fadeLyr3StaticH = 
					fadeLyr3StaticAdjust = 1
					fadeLyr3StaticPicPad = 0
					fadeLyr3StaticPrefix = Info Bar
					fadeLyr4Adjust = 1
					fadeLyr4X = 1792|952
					fadeLyr4Y = 891|1596
					fadeLyr4W = 128
					fadeLyr4H = 
					fadeLyr4Pos = No Alignment
					fadeLyr4FPS = 50
					fadeLyr4PicPad = 0
					fadeTranspGifColor = FFFFFF
					fadeBarWindow = Image
					fadeBarWindowX = 
					fadeBarWindowY = 
					fadeBarWindowW = 900
					fadeBarWindowH = 
					fadeBarWindowR = 30
					fadeBarWindowM = 30
					fadeBarWindowHatchStyle = 8
					fadeBar = 7zOnly
					fadeProgressDuration = 0
					fadeBarBack = true
					fadeBarBackColor = FF555555
					fadeBarH = 30
					fadeBarR = 10
					fadeBarColor = DD00BFFF
					fadeBarHatchStyle = 8
					fadeBarPercentageText = true
					fadeBarInfoText = true
					fadeBarXOffset = 0
					fadeBarYOffset = 150
					fadeRomInfoDescription = filtered text
					fadeRomInfoSystemName = image
					fadeRomInfoYear = text with label
					fadeRomInfoDeveloper = text with label
					fadeRomInfoPublisher = text with label
					fadeRomInfoGenre = disabled
					fadeRomInfoRating = image
					fadeRomInfoOrder = Description|SystemName|Year|Developer|Genre|Rating|Publisher
					fadeRomInfoTextPlacement = User Defined
					fadeRomInfoTextMargin = 7
					fadeRomInfoText1Options = w1600|787 h90 x165 y870|1575 cFFE1E1E1 r4 s90 Left Regular
					fadeRomInfoText2Options = w400 x8 y15 cFF555555 r4 s60 Bold
					fadeRomInfoText3Options = w310 x165 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText4Options = w1305|492 h66 x460 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText5Options = cFF555555 r4 s42 Bold
					fadeRomInfoText6Options = h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular
					fadeRomInfoText7Options = h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular
					fadeStats_Number_of_Times_Played = text with label
					fadeStats_Last_Time_Played = text with label
					fadeStats_Average_Time_Played = text with label
					fadeStats_Total_Time_Played = text with label
					fadeStats_System_Total_Played_Time = text with label
					fadeStats_Total_Global_Played_Time = text with label
					fadeStatsInfoOrder = Number_of_Times_Played|Last_Time_Played|Average_Time_Played|Total_Time_Played|System_Total_Played_Time|Total_Global_Played_Time
					fadeStatsInfoTextPlacement = topRight
					fadeStatsInfoTextMargin = 7
					fadeStatsInfoText1Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText2Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText3Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText4Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText5Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText6Options = cFFB4B4B4 r4 s22 Bold
					fadeText1X = 0
					fadeText1Y = 0
					fadeText1Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText1 = Loading Game
					fadeText2X = 0
					fadeText2Y = 0
					fadeText2Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText2 = Extraction Complete, Ready
					fadeText3 = Loading Game
					fadeText4 = Loading Complete
					fadeFont = Bebas Neue
					fadeSystemAndRomLayersOnly = false
					fadeExtractionTime = disabled
					fadeExtractionTimeTextX = 0
					fadeExtractionTimeTextY = 0
					fadeExtractionTimeTextOptions = cFF555555 r4 s20 Bold
					fadeInterruptKey = 
					detectFadeErrorEnabled = true
					fadeImgPath = C:\RocketLauncher\Media\Fade
					RLDataPath = C:\RocketLauncher\Data
					RLMediaPath = C:\RocketLauncher\Media
					RLErrSoundPath = C:\RocketLauncher\Media\Sounds\Error
					modulesPath = C:\RocketLauncher\Modules
					moduleFullName = C:\RocketLauncher\Modules\PCLauncher\PCLauncher.ahk
					moduleName = PCLauncher
					modulePath = C:\RocketLauncher\Modules\PCLauncher
					moduleExtension = ahk
					moduleExtensionsPath = C:\RocketLauncher\Module Extensions
					libPath = C:\RocketLauncher\Lib
					sevenZEnabled = false
					sevenZPath = C:\RocketLauncher\Module Extensions\7z.exe
					sevenZDllPath = C:\RocketLauncher\Module Extensions\7z.dll
					sevenZExtractPath = C:\Users\odonnellj\AppData\Local\Temp\HS
					sevenZExtractPathOrig = 
					sevenZAttachSystemName = false
					sevenZDelTemp = true
					sevenZFormats = .zip|.rar|.7z|.lzh|.gzip|.tar
					sevenZFormatsNoP = zip|rar|7z|lzh|gzip|tar
					sevenZFormatsRegEx = \.zip|\.rar|\.7z|\.lzh|\.gzip|\.tar
					7zExtractPath = C:\Users\odonnellj\AppData\Local\Temp\HS
					mgEnabled = false
					mgKey = ~NumpadSub
					mgBackgroundColor = FF000000
					mgSidePadding = 0.2
					mgWidthBaseRes = 1920
					mgHeightBaseRes = 1080
					mgYOffset = 500|800
					mgFont = Arial
					mgText1Options = x10p y250|500 w80p Center cBBFFFFFF r4 s100 BoldItalic
					mgText1Text = Please select a game
					mgText2Options = w96p cFFFFFFFF r4 s50 Center BoldItalic
					mgText2Offset = 100
					mgUseSound = true
					mgSoundfreq = 300
					mgExitEffect = none
					mgSelectedEffect = rotate
					mgUseGameArt = false
					mgCandidate = 
					mgValidTypes = \(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side
					mgOnLaunch = false
					pauseEnabled = false
					pauseKey = ~NumpadAdd
					pauseBackToMenuBarKey = X
					pauseZoomInKey = C
					pauseZoomOutKey = V
					pauseScreenshotKey = ~PrintScreen
					pauseHiToTextPath = C:\RocketLauncher\Module Extensions\HiToText.exe
					pauseSaveStateKeyCodes = 
					pauseLoadStateKeyCodes = 
					keyboardEncoder = 
					keyboardEncoderEnabled = false
					keymapperEnabled = false
					keymapperAHKMethod = false
					keymapper = xpadder
					xpadderFullPath = C:\Utilities\Xpadder\xpadder.exe
					joyToKeyFullPath = C:\Utilities\JoyToKey\JoyToKey.exe
					profilePath = C:\RocketLauncher\Profiles
					keymapperProfilePath = C:\RocketLauncher\Profiles\xpadder
					keymapperFrontEndProfileName = RocketLauncherUI
					keymapperFrontEndProfile = false
					keymapperRocketLauncherProfileEnabled = false
					joyIDsEnabled = false
					joyIDsPreferredControllersGlobal = 
					joyIDsPreferredControllersSystem = use_global
					joyIDsPreferredControllersOnExit = 
					CustomJoyNamesEnabled = false
					CustomJoyNames = 
					rotateMethod = false
					FEProfile = C:\RocketLauncher\Profiles\xpadder\RocketLauncherUI
					defaultProfile = C:\RocketLauncher\Profiles\xpadder\_Default
					systemProfile = C:\RocketLauncher\Profiles\xpadder\PC Games
					xPadderSystemProfile = C:\RocketLauncher\Profiles\xpadder\PC Games\_Default
					emuProfile = C:\RocketLauncher\Profiles\xpadder\PC Games\PCLauncher
					romProfile = C:\RocketLauncher\Profiles\xpadder\PC Games\DisneyInfinity3
					RocketLauncherProfile = C:\RocketLauncher\Profiles\xpadder\RocketLauncher
					blankProfile = C:\RocketLauncher\Profiles\xpadder\_Default\blank
					ahkFEProfile = C:\RocketLauncher\Profiles\AHK\RocketLauncherUI
					ahkDefaultProfile = C:\RocketLauncher\Profiles\AHK\_Default
					ahkSystemProfile = C:\RocketLauncher\Profiles\AHK\PC Games
					ahkEmuProfile = C:\RocketLauncher\Profiles\AHK\PC Games\PCLauncher
					ahkRomProfile = C:\RocketLauncher\Profiles\AHK\PC Games\DisneyInfinity3
					ahkRocketLauncherProfile = C:\RocketLauncher\Profiles\AHK\RocketLauncher
					bezelEnabled = false
					bezelICEnabled = false
					shaderName = false
					shaderColor = 
					shaderTransparency = 
					statisticsEnabled = true
					pressDuration = -1
					emuVolume = 1
					dxwndIni = C:\RocketLauncher\Module Extensions\dxwnd\dxwnd.ini
					dxwndFullPath = C:\RocketLauncher\Module Extensions\dxwnd\dxwnd.exe
					qResFullPath = C:\RocketLauncher\Module Extensions\QRes.exe
					mon1O = 
					pacDrivedllFile = C:\RocketLauncher\Module Extensions\PacDrive32.dll
					userFadeAnimIniFile = C:\RocketLauncher\Lib\User Fade Animations.ini
					testFile = 
					testDuration = 
					initialErrorMode = 0

14:51:46:816 | RL |      INFO  | +0     | BuildScript - Loaded XHotkey Init.ahk scripts
14:51:46:816 | RL |      INFO  | +0     | BuildScript - Loaded Statistics Init.ahk scripts
14:51:46:816 | RL |   WARNING  | +0     | BuildScript - "C:\RocketLauncher\Lib\User Functions Init.ahk" not found
14:51:46:816 | RL |      INFO  | +0     | BuildScript - Validating module
14:51:46:820 | RL |      INFO  | +16    | BuildScript - Validation complete
14:51:46:820 | RL |      INFO  | +0     | BuildScript - Module:
					MEmu = PCLauncher
					MEmuV =  N/A
					MURL = http://www.rlauncher.com/wiki/index.php?title=PCLauncher
					MAuthor = djvj
					MVersion = 2.2.6
					MCRC = 64F63B83
					iCRC = 6B31C137
					mId = 635243126483565041
					MSystem = "American Laser Games","Arcade PC","Doujin Soft","Examu eX-BOARD","Fan Remakes","Games for Windows","Konami e-Amusement","Konami Bemani","Microsoft Windows","PCLauncher","PC Games","Singstar","Steam","Steam Big Picture","Taito Type X","Taito Type X2","Touhou","Touhou Project","Ultrastar","Ultrastar Deluxe","Windows Games"
					;----------------------------------------------------------------------------
					; Notes:
					; Use the examples in the ini, in your Modules\PCLauncher\ folder, to add more applications.
					; PCLauncher supports per-System inis. Copy your PCLauncher ini in the same folder and rename it to match the System's Name. Use this if you have games with the same name across multiple systems.
					; Read the tooltips for each module setting in RocketLauncherUI for the definitions of each key and help using them.
					; For information on how to use this module and what all the settings do, please see http://www.rlauncher.com/wiki/index.php?title=PCLauncher
					;----------------------------------------------------------------------------
					StartModule()
					
					moduleIni.CheckFile("Could not find """ . moduleIni.FileFullPath . """`n`nRocketLauncherUI will create this file when you configure your first game to be used with the " . MEmu . " module.")
					
					Application := moduleIni.Read(dbName, "Application","","",1)
					AppWaitExe := moduleIni.Read(dbName, "AppWaitExe","","",1)
					DiscImage := moduleIni.Read(dbName, "DiscImage","","",1)
					DXWndGame := moduleIni.Read(dbName, "DXWndGame","","",1)
					DXWndMaximizeWindow := moduleIni.Read(dbName, "DXWndMaximizeWindow","","",1)
					ExitMethod := moduleIni.Read(dbName, "ExitMethod","","",1)
					FadeTitle := moduleIni.Read(dbName, "FadeTitle","","",1)
					FadeTitleWaitTillActive := moduleIni.Read(dbName, "FadeTitleWaitTillActive","true","",1)
					FadeTitleTimeout := moduleIni.Read(dbName, "FadeTitleTimeout","","",1)
					FadeInExitSleep := moduleIni.Read(dbName, "FadeInExitSleep","","",1)
					HideConsole := moduleIni.Read(dbName, "HideConsole","","",1)
					OriginGame := moduleIni.Read(dbName, "OriginGame","","",1)
					Parameters := moduleIni.Read(dbName, "Parameters","","",1)
					PostLaunch := moduleIni.Read(dbName, "PostLaunch","","",1)
					PostLaunchParameters := moduleIni.Read(dbName, "PostLaunchParameters","","",1)
					PostLaunchSleep := moduleIni.Read(dbName, "PostLaunchSleep","","",1)
					PostExit := moduleIni.Read(dbName, "PostExit","","",1)
					PostExitParameters := moduleIni.Read(dbName, "PostExitParameters","","",1)
					PostExitSleep := moduleIni.Read(dbName, "PostExitSleep","","",1)
					PreLaunch := moduleIni.Read(dbName, "PreLaunch","","",1)
					PreLaunchParameters := moduleIni.Read(dbName, "PreLaunchParameters","","",1)
					PreLaunchMode := moduleIni.Read(dbName, "PreLaunchMode","","",1)
					PreLaunchSleep := moduleIni.Read(dbName, "PreLaunchSleep","","",1)
					SteamID := moduleIni.Read(dbName, "SteamID","","",1)
					WorkingFolder := moduleIni.Read(dbName, "WorkingFolder","","",1)
					
					If (!Application && !SteamID) { ; This app cannot be launched if no info exists already in the ini and this is not a steam game
						ScriptError("You have not set up " . dbName . " in RocketLauncherUI yet, so PCLauncher does not know what exe, FadeTitle, and/or SteamID to watch for.")
					}
					
					BezelGUI()
					FadeInStart()
					BezelStart()
					
					If Application {
						primaryExe := new Emulator(Application)		; instantiate primary application executable object
					}
					
					If (AppWaitExe != "") {
						AppWaitExe := new Process(AppWaitExe)
					}
					
					If FadeTitle {
						FadeTitleObj := StringUtils.ParsePCTitle(FadeTitle)
						appPrimaryWindow := new Window(new WindowTitle(FadeTitleObj.Title,FadeTitleObj.Class))	; instantiate primary application window object
					}
					
					; If Application needs a cd/dvd image in the drive, mount it in DT first
					If DiscImage {
						RLLog.Info("PCLauncher - Application is a Disc Image, mounting it in DT")
						appIsImage := 1
						DiscImage := new File(GetFullName(DiscImage))	; convert a relative path defined in the PCLauncher ini to absolute
						DiscImage.CheckFile("Cannot find this DiscImage for " . dbName . ":`n" . DiscImage.FileFullPath)
						; StringUtils.SplitPath(DiscImage,"",ImagePath,ImageExt,ImageName)
						If StringUtils.Contains(DiscImage.FileExt,"mds|mdx|b5t|b6t|bwt|ccd|cue|isz|nrg|cdi|iso|ape|flac")
						{	VirtualDrive("get")	; get the vdDriveLetter
							; VirtualDrive("mount",ImagePath . "\" . ImageName . "." . ImageExt)
							VirtualDrive("mount",DiscImage.FileFullPath)
						} Else
							ScriptError("You defined a DiscImage, but it is not a supported format for this module and/or DT:`nccd,cdi,cue,iso,isz,nrg")
					}
					
					; Verify module's settings are set
					CheckSettings()
					
					If PreLaunch {
						RLLog.Info("PCLauncher - PreLaunch set by user, running: " . PreLaunch)
						PreLaunchParameters := If (!PreLaunchParameters or PreLaunchParameters="ERROR") ? "" : PreLaunchParameters
						If (preLaunchMode = "run") {
							errLevel := PreLaunchExe.Run(If PreLaunchIsURL ? "" : PreLaunchParameters,"","","","",(If PreLaunchIsURL ? "" : 1))	; If this is a url, do not send params
							If errLevel
								ScriptError("There was a problem launching your PreLaunch application. Please check it is a valid executable.")
							TimerUtils.Sleep(PreLaunchSleep)
						} Else {
							errLevel := PreLaunchExe.RunWait(If PreLaunchIsURL ? "" : PreLaunchParameters,"",(If PreLaunchIsURL ? "" : 1))	; If this is a url, do not send params
							If errLevel
								ScriptError("There was a problem launching your PreLaunch application. Please check it is a valid executable.")
						}
					}
					
					If (DXWndGame = "true")		; start dxwnd if needed
						DxwndRun()
					
					If StringUtils.Contains(mode,"steam|steambp")	; steam launch
						Steam(SteamID, primaryExe.FileFullPath, Parameters)
					Else If (mode = "origin")		; origin launch
						Origin(primaryExe.FileName, primaryExe.FilePath, Parameters)
					Else {
						If (mode = "url")
						{	RLLog.Info("PCLauncher - Launching URL.")
							errLevel := primaryExe.Run()
						} Else {	; standard launch
							RLLog.Info("PCLauncher - Launching a standard application.")
							If (HideConsole = "true" and primaryExe.FileExt = "bat") {
								RLLog.Info("PCLauncher - Hiding DOS console for bat file.")
								objShell := ComObjCreate("WScript.Shell")
								objShell.CurrentDirectory := If WorkingFolder ? WorkingFolder : primaryExe.FilePath
								errLevel := objShell.Run("""" . primaryExe.FileName . """ " . Parameters, 0, false)
							}
							Else
								errLevel := primaryExe.Run(Parameters,"","","","",1,If WorkingFolder ? WorkingFolder : "")
						}
						If errLevel
							ScriptError("There was a problem launching your " . (If appIsImage ? "ImageExe" : "Application") . ". Please check it is a valid executable.")
					}
					
					If PostLaunch {
						RLLog.Info("PCLauncher - PostLaunch set by user, running: " . PostLaunch)
						PostLaunchExe := new Process(PostLaunch)
						PostLaunchParameters := If (!PostLaunchParameters or PostLaunchParameters="ERROR") ? "" : PostLaunchParameters
						errLevel := PostLaunchExe.Run(If PostLaunchIsURL ? "" : PostLaunchParameters,"","","","",(If PostLaunchIsURL ? "" : 1))	; If this is a url, do not send params
						If errLevel
							ScriptError("There was a problem launching your PostLaunch application. Please check it is a valid executable.")
						TimerUtils.Sleep(PostLaunchSleep)
					}
					
					If FadeTitle {
						RLLog.Info("PCLauncher - FadeTitle set by user, waiting for """ . appPrimaryWindow.WinTitle.GetWindowTitle() . """")
						
						If (FadeTitleTimeout)
							appPrimaryWindow.Wait(FadeTitleTimeout)
						Else
							appPrimaryWindow.Wait()
						
						If (FadeTitleWaitTillActive = "true")
							appPrimaryWindow.WaitActive()
					} Else If AppWaitExe {
						RLLog.Info("PCLauncher - FadeTitle not set by user, but AppWaitExe is. Waiting for AppWaitExe: " . AppWaitExe.FileName)
						AppWaitExe.Process("Wait",15)
						If (AppWaitExe.PID = 0)
							ScriptError("PCLauncher - There was an error getting the Process ID of your AppWaitExe """ . AppWaitExe.FileName . """. Please try setting a FadeTitle instead.")
					} Else If SteamIDExe {
						RLLog.Info("PCLauncher - FadeTitle and AppWaitExe not set by user, but SteamIDExe was found. Waiting for SteamIDExe: " . SteamIDExe.FileFullPath)
						SteamIDExe.Process("Wait",15)	; wait 15 seconds for this process to launch
						If (SteamIDExe.PID = 0)
							ScriptError("PCLauncher - There was an error getting the Process ID from your SteamIDExe for """ . dbName . """. Please try setting a FadeTitle instead.")
					} Else If primaryExe.PID {
						RLLog.Info("PCLauncher - FadeTitle and AppWaitExe not set by user, but a PID for the primary application was found. Waiting for PID: " . primaryExe.PID)
						appPrimaryWindow.PID := primaryExe.PID	; store the PID of the primary exe into the window object
						appPrimaryWindow.Wait("",primaryExe.PID)	; only wait for the pid, not any other window element
						appPrimaryWindow.WaitActive("",primaryExe.PID)
					} Else
						RLLog.Error("PCLauncher - FadeTitle and AppWaitExe not set by user and no AppPID found from an Application, PCLauncher has nothing to wait for")
					
					If (DXWndGame = "true" and (DXWndMaximizeWindow = "aspect" or DXWndMaximizeWindow = "stretch"))
						appPrimaryWindow.Maximize(If (DXWndMaximizeWindow="aspect") ? "true" : "false")
					
					BezelDraw()
					
					TimerUtils.Sleep(FadeInExitSleep)	; PCLauncher setting for some stubborn games that keeps the fadeIn screen up a little longer
					FadeInExit()
					
					If AppWaitExe {
						If !FadeTitle {
							RLLog.Info("PCLauncher - Creating a window based on the AppWaitExe because FadeTitle was not set")
							appPrimaryWindow := new Window(new WindowTitle("","","","",AppWaitExe.PID))	; instantiate AppWaitExe window object
							appPrimaryWindow.Wait()
							appPrimaryWindow.Get("ID")
							appPrimaryWindow.WinTitle.PID := ""	; remove PID from future window matches
							appPrimaryWindow.WinTitle.ID := appPrimaryWindow.ID	; inject hwnd ID so future matches use it instead
						}
						RLLog.Info("PCLauncher - Waiting for AppWaitExe """ . AppWaitExe.FileName . """ to close.")
						AppWaitExe.Process("WaitClose")
					} Else If FadeTitle {	; If fadeTitle is set and no appPID was created.
						RLLog.Info("PCLauncher - Waiting for FadeTitle """ . appPrimaryWindow.WinTitle.GetWindowTitle() . """ to close.")
						appPrimaryWindow.WaitClose()
					} Else If SteamIDExe {
						RLLog.Info("PCLauncher - Waiting for SteamIDExe """ . SteamIDExe.FileName . """ to close.")
						SteamIDExe.Process("WaitClose")
					} Else If primaryExe.PID {
						If !FadeTitle {
							RLLog.Info("PCLauncher - Creating a window based on the Primary Application """ . primaryExe.FileName . """ because FadeTitle nor AppWaitExe were set")
							appPrimaryWindow := new Window(new WindowTitle("","","","",primaryExe.PID))	; instantiate primary application window object
							appPrimaryWindow.Wait()
							appPrimaryWindow.Get("ID")
							appPrimaryWindow.WinTitle.PID := ""	; remove PID from future window matches
							appPrimaryWindow.WinTitle.ID := appPrimaryWindow.ID	; inject hwnd ID so future matches use it instead
						}
						RLLog.Info("PCLauncher - Waiting for the Primary Application PID """ . primaryExe.PID . """ to close.")
						primaryExe.Process("WaitClose")
					} Else
						ScriptError("Could not find a proper AppWaitExe`, FadeTitle`, or AppPID (from the launched Application). Try setting either an AppWaitExe or FadeTitle so the module has something to look for.")
					
					If PostExit {
						RLLog.Info("PCLauncher - PostExit set by user, running: " . PostExit)
						PostExitExe := new Process(PostExit)
						PostExitParameters := If (!PostExitParameters or PostExitParameters="ERROR") ? "" : PostExitParameters
						errLevel := PostExitExe.Run(If PostExitIsURL ? "" : PostExitParameters,"","","","",(If PostExitIsURL ? "" : 1))	; If this is a url, do not send params
						If errLevel
							ScriptError("There was a problem launching your PostExit application. Please check it is a valid executable.")
						TimerUtils.Sleep(PostExitSleep)
					}
					
					; If Application is a cd/dvd image, unmount it in DT
					If appIsImage
						VirtualDrive("unmount")
					
					; Close steam if it was not open prior to launch, not really needed anymore because module knows how to launch if steam already running now
					; If (primaryExe.PID = 0)
						; Run, Steam.exe -shutdown, %SteamPath%	; close steam
					
					If (DXWndGame = "true")
						DxwndClose()
					
					BezelExit()
					FadeOutExit()
					ExitModule()
					
					CheckSettings() {
						Global Application,primaryExe
						Global PreLaunch,PreLaunchExe,PreLaunchIsURL
						Global PostLaunch,PostLaunchExe,PostLaunchIsURL
						Global PostExit,PostExitExe,PostExitIsURL
						Global moduleName,appIsImage,vdDriveLetter,SteamID,OriginGame,DXWndGame,mode,AppWaitExe,SteamIDExe,FadeTitle
						Global modulePath,fadeIn
						RLLog.Info("CheckSettings - Started")
					
						; These checks allow you to run URL and Steam browser protocol commands. Without them ahk would error out that it can't find the file. This is different than setting a SteamID but either work
						If (SteamID) {
							mode := "steam"	; setting module to use steam mode
							RLLog.Info("PCLauncher - SteamID is set, setting mode to: """ . mode . """")
						} Else If (StringUtils.SubStr(Application,1,3) = "ste") {
							mode := "steambp"	; setting module to use Steam Browser Protocol mode
							RLLog.Info("PCLauncher - Application is a Steam Browser Protocol, setting mode to: """ . mode . """")
						} Else If (StringUtils.SubStr(Application,1,4) = "http") {
							mode := "url"	; setting module to use url mode
							RLLog.Info("PCLauncher - Application is a URL, setting mode to: """ . mode . """")
						} Else If OriginGame {
							mode := "origin"	; setting module to use Origin mode
							StringUtils.BackslashCheck(primaryExe.FileFullPath,"Application")
							RLLog.Info("PCLauncher - Origin mode enabled. Will log in to Origin if required.")
						} Else If Application {
							mode := "standard"	; for standard launching
							StringUtils.BackslashCheck(primaryExe.FileFullPath,"Application")
							RLLog.Info("PCLauncher - Setting mode to: """ . mode . """")
						} Else	; error if no modes are used
							ScriptError("Please set an Application, SteamID, Steam Browser Protocol, or URL in " moduleName . ".ini for """ . dbName . """")
					
						If (SteamID && Application)	; do not allow 2 launching methods as module cannot know which should be used
							ScriptError("You are trying to use Steam and an Application, you must choose one or the other.")
					
						If ((mode = "steam" || mode = "steambp") && !AppWaitExe && !FadeTitle) { ; && fadeIn = "true") {	; If AppWaitExe or FadeTitle are defined, that will take precedence over the automatic method using the SteamIDs.ini
							SteamIDFile := new IniFile(modulePath . "\SteamIDs.ini")
							SteamIDFile.CheckFile()
							If !SteamID		; if this game does not have a SteamID defined
								StringUtils.SplitPath(Application,SteamID) ; try to grab the ID from the Application name
							SteamIDExe := SteamIDFile.ReadCheck(SteamID, "exe","","",1)
							If !SteamIDExe		; if it was still not found, error out
								ScriptError("You are using launching a Steam game but no way for the module to know what window to wait for after launching. Please set a AppWaitExe, FadeTitle, or make sure your SteamID and the correct exe is defined in the SteamIDs.ini",10)
							Else {
								RLLog.Info("PCLauncher - Found an exe in the SteamIDs.ini for this game: """ . SteamIDExe . """")
								SteamIDExe := new Process(SteamIDExe)
							}
						} Else If (mode = "url" && !AppWaitExe && !FadeTitle)
							ScriptError("You are using launching a URL but no way for the module to know what to window to wait for after launching. Please set a AppWaitExe or FadeTitle to your default application that gets launched when opening URLs.",10)
						
						If (appIsImage && !primaryExe.FilePath)	; if user only defined an exe for Application with no path, assume it will be found on the root dir of the image when mounted
							primaryExe.FilePath := vdDriveLetter . ":\"
						If (!primaryExe.FileName && mode = "standard" && (mode != "steam" || mode != "steambp"))
							ScriptError("Missing filename on the end of your Application in " . moduleName . ".ini:`n" . primaryExe.FileFullPath)
						If (!primaryExe.FileExt && mode = "standard" && (mode != "steam" || mode != "steambp"))
							ScriptError("Missing extension on your Application in " . moduleName . ".ini:`n" . primaryExe.FileFullPath)
					
						PreLaunchExe := AltAppCheck(PreLaunch,"PreLaunch",PreLaunchIsURL)
						PostLaunchExe := AltAppCheck(PostLaunch,"PostLaunch",PostLaunchIsURL)
						PostExitExe := AltAppCheck(PostExit,"PostExit",PostExitIsURL)
					
						If (mode = "standard")
							primaryExe.CheckFile("Cannot find this Application:`n" . primaryExe.FileFullPath)	; keeping this last so more descriptive errors will trigger first
						RLLog.Info("CheckSettings - Ended")
					}
					
					AltAppCheck(file,id,ByRef urlID) {
						If file {
							obj := new Process(file)
							urlID := If (StringUtils.SubStr(file,1,4)="http" || StringUtils.SubStr(file,1,3)="ste") ? 1:""
							If urlID
								RLLog.Info("PCLauncher - " . id . " is a URL or Steam Browser Protocol: " . file)
							Else {
								StringUtils.BackslashCheck(obj.FileFullPath,id)
								obj.CheckFile("Cannot find this " . id . " application:`n" . obj.FileFullPath)
							}
							Return obj
						}
					}
					
					CloseProcess:
						If (ExitMethod != "InGame") {
							FadeOutStart()
							If (ExitMethod = "Process Close AppWaitExe" && AppWaitExe) {
								RLLog.Info("CloseProcess - ExitMethod is ""Process Close AppWaitExe""")
								AppWaitExe.Process("Close")
							} Else If (ExitMethod = "WinClose AppWaitExe" && AppWaitExe) {
								RLLog.Info("CloseProcess - ExitMethod is ""WinClose AppWaitExe""")
								AppWaitExe.Process("Exist")
								AppWaitWindow := new Window(new WindowTitle("","","","",AppWaitExe.PID))
								AppWaitWindow.Close()
							} Else If (ExitMethod = "Process Close Application") {
								RLLog.Info("CloseProcess - ExitMethod is ""Process Close Application""")
								primaryExe.Process("Close")
							} Else If (ExitMethod = "WinClose Application" && FadeTitle) {
								RLLog.Info("CloseProcess - ExitMethod is ""WinClose Close Application""")
								appPrimaryWindow.Close()
							} Else If (ExitMethod = "Send Alt+F4") {
								RLLog.Info("CloseProcess - ExitMethod is ""Send Alt+F4""")
								KeyUtils.Send("!{F4}")
							} Else {
								RLLog.Info("CloseProcess - Default ExitMethod`, using ""WinClose""")
								appPrimaryWindow.Close()
							}
						}
					Return

14:51:46:846 | RL |      INFO  | +15    | BuildScript - Loaded Multi-Player scripts
14:51:46:847 | RL |      INFO  | +0     | BuildScript - Loaded Statistics.ahk script
14:51:46:847 | RL |   WARNING  | +0     | BuildScript - "C:\RocketLauncher\Lib\User Functions.ahk" not found
14:51:46:848 | RL |      INFO  | +0     | BuildScript - Finished injecting functions into module
14:51:46:849 | RL |      INFO  | +0     | Main - Module is built
14:51:46:849 | RL |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\AutoHotkey.dll exists
14:51:46:851 | RL |      INFO  | +16    | Main - Running module
14:51:47:071 | MD |      INFO  | +N/A   | Module initialized
14:51:47:076 | MD |      INFO  | +0     | StartModule - Started
14:51:47:076 | MD |      INFO  | +0     | StartModule - MEmu: PCLauncher
					MEmuV: N/A
					MURL: http://www.rlauncher.com/wiki/index.php?title=PCLauncher
					MAuthor: djvj
					MVersion: 2.2.6
					MCRC: 64F63B83
					iCRC: 6B31C137
					MID: 
					MSystem: "American Laser Games","Arcade PC","Doujin Soft","Examu eX-BOARD","Fan Remakes","Games for Windows","Konami e-Amusement","Konami Bemani","Microsoft Windows","PCLauncher","PC Games","Singstar","Steam","Steam Big Picture","Taito Type X","Taito Type X2","Touhou","Touhou Project","Ultrastar","Ultrastar Deluxe","Windows Games"
14:51:47:076 | MD |      INFO  | +0     | StartModule - You have a supported System Name for this module: "PC Games"
14:51:47:076 | MD |      INFO  | +0     | PluginInit - Started
14:51:47:076 | MD |      INFO  | +0     | CheckFile - Checking if C:\RocketLauncher\RocketLauncherUI\Databases\PC Games\PC Games.xml exists
14:51:47:077 | MD |   WARNING  | +0     | BuildDatabaseTable - Ended - no "Game Name" found. Assigning "DisneyInfinity3" to the label "Name"
14:51:47:077 | MD |      INFO  | +0     | PluginInit - Ended
14:51:47:110 | MD |      INFO  | +31    | StartModule - Ended
14:51:47:110 | MD |      INFO  | +0     | RIniFile.Read - Module - Application: (NO VALUE)
14:51:47:110 | MD |      INFO  | +0     | RIniFile.Read - Module - AppWaitExe: (NO VALUE)
14:51:47:110 | MD |      INFO  | +0     | RIniFile.Read - Module - DiscImage: (NO VALUE)
14:51:47:110 | MD |      INFO  | +0     | RIniFile.Read - Module - DXWndGame: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - DXWndMaximizeWindow: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - ExitMethod: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - FadeTitle: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - FadeTitleWaitTillActive: true (DEFAULT)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - FadeTitleTimeout: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - FadeInExitSleep: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - HideConsole: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - OriginGame: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - Parameters: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostLaunch: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostLaunchParameters: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostLaunchSleep: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostExit: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostExitParameters: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PostExitSleep: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PreLaunch: (NO VALUE)
14:51:47:111 | MD |      INFO  | +0     | RIniFile.Read - Module - PreLaunchParameters: (NO VALUE)
14:51:47:112 | MD |      INFO  | +0     | RIniFile.Read - Module - PreLaunchMode: (NO VALUE)
14:51:47:112 | MD |      INFO  | +0     | RIniFile.Read - Module - PreLaunchSleep: (NO VALUE)
14:51:47:112 | MD |      INFO  | +0     | RIniFile.Read - Module - SteamID: (NO VALUE)
14:51:47:112 | MD |      INFO  | +0     | RIniFile.Read - Module - WorkingFolder: (NO VALUE)
14:51:55:692 | MD |     ERROR  | +8578  | ScriptError - You have not set up DisneyInfinity3 in RocketLauncherUI yet, so PCLauncher does not know what exe, FadeTitle, and/or SteamID to watch for.
14:51:55:692 | MD |      INFO  | +0     | ExitModule - Started
14:51:55:692 | MD |      INFO  | +0     | Starting Updating Statistics:
14:51:55:907 | MD |      INFO  | +219   | Game section statistics updated.
14:51:55:907 | MD |      INFO  | +0     | ExitModule - Ended
End of Module Logs
14:51:55:997 | RL |      INFO  | +9141  | Main - Module ended, exiting RocketLauncher normally
14:51:55:997 | RL |      INFO  | +0     | ExitScript - Started
14:51:55:039 | RL |      INFO  | +46    | SystemCursor - Restoring mouse cursor
14:51:56:073 | RL |      INFO  | +32    | ExitScript - Restored cursor
 

johnodon

New member
RL Member
SOLVED!

In the settings for the PC Games launcher in AL, I had to turn "off" support for .lnk files. I don'r know what that means and it seems backwards to me but it worked. :)

John
 
Top