MEmu = EDuke32 MEmuV = v5.307 MURL = http://eduke32.com/ MAuthor = 10cold,djvj MVersion = 0.6 MCRC = iCRC = MID = MSystem = "Duke Nukem" ;-------------------------------------------------------------------------------------- ; Notes: ; If you keep your games archived, you need to at least set Skip Checks to Rom Extension ; because there is no rom extension like a normal rom would have. ; For games archived, pack them with all files necessary to work together ; with also the EDuke32 files. Create an entry on "Duke Nukem.ini" file with all parameters ; necessary to open the game like the examples here: ; Examples: ; [Attrition] #Working ; params=-game_dir attrition -hatt_hrp.def -cachesize 131072 ; [Platoon] #Working ; params=-gPlatoon.grp -xPlatoon.gam %1 %2 %3 %4 %5 %6 ; [WG Realms] ; params=-gWGR.GRP -jDukePlus -hdukeplus.def -xWGRealmsPlus.con ; The module adds automaticaly the Fullscreen setting (when not specified) and also the -nosetup ; to go directly to the game. ; This way the module will open the EDuke32 copy inside the game folder. ; Don't forget to add .bat and the archived extension on your rom extension setting. ; Exit button is not working yet. need some work on that. ;-------------------------------------------------------------------------------------- StartModule() BezelGUI() FadeInStart() settingsFile := modulePath . "\" . moduleName . ".ini" fullscreen := IniReadCheck(settingsFile, "" romName "" , "Fullscreen", "true",,1) params := IniReadCheck(settingsFile, "" romName "", "params","",,1) showLauncher := IniReadCheck(settingsFile, "" romName "", "showlauncher","false",,1) ; Log(params) showSetupStatus := If (showLauncher = "true") ? " -setup" : " -nosetup" ; Log(showSetupStatus) hideEmuObj := Object("EDuke32 ahk_class #32770",0,"EDuke32 ahk_class SDL_app",1) ; Hide_Emu will hide these windows. 0 = will never unhide, 1 = will unhide later 7z(romPath, romName, romExtension, 7zExtractPath) eduke32cfg := CheckFile(romPath . "\eduke32.cfg") If bezelEnabled = true { BezelStart() edukeWidth := Round(bezelScreenWidth) edukeHeight := Round(bezelScreenHeight) IniWrite, 0, %eduke32cfg%, Screen Setup, ScreenMode IniWrite, %edukeWidth%, %eduke32cfg%, Screen Setup, ScreenWidth IniWrite, %edukeHeight%, %eduke32cfg%, Screen Setup, ScreenHeight } IniRead, currentFullScreen, %eduke32cfg%, Screen Setup, ScreenMode If (currentFullScreen = 0) and (fullscreen = "true") { IniWrite, 1, %eduke32cfg%, Screen Setup, ScreenMode IniWrite, %A_ScreenWidth%, %eduke32cfg%, Screen Setup, ScreenWidth IniWrite, %A_ScreenHeight%, %eduke32cfg%, Screen Setup, ScreenHeight } Else If (currentFullScreen = 1) and (fullscreen = "false") { IniWrite, 0, %eduke32cfg%, Screen Setup, ScreenMode } HideEmuStart() ; This fully ensures windows are completely hidden even faster than winwait ;Err := Run(romName . ".bat" , romPath, "UseErrorLevel", game_PID) ;Err := Run("eduke32.exe" . params . showSetupStatus , romPath, "UseErrorLevel", game_PID) Err := Run("eduke32.exe" . " """ . params . """" . showSetupStatus, romPath, "UseErrorLevel", game_PID) If Err ScriptError("Failed to launch " . romName) WinGetActiveTitle, gameTitle Log("Module - Active window is currently: " . gameTitle) WinWait("EDuke32 ahk_class SDL_app") WinWaitActive("EDuke32 ahk_class SDL_app") ; WinWait("Duke Nukem ahk_class SDL_app") ; WinWaitActive("Duke Nukem ahk_class SDL_app") BezelDraw() HideEmuEnd() FadeInExit() Process("WaitClose", executable) 7zCleanUp() BezelExit() FadeOutExit() ExitModule() CloseProcess: FadeOutStart() ; WinClose("Duke Nukem ahk_class SDL_app") Process("Close", executable) ; this is the only thing that can close the application Return