djvj icon

bgb

djvj | PRO | 01/24/16 05:13:55 AM UTC | 0 ⭐ | 1013 👁️ | Never ⏰ | []
text |

8.06 KB

|

None

|

0 👍

/

0 👎

MEmu = Bgb
MEmuV =  v1.4.3
MURL = http://bgb.bircd.org/
MAuthor = djvj,ghutch92
MVersion = 2.0.6
MCRC = B399DD36
iCRC = 6B31DD58
mId = 635637123510883144
MSystem = "Nintendo Game Boy","Nintendo Game Boy Color"
;----------------------------------------------------------------------------
; Notes:
; Place the "[BIOS] Nintendo Game Boy Color Boot ROM (World).gbc" rom in the bgb dir so you get correct colors
; Run the emu, right click and goto Options->System->GBC Bootrom and paste in the filename of the GBC boot rom
; Don't forget to check the "bootroms enabled" box
; Module will automatically delete the width/height settings so BGB sizes correctly to your monitor when going fullscreen.
;----------------------------------------------------------------------------
StartModule()
BezelGUI()
 settingsFile := modulePath . "\" . systemName . ".ini"
If !FileExist(settingsFile)
	settingsFile := modulePath . "\" . moduleName . ".ini"
 SplitScreen2PlayersMode := IniReadCheck(settingsFile, "Settings", "SplitScreen_2_Players","Vertical",,1) ;horizontal or vertical
SplitScreen3PlayersMode := IniReadCheck(settingsFile, "Settings", "SplitScreen_3_Players","P1top",,1) ; For Player1 screen to be on left: P1left. For Player1 screen to be on top: P1top. For Player1 screen to be on bottom: P1bottom. For Player1 screen to be on right: P1right.
 Fullscreen := IniReadCheck(settingsFile, "Settings", "Fullscreen","true",,1)
SGBColorsEnabled := IniReadCheck(settingsFile, "Settings", "SGB_Colors_Enabled","false",,1) ; if enabled some game boy games will have color instead of being black and white
SGBBorderEnabled := IniReadCheck(settingsFile, "Settings", "SGB_Border_Enabled","false",,1) ; if enabled some game boy games will have the border that the SGB used for tv screens
multiplayerMenu := IniReadCheck(settingsFile, "Settings|" . romName, "Multiplayer_Menu","false",,1)
 If (multiplayerMenu = "true")
	SelectedNumberofPlayers := NumberOfPlayersSelectionMenu(4)
 FadeInStart()
 If (SelectedNumberofPlayers > 1)
	BezelStart(SelectedNumberofPlayers)	
Else
	BezelStart()
 ; Using commandline -setting name=value to set emulator options
 ; This disables Esc from bringing up the debug window (bgb's default behavior). If it's on, pressing Esc brings up debug, rather then closing the emu
parameters := " -setting DebugEsc=0"
;disables or enables Super Game Boy Colors for the Game Boy (DMG)
parameters := (SGBColorsEnabled = "true") ? (parameters . " -setting SGBnocolors=0") : (parameters . " -setting SGBnocolors=1")
;disables or enables Super Game Boy Border for the Game Boy (DMG)
parameters := (SGBBorderEnabled = "true") ? (parameters . " -setting Border=1") : (parameters . " -setting Border=0")
 hideEmuObj := Object("ahk_class OS95",1)	; Hide_Emu will hide these windows. 0 = will never unhide, 1 = will unhide later
7z(romPath, romName, romExtension, sevenZExtractPath)
 HideEmuStart()
If (SelectedNumberofPlayers = 1 || multiplayerMenu = "false") {
	If (Fullscreen = "true") {
		; Width/Height values must be blank so BGB sizes correctly to the monitor when going fullscreen because it has no proper aspect ratio control.
		bgbIniFile := emuPath . "\bgb.ini"
		bgbIni := LoadProperties(bgbIniFile)	; load the ini into memory
		WriteProperty(bgbIni,"Width","")	; delete value
		WriteProperty(bgbIni,"Height","")
		SaveProperties(bgbIniFile,bgbIni)	; save changes
	}
 	parameters .= " -setting Windowmode=1"
	Run(executable . parameters . " """ . romPath . "\" . romName . romExtension . """",emuPath)
	WinWait("bgb ahk_class Tfgb")
	WinWaitActive("bgb ahk_class Tfgb")
	If (Fullscreen = "true") {
		Log("Module - Creating black background to simulate a fullscreen look.")
		MaximizeWindow("bgb ahk_class Tfgb")	; bgb always stretches when telling it to go fullscreen so module handles it instead
		WinSet, AlwaysOnTop, On, bgb ahk_class Tfgb	; forces emu to always remain above the background
		Gui bgbGUI: -AlwaysOnTop -Caption +ToolWindow
		Gui bgbGUI: Color, Black
		Gui bgbGUI: Show, x0 y0 h%A_ScreenHeight% w%A_ScreenWidth%
		WinActivate % "bgb ahk_class Tfgb"
	}
} Else {
	;screen positions
	If (SelectedNumberofPlayers = 2)
		If (SplitScreen2PlayersMode = "Vertical")
			X1 := 0 , Y1 := 0 ,	W1 := A_ScreenWidth//2 , H1 := A_ScreenHeight , X2 := A_ScreenWidth//2 , Y2 := 0 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight
		Else
			X1 := 0 , Y1 := 0 ,	W1 := A_ScreenWidth , H1 := A_ScreenHeight//2 , X2 := 0 , Y2 := A_ScreenHeight//2 ,	W2 := A_ScreenWidth , H2 := A_ScreenHeight//2
	Else If (SelectedNumberofPlayers = 3)
		If (SplitScreen3PlayersMode = "P1left")
			X1 := 0 , Y1 := 0 ,	W1 := A_ScreenWidth//2 , H1 := A_ScreenHeight , X2 := A_ScreenWidth//2 , Y2 := 0 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight//2 , X3 := A_ScreenWidth//2 , Y3 := A_ScreenHeight//2 ,	W3 := A_ScreenWidth//2 , H3 := A_ScreenHeight//2
		Else If (SplitScreen3PlayersMode = "P1bottom")
			X1 := 0 , Y1 := A_ScreenHeight//2 ,	W1 := A_ScreenWidth , H1 := A_ScreenHeight//2 , X2 := 0 , Y2 := 0 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight//2 , X3 := A_ScreenWidth//2 , Y3 := 0 ,	W3 := A_ScreenWidth//2 , H3 := A_ScreenHeight//2
		Else If (SplitScreen3PlayersMode = "P1right")
			X1 := A_ScreenWidth//2 , Y1 := 0 ,	W1 := A_ScreenWidth//2 , H1 := A_ScreenHeight ,	X2 := 0 , Y2 := 0 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight//2 , X3 := 0 , Y3 := A_ScreenHeight//2 ,	W3 := A_ScreenWidth//2 , H3 := A_ScreenHeight//2
		Else	; top
			X1 := 0 , Y1 := 0 ,	W1 := A_ScreenWidth , H1 := A_ScreenHeight//2, X2 := 0 , Y2 := A_ScreenHeight//2 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight//2, X3 := A_ScreenWidth//2 , Y3 := A_ScreenHeight//2 , W3 := A_ScreenWidth//2 , H3 := A_ScreenHeight//2
	Else
		X1 := 0 , Y1 := 0 ,	W1 := A_ScreenWidth//2 , H1 := A_ScreenHeight//2 , X2 := A_ScreenWidth//2 , Y2 := 0 ,	W2 := A_ScreenWidth//2 , H2 := A_ScreenHeight//2 , X3 := 0 , Y3 := A_ScreenHeight//2 ,	W3 := A_ScreenWidth//2 , H3 := A_ScreenHeight//2 , X4 := A_ScreenWidth//2 , Y4 := A_ScreenHeight//2 ,	W4 := A_ScreenWidth//2 , H4 := A_ScreenHeight//2
 	;removing fullscreen ## only app with focus receives input. This means player 1 can't control player 2's game. ## Turning on remotejoy so player 2 can actually play
	parameters .= " -setting Windowmode=1 -setting JoyFocus=1 -setting RemoteJoy=1"
 	Address := "127.0.0.1"		;local address
	Port    := 8765				;default port
 	Loop % SelectedNumberofPlayers
	{
 		parameters .= " " . (If (A_Index = 1) ? "-listen" : "-connect") . " " . address . ":" . port
 		multi_romName := gamesSelectedArray[A_Index]
		If !multi_romName
			multi_romName := romName
 		Run(executable . parameters . " """ . romPath . "\" . multi_romName . romExtension . """",emuPath,, Screen%A_Index%PID)
		WinWait("ahk_pid " . Screen%A_Index%PID)
		WinGet, Screen%A_Index%ID, ID, % "ahk_pid " . Screen%A_Index%PID
		If Fullscreen = true
		{	WinSet, Style, -0xC00000, % "ahk_id " . Screen%A_Index%ID
			ToggleMenu(Screen%A_Index%ID)
			WinSet, Style, -0xC40000, % "ahk_id " . Screen%A_Index%ID
			currentScreen := a_index
			WinMove,  % "ahk_id " . Screen%currentScreen%ID, , % X%currentScreen%, % Y%currentScreen%, % W%currentScreen%, % H%currentScreen%
			;check If window moved
			timeout := A_TickCount
			Loop
			{	WinGetPos, X, Y, W, H, % "ahk_id " . Screen%currentScreen%ID
				If (X=X%currentScreen%) and (Y=Y%currentScreen%) and (W=W%currentScreen%) and (H=H%currentScreen%)
					Break
				If (timeout<A_TickCount-2000)
					Break
				Sleep, 50
				WinMove, % "ahk_id " . Screen%currentScreen%ID, , % X%currentScreen%, % Y%currentScreen%, % W%currentScreen%, % H%currentScreen%
			}
		}
		Sleep, 50
	}	
}	
 BezelDraw()
HideEmuEnd()
FadeInExit()
Process("WaitClose", executable)
 If (fullscreen = "true")
{	Gui bgbGUI: Destroy
	Log("Module - Destroyed black gui background.")
}
 7zCleanUp()
BezelExit()
FadeOutExit()
ExitModule()
  CloseProcess:
	FadeOutStart()
	If (SelectedNumberofPlayers > 1) {
		Loop, %SelectedNumberofPlayers%
		{	WinClose("ahk_id " . Screen%a_index%ID)
			WinWaitClose("ahk_id " . Screen%a_index%ID)
		}
	} Else
		WinClose("ahk_class Tfgb")
Return

Comments