├── B2SWindowPunch ├── B2SWindowPunch │ ├── B2SWindowPunchCMD.ico │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── B2SWindowPunch.csproj │ └── app.manifest └── B2SWindowPunch.sln ├── b2sbackglassserver ├── b2sbackglassserver │ ├── B2SBackglassServer.ico │ ├── Resources │ │ ├── EMReel.wav │ │ └── camera1.wav │ ├── B2SBackglassServerEXE.ico │ ├── Plugin │ │ ├── IDirectPluginFrontEnd.vb │ │ ├── IDirectPlugin.vb │ │ ├── PluginWindow.vb │ │ └── PluginHost.vb │ ├── My Project │ │ ├── Settings.settings │ │ ├── Application.Designer.vb │ │ ├── Application.myapp │ │ ├── AssemblyInfo.vb │ │ ├── Settings.Designer.vb │ │ ├── app.manifest │ │ └── Resources.Designer.vb │ ├── Classes │ │ ├── B2SBackglassServerEXE.vb │ │ ├── B2SLED.vb │ │ ├── B2SVersionInfo.vb │ │ ├── B2SCollectData.vb │ │ ├── B2SStatistics.vb │ │ └── B2SPlayer.vb │ ├── Logging │ │ ├── Log.vb │ │ └── Statistics.vb │ ├── app.config │ ├── Controls │ │ ├── B2SBaseBox.vb │ │ └── B2SPictureBox.vb │ ├── Forms │ │ ├── Background.vb │ │ ├── Background.Designer.vb │ │ ├── formMode.vb │ │ ├── formDMD.Designer.vb │ │ ├── formBackglass.Designer.vb │ │ ├── formDMD.vb │ │ └── formMode.Designer.vb │ ├── B2SInit.cmd │ ├── moduleImageExtensions.vb │ └── app.manifest └── B2SBackglassServer.sln ├── b2s_screenresidentifier ├── b2s_screenresidentifier │ ├── B2SScreenresidentifier_64.ico │ ├── My Project │ │ ├── Settings.settings │ │ ├── Application.Designer.vb │ │ ├── Application.myapp │ │ ├── AssemblyInfo.vb │ │ ├── Settings.Designer.vb │ │ ├── app.manifest │ │ └── Resources.Designer.vb │ ├── app.config │ ├── B2S_ScreenResIdentifier.vb │ └── formDMD.resx └── B2S_ScreenResIdentifier.sln ├── B2S_SetUp ├── App.config ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── B2S_SetUp.sln └── B2S_SetUp.csproj ├── b2sbackglassserverregisterapp ├── b2sbackglassserverregisterapp │ ├── B2SBackglassRegister_64.ico │ ├── My Project │ │ ├── Settings.settings │ │ ├── Application.myapp │ │ ├── AssemblyInfo.vb │ │ ├── Application.Designer.vb │ │ ├── Resources.Designer.vb │ │ ├── Settings.Designer.vb │ │ ├── app.manifest │ │ └── Resources.resx │ ├── app.config │ └── formBackglassServerRegApp.Designer.vb ├── ScreenResTemplates.cmd └── B2SBackglassServerRegisterApp.sln ├── leds ├── BetterLed │ ├── My Project │ │ ├── Settings.settings │ │ ├── Application.myapp │ │ ├── AssemblyInfo.vb │ │ ├── Application.Designer.vb │ │ ├── Resources.Designer.vb │ │ ├── Settings.Designer.vb │ │ └── Resources.resx │ ├── app.config │ └── BetterLed.sln └── dream7segments │ ├── My Project │ ├── Settings.settings │ ├── Application.Designer.vb │ ├── Application.myapp │ ├── AssemblyInfo.vb │ ├── Resources.Designer.vb │ ├── Settings.Designer.vb │ └── Resources.resx │ ├── Dream7Display.sln │ └── Dream7Display.vbproj ├── .github ├── ISSUE_TEMPLATE │ ├── feature-request.md │ └── bug-report.md └── workflows │ └── prerelease.yml ├── Plugins.txt ├── ScreenResTemplates └── ScreenResTemplates.txt ├── B2STools ├── directb2sReelSoundsONOFF.cmd ├── B2SRandom.cmd ├── B2STools.txt ├── directb2sReelSoundsONOFF.xsl └── DmdDeviceIniScale.cmd ├── ScreenResTemplate.txt ├── license.txt ├── README.md └── WhatIsWhat.txt /B2SWindowPunch/B2SWindowPunch/B2SWindowPunchCMD.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/B2SWindowPunch/B2SWindowPunch/B2SWindowPunchCMD.ico -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/B2SBackglassServer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/B2SBackglassServer.ico -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Resources/EMReel.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/Resources/EMReel.wav -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Resources/camera1.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/Resources/camera1.wav -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/B2SBackglassServerEXE.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserver/b2sbackglassserver/B2SBackglassServerEXE.ico -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/B2SScreenresidentifier_64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2s_screenresidentifier/b2s_screenresidentifier/B2SScreenresidentifier_64.ico -------------------------------------------------------------------------------- /B2S_SetUp/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/B2SBackglassRegister_64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpinball/b2s-backglass/HEAD/b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/B2SBackglassRegister_64.ico -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Plugin/IDirectPluginFrontEnd.vb: -------------------------------------------------------------------------------- 1 | Public Interface IDirectPluginFrontend 2 | Inherits IDirectPlugin 3 | 4 | 5 | Sub PluginShowFrontend() 6 | 7 | 8 | 9 | End Interface 10 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/ScreenResTemplates.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | set "restemplate=%~1" 3 | set B2SResFileEndingOverride=.res 4 | for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a 5 | 6 | set "resfile=%~dpn2%B2SResFileEndingOverride%" 7 | 8 | copy "%~dp0%restemplate%" "%resfile%" -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /B2S_SetUp/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace B2S_SetUp 5 | { 6 | static class Program 7 | { 8 | [STAThread] 9 | static void Main(string[] args) 10 | { 11 | Application.EnableVisualStyles(); 12 | Application.SetCompatibleTextRenderingDefault(false); 13 | Application.Run(new Form1(args)); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SBackglassServerEXE.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Drawing 3 | Imports System.IO 4 | Imports System.Security.Principal 5 | Imports System.Windows.Forms 6 | Imports Microsoft.Win32 7 | 8 | Module B2SBackglassServerEXE 9 | Sub Main() 10 | Application.EnableVisualStyles() 11 | Application.SetCompatibleTextRenderingDefault(False) 12 | Application.Run(New formBackglass()) 13 | End Sub 14 | End Module -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | frmBetterLed 5 | false 6 | 0 7 | true 8 | 0 9 | true 10 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | false 5 | 0 6 | true 7 | 0 8 | 1 9 | true 10 | 11 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | formBackglassServerRegApp 5 | false 6 | 0 7 | true 8 | 0 9 | true 10 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | false 5 | 0 6 | true 7 | 0 8 | 1 9 | true 10 | 0 11 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/Application.myapp: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | formPlayfield 5 | false 6 | 0 7 | false 8 | 0 9 | 0 10 | true 11 | false 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Suggest an idea for B2S Server 4 | title: '' 5 | labels: feature 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /B2S_SetUp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | [assembly: AssemblyTitle("B2S_SetUp")] 5 | [assembly: AssemblyDescription("B2S ScreenRes Editor")] 6 | [assembly: AssemblyConfiguration("")] 7 | [assembly: AssemblyCompany("Visual Pinball")] 8 | [assembly: AssemblyProduct("B2S_SetUp")] 9 | [assembly: AssemblyCopyright("Copyright (c) 2025")] 10 | [assembly: AssemblyTrademark("A Herweh & B2S Team production")] 11 | [assembly: AssemblyCulture("")] 12 | 13 | [assembly: ComVisible(false)] 14 | 15 | [assembly: Guid("a5b5c7e7-7c5d-4c8b-8c2a-5c7b2c0d0c0d")] 16 | 17 | [assembly: AssemblyVersion("6.0.0")] 18 | [assembly: AssemblyFileVersion("6.0.0")] 19 | [assembly: AssemblyInformationalVersion("6.0.0")] -------------------------------------------------------------------------------- /Plugins.txt: -------------------------------------------------------------------------------- 1 | ___ ___ ___ ___ _ _ 2 | | _ )_ ) __| | _ \ |_ _ __ _(_)_ _ ___ 3 | | _ \/ /\__ \ | _/ | || / _` | | ' \(_-< 4 | |___/___|___/ |_| |_|\_,_\__, |_|_||_/__/ 5 | |___/ 6 | 7 | There is now two folders for Plugins: one for x86 and one for x64 binaries. 8 | 9 | To activate DOF as a plugin: 10 | 11 | * Right-click in a blank area in the Plugins folder window 12 | * Click New > Shortcut in the context menu 13 | * Type the full path to your Direct Output folder into the box (e.g., C:\DirectOutput) 14 | * Click the Next button 15 | * Type DirectOutput for the name 16 | * Click the Finish button 17 | * Repeat the same for Plugins64 18 | 19 | Follow a similar procedure to activate other plugins like PinUp -------------------------------------------------------------------------------- /ScreenResTemplates/ScreenResTemplates.txt: -------------------------------------------------------------------------------- 1 | ___ ___ ___ _____ _ _ 2 | | _ )_ ) __| |_ _|__ _ __ _ __| |__ _| |_ ___ ___ 3 | | _ \/ /\__ \ | |/ -_) ' \| '_ \ / _` | _/ -_|_-< 4 | |___/___|___/ |_|\___|_|_|_| .__/_\__,_|\__\___/__/ 5 | |_| 6 | 7 | The `B2SBackglassServerRegisterApp.exe` now also "registers" right click menues for .vpx files (if wanted): 8 | 9 | When you select a tablename.vpx file, press right mouse and select `B2S Server copy Screenres template` 10 | 11 | -> each *.res file present in this folder will be available in the menu. The file.res file selected will be copied to tablename.res next to your tablename.vpx file. 12 | 13 | **You will have to add your own res files of preference to this folder** 14 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SLED.vb: -------------------------------------------------------------------------------- 1 | Imports System.Drawing 2 | 3 | Public Class B2SLED 4 | 5 | Public Enum eLEDType 6 | Undefined = 0 7 | LED8 = 1 8 | LED10 = 2 9 | LED14 = 3 10 | LED16 = 4 11 | End Enum 12 | 13 | #Region "constructor and startup" 14 | 15 | Public Sub New() 16 | ' nothing to do 17 | End Sub 18 | 19 | #End Region 20 | 21 | #Region "standard colors" 22 | 23 | Private ReadOnly Property LitLEDSegmentStandardColor() As Color 24 | Get 25 | Return Color.OrangeRed 26 | End Get 27 | End Property 28 | Private ReadOnly Property DarkLEDSegmentStandardColor() As Color 29 | Get 30 | Return Color.FromArgb(39, 34, 31) 31 | End Get 32 | End Property 33 | 34 | #End Region 35 | 36 | End Class -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SVersionInfo.vb: -------------------------------------------------------------------------------- 1 | ' Add VersionInfo class 2 | 3 | Public Class B2SVersionInfo 4 | Public Const B2S_VERSION_MAJOR = "2" 5 | Public Const B2S_VERSION_MINOR = "1" 6 | Public Const B2S_VERSION_REVISION = "5" 7 | Public Const B2S_VERSION_BUILD = "999" 8 | Public Const B2S_VERSION_HASH = "nonset" 9 | ' 2.5.0 10 | Public Const B2S_VERSION_STRING = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." & B2S_VERSION_REVISION 11 | ' 2.5.0.999 12 | Public Const B2S_BUILD_STRING = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." & 13 | B2S_VERSION_REVISION & "." & B2S_VERSION_BUILD 14 | ' 2.5.0.999-nonset Git hash 15 | Public Const B2S_BUILD_STRING_HASH = B2S_VERSION_MAJOR & "." & B2S_VERSION_MINOR & "." & 16 | B2S_VERSION_REVISION & "." & B2S_VERSION_BUILD & "-" & B2S_VERSION_HASH 17 | End Class -------------------------------------------------------------------------------- /leds/dream7segments/Dream7Display.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dream7Display", "Dream7Display.vbproj", "{BF708B8E-D10A-4E73-9712-EA5941C27057}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /B2STools/directb2sReelSoundsONOFF.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM directb2sReelSoundsONOFF.cmd call xslt transformation to add or remove empty attributes for directb2s files 3 | setlocal 4 | 5 | set "xsltFilePath=%~dpn0.xsl" 6 | 7 | :loop 8 | call :transform "%~1" 9 | 10 | shift 11 | if not "%~1"=="" goto loop 12 | 13 | pause 14 | goto :EOF 15 | :transform 16 | set "xmlFilePath=%~1" 17 | set "outputFilePath=%~dpn1-updated.directb2s" 18 | 19 | echo Transforming "%xmlFilePath%" 20 | echo to "%outputFilePath%" 21 | if not "%~x1" == ".directb2s" echo This only support directb2s files not "%1"&goto :EOF 22 | 23 | powershell -Command ^ 24 | $xmlFilePath = '%xmlFilePath%'; ^ 25 | $xsltFilePath = '%xsltFilePath%'; ^ 26 | $outputFilePath = '%outputFilePath%'; ^ 27 | $xslt = New-Object System.Xml.Xsl.XslCompiledTransform; ^ 28 | $xslt.Load($xsltFilePath); ^ 29 | $xslt.Transform($xmlFilePath, $outputFilePath); 30 | 31 | if %ERRORLEVEL% GEQ 1 echo Transformation error!&goto :EOF 32 | echo Transformation complete. 33 | 34 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/B2S_ScreenResIdentifier.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Drawing 3 | Imports System.IO 4 | Imports System.Security.Principal 5 | Imports System.Windows.Forms 6 | Imports Microsoft.Win32 7 | 8 | Module B2S_ScreenResIdentifier 9 | Sub Main() 10 | If IsAdmin() Then 11 | MessageBox.Show("You should not start this as Administrator!", My.Resources.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Stop) 12 | ' Too much noice here if we would quit out... 13 | 'Exit Sub 14 | End If 15 | 16 | Application.EnableVisualStyles() 17 | Application.SetCompatibleTextRenderingDefault(False) 18 | Application.Run(New formPlayfield()) 19 | End Sub 20 | Private Function IsAdmin() As Boolean 21 | Dim identity As WindowsIdentity = WindowsIdentity.GetCurrent() 22 | Dim principal As New WindowsPrincipal(identity) 23 | Return principal.IsInRole(WindowsBuiltInRole.Administrator) 24 | End Function 25 | End Module -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/B2SBackglassServerRegisterApp.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServerRegisterApp", "B2SBackglassServerRegisterApp\B2SBackglassServerRegisterApp.vbproj", "{AB41802D-0DA1-4F9C-AA19-9007F5916623}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {AB41802D-0DA1-4F9C-AA19-9007F5916623}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Logging/Log.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class Log 4 | 5 | Private writeLog As Boolean = False 6 | 7 | Private filename As String = String.Empty 8 | 9 | Public Sub New(ByVal _filename As String) 10 | filename = _filename & ".txt" 11 | End Sub 12 | 13 | Public Property IsLogOn() As Boolean 14 | Get 15 | Return writeLog 16 | End Get 17 | Set(value As Boolean) 18 | writeLog = value 19 | End Set 20 | End Property 21 | 22 | Public Property LogPath() As String = B2SSettings.LogPath 23 | 24 | Public Sub WriteLogEntry(ByVal text As String) 25 | If writeLog AndAlso Not String.IsNullOrEmpty(LogPath) Then 26 | ' write to log file 27 | On Error Resume Next 28 | Dim log As IO.StreamWriter = New IO.StreamWriter(IO.Path.Combine(LogPath, filename), True) 29 | log.WriteLine(text) 30 | log.Flush() 31 | log.Close() 32 | End If 33 | End Sub 34 | 35 | End Class 36 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/B2S_ScreenResIdentifier.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2S_ScreenResIdentifier", "B2S_ScreenResIdentifier\B2S_ScreenResIdentifier.vbproj", "{DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|Any CPU.Build.0 = Release|Any CPU 16 | {DC6D24CE-5915-40A2-9EBD-DB5A13B7AC62}.Release|x86.Build.0 = Release|x86 17 | EndGlobalSection 18 | GlobalSection(SolutionProperties) = preSolution 19 | HideSolutionNode = FALSE 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /B2S_SetUp/B2S_SetUp.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.14.36310.24 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2S_SetUp", "B2S_SetUp.csproj", "{A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {3139FBEA-F578-464A-BB0C-ACA6FEBAE09B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /B2SWindowPunch/B2SWindowPunch.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.4.33205.214 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "B2SWindowPunch", "B2SWindowPunch\B2SWindowPunch.csproj", "{FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {87706127-BB70-4179-A511-927C95205571} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /ScreenResTemplate.txt: -------------------------------------------------------------------------------- 1 | # This is a ScreenRes file for the B2SBackglassServer. 2 | # From release 1.3.1.1 comment lines like this starting with a "#" are supported. 3 | # If you use tools not supporting comments (or old releases), you need to remove these lines or let B2S_ScreenResIdentifier do it for you! 4 | # Playfield Screen resolution width/height 5 | 1920 6 | 1080 7 | # Backglass width/height 8 | 800 9 | 600 10 | # Backglass Display Devicename screen number (\\.\DISPLAY)x for the Playfield or screen on position (@x) or screen index (=x) 11 | 1 12 | # Backglass x/y position relative to the upper left corner of the screen selected 13 | 0 14 | 0 15 | # width/height of the B2S (or Full) DMD area 16 | 600 17 | 130 18 | # DMD x/y position 19 | 700 20 | 300 21 | # Y-flip, flips the LED display upside down 22 | 0 23 | # Background x/y position 24 | 100 25 | 0 26 | # Background width/height 27 | 600 28 | 600 29 | # path to the background image (C:\path\Frame) or black if none selected 30 | C:\path\my_bezel_for_EM_or_grill_for_dual_screen.png 31 | # This line would turn off B2SWindowPunch if activated 32 | #B2SWindowPunch=off 33 | # These lines would change the B2SWindowPunch & cutter regular expressions 34 | #B2SWindowPunch=^different regular expression$ 35 | #cutter=^another window$ -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' Allgemeine Informationen über eine Assembly werden über die folgenden 6 | ' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | ' die mit einer Assembly verknüpft sind. 8 | 9 | ' Die Werte der Assemblyattribute überprüfen 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 21 | 22 | 23 | ' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 24 | ' 25 | ' Hauptversion 26 | ' Nebenversion 27 | ' Buildnummer 28 | ' Revision 29 | ' 30 | ' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 31 | ' übernehmen, indem Sie "*" eingeben: 32 | ' 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /leds/BetterLed/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' General Information about an assembly is controlled through the following 6 | ' set of attributes. Change these attribute values to modify the information 7 | ' associated with an assembly. 8 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /B2STools/B2SRandom.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM ___ ___ ___ 3 | REM | _ )_ ) __| 4 | REM | _ \/ /\__ \ 5 | REM |___/___|___/ Random 6 | REM 7 | REM This script can be used to randomize different backglasses before starting Visual Pinball 8 | REM 9 | REM To activate it, add the following line in the Popper Launch script 10 | REM CALL C:\vPinball\B2SServer\B2STools\B2SRandom.cmd "[GAMEFULLNAME]" 11 | REM 12 | REM If you start a table "table.vpx" in the folder "D:\vPinball\VisualPinball\Tables\" it will try to find 13 | REM D:\vPinball\VisualPinball\Tables\table-#.directb2s where # is a random number. 14 | REM If it is found, the file D:\vPinball\VisualPinball\Tables\table-#.directb2s is copied over D:\vPinball\VisualPinball\Tables\table.directb2s 15 | 16 | REM Extract path + name without extension 17 | set b2sfullname=%~dpn1 18 | 19 | REM Uncomment following line to log how this script was called. 20 | REM echo %0 %* >> %0.log 21 | 22 | REM Count the amount of b2sfullname-?.directb2s alt directb2s files there is. 23 | for /F %%i in ('dir /A:-D /B "%b2sfullname%-?.directb2s" 2^>nul ^| find /c /v ""') do set COUNT=%%i 24 | 25 | REM Step out if there is no alt directb2s files available 26 | if %COUNT% == 0 goto :EOF 27 | 28 | REM Generate random number between 1 and the %COUNT% 29 | set /a num=%random% %%%COUNT% + 1 30 | 31 | if not exist "%b2sfullname%-%num%.directb2s" goto :EOF 32 | 33 | copy /Y "%b2sfullname%-%num%.directb2s" "%b2sfullname%.directb2s" 34 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' General Information about an assembly is controlled through the following 6 | ' set of attributes. Change these attribute values to modify the information 7 | ' associated with an assembly. 8 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' General Information about an assembly is controlled through the following 6 | ' set of attributes. Change these attribute values to modify the information 7 | ' associated with an assembly. 8 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Controls/B2SBaseBox.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032 2 | Imports System 3 | Imports System.Drawing 4 | Imports System.Windows.Forms 5 | 6 | Public Class B2SBaseBox 7 | 8 | Inherits Control 9 | Implements System.ComponentModel.ISupportInitialize 10 | 11 | Public Enum eType 12 | NotDefined = 0 13 | OnBackglass = 1 14 | OnDMD = 2 15 | End Enum 16 | Public Property Type() As eType = eType.NotDefined 17 | 18 | Public Property ID() As Integer 19 | Public Property DisplayID() As Integer 20 | 21 | Public Property RomID() As Integer = 0 22 | Public Enum eRomIDType 23 | NotDefined = 0 24 | Lamp = 1 25 | Solenoid = 2 26 | GIString = 3 27 | Mech = 4 28 | End Enum 29 | Public Property RomIDType() As eRomIDType = eType.NotDefined 30 | Public Property RomIDValue() As Integer = 0 31 | Public Property RomInverted() As Boolean = False 32 | 33 | Public Property RectangleF As RectangleF = Nothing 34 | 35 | Public Property StartDigit() As Integer = 0 36 | Public Property Digits() As Integer = 0 37 | 38 | Public Property Hidden() As Boolean = False 39 | 40 | Public Sub BeginInit() Implements System.ComponentModel.ISupportInitialize.BeginInit 41 | ' nothing to do right now 42 | End Sub 43 | 44 | Public Sub EndInit() Implements System.ComponentModel.ISupportInitialize.EndInit 45 | ' nothing to do right now 46 | End Sub 47 | 48 | End Class 49 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System.Reflection 2 | Imports System.Runtime.InteropServices 3 | 4 | ' General Information about an assembly is controlled through the following 5 | ' set of attributes. Change these attribute values to modify the information 6 | ' associated with an assembly. 7 | 8 | ' Review the values of the assembly attributes 9 | #If B2S = "DLL" Then 10 | 11 | 12 | #Else 13 | 14 | 15 | #End If 16 | 17 | 18 | 19 | 20 | 21 | 22 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 23 | 24 | 25 | ' Version information for an assembly consists of the following four values: 26 | ' 27 | ' Major Version 28 | ' Minor Version 29 | ' Build Number 30 | ' Revision 31 | ' 32 | ' You can specify all the values or you can default the Build and Revision Numbers 33 | ' by using the '*' as shown below: 34 | ' 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a report to help us improve B2S Server 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | *Note:* Are you sure there is a bug in the B2S Server and not anything related to configuration or other dependencies? If you are unsure please create a post on the [Virtual Pinball Chat Discord Server](https://discord.com/invite/YHcBrtT), channel `#db2s` or on [VPUniverse](https://vpuniverse.com/files/file/12024-b2s-backglass-server/) first. 14 | 15 | **To Reproduce** 16 | Steps to reproduce the behavior: 17 | 1. Go to '...' 18 | 2. Click on '....' 19 | 3. Scroll down to '....' 20 | 4. See error 21 | 22 | If the bug appears when playing a specific table and B2S backglass, give a link to a place where the exact version of the table and B2S file can be downloaded. 23 | Include the B2SBackglassServer.xml configuration file zipped as attachment. 24 | 25 | **Expected behavior** 26 | A clear and concise description of what you expected to happen. 27 | 28 | **Screenshots** 29 | If applicable, add screenshots to help explain your problem. 30 | 31 | **Log files** 32 | If it's about a crash, please see if there is any `B2SDebugLog.txt` available. 33 | 34 | **Versions & Settings** 35 | - VPX: [e.g. 1.7.0 Final Revision 367 (e242d7c), 32 bit - see *Help - About*] 36 | - VPM: [e.g. 3.5.217 v3.5-217-bd54096] 37 | - B2S: [e.g. 2.1.2-ba96798 See on the settings window or right click B2SBackglassServerEXE.exe + properties] 38 | - Windows version 39 | 40 | **Additional context** 41 | Add any other context about the problem here. 42 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes, 18 | ' or if you encounter build errors in this file, go to the Project Designer 19 | ' (go to Project Properties or double-click the My Project node in 20 | ' Solution Explorer), and make changes on the Application tab. 21 | ' 22 | Partial Friend Class MyApplication 23 | 24 | _ 25 | Public Sub New() 26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) 27 | Me.IsSingleInstance = false 28 | Me.EnableVisualStyles = true 29 | Me.SaveMySettingsOnExit = true 30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses 31 | End Sub 32 | 33 | _ 34 | Protected Overrides Sub OnCreateMainForm() 35 | Me.MainForm = Global.BetterLed.frmBetterLed 36 | End Sub 37 | End Class 38 | End Namespace 39 | -------------------------------------------------------------------------------- /B2SWindowPunch/B2SWindowPunch/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("B2SWindowPunch")] 9 | [assembly: AssemblyDescription("Punch holes in B2S or Visual Pinball forms")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Visual Pinball B2S Team")] 12 | [assembly: AssemblyProduct("B2SWindowPunch")] 13 | [assembly: AssemblyCopyright("Copyright © 2023-2024")] 14 | [assembly: AssemblyTrademark("A B2S Team production")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("aaabdda6-7d61-4445-8bc3-a090372f93d2")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0")] 37 | [assembly: AssemblyInformationalVersion("1.0.0")] 38 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Application.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | 'NOTE: This file is auto-generated; do not modify it directly. To make changes, 18 | ' or if you encounter build errors in this file, go to the Project Designer 19 | ' (go to Project Properties or double-click the My Project node in 20 | ' Solution Explorer), and make changes on the Application tab. 21 | ' 22 | Partial Friend Class MyApplication 23 | 24 | _ 25 | Public Sub New() 26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) 27 | Me.IsSingleInstance = false 28 | Me.EnableVisualStyles = true 29 | Me.SaveMySettingsOnExit = true 30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses 31 | End Sub 32 | 33 | _ 34 | Protected Overrides Sub OnCreateMainForm() 35 | Me.MainForm = Global.B2SBackglassServerRegisterApp.formBackglassServerRegApp 36 | End Sub 37 | End Class 38 | End Namespace 39 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/Background.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Windows.Forms 3 | 4 | Public Class Background 5 | Private Const MA_NOACTIVATE As System.Int32 = 3 6 | Private Const WM_MOUSEACTIVATE As Integer = &H21 7 | #Region " Properties " 8 | 9 | Protected Overrides Sub WndProc(ByRef m As Message) 10 | 'Don't allow the window to be activated by swallowing the mouse event. 11 | If B2SSettings.FormNoFocus And m.Msg = WM_MOUSEACTIVATE Then 12 | m.Result = New IntPtr(MA_NOACTIVATE) 13 | Return 14 | End If 15 | MyBase.WndProc(m) 16 | End Sub 17 | 18 | Private Sub Background_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown 19 | 20 | 'If B2SSettings.FormToFront And Me.TopMost = True Then 21 | ' ' We have TopMost set, so it is safe to send back! 22 | ' Me.SendToBack() 23 | ' Me.TopMost = True 24 | 'ElseIf Me.TopMost = False Then 25 | ' Me.BringToFront() 26 | 'End If 27 | 28 | End Sub 29 | #End Region 'Properties 30 | #Region "constructor" 31 | 32 | Public Sub New() 33 | 34 | InitializeComponent() 35 | 36 | ' set some styles 37 | 'Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True) 38 | Me.DoubleBuffered = True 39 | 40 | End Sub 41 | 42 | Private Sub Background_MouseClick(sender As Object, e As MouseEventArgs) Handles MyBase.MouseClick 43 | 44 | If e.Button = Windows.Forms.MouseButtons.Right Then 45 | B2SScreen.formBackglass.formBackglass_MouseClick(sender, e) 46 | End If 47 | End Sub 48 | 49 | #End Region 50 | 51 | End Class -------------------------------------------------------------------------------- /b2sbackglassserver/B2SBackglassServer.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.4.33205.214 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServerEXE", "B2SBackglassServer\B2SBackglassServerEXE.vbproj", "{AC2E94BE-21CD-434A-9039-6551DF43698B}" 7 | EndProject 8 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "B2SBackglassServer", "b2sbackglassserver\B2SBackglassServer.vbproj", "{42A57D3D-5D76-4D46-9CF0-0909C7C799C4}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {AC2E94BE-21CD-434A-9039-6551DF43698B}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {42A57D3D-5D76-4D46-9CF0-0909C7C799C4}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {5F9BB968-681A-4FB2-8074-C179F66DB0F2} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/B2SInit.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo %0 %* > "%~dp0B2SWindowPunch.log" 3 | setlocal EnableDelayedExpansion 4 | set B2SResFileEndingOverride=.res 5 | for /f "tokens=3" %%a in ('reg query "HKCU\Software\B2S" /V B2SResFileEndingOverride ^|findstr /ri "REG_SZ"') do set B2SResFileEndingOverride=%%a 6 | 7 | set "resfile=%cd%\%~1%B2SResFileEndingOverride%" 8 | set "GameName=%~2" 9 | 10 | REM If started from explorer, quit 11 | if ["%GameName%"] == [""] echo %0 Exit when started from explorer >> "%~dp0B2SWindowPunch.log"&goto :EOF 12 | 13 | REM Cut holes in the destination "B2S Backglass Server" & "B2S DMD" forms 14 | set "B2SWindowPunch=^B2S Backglass$|^B2S Backglass Server$|^B2S DMD$" 15 | 16 | REM using "Virtual DMD", "Virtual Alphanumeric" and all "PUPSCREEN" forms as regular expressions 17 | set "cutter=^Virtual DMD$|^Virtual Alphanumeric Display$|^PUPSCREEN[0-9]+$|^VPinMAME:|^PROC:" 18 | 19 | REM Check if there is any table specific settings for B2SWindowPunch 20 | if exist "%resfile%" for /f "usebackq eol=# tokens=1,2 delims==" %%G in (`findstr /R "^[A-Za-z0-9][A-Za-z0-9]*=" "%resfile%"`) do set "%%G=%%H" 21 | 22 | echo B2SWindowPunch = "!B2SWindowPunch!" >> "%~dp0B2SWindowPunch.log" 23 | echo cutter = "!cutter!" >> "%~dp0B2SWindowPunch.log" 24 | 25 | if ["!B2SWindowPunch!"] == ["off"] echo %0 B2SWindowPunch turned off>> "%~dp0B2SWindowPunch.log"&goto :EOF 26 | REM Quit If no destination set 27 | if ["!B2SWindowPunch!"] == [""] echo %0 No destination set>> "%~dp0B2SWindowPunch.log"&goto :EOF 28 | 29 | REM Wait 10 seconds 30 | timeout /t 10 /nobreak > NUL 31 | 32 | REM Punch the holes 33 | echo "%~dp0B2SWindowPunch.exe" "!B2SWindowPunch!" "!cutter!" >> "%~dp0B2SWindowPunch.log" 34 | "%~dp0B2SWindowPunch.exe" "!B2SWindowPunch!" "!cutter!" >> "%~dp0B2SWindowPunch.log" 35 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/Background.Designer.vb: -------------------------------------------------------------------------------- 1 | _ 2 | Partial Class Background 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Wird vom Windows Form-Designer benötigt. 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 23 | _ 24 | Private Sub InitializeComponent() 25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Background)) 26 | Me.SuspendLayout() 27 | ' 28 | 'Background 29 | ' 30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 32 | Me.ClientSize = New System.Drawing.Size(284, 261) 33 | Me.ControlBox = False 34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) 35 | Me.Name = "Background" 36 | Me.Text = "B2SServer" 37 | Me.ResumeLayout(False) 38 | 39 | End Sub 40 | End Class 41 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/formMode.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | 3 | Public Class formMode 4 | 5 | Private Const stayInSeconds As Integer = 3 6 | 7 | Private fadeIn As Boolean = True 8 | Private Const fadeStep As Single = 0.02 9 | Private shutDownCounter As Integer = 0 10 | 11 | Private Sub formMode_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 12 | 13 | ' set info label 14 | lblInfo.Text = "Backglass mode is set to '" & If(B2SSettings.CurrentDualMode = B2SSettings.eDualMode.Fantasy, "FANTASY", "AUTHENTIC") & "'." 15 | 16 | ' set and start timers 17 | TimerShutDown.Interval = 1000 18 | TimerOpacity.Interval = 10 19 | TimerOpacity.Start() 20 | 21 | End Sub 22 | 23 | Private Sub TimerOpacity_Tick(sender As System.Object, e As System.EventArgs) Handles TimerOpacity.Tick 24 | 25 | If fadeIn Then 26 | Me.Opacity += fadeStep 27 | If Me.Opacity >= 1 Then 28 | TimerOpacity.Stop() 29 | TimerShutDown.Start() 30 | fadeIn = False 31 | End If 32 | Else 33 | Me.Opacity -= fadeStep 34 | If Me.Opacity <= 0 Then 35 | TimerOpacity.Stop() 36 | Try 37 | Me.Close() 38 | Me.Dispose() 39 | Catch 40 | End Try 41 | End If 42 | End If 43 | 44 | End Sub 45 | 46 | Private Sub TimerShutDown_Tick(sender As System.Object, e As System.EventArgs) Handles TimerShutDown.Tick 47 | 48 | shutDownCounter += 1 49 | If shutDownCounter >= stayInSeconds Then 50 | TimerShutDown.Stop() 51 | TimerOpacity.Start() 52 | End If 53 | 54 | End Sub 55 | 56 | End Class -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/formDMD.Designer.vb: -------------------------------------------------------------------------------- 1 | _ 2 | Partial Class formDMD 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Wird vom Windows Form-Designer benötigt. 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 23 | _ 24 | Private Sub InitializeComponent() 25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formDMD)) 26 | Me.SuspendLayout() 27 | ' 28 | 'formDMD 29 | ' 30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 32 | Me.ClientSize = New System.Drawing.Size(435, 251) 33 | Me.ControlBox = False 34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) 35 | Me.MaximizeBox = False 36 | Me.MinimizeBox = False 37 | Me.Name = "formDMD" 38 | Me.Text = "formDMD" 39 | Me.ResumeLayout(False) 40 | 41 | End Sub 42 | End Class 43 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/formBackglassServerRegApp.Designer.vb: -------------------------------------------------------------------------------- 1 | _ 2 | Partial Class formBackglassServerRegApp 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Form overrides dispose to clean up the component list. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Required by the Windows Form Designer 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'NOTE: The following procedure is required by the Windows Form Designer 21 | 'It can be modified using the Windows Form Designer. 22 | 'Do not modify it using the code editor. 23 | _ 24 | Private Sub InitializeComponent() 25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formBackglassServerRegApp)) 26 | Me.SuspendLayout() 27 | ' 28 | 'formBackglassServerRegApp 29 | ' 30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 32 | Me.ClientSize = New System.Drawing.Size(303, 40) 33 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog 34 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) 35 | Me.MaximizeBox = False 36 | Me.MinimizeBox = False 37 | Me.Name = "formBackglassServerRegApp" 38 | Me.Text = "Register B2S Backglass Server" 39 | Me.ResumeLayout(False) 40 | 41 | End Sub 42 | 43 | End Class 44 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | Unless otherwise explicitly stated, all code in B2S is released under 2 | the following license (derived from the MAME license): 3 | 4 | Copyright Herweh and the B2S team 5 | All rights reserved. 6 | 7 | Redistribution and use of this code or any derivative works are permitted 8 | provided that the following conditions are met: 9 | 10 | * Redistributions may not be sold, nor may they be used in a commercial 11 | product or activity. 12 | 13 | * Redistributions that are modified from the original source must include the 14 | complete source code, including the source code for all components used by a 15 | binary built from the modified sources. However, as a special exception, the 16 | source code distributed need not include anything that is normally distributed 17 | (in either source or binary form) with the major components (compiler, kernel, 18 | and so on) of the operating system on which the executable runs, unless that 19 | component itself accompanies the executable. 20 | 21 | * Redistributions must reproduce the above copyright notice, this list of 22 | conditions and the following disclaimer in the documentation and/or other 23 | materials provided with the distribution. 24 | 25 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 26 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 29 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 | POSSIBILITY OF SUCH DAMAGE. 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # B2S (Backglass 2nd Screen) Server 2 | 3 | *System files to run `directB2S` backglasses.* 4 | 5 | See the [Changelog.txt](Changelog.txt) for recent changes. 6 | 7 | ## B2S.Backglass Server 8 | 9 | Full documentation including instruction videos is available in the [Wiki](https://github.com/vpinball/b2s-backglass/wiki) here in the Repo. 10 | 11 | ### Percent-Based Screen Resolution Values 12 | 13 | The `ScreenRes.txt` configuration file now supports percent-based values for more flexible screen sizing. This allows configurations to adapt to different screen resolutions automatically. 14 | For this to work the line #4 has to point to the backglass screen using "=#" where "#" is the screen number from left to right. 15 | 16 | **Example:** 17 | ``` 18 | # Playfield Screen resolution width/height 19 | 100% 20 | 100% 21 | # Backglass width/height 22 | 50% 23 | 75% 24 | ``` 25 | 26 | - **Playfield values** use the leftmost (primary) screen as reference 27 | - **Backglass, DMD, and Background values** use the selected backglass screen as reference 28 | - Percent values can include decimals (e.g., `33.5%`) for precise sizing 29 | - Absolute pixel values (e.g., `1920`) are still fully supported 30 | - Both formats can be mixed in the same file 31 | 32 | ## B2S.Tools 33 | 34 | See the [B2STools.txt](B2STools/B2STools.txt) for a description of the different tool scripts. 35 | 36 | ## B2S.Backglass Designer 37 | 38 | The **B2SBackglassDesigner** has moved away to it's own repository here [B2S.Designer](https://github.com/vpinball/b2s-designer) 39 | 40 | ## Developers 41 | 42 | To build either B2S.Server or B2S.Designer open the *.sln files in Visual Studio (any version from 2019 should work) and select **build**->**Build Solution** in the menu. 43 | Microsoft has VM's prepared which includes Windows 11 and Visual Studio in one bundle. The license for these normally lasts 3 months each. This is an easy way to test if it works out without having to install many different components. 44 | -------------------------------------------------------------------------------- /.github/workflows/prerelease.yml: -------------------------------------------------------------------------------- 1 | name: prerelease 2 | on: 3 | workflow_dispatch: 4 | inputs: 5 | sha: 6 | description: "SHA (leave blank for HEAD)" 7 | required: false 8 | 9 | env: 10 | ACTIONS_API_URL: https://api.github.com/repos/${GITHUB_REPOSITORY}/actions 11 | 12 | jobs: 13 | version: 14 | runs-on: ubuntu-latest 15 | outputs: 16 | sha: ${{ steps.sha.outputs.sha }} 17 | sha7: ${{ steps.sha.outputs.sha7 }} 18 | steps: 19 | - id: sha 20 | run: | 21 | SHA=$(if [[ "${{ github.event.inputs.sha }}" ]]; then echo "${{ github.event.inputs.sha }}"; else echo "${GITHUB_SHA}"; fi) 22 | SHA7="${SHA::7}" 23 | echo "sha=${SHA}" >> $GITHUB_OUTPUT 24 | echo "sha7=${SHA7}" >> $GITHUB_OUTPUT 25 | 26 | prerelease: 27 | runs-on: ubuntu-latest 28 | needs: [ version ] 29 | steps: 30 | - id: download 31 | run: | 32 | curl -s "${{ env.ACTIONS_API_URL }}/runs" --output runs.json 33 | RUN_ID=$(jq -r --arg SHA "${{ needs.version.outputs.sha }}" --arg NAME "b2s-backglass" '.workflow_runs[] | select(.head_sha==$SHA and .name==$NAME) | .id' runs.json) 34 | echo "Downloading b2s-backglass artifact list ${RUN_ID}..." 35 | curl -s "${{ env.ACTIONS_API_URL }}/runs/${RUN_ID}/artifacts" --output artifacts.json 36 | ARTIFACTS=($(jq -r '.artifacts[] | .archive_download_url' artifacts.json)) 37 | for url in ${ARTIFACTS[@]} 38 | do 39 | echo "Downloading artifact: ${url}..." 40 | curl -s -OJ -L -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" ${url} 41 | done 42 | rm *.json 43 | - id: create_release 44 | uses: ncipollo/release-action@v1 45 | with: 46 | prerelease: true 47 | name: "b2s-backglass-${{ needs.version.outputs.sha7 }}" 48 | tag: "b2s-backglass-${{ needs.version.outputs.sha7 }}" 49 | commit: ${{ needs.version.outputs.sha }} 50 | token: ${{ secrets.GITHUB_TOKEN }} 51 | artifacts: "*" 52 | -------------------------------------------------------------------------------- /B2STools/B2STools.txt: -------------------------------------------------------------------------------- 1 | ___ ___ ___ _____ _ 2 | | _ )_ ) __| |_ _|__ ___| |___ 3 | | _ \/ /\__ \ | |/ _ \/ _ \ (_-< 4 | |___/___|___/ |_|\___/\___/_/__/ 5 | 6 | - directb2sReelSoundsONOFF.cmd 7 | 8 | Older pinball machines used reels to display scores on the screen. B2S Server has built-in sounds for the reel movements. Some table authors do not like these sounds and want to control them from the table instead. 9 | 10 | The script directb2sReelSoundsONOFF.cmd will disable the sounds played by the server by telling the server that the sounds do not exist. 11 | What it technically does is add some "Sound1-6" attributes to the Score tags in the directb2s file: 12 | 13 | 14 | 15 | This will tell the B2S Server to keep quiet for these reels. 16 | 17 | - B2SRandom.cmd 18 | 19 | B2SRandom can be used to randomize different backglasses before starting Visual Pinball 20 | 21 | To activate it, add the following line in the Popper Launch script 22 | 23 | CALL C:\vPinball\B2SServer\B2STools\B2SRandom.cmd "[GAMEFULLNAME]" 24 | 25 | or you can activate it in VPinballX.starter, see https://vpuniverse.com/forums/topic/10374-vpinballxstarter-a-little-gem-of-a-tool/ 26 | 27 | If you start a table "table.vpx" in the folder "D:\vPinball\VisualPinball\Tables\" it will try to find 28 | D:\vPinball\VisualPinball\Tables\table-#.directb2s where # is a random number. 29 | If it is found, the file D:\vPinball\VisualPinball\Tables\table-#.directb2s is copied over D:\vPinball\VisualPinball\Tables\table.directb2s 30 | 31 | - DmdDeviceIniScale.cmd 32 | 33 | When you change your Backglass screen or you change the screen scaling the DmdDevice.ini still use the coordinates from 34 | your earlier setup. DmdDeviceIniScale.cmd can recalculate the coordinates (position and size) of the DMD settings. 35 | You can "drop" a DmdDevice.ini file on the DmdDeviceIniScale.cmd, it asks for some parameters and it will make a copy of 36 | the file and then modify the original to your new settings. -------------------------------------------------------------------------------- /B2STools/directb2sReelSoundsONOFF.xsl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | This does not work yet 15 | 16 | 17 | 18 | 19 | 20 | 21 | Adding the Sound - attributes to Score ID="" 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | The sound attribute(s) already exists 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SCollectData.vb: -------------------------------------------------------------------------------- 1 | Public Class B2SCollectData 2 | 3 | Inherits Generic.Dictionary(Of Integer, CollectData) 4 | 5 | Private skipframes As Integer = 0 6 | 7 | Public Enum eCollectedDataType 8 | TopImage = 1 9 | SecondImage = 2 10 | Standard = 4 11 | Animation = 8 12 | End Enum 13 | 14 | Public Class CollectData 15 | Public State As Integer = 0 16 | Public Types As Integer = 0 17 | #If B2S = "DLL" Then 18 | Public EarlyOffMode As Boolean = False 19 | Public Sub New(_state As Integer, _type As eCollectedDataType, _earlyoffmode As Boolean) 20 | State = _state 21 | Types = _type 22 | EarlyOffMode = _earlyoffmode 23 | End Sub 24 | 25 | Public Sub New(_state As Integer, _type As eCollectedDataType) 26 | State = _state 27 | Types = _type 28 | End Sub 29 | #End If 30 | End Class 31 | 32 | Public Sub New(_skipframes As Integer) 33 | skipframes = _skipframes 34 | End Sub 35 | 36 | Public Shadows Function Add(key As Integer, value As CollectData) As Boolean 37 | Dim ret As Boolean = False 38 | If Me.ContainsKey(key) Then 39 | #If B2S = "DLL" Then 40 | If value.EarlyOffMode AndAlso Me(key).State = 0 AndAlso value.State = 0 Then 41 | Me(key).State = 2 42 | Else 43 | Me(key).State = value.State 44 | End If 45 | #Else 46 | Me(key).State = value.State 47 | #End If 48 | Me(key).Types = Me(key).Types Or value.Types 49 | ret = True 50 | Else 51 | MyBase.Add(key, value) 52 | End If 53 | Return ret 54 | End Function 55 | 56 | Public Sub DataAdded() 57 | skipframes -= 1 58 | End Sub 59 | 60 | Public ReadOnly Property ShowData() As Boolean 61 | Get 62 | Return (skipframes < 0) 63 | End Get 64 | End Property 65 | 66 | Public Sub ClearData(_skipframes As Integer) 67 | MyBase.Clear() 68 | If skipframes <= 0 Then skipframes = _skipframes 69 | End Sub 70 | 71 | End Class 72 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/formBackglass.Designer.vb: -------------------------------------------------------------------------------- 1 | _ 2 | Partial Class formBackglass 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Wird vom Windows Form-Designer benötigt. 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. 21 | 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. 22 | 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. 23 | _ 24 | Private Sub InitializeComponent() 25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(formBackglass)) 26 | Me.SuspendLayout() 27 | ' 28 | 'formBackglass 29 | ' 30 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 31 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None 32 | Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None 33 | Me.ClientSize = New System.Drawing.Size(564, 594) 34 | Me.ControlBox = False 35 | Me.DoubleBuffered = True 36 | Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 37 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None 38 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) 39 | Me.MaximizeBox = False 40 | Me.MinimizeBox = False 41 | Me.Name = "formBackglass" 42 | Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual 43 | Me.Text = "Backglass" 44 | Me.ResumeLayout(False) 45 | 46 | End Sub 47 | End Class 48 | -------------------------------------------------------------------------------- /B2SWindowPunch/B2SWindowPunch/B2SWindowPunch.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {FDF3F829-05EC-4E51-96FF-A05CE50D6C7D} 8 | Exe 9 | B2SWindowPunch 10 | B2SWindowPunch 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | B2SWindowPunchCMD.ico 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /B2S_SetUp/B2S_SetUp.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A5B5C7E7-7C5D-4C8B-8C2A-5C7B2C0D0C0D} 8 | WinExe 9 | B2S_SetUp 10 | B2S_SetUp 11 | v4.8.1 12 | 512 13 | true 14 | true 15 | true 16 | 17 | 18 | AnyCPU 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Plugin/IDirectPlugin.vb: -------------------------------------------------------------------------------- 1 | 2 | 3 | ''' 4 | ''' Interface for plugins for the B2S Server.
5 | ''' All plugins must implement this interface to be recognized by the B2S Server. 6 | ''' In addition they also have to export the class implementing the interface using the following attribute [Export(typeof(B2S.IDirectPlugin))] in c# or <Export(GetType(B2S.IDirectPlugin))> for VB.net. 7 | ''' Dont forget to add a reference to the B2S Server and to import the System.ComponentModel.Composition namespace.
8 | ''' Be sure to handle all exceptions of your plugin, since the B2S Server will deactivate plugings throwing unhandled exceptions.
9 | ''' Please refer to the docu on the DirectOutput framework for more info on plugins. 10 | '''
11 | Public Interface IDirectPlugin 12 | 13 | ''' 14 | ''' This method initalizes the plugin.
15 | ''' It is the first plugin method beeing called after the plugin has been instanciated. 16 | '''
17 | ''' The filename of the table. 18 | ''' Name of the rom. 19 | Sub PluginInit(TableFilename As String, RomName As String) 20 | 21 | ''' 22 | ''' Finishes the plugin.
23 | ''' This is the last method called, before a plugin is discared. This method is also called, after a undhandled exception has occured in a plugin. 24 | '''
25 | Sub PluginFinish() 26 | 27 | 28 | ''' 29 | ''' This method is called, when the Run method of PinMame gets called. 30 | ''' 31 | Sub PinMameRun() 32 | 33 | ''' 34 | ''' This method is called, when the property Pause of Pinmame gets set to true. 35 | ''' 36 | Sub PinMamePause() 37 | 38 | ''' 39 | ''' This method is called, when the property Pause of Pinmame gets set to false. 40 | ''' 41 | Sub PinMameContinue() 42 | 43 | ''' 44 | ''' This method is called, when the Stop method of Pinmame is called. 45 | ''' 46 | Sub PinMameStop() 47 | 48 | ''' 49 | ''' This method is called, when new data from Pinmame becomes available. 50 | ''' 51 | ''' Char representing the table element type (S=Solenoid, W=Switch, L=Lamp, M=Mech, G=GI). 52 | ''' The number of the table element. 53 | ''' The value of the table element. 54 | Sub PinMameDataReceive(TableElementTypeChar As Char, Number As Integer, Value As Integer) 55 | 56 | ''' 57 | ''' Gets the name of the plugin. 58 | ''' 59 | ''' 60 | ''' The name of the plugin. 61 | ''' 62 | ReadOnly Property Name As String 63 | 64 | 65 | 66 | End Interface 67 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/formDMD.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Windows.Forms 3 | 4 | Public Class formDMD 5 | Private Const MA_NOACTIVATE As System.Int32 = 3 6 | Private Const WM_MOUSEACTIVATE As Integer = &H21 7 | #Region " Properties " 8 | 9 | 10 | Protected Overrides Sub WndProc(ByRef m As Message) 11 | 'Don't allow the window to be activated by swallowing the mouse event. 12 | If B2SSettings.FormNoFocus And m.Msg = WM_MOUSEACTIVATE Then 13 | m.Result = New IntPtr(MA_NOACTIVATE) 14 | Return 15 | End If 16 | MyBase.WndProc(m) 17 | End Sub 18 | #End Region 'Properties 19 | 20 | #Region "constructor" 21 | 22 | Public Sub New() 23 | 24 | InitializeComponent() 25 | 26 | ' set some styles 27 | 'Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True) 28 | Me.DoubleBuffered = True 29 | 30 | End Sub 31 | 32 | #End Region 33 | 34 | #Region "painting" 35 | 36 | Private Sub formDMD_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 37 | 38 | If B2SData.DMDIlluminations.Count > 0 Then 39 | 40 | If Not B2SData.UseDMDZOrder Then 41 | 42 | ' draw all standard images 43 | For Each illu As KeyValuePair(Of String, B2SPictureBox) In B2SData.DMDIlluminations 44 | If illu.Value.Visible Then 45 | e.Graphics.DrawImage(illu.Value.BackgroundImage, illu.Value.RectangleF) 46 | End If 47 | Next 48 | 49 | Else 50 | 51 | ' first of all draw zorderd images 52 | For Each illus As KeyValuePair(Of Integer, B2SPictureBox()) In B2SData.ZOrderDMDImages 53 | For Each illu As B2SPictureBox In illus.Value 54 | If illu.Visible Then 55 | e.Graphics.DrawImage(illu.BackgroundImage, illu.RectangleF) 56 | End If 57 | Next 58 | Next 59 | ' now draw all standard images 60 | For Each illu As KeyValuePair(Of String, B2SPictureBox) In B2SData.DMDIlluminations 61 | If illu.Value.Visible AndAlso illu.Value.ZOrder = 0 Then 62 | e.Graphics.DrawImage(illu.Value.BackgroundImage, illu.Value.RectangleF) 63 | End If 64 | Next 65 | 66 | End If 67 | 68 | End If 69 | 70 | End Sub 71 | 72 | Private Sub formDMD_MouseClick(sender As Object, e As MouseEventArgs) Handles MyBase.MouseClick 73 | If e.Button = Windows.Forms.MouseButtons.Right Then 74 | B2SScreen.formBackglass.formBackglass_MouseClick(sender, e) 75 | End If 76 | End Sub 77 | 78 | #End Region 79 | 80 | End Class -------------------------------------------------------------------------------- /WhatIsWhat.txt: -------------------------------------------------------------------------------- 1 | The three main projects: 2 | - B2SBackglassDesigner: The Backglass Designer to generate directB2S-Backglasses (moved to https://github.com/vpinball/b2s-designer) 3 | - B2SBackglassServer: The COM-Server for the communication between VP and Backglass and the display of the Backglasses in the same process 4 | - B2SBackglassServerEXE: Backglass display as separate EXE (for performance reasons). Contains copied code of the server. Communication via the COM-Server and to large parts via the Registry 5 | 6 | In addition: 7 | - LEDs: Two projects on the topic of "LED-Display" 8 | 9 | Tools: 10 | - B2SBackglassServerRegisterApp: Register Backglass-COM-Server in the .NET-Environment. 11 | - B2S_ScreenResIdentifier: Tool to organize and to set B2S-Settings 12 | - B2SWindowPunch: Cut holes in forms overlapped by other smaller windows. 13 | - B2SInit.cmd: This bat file is called from B2SBackglassServer and then it calls B2SWindowPunch. 14 | - B2STools\directb2sReelSoundsONOFF.cmd: Small command to deactivate all built-in REEL sounds in directb2s files. 15 | - ScreenResTemplate.txt is an exemplary file how the .txt (res files) has to look like. From release 1.3.1.1 it supports comment lines starting with a "#". 16 | If you use tools not supporting comments, you need to remove these lines. PinballX has now been updated as well! 17 | Will be removed when unchecking the checkbox in ScreenResIdentifier. 18 | 19 | 20 | Additional info: 21 | 22 | - The code is all VB.net (The plugin code was my first VB.net code, since I'm more into C#). 23 | - The proxy implementation uses some tricks to ensure that all Pinmame data is available for the backglass and the plugins. There are 2 ways how data is fetched: 24 | For tables which call the Pinmame commands the get the latestest changes on the table elements, the B2S.Server simply intercepts those commands and passes the data which is returned by PinMame not only to VP, but also the backglass and to the plugins. 25 | For tables which dont call those PinMame commands, the B2S.Server calls those commands on its own at regular intervals. To detect if the B2S.Server has to do its own calls, there is some logic which will switch to this mode if the "changes" command is called within 50ms (not sure about that anymore) after the table has started. 26 | - Another bit of special logic in B2S.Server detects if the table is still active, so the B2S.Server can shut down on table exit. This is necessary since VP resp. VBA does not always properly release the B2S.Server com object. 27 | - I have only seen the preliminary code of the proxy implementation, so things might have changed since then, but I'm pretty sure that some cleanup to the code would make things much easier for future development. 28 | - The plugin code uses Microsoft MEF (https://msdn.microsoft.com/en-us/library/dd460648(v=vs.110).aspx) to detect and load plugins. 29 | - The B2S.Server to backglass communication uses the registry to transfer data. IMHO this should be changed. 30 | 31 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/moduleImageExtensions.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032 2 | Imports System 3 | Imports System.Drawing 4 | 5 | Module moduleImageExtensions 6 | 7 | _ 8 | Public Function Resized(image As Image, size As Size, Optional ByVal disposeOriginal As Boolean = False) As Image 9 | If image Is Nothing Then Return Nothing 10 | If size.Width <= 0 OrElse size.Height <= 0 Then Return Nothing 11 | Dim ret As Bitmap = New Bitmap(size.Width, size.Height) 12 | Using gr As Graphics = Graphics.FromImage(ret) 13 | gr.PageUnit = GraphicsUnit.Pixel 14 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High 15 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality 16 | gr.DrawImage(image, New Rectangle(0, 0, ret.Width, ret.Height)) 17 | End Using 18 | If disposeOriginal Then 19 | image.Dispose() 20 | image = Nothing 21 | End If 22 | Return ret 23 | End Function 24 | 25 | _ 26 | Public Function Rotated(image As Image, angle As Integer) As Image 27 | If image Is Nothing Then Return Nothing 28 | Dim ret As Bitmap = New Bitmap(image.Width, image.Height) 29 | Dim matrix As New System.Drawing.Drawing2D.Matrix 30 | Using gr As Graphics = Graphics.FromImage(ret) 31 | gr.PageUnit = GraphicsUnit.Pixel 32 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High 33 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality 34 | matrix.RotateAt(angle * -1, New Point(CInt(image.Width / 2), CInt(image.Height / 2))) 35 | gr.Transform = matrix 36 | gr.DrawImage(image, New Rectangle(0, 0, image.Width, image.Height)) 37 | End Using 38 | Return ret 39 | End Function 40 | 41 | _ 42 | Public Function ResizedF(image As Image, sizeF As SizeF, Optional ByVal disposeOriginal As Boolean = False) As Image 43 | If image Is Nothing Then Return Nothing 44 | If sizeF.Width <= 0 OrElse sizeF.Height <= 0 Then Return Nothing 45 | Dim largesize As Size = New Size(CInt(sizeF.Width) + 1, CInt(sizeF.Height) + 1) 46 | Dim ret As Bitmap = New Bitmap(largesize.Width, largesize.Height) 47 | Using gr As Graphics = Graphics.FromImage(ret) 48 | gr.PageUnit = GraphicsUnit.Pixel 49 | 'gr.InterpolationMode = Drawing2D.InterpolationMode.High 50 | gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality 51 | gr.DrawImage(image, New Rectangle(0, 0, sizeF.Width, sizeF.Height)) 52 | End Using 53 | If disposeOriginal Then 54 | image.Dispose() 55 | image = Nothing 56 | End If 57 | Return ret 58 | End Function 59 | 60 | End Module 61 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("BetterLed.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | End Module 63 | End Namespace 64 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("Dream7Display.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | End Module 63 | End Namespace 64 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Forms/formMode.Designer.vb: -------------------------------------------------------------------------------- 1 | _ 2 | Partial Class formMode 3 | Inherits System.Windows.Forms.Form 4 | 5 | 'Form overrides dispose to clean up the component list. 6 | _ 7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean) 8 | Try 9 | If disposing AndAlso components IsNot Nothing Then 10 | components.Dispose() 11 | End If 12 | Finally 13 | MyBase.Dispose(disposing) 14 | End Try 15 | End Sub 16 | 17 | 'Required by the Windows Form Designer 18 | Private components As System.ComponentModel.IContainer 19 | 20 | 'NOTE: The following procedure is required by the Windows Form Designer 21 | 'It can be modified using the Windows Form Designer. 22 | 'Do not modify it using the code editor. 23 | _ 24 | Private Sub InitializeComponent() 25 | Me.components = New System.ComponentModel.Container() 26 | Me.lblInfo = New System.Windows.Forms.Label() 27 | Me.TimerOpacity = New System.Windows.Forms.Timer(Me.components) 28 | Me.TimerShutDown = New System.Windows.Forms.Timer(Me.components) 29 | Me.SuspendLayout() 30 | ' 31 | 'lblInfo 32 | ' 33 | Me.lblInfo.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 34 | Me.lblInfo.Location = New System.Drawing.Point(12, 20) 35 | Me.lblInfo.Name = "lblInfo" 36 | Me.lblInfo.Size = New System.Drawing.Size(338, 20) 37 | Me.lblInfo.TabIndex = 0 38 | Me.lblInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter 39 | ' 40 | 'TimerOpacity 41 | ' 42 | ' 43 | 'TimerShutDown 44 | ' 45 | ' 46 | 'formMode 47 | ' 48 | Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 49 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 50 | Me.ClientSize = New System.Drawing.Size(362, 62) 51 | Me.Controls.Add(Me.lblInfo) 52 | Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 53 | Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow 54 | Me.MaximizeBox = False 55 | Me.MinimizeBox = False 56 | Me.Name = "formMode" 57 | Me.Opacity = 0R 58 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 59 | Me.Text = "Backglass dual mode ..." 60 | Me.TopMost = True 61 | Me.ResumeLayout(False) 62 | 63 | End Sub 64 | Friend WithEvents lblInfo As System.Windows.Forms.Label 65 | Friend WithEvents TimerOpacity As System.Windows.Forms.Timer 66 | Friend WithEvents TimerShutDown As System.Windows.Forms.Timer 67 | End Class 68 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2SBackglassServerRegisterApp.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | End Module 63 | End Namespace 64 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.BetterLed.My.MySettings 68 | Get 69 | Return Global.BetterLed.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.B2S.My.MySettings 68 | Get 69 | Return Global.B2S.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.B2S.My.MySettings 68 | Get 69 | Return Global.B2S.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.544 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.Dream7Display.My.MySettings 68 | Get 69 | Return Global.Dream7Display.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Plugin/PluginWindow.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032, BC42021 2 | Imports System.Windows.Forms 3 | Imports System.Drawing 4 | 5 | Public Class PluginWindow 6 | 7 | Sub New(Plugins As PluginList) 8 | 9 | InitializeComponent() 10 | Me.Plugins = Plugins 11 | End Sub 12 | 13 | Private _Plugins As PluginList = New PluginList() 14 | Public Property Plugins() As PluginList 15 | Get 16 | Return _Plugins 17 | End Get 18 | Private Set(ByVal value As PluginList) 19 | _Plugins = value 20 | Me.PluginDataGrid.DataSource = value 21 | Me.PluginDataGrid.Invalidate() 22 | End Set 23 | End Property 24 | 25 | Private Sub ExceptionContextMenu_ItemClicked(sender As System.Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ExceptionContextMenu.ItemClicked 26 | Select Case e.ClickedItem.Name 27 | Case "ShowExceptionDetails" 28 | MsgBox(Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException.ToString(), MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxSetForeground + MsgBoxStyle.OkOnly, "Exception details for plugin " & Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Name) 29 | Case "DiscardException" 30 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException = Nothing 31 | Case "DiscardExceptionAndActivate" 32 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).PluginException = Nothing 33 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Active 34 | End Select 35 | 36 | 37 | End Sub 38 | 39 | Private Sub PluginDataGrid_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellDoubleClick 40 | If e.RowIndex >= 0 AndAlso e.RowIndex <= Plugins.Count Then 41 | Plugins(e.RowIndex).PluginShowFrontEnd() 42 | End If 43 | End Sub 44 | 45 | 46 | 47 | Private Sub PluginDataGrid_CellMouseEnter(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellMouseEnter 48 | If e.ColumnIndex >= 0 AndAlso e.ColumnIndex < Me.PluginDataGrid.Columns.Count Then 49 | Me.StatusLabel.Text = Me.PluginDataGrid.Columns(e.ColumnIndex).ToolTipText 50 | End If 51 | End Sub 52 | 53 | Private Sub PluginDataGrid_CellMouseLeave(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles PluginDataGrid.CellMouseLeave 54 | Me.StatusLabel.Text = "Doubleclick a entry to show the frontend of the plugin" 55 | End Sub 56 | 57 | 58 | 59 | Private Sub StatusContextMenu_ItemClicked(sender As System.Object, e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles StatusContextMenu.ItemClicked 60 | Select Case e.ClickedItem.Name 61 | Case "ActivatePlugin" 62 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Active 63 | Case "DisablePlugin" 64 | Plugins(Me.PluginDataGrid.CurrentCell.RowIndex).Status = PluginStatusEnum.Disabled 65 | End Select 66 | 67 | End Sub 68 | End Class -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Settings.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | 15 | Namespace My 16 | 17 | _ 20 | Partial Friend NotInheritable Class MySettings 21 | Inherits Global.System.Configuration.ApplicationSettingsBase 22 | 23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) 24 | 25 | #Region "My.Settings Auto-Save Functionality" 26 | #If _MyType = "WindowsForms" Then 27 | Private Shared addedHandler As Boolean 28 | 29 | Private Shared addedHandlerLockObject As New Object 30 | 31 | _ 32 | Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) 33 | If My.Application.SaveMySettingsOnExit Then 34 | My.Settings.Save() 35 | End If 36 | End Sub 37 | #End If 38 | #End Region 39 | 40 | Public Shared ReadOnly Property [Default]() As MySettings 41 | Get 42 | 43 | #If _MyType = "WindowsForms" Then 44 | If Not addedHandler Then 45 | SyncLock addedHandlerLockObject 46 | If Not addedHandler Then 47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings 48 | addedHandler = True 49 | End If 50 | End SyncLock 51 | End If 52 | #End If 53 | Return defaultInstance 54 | End Get 55 | End Property 56 | End Class 57 | End Namespace 58 | 59 | Namespace My 60 | 61 | _ 64 | Friend Module MySettingsProperty 65 | 66 | _ 67 | Friend ReadOnly Property Settings() As Global.B2SBackglassServerRegisterApp.My.MySettings 68 | Get 69 | Return Global.B2SBackglassServerRegisterApp.My.MySettings.Default 70 | End Get 71 | End Property 72 | End Module 73 | End Namespace 74 | -------------------------------------------------------------------------------- /leds/BetterLed/BetterLed.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BetterLed", "BetterLed.vbproj", "{38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}" 5 | EndProject 6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Dream7Display", "..\Dream7Segments\Dream7Display.vbproj", "{BF708B8E-D10A-4E73-9712-EA5941C27057}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Debug|x64 = Debug|x64 14 | Release|Any CPU = Release|Any CPU 15 | Release|Mixed Platforms = Release|Mixed Platforms 16 | Release|x86 = Release|x86 17 | Release|x64 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Any CPU.ActiveCfg = Debug|x86 21 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 22 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|Mixed Platforms.Build.0 = Debug|x86 23 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x86.ActiveCfg = Debug|x86 24 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x86.Build.0 = Debug|x86 25 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x64.ActiveCfg = Debug|x64 26 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Debug|x64.Build.0 = Debug|x64 27 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Any CPU.ActiveCfg = Release|x86 28 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Mixed Platforms.ActiveCfg = Release|x86 29 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|Mixed Platforms.Build.0 = Release|x86 30 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x86.ActiveCfg = Release|x86 31 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x86.Build.0 = Release|x86 32 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x64.ActiveCfg = Release|x64 33 | {38DBDF8A-3001-4BA6-A3FE-1C6E4DECB6E6}.Release|x64.Build.0 = Release|x64 34 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 35 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Any CPU.Build.0 = Debug|Any CPU 36 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 37 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 38 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x86.ActiveCfg = Debug|Any CPU 39 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x86.Build.0 = Debug|Any CPU 40 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x64.ActiveCfg = Debug|Any CPU 41 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Debug|x64.Build.0 = Debug|Any CPU 42 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 45 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|Mixed Platforms.Build.0 = Release|Any CPU 46 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x86.ActiveCfg = Release|Any CPU 47 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x86.Build.0 = Release|Any CPU 48 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x64.ActiveCfg = Release|Any CPU 49 | {BF708B8E-D10A-4E73-9712-EA5941C27057}.Release|x64.Build.0 = Release|Any CPU 50 | EndGlobalSection 51 | GlobalSection(SolutionProperties) = preSolution 52 | HideSolutionNode = FALSE 53 | EndGlobalSection 54 | EndGlobal 55 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 57 | 58 | 59 | true/pm 60 | 61 | 62 | 63 | 64 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 57 | 58 | 59 | true/pm 60 | true 61 | 62 | 63 | 64 | 65 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /B2SWindowPunch/B2SWindowPunch/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 57 | 65 | 66 | 67 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 57 | 65 | 66 | 67 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Controls/B2SPictureBox.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Drawing 3 | Imports System.Windows.Forms 4 | 5 | Public Class B2SPictureBox 6 | 7 | Inherits B2SBaseBox 8 | 9 | Public Enum ePictureBoxType 10 | StandardImage = 0 11 | SelfRotatingImage = 1 12 | MechRotatingImage = 2 13 | End Enum 14 | Public Enum eSnippitRotationDirection 15 | Clockwise = 0 16 | AntiClockwise = 1 17 | End Enum 18 | Public Enum eSnippitRotationStopBehaviour 19 | SpinOff = 0 20 | StopImmediatelly = 1 21 | RunAnimationTillEnd = 2 22 | RunAnimationToFirstStep = 3 23 | End Enum 24 | 25 | 26 | Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs) 27 | ' rectangle area for painting 28 | Dim rect As Rectangle = New Rectangle(0, 0, Me.Width - 1, Me.Height - 1) 29 | 30 | ' draw dashed frame 31 | Dim pen As Pen = New Pen(Brushes.LightGray) 32 | pen.DashPattern = New Single() {3.0F, 3.0F} 33 | e.Graphics.DrawRectangle(pen, rect) 34 | pen.Dispose() 35 | 36 | ' draw text 37 | 'If Not String.IsNullOrEmpty(Me.Text) Then 38 | ' TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, rect, Color.White, TextFormatFlags.WordBreak Or TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter) 39 | 'End If 40 | End Sub 41 | 42 | Public Sub New() 43 | ' set some drawing styles 44 | Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 45 | 'Me.SetStyle(ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) 46 | 'Me.DoubleBuffered = True 47 | Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True) 48 | 49 | ' backcolor needs to be transparent 50 | Me.BackColor = Color.Transparent 51 | 52 | ' do not show the control 53 | MyBase.Visible = False 54 | End Sub 55 | 56 | Public Property PictureBoxType() As ePictureBoxType = ePictureBoxType.StandardImage 57 | 58 | Public Property GroupName() As String = String.Empty 59 | 60 | Public Property Intensity() As Integer = 1 61 | Public Property InitialState() As Integer = 0 62 | Public Property DualMode() As B2SData.eDualMode = B2SData.eDualMode.Both 63 | Public Property ZOrder() As Integer = 0 64 | 65 | Public Property IsImageSnippit() As Boolean = False 66 | Public Property SnippitRotationStopBehaviour() As eSnippitRotationStopBehaviour = eSnippitRotationStopBehaviour.SpinOff 67 | 68 | Private _Visible As Boolean 69 | Public Shadows Property Visible(Optional ByVal _SetThruAnimation As Boolean = False) As Boolean 70 | Get 71 | Return _Visible 72 | End Get 73 | Set(ByVal value As Boolean) 74 | If _Visible <> value Then 75 | SetThruAnimation = _SetThruAnimation 76 | _Visible = value 77 | ' do a invalidate at the parent form 78 | If Me.Parent IsNot Nothing Then Me.Parent.Invalidate(Rectangle.Round(Me.RectangleF)) 79 | End If 80 | End Set 81 | End Property 82 | Public Property SetThruAnimation() As Boolean = False 83 | 84 | Private _BackgroundImage As Image 85 | Public Shadows Property BackgroundImage() As Image 86 | Get 87 | Return _BackgroundImage 88 | End Get 89 | Set(ByVal value As Image) 90 | If _BackgroundImage Is Nothing OrElse Not _BackgroundImage.Equals(value) Then 91 | _BackgroundImage = value 92 | ' do a invalidate at the parent form 93 | If Me.Parent IsNot Nothing Then Me.Parent.Invalidate(Rectangle.Round(Me.RectangleF)) 94 | End If 95 | End Set 96 | End Property 97 | 98 | Private _OffImage As Image 99 | Public Property OffImage() As Image 100 | Get 101 | Return _OffImage 102 | End Get 103 | Set(ByVal value As Image) 104 | _OffImage = value 105 | End Set 106 | End Property 107 | 108 | End Class 109 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 54 | 62 | 63 | 77 | 78 | 79 | true 80 | PerMonitorV2 81 | 82 | 83 | -------------------------------------------------------------------------------- /B2STools/DmdDeviceIniScale.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | echo ___ ___ ___ 4 | echo ^| _ ^)^_ ^) __^| 5 | echo ^| _ \/ /\__ \ 6 | echo ^|___/___^|___/ DmdDeviceIniScale 7 | echo. 8 | echo This script is used to change the scaling and position of entries in a DmdDevice.ini file. 9 | REM 10 | REM Check if filename was given as first parameter 11 | if "%~1"=="" ( 12 | echo. 13 | echo Usage^: DmdDeviceIniScale.cmd ^ 14 | echo Drop a DmdDevice.ini file on this script in windows explorer. 15 | echo It will make a backup copy of your file and recalculate all positions and sizes on the basis of a entered scaling factor. 16 | echo It is also possible to move the positions using an offset horizontal and vertically. 17 | pause 18 | exit 19 | ) else ( 20 | set INIFILE=%~n1 21 | set EXTENSION=%~x1 22 | ) 23 | echo After making a backup, your original file %INIFILE%%EXTENSION% will be overwritten with the new values. 24 | pause 25 | 26 | for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" 27 | set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" 28 | set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%" 29 | 30 | set BACKUPFILE=%INIFILE%_%YYYY%%MM%%DD%_%HH%%Min%%Sec%%EXTENSION% 31 | set INIFILE=%INIFILE%%EXTENSION% 32 | 33 | echo Backup %INIFILE% to %BACKUPFILE% 34 | copy %INIFILE% %BACKUPFILE% > NUL 35 | REM Run PowerShell code directly 36 | powershell -NoProfile -ExecutionPolicy Bypass -Command ^ 37 | "$BACKUPFILE='%BACKUPFILE%';" ^ 38 | "$INIFILE='%INIFILE%';" ^ 39 | "$iniLines = Get-Content $BACKUPFILE;" ^ 40 | "$hasHeader = $false;" ^ 41 | "$origScaling = 100;" ^ 42 | "$origOffsetLeft = 0;" ^ 43 | "$origOffsetTop = 0;" ^ 44 | "foreach ($l in $iniLines) {" ^ 45 | " if ($l -match '^\s*;\s*B2S DmdDeviceScale') { $hasHeader = $true }" ^ 46 | " if ($l -match '^\s*;\s*screenScaling\s*=\s*(\d+)') { $origScaling = [int]$matches[1] }" ^ 47 | " if ($l -match '^\s*;\s*offsetLeft\s*=\s*(-?\d+)') { $origOffsetLeft = [int]$matches[1] }" ^ 48 | " if ($l -match '^\s*;\s*offsetTop\s*=\s*(-?\d+)') { $origOffsetTop = [int]$matches[1] }" ^ 49 | "}" ^ 50 | "$inputScaling = Read-Host ('What scaling percent was this file saved with? (default ' + $origScaling + ')');" ^ 51 | "if ([string]::IsNullOrWhiteSpace($inputScaling)) { $inputScaling = $origScaling }" ^ 52 | "$origScaling = [int]$inputScaling;" ^ 53 | "$screenScaling = Read-Host ('Wanted scaling in percent (e.g. 150, default ' + $origScaling + ')'); if ([string]::IsNullOrWhiteSpace($screenScaling)) { $screenScaling = $origScaling }" ^ 54 | "$offsetLeft = Read-Host ('Offset for left (e.g. 0, default ' + $origOffsetLeft + ')'); if ([string]::IsNullOrWhiteSpace($offsetLeft)) { $offsetLeft = $origOffsetLeft }" ^ 55 | "$offsetTop = Read-Host ('Offset for top (e.g. 0, default ' + $origOffsetTop + ')'); if ([string]::IsNullOrWhiteSpace($offsetTop)) { $offsetTop = $origOffsetTop }" ^ 56 | "$factor = [double]$origScaling / [double]$screenScaling;" ^ 57 | "$newLines = @();" ^ 58 | "$newLines += '; B2S DmdDeviceScale';" ^ 59 | "$newLines += '; screenScaling = ' + $screenScaling;" ^ 60 | "$newLines += '; offsetLeft=' + $offsetLeft;" ^ 61 | "$newLines += '; offsetTop=' + $offsetTop;" ^ 62 | "foreach ($line in $iniLines) {" ^ 63 | " if ($line -match '^\s*;\s*B2S DmdDeviceScale') { continue }" ^ 64 | " if ($line -match '^\s*;\s*screenScaling\s*=') { continue }" ^ 65 | " if ($line -match '^\s*;\s*offsetLeft\s*=') { continue }" ^ 66 | " if ($line -match '^\s*;\s*offsetTop\s*=') { continue }" ^ 67 | " if ($line -match '(?i)padding') { $newLines += $line; continue }" ^ 68 | " if ($line.Trim().StartsWith(';') -or $line.Trim() -eq '') { $newLines += $line; continue }" ^ 69 | " if ($line -match '^\s*([^=]+?)\s*=\s*(-?\d+)\s*$') {" ^ 70 | " $key = $matches[1].Trim(); $value = [double]$matches[2];" ^ 71 | " if ($key.ToLower().EndsWith('left')) { $newValue = [math]::Round((($value - $origOffsetLeft) * $factor) + [double]$offsetLeft) }" ^ 72 | " elseif ($key.ToLower().EndsWith('top')) { $newValue = [math]::Round(($value - $origOffsetTop) * $factor + [double]$offsetTop) }" ^ 73 | " elseif ($key.ToLower().EndsWith('width') -or $key.ToLower().EndsWith('height')) { $newValue = [math]::Round($value * $factor) }" ^ 74 | " else { $newValue = $value }" ^ 75 | " $newLines += \"$key = $newValue\"" ^ 76 | " } else { $newLines += $line }" ^ 77 | "}" ^ 78 | "$newLines | Set-Content -Encoding UTF8 $INIFILE;" ^ 79 | "Write-Host 'Done!'" 80 | 81 | pause -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2S.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | 63 | ''' 64 | ''' Looks up a localized string similar to B2S ScreenResIdentifier. 65 | ''' 66 | Friend ReadOnly Property AppTitle() As String 67 | Get 68 | Return ResourceManager.GetString("AppTitle", resourceCulture) 69 | End Get 70 | End Property 71 | 72 | ''' 73 | ''' Looks up a localized string similar to Do you want to get a setup recommendation from me?. 74 | ''' 75 | Friend ReadOnly Property DoRecommendation() As String 76 | Get 77 | Return ResourceManager.GetString("DoRecommendation", resourceCulture) 78 | End Get 79 | End Property 80 | 81 | ''' 82 | ''' Looks up a localized string similar to You haven't saved your settings' changes. Do you want to save right now?. 83 | ''' 84 | Friend ReadOnly Property SaveChanges() As String 85 | Get 86 | Return ResourceManager.GetString("SaveChanges", resourceCulture) 87 | End Get 88 | End Property 89 | 90 | ''' 91 | ''' Looks up a localized string similar to Your settings are saved.. 92 | ''' 93 | Friend ReadOnly Property SettingsAreSaved() As String 94 | Get 95 | Return ResourceManager.GetString("SettingsAreSaved", resourceCulture) 96 | End Get 97 | End Property 98 | End Module 99 | End Namespace 100 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SStatistics.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032 2 | Imports System 3 | 4 | Public Class B2SStatistics 5 | 6 | Private Shared Property _LogStatistics() As Boolean = False 7 | Public Shared Property LogStatistics() As Boolean 8 | Get 9 | Return _LogStatistics 10 | End Get 11 | Set(ByVal value As Boolean) 12 | _LogStatistics = value 13 | #If B2S = "DLL" Then 14 | B2SData.IsInfoDirty = True 15 | #End If 16 | End Set 17 | End Property 18 | 19 | Public Class StatsCollection 20 | 21 | Public List As Generic.List(Of StatsEntry) 22 | 23 | Public CurrentState As Integer = 0 24 | Public SetCount As Integer() = Nothing 25 | Public MaxOn As TimeSpan() = Nothing 26 | Public AvgOn As TimeSpan() = Nothing 27 | Public MinOn As TimeSpan() = Nothing 28 | 29 | Public Sub New() 30 | 31 | List = New Generic.List(Of StatsEntry) 32 | 33 | End Sub 34 | 35 | Public ReadOnly Property IsValid() As Boolean 36 | Get 37 | Return (SetCount IsNot Nothing) 38 | End Get 39 | End Property 40 | 41 | Public Sub Add(ByVal _State As Integer) 42 | 43 | CurrentState = _State 44 | 45 | ' maybe get last item and set time span to last entry 46 | Dim lastitem As StatsEntry = Nothing 47 | Dim now As Date = Date.Now 48 | If List.Count > 0 Then 49 | lastitem = List(List.Count - 1) 50 | Dim lasttime As Date = lastitem.Time 51 | lastitem.TimeSpan = now - lasttime 52 | End If 53 | 54 | ' check arrays 55 | Dim upperbound As Integer = Math.Max(_State, If(lastitem IsNot Nothing, lastitem.State, 0)) 56 | If SetCount Is Nothing Then 57 | ReDim SetCount(upperbound) 58 | ReDim MaxOn(upperbound) 59 | ReDim AvgOn(upperbound) 60 | ReDim MinOn(upperbound) 61 | ElseIf upperbound > SetCount.Length - 1 Then 62 | ReDim Preserve SetCount(upperbound) 63 | ReDim Preserve MaxOn(upperbound) 64 | ReDim Preserve AvgOn(upperbound) 65 | ReDim Preserve MinOn(upperbound) 66 | End If 67 | 68 | ' set some overall stats 69 | SetCount(_State) += 1 70 | If lastitem IsNot Nothing Then 71 | If MaxOn(lastitem.State) = Nothing Then 72 | MaxOn(lastitem.State) = lastitem.TimeSpan 73 | Else 74 | If MaxOn(lastitem.State) < lastitem.TimeSpan Then MaxOn(lastitem.State) = lastitem.TimeSpan 75 | End If 76 | If MinOn(lastitem.State) = Nothing Then 77 | MinOn(lastitem.State) = lastitem.TimeSpan 78 | Else 79 | If MinOn(lastitem.State) > lastitem.TimeSpan Then MinOn(lastitem.State) = lastitem.TimeSpan 80 | End If 81 | If AvgOn(lastitem.State) = Nothing Then 82 | AvgOn(lastitem.State) = lastitem.TimeSpan 83 | Else 84 | AvgOn(lastitem.State) = TimeSpan.FromTicks((TimeSpan.FromTicks(AvgOn(lastitem.State).Ticks * (SetCount(lastitem.State) - 1)) + lastitem.TimeSpan).Ticks / SetCount(lastitem.State)) 85 | End If 86 | End If 87 | 88 | ' add entry 89 | List.Add(New StatsEntry(_State, now)) 90 | 91 | End Sub 92 | 93 | End Class 94 | Public Class StatsEntry 95 | Public State As Integer = 0 96 | Public Time As Date = Nothing 97 | Public TimeSpan As TimeSpan = Nothing 98 | 99 | Public Sub New(ByVal _State As Integer, ByVal _Time As Date) 100 | State = _State 101 | Time = _Time 102 | End Sub 103 | End Class 104 | 105 | Public Shared Property LampsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection) 106 | Public Shared Property SolenoidsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection) 107 | Public Shared Property GIStringsStats() As Generic.SortedList(Of Integer, StatsCollection) = New Generic.SortedList(Of Integer, StatsCollection) 108 | 109 | Shared Sub New() 110 | 111 | LogStatistics = B2SSettings.IsStatisticsBackglassOn 112 | 113 | End Sub 114 | 115 | Public Shared Sub ClearAll() 116 | LampsStats.Clear() 117 | SolenoidsStats.Clear() 118 | GIStringsStats.Clear() 119 | End Sub 120 | 121 | End Class 122 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/My Project/Resources.Designer.vb: -------------------------------------------------------------------------------- 1 | '------------------------------------------------------------------------------ 2 | ' 3 | ' This code was generated by a tool. 4 | ' Runtime Version:4.0.30319.42000 5 | ' 6 | ' Changes to this file may cause incorrect behavior and will be lost if 7 | ' the code is regenerated. 8 | ' 9 | '------------------------------------------------------------------------------ 10 | 11 | Option Strict On 12 | Option Explicit On 13 | 14 | Imports System 15 | 16 | Namespace My.Resources 17 | 18 | 'This class was auto-generated by the StronglyTypedResourceBuilder 19 | 'class via a tool like ResGen or Visual Studio. 20 | 'To add or remove a member, edit your .ResX file then rerun ResGen 21 | 'with the /str option, or rebuild your VS project. 22 | ''' 23 | ''' A strongly-typed resource class, for looking up localized strings, etc. 24 | ''' 25 | _ 29 | Friend Module Resources 30 | 31 | Private resourceMan As Global.System.Resources.ResourceManager 32 | 33 | Private resourceCulture As Global.System.Globalization.CultureInfo 34 | 35 | ''' 36 | ''' Returns the cached ResourceManager instance used by this class. 37 | ''' 38 | _ 39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager 40 | Get 41 | If Object.ReferenceEquals(resourceMan, Nothing) Then 42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("B2S.Resources", GetType(Resources).Assembly) 43 | resourceMan = temp 44 | End If 45 | Return resourceMan 46 | End Get 47 | End Property 48 | 49 | ''' 50 | ''' Overrides the current thread's CurrentUICulture property for all 51 | ''' resource lookups using this strongly typed resource class. 52 | ''' 53 | _ 54 | Friend Property Culture() As Global.System.Globalization.CultureInfo 55 | Get 56 | Return resourceCulture 57 | End Get 58 | Set 59 | resourceCulture = value 60 | End Set 61 | End Property 62 | 63 | ''' 64 | ''' Looks up a localized string similar to B2S Backglass Server. 65 | ''' 66 | Friend ReadOnly Property AppTitle() As String 67 | Get 68 | Return ResourceManager.GetString("AppTitle", resourceCulture) 69 | End Get 70 | End Property 71 | 72 | ''' 73 | ''' Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. 74 | ''' 75 | Friend ReadOnly Property camera1() As System.IO.UnmanagedMemoryStream 76 | Get 77 | Return ResourceManager.GetStream("camera1", resourceCulture) 78 | End Get 79 | End Property 80 | 81 | ''' 82 | ''' Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. 83 | ''' 84 | Friend ReadOnly Property EMReel() As System.IO.UnmanagedMemoryStream 85 | Get 86 | Return ResourceManager.GetStream("EMReel", resourceCulture) 87 | End Get 88 | End Property 89 | 90 | ''' 91 | ''' Looks up a localized string similar to The changes you made need a restart of the backglass.. 92 | ''' 93 | Friend ReadOnly Property MSG_ChangesNeedARestart() As String 94 | Get 95 | Return ResourceManager.GetString("MSG_ChangesNeedARestart", resourceCulture) 96 | End Get 97 | End Property 98 | 99 | ''' 100 | ''' Looks up a localized string similar to You haven't saved your changes. Do you want to save them now?. 101 | ''' 102 | Friend ReadOnly Property MSG_IsDirty() As String 103 | Get 104 | Return ResourceManager.GetString("MSG_IsDirty", resourceCulture) 105 | End Get 106 | End Property 107 | End Module 108 | End Namespace 109 | -------------------------------------------------------------------------------- /leds/dream7segments/Dream7Display.vbproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | {BF708B8E-D10A-4E73-9712-EA5941C27057} 7 | Library 8 | Dream7Display 9 | Dream7Display 10 | 512 11 | Windows 12 | v4.0 13 | 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | true 20 | true 21 | bin\Debug\ 22 | Dream7Display.xml 23 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | false 29 | true 30 | true 31 | bin\Release\ 32 | Dream7Display.xml 33 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 34 | 35 | 36 | On 37 | 38 | 39 | Binary 40 | 41 | 42 | Off 43 | 44 | 45 | On 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | True 72 | Application.myapp 73 | 74 | 75 | True 76 | True 77 | Resources.resx 78 | 79 | 80 | True 81 | Settings.settings 82 | True 83 | 84 | 85 | Component 86 | 87 | 88 | 89 | 90 | 91 | VbMyResourcesResXFileCodeGenerator 92 | Resources.Designer.vb 93 | My.Resources 94 | Designer 95 | 96 | 97 | 98 | 99 | MyApplicationCodeGenerator 100 | Application.Designer.vb 101 | 102 | 103 | SettingsSingleFileGenerator 104 | My 105 | Settings.Designer.vb 106 | 107 | 108 | 109 | 116 | 117 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Classes/B2SPlayer.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032 2 | 3 | Imports System 4 | 5 | Public Class B2SPlayer 6 | 7 | Inherits Generic.Dictionary(Of Integer, ControlCollection) 8 | 9 | Public Enum eControlType 10 | NotDefined = 0 11 | LEDBox = 1 12 | Dream7LEDDisplay = 2 13 | ReelBox = 3 14 | ReelDisplay = 4 15 | End Enum 16 | 17 | Public Class ControlCollection 18 | 19 | Inherits Generic.List(Of ControlInfo) 20 | 21 | Public Shadows Sub Add(ByVal item As ControlInfo) 22 | Dim add As Boolean = True 23 | For Each control As ControlInfo In Me 24 | If control.StartDigit = item.StartDigit Then 25 | add = False 26 | Exit For 27 | End If 28 | Next 29 | If add Then 30 | MyBase.Add(item) 31 | Digits += item.Digits 32 | End If 33 | End Sub 34 | 35 | Public Property Digits() As Integer = 0 36 | 37 | Private _Score As Integer = -1 38 | Public Property Score() As Integer 39 | Get 40 | Return _Score 41 | End Get 42 | Set(ByVal value As Integer) 43 | 'If _Score <> value Then 44 | _Score = value 45 | SetScore(value) 46 | 'End If 47 | End Set 48 | End Property 49 | 50 | Private Sub SetScore(ByVal score As Integer) 51 | 52 | Dim scoreAsString As String = New String(" ", Math.Max(0, Digits - score.ToString().Length)) & score.ToString() 53 | If scoreAsString.Length > Digits Then 54 | scoreAsString = scoreAsString.Substring(scoreAsString.Length - Digits) 55 | End If 56 | 57 | For Each control As ControlInfo In Me 58 | 59 | ' get the part of the score 60 | Dim partofscore As String = scoreAsString.Substring(0, control.Digits) 61 | 62 | ' pass matching score part to real control 63 | Select Case control.Type 64 | Case eControlType.LEDBox 65 | ' nothing to do 66 | Case eControlType.Dream7LEDDisplay 67 | If Not control.LEDDisplay.Visible Then 68 | For i As Integer = control.StartDigit To control.StartDigit + control.Digits - 1 69 | B2SData.LEDs("LEDBox" & i.ToString()).Text = partofscore.Substring(i - control.StartDigit, 1) 70 | Next 71 | Else 72 | For i As Integer = 0 To control.Digits - 1 73 | control.LEDDisplay.SetValue(i, partofscore.Substring(i, 1)) 74 | Next 75 | End If 76 | Case eControlType.ReelBox 77 | ' nothing to do 78 | Case eControlType.ReelDisplay 79 | control.ReelDisplay.Score = If(IsNumeric(partofscore), CInt(partofscore), 0) 80 | End Select 81 | 82 | ' remove already passed score part 83 | scoreAsString = scoreAsString.Substring(control.Digits) 84 | 85 | Next 86 | 87 | End Sub 88 | 89 | End Class 90 | Public Class ControlInfo 91 | 92 | Public StartDigit As Integer = 0 93 | Public Digits As Integer = 0 94 | Public Type As eControlType = eControlType.NotDefined 95 | Public LEDBox As B2SLEDBox = Nothing 96 | Public LEDDisplay As Dream7Display = Nothing 97 | Public ReelBox As B2SReelBox = Nothing 98 | Public ReelDisplay As B2SReelDisplay = Nothing 99 | 100 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _ledbox As B2SLEDBox) 101 | MyNew(_startdigit, _digits, eControlType.LEDBox) 102 | LEDBox = _ledbox 103 | End Sub 104 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _leddisplay As Dream7Display) 105 | MyNew(_startdigit, _digits, eControlType.Dream7LEDDisplay) 106 | LEDDisplay = _leddisplay 107 | End Sub 108 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _reelbox As B2SReelBox) 109 | MyNew(_startdigit, _digits, eControlType.ReelBox) 110 | ReelBox = _reelbox 111 | End Sub 112 | Public Sub New(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType, ByVal _reeldisplay As B2SReelDisplay) 113 | MyNew(_startdigit, _digits, eControlType.ReelDisplay) 114 | ReelDisplay = _reeldisplay 115 | End Sub 116 | 117 | Private Sub MyNew(ByVal _startdigit As Integer, ByVal _digits As Integer, ByVal _type As eControlType) 118 | StartDigit = _startdigit 119 | Digits = _digits 120 | Type = _type 121 | End Sub 122 | 123 | End Class 124 | 125 | Public Shadows Sub Add(ByVal playerno As Integer) 126 | 127 | Dim controls As ControlCollection = New ControlCollection() 128 | MyBase.Add(playerno, controls) 129 | 130 | End Sub 131 | 132 | End Class 133 | 134 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Plugin/PluginHost.vb: -------------------------------------------------------------------------------- 1 | Imports System.IO 2 | Imports System.Reflection 3 | Imports System.ComponentModel.Composition 4 | Imports System.ComponentModel.Composition.Hosting 5 | Imports System.Windows.Forms 6 | 7 | ''' 8 | ''' Hosts and handles plugins for the B2S Server. 9 | ''' 10 | Public Class PluginHost 11 | 12 | Private _Plugins As PluginList 13 | ''' 14 | ''' Gets the list of loaded plugins. 15 | ''' 16 | ''' 17 | ''' The loaded plugins. 18 | ''' 19 | Public Property Plugins() As PluginList 20 | Get 21 | Return _Plugins 22 | End Get 23 | Private Set(ByVal value As PluginList) 24 | _Plugins = value 25 | End Set 26 | End Property 27 | 28 | 29 | ''' 30 | ''' Initializes the plugin.
31 | ''' This is the first call to a plugin after the system start up. 32 | '''
33 | ''' The table filename. 34 | ''' Name of the rom. 35 | Public Sub PluginInit(TableFilename As String, RomName As String) 36 | Plugins.PluginInit(TableFilename, RomName) 37 | End Sub 38 | ''' 39 | ''' Finishes the plugin.
40 | ''' This is the last call to a plugin before the system is shut down. 41 | '''
42 | Public Sub PluginFinish() 43 | Plugins.PluginFinish() 44 | End Sub 45 | 46 | ''' 47 | ''' Gets called when the Run method of Pinmame is called. 48 | ''' 49 | Public Sub PinMameRun() 50 | Plugins.PinMameRun() 51 | End Sub 52 | ''' 53 | ''' Gets called when the property Pause of Pinmame is set to true. 54 | ''' 55 | Public Sub PinMamePause() 56 | Plugins.PinMamePause() 57 | End Sub 58 | ''' 59 | ''' Gets called when the property Pause of Pinmame is set to false. 60 | ''' 61 | Public Sub PinMameContinue() 62 | Plugins.PinMameContinue() 63 | End Sub 64 | ''' 65 | ''' Gets called when the Stop method of Pinmame is called. 66 | ''' 67 | Public Sub PinMameStop() 68 | Plugins.PinMameStop() 69 | End Sub 70 | 71 | ''' 72 | ''' Is called when new data on a table element (Lamp, Switch, Solenoid, Mech, GI) is available. 73 | ''' 74 | ''' Type of the table element. 75 | ''' The number of the table element. 76 | ''' The value of the table element. 77 | Public Sub DataReceive(TableElementTypeChar As Char, Number As Integer, Value As Integer) 78 | Plugins.DataReceive(TableElementTypeChar, Number, Value) 79 | End Sub 80 | 81 | ''' 82 | ''' Is called when new data on a table element (Lamp, Switch, Solenoid, Mech, GI) is available. 83 | ''' 84 | ''' Type of the table element. 85 | ''' The data received from Pinmame. 86 | Public Sub DataReceive(TableElementTypeChar As Char, Data As Object) 87 | Plugins.DataReceive(TableElementTypeChar, Data) 88 | End Sub 89 | 90 | 91 | Private PluginWindow As PluginWindow = Nothing 92 | 93 | ''' 94 | ''' Shows the plugin window. 95 | ''' 96 | Sub ShowPluginWindow(Optional ParentForm As Form = Nothing, Optional ParentSettings As System.Drawing.Rectangle = Nothing) 97 | 98 | For Each F As Form In Application.OpenForms 99 | If TypeOf F Is PluginWindow Then 100 | F.BringToFront() 101 | F.Focus() 102 | Return 103 | End If 104 | Next 105 | 106 | Dim PW As PluginWindow = New PluginWindow(Plugins) 107 | If ParentSettings = Nothing Then 108 | PW.StartPosition = FormStartPosition.CenterParent 109 | End If 110 | 111 | If ParentForm IsNot Nothing Then 112 | PW.Show(ParentForm) 113 | ElseIf ParentSettings <> Nothing Then 114 | PW.Show() 115 | Dim x As Integer = CInt(ParentSettings.X + ParentSettings.Width / 2 - PW.Width / 2) 116 | Dim y As Integer = CInt(ParentSettings.Y + ParentSettings.Height / 2 - PW.Height / 2) 117 | PW.Location = New System.Drawing.Point(x, y) 118 | Else 119 | PW.Show() 120 | End If 121 | PW.BringToFront() 122 | PW.Focus() 123 | PW.PluginDataGrid.Focus() 124 | PW.TopMost = True 125 | PW.Select() 126 | PW.PluginDataGrid.Select() 127 | End Sub 128 | 129 | ''' 130 | ''' Closes the plugin window. 131 | ''' 132 | Sub ClosePluginWindow() 133 | For Each F As Form In Application.OpenForms 134 | If TypeOf F Is PluginWindow Then 135 | F.Close() 136 | Return 137 | End If 138 | Next 139 | End Sub 140 | 141 | 142 | ''' 143 | ''' Initializes a new instance of the class. 144 | ''' 145 | ''' if set to true the plugins are loaded after the class is instantiated. 146 | Public Sub New(Optional LoadPlugins As Boolean = False) 147 | Plugins = New PluginList(LoadPlugins) 148 | End Sub 149 | 150 | 151 | End Class 152 | -------------------------------------------------------------------------------- /b2sbackglassserver/b2sbackglassserver/Logging/Statistics.vb: -------------------------------------------------------------------------------- 1 | #Disable Warning BC42016, BC42017, BC42018, BC42019, BC42032 2 | Imports System 3 | Imports System.Text 4 | 5 | Public Class Statistics 6 | 7 | Private Const cMinTicks4CoolDown As Integer = 150 8 | Private Const cMinTicks4GoodCalculation As Integer = 500 9 | Private Const cMinTicks4Chillout As Integer = 18 10 | Private Const cMaxTicks4BadChillout1 As Integer = 12 11 | Private Const cMaxTicks4BadChillout2 As Integer = 8 12 | Private Const cMaxTicks4BadChillout3 As Integer = 4 13 | Private Const cMaxTicks4BadChillout4 As Integer = 2 14 | 15 | Private log As Log = Nothing 16 | 17 | Private lastTick As Date = Nothing 18 | Private counter As Integer = 0 19 | Private sum As Integer = 0 20 | Private average As Single = 0 21 | Private chiller As Integer = 0 22 | Private waitonechill As Integer = 0 23 | 24 | Private sb As StringBuilder = New StringBuilder() 25 | 26 | Public Sub New(ByRef _log As Log) 27 | log = _log 28 | End Sub 29 | 30 | Public Function AddTick(ByVal currentCoolDownCounter As Integer, ByVal info As String) As Integer 31 | 32 | Dim ret As Integer = 0 33 | 34 | Dim nowTick As Date = DateTime.Now 35 | Dim diff As Integer = (nowTick - lastTick).Milliseconds 36 | lastTick = nowTick 37 | 38 | ' calc average tick duration 39 | If counter < cMinTicks4GoodCalculation Then 40 | counter += 1 41 | sum += diff 42 | average = sum / counter 43 | End If 44 | 45 | ' calc cool down level 46 | Dim chiller4logfile As Integer = chiller 47 | If counter > cMinTicks4CoolDown Then 48 | If currentCoolDownCounter <= 0 Then chiller += 1 49 | Dim cooldownfactor As Single = diff / average 50 | If cooldownfactor > 3 Then 51 | ret = 8 52 | chiller = 0 53 | ElseIf cooldownfactor >= 2 Then 54 | ret = 6 55 | chiller = 0 56 | ElseIf cooldownfactor >= 1.5 Then 57 | ' mode 5 58 | If chiller <= 12 Then 59 | waitonechill += 1 60 | If waitonechill > 1 Then 61 | ret = Math.Round((12 - chiller) / 2) + 2 62 | If ret >= 5 Then ret += 1 63 | Else 64 | ret = 1 65 | End If 66 | 67 | ' mode 4 68 | 'If chiller <= 14 Then 69 | ' waitonechill += 1 70 | ' If waitonechill > 1 Then 71 | ' ret = Math.Round((14 - chiller) / 2) + 2 72 | ' If ret >= 6 Then ret += 1 73 | ' If ret >= 9 Then ret += 1 74 | ' Else 75 | ' ret = 1 76 | ' End If 77 | 78 | ' mode 3 79 | 'If chiller <= 16 Then 80 | 'If currentCoolDownCounter > 0 Then 81 | ' If currentCoolDownCounter < 3 Then 82 | ' ret = currentCoolDownCounter + 6 83 | ' Else 84 | ' ret = currentCoolDownCounter + 3 85 | ' End If 86 | 'Else 87 | ' ret = Math.Round((16 - chiller) / 2) + 2 88 | 'End If 89 | 90 | ' mode 2 91 | 'If chiller <= 16 Then 92 | 'ret = Math.Round((16 - chiller) / 2) + 1 93 | 94 | ' mode 1 95 | 'If chiller < cMaxTicks4BadChillout4 Then 96 | ' ret = 6 97 | 'ElseIf chiller < cMaxTicks4BadChillout3 Then 98 | ' ret = 5 99 | 'ElseIf chiller < cMaxTicks4BadChillout2 Then 100 | ' ret = 4 101 | 'ElseIf chiller < cMaxTicks4BadChillout1 Then 102 | ' ret = 3 103 | 'ElseIf chiller < cMinTicks4Chillout Then 104 | ' ret = 1 105 | Else 106 | waitonechill = 0 107 | ret = 0 108 | End If 109 | chiller = 0 110 | End If 111 | If currentCoolDownCounter > ret Then 112 | ret = currentCoolDownCounter 113 | End If 114 | End If 115 | 116 | ' maybe write log entry 117 | If log IsNot Nothing AndAlso log.IsLogOn Then 118 | sb.Length = 0 119 | sb.Append(nowTick) 120 | sb.Append(": ") 121 | sb.Append(diff) 122 | sb.Append(" , ") 123 | sb.Append(average) 124 | sb.Append(" , ") 125 | If Not String.IsNullOrEmpty(info) Then 126 | sb.Append(info) 127 | End If 128 | If counter > cMinTicks4CoolDown Then 129 | If ret > 0 Then 130 | sb.Append(" , ") 131 | sb.Append("CoolDown: " & ret) 132 | End If 133 | If chiller4logfile > 0 Then 134 | sb.Append(" , ") 135 | sb.Append("Chiller: " & chiller4logfile) 136 | End If 137 | End If 138 | log.WriteLogEntry(sb.ToString()) 139 | End If 140 | 141 | Return ret 142 | 143 | End Function 144 | 145 | End Class 146 | -------------------------------------------------------------------------------- /leds/dream7segments/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /b2sbackglassserverregisterapp/b2sbackglassserverregisterapp/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /leds/BetterLed/My Project/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /b2s_screenresidentifier/b2s_screenresidentifier/formDMD.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | --------------------------------------------------------------------------------