Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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";
        }
Ejemplo n.º 6
0
        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";
        }
Ejemplo n.º 7
0
        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;
            }
        }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        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;
            }
        }