diff --git a/.gitignore b/.gitignore
index 4ab1d4b..dea1651 100644
--- a/.gitignore
+++ b/.gitignore
@@ -352,4 +352,4 @@ MigrationBackup/
.idea/
**/protos/*.cs
-**/Plugins/**
+**/Plugins/**/*.dll
\ No newline at end of file
diff --git a/README.md b/README.md
index ea5cac0..278f32b 100644
--- a/README.md
+++ b/README.md
@@ -34,29 +34,29 @@ actual binaries, `.meta` files of uncompiled platforms are cleaned up by Unity.
In order to not accidentally commit those files, we recommend to ignore them:
```bash
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta
git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta
git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta
git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libz.a.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/VisualPinball.Engine.PinMAME.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/VisualPinball.Engine.PinMAME.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/VisualPinball.Engine.PinMAME.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta
git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta
+git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta
git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/VisualPinball.Engine.PinMAME.dll.meta
-git update-index --assume-unchanged VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta
```
## License
This plugin is licensed under the [MIT license](LICENSE). However
since we link against PinMAME, the [MAME/BSD-3-Clause](https://github.com/vpinball/pinmame/blob/master/LICENSE)
-must be honored as well.
+must be honored as well.
\ No newline at end of file
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMame.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/PinMameDotNet.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.5.so.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/android-arm64-v8a/libpinmame.3.7.0.so.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMame.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/PinMameDotNet.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.5.a.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/ios-arm64/libpinmame.3.7.0.a.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMame.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/PinMameDotNet.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.5.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/linux-x64/libpinmame.so.3.7.0.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMame.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/osx/PinMameDotNet.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.5.dylib.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/osx/libpinmame.3.7.0.dylib.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMame.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/PinMameDotNet.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta
similarity index 100%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/libpinmame-3.5.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x64/pinmame.dll.meta
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta
index a5028c8..9c5d6fa 100644
--- a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta
+++ b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMame.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 9a12abde327b949e699c61497c4b2618
+guid: 65f3dcac0af3b4ff5b00f2edf91fe406
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta
similarity index 95%
rename from VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta
rename to VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta
index 9c5d6fa..a5028c8 100644
--- a/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/libpinmame-3.5.dll.meta
+++ b/VisualPinball.Engine.PinMAME.Unity/Plugins/win-x86/PinMameDotNet.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 65f3dcac0af3b4ff5b00f2edf91fe406
+guid: 9a12abde327b949e699c61497c4b2618
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs
index 76a051a..6d57986 100644
--- a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs
+++ b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs
@@ -742,25 +742,33 @@ public void SendInitialSwitches()
}
}
- public void Switch(string id, bool isClosed)
- {
- if (_switches.ContainsKey(id)) {
- if (_mechSwitches.Contains(_switchIdToPinMameIdMappings[_switches[id].Id])) {
- // mech switches are triggered internally by pinmame.
- return;
- }
- Logger.Info($"[PinMAME] => sw {id}: {isClosed} | {_switches[id].Description}");
- _pinMame.SetSwitch(_switchIdToPinMameIdMappings[_switches[id].Id], isClosed);
- } else if (id == "s_spawn_ball") {
- if (isClosed) {
- _ballManager.CreateBall(new DebugBallCreator(630f, _playfieldComponent.Height / 2f));
- }
- } else {
- Logger.Error($"[PinMAME] Unknown switch \"{id}\".");
- }
-
- OnSwitchChanged?.Invoke(this, new SwitchEventArgs2(id, isClosed));
- }
+ public void Switch(string id, bool isClosed)
+ {
+ if (_switches.TryGetValue(id, out var sw)) {
+ if (_switchIdToPinMameIdMappings.TryGetValue(sw.Id, out var pinMameId) && _mechSwitches.Contains(pinMameId)) {
+ // mech switches are triggered internally by pinmame.
+ return;
+ }
+ if (_pinMame != null && _isRunning) {
+ if (Logger.IsDebugEnabled) {
+ Logger.Debug($"[PinMAME] => sw {id}: {isClosed} | {sw.Description}");
+ }
+ if (_switchIdToPinMameIdMappings.TryGetValue(sw.Id, out pinMameId)) {
+ _pinMame.SetSwitch(pinMameId, isClosed);
+ }
+ }
+ } else if (id == "s_spawn_ball") {
+ if (isClosed) {
+ _ballManager.CreateBall(new DebugBallCreator(630f, _playfieldComponent.Height / 2f));
+ }
+ } else {
+ if (Logger.IsErrorEnabled) {
+ Logger.Error($"[PinMAME] Unknown switch \"{id}\".");
+ }
+ }
+
+ OnSwitchChanged?.Invoke(this, new SwitchEventArgs2(id, isClosed));
+ }
public bool GetSwitch(string id)
{
diff --git a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj
index 09a4aa4..a4da2fd 100644
--- a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj
+++ b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj
@@ -5,6 +5,8 @@
false
true
9.0
+ 1.0.0
+ 3.7.0-beta1
win-x64
@@ -13,29 +15,43 @@
linux-x64
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+ ..\VisualPinball.Engine.PinMAME.Unity\Plugins\$(RuntimeIdentifier)\pinmame.dll
+
+
+
+
+
+
+
+
+
+
+
+