From dbda3c83e5ac65aba0ea16cde64f024a9e404bd9 Mon Sep 17 00:00:00 2001 From: Jason Millard Date: Mon, 18 Apr 2022 14:37:46 -0400 Subject: [PATCH 1/2] misc: remove internal id. --- .../Runtime/PinMameGamelogicEngine.cs | 128 +++- .../Runtime/PinMameMechComponent.cs | 24 +- .../Games/AttackFromMars.cs | 339 ++++----- .../Games/CreatureFromTheBlackLagoon.cs | 296 ++++---- .../Games/FlashGordon.cs | 114 +-- .../Games/MedievalMadness.cs | 335 ++++----- VisualPinball.Engine.PinMAME/Games/Rock.cs | 171 ++--- .../Games/RockEncore.cs | 3 - .../Games/StarTrekEnterprise.cs | 649 +++++++++--------- .../Games/TRONLegacy.cs | 281 ++++---- .../Games/Terminator2.cs | 341 ++++----- .../Games/TheWalkingDead.cs | 367 +++++----- VisualPinball.Engine.PinMAME/MPUs/Bally.cs | 48 +- VisualPinball.Engine.PinMAME/MPUs/Sam.cs | 52 +- VisualPinball.Engine.PinMAME/MPUs/System80.cs | 44 +- VisualPinball.Engine.PinMAME/MPUs/Wpc.cs | 50 +- VisualPinball.Engine.PinMAME/PinMameGame.cs | 27 +- .../PinMameIdAlias.cs | 37 + .../VisualPinball.Engine.PinMAME.csproj | 4 +- 19 files changed, 1766 insertions(+), 1544 deletions(-) create mode 100644 VisualPinball.Engine.PinMAME/PinMameIdAlias.cs diff --git a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs index 9db8944..a5ef626 100644 --- a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs +++ b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs @@ -69,12 +69,14 @@ public GamelogicEngineSwitch[] RequestedSwitches { return _game?.AvailableSwitches ?? Array.Empty(); } } + public GamelogicEngineCoil[] RequestedCoils { get { UpdateCaches(); return _coils.Values.ToArray(); } } + public GamelogicEngineLamp[] RequestedLamps { get { UpdateCaches(); @@ -101,8 +103,15 @@ public GamelogicEngineLamp[] RequestedLamps { [SerializeReference] private PinMameGame _game; private Dictionary _switches = new(); - private Dictionary _coils = new(); - private Dictionary _lamps = new(); + private Dictionary _pinMameIdToSwitchIdMappings = new(); + private Dictionary _switchIdToPinMameIdMappings = new(); + + private Dictionary _coils = new(); + private Dictionary _pinMameIdToCoilIdMapping = new(); + private Dictionary _coilIdToPinMameIdMapping = new(); + + private Dictionary _lamps = new(); + private Dictionary _pinMameIdToLampIdMapping = new(); private bool _isRunning; private int _numMechs; @@ -164,17 +173,17 @@ private void Update() // lamps foreach (var changedLamp in _pinMame.GetChangedLamps()) { - if (_lamps.ContainsKey(changedLamp.Id)) { + if (_pinMameIdToLampIdMapping.ContainsKey(changedLamp.Id)) { //Logger.Info($"[PinMAME] <= lamp {changedLamp.Id}: {changedLamp.Value}"); - OnLampChanged?.Invoke(this, new LampEventArgs(_lamps[changedLamp.Id].Id, changedLamp.Id, changedLamp.Value)); + OnLampChanged?.Invoke(this, new LampEventArgs(_lamps[_pinMameIdToLampIdMapping[changedLamp.Id]].Id, changedLamp.Value)); } } // gi foreach (var changedGi in _pinMame.GetChangedGIs()) { - if (_lamps.ContainsKey(changedGi.Id)) { + if (_pinMameIdToLampIdMapping.ContainsKey(changedGi.Id)) { //Logger.Info($"[PinMAME] <= gi {changedGi.Id}: {changedGi.Value}"); - OnLampChanged?.Invoke(this, new LampEventArgs(_lamps[changedGi.Id].Id, _lamps[changedGi.Id].InternalId, changedGi.Value, LampSource.GI)); + OnLampChanged?.Invoke(this, new LampEventArgs(_lamps[_pinMameIdToLampIdMapping[changedGi.Id]].Id, changedGi.Value, LampSource.GI)); } else { Debug.Log($"No GI {changedGi.Id} found."); } @@ -279,11 +288,17 @@ private void OnGameStarted() Logger.Info($"[PinMAME] Game started."); _isRunning = true; - SendInitialSwitches(); - SendMechs(); - _solenoidDelayStart = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + try { + SendInitialSwitches(); + SendMechs(); + } + + catch(Exception e) { + Logger.Error($"[PinMAME] OnGameStarted: {e.Message}"); + } + lock (_dispatchQueue) { _dispatchQueue.Enqueue(() => OnStarted?.Invoke(this, EventArgs.Empty)); } @@ -300,17 +315,61 @@ private void UpdateCaches() if (_game == null) { return; } + _lamps.Clear(); + _pinMameIdToLampIdMapping.Clear(); + _coils.Clear(); + _pinMameIdToCoilIdMapping.Clear(); + _switches.Clear(); - foreach (var lamp in _game.AvailableLamps) { - _lamps[lamp.InternalId] = lamp; + _pinMameIdToSwitchIdMappings.Clear(); + _switchIdToPinMameIdMappings.Clear(); + + foreach (var alias in _game.AvailableAliases) { + switch (alias.AliasType) { + case AliasType.Switch: + _pinMameIdToSwitchIdMappings[alias.Id] = alias.Name; + _switchIdToPinMameIdMappings[alias.Name] = alias.Id; + break; + + + case AliasType.Coil: + _pinMameIdToCoilIdMapping[alias.Id] = alias.Name; + _coilIdToPinMameIdMapping[alias.Name] = alias.Id; + break; + + case AliasType.Lamp: + _pinMameIdToLampIdMapping[alias.Id] = alias.Name; + break; + } } + + + foreach (var @switch in _game.AvailableSwitches) { + _switches[@switch.Id] = @switch; + + if (int.TryParse(@switch.Id, out int pinMameId)) { + _pinMameIdToSwitchIdMappings[pinMameId] = @switch.Id; + _switchIdToPinMameIdMappings[@switch.Id] = pinMameId; + } + } + foreach (var coil in _game.AvailableCoils) { - _coils[coil.InternalId] = coil; + _coils[coil.Id] = coil; + + if (int.TryParse(coil.Id, out int pinMameId)) { + _pinMameIdToCoilIdMapping[pinMameId] = coil.Id; + _coilIdToPinMameIdMapping[coil.Id] = pinMameId; + } } - foreach (var sw in _game.AvailableSwitches) { - _switches[sw.Id] = sw; + + foreach (var lamp in _game.AvailableLamps) { + _lamps[lamp.Id] = lamp; + + if (int.TryParse(lamp.Id, out int pinMameId)) { + _pinMameIdToLampIdMapping[pinMameId] = lamp.Id; + } } } @@ -568,15 +627,15 @@ public void SetCoil(string n, bool value) { OnCoilChanged?.Invoke(this, new CoilEventArgs(n, value)); } + public bool GetCoil(string id) { return _player != null && _player.CoilStatuses.ContainsKey(id) && _player.CoilStatuses[id]; } - private void OnSolenoidUpdated(int internalId, bool isActive) + private void OnSolenoidUpdated(int id, bool isActive) { - if (_coils.ContainsKey(internalId)) { - + if (_pinMameIdToCoilIdMapping.ContainsKey(id)) { if (!_solenoidsEnabled) { _solenoidsEnabled = DateTimeOffset.Now.ToUnixTimeMilliseconds() - _solenoidDelayStart >= SolenoidDelay; @@ -585,25 +644,21 @@ private void OnSolenoidUpdated(int internalId, bool isActive) } } + var coil = _coils[_pinMameIdToCoilIdMapping[id]]; + if (_solenoidsEnabled) { - var coil = _coils[internalId]; - var id = coil != null ? coil.Id : internalId.ToString(); - var desc = coil != null ? coil.Description : "-"; - Logger.Info($"[PinMAME] <= coil {id} ({internalId}): {isActive} | {desc}"); + Logger.Info($"[PinMAME] <= coil {coil.Id} : {isActive} | {coil.Description}"); lock (_dispatchQueue) { - id = _coils[internalId].Id; - _dispatchQueue.Enqueue(() => OnCoilChanged?.Invoke(this, new CoilEventArgs(id, isActive))); + _dispatchQueue.Enqueue(() => OnCoilChanged?.Invoke(this, new CoilEventArgs(coil.Id, isActive))); } } - else - { - Logger.Info($"[PinMAME] <= solenoids disabled, coil {_coils[internalId].Id} ({internalId}): {isActive} | {_coils[internalId].Description}"); + else { + Logger.Info($"[PinMAME] <= solenoids disabled, coil {coil.Id} : {isActive} | {coil.Description}"); } } - else - { - Logger.Warn($"[PinMAME] <= coil UNMAPPED {internalId}: {isActive}"); + else { + Logger.Warn($"[PinMAME] <= coil UNMAPPED {id}: {isActive}"); } } @@ -635,9 +690,10 @@ public void SendInitialSwitches() if (!isClosed) { continue; } - if (_switches.ContainsKey(id) && !_mechSwitches.Contains(_switches[id].InternalId)) { - Logger.Info($"[PinMAME] => sw {id} ({_switches[id].InternalId}): {true} | {_switches[id].Description}"); - _pinMame.SetSwitch(_switches[id].InternalId, true); + if (_switches.ContainsKey(id) && !_mechSwitches.Contains(_switchIdToPinMameIdMappings[_switches[id].Id])) { + Logger.Info($"[PinMAME] => sw {id} ({_switches[id].Id}): {true} | {_switches[id].Description}"); + + _pinMame.SetSwitch(_switchIdToPinMameIdMappings[_switches[id].Id], true); } } } @@ -645,12 +701,12 @@ public void SendInitialSwitches() public void Switch(string id, bool isClosed) { if (_switches.ContainsKey(id)) { - if (_mechSwitches.Contains(_switches[id].InternalId)) { + if (_mechSwitches.Contains(_switchIdToPinMameIdMappings[_switches[id].Id])) { // mech switches are triggered internally by pinmame. return; } - Logger.Info($"[PinMAME] => sw {id} ({_switches[id].InternalId}): {isClosed} | {_switches[id].Description}"); - _pinMame.SetSwitch(_switches[id].InternalId, isClosed); + Logger.Info($"[PinMAME] => sw {id}: {isClosed} | {_switches[id].Description}"); + _pinMame.SetSwitch(_switchIdToPinMameIdMappings[_switches[id].Id], isClosed); } else { Logger.Error($"[PinMAME] Unknown switch \"{id}\"."); } @@ -698,7 +754,7 @@ private void SendMechs() Logger.Error($"PinMAME only supports up to {max} custom mechs, ignoring {mech.name}."); return; } - var mechConfig = mech.Config(_player.SwitchMapping, _player.CoilMapping); + var mechConfig = mech.Config(_player.SwitchMapping, _player.CoilMapping, _switchIdToPinMameIdMappings, _coilIdToPinMameIdMapping); _pinMame.SetMech(id, mechConfig); foreach (var c in mechConfig.SwitchList) { _mechSwitches.Add(c.SwNo); diff --git a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameMechComponent.cs b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameMechComponent.cs index 6052071..2f17132 100644 --- a/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameMechComponent.cs +++ b/VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameMechComponent.cs @@ -79,7 +79,7 @@ public class PinMameMechComponent : MonoBehaviour, IMechHandler, ISwitchDeviceCo public event EventHandler OnMechUpdate; - public PinMameMechConfig Config(List switchMappings, List coilMappings) + public PinMameMechConfig Config(List switchMappings, List coilMappings, Dictionary switchIdToPinMameIdMappings, Dictionary coilIdToPinMameIdMappings) { var type = 0u; type |= Type switch { @@ -102,13 +102,23 @@ public PinMameMechConfig Config(List switchMappings, List ReferenceEquals(cm.Device, this) && cm.DeviceItem == _solenoid1); + if (coilMapping1 != null && coilIdToPinMameIdMappings.ContainsKey(coilMapping1.Id)) { + coilId1 = coilIdToPinMameIdMappings[coilMapping1.Id]; + } + var coilMapping2 = coilMappings.FirstOrDefault(cm => ReferenceEquals(cm.Device, this) && cm.DeviceItem == _solenoid2); + if (coilMapping2 != null && coilIdToPinMameIdMappings.ContainsKey(coilMapping2.Id)) { + coilId2 = coilIdToPinMameIdMappings[coilMapping2.Id]; + } var mechConfig = new PinMameMechConfig( type, - coilMapping1?.InternalId ?? 0, - coilMapping2?.InternalId ?? 0, + coilId1, + coilId2, Length, Steps, 0, @@ -125,16 +135,17 @@ public PinMameMechConfig Config(List switchMappings, List(); foreach (var mark in Marks) { if (!mark.HasId || switchIds.Contains(mark.SwitchId)) { diff --git a/VisualPinball.Engine.PinMAME/Games/AttackFromMars.cs b/VisualPinball.Engine.PinMAME/Games/AttackFromMars.cs index 7517a10..2162ac5 100644 --- a/VisualPinball.Engine.PinMAME/Games/AttackFromMars.cs +++ b/VisualPinball.Engine.PinMAME/Games/AttackFromMars.cs @@ -14,12 +14,12 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.PinMAME.MPUs; -using VisualPinball.Engine.VPT.Plunger; -using VisualPinball.Engine.VPT.Trough; namespace VisualPinball.Engine.PinMAME.Games { @@ -43,179 +43,182 @@ public class AttackFromMars : Wpc new PinMameRom("afm_f32", "0.32", "FreeWPC"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("11") { Description = "Launch Ball", InputActionHint = InputConstants.ActionPlunger }, - - new GamelogicEngineSwitch("13") { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, - new GamelogicEngineSwitch("14") { Description = "Plumb Bolt Tilt" }, - - new GamelogicEngineSwitch("16") { Description = "Left Outline" }, - new GamelogicEngineSwitch("17") { Description = "Right Return Lane" }, - new GamelogicEngineSwitch("18") { Description = "Shooter Lane" }, - - new GamelogicEngineSwitch("21") { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, - new GamelogicEngineSwitch("22") { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, - - new GamelogicEngineSwitch("24") { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, - - new GamelogicEngineSwitch("26") { Description = "Left Return Lane" }, - new GamelogicEngineSwitch("27") { Description = "Right Outlane" }, - - new GamelogicEngineSwitch("31") { Description = "Trough Eject (jam)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "jam"}, - new GamelogicEngineSwitch("32") { Description = "Trough Ball 1", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, - new GamelogicEngineSwitch("33") { Description = "Trough Ball 2", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, - new GamelogicEngineSwitch("34") { Description = "Trough Ball 3", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, - new GamelogicEngineSwitch("35") { Description = "Trough Ball 4", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "4" }, - new GamelogicEngineSwitch("36") { Description = "Left Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, - new GamelogicEngineSwitch("37") { Description = "Right Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, - new GamelogicEngineSwitch("38") { Description = "Left Top Lane" }, - - new GamelogicEngineSwitch("41") { Description = "MARTI\"A\"N Target" }, - new GamelogicEngineSwitch("42") { Description = "MARTIA\"N\" Target" }, - new GamelogicEngineSwitch("43") { Description = "MAR\"T\"IAN Target" }, - new GamelogicEngineSwitch("44") { Description = "MART\"I\"AN Target" }, - new GamelogicEngineSwitch("45") { Description = "Left Motor Bank" }, - new GamelogicEngineSwitch("46") { Description = "Center Motor Bank" }, - new GamelogicEngineSwitch("47") { Description = "Right Motor Bank" }, - new GamelogicEngineSwitch("48") { Description = "Right Top Lane" }, - - new GamelogicEngineSwitch("51") { Description = "Left Slingshot (Kicker)" }, - new GamelogicEngineSwitch("52") { Description = "Right Slingshot (Kicker)" }, - new GamelogicEngineSwitch("53") { Description = "Left Jet Bumper" }, - new GamelogicEngineSwitch("54") { Description = "Bottom Jet Bumper" }, - new GamelogicEngineSwitch("55") { Description = "Right Jet Bumper" }, - new GamelogicEngineSwitch("56") { Description = "\"M\"ARTIAN Target" }, - new GamelogicEngineSwitch("57") { Description = "M\"A\"RTIAN Target" }, - new GamelogicEngineSwitch("58") { Description = "MA\"R\"TIAN Target" }, - - new GamelogicEngineSwitch("61") { Description = "Left Ramp Enter" }, - new GamelogicEngineSwitch("62") { Description = "Center Ramp Enter" }, - new GamelogicEngineSwitch("63") { Description = "Right Ramp Enter" }, - new GamelogicEngineSwitch("64") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("65") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("66") { Description = "Motor Bank Down" }, - new GamelogicEngineSwitch("67") { Description = "Motor Bank Up" }, - - new GamelogicEngineSwitch("71") { Description = "Right Bank High" }, - new GamelogicEngineSwitch("72") { Description = "Right Bank Low" }, - new GamelogicEngineSwitch("73") { Description = "Left Loop High" }, - new GamelogicEngineSwitch("74") { Description = "Left Loop Low" }, - new GamelogicEngineSwitch("75") { Description = "Left Saucer Target" }, - new GamelogicEngineSwitch("76") { Description = "Right Saucer Target" }, - new GamelogicEngineSwitch("77") { Description = "Drop Targets" }, - new GamelogicEngineSwitch("78") { Description = "Center Trough" }, + new GamelogicEngineSwitch(11) { Description = "Launch Ball", InputActionHint = InputConstants.ActionPlunger }, + + new GamelogicEngineSwitch(13) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, + new GamelogicEngineSwitch(14) { Description = "Plumb Bolt Tilt" }, + + new GamelogicEngineSwitch(16) { Description = "Left Outline" }, + new GamelogicEngineSwitch(17) { Description = "Right Return Lane" }, + new GamelogicEngineSwitch(18) { Description = "Shooter Lane" }, + + new GamelogicEngineSwitch(21) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, + new GamelogicEngineSwitch(22) { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, + + new GamelogicEngineSwitch(24) { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, + + new GamelogicEngineSwitch(26) { Description = "Left Return Lane" }, + new GamelogicEngineSwitch(27) { Description = "Right Outlane" }, + + new GamelogicEngineSwitch(31) { Description = "Trough Eject (jam)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "jam"}, + new GamelogicEngineSwitch(32) { Description = "Trough Ball 1", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, + new GamelogicEngineSwitch(33) { Description = "Trough Ball 2", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, + new GamelogicEngineSwitch(34) { Description = "Trough Ball 3", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, + new GamelogicEngineSwitch(35) { Description = "Trough Ball 4", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "4" }, + new GamelogicEngineSwitch(36) { Description = "Left Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, + new GamelogicEngineSwitch(37) { Description = "Right Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, + new GamelogicEngineSwitch(38) { Description = "Left Top Lane" }, + + new GamelogicEngineSwitch(41) { Description = "MARTI\"A\"N Target" }, + new GamelogicEngineSwitch(42) { Description = "MARTIA\"N\" Target" }, + new GamelogicEngineSwitch(43) { Description = "MAR\"T\"IAN Target" }, + new GamelogicEngineSwitch(44) { Description = "MART\"I\"AN Target" }, + new GamelogicEngineSwitch(45) { Description = "Left Motor Bank" }, + new GamelogicEngineSwitch(46) { Description = "Center Motor Bank" }, + new GamelogicEngineSwitch(47) { Description = "Right Motor Bank" }, + new GamelogicEngineSwitch(48) { Description = "Right Top Lane" }, + + new GamelogicEngineSwitch(51) { Description = "Left Slingshot (Kicker)" }, + new GamelogicEngineSwitch(52) { Description = "Right Slingshot (Kicker)" }, + new GamelogicEngineSwitch(53) { Description = "Left Jet Bumper" }, + new GamelogicEngineSwitch(54) { Description = "Bottom Jet Bumper" }, + new GamelogicEngineSwitch(55) { Description = "Right Jet Bumper" }, + new GamelogicEngineSwitch(56) { Description = "\"M\"ARTIAN Target" }, + new GamelogicEngineSwitch(57) { Description = "M\"A\"RTIAN Target" }, + new GamelogicEngineSwitch(58) { Description = "MA\"R\"TIAN Target" }, + + new GamelogicEngineSwitch(61) { Description = "Left Ramp Enter" }, + new GamelogicEngineSwitch(62) { Description = "Center Ramp Enter" }, + new GamelogicEngineSwitch(63) { Description = "Right Ramp Enter" }, + new GamelogicEngineSwitch(64) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(65) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(66) { Description = "Motor Bank Down" }, + new GamelogicEngineSwitch(67) { Description = "Motor Bank Up" }, + + new GamelogicEngineSwitch(71) { Description = "Right Bank High" }, + new GamelogicEngineSwitch(72) { Description = "Right Bank Low" }, + new GamelogicEngineSwitch(73) { Description = "Left Loop High" }, + new GamelogicEngineSwitch(74) { Description = "Left Loop Low" }, + new GamelogicEngineSwitch(75) { Description = "Left Saucer Target" }, + new GamelogicEngineSwitch(76) { Description = "Right Saucer Target" }, + new GamelogicEngineSwitch(77) { Description = "Drop Targets" }, + new GamelogicEngineSwitch(78) { Description = "Center Trough" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("11") { Description = "Super Jets" }, - new GamelogicEngineLamp("12") { Description = "Super Jackpot" }, - new GamelogicEngineLamp("13") { Description = "Martian Attack Multi-ball" }, - new GamelogicEngineLamp("14") { Description = "Annihilation" }, - new GamelogicEngineLamp("15") { Description = "Return To Battle (2)" }, - new GamelogicEngineLamp("16") { Description = "Conquer Mars" }, - new GamelogicEngineLamp("17") { Description = "5-Way Combo" }, - new GamelogicEngineLamp("18") { Description = "Drop Target" }, - - new GamelogicEngineLamp("21") { Description = "Big-O-Beam 1" }, - new GamelogicEngineLamp("22") { Description = "Big-O-Beam 2" }, - new GamelogicEngineLamp("23") { Description = "Big-O-Beam 3" }, - new GamelogicEngineLamp("24") { Description = "Left Ramp Jackpot" }, - new GamelogicEngineLamp("25") { Description = "Left Ramp Arrow" }, - new GamelogicEngineLamp("26") { Description = "Lock 2" }, - new GamelogicEngineLamp("27") { Description = "Lock 3" }, - new GamelogicEngineLamp("28") { Description = "Center Ramp Jackpot" }, - - new GamelogicEngineLamp("31") { Description = "Tractor Beam 1" }, - new GamelogicEngineLamp("32") { Description = "Tractor Beam 2" }, - new GamelogicEngineLamp("33") { Description = "Tractor Beam 3" }, - new GamelogicEngineLamp("34") { Description = "Right Ramp Jackpot" }, - new GamelogicEngineLamp("35") { Description = "Right Ramp Arrow" }, - new GamelogicEngineLamp("36") { Description = "Martian Attack" }, - new GamelogicEngineLamp("37") { Description = "Rule Universe" }, - new GamelogicEngineLamp("38") { Description = "Stroke Of Luck" }, - - new GamelogicEngineLamp("41") { Description = "Right Loop Arrow" }, - new GamelogicEngineLamp("42") { Description = "Center Ramp Arrow" }, - new GamelogicEngineLamp("43") { Description = "Left Top Lane" }, - new GamelogicEngineLamp("44") { Description = "Right Top Lane" }, - new GamelogicEngineLamp("45") { Description = "Left Motor Bank" }, - new GamelogicEngineLamp("46") { Description = "Center Motor Bank" }, - new GamelogicEngineLamp("47") { Description = "Right Motor Bank" }, - new GamelogicEngineLamp("48") { Description = "MARTIAN Target" }, - - new GamelogicEngineLamp("51") { Description = "Attack Mars" }, - new GamelogicEngineLamp("52") { Description = "D.C., U.S.A." }, - new GamelogicEngineLamp("53") { Description = "London, England" }, - new GamelogicEngineLamp("54") { Description = "Light Lock" }, - new GamelogicEngineLamp("55") { Description = "Lock 1" }, - new GamelogicEngineLamp("56") { Description = "Pisa, Italy" }, - new GamelogicEngineLamp("57") { Description = "Berlin, Germany" }, - new GamelogicEngineLamp("58") { Description = "Paris, France" }, - - new GamelogicEngineLamp("61") { Description = "Francois d'Grimm" }, - new GamelogicEngineLamp("62") { Description = "King of Payne" }, - new GamelogicEngineLamp("63") { Description = "Earl of Ego" }, - new GamelogicEngineLamp("64") { Description = "Left Ramp Jackpot" }, - new GamelogicEngineLamp("65") { Description = "Revolting Peasants!" }, - new GamelogicEngineLamp("66") { Description = "Ugly Riot!" }, - new GamelogicEngineLamp("67") { Description = "Angry Mob!" }, - new GamelogicEngineLamp("68") { Description = "Rabble Rouser" }, - - new GamelogicEngineLamp("71") { Description = "Howard Hurtz" }, - new GamelogicEngineLamp("72") { Description = "Magic Shield" }, - new GamelogicEngineLamp("73") { Description = "Sir Psycho" }, - new GamelogicEngineLamp("74") { Description = "Duke of Bourbon" }, - new GamelogicEngineLamp("75") { Description = "Castle Lock 2" }, - new GamelogicEngineLamp("76") { Description = "Castle Lock 1" }, - new GamelogicEngineLamp("77") { Description = "Super Jackpot" }, - new GamelogicEngineLamp("78") { Description = "Super Jets (2)" }, - - new GamelogicEngineLamp("81") { Description = "Right Outlane" }, - new GamelogicEngineLamp("82") { Description = "Right Return" }, - new GamelogicEngineLamp("83") { Description = "Left Return" }, - new GamelogicEngineLamp("84") { Description = "Left Outlane" }, - new GamelogicEngineLamp("85") { Description = "Castle Lock 3" }, - new GamelogicEngineLamp("86") { Description = "Shoot Again" }, - new GamelogicEngineLamp("87") { Description = "Launch Button" }, - new GamelogicEngineLamp("88") { Description = "Start Button" } + new GamelogicEngineLamp(11) { Description = "Super Jets" }, + new GamelogicEngineLamp(12) { Description = "Super Jackpot" }, + new GamelogicEngineLamp(13) { Description = "Martian Attack Multi-ball" }, + new GamelogicEngineLamp(14) { Description = "Annihilation" }, + new GamelogicEngineLamp(15) { Description = "Return To Battle (2)" }, + new GamelogicEngineLamp(16) { Description = "Conquer Mars" }, + new GamelogicEngineLamp(17) { Description = "5-Way Combo" }, + new GamelogicEngineLamp(18) { Description = "Drop Target" }, + + new GamelogicEngineLamp(21) { Description = "Big-O-Beam 1" }, + new GamelogicEngineLamp(22) { Description = "Big-O-Beam 2" }, + new GamelogicEngineLamp(23) { Description = "Big-O-Beam 3" }, + new GamelogicEngineLamp(24) { Description = "Left Ramp Jackpot" }, + new GamelogicEngineLamp(25) { Description = "Left Ramp Arrow" }, + new GamelogicEngineLamp(26) { Description = "Lock 2" }, + new GamelogicEngineLamp(27) { Description = "Lock 3" }, + new GamelogicEngineLamp(28) { Description = "Center Ramp Jackpot" }, + + new GamelogicEngineLamp(31) { Description = "Tractor Beam 1" }, + new GamelogicEngineLamp(32) { Description = "Tractor Beam 2" }, + new GamelogicEngineLamp(33) { Description = "Tractor Beam 3" }, + new GamelogicEngineLamp(34) { Description = "Right Ramp Jackpot" }, + new GamelogicEngineLamp(35) { Description = "Right Ramp Arrow" }, + new GamelogicEngineLamp(36) { Description = "Martian Attack" }, + new GamelogicEngineLamp(37) { Description = "Rule Universe" }, + new GamelogicEngineLamp(38) { Description = "Stroke Of Luck" }, + + new GamelogicEngineLamp(41) { Description = "Right Loop Arrow" }, + new GamelogicEngineLamp(42) { Description = "Center Ramp Arrow" }, + new GamelogicEngineLamp(43) { Description = "Left Top Lane" }, + new GamelogicEngineLamp(44) { Description = "Right Top Lane" }, + new GamelogicEngineLamp(45) { Description = "Left Motor Bank" }, + new GamelogicEngineLamp(46) { Description = "Center Motor Bank" }, + new GamelogicEngineLamp(47) { Description = "Right Motor Bank" }, + new GamelogicEngineLamp(48) { Description = "MARTIAN Target" }, + + new GamelogicEngineLamp(51) { Description = "Attack Mars" }, + new GamelogicEngineLamp(52) { Description = "D.C., U.S.A." }, + new GamelogicEngineLamp(53) { Description = "London, England" }, + new GamelogicEngineLamp(54) { Description = "Light Lock" }, + new GamelogicEngineLamp(55) { Description = "Lock 1" }, + new GamelogicEngineLamp(56) { Description = "Pisa, Italy" }, + new GamelogicEngineLamp(57) { Description = "Berlin, Germany" }, + new GamelogicEngineLamp(58) { Description = "Paris, France" }, + + new GamelogicEngineLamp(61) { Description = "Francois d'Grimm" }, + new GamelogicEngineLamp(62) { Description = "King of Payne" }, + new GamelogicEngineLamp(63) { Description = "Earl of Ego" }, + new GamelogicEngineLamp(64) { Description = "Left Ramp Jackpot" }, + new GamelogicEngineLamp(65) { Description = "Revolting Peasants!" }, + new GamelogicEngineLamp(66) { Description = "Ugly Riot!" }, + new GamelogicEngineLamp(67) { Description = "Angry Mob!" }, + new GamelogicEngineLamp(68) { Description = "Rabble Rouser" }, + + new GamelogicEngineLamp(71) { Description = "Howard Hurtz" }, + new GamelogicEngineLamp(72) { Description = "Magic Shield" }, + new GamelogicEngineLamp(73) { Description = "Sir Psycho" }, + new GamelogicEngineLamp(74) { Description = "Duke of Bourbon" }, + new GamelogicEngineLamp(75) { Description = "Castle Lock 2" }, + new GamelogicEngineLamp(76) { Description = "Castle Lock 1" }, + new GamelogicEngineLamp(77) { Description = "Super Jackpot" }, + new GamelogicEngineLamp(78) { Description = "Super Jets (2)" }, + + new GamelogicEngineLamp(81) { Description = "Right Outlane" }, + new GamelogicEngineLamp(82) { Description = "Right Return" }, + new GamelogicEngineLamp(83) { Description = "Left Return" }, + new GamelogicEngineLamp(84) { Description = "Left Outlane" }, + new GamelogicEngineLamp(85) { Description = "Castle Lock 3" }, + new GamelogicEngineLamp(86) { Description = "Shoot Again" }, + new GamelogicEngineLamp(87) { Description = "Launch Button" }, + new GamelogicEngineLamp(88) { Description = "Start Button" } }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01", 1) { Description = "Auto Plunger", DeviceHint = "Plunger", DeviceItemHint = "c_autofire" }, - new GamelogicEngineCoil("02", 2) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, - new GamelogicEngineCoil("03", 3) { Description = "Left Popper" }, - new GamelogicEngineCoil("04", 4) { Description = "Right Popper" }, - new GamelogicEngineCoil("05", 5) { Description = "Left Alien Low" }, - new GamelogicEngineCoil("06", 6) { Description = "Left Alien High" }, - new GamelogicEngineCoil("07", 7) { Description = "Knocker" }, - new GamelogicEngineCoil("08", 8) { Description = "Right Alien High" }, - new GamelogicEngineCoil("09", 9) { Description = "Left Slingshot" }, - new GamelogicEngineCoil("10") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("11") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("12") { Description = "Left Jet Bumper" }, - new GamelogicEngineCoil("13") { Description = "Bottom Jet Bumper" }, - new GamelogicEngineCoil("14") { Description = "Right Alien Low" }, - new GamelogicEngineCoil("15") { Description = "Saucer Shake" }, - new GamelogicEngineCoil("16") { Description = "Drop Target" }, - new GamelogicEngineCoil("17") { Description = "Right Ramp High Flashers", IsLamp = true }, - new GamelogicEngineCoil("18") { Description = "Right Ramp Low Flasher", IsLamp = true }, - new GamelogicEngineCoil("19") { Description = "Right Side High Flashers", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Right Side Low Flasher", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Center Arrow Flasher", IsLamp = true }, - new GamelogicEngineCoil("22") { Description = "Jets", IsLamp = true }, - new GamelogicEngineCoil("23") { Description = "Saucer Dome", IsLamp = true }, - new GamelogicEngineCoil("24") { Description = "Motor Bank", IsLamp = true }, - new GamelogicEngineCoil("25") { Description = "Left Ramp Left" }, - new GamelogicEngineCoil("26") { Description = "Left Ramp Right" }, - new GamelogicEngineCoil("27") { Description = "Left Side High" }, - new GamelogicEngineCoil("28") { Description = "Left Side Low" }, - new GamelogicEngineCoil("33") { Description = "Right Gate" }, - new GamelogicEngineCoil("34") { Description = "Left Gate" }, - new GamelogicEngineCoil("35") { Description = "Diverter Power" }, - new GamelogicEngineCoil("36") { Description = "Diverter Hold" }, - new GamelogicEngineCoil("37") { Description = "L.E.D. Clock", IsLamp = true }, - new GamelogicEngineCoil("38") { Description = "L.E.D. Data", IsLamp = true }, - new GamelogicEngineCoil("39") { Description = "Strobe Light", IsLamp = true }, + new GamelogicEngineCoil(1) { Description = "Auto Plunger", DeviceHint = "Plunger", DeviceItemHint = "c_autofire" }, + new GamelogicEngineCoil(2) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, + new GamelogicEngineCoil(3) { Description = "Left Popper" }, + new GamelogicEngineCoil(4) { Description = "Right Popper" }, + new GamelogicEngineCoil(5) { Description = "Left Alien Low" }, + new GamelogicEngineCoil(6) { Description = "Left Alien High" }, + new GamelogicEngineCoil(7) { Description = "Knocker" }, + new GamelogicEngineCoil(8) { Description = "Right Alien High" }, + new GamelogicEngineCoil(9) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(10) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(11) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(12) { Description = "Left Jet Bumper" }, + new GamelogicEngineCoil(13) { Description = "Bottom Jet Bumper" }, + new GamelogicEngineCoil(14) { Description = "Right Alien Low" }, + new GamelogicEngineCoil(15) { Description = "Saucer Shake" }, + new GamelogicEngineCoil(16) { Description = "Drop Target" }, + new GamelogicEngineCoil(17) { Description = "Right Ramp High Flashers", IsLamp = true }, + new GamelogicEngineCoil(18) { Description = "Right Ramp Low Flasher", IsLamp = true }, + new GamelogicEngineCoil(19) { Description = "Right Side High Flashers", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Right Side Low Flasher", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Center Arrow Flasher", IsLamp = true }, + new GamelogicEngineCoil(22) { Description = "Jets", IsLamp = true }, + new GamelogicEngineCoil(23) { Description = "Saucer Dome", IsLamp = true }, + new GamelogicEngineCoil(24) { Description = "Motor Bank", IsLamp = true }, + new GamelogicEngineCoil(25) { Description = "Left Ramp Left" }, + new GamelogicEngineCoil(26) { Description = "Left Ramp Right" }, + new GamelogicEngineCoil(27) { Description = "Left Side High" }, + new GamelogicEngineCoil(28) { Description = "Left Side Low" }, + new GamelogicEngineCoil(33) { Description = "Right Gate" }, + new GamelogicEngineCoil(34) { Description = "Left Gate" }, + new GamelogicEngineCoil(35) { Description = "Diverter Power" }, + new GamelogicEngineCoil(36) { Description = "Diverter Hold" }, + new GamelogicEngineCoil(37) { Description = "L.E.D. Clock", IsLamp = true }, + new GamelogicEngineCoil(38) { Description = "L.E.D. Data", IsLamp = true }, + new GamelogicEngineCoil(39) { Description = "Strobe Light", IsLamp = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/CreatureFromTheBlackLagoon.cs b/VisualPinball.Engine.PinMAME/Games/CreatureFromTheBlackLagoon.cs index 1b11097..8a1cc90 100644 --- a/VisualPinball.Engine.PinMAME/Games/CreatureFromTheBlackLagoon.cs +++ b/VisualPinball.Engine.PinMAME/Games/CreatureFromTheBlackLagoon.cs @@ -14,11 +14,12 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.PinMAME.MPUs; -using VisualPinball.Engine.VPT.Trough; namespace VisualPinball.Engine.PinMAME.Games { @@ -41,158 +42,161 @@ public class CreatureFromTheBlackLagoon : Wpc new PinMameRom("cftbl_l4c", "L-4C", "Competition + LED Ghost MOD"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("13") { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, - new GamelogicEngineSwitch("14") { Description = "Plumb Bolt Tilt" }, - new GamelogicEngineSwitch("15") { Description = "Top Left Rollover" }, - new GamelogicEngineSwitch("16") { Description = "Left Subway" }, - new GamelogicEngineSwitch("17") { Description = "Center Subway" }, - new GamelogicEngineSwitch("18") { Description = "Center Shot" }, - - new GamelogicEngineSwitch("21") { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, - new GamelogicEngineSwitch("22") { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, - new GamelogicEngineSwitch("24") { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, - new GamelogicEngineSwitch("25") { Description = "(P)-A-I-D"}, - new GamelogicEngineSwitch("26") { Description = "P-(A)-I-D" }, - new GamelogicEngineSwitch("27") { Description = "P-A-(I)-D" }, - new GamelogicEngineSwitch("28") { Description = "P-A-I-(D)" }, - - new GamelogicEngineSwitch("33") { Description = "Bottom Jet" }, - new GamelogicEngineSwitch("34") { Description = "Right Popper" }, - new GamelogicEngineSwitch("35") { Description = "Right Ramp Enter" }, - new GamelogicEngineSwitch("36") { Description = "Left Ramp Enter" }, - new GamelogicEngineSwitch("37") { Description = "Lower Right Popper" }, - new GamelogicEngineSwitch("38") { Description = "Ramp Up/Down" }, - - new GamelogicEngineSwitch("41") { Description = "Cola" }, - new GamelogicEngineSwitch("42") { Description = "Hot Dog" }, - new GamelogicEngineSwitch("43") { Description = "Popcorn" }, - new GamelogicEngineSwitch("44") { Description = "Ice Cream" }, - new GamelogicEngineSwitch("45") { Description = "Left Jet" }, - new GamelogicEngineSwitch("46") { Description = "Right Jet" }, - new GamelogicEngineSwitch("47") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("48") { Description = "Right Slingshot" }, - - new GamelogicEngineSwitch("51") { Description = "Left Out Lane" }, - new GamelogicEngineSwitch("52") { Description = "Left Return Lane" }, - new GamelogicEngineSwitch("53") { Description = "Start Combo" }, - new GamelogicEngineSwitch("54") { Description = "Right Out Lane" }, - new GamelogicEngineSwitch("55") { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, - new GamelogicEngineSwitch("56") { Description = "Right Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, - new GamelogicEngineSwitch("57") { Description = "Center Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, - new GamelogicEngineSwitch("58") { Description = "Left Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, - - new GamelogicEngineSwitch("61") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("62") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("63") { Description = "Center Lane Exit" }, - new GamelogicEngineSwitch("64") { Description = "Upper Ramp" }, - new GamelogicEngineSwitch("65") { Description = "Bowl" }, - new GamelogicEngineSwitch("66") { Description = "Shooter" }, + new GamelogicEngineSwitch(13) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, + new GamelogicEngineSwitch(14) { Description = "Plumb Bolt Tilt" }, + new GamelogicEngineSwitch(15) { Description = "Top Left Rollover" }, + new GamelogicEngineSwitch(16) { Description = "Left Subway" }, + new GamelogicEngineSwitch(17) { Description = "Center Subway" }, + new GamelogicEngineSwitch(18) { Description = "Center Shot" }, + + new GamelogicEngineSwitch(21) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, + new GamelogicEngineSwitch(22) { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, + new GamelogicEngineSwitch(24) { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, + new GamelogicEngineSwitch(25) { Description = "(P)-A-I-D"}, + new GamelogicEngineSwitch(26) { Description = "P-(A)-I-D" }, + new GamelogicEngineSwitch(27) { Description = "P-A-(I)-D" }, + new GamelogicEngineSwitch(28) { Description = "P-A-I-(D)" }, + + new GamelogicEngineSwitch(33) { Description = "Bottom Jet" }, + new GamelogicEngineSwitch(34) { Description = "Right Popper" }, + new GamelogicEngineSwitch(35) { Description = "Right Ramp Enter" }, + new GamelogicEngineSwitch(36) { Description = "Left Ramp Enter" }, + new GamelogicEngineSwitch(37) { Description = "Lower Right Popper" }, + new GamelogicEngineSwitch(38) { Description = "Ramp Up/Down" }, + + new GamelogicEngineSwitch(41) { Description = "Cola" }, + new GamelogicEngineSwitch(42) { Description = "Hot Dog" }, + new GamelogicEngineSwitch(43) { Description = "Popcorn" }, + new GamelogicEngineSwitch(44) { Description = "Ice Cream" }, + new GamelogicEngineSwitch(45) { Description = "Left Jet" }, + new GamelogicEngineSwitch(46) { Description = "Right Jet" }, + new GamelogicEngineSwitch(47) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(48) { Description = "Right Slingshot" }, + + new GamelogicEngineSwitch(51) { Description = "Left Out Lane" }, + new GamelogicEngineSwitch(52) { Description = "Left Return Lane" }, + new GamelogicEngineSwitch(53) { Description = "Start Combo" }, + new GamelogicEngineSwitch(54) { Description = "Right Out Lane" }, + new GamelogicEngineSwitch(55) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, + new GamelogicEngineSwitch(56) { Description = "Right Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, + new GamelogicEngineSwitch(57) { Description = "Center Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, + new GamelogicEngineSwitch(58) { Description = "Left Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, + + new GamelogicEngineSwitch(61) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(62) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(63) { Description = "Center Lane Exit" }, + new GamelogicEngineSwitch(64) { Description = "Upper Ramp" }, + new GamelogicEngineSwitch(65) { Description = "Bowl" }, + new GamelogicEngineSwitch(66) { Description = "Shooter" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("11") { Description = "(P)-A-I-D" }, - new GamelogicEngineLamp("12") { Description = "P-(A)-I-D" }, - new GamelogicEngineLamp("13") { Description = "P-A-(I)-D" }, - new GamelogicEngineLamp("14") { Description = "P-A-I-(D)" }, - new GamelogicEngineLamp("15") { Description = "Left Jet" }, - new GamelogicEngineLamp("16") { Description = "Right Jet" }, - new GamelogicEngineLamp("17") { Description = "Bottom Jet" }, - new GamelogicEngineLamp("18") { Description = "Admit One" }, - - new GamelogicEngineLamp("21") { Description = "(K)-I-S-S" }, - new GamelogicEngineLamp("22") { Description = "K-(I)-S-S" }, - new GamelogicEngineLamp("23") { Description = "K-I-(S)-S" }, - new GamelogicEngineLamp("24") { Description = "K-I-S-(S)" }, - new GamelogicEngineLamp("25") { Description = "10 Million" }, - new GamelogicEngineLamp("26") { Description = "20 Million" }, - new GamelogicEngineLamp("27") { Description = "30 Million" }, - new GamelogicEngineLamp("28") { Description = "Specials" }, - - new GamelogicEngineLamp("31") { Description = "Start Mega Menu" }, - new GamelogicEngineLamp("32") { Description = "Playground Award" }, - new GamelogicEngineLamp("33") { Description = "Lite Big Millions" }, - new GamelogicEngineLamp("34") { Description = "Slide" }, - new GamelogicEngineLamp("35") { Description = "Right Search" }, - new GamelogicEngineLamp("36") { Description = "Right Video" }, - new GamelogicEngineLamp("37") { Description = "Right Start Movie" }, - new GamelogicEngineLamp("38") { Description = "Mega Menu" }, - - new GamelogicEngineLamp("41") { Description = "Lips" }, - new GamelogicEngineLamp("42") { Description = "Left Search" }, - new GamelogicEngineLamp("43") { Description = "Left Video" }, - new GamelogicEngineLamp("44") { Description = "Left Start Movie" }, - new GamelogicEngineLamp("45") { Description = "Combo Award" }, - new GamelogicEngineLamp("46") { Description = "Parking O.K." }, - new GamelogicEngineLamp("47") { Description = "Move Your Car" }, - new GamelogicEngineLamp("48") { Description = "Extra Ball" }, - - new GamelogicEngineLamp("51") { Description = "Snack Bar" }, - new GamelogicEngineLamp("52") { Description = "Center Search" }, - new GamelogicEngineLamp("53") { Description = "Cola" }, - new GamelogicEngineLamp("54") { Description = "Hot Dog" }, - new GamelogicEngineLamp("55") { Description = "Super Jackpot" }, - new GamelogicEngineLamp("56") { Description = "Jackpot" }, - new GamelogicEngineLamp("57") { Description = "Rescue" }, - new GamelogicEngineLamp("58") { Description = "Multiball Restart" }, - - new GamelogicEngineLamp("61") { Description = "Free Pass" }, - new GamelogicEngineLamp("62") { Description = "Build Combo" }, - new GamelogicEngineLamp("63") { Description = "Unlimited Millions" }, - new GamelogicEngineLamp("64") { Description = "Creature Feature" }, - new GamelogicEngineLamp("65") { Description = "Extra Ball Countdown" }, - new GamelogicEngineLamp("66") { Description = "Big Millions" }, - new GamelogicEngineLamp("67") { Description = "Movie Madness" }, - new GamelogicEngineLamp("68") { Description = "Snack Attack" }, - - new GamelogicEngineLamp("71") { Description = "C" }, - new GamelogicEngineLamp("72") { Description = "R" }, - new GamelogicEngineLamp("73") { Description = "E" }, - new GamelogicEngineLamp("74") { Description = "A" }, - new GamelogicEngineLamp("75") { Description = "T" }, - new GamelogicEngineLamp("76") { Description = "U" }, - new GamelogicEngineLamp("77") { Description = "R" }, - new GamelogicEngineLamp("78") { Description = "E" }, - - new GamelogicEngineLamp("81") { Description = "(F)-I-L-M" }, - new GamelogicEngineLamp("82") { Description = "F-(I)-L-M" }, - new GamelogicEngineLamp("83") { Description = "F-I-(L)-M" }, - new GamelogicEngineLamp("84") { Description = "F-I-L-(M)" }, - new GamelogicEngineLamp("85") { Description = "Start Combo" }, - new GamelogicEngineLamp("86") { Description = "Popcorn" }, - new GamelogicEngineLamp("87") { Description = "Ice Cream" }, - new GamelogicEngineLamp("88") { Description = "Start Button" } + new GamelogicEngineLamp(11) { Description = "(P)-A-I-D" }, + new GamelogicEngineLamp(12) { Description = "P-(A)-I-D" }, + new GamelogicEngineLamp(13) { Description = "P-A-(I)-D" }, + new GamelogicEngineLamp(14) { Description = "P-A-I-(D)" }, + new GamelogicEngineLamp(15) { Description = "Left Jet" }, + new GamelogicEngineLamp(16) { Description = "Right Jet" }, + new GamelogicEngineLamp(17) { Description = "Bottom Jet" }, + new GamelogicEngineLamp(18) { Description = "Admit One" }, + + new GamelogicEngineLamp(21) { Description = "(K)-I-S-S" }, + new GamelogicEngineLamp(22) { Description = "K-(I)-S-S" }, + new GamelogicEngineLamp(23) { Description = "K-I-(S)-S" }, + new GamelogicEngineLamp(24) { Description = "K-I-S-(S)" }, + new GamelogicEngineLamp(25) { Description = "10 Million" }, + new GamelogicEngineLamp(26) { Description = "20 Million" }, + new GamelogicEngineLamp(27) { Description = "30 Million" }, + new GamelogicEngineLamp(28) { Description = "Specials" }, + + new GamelogicEngineLamp(31) { Description = "Start Mega Menu" }, + new GamelogicEngineLamp(32) { Description = "Playground Award" }, + new GamelogicEngineLamp(33) { Description = "Lite Big Millions" }, + new GamelogicEngineLamp(34) { Description = "Slide" }, + new GamelogicEngineLamp(35) { Description = "Right Search" }, + new GamelogicEngineLamp(36) { Description = "Right Video" }, + new GamelogicEngineLamp(37) { Description = "Right Start Movie" }, + new GamelogicEngineLamp(38) { Description = "Mega Menu" }, + + new GamelogicEngineLamp(41) { Description = "Lips" }, + new GamelogicEngineLamp(42) { Description = "Left Search" }, + new GamelogicEngineLamp(43) { Description = "Left Video" }, + new GamelogicEngineLamp(44) { Description = "Left Start Movie" }, + new GamelogicEngineLamp(45) { Description = "Combo Award" }, + new GamelogicEngineLamp(46) { Description = "Parking O.K." }, + new GamelogicEngineLamp(47) { Description = "Move Your Car" }, + new GamelogicEngineLamp(48) { Description = "Extra Ball" }, + + new GamelogicEngineLamp(51) { Description = "Snack Bar" }, + new GamelogicEngineLamp(52) { Description = "Center Search" }, + new GamelogicEngineLamp(53) { Description = "Cola" }, + new GamelogicEngineLamp(54) { Description = "Hot Dog" }, + new GamelogicEngineLamp(55) { Description = "Super Jackpot" }, + new GamelogicEngineLamp(56) { Description = "Jackpot" }, + new GamelogicEngineLamp(57) { Description = "Rescue" }, + new GamelogicEngineLamp(58) { Description = "Multiball Restart" }, + + new GamelogicEngineLamp(61) { Description = "Free Pass" }, + new GamelogicEngineLamp(62) { Description = "Build Combo" }, + new GamelogicEngineLamp(63) { Description = "Unlimited Millions" }, + new GamelogicEngineLamp(64) { Description = "Creature Feature" }, + new GamelogicEngineLamp(65) { Description = "Extra Ball Countdown" }, + new GamelogicEngineLamp(66) { Description = "Big Millions" }, + new GamelogicEngineLamp(67) { Description = "Movie Madness" }, + new GamelogicEngineLamp(68) { Description = "Snack Attack" }, + + new GamelogicEngineLamp(71) { Description = "C" }, + new GamelogicEngineLamp(72) { Description = "R" }, + new GamelogicEngineLamp(73) { Description = "E" }, + new GamelogicEngineLamp(74) { Description = "A" }, + new GamelogicEngineLamp(75) { Description = "T" }, + new GamelogicEngineLamp(76) { Description = "U" }, + new GamelogicEngineLamp(77) { Description = "R" }, + new GamelogicEngineLamp(78) { Description = "E" }, + + new GamelogicEngineLamp(81) { Description = "(F)-I-L-M" }, + new GamelogicEngineLamp(82) { Description = "F-(I)-L-M" }, + new GamelogicEngineLamp(83) { Description = "F-I-(L)-M" }, + new GamelogicEngineLamp(84) { Description = "F-I-L-(M)" }, + new GamelogicEngineLamp(85) { Description = "Start Combo" }, + new GamelogicEngineLamp(86) { Description = "Popcorn" }, + new GamelogicEngineLamp(87) { Description = "Ice Cream" }, + new GamelogicEngineLamp(88) { Description = "Start Button" } }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01", 1) { Description = "Top Right Popper" }, - new GamelogicEngineCoil("02", 2) { Description = "Left Subway Enter Flasher", IsLamp = true }, - new GamelogicEngineCoil("03", 3) { Description = "Lower Right Popper" }, - new GamelogicEngineCoil("04", 4) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, - new GamelogicEngineCoil("05", 5) { Description = "Right Slingshot" }, - new GamelogicEngineCoil("06", 6) { Description = "Left Slingshot" }, - new GamelogicEngineCoil("07", 7) { Description = "Knocker" }, - new GamelogicEngineCoil("08", 8) { Description = "Bottom Right Flasher", IsLamp = true }, - new GamelogicEngineCoil("09", 9) { Description = "Back Flashers", IsLamp = true }, - new GamelogicEngineCoil("10") { Description = "Bowl Flasher", IsLamp = true }, - new GamelogicEngineCoil("11") { Description = "Creature Flasher", IsLamp = true }, - new GamelogicEngineCoil("12") { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "entry_coil" }, - new GamelogicEngineCoil("13") { Description = "Left Jet" }, - new GamelogicEngineCoil("14") { Description = "Right Jet" }, - new GamelogicEngineCoil("15") { Description = "Bottom Jet" }, - new GamelogicEngineCoil("16") { Description = "Right Popper Flasher", IsLamp = true }, - new GamelogicEngineCoil("17") { Description = "Bottom Left Flasher", IsLamp = true }, - new GamelogicEngineCoil("18") { Description = "Right Ramp Flasher", IsLamp = true }, - new GamelogicEngineCoil("19") { Description = "Left Ramp Flasher", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Sequential GI #1", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Hologram Push Motor (playfield)" }, - new GamelogicEngineCoil("22") { Description = "Center Hole Flasher", IsLamp = true }, - new GamelogicEngineCoil("23") { Description = "Up/Down Ramp (up)" }, - new GamelogicEngineCoil("24") { Description = "Sequential GI #2", IsLamp = true }, - new GamelogicEngineCoil("25") { Description = "Start Move Flashers", IsLamp = true }, - new GamelogicEngineCoil("26") { Description = "Up/Down Ramp (down)" }, - new GamelogicEngineCoil("27") { Description = "Creature Motor (mirror)" }, - new GamelogicEngineCoil("28") { Description = "Hologram Lamp (cabinet)", IsLamp = true }, + new GamelogicEngineCoil(1) { Description = "Top Right Popper" }, + new GamelogicEngineCoil(2) { Description = "Left Subway Enter Flasher", IsLamp = true }, + new GamelogicEngineCoil(3) { Description = "Lower Right Popper" }, + new GamelogicEngineCoil(4) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, + new GamelogicEngineCoil(5) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(6) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(7) { Description = "Knocker" }, + new GamelogicEngineCoil(8) { Description = "Bottom Right Flasher", IsLamp = true }, + new GamelogicEngineCoil(9) { Description = "Back Flashers", IsLamp = true }, + new GamelogicEngineCoil(10) { Description = "Bowl Flasher", IsLamp = true }, + new GamelogicEngineCoil(11) { Description = "Creature Flasher", IsLamp = true }, + new GamelogicEngineCoil(12) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "entry_coil" }, + new GamelogicEngineCoil(13) { Description = "Left Jet" }, + new GamelogicEngineCoil(14) { Description = "Right Jet" }, + new GamelogicEngineCoil(15) { Description = "Bottom Jet" }, + new GamelogicEngineCoil(16) { Description = "Right Popper Flasher", IsLamp = true }, + new GamelogicEngineCoil(17) { Description = "Bottom Left Flasher", IsLamp = true }, + new GamelogicEngineCoil(18) { Description = "Right Ramp Flasher", IsLamp = true }, + new GamelogicEngineCoil(19) { Description = "Left Ramp Flasher", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Sequential GI #1", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Hologram Push Motor (playfield)" }, + new GamelogicEngineCoil(22) { Description = "Center Hole Flasher", IsLamp = true }, + new GamelogicEngineCoil(23) { Description = "Up/Down Ramp (up)" }, + new GamelogicEngineCoil(24) { Description = "Sequential GI #2", IsLamp = true }, + new GamelogicEngineCoil(25) { Description = "Start Move Flashers", IsLamp = true }, + new GamelogicEngineCoil(26) { Description = "Up/Down Ramp (down)" }, + new GamelogicEngineCoil(27) { Description = "Creature Motor (mirror)" }, + new GamelogicEngineCoil(28) { Description = "Hologram Lamp (cabinet)", IsLamp = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/FlashGordon.cs b/VisualPinball.Engine.PinMAME/Games/FlashGordon.cs index 7294276..30bdffc 100644 --- a/VisualPinball.Engine.PinMAME/Games/FlashGordon.cs +++ b/VisualPinball.Engine.PinMAME/Games/FlashGordon.cs @@ -42,69 +42,71 @@ public class FlashGordon : Bally new PinMameRom("flashgva", description: "Vocalizer Sound Free Play"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("01") { Description = "2 Left & Right R.O. Buttons" }, - new GamelogicEngineSwitch("02") { Description = "3 Shooter Lane R.O. Buttons" }, - new GamelogicEngineSwitch("03") { Description = "Top Single Drop Target" }, - new GamelogicEngineSwitch("04") { Description = "Shooter Lane Rollover" }, - new GamelogicEngineSwitch("05") { Description = "Drop Target 50 Point Reb. (2)" }, - new GamelogicEngineSwitch("06") { Description = "Credit Button" }, - new GamelogicEngineSwitch("07") { Description = "Tilt (3)" }, - new GamelogicEngineSwitch("08") { Description = "Outhole" }, - new GamelogicEngineSwitch("09") { Description = "Coin III (right)" }, - new GamelogicEngineSwitch("10") { Description = "Coin I (left)" }, - new GamelogicEngineSwitch("11") { Description = "Coin II (middle)" }, - new GamelogicEngineSwitch("12") { Description = "Lower Right Side Target" }, - new GamelogicEngineSwitch("13") { Description = "Flip Feed Lane (right)" }, - new GamelogicEngineSwitch("14") { Description = "Flip Feed Lane (left)" }, - new GamelogicEngineSwitch("15") { Description = "Upper Right Side Target" }, - new GamelogicEngineSwitch("16") { Description = "Slam (2)" }, - new GamelogicEngineSwitch("17") { Description = "4 Drop Target A (bottom)" }, - new GamelogicEngineSwitch("18") { Description = "4 Drop Target B" }, - new GamelogicEngineSwitch("19") { Description = "4 Drop Target C" }, - new GamelogicEngineSwitch("20") { Description = "4 Drop Target D (top)" }, - new GamelogicEngineSwitch("21") { Description = "1 Drop Target (top)" }, - new GamelogicEngineSwitch("22") { Description = "2 Drop Target (middle)" }, - new GamelogicEngineSwitch("23") { Description = "3 Drop Target (bottom)" }, - new GamelogicEngineSwitch("24") { Description = "Top Target" }, - new GamelogicEngineSwitch("25") { Description = "1st Inline Drop Target" }, - new GamelogicEngineSwitch("26") { Description = "2nd Inline Drop Target" }, - new GamelogicEngineSwitch("27") { Description = "3rd Inline Drop Target" }, - new GamelogicEngineSwitch("28") { Description = "Inline Back Target" }, - new GamelogicEngineSwitch("29") { Description = "10 Point Rebound (2)" }, - new GamelogicEngineSwitch("30") { Description = "Saucer" }, - new GamelogicEngineSwitch("31") { Description = "Right Outlane" }, - new GamelogicEngineSwitch("32") { Description = "Left Outlane" }, - new GamelogicEngineSwitch("33") { Description = "Right Spinner" }, - new GamelogicEngineSwitch("34") { Description = "Left Spinner" }, - new GamelogicEngineSwitch("35") { Description = "Right Slingshot" }, - new GamelogicEngineSwitch("36") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("37") { Description = "Top Thumper Bumper" }, - new GamelogicEngineSwitch("39") { Description = "Right Thumper Bumper" }, - new GamelogicEngineSwitch("40") { Description = "Left Thumper Bumper" }, + new GamelogicEngineSwitch(1) { Description = "2 Left & Right R.O. Buttons" }, + new GamelogicEngineSwitch(2) { Description = "3 Shooter Lane R.O. Buttons" }, + new GamelogicEngineSwitch(3) { Description = "Top Single Drop Target" }, + new GamelogicEngineSwitch(4) { Description = "Shooter Lane Rollover" }, + new GamelogicEngineSwitch(5) { Description = "Drop Target 50 Point Reb. (2)" }, + new GamelogicEngineSwitch(6) { Description = "Credit Button" }, + new GamelogicEngineSwitch(7) { Description = "Tilt (3)" }, + new GamelogicEngineSwitch(8) { Description = "Outhole" }, + new GamelogicEngineSwitch(9) { Description = "Coin III (right)" }, + new GamelogicEngineSwitch(10) { Description = "Coin I (left)" }, + new GamelogicEngineSwitch(11) { Description = "Coin II (middle)" }, + new GamelogicEngineSwitch(12) { Description = "Lower Right Side Target" }, + new GamelogicEngineSwitch(13) { Description = "Flip Feed Lane (right)" }, + new GamelogicEngineSwitch(14) { Description = "Flip Feed Lane (left)" }, + new GamelogicEngineSwitch(15) { Description = "Upper Right Side Target" }, + new GamelogicEngineSwitch(16) { Description = "Slam (2)" }, + new GamelogicEngineSwitch(17) { Description = "4 Drop Target A (bottom)" }, + new GamelogicEngineSwitch(18) { Description = "4 Drop Target B" }, + new GamelogicEngineSwitch(19) { Description = "4 Drop Target C" }, + new GamelogicEngineSwitch(20) { Description = "4 Drop Target D (top)" }, + new GamelogicEngineSwitch(21) { Description = "1 Drop Target (top)" }, + new GamelogicEngineSwitch(22) { Description = "2 Drop Target (middle)" }, + new GamelogicEngineSwitch(23) { Description = "3 Drop Target (bottom)" }, + new GamelogicEngineSwitch(24) { Description = "Top Target" }, + new GamelogicEngineSwitch(25) { Description = "1st Inline Drop Target" }, + new GamelogicEngineSwitch(26) { Description = "2nd Inline Drop Target" }, + new GamelogicEngineSwitch(27) { Description = "3rd Inline Drop Target" }, + new GamelogicEngineSwitch(28) { Description = "Inline Back Target" }, + new GamelogicEngineSwitch(29) { Description = "10 Point Rebound (2)" }, + new GamelogicEngineSwitch(30) { Description = "Saucer" }, + new GamelogicEngineSwitch(31) { Description = "Right Outlane" }, + new GamelogicEngineSwitch(32) { Description = "Left Outlane" }, + new GamelogicEngineSwitch(33) { Description = "Right Spinner" }, + new GamelogicEngineSwitch(34) { Description = "Left Spinner" }, + new GamelogicEngineSwitch(35) { Description = "Right Slingshot" }, + new GamelogicEngineSwitch(36) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(37) { Description = "Top Thumper Bumper" }, + new GamelogicEngineSwitch(39) { Description = "Right Thumper Bumper" }, + new GamelogicEngineSwitch(40) { Description = "Left Thumper Bumper" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01", 7) { Description = "Out Hole" }, - new GamelogicEngineCoil("02", 6) { Description = "Knocker" }, - new GamelogicEngineCoil("03", 4) { Description = "Saucer Kick Down" }, - new GamelogicEngineCoil("04", 8) { Description = "Saucer Kick Up" }, - new GamelogicEngineCoil("05", 9) { Description = "Single Drop Target Reset" }, - new GamelogicEngineCoil("06", 1) { Description = "Drop Target Reset" }, - new GamelogicEngineCoil("07", 2) { Description = "Drop Target Reset" }, - new GamelogicEngineCoil("08", 3) { Description = "In Line Drop Target" }, - new GamelogicEngineCoil("09", 10) { Description = "Left Bumper" }, - new GamelogicEngineCoil("10", 11) { Description = "Right Bumper" }, - new GamelogicEngineCoil("11", 12) { Description = "Single Drop Target Pull Down" }, - new GamelogicEngineCoil("12", 13) { Description = "Top Bumper" }, - new GamelogicEngineCoil("13", 14) { Description = "Left Slingshot" }, - new GamelogicEngineCoil("14", 15) { Description = "Right Slingshot" }, - new GamelogicEngineCoil("15", 18) { Description = "Coin Lockout Door" }, - new GamelogicEngineCoil("16", 19) { Description = "KI Relay (Flipper enabled)" }, + new GamelogicEngineCoil(1) { Description = "Drop Target Reset" }, + new GamelogicEngineCoil(2) { Description = "Drop Target Reset" }, + new GamelogicEngineCoil(3) { Description = "In Line Drop Target" }, + new GamelogicEngineCoil(4) { Description = "Saucer Kick Down" }, + new GamelogicEngineCoil(6) { Description = "Knocker" }, + new GamelogicEngineCoil(7) { Description = "Out Hole" }, + new GamelogicEngineCoil(8) { Description = "Saucer Kick Up" }, + new GamelogicEngineCoil(9) { Description = "Single Drop Target Reset" }, + new GamelogicEngineCoil(10) { Description = "Left Bumper" }, + new GamelogicEngineCoil(11) { Description = "Right Bumper" }, + new GamelogicEngineCoil(12) { Description = "Single Drop Target Pull Down" }, + new GamelogicEngineCoil(13) { Description = "Top Bumper" }, + new GamelogicEngineCoil(14) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(15) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(18) { Description = "Coin Lockout Door" }, + new GamelogicEngineCoil(19) { Description = "KI Relay (Flipper enabled)" }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/MedievalMadness.cs b/VisualPinball.Engine.PinMAME/Games/MedievalMadness.cs index 75abca4..5bfd85a 100644 --- a/VisualPinball.Engine.PinMAME/Games/MedievalMadness.cs +++ b/VisualPinball.Engine.PinMAME/Games/MedievalMadness.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game.Engines; @@ -38,180 +40,179 @@ public class MedievalMadness : Wpc new PinMameRom("mm_109c", "1.09c", "Profanity ROM"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("11") { Description = "Launch Ball", InputActionHint = InputConstants.ActionPlunger }, - new GamelogicEngineSwitch("12") { Description = "Catapult Target" }, - new GamelogicEngineSwitch("13") { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, - new GamelogicEngineSwitch("14") { Description = "Plumb Bolt Tilt" }, - new GamelogicEngineSwitch("15") { Description = "Left Troll Target" }, - new GamelogicEngineSwitch("16") { Description = "Left Outline" }, - new GamelogicEngineSwitch("17") { Description = "Right Return Lane" }, - new GamelogicEngineSwitch("18") { Description = "Shooter Lane" }, - - new GamelogicEngineSwitch("21") { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, - new GamelogicEngineSwitch("22") { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, - new GamelogicEngineSwitch("24") { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, - new GamelogicEngineSwitch("25") { Description = "Right Troll Target" }, - new GamelogicEngineSwitch("26") { Description = "Left Return Lane" }, - new GamelogicEngineSwitch("27") { Description = "Right Outlane" }, - new GamelogicEngineSwitch("28") { Description = "Right Eject" }, - - new GamelogicEngineSwitch("31") { Description = "Trough Eject (jam)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "jam"}, - new GamelogicEngineSwitch("32") { Description = "Trough Ball 1", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, - new GamelogicEngineSwitch("33") { Description = "Trough Ball 2", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, - new GamelogicEngineSwitch("34") { Description = "Trough Ball 3", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, - new GamelogicEngineSwitch("35") { Description = "Trough Ball 4", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "4" }, - new GamelogicEngineSwitch("36") { Description = "Left Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, - new GamelogicEngineSwitch("37") { Description = "Castle Gate", ConstantHint = SwitchConstantHint.AlwaysOpen }, - new GamelogicEngineSwitch("38") { Description = "Catapult" }, - - new GamelogicEngineSwitch("41") { Description = "Moat Enter", ConstantHint = SwitchConstantHint.AlwaysOpen }, - new GamelogicEngineSwitch("44") { Description = "Castle Lock" }, - new GamelogicEngineSwitch("45") { Description = "Left Troll (under playfield)" }, - new GamelogicEngineSwitch("46") { Description = "Right Troll (under playfield)" }, - new GamelogicEngineSwitch("47") { Description = "Left Top Lane" }, - new GamelogicEngineSwitch("48") { Description = "Right Top Lane" }, - - new GamelogicEngineSwitch("51") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("52") { Description = "Right Slingshot" }, - new GamelogicEngineSwitch("53") { Description = "Left Jet Bumper" }, - new GamelogicEngineSwitch("54") { Description = "Bottom Jet Bumper" }, - new GamelogicEngineSwitch("55") { Description = "Right Jet Bumper" }, - new GamelogicEngineSwitch("56") { Description = "Draw-Bridge Up", ConstantHint = SwitchConstantHint.AlwaysClosed }, - new GamelogicEngineSwitch("57") { Description = "Draw-Bridge Down" }, - new GamelogicEngineSwitch("58") { Description = "Tower Exit" }, - - new GamelogicEngineSwitch("61") { Description = "Left Ramp Enter" }, - new GamelogicEngineSwitch("62") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("63") { Description = "Right Ramp Enter" }, - new GamelogicEngineSwitch("64") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("65") { Description = "Left Loop Low" }, - new GamelogicEngineSwitch("66") { Description = "Left Loop High" }, - new GamelogicEngineSwitch("67") { Description = "Right Loop Low" }, - new GamelogicEngineSwitch("68") { Description = "Right Loop High" }, - - new GamelogicEngineSwitch("71") { Description = "Right Bank Top" }, - new GamelogicEngineSwitch("72") { Description = "Right Bank Middle" }, - new GamelogicEngineSwitch("73") { Description = "Right Bank Bottom" }, - new GamelogicEngineSwitch("74") { Description = "Left Troll Up" }, - new GamelogicEngineSwitch("75") { Description = "Right Troll Up" }, - - // new GamelogicEngineSwitch("112") { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper }, - // new GamelogicEngineSwitch("114") { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper }, + new GamelogicEngineSwitch(11) { Description = "Launch Ball", InputActionHint = InputConstants.ActionPlunger }, + new GamelogicEngineSwitch(12) { Description = "Catapult Target" }, + new GamelogicEngineSwitch(13) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, + new GamelogicEngineSwitch(14) { Description = "Plumb Bolt Tilt" }, + new GamelogicEngineSwitch(15) { Description = "Left Troll Target" }, + new GamelogicEngineSwitch(16) { Description = "Left Outline" }, + new GamelogicEngineSwitch(17) { Description = "Right Return Lane" }, + new GamelogicEngineSwitch(18) { Description = "Shooter Lane" }, + + new GamelogicEngineSwitch(21) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt }, + new GamelogicEngineSwitch(22) { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, + new GamelogicEngineSwitch(24) { Description = "Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, + new GamelogicEngineSwitch(25) { Description = "Right Troll Target" }, + new GamelogicEngineSwitch(26) { Description = "Left Return Lane" }, + new GamelogicEngineSwitch(27) { Description = "Right Outlane" }, + new GamelogicEngineSwitch(28) { Description = "Right Eject" }, + + new GamelogicEngineSwitch(31) { Description = "Trough Eject (jam)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "jam"}, + new GamelogicEngineSwitch(32) { Description = "Trough Ball 1", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, + new GamelogicEngineSwitch(33) { Description = "Trough Ball 2", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, + new GamelogicEngineSwitch(34) { Description = "Trough Ball 3", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, + new GamelogicEngineSwitch(35) { Description = "Trough Ball 4", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "4" }, + new GamelogicEngineSwitch(36) { Description = "Left Popper", ConstantHint = SwitchConstantHint.AlwaysOpen }, + new GamelogicEngineSwitch(37) { Description = "Castle Gate", ConstantHint = SwitchConstantHint.AlwaysOpen }, + new GamelogicEngineSwitch(38) { Description = "Catapult" }, + + new GamelogicEngineSwitch(41) { Description = "Moat Enter", ConstantHint = SwitchConstantHint.AlwaysOpen }, + new GamelogicEngineSwitch(44) { Description = "Castle Lock" }, + new GamelogicEngineSwitch(45) { Description = "Left Troll (under playfield)" }, + new GamelogicEngineSwitch(46) { Description = "Right Troll (under playfield)" }, + new GamelogicEngineSwitch(47) { Description = "Left Top Lane" }, + new GamelogicEngineSwitch(48) { Description = "Right Top Lane" }, + + new GamelogicEngineSwitch(51) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(52) { Description = "Right Slingshot" }, + new GamelogicEngineSwitch(53) { Description = "Left Jet Bumper" }, + new GamelogicEngineSwitch(54) { Description = "Bottom Jet Bumper" }, + new GamelogicEngineSwitch(55) { Description = "Right Jet Bumper" }, + new GamelogicEngineSwitch(56) { Description = "Draw-Bridge Up", ConstantHint = SwitchConstantHint.AlwaysClosed }, + new GamelogicEngineSwitch(57) { Description = "Draw-Bridge Down" }, + new GamelogicEngineSwitch(58) { Description = "Tower Exit" }, + + new GamelogicEngineSwitch(61) { Description = "Left Ramp Enter" }, + new GamelogicEngineSwitch(62) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(63) { Description = "Right Ramp Enter" }, + new GamelogicEngineSwitch(64) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(65) { Description = "Left Loop Low" }, + new GamelogicEngineSwitch(66) { Description = "Left Loop High" }, + new GamelogicEngineSwitch(67) { Description = "Right Loop Low" }, + new GamelogicEngineSwitch(68) { Description = "Right Loop High" }, + + new GamelogicEngineSwitch(71) { Description = "Right Bank Top" }, + new GamelogicEngineSwitch(72) { Description = "Right Bank Middle" }, + new GamelogicEngineSwitch(73) { Description = "Right Bank Bottom" }, + new GamelogicEngineSwitch(74) { Description = "Left Troll Up" }, + new GamelogicEngineSwitch(75) { Description = "Right Troll Up" }, + + // new GamelogicEngineSwitch(112) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper }, + // new GamelogicEngineSwitch(114) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("11") { Description = "Right Bank Top" }, - new GamelogicEngineLamp("12") { Description = "Right Bank Middle" }, - new GamelogicEngineLamp("13") { Description = "Right Bank Bottom" }, - new GamelogicEngineLamp("14") { Description = "Right Ramp Jackpot" }, - new GamelogicEngineLamp("15") { Description = "Save the Damsel! (2)" }, - new GamelogicEngineLamp("16") { Description = "Dragon Death" }, - new GamelogicEngineLamp("17") { Description = "Dragon Snack" }, - new GamelogicEngineLamp("18") { Description = "Dragon Breath" }, - - new GamelogicEngineLamp("21") { Description = "Right Loop Jackpot" }, - new GamelogicEngineLamp("22") { Description = "Right Joust Victory" }, - new GamelogicEngineLamp("23") { Description = "Right Clash!" }, - new GamelogicEngineLamp("24") { Description = "Right Charge!" }, - new GamelogicEngineLamp("25") { Description = "Patron of the Peasants" }, - new GamelogicEngineLamp("26") { Description = "Catapult Ace" }, - new GamelogicEngineLamp("27") { Description = "Joust Champion" }, - new GamelogicEngineLamp("28") { Description = "Castle Crusher" }, - - new GamelogicEngineLamp("31") { Description = "Trolls!" }, - new GamelogicEngineLamp("32") { Description = "Extra Ball" }, - new GamelogicEngineLamp("33") { Description = "Merlin's Magic" }, - new GamelogicEngineLamp("34") { Description = "Troll Madness" }, - new GamelogicEngineLamp("35") { Description = "Damsel Madness" }, - new GamelogicEngineLamp("36") { Description = "Peasant Madness" }, - new GamelogicEngineLamp("37") { Description = "Catapult Madness" }, - new GamelogicEngineLamp("38") { Description = "Joust Madness" }, - - new GamelogicEngineLamp("41") { Description = "Left Loop Jackpot" }, - new GamelogicEngineLamp("42") { Description = "Left Joust Victory" }, - new GamelogicEngineLamp("43") { Description = "Left Clash!" }, - new GamelogicEngineLamp("44") { Description = "Left Charge!" }, - new GamelogicEngineLamp("45") { Description = "Catapult Jackpot" }, - new GamelogicEngineLamp("46") { Description = "Catapult Slam!" }, - new GamelogicEngineLamp("47") { Description = "BAM!" }, - new GamelogicEngineLamp("48") { Description = "WAM!" }, - - new GamelogicEngineLamp("51") { Description = "Center Arrow" }, - new GamelogicEngineLamp("52") { Description = "Battle for the Kingdom" }, - new GamelogicEngineLamp("53") { Description = "Master of Trolls" }, - new GamelogicEngineLamp("54") { Description = "Defender of Damsels" }, - new GamelogicEngineLamp("55") { Description = "Left Top Lane" }, - new GamelogicEngineLamp("56") { Description = "Right Top Lane" }, - new GamelogicEngineLamp("57") { Description = "Left Troll Target" }, - new GamelogicEngineLamp("58") { Description = "Right Troll Target" }, - - new GamelogicEngineLamp("61") { Description = "Francois d'Grimm" }, - new GamelogicEngineLamp("62") { Description = "King of Payne" }, - new GamelogicEngineLamp("63") { Description = "Earl of Ego" }, - new GamelogicEngineLamp("64") { Description = "Left Ramp Jackpot" }, - new GamelogicEngineLamp("65") { Description = "Revolting Peasants!" }, - new GamelogicEngineLamp("66") { Description = "Ugly Riot!" }, - new GamelogicEngineLamp("67") { Description = "Angry Mob!" }, - new GamelogicEngineLamp("68") { Description = "Rabble Rouser" }, - - new GamelogicEngineLamp("71") { Description = "Howard Hurtz" }, - new GamelogicEngineLamp("72") { Description = "Magic Shield" }, - new GamelogicEngineLamp("73") { Description = "Sir Psycho" }, - new GamelogicEngineLamp("74") { Description = "Duke of Bourbon" }, - new GamelogicEngineLamp("75") { Description = "Castle Lock 2" }, - new GamelogicEngineLamp("76") { Description = "Castle Lock 1" }, - new GamelogicEngineLamp("77") { Description = "Super Jackpot" }, - new GamelogicEngineLamp("78") { Description = "Super Jets (2)" }, - - new GamelogicEngineLamp("81") { Description = "Right Outlane" }, - new GamelogicEngineLamp("82") { Description = "Right Return" }, - new GamelogicEngineLamp("83") { Description = "Left Return" }, - new GamelogicEngineLamp("84") { Description = "Left Outlane" }, - new GamelogicEngineLamp("85") { Description = "Castle Lock 3" }, - new GamelogicEngineLamp("86") { Description = "Shoot Again" }, - new GamelogicEngineLamp("87") { Description = "Launch Button" }, - new GamelogicEngineLamp("88") { Description = "Start Button" } + new GamelogicEngineLamp(11) { Description = "Right Bank Top" }, + new GamelogicEngineLamp(12) { Description = "Right Bank Middle" }, + new GamelogicEngineLamp(13) { Description = "Right Bank Bottom" }, + new GamelogicEngineLamp(14) { Description = "Right Ramp Jackpot" }, + new GamelogicEngineLamp(15) { Description = "Save the Damsel! (2)" }, + new GamelogicEngineLamp(16) { Description = "Dragon Death" }, + new GamelogicEngineLamp(17) { Description = "Dragon Snack" }, + new GamelogicEngineLamp(18) { Description = "Dragon Breath" }, + + new GamelogicEngineLamp(21) { Description = "Right Loop Jackpot" }, + new GamelogicEngineLamp(22) { Description = "Right Joust Victory" }, + new GamelogicEngineLamp(23) { Description = "Right Clash!" }, + new GamelogicEngineLamp(24) { Description = "Right Charge!" }, + new GamelogicEngineLamp(25) { Description = "Patron of the Peasants" }, + new GamelogicEngineLamp(26) { Description = "Catapult Ace" }, + new GamelogicEngineLamp(27) { Description = "Joust Champion" }, + new GamelogicEngineLamp(28) { Description = "Castle Crusher" }, + + new GamelogicEngineLamp(31) { Description = "Trolls!" }, + new GamelogicEngineLamp(32) { Description = "Extra Ball" }, + new GamelogicEngineLamp(33) { Description = "Merlin's Magic" }, + new GamelogicEngineLamp(34) { Description = "Troll Madness" }, + new GamelogicEngineLamp(35) { Description = "Damsel Madness" }, + new GamelogicEngineLamp(36) { Description = "Peasant Madness" }, + new GamelogicEngineLamp(37) { Description = "Catapult Madness" }, + new GamelogicEngineLamp(38) { Description = "Joust Madness" }, + + new GamelogicEngineLamp(41) { Description = "Left Loop Jackpot" }, + new GamelogicEngineLamp(42) { Description = "Left Joust Victory" }, + new GamelogicEngineLamp(43) { Description = "Left Clash!" }, + new GamelogicEngineLamp(44) { Description = "Left Charge!" }, + new GamelogicEngineLamp(45) { Description = "Catapult Jackpot" }, + new GamelogicEngineLamp(46) { Description = "Catapult Slam!" }, + new GamelogicEngineLamp(47) { Description = "BAM!" }, + new GamelogicEngineLamp(48) { Description = "WAM!" }, + + new GamelogicEngineLamp(51) { Description = "Center Arrow" }, + new GamelogicEngineLamp(52) { Description = "Battle for the Kingdom" }, + new GamelogicEngineLamp(53) { Description = "Master of Trolls" }, + new GamelogicEngineLamp(54) { Description = "Defender of Damsels" }, + new GamelogicEngineLamp(55) { Description = "Left Top Lane" }, + new GamelogicEngineLamp(56) { Description = "Right Top Lane" }, + new GamelogicEngineLamp(57) { Description = "Left Troll Target" }, + new GamelogicEngineLamp(58) { Description = "Right Troll Target" }, + + new GamelogicEngineLamp(61) { Description = "Francois d'Grimm" }, + new GamelogicEngineLamp(62) { Description = "King of Payne" }, + new GamelogicEngineLamp(63) { Description = "Earl of Ego" }, + new GamelogicEngineLamp(64) { Description = "Left Ramp Jackpot" }, + new GamelogicEngineLamp(65) { Description = "Revolting Peasants!" }, + new GamelogicEngineLamp(66) { Description = "Ugly Riot!" }, + new GamelogicEngineLamp(67) { Description = "Angry Mob!" }, + new GamelogicEngineLamp(68) { Description = "Rabble Rouser" }, + + new GamelogicEngineLamp(71) { Description = "Howard Hurtz" }, + new GamelogicEngineLamp(72) { Description = "Magic Shield" }, + new GamelogicEngineLamp(73) { Description = "Sir Psycho" }, + new GamelogicEngineLamp(74) { Description = "Duke of Bourbon" }, + new GamelogicEngineLamp(75) { Description = "Castle Lock 2" }, + new GamelogicEngineLamp(76) { Description = "Castle Lock 1" }, + new GamelogicEngineLamp(77) { Description = "Super Jackpot" }, + new GamelogicEngineLamp(78) { Description = "Super Jets (2)" }, + + new GamelogicEngineLamp(81) { Description = "Right Outlane" }, + new GamelogicEngineLamp(82) { Description = "Right Return" }, + new GamelogicEngineLamp(83) { Description = "Left Return" }, + new GamelogicEngineLamp(84) { Description = "Left Outlane" }, + new GamelogicEngineLamp(85) { Description = "Castle Lock 3" }, + new GamelogicEngineLamp(86) { Description = "Shoot Again" }, + new GamelogicEngineLamp(87) { Description = "Launch Button" }, + new GamelogicEngineLamp(88) { Description = "Start Button" } }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01", 1) { Description = "Auto Plunger", DeviceHint = "Plunger", DeviceItemHint = "c_autofire" }, - new GamelogicEngineCoil("02", 2) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, - new GamelogicEngineCoil("03", 3) { Description = "Left Popper" }, - new GamelogicEngineCoil("04", 4) { Description = "Castle" }, - new GamelogicEngineCoil("05", 5) { Description = "Castle Gate (Power)" }, - new GamelogicEngineCoil("06", 6) { Description = "Castle Gate (Hold)" }, - new GamelogicEngineCoil("07", 7) { Description = "Knocker" }, - new GamelogicEngineCoil("08", 8) { Description = "Catapult" }, - new GamelogicEngineCoil("09", 9) { Description = "Right Eject" }, - new GamelogicEngineCoil("10") { Description = "Left Slingshot" }, - new GamelogicEngineCoil("11") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("12") { Description = "Left Jet Bumper" }, - new GamelogicEngineCoil("13") { Description = "Bottom Jet Bumper" }, - new GamelogicEngineCoil("14") { Description = "Right Jet Bumper" }, - new GamelogicEngineCoil("15") { Description = "Tower Diverter (Power)" }, - new GamelogicEngineCoil("16") { Description = "Tower Diverter (Hold)" }, - new GamelogicEngineCoil("17") { Description = "Left Side Low Flashers", IsLamp = true }, - new GamelogicEngineCoil("18") { Description = "Left Ramp Flashers", IsLamp = true }, - new GamelogicEngineCoil("19") { Description = "Left Side High Flashers", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Right Side High Flashers", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Right Ramp Flashers", IsLamp = true }, - new GamelogicEngineCoil("22") { Description = "Castle Right Side Flashers", IsLamp = true }, - new GamelogicEngineCoil("23") { Description = "Right Side Low Flashers", IsLamp = true }, - new GamelogicEngineCoil("24") { Description = "Moat Flashers", IsLamp = true }, - new GamelogicEngineCoil("25") { Description = "Castle Left Side Flashers", IsLamp = true }, - new GamelogicEngineCoil("26") { Description = "Tower Lock Post" }, - new GamelogicEngineCoil("27") { Description = "Right Gate" }, - new GamelogicEngineCoil("28") { Description = "Left Gate" }, - // new GamelogicEngineCoil("29", 46) { Description = "Lower Right Flipper (power)", PlayfieldItemHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$" }, - // new GamelogicEngineCoil("30") { Description = "Lower Right Flipper (hold)", MainCoilIdOfHoldCoil = "29" }, - // new GamelogicEngineCoil("31", 48) { Description = "Lower Left Flipper (power)", PlayfieldItemHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$" }, - // new GamelogicEngineCoil("32") { Description = "Lower Left Flipper (hold)", MainCoilIdOfHoldCoil = "31" }, - new GamelogicEngineCoil("33") { Description = "Left Troll (Power)" }, - new GamelogicEngineCoil("34") { Description = "Left Troll (Hold)" }, - new GamelogicEngineCoil("35") { Description = "Right Troll (Power)" }, - new GamelogicEngineCoil("36") { Description = "Right Troll (Hold)" }, - new GamelogicEngineCoil("37") { Description = "Drawbridge Motor" }, + new GamelogicEngineCoil(1) { Description = "Auto Plunger", DeviceHint = "Plunger", DeviceItemHint = "c_autofire" }, + new GamelogicEngineCoil(2) { Description = "Trough Eject", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, + new GamelogicEngineCoil(3) { Description = "Left Popper" }, + new GamelogicEngineCoil(4) { Description = "Castle" }, + new GamelogicEngineCoil(5) { Description = "Castle Gate (Power)" }, + new GamelogicEngineCoil(6) { Description = "Castle Gate (Hold)" }, + new GamelogicEngineCoil(7) { Description = "Knocker" }, + new GamelogicEngineCoil(8) { Description = "Catapult" }, + new GamelogicEngineCoil(9) { Description = "Right Eject" }, + new GamelogicEngineCoil(10) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(11) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(12) { Description = "Left Jet Bumper" }, + new GamelogicEngineCoil(13) { Description = "Bottom Jet Bumper" }, + new GamelogicEngineCoil(14) { Description = "Right Jet Bumper" }, + new GamelogicEngineCoil(15) { Description = "Tower Diverter (Power)" }, + new GamelogicEngineCoil(16) { Description = "Tower Diverter (Hold)" }, + new GamelogicEngineCoil(17) { Description = "Left Side Low Flashers", IsLamp = true }, + new GamelogicEngineCoil(18) { Description = "Left Ramp Flashers", IsLamp = true }, + new GamelogicEngineCoil(19) { Description = "Left Side High Flashers", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Right Side High Flashers", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Right Ramp Flashers", IsLamp = true }, + new GamelogicEngineCoil(22) { Description = "Castle Right Side Flashers", IsLamp = true }, + new GamelogicEngineCoil(23) { Description = "Right Side Low Flashers", IsLamp = true }, + new GamelogicEngineCoil(24) { Description = "Moat Flashers", IsLamp = true }, + new GamelogicEngineCoil(25) { Description = "Castle Left Side Flashers", IsLamp = true }, + new GamelogicEngineCoil(26) { Description = "Tower Lock Post" }, + new GamelogicEngineCoil(27) { Description = "Right Gate" }, + new GamelogicEngineCoil(28) { Description = "Left Gate" }, + new GamelogicEngineCoil(33) { Description = "Left Troll (Power)" }, + new GamelogicEngineCoil(34) { Description = "Left Troll (Hold)" }, + new GamelogicEngineCoil(35) { Description = "Right Troll (Power)" }, + new GamelogicEngineCoil(36) { Description = "Right Troll (Hold)" }, + new GamelogicEngineCoil(37) { Description = "Drawbridge Motor" }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/Rock.cs b/VisualPinball.Engine.PinMAME/Games/Rock.cs index 0bb9a88..d74d384 100644 --- a/VisualPinball.Engine.PinMAME/Games/Rock.cs +++ b/VisualPinball.Engine.PinMAME/Games/Rock.cs @@ -38,84 +38,91 @@ public class Rock : System80 new PinMameRom("rockgfp", description: "Free Play", language: PinMameRomLanguage.German), }; + protected override PinMameIdAlias[] Aliases { get; } = { + new PinMameIdAlias(45, CoilFlipperUpperRight, AliasType.Coil), + new PinMameIdAlias(46, CoilFlipperLowerRight, AliasType.Coil), + new PinMameIdAlias(47, CoilFlipperUpperLeft, AliasType.Coil), + new PinMameIdAlias(48, CoilFlipperLowerLeft, AliasType.Coil), + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("40") { Description = "#1 Drop Target (Upper)" }, - new GamelogicEngineSwitch("41") { Description = "10 Point (2)", DeviceHint = "^(sw41[a-f]|(Left|Right)\\sSlingshot)$", NumMatches = 8 }, - new GamelogicEngineSwitch("42") { Description = "Right Flipper (Lower)", DeviceHint = "^LowerRightFlipper$" }, - new GamelogicEngineSwitch("43") { Description = "Rollunder" }, - new GamelogicEngineSwitch("44") { Description = "Right Outside Rollover" }, - new GamelogicEngineSwitch("45") { Description = "Right Spinner (with Bracket)" }, - new GamelogicEngineSwitch("46") { Description = "Right Top Rollover" }, - new GamelogicEngineSwitch("50") { Description = "#2 Drop Target (Upper)" }, - new GamelogicEngineSwitch("51") { Description = "#1 Drop Target (Lower)" }, - new GamelogicEngineSwitch("52") { Description = "Spot Target (with Bracket)" }, - new GamelogicEngineSwitch("53") { Description = "#1 Top Rollover" }, - new GamelogicEngineSwitch("54") { Description = "Right Return Rollover" }, - new GamelogicEngineSwitch("55") { Description = "Right Side Rollover" }, - new GamelogicEngineSwitch("57") { Description = "Tilt (with Bracket)" }, - new GamelogicEngineSwitch("60") { Description = "#3 Drop Targer (Upper)" }, - new GamelogicEngineSwitch("61") { Description = "#2 Drop Targer (Lower)" }, - new GamelogicEngineSwitch("62") { Description = "#4 Drop Targer (Lower)" }, - new GamelogicEngineSwitch("63") { Description = "#2 Top Rollover" }, - new GamelogicEngineSwitch("64") { Description = "Left Return Rollover" }, - new GamelogicEngineSwitch("65") { Description = "Left Side Rollover" }, - new GamelogicEngineSwitch("67") { Description = "Outhole (Assembly)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, - new GamelogicEngineSwitch("70") { Description = "#4 Drop Targer (Upper)" }, - new GamelogicEngineSwitch("71") { Description = "#3 Drop Targer (Lower)" }, - new GamelogicEngineSwitch("72") { Description = "#5 Drop Targer (Lower)" }, - new GamelogicEngineSwitch("73") { Description = "#3 Top Rollover" }, - new GamelogicEngineSwitch("74") { Description = "Left Outside Rollover" }, - new GamelogicEngineSwitch("75") { Description = "Left Spinner (with Bracket)" }, - new GamelogicEngineSwitch("76") { Description = "Left Top Rollover" }, + new GamelogicEngineSwitch(40) { Description = "#1 Drop Target (Upper)" }, + new GamelogicEngineSwitch(41) { Description = "10 Point (2)", DeviceHint = "^(sw41[a-f]|(Left|Right)\\sSlingshot)$", NumMatches = 8 }, + new GamelogicEngineSwitch(42) { Description = "Right Flipper (Lower)", DeviceHint = "^LowerRightFlipper$" }, + new GamelogicEngineSwitch(43) { Description = "Rollunder" }, + new GamelogicEngineSwitch(44) { Description = "Right Outside Rollover" }, + new GamelogicEngineSwitch(45) { Description = "Right Spinner (with Bracket)" }, + new GamelogicEngineSwitch(46) { Description = "Right Top Rollover" }, + new GamelogicEngineSwitch(50) { Description = "#2 Drop Target (Upper)" }, + new GamelogicEngineSwitch(51) { Description = "#1 Drop Target (Lower)" }, + new GamelogicEngineSwitch(52) { Description = "Spot Target (with Bracket)" }, + new GamelogicEngineSwitch(53) { Description = "#1 Top Rollover" }, + new GamelogicEngineSwitch(54) { Description = "Right Return Rollover" }, + new GamelogicEngineSwitch(55) { Description = "Right Side Rollover" }, + new GamelogicEngineSwitch(57) { Description = "Tilt (with Bracket)" }, + new GamelogicEngineSwitch(60) { Description = "#3 Drop Targer (Upper)" }, + new GamelogicEngineSwitch(61) { Description = "#2 Drop Targer (Lower)" }, + new GamelogicEngineSwitch(62) { Description = "#4 Drop Targer (Lower)" }, + new GamelogicEngineSwitch(63) { Description = "#2 Top Rollover" }, + new GamelogicEngineSwitch(64) { Description = "Left Return Rollover" }, + new GamelogicEngineSwitch(65) { Description = "Left Side Rollover" }, + new GamelogicEngineSwitch(67) { Description = "Outhole (Assembly)", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, + new GamelogicEngineSwitch(70) { Description = "#4 Drop Targer (Upper)" }, + new GamelogicEngineSwitch(71) { Description = "#3 Drop Targer (Lower)" }, + new GamelogicEngineSwitch(72) { Description = "#5 Drop Targer (Lower)" }, + new GamelogicEngineSwitch(73) { Description = "#3 Top Rollover" }, + new GamelogicEngineSwitch(74) { Description = "Left Outside Rollover" }, + new GamelogicEngineSwitch(75) { Description = "Left Spinner (with Bracket)" }, + new GamelogicEngineSwitch(76) { Description = "Left Top Rollover" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("01") { Description = "Lamp 1" }, - new GamelogicEngineLamp("03") { Description = "Shoot Again" }, - new GamelogicEngineLamp("05") { Description = "#1 Drop Target (Upper)" }, - new GamelogicEngineLamp("06") { Description = "#2 Drop Target (Upper)" }, - new GamelogicEngineLamp("07") { Description = "#3 Drop Target (Upper)" }, - new GamelogicEngineLamp("08") { Description = "#4 Drop Target (Upper)" }, - new GamelogicEngineLamp("09") { Description = "Level 1" }, - new GamelogicEngineLamp("10") { Description = "Level 2" }, - new GamelogicEngineLamp("11") { Description = "Level 3" }, - new GamelogicEngineLamp("12") { Description = "Lamp 12" }, - new GamelogicEngineLamp("13") { Description = "Lamp 13", DeviceHint = "^L13[a-b]$", NumMatches = 2 }, - new GamelogicEngineLamp("14") { Description = "#1 Drop Target (Lower)" }, - new GamelogicEngineLamp("15") { Description = "#2 Drop Target (Lower)" }, - new GamelogicEngineLamp("16") { Description = "#3 Drop Target (Lower)" }, - new GamelogicEngineLamp("17") { Description = "#4 Drop Target (Lower)" }, - new GamelogicEngineLamp("18") { Description = "#5 Drop Target (Lower)" }, - new GamelogicEngineLamp("19") { Description = "Left Side Rollover" }, - new GamelogicEngineLamp("20") { Description = "Left Return Rollover" }, - new GamelogicEngineLamp("21") { Description = "Right Return Rollover" }, - new GamelogicEngineLamp("22") { Description = "Right Side Rollover" }, - new GamelogicEngineLamp("23") { Description = "#1 Top Rollover (\"A\")" }, - new GamelogicEngineLamp("24") { Description = "#2 Top Rollover (\"B\")" }, - new GamelogicEngineLamp("25") { Description = "#3 Top Rollover (\"C\")" }, - new GamelogicEngineLamp("26") { Description = "\"R\"" }, - new GamelogicEngineLamp("27") { Description = "\"O\"" }, - new GamelogicEngineLamp("28") { Description = "\"C\"" }, - new GamelogicEngineLamp("29") { Description = "\"K\"" }, - new GamelogicEngineLamp("30") { Description = "\"AND\"" }, - new GamelogicEngineLamp("31") { Description = "\"R\"" }, - new GamelogicEngineLamp("32") { Description = "\"O\"" }, - new GamelogicEngineLamp("33") { Description = "\"L\"" }, - new GamelogicEngineLamp("34") { Description = "\"L\"" }, - new GamelogicEngineLamp("35") { Description = "\"L\"" }, - new GamelogicEngineLamp("36") { Description = "\"I\"" }, - new GamelogicEngineLamp("37") { Description = "\"V\"" }, - new GamelogicEngineLamp("38") { Description = "\"E\"" }, - new GamelogicEngineLamp("39") { Description = "\"S\"" }, - new GamelogicEngineLamp("40") { Description = "\"!\"" }, - new GamelogicEngineLamp("41") { Description = "Double Scoring" }, - new GamelogicEngineLamp("42") { Description = "2X" }, - new GamelogicEngineLamp("43") { Description = "3X" }, - new GamelogicEngineLamp("44") { Description = "4X" }, - new GamelogicEngineLamp("45") { Description = "5X" }, - new GamelogicEngineLamp("46") { Description = "Spot Target" }, - new GamelogicEngineLamp("47") { Description = "Left Outside Rollover / Right Spinner", DeviceHint = "^L47[a-b]$", NumMatches = 2 }, - new GamelogicEngineLamp("51") { Description = "Right Outside Rollover / Left Spinner", DeviceHint = "^L51[a-b]$", NumMatches = 2 }, + new GamelogicEngineLamp(1) { Description = "Lamp 1" }, + new GamelogicEngineLamp(3) { Description = "Shoot Again" }, + new GamelogicEngineLamp(5) { Description = "#1 Drop Target (Upper)" }, + new GamelogicEngineLamp(6) { Description = "#2 Drop Target (Upper)" }, + new GamelogicEngineLamp(7) { Description = "#3 Drop Target (Upper)" }, + new GamelogicEngineLamp(8) { Description = "#4 Drop Target (Upper)" }, + new GamelogicEngineLamp(9) { Description = "Level 1" }, + new GamelogicEngineLamp(10) { Description = "Level 2" }, + new GamelogicEngineLamp(11) { Description = "Level 3" }, + new GamelogicEngineLamp(12) { Description = "Lamp 12" }, + new GamelogicEngineLamp(13) { Description = "Lamp 13", DeviceHint = "^L13[a-b]$", NumMatches = 2 }, + new GamelogicEngineLamp(14) { Description = "#1 Drop Target (Lower)" }, + new GamelogicEngineLamp(15) { Description = "#2 Drop Target (Lower)" }, + new GamelogicEngineLamp(16) { Description = "#3 Drop Target (Lower)" }, + new GamelogicEngineLamp(17) { Description = "#4 Drop Target (Lower)" }, + new GamelogicEngineLamp(18) { Description = "#5 Drop Target (Lower)" }, + new GamelogicEngineLamp(19) { Description = "Left Side Rollover" }, + new GamelogicEngineLamp(20) { Description = "Left Return Rollover" }, + new GamelogicEngineLamp(21) { Description = "Right Return Rollover" }, + new GamelogicEngineLamp(22) { Description = "Right Side Rollover" }, + new GamelogicEngineLamp(23) { Description = "#1 Top Rollover (\"A\")" }, + new GamelogicEngineLamp(24) { Description = "#2 Top Rollover (\"B\")" }, + new GamelogicEngineLamp(25) { Description = "#3 Top Rollover (\"C\")" }, + new GamelogicEngineLamp(26) { Description = "\"R\"" }, + new GamelogicEngineLamp(27) { Description = "\"O\"" }, + new GamelogicEngineLamp(28) { Description = "\"C\"" }, + new GamelogicEngineLamp(29) { Description = "\"K\"" }, + new GamelogicEngineLamp(30) { Description = "\"AND\"" }, + new GamelogicEngineLamp(31) { Description = "\"R\"" }, + new GamelogicEngineLamp(32) { Description = "\"O\"" }, + new GamelogicEngineLamp(33) { Description = "\"L\"" }, + new GamelogicEngineLamp(34) { Description = "\"L\"" }, + new GamelogicEngineLamp(35) { Description = "\"L\"" }, + new GamelogicEngineLamp(36) { Description = "\"I\"" }, + new GamelogicEngineLamp(37) { Description = "\"V\"" }, + new GamelogicEngineLamp(38) { Description = "\"E\"" }, + new GamelogicEngineLamp(39) { Description = "\"S\"" }, + new GamelogicEngineLamp(40) { Description = "\"!\"" }, + new GamelogicEngineLamp(41) { Description = "Double Scoring" }, + new GamelogicEngineLamp(42) { Description = "2X" }, + new GamelogicEngineLamp(43) { Description = "3X" }, + new GamelogicEngineLamp(44) { Description = "4X" }, + new GamelogicEngineLamp(45) { Description = "5X" }, + new GamelogicEngineLamp(46) { Description = "Spot Target" }, + new GamelogicEngineLamp(47) { Description = "Left Outside Rollover / Right Spinner", DeviceHint = "^L47[a-b]$", NumMatches = 2 }, + new GamelogicEngineLamp(51) { Description = "Right Outside Rollover / Left Spinner", DeviceHint = "^L51[a-b]$", NumMatches = 2 }, new GamelogicEngineLamp("l_auxiliary") { Description = "Auxiliary Lamps", DeviceHint = "^Auxiliary$" }, new GamelogicEngineLamp("l_lower") { Description = "Lower", DeviceHint = "^Lower$" }, new GamelogicEngineLamp("l_upper_left_1") { Description = "Upper Left 1", DeviceHint = "^UpperLeft1$" }, @@ -124,14 +131,14 @@ public class Rock : System80 }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("05", 5) { Description = "Five Pos. Bank Reset", DeviceHint = "^5PosBank\\s*" }, - new GamelogicEngineCoil("06", 6) { Description = "Four Pos. Bank Reset", DeviceHint = "^4PosBank\\s*" }, - new GamelogicEngineCoil("08", 8) { Description = "Knocker Assembly" }, - new GamelogicEngineCoil("09", 9) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, - new GamelogicEngineCoil(CoilFlipperUpperRight, 45) { Description = "Upper Right Flipper", DeviceHint = "^UpperRightFlipper$" }, - new GamelogicEngineCoil(CoilFlipperLowerRight, 46) { Description = "Lower Right Flipper", DeviceHint = "^LowerRightFlipper$" }, - new GamelogicEngineCoil(CoilFlipperUpperLeft, 47) { Description = "Upper Left Flipper", DeviceHint = "^UpperLeftFlipper$" }, - new GamelogicEngineCoil(CoilFlipperLowerLeft, 48) { Description = "Lower Left Flipper", DeviceHint = "^LowerLeftFlipper$" }, + new GamelogicEngineCoil(5) { Description = "Five Pos. Bank Reset", DeviceHint = "^5PosBank\\s*" }, + new GamelogicEngineCoil(6) { Description = "Four Pos. Bank Reset", DeviceHint = "^4PosBank\\s*" }, + new GamelogicEngineCoil(8) { Description = "Knocker Assembly" }, + new GamelogicEngineCoil(9) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, + new GamelogicEngineCoil(CoilFlipperUpperRight) { Description = "Upper Right Flipper", DeviceHint = "^UpperRightFlipper$" }, + new GamelogicEngineCoil(CoilFlipperLowerRight) { Description = "Lower Right Flipper", DeviceHint = "^LowerRightFlipper$" }, + new GamelogicEngineCoil(CoilFlipperUpperLeft) { Description = "Upper Left Flipper", DeviceHint = "^UpperLeftFlipper$" }, + new GamelogicEngineCoil(CoilFlipperLowerLeft) { Description = "Lower Left Flipper", DeviceHint = "^LowerLeftFlipper$" }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/RockEncore.cs b/VisualPinball.Engine.PinMAME/Games/RockEncore.cs index b57ff05..a023c0c 100644 --- a/VisualPinball.Engine.PinMAME/Games/RockEncore.cs +++ b/VisualPinball.Engine.PinMAME/Games/RockEncore.cs @@ -17,9 +17,6 @@ // ReSharper disable StringLiteralTypo using System; -using VisualPinball.Engine.Game.Engines; -using VisualPinball.Engine.PinMAME.MPUs; -using VisualPinball.Engine.Common; namespace VisualPinball.Engine.PinMAME.Games { diff --git a/VisualPinball.Engine.PinMAME/Games/StarTrekEnterprise.cs b/VisualPinball.Engine.PinMAME/Games/StarTrekEnterprise.cs index 7de7f4b..3671c0f 100644 --- a/VisualPinball.Engine.PinMAME/Games/StarTrekEnterprise.cs +++ b/VisualPinball.Engine.PinMAME/Games/StarTrekEnterprise.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.Math; @@ -44,375 +46,378 @@ public class StarTrekEnterprise : Sam new PinMameRom("st_161h", "1.61h"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("01") { Description = "(Beam) Me Up" }, - new GamelogicEngineSwitch("02") { Description = "Beam (Me) Up" }, - new GamelogicEngineSwitch("04") { Description = "Beam Me (Up)" }, - new GamelogicEngineSwitch("07") { Description = "Right 3-Bank Target (Top)" }, - new GamelogicEngineSwitch("08") { Description = "Right 3-Bank Target (Center)" }, - new GamelogicEngineSwitch("09") { Description = "Right 3-Bank Target (Bottom)" }, - new GamelogicEngineSwitch("10") { Description = "Left Eject" }, - new GamelogicEngineSwitch("11") { Description = "Center Drop Target" }, - new GamelogicEngineSwitch("12") { Description = "Spinner" }, - new GamelogicEngineSwitch("13") { Description = "Warp Ramp Enter" }, - new GamelogicEngineSwitch("14") { Description = "Left Ramp Enter" }, - new GamelogicEngineSwitch("15") { Description = "Tournament Start" }, - new GamelogicEngineSwitch("16") { Description = "Start" }, - new GamelogicEngineSwitch("18") { Description = "Trough #4 (Left)" }, - new GamelogicEngineSwitch("19") { Description = "Trough #3" }, - new GamelogicEngineSwitch("20") { Description = "Trough #2" }, - new GamelogicEngineSwitch("21") { Description = "Trough #1 (Right)" }, - new GamelogicEngineSwitch("22") { Description = "Trough Jam" }, - new GamelogicEngineSwitch("23") { Description = "Shooter Lane" }, - new GamelogicEngineSwitch("24") { Description = "(T)REK" }, - new GamelogicEngineSwitch("25") { Description = "T(R)EK" }, - new GamelogicEngineSwitch("26") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("27") { Description = "Right Slingshot" }, - new GamelogicEngineSwitch("28") { Description = "TR(E)K" }, - new GamelogicEngineSwitch("29") { Description = "TRE(K)" }, - new GamelogicEngineSwitch("30") { Description = "Left Pop Bumper" }, - new GamelogicEngineSwitch("31") { Description = "Right Pop Bumper" }, - new GamelogicEngineSwitch("32") { Description = "Bottom Pop Bumper" }, - new GamelogicEngineSwitch("33") { Description = "Center Lock (Bottom)" }, - new GamelogicEngineSwitch("34") { Description = "Center Lock (Top)" }, - new GamelogicEngineSwitch("35") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("36") { Description = "Warp Ramp Exit" }, - new GamelogicEngineSwitch("37") { Description = "Right Warp Entrance" }, - new GamelogicEngineSwitch("38") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("39") { Description = "Center 3-Bank Target (Top)" }, - new GamelogicEngineSwitch("40") { Description = "Center 3-Bank Target (Center)" }, - new GamelogicEngineSwitch("41") { Description = "Center 3-Bank Target (Bottom)" }, - new GamelogicEngineSwitch("42") { Description = "Left 2-Bank Target (Top)" }, - new GamelogicEngineSwitch("43") { Description = "Left 2-Bank Target (Bottom)" }, - new GamelogicEngineSwitch("44") { Description = "Behind Upper Flipper" }, - new GamelogicEngineSwitch("45") { Description = "Red Target 1" }, - new GamelogicEngineSwitch("46") { Description = "Red Target 2" }, - new GamelogicEngineSwitch("47") { Description = "Red Target 3" }, - new GamelogicEngineSwitch("48") { Description = "Big Red Target" }, - new GamelogicEngineSwitch("49") { Description = "Red Target 5" }, - new GamelogicEngineSwitch("50") { Description = "Red Target 6" }, - new GamelogicEngineSwitch("51") { Description = "Right Orbit" }, - new GamelogicEngineSwitch("52") { Description = "Left Orbit" }, - new GamelogicEngineSwitch("53") { Description = "Ship Crash" }, + new GamelogicEngineSwitch(1) { Description = "(Beam) Me Up" }, + new GamelogicEngineSwitch(2) { Description = "Beam (Me) Up" }, + new GamelogicEngineSwitch(4) { Description = "Beam Me (Up)" }, + new GamelogicEngineSwitch(7) { Description = "Right 3-Bank Target (Top)" }, + new GamelogicEngineSwitch(8) { Description = "Right 3-Bank Target (Center)" }, + new GamelogicEngineSwitch(9) { Description = "Right 3-Bank Target (Bottom)" }, + new GamelogicEngineSwitch(10) { Description = "Left Eject" }, + new GamelogicEngineSwitch(11) { Description = "Center Drop Target" }, + new GamelogicEngineSwitch(12) { Description = "Spinner" }, + new GamelogicEngineSwitch(13) { Description = "Warp Ramp Enter" }, + new GamelogicEngineSwitch(14) { Description = "Left Ramp Enter" }, + new GamelogicEngineSwitch(15) { Description = "Tournament Start" }, + new GamelogicEngineSwitch(16) { Description = "Start" }, + new GamelogicEngineSwitch(18) { Description = "Trough #4 (Left)" }, + new GamelogicEngineSwitch(19) { Description = "Trough #3" }, + new GamelogicEngineSwitch(20) { Description = "Trough #2" }, + new GamelogicEngineSwitch(21) { Description = "Trough #1 (Right)" }, + new GamelogicEngineSwitch(22) { Description = "Trough Jam" }, + new GamelogicEngineSwitch(23) { Description = "Shooter Lane" }, + new GamelogicEngineSwitch(24) { Description = "(T)REK" }, + new GamelogicEngineSwitch(25) { Description = "T(R)EK" }, + new GamelogicEngineSwitch(26) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(27) { Description = "Right Slingshot" }, + new GamelogicEngineSwitch(28) { Description = "TR(E)K" }, + new GamelogicEngineSwitch(29) { Description = "TRE(K)" }, + new GamelogicEngineSwitch(30) { Description = "Left Pop Bumper" }, + new GamelogicEngineSwitch(31) { Description = "Right Pop Bumper" }, + new GamelogicEngineSwitch(32) { Description = "Bottom Pop Bumper" }, + new GamelogicEngineSwitch(33) { Description = "Center Lock (Bottom)" }, + new GamelogicEngineSwitch(34) { Description = "Center Lock (Top)" }, + new GamelogicEngineSwitch(35) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(36) { Description = "Warp Ramp Exit" }, + new GamelogicEngineSwitch(37) { Description = "Right Warp Entrance" }, + new GamelogicEngineSwitch(38) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(39) { Description = "Center 3-Bank Target (Top)" }, + new GamelogicEngineSwitch(40) { Description = "Center 3-Bank Target (Center)" }, + new GamelogicEngineSwitch(41) { Description = "Center 3-Bank Target (Bottom)" }, + new GamelogicEngineSwitch(42) { Description = "Left 2-Bank Target (Top)" }, + new GamelogicEngineSwitch(43) { Description = "Left 2-Bank Target (Bottom)" }, + new GamelogicEngineSwitch(44) { Description = "Behind Upper Flipper" }, + new GamelogicEngineSwitch(45) { Description = "Red Target 1" }, + new GamelogicEngineSwitch(46) { Description = "Red Target 2" }, + new GamelogicEngineSwitch(47) { Description = "Red Target 3" }, + new GamelogicEngineSwitch(48) { Description = "Big Red Target" }, + new GamelogicEngineSwitch(49) { Description = "Red Target 5" }, + new GamelogicEngineSwitch(50) { Description = "Red Target 6" }, + new GamelogicEngineSwitch(51) { Description = "Right Orbit" }, + new GamelogicEngineSwitch(52) { Description = "Left Orbit" }, + new GamelogicEngineSwitch(53) { Description = "Ship Crash" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("84") { Description = "Left Ramp Emblem - R", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("85") { Description = "Left Ramp Emblem - G", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("86") { Description = "Left Ramp Emblem - B", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(84) { Description = "Left Ramp Emblem - R", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(85) { Description = "Left Ramp Emblem - G", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(86) { Description = "Left Ramp Emblem - B", DeviceHint = "^L1$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("81") { Description = "Red Target 2 - R", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("87") { Description = "Red Target 2 - G", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("88") { Description = "Red Target 2 - B", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(81) { Description = "Red Target 2 - R", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(87) { Description = "Red Target 2 - G", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(88) { Description = "Red Target 2 - B", DeviceHint = "^L2$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("83") { Description = "Left Ramp Enterprise Arrow - R", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("82") { Description = "Left Ramp Enterprise Arrow - G", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("89") { Description = "Left Ramp Enterprise Arrow - B", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(83) { Description = "Left Ramp Enterprise Arrow - R", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(82) { Description = "Left Ramp Enterprise Arrow - G", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(89) { Description = "Left Ramp Enterprise Arrow - B", DeviceHint = "^L3$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("92") { Description = "Red Target 3 - R", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("91") { Description = "Red Target 3 - G", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("90") { Description = "Red Target 3 - B", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(92) { Description = "Red Target 3 - R", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(91) { Description = "Red Target 3 - G", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(90) { Description = "Red Target 3 - B", DeviceHint = "^L4$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("93") { Description = "Center Lane Emblem - R", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("94") { Description = "Center Lane Emblem - G", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("95") { Description = "Center Lane Emblem - B", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(93) { Description = "Center Lane Emblem - R", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(94) { Description = "Center Lane Emblem - G", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(95) { Description = "Center Lane Emblem - B", DeviceHint = "^L5$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("96") { Description = "Center Lane Enterprise Arrow - R", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("97") { Description = "Center Lane Enterprise Arrow - G", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("98") { Description = "Center Lane Enterprise Arrow - B", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(96) { Description = "Center Lane Enterprise Arrow - R", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(97) { Description = "Center Lane Enterprise Arrow - G", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(98) { Description = "Center Lane Enterprise Arrow - B", DeviceHint = "^L6$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("99") { Description = "Red Target 4 - R", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("100") { Description = "Red Target 4 - G", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("101") { Description = "Red Target 4 - B", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(99) { Description = "Red Target 4 - R", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(100) { Description = "Red Target 4 - G", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(101) { Description = "Red Target 4 - B", DeviceHint = "^L7$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("102") { Description = "Black Hole Arrow - R", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("103") { Description = "Black Hole Arrow - G", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("104") { Description = "Black Hole Arrow - B", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(102) { Description = "Black Hole Arrow - R", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(103) { Description = "Black Hole Arrow - G", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(104) { Description = "Black Hole Arrow - B", DeviceHint = "^L8$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("113") { Description = "Right Orbit Emblem - R", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("114") { Description = "Right Orbit Emblem - G", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("115") { Description = "Right Orbit Emblem - B", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(113) { Description = "Right Orbit Emblem - R", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(114) { Description = "Right Orbit Emblem - G", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(115) { Description = "Right Orbit Emblem - B", DeviceHint = "^L9$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("116") { Description = "Right Orbit Enterprise Arrow - R", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("117") { Description = "Right Orbit Enterprise Arrow - G", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("118") { Description = "Right Orbit Enterprise Arrow - B", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(116) { Description = "Right Orbit Enterprise Arrow - R", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(117) { Description = "Right Orbit Enterprise Arrow - G", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(118) { Description = "Right Orbit Enterprise Arrow - B", DeviceHint = "^L10$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("119") { Description = "Red Target 6 - R", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("120") { Description = "Red Target 6 - G", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("121") { Description = "Red Target 6 - B", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(119) { Description = "Red Target 6 - R", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(120) { Description = "Red Target 6 - G", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(121) { Description = "Red Target 6 - B", DeviceHint = "^L11$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("122") { Description = "Right Ramp Emblem - R", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("123") { Description = "Right Ramp Emblem - G", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("124") { Description = "Right Ramp Emblem - B", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(122) { Description = "Right Ramp Emblem - R", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(123) { Description = "Right Ramp Emblem - G", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(124) { Description = "Right Ramp Emblem - B", DeviceHint = "^L12$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("125") { Description = "Right Ramp Enterprise Arrow - R", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("126") { Description = "Right Ramp Enterprise Arrow - G", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("127") { Description = "Right Ramp Enterprise Arrow - B", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(125) { Description = "Right Ramp Enterprise Arrow - R", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(126) { Description = "Right Ramp Enterprise Arrow - G", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(127) { Description = "Right Ramp Enterprise Arrow - B", DeviceHint = "^L13$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("128") { Description = "Red Target 5 - R", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("129") { Description = "Red Target 5 - G", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("130") { Description = "Red Target 5 - B", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(128) { Description = "Red Target 5 - R", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(129) { Description = "Red Target 5 - G", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(130) { Description = "Red Target 5 - B", DeviceHint = "^L14$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("131") { Description = "Special - R", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("133") { Description = "Special - G", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("132") { Description = "Special - B", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(131) { Description = "Special - R", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(133) { Description = "Special - G", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(132) { Description = "Special - B", DeviceHint = "^L15$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("134") { Description = "Away Team - R", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("136") { Description = "Away Team - G", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("135") { Description = "Away Team - B", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(134) { Description = "Away Team - R", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(136) { Description = "Away Team - G", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(135) { Description = "Away Team - B", DeviceHint = "^L16$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("146") { Description = "Left Eject Lock - R", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("147") { Description = "Left Eject Lock - G", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("148") { Description = "Left Eject Lock - B", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(146) { Description = "Left Eject Lock - R", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(147) { Description = "Left Eject Lock - G", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(148) { Description = "Left Eject Lock - B", DeviceHint = "^L17$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("149") { Description = "Mission Start - R", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("150") { Description = "Mission Start - G", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("151") { Description = "Mission Start - B", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(149) { Description = "Mission Start - R", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(150) { Description = "Mission Start - G", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(151) { Description = "Mission Start - B", DeviceHint = "^L18$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("152") { Description = "Left 2 Bank - Top - R", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("153") { Description = "Left 2 Bank - Top - G", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("154") { Description = "Left 2 Bank - Top - B", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(152) { Description = "Left 2 Bank - Top - R", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(153) { Description = "Left 2 Bank - Top - G", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(154) { Description = "Left 2 Bank - Top - B", DeviceHint = "^L19$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("155") { Description = "Left Orbit Emblem - R", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("156") { Description = "Left Orbit Emblem - G", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("157") { Description = "Left Orbit Emblem - B", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(155) { Description = "Left Orbit Emblem - R", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(156) { Description = "Left Orbit Emblem - G", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(157) { Description = "Left Orbit Emblem - B", DeviceHint = "^L20$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("158") { Description = "Red Target 1 - R", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("159") { Description = "Red Target 1 - G", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("160") { Description = "Red Target 1 - B", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(158) { Description = "Red Target 1 - R", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(159) { Description = "Red Target 1 - G", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(160) { Description = "Red Target 1 - B", DeviceHint = "^L21$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("161") { Description = "Left Orbit Enterprise Arrow - R", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("162") { Description = "Left Orbit Enterprise Arrow - G", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("163") { Description = "Left Orbit Enterprise Arrow - B", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(161) { Description = "Left Orbit Enterprise Arrow - R", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(162) { Description = "Left Orbit Enterprise Arrow - G", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(163) { Description = "Left Orbit Enterprise Arrow - B", DeviceHint = "^L22$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("164") { Description = "Left 2 Bank (Bottom) - R", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("165") { Description = "Left 2 Bank (Bottom) - G", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("166") { Description = "Left 2 Bank (Bottom) - B", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(164) { Description = "Left 2 Bank (Bottom) - R", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(165) { Description = "Left 2 Bank (Bottom) - G", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(166) { Description = "Left 2 Bank (Bottom) - B", DeviceHint = "^L23$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("167") { Description = "Left Eject Emblem - R", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("168") { Description = "Left Eject Emblem - G", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("169") { Description = "Left Eject Emblem - B", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(167) { Description = "Left Eject Emblem - R", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(168) { Description = "Left Eject Emblem - G", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(169) { Description = "Left Eject Emblem - B", DeviceHint = "^L24$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("170") { Description = "Left Eject Enterprise Arrow - R", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("171") { Description = "Left Eject Enterprise Arrow - G", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("172") { Description = "Left Eject Enterprise Arrow - B", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(170) { Description = "Left Eject Enterprise Arrow - R", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(171) { Description = "Left Eject Enterprise Arrow - G", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(172) { Description = "Left Eject Enterprise Arrow - B", DeviceHint = "^L25$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("179") { Description = "Kickback - R", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("177") { Description = "Kickback - G", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("178") { Description = "Kickback - B", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(179) { Description = "Kickback - R", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(177) { Description = "Kickback - G", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(178) { Description = "Kickback - B", DeviceHint = "^L26$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("182") { Description = "(T)REK - R", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("180") { Description = "(T)REK - G", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("181") { Description = "(T)REK - B", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(182) { Description = "(T)REK - R", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(180) { Description = "(T)REK - G", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(181) { Description = "(T)REK - B", DeviceHint = "^L27$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("185") { Description = "T(R)EK - R", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("183") { Description = "T(R)EK - G", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("184") { Description = "T(R)EK - B", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(185) { Description = "T(R)EK - R", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(183) { Description = "T(R)EK - G", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(184) { Description = "T(R)EK - B", DeviceHint = "^L28$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("186") { Description = "Center 3 Bank (Bottom) - R", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("187") { Description = "Center 3 Bank (Bottom) - G", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("188") { Description = "Center 3 Bank (Bottom) - B", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(186) { Description = "Center 3 Bank (Bottom) - R", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(187) { Description = "Center 3 Bank (Bottom) - G", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(188) { Description = "Center 3 Bank (Bottom) - B", DeviceHint = "^L29$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("189") { Description = "Center 3 Bank (Center) - R", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("190") { Description = "Center 3 Bank (Center) - G", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("191") { Description = "Center 3 Bank (Center) - B", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(189) { Description = "Center 3 Bank (Center) - R", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(190) { Description = "Center 3 Bank (Center) - G", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(191) { Description = "Center 3 Bank (Center) - B", DeviceHint = "^L30$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("192") { Description = "Center 3 Bank (Top) - R", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("193") { Description = "Center 3 Bank (Top) - G", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("194") { Description = "Center 3 Bank (Top) - B", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(192) { Description = "Center 3 Bank (Top) - R", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(193) { Description = "Center 3 Bank (Top) - G", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(194) { Description = "Center 3 Bank (Top) - B", DeviceHint = "^L31$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("195") { Description = "Center Lane Lock - R", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("197") { Description = "Center Lane Lock - G", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("196") { Description = "Center Lane Lock - B", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(195) { Description = "Center Lane Lock - R", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(197) { Description = "Center Lane Lock - G", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(196) { Description = "Center Lane Lock - B", DeviceHint = "^L32$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("198") { Description = "Extra Ball - R", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("200") { Description = "Extra Ball - G", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("199") { Description = "Extra Ball - B", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(198) { Description = "Extra Ball - R", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(200) { Description = "Extra Ball - G", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(199) { Description = "Extra Ball - B", DeviceHint = "^L33$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("214") { Description = "Shoot Again - R", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("215") { Description = "Shoot Again - G", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("216") { Description = "Shoot Again - B", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(214) { Description = "Shoot Again - R", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(215) { Description = "Shoot Again - G", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(216) { Description = "Shoot Again - B", DeviceHint = "^L34$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("211") { Description = "The Captain's Chair - R", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("217") { Description = "The Captain's Chair - G", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("218") { Description = "The Captain's Chair - B", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(211) { Description = "The Captain's Chair - R", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(217) { Description = "The Captain's Chair - G", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(218) { Description = "The Captain's Chair - B", DeviceHint = "^L35$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("213") { Description = "Save the Enterprise - R", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("212") { Description = "Save the Enterprise - G", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("219") { Description = "Save the Enterprise - B", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(213) { Description = "Save the Enterprise - R", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(212) { Description = "Save the Enterprise - G", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(219) { Description = "Save the Enterprise - B", DeviceHint = "^L36$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("222") { Description = "Nero - R", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("221") { Description = "Nero - G", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("220") { Description = "Nero - B", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(222) { Description = "Nero - R", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(221) { Description = "Nero - G", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(220) { Description = "Nero - B", DeviceHint = "^L37$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("223") { Description = "Destroy the Drill - R", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("224") { Description = "Destroy the Drill - G", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("225") { Description = "Destroy the Drill - B", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(223) { Description = "Destroy the Drill - R", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(224) { Description = "Destroy the Drill - G", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(225) { Description = "Destroy the Drill - B", DeviceHint = "^L38$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - new GamelogicEngineLamp("226") { Description = "Space Jump - R", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("227") { Description = "Space Jump - G", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("228") { Description = "Space Jump - B", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("229") { Description = "Prime Directive - R", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("230") { Description = "Prime Directive - G", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("231") { Description = "Prime Directive - B", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("232") { Description = "Klingon Battle - R", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("233") { Description = "Klingon Battle - G", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("234") { Description = "Klingon Battle - B", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("235") { Description = "Status 1 (Bottom) - R", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("236") { Description = "Status 1 (Bottom) - G", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("237") { Description = "Status 1 (Bottom) - B", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("238") { Description = "Status 2 - R", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("239") { Description = "Status 2 - G", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("240") { Description = "Status 2 - B", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("241") { Description = "Status 3 - R", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("242") { Description = "Status 3 - G", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("243") { Description = "Status 3 - B", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("244") { Description = "Status 4 - R", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("245") { Description = "Status 4 - G", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("246") { Description = "Status 4 - B", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("247") { Description = "Status 5 - R", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("248") { Description = "Status 5 - G", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("249") { Description = "Status 5 - B", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("250") { Description = "Status 6 - R", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("251") { Description = "Status 6 - G", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("252") { Description = "Status 6 - B", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("253") { Description = "Status 7 - R", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("254") { Description = "Status 7 - G", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("255") { Description = "Status 7 - B", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("256") { Description = "Status 8 (Top) - R", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("257") { Description = "Status 8 (Top) - G", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("258") { Description = "Status 8 (Top) - B", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("276") { Description = "Warp Ramp Red", DeviceHint = "^L50$" }, - new GamelogicEngineLamp("277") { Description = "Enterprise", DeviceHint = "^L51$" }, - - new GamelogicEngineLamp("278") { Description = "Warp Ramp Emblem - R", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("279") { Description = "Warp Ramp Emblem - G", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("280") { Description = "Warp Ramp Emblem - B", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("281") { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("283") { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("282") { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("284") { Description = "Beam (Me) Up - R", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("286") { Description = "Beam (Me) Up - G", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("285") { Description = "Beam (Me) Up - B", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("287") { Description = "Beam Me (Up)", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("289") { Description = "Beam Me (Up) - G", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("288") { Description = "Beam Me (Up) - B", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("290") { Description = "Vengeance Saucer", DeviceHint = "^L56$" }, - new GamelogicEngineLamp("291") { Description = "Vengeance Nacelles (X2)", DeviceHint = "^L57$" }, - - new GamelogicEngineLamp("308") { Description = "Right 3 Bank (Top) - R", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("309") { Description = "Right 3 Bank (Top) - G", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("310") { Description = "Right 3 Bank (Top) - B", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("311") { Description = "Right 3 Bank (Center) - R", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("312") { Description = "Right 3 Bank (Center) - G", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("313") { Description = "Right 3 Bank (Center) - B", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("314") { Description = "Right 3 Bank (Bottom) - R", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("315") { Description = "Right 3 Bank (Bottom) - G", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("316") { Description = "Right 3 Bank (Bottom) - B", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("317") { Description = "TR(E)K - R", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("319") { Description = "TR(E)K - G", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("318") { Description = "TR(E)K - B", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("320") { Description = "TRE(K) - R", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("322") { Description = "TRE(K) - G", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("321") { Description = "TRE(K) - B", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("300") { Description = "Left Apron (X2) - R", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("302") { Description = "Left Apron (X2) - G", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("301") { Description = "Left Apron (X2) - B", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("303") { Description = "Right Apron (X2) - R", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("305") { Description = "Right Apron (X2) - G", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("304") { Description = "Right Apron (X2) - B", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("80") { Description = "Start Button", DeviceHint = "^L65$" }, - new GamelogicEngineLamp("78") { Description = "Fire (Red)", DeviceHint = "^L66$" }, - new GamelogicEngineLamp("77") { Description = "Fire (Green)", DeviceHint = "^L67$" }, - new GamelogicEngineLamp("76") { Description = "Fire (Blue)", DeviceHint = "^L68$" }, - new GamelogicEngineLamp("79") { Description = "Tournament Start Button", DeviceHint = "^L69$" }, - new GamelogicEngineLamp("295") { Description = "Warp Chaser 1 (LE)", DeviceHint = "^L70$" }, - new GamelogicEngineLamp("292") { Description = "Warp Chaser 2 (LE)", DeviceHint = "^L71$" }, - new GamelogicEngineLamp("293") { Description = "Warp Chaser 3 (LE)", DeviceHint = "^L72$" }, - new GamelogicEngineLamp("294") { Description = "Warp Chaser 4 (LE)", DeviceHint = "^L73$" }, - new GamelogicEngineLamp("299") { Description = "Warp Chaser 5 (LE)", DeviceHint = "^L74$" }, - new GamelogicEngineLamp("296") { Description = "Warp Chaser 6 (LE)", DeviceHint = "^L75$" }, - new GamelogicEngineLamp("297") { Description = "Warp Chaser 7 (LE)", DeviceHint = "^L76$" }, - new GamelogicEngineLamp("298") { Description = "Warp Chaser 8 (LE)", DeviceHint = "^L77$" }, - new GamelogicEngineLamp("50") { Description = "Cabinet Side Enterprise (X2) (LE)", DeviceHint = "^L78$" }, - new GamelogicEngineLamp("51") { Description = "Cabinet Side Phaser 1 (X2) (Front) (LE)", DeviceHint = "^L79$" }, - new GamelogicEngineLamp("52") { Description = "Cabinet Side Phaser 2 (X2) (LE)", DeviceHint = "^L80$" }, - new GamelogicEngineLamp("53") { Description = "Cabinet Side Phaser 3 (X2) (LE)", DeviceHint = "^L81$" }, - new GamelogicEngineLamp("54") { Description = "Cabinet Side Phaser 4 (X2) (LE)", DeviceHint = "^L82$" }, - new GamelogicEngineLamp("55") { Description = "Cabinet Side Phaser 5 (X2) (LE)", DeviceHint = "^L83$" }, - new GamelogicEngineLamp("56") { Description = "Cabinet Side Phaser 6 (X2) (LE)", DeviceHint = "^L84$" }, - new GamelogicEngineLamp("57") { Description = "Cabinet Side Phaser 7 (X2) (LE)", DeviceHint = "^L85$" }, - new GamelogicEngineLamp("58") { Description = "Cabinet Side Phaser 8 (X2) (LE)", DeviceHint = "^L86$" }, - new GamelogicEngineLamp("59") { Description = "Cabinet Side Phaser 9 (X2) (LE)", DeviceHint = "^L87$" }, - new GamelogicEngineLamp("60") { Description = "Cabinet Side Phaser 10 (X2) (LE)", DeviceHint = "^L88$" }, - new GamelogicEngineLamp("61") { Description = "Cabinet Side Phaser 11 (X2) (LE)", DeviceHint = "^L89$" }, - new GamelogicEngineLamp("62") { Description = "Cabinet Side Phaser 12(X2) (LE)", DeviceHint = "^L90$" }, - new GamelogicEngineLamp("63") { Description = "Cabinet Side Phaser 13 (X2) (LE)", DeviceHint = "^L91$" }, - new GamelogicEngineLamp("64") { Description = "Cabinet Side Phaser 14 (X2) (LE)", DeviceHint = "^L92$" }, - new GamelogicEngineLamp("65") { Description = "Cabinet Side Phaser 15 (X2) (LE)", DeviceHint = "^L93$" }, - new GamelogicEngineLamp("66") { Description = "Cabinet Side Phaser 16 (X2) (LE)", DeviceHint = "^L94$" }, - new GamelogicEngineLamp("67") { Description = "Cabinet Side Phaser 17 (X2) (LE)", DeviceHint = "^L95$" }, - new GamelogicEngineLamp("68") { Description = "Cabinet Side Phaser 18 (X2) (LE)", DeviceHint = "^L96$" }, - new GamelogicEngineLamp("69") { Description = "Cabinet Side Phaser 19 (X2) (LE)", DeviceHint = "^L97$" }, - new GamelogicEngineLamp("70") { Description = "Cabinet Side Phaser 20 (X2) (LE)", DeviceHint = "^L98$" }, - new GamelogicEngineLamp("71") { Description = "Cabinet Side Phaser 21 (X2) (LE)", DeviceHint = "^L99$" }, - new GamelogicEngineLamp("72") { Description = "Cabinet Side Phaser 22 (Back) (X2) (LE)", DeviceHint = "^L100$" }, + new GamelogicEngineLamp(226) { Description = "Space Jump - R", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(227) { Description = "Space Jump - G", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(228) { Description = "Space Jump - B", DeviceHint = "^L39$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(229) { Description = "Prime Directive - R", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(230) { Description = "Prime Directive - G", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(231) { Description = "Prime Directive - B", DeviceHint = "^L40$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(232) { Description = "Klingon Battle - R", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(233) { Description = "Klingon Battle - G", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(234) { Description = "Klingon Battle - B", DeviceHint = "^L41$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(235) { Description = "Status 1 (Bottom) - R", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(236) { Description = "Status 1 (Bottom) - G", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(237) { Description = "Status 1 (Bottom) - B", DeviceHint = "^L42$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(238) { Description = "Status 2 - R", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(239) { Description = "Status 2 - G", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(240) { Description = "Status 2 - B", DeviceHint = "^L43$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(241) { Description = "Status 3 - R", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(242) { Description = "Status 3 - G", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(243) { Description = "Status 3 - B", DeviceHint = "^L44$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(244) { Description = "Status 4 - R", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(245) { Description = "Status 4 - G", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(246) { Description = "Status 4 - B", DeviceHint = "^L45$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(247) { Description = "Status 5 - R", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(248) { Description = "Status 5 - G", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(249) { Description = "Status 5 - B", DeviceHint = "^L46$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(250) { Description = "Status 6 - R", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(251) { Description = "Status 6 - G", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(252) { Description = "Status 6 - B", DeviceHint = "^L47$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(253) { Description = "Status 7 - R", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(254) { Description = "Status 7 - G", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(255) { Description = "Status 7 - B", DeviceHint = "^L48$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(256) { Description = "Status 8 (Top) - R", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(257) { Description = "Status 8 (Top) - G", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(258) { Description = "Status 8 (Top) - B", DeviceHint = "^L49$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(276) { Description = "Warp Ramp Red", DeviceHint = "^L50$" }, + new GamelogicEngineLamp(277) { Description = "Enterprise", DeviceHint = "^L51$" }, + + new GamelogicEngineLamp(278) { Description = "Warp Ramp Emblem - R", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(279) { Description = "Warp Ramp Emblem - G", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(280) { Description = "Warp Ramp Emblem - B", DeviceHint = "^L52$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(281) { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(283) { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(282) { Description = "(Beam) Me Up - B", DeviceHint = "^L53$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(284) { Description = "Beam (Me) Up - R", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(286) { Description = "Beam (Me) Up - G", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(285) { Description = "Beam (Me) Up - B", DeviceHint = "^L54$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(287) { Description = "Beam Me (Up)", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(289) { Description = "Beam Me (Up) - G", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(288) { Description = "Beam Me (Up) - B", DeviceHint = "^L55$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(290) { Description = "Vengeance Saucer", DeviceHint = "^L56$" }, + new GamelogicEngineLamp(291) { Description = "Vengeance Nacelles (X2)", DeviceHint = "^L57$" }, + + new GamelogicEngineLamp(308) { Description = "Right 3 Bank (Top) - R", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(309) { Description = "Right 3 Bank (Top) - G", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(310) { Description = "Right 3 Bank (Top) - B", DeviceHint = "^L58$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(311) { Description = "Right 3 Bank (Center) - R", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(312) { Description = "Right 3 Bank (Center) - G", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(313) { Description = "Right 3 Bank (Center) - B", DeviceHint = "^L59$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(314) { Description = "Right 3 Bank (Bottom) - R", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(315) { Description = "Right 3 Bank (Bottom) - G", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(316) { Description = "Right 3 Bank (Bottom) - B", DeviceHint = "^L60$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(317) { Description = "TR(E)K - R", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(319) { Description = "TR(E)K - G", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(318) { Description = "TR(E)K - B", DeviceHint = "^L61$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(320) { Description = "TRE(K) - R", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(322) { Description = "TRE(K) - G", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(321) { Description = "TRE(K) - B", DeviceHint = "^L62$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(300) { Description = "Left Apron (X2) - R", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(302) { Description = "Left Apron (X2) - G", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(301) { Description = "Left Apron (X2) - B", DeviceHint = "^L63$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(303) { Description = "Right Apron (X2) - R", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(305) { Description = "Right Apron (X2) - G", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(304) { Description = "Right Apron (X2) - B", DeviceHint = "^L64$", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(80) { Description = "Start Button", DeviceHint = "^L65$" }, + new GamelogicEngineLamp(78) { Description = "Fire (Red)", DeviceHint = "^L66$" }, + new GamelogicEngineLamp(77) { Description = "Fire (Green)", DeviceHint = "^L67$" }, + new GamelogicEngineLamp(76) { Description = "Fire (Blue)", DeviceHint = "^L68$" }, + new GamelogicEngineLamp(79) { Description = "Tournament Start Button", DeviceHint = "^L69$" }, + new GamelogicEngineLamp(295) { Description = "Warp Chaser 1 (LE)", DeviceHint = "^L70$" }, + new GamelogicEngineLamp(292) { Description = "Warp Chaser 2 (LE)", DeviceHint = "^L71$" }, + new GamelogicEngineLamp(293) { Description = "Warp Chaser 3 (LE)", DeviceHint = "^L72$" }, + new GamelogicEngineLamp(294) { Description = "Warp Chaser 4 (LE)", DeviceHint = "^L73$" }, + new GamelogicEngineLamp(299) { Description = "Warp Chaser 5 (LE)", DeviceHint = "^L74$" }, + new GamelogicEngineLamp(296) { Description = "Warp Chaser 6 (LE)", DeviceHint = "^L75$" }, + new GamelogicEngineLamp(297) { Description = "Warp Chaser 7 (LE)", DeviceHint = "^L76$" }, + new GamelogicEngineLamp(298) { Description = "Warp Chaser 8 (LE)", DeviceHint = "^L77$" }, + new GamelogicEngineLamp(50) { Description = "Cabinet Side Enterprise (X2) (LE)", DeviceHint = "^L78$" }, + new GamelogicEngineLamp(51) { Description = "Cabinet Side Phaser 1 (X2) (Front) (LE)", DeviceHint = "^L79$" }, + new GamelogicEngineLamp(52) { Description = "Cabinet Side Phaser 2 (X2) (LE)", DeviceHint = "^L80$" }, + new GamelogicEngineLamp(53) { Description = "Cabinet Side Phaser 3 (X2) (LE)", DeviceHint = "^L81$" }, + new GamelogicEngineLamp(54) { Description = "Cabinet Side Phaser 4 (X2) (LE)", DeviceHint = "^L82$" }, + new GamelogicEngineLamp(55) { Description = "Cabinet Side Phaser 5 (X2) (LE)", DeviceHint = "^L83$" }, + new GamelogicEngineLamp(56) { Description = "Cabinet Side Phaser 6 (X2) (LE)", DeviceHint = "^L84$" }, + new GamelogicEngineLamp(57) { Description = "Cabinet Side Phaser 7 (X2) (LE)", DeviceHint = "^L85$" }, + new GamelogicEngineLamp(58) { Description = "Cabinet Side Phaser 8 (X2) (LE)", DeviceHint = "^L86$" }, + new GamelogicEngineLamp(59) { Description = "Cabinet Side Phaser 9 (X2) (LE)", DeviceHint = "^L87$" }, + new GamelogicEngineLamp(60) { Description = "Cabinet Side Phaser 10 (X2) (LE)", DeviceHint = "^L88$" }, + new GamelogicEngineLamp(61) { Description = "Cabinet Side Phaser 11 (X2) (LE)", DeviceHint = "^L89$" }, + new GamelogicEngineLamp(62) { Description = "Cabinet Side Phaser 12(X2) (LE)", DeviceHint = "^L90$" }, + new GamelogicEngineLamp(63) { Description = "Cabinet Side Phaser 13 (X2) (LE)", DeviceHint = "^L91$" }, + new GamelogicEngineLamp(64) { Description = "Cabinet Side Phaser 14 (X2) (LE)", DeviceHint = "^L92$" }, + new GamelogicEngineLamp(65) { Description = "Cabinet Side Phaser 15 (X2) (LE)", DeviceHint = "^L93$" }, + new GamelogicEngineLamp(66) { Description = "Cabinet Side Phaser 16 (X2) (LE)", DeviceHint = "^L94$" }, + new GamelogicEngineLamp(67) { Description = "Cabinet Side Phaser 17 (X2) (LE)", DeviceHint = "^L95$" }, + new GamelogicEngineLamp(68) { Description = "Cabinet Side Phaser 18 (X2) (LE)", DeviceHint = "^L96$" }, + new GamelogicEngineLamp(69) { Description = "Cabinet Side Phaser 19 (X2) (LE)", DeviceHint = "^L97$" }, + new GamelogicEngineLamp(70) { Description = "Cabinet Side Phaser 20 (X2) (LE)", DeviceHint = "^L98$" }, + new GamelogicEngineLamp(71) { Description = "Cabinet Side Phaser 21 (X2) (LE)", DeviceHint = "^L99$" }, + new GamelogicEngineLamp(72) { Description = "Cabinet Side Phaser 22 (Back) (X2) (LE)", DeviceHint = "^L100$" }, }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01") { Description = "Trough Up-Kicker" }, - new GamelogicEngineCoil("02") { Description = "Auto Launch" }, - new GamelogicEngineCoil("03") { Description = "Magnet" }, - new GamelogicEngineCoil("04") { Description = "Center Drop Target Up" }, - new GamelogicEngineCoil("05") { Description = "Center Drop Target Down" }, - new GamelogicEngineCoil("06") { Description = "Left Eject" }, - new GamelogicEngineCoil("07") { Description = "Vengeance Kick Back" }, - new GamelogicEngineCoil("08") { Description = "Shaker Motor (optional)" }, - new GamelogicEngineCoil("09") { Description = "Left Pop Bumper" }, - new GamelogicEngineCoil("10") { Description = "Right Pop Bumper" }, - new GamelogicEngineCoil("11") { Description = "Bottom Pop Bumper" }, - new GamelogicEngineCoil("12") { Description = "Upper Right Flipper" }, - new GamelogicEngineCoil("13") { Description = "Left Slingshot" }, - new GamelogicEngineCoil("14") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("17") { Description = "Flash: Asteroid (left)", IsLamp = true }, - new GamelogicEngineCoil("18") { Description = "Flash: Asteroid (right)", IsLamp = true }, - new GamelogicEngineCoil("19") { Description = "Flash: Left Ramp (top)", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Flash: Right Ramp (top)", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Flash: Kick Back", IsLamp = true }, - new GamelogicEngineCoil("22") { Description = "Laser Motor" }, - new GamelogicEngineCoil("23") { Description = "Flash: Ramp (left)", IsLamp = true }, - new GamelogicEngineCoil("25") { Description = "Flash: Pop Bumpers", IsLamp = true }, - new GamelogicEngineCoil("26") { Description = "Flash: Warp Ramp Entrance", IsLamp = true }, - new GamelogicEngineCoil("27") { Description = "Flash: Center Three Banks", IsLamp = true }, - new GamelogicEngineCoil("28") { Description = "Flash: Ramp (right)", IsLamp = true }, - new GamelogicEngineCoil("29") { Description = "Flash: Left Loop", IsLamp = true }, - new GamelogicEngineCoil("30") { Description = "Flash: Upper Right Flipper", IsLamp = true }, - new GamelogicEngineCoil("31") { Description = "Flash: Vengeance Ship", IsLamp = true }, - new GamelogicEngineCoil("32") { Description = "Flash: Bottom Spot (left)", IsLamp = true }, + new GamelogicEngineCoil(1) { Description = "Trough Up-Kicker" }, + new GamelogicEngineCoil(2) { Description = "Auto Launch" }, + new GamelogicEngineCoil(3) { Description = "Magnet" }, + new GamelogicEngineCoil(4) { Description = "Center Drop Target Up" }, + new GamelogicEngineCoil(5) { Description = "Center Drop Target Down" }, + new GamelogicEngineCoil(6) { Description = "Left Eject" }, + new GamelogicEngineCoil(7) { Description = "Vengeance Kick Back" }, + new GamelogicEngineCoil(8) { Description = "Shaker Motor (optional)" }, + new GamelogicEngineCoil(9) { Description = "Left Pop Bumper" }, + new GamelogicEngineCoil(10) { Description = "Right Pop Bumper" }, + new GamelogicEngineCoil(11) { Description = "Bottom Pop Bumper" }, + new GamelogicEngineCoil(12) { Description = "Upper Right Flipper" }, + new GamelogicEngineCoil(13) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(14) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(17) { Description = "Flash: Asteroid (left)", IsLamp = true }, + new GamelogicEngineCoil(18) { Description = "Flash: Asteroid (right)", IsLamp = true }, + new GamelogicEngineCoil(19) { Description = "Flash: Left Ramp (top)", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Flash: Right Ramp (top)", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Flash: Kick Back", IsLamp = true }, + new GamelogicEngineCoil(22) { Description = "Laser Motor" }, + new GamelogicEngineCoil(23) { Description = "Flash: Ramp (left)", IsLamp = true }, + new GamelogicEngineCoil(25) { Description = "Flash: Pop Bumpers", IsLamp = true }, + new GamelogicEngineCoil(26) { Description = "Flash: Warp Ramp Entrance", IsLamp = true }, + new GamelogicEngineCoil(27) { Description = "Flash: Center Three Banks", IsLamp = true }, + new GamelogicEngineCoil(28) { Description = "Flash: Ramp (right)", IsLamp = true }, + new GamelogicEngineCoil(29) { Description = "Flash: Left Loop", IsLamp = true }, + new GamelogicEngineCoil(30) { Description = "Flash: Upper Right Flipper", IsLamp = true }, + new GamelogicEngineCoil(31) { Description = "Flash: Vengeance Ship", IsLamp = true }, + new GamelogicEngineCoil(32) { Description = "Flash: Bottom Spot (left)", IsLamp = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/TRONLegacy.cs b/VisualPinball.Engine.PinMAME/Games/TRONLegacy.cs index a52f08b..8924e6b 100644 --- a/VisualPinball.Engine.PinMAME/Games/TRONLegacy.cs +++ b/VisualPinball.Engine.PinMAME/Games/TRONLegacy.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.PinMAME.MPUs; @@ -45,151 +47,154 @@ public class TRONLegacy : Sam new PinMameRom("trn_1741h", "1.741h"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("01") { Description = "TRO(N)" }, - new GamelogicEngineSwitch("02") { Description = "TR(O)N" }, - new GamelogicEngineSwitch("03") { Description = "T(R)ON" }, - new GamelogicEngineSwitch("04") { Description = "(T)RON" }, - new GamelogicEngineSwitch("07") { Description = "(Z)USE" }, - new GamelogicEngineSwitch("08") { Description = "Z(U)SE" }, - new GamelogicEngineSwitch("11") { Description = "Video Game Eject" }, - new GamelogicEngineSwitch("12") { Description = "Zen Rollover" }, - new GamelogicEngineSwitch("13") { Description = "ZUS(E)" }, - new GamelogicEngineSwitch("14") { Description = "C(L)U" }, - new GamelogicEngineSwitch("18") { Description = "Trough #4 Left" }, - new GamelogicEngineSwitch("19") { Description = "Trough #3" }, - new GamelogicEngineSwitch("20") { Description = "Trough #2" }, - new GamelogicEngineSwitch("21") { Description = "Trough #1 Right" }, - new GamelogicEngineSwitch("22") { Description = "Trough Jam" }, - new GamelogicEngineSwitch("23") { Description = "Shooter Lane" }, - new GamelogicEngineSwitch("24") { Description = "Left Outlane" }, - new GamelogicEngineSwitch("25") { Description = "(C)LU" }, - new GamelogicEngineSwitch("26") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("27") { Description = "Right Slingshot" }, - new GamelogicEngineSwitch("28") { Description = "CL(U)" }, - new GamelogicEngineSwitch("29") { Description = "Right Outlane" }, - new GamelogicEngineSwitch("30") { Description = "Left Bumper" }, - new GamelogicEngineSwitch("31") { Description = "Right Bumper" }, - new GamelogicEngineSwitch("32") { Description = "Bottom Bumper" }, - new GamelogicEngineSwitch("34") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("35") { Description = "Left Ramp Entrance" }, - new GamelogicEngineSwitch("36") { Description = "Right Orbit Spinner" }, - new GamelogicEngineSwitch("37") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("38") { Description = "Right Ramp Entrance" }, - new GamelogicEngineSwitch("39") { Description = "Right Inner Loop" }, - new GamelogicEngineSwitch("41") { Description = "Disc Opto" }, - new GamelogicEngineSwitch("43") { Description = "Left Orbit" }, - new GamelogicEngineSwitch("44") { Description = "Left Spinner" }, - new GamelogicEngineSwitch("46") { Description = "Right Orbit" }, - new GamelogicEngineSwitch("48") { Description = "ZU(S)E" }, - new GamelogicEngineSwitch("49") { Description = "Recognizer 3-Bank (Left)" }, - new GamelogicEngineSwitch("50") { Description = "Recognizer 3-Bank (Center)" }, - new GamelogicEngineSwitch("51") { Description = "Recognizer 3-Bank (Right)" }, - new GamelogicEngineSwitch("52") { Description = "3-Bank Motor (Down)" }, - new GamelogicEngineSwitch("53") { Description = "3-Bank Motor (Up)" }, - new GamelogicEngineSwitch("54") { Description = "Recognizer Motor Pos 1" }, - new GamelogicEngineSwitch("55") { Description = "Recognizer Motor Pos 2" }, - new GamelogicEngineSwitch("56") { Description = "Recognizer Motor Pos 3" } + new GamelogicEngineSwitch(1) { Description = "TRO(N)" }, + new GamelogicEngineSwitch(2) { Description = "TR(O)N" }, + new GamelogicEngineSwitch(3) { Description = "T(R)ON" }, + new GamelogicEngineSwitch(4) { Description = "(T)RON" }, + new GamelogicEngineSwitch(7) { Description = "(Z)USE" }, + new GamelogicEngineSwitch(8) { Description = "Z(U)SE" }, + new GamelogicEngineSwitch(11) { Description = "Video Game Eject" }, + new GamelogicEngineSwitch(12) { Description = "Zen Rollover" }, + new GamelogicEngineSwitch(13) { Description = "ZUS(E)" }, + new GamelogicEngineSwitch(14) { Description = "C(L)U" }, + new GamelogicEngineSwitch(18) { Description = "Trough #4 Left" }, + new GamelogicEngineSwitch(19) { Description = "Trough #3" }, + new GamelogicEngineSwitch(20) { Description = "Trough #2" }, + new GamelogicEngineSwitch(21) { Description = "Trough #1 Right" }, + new GamelogicEngineSwitch(22) { Description = "Trough Jam" }, + new GamelogicEngineSwitch(23) { Description = "Shooter Lane" }, + new GamelogicEngineSwitch(24) { Description = "Left Outlane" }, + new GamelogicEngineSwitch(25) { Description = "(C)LU" }, + new GamelogicEngineSwitch(26) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(27) { Description = "Right Slingshot" }, + new GamelogicEngineSwitch(28) { Description = "CL(U)" }, + new GamelogicEngineSwitch(29) { Description = "Right Outlane" }, + new GamelogicEngineSwitch(30) { Description = "Left Bumper" }, + new GamelogicEngineSwitch(31) { Description = "Right Bumper" }, + new GamelogicEngineSwitch(32) { Description = "Bottom Bumper" }, + new GamelogicEngineSwitch(34) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(35) { Description = "Left Ramp Entrance" }, + new GamelogicEngineSwitch(36) { Description = "Right Orbit Spinner" }, + new GamelogicEngineSwitch(37) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(38) { Description = "Right Ramp Entrance" }, + new GamelogicEngineSwitch(39) { Description = "Right Inner Loop" }, + new GamelogicEngineSwitch(41) { Description = "Disc Opto" }, + new GamelogicEngineSwitch(43) { Description = "Left Orbit" }, + new GamelogicEngineSwitch(44) { Description = "Left Spinner" }, + new GamelogicEngineSwitch(46) { Description = "Right Orbit" }, + new GamelogicEngineSwitch(48) { Description = "ZU(S)E" }, + new GamelogicEngineSwitch(49) { Description = "Recognizer 3-Bank (Left)" }, + new GamelogicEngineSwitch(50) { Description = "Recognizer 3-Bank (Center)" }, + new GamelogicEngineSwitch(51) { Description = "Recognizer 3-Bank (Right)" }, + new GamelogicEngineSwitch(52) { Description = "3-Bank Motor (Down)" }, + new GamelogicEngineSwitch(53) { Description = "3-Bank Motor (Up)" }, + new GamelogicEngineSwitch(54) { Description = "Recognizer Motor Pos 1" }, + new GamelogicEngineSwitch(55) { Description = "Recognizer Motor Pos 2" }, + new GamelogicEngineSwitch(56) { Description = "Recognizer Motor Pos 3" } }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("01") { Description = "TRO(N)" }, - new GamelogicEngineLamp("02") { Description = "TR(O)N" }, - new GamelogicEngineLamp("03") { Description = "T(R)ON" }, - new GamelogicEngineLamp("04") { Description = "(T)RON" }, - new GamelogicEngineLamp("05") { Description = "Tron Double Scoring" }, - new GamelogicEngineLamp("06") { Description = "Bumpers" }, - new GamelogicEngineLamp("07") { Description = "Spinners" }, - new GamelogicEngineLamp("08") { Description = "Left Outlane" }, - new GamelogicEngineLamp("09") { Description = "(C)LU" }, - new GamelogicEngineLamp("10") { Description = "Z(U)SE" }, - new GamelogicEngineLamp("11") { Description = "Left Ramp (Light Cycle)" }, - new GamelogicEngineLamp("12") { Description = "(Z)USE" }, - new GamelogicEngineLamp("13") { Description = "Left Orbit (CLU)" }, - new GamelogicEngineLamp("14") { Description = "Left Orbit (Light Cycle)" }, - new GamelogicEngineLamp("15") { Description = "Left Orbit (Disc)" }, - new GamelogicEngineLamp("16") { Description = "Left Loop Arrow" }, - new GamelogicEngineLamp("17") { Description = "Center Portal" }, - new GamelogicEngineLamp("18") { Description = "Center TRON" }, - new GamelogicEngineLamp("19") { Description = "Center Recognizer" }, - new GamelogicEngineLamp("20") { Description = "Center Light Cycle" }, - new GamelogicEngineLamp("21") { Description = "Center Disc" }, - new GamelogicEngineLamp("22") { Description = "Center Quorra" }, - new GamelogicEngineLamp("23") { Description = "Center ZUSE" }, - new GamelogicEngineLamp("24") { Description = "Center CLU" }, - new GamelogicEngineLamp("25") { Description = "Center Gem" }, - new GamelogicEngineLamp("26") { Description = "Shoot Again" }, - new GamelogicEngineLamp("27") { Description = "Center Flynn" }, - new GamelogicEngineLamp("28") { Description = "Eject CLU" }, - new GamelogicEngineLamp("29") { Description = "ZUS(E)" }, - new GamelogicEngineLamp("30") { Description = "C(L)U" }, - new GamelogicEngineLamp("31") { Description = "CL(U)" }, - new GamelogicEngineLamp("32") { Description = "Right Outlane" }, - new GamelogicEngineLamp("33") { Description = "Right Loop Arrow" }, - new GamelogicEngineLamp("34") { Description = "Right Orbit (Disc)" }, - new GamelogicEngineLamp("35") { Description = "Right Orbit (Light Cycle)" }, - new GamelogicEngineLamp("36") { Description = "Right Orbit (CLU)" }, - new GamelogicEngineLamp("37") { Description = "Eject Extra Ball" }, - new GamelogicEngineLamp("38") { Description = "Eject Light Cylce" }, - new GamelogicEngineLamp("39") { Description = "Eject Quorra" }, - new GamelogicEngineLamp("40") { Description = "Eject Portal" }, - new GamelogicEngineLamp("42") { Description = "Right Ramp (Light Cycle)" }, - new GamelogicEngineLamp("43") { Description = "ZU(S)E" }, - new GamelogicEngineLamp("45") { Description = "Flynn's Arcade" }, - new GamelogicEngineLamp("46") { Description = "Left Bumper" }, - new GamelogicEngineLamp("47") { Description = "Right Bumper" }, - new GamelogicEngineLamp("48") { Description = "Bottom Bumper" }, - new GamelogicEngineLamp("49") { Description = "Left Ramp Arrow" }, - new GamelogicEngineLamp("50") { Description = "Left Ramp (Disc)" }, - new GamelogicEngineLamp("51") { Description = "Recognizer Right" }, - new GamelogicEngineLamp("52") { Description = "Recognizer Center" }, - new GamelogicEngineLamp("53") { Description = "Recognizer Left" }, - new GamelogicEngineLamp("54") { Description = "Recognizer 3-Bank" }, - new GamelogicEngineLamp("55") { Description = "Right Ramp (Disc)" }, - new GamelogicEngineLamp("56") { Description = "Right Ramp Arrow" }, - new GamelogicEngineLamp("57") { Description = "Right Inner Loop Arrow" }, - new GamelogicEngineLamp("58") { Description = "Right Inner Loop (Disc)" }, - new GamelogicEngineLamp("59") { Description = "Right Inner Loop (Light Cycle)" }, - new GamelogicEngineLamp("60") { Description = "Advance Quorra" }, - new GamelogicEngineLamp("61") { Description = "Left Inner Loop (CLU)" }, - new GamelogicEngineLamp("62") { Description = "Left Inner Loop (Light Cycle)" }, - new GamelogicEngineLamp("63") { Description = "Left Inner Loop (Disc)" }, - new GamelogicEngineLamp("64") { Description = "Left Inner Loop Arrow" }, - new GamelogicEngineLamp("65") { Description = "Start Button" }, - new GamelogicEngineLamp("66") { Description = "Tournament Start Button" }, + new GamelogicEngineLamp(1) { Description = "TRO(N)" }, + new GamelogicEngineLamp(2) { Description = "TR(O)N" }, + new GamelogicEngineLamp(3) { Description = "T(R)ON" }, + new GamelogicEngineLamp(4) { Description = "(T)RON" }, + new GamelogicEngineLamp(5) { Description = "Tron Double Scoring" }, + new GamelogicEngineLamp(6) { Description = "Bumpers" }, + new GamelogicEngineLamp(7) { Description = "Spinners" }, + new GamelogicEngineLamp(8) { Description = "Left Outlane" }, + new GamelogicEngineLamp(9) { Description = "(C)LU" }, + new GamelogicEngineLamp(10) { Description = "Z(U)SE" }, + new GamelogicEngineLamp(11) { Description = "Left Ramp (Light Cycle)" }, + new GamelogicEngineLamp(12) { Description = "(Z)USE" }, + new GamelogicEngineLamp(13) { Description = "Left Orbit (CLU)" }, + new GamelogicEngineLamp(14) { Description = "Left Orbit (Light Cycle)" }, + new GamelogicEngineLamp(15) { Description = "Left Orbit (Disc)" }, + new GamelogicEngineLamp(16) { Description = "Left Loop Arrow" }, + new GamelogicEngineLamp(17) { Description = "Center Portal" }, + new GamelogicEngineLamp(18) { Description = "Center TRON" }, + new GamelogicEngineLamp(19) { Description = "Center Recognizer" }, + new GamelogicEngineLamp(20) { Description = "Center Light Cycle" }, + new GamelogicEngineLamp(21) { Description = "Center Disc" }, + new GamelogicEngineLamp(22) { Description = "Center Quorra" }, + new GamelogicEngineLamp(23) { Description = "Center ZUSE" }, + new GamelogicEngineLamp(24) { Description = "Center CLU" }, + new GamelogicEngineLamp(25) { Description = "Center Gem" }, + new GamelogicEngineLamp(26) { Description = "Shoot Again" }, + new GamelogicEngineLamp(27) { Description = "Center Flynn" }, + new GamelogicEngineLamp(28) { Description = "Eject CLU" }, + new GamelogicEngineLamp(29) { Description = "ZUS(E)" }, + new GamelogicEngineLamp(30) { Description = "C(L)U" }, + new GamelogicEngineLamp(31) { Description = "CL(U)" }, + new GamelogicEngineLamp(32) { Description = "Right Outlane" }, + new GamelogicEngineLamp(33) { Description = "Right Loop Arrow" }, + new GamelogicEngineLamp(34) { Description = "Right Orbit (Disc)" }, + new GamelogicEngineLamp(35) { Description = "Right Orbit (Light Cycle)" }, + new GamelogicEngineLamp(36) { Description = "Right Orbit (CLU)" }, + new GamelogicEngineLamp(37) { Description = "Eject Extra Ball" }, + new GamelogicEngineLamp(38) { Description = "Eject Light Cylce" }, + new GamelogicEngineLamp(39) { Description = "Eject Quorra" }, + new GamelogicEngineLamp(40) { Description = "Eject Portal" }, + new GamelogicEngineLamp(42) { Description = "Right Ramp (Light Cycle)" }, + new GamelogicEngineLamp(43) { Description = "ZU(S)E" }, + new GamelogicEngineLamp(45) { Description = "Flynn's Arcade" }, + new GamelogicEngineLamp(46) { Description = "Left Bumper" }, + new GamelogicEngineLamp(47) { Description = "Right Bumper" }, + new GamelogicEngineLamp(48) { Description = "Bottom Bumper" }, + new GamelogicEngineLamp(49) { Description = "Left Ramp Arrow" }, + new GamelogicEngineLamp(50) { Description = "Left Ramp (Disc)" }, + new GamelogicEngineLamp(51) { Description = "Recognizer Right" }, + new GamelogicEngineLamp(52) { Description = "Recognizer Center" }, + new GamelogicEngineLamp(53) { Description = "Recognizer Left" }, + new GamelogicEngineLamp(54) { Description = "Recognizer 3-Bank" }, + new GamelogicEngineLamp(55) { Description = "Right Ramp (Disc)" }, + new GamelogicEngineLamp(56) { Description = "Right Ramp Arrow" }, + new GamelogicEngineLamp(57) { Description = "Right Inner Loop Arrow" }, + new GamelogicEngineLamp(58) { Description = "Right Inner Loop (Disc)" }, + new GamelogicEngineLamp(59) { Description = "Right Inner Loop (Light Cycle)" }, + new GamelogicEngineLamp(60) { Description = "Advance Quorra" }, + new GamelogicEngineLamp(61) { Description = "Left Inner Loop (CLU)" }, + new GamelogicEngineLamp(62) { Description = "Left Inner Loop (Light Cycle)" }, + new GamelogicEngineLamp(63) { Description = "Left Inner Loop (Disc)" }, + new GamelogicEngineLamp(64) { Description = "Left Inner Loop Arrow" }, + new GamelogicEngineLamp(65) { Description = "Start Button" }, + new GamelogicEngineLamp(66) { Description = "Tournament Start Button" }, }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01") { Description = "Trough Up-Kicker" }, - new GamelogicEngineCoil("02") { Description = "Auto Launch" }, - new GamelogicEngineCoil("03") { Description = "4-Bank Drop Target" }, - new GamelogicEngineCoil("04") { Description = "Video Game Eject" }, - new GamelogicEngineCoil("05") { Description = "Disc Motor Power" }, - new GamelogicEngineCoil("06") { Description = "Recognizer 3-Bank Motor / Relay" }, - new GamelogicEngineCoil("07") { Description = "Orbit Up / Down Post" }, - new GamelogicEngineCoil("08") { Description = "Shaker Motor (Optional)" }, - new GamelogicEngineCoil("09") { Description = "Left Pop Bumper" }, - new GamelogicEngineCoil("10") { Description = "Right Pop Bumper" }, - new GamelogicEngineCoil("11") { Description = "Bottom Pop Bumper" }, - new GamelogicEngineCoil("12") { Description = "Upper Left Flipper" }, - new GamelogicEngineCoil("13") { Description = "Left Slingshot" }, - new GamelogicEngineCoil("14") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("17") { Description = "Zen Flasher", IsLamp = true }, - new GamelogicEngineCoil("18") { Description = "Flash: Video Game", IsLamp = true }, - new GamelogicEngineCoil("19") { Description = "Flash: Right Domes (X2)", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Flash: Bottom Arch (Left)", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Flash: Bottom Arch (Right)", IsLamp = true }, - new GamelogicEngineCoil("22") { Description = "Disc Direction Relay" }, - new GamelogicEngineCoil("23") { Description = "Recognizer Relay" }, - new GamelogicEngineCoil("24") { Description = "Optional (e.g. Coin Meter)" }, - new GamelogicEngineCoil("25") { Description = "Flash: Left Domes (X2)", IsLamp = true }, - new GamelogicEngineCoil("26") { Description = "Flash: Disc (Left)", IsLamp = true }, - new GamelogicEngineCoil("27") { Description = "Flash: Disc (Right)", IsLamp = true }, - new GamelogicEngineCoil("28") { Description = "Flash: Backpanel (X2)", IsLamp = true }, - new GamelogicEngineCoil("29") { Description = "Flash: Recognizer", IsLamp = true }, - new GamelogicEngineCoil("30") { Description = "Disc Motor Relay" }, - new GamelogicEngineCoil("31") { Description = "Flash: Red Disc (Left) (X2)", IsLamp = true }, - new GamelogicEngineCoil("32") { Description = "Flash: Red Disc (Right) (X2)", IsLamp = true }, + new GamelogicEngineCoil(1) { Description = "Trough Up-Kicker" }, + new GamelogicEngineCoil(2) { Description = "Auto Launch" }, + new GamelogicEngineCoil(3) { Description = "4-Bank Drop Target" }, + new GamelogicEngineCoil(4) { Description = "Video Game Eject" }, + new GamelogicEngineCoil(5) { Description = "Disc Motor Power" }, + new GamelogicEngineCoil(6) { Description = "Recognizer 3-Bank Motor / Relay" }, + new GamelogicEngineCoil(7) { Description = "Orbit Up / Down Post" }, + new GamelogicEngineCoil(8) { Description = "Shaker Motor (Optional)" }, + new GamelogicEngineCoil(9) { Description = "Left Pop Bumper" }, + new GamelogicEngineCoil(10) { Description = "Right Pop Bumper" }, + new GamelogicEngineCoil(11) { Description = "Bottom Pop Bumper" }, + new GamelogicEngineCoil(12) { Description = "Upper Left Flipper" }, + new GamelogicEngineCoil(13) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(14) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(17) { Description = "Zen Flasher", IsLamp = true }, + new GamelogicEngineCoil(18) { Description = "Flash: Video Game", IsLamp = true }, + new GamelogicEngineCoil(19) { Description = "Flash: Right Domes (X2)", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Flash: Bottom Arch (Left)", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Flash: Bottom Arch (Right)", IsLamp = true }, + new GamelogicEngineCoil(22) { Description = "Disc Direction Relay" }, + new GamelogicEngineCoil(23) { Description = "Recognizer Relay" }, + new GamelogicEngineCoil(24) { Description = "Optional (e.g. Coin Meter)" }, + new GamelogicEngineCoil(25) { Description = "Flash: Left Domes (X2)", IsLamp = true }, + new GamelogicEngineCoil(26) { Description = "Flash: Disc (Left)", IsLamp = true }, + new GamelogicEngineCoil(27) { Description = "Flash: Disc (Right)", IsLamp = true }, + new GamelogicEngineCoil(28) { Description = "Flash: Backpanel (X2)", IsLamp = true }, + new GamelogicEngineCoil(29) { Description = "Flash: Recognizer", IsLamp = true }, + new GamelogicEngineCoil(30) { Description = "Disc Motor Relay" }, + new GamelogicEngineCoil(31) { Description = "Flash: Red Disc (Left) (X2)", IsLamp = true }, + new GamelogicEngineCoil(32) { Description = "Flash: Red Disc (Right) (X2)", IsLamp = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/Terminator2.cs b/VisualPinball.Engine.PinMAME/Games/Terminator2.cs index 505590c..c50afb6 100644 --- a/VisualPinball.Engine.PinMAME/Games/Terminator2.cs +++ b/VisualPinball.Engine.PinMAME/Games/Terminator2.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game.Engines; @@ -43,179 +45,186 @@ public class Terminator2 : Wpc new PinMameRom("t2_f32", "0.32", "FreeWPC"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + new PinMameIdAlias(46, CoilFlipperLowerRight, AliasType.Coil), + new PinMameIdAlias(48, CoilFlipperLowerLeft, AliasType.Coil), + new PinMameIdAlias(34, CoilFlipperUpperRight, AliasType.Coil), + new PinMameIdAlias(36, CoilFlipperUpperLeft, AliasType.Coil), + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("13") { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, - new GamelogicEngineSwitch("14") { Description = "Plumb Bob Tilt" }, - new GamelogicEngineSwitch("15") { Description = "Trough Left", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, - new GamelogicEngineSwitch("16") { Description = "Trough Center", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, - new GamelogicEngineSwitch("17") { Description = "Trough Right", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, - new GamelogicEngineSwitch("18") { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, - - //new GamelogicEngineSwitch("21") { Description = "Slam Tilt" }, - new GamelogicEngineSwitch("22") { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, - new GamelogicEngineSwitch("23") { Description = "Ticket Dispenser" }, - new GamelogicEngineSwitch("24") { Description = "Test Position, Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, - new GamelogicEngineSwitch("25") { Description = "Left Outlane" }, - new GamelogicEngineSwitch("26") { Description = "Left Return Lane" }, - new GamelogicEngineSwitch("27") { Description = "Right Return Lane" }, - new GamelogicEngineSwitch("28") { Description = "Right Outlane" }, - - new GamelogicEngineSwitch("31") { Description = "Gun Loaded" }, - new GamelogicEngineSwitch("32") { Description = "Gun Mark" }, - new GamelogicEngineSwitch("33") { Description = "Gun Home" }, - new GamelogicEngineSwitch("34") { Description = "Grip Trigger", InputActionHint = InputConstants.ActionPlunger }, - new GamelogicEngineSwitch("36") { Description = "Mid Left Stand-up Target" }, - new GamelogicEngineSwitch("37") { Description = "Mid Center Stand-up Target" }, - new GamelogicEngineSwitch("38") { Description = "Mid Right Stand-up Target" }, - - new GamelogicEngineSwitch("41") { Description = "Left Jet" }, - new GamelogicEngineSwitch("42") { Description = "Right Jet" }, - new GamelogicEngineSwitch("43") { Description = "Bottom Jet" }, - new GamelogicEngineSwitch("44") { Description = "Left Sling" }, - new GamelogicEngineSwitch("45") { Description = "Right Sling" }, - new GamelogicEngineSwitch("46") { Description = "Top Right Stand-up Target" }, - new GamelogicEngineSwitch("47") { Description = "Mid Right Stand-up Target" }, - new GamelogicEngineSwitch("48") { Description = "Bottom Right Stand-up Target" }, - - new GamelogicEngineSwitch("51") { Description = "Left Lock" }, - new GamelogicEngineSwitch("53") { Description = "Low Escape Route" }, - new GamelogicEngineSwitch("54") { Description = "High Escape Route" }, - new GamelogicEngineSwitch("55") { Description = "Top Lock" }, - new GamelogicEngineSwitch("56") { Description = "Top Lane Left" }, - new GamelogicEngineSwitch("57") { Description = "Top Lane Center" }, - new GamelogicEngineSwitch("58") { Description = "Top Lane Right" }, - - new GamelogicEngineSwitch("61") { Description = "Left Ramp Entry" }, - new GamelogicEngineSwitch("62") { Description = "Left Ramp Made" }, - new GamelogicEngineSwitch("63") { Description = "Right Ramp Entry" }, - new GamelogicEngineSwitch("64") { Description = "Right Ramp Made" }, - new GamelogicEngineSwitch("65") { Description = "Low Chase Loop" }, - new GamelogicEngineSwitch("66") { Description = "High Chase Loop" }, - - new GamelogicEngineSwitch("71") { Description = "Target 1 High" }, - new GamelogicEngineSwitch("72") { Description = "Target 2" }, - new GamelogicEngineSwitch("73") { Description = "Target 3" }, - new GamelogicEngineSwitch("74") { Description = "Target 4" }, - new GamelogicEngineSwitch("75") { Description = "Target 5 Low" }, - new GamelogicEngineSwitch("76") { Description = "Ball Popper" }, - new GamelogicEngineSwitch("77") { Description = "Drop Target" }, - new GamelogicEngineSwitch("78") { Description = "Shooter" }, + new GamelogicEngineSwitch(13) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame }, + new GamelogicEngineSwitch(14) { Description = "Plumb Bob Tilt" }, + new GamelogicEngineSwitch(15) { Description = "Trough Left", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "3" }, + new GamelogicEngineSwitch(16) { Description = "Trough Center", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "2" }, + new GamelogicEngineSwitch(17) { Description = "Trough Right", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "1" }, + new GamelogicEngineSwitch(18) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "drain_switch" }, + + //new GamelogicEngineSwitch(21) { Description = "Slam Tilt" }, + new GamelogicEngineSwitch(22) { Description = "Coin Door Closed", NormallyClosed = true, InputActionHint = InputConstants.ActionCoinDoorOpenClose }, + new GamelogicEngineSwitch(23) { Description = "Ticket Dispenser" }, + new GamelogicEngineSwitch(24) { Description = "Test Position, Always Closed", ConstantHint = SwitchConstantHint.AlwaysClosed}, + new GamelogicEngineSwitch(25) { Description = "Left Outlane" }, + new GamelogicEngineSwitch(26) { Description = "Left Return Lane" }, + new GamelogicEngineSwitch(27) { Description = "Right Return Lane" }, + new GamelogicEngineSwitch(28) { Description = "Right Outlane" }, + + new GamelogicEngineSwitch(31) { Description = "Gun Loaded" }, + new GamelogicEngineSwitch(32) { Description = "Gun Mark" }, + new GamelogicEngineSwitch(33) { Description = "Gun Home" }, + new GamelogicEngineSwitch(34) { Description = "Grip Trigger", InputActionHint = InputConstants.ActionPlunger }, + new GamelogicEngineSwitch(36) { Description = "Mid Left Stand-up Target" }, + new GamelogicEngineSwitch(37) { Description = "Mid Center Stand-up Target" }, + new GamelogicEngineSwitch(38) { Description = "Mid Right Stand-up Target" }, + + new GamelogicEngineSwitch(41) { Description = "Left Jet" }, + new GamelogicEngineSwitch(42) { Description = "Right Jet" }, + new GamelogicEngineSwitch(43) { Description = "Bottom Jet" }, + new GamelogicEngineSwitch(44) { Description = "Left Sling" }, + new GamelogicEngineSwitch(45) { Description = "Right Sling" }, + new GamelogicEngineSwitch(46) { Description = "Top Right Stand-up Target" }, + new GamelogicEngineSwitch(47) { Description = "Mid Right Stand-up Target" }, + new GamelogicEngineSwitch(48) { Description = "Bottom Right Stand-up Target" }, + + new GamelogicEngineSwitch(51) { Description = "Left Lock" }, + new GamelogicEngineSwitch(53) { Description = "Low Escape Route" }, + new GamelogicEngineSwitch(54) { Description = "High Escape Route" }, + new GamelogicEngineSwitch(55) { Description = "Top Lock" }, + new GamelogicEngineSwitch(56) { Description = "Top Lane Left" }, + new GamelogicEngineSwitch(57) { Description = "Top Lane Center" }, + new GamelogicEngineSwitch(58) { Description = "Top Lane Right" }, + + new GamelogicEngineSwitch(61) { Description = "Left Ramp Entry" }, + new GamelogicEngineSwitch(62) { Description = "Left Ramp Made" }, + new GamelogicEngineSwitch(63) { Description = "Right Ramp Entry" }, + new GamelogicEngineSwitch(64) { Description = "Right Ramp Made" }, + new GamelogicEngineSwitch(65) { Description = "Low Chase Loop" }, + new GamelogicEngineSwitch(66) { Description = "High Chase Loop" }, + + new GamelogicEngineSwitch(71) { Description = "Target 1 High" }, + new GamelogicEngineSwitch(72) { Description = "Target 2" }, + new GamelogicEngineSwitch(73) { Description = "Target 3" }, + new GamelogicEngineSwitch(74) { Description = "Target 4" }, + new GamelogicEngineSwitch(75) { Description = "Target 5 Low" }, + new GamelogicEngineSwitch(76) { Description = "Ball Popper" }, + new GamelogicEngineSwitch(77) { Description = "Drop Target" }, + new GamelogicEngineSwitch(78) { Description = "Shooter" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("11") { Description = "Multiplier 2x" }, - new GamelogicEngineLamp("12") { Description = "Multiplier 4x" }, - new GamelogicEngineLamp("13") { Description = "Hold Bonus" }, - new GamelogicEngineLamp("14") { Description = "Multiplier 6x" }, - new GamelogicEngineLamp("15") { Description = "Multiplier 8x" }, - new GamelogicEngineLamp("16") { Description = "Shoot Again" }, - new GamelogicEngineLamp("17") { Description = "Mouth" }, - - new GamelogicEngineLamp("21") { Description = "Kickback" }, - new GamelogicEngineLamp("22") { Description = "Special" }, - new GamelogicEngineLamp("23") { Description = "Left Return Lane" }, - new GamelogicEngineLamp("24") { Description = "Right Return Lane" }, - new GamelogicEngineLamp("25") { Description = "Data Base" }, - new GamelogicEngineLamp("26") { Description = "Load Gun" }, - new GamelogicEngineLamp("27") { Description = "Extra Ball" }, - new GamelogicEngineLamp("28") { Description = "Load for Jackpot" }, - - new GamelogicEngineLamp("31") { Description = "Target 1 High" }, - new GamelogicEngineLamp("32") { Description = "Target 2" }, - new GamelogicEngineLamp("33") { Description = "Target 3" }, - new GamelogicEngineLamp("34") { Description = "Target 4" }, - new GamelogicEngineLamp("35") { Description = "Target 5 Low" }, - new GamelogicEngineLamp("36") { Description = "Middle Target Bank Left" }, - new GamelogicEngineLamp("37") { Description = "Middle Target Bank Center" }, - new GamelogicEngineLamp("38") { Description = "Middle Target Bank Right" }, - - new GamelogicEngineLamp("41") { Description = "Lock Two" }, - new GamelogicEngineLamp("42") { Description = "Data Base" }, - new GamelogicEngineLamp("43") { Description = "10 Million" }, - new GamelogicEngineLamp("44") { Description = "Extra Ball" }, - new GamelogicEngineLamp("45") { Description = "Multi-ball" }, - new GamelogicEngineLamp("46") { Description = "Light Hurry Up" }, - new GamelogicEngineLamp("47") { Description = "Hold Bonus" }, - new GamelogicEngineLamp("48") { Description = "Security Pass" }, - - new GamelogicEngineLamp("51") { Description = "Eyes Lower" }, - new GamelogicEngineLamp("52") { Description = "Eyes Upper" }, - new GamelogicEngineLamp("53") { Description = "5,000,000" }, - new GamelogicEngineLamp("54") { Description = "3,000,000" }, - new GamelogicEngineLamp("55") { Description = "1,000,000" }, - new GamelogicEngineLamp("56") { Description = "750,000" }, - new GamelogicEngineLamp("57") { Description = "500,000" }, - new GamelogicEngineLamp("58") { Description = "250,000" }, - - new GamelogicEngineLamp("61") { Description = "Left CPU Lit" }, - new GamelogicEngineLamp("62") { Description = "Left Vault Key" }, - new GamelogicEngineLamp("63") { Description = "Left Silent Alarm" }, - new GamelogicEngineLamp("64") { Description = "Left Passcode" }, - new GamelogicEngineLamp("65") { Description = "Left Checkpoint" }, - new GamelogicEngineLamp("66") { Description = "Lock 1" }, - new GamelogicEngineLamp("67") { Description = "Data Base 1" }, - new GamelogicEngineLamp("68") { Description = "Left Ramp" }, - - new GamelogicEngineLamp("71") { Description = "Right CPU Lit" }, - new GamelogicEngineLamp("72") { Description = "Right Vault Key" }, - new GamelogicEngineLamp("73") { Description = "Right Silent Alarm" }, - new GamelogicEngineLamp("74") { Description = "Right Passcode" }, - new GamelogicEngineLamp("75") { Description = "Right Checkpoint" }, - new GamelogicEngineLamp("76") { Description = "Right Bank Top" }, - new GamelogicEngineLamp("77") { Description = "Right Bank Middle" }, - new GamelogicEngineLamp("78") { Description = "Right Bank Bottom" }, - - new GamelogicEngineLamp("81") { Description = "Chase Values" }, - new GamelogicEngineLamp("82") { Description = "Right Ramp" }, - new GamelogicEngineLamp("83") { Description = "Hurry Up" }, - new GamelogicEngineLamp("84") { Description = "Start Button" }, - new GamelogicEngineLamp("85") { Description = "Drop Target" }, - new GamelogicEngineLamp("86") { Description = "Top Lane Left" }, - new GamelogicEngineLamp("87") { Description = "Top Lane Center" }, - new GamelogicEngineLamp("88") { Description = "Top Lane Right" }, - - new GamelogicEngineLamp("0") { Description = "GI: Top Insert", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, - new GamelogicEngineLamp("1") { Description = "GI: Bottom Insert", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, - new GamelogicEngineLamp("2") { Description = "GI: Right Playfield", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, - new GamelogicEngineLamp("3") { Description = "GI: CPU String", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, - new GamelogicEngineLamp("4") { Description = "GI: Left Playfield", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, + new GamelogicEngineLamp(11) { Description = "Multiplier 2x" }, + new GamelogicEngineLamp(12) { Description = "Multiplier 4x" }, + new GamelogicEngineLamp(13) { Description = "Hold Bonus" }, + new GamelogicEngineLamp(14) { Description = "Multiplier 6x" }, + new GamelogicEngineLamp(15) { Description = "Multiplier 8x" }, + new GamelogicEngineLamp(16) { Description = "Shoot Again" }, + new GamelogicEngineLamp(17) { Description = "Mouth" }, + + new GamelogicEngineLamp(21) { Description = "Kickback" }, + new GamelogicEngineLamp(22) { Description = "Special" }, + new GamelogicEngineLamp(23) { Description = "Left Return Lane" }, + new GamelogicEngineLamp(24) { Description = "Right Return Lane" }, + new GamelogicEngineLamp(25) { Description = "Data Base" }, + new GamelogicEngineLamp(26) { Description = "Load Gun" }, + new GamelogicEngineLamp(27) { Description = "Extra Ball" }, + new GamelogicEngineLamp(28) { Description = "Load for Jackpot" }, + + new GamelogicEngineLamp(31) { Description = "Target 1 High" }, + new GamelogicEngineLamp(32) { Description = "Target 2" }, + new GamelogicEngineLamp(33) { Description = "Target 3" }, + new GamelogicEngineLamp(34) { Description = "Target 4" }, + new GamelogicEngineLamp(35) { Description = "Target 5 Low" }, + new GamelogicEngineLamp(36) { Description = "Middle Target Bank Left" }, + new GamelogicEngineLamp(37) { Description = "Middle Target Bank Center" }, + new GamelogicEngineLamp(38) { Description = "Middle Target Bank Right" }, + + new GamelogicEngineLamp(41) { Description = "Lock Two" }, + new GamelogicEngineLamp(42) { Description = "Data Base" }, + new GamelogicEngineLamp(43) { Description = "10 Million" }, + new GamelogicEngineLamp(44) { Description = "Extra Ball" }, + new GamelogicEngineLamp(45) { Description = "Multi-ball" }, + new GamelogicEngineLamp(46) { Description = "Light Hurry Up" }, + new GamelogicEngineLamp(47) { Description = "Hold Bonus" }, + new GamelogicEngineLamp(48) { Description = "Security Pass" }, + + new GamelogicEngineLamp(51) { Description = "Eyes Lower" }, + new GamelogicEngineLamp(52) { Description = "Eyes Upper" }, + new GamelogicEngineLamp(53) { Description = "5,000,000" }, + new GamelogicEngineLamp(54) { Description = "3,000,000" }, + new GamelogicEngineLamp(55) { Description = "1,000,000" }, + new GamelogicEngineLamp(56) { Description = "750,000" }, + new GamelogicEngineLamp(57) { Description = "500,000" }, + new GamelogicEngineLamp(58) { Description = "250,000" }, + + new GamelogicEngineLamp(61) { Description = "Left CPU Lit" }, + new GamelogicEngineLamp(62) { Description = "Left Vault Key" }, + new GamelogicEngineLamp(63) { Description = "Left Silent Alarm" }, + new GamelogicEngineLamp(64) { Description = "Left Passcode" }, + new GamelogicEngineLamp(65) { Description = "Left Checkpoint" }, + new GamelogicEngineLamp(66) { Description = "Lock 1" }, + new GamelogicEngineLamp(67) { Description = "Data Base 1" }, + new GamelogicEngineLamp(68) { Description = "Left Ramp" }, + + new GamelogicEngineLamp(71) { Description = "Right CPU Lit" }, + new GamelogicEngineLamp(72) { Description = "Right Vault Key" }, + new GamelogicEngineLamp(73) { Description = "Right Silent Alarm" }, + new GamelogicEngineLamp(74) { Description = "Right Passcode" }, + new GamelogicEngineLamp(75) { Description = "Right Checkpoint" }, + new GamelogicEngineLamp(76) { Description = "Right Bank Top" }, + new GamelogicEngineLamp(77) { Description = "Right Bank Middle" }, + new GamelogicEngineLamp(78) { Description = "Right Bank Bottom" }, + + new GamelogicEngineLamp(81) { Description = "Chase Values" }, + new GamelogicEngineLamp(82) { Description = "Right Ramp" }, + new GamelogicEngineLamp(83) { Description = "Hurry Up" }, + new GamelogicEngineLamp(84) { Description = "Start Button" }, + new GamelogicEngineLamp(85) { Description = "Drop Target" }, + new GamelogicEngineLamp(86) { Description = "Top Lane Left" }, + new GamelogicEngineLamp(87) { Description = "Top Lane Center" }, + new GamelogicEngineLamp(88) { Description = "Top Lane Right" }, + + new GamelogicEngineLamp(0) { Description = "GI: Top Insert", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, + new GamelogicEngineLamp(1) { Description = "GI: Bottom Insert", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, + new GamelogicEngineLamp(2) { Description = "GI: Right Playfield", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, + new GamelogicEngineLamp(3) { Description = "GI: CPU String", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, + new GamelogicEngineLamp(4) { Description = "GI: Left Playfield", Type = LampType.SingleFading, Source = LampSource.GI, FadingSteps = 8 }, }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01") { Description = "Ball Popper" }, - new GamelogicEngineCoil("02") { Description = "Gun Kicker" }, - new GamelogicEngineCoil("03") { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "entry_coil" }, - new GamelogicEngineCoil("04") { Description = "Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, - new GamelogicEngineCoil("05") { Description = "Right Sling" }, - new GamelogicEngineCoil("06") { Description = "Left Sling" }, - new GamelogicEngineCoil("07") { Description = "Knocker" }, - new GamelogicEngineCoil("08") { Description = "Kickback" }, - new GamelogicEngineCoil("09") { Description = "Plunger", DeviceHint = "Plunger" }, - new GamelogicEngineCoil("10") { Description = "Top Lock" }, - new GamelogicEngineCoil("11") { Description = "Gun Motor" }, - new GamelogicEngineCoil("12") { Description = "Knock Down", DeviceHint = "^sw77$" }, - new GamelogicEngineCoil("13") { Description = "Left Jet" }, - new GamelogicEngineCoil("14") { Description = "Right Jet" }, - new GamelogicEngineCoil("15") { Description = "Bottom Jet" }, - new GamelogicEngineCoil("16") { Description = "Left Lock" }, - new GamelogicEngineCoil("17") { Description = "Hot Dog Flashlamps", IsLamp = true, DeviceHint = "^F1?17$"}, - new GamelogicEngineCoil("18") { Description = "Right Sling Flashlamps", IsLamp = true, DeviceHint = "^F1?18$" }, - new GamelogicEngineCoil("19") { Description = "Left Sling Flashlamps", IsLamp = true, DeviceHint = "^F1?19$" }, - new GamelogicEngineCoil("20") { Description = "Left Lock Flashlamps", IsLamp = true, DeviceHint = "^F1?20$" }, - new GamelogicEngineCoil("21") { Description = "Gun Flashlamps", IsLamp = true, DeviceHint = "^F1?21$" }, - new GamelogicEngineCoil("22") { Description = "Right Ramp Flashlamps", IsLamp = true, DeviceHint = "^F1?22$" }, - new GamelogicEngineCoil("23") { Description = "Left Ramp Flashlamps", IsLamp = true, DeviceHint = "^F1?23$" }, - new GamelogicEngineCoil("24") { Description = "Backglass Flashlamp", IsLamp = true, DeviceHint = "^F1?24$" }, - new GamelogicEngineCoil("25") { Description = "Targets Flashlamps", IsLamp = true, DeviceHint = "^F1?25$" }, - new GamelogicEngineCoil("26") { Description = "Left Popper Flashlamps", IsLamp = true, DeviceHint = "^F1?26$" }, - new GamelogicEngineCoil("27") { Description = "Right Popper Flashlamps", IsLamp = true, DeviceHint = "^F1?27$" }, - new GamelogicEngineCoil("28") { Description = "Flashlamps Drop Target", IsLamp = true, DeviceHint = "^F1?28$" }, - - new GamelogicEngineCoil(CoilFlipperLowerRight, 46) { Description = "Lower Right Flipper", DeviceHint = "^RightFlipper$"}, - new GamelogicEngineCoil(CoilFlipperLowerLeft, 48) { Description = "Lower Left Flipper", DeviceHint = "^LeftFlipper$"}, - - new GamelogicEngineCoil(CoilFlipperUpperRight, 34) { IsUnused = true }, - new GamelogicEngineCoil(CoilFlipperUpperLeft, 36) { IsUnused = true }, + new GamelogicEngineCoil(1) { Description = "Ball Popper" }, + new GamelogicEngineCoil(2) { Description = "Gun Kicker" }, + new GamelogicEngineCoil(3) { Description = "Outhole", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "entry_coil" }, + new GamelogicEngineCoil(4) { Description = "Trough", DeviceHint = "^Trough\\s*\\d?", DeviceItemHint = "eject_coil" }, + new GamelogicEngineCoil(5) { Description = "Right Sling" }, + new GamelogicEngineCoil(6) { Description = "Left Sling" }, + new GamelogicEngineCoil(7) { Description = "Knocker" }, + new GamelogicEngineCoil(8) { Description = "Kickback" }, + new GamelogicEngineCoil(9) { Description = "Plunger", DeviceHint = "Plunger" }, + new GamelogicEngineCoil(10) { Description = "Top Lock" }, + new GamelogicEngineCoil(11) { Description = "Gun Motor" }, + new GamelogicEngineCoil(12) { Description = "Knock Down", DeviceHint = "^sw77$" }, + new GamelogicEngineCoil(13) { Description = "Left Jet" }, + new GamelogicEngineCoil(14) { Description = "Right Jet" }, + new GamelogicEngineCoil(15) { Description = "Bottom Jet" }, + new GamelogicEngineCoil(16) { Description = "Left Lock" }, + new GamelogicEngineCoil(17) { Description = "Hot Dog Flashlamps", IsLamp = true, DeviceHint = "^F1?17$"}, + new GamelogicEngineCoil(18) { Description = "Right Sling Flashlamps", IsLamp = true, DeviceHint = "^F1?18$" }, + new GamelogicEngineCoil(19) { Description = "Left Sling Flashlamps", IsLamp = true, DeviceHint = "^F1?19$" }, + new GamelogicEngineCoil(20) { Description = "Left Lock Flashlamps", IsLamp = true, DeviceHint = "^F1?20$" }, + new GamelogicEngineCoil(21) { Description = "Gun Flashlamps", IsLamp = true, DeviceHint = "^F1?21$" }, + new GamelogicEngineCoil(22) { Description = "Right Ramp Flashlamps", IsLamp = true, DeviceHint = "^F1?22$" }, + new GamelogicEngineCoil(23) { Description = "Left Ramp Flashlamps", IsLamp = true, DeviceHint = "^F1?23$" }, + new GamelogicEngineCoil(24) { Description = "Backglass Flashlamp", IsLamp = true, DeviceHint = "^F1?24$" }, + new GamelogicEngineCoil(25) { Description = "Targets Flashlamps", IsLamp = true, DeviceHint = "^F1?25$" }, + new GamelogicEngineCoil(26) { Description = "Left Popper Flashlamps", IsLamp = true, DeviceHint = "^F1?26$" }, + new GamelogicEngineCoil(27) { Description = "Right Popper Flashlamps", IsLamp = true, DeviceHint = "^F1?27$" }, + new GamelogicEngineCoil(28) { Description = "Flashlamps Drop Target", IsLamp = true, DeviceHint = "^F1?28$" }, + + new GamelogicEngineCoil(CoilFlipperLowerRight) { Description = "Lower Right Flipper", DeviceHint = "^RightFlipper$"}, + new GamelogicEngineCoil(CoilFlipperLowerLeft) { Description = "Lower Left Flipper", DeviceHint = "^LeftFlipper$"}, + + new GamelogicEngineCoil(CoilFlipperUpperRight) { IsUnused = true }, + new GamelogicEngineCoil(CoilFlipperUpperLeft) { IsUnused = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/Games/TheWalkingDead.cs b/VisualPinball.Engine.PinMAME/Games/TheWalkingDead.cs index 57ba3f5..0fc2c20 100644 --- a/VisualPinball.Engine.PinMAME/Games/TheWalkingDead.cs +++ b/VisualPinball.Engine.PinMAME/Games/TheWalkingDead.cs @@ -14,6 +14,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// ReSharper disable StringLiteralTypo + using System; using VisualPinball.Engine.Game.Engines; using VisualPinball.Engine.Math; @@ -51,194 +53,197 @@ public class TheWalkingDead : Sam new PinMameRom("twd_160h", "1.60.0h"), }; + protected override PinMameIdAlias[] Aliases { get; } = { + }; + protected override GamelogicEngineSwitch[] Switches { get; } = { - new GamelogicEngineSwitch("01") { Description = "Right Spinner" }, - new GamelogicEngineSwitch("02") { Description = "Well Walker" }, - new GamelogicEngineSwitch("03") { Description = "Prison Walker Hit" }, - new GamelogicEngineSwitch("04") { Description = "Prison Doors Closed" }, - new GamelogicEngineSwitch("09") { Description = "Left 3-Bank #1 (Bottom)" }, - new GamelogicEngineSwitch("10") { Description = "Left 3-Bank #2 (Middle)" }, - new GamelogicEngineSwitch("11") { Description = "Left 3-Bank #3 (Top)" }, - new GamelogicEngineSwitch("18") { Description = "Trough #4 Left" }, - new GamelogicEngineSwitch("19") { Description = "Trough #3" }, - new GamelogicEngineSwitch("20") { Description = "Trough #2" }, - new GamelogicEngineSwitch("21") { Description = "Trough #1 Right" }, - new GamelogicEngineSwitch("22") { Description = "Trough Jam" }, - new GamelogicEngineSwitch("23") { Description = "Shooter Lane" }, - new GamelogicEngineSwitch("24") { Description = "Left Outlane" }, - new GamelogicEngineSwitch("25") { Description = "Left Return Lane" }, - new GamelogicEngineSwitch("26") { Description = "Left Slingshot" }, - new GamelogicEngineSwitch("27") { Description = "Right Slingshot" }, - new GamelogicEngineSwitch("33") { Description = "Upper Shooter Lane" }, - new GamelogicEngineSwitch("34") { Description = "Right Ramp Enter" }, - new GamelogicEngineSwitch("35") { Description = "Left Ramp Exit" }, - new GamelogicEngineSwitch("36") { Description = "Left Top Lane" }, - new GamelogicEngineSwitch("37") { Description = "Right Top Lane" }, - new GamelogicEngineSwitch("38") { Description = "Tower Standup" }, - new GamelogicEngineSwitch("39") { Description = "Right Loop" }, - new GamelogicEngineSwitch("40") { Description = "Left Loop Spinner" }, - new GamelogicEngineSwitch("41") { Description = "Left Loop" }, - new GamelogicEngineSwitch("42") { Description = "Right Ramp Exit" }, - new GamelogicEngineSwitch("49") { Description = "Bicycle Girl Hit" }, - new GamelogicEngineSwitch("50") { Description = "Crossbow Home" }, - new GamelogicEngineSwitch("51") { Description = "Crossbow Mark" }, - new GamelogicEngineSwitch("52") { Description = "Crossbow Eject" }, + new GamelogicEngineSwitch(1) { Description = "Right Spinner" }, + new GamelogicEngineSwitch(2) { Description = "Well Walker" }, + new GamelogicEngineSwitch(3) { Description = "Prison Walker Hit" }, + new GamelogicEngineSwitch(4) { Description = "Prison Doors Closed" }, + new GamelogicEngineSwitch(9) { Description = "Left 3-Bank #1 (Bottom)" }, + new GamelogicEngineSwitch(10) { Description = "Left 3-Bank #2 (Middle)" }, + new GamelogicEngineSwitch(11) { Description = "Left 3-Bank #3 (Top)" }, + new GamelogicEngineSwitch(18) { Description = "Trough #4 Left" }, + new GamelogicEngineSwitch(19) { Description = "Trough #3" }, + new GamelogicEngineSwitch(20) { Description = "Trough #2" }, + new GamelogicEngineSwitch(21) { Description = "Trough #1 Right" }, + new GamelogicEngineSwitch(22) { Description = "Trough Jam" }, + new GamelogicEngineSwitch(23) { Description = "Shooter Lane" }, + new GamelogicEngineSwitch(24) { Description = "Left Outlane" }, + new GamelogicEngineSwitch(25) { Description = "Left Return Lane" }, + new GamelogicEngineSwitch(26) { Description = "Left Slingshot" }, + new GamelogicEngineSwitch(27) { Description = "Right Slingshot" }, + new GamelogicEngineSwitch(33) { Description = "Upper Shooter Lane" }, + new GamelogicEngineSwitch(34) { Description = "Right Ramp Enter" }, + new GamelogicEngineSwitch(35) { Description = "Left Ramp Exit" }, + new GamelogicEngineSwitch(36) { Description = "Left Top Lane" }, + new GamelogicEngineSwitch(37) { Description = "Right Top Lane" }, + new GamelogicEngineSwitch(38) { Description = "Tower Standup" }, + new GamelogicEngineSwitch(39) { Description = "Right Loop" }, + new GamelogicEngineSwitch(40) { Description = "Left Loop Spinner" }, + new GamelogicEngineSwitch(41) { Description = "Left Loop" }, + new GamelogicEngineSwitch(42) { Description = "Right Ramp Exit" }, + new GamelogicEngineSwitch(49) { Description = "Bicycle Girl Hit" }, + new GamelogicEngineSwitch(50) { Description = "Crossbow Home" }, + new GamelogicEngineSwitch(51) { Description = "Crossbow Mark" }, + new GamelogicEngineSwitch(52) { Description = "Crossbow Eject" }, }; public override GamelogicEngineLamp[] AvailableLamps { get; } = { - new GamelogicEngineLamp("01") { Description = "Start Button" }, - new GamelogicEngineLamp("02") { Description = "Tournament Start Button" }, - new GamelogicEngineLamp("03") { Description = "12X Playfield values" }, - new GamelogicEngineLamp("04") { Description = "Shoot Again" }, - new GamelogicEngineLamp("05") { Description = "4 Walkers Killed" }, - new GamelogicEngineLamp("06") { Description = "3 Walkers Killed" }, - new GamelogicEngineLamp("07") { Description = "2 Walkers Killed" }, - new GamelogicEngineLamp("08") { Description = "1 Walker Killed" }, - new GamelogicEngineLamp("09") { Description = "40 Walkers Killed" }, - new GamelogicEngineLamp("10") { Description = "Last Man Standing" }, - new GamelogicEngineLamp("11") { Description = "5 Walkers Killed" }, - new GamelogicEngineLamp("12") { Description = "10 Walkers Killed" }, - new GamelogicEngineLamp("13") { Description = "20 Walkers Killed" }, - new GamelogicEngineLamp("14") { Description = "30 Walkers Killed" }, - new GamelogicEngineLamp("15") { Description = "Hammer Multi-Killed" }, - new GamelogicEngineLamp("16") { Description = "Sword Muiti-Kill" }, - new GamelogicEngineLamp("17") { Description = "Crossbow Muiti-Kill" }, - new GamelogicEngineLamp("18") { Description = "Gun Multi-Kill" }, - new GamelogicEngineLamp("19") { Description = "Knife Multi-Kill" }, - new GamelogicEngineLamp("20") { Description = "Axe Multi-Kill" }, - new GamelogicEngineLamp("21") { Description = "Horde" }, - new GamelogicEngineLamp("22") { Description = "Left Outlane" }, - new GamelogicEngineLamp("23") { Description = "Left Return Lane" }, - - new GamelogicEngineLamp("24") { Description = "Right Loop Arrow" }, - new GamelogicEngineLamp("24", 168) { Description = "Right Loop Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("24", 169) { Description = "Right Loop Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("24", 170) { Description = "Right Loop Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("25") { Description = "Blood Bath" }, - new GamelogicEngineLamp("26") { Description = "First Aid" }, - new GamelogicEngineLamp("27") { Description = "Weapons" }, - new GamelogicEngineLamp("28") { Description = "Food" }, - new GamelogicEngineLamp("29") { Description = "Left Ramp Walker Kill" }, - new GamelogicEngineLamp("30") { Description = "Left Loop Walker Kill" }, - new GamelogicEngineLamp("31") { Description = "Left Loop Multi-Kill" }, - new GamelogicEngineLamp("32") { Description = "Barn Mode" }, - - new GamelogicEngineLamp("33") { Description = "Left Loop Arrow" }, - new GamelogicEngineLamp("33", 195) { Description = "Left Loop Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("33", 196) { Description = "Left Loop Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("33", 197) { Description = "Left Loop Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("34") { Description = "Left Ramp Multi-Kill" }, - new GamelogicEngineLamp("35") { Description = "CDC Mode" }, - - new GamelogicEngineLamp("36") { Description = "Left Ramp Arrow" }, - new GamelogicEngineLamp("36", 203) { Description = "Left Ramp Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("36", 204) { Description = "Left Ramp Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("36", 205) { Description = "Left Ramp Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("37") { Description = "Right Outlane" }, - new GamelogicEngineLamp("38") { Description = "Right Return Lane" }, - new GamelogicEngineLamp("39") { Description = "Extra Ball" }, - new GamelogicEngineLamp("40") { Description = "Welcome To Woodbury" }, - - new GamelogicEngineLamp("41") { Description = "Right Ramp Arrow" }, - new GamelogicEngineLamp("41", 152) { Description = "Right Ramp Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("41", 153) { Description = "Right Ramp Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("41", 154) { Description = "Right Ramp Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("42") { Description = "Right Ramp Walker Kill" }, - new GamelogicEngineLamp("43") { Description = "Right Ramp Multi-Kill" }, - new GamelogicEngineLamp("44") { Description = "Arena Mode" }, - new GamelogicEngineLamp("45") { Description = "Well Walker Kill" }, - new GamelogicEngineLamp("46") { Description = "(W)ELL" }, - new GamelogicEngineLamp("47") { Description = "W(E)LL" }, - new GamelogicEngineLamp("48") { Description = "WE(L)L" }, - new GamelogicEngineLamp("49") { Description = "WEL(L)" }, - new GamelogicEngineLamp("50") { Description = "Well Walker" }, - new GamelogicEngineLamp("51") { Description = "Right Loop Walker Kill" }, - new GamelogicEngineLamp("52") { Description = "Right Loop Multi-Kill" }, - new GamelogicEngineLamp("53") { Description = "Tunnel Mode" }, - new GamelogicEngineLamp("54") { Description = "Siege" }, - new GamelogicEngineLamp("55") { Description = "Right Prison Standup" }, - new GamelogicEngineLamp("56") { Description = "Left Prison Standup" }, - - new GamelogicEngineLamp("57") { Description = "Center Lane Arrow" }, - new GamelogicEngineLamp("57", 187) { Description = "Center Lane Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("57", 188) { Description = "Center Lane Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("57", 189) { Description = "Center Lane Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("58") { Description = "Riot Mode" }, - new GamelogicEngineLamp("59") { Description = "Center Lane Multi-Kill" }, - new GamelogicEngineLamp("60") { Description = "Top Bumper" }, - new GamelogicEngineLamp("61") { Description = "Right Bumper" }, - new GamelogicEngineLamp("62") { Description = "Left Bumper" }, - new GamelogicEngineLamp("63") { Description = "Center Lane Walker" }, - new GamelogicEngineLamp("64") { Description = "(P)RISON" }, - new GamelogicEngineLamp("65") { Description = "P(R)ISON" }, - new GamelogicEngineLamp("66") { Description = "PR(I)SON" }, - new GamelogicEngineLamp("67") { Description = "PRI(S)ON" }, - new GamelogicEngineLamp("68") { Description = "PRIS(O)N" }, - new GamelogicEngineLamp("69") { Description = "PRISO(N)" }, - new GamelogicEngineLamp("70") { Description = "Crossbow" }, - new GamelogicEngineLamp("71") { Description = "Fish Tank" }, - new GamelogicEngineLamp("72") { Description = "Tower" }, - new GamelogicEngineLamp("73") { Description = "Fish Tank Head #1" }, - new GamelogicEngineLamp("74") { Description = "Fish Tank Head #2" }, - new GamelogicEngineLamp("75") { Description = "Fish Tank Head #3" }, - new GamelogicEngineLamp("76") { Description = "Left Top Lane" }, - new GamelogicEngineLamp("77") { Description = "Right Top Lane" }, - new GamelogicEngineLamp("78") { Description = "Bicycle Girl" }, - - new GamelogicEngineLamp("79") { Description = "Star Rollover (Bottom)" }, - new GamelogicEngineLamp("79", 136) { Description = "Star Rollover (Bottom) Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("79", 137) { Description = "Star Rollover (Bottom) Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("79", 138) { Description = "Star Rollover (Bottom) Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("80") { Description = "Star Rollover (Top)" }, - new GamelogicEngineLamp("80", 133) { Description = "Star Rollover (Top) Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("80", 134) { Description = "Star Rollover (Top) Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("80", 135) { Description = "Star Rollover (Top) Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("81") { Description = "Fire Button (Red)", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("81") { Description = "Fire Button (Green)", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("81") { Description = "Fire Button (Blue)", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("gi", 106) { Description = "GI (Red)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("gi", 107) { Description = "GI (Green)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("gi", 108) { Description = "GI (Blue)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Blue }, - - new GamelogicEngineLamp("gi_slings", 109) { Description = "GI: Slings (Red)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Red }, - new GamelogicEngineLamp("gi_slings", 114) { Description = "GI: Slings (Green)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Green }, - new GamelogicEngineLamp("gi_slings", 149) { Description = "GI: Slings (Blue)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Blue }, + new GamelogicEngineLamp(1) { Description = "Start Button" }, + new GamelogicEngineLamp(2) { Description = "Tournament Start Button" }, + new GamelogicEngineLamp(3) { Description = "12X Playfield values" }, + new GamelogicEngineLamp(4) { Description = "Shoot Again" }, + new GamelogicEngineLamp(5) { Description = "4 Walkers Killed" }, + new GamelogicEngineLamp(6) { Description = "3 Walkers Killed" }, + new GamelogicEngineLamp(7) { Description = "2 Walkers Killed" }, + new GamelogicEngineLamp(8) { Description = "1 Walker Killed" }, + new GamelogicEngineLamp(9) { Description = "40 Walkers Killed" }, + new GamelogicEngineLamp(10) { Description = "Last Man Standing" }, + new GamelogicEngineLamp(11) { Description = "5 Walkers Killed" }, + new GamelogicEngineLamp(12) { Description = "10 Walkers Killed" }, + new GamelogicEngineLamp(13) { Description = "20 Walkers Killed" }, + new GamelogicEngineLamp(14) { Description = "30 Walkers Killed" }, + new GamelogicEngineLamp(15) { Description = "Hammer Multi-Killed" }, + new GamelogicEngineLamp(16) { Description = "Sword Muiti-Kill" }, + new GamelogicEngineLamp(17) { Description = "Crossbow Muiti-Kill" }, + new GamelogicEngineLamp(18) { Description = "Gun Multi-Kill" }, + new GamelogicEngineLamp(19) { Description = "Knife Multi-Kill" }, + new GamelogicEngineLamp(20) { Description = "Axe Multi-Kill" }, + new GamelogicEngineLamp(21) { Description = "Horde" }, + new GamelogicEngineLamp(22) { Description = "Left Outlane" }, + new GamelogicEngineLamp(23) { Description = "Left Return Lane" }, + + new GamelogicEngineLamp(24) { Description = "Right Loop Arrow" }, + new GamelogicEngineLamp(168) { Description = "Right Loop Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(169) { Description = "Right Loop Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(170) { Description = "Right Loop Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(25) { Description = "Blood Bath" }, + new GamelogicEngineLamp(26) { Description = "First Aid" }, + new GamelogicEngineLamp(27) { Description = "Weapons" }, + new GamelogicEngineLamp(28) { Description = "Food" }, + new GamelogicEngineLamp(29) { Description = "Left Ramp Walker Kill" }, + new GamelogicEngineLamp(30) { Description = "Left Loop Walker Kill" }, + new GamelogicEngineLamp(31) { Description = "Left Loop Multi-Kill" }, + new GamelogicEngineLamp(32) { Description = "Barn Mode" }, + + new GamelogicEngineLamp(33) { Description = "Left Loop Arrow" }, + new GamelogicEngineLamp(195) { Description = "Left Loop Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(196) { Description = "Left Loop Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(197) { Description = "Left Loop Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(34) { Description = "Left Ramp Multi-Kill" }, + new GamelogicEngineLamp(35) { Description = "CDC Mode" }, + + new GamelogicEngineLamp(36) { Description = "Left Ramp Arrow" }, + new GamelogicEngineLamp(203) { Description = "Left Ramp Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(204) { Description = "Left Ramp Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(205) { Description = "Left Ramp Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(37) { Description = "Right Outlane" }, + new GamelogicEngineLamp(38) { Description = "Right Return Lane" }, + new GamelogicEngineLamp(39) { Description = "Extra Ball" }, + new GamelogicEngineLamp(40) { Description = "Welcome To Woodbury" }, + + new GamelogicEngineLamp(41) { Description = "Right Ramp Arrow" }, + new GamelogicEngineLamp(152) { Description = "Right Ramp Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(153) { Description = "Right Ramp Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(154) { Description = "Right Ramp Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(42) { Description = "Right Ramp Walker Kill" }, + new GamelogicEngineLamp(43) { Description = "Right Ramp Multi-Kill" }, + new GamelogicEngineLamp(44) { Description = "Arena Mode" }, + new GamelogicEngineLamp(45) { Description = "Well Walker Kill" }, + new GamelogicEngineLamp(46) { Description = "(W)ELL" }, + new GamelogicEngineLamp(47) { Description = "W(E)LL" }, + new GamelogicEngineLamp(48) { Description = "WE(L)L" }, + new GamelogicEngineLamp(49) { Description = "WEL(L)" }, + new GamelogicEngineLamp(50) { Description = "Well Walker" }, + new GamelogicEngineLamp(51) { Description = "Right Loop Walker Kill" }, + new GamelogicEngineLamp(52) { Description = "Right Loop Multi-Kill" }, + new GamelogicEngineLamp(53) { Description = "Tunnel Mode" }, + new GamelogicEngineLamp(54) { Description = "Siege" }, + new GamelogicEngineLamp(55) { Description = "Right Prison Standup" }, + new GamelogicEngineLamp(56) { Description = "Left Prison Standup" }, + + new GamelogicEngineLamp(57) { Description = "Center Lane Arrow" }, + new GamelogicEngineLamp(187) { Description = "Center Lane Arrow Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(188) { Description = "Center Lane Arrow Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(189) { Description = "Center Lane Arrow Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(58) { Description = "Riot Mode" }, + new GamelogicEngineLamp(59) { Description = "Center Lane Multi-Kill" }, + new GamelogicEngineLamp(60) { Description = "Top Bumper" }, + new GamelogicEngineLamp(61) { Description = "Right Bumper" }, + new GamelogicEngineLamp(62) { Description = "Left Bumper" }, + new GamelogicEngineLamp(63) { Description = "Center Lane Walker" }, + new GamelogicEngineLamp(64) { Description = "(P)RISON" }, + new GamelogicEngineLamp(65) { Description = "P(R)ISON" }, + new GamelogicEngineLamp(66) { Description = "PR(I)SON" }, + new GamelogicEngineLamp(67) { Description = "PRI(S)ON" }, + new GamelogicEngineLamp(68) { Description = "PRIS(O)N" }, + new GamelogicEngineLamp(69) { Description = "PRISO(N)" }, + new GamelogicEngineLamp(70) { Description = "Crossbow" }, + new GamelogicEngineLamp(71) { Description = "Fish Tank" }, + new GamelogicEngineLamp(72) { Description = "Tower" }, + new GamelogicEngineLamp(73) { Description = "Fish Tank Head #1" }, + new GamelogicEngineLamp(74) { Description = "Fish Tank Head #2" }, + new GamelogicEngineLamp(75) { Description = "Fish Tank Head #3" }, + new GamelogicEngineLamp(76) { Description = "Left Top Lane" }, + new GamelogicEngineLamp(77) { Description = "Right Top Lane" }, + new GamelogicEngineLamp(78) { Description = "Bicycle Girl" }, + + new GamelogicEngineLamp(79) { Description = "Star Rollover (Bottom)" }, + new GamelogicEngineLamp(136) { Description = "Star Rollover (Bottom) Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(137) { Description = "Star Rollover (Bottom) Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(138) { Description = "Star Rollover (Bottom) Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(80) { Description = "Star Rollover (Top)" }, + new GamelogicEngineLamp(133) { Description = "Star Rollover (Top) Red", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(134) { Description = "Star Rollover (Top) Green", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(135) { Description = "Star Rollover (Top) Blue", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(81) { Description = "Fire Button (Red)", Type = LampType.RgbMulti, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(81) { Description = "Fire Button (Green)", Type = LampType.RgbMulti, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(81) { Description = "Fire Button (Blue)", Type = LampType.RgbMulti, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(106) { Description = "GI (Red)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(107) { Description = "GI (Green)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(108) { Description = "GI (Blue)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Blue }, + + new GamelogicEngineLamp(109) { Description = "GI: Slings (Red)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Red }, + new GamelogicEngineLamp(114) { Description = "GI: Slings (Green)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Green }, + new GamelogicEngineLamp(149) { Description = "GI: Slings (Blue)", Type = LampType.RgbMulti, Source = LampSource.GI, Channel = ColorChannel.Blue }, }; protected override GamelogicEngineCoil[] GameCoils { get; } = { - new GamelogicEngineCoil("01") { Description = "Trough Up-Kicker" }, - new GamelogicEngineCoil("02") { Description = "Auto Launch" }, - new GamelogicEngineCoil("03") { Description = "Prison Doors (Power)" }, - new GamelogicEngineCoil("04") { Description = "Prison Doors (Hold)" }, - new GamelogicEngineCoil("05") { Description = "Ramp Magnet Diverter" }, - new GamelogicEngineCoil("06") { Description = "Well Magnet" }, - new GamelogicEngineCoil("07") { Description = "Prison Magnet" }, - new GamelogicEngineCoil("08") { Description = "Shaker Motor (Optional)" }, - new GamelogicEngineCoil("09") { Description = "Left Pop Bumper" }, - new GamelogicEngineCoil("10") { Description = "Right Pop Bumper" }, - new GamelogicEngineCoil("11") { Description = "Top Pop Bumper" }, - new GamelogicEngineCoil("12") { Description = "Left 3-Bank Drop Target" }, - new GamelogicEngineCoil("13") { Description = "Left Slingshot" }, - new GamelogicEngineCoil("14") { Description = "Right Slingshot" }, - new GamelogicEngineCoil("19") { Description = "Flash: Well Walker", IsLamp = true }, - new GamelogicEngineCoil("20") { Description = "Flash: Right Spinner", IsLamp = true }, - new GamelogicEngineCoil("21") { Description = "Crossbow Motor" }, - new GamelogicEngineCoil("24") { Description = "Optional (e.g. Coin Meter)" }, - new GamelogicEngineCoil("25") { Description = "Flash: Pop Bumpers", IsLamp = true }, - new GamelogicEngineCoil("26") { Description = "Flash: Prison (Top)", IsLamp = true }, - new GamelogicEngineCoil("27") { Description = "Flash: Prison (Bottom) (X2)", IsLamp = true }, - new GamelogicEngineCoil("28") { Description = "Flash: Left Dome", IsLamp = true }, - new GamelogicEngineCoil("29") { Description = "Flash: Right Dome", IsLamp = true }, - new GamelogicEngineCoil("31") { Description = "Flash: Left Loop", IsLamp = true }, - new GamelogicEngineCoil("32") { Description = "Flash: Center Loop", IsLamp = true }, + new GamelogicEngineCoil(1) { Description = "Trough Up-Kicker" }, + new GamelogicEngineCoil(2) { Description = "Auto Launch" }, + new GamelogicEngineCoil(3) { Description = "Prison Doors (Power)" }, + new GamelogicEngineCoil(4) { Description = "Prison Doors (Hold)" }, + new GamelogicEngineCoil(5) { Description = "Ramp Magnet Diverter" }, + new GamelogicEngineCoil(6) { Description = "Well Magnet" }, + new GamelogicEngineCoil(7) { Description = "Prison Magnet" }, + new GamelogicEngineCoil(8) { Description = "Shaker Motor (Optional)" }, + new GamelogicEngineCoil(9) { Description = "Left Pop Bumper" }, + new GamelogicEngineCoil(10) { Description = "Right Pop Bumper" }, + new GamelogicEngineCoil(11) { Description = "Top Pop Bumper" }, + new GamelogicEngineCoil(12) { Description = "Left 3-Bank Drop Target" }, + new GamelogicEngineCoil(13) { Description = "Left Slingshot" }, + new GamelogicEngineCoil(14) { Description = "Right Slingshot" }, + new GamelogicEngineCoil(19) { Description = "Flash: Well Walker", IsLamp = true }, + new GamelogicEngineCoil(20) { Description = "Flash: Right Spinner", IsLamp = true }, + new GamelogicEngineCoil(21) { Description = "Crossbow Motor" }, + new GamelogicEngineCoil(24) { Description = "Optional (e.g. Coin Meter)" }, + new GamelogicEngineCoil(25) { Description = "Flash: Pop Bumpers", IsLamp = true }, + new GamelogicEngineCoil(26) { Description = "Flash: Prison (Top)", IsLamp = true }, + new GamelogicEngineCoil(27) { Description = "Flash: Prison (Bottom) (X2)", IsLamp = true }, + new GamelogicEngineCoil(28) { Description = "Flash: Left Dome", IsLamp = true }, + new GamelogicEngineCoil(29) { Description = "Flash: Right Dome", IsLamp = true }, + new GamelogicEngineCoil(31) { Description = "Flash: Left Loop", IsLamp = true }, + new GamelogicEngineCoil(32) { Description = "Flash: Center Loop", IsLamp = true }, }; } } diff --git a/VisualPinball.Engine.PinMAME/MPUs/Bally.cs b/VisualPinball.Engine.PinMAME/MPUs/Bally.cs index d5f981e..bdf2c90 100644 --- a/VisualPinball.Engine.PinMAME/MPUs/Bally.cs +++ b/VisualPinball.Engine.PinMAME/MPUs/Bally.cs @@ -22,34 +22,50 @@ namespace VisualPinball.Engine.PinMAME.MPUs { public abstract class Bally : PinMameGame { + public override PinMameIdAlias[] AvailableAliases => Aliases.Concat(_aliases).ToArray(); + protected abstract PinMameIdAlias[] Aliases { get; } protected override GamelogicEngineCoil[] Coils => GameCoils.Concat(_coils).ToArray(); protected abstract GamelogicEngineCoil[] GameCoils { get; } - public override GamelogicEngineSwitch[] AvailableSwitches => Switches.Concat(_switches).ToArray(); - - protected abstract GamelogicEngineSwitch[] Switches { get; } + private readonly PinMameIdAlias[] _aliases = + { + new PinMameIdAlias(-7, SwSelfTest, AliasType.Switch), + new PinMameIdAlias(-6, SwCpuDiagnose, AliasType.Switch), + new PinMameIdAlias(-5, SwSoundDiagnose, AliasType.Switch), + new PinMameIdAlias(2, SwBallRollTilt, AliasType.Switch), + new PinMameIdAlias(6, SwStartButton, AliasType.Switch), + new PinMameIdAlias(7, SwTilt, AliasType.Switch), + new PinMameIdAlias(16, SwSlamTilt, AliasType.Switch), + new PinMameIdAlias(11, SwCoin1, AliasType.Switch), + new PinMameIdAlias(10, SwCoin2, AliasType.Switch), + new PinMameIdAlias(9, SwCoin3, AliasType.Switch), + new PinMameIdAlias(82, SwFlipperLowerRight, AliasType.Switch), + new PinMameIdAlias(84, SwFlipperLowerLeft, AliasType.Switch), + + new PinMameIdAlias(19, CoilGameOn, AliasType.Coil), + }; private readonly GamelogicEngineSwitch[] _switches = { - new GamelogicEngineSwitch(SwSelfTest, -7) {Description = "Self Test" }, - new GamelogicEngineSwitch(SwCpuDiagnose, -6) {Description = "CPU Diagnose"}, - new GamelogicEngineSwitch(SwSoundDiagnose, -5) {Description = "Sound Diagnose"}, - new GamelogicEngineSwitch(SwBallRollTilt, 2) {Description = "Ball Roll Tilt"}, - new GamelogicEngineSwitch(SwStartButton, 6) {Description = "Start Button", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwTilt, 7) {Description = "Tilt" }, - new GamelogicEngineSwitch(SwSlamTilt, 16) {Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin1, 11) {Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin2, 10) {Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin3, 9) {Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerRight, 82) {Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerLeft, 84) {Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwSelfTest) { Description = "Self Test" }, + new GamelogicEngineSwitch(SwCpuDiagnose) { Description = "CPU Diagnose"}, + new GamelogicEngineSwitch(SwSoundDiagnose) { Description = "Sound Diagnose"}, + new GamelogicEngineSwitch(SwBallRollTilt) { Description = "Ball Roll Tilt"}, + new GamelogicEngineSwitch(SwStartButton) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwTilt) { Description = "Tilt" }, + new GamelogicEngineSwitch(SwSlamTilt) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin1) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin2) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin3) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerRight) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerLeft) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, }; private readonly GamelogicEngineCoil[] _coils = { - new GamelogicEngineCoil(CoilGameOn, 19) { Description = "ROM Started"} + new GamelogicEngineCoil(CoilGameOn) { Description = "ROM Started" } }; } } diff --git a/VisualPinball.Engine.PinMAME/MPUs/Sam.cs b/VisualPinball.Engine.PinMAME/MPUs/Sam.cs index 9bc4b6f..f4baba0 100644 --- a/VisualPinball.Engine.PinMAME/MPUs/Sam.cs +++ b/VisualPinball.Engine.PinMAME/MPUs/Sam.cs @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +using System.Linq; using VisualPinball.Engine.Common; using VisualPinball.Engine.Game.Engines; @@ -21,6 +22,9 @@ namespace VisualPinball.Engine.PinMAME.MPUs { public abstract class Sam : PinMameGame { + public override PinMameIdAlias[] AvailableAliases => Aliases.Concat(_aliases).ToArray(); + protected abstract PinMameIdAlias[] Aliases { get; } + public override GamelogicEngineSwitch[] AvailableSwitches => Concat(_switches, Switches); protected override GamelogicEngineCoil[] Coils => Concat(_coils, GameCoils); @@ -28,21 +32,39 @@ public abstract class Sam : PinMameGame protected abstract GamelogicEngineSwitch[] Switches { get; } + private readonly PinMameIdAlias[] _aliases = + { + new PinMameIdAlias(65, SwCoin1, AliasType.Switch), + new PinMameIdAlias(66, SwCoin2, AliasType.Switch), + new PinMameIdAlias(67, SwCoin3, AliasType.Switch), + new PinMameIdAlias(-3, SwCancel, AliasType.Switch), + new PinMameIdAlias(-2, SwDown, AliasType.Switch), + new PinMameIdAlias(-1, SwUp, AliasType.Switch), + new PinMameIdAlias(0, SwEnter, AliasType.Switch), + new PinMameIdAlias(16, SwStartButton, AliasType.Switch), + new PinMameIdAlias(-6, SwSlamTilt, AliasType.Switch), + new PinMameIdAlias(-7, SwTilt, AliasType.Switch), + new PinMameIdAlias(84, SwFlipperLowerLeft, AliasType.Switch), + new PinMameIdAlias(82, SwFlipperLowerRight, AliasType.Switch), + + new PinMameIdAlias(15, CoilFlipperLowerLeft, AliasType.Coil), + new PinMameIdAlias(16, CoilFlipperLowerRight, AliasType.Coil), + }; + private readonly GamelogicEngineSwitch[] _switches = { - new GamelogicEngineSwitch(SwCoin1, 65) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin2, 66) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin3, 67) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCancel, -3) { Description = "Coin Door Back", InputActionHint = InputConstants.ActionCoinDoorBack, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwDown, -2) { Description = "Coin Door -", InputActionHint = InputConstants.ActionCoinDoorMinus, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwUp, -1) { Description = "Coin Door +", InputActionHint = InputConstants.ActionCoinDoorPlus, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwEnter, 0) { Description = "Coin Door Select", InputActionHint = InputConstants.ActionCoinDoorSelect, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin1) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin2) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin3) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCancel) { Description = "Coin Door Back", InputActionHint = InputConstants.ActionCoinDoorBack, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwDown) { Description = "Coin Door -", InputActionHint = InputConstants.ActionCoinDoorMinus, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwUp) { Description = "Coin Door +", InputActionHint = InputConstants.ActionCoinDoorPlus, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwEnter) { Description = "Coin Door Select", InputActionHint = InputConstants.ActionCoinDoorSelect, InputMapHint = InputConstants.MapCabinetSwitches }, new GamelogicEngineSwitch("15") { Description = "Tourn Start" }, - new GamelogicEngineSwitch(SwStartButton, 16) { Description = "Start", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwSlamTilt, -6) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwTilt, -7) { Description = "Tilt" }, - new GamelogicEngineSwitch(SwFlipperLowerLeft, 84) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerRight, 82) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - + new GamelogicEngineSwitch(SwStartButton) { Description = "Start", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwSlamTilt) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwTilt) { Description = "Tilt" }, + new GamelogicEngineSwitch(SwFlipperLowerLeft) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerRight) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, /* @@ -79,8 +101,8 @@ public abstract class Sam : PinMameGame }; private readonly GamelogicEngineCoil[] _coils = { - new GamelogicEngineCoil(CoilFlipperLowerLeft, 15) { Description = "Lower Left Flipper", DeviceHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$"}, - new GamelogicEngineCoil(CoilFlipperLowerRight, 16) { Description = "Lower Right Flipper", DeviceHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$"}, + new GamelogicEngineCoil(CoilFlipperLowerLeft) { Description = "Lower Left Flipper", DeviceHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$"}, + new GamelogicEngineCoil(CoilFlipperLowerRight) { Description = "Lower Right Flipper", DeviceHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$"}, }; } } diff --git a/VisualPinball.Engine.PinMAME/MPUs/System80.cs b/VisualPinball.Engine.PinMAME/MPUs/System80.cs index a483875..c4c1ad9 100644 --- a/VisualPinball.Engine.PinMAME/MPUs/System80.cs +++ b/VisualPinball.Engine.PinMAME/MPUs/System80.cs @@ -22,6 +22,9 @@ namespace VisualPinball.Engine.PinMAME.MPUs { public abstract class System80 : PinMameGame { + public override PinMameIdAlias[] AvailableAliases => Aliases.Concat(_aliases).ToArray(); + protected abstract PinMameIdAlias[] Aliases { get; } + protected override GamelogicEngineCoil[] Coils => GameCoils.Concat(_coils).ToArray(); protected abstract GamelogicEngineCoil[] GameCoils { get; } @@ -29,22 +32,39 @@ public abstract class System80 : PinMameGame protected abstract GamelogicEngineSwitch[] Switches { get; } + private readonly PinMameIdAlias[] _aliases = + { + new PinMameIdAlias(7, SwSelfTest, AliasType.Switch), + new PinMameIdAlias(47, SwStartButton, AliasType.Switch), + new PinMameIdAlias(57, SwTilt, AliasType.Switch), + new PinMameIdAlias(-1, SwSlamTilt, AliasType.Switch), + new PinMameIdAlias(17, SwCoin1, AliasType.Switch), + new PinMameIdAlias(27, SwCoin2, AliasType.Switch), + new PinMameIdAlias(37, SwCoin3, AliasType.Switch), + new PinMameIdAlias(6, SwLeftAdvance, AliasType.Switch), + new PinMameIdAlias(16, SwRightAdvance, AliasType.Switch), + new PinMameIdAlias(114, SwFlipperLowerLeft, AliasType.Switch), + new PinMameIdAlias(112, SwFlipperLowerRight, AliasType.Switch), + + new PinMameIdAlias(10, CoilGameOn, AliasType.Coil), + }; + private readonly GamelogicEngineSwitch[] _switches = { - new GamelogicEngineSwitch(SwSelfTest, 7) { Description = "Self Test", InputActionHint = InputConstants.ActionSelfTest }, - new GamelogicEngineSwitch(SwStartButton, 47) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwTilt, 57) { Description = "Tilt" }, - new GamelogicEngineSwitch(SwSlamTilt, -1) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin1, 17) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin2, 27) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin3, 37) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwLeftAdvance, 6) { Description = "Left Advance", InputActionHint = InputConstants.ActionLeftAdvance, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwRightAdvance, 16) { Description = "Right Advance", InputActionHint = InputConstants.ActionRightAdvance, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerLeft, 114) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerRight, 112) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwSelfTest) { Description = "Self Test", InputActionHint = InputConstants.ActionSelfTest }, + new GamelogicEngineSwitch(SwStartButton) { Description = "Start Button", InputActionHint = InputConstants.ActionStartGame, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwTilt) { Description = "Tilt" }, + new GamelogicEngineSwitch(SwSlamTilt) { Description = "Slam Tilt", InputActionHint = InputConstants.ActionSlamTilt, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin1) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin2) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin3) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwLeftAdvance) { Description = "Left Advance", InputActionHint = InputConstants.ActionLeftAdvance, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwRightAdvance) { Description = "Right Advance", InputActionHint = InputConstants.ActionRightAdvance, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerLeft) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerRight) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, }; private readonly GamelogicEngineCoil[] _coils = { - new GamelogicEngineCoil(CoilGameOn, 10) { Description = "ROM Started" } + new GamelogicEngineCoil(CoilGameOn) { Description = "ROM Started" } }; } } diff --git a/VisualPinball.Engine.PinMAME/MPUs/Wpc.cs b/VisualPinball.Engine.PinMAME/MPUs/Wpc.cs index 674f7a9..c633471 100644 --- a/VisualPinball.Engine.PinMAME/MPUs/Wpc.cs +++ b/VisualPinball.Engine.PinMAME/MPUs/Wpc.cs @@ -22,32 +22,52 @@ namespace VisualPinball.Engine.PinMAME.MPUs { public abstract class Wpc : PinMameGame { + public override PinMameIdAlias[] AvailableAliases => Aliases.Concat(_aliases).ToArray(); + protected abstract PinMameIdAlias[] Aliases { get; } + public override GamelogicEngineSwitch[] AvailableSwitches => Concat(_switches, Switches); protected override GamelogicEngineCoil[] Coils => Concat(_coils, GameCoils); protected abstract GamelogicEngineCoil[] GameCoils { get; } - protected abstract GamelogicEngineSwitch[] Switches { get; } + private readonly PinMameIdAlias[] _aliases = + { + new PinMameIdAlias(1, SwCoin1, AliasType.Switch), + new PinMameIdAlias(2, SwCoin2, AliasType.Switch), + new PinMameIdAlias(3, SwCoin3, AliasType.Switch), + new PinMameIdAlias(4, SwCoin4, AliasType.Switch), + new PinMameIdAlias(5, SwCancel, AliasType.Switch), + new PinMameIdAlias(6, SwDown, AliasType.Switch), + new PinMameIdAlias(7, SwUp, AliasType.Switch), + new PinMameIdAlias(8, SwEnter, AliasType.Switch), + new PinMameIdAlias(112, SwFlipperLowerRight, AliasType.Switch), + new PinMameIdAlias(114, SwFlipperLowerLeft, AliasType.Switch), + new PinMameIdAlias(116, SwFlipperUpperRight, AliasType.Switch), + new PinMameIdAlias(118, SwFlipperUpperLeft, AliasType.Switch), + + new PinMameIdAlias(19, CoilGameOn, AliasType.Coil), + }; + private readonly GamelogicEngineSwitch[] _switches = { - new GamelogicEngineSwitch(SwCoin1, 1) {Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin2, 2) {Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin3, 3) {Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCoin4, 4) {Description = "Coin Button 4", InputActionHint = InputConstants.ActionInsertCoin4, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwCancel, 5) {Description = "Cancel", InputActionHint = InputConstants.ActionCoinDoorCancel, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwDown, 6) {Description = "Down", InputActionHint = InputConstants.ActionCoinDoorDown, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwUp, 7) {Description = "Up", InputActionHint = InputConstants.ActionCoinDoorUp, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwEnter, 8) {Description = "Enter", InputActionHint = InputConstants.ActionCoinDoorEnter, InputMapHint = InputConstants.MapCabinetSwitches }, - - new GamelogicEngineSwitch(SwFlipperLowerRight, 112) {Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperLowerLeft, 114) {Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperUpperRight, 116) {Description = "Upper Right Flipper", InputActionHint = InputConstants.ActionUpperRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, - new GamelogicEngineSwitch(SwFlipperUpperLeft, 118) {Description = "Upper Left Flipper", InputActionHint = InputConstants.ActionUpperLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin1) { Description = "Coin Button 1", InputActionHint = InputConstants.ActionInsertCoin1, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin2) { Description = "Coin Button 2", InputActionHint = InputConstants.ActionInsertCoin2, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin3) { Description = "Coin Button 3", InputActionHint = InputConstants.ActionInsertCoin3, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCoin4) { Description = "Coin Button 4", InputActionHint = InputConstants.ActionInsertCoin4, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwCancel) { Description = "Cancel", InputActionHint = InputConstants.ActionCoinDoorCancel, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwDown) { Description = "Down", InputActionHint = InputConstants.ActionCoinDoorDown, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwUp) { Description = "Up", InputActionHint = InputConstants.ActionCoinDoorUp, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwEnter) { Description = "Enter", InputActionHint = InputConstants.ActionCoinDoorEnter, InputMapHint = InputConstants.MapCabinetSwitches }, + + new GamelogicEngineSwitch(SwFlipperLowerRight) { Description = "Lower Right Flipper", InputActionHint = InputConstants.ActionRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperLowerLeft) { Description = "Lower Left Flipper", InputActionHint = InputConstants.ActionLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperUpperRight) { Description = "Upper Right Flipper", InputActionHint = InputConstants.ActionUpperRightFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, + new GamelogicEngineSwitch(SwFlipperUpperLeft) { Description = "Upper Left Flipper", InputActionHint = InputConstants.ActionUpperLeftFlipper, InputMapHint = InputConstants.MapCabinetSwitches }, }; private readonly GamelogicEngineCoil[] _coils = { - new GamelogicEngineCoil(CoilGameOn, 19) { Description = "ROM Started" } + new GamelogicEngineCoil(CoilGameOn) { Description = "ROM Started" } }; } } diff --git a/VisualPinball.Engine.PinMAME/PinMameGame.cs b/VisualPinball.Engine.PinMAME/PinMameGame.cs index 3c2ea40..b5dd8d4 100644 --- a/VisualPinball.Engine.PinMAME/PinMameGame.cs +++ b/VisualPinball.Engine.PinMAME/PinMameGame.cs @@ -62,6 +62,11 @@ public abstract class PinMameGame public abstract PinMameRom[] Roms { get; } + /// + /// All available id aliases for that game + /// + public abstract PinMameIdAlias[] AvailableAliases { get; } + /// /// All available switches for that game /// @@ -90,10 +95,10 @@ public abstract class PinMameGame /// These coils are common to all games. /// private readonly GamelogicEngineCoil[] _coils = { - new GamelogicEngineCoil(CoilFlipperLowerRight, 46) { Description = "Lower Right Flipper", DeviceHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$"}, - new GamelogicEngineCoil(CoilFlipperLowerLeft, 48) { Description = "Lower Left Flipper", DeviceHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$"}, - new GamelogicEngineCoil(CoilFlipperUpperRight, 34) { Description = "Upper Right Flipper"}, - new GamelogicEngineCoil(CoilFlipperUpperLeft, 36) { Description = "Upper Left Flipper"}, + new GamelogicEngineCoil(CoilFlipperLowerRight) { Description = "Lower Right Flipper", DeviceHint = "^(RightFlipper|RFlipper|FlipperRight|FlipperR)$"}, + new GamelogicEngineCoil(CoilFlipperLowerLeft) { Description = "Lower Left Flipper", DeviceHint = "^(LeftFlipper|LFlipper|FlipperLeft|FlipperL)$"}, + new GamelogicEngineCoil(CoilFlipperUpperRight) { Description = "Upper Right Flipper"}, + new GamelogicEngineCoil(CoilFlipperUpperLeft) { Description = "Upper Left Flipper"}, }; protected GamelogicEngineCoil[] Concat(IEnumerable parent, IEnumerable children) @@ -103,19 +108,19 @@ protected GamelogicEngineCoil[] Concat(IEnumerable parent, if (ids.ContainsKey(child.Id)) { ids.Remove(child.Id); } - } - var c = ids.Values.ToDictionary(s => s.InternalId, s => s); + } + var c = ids.Values.ToDictionary(s => s.Id, s => s); foreach (var child in children) { - c[child.InternalId] = child; - } + c[child.Id] = child; + } return c.Values.ToArray(); } protected GamelogicEngineSwitch[] Concat(IEnumerable parent, IEnumerable children) - { - var c = parent.ToDictionary(s => s.InternalId, s => s); + { + var c = parent.ToDictionary(s => s.Id, s => s); foreach (var child in children) { - c[child.InternalId] = child; + c[child.Id] = child; } return c.Values.ToArray(); } diff --git a/VisualPinball.Engine.PinMAME/PinMameIdAlias.cs b/VisualPinball.Engine.PinMAME/PinMameIdAlias.cs new file mode 100644 index 0000000..5393205 --- /dev/null +++ b/VisualPinball.Engine.PinMAME/PinMameIdAlias.cs @@ -0,0 +1,37 @@ +// Visual Pinball Engine +// Copyright (C) 2021 freezy and VPE Team +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +namespace VisualPinball.Engine.PinMAME +{ + public enum AliasType + { + Switch, Coil, Lamp + } + + public class PinMameIdAlias + { + public readonly int Id; + public readonly string Name; + public readonly AliasType AliasType; + + public PinMameIdAlias(int id, string name, AliasType aliasType) + { + Id = id; + Name = name; + AliasType = aliasType; + } + } +} diff --git a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj index c7fb0e9..c0d8dab 100644 --- a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj +++ b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj @@ -15,13 +15,11 @@ - + - From 752e212c8793a334c773c5707c84638688410603 Mon Sep 17 00:00:00 2001 From: Jason Millard Date: Sun, 29 May 2022 07:07:33 -0400 Subject: [PATCH 2/2] deps: bump to latest vpe and pinmame --- .../VisualPinball.Engine.PinMAME.csproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj index c0d8dab..2c6354e 100644 --- a/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj +++ b/VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj @@ -14,12 +14,12 @@ - - + + - + @@ -33,7 +33,7 @@ - +