MEmu = BizHawk
MEmuV = v1.9.4
MURL = http://tasvideos.org/Bizhawk.html
MAuthor = djvj
MVersion = 2.0.6
MCRC = 573A594F
iCRC = 12C7D203
MID = 635146140449648195
MSystem = "Atari 2600","Atari 7800","Atari Lynx","Bandai Wonderswan","Bandai Wonderswan Color","ColecoVision","NEC PC Engine","NEC PC Engine-CD","NEC SuperGrafx","NEC TurboGrafx-16","NEC TurboGrafx-CD","Nintendo 64","Nintendo Entertainment System","Nintendo Famicom","Nintendo Famicom Disk System","Nintendo Game Boy","Nintendo Game Boy Advance","Nintendo Game Boy Color","Nintendo Super Game Boy","Samsung Gam Boy","Sega CD","Sega Game Gear","Sega Genesis","Sega SG-1000","Sega Master System","Sega Saturn","Super Nintendo Entertainment System","Texas Instruments TI-83"
;----------------------------------------------------------------------------
; Notes:
; When not using bezels, in order for Fullscreen to resume from Pause, Bizhawk must be set to its default fullscreen key of Alt+Enter
; Available CLI commands can be found @ http://tasvideos.org/Bizhawk/CommandLine.html
; Many systems require the firmware to exist in the emu's Firmware subfolder. If one of these system's cannot find the firmware, Bizhawk will error out telling you so.
;----------------------------------------------------------------------------
StartModule()
BezelGUI()
FadeInStart()
; This object controls how the module reacts to different systems. BizHawk can play a lot of systems, and each system changes the window title. Without knowing this title, the module doesn't know when the emu finished loading
mType := Object("Atari 2600","Atari 2600","Atari 7800","Atari 7800","Atari Lynx","Lynx","Bandai Wonderswan","WonderSwan","Bandai Wonderswan Color","WonderSwan","ColecoVision","ColecoVision","NEC PC Engine","TurboGrafx-16","NEC PC Engine-CD","TurboGrafx-16 (CD)","NEC SuperGrafx","SuperGrafx","NEC TurboGrafx-16","TurboGrafx-16","NEC TurboGrafx-CD","TurboGrafx-16 (CD)","Nintendo 64","Nintendo 64","Nintendo Entertainment System","NES","Nintendo Famicom","NES","Nintendo Famicom Disk System","NES","Nintendo Game Boy","Gameboy","Nintendo Game Boy Advance","Gameboy Advance","Nintendo Game Boy Color","Gameboy Color","Nintendo Super Game Boy","Gameboy","Samsung Gam Boy","Sega Master System","Sega CD","Genesis","Sega Game Gear","Game Gear","Sega Genesis","Genesis","Sega Master System","Sega Master System","Sega Mega Drive","Genesis","Sega Saturn","Saturn","Sega SG-1000","SG-1000","Super Nintendo Entertainment System","SNES","Texas Instruments TI-83","TI-83")
ident := mType[systemName] ; search object for the systemName identifier MESS uses
If !ident
ScriptError("Your systemName is: " . systemName . "`nIt is not one of the known supported systems for this " . moduleName . " module")
hideEmuObj := Object(ident,1) ; Hide_Emu will hide these windows. 0 = will never unhide, 1 = will unhide later
7z(romPath, romName, romExtension, sevenZExtractPath)
If (romExtension != ".cue" && (systemName = "Sega Saturn" || systemName = "NEC PC Engine-CD" || systemName = "NEC PC Engine-CD"))
ScriptError("You are trying to send a """ . romExtension . """ to " . MEmu . " when it only supports ""cue"" extensions")
defaultsgbMode := If SystemName = "Nintendo Super Game Boy" ? "true" : "false"
settingsFile := modulePath . "\" . moduleName . ".ini"
fullscreen := IniReadCheck(settingsFile, "Settings", "Fullscreen","true",,1)
bezelTopOffset := IniReadCheck(settingsFile, "Settings", "bezelTopOffset",54,,1)
bezelBottomOffset := IniReadCheck(settingsFile, "Settings", "bezelBottomOffset",8,,1)
bezelLeftOffset := IniReadCheck(settingsFile, "Settings", "bezelLeftOffset",8,,1)
bezelRightOffset := IniReadCheck(settingsFile, "Settings", "bezelRightOffset",8,,1)
sgbMode := IniReadCheck(settingsFile, systemName . "|" . romName, "SuperGameBoyMode",defaultsgbMode,,1)
BarcodeReaderHotkey := IniReadCheck(settingsFile, systemName, "BarcodeReaderHotkey","",,1)
If (ident = "NES" && BarcodeReaderHotkey) {
BarcodeReaderHotkey := xHotKeyVarEdit(BarcodeReaderHotkey,"BarcodeReaderHotkey","~","Add")
xHotKeywrapper(BarcodeReaderHotkey,"BarcodeReader")
}
BezelStart()
bizFullscreen := If fullscreen = "true" ? " --fullscreen" : "" ;" --chromeless" ; chromeless makes it impossible for ahk to detect a title from the emu and therefore cannot be used
bizhawkFile := CheckFile(emuPath . "\config.ini")
bizHawkCfg := LoadProperties(bizhawkFile)
currentDisplayStatusBar := ReadProperty(bizHawkCfg,"""DisplayStatusBar""",":")
If (bezelEnabled = "true" && currentDisplayStatusBar = "true,") {
WriteProperty(bizHawkCfg,"""DisplayStatusBar""","false,",,,":") ; turn status bar off, this only covers the bottom bar though
saveBizhawkCfg := 1
}
If (systemName = "Nintendo Super Game Boy" || systemName = "Nintendo Game Boy")
{ currentSGBMode := ReadProperty(bizHawkCfg,"""GB_AsSGB""",":")
If (sgbMode != "true" And currentSGBMode = "true,") {
WriteProperty(bizHawkCfg,"""GB_AsSGB""","false,",,,":") ; turn SGBMode off
saveBizhawkCfg := 1
} Else If (sgbMode = "true" And currentSGBMode = "false,") {
WriteProperty(bizHawkCfg,"""GB_AsSGB""","true,",,,":") ; turn SGBMode on
saveBizhawkCfg := 1
}
If (sgbMode = "true") ; When SGB is enabled, BizHawk uses "SNES" in the win title instead of "Game Boy"
ident := "SNES"
}
If saveBizhawkCfg
SaveProperties(bizhawkFile,bizHawkCfg)
HideEmuStart()
Run(executable . " """ . romPath . "\" . romName . romExtension . """" . bizFullscreen, emuPath)
WinWait(ident)
If (systemName := "Nintendo 64") ; for some reason this system doesn't activate correctly and causes Fade to get hung up, forcing activation prevents this
WinActivate, %ident%
WinWaitActive(ident)
BezelDraw()
HideEmuEnd()
FadeInExit()
Process("WaitClose", executable)
7zCleanUp()
BezelExit()
FadeOutExit()
ExitModule()
SaveBizHawkFile(text,file) {
FileDelete, %file%
FileAppend, %text%, %file%
}
BarcodeReader:
Log("Module - Enabling Barcode Reader Dialog")
;WinMenuSelectItem, %ident%,, NES, Barcode Reader ;This doesn't seem to work
SendCommand("{Alt Down}n{Alt Up}b")
Return
BezelLabel:
disableHideTitleBar = true
disableHideToggleMenu = true
disableHideBorder = true
Return
RestoreEmu:
; WinMenuSelectItem does not work and & Winspector Spy msgs do not give any sign of WM_COMMAND used in this emu
WinSet, Transparent, On, %ident% ; helps eliminate flashing of emu window when resuming, not 100% of the time though, but good enough
WinActivate, %ident%
If (Fullscreen = "true")
{ Send, !{Enter}
Sleep, 100
Send, !{Enter}
}
WinSet, Transparent, Off, %ident%
Return
CloseProcess:
FadeOutStart()
WinClose(ident)
Return
Comments