· 9 years ago · Jan 26, 2017, 08:20 PM
1[code]
214:13:43:364 | RL | INFO | +N/A | Main - RocketLauncher v1.2.0.1 (www.rlauncher.com)
314:13:43:644 | RL | INFO | +266 | Main - System Specs:
4 RocketLauncher Dir: C:\Arcade\RocketLauncher
5 RocketLauncher is: 32-bit
6 OS: Microsoft Windows 10 Home
7 SKU: Windows 8
8 Total Memory: 8126.48 MB
9 Free Memory: 5180.36 MB
10 Used Memory: 2946.125 MB
11 SystemType: 64-bit
12 Physical Processors: 1
13 Logical Processors: 8
14 GPU 1 Name: AMD Mobility Radeon HD 5000 Series
15 GPU 1 RAM: 1024.00 MB
16 GPU 1 Driver Version: 15.201.1151.1008
17 Sound 1 Device: High Definition Audio Device
18 Sound 1 Status: Enabled
19 Sound 2 Device: USB Audio Device
20 Sound 2 Status: Enabled
21 Sound 3 Device: AMD High Definition Audio Device
22 Sound 3 Status: Enabled
23 OS Language: English_United_States
24 System Locale: en-US
25 Formats Locale: en-US
26 Windows UI Language: en-US
27 Text Encoding: Windows-1252
28 OS Admin Status: No
29 RL Compatibility Flags:
30 Latest .Net Version: v4.0.30319
31 Monitor #1 (\\.\DISPLAY1): 1920x1080 (1920x1040 work) [32bit] [58hz] [Landscape] (Primary)
32 Current AHK Desktop Width: 1920
33 Current AHK Desktop Height: 1080
34 Monitor #1 DPI: 100
35 ErrorMode: 0
36 AutoHotkey Path:
37 AHK Version: 1.1.13.00
38 Unicode: No
3914:13:43:644 | RL | INFO | +0 | CheckFile - Checking if C:\Arcade\RocketLauncher\RocketLauncher.exe exists
4014:13:43:646 | RL | INFO | +16 | Main - Using HyperSpin normal mode for version 1.4.0.0 found at: C:\Arcade\HyperSpin\HyperSpin.exe
4114:13:43:646 | RL | INFO | +0 | Main - Raw CLI received: "MAME 1942"
4214:13:43:646 | RL | INFO | +0 | Main - Loading Front End Plugin: "HyperSpin"
4314:13:43:646 | RL | INFO | +0 | Process.Process - "Exist" "HyperSpin.exe"
4414:13:43:653 | RL | INFO | +0 | Main - Detected HyperSpin.exe is currently running
4514:13:43:653 | RL | INFO | +0 | Main - HyperSpin.exe coordinates are x0 y0 w1920 h1080
4614:13:43:653 | RL | INFO | +0 | Main - RocketLauncher received "MAME" and "1942"
4714:13:43:674 | RL | INFO | +15 | Main - Found a "Games Options.ini" file, loading it into memory.
4814:13:43:674 | RL | INFO | +0 | Main - 1942 is using the default emulator: Arcade64
4914:13:43:674 | RL | INFO | +0 | Main - Checking for a [Arcade64] section in C:\Arcade\RocketLauncher\Settings\MAME\Emulators.ini
5014:13:43:674 | RL | INFO | +0 | Main - Checking for a [Arcade64] section in C:\Arcade\RocketLauncher\Settings\Global Emulators.ini
5114:13:43:675 | RL | INFO | +0 | Main - Found [Arcade64] in C:\Arcade\RocketLauncher\Settings\Global Emulators.ini
5214:13:43:675 | RL | INFO | +0 | CheckFile - Checking if C:\Arcade\RocketLauncher\Modules\MAME\MAME.ahk exists
5314:13:43:686 | RL | INFO | +16 | Main - CRC Check - CRC matches, this is an official unedited module.
5414:13:43:686 | RL | INFO | +0 | Main - 1942 will use module: C:\Arcade\RocketLauncher\Modules\MAME\MAME.ahk
5514:13:43:720 | RL | INFO | +31 | Main - Using standard method with "Rom Extension" SkipChecks or without any SkipChecks.
5614:13:43:724 | RL | INFO | +16 | CheckFile - Checking if C:\Arcade\Emulators\Arcade64\arcade64.exe exists
5714:13:43:725 | RL | INFO | +0 | Main - INI Keys read
5814:13:43:725 | RL | INFO | +0 | CheckFile - Checking if C:\Arcade\RocketLauncher\Module Extensions\7z.exe exists
5914:13:43:726 | RL | INFO | +0 | CheckFile - Checking if C:\Arcade\RocketLauncher\Module Extensions\7z.dll exists
6014:13:43:735 | RL | INFO | +0 | Main - "1942" does not qualify for MultiGame. Only roms with any of these strings in their name are acceptable: \(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side
6114:13:43:735 | RL | INFO | +0 | CheckPaths - Started
6214:13:43:735 | RL | INFO | +0 | CheckPaths - Looking for rom: C:\Arcade\ROMs\Arcade\1942.zip
6314:13:43:735 | RL | INFO | +0 | CheckPaths - Found rom: C:\Arcade\ROMs\Arcade\1942.zip
6414:13:43:736 | RL | INFO | +0 | CheckPaths - Ended
6514:13:43:737 | RL | INFO | +0 | BuildScript - User Variables:
66 ;----------------------------------------------------------------------------
67 ; INJECTED VARIABLES
68 ;----------------------------------------------------------------------------
69
70 #NoTrayIcon
71 #InstallKeybdHook
72 MiscUtils.DetectHiddenWindows("On")
73 SetTitleMatchMode, 2
74 SendMode, Event
75 Global RLLog
76 Global RLObject
77 0 := "2"
78 rlPath := "C:\Arcade\RocketLauncher"
79 pluginPath := "C:\Arcade\RocketLauncher\Plugins"
80 pluginName := "HyperSpin"
81 pluginExt := ".plugin"
82 contextOnExit := ""
83 rlMode := ""
84 rlTitle := "RocketLauncher"
85 rlVersion := "1.2.0.1"
86 rlAuthor := "djvj"
87 rlURL := "www.rlauncher.com"
88 langFile := "C:\Arcade\RocketLauncher\Data\Language\Localization.ini"
89 primMonitor := "1"
90 frontendPID := "12464"
91 frontendPath := "C:\Arcade\HyperSpin"
92 frontendExe := "HyperSpin.exe"
93 frontendExt := "exe"
94 frontendName := "HyperSpin"
95 frontendDrive := "C"
96 exitEmulatorKey := "~Esc"
97 restoreFE := "Restore and Click"
98 exitScriptKey := "~PGUP & ~PGDN"
99 toggleCursorKey := "~e & ~t"
100 emuFullPath := "C:\Arcade\Emulators\Arcade64\arcade64.exe"
101 emuPath := "C:\Arcade\Emulators\Arcade64"
102 emuName := "Arcade64"
103 emuExt := "exe"
104 baseRomPath := ""
105 romPath := "C:\Arcade\ROMs\Arcade"
106 romPathFromIni := "C:\Arcade\ROMs\Arcade"
107 romExtension := ".zip"
108 romExtensionOrig := ".zip"
109 romExtensions := "zip|7z|chd"
110 executable := "arcade64.exe"
111 systemDbName := "MAME"
112 systemName := "MAME"
113 dbPath := ""
114 dbName := "1942"
115 dbExt := ""
116 romFoundByExt := ""
117 romName := "1942"
118 romMapPath := ""
119 romMappingEnabled := "false"
120 romMappingLaunchMenuEnabled := "false"
121 romMappingFirstMatchingExt := "false"
122 romMappingShowAllRomsInArchive := "true"
123 romMappingNumberOfGamesByScreen := "7"
124 romMappingHideParent := "false"
125 romMappingMenuWidth := "400"
126 romMappingMenuMargin := "65"
127 romMappingTextFont := "Bebas Neue"
128 romMappingTextOptions := "cFFFFFFFF r4 s60 Bold"
129 romMappingDisabledTextColor := "ff888888"
130 romMappingTextSizeDifference := "7"
131 romMappingTextMargin := "15"
132 romMappingTitleTextFont := "Bebas Neue"
133 romMappingTitleTextOptions := "cFFFFFFFF r4 s90 Bold"
134 romMappingTitle2TextFont := "Bebas Neue"
135 romMappingTitle2TextOptions := "cFFFFFFFF r4 s22 Bold"
136 romMappingGameInfoTextFont := "Bebas Neue"
137 romMappingGameInfoTextOptions := "cFFFFFFFF r4 s22 Regular"
138 romMappingGameNameTextFont := "Bebas Neue"
139 romMappingGameNameTextOptions := "cFFFFFFFF r4 s40 Regular"
140 romMappingBackgroundBrush := "aa000000"
141 romMappingColumnBrush := "33000000"
142 romMappingButtonBrush1 := "6f000000"
143 romMappingButtonBrush2 := "33000000"
144 romMappingBackgroundAlign := "Stretch and Lose Aspect"
145 romMappingMenuFlagWidth := "55"
146 romMappingMenuFlagSeparation := "7"
147 romMappingDefaultMenuList := "FullList"
148 romMappingSingleFilteredRomAutomaticLaunch := "false"
149 altArchiveNameOnly := ""
150 altRomNameOnly := ""
151 altArchiveAndRomName := ""
152 altArchiveAndManyRomNames := ""
153 altRomNamesOnly := ""
154 romMapScenario := ""
155 skipchecks := "false"
156 romMatchExt := "false"
157 blockInputTime := "0"
158 blockInputFile := "C:\Arcade\RocketLauncher\Module Extensions\BlockInput.exe"
159 errorLevelReporting := "false"
160 lockLaunch := "false"
161 lockLaunchGame := ""
162 screenRotationAngle := "0"
163 screenRotationAngleGame := ""
164 setResolution := ""
165 logFile := ""
166 logLabel := [" INFO"," WARNING"," ERROR"," DEBUG"," TRACE"]
167 logLevel := "3"
168 logShowDebugConsole := "false"
169 logShowCommandWindow := "false"
170 logCommandWindow := "false"
171 logIncludeModule := "true"
172 logIncludeFileProperties := "true"
173 logIncludeDLLLogs := "false"
174 errorSounds := "true"
175 rlDebugConsoleStdout := ""
176 sysLang := "English_United_States"
177 sysType := "64-bit"
178 broadcastWindowTitle := ""
179 navUpKey := "Up"
180 navDownKey := "Down"
181 navLeftKey := "Left"
182 navRightKey := "Right"
183 navSelectKey := "Enter"
184 navP2UpKey := "Numpad8"
185 navP2DownKey := "Numpad2"
186 navP2LeftKey := "Numpad4"
187 navP2RightKey := "Numpad6"
188 navP2SelectKey := "NumpadEnter"
189 originalWidth := "1920"
190 originalHeight := "1080"
191 vdEnabled := "false"
192 vdFullPath := ""
193 vdUseSCSI := "true"
194 vdDriveLetter := ""
195 vdDriveLetterScsi := ""
196 vdAddDrive := "true"
197 demulShooterPath := ""
198 servoStikEnabled := "false"
199 servoStikExitMode := "false"
200 ledblinkyEnabled := "false"
201 ledblinkySystemName := ""
202 ledblinkyFullPath := ""
203 ledblinkyProfilePath := "C:\Arcade\RocketLauncher\Profiles\LEDBlinky"
204 ledblinkyRLProfile := "C:\Arcade\RocketLauncher\Profiles\LEDBlinky\RocketLauncher"
205 winIPACFullPath := ""
206 ultraMapEnabled := "false"
207 ultraMapFullPath := ""
208 emuIdleShutdown := "300000"
209 launchPasswordHash := "UpUpDownDownLeftRightLeftRight"
210 cursorSize := ""
211 hideCursor := "true"
212 hideEmu := "false"
213 hideFE := "true"
214 suspendFE := "false"
215 fadeIn := "true"
216 fadeInDuration := "400"
217 fadeInTransitionAnimation := "DefaultAnimateFadeIn"
218 fadeInDelay := "5000"
219 fadeInExitDelay := "0"
220 fadeOutExitDelay := "0"
221 fadeOut := "false"
222 fadeOutExtraScreen := "false"
223 fadeOutDuration := "200"
224 fadeOutTransitionAnimation := "DefaultAnimateFadeOut"
225 fadeOutDelay := "0"
226 fadeLyrInterpolation := "7"
227 fadeMuteEmulator := "false"
228 fadeUseBackgrounds := "false"
229 fadeClickThrough := "false"
230 fadeSounds := "true"
231 fade7zProgressMode := "extraction"
232 fadeWidthBaseRes := "1920"
233 fadeHeightBaseRes := "1080"
234 fadeLyr1Color := "FF000000"
235 fadeLyr1AlignImage := "Stretch and Lose Aspect"
236 fadeLyr2Pos := "Stretch and Lose Aspect"
237 fadeLyr2X := "0"
238 fadeLyr2Y := "0"
239 fadeLyr2W := ""
240 fadeLyr2H := ""
241 fadeLyr2Adjust := "1"
242 fadeLyr2PicPad := "0"
243 fadeLyr2Prefix := "Extra Layer 1 - Console"
244 fadeLyr3Pos := "Center"
245 fadeLyr3X := "450"
246 fadeLyr3Y := "450"
247 fadeLyr3W := ""
248 fadeLyr3H := ""
249 fadeLyr3Adjust := "1"
250 fadeLyr3PicPad := "0"
251 fadeLyr3Speed := "750"
252 fadeLyr3Animation := "DefaultFadeAnimation"
253 fadeLyr37zAnimation := "DefaultFadeAnimation"
254 fadeLyr3Type := "imageandbar"
255 fadeLyr3ImgFollow7zProgress := "true"
256 fadeLyr3Repeat := "1"
257 fadeLyr3BackImageTransparency := "30"
258 fadeLyr3StaticPos := "No Alignment"
259 fadeLyr3StaticX := "0"
260 fadeLyr3StaticY := "870|1575"
261 fadeLyr3StaticW := ""
262 fadeLyr3StaticH := ""
263 fadeLyr3StaticAdjust := "1"
264 fadeLyr3StaticPicPad := "0"
265 fadeLyr3StaticPrefix := "Info Bar"
266 fadeLyr4Adjust := "1"
267 fadeLyr4X := "1792|952"
268 fadeLyr4Y := "891|1596"
269 fadeLyr4W := "128"
270 fadeLyr4H := ""
271 fadeLyr4Pos := "No Alignment"
272 fadeLyr4FPS := "50"
273 fadeLyr4PicPad := "0"
274 fadeTranspGifColor := "FFFFFF"
275 fadeBarWindow := "Image"
276 fadeBarWindowX := ""
277 fadeBarWindowY := ""
278 fadeBarWindowW := "900"
279 fadeBarWindowH := ""
280 fadeBarWindowR := "30"
281 fadeBarWindowM := "30"
282 fadeBarWindowHatchStyle := "8"
283 fadeBar := "7zOnly"
284 fadeProgressDuration := "0"
285 fadeBarBack := "true"
286 fadeBarBackColor := "FF555555"
287 fadeBarH := "30"
288 fadeBarR := "10"
289 fadeBarColor := "DD00BFFF"
290 fadeBarHatchStyle := "8"
291 fadeBarPercentageText := "true"
292 fadeBarInfoText := "true"
293 fadeBarXOffset := "0"
294 fadeBarYOffset := "150"
295 fadeRomInfoDescription := "filtered text"
296 fadeRomInfoSystemName := "disabled"
297 fadeRomInfoYear := "text with label"
298 fadeRomInfoDeveloper := "text with label"
299 fadeRomInfoPublisher := "text with label"
300 fadeRomInfoGenre := "disabled"
301 fadeRomInfoRating := "image"
302 fadeRomInfoOrder := "Description|SystemName|Year|Manufacturer|Genre|Rating"
303 fadeRomInfoTextPlacement := "User Defined"
304 fadeRomInfoTextMargin := "7"
305 fadeRomInfoText1Options := "w1600|787 h90 x165 y870|1575 cFFE1E1E1 r4 s90 Left Regular"
306 fadeRomInfoText2Options := "w400 x8 y15 cFF555555 r4 s60 Bold"
307 fadeRomInfoText3Options := "w310 x165 y960|1665 cFFE1E1E1 r4 s66 Left Regular"
308 fadeRomInfoText4Options := "w1305|492 h66 x460 y960|1665 cFFE1E1E1 r4 s66 Left Regular"
309 fadeRomInfoText5Options := "cFF555555 r4 s42 Bold"
310 fadeRomInfoText6Options := "h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular"
311 fadeRomInfoText7Options := "h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular"
312 fadeStats_Number_of_Times_Played := "text with label"
313 fadeStats_Last_Time_Played := "text with label"
314 fadeStats_Average_Time_Played := "text with label"
315 fadeStats_Total_Time_Played := "text with label"
316 fadeStats_System_Total_Played_Time := "disabled"
317 fadeStats_Total_Global_Played_Time := "text with label"
318 fadeStatsInfoOrder := "Number_of_Times_Played|Last_Time_Played|Average_Time_Played|Total_Time_Played|Total_Global_Played_Time|System_Total_Played_Time"
319 fadeStatsInfoTextPlacement := "topRight"
320 fadeStatsInfoTextMargin := "7"
321 fadeStatsInfoText1Options := "cFF6F6F6F r4 s22 Bold"
322 fadeStatsInfoText2Options := "cFF6F6F6F r4 s22 Bold"
323 fadeStatsInfoText3Options := "cFF6F6F6F r4 s22 Bold"
324 fadeStatsInfoText4Options := "cFF6F6F6F r4 s22 Bold"
325 fadeStatsInfoText5Options := "cFF6F6F6F r4 s22 Bold"
326 fadeStatsInfoText6Options := "cFFB4B4B4 r4 s22 Bold"
327 fadeText1X := "0"
328 fadeText1Y := "0"
329 fadeText1Options := "cFFB4B4B4 r4 s30 Right Bold"
330 fadeText1 := "Loading Game"
331 fadeText2X := "0"
332 fadeText2Y := "0"
333 fadeText2Options := "cFFB4B4B4 r4 s30 Right Bold"
334 fadeText2 := "Extraction Complete, Ready"
335 fadeText3 := "Loading Game"
336 fadeText4 := "Loading Complete"
337 fadeFont := "Bebas Neue"
338 fadeSystemAndRomLayersOnly := "false"
339 fadeExtractionTime := "disabled"
340 fadeExtractionTimeTextX := "0"
341 fadeExtractionTimeTextY := "0"
342 fadeExtractionTimeTextOptions := "cFF555555 r4 s20 Bold"
343 fadeInterruptKey := ""
344 detectFadeErrorEnabled := "true"
345 fadeImgPath := "C:\Arcade\RocketLauncher\Media\Fade"
346 RLDataPath := "C:\Arcade\RocketLauncher\Data"
347 RLMediaPath := "C:\Arcade\RocketLauncher\Media"
348 RLErrSoundPath := "C:\Arcade\RocketLauncher\Media\Sounds\Error"
349 modulesPath := "C:\Arcade\RocketLauncher\Modules"
350 moduleFullName := "C:\Arcade\RocketLauncher\Modules\MAME\MAME.ahk"
351 moduleName := "MAME"
352 modulePath := "C:\Arcade\RocketLauncher\Modules\MAME"
353 moduleExtension := "ahk"
354 moduleExtensionsPath := "C:\Arcade\RocketLauncher\Module Extensions"
355 libPath := "C:\Arcade\RocketLauncher\Lib"
356 sevenZEnabled := "false"
357 sevenZPath := "C:\Arcade\RocketLauncher\Module Extensions\7z.exe"
358 sevenZDllPath := "C:\Arcade\RocketLauncher\Module Extensions\7z.dll"
359 sevenZExtractPath := "C:\Arcade\RocketLauncher\tmp"
360 sevenZExtractPathOrig := ""
361 sevenZAttachSystemName := "false"
362 sevenZDelTemp := "true"
363 sevenZFormats := ".zip|.rar|.7z|.lha|.lzh|.gzip|.tar"
364 sevenZFormatsNoP := "zip|rar|7z|lha|lzh|gzip|tar"
365 sevenZFormatsRegEx := "\.zip|\.rar|\.7z|\.lha|\.lzh|\.gzip|\.tar"
366 sevenZGamesToKeep := ""
367 sevenZDeletePerSystem := "false"
368 sevenZExtensions := "zip|rar|7z|lha|lzh|gzip|tar"
369 7zExtractPath := "C:\Arcade\RocketLauncher\tmp"
370 mgEnabled := "false"
371 mgKey := "~NumpadSub"
372 mgBackgroundColor := "FF000000"
373 mgSidePadding := "0.2"
374 mgWidthBaseRes := "1920"
375 mgHeightBaseRes := "1080"
376 mgYOffset := "500|800"
377 mgFont := "Arial"
378 mgText1Options := "x10p y250|500 w80p Center cBBFFFFFF r4 s100 BoldItalic"
379 mgText1Text := "Please select a game"
380 mgText2Options := "w96p cFFFFFFFF r4 s50 Center BoldItalic"
381 mgText2Offset := "100"
382 mgUseSound := "true"
383 mgSoundfreq := "300"
384 mgExitEffect := "none"
385 mgSelectedEffect := "rotate"
386 mgUseGameArt := "false"
387 mgCandidate := ""
388 mgValidTypes := "\(Disc|\(Disk|\(Cart|\(Tape|\(Cassette|\(Part|\(Side"
389 mgOnLaunch := "false"
390 pauseEnabled := "false"
391 pauseKey := "~NumpadAdd"
392 pauseBackToMenuBarKey := "X"
393 pauseZoomInKey := "C"
394 pauseZoomOutKey := "V"
395 pauseScreenshotKey := "~PrintScreen"
396 pauseHiToTextPath := "C:\Arcade\RocketLauncher\Module Extensions\HiToText.exe"
397 pauseSaveStateKeyCodes := ""
398 pauseLoadStateKeyCodes := ""
399 keyboardEncoder := ""
400 keyboardEncoderEnabled := "false"
401 keymapperEnabled := "false"
402 keymapperAHKMethod := "false"
403 keymapper := "xpadder"
404 xpadderFullPath := "C:\Arcade\Utilities\Xpadder\xpadder.exe"
405 joyToKeyFullPath := "C:\Arcade\Utilities\JoyToKey\JoyToKey.exe"
406 profilePath := "C:\Arcade\RocketLauncher\Profiles"
407 keymapperProfilePath := "C:\Arcade\RocketLauncher\Profiles\xpadder"
408 keymapperFrontEndProfileName := "RocketLauncherUI"
409 keymapperFrontEndProfile := "false"
410 keymapperRocketLauncherProfileEnabled := "false"
411 joyIDsEnabled := "false"
412 joyIDsPreferredControllersGlobal := ""
413 joyIDsPreferredControllersSystem := "use_global"
414 joyIDsPreferredControllersOnExit := ""
415 CustomJoyNamesEnabled := "false"
416 CustomJoyNames := ""
417 rotateMethod := "false"
418 FEProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\RocketLauncherUI"
419 defaultProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\_Default"
420 systemProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\MAME"
421 xPadderSystemProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\MAME\_Default"
422 emuProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\MAME\Arcade64"
423 romProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\MAME\1942"
424 RocketLauncherProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\RocketLauncher"
425 blankProfile := "C:\Arcade\RocketLauncher\Profiles\xpadder\_Default\blank"
426 ahkFEProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\RocketLauncherUI"
427 ahkDefaultProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\_Default"
428 ahkSystemProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\MAME"
429 ahkEmuProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\MAME\Arcade64"
430 ahkRomProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\MAME\1942"
431 ahkRocketLauncherProfile := "C:\Arcade\RocketLauncher\Profiles\AHK\RocketLauncher"
432 bezelEnabled := "true"
433 bezelICEnabled := "false"
434 shaderName := "false"
435 shaderColor := ""
436 shaderTransparency := ""
437 statisticsEnabled := "true"
438 pressDuration := "-1"
439 emuVolume := "1"
440 dxwndIni := "C:\Arcade\RocketLauncher\Module Extensions\dxwnd\dxwnd.ini"
441 dxwndFullPath := "C:\Arcade\RocketLauncher\Module Extensions\dxwnd\dxwnd.exe"
442 qResFullPath := "C:\Arcade\RocketLauncher\Module Extensions\QRes.exe"
443 mon1O := ""
444 pacDrivedllFile := "C:\Arcade\RocketLauncher\Module Extensions\PacDrive32.dll"
445 userFadeAnimIniFile := "C:\Arcade\RocketLauncher\Lib\User Fade Animations.ini"
446 testFile := ""
447 testDuration := ""
448 initialErrorMode := "0"
449
45014:13:43:739 | RL | INFO | +15 | BuildScript - Loaded XHotkey Init.ahk scripts
45114:13:43:739 | RL | INFO | +0 | BuildScript - Loaded Fade Init.ahk scripts
45214:13:43:739 | RL | INFO | +0 | BuildScript - Loaded Statistics Init.ahk scripts
45314:13:43:739 | RL | INFO | +0 | BuildScript - Emu Idle timer enabled, emu will shutdown when idle for 0hr, 5mins, 0secs
45414:13:43:740 | RL | INFO | +0 | BuildScript - Validating module
45514:13:43:757 | RL | INFO | +16 | BuildScript - Validation complete
45614:13:43:758 | RL | INFO | +0 | BuildScript - Module:
457 MEmu := "MAME"
458 MEmuV := "v0.166"
459 MURL := ["http://www.mame.net/"]
460 MAuthor := ["djvj","faahrev","brolly","Tomkun"]
461 MVersion := "2.3.10"
462 MCRC := "2C606685"
463 iCRC := "8566ED91"
464 MID := "635746812784197028"
465 MSystem := ["AAE","Aamber Pegasus","Acorn Electron","Amstrad CPC","Amstrad GX4000","APF Imagination Machine","Apple II","Apple IIGS","Applied Technology MicroBee","Arcade","Arcade Classics","Atari 8-Bit","Atari 2600","Atari 5200","Atari 7800","Atari Classics","Atari Jaguar","Atari Lynx","Bally Astrocade","Bandai Super Vision 8000","Bandai WonderSwan","Bandai WonderSwan Color","Bit Corporation Gamate","Camputers Lynx","Capcom","Capcom Classics","Capcom Play System","Capcom Play System II","Capcom Play System III","Casio PV-1000","Casio PV-2000","Cave","Coleco ADAM","ColecoVision","Commodore 64","Commodore MAX Machine","Creatronic Mega Duck","Data East Classics","EACA EG2000 Colour Genie","Emerson Arcadia 2001","Entex Adventure Vision","Epoch Game Pocket Computer","Epoch Super Cassette Vision","Exidy Sorcerer","Fairchild Channel F","Fujitsu FM-7","Fujitsu FM Towns","Fujitsu FM Towns Marty","Funtech Super Acan","GamePark 32","GCE Vectrex","Hartung Game Master","HBMAME","Interton VC 4000","Irem Classics","JungleTac Sport Vii","Jupiter Ace","Konami Classics","LaserDisc","Magnavox Odyssey 2","MAME","Matra & Hachette Alice","Mattel Aquarius","Mattel Intellivision","MGT Sam Coupe","Midway Classics","Milton Bradley MicroVision","Namco Classics","Namco System 22","NEC PC-8801","NEC PC Engine","NEC PC Engine-CD","NEC SuperGrafx","NEC TurboGrafx-16","NEC TurboGrafx-CD","Nintendo 64","Nintendo 64DD","Nintendo Arcade Systems","Nintendo Classics","Nintendo Entertainment System","Nintendo Famicom","Nintendo Famicom Disk System","Nintendo Game Boy","Nintendo Game Boy Advance","Nintendo Game Boy Color","Nintendo Pokemon Mini","Nintendo Satellaview","Nintendo Super Famicom","Nintendo Super Game Boy","Nintendo Virtual Boy","Othello Multivision","PacMAME","Philips CD-i","Philips VG 5000","Philips Videopac Plus G7400","RCA Studio II","Sega 32X","Sega CD","Sega Classics","Sega Game Gear","Sega Genesis","Sega Master System","Sega Mega Drive","Sega Model 1","Sega Pico","Sega Saturn","Sega SC-3000","Sega SG-1000","Sega ST-V","Sega VMU","Sharp X1","Sinclair ZX81","SNK Classics","SNK Neo Geo","SNK Neo Geo AES","SNK Neo Geo AES","SNK Neo Geo CD","SNK Neo Geo MVS","SNK Neo Geo Pocket","SNK Neo Geo Pocket Color","Sony PlayStation","Sony PocketStation","Sord M5","Soundic Victory MPT-02","Super Nintendo Entertainment System","Taito Classics","Tandy TRS-80 Color Computer","Texas Instruments TI 99-4A","Thomson MO5","Tiger Game.com","Tomy Tutor","VTech CreatiVision","VTech Socrates","Watara Supervision","Williams Classics"]
466 ;----------------------------------------------------------------------------
467 ; Notes:
468 ; This module now includes everything from the legacy MAME and MESS modules, but combined to match the merge of the 2 emulators that occured on version 0.162.
469 ;
470 ; Exit fade will only work correctly if you don't have Esc, the default MAME exit key, as your exit key. If you use Esc, turn off the ExitScreen
471 ; This module will set your rom paths on the fly via CLI, but you must make sure the RLUI module setting for this module "MAME_BIOS_Path" is correctly set. It defaults to your roms subfolder where MAME.exe is found.
472 ; This module assumes you have bios zip in your MAME "roms" directory, which might be different than your actual roms directory, for each system you need this module for. All tested systems listed below
473 ; If MAME has a problem reading the bios zips, try archving them with "no compression"
474 ; This site can help a ton with details for the various systems supported: http://www.progettoemma.net/mess/index.html
475 ; You may get a black screen or MAME may close w/o notice if you do not have a bios rom for your system when one is needed.
476 ; If you use bezel, it is recommended to set the module bezel mode to normal, and go to your MAME.ini file, on your emulator folder, and choose these options: artwork_crop 1, use_backdrops 1, use_overlays 1, use_bezels 0
477 ;
478 ; Command Line Options - http://easyemu.mameworld.info/mameguide/mameguide-options.html
479 ; High Scores DO NOT SAVE when cheats are enabled!
480 ; HLSL Documentation: http://mamedev.org/source/docs/hlsl.txt.html
481 ; If you use MAME for AAE, create a vector.ini in mame's ini subfolder and paste these HLSL settings in there: http://www.mameworld.info/ubbthreads/showflat.php?Cat=&Number=309968&page=&view=&sb=5&o=&vc=1
482 ;
483 ; Be aware that several systems will require a BIOS zip with their roms inside. They all come bundled in the MAME set so make sure you add your MAME roms folder to the
484 ; roms path for that system. If you have doubts about their filenames check the mTypeVar module variable content.
485 ;
486 ; Following systems will also require some specific files to operate properly:
487 ; APF Imagination Machine - apfimag (tape games), apfm1000 (cart games)
488 ; Camputers Lynx - lynx64k, lynx96k, lynx128k
489 ; Coleco ADAM - adam, adam_ddp, adam_fdc, adam_kb, adam_prn, adam_spi
490 ; NEC PC Engine-CD - "Super CD-ROM2 System V3.0 (J).pce" [262,656 bytes] (placed in the roms subfolder in the emuPath)
491 ; NEC TurboGrafx-CD - "Super CD-ROM2 System V3.01 (U).pce" [262,144 bytes] (placed in the roms subfolder in the emuPath)
492 ; Sega CD - segacd, megacd, megacd2j (megacd2j seems to be more compatible over megacdj)
493 ; Sony PlayStation - psa, pse, psj, psu
494 ;
495 ; Tape Control:
496 ; MAME tape/cassette emulation is terrible because normally it means you need to manually start and stop the tapes yourself so it's highly suggested that you use another emulator for such systems.
497 ; Tape control commands are accessible through the UI, press tab and then select Tape Control and you can start/stop the loaded tape from there.
498 ; The following hotkeys can also be used:
499 ; F2 - Start Tape
500 ; Left Shift + F2 - Stop Tape
501 ; Insert - While held, runs the game with throttling disabled and with the maximum frameskip. Useful to speedup the long tape loading process.
502 ;
503 ; Be aware that tape games are normally used on PC systems therefore it's likely that full keyboard emulation is enabled which means that you'll need to disable it in order to use any of the above
504 ; hotkeys. To disable it press the Scroll Lock key, press it again to enable it back.
505 ;
506 ; 7z Support:
507 ; Make sure you have 7z disabled for all MAME Arcade systems. Their roms are supposed to be archived, if you have 7z enabled then your games will fail to load. It's
508 ; fine to enable 7z to non-arcade systems.
509 ;
510 ; Custom Configuration Files:
511 ; If you want to use custom configuration files (.cfg files) for some games you will need to store them inside your MAME cfg folder using the following structure:
512 ; cfg\mame_system_name\database_rom_name\mame_system_name.cfg
513 ; An example of a game that requires specific settings is ICBM Attack for the Bally Astrocade, in this case special cfg file should be:
514 ; cfg\astrocde\I.C.B.M. Attack (USA) (Unl)\astrocde.cfg
515 ;
516 ; Ini Files:
517 ; Module will set most settings through command line which will override any settings you might have on your MAME ini files. Everything else will be read from
518 ; those. MAME supports a hierarchical ini file structure and will load settings from several ini files following a specific order:
519 ;- mame.ini
520 ;- <mymame>.ini (i.e. if MAME was renamed mame060.exe, MAME parses mame060.ini here)
521 ;- debug.ini (if the debugger is enabled)
522 ;- <parent>.ini (for clones only, may be called recursively)
523 ;- <gamename>.ini
524 ;- vertical.ini (for games with vertical monitor orientation)
525 ;- horizont.ini (for games with horizontal monitor orientation)
526 ;- vector.ini (for vector games only)
527 ;- <driver>.ini (based on the source filename of the driver)
528 ;
529 ; The settings in the later ini's override those in the earlier ini's.
530 ;
531 ; It's highly recommended that you set skipchecks to 'Rom Only" for MAME otherwise RocketLauncher won't be able to launch several games due
532 ; to the way MAME roms are packaged. This will be even more noticeable for those using merged sets.
533 ;
534 ; Bally Astrocade:
535 ; ICBM requires a soft reset (even on the real hardware) to launch. You can read about it here: http://www.ballyalley.com/ballyalley/articles/Playing_ICBM_Attack_Using_MESS.pdf
536 ; Other games might require this as well, you can enable this in the module's settings so the machine is reset automatically on launch, otherwise you need to press F3 to start the game.
537 ; Also ICBM Attack uses different controls then the rest of the games. Make sure you follow the procedure explained above under "Custom Configuration Files" to create such file.
538 ;
539 ; GCE Vectrex:
540 ; Requires a vectrex.lay and a png overlay for each game. These all need to be placed in the MAME\artwork\vectrex folder.
541 ; You can download all these pngs and the lay file in my ftp folder. You need to use the HyperList XML to match the pngs.
542 ;
543 ; Jupiter Ace:
544 ; Set mame to 48k ram
545 ;
546 ; Magnavox Odyssey 2:
547 ; Euro games should use the videopac bios instead of the odyssey2 one or you'll get some timing issues.
548 ; Use the systemName ini file in the folder with this module for this, example:
549 ; [Moto-Crash (France)]
550 ; Bios=videopac
551 ;
552 ; RCA Studio 2:
553 ; Most of the games require you to press a button to start the game, like 1 or 2 (refer to the game's manual).
554 ; The game screen will be black until you do.
555 ;
556 ; Texas Instruments TI 99/4A:
557 ; This system requires full keyboard emulation to work properly
558 ; Split cart dumps are not supported since MESS .145 so you'll have to convert them to RPK format or use an earlier version of MESS (and a different module)
559 ; You can check how to convert split cart dumps to RPK here:
560 ; http://www.ninerpedia.org/index.php/MESS_multicart_system
561 ; For floppy games make sure you have a RPK dump of an extended basic rom on your roms folder. It should be named "extended_basic.rpk"
562 ; This system requires you to use a MAME build with Direct Input enabled in order to auto start the games. Most games will require commands to be typed to start
563 ; and it's normally too complex to be able to do it through the -ab switch so SendCommand is used instead which means a Direct Input enabled MAME version is required.
564 ;
565 ; Bezels:
566 ; Module settings control whether RocketLauncher or MAME bezels are shown
567 ; In the bezel normal mode only RocketLauncher Bezels will be show and the MAME use_bezels option will be forced disbaled
568 ; In the bezel layout mode, RocketLauncher Bezels will be drawn only when you do not have a layout file on your MAME folders for the current game
569 ;
570 ; ServoStik:
571 ; The module will automatically control any connected ServoStiks found on the system.
572 ; It does this by reading the xml info from MAME. If that XML info has directional info at 4 or less, 4-way mode will be enabled. All others get 8-way mode.
573 ;
574 ; Per game controller types:
575 ; MAME allows you to change the controller type for each game by using slot devices. Slot devices are highly customizable and vary greatly from system to
576 ; system so to avoid adding a huge complexity to the module this must be done through the Parameters settings.
577 ; Slot devices are stored in the MAME ini file you are using, so the best way to find the command line you need to use is to start your game set the slot devices
578 ; through the MAME UI (Press tab while in MAME) exit and then open the MAME ini file and search for a section named SLOT DEVICES.
579 ; This is an example for Atari 2600 for a game using wheel controllers on both joy ports:
580 ; #
581 ; # SLOT DEVICES
582 ; #
583 ; joyport1 wheel
584 ; joyport2 wheel
585 ; The suggested method is to set the desired controllers you want to use by default in the Module Global Settings, in this case under the Atari 2600 tab you would
586 ; set Parameters=-joyport1 joy -joyport2 joy
587 ; And then for specific games do the same under Module Specific Settings for that system, if a game requires the wheel controller you'd set
588 ; Parameters=-joyport1 wheel -joyport2 wheel
589 ;
590 ; Another option is to set the default values in the MAME ini file and make sure you also set writeconfig to 0.
591 ; Swapping slot devices wipes out SYSTEM custom configs on the unplugged controllers, so to avoid any customised controls getting erased everytime you change slot devices,
592 ; ensure you set your controls in the main MAME config file (MAME.ini), not the system one (ex. Atari 2600.ini).
593 ;
594 ; Linking/NetPlay:
595 ; The module will automatically set correct network ports for linked games.
596 ; Up to 8 players on the same PC are supported. Multiple copies of MAME will be launched.
597 ; Placement of the screens are automatic but can be controlled in RocketLauncherUI MAME module settings. Windowed mode is required when more than one copy of mame is launched and is set automatically.
598 ; Each player will use a different cfg and nvram folder in your MAME folder. Player 1 will always use .\cfg and .\nvram.
599 ; Players 2 through 8 will use .\cfg2, .\cfg3, etc and .\nvram2, .\nvram3, etc
600 ; These folders and cfg/nvram files will be automatically created for you on launch so you do not need to create them manually.
601 ; Global inputs is automatically turned on for you but it is your job to setup individual controls for each instance. MAME only supports raw-input in this mode however.
602 ; Over a LAN/WAN connection only 2 players are supported due to the way the ports are designated, it's impossible to automate port allocation because there is no 1 server where all hosts connect to.
603 ; Default starting port for the Master is 15111 and consecutively goes up from there upto 15119 for 8 players. You can change the default starting port in the module settings if it conflicts with used ports on your network.
604 ; There are other network related settings in the module settings to assist with starting IPs and connectivity, so check them out as well.
605 ;
606 ; NVRAM Automation for linked games:
607 ; When launching linked games on the same pc NVRAM settings are automatically set for you so each player will be unique.
608 ; For instance, in Virtua Racing, Player 1 is red, player 2 is blue, player 3 is yellow, etc.
609 ; To do this, some other options are also set automatically for you as well, like region, difficulty, countr, course, etc
610 ; I set these to defaults, but prefer USA region. If you do not like these, you will have to disable NVRAM automation in the module settings in RocketLauncherUI.
611 ;
612 ; Additional Link info that may be of some importance:
613 ; The original Model-1 has a max Bandwidth of 6 MBit/s (TOTX173/TORX173).
614 ; One Board sends about 20 KByte/s.
615 ; So bandwidth CLIENTSIDE is like...
616 ; 2 Boards - 20 KByte/s inbound and 20 KByte/s outbound.
617 ; 3 Boards - 40 KByte/s inbound and 20 KByte/s outbound.
618 ; 4 Boards - 60 KByte/s inbound and 20 KByte/s outbound.
619 ; etc.
620 ; Some good info on Linking: http://www.mameworld.info/ubbthreads/showflat.php?Cat=&Number=297577&page=0
621 ; also http://forum.arcadecontrols.com/index.php/topic,130136.msg1331485.html
622 ;----------------------------------------------------------------------------
623 StartModule()
624 BezelGUI()
625
626 primaryExe := new Emulator(emuPath . "\" . executable) ; instantiate emulator executable object
627 emuPrimaryWindow := new Window(new WindowTitle(,"MAME")) ; instantiate primary emulator window object
628 emuOpenWindow := new Window(new WindowTitle(dialogOpen,"ConsoleWindowClass"))
629 emuConsoleWindow := new Window(new WindowTitle(,"ConsoleWindowClass"))
630 emuDebugWindow := new Window(new WindowTitle(,"MAMEDebugWindow"))
631 emuOutputWindow := new Window(new WindowTitle(,"MAMEOutput"))
632
633 ; This object controls how the module reacts to different systems. MAME can play a lot of systems, but needs to know what system you want to run, so this module has to adapt.
634 mTypeVar := "
635 ( LTrim
636 Aamber Pegasus|pegasus
637 Acorn Electron|electron
638 Amstrad CPC|cpc664
639 Amstrad GX4000|gx4000
640 APF Imagination Machine|apfimag
641 Apple II|apple2ep
642 Apple IIGS|apple2gs
643 Applied Technology MicroBee|mbeeic
644 Atari 8-Bit|a800
645 Atari 2600|a2600
646 Atari 5200|a5200
647 Atari 7800|a7800
648 Atari Jaguar|jaguar
649 Atari Lynx|lynx
650 Bally Astrocade|astrocde
651 Bandai Super Vision 8000|sv8000
652 Bandai WonderSwan|wswan
653 Bandai WonderSwan Color|wscolor
654 Bit Corporation Gamate|gamate
655 Camputers Lynx|lynx128k
656 Casio PV-1000|pv1000
657 Casio PV-2000|pv2000
658 Coleco ADAM|adam
659 ColecoVision|coleco
660 Commodore 64|c64
661 Commodore MAX Machine|vic10
662 Creatronic Mega Duck|megaduck
663 EACA EG2000 Colour Genie|cgenie
664 Emerson Arcadia 2001|arcadia
665 Entex Adventure Vision|advision
666 Epoch Game Pocket Computer|gamepock
667 Epoch Super Cassette Vision|scv
668 Exidy Sorcerer|sorcerer
669 Fairchild Channel F|channelf
670 Fujitsu FM-7|fmnew7
671 Fujitsu FM Towns|fmtowns
672 Fujitsu FM Towns Marty|fmtmarty
673 Funtech Super Acan|supracan
674 GamePark 32|gp32
675 GCE Vectrex|vectrex
676 Hartung Game Master|gmaster
677 Interton VC 4000|vc4000
678 JungleTac Sport Vii|vii
679 Jupiter Ace|jupace
680 Magnavox Odyssey 2|odyssey2
681 Matra & Hachette Alice|alice32
682 Mattel Aquarius|aquarius
683 Mattel Intellivision|intv
684 MGT Sam Coupe|samcoupe
685 Milton Bradley MicroVision|microvsn
686 NEC PC-8801|pc8801
687 NEC PC Engine|pce
688 NEC PC Engine-CD|pce
689 NEC SuperGrafx|sgx
690 NEC TurboGrafx-16|tg16
691 NEC TurboGrafx-CD|tg16
692 Nintendo 64|n64
693 Nintendo 64DD|n64dd
694 Nintendo Entertainment System|nes
695 Nintendo Famicom|famicom
696 Nintendo Famicom Disk System|fds
697 Nintendo Game Boy|gameboy
698 Nintendo Game Boy Advance|gba
699 Nintendo Game Boy Color|gbcolor
700 Nintendo Pokemon Mini|pokemini
701 Nintendo Satellaview|snes
702 Nintendo Super Famicom|snes
703 Nintendo Super Game Boy|supergb
704 Nintendo Virtual Boy|vboy
705 Othello Multivision|omv1000
706 Philips CD-i|cdimono1
707 Philips Videopac Plus G7400|g7400
708 Philips VG 5000|vg5k
709 RCA Studio II|studio2
710 Sega 32X|32x
711 Sega CD|segacd
712 Sega Game Gear|gamegear
713 Sega Genesis|genesis
714 Sega Master System|sms
715 Sega Mega Drive|megadriv
716 Sega Pico|pico
717 Sega Saturn|saturn
718 Sega SC-3000|sc3000
719 Sega SG-1000|sg1000
720 Sega VMU|svmu
721 Sharp X1|x1turbo40
722 Sinclair ZX81|zx81
723 SNK Neo Geo AES|aes
724 SNK Neo Geo CD|neocdz
725 SNK Neo Geo Pocket|ngp
726 SNK Neo Geo Pocket Color|ngpc
727 Sony PlayStation|psx
728 Sony PocketStation|pockstat
729 Sord M5|m5
730 Soundic Victory MPT-02|mpt02
731 Super Nintendo Entertainment System|snes
732 Tandy TRS-80 Color Computer|coco3
733 Texas Instruments TI 99-4A|ti99_4a
734 Thomson MO5|mo5
735 Tiger Game.com|gamecom
736 Tomy Tutor|tutor
737 VTech CreatiVision|crvision
738 VTech Socrates|socrates
739 Watara Supervision|svision
740 )"
741 mType := Object()
742 Loop, Parse, mTypeVar, `n, `r
743 {
744 obj := {}
745 Loop, Parse, A_LoopField, |
746 If (A_Index = 1)
747 obj.System := A_LoopField
748 Else ; 2
749 obj.mameID := A_LoopField
750 mType.Insert(obj["System"], obj)
751 }
752 RLLog.Debug("Module - Finished building the " . MEmu . " object")
753 ; For easier use throughout the module
754 mameSystem := mType[systemName].System
755 mameID := mType[systemName].mameID
756
757 If !mameSystem {
758 If (!ArrayUtils.ArrayContains(MSystem,systemName)) {
759 RLLog.Warning("Module - """ . systemName . """ is not a known console or computer system. Defaulting to MAME's Arcade mode for the remainder of this " . MEmu . " module.")
760 } Else {
761 RLLog.Debug("Module - Defaulting to MAME's Arcade mode for the remainder of this " . MEmu . " module.")
762 }
763 mameSystem := systemName
764 mameID := "MAME"
765 }
766
767 Fullscreen := moduleIni.Read("Settings", "Fullscreen","true",,1) ; Set fullscreen mode
768 legacyMode := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "LegacyMode","false",,1)
769 mameBiosPath := moduleIni.Read("Settings", "MAME_BIOS_Path", emuPath . "\roms",,1)
770 Videomode := moduleIni.Read("Settings", "Videomode","d3d",,1) ; Choices are gdi,ddraw,d3d. If left blank, MAME uses d3d by default
771 pauseMethod := moduleIni.Read("Settings", "PauseMethod",1,,1) ; set the pause method that works better on your machine (preferred methods 1 and 2) 1 = Win7 and Win8 OK - Problems with Win XP, 2 = preferred method for WinXP - Problems in Win7, 3 and 4 = same as 1 and 2, 5 = only use If you have a direct input version of mame, 6 = suspend mame process method, it could crash mame in some computers
772 bilinearFilter := moduleIni.Read(mameSystem . "|Settings", "BilinearFilter","false",,1)
773 hlsl := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "HLSL","false",,1)
774 glsl := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "GLSL","false",,1)
775 bezelMode := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "BezelMode","layout",,1) ; "layout" or "normal"
776 verticalRotationMode := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "VerticalRotationMode","none",,1)
777 cheatMode := moduleIni.Read("Settings", "CheatMode","false",,1)
778 cheatModeKey := moduleIni.Read("Settings", "CheatModeKey",,,1) ; user defined key to be held down before launching a mame rom.
779 UseSoftwareList := moduleIni.Read(romName . "|" . mameSystem, "UseSoftwareList","false",,1)
780 sysStaticParams := moduleIni.Read(mameSystem, "StaticParameters",,,1)
781 sysParams := moduleIni.Read(mameSystem, "Parameters",,,1)
782 romParams := moduleIni.Read(romName, "Parameters", sysParams,,1)
783 mameRomName := moduleIni.Read(romName, "MameRomName",,,1)
784 autosave := moduleIni.Read(romName . "|" . mameSystem, "Autosave", "false",,1)
785 volume := moduleIni.Read(romName . "|" . mameSystem . "|Settings", "Volume",,,1)
786 Artwork_Crop := moduleIni.Read(romName . "|" . mameSystem, "Artwork_Crop", "true",,1)
787 Use_Bezels := moduleIni.Read(romName . "|" . mameSystem, "Use_Bezels", "false",,1)
788 Use_Overlays := moduleIni.Read(romName . "|" . mameSystem, "Use_Overlays", "true",,1)
789 Use_Backdrops := moduleIni.Read(romName . "|" . mameSystem, "Use_Backdrops", "true",,1)
790 Use_Cpanels := moduleIni.Read(romName . "|" . mameSystem, "Use_Cpanels", "false",,1)
791 Use_Marquees := moduleIni.Read(romName . "|" . mameSystem, "Use_Marquees", "false",,1)
792 inipath := moduleIni.Read(mameSystem, "IniPath",,,1)
793 hashpath := moduleIni.Read(mameSystem, "HashPath",,,1)
794 UseControllerRemap := moduleIni.Read(mameSystem . "|Settings", "UseControllerRemap", "true",,1)
795 ControllerRemapPath := moduleIni.Read(mameSystem . "|Settings", "ControllerRemapPath", emuPath . "\ControllerRemap\ControllerRemap.exe",,1)
796 CtrlRemapFile := new File(ControllerRemapPath)
797 ControllerRemapConfigPath := moduleIni.Read( mameSystem . "|Settings", "ControllerRemapConfigPath", CtrlRemapFile.FilePath . "\ctrlr\",,1)
798 MAMECtrlrPath := moduleIni.Read(mameSystem . "|Settings", "MAMECtrlrPath", emuPath . "\ctrlr",,1)
799
800 mameBiosPath := GetFullName(mameBiosPath)
801
802 ; Loop, 8
803 ; car%A_Index%Color := moduleIni.Read(romName, "Car_" . A_Index . "_Color",,,1)
804
805 enableLinkPlay := moduleIni.Read(romName . "|Link/Network", "Enable_Link_Play", "false",,1)
806 networkSession := ""
807 If (enableLinkPlay != "false") {
808 RLLog.Info("Module - Link/Network Multi-Player is an available option for " . romName)
809 getWANIP := moduleIni.Read("Link/Network", "Get_WAN_IP","false",,1)
810 myIP := If getWANIP = "true" ? GetPublicIP() : "127.0.0.1" ; use local ip by default if user does not want to get the WAN IP as MAME needs this for linked games
811 networkPlayers := enableLinkPlay ; Max amount of networkable players
812 localLink := 1 ; Tell Multiplayer menu to enable menu option for local linking
813
814 enableNVRAMAutomation := moduleIni.Read(romName . "|Link/Network", "Enable_NVRAM_Automation","true",,1)
815 maxPlayersPerMonitor := moduleIni.Read(romName . "|Link/Network", "Max_Players_Per_monitor","1|1|1|1|1|1|1|1",,1)
816 splitScreen2PlayersMode := moduleIni.Read(romName . "|Link/Network", "SplitScreen_2_Players","Horizontal",,1) ;horizontal or vertical
817 splitScreen3PlayersMode := moduleIni.Read(romName . "|Link/Network", "SplitScreen_3_Players","P1top",,1) ; For Player1 screen to be on left: P1left. For Player1 screen to be on top: P1top. For Player1 screen to be on bottom: P1bottom. For Player1 screen to be on right: P1right.
818 localPort := moduleIni.Read("Link/Network", "Local_Port","15111",,1)
819
820 defaultServerIP := moduleIni.Read("Link/Network", "Default_Server_IP", myIP,,1)
821 defaultServerPort := moduleIni.Read("Link/Network", "Default_Server_Port","15111",,1)
822 lastIP := moduleIni.Read("Link/Network", "Last_IP", defaultServerIP,,1) ; also known as the Remote IP in mame. Does not need to be on the ISD
823 lastPort := moduleIni.Read("Link/Network", "Last_Port", defaultServerPort,,1) ; also known as the Remote Port in mame. Does not need to be on the ISD
824
825 MultiplayerMenu(lastIP, lastPort, networkType, networkPlayers,,,,,,localLink,"ipAndPort")
826
827 ;MultiPlayer Menu Result
828 ; If !(networkType)
829 ; MsgBox, % "Single Player Game"
830 ; Else If (networkType="localLink")
831 ; MsgBox, % "Local Link selected with the number of players equal to: " . networkPlayers
832 ; Else If (networkType="server")
833 ; MsgBox, % "WAN IP Address=" . networkIP . " | LAN IP Address=" . localIP[1,2] . " | Port=" . networkPort . " | networkPlayers=" . networkPlayers . " | networkRequiresSetup=" . networkRequiresSetup
834 ; Else If (networkType="client")
835 ; MsgBox, % "NetworkIP=" . networkIP . " | Port Number=" . networkPort . " | networkRequiresSetup=" . networkRequiresSetup
836
837 If networkSession {
838 RLLog.Info("Module - Using a Network for " . romName)
839 multiPlayerObj := Object() ; initialize object to store the multiplayer options
840 If (networkType="localLink") {
841 RLLog.Info("Module - Setting remote host to 127.0.0.1 to support local link mode as it is running on this PC.")
842 linkEnabledGame := 1
843 If networkPlayers > 1
844 { RLLog.Info("Module - Local link mode was selected and " . networkPlayers . " sessions will be launched.")
845 fullscreen := "false" ; must turn off fullscreen if running multiple MAMEs on the same machine
846 Loop % networkPlayers {
847 multiPlayerObj[A_Index,"Player"] := A_Index
848 multiPlayerObj[A_Index,"CfgDir"] := " -cfg_directory cfg" . (If A_Index = 1 ? "" : A_Index)
849 multiPlayerObj[A_Index,"NvramDir"] := " -nvram_directory nvram" . (If A_Index = 1 ? "" : A_Index)
850 If (A_Index = 1) { ; Player 1
851 initialLocalPort := localPort ; must be stored for last player
852 multiPlayerObj[A_Index,"LocalHost"] := " -comm_localhost 0.0.0.0"
853 multiPlayerObj[A_Index,"LocalPort"] := " -comm_localport " . localPort
854 localPort++
855 multiPlayerObj[A_Index,"RemotePort"] := " -comm_remoteport " . localPort
856 } Else { ; Players 2+
857 multiPlayerObj[A_Index,"LocalPort"] := " -comm_localport " . localPort
858 localPort++
859 multiPlayerObj[A_Index,"RemoteHost"] := " -comm_remotehost 127.0.0.1"
860 multiPlayerObj[A_Index,"RemotePort"] := " -comm_remoteport " . (If A_Index = networkPlayers ? initialLocalPort : localPort) ; must set remote port to first port on last player
861 }
862
863 ; msgbox % "Player: " . multiPlayerObj[A_Index]["Player"] . "`nLocalHost: " . multiPlayerObj[A_Index]["LocalHost"] . "`nLocalPort: " . multiPlayerObj[A_Index]["LocalPort"] . "`nRemoteHost: " . multiPlayerObj[A_Index]["RemoteHost"] . "`nRemotePort: " . multiPlayerObj[A_Index]["RemotePort"] . "`nCfgDir: " . multiPlayerObj[A_Index]["CfgDir"] . "`nNvramDir: " . multiPlayerObj[A_Index]["NvramDir"]
864 }
865 } Else
866 RLLog.Info("Module - Local link mode was selected but user only chose 1 player. Launch will be a normal session.")
867 } Else If (networkType = "client") {
868 RLLog.Info("Module - Remote host is running on another PC, module will use remote link mode.")
869 moduleIni.Write(networkIP,"GlobalModuleIni","Link/Network","Last_IP") ; Save last used IP and Port for quicker launching next time
870 moduleIni.Write(networkPort,"GlobalModuleIni","Link/Network","Last_Port")
871 linkType := "Slave"
872 networkPlayers := 1
873 multiPlayerObj[1,"Player"] := 1
874 multiPlayerObj[1,"CfgDir"] := " -cfg_directory cfg"
875 multiPlayerObj[1,"NvramDir"] := " -nvram_directory nvram"
876 multiPlayerObj[1,"LocalHost"] := " -comm_localhost 0.0.0.0" ; don't really need to set this but just in case
877 multiPlayerObj[1,"LocalPort"] := " -comm_localport " . localPort
878 multiPlayerObj[1,"RemoteHost"] := " -comm_remotehost " . networkIP
879 multiPlayerObj[1,"RemotePort"] := " -comm_remoteport " . networkPort
880 } Else { ; server
881 RLLog.Info("Module - This PC is acting as the host, telling mame to listen for incoming connections on port: " . localPort)
882 moduleIni.Write(networkIP,"GlobalModuleIni","Link/Network","Last_IP") ; Save last used IP and Port for quicker launching next time
883 moduleIni.Write(networkPort,"GlobalModuleIni","Link/Network","Last_Port")
884 linkType := "Master"
885 networkPlayers := 1
886 multiPlayerObj[1,"Player"] := 1
887 multiPlayerObj[1,"CfgDir"] := " -cfg_directory cfg"
888 multiPlayerObj[1,"NvramDir"] := " -nvram_directory nvram"
889 multiPlayerObj[1,"LocalHost"] := " -comm_localhost 0.0.0.0" ; don't really need to set this but just in case
890 multiPlayerObj[1,"LocalPort"] := " -comm_localport " . networkPort
891 multiPlayerObj[1,"RemoteHost"] := " -comm_remotehost " . networkIP
892 multiPlayerObj[1,"RemotePort"] := " -comm_remoteport " . networkPort
893 }
894 RLLog.Info("Module - Starting a network session using the IP """ . networkIP . """ and PORT """ . networkPort . """")
895 } Else {
896 RLLog.Info("Module - User chose Single Player mode for this session")
897 }
898 }
899
900 FadeInStart()
901
902 If inipath
903 inipath := AbsoluteFromRelative(EmuPath, inipath)
904 If hashpath
905 hashpath := AbsoluteFromRelative(EmuPath, hashpath)
906
907 artworkCrop := If (Artwork_Crop = "true") ? " -artwork_crop" : " -noartwork_crop"
908 useBezels := If (Use_Bezels = "true") ? " -use_bezels" : " -nouse_bezels"
909 useOverlays := If (Use_Overlays = "true") ? " -use_overlays" : " -nouse_overlays"
910 useBackdrops := If (Use_Backdrops = "true") ? " -use_backdrops" : " -nouse_backdrops"
911 useCpanels := If (Use_Cpanels = "true") ? " -use_cpanels" : " -nouse_cpanels"
912 useMarquees := If (Use_Marquees = "true") ? " -use_marquees" : " -nouse_marquees"
913 autosave := If autosave = "true" ? " -autosave" : ""
914 volume := If volume != "" ? " -volume " . volume : ""
915 inipath := If inipath != "" ? " -inipath """ . inipath . """" : ""
916 hashpath := If hashpath != "" ? " -hashpath """ . hashpath . """" : ""
917
918 If (verticalRotationMode = "none")
919 verticalRotationMode := ""
920
921 ; Process mame's ListXML for certain features
922 If (bezelEnabled = "true" || servoStikEnabled = "auto" || verticalRotationMode || UseControllerRemap = "true") {
923 ListXMLObject := Object()
924 ListXMLObject := ListXMLInfo(If mameID = "MAME" ? (If mameRomName ? mameRomName : romName) : mameID) ;For non-Arcade systems we cannot use romName for listxml
925
926 Angle := ListXMLObject["Angle"].Value
927 If (bezelEnabled = "true") {
928 If (networkPlayers > 1) {
929 useBezels := " -nouse_bezels" ; force disabling MAME built-in bezels
930 BezelStart(networkPlayers)
931 } Else {
932 If (bezelMode = "layout"){
933 BezelStart("layout",ListXMLObject["Parent"].Value,Angle,romName)
934 } Else { ;bezel mode = normal
935 useBezels := " -nouse_bezels" ; force disabling MAME built-in bezels
936 BezelStart(,,Angle)
937 }
938 }
939 }
940 If (servoStikEnabled = "auto") {
941 ServoStik(If ListXMLObject["Ways"].Value <= 4 ? 4 : 8) ; If "ways" in the xml is set to 4 or less, the servo will go into 4-way mode, else 8-way mode will be enabled
942 }
943 If (verticalRotationMode && Angle) {
944 RLLog.Info("Setting rotation mode to " . verticalRotationMode . " - Game's angle is " . Angle)
945 If (verticalRotationMode = "original")
946 verticalRotationMode := " -norotate"
947 Else If (verticalRotationMode = "right")
948 verticalRotationMode := " -ror"
949 Else If (verticalRotationMode = "left")
950 verticalRotationMode := " -rol"
951 Else
952 verticalRotationMode := ""
953 }
954 Else
955 verticalRotationMode := ""
956
957 ;Controller Remap
958 If (UseControllerRemap = "true") {
959 RLLog.Info("Controller Remap: Start")
960 romProfileName := (mameRomName ? mameRomName : romName)
961 romParentName := ListXMLObject["Parent"].Value
962
963 If ControllerRemapPath
964 ControllerRemapPath := AbsoluteFromRelative("", ControllerRemapPath)
965 If ControllerRemapConfigPath
966 ControllerRemapConfigPath := AbsoluteFromRelative("", ControllerRemapConfigPath)
967 If MAMECtrlrPath
968 MAMECtrlrPath := AbsoluteFromRelative(emuPath, MAMECtrlrPath)
969
970 ctrlrPath := ""
971 RLLog.Info("Controller Remap: ControllerRemapConfigPath: " . ControllerRemapConfigPath)
972
973 ;~ ;1- Check for Rom. 2- Check for Rom Parent. 3- Check for System default
974 If (FileExist(ControllerRemapConfigPath . "\" . systemName . "\" . romProfileName . ".cfg")) {
975 RLLog.Info("Controller Remap: Rom Config File Found: " . ControllerRemapConfigPath . "\" . systemName . "\" . romProfileName . ".cfg")
976 ctrlrPath := new File(ControllerRemapConfigPath . "\" . systemName . "\" . romProfileName . ".cfg")
977 }
978 else if (romParentName and FileExist(ControllerRemapConfigPath . "\" . systemName . "\" . romParentName . ".cfg")) {
979 RLLog.Info("Controller Remap: Parent Rom Config File Found: " . ControllerRemapConfigPath . "\" . systemName . "\" . romParentName . ".cfg")
980 ctrlrPath := new File(ControllerRemapConfigPath . "\" . systemName . "\" . romParentName . ".cfg")
981 }
982 else If (FileExist(ControllerRemapConfigPath . "\" . systemName . "\_Default.cfg")) {
983 RLLog.Info("Controller Remap: System Config File Found: " . ControllerRemapConfigPath . "\" . systemName . "\_Default.cfg")
984 ctrlrPath := new File(ControllerRemapConfigPath . "\" . systemName . "\_Default.cfg")
985 }
986 else If (FileExist(ControllerRemapConfigPath . "\_Default.cfg")) {
987 RLLog.Info("Controller Remap: Global Config File Found: " . ControllerRemapConfigPath . "\_Default.cfg")
988 ctrlrPath := new File(ControllerRemapConfigPath . "\_Default.cfg")
989 }
990
991 ; Is there a controller file?
992 if (ctrlrPath) {
993 ctrlrFile := " -ctrlr RocketLauncher"
994
995 ;Replace <system name="default"> with the Right mameID in the RocketLauncher.cfg file
996 if(mameID != "MAME") {
997 ctrlrPath.Read()
998 rocketLauncherCfgFile := new File(MAMECtrlrPath . "\RocketLauncher.cfg")
999 rocketLauncherCfgFile.Delete()
1000 rocketLauncherCfgFile.Append(StringUtils.Replace(ctrlrPath.Text, "<system name=""default"">", "<system name=""" . mameID . """>"))
1001 }
1002 else {
1003 ctrlrPath.Copy(MAMECtrlrPath . "\RocketLauncher.cfg",1)
1004 }
1005
1006 RLLog.Info("Controller Remap: Running """ . ControllerRemapPath . """ /remap:""" . MAMECtrlrPath . "\RocketLauncher.cfg""")
1007 ControllerRemapProcess := new Process(ControllerRemapPath)
1008 ControllerRemapProcess.Run(" /remap:""" . MAMECtrlrPath . "\RocketLauncher.cfg""","Hide")
1009 }
1010 else {
1011 RLLog.Info("Controller Remap: No Controller config file found.")
1012 }
1013 RLLog.Info("Controller Remap: End")
1014 }
1015 }
1016
1017 winstate := If (Fullscreen = "true") ? "Hide UseErrorLevel" : "UseErrorLevel"
1018 fullscreenParam := If (Fullscreen = "true") ? " -nowindow" : " -window"
1019
1020 hideEmuObj := Object(emuOpenWindow,0,emuDebugWindow,0,emuOutputWindow,0,emuPrimaryWindow,1)
1021 7z(romPath, romName, romExtension, sevenZExtractPath)
1022
1023 ; Get MAME version from executable, this is needed since some CLI switches are not available in older MAME versions
1024 exeAtrib := FileGetVersionInfo_AW(emuPath . "\" . executable, "FileVersion|ProductVersion", "|")
1025 Loop, Parse, exeAtrib, |%A_Tab%, %A_Space%
1026 A_Index & 1 ? ( _ := A_LoopField ) : ( %_% := A_LoopField )
1027 If ProductVersion
1028 MAMEVersion := StringUtils.Right(ProductVersion, StringUtils.StringLength(ProductVersion) - 2)
1029 RLLog.Info("Module - Detected MAME Product Version from '" . EmuPath . "\" . executable . "' is " . MAMEVersion)
1030
1031 If (videomode = "opengl") {
1032 hlsl := " -nohlsl_enable"
1033 If (MAMEVersion > 159)
1034 glsl := If glsl = "true" ? " -gl_glsl" : (If glsl = "ini" ? "" : " -nogl_glsl")
1035 Else
1036 glsl := ""
1037 } Else {
1038 hlsl := If hlsl = "true" ? " -hlsl_enable" : (If hlsl = "ini" ? "" : " -nohlsl_enable")
1039 If (MAMEVersion > 159)
1040 glsl := If videomode = "ini" ? "" : " -nogl_glsl"
1041 Else
1042 glsl := ""
1043
1044 If (videomode = "ini")
1045 videomode := ""
1046 }
1047 videomode := If (Videomode != "" ) ? " -video " . videomode : ""
1048
1049 param1 := " -cart """ . romPath . "\" . romName . romExtension . """" ; default param1 used for launching most systems.
1050 If (romExtension = ".txt") ; This can be applied to all systems
1051 param1 := ""
1052
1053 If (mameID = "apfimag") ; APF Imagination Machine
1054 If (romExtension != ".tap")
1055 mameID := "apfm1000" ; cart games for APF Imagination Machine require a different bios to be loaded
1056
1057 If (UseSoftwareList != "true")
1058 { ; Now that we know the system we are loading, determine if we use an ini assocated with that system for custom game configs a user might need. Then load the configs associated to that game.
1059 If StringUtils.Contains(mameID,"ti99_4a|aes|apple2gs|electron|mbeeic|odyssey2|astrocde|samcoupe|vic10|cpc664|mo5") ; these systems will use an ini to store game specific settings
1060 {
1061 If !SystemModuleIni.Exist()
1062 SystemModuleIni.Append() ; create a blank file if it does not exist
1063
1064 If (mameID = "ti99_4a") ; Texas Instruments TI 99-4A
1065 {
1066 ExpansionCartLocation := moduleIni.Read("Settings", "ExpansionCartLocation", romPathOrig . "\System",,1)
1067 ExpansionCartLocation := GetFullName(ExpansionCartLocation)
1068 CommandWaitOffset := moduleIni.Read("Settings", "CommandWaitOffset", 0,,1)
1069
1070 ExpansionCart := moduleIni.Read(romName, "Expansion_Cart","extended_basic.rpk",,1) ; user can specify a rom specific cart instead of the default basic one
1071 Command := moduleIni.Read(romName, "Command",,,1)
1072
1073 ; Now set the parameters to send to MAME
1074 If (romExtension = ".dsk") ; Expansion Disk
1075 {
1076 ; If using the mainCart , send expansionLocation to MAME. This will require DirectInput to be enabled on the MAME build! Else we are loading a Disk game
1077 param1 := " -nat -gromport single -cart1"
1078 param2 := " """ . ExpansionCartLocation . "\" . ExpansionCart . """"
1079 param3 := " -peb:slot2 32kmem -peb:slot3 speech -peb:slot6 tirs232 -peb:slot8 hfdc"
1080 param4 := " -flop1"
1081 param5 := " """ . romPath . "\" . romName . romExtension . """"
1082 If StringUtils.Contains(romName, "\(Disk")
1083 {
1084 TimerUtils.Sleep(50)
1085 If (romTable.MaxIndex() = 2)
1086 {
1087 param4 := " -flop1 " . " """ . romTable[1,1] . """"
1088 param5 := " -flop2 " . " """ . romTable[2,1] . """"
1089 }
1090 }
1091 } Else If (romExtension = ".rpk") ; Cart Game (RPK Format)
1092 param1 := " -nat -gromport single -cart1", param2:=" """ . romPath . "\" . romName . romExtension . """", param3:=" -peb:slot3 speech" ;-cart will also work here
1093 param6 := " -ui_active" ;Enable partial keyboard mode at startup
1094 } Else If (mameID = "aes") ; SNK Neo Geo AES
1095 { biosRegion := moduleIni.Read(romName, "BIOS_Region","asia",,1)
1096 param1 := " -bios " . biosRegion ; can also be japan, but the asian one has english menus for most games
1097 param2 := " -cart " . romName
1098 }Else If (mameID = "apple2gs") ; Apple IIGS
1099 { externalOS := moduleIni.Read(romName, "External_OS","false",,1)
1100 2gsSystemFile := "System6.2mg" ;For games without OS included, always force this name and error out if not found
1101 multipartTable := CreateRomTable(multipartTable)
1102
1103 If (externalOS = "true")
1104 { CheckFile(romPath . "\" . 2gsSystemFile)
1105 param1 := " -flop3", param2:=" """ . romPath . "\" . 2gsSystemFile . """", param3:=" -flop4", param4:=" """ . romPath . "\" . romName . romExtension . """"
1106 } Else {
1107 param1 := " -flop3", param2:=" """ . romPath . "\" . romName . romExtension . """"
1108 If (multipartTable.MaxIndex() > 1)
1109 param3 := " -flop4", param4 := " """ . multipartTable[2,1] . """"
1110 }
1111 param5 := " -ui_active" ;Enable partial keyboard mode at startup
1112 }Else If (mameID = "electron") ; Acorn Electron
1113 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1114 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1115 If StringUtils.Contains(romExtension,"\.ssd|\.bbc\|\.img|\.dsd|\.adf|\.ads|\.adm|\.adl")
1116 {
1117 mediaDeviceType := "flop"
1118 autoBootMethod := " -autoboot_command ""*mount 0\n\n\n\n\nch.""""run""""""\n"""""
1119 }
1120 Else If StringUtils.Contains(romExtension,"\.bin|\.rom")
1121 mediaDeviceType := "cart"
1122 Else
1123 {
1124 mediaDeviceType := "cass"
1125 autoBootMethod := " -autoboot_command ""*tape\nchain""""""""""""\n"""
1126 }
1127 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """" . autoBootMethod . AutoBootDelay . ""
1128 }Else If (mameID = "sc3000") ; Sega SC-3000
1129 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1130 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1131 If StringUtils.Contains(romExtension,"\.bin|\.sg\|.sc")
1132 mediaDeviceType := "cart"
1133 Else ; any other format
1134 mediaDeviceType := "cass"
1135 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""chain""""""""""""\n""" . AutoBootDelay . ""
1136 }Else If (mameID = "c64") ; Commodore 64
1137 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1138 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1139 If StringUtils.Contains(romExtension,"\.d64|\.g64|\.g41|\.d77|\.d88|\.1dd|\.dfi|\.imd|\.ipf|\.mfi|\.mfm|\.td0|\.cqm|\.cqi|\.dsk")
1140 mediaDeviceType := "flop1"
1141 Else If StringUtils.Contains(romExtension,"\.wav|\.tap")
1142 mediaDeviceType := "cass1"
1143 Else If StringUtils.Contains(romExtension,"\.80|\.a0|\.e0|\.crt")
1144 mediaDeviceType := "cart1"
1145 Else If StringUtils.Contains(romExtension,"\.p00|\.prg|\.t64")
1146 mediaDeviceType := "quik1"
1147 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""chain""""""""""""\n""" . AutoBootDelay . ""
1148 }Else If mameID = mbeeic ; Applied Technology MicroBee
1149 { microbeeModel := moduleIni.Read(romName, "MicroBee_Model","mbeeic",,1)
1150 If !StringUtils.Contains(microbeeModel,"mbee|mbeeic|mbeepc|mbeepc85|mbee56")
1151 ScriptError("This is not a known MicroBee model value: " . microbeeModel)
1152 Else If (microbeeModel != "mbeeic")
1153 mameID := microbeeModel
1154 If StringUtils.Contains(romExtension,"\.mwb|\.com|\.bee")
1155 mediaDeviceType := "quik1"
1156 Else If StringUtils.Contains(romExtension,"\.wav|\.tap")
1157 mediaDeviceType := "cass"
1158 Else If StringUtils.Contains(romExtension,"\.rom")
1159 mediaDeviceType := "cart"
1160 Else If StringUtils.Contains(romExtension,"\.dsk")
1161 mediaDeviceType := "flop1"
1162 Else ; .bin format
1163 mediaDeviceType := "quik2"
1164 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """"
1165 }Else If (mameID = "odyssey2") ; Magnavox Odyssey 2
1166 {
1167 VoiceModule := moduleIni.Read(romname, "VoiceModule","false","",1)
1168 If (VoiceModule = "true")
1169 param1 := " -cart1 voice -cart2 """ . romPath . "\" . romName . romExtension . """"
1170 param2 := " -ui_active" ;Enable partial keyboard mode at startup
1171
1172 If romName not contains (USA
1173 mameID := "videopac"
1174 }Else If (mameID = "astrocde") ; Bally Astrocade
1175 {
1176 BlueRAMBasicRom := moduleIni.Read("Settings", "BlueRAMBasicRom","Blue RAM Basic v1.1 (USA).bin",,1) ; Blue RAM Basic rom
1177 RequiresReset := moduleIni.Read(romname, "RequiresReset","false",,1) ; Check if game requires a reset
1178
1179 BlueRAMBasicRomPath := new File(romPath . "\" . BlueRAMBasicRom)
1180 If (romExtension = ".script") {
1181 ; Will require blue ram basic
1182 If !BlueRAMBasicRomPath.Exist() {
1183 ; Blue RAM Basic games might be in their own sub-folders since they have several files, so let's try to find the Blue RAM cart in the parent folder as well
1184 StringUtils.SplitPath(romPath,,romBasePath) ; grab path one level up
1185 BlueRAMBasicRomPath.__Delete()
1186 BlueRAMBasicRomPath := new File(romBasePath . "\" . BlueRAMBasicRom)
1187 BlueRAMBasicRomPath.CheckFile("Couldn't find " . BlueRAMBasicRom . " on any of these paths:" . romBasePath . "|" . romPath)
1188 }
1189
1190 ScriptFile := new File(romPath . "\" . romName . romExtension)
1191 param1 := " -cart """ . BlueRAMBasicRomPath.FileFullPath . """"
1192
1193 ; Replace rompath variable in script
1194 ScriptFile.Read()
1195 ScriptFile.Text := StringUtils.Replace(ScriptFile.Text, "{romPath}", romPath, "all")
1196
1197 ; Create cmd file to send to MESS
1198 RomCMDFile := new File(romPath . "\" . romName . ".cmd")
1199 RomCMDFile.Delete()
1200 RomCMDFile.Append(ScriptFile.Text)
1201 param2 := " -exp blue_ram_16k -debug -debugscript """ . RomCMDFile.FileFullPath . """"
1202
1203 closeDebugWindow := "true"
1204 }
1205 }Else If (mameID = "samcoupe") ; MGT Sam Coupe
1206 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1207 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1208
1209 If StringUtils.Contains(romExtension,"\.mgt|\.dsk|\.d77|\.d88|\.1dd|\.dfi|\.imd|\.ipf|\.mfi|\.mfm|\.td0|\.cqm|\.cqi")
1210 mediaDeviceType := "flop1"
1211 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""\nBOOT\n""" . AutoBootDelay . ""
1212 }Else If (mameID = "vic10") ; Commodore MAX Machine
1213 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1214 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1215
1216 If StringUtils.Contains(romExtension,"\.e0|\.80")
1217 param1 := " -cart """ . romPath . "\" . romName . romExtension . """"
1218 Else If StringUtils.Contains(romExtension,"\.wav|\.tap|\.fd")
1219 param1 := " -cass """ . romPath . "\" . romName . romExtension . """"
1220 Else If StringUtils.Contains(romExtension,"\.t64|\.prg|\.p00")
1221 {
1222 mediaDeviceType := "quik"
1223 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""RUN""" . AutoBootDelay . ""
1224 }
1225 }Else If (mameID = "mo5") ; Thomson MO5
1226 { AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2","",1) ; Read delay from config.
1227 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1228
1229 If StringUtils.Contains(romExtension,"\.bin|\.m5|\.rom")
1230 param1 := " -cart """ . romPath . "\" . romName . romExtension . """"
1231 Else If StringUtils.Contains(romExtension,"\.wav|\.k5|\.k7")
1232 param1 := " -cass """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""RUN \""\""\n""" . AutoBootDelay . ""
1233 Else If StringUtils.Contains(romExtension,"\.fd|\.dsk|\.d77|\.d88")
1234 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """ -autoboot_command ""DOS\nLOAD\n""" . AutoBootDelay . ""
1235 }Else If (mameID = "cpc664") ; Amstrad CPC
1236 { LaunchProgram := moduleIni.Read(romName, "LaunchProgram","disk",,1) ; Read command from config.
1237 LaunchProgram := " -autoboot_command " . """RUN \""" . LaunchProgram . "\n"""
1238 AutoBootDelay := moduleIni.Read("Settings", "AutoBootDelay","2",,1) ; Read delay from config.
1239 AutoBootDelay := " -autoboot_delay " . AutoBootDelay
1240
1241 If StringUtils.Contains(romExtension,"\.d77|\.d88|\.1dd|\.dfi|\.imd|\.ipf|\.mfi|\.mfm|\.td0|\.cqm|\.cqi|\.dsk")
1242 mediaDeviceType := "flop1"
1243 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """" . LaunchProgram . AutoBootDelay
1244 }
1245
1246 ;Use a different bios if needed (This must be done after the above if conditions since the mameID will change)
1247 iniBios := moduleIni.Read(romName, "Bios",mameID,,1) ; for all games, we use the default bios. Some games might require different bios like Odyssey2's Jopac games use the videopac bios instead, which should be defined in the ini
1248 If (iniBios != "")
1249 mameID := iniBios ; need to change the bios name for some games
1250 }
1251
1252 ; These systems don't use an ini, but do require parameters to be changed from the default method of launching MAME
1253 If (mameID = "neocdz" || mameID = "cdimono1" || mameID = "segacd" || mameID = "saturn" || mameID = "psx" || (mameID = "tg16" && mameSystem = "NEC TurboGrafx-CD") || (mameID = "pce" && mameSystem = "NEC PC Engine-CD")) ; SNK Neo Geo CD, Philips CD-i, Sega CD, Sega Saturn, Sony PlayStation, NEC PC Engine-CD or NEC TurboGrafx-CD
1254 { If !StringUtils.Contains(romExtension,"\.chd|\.cue")
1255 ScriptError("MAME only supports " . mameSystem . " games in chd and cue format. It does not support:`n" . romExtension)
1256 If (mameSystem = "NEC TurboGrafx-CD") { ; NEC TurboGrafx-CD needs an additional bios mounted as a cart to run
1257 tgcdBios := moduleIni.Read("Settings", "TGCDSystemCard", emuPath . "\roms\Super CD-ROM2 System V3.01 (U).pce",,1)
1258 tgcdBios := GetFullName(tgcdBios)
1259 tgcdBios := CheckFile(tgcdBios)
1260 param2 := " -cart " . """" . tgcdBios . """"
1261 } Else If (mameSystem = "NEC PC Engine-CD") { ; NEC PC Engine-CD needs an additional bios mounted as a cart to run
1262 pcecdBios := moduleIni.Read("Settings", "PCECDSystemCard", emuPath . "\roms\Super CD-ROM2 System V3.0 (J).pce",,1)
1263 pcecdBios := GetFullName(pcecdBios)
1264 pcecdBios := CheckFile(pcecdBios)
1265 param2 := " -cart " . """" . pcecdBios . """"
1266 } Else If (mameID = "psx") { ; Sony PlayStation
1267 mameID := "psu" ; changing mameID sent to MAME to use the USA bios
1268 ; SelectMemCard() ; future function to swap around memcards
1269 ; Usage: mc1 "J:\MAME\software\psu\card1.mc"
1270 } If (mameSystem = "Sega CD") { ;
1271 If StringUtils.InStr(romName,"(Jap") ; Mega CD Japanese v2
1272 mameID := "megacd2j"
1273 Else If StringUtils.InStr(romName,"(Euro") ; Mega CD European (PAL)
1274 mameID := "megacd"
1275 }
1276 param1 := " -cdrm """ . romPath . "\" . romName . romExtension . """"
1277 }Else If (mameID = "gamecom") ; Tiger Game.com
1278 { If (romExtension != ".txt")
1279 param1 := " -cart1 """ . romPath . "\" . romName . romExtension . """"
1280 }Else If (mameID = "genesis") ; Sega Genesis
1281 { If (StringUtils.InStr(romName, "(Europe") || StringUtils.InStr(romName, "(PAL")) ; if rom is from europe, tell MAME to boot a Mega Drive instead
1282 mameID := "megadriv"
1283 }Else If (mameID = "megadriv") ; Sega Mega Drive
1284 { If (StringUtils.InStr(romName, "(USA") || StringUtils.InStr(romName, "(NTSC")) ; if rom is from America, tell MAME to boot a Genesis instead
1285 mameID := "genesis"
1286 }Else If (mameID = "vii") ; JungleTac Sport Vii
1287 { If (romName = "Built-In Games (China)") ; Has some built-in games, gotta launch just BIOS for it.
1288 param1 := ""
1289 }Else If (mameID = "alice32") ; Matra & Hachette Alice
1290 { If (romExtension != ".txt")
1291 param1 := " -cass1 """ . romPath . "\" . romName . romExtension . """"
1292 }Else If (mameID = "cgenie") ; EACA EG2000 Colour Genie
1293 { If (romExtension != ".txt")
1294 param1 := " -cass1 """ . romPath . "\" . romName . romExtension . """"
1295 }Else If (mameID = "pockstat") ; Sony PocketStation
1296 { If (romExtension != ".gme")
1297 param1 := " -cart1 """ . romPath . "\" . romName . romExtension . """"
1298 }Else If (mameID = "coco3") ; Tandy TRS-80 Color Computer
1299 { If (romExtension != ".txt")
1300 param1 := " -cart """ . romPath . "\" . romName . romExtension . """"
1301 }Else If (mameID = "zx81") ; Sinclair ZX81
1302 { If (romExtension != ".txt")
1303 param1 := " -cass1 """ . romPath . "\" . romName . romExtension . """"
1304 }Else If (mameID = "lynx128k") ; Camputers Lynx
1305 { If (romExtension != ".txt")
1306 param1 := " -cass1 """ . romPath . "\" . romName . romExtension . """"
1307 }Else If (mameID = "vg5k") ; Philips VG 5000
1308 { If (romExtension != ".txt")
1309 param1 := " -cass1 """ . romPath . "\" . romName . romExtension . """"
1310 }Else If (mameID = "sorcerer") ; Exidy Sorcerer
1311 { If (romExtension = ".snp") ; Snapshot file
1312 param1 := " -dump """ . romPath . "\" . romName . romExtension . """"
1313 Else If (romExtension = ".bin")
1314 param1 := " -quik """ . romPath . "\" . romName . romExtension . """"
1315 }Else If (messID = "jupace") ; jupiter ace
1316 { If (romExtension = ".ace")
1317 param1 := " -dump """ . romPath . "\" . romName . romExtension . """"
1318 }Else If (mameID = "a800" || mameID = "fds") ; Atari 8-Bit, Nintendo Famicom Disk System
1319 { If (romExtension != ".txt")
1320 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """"
1321 }Else If (mameID = "vectrex") ; GCE Vectrex
1322 { If (romName = "Mine Storm (World)") ; MAME dumps an error if you try to launch Mine Storm using a rom instead of just booting vectrex w/o a game in it (Mine Storm is built into vectrex)
1323 param1 := ""
1324 }Else If (mameID = "apfm1000") ; APF Imagination Machine/APF M1000
1325 { If (romName = "Rocket Patrol (USA)") ; Rocket Patrol is built into the APF M1000 ROM.
1326 param1 := ""
1327 }Else If (mameID = "adam") ; Coleco ADAM
1328 param1 := (If romExtension = ".ddp" ? " -cass1" : (If romExtension = ".dsk" ? " -flop1" : " -cart1")) . " """ . romPath . "\" . romName . romExtension . """" ; Decide if tape, disk, or cart game
1329 Else If (mameID = "pegasus") ; Aamber Pegasus
1330 { If (romExtension != ".txt")
1331 param1 := " -cart1 """ . romPath . "\" . romName . romExtension . """"
1332 }Else If (mameID = "gp32") ; GamePark 32
1333 { If (romExtension != ".txt")
1334 param1 := " -memc """ . romPath . "\" . romName . romExtension . """"
1335 }Else If (mameID = "svmu") ; Sega VMU
1336 {
1337 param1 := " -quik """ . romPath . "\" . romName . romExtension . """"
1338 }Else If (mameID = "x1turbo40") ; Sharp X1
1339 { If StringUtils.Contains(romExtension,"\.bin|\.rom")
1340 param1 := " -cart """ . romPath . "\" . romName . romExtension . """"
1341 Else If StringUtils.Contains(romExtension,"\.wav|\.tap")
1342 param1 := " -cass """ . romPath . "\" . romName . romExtension . """"
1343 Else
1344 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """"
1345 }Else If (mameID = "pc8801") ; NEC PC-8801
1346 { If (romExtension = ".d88")
1347 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """"
1348 }Else If (mameID = "fmnew7") ; Fujitsu FM-7
1349 { If StringUtils.Contains(romExtension,"\.fdi|\.td0|\.imd|\.cqm|\.dsk|\.d77|\.d88|\.1dd")
1350 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """"
1351 Else If StringUtils.Contains(romExtension,"\.wav|\.t77")
1352 param1 := " -cass """ . romPath . "\" . romName . romExtension . """"
1353 }Else If (mameID = "apple2ep") ; Apple II
1354 { If StringUtils.Contains(romExtension,"\.dsk|\.do|\.po|\.rti|\.edd|\.d77|\.d88|\.1dd|\.dfi|\.imd|\.i pf|\.mfi|\.mfm|\.td0|\.cqm|\.cqi")
1355 param1 := " -flop1 """ . romPath . "\" . romName . romExtension . """"
1356 Else If StringUtils.Contains(romExtension,"\.wav")
1357 param1 := " -cass """ . romPath . "\" . romName . romExtension . """"
1358 }Else If (mameID = "n64dd") ; Nintendo 64DD
1359 {
1360 N64RomFile := new FIle(romPath . "\" . romName . ".n64")
1361 If N64RomFile.Exist()
1362 param1 := " -cart """ . N64RomFile.FileFullPath . """ -quik """ . romPath . "\" . romName . romExtension . """"
1363 Else
1364 param1 := " -quik """ . romPath . "\" . romName . romExtension . """"
1365 }Else If StringUtils.Contains(mameID,"studio2|mpt02") ; RCA Studio 2
1366 {
1367 If (romExtension != ".txt")
1368 param1 := " -cart1 """ . romPath . "\" . romName . romExtension . """"
1369 Else {
1370 If StringUtils.Contains(romName,"Doodle")
1371 button2 := "A 1" ; Press 1 on P1 controller
1372 If StringUtils.Contains(romName,"Patterns")
1373 button2 := "A 2" ; Press 2 on P1 controller
1374 If StringUtils.Contains(romName,"Bowling")
1375 button2 := "A 3" ; Press 3 on P1 controller
1376 If StringUtils.Contains(romName,"Freeway")
1377 button2 := "A 4" ; Press 4 on P1 controller
1378 If StringUtils.Contains(romName,"Addition")
1379 button2 := "A 5" ; Press 5 on P1 controller
1380 }
1381
1382 ; Generate a lua script to press the Clear button so games will start
1383 ScriptFileName := GeneratePressButtonScript("Clear",button2)
1384 bootscript := " -script """ . ScriptFileName . """ -autoboot_delay 1"
1385 }Else If (mameID = "fmtowns" || mameID = "fmtmarty") ; Fujitsu FM Towns
1386 {
1387 If StringUtils.Contains(romExtension,"\.chd|\.cue")
1388 mediaDeviceType := "cdrm"
1389 Else
1390 mediaDeviceType := "flop1"
1391
1392 param1 := " -" . mediaDeviceType . " """ . romPath . "\" . romName . romExtension . """"
1393 }
1394 } Else { ; Use Software List
1395 hashname := mameID
1396 param1 := " """ . romName . """" ; param1 used for launching from software lists
1397
1398 If (mameID = "aes") ; SNK Neo Geo AES
1399 { hashname := "neogeo"
1400 biosRegion := moduleIni.Read(romName, "BIOS_Region","asia",,1)
1401 param2 := " -bios " . biosRegion ; can also be japan, but the asian one has english menus for most games
1402 }
1403 CheckFile(emuPath . "\hash\" . hashname . ".xml","Could not find a software list for the system " . mameID) ;Check if software list for selected system exists
1404 }
1405
1406 If (mameID = "vectrex") { ; GCE Vectrex
1407 VectrexArtFile := new File(emuPath . "\artwork\Vectrex\" . romName . ".png")
1408 param2 := " -view " . (If VectrexArtFile.Exist() ? ("""" . romName . """") : "standard") ; need overlays extracted in the artwork\vectres folder. PNGs must match romName
1409 }
1410
1411 sysStaticParams := If sysStaticParams != "" ? A_Space . sysStaticParams : "" ; tacking on a space in case user forgot to add one
1412 romParams := If romParams != "" ? A_Space . romParams : "" ; tacking on a space in case user forgot to add one
1413
1414 mameRomPaths := StringUtils.Replace(romPathFromIni,"|",`"`;`",1) ; replace all instances of | to ; in the Rom_Path from RL's Emulators.ini so MAME knows where to find your roms
1415 mameRomPaths := " -rompath """ . (If mameRomName ? romPath : mameRomPaths) . (If mameBiosPath ? ";" . mameBiosPath : "") . """" ; If using an alt rom, only supply mame with the path to that rom so it doesn't try to use the original rom. If a bios path was supplied, add it into the rom paths sent to MAME
1416
1417 If StringUtils.InStr(romParams,"-rompath")
1418 ScriptError("""-rompath"" is defined as a parameter for " . romName . ". The MAME module fills this automatically so please remove this from Params in the module's settings.")
1419 If StringUtils.InStr(sysStaticParams,"-rompath")
1420 ScriptError("""-rompath"" is defined as a parameter for " . mameSystem . ". The MAME module fills this automatically so please remove this from Params in the module's settings.")
1421
1422 ; use a custom rom name, not the one from the db
1423 If mameRomName {
1424 MameRomOriginalFile := new File(romPath . "\" . romName . romExtension)
1425 MameRomCustomFile := new File(romPath . "\" . mameRomName . romExtension)
1426 errLvl := MameRomOriginalFile.Move(MameRomCustomFile.FileFullPath) ; rename rom to match what mame needs
1427 originalRomName := romName ; store romName from database so we know what to rename it back to later
1428 romName := mameRomName
1429 If errLvl
1430 ScriptError("There was a problem renaming " . romName . " to " . mameRomName . " in " . romPath . ". Please check you have write permission to this folder/file and you don't already have a file named """ . mameRomName . """ in your rom folder.",8)
1431 Else ; if rename was successful, set var so we know to move it back later
1432 fileRenamed := 1
1433 }
1434
1435 ; use a custom cfg file if it exists and append it to param1
1436 CustomCFGPath := new Folder(emuPath . "\cfg\" . mameID . "\" . dbName)
1437 If CustomCFGPath.Exist()
1438 param1 := " -cfg_directory """ . CustomCFGPath.FileFullPath . """" . param1
1439
1440 If (bilinearFilter = "true")
1441 bilinearEnabled := " -filter"
1442 Else
1443 bilinearEnabled := " -nofilter"
1444
1445 If (cheatMode = "true") {
1446 CheatZipFile := new File(emuPath . "\cheat.zip")
1447 Cheat7zFile := new File(emuPath . "\cheat.7z")
1448 If (!CheatZipFile.Exist() && !Cheat7zFile.Exist())
1449 RLLog.Warning("Module - You have cheats enabled for " . MEmu . " but could not locate a ""cheat.zip"" or ""cheat.7z"" in " . emuPath)
1450 Else {
1451 RLLog.Info("Module - Cheat file found in " . emuPath)
1452 If cheatModeKey ; if user wants to use a key to enable CheatMode
1453 cheatEnabled := If XHotkeyAllKeysPressed(cheatModeKey) ? " -cheat" : "" ; only enables cheatMode when key is held down on launch
1454 Else ; no cheat mode key defined
1455 cheatEnabled := " -cheat"
1456 }
1457 }
1458
1459 If (RequiresReset = "true")
1460 { ; Generate a lua script to send a system soft reset
1461 ScriptFileName := GenerateSoftResetScript()
1462 bootscript := " -script """ . ScriptFileName . """ -autoboot_delay 1"
1463 }
1464
1465 HideAppStart(hideEmuObj,hideEmu)
1466
1467
1468
1469 If (legacyMode = "true")
1470 { RLLog.Info("Module - Running MAME in legacy Mode")
1471 errLvl := primaryExe.Run(" " . (If mameID = "MAME" ? romName : mameID . param1 . param2 . param3 . param4 . param5 . param6) . fullscreenParam . cheatEnabled . volume . mameRomPaths . sysStaticParams . romParams, winstate,,,,1) ; wrap quotes around exe
1472 } Else {
1473 RLLog.Info("Module - Running MAME in non-legacy mode")
1474 ; If (networkPlayers = 1 || !linkEnabledGame) {
1475 If !networkSession {
1476 RLLog.Info("Module - SinglePlayer session")
1477 errLvl := primaryExe.Run(" " . (If mameID = "MAME" ? romName : mameID . param1 . param2 . param3 . param4 . param5 . param6 ) . ctrlrFile . mameRomPaths . sysStaticParams . romParams . fullscreenParam . hlsl . glsl . cheatEnabled . volume . inipath . hashpath . verticalRotationMode . videomode . artworkCrop . useBezels . useOverlays . useBackdrops . useCpanels . useMarquees . autosave . bootscript . bilinearEnabled . " -skip_gameinfo", winstate,,,,1) ; wrap quotes around exe
1478 } Else { ; multiplayer game run
1479 RLLog.Info("Module - Network/MultiPlayer session")
1480 BuildNVRAMObject() ; build nvram object
1481 ;screen positions
1482 screenPos := []
1483 screenPos := SplitScreenPos(networkPlayers,splitScreen2PlayersMode,splitScreen3PlayersMode,maxPlayersPerMonitor)
1484 If (networkType="localLink")
1485 globalInputs := " -global_inputs" ; tell mame to accept inputs when its window is not focused
1486 Loop % networkPlayers
1487 {
1488 currentPlayer := A_Index
1489 ; Update NVRAM setting(s)
1490 If (enableNVRAMAutomation = "true") {
1491 If nvramSettings[romName]["Settings"]["Credit"]["Position"].MaxIndex() { ; If nvram settings exist for this game
1492 NVRamFile%currentPlayer% := new File(emuPath . "\nvram" . (If currentPlayer = 1 ? "" : currentPlayer) . "\" . romName . "\" . nvramSettings[romName]["Settings"]["NVRAM"]["File"][1])
1493 If NVRamFile%currentPlayer%.Exist() {
1494 RLLog.Info("Module - Checking nvram file(s) for required changes")
1495 If (networkType = "localLink") { ; only local link is supported for now
1496 ; Parse through each setting of each player and lookup the position to write new setting to the nvram file
1497 for playerOptionLabel, selectedPlayerOption in nvramSettings[romName]["Player"][currentPlayer] ;looping on each player selected options
1498 for index, setting in nvramSettings[romName]["Settings"][playerOptionLabel]["Position"] ;Looping through hex values of the current option
1499 HexCompareWrite(NVRamFile%currentPlayer%.FileFullPath,nvramSettings[romName]["Settings"][playerOptionLabel]["Position"][index],nvramSettings[romName]["Settings"][playerOptionLabel]["Option"][selectedPlayerOption][index])
1500 for index, playerCRC in nvramSettings[romName]["CRC"]["Player"][currentPlayer] ;looping on each player selected options
1501 HexCompareWrite(NVRamFile%currentPlayer%.FileFullPath,nvramSettings[romName]["Settings"]["CRC"]["Position"][index],nvramSettings[romName]["CRC"]["Player"][currentPlayer][index])
1502 } Else If (networkType = "Server") {
1503 RLLog.Info("Module - Converting this nvram to ""Master"" in: " . NVRamFile%currentPlayer%.FileFullPath)
1504 ; RLLog.Info("Module - NVRAM automation for ""Server"" not supported at this time") ; only idea to get this to work is to duplicate nvram edit code from local link here but only set player 1
1505 HexCompareWrite(NVRamFile%currentPlayer%.FileFullPath,nvramSettings[romName]["Settings"]["Link"]["Position"][1],nvramSettings[romName]["Settings"]["Link"]["Option"]["Master"][1])
1506 } Else If (networkType = "Client") {
1507 RLLog.Info("Module - Converting this nvram to ""Slave"" in: " . NVRamFile%currentPlayer%.FileFullPath)
1508 ; RLLog.Info("Module - NVRAM automation for ""Client"" not supported at this time") ; only idea to get this to work is to duplicate nvram edit code from local link here but only set player 2
1509 HexCompareWrite(NVRamFile%currentPlayer%.FileFullPath,nvramSettings[romName]["Settings"]["Link"]["Position"][1],nvramSettings[romName]["Settings"]["Link"]["Option"]["Slave"][1])
1510 }
1511 } Else
1512 RLLog.Info("Module - Did not find an NVRAM file to update for player " . currentPlayer . " (Ignore this if this is the first time you are launching this rom): " . NVRamFile%currentPlayer%.FileFullPath)
1513 } Else
1514 RLLog.Info("Module - This rom does not contain an entry in the NVRAM object")
1515 }
1516 ;;Run Line for each of the multiplayer MAME instances using the nvramPath and cfgPath variables to the extra mames
1517 MameMultiPlayer%currentPlayer%Exe := new Process(emuPath . "\" . executable) ; instantiate a new process for each player
1518 errLvl := MameMultiPlayer%currentPlayer%Exe.Run(" " . (If mameID = "MAME" ? romName : mameID . param1 . param2 . param3 . param4 . param5 . param6) . ctrlrFile . mameRomPaths . multiPlayerObj[currentPlayer]["CfgDir"] . multiPlayerObj[currentPlayer]["NvramDir"] . globalInputs . multiPlayerObj[currentPlayer]["LocalHost"] . multiPlayerObj[currentPlayer]["LocalPort"] . multiPlayerObj[currentPlayer]["RemoteHost"] . multiPlayerObj[currentPlayer]["RemotePort"] . sysStaticParams . romParams . fullscreenParam . hlsl . glsl . cheatEnabled . volume . inipath . hashpath . verticalRotationMode . videomode . artworkCrop . useBezels . useOverlays . useBackdrops . useCpanels . useMarquees . autosave . bootscript . bilinearEnabled . " -skip_gameinfo", winstate,,,,1) ; wrap quotes around exe
1519 MameMultiPlayer%currentPlayer%Exe.Process("Exist") ; get PID
1520 MameMultiPlayer%currentPlayer%Window := new Window(new WindowTitle(,,,,MameMultiPlayer%currentPlayer%Exe.PID))
1521 MameMultiPlayer%currentPlayer%Window.ExcludeTitle := "MAMEOutput" ; ignore the mame debug window
1522 MameMultiPlayer%currentPlayer%Window.Wait()
1523 }
1524
1525 Loop % networkPlayers
1526 {
1527 MameMultiPlayer%A_Index%Window.Get("ID")
1528 MameMultiPlayer%A_Index%Window.RemoveTitlebar()
1529 MameMultiPlayer%A_Index%Window.ToggleMenu()
1530 MameMultiPlayer%A_Index%Window.RemoveBorder()
1531 MameMultiPlayer%A_Index%Window.Move(screenPos[A_Index].X, screenPos[A_Index].Y, screenPos[A_Index].W, screenPos[A_Index].H)
1532 TimerUtils.Sleep(50)
1533 }
1534 }
1535 }
1536
1537 If errLvl {
1538 If (errLvl = 1)
1539 Error := "Failed Validity"
1540 Else If(errLvl = 2)
1541 Error := "Missing Files"
1542 Else If(errLvl = 3)
1543 Error := "Fatal Error"
1544 Else If(errLvl = 4)
1545 Error := "Device Error"
1546 Else If(errLvl = 5)
1547 Error := "Game Does Not Exist"
1548 Else If(errLvl = 6)
1549 Error := "Invalid Config"
1550 Else If StringUtils.Contains(errLvl,"7|8|9")
1551 Error := "Identification Error"
1552 Else
1553 Error := "MAME Error"
1554 RLLog.Error("MAME Error - " . Error)
1555 }
1556
1557 emuPrimaryWindow.Wait()
1558 emuPrimaryWindow.WaitActive()
1559
1560 If (mameID = "ti99_4a") ; Texas Instruments TI 99-4A
1561 {
1562 KeyUtils.SendCommand("X",1000) ; To bypass the first screen
1563 If (Command)
1564 KeyUtils.SendCommand(Command,,,,,,CommandWaitOffset) ; Send command affect it with an offset if needed
1565 }
1566
1567 ; Close the debugger window if exists
1568 If (closeDebugWindow = "true") {
1569 emuDebugWindow.Wait(2)
1570 emuDebugWindow.Close()
1571 }
1572
1573 BezelDraw()
1574 HideAppEnd(hideEmuObj,hideEmu)
1575
1576 If (networkPlayers = 1 || !linkEnabledGame) {
1577 emuPrimaryWindow.Show() ; Show the emulator
1578 } Else {
1579 Loop % networkPlayers
1580 MameMultiPlayer%A_Index%Window.Show() ; Show the emulator
1581 MameMultiPlayer1Window.Activate() ; Activate first player window so that first player can use keyboard instead of last player
1582 }
1583
1584 FadeInExit()
1585 primaryExe.Process("WaitClose")
1586 7zCleanUp()
1587 BezelExit()
1588
1589 If fileRenamed { ; Rename file back to alternate name for next launch
1590 errLvl := MameRomCustomFile.Move(MameRomOriginalFile.FileFullPath) ; Put original name back
1591 If errLvl ; If rename was successful, set var so we know to move it back later
1592 ScriptError("There was a problem renaming " . MameRomCustomFile.FileName . " back to " . MameRomOriginalFile.FileName)
1593 }
1594
1595 FadeOutExit()
1596 ExitModule()
1597
1598
1599 ListXMLInfo(rom){ ; Returns MAME info about parent rom, orientation angle, resolution
1600 Global emuFullPath,emuPath,RLLog
1601 ListXMLObject := Object()
1602 listXMLVarLog := ""
1603 ComSpecProcess := new Process(ComSpec) ; instantiate cmd.exe process
1604 ComSpecProcess.RunDirect(comspec . " /c " . """" . emuFullPath . """" . " -listxml " . rom . " > tempBezel.txt", emuPath, "Hide", 1) ; Run from emu's folder
1605 TempBezelFile := new File(emuPath . "\tempBezel.txt")
1606 TempBezelFile.Read()
1607 StringUtils.RegExMatch(TempBezelFile.Text, "s)<(machine|game).*name=" . """" . rom . """" . ".*" . "cloneof=" . """" . "[^""""]*", parent)
1608 StringUtils.RegExMatch(parent,"cloneof=" . """" . ".*", parent)
1609 StringUtils.RegExMatch(parent,"""" . ".*", parent)
1610 parent := StringUtils.TrimLeft(parent, 1)
1611 StringUtils.RegExMatch(TempBezelFile.Text, "s)<display.*rotate=" . """" . "[0-9]+" . """", angle)
1612 StringUtils.RegExMatch(angle,"[0-9]+", angle, "-6")
1613 StringUtils.RegExMatch(TempBezelFile.Text, "s)<display.*width=" . """" . "[0-9]+" . """", width)
1614 StringUtils.RegExMatch(width,"[0-9]+", width, "-6")
1615 StringUtils.RegExMatch(TempBezelFile.Text, "s)<display.*height=" . """" . "[0-9]+" . """", Height)
1616 StringUtils.RegExMatch(Height,"[0-9]+", Height, "-6")
1617 StringUtils.RegExMatch(TempBezelFile.Text, "s)<control.*ways=" . """" . "[0-9]+" . """", Ways)
1618 StringUtils.RegExMatch(Ways,"[0-9]+", Ways, "-6")
1619 logVars := "Parent|Angle|Height|Width|Ways"
1620 Loop, Parse, logVars, |
1621 {
1622 currentobj := {}
1623 currentobj.Label := A_Loopfield
1624 currentobj.Value := %A_Loopfield%
1625 ListXMLObject.Insert(currentobj["Label"], currentobj)
1626 listXMLLog .= "`r`n`t`t`t`t`t" . currentobj["Label"] . " = " . currentobj["Value"]
1627 }
1628 RLLog.Info("Module - MAME ListXML values: " . listXMLLog)
1629 If (ListXMLObject["Height"].Value > ListXMLObject["Width"].Value) {
1630 ListXMLObject["Angle"].Value := true
1631 RLLog.Info("Module - This game's height is greater than its width, forcing vertical mode")
1632 }
1633 TempBezelFile.Delete()
1634 Return ListXMLObject
1635 }
1636
1637 GenerateSoftResetScript(){ ; Generates a lua script to send a soft reset to MAME
1638 Global emuPath
1639
1640 SoftScriptFile := new File(emuPath . "\soft_reset.lua")
1641 ScriptFileName := emuPath . "\soft_reset.lua"
1642 SoftScriptFile.Delete()
1643
1644 AppendTxt :="
1645 (
1646 -- This script will reset the machine
1647 local function reset_machine()
1648 if resetcounter == nil then
1649 manager:machine():soft_reset();
1650 resetcounter = 1;
1651 end
1652 end
1653 if resetcounter == nil then
1654 emu.wait(1);
1655 reset_machine();
1656 end
1657 )"
1658 SoftScriptFile.Append(AppendTxt)
1659 Return SoftScriptFile.FileFullPath
1660 }
1661
1662 GeneratePressButtonScript(button1,button2=""){ ; Generates a lua script to send a soft reset to MAME
1663 Global emuPath
1664
1665 PressScriptFile := new File(emuPath . "\press_button.lua")
1666 PressScriptFile.Delete()
1667 If (button2) {
1668 button2str := "`n`t`temu.wait(1);`n`t`tioport[""" . button2 . """]:write(1);`n`t`temu.wait(1);`n`t`tioport[""" . button2 . """]:write(0);"
1669 }
1670
1671 AppendTxt :="
1672 (
1673 local function press_button()
1674 if resetcounter == nil then
1675 ioport[""" . button1 . """]:write(1);
1676 emu.wait(1);
1677 ioport[""" . button1 . """]:write(0);
1678 resetcounter = 1;" . button2str . "
1679 end
1680 end
1681 if resetcounter == nil then
1682 emu.wait(1);
1683 press_button();
1684 end
1685 )"
1686 PressScriptFile.Append(AppendTxt)
1687 Return PressScriptFile.FileFullPath
1688 }
1689
1690 BuildNVRAMObject() {
1691 Global nvramSettings,RLLog
1692 RLLog.Info("BuildNVRAMObject - Started")
1693
1694 nvramSettings := {}
1695
1696 nvramSettings["vr"] := {}
1697 nvramSettings["vr"]["Settings"] := {"BiosCounter":{"Position":["248"], "Option":{0:["00"], 1:["01"], 2:["02"], 3:["03"]}}, "Cabinet":{"Position":["52"], "Option":{"Special":["00"], "Standard":["01"], "Upright":["02"], "2PLink":["03"]}}, "Color":{"Position":["68"], "Option":{"Red":["00"], "Blue":["01"], "Yellow":["02"], "Green":["03"], "Black":["04"], "Pink":["05"], "SkyBlue":["06"], "Orange":["07"]}}, "Country":{"Position":["54"], "Option":{"Japan":["00"], "USA":["01"], "Export":["02"]}}, "Course":{"Position":["66"], "Option":{"Vote":["00"], "Beginner":["01"], "Middle":["02"], "Expert":["03"]}}, "CRC":{"Position":["16","18"]}, "Credit":{"Position":["32","40"], "Option":{"1":["00","00"], "Freeplay":["1A","01"]}}, "Difficulty":{"Position":["64"], "Option":{"Easy":["00"], "Normal":["01"], "Hard":["02"], "Hardest":["03"]}}, "Link":{"Position":["24"], "Option":{"None":["00"], "Master":["01"], "Slave":["02"], "Live":["03"]}}, "Monitor":{"Position":["22"], "Option":{"Standard":["00"], "Wide":["01"]}}, "NVRAM":{"File":["nvram"]}, "Race":{"Position":["70"], "Option":{"Normal":["00"], "Grandprix":["01"]}}, "StartCoin":{"Position":["42"], "Option":{1:["01"], 2:["02"], 3:["03"], 4:["04"], 5:["05"]}}}
1698
1699 nvramSettings["vr"]["Player"] := {}
1700 nvramSettings["vr"]["Player"].Insert(1, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Red", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Master", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1701 nvramSettings["vr"]["Player"].Insert(2, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Blue", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1702 nvramSettings["vr"]["Player"].Insert(3, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Yellow", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1703 nvramSettings["vr"]["Player"].Insert(4, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Green", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1704 nvramSettings["vr"]["Player"].Insert(5, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Black", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1705 nvramSettings["vr"]["Player"].Insert(6, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Pink", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1706 nvramSettings["vr"]["Player"].Insert(7, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"SkyBlue", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1707 nvramSettings["vr"]["Player"].Insert(8, {"BiosCounter":"3", "Cabinet":"Standard", "Color":"Orange", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Monitor":"Wide", "Race":"Normal", "StartCoin":"1"})
1708 nvramSettings["vr"]["CRC"] := {"Player":{1:["06","21"], 2:["3C","C7"], 3:["0E","5F"], 4:["FF","D8"], 5:["4B","7F"], 6:["BA","F8"], 7:["88","60"], 8:["79","E7"]}}
1709
1710 nvramSettings["vformula"] := {}
1711 nvramSettings["vformula"]["Settings"] := {"BiosCounter":{"Position":["248"], "Option":{0:["00"], 1:["01"], 2:["02"], 3:["03"]}}, "Color":{"Position":["68"], "Option":{"Red":["00"], "Blue":["01"], "Yellow":["02"], "Green":["03"], "Black":["04"], "Pink":["05"], "SkyBlue":["06"], "Orange":["07"]}}, "Country":{"Position":["54"], "Option":{"Japan":["00"], "USA":["01"], "Export":["02"]}}, "Course":{"Position":["66"], "Option":{"Vote":["00"], "Beginner":["01"], "Middle":["02"], "Expert":["03"]}}, "CRC":{"Position":["16","18"]}, "Credit":{"Position":["32","40"], "Option":{"1":["00","00"], "Freeplay":["1A","01"]}}, "Difficulty":{"Position":["64"], "Option":{"Easy":["00"], "Normal":["01"], "Hard":["02"], "Hardest":["03"]}}, "Link":{"Position":["24"], "Option":{"None":["00"], "Master":["01"], "Slave":["02"], "Live":["03"]}}, "NVRAM":{"File":["nvram"]}, "Race":{"Position":["70"], "Option":{"Normal":["00"], "Grandprix":["01"]}}, "Sound":{"Position":["22"], "Option":{"On":["00"], "Off":["01"]}}, "StartCoin":{"Position":["42"], "Option":{1:["01"], 2:["02"], 3:["03"], 4:["04"], 5:["05"]}}}
1712
1713 nvramSettings["vformula"]["Player"] := {}
1714 nvramSettings["vformula"]["Player"].Insert(1, {"BiosCounter":"1", "Color":"Red", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Master", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1715 nvramSettings["vformula"]["Player"].Insert(2, {"BiosCounter":"1", "Color":"Blue", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1716 nvramSettings["vformula"]["Player"].Insert(3, {"BiosCounter":"1", "Color":"Yellow", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1717 nvramSettings["vformula"]["Player"].Insert(4, {"BiosCounter":"1", "Color":"Green", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1718 nvramSettings["vformula"]["Player"].Insert(5, {"BiosCounter":"1", "Color":"Black", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1719 nvramSettings["vformula"]["Player"].Insert(6, {"BiosCounter":"1", "Color":"Pink", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1720 nvramSettings["vformula"]["Player"].Insert(7, {"BiosCounter":"1", "Color":"SkyBlue", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1721 nvramSettings["vformula"]["Player"].Insert(8, {"BiosCounter":"1", "Color":"Orange", "Country":"USA", "Course":"Vote", "Credit":"Freeplay", "Difficulty":"Normal", "Link":"Slave", "Race":"Normal", "Sound":"On", "StartCoin":"1"})
1722 nvramSettings["vformula"]["CRC"] := {"Player":{1:["F2","EB"], 2:["C8","0D"], 3:["FA","95"], 4:["0B","12"], 5:["BF","B5"], 6:["4E","32"], 7:["7C","AA"], 8:["8D","2D"]}}
1723
1724 RLLog.Info("BuildNVRAMObject - Ended")
1725 }
1726
1727 BezelLabel:
1728 emuConsoleWindow.Set("Transparent",0)
1729 Return
1730
1731 HaltEmu:
1732 If (pauseMethod = 1)
1733 { disableSuspendEmu := "true"
1734 disableRestoreEmu := "true"
1735 emuPrimaryWindow.PostMessage("0x211",1)
1736 } Else If (pauseMethod = 2)
1737 { disableSuspendEmu := "true"
1738 emuPrimaryWindow.PostMessage("0x211",1)
1739 } Else If (pauseMethod = 3)
1740 { disableSuspendEmu := "true"
1741 disableRestoreEmu := "true"
1742 emuPrimaryWindow.PostMessage(0x0400+6,1)
1743 } Else If (pauseMethod = 4)
1744 { disableSuspendEmu := "true"
1745 emuPrimaryWindow.PostMessage(0x0400+6,1)
1746 } Else If (pauseMethod = 5)
1747 { disableSuspendEmu := "true"
1748 KeyUtils.Send("{P down}")
1749 TimerUtils.Sleep(1000)
1750 KeyUtils.Send("{P up} ")
1751 }
1752 Return
1753 RestoreEmu:
1754 If (pauseMethod = 1)
1755 emuPrimaryWindow.PostMessage("0x212",1)
1756 Else If (pauseMethod = 2)
1757 emuPrimaryWindow.PostMessage("0x212",1)
1758 Else If (pauseMethod = 3)
1759 emuPrimaryWindow.PostMessage(0x0400+6,0)
1760 Else If (pauseMethod = 4)
1761 emuPrimaryWindow.PostMessage(0x0400+6,0)
1762 Else If (pauseMethod = 5) {
1763 disableSuspendEmu := "true"
1764 KeyUtils.Send("{P down}")
1765 TimerUtils.Sleep(1000)
1766 KeyUtils.Send("{P up} ")
1767 }
1768 emuPrimaryWindow.Activate()
1769 Return
1770
1771 CloseProcess:
1772 FadeOutStart()
1773 If (networkSession && networkPlayers > 1) {
1774 Loop % networkPlayers {
1775 MameMultiPlayer%A_Index%Window.Close()
1776 MameMultiPlayer%A_Index%Window.WaitClose()
1777 }
1778 } Else
1779 emuPrimaryWindow.Close()
1780 Return
1781
178214:13:43:761 | RL | INFO | +0 | BuildScript - Loaded Multi-Player scripts
178314:13:43:761 | RL | INFO | +0 | BuildScript - Loaded Statistics.ahk script
178414:13:43:762 | RL | INFO | +0 | BuildScript - "C:\Arcade\RocketLauncher\Lib\User Functions\Global.ahk" not found
178514:13:43:762 | RL | INFO | +0 | BuildScript - "C:\Arcade\RocketLauncher\Lib\User Functions\MAME.ahk" not found
178614:13:43:762 | RL | INFO | +0 | BuildScript - "C:\Arcade\RocketLauncher\Lib\User Functions\Emulators\Arcade64.ahk" not found
178714:13:43:762 | RL | INFO | +0 | BuildScript - "C:\Arcade\RocketLauncher\Lib\User Functions\MAME\Emulators\Arcade64.ahk" not found
178814:13:43:762 | RL | INFO | +0 | BuildScript - "C:\Arcade\RocketLauncher\Lib\User Functions\MAME\1942.ahk" not found
178914:13:43:762 | RL | INFO | +0 | BuildScript - Finished injecting functions into module
179014:13:43:762 | RL | INFO | +0 | Main - Module is built
179114:13:43:762 | RL | INFO | +0 | CheckFile - Checking if C:\Arcade\RocketLauncher\AutoHotkey.dll exists
179214:13:43:765 | RL | INFO | +0 | Main - Hiding taskbar
179314:13:43:765 | RL | INFO | +0 | Main - Starting timer to watch if Front End gets displaced and restore it if it does.
179414:13:43:765 | RL | INFO | +0 | Main - Running module
179514:13:44:163 | MD | INFO | +N/A | Module initialized
179614:13:44:165 | MD | INFO | +0 | StartModule - Started
179714:13:44:166 | MD | INFO | +0 | StartModule - MEmu: MAME
1798 MEmuV: v0.166
1799 MURL: http://www.mame.net/
1800 MAuthor: djvj|faahrev|brolly|Tomkun
1801 MVersion: 2.3.10
1802 MCRC: 2C606685
1803 iCRC: 8566ED91
1804 MID: 635746812784197028
1805 MSystem: AAE|Aamber Pegasus|Acorn Electron|Amstrad CPC|Amstrad GX4000|APF Imagination Machine|Apple II|Apple IIGS|Applied Technology MicroBee|Arcade|Arcade Classics|Atari 8-Bit|Atari 2600|Atari 5200|Atari 7800|Atari Classics|Atari Jaguar|Atari Lynx|Bally Astrocade|Bandai Super Vision 8000|Bandai WonderSwan|Bandai WonderSwan Color|Bit Corporation Gamate|Camputers Lynx|Capcom|Capcom Classics|Capcom Play System|Capcom Play System II|Capcom Play System III|Casio PV-1000|Casio PV-2000|Cave|Coleco ADAM|ColecoVision|Commodore 64|Commodore MAX Machine|Creatronic Mega Duck|Data East Classics|EACA EG2000 Colour Genie|Emerson Arcadia 2001|Entex Adventure Vision|Epoch Game Pocket Computer|Epoch Super Cassette Vision|Exidy Sorcerer|Fairchild Channel F|Fujitsu FM-7|Fujitsu FM Towns|Fujitsu FM Towns Marty|Funtech Super Acan|GamePark 32|GCE Vectrex|Hartung Game Master|HBMAME|Interton VC 4000|Irem Classics|JungleTac Sport Vii|Jupiter Ace|Konami Classics|LaserDisc|Magnavox Odyssey 2|MAME|Matra & Hachette Alice|Mattel Aquarius|Mattel Intellivision|MGT Sam Coupe|Midway Classics|Milton Bradley MicroVision|Namco Classics|Namco System 22|NEC PC-8801|NEC PC Engine|NEC PC Engine-CD|NEC SuperGrafx|NEC TurboGrafx-16|NEC TurboGrafx-CD|Nintendo 64|Nintendo 64DD|Nintendo Arcade Systems|Nintendo Classics|Nintendo Entertainment System|Nintendo Famicom|Nintendo Famicom Disk System|Nintendo Game Boy|Nintendo Game Boy Advance|Nintendo Game Boy Color|Nintendo Pokemon Mini|Nintendo Satellaview|Nintendo Super Famicom|Nintendo Super Game Boy|Nintendo Virtual Boy|Othello Multivision|PacMAME|Philips CD-i|Philips VG 5000|Philips Videopac Plus G7400|RCA Studio II|Sega 32X|Sega CD|Sega Classics|Sega Game Gear|Sega Genesis|Sega Master System|Sega Mega Drive|Sega Model 1|Sega Pico|Sega Saturn|Sega SC-3000|Sega SG-1000|Sega ST-V|Sega VMU|Sharp X1|Sinclair ZX81|SNK Classics|SNK Neo Geo|SNK Neo Geo AES|SNK Neo Geo AES|SNK Neo Geo CD|SNK Neo Geo MVS|SNK Neo Geo Pocket|SNK Neo Geo Pocket Color|Sony PlayStation|Sony PocketStation|Sord M5|Soundic Victory MPT-02|Super Nintendo Entertainment System|Taito Classics|Tandy TRS-80 Color Computer|Texas Instruments TI 99-4A|Thomson MO5|Tiger Game.com|Tomy Tutor|VTech CreatiVision|VTech Socrates|Watara Supervision|Williams Classics
180614:13:44:166 | MD | INFO | +0 | StartModule - You have a supported System Name for this module: "MAME"
180714:13:44:166 | MD | INFO | +0 | LocaleUtils.i18n - Started
180814:13:44:166 | MD | INFO | +0 | LocaleUtils.i18n - Ended, using "Open" for "dialog.open"
180914:13:44:166 | MD | INFO | +0 | LocaleUtils.i18n - Started
181014:13:44:167 | MD | INFO | +0 | LocaleUtils.i18n - Ended, using "Start" for "dialog.start"
181114:13:44:169 | MD | INFO | +0 | PluginInit - Started
181214:13:44:169 | MD | INFO | +0 | CheckFile - Checking if C:\Arcade\HyperSpin\Databases\MAME\MAME.xml exists
181314:13:44:173 | MD | INFO | +0 | BuildAssetsTable - Started - Building Table for: Game Logo|System Logo
181414:13:44:173 | MD | INFO | +0 | BuildAssetsTable - Ended
181514:13:44:173 | MD | INFO | +0 | BuildAssetsTable - Started - Building Table for: Artwork1|Box Art|Cartridge|Flyers|Letters|Other
181614:13:44:258 | MD | INFO | +94 | BuildAssetsTable - Ended
181714:13:44:258 | MD | INFO | +0 | BuildAssetsTable - Started - Building Table for: MP4 Game Video|FLV Game Video|MP4 System Video|FLV System Video
181814:13:44:258 | MD | INFO | +0 | BuildAssetsTable - Ended
181914:13:44:258 | MD | INFO | +0 | PluginInit - Ended
182014:13:44:260 | MD | INFO | +0 | SystemCursor - Hiding mouse cursor
182114:13:44:330 | MD | INFO | +63 | StartModule - Ended
182214:13:44:330 | MD | INFO | +0 | BezelGUI - Started
182314:13:44:581 | MD | INFO | +250 | BezelGUI - Ended
182414:13:44:612 | MD | INFO | +31 | RIniFile.Read - Module - Fullscreen: true (DEFAULT)
182514:13:44:612 | MD | INFO | +0 | RIniFile.Read - Module - LegacyMode: false (DEFAULT)
182614:13:44:612 | MD | INFO | +0 | RIniFile.Read - Module - MAME_BIOS_Path: C:\Arcade\Emulators\Arcade64\roms (DEFAULT)
182714:13:44:612 | MD | INFO | +0 | RIniFile.Read - Module {SystemModuleIni} - [Settings] - Videomode: ini
182814:13:44:613 | MD | INFO | +0 | RIniFile.Read - Module - PauseMethod: 1 (DEFAULT)
182914:13:44:613 | MD | INFO | +0 | RIniFile.Read - Module - BilinearFilter: false (DEFAULT)
183014:13:44:613 | MD | INFO | +0 | RIniFile.Read - Module {SystemModuleIni} - [Settings] - HLSL: ini
183114:13:44:613 | MD | INFO | +0 | RIniFile.Read - Module {SystemModuleIni} - [Settings] - GLSL: ini
183214:13:44:614 | MD | INFO | +0 | RIniFile.Read - Module {SystemModuleIni} - [MAME] - BezelMode: normal
183314:13:44:614 | MD | INFO | +0 | RIniFile.Read - Module - VerticalRotationMode: none (DEFAULT)
183414:13:44:642 | MD | INFO | +31 | RIniFile.Read - Module - CheatMode: false (DEFAULT)
183514:13:44:642 | MD | INFO | +0 | RIniFile.Read - Module - CheatModeKey: (NO VALUE)
183614:13:44:643 | MD | INFO | +0 | RIniFile.Read - Module - UseSoftwareList: false (DEFAULT)
183714:13:44:643 | MD | INFO | +0 | RIniFile.Read - Module - StaticParameters: (NO VALUE)
183814:13:44:643 | MD | INFO | +0 | RIniFile.Read - Module - Parameters: (NO VALUE)
183914:13:44:643 | MD | INFO | +0 | RIniFile.Read - Module - Parameters: (NO VALUE)
184014:13:44:643 | MD | INFO | +0 | RIniFile.Read - Module - MameRomName: (NO VALUE)
184114:13:44:644 | MD | INFO | +0 | RIniFile.Read - Module - Autosave: false (DEFAULT)
184214:13:44:644 | MD | INFO | +0 | RIniFile.Read - Module - Volume: (NO VALUE)
184314:13:44:644 | MD | INFO | +0 | RIniFile.Read - Module - Artwork_Crop: true (DEFAULT)
184414:13:44:645 | MD | INFO | +0 | RIniFile.Read - Module - Use_Bezels: false (DEFAULT)
184514:13:44:645 | MD | INFO | +0 | RIniFile.Read - Module - Use_Overlays: true (DEFAULT)
184614:13:44:674 | MD | INFO | +31 | RIniFile.Read - Module - Use_Backdrops: true (DEFAULT)
184714:13:44:674 | MD | INFO | +0 | RIniFile.Read - Module - Use_Cpanels: false (DEFAULT)
184814:13:44:675 | MD | INFO | +0 | RIniFile.Read - Module - Use_Marquees: false (DEFAULT)
184914:13:44:675 | MD | INFO | +0 | RIniFile.Read - Module {SystemModuleIni} - [MAME] - IniPath: .\ini
185014:13:44:675 | MD | INFO | +0 | RIniFile.Read - Module - HashPath: (NO VALUE)
185114:13:44:676 | MD | INFO | +0 | RIniFile.Read - Module - UseControllerRemap: true (DEFAULT)
185214:13:44:676 | MD | INFO | +0 | RIniFile.Read - Module - ControllerRemapPath: C:\Arcade\Emulators\Arcade64\ControllerRemap\ControllerRemap.exe (DEFAULT)
185314:13:44:705 | MD | INFO | +32 | RIniFile.Read - Module - ControllerRemapConfigPath: C:\Arcade\Emulators\Arcade64\ControllerRemap\ctrlr\ (DEFAULT)
185414:13:44:706 | MD | INFO | +0 | RIniFile.Read - Module - MAMECtrlrPath: C:\Arcade\Emulators\Arcade64\ctrlr (DEFAULT)
185514:13:44:706 | MD | INFO | +0 | RIniFile.Read - Module - Enable_Link_Play: false (DEFAULT)
185614:13:44:737 | MD | INFO | +31 | GetFadePicFile - Randomized images and Fade will use C:\Arcade\RocketLauncher\Media\Fade\MAME\_Default\Layer 1 - 16x9 MAME (griffin518).jpg
185714:13:45:107 | MD | INFO | +375 | DefaultAnimateFadeIn - Started, direction is: in
185814:13:45:107 | MD | INFO | +0 | DefaultAnimateFadeIn - Drawing First FadeIn Image.
185914:13:45:515 | MD | INFO | +406 | DefaultAnimateFadeIn - Ended
186014:13:45:610 | MD | INFO | +94 | DefaultFadeAnimation - Started
186114:13:45:611 | MD | INFO | +0 | GetFadePicFile - Randomized images and Fade will use C:\Arcade\RocketLauncher\Media\Fade\_Default\Info Bar.png
186214:13:45:636 | MD | INFO | +31 | GetFadePicFile - Randomized images and Fade will use C:\Arcade\RocketLauncher\Media\Fade\MAME\_Default\Layer 3 - Unified Megatheme (Unknown50862).png
186314:13:45:644 | MD | INFO | +0 | BuildAssetsTable - Started - Building Table for: Genre Logo|Rating Logo|Developer Logo|Publisher Logo|Year Logo
186414:13:45:645 | MD | INFO | +0 | BuildAssetsTable - Ended
186514:13:45:645 | MD | INFO | +0 | BuildAssetsTable - Started - Building Table for: System Logo|Game Logo|Game Logo
186614:13:45:645 | MD | INFO | +0 | BuildAssetsTable - Ended
186714:13:45:859 | MD | INFO | +219 | DefaultFadeAnimationLoop - percentage
186814:13:45:918 | MD | INFO | +62 | DefaultFadeAnimationLoop - percentage2
186914:13:45:977 | MD | INFO | +63 | DefaultFadeAnimationLoop - percentage3
187014:13:46:039 | MD | INFO | +62 | DefaultFadeAnimationLoop - percentage4
187114:13:46:101 | MD | INFO | +63 | DefaultFadeAnimationLoop - percentage5
187214:13:46:192 | MD | INFO | +94 | DefaultFadeAnimationLoop - percentage6
187314:13:46:254 | MD | INFO | +46 | DefaultFadeAnimationLoop - percentage8
187414:13:46:378 | MD | INFO | +125 | DefaultFadeAnimationLoop - percentage10
187514:13:46:487 | MD | INFO | +110 | DefaultFadeAnimationLoop - percentage12
187614:13:46:581 | MD | INFO | +94 | DefaultFadeAnimationLoop - percentage14
187714:13:46:723 | MD | INFO | +140 | DefaultFadeAnimationLoop - percentage17
187814:13:50:543 | MD | INFO | +3828 | DefaultFadeAnimation - Ended
187914:13:50:544 | MD | INFO | +0 | DxwndUpdateIniPath - DxwndIni set to C:\Arcade\RocketLauncher\Module Extensions\dxwnd\dxwnd.ini
188014:13:50:573 | MD | INFO | +32 | FadeApp - Hiding Frontend by making it transparent
188114:13:51:176 | MD | INFO | +593 | Module - MAME ListXML values:
1882 Parent =
1883 Angle = 270
1884 Height = 224
1885 Width = 256
1886 Ways = 8
188714:13:51:237 | MD | INFO | +63 | BezelStart - Started
188814:13:51:739 | MD | INFO | +500 | BezelStart - Game will be moved to monitor 1 if RL finds a valid bezel to be show.
188914:13:51:781 | MD | INFO | +47 | BezelStart - Loading Bezel image: C:\Arcade\RocketLauncher\Media\Bezels\MAME\1942\Bezel - 16x9 1942 (Grizz & griffin518).png
189014:13:51:812 | MD | INFO | +31 | BezelStart - Loading Background image: C:\Arcade\RocketLauncher\Media\Bezels\MAME\_Default\Vertical\Background - 16x9 black 19201080 (Potts43).png
189114:13:51:816 | MD | INFO | +0 | BezelStart - Ended
189214:13:51:817 | MD | INFO | +0 | Controller Remap: Start
189314:13:51:857 | MD | INFO | +47 | Controller Remap: ControllerRemapConfigPath: C:\Arcade\Emulators\Arcade64\ControllerRemap\ctrlr\
189414:13:51:858 | MD | INFO | +0 | Controller Remap: No Controller config file found.
189514:13:51:858 | MD | INFO | +0 | Controller Remap: End
189614:13:51:859 | MD | INFO | +0 | Module - Detected MAME Product Version from 'C:\Arcade\Emulators\Arcade64\arcade64.exe' is 180
189714:13:51:860 | MD | INFO | +0 | Module - Running MAME in non-legacy mode
189814:13:51:860 | MD | INFO | +0 | Module - SinglePlayer session
189914:13:51:860 | MD | INFO | +0 | Process.Run - Running: "C:\Arcade\Emulators\Arcade64\arcade64.exe" 1942 -rompath "C:\Arcade\ROMs\Arcade;C:\Arcade\Emulators\Arcade64\roms" -window -inipath "C:\Arcade\Emulators\Arcade64\ini" -artwork_crop -nouse_bezels -use_overlays -use_backdrops -nouse_cpanels -nouse_marquees -nofilter -skip_gameinfo
190014:13:51:933 | MD | INFO | +78 | Window.Wait - Waiting for window "ahk_class MAME"
190114:13:52:263 | MD | INFO | +328 | Window.WaitActive - Waiting for "ahk_class MAME"
190214:13:52:415 | MD | INFO | +156 | BezelDraw - Started
190314:13:52:547 | MD | INFO | +125 | BezelDraw - Bezel Screen Offset: left= top= right= bottom=
190414:13:52:547 | MD | INFO | +0 | HideWindowDecorators - Started
190514:13:52:547 | MD | INFO | +0 | HideWindowDecorators - disableHideBorder=, disableHideTitleBar=, disableHideToggleMenu=, hideBorderFirst=
190614:13:52:550 | MD | INFO | +0 | ToggleMenu - Started
190714:13:53:082 | MD | WARNING | +532 | ToggleMenu - Timed out trying to restore MenuBar for 0x4043a
190814:13:53:192 | MD | INFO | +109 | ToggleMenu - Ended
190914:13:53:253 | MD | INFO | +62 | HideWindowDecorators - Ended
191014:13:53:253 | MD | INFO | +0 | MoveWindow - Moving window ahk_id 0x4043a to X=0, Y=1, W=1920 H=1079
191114:13:53:377 | MD | INFO | +125 | MoveWindow - Successful: Window ahk_id 0x4043a moved to X=0, Y=1, W=1920 H=1079
191214:13:53:485 | MD | INFO | +110 | BezelDraw - Ended
191314:13:53:594 | MD | INFO | +109 | DefaultAnimateFadeIn - Started, direction is: out
191414:13:54:022 | MD | INFO | +438 | DefaultAnimateFadeIn - Ended
191514:13:54:128 | MD | INFO | +93 | Process.Process - "WaitClose" "arcade64.exe"
191614:14:04:024 | MD | INFO | +9907 | CloseProcess - Started, user requested to end launched application
191714:14:04:261 | MD | INFO | +234 | CloseProcess - Ended
191814:14:04:261 | MD | INFO | +0 | BezelExit - Started
191914:14:04:293 | MD | INFO | +31 | BezelExit - Removing bezel image components to exit RocketLauncher.
192014:14:04:293 | MD | INFO | +0 | BezelExit - Ended
192114:14:04:293 | MD | INFO | +0 | ExitModule - Started
192214:14:04:293 | MD | INFO | +0 | UpdateStatistics - Starting Updating Statistics
192314:14:04:574 | MD | INFO | +282 | UpdateStatistics - Game section statistics updated.
192414:14:04:626 | MD | INFO | +46 | FadeApp - Showing Frontend and removing transparency
192514:14:04:626 | MD | INFO | +0 | ExitModule - Ended
1926End of Module Logs
192714:14:04:681 | RL | INFO | +20922 | Main - Module ended, exiting RocketLauncher normally
192814:14:04:681 | RL | INFO | +0 | ExitScript - Started
192914:14:04:691 | RL | INFO | +0 | ExitScript - Restoring HyperSpin.exe to x0 y0 w h1080
193014:14:04:805 | RL | INFO | +125 | ExitScript - Restoring and Clicking HyperSpin.exe to attempt to put it into focus
193114:14:04:810 | RL | INFO | +0 | ExitScript - Checking what application is currently in focus.
193214:14:04:810 | RL | INFO | +0 | ExitScript - HyperSpin is currently active. Proceeding with exit
193314:14:04:810 | RL | INFO | +0 | ExitScript - Restoring taskbar
193414:14:04:943 | RL | INFO | +141 | SystemCursor - Restoring mouse cursor
193514:14:04:963 | RL | INFO | +15 | ExitScript - Restored cursor
193614:14:04:963 | RL | INFO | +0 | ExitScript - Ended
1937[/code]