Hyperlaunch.ahk

 /** 
 * HyperLaunch Version 1.05
 * Autohotkey script by BadBoyBill  badboybill@hyperspin-fe.com
 * CursorHide by Lazlo
 * Integrated FreeDO wrapper by brian_hoffman
 *
 * If you are reading this and do not have autohotkey you can get it
 * @ http://www.autohotkey.com/download/
 * If you would like to modify this script and share it thats OK, but
 * see if your modification is something that we would like to add
 * to the official version.   
 *
 * Refer to the autohotkey documentation for the keyoboard keylist
 * 
 * If this script does not support your favorite emulator
 * then please request support @ http://www.hyperspin-fe.com/forum   
 *
 *                    :Supported emulators:
 *    :System:                                :Emulators: 
 *Atari 5200.............................messpp.exe
 *Atari Lynx.............................handy.exe
 *Daphne.................................daphne.exe
 *Future Pinball.........................Future Pinball.exe 
 *Gameboy Advance........................visualboyadvance.exe  
 *Gameboy................................visualboyadvance.exe
 *Gameboy Color..........................visualboyadvance.exe  
 *MAME...................................mame.exe
 *Neo Geo................................mame.exe
 *Neo Geo Pocket Color...................NeoPop-Win32.exe
 *Nintendo 64............................project64.exe 
 *Nintendo Entertainment System..........nestopia.exe
 *Panasonic 3DO..........................FreeDO.exe
 *Sega 32X...............................fusion.exe
 *Sega CD................................fusion.exe
 *Sega Dreamcast.........................nullDC_100b1_6.exe  
 *Sega Game Gear.........................fusion.exe
 *Sega Genesis...........................fusion.exe
 *Sega Master System.....................fusion.exe 
 *Sony Playstation.......................epsxe.exe
 *Super Nintendo Entertainment System....zsnesw.exe
 *TurboGrafx 16..........................mednafen.exe
 *Zinc...................................zinc.exe
 *JukeBox................................silverjuke.exe
 *JukeBox................................SKJukebox.exe
 *
 *  
 */
 
#SingleInstance force      ;Prevent multiple instances
#InstallKeybdHook
SetTitleMatchMode 2

;------------------------------------------------------------------------------;
;                                 MAIN SETTINGS                                ;
;------------------------------------------------------------------------------;

;[UNIVERSAL HOTKEYS]            ;SEPERATE MULTIPLE KEYS WITH &(ampersand) up to 2 keys.
exitScriptKey   = q & s         ;Secret hotkey(s) to exit script if needed
                                ;Not to be confused with exit emulator keys
                                
exitEmulatorKey = Esc           ;This key/key combo will close any emulators
                                ;that do not have normal closing methods.
                                
toggleCursorKey = t             ;hotkey(s) to show or hide cursor if needed
                                ;when hideCursor below is true

;[MOUSE CURSOR]
hideCursor      = false         ;Automatically hide cursor during script
                                ;WARNING: Make sure ALL your emu's are running fine
                                ;before setting this to true as a precaution.*
                                
;[WINDOWS]
hideDesktop     = true          ;Attempts to hide desktop with black screen, might help
                                ;on some emu's for hiding launching windows.
                                 
hideTaskbar     = false         ;Hide the windows taskbar when running emu's.
                                ;WARNING: Make sure ALL your emu's are running fine
                                ;         before setting this to true as a precaution.*

daemontools     = "C:\Program Files\DAEMON Tools Lite\daemon.exe"        ;Hide the windows taskbar when running emu's.
                                ;WARNING: Make sure ALL your emu's are running fine
                                ;         before setting this to true as a precaution.*

/*
    *:If for some weird reason the script hangs follow these steps to get back to normal.
      1. If an emulator hangs up or cant load your game then first try to exit the emu
         by pressing your Emulator exit hotkey above.
      2. If your emu exited but your mouse cursor is gone use your cursor toggle hotkey.   
      3. Next try to exit the script by pressing your Exit Script Hotkey above. This 
         will also bring back your cursor and taskbar is they are set to true.
*/
      






;*******************************************************************************
;*                  EDIT BELOW THIS POINT AT YOUR OWN RISK                     *
;*******************************************************************************   
                                
;------------------------------------------------------------------------------;
;                       GET PARAMATERS AND SET HOTKEYS                         ;
;------------------------------------------------------------------------------;

;CHECKING FOR 2 PARAMS, IF NOT THEN EXIT
if 0 < 2
{
    MsgBox Usage: HyperLaunch.ahk/exe "System Name" "Rom Name"
    ExitApp
}

systemName = %1%
romName = %2%

Hotkey, %exitScriptKey%, ExitScript
if (hideCursor = "true")
{
  Hotkey, %toggleCursorKey%, ToggleCursor
  SystemCursor("Off")
}

WinClose, cmd.exe
;------------------------------------------------------------------------------;
;                              GET AND CHECK PATHS                             ;
;------------------------------------------------------------------------------;
GoSub, CheckINI
IniRead, iniEmuPath, %A_ScriptDir%\Settings\%systemName%.ini, exe info, path
emuPath := GetFullName(iniEmuPath)
IniRead, iniRomPath, %A_ScriptDir%\Settings\%systemName%.ini, exe info, rompath
romPath := GetFullName(iniRomPath)
IniRead, executable, %A_ScriptDir%\Settings\%systemName%.ini, exe info, exe
IniRead, romExtensions, %A_ScriptDir%\Settings\%systemName%.ini, exe info, romextension

romExtension =
GoSub, CheckPaths

;------------------------------------------------------------------------------;
;                                  RUN SYSTEM                                  ;
;------------------------------------------------------------------------------;


;**********************************ATARI 5200***********************************
if (systemName = "Atari 5200" && (executable = "messpp.exe" || executable = "mess.exe"))
{	
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% a5200 -cart "%romPath%%romName%%romExtension%" -skip_gameinfo -nowindow -nonewui, %emuPath%, Hide UseErrorLevel
}

;**********************************ATARI Lynx***********************************
else if (systemName = "Atari Lynx" && executable = "handy.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
}

;************************************DAPHNE*************************************
else if (systemName = "Daphne" && executable = "daphne.exe"){
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    
    if (romname = "dle21")
    	{
     		daphneParams = dle21 vldp -framefile D:\MAMETUTTO\Daphne\vldp\lair\lair.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000010 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    
    else if (romname = "ace")
    	{
     		daphneParams = ace vldp -framefile D:\MAMETUTTO\Daphne\vldp\ace\ace.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000010 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl  
    	}
    else if (romname = "astron")
    	{
     		daphneParams = astron vldp -framefile D:\MAMETUTTO\Daphne\vldp\astron\astron.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 00000000 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl   
    	}
    else if (romname = "badlands")
    	{
     		daphneParams = badlands vldp -framefile D:\MAMETUTTO\Daphne\vldp\badlands\badlands.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000010 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "bega")
    	{
     		daphneParams = bega vldp -framefile D:\MAMETUTTO\Daphne\vldp\bega\bega.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 00000111 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "cliff")
    	{
     		daphneParams = cliff vldp -framefile D:\MAMETUTTO\Daphne\vldp\Cliff\cliff.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -fastboot -bank 0 00000000 -bank 1 01000000 -bank 2 00000000 -bank 3 01111011 
                    	-prefer_samples -sound_buffer 2048 -fullscreen -x 640 -y 480 -opengl 
    	}
    else if (romname = "cobraab")
    	{
     		daphneParams = cobraab vldp -framefile D:\MAMETUTTO\Daphne\vldp\cobra\cobra.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 01001000 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl 
    	}
    else if (romname = "esh")
    	{
     		daphneParams = esh vldp -framefile D:\MAMETUTTO\Daphne\vldp\esh\esh.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -noissues -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "galaxy")
    	{
     		daphneParams = galaxy vldp -framefile D:\MAMETUTTO\Daphne\vldp\galaxyr\galaxyr.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 00000000 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "gpworld")
    	{
     		daphneParams = gpworld vldp -framefile D:\MAMETUTTO\Daphne\vldp\gpworld\gpworld.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -prefer_samples -sound_buffer 2048 -fullscreen -x 640 -y 480 -opengl 
    	}
    else if (romname = "interstellar")
    	{
     		daphneParams = interstellar vldp -framefile D:\MAMETUTTO\Daphne\vldp\interstellar\interstellar.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00110001 -bank 1 00000000 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl 
    	}
    else if (romname = "lair2")
    	{
     		daphneParams = lair2 vldp -framefile D:\MAMETUTTO\Daphne\vldp\lair2\lair2.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -prefer_samples -sound_buffer 2048 
                        -fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "lair")
    	{
     		daphneParams = lair vldp -framefile D:\MAMETUTTO\Daphne\vldp\lair\lair.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000010 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl 
   	 }
    else if (romname = "lair_n1")
    	{
     		daphneParams = lair_n1 vldp -framefile D:\MAMETUTTO\Daphne\vldp\lair\lair.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000010 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl  
    	}
    else if (romname = "mach3")
    	{
     		daphneParams = mach3 vldp -framefile D:\MAMETUTTO\Daphne\vldp\mach3\mach3.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 01000100 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "roadblaster")
    	{
     		daphneParams = roadblaster vldp -framefile D:\MAMETUTTO\Daphne\vldp\rb\rb.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 00000001 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "sdq")
    	{
     		daphneParams = sdq vldp -framefile D:\MAMETUTTO\Daphne\vldp\sdq\sdq.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00100001 -bank 1 00000000 -prefer_samples -sound_buffer 2048 
                        -fullscreen -x 640 -y 480 -opengl
    	}
    else if (romname = "uvt")
    	{
     		daphneParams = uvt vldp -framefile D:\MAMETUTTO\Daphne\vldp\uvt\uvt.txt -blank_searches -min_seek_delay 1000 
                    	-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -prefer_samples -sound_buffer 2048 
                    	-fullscreen -x 640 -y 480 -opengl
            romFound = "true"
    	}


RunWait, %emupath%%executable% %daphneParams%, UseErrorLevel  
}

;********************************GAMEBOY ADVANCE********************************

else if (systemName = "Gameboy Advance" && executable = "visualboyadvance.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, "%emuPath%%executable%" "%romPath%%romName%%romExtension%", UseErrorLevel    
}

;********************************GAMEBOY********** **********************
else if (systemName = "Gameboy" && executable = "visualboyadvance.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, "%emuPath%%executable%" "%romPath%%romName%%romExtension%", UseErrorLevel 
}

;********************************GAMEBOY COLOR********************************
else if (systemName = "Gameboy Color" && executable = "visualboyadvance.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, "%emuPath%%executable%" "%romPath%%romName%%romExtension%", UseErrorLevel 
}

;********************************Future Pinball********************************
else if (systemName = "Future Pinball" && executable = "Future Pinball.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Runwait, "%emuPath%%executable%" /open "%romPath%%romName%%romExtension%" /play /exit %emuPath%, Hide UseErrorLevel
}

;*************************************MAME**************************************

else if (systemName = "MAME" && executable = "mame.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Runwait, %executable% %romName%, %EmuPath%, Hide UseErrorLevel
    Process, waitClose, %executable%
    exitapp
}

;***********************************NEO GEO*************************************

else if (systemName = "Neo Geo" && executable = "mame.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% "%romName%", %emuPath%, Hide UseErrorLevel
}

;*****************************NEO GEO POCKET COLOR******************************

else if (systemName = "Neo Geo Pocket Color" && executable = "NeoPop-Win32.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
}

;***********************************NINTENDO 64*********************************

else if (systemName = "Nintendo 64" && executable = "Project64.exe")
{
    hideDesktop()
    Sleep, 2000
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% "%romPath%%romName%%romExtension%", %emuPath%, Hide UseErrorLevel
}

;***********************************NINTENDO GameCube*********************************

else if (systemName = "Nintendo GameCube" && executable = "Dolphin.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% -e "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
    Process, WaitClose, %Executable%
    ExitApp
}

;***********************************NINTENDO Wii*********************************

else if (systemName = "Nintendo Wii" && executable = "Dolphin.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %executable% -e "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
    Process, WaitClose, %Executable%
    ExitApp
}

;****************************NINTENDO ENTERTAINMENT SYSTEM**********************

else if (systemName = "Nintendo Entertainment System" && executable = "Nestopia.exe")
{
    Gui, Color, 000000
    Gui -Caption +ToolWindow +AlwaysOnTop
    Gui, Show, W%A_ScreenWidth% H%A_ScreenHeight%, BlackGui
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %executable% "%romPath%%romName%%romExtension%", %emuPath%, UseErrorLevel
    Sleep, 2000
    Gui, destroy
    Process, waitClose, %executable%
    exitapp
}

;***********************************Panasonic 3DO*******************************

else if (systemName = "Panasonic 3DO" && executable = "FreeDO.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, "%EmuPath%%Executable%",,Hide UseErrorLevel
    DetectHiddenWindows, on
    WinShow, FreeDO Beta 1.6.2
    WinWait, FreeDO Beta 1.6.2
    ControlSend, , {F4}, FreeDO Beta 1.6.2 
    WinWaitActive, FreeDO Beta 1.6.2
    SendInput, {ALTDOWN}f{ALTUP}{ENTER}
    IfWinNotActive, Open, Common Places Host W
    WinActivate, Open, Common Places Host W
    WinWaitActive, Open, Common Places Host W
    clipboard=
    clipboard=%romPath%%romName%%romExtension%
    ClipWait
    Sleep,100
    Send,^v
    Sleep,100
    send, {ENTER}
    WinWait, FreeDO Beta 1.6.2
    IfWinNotActive, FreeDO Beta 1.6.2, , WinActivate, FreeDO Beta 1.6.2,
    WinWaitActive, FreeDO Beta 1.6.2,
    SendInput, {ALTDOWN}c{ALTUP}{ENTER}{ENTER}
    Process, WaitClose, FreeDO.exe
}
;***********************************PC Games************************************

else if (systemName = "PC Games")
{
    hideDesktop()
    hotkey, %exitEmulatorKey%, CloseProcess
    Runwait, %romPath%%romName%%romExtension%
    Process, Close, %executable%
    WinActivate, Hyperspin
} 
;***********************************SEGA 32X************************************

else if (systemName = "Sega 32X" && executable = "Fusion.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %Executable% "%romPath%%romName%%romExtension%" -auto -32X -fullscreen, %EmuPath%, Hide UseErrorLevel
    Process, WaitClose, fusion.exe
}

;***********************************SEGA CD*************************************

else if (systemName = "Sega CD" && executable = "Fusion.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %Executable% "%romPath%%romName%%romExtension%" -auto -scd -fullscreen, %EmuPath%, Hide UseErrorLevel
    Process, WaitClose, %Executable%
    exitapp
}

;*********************************SEGA DREAMCAST********************************
else if (systemName = "Sega Dreamcast")
{
if(executable = "nullDC_Win32_Release-NoTrace.exe" ||executable = "nulldc" )
SetWorkingDir, %emuPath%
Hotkey, %exitEmulatorKey%, CloseProcess
rom = "%romPath%%romName%\%romName%%romExtension%"
SetBatchLines -1
IniWrite, 1, %A_WorkingDir%\nulldc.cfg, nullDC, Emulator.AutoStart
IniWrite, 1, %A_WorkingDir%\nulldc.cfg, nullDC, Emulator.NoConsole
IniWrite, 1, %A_WorkingDir%\nulldc.cfg, drkpvr, Fullscreen.Enabled
IniWrite, 1360, %A_WorkingDir%\nulldc.cfg, drkpvr, Fullscreen.Res_X
IniWrite, 760, %A_WorkingDir%\nulldc.cfg, drkpvr, Fullscreen.Res_Y
IniWrite, %romPath%%romname%%RomExtension%, %A_WorkingDir%\nulldc.cfg, imagereader, defaultimage
Run, %executable%
Process, WaitClose, %executable%
}


;*********************************SEGA Game Gear********************************

else if (systemName = "Sega Game Gear" && executable = "Fusion.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %Executable% "%romPath%%romName%%romExtension%" -auto -sms -fullscreen, %EmuPath%, Hide UseErrorLevel
    Process, WaitClose, fusion.exe
}

;*********************************SEGA Genesis**********************************

else if (systemName = "Sega Genesis" && executable = "Fusion.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %Executable% "%romPath%%romName%%romExtension%" -auto -gen -fullscreen, %EmuPath%, Hide UseErrorLevel
    Process, WaitClose, fusion.exe
}

;*******************************SEGA Master System******************************

else if (systemName = "Sega Master System" && executable = "Fusion.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %Executable% "%romPath%%romName%%romExtension%" -auto -sms -fullscreen, %EmuPath%, Hide UseErrorLevel
    Process, WaitClose, fusion.exe
}

;***********************************SEGA MODEL 2*********************************

else if (systemName = "Sega Model 2")
{
    if(executable = "emulator_multicpu.exe" || executable = "emulator.exe" )
    {   
      ;hideDesktop()
      Hotkey, %exitEmulatorKey%, CloseProcess
      Run, %executable% %romName%, %emuPath%, Hide UseErrorLevel
      DetectHiddenWindows, on
      WinWait, Model 2
      WinShow
      Process, WaitClose, %executable%
    }
}

;***********************************SEGA Naomi***********************************

else if (systemName = "SEGA Naomi")
{
    if(executable = "NAOMI.exe" || executable = "nullDC-Naomi_1.0.3_mmu.exe" )  
SetWorkingDir, %emuPath%
Hotkey, %exitEmulatorKey%, CloseProcess
IniWrite, %romPath%%romName%%romExtension%, %A_WorkingDir%\DIMM.ini, Settings, image
Run, %executable% ; launches emulator
Process, WaitClose, %executable%
exitapp
}


;**********************************SEGA SATURN***********************************
else if (systemName = "Sega Saturn" && executable = "SSF.exe")
{
    RunWait, %DAEMONTOOLS% -mount 0`,"%romPath%%romName%%romExtension%"
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %executable% , %emuPath%, UseErrorLevel
}

;********************************Sony Playstation*******************************

else if (systemName = "Sony Playstation" && executable = "epsxe.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %Executable% -nogui -loadiso "%romPath%%romName%%romExtension%",     %EmuPath%, Hide UseErrorLevel
    ;Process, WaitClose, %executable%
}
;********************************Sony Playstation*******************************

else if (systemName = "Sony PlayStation 2" && executable = "pcsx2.exe")
{
hideDesktop()
Hotkey, %exitEmulatorKey%, CloseProcess
Run, %Executable% "%romPath%%romName%%romExtension%", %EmuPath%, Hide UseErrorLevel
Process, WaitClose, pcsx2.exe
}


;***********************Super Nintendo Entertainment System*********************

else if (systemName = "Super Nintendo Entertainment System" && executable = "zsnesw.exe")
{
    hideDesktop()
    SetKeyDelay, 250
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %Executable% "%romPath%%romName%%romExtension%", %EmuPath%
}

;**********************************Turbo Duo***********************************
else if (systemName = "Turbo Duo" && executable = "pce.exe")
{
    RunWait, %DAEMONTOOLS% -mount 0`,"%romPath%%romName%%romExtension%"
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    Run, %executable% syscard3.pce , %emuPath%, UseErrorLevel
}

;**********************************TurboGrafx 16********************************

else if (systemName = "TurboGrafx 16" && executable = "mednafen.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, "%EmuPath%%Executable%" "%romPath%%romName%%romExtension%" -fs 1,, UseErrorLevel
}

;***********************************JukeBox*************************************

else if (systemName = "Jukebox" && executable = "Silverjuke.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseJuke
    RunWait, %emuPath%%executable% --kiosk, Hide UseErrorLevel
}
else if (systemName = "Jukebox" && executable = "SKJukebox.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %emuPath%%executable%, Hide UseErrorLevel
}

;***************************************Zinc************************************

else if (systemName = "Zinc" && executable = "zinc.exe")
{
    hideDesktop()
    Hotkey, %exitEmulatorKey%, CloseProcess
    RunWait, %Executable% %romName%, %EmuPath%, Hide UseErrorLevel
}

else
{
    MsgBox,48,Error,%systemName% is an invalid System Name or %executable% isnt supported yet,6
}
                                 

;------------------------------------------------------------------------------;
;                WHEN EMULATOR FINISHES OR IF LAUNCH EXE FAILS                 ;
;------------------------------------------------------------------------------;
;************PROBABLY DO NOT NEED TO EDIT THIS AREA*************

if (ErrorLevel = "ERROR")
{
  MsgBox,48,Error,Failed to run executable check your paths,6
}
Goto ExitScript ; Exits script and returns to frontend


;------------------------------------------------------------------------------;
;                                KILL COMMANDS                                 ;
;------------------------------------------------------------------------------;
;************PROBABLY DO NOT NEED TO EDIT THIS AREA*************

/*
 Most emu's can be closed with CloseProcess when using a 2 key combo, if not set a custom
 close.
*/
CloseJuke:
RunWait, %emuPath%%executable% --execute="program.shutdown(30);", Hide UseErrorLevel
return

CloseProcess:
Hotkey, %exitScriptKey%, Off
Process, Close, %Executable%
Process, WaitClose, %Executable%
Gui, Color, 000000
Gui -Caption +ToolWindow +AlwaysOnTop
Gui, Show, W%A_ScreenWidth% H%A_ScreenHeight%, BlackGui
return

ExitScript:
Process, Exist, HyperSpin.exe
PID := errorLevel
if (PID)
{
  WinActivate, ahk_pid %PID%
  WinWaitActive, ahk_pid %PID%
  Gui, destroy
  if (hideCursor)
    SystemCursor("On")
  if (hideTaskbar)
    WinShow ahk_class Shell_TrayWnd
  ExitApp
}


OnExit, ExitScript
return








;------------------------------------------------------------------------------;
;                                 REST OF SCRIPT                               ;
;------------------------------------------------------------------------------;
;************PROBABLY DO NOT NEED TO EDIT THIS AREA*************



SystemCursor(OnOff=1)   ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others
{
    static AndMask, XorMask, $, h_cursor
        ,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors
        , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13   ; blank cursors
        , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13   ; handles of default cursors
    if (OnOff = "Init" or OnOff = "I" or $ = "")       ; init when requested or at first call
    {
        $ = h                                          ; active default cursors
        VarSetCapacity( h_cursor,4444, 1 )
        VarSetCapacity( AndMask, 32*4, 0xFF )
        VarSetCapacity( XorMask, 32*4, 0 )
        system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
        StringSplit c, system_cursors, `,
        Loop %c0%
        {
            h_cursor   := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% )
            h%A_Index% := DllCall( "CopyImage",  "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 )
            b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0
                , "int",32, "int",32, "uint",&AndMask, "uint",&XorMask )
        }
    }
    if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T"))
        $ = b  ; use blank cursors
    else
        $ = h  ; use the saved cursors

    Loop %c0%
    {
        h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 )
        DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% )
    }
}
ToggleCursor:
  SystemCursor("Toggle")
return

IniRead(Filename, Section, Key, Default = "") { 
   FileRead, text, *t %Filename% 
   text = `n%text%`n 
   StringTrimLeft, text, text, InStr(text, "`n[" . Section . "]`n") 
   Loop, 8 { 
      sp := sp . " " 
      StringReplace, text, text, %Key%%sp%=, %Key%= 
      If ErrorLevel 
         Break 
   } 
   start := InStr(text, "`n" . Key . "=") 
   If !start 
      Return, Default 
   start += StrLen(Key) + 2 
   StringMid, Value, text, start, InStr(text, "`n", false, start) - start 
   Return, Value 
}

;Get Full Path from Relative Path
GetFullName( fn ) {
   static buf, i
   if !i
      i := VarSetCapacity(buf, 512)
   DllCall("GetFullPathNameA", "str", fn, "uint", 512, "str", buf, "str*", 0)
   return buf
}

hideDesktop(){
    ;WinHide ahk_class Shell_TrayWnd
    ;Gui, +toolwindow
    ;Gui, -Caption
    ;Gui, Color, black
    ;Gui, show, +toolwindow Maximize
Gui, Color, 000000
Gui -Caption +ToolWindow
Gui, Show, W%A_ScreenWidth% H%A_ScreenHeight%, BlackScreen
    
}

CheckINI:
  IfNotExist, %A_ScriptDir%\HyperSpin.exe
  {
    MsgBox,48,Error, Must be in same directory as HyperSpin.exe,6
    Goto ExitScript 
  }
  IfNotExist, %A_ScriptDir%\Settings\%systemName%.ini
  {
    MsgBox,48,Error,Cannot Find %A_ScriptDir%\Settings\%systemName%.ini,6
    Goto ExitScript 
  }
return

CheckPaths:
  romFound = 
  StringRight, emuPathBackSlash, EmuPath, 1
  StringRight, romPathBackSlash, RomPath, 1
  
  If (emuPathBackSlash != "\" || romPathBackSlash != "\")
  {
    MsgBox,48,Error, Make sure your paths contains a backslash on the end ,6
    Goto ExitScript
  }
  If (executable = "") 
  {
    MsgBox,48,Error, Missing executable in %systemName%.ini ,6
    Goto ExitScript  
  }
  If (romPath = "") 
  {
    MsgBox,48,Error, Missing rom path in %systemName%.ini ,6
    Goto ExitScript  
  }
  If (emuPath = "") 
  {
    MsgBox,48,Error, Missing emulator path in %systemName%.ini ,6
    Goto ExitScript  
  }
  IfNotExist, %EmuPath%%Executable%
  {
    MsgBox,48,Error,Cannot Find %EmuPath%%Executable%,6
    Goto ExitScript 
  }
  if(systemName != "zinc")  
  { 
    If (romExtensions = "") 
      {
        MsgBox,48,Error, Missing rom extension in %systemName%.ini ,6
        Goto ExitScript  
      }
    Loop, parse, romExtensions, `,
    { 
      inputVar = %A_LoopField%
      StringLeft, charToCheck, inputVar, 1
      If(charToCheck = ".")
      {
        MsgBox,48,Error, Make sure your rom extensions do not contain a ".",6
        Goto ExitScript
      }
      IfExist %RomPath%%RomName%.%A_LoopField%
      { 
        romExtension = .%A_LoopField% 
        romFound = true
        break
      }else{
        IfExist %RomPath%%RomName%\%RomName%.%A_LoopField%
        {
          RomPath = %RomPath%%RomName%\
          ;MsgBox %RomPath%
          romExtension = .%A_LoopField% 
          romFound = true
          break       
        }else{
           romFound = false
        }
      }
    }
  }
  if (romFound = "false")
  {
    if(systemName != "daphne"){
      MsgBox,48,Error,Cannot find Rom - %RomPath%%RomName% with any provided extension,6
      Goto ExitScript
    }else{
      MsgBox,48,Error,Cannot find Daphne framefile - %RomPath%%RomName% with any provided extension,6
      Goto ExitScript
    }
  }
return
Annunci
Report this ad
Report this ad

Rispondi