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

Marquee Magician, and HyperLaunch


Tempest

Recommended Posts

Posted

Chillinwater,

Sorry, I thought I set this topic to notify me of new posts, but I guess I didn't. I know that at the gameex forums, sometimes code gets messed up when posted. Frankly, I did spend quite a bit of time on Marquee Magician lately, but the more I work on it the more frustrated I get. I do have a version that I beleive does work in HyperSpin, but I won't be adding the Tabbed viewing that I mentioned. (That's where the frustration comes into play)

Here is a link for the Hyperlaunch.ahk, and the setup program for Marquee Magician in HyperSpin. The only difference in the setup programs is that the one for GameEx reads the GameEx.ini to create a list of emulators to choose from, while the one for HS requires you to enter the system name, which should match the system name that is being sent to hyperlaunch.

http://www.megaupload.com/?d=EOHHF6IZ

I would be happy to meet you in the GameEx chat room, if we can agree on a time. The setup program really works well, so I can't understand what the problem might be. I have never done it before, but I would be willing to do a logmein session as well. Hell, if you live in the U.S. I can add you to my circle (AllTel), and I will call you! Just let me know how I can help you best.

Also, If you make a template, and assign it to HyperSpin, it will show images while in the HS FE.

I will try to monitor this topic for a few days, or you can PM me at GameEx.

Thanks for your patience.

Tempest

  • Replies 63
  • Created
  • Last Reply
Posted

no problem.

I have to try out your CFG Magician also. just downloaded it.

Give me a day to set up MMHS, :drool: spend some time with it and cut firewood.

I know i'll have some questions. I have some now, but I'll wait.

I'll set up the chat with you when i kinda know what i'm talkin about and at your conveniance so I dont waste your time......Thanks Tempest!

Posted

Hey Tempest,

Results so far,

If i left click on my current hyperlaunch.exe that i know is working (for testing), the normal (working) message is,

- usage: hyperlaunch.ahk/exe "system name" "rom name"

If I change the path of MM to match my location, save\recompile and then left click on the new re-complied hyperlaunch.exe (with no other changes) I get,

"cannot find c:\hyperspin\settings\.ini". (what is this .ini?) MM.ini is in the Marquee Magician folder and I copied it to Hyperspin\settings (nope).

I get the same error when I actually try to run a system (mame) in hyperspin that I have configured a template for.

I used the same procedure that I use for GameEx which worked.

If I copy (what I think is everything) into my script I get the good message can run a mame game but nothing MM happens on screen.

The previous version you posted here if I left click I get,

"run the setup first"

Any Ideas?

Posted

I managed to get this working today by doing the following:

1. Combined the Marquee Magician HS Setup download Tempest posted here: http://www.megaupload.com/?d=EOHHF6IZ with the GameEx version posted here http://www.gameex.info/forums/index.php?showtopic=6911 into one folder.

2. Placed i_view32.exe from here http://www.irfanview.net/ in that folder.

(This is where I diverge from instructions)

3. I then took the contents of that folder and placed it in the root Hyperspin folder (C:\Hyperspin)

4. I set up Marquee Magician using the "Marquee Magician SetupHS" file from the Megaupload link.

5. I edited the HyperLaunch.ahk file and after a bit of trial and error (and ripping out betabright functionality due to it throwing up errors upon exiting of MAME, though i'm sure it was something on my part that broke it) I managed to compile it and get it working. I've posted the contents of the HyperLaunch.ahk file below

Hope this proves helpful.

Thanks to Tempest for this awesome app. :)

/**
* HyperLaunch Version 1.04.5
* Autohotkey script by BadBoyBill [email protected]
* CursorHide by Lazlo
* Additional add-ons 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.......................psxfin.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 = false ;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.*

VolumeControlUP = ~g ;Enables the ability to control the volume in programs that are launched by hyperlaunch*

VolumeControlDown = ~b ;Enables the ability to control the volume in programs that are launched by hyperlaunch
;NOTE: the "~" denotes that the key retains its functionality*

MarqueeMagician := "C:\Hyperspin\Marquee Magician1.0.exe" ; Change this to your Marquee Magician application location.
EnableMarqueeMagician = true ; Should Marquee Magician support be active? true or false here

/*
*: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")
}

Hotkey, %VolumeControlUP%, VolumeUp

Hotkey, %VolumeControlDown%, VolumeDown

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 ;
;------------------------------------------------------------------------------;

;****** Added by Lashek - Force betabrite to update with hsbetabright.exe ******
;****** The loader will parse xml to get the "Description" and display it ******
;For support, see: http://www.hyperspin-fe.com/forum/showthre...post&t=4078
if (enablebetabright)
{
RunWait, hsbetabrite.exe "%systemName%" "%romName%" %betabright% %betabrightparams%,, Hide UseErrorLevel
}

;*************************************** Marquee Magician ******************************************
;****************************** Added by Matt Mclemore AKA Tempest *********************************
;*********** Marquee Magician will display game specific graphics on a secondary monitor ***********
;************ For support, see: http://www.gameex.info/forums/index.php?showtopic=6911 *************

if (EnableMarqueeMagician)
{
PrevDir := A_WorkingDir
SetWorkingDir, %MarqueeMagician%
IfNotExist, MM.ini
{
 MsgBox, You need to run the setup program first.
 Goto ExitScript
}
Run, i_view32.exe /killmesoftly
IniRead, TimesPlayed, MM.ini, %systemName%, %romName%, 0
TimesPlayed++
IniWrite, %TimesPlayed%, MM.ini, %systemName%, %romName%
IniRead, Template, MM.ini, %systemName%, Template
If Template <> Error
{
 IniRead, Type, MM.ini, General, Type
 StringSplit, Filetype, Type ,|
 SetFormat, float, 0.0
 EnvGet, NumCpu, NUMBER_OF_PROCESSORS
 VarSetCapacity(Idletime,8,0)
 WinWaitClose, IrfanView ;*** Wait Or kill the following ***
 Statistics = 0
 TemplateFolder = Templates\%Template%
 Loop, %TemplateFolder%\*, 2
 {
  IniRead, FileFolder, MM.ini, %systemName%, FileFolder%A_Index%
  IniRead, Image, MM.ini, %systemName%, Image%A_Index%
  If FileFolder = 4
  {
   Statistics = 1
   IniRead, X, %A_LoopFileLongPath%\i_view32.ini, WinPosition, XKoord
   IniRead, Y, %A_LoopFileLongPath%\i_view32.ini, WinPosition, YKoord
   IniRead, W, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Width
   IniRead, H, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Height
   Loop, 7
     IniRead, Stats%A_Index%, MM.ini, %systemName%, Stats%A_Index%
   Gui, 6:default
   Gui, -Caption
   Gui, Font, s14
   If Stats1 = 1
      Gui, Add, Text, w300 h20, %systemName%
   If Stats2 = 1
      Gui, Add, Text, w300 h20, %romName%
   If Stats3 = 1
      Gui, Add, Text, w250 h20, TimesPlayed: %TimesPlayed%
;   If Stats4 = 1 ; FPS not available in HS
;      Continue
   If Stats5 = 1
      Gui, Add, Text, w250 h20 vPlayTimerText, Play Timer: %PlayTimer%
   If Stats6 = 1
   {
    Gui, Add, Text, vCpuText,  CPU Usage:                       00`%
    Gui, Add, Progress, w250 h20 50 vCpuProgress
   }
   If Stats7 = 1
   {
    Gui, Add, Text, vMemText, Memory Usage:                  00`%
    Gui, Add, Progress, w250 h20 vMemProgress
   }
   Gui, Show, x%X% y%Y% h%H% w%W%
   Continue
  }
  IF FileFolder = 2
  {
   IniRead, Backup, MM.ini, %systemName%, Backup%A_Index%
   Found = 0
   Image .= "\" . romName
   Loop, %FileType0%
   {
    Temp := Image . FileType%A_Index%
    IfExist, %Temp%
    {
     Image := Temp
     Found = 1
     Break
    }
   }
   If Found = 0
      Image := BackUp
  }
  Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
  Count := A_Index
 }
 WinWaitActive, IrfanView - Window%Count%,, 3
 StartTime := A_TickCount
 If Statistics = 1
    SetTimer, Update, 250
}
SetWorkingDir, %PrevDir%
}

;**********************************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
daphneParams = vldp -fullscreen -x 640 -y 480 -nohwaccel -framefile
frameFilePath = %romPath%%romName%%romExtension%
RunWait, %executable% %romName% %daphneParams% %frameFilePath%, %emuPath%, 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 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
}

;***********************************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" && executable = "nullDC_100b1_6.exe")
{
hideDesktop()
Hotkey, %exitEmulatorKey%, CloseProcess
Run, %Executable% -config ImageReader:DefaultImage="%romPath%%romName%%romExtension%", %EmuPath%,Hide UseErrorLevel
WinWait, nullDC
Sleep,1000
WinShow, ahk_class ndc_main_window
Process, WaitClose, nullDC_100b1_6.exe
}


;*********************************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 = "nullDC-Naomi_1.0.3_nommu.exe" || executable = "nullDC-Naomi_1.0.3_mmu.exe" )
SetWorkingDir, %emuPath%
Hotkey, %exitEmulatorKey%, CloseProcess
Blockinput on ; Keeps users from messing up loader my pressing buttons and moving mouse
rom = "%romPath%%romName%%romExtension%" ; (rompath romfile) gives friendly name as ROM


SetBatchLines -1


Gui +AlwaysOnTop -Caption +ToolWindow ; No title, No taskbar icon
Gui Color, 0 ; Color Black
Gui Show, x0 y0 h%A_ScreenHeight% w%A_ScreenWidth%, HSHIDE
;WinSet Transparent, 200, A ; Can be semi-transparent
MouseGetPos X, Y ; Remember pos to return
MouseMove %A_ScreenWidth%,%A_ScreenHeight% ; Move pointer off screen
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, 640, %A_WorkingDir%\nulldc.cfg, drkpvr, Fullscreen.Res_X
IniWrite, 480, %A_WorkingDir%\nulldc.cfg, drkpvr, Fullscreen.Res_Y
Run, %executable% ; launches emulator
WinWait, Open, Open as &read-only
IfWinNotActive, Open, Open as &read-only, WinActivate, Open, Open as &read-only
WinWaitActive, Open, Open as &read-only ; waits for load dialog
Sleep, 100
SendInput, %rom% ; sends rompath romfile from exe syntax
Send, {enter} ; loads roms by pressing enter
Sleep, 7000 ; Gives time for loading to finish before unhiding desktop
Gui Destroy ; Remove blinds from desktop
Blockinput off ; Allows user to send inputs so games can be played
Process, WaitClose, %executable%
exitapp
}

;**********************************SEGA SATURN****************
;**********************************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 = "psxfin.exe")
{
psxParams = -f
Hotkey, %exitEmulatorKey%, CloseProcess
Run, %Executable% %psxParams% "%romPath%%romName%%romExtension%", %EmuPath%, Hide UseErrorLevel
DetectHiddenWindows, on
WinWait, ahk_class pSX
hideDesktop()
WinWaitClose, ahk_class pSX
}

;***********************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%
}

;**********************************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:
if (enablebetabright)
{
RunWait, %betabright% com3 {AUTO}HYPERSPIN
}
if (EnableMarqueeMagician)
{
Runwait, i_view32.exe /killmesoftly
Gui, 6:Destroy
SetTimer, Update, Off
}
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



;********************************* Update Gui for Marquee Magician *********************************

Update:
If Stats5 = 1
{
PlayTimer := (A_TickCount - StartTime)/1000
dt = 20000101000000
dt += PlayTimer, seconds
FormatTime, PlayTimer, %dt%, H:mm:ss
GuiControl, 6:, PlayTimerText, Play Timer: %PlayTimer%
}
If Stats6 = 1   ; Display Memory Usage
{
VarSetCapacity( memorystatus, 100 )
DllCall("kernel32.dll\GlobalMemoryStatus", "uint",&memorystatus)
mem := *( &memorystatus + 4 )    ; 0..100%
GuiControl, 6:, MemProgress, %Mem%
GuiControl, 6:, MemText, Memory Usage:               %Mem%`%
}
If Stats7 = 1   ; Display CPU Usage
{
IdleTime0 := IdleTime, Tick0 := Tick
DllCall("GetSystemTimes", UInt64P,IdleTime, Int,0, Int,0)
CPU := (100 - .01*(IdleTime0 - IdleTime)/(Tick0 - Tick:=A_TickCount)/NumCpu)
GuiControl, 6:, CpuProgress, %CPU%
GuiControl, 6:, CpuText, CPU Usage:                     %CPU%`%
}
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


;------------------------------------------------------------------------------;
; Volume ;
;------------------------------------------------------------------------------;
VolumeUp:
Send {Volume_up 1}
return
VolumeDown:
Send {Volume_Down 1}
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

Posted

I also have it working in Hyperspin (via Tempests' megaupload post, compiled with mine)

I also have a (working) betabtite on my cab but not on my laptop (disabled on my test setup)

so Im not sure yet if I'm going to have the same troubles that "laslo" has with beta brite.

My second screen is a "usb" and I have crashes when trying to run windows games.

I dont think those games play well with either the usb or sharing the graphics card with the second screen. All others are fine!

(wish list)

- touch screen support

(I saw a video of "invincers" Silverjuke in Hyperspin Cab with touchscreen and Betabrite rig running silverjuke box with the mini touch so I know it can be done)

- third screen ( 2 minis) 1 showing only the stats window the other showing the images.

- maybe a fourth (3 minis and the primary) showing CPWizard's control panel.

( I finally have mame booting up showing the control panel on mame startup (another cool app))

- second betabrite (after seeing BBB's demo of (1) in action and upcoming support for (2)! HyperSpin Status update 10-17: Prelim BetaBrite

This is a very nice touch to the cab, Thanks Tempest!

Posted

I think that you may be able to add as many monitors as you want. If you look in the templates folder, they contain other folders that have a i-view.ini file in them. the i_view.ini files contain the information the IrfanView needs to display the images.

[WinPosition]

xKoord=1280

yKoord=384

Width=640

Height=384

Maximized=0

[Viewing]

FitWindowOption=3

UseResample=1

[Others]

RememberWinPos=1

[Toolbar]

Flag=0

If you set the xKoord, and YKoord for the upper left corner of the screen, it should display properly.

Posted

Thanks Tempest, do you know of a program that outputs\shows mouse coordinates to the screen? Iknow there is somthing obvios but can think of one. I'll do a google.

  • 3 months later...
Posted

Ok, so here's the deal. I don't want MAME to exit via HyperLaunch. HyperLaunch causes MAME to force quit and this keeps hi-scores from saving. Same with ZSNES. I currently have the script compiled removing " Hotkey, %exitEmulatorKey%, CloseProcess" from my MAME process. Unfortunately this does not give HyperSpin back focus. I must hit ESC again to close MM after MAME has already been closed. How can I get this to switch focus back to HyperSpin one MAME has been closed, and hopefully leaving the last game played title on the smaller screen until a new game is selected. OR have MM display a specific image upon going back to the Main Menu in HyperSpin.

Below is the current script that I am using.

/** 
* HyperLaunch Version 1.03
* Autohotkey script by BadBoyBill  [email protected]
* 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.......................psxfin.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     = false          ;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 (x86)\DAEMON Tools Lite\DTLite.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.*

VolumeControlUP = ~g ;Enables the ability to control the volume in programs that are launched by hyperlaunch*

VolumeControlDown = ~b ;Enables the ability to control the volume in programs that are launched by hyperlaunch
;NOTE: the "~" denotes that the key retains its functionality*

betabright = "C:\BetaBrite\betacom.exe" ; Change this to your BetaBrite console application location.
betabrightparams = "com3 {AUTO}"
enablebetabright = false ; Should Betabright support be active? true or false here

/*
   *: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.
*/

;*************************************** Marquee Magician ******************************************
;****************************** Added by Matt Mclemore AKA Tempest *********************************
;*********** Marquee Magician will display game specific graphics on a secondary monitor ***********
;************ For support, see: http://www.gameex.info/forums/index.php?showtopic=6911 *************

MarqueeMagician := "E:\Marquee Magician" ; Change this to your Marquee Magician application location.
EnableMarqueeMagician = true ; Should Marquee Magician be active? true or false here


/*
*: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                                  ;
;------------------------------------------------------------------------------;
;****** Added by Lashek - Force betabrite to update with hsbetabright.exe ******
;****** The loader will parse xml to get the "Description" and display it ******
;For support, see: http://www.hyperspin-fe.com/forum/showthre...post&t=4078
if (enablebetabright)
{
RunWait, hsbetabrite.exe "%systemName%" "%romName%" %betabright% %betabrightparams%,, Hide UseErrorLevel
}

if (EnableMarqueeMagician)
 Gosub, DisplayImages

;**********************************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 = "ace")
{
daphneParams = ace vldp -framefile E:\Daphne\framefile\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 E:\Daphne\framefile\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 E:\Daphne\framefile\badlands.txt -blank_searches -min_seek_delay 1000 
-seek_frames_per_ms 20 -homedir . -bank 0 00000000 -bank 1 10000011 -prefer_samples -sound_buffer 2048 
-fullscreen -x 640 -y 480 -opengl 
}
else if (romname = "bega")
{
daphneParams = bega vldp -framefile E:\Daphne\framefile\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 E:\Daphne\framefile\cliff.txt -fullscreen -vertical_stretch 24 -noserversend -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 1360 -y 768-opengl 
}
else if (romname = "cobra")
{
daphneParams = cobra vldp -framefile E:\Daphne\framefile\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 = "dle21")
{
daphneParams = dle21 vldp -framefile E:\Daphne\framefile\lair.txt -blank_searches -min_seek_delay 1000 
-seek_frames_per_ms 20 -homedir . -bank 0 11011000 -bank 1 10110111 -prefer_samples -sound_buffer 2048 
-fullscreen -x 640 -y 480 -opengl
}
else if (romname = "lair")
{
daphneParams = lair vldp -framefile E:\Daphne\framefile\lair.txt -blank_searches -min_seek_delay 1000 
-seek_frames_per_ms 20 -homedir . -fastboot -bank 0 11011001 -bank 1 00100111 -prefer_samples -sound_buffer 2048 
-fullscreen -x 640 -y 480 -opengl 
}
else if (romname = "lair_n1")
{
daphneParams = lair_n1 vldp -framefile E:\Daphne\framefile\lair.txt -blank_searches -min_seek_delay 1000 
-seek_frames_per_ms 20 -homedir . -bank 0 11011011 -bank 1 01100111 -prefer_samples -sound_buffer 2048 
-fullscreen -x 640 -y 480 -opengl 
}
else if (romname = "lair2")
{
daphneParams = lair2 vldp -framefile E:\Daphne\framefile\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 = "esh")
{
daphneParams = esh vldp -framefile E:\Daphne\framefile\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 E:\Daphne\framefile\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 = "galaxyr")
{
daphneParams = galaxy vldp -framefile E:\Daphne\framefile\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 E:\Daphne\framefile\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 E:\Daphne\framefile\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 = "mach3")
{
daphneParams = mach3 vldp -framefile E:\Daphne\framefile\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 E:\Daphne\framefile\roadblaster.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 E:\Daphne\framefile\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 E:\Daphne\framefile\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()
   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 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
}

;***********************************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" && executable = "nullDC_100b1_6.exe")
{
   hideDesktop()
   Hotkey, %exitEmulatorKey%, CloseProcess
   Run, %Executable% -config ImageReader:DefaultImage="%romPath%%romName%%romExtension%", %EmuPath%,Hide UseErrorLevel
   WinWait, nullDC
   Sleep,1000
   WinShow, ahk_class ndc_main_window
   Process, WaitClose, nullDC_100b1_6.exe
}


;*********************************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 = "psxfin.exe")
{
   psxParams = -f
   Hotkey, %exitEmulatorKey%, CloseProcess
   Run, %Executable% %psxParams% "%romPath%%romName%%romExtension%", %EmuPath%, Hide UseErrorLevel
   DetectHiddenWindows, on
   WinWait, ahk_class pSX
   hideDesktop()
   WinWaitClose, ahk_class pSX
}

;***********************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")
{
if(executable = "pce.exe" || executable = "ootake.exe" ) 
{
hideDesktop()
Hotkey, %exitEmulatorKey%, CloseProcess
RunWait, "%EmuPath%%Executable%" "%romPath%%romName%%romExtension%", UseErrorLevel
Process, WaitClose, %executable%
Process, Close, hyperlaunch.exe
WinActivate, HyperSpin
}
}
;***********************************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:
if (enablebetabright)
{
RunWait, %betabright% com3 {AUTO}HYPERSPIN
}

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

if (EnableMarqueeMagician)
{
 SetWorkingDir, %MarqueeMagician%
 RunWait, i_view32.exe /killmesoftly
 IniRead, Template, MM.ini, HyperSpin, Template
 If Template <> Error
 {
  IniRead, Type, MM.ini, General, Type
  StringSplit, Filetype, Type ,|
  TemplateFolder = Templates\%Template%
  Loop, %TemplateFolder%\*, 2
  {
   IniRead, Image, MM.ini, HyperSpin, Image%A_Index%
   Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
   Count := A_Index
  }
  WinWaitActive, IrfanView - Window%Count%,, 3
 }
}
}
ExitApp

;------------------------------------------------------------------------------;
; Marquee Magician ;
;------------------------------------------------------------------------------;

DisplayImages:
PrevDir := A_WorkingDir
SetWorkingDir, %MarqueeMagician%
IfNotExist, MM.ini
{
MsgBox, You need to run the setup program first.
ExitApp
}
RunWait, i_view32.exe /killmesoftly
IniRead, TimesPlayed, MM.ini, %systemName%, %romName%, 0
TimesPlayed++
IniWrite, %TimesPlayed%, MM.ini, %systemName%, %romName%
IniRead, Template, MM.ini, %systemName%, Template
If Template <> Error
{
IniRead, Type, MM.ini, General, Type
StringSplit, Filetype, Type ,|
SetFormat, float, 0.0
EnvGet, NumCpu, NUMBER_OF_PROCESSORS
VarSetCapacity(Idletime,8,0)
Statistics = 0
TemplateFolder = Templates\%Template%
Loop, %TemplateFolder%\*, 2
{
 IniRead, FileFolder, MM.ini, %systemName%, FileFolder%A_Index%
 IniRead, Image, MM.ini, %systemName%, Image%A_Index%
 If FileFolder = 4
 {
  Statistics = 1
  IniRead, GuiColor, MM.ini, General, GuiColor, Silver
  IniRead, TextColor, MM.ini, General, TextColor, Black
  IniRead, ProgBackColor, MM.ini, General, ProgBackColor, Silver
  IniRead, ProgForeColor, MM.ini, General, ProgForeColor, Gray
  IniRead, X, %A_LoopFileLongPath%\i_view32.ini, WinPosition, XKoord
  IniRead, Y, %A_LoopFileLongPath%\i_view32.ini, WinPosition, YKoord
  IniRead, W, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Width
  IniRead, H, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Height
  Loop, 7
    IniRead, Stats%A_Index%, MM.ini, %systemName%, Stats%A_Index%
  Gui, 6:default
  Gui, -Caption
  Gui, Color, %GuiColor%
  Gui, Font, s14 c%TextColor%
  If Stats1 = 1
     Gui, Add, Text, w300 h20, %systemName%
  If Stats2 = 1
     Gui, Add, Text, w300 h20, %romName%
  If Stats3 = 1
     Gui, Add, Text, w250 h20, TimesPlayed: %TimesPlayed%
;   If Stats4 = 1 ; FPS not available in HS
;      Continue
  If Stats5 = 1
    Gui, Add, Text, w250 h20 vPlayTimerText, Play Timer: %PlayTimer%
  If Stats6 = 1
  {
   Gui, Add, Text, vCpuText,  CPU Usage:                       00`%
   Gui, Add, Progress, w250 h20 c%ProgForeColor% background%ProgBackColor% vCpuProgress
  }
  If Stats7 = 1
  {
   Gui, Add, Text, vMemText, Memory Usage:                  00`%
   Gui, Add, Progress, w250 h20 c%ProgForeColor% background%ProgBackColor% vMemProgress
  }
  Gui, Show, x%X% y%Y% h%H% w%W%
  Continue
 }
 IF FileFolder = 2
 {
  IniRead, Backup, MM.ini, %systemName%, Backup%A_Index%
  Found = 0
  Image .= "\" . romName
  Loop, %FileType0%
  {
   Temp := Image . FileType%A_Index%
   IfExist, %Temp%
   {
    Image := Temp
    Found = 1
    Break
   }
  }
  If Found = 0
     Image := BackUp
 }
 Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
 Count := A_Index
}
WinWaitActive, IrfanView - Window%Count%,, 3
StartTime := A_TickCount
If Statistics = 1
   SetTimer, Update, 250
}
SetWorkingDir, %PrevDir%
Gui, 2:default
Return

Update:   ; Update Gui for Marquee Magician
If Stats5 = 1
{
PlayTimer := (A_TickCount - StartTime)/1000
dt = 20000101000000
dt += PlayTimer, seconds
FormatTime, PlayTimer, %dt%, H:mm:ss
GuiControl, 6:, PlayTimerText, Play Timer: %PlayTimer%
}
If Stats6 = 1   ; Display Memory Usage
{
VarSetCapacity( memorystatus, 100 )
DllCall("kernel32.dll\GlobalMemoryStatus", "uint",&memorystatus)
mem := *( &memorystatus + 4 )    ; 0..100%
GuiControl, 6:, MemProgress, %Mem%
GuiControl, 6:, MemText, Memory Usage:               %Mem%`%
}
If Stats7 = 1   ; Display CPU Usage
{
IdleTime0 := IdleTime, Tick0 := Tick
DllCall("GetSystemTimes", UInt64P,IdleTime, Int,0, Int,0)
CPU := (100 - .01*(IdleTime0 - IdleTime)/(Tick0 - Tick:=A_TickCount)/NumCpu)
GuiControl, 6:, CpuProgress, %CPU%
GuiControl, 6:, CpuText, CPU Usage:                     %CPU%`%
}
Return

;------------------------------------------------------------------------------;
; Volume ;
;------------------------------------------------------------------------------;
VolumeUp:
Send {Volume_up 1}
return
VolumeDown:
Send {Volume_Down 1}
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



VPUniverse_logo.png

Posted

Dazz, I am using hyperlaunch with mame and do not have hiscore saving issues. Not near my cab atm, but I think it is because I am using cpwizard (supports hiscore) as well as MM , can't remember if I had to edit my ahk, but certainly recall having similar issues as to you.

Posted

I have Mame configured (mame settings not hyperlaunch) to shut down on 1 & 5 (x-arcade tank) and hadnt had that focus problem so Ill have to retest it now.

I've never had the last game played remain on the second screen so Im not sure about that.

Might be able to disable shutdown of i_view32.exe inside the MM script.

Gimme a few to connect my Double Sight to my test setup.

[edit] re-tested

This is the script I use and works fine to close MM with HyperSpin in focus

but it doesnt leave last game image displaying on the second screen (mini),

It was tested on Win-Vista dont know if Win 7 makes a difference.

Remove the "CPWizard" line, if you dont have it installed.

 
;*************************************MAME**************************************
else if (systemName = "MAME" && executable = "mame.exe")
{
   hideDesktop()
   ;Hotkey, %exitEmulatorKey%, CloseProcess
  [color=yellow]RunWait, "C:\Program Files\CPWizard\CPWizard.exe" -emu "%systemName%" -game "%[/color]
[color=yellow]romName%" -timeout 9000[/color]
   Runwait, %executable% %romName%, %EmuPath%, Hide UseErrorLevel
   Process, waitClose, %executable%
   WinActivate, HyperSpin
   exitapp
}

Posted

Try putting OnExit, ExitScript near the top of your script.

#SingleInstance force ;Prevent multiple instances#InstallKeybdHookSetTitleMatchMode 2
OnExit, ExitScript 

Also, if you create a template named HyperSpin, MM will display that template while HS is Active. After you run the first emulator that is....

Posted

Thanks Tempest, How ya been?

I tried your suggestion but it didnt change anything for me.

I did however get Ifranview to stay up

(showing image of the last game played), after shutdown

using the mame script from my previous post

(with HyperSpin in focus)

by disabling this line in the MM section of the script below.

I dont have my BetaBite set-up on my test rig so I dont know if it affects it on shutdown.

if (EnableMarqueeMagician)
{
 SetWorkingDir, %MarqueeMagician%
 RunWait, i_view32.exe /killmesoftly
 IniRead, Template, MM.ini, HyperSpin, Template
 If Template <> Error
 {
  IniRead, Type, MM.ini, General, Type
  StringSplit, Filetype, Type ,|
  TemplateFolder = Templates\%Template%
  Loop, %TemplateFolder%\*, 2
  {
   IniRead, Image, MM.ini, HyperSpin, Image%A_Index%
   Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
   Count := A_Index
  }
  WinWaitActive, IrfanView - Window%Count%,, 3
 }
}
}
[color=red];[/color][color=yellow]ExitApp[/color]
;------------------------------------------------------------------------------;
; Marquee Magician ;
;------------------------------------------------------------------------------;
DisplayImages:

Posted

Ok guys. I gave the 3 above script edits a go and I'm still where I started. Even with these edits I still must hit ESC a second time to kill off Infranview before HS will regain focus.

BTW, I'm running Window 7 X64 and also the new version of HS.

VPUniverse_logo.png

Posted

For the old HyperSpin

Try this, I edited out alot of top secret "old HyperSpin user" stuff

-mame "esc" is already disabled

-ifranview "exit" is disabled, (highlited at the bottom of the script) leaving the last image played on the mini screen.

-HS Betabrite is in there but also disabled.

Change the paths to yours where needed.

I compiled and tested this on my vista system using the "OLD HYPERSPIN"

thank you very much ;). (with Hyperspin both fullscreen and windowed)

[Working] -for me

/** 
* HyperLaunch Version 1.04.5
* Autohotkey script by BadBoyBill  [email="[email protected]"][email protected][/email]
* CursorHide by Lazlo
* Additional add-ons by brian_hoffman
*
* If you are reading this and do not have autohotkey you can get it
* @ [url]http://www.autohotkey.com/download/[/url]
* 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 @ [url]http://www.hyperspin-fe.com/forum[/url]   
*
*                    :Supported emulators:
*    :System:                                :Emulators: 

*AAE....................................aae.exe
*Atari 800xl............................800winxl.exe
*Atari 2600.............................messpp.exe
*Atari 5200.............................messpp.exe
*Atari 7800.............................messpp.exe
*Atari Jaguar...........................pt.exe
*Atari Lynx.............................handy.exe
*Atari ST...............................steem.exe
*Colecovision...........................messppp
*Daphne.................................daphne.exe
*Favorites..............................mame.exe 
*Final Burn Alpha.......................fba.exe
*Future Pinball.........................Future Pinball.exe 
*Gameboy Advance........................visualboyadvance.exe  
*Gameboy................................visualboyadvance.exe
*Gameboy Color..........................visualboyadvance.exe  
*GameCube...............................dolphin.exe
*Intellivision..........................bliss.exe
*JukeBox................................silverjuke.exe
*MAME...................................mame.exe
*MSDos..................................dosbox.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
*PCEngine...............................pce.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 
*Sega Saturn............................ssf.exe 
*Sega Model2............................emulator.exe 
*Sega Naomi.............................demul.exe/nulldc.exe
*Sony Playstation.......................psxfin.exe
*Super Nintendo Entertainment System....zsnesw.exe
*Turbo Duo..............................pcefx.exe 
*TurboGrafx 16..........................pce/ootake/mednafen.exe
*Vectrex................................messpp.exe
*Visual Pinball.........................vpinball.exe 
*Zinc...................................zinc.exe

*
*  
*/

#SingleInstance force      ;Prevent multiple instances
#InstallKeybdHook
SetTitleMatchMode 2
;OnExit, ExitScript
;------------------------------------------------------------------------------;
;                                 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.*

;******************************MyLapTop Settings*****************************
daemontools     = "[color=palegreen]C:\Program Files\DAEMON Tools Pro\DTProAgent.exe[/color]"        ;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.*
betabright = "[color=palegreen]C:\Program Files\Beta Brite Prism Messaging Software\prismcom.exe[/color]" ; 
Change this to your BetaBrite console application ;location.
betabrightparams = "usb {AUTO}"
  ; Parameters go above.
;enablebetabright = true ; Should Betabright support be active? true or ;false here 
MarqueeMagician := "[color=palegreen]j:\HyperSpin\MarQuee Magician[/color]" ; Change this to ;your Marquee 
Magician application location.
EnableMarqueeMagician = true ; Should Marquee Magician support be active? true or ;false 
here
;***************************************************************************
VolumeControlUP = ~.            ;Enables the ability to control the volume in programs 
that are launched by hyperlaunch*
VolumeControlDown = ~,          ;Enables the ability to control the volume in programs 
that are launched by hyperlaunch
                               ;NOTE: the "~" denotes that the key retains its 
functionality*
/*
   *: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")
}
Hotkey, %VolumeControlUP%, VolumeUp
Hotkey, %VolumeControlDown%, VolumeDown
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                                  ;
;------------------------------------------------------------------------------;

;****** Added by Lashek - Force betabrite to update with hsbetabright.exe ******
;****** The loader will parse xml to get the "Description" and display it ******
;For support, see: [url]http://www.hyperspin-fe.com/forum/showthread.php?goto=newpost&t=4078[/url]
;if (enablebetabright)
;{
; RunWait, hsbetabrite.exe "%systemName%" "%romName%" %;betabright% %
betabrightparams%,, Hide UseErrorLevel
;}

;*************************************** Marquee Magician 
******************************************
;****************************** Added by Matt Mclemore AKA Tempest 
*********************************
;*********** Marquee Magician will display game specific graphics on a secondary monitor 
***********
;************ For support, see: [url]http://www.gameex.info/forums/index.php?showtopic=6911[/url] 
*************
if (EnableMarqueeMagician)
 Gosub, DisplayImages
;************************

;***************************************AAE************************************
if (systemName = "AAE" && executable = "aae.exe")
{

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

;***************************************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:
;**********************************************************
;***********************HSBETABRITE************************
;**********************************************************
if (enablebetabright)
{
RunWait, %betabright% usb {AUTO}HyperSpin  Believe    The Hype! {DIM GREEN}
{TIME}
}
;**********************************************************
;**********************************************************
;**********************************************************
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 ;put this ";" if marquee enabled
;}       ;put this ";" if marquee enabled
;***********************************************************
;**********************START MARQUEE MAGICIAN***************
;***********************************************************
if (EnableMarqueeMagician)
{
 SetWorkingDir, %MarqueeMagician%
 RunWait, i_view32.exe /killmesoftly
 IniRead, Template, MM.ini, HyperSpin, Template
 If Template <> Error
 {
  IniRead, Type, MM.ini, General, Type
  StringSplit, Filetype, Type ,|
  TemplateFolder = Templates\%Template%
  Loop, %TemplateFolder%\*, 2
  {
   IniRead, Image, MM.ini, HyperSpin, Image%A_Index%
   Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
   Count := A_Index
  }
  WinWaitActive, IrfanView - Window%Count%,, 3
 }
}
}
[color=yellow][color=red];[/color]ExitApp[/color]
;------------------------------------------------------------------------------;
; Marquee Magician ;
;------------------------------------------------------------------------------;
DisplayImages:
SetWorkingDir, %MarqueeMagician%
PrevDir := A_WorkingDir
;SetWorkingDir, %MarqueeMagician%
IfNotExist, MM.ini
{
MsgBox, You need to run the setup program first.
ExitApp
}
RunWait, i_view32.exe /killmesoftly
IniRead, TimesPlayed, MM.ini, %systemName%, %romName%, 0
TimesPlayed++
IniWrite, %TimesPlayed%, MM.ini, %systemName%, %romName%
IniRead, Template, MM.ini, %systemName%, Template
If Template <> Error
{
IniRead, Type, MM.ini, General, Type
StringSplit, Filetype, Type ,|
SetFormat, float, 0.0
EnvGet, NumCpu, NUMBER_OF_PROCESSORS
VarSetCapacity(Idletime,8,0)
Statistics = 0
TemplateFolder = Templates\%Template%
Loop, %TemplateFolder%\*, 2
{
 IniRead, FileFolder, MM.ini, %systemName%, FileFolder%A_Index%
 IniRead, Image, MM.ini, %systemName%, Image%A_Index%
 If FileFolder = 4
 {
  Statistics = 1
  IniRead, GuiColor, MM.ini, General, GuiColor, Silver
  IniRead, TextColor, MM.ini, General, TextColor, Black
  IniRead, ProgBackColor, MM.ini, General, ProgBackColor, Silver
  IniRead, ProgForeColor, MM.ini, General, ProgForeColor, Gray
  IniRead, X, %A_LoopFileLongPath%\i_view32.ini, WinPosition, XKoord
  IniRead, Y, %A_LoopFileLongPath%\i_view32.ini, WinPosition, YKoord
  IniRead, W, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Width
  IniRead, H, %A_LoopFileLongPath%\i_view32.ini, WinPosition, Height
  Loop, 7
    IniRead, Stats%A_Index%, MM.ini, %systemName%, Stats%A_Index%
  Gui, 6:default
  Gui, -Caption
  Gui, Color, %GuiColor%
  Gui, Font, s14 c%TextColor%
  If Stats1 = 1
     Gui, Add, Text, w300 h20, %systemName%
  If Stats2 = 1
     Gui, Add, Text, w300 h20, %romName%
  If Stats3 = 1
     Gui, Add, Text, w250 h20, TimesPlayed: %TimesPlayed%
;   If Stats4 = 1 ; FPS not available in HS
;      Continue
  If Stats5 = 1
    Gui, Add, Text, w250 h20 vPlayTimerText, Play Timer: %PlayTimer%
  If Stats6 = 1
  {
   Gui, Add, Text, vCpuText,  CPU Usage:                       00`%
   Gui, Add, Progress, w250 h20 c%ProgForeColor% background%ProgBackColor% vCpuProgress
  }
  If Stats7 = 1
  {
   Gui, Add, Text, vMemText, Memory Usage:                  00`%
   Gui, Add, Progress, w250 h20 c%ProgForeColor% background%ProgBackColor% vMemProgress
  }
  Gui, Show, x%X% y%Y% h%H% w%W%
  Continue
 }
 IF FileFolder = 2
 {
  IniRead, Backup, MM.ini, %systemName%, Backup%A_Index%
  Found = 0
  Image .= "\" . romName
  Loop, %FileType0%
  {
   Temp := Image . FileType%A_Index%
   IfExist, %Temp%
   {
    Image := Temp
    Found = 1
    Break
   }
  }
  If Found = 0
     Image := BackUp
 }
 Run, i_view32.exe %Image% /ini=%A_LoopFileLongPath% /title=Window%A_Index% /hide=15
 Count := A_Index
}
WinWaitActive, IrfanView - Window%Count%,, 3
StartTime := A_TickCount
If Statistics = 1
   SetTimer, Update, 250
}
SetWorkingDir, %PrevDir%
Gui, 2:default
Return
Update:   ; Update Gui for Marquee Magician
If Stats5 = 1
{
PlayTimer := (A_TickCount - StartTime)/1000
dt = 20000101000000
dt += PlayTimer, seconds
FormatTime, PlayTimer, %dt%, H:mm:ss
GuiControl, 6:, PlayTimerText, Play Timer: %PlayTimer%
}
If Stats6 = 1   ; Display Memory Usage
{
VarSetCapacity( memorystatus, 100 )
DllCall("kernel32.dll\GlobalMemoryStatus", "uint",&memorystatus)
mem := *( &memorystatus + 4 )    ; 0..100%
GuiControl, 6:, MemProgress, %Mem%
GuiControl, 6:, MemText, Memory Usage:               %Mem%`%
}
If Stats7 = 1   ; Display CPU Usage
{
IdleTime0 := IdleTime, Tick0 := Tick
DllCall("GetSystemTimes", UInt64P,IdleTime, Int,0, Int,0)
CPU := (100 - .01*(IdleTime0 - IdleTime)/(Tick0 - Tick:=A_TickCount)/NumCpu)
GuiControl, 6:, CpuProgress, %CPU%
GuiControl, 6:, CpuText, CPU Usage:                     %CPU%`%
}
Return
;***********************END MARQUEE MAGICIAN*****************
;************************************************************
Return
;OnExit, ExitScript ;put this ";" if marquee enabled

;------------------------------------------------------------------------------;
;                                 Volume                              ;
;------------------------------------------------------------------------------;
VolumeUp:
Send {Volume_up 1}
return
VolumeDown:
Send {Volume_Down 1}
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 = \%RomName%.%A_LoopField% 
        romFound = true
        break       
        }else{
        romFound = false
        }
        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

If this doesnt work,

The problem must be either in the new HS or win7 (is that what your using?) or a screen res issue.

On maybe an unrelated note,

For what its worth my mini, is screen #3 in display properties and I only have two screens. Dont know why or how to change that yet or if its even necessary. It might be because its usb (display-link) and not the standard video out type monitor.

Posted
Ok guys. I gave the 3 above script edits a go and I'm still where I started. Even with these edits I still must hit ESC a second time to kill off Infranview before HS will regain focus.

BTW, I'm running Window 7 X64 and also the new version of HS.

Have you tried setting up MM for other systems inc Hyperspin... when I attempted to setup MM so that it displays art when hyperspin is focused it caused the same symptoms you are having. Perhaps if you have not already and relevant, backup all of MM ini files and start again, configuring just for Mame.

Posted

Also another issue in addition to what Tezz81 states, when you configure MM, are you setting up the windows on the large (main) screen or the mini?

If you havent, set them up on the mini, I seem to remember an issue with that.

There is a problem with setting the windows up on the mini screen and its with Ifranview.

For 1 or 2 windows side by side there isnt a problem.

If you try to stack windows, one above the other, the windows will snap back to Ifranview's supported size (300 vertical rezz I think) while in the MM setup.

So if your trying to do three different windows like shown on the Marquee Magician site, they wont display properly and may be causing your problem.

A work around is to configure your windows on the large screen (vertical rezz isnt as much of a factor) and then make composite images in the MM setup utility. (for mame it takes up considerable disk space and time to make them but it is automatic)

I have other systems other than mame working with it also.

Posted
Also another issue in addition to what Tezz81 states, when you configure MM, are you setting up the windows on the large (main) screen or the mini?

If you havent, set them up on the mini. I seem to remember an issue with that.

There is a problem with setting the windows up on the mini screen and its with Ifranview.

For 1 or 2 windows side by side there isnt a problem.

If you try to stack windows, one above the other, the windows will snap back to Ifranview's supported size (300 vertical rezz I think) while in the MM setup.

So if your trying to do three different windows like shown on the Marquee Magician site, they wont display properly and may be causing your problem.

A work around is to configure your windows on the large screen (vertical rezz isnt as much of a factor) and then make composite images in the MM setup utility. (for mame it takes up considerable disk space and time to make them but it is automatic)

I have other systems other than mame working with it also.

Yes! It is all coming back now... I think at one stage I even had to disable one of the displays, setup MM and then trick it to display on the secondary.

Thats the trouble when facing multiple problems and you are like me and do not document what you have done, and just chuck multiple possible solutions at the problem.... you don't actually know what fixed it! My point Dazz, is "mine is working just how you want yours to, so don't give up"!

Posted

Honestly, right now I'm only setting up 1 window layouts. I have the window pulling images from my wheels folder. It was configured on my mini-monitor. So far MM is doing it's thing. I launch a game in MAME, the wheel image displays on the mini. The issue happens when exiting MAME, I have to hit ESC to get out of MAME and then ESC again removes the MM image on the mini and then only will HS regain focus.

VPUniverse_logo.png

Posted

Don't sweat it too much Dazz. I just posted a new version at GameEx. I will wait a bit to see if there are any complaints, and then post here. The new version is Command line friendly, so you should be able to call it easily from HyperLaunch. If your in a rush, my post is here. http://www.gameex.info/forums/index.php?showtopic=6911&st=20&gopid=61016&

I'm sure one of these guys can help you get it going, there a few talented scripters here.

Edit: The new version supports HiToText, and has alot of features not included in what you guys have been using. $5 says somebody here will have it going in no time. Here's a direct link to the down load: http://www.gameex.info/forums/index.php?app=core&module=attach&section=attach&attach_id=5303

I prefer to keep it there, so I can see how many people are using it. It's good for my ego. Somebody put CFG Magician on the torrent sites. I really wish that hadn't happened... I'm not blaming anybody here. Shit, here's a copy of my post. What else can I do for you? LOL

Marquee Magician 2.0

What's New?

1. Added a new set of commands to 'Nudge' windows. You can make a window larger, smaller, and move the image 1 pixel at a time to fine tune your layout.

2. Added the ability to edit an existing system so that you can make adjustments. If you edit a system, it can only be saved using the current template, and system names.

3. Marquee Magician will now change the resolution for you for emulators that won't run at your desktop resolution. Previously, Marquee Magician would display the images, then the emulator would start and change the resolution, which would move the images on the second monitor. This should fix that problem. Use {Ctrl-R} and enter the resolution for your emulator. All 4 values are required.

4. Once you copy an window, you can paste it multiple times without having to copy the original window again.

5. If you hover on an image, the path to the image is displayed in the upper left hand corner of the window. This is handy for windows with folders.

6. Added {Ctrl - Z} to undo. If you accidentally hit the wrong keys, Undo will put everything back the way it was.

7. Many improvments to enhance reliability.

8. Marquee Magician is now command line only.

Usage: C:\Users\Matt\Desktop\Marquee Magician\Launch MM v2.0.exe "System" "[Rom]" where System is the name of your template, which can be found in the MM.ini file between []. EG. [Nintendo 64]

Example: For Mame, Using 'Advanced Mame Settings (2) / Run on Launch' I have: "C:\My Marquee Magician\Launch MM.exe" "MAME Games" "[Rom]"

and in the 'Run on Exit' I have: "C:\My Marquee Magician\Launch MM.exe" "GameEx"

I only have one parameter in the 'Run on exit' because I only display static images while in GameEx. You can also use "C:\My Marquee Magician\Launch MM.exe" "Kill" to clear the screen, and not display additional images. Marquee Magician will automatically close, and clear the screen upon exit of GameEx.

I have included my templates, MM.ini, and GameEx.ini for you to see how I set it up. Just so nobody gets confused the setup program is now called 'Template Creator'

Posted

Awesome work Tempest. I think being command line is the way to go and should make this much easier to implement.

VPUniverse_logo.png

  • 2 years later...
Posted

What ever came of this project? I was orginally looking for a post that bbb had made about a secondary monitor and having a wheel img load there as the marqee, I would still like to find that thread, but this is pretty much what i want to do. any information would be great, on how do this, or if there is a new program to do it. I can also start a new thread if this one is nerco.

Archived

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

×
×
  • Create New...