public TstControllerDeck(IEnumerable <ControllerType> ports) { _devices = ports.Select <ControllerType, IPortDevice>(p => { switch (p) { case ControllerType.Gamepad: return(new Gamepad()); case ControllerType.Mouse: return(new Mouse()); default: return(new None()); } }).ToArray(); Definition = ControllerDefinitionMerger.GetMerged( _devices.Select(d => d.Definition), out var tmp); _cdums = tmp.ToArray(); Definition.Name = "PC-FX Controller"; Definition.BoolButtons.AddRange(_consoleButtons); }
public NesDeck(INesPort Left, INesPort Right, LightgunDelegate PPUCallback) { this.Left = Left; this.Right = Right; Definition = ControllerDefinitionMerger.GetMerged(new[] { Left.GetDefinition(), Right.GetDefinition() }, out var cdum); LeftU = cdum[0]; RightU = cdum[1]; // apply hacks // if this list gets very long, then something should be changed // if it stays short, then no problem if (Left is FourScore) { (Left as FourScore).RightPort = false; } if (Right is FourScore) { (Right as FourScore).RightPort = true; } if (Left is IZapper) { (Left as IZapper).PPUCallback = PPUCallback; } if (Right is IZapper) { (Right as IZapper).PPUCallback = PPUCallback; } }
public SaturnusControllerDeck(bool[] multitap, Device[] devices, LibSaturnus core) { int count = 2 + multitap.Count(b => b) * 5; int[] dev = new int[12]; int[] mt = new int[2]; for (int i = 0; i < 12; i++) { dev[i] = (int)(i < count ? devices[i] : Device.None); } for (int i = 0; i < 2; i++) { mt[i] = multitap[i] ? 1 : 0; } core.SetupInput(dev, mt); _devices = dev.Take(count) .Select(i => Activator.CreateInstance(Implementors[i])) .Cast <IDevice>() .ToArray(); _data = new byte[count * DataSize]; Definition = ControllerDefinitionMerger.GetMerged(_devices.Select(d => d.Definition), out var cdum); _unmerger = cdum.ToArray(); }
public NesDeck(INesPort left, INesPort right, LightgunDelegate ppuCallback) { _left = left; _right = right; ControllerDef = ControllerDefinitionMerger.GetMerged( "NES Controller", new[] { left.ControllerDefFragment, right.ControllerDefFragment }, out var cdum); _leftU = cdum[0]; _rightU = cdum[1]; // apply hacks // if this list gets very long, then something should be changed // if it stays short, then no problem if (left is FourScore leftScore) { leftScore.RightPort = false; } if (right is FourScore rightScore) { rightScore.RightPort = true; } if (left is IZapper leftZapper) { leftZapper.PPUCallback = ppuCallback; } if (right is IZapper rightZapper) { rightZapper.PPUCallback = ppuCallback; } }
public LibsnesControllerDeck(ControllerType left, ControllerType right) { _ports = new[] { Factory(left), Factory(right) }; List <ControlDefUnMerger> tmp; Definition = ControllerDefinitionMerger.GetMerged(_ports.Select(p => p.Definition), out tmp); _mergers = tmp.ToArray(); // add buttons that the core itself will handle Definition.BoolButtons.Add("Reset"); Definition.BoolButtons.Add("Power"); Definition.Name = "SNES Controller"; }
public LibsnesControllerDeck(LibsnesCore.SnesSyncSettings ss) { _ports = new[] { Factory(ss.LeftPort, ss), Factory(ss.RightPort, ss) }; Definition = ControllerDefinitionMerger.GetMerged(_ports.Select(p => p.Definition), out var tmp); _mergers = tmp.ToArray(); // add buttons that the core itself will handle Definition.BoolButtons.Add("Reset"); Definition.BoolButtons.Add("Power"); Definition.Name = "SNES Controller"; }
public FamicomDeck(IFamicomExpansion ExpSlot, LightgunDelegate PPUCallback) { Player3 = ExpSlot; Definition = ControllerDefinitionMerger.GetMerged( new[] { Player1.GetDefinition(), Player2.GetDefinition(), Player3.GetDefinition() }, out var cdum); Definition.BoolButtons.Add("P2 Microphone"); Player1U = cdum[0]; Player2U = cdum[1]; Player3U = cdum[2]; // hack if (Player3 is Zapper) { (Player3 as Zapper).PPUCallback = PPUCallback; } }
public FamicomDeck(IFamicomExpansion expSlot, LightgunDelegate ppuCallback) { _player3 = expSlot; _definition = ControllerDefinitionMerger.GetMerged( new[] { _player1.GetDefinition(), _player2.GetDefinition(), _player3.GetDefinition() }, out var cdum); _definition.BoolButtons.Add("P2 Microphone"); _player1U = cdum[0]; _player2U = cdum[1]; _player3U = cdum[2]; // hack if (_player3 is Zapper zapper) { zapper.PPUCallback = ppuCallback; } }
private void InitControllers() { _core.biz_set_port_devices(_syncSettings.LeftPort, _syncSettings.RightPort); switch (_syncSettings.LeftPort) { case LibSnes9x.LeftPortDevice.Joypad: _controllers.Add(new Joypad()); break; } switch (_syncSettings.RightPort) { case LibSnes9x.RightPortDevice.Joypad: _controllers.Add(new Joypad()); break; case LibSnes9x.RightPortDevice.Multitap: _controllers.Add(new Joypad()); _controllers.Add(new Joypad()); _controllers.Add(new Joypad()); _controllers.Add(new Joypad()); break; case LibSnes9x.RightPortDevice.Mouse: _controllers.Add(new Mouse()); break; case LibSnes9x.RightPortDevice.SuperScope: _controllers.Add(new SuperScope()); break; case LibSnes9x.RightPortDevice.Justifier: _controllers.Add(new Justifier()); break; } _controllerDefinition = ControllerDefinitionMerger.GetMerged( "SNES Controller", _controllers.Select(c => c.Definition), out _cdums); // add buttons that the core itself will handle _controllerDefinition.BoolButtons.Add("Reset"); _controllerDefinition.BoolButtons.Add("Power"); _controllerDefinition.MakeImmutable(); }
public FamicomDeck(IFamicomExpansion ExpSlot, Func <int, int, bool> PPUCallback) { Player3 = ExpSlot; List <ControlDefUnMerger> cdum; Definition = ControllerDefinitionMerger.GetMerged( new[] { Player1.GetDefinition(), Player2.GetDefinition(), Player3.GetDefinition() }, out cdum); Definition.BoolButtons.Add("P2 Microphone"); Player1U = cdum[0]; Player2U = cdum[1]; Player3U = cdum[2]; // hack if (Player3 is Zapper) { (Player3 as Zapper).PPUCallback = PPUCallback; } }