Esempio n. 1
0
 private void HideWindow(object sender, RoutedEventArgs e)
 {
     InterruptManager.ResetInterrupts();
     TankBusterManager.ResetTankBusters();
     FormManager.SaveFormInstances();
     Hide();
 }
Esempio n. 2
0
        protected BasicCombatClass(AmeisenBotStateMachine stateMachine)
        {
            WowInterface = WowInterface.I;
            StateMachine = stateMachine;

            Configureables = new Dictionary <string, dynamic>()
            {
                { "HealingItemHealthThreshold", 30.0 },
                { "HealingItemManaThreshold", 30.0 }
            };

            CooldownManager      = new CooldownManager(WowInterface.CharacterManager.SpellBook.Spells);
            RessurrectionTargets = new Dictionary <string, DateTime>();

            TargetManagerDps  = new TargetManager(new DpsTargetSelectionLogic(), TimeSpan.FromMilliseconds(250));
            TargetManagerTank = new TargetManager(new TankTargetSelectionLogic(), TimeSpan.FromMilliseconds(250));
            TargetManagerHeal = new TargetManager(new HealTargetSelectionLogic(), TimeSpan.FromMilliseconds(250));

            MyAuraManager     = new AuraManager(() => WowInterface.ObjectManager.Player?.Auras);
            TargetAuraManager = new AuraManager(() => WowInterface.ObjectManager.Target?.Auras);

            GroupAuraManager = new GroupAuraManager(WowInterface);

            TargetInterruptManager = new InterruptManager(new List <WowUnit>()
            {
                WowInterface.ObjectManager.Target
            }, null);

            EventCheckFacing = new TimegatedEvent(TimeSpan.FromMilliseconds(500));
            EventAutoAttack  = new TimegatedEvent(TimeSpan.FromMilliseconds(500));
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes the Device Driver System.
        /// </summary>
        static public void Initialize()
        {
            // Create Device Manager
            deviceManager = new DeviceManager();

            // Create Interrupt Manager
            interruptManager = new InterruptManager();

            // Create the Device Driver Manager
            deviceDriverRegistry = new DeviceDriverRegistry(PlatformArchitecture.X86);

            // Create the PCI Controller Manager
            pciControllerManager = new PCIControllerManager(deviceManager);

            // Setup hardware abstraction interface
            var hardware = new Mosa.CoolWorld.x86.HAL.Hardware();

            // Set device driver system to the hardware HAL
            Mosa.HardwareSystem.HAL.SetHardwareAbstraction(hardware);

            // Set the interrupt handler
            Mosa.HardwareSystem.HAL.SetInterruptHandler(InterruptManager.ProcessInterrupt);

            partitionManager = new PartitionManager(deviceManager);
        }
 public NRF52840_UART(Machine machine, bool easyDMA = false) : base(machine)
 {
     this.easyDMA     = easyDMA;
     IRQ              = new GPIO();
     interruptManager = new InterruptManager <Interrupts>(this);
     registers        = new DoubleWordRegisterCollection(this, DefineRegisters());
 }
Esempio n. 5
0
        public Gpu(IDisplay display, InterruptManager interruptManager, Dma dma, Ram oamRam, bool gbc)
        {
            _r                = new MemoryRegisters(GpuRegister.Values().ToArray());
            _lcdc             = new Lcdc();
            _interruptManager = interruptManager;
            _gbc              = gbc;
            _videoRam0        = new Ram(0x8000, 0x2000);
            _videoRam1        = gbc ? new Ram(0x8000, 0x2000) : null;
            _oamRam           = oamRam;
            _dma              = dma;

            _bgPalette  = new ColorPalette(0xff68);
            _oamPalette = new ColorPalette(0xff6a);
            _oamPalette.FillWithFf();

            _oamSearchPhase     = new OamSearch(oamRam, _lcdc, _r);
            _pixelTransferPhase = new PixelTransfer(_videoRam0, _videoRam1, oamRam, display, _lcdc, _r, gbc, _bgPalette,
                                                    _oamPalette);
            _hBlankPhase = new HBlankPhase();
            _vBlankPhase = new VBlankPhase();

            _mode  = Mode.OamSearch;
            _phase = _oamSearchPhase.Start();

            _display = display;
        }
        // the default moduleRevision/moduleId are correct for Zynq with GEM p23
        public CadenceGEM(Machine machine, ushort moduleRevision = 0x118, ushort moduleId = 0x2) : base(machine)
        {
            ModuleId       = moduleId;
            ModuleRevision = moduleRevision;

            IRQ  = new GPIO();
            MAC  = EmulationManager.Instance.CurrentEmulation.MACRepository.GenerateUniqueMAC();
            sync = new object();

            interruptManager = new InterruptManager <Interrupts>(this);

            nanoTimer = new LimitTimer(machine.ClockSource, NanosPerSecond, this, "PTP nanos",
                                       limit: NanosPerSecond,
                                       direction: Direction.Ascending,
                                       workMode: WorkMode.Periodic,
                                       eventEnabled: true);

            nanoTimer.LimitReached += () => secTimer.Value++;

            var registersMap = new Dictionary <long, DoubleWordRegister>
            {
                { (long)Registers.NetworkControl, new DoubleWordRegister(this)
                  .WithFlag(2, out receiveEnabled, name: "RXEN")
                  .WithFlag(9, FieldMode.Write, name: "STARTTX",
                            writeCallback: (_, value) =>
                    {
                        if (value)
                        {
                            SendFrames();
                        }
                    }) },
Esempio n. 7
0
        public EFR32_I2CController(Machine machine) : base(machine)
        {
            IRQ               = new GPIO();
            txBuffer          = new Queue <byte>();
            rxBuffer          = new Queue <byte>();
            interruptsManager = new InterruptManager <Interrupt>(this);

            var map = new Dictionary <long, DoubleWordRegister> {
                { (long)Registers.ReceiveBufferData, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Read, name: "RXDATA", valueProviderCallback: _ =>
                    {
                        var result = rxBuffer.Dequeue();
                        interruptsManager.SetInterrupt(Interrupt.ReceiveDataValid, rxBuffer.Any());
                        return(result);
                    }) },
                { (long)Registers.ReceiveBufferDataPeek, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Read, name: "RXDATAP", valueProviderCallback: _ => rxBuffer.Peek()) },
                { (long)Registers.Command, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Write, name: "COMMAND", writeCallback: (_, v) => HandleCommand((Command)v)) },
                { (long)Registers.TransmitBufferData, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Write, name: "TXDATA", writeCallback: (_, v) => LoadTxData((byte)v)) }
            };

            map.Add((long)Registers.InterruptFlag, interruptsManager.GetInterruptFlagRegister <DoubleWordRegister>());
            map.Add((long)Registers.InterruptEnable, interruptsManager.GetInterruptEnableRegister <DoubleWordRegister>());
            map.Add((long)Registers.InterruptFlagSet, interruptsManager.GetInterruptFlagRegister <DoubleWordRegister>());
            map.Add((long)Registers.InterruptFlagClear, interruptsManager.GetInterruptClearRegister <DoubleWordRegister>());

            registers = new DoubleWordRegisterCollection(this, map);
        }
Esempio n. 8
0
        protected BasicCombatClass(WowInterface wowInterface, AmeisenBotFsm stateMachine)
        {
            WowInterface = wowInterface;
            StateMachine = stateMachine;

            C = new Dictionary <string, dynamic>()
            {
                { "HealingItemHealthThreshold", 30.0 },
                { "HealingItemManaThreshold", 30.0 }
            };

            CooldownManager      = new CooldownManager(WowInterface.CharacterManager.SpellBook.Spells);
            RessurrectionTargets = new Dictionary <string, DateTime>();

            TargetManagerDps  = new TargetManager(new DpsTargetSelectionLogic(wowInterface), TimeSpan.FromMilliseconds(250));
            TargetManagerTank = new TargetManager(new TankTargetSelectionLogic(wowInterface), TimeSpan.FromMilliseconds(250));
            TargetManagerHeal = new TargetManager(new HealTargetSelectionLogic(wowInterface), TimeSpan.FromMilliseconds(250));

            MyAuraManager     = new AuraManager(wowInterface);
            TargetAuraManager = new AuraManager(wowInterface);

            GroupAuraManager = new GroupAuraManager(wowInterface);

            TargetInterruptManager = new InterruptManager();

            EventCheckFacing = new(TimeSpan.FromMilliseconds(500));
            EventAutoAttack  = new(TimeSpan.FromMilliseconds(500));
        }
Esempio n. 9
0
        public Gameboy(
            GameboyOptions options,
            Cartridge rom,
            IDisplay display,
            IController controller,
            ISoundOutput soundOutput,
            SerialEndpoint serialEndpoint)
        {
            _display  = display;
            _gbc      = rom.Gbc;
            SpeedMode = new SpeedMode();

            var interruptManager = new InterruptManager(_gbc);

            _timer = new Timer(interruptManager, SpeedMode);
            Mmu    = new Mmu();

            var oamRam = new Ram(0xfe00, 0x00a0);

            _dma        = new Dma(Mmu, oamRam, SpeedMode);
            _gpu        = new Gpu(display, interruptManager, _dma, oamRam, _gbc);
            _hdma       = new Hdma(Mmu);
            _sound      = new Sound(soundOutput, _gbc);
            _serialPort = new SerialPort(interruptManager, serialEndpoint, SpeedMode);

            Mmu.AddAddressSpace(rom);
            Mmu.AddAddressSpace(_gpu);
            Mmu.AddAddressSpace(new Joypad(interruptManager, controller));
            Mmu.AddAddressSpace(interruptManager);
            Mmu.AddAddressSpace(_serialPort);
            Mmu.AddAddressSpace(_timer);
            Mmu.AddAddressSpace(_dma);
            Mmu.AddAddressSpace(_sound);

            Mmu.AddAddressSpace(new Ram(0xc000, 0x1000));
            if (_gbc)
            {
                Mmu.AddAddressSpace(SpeedMode);
                Mmu.AddAddressSpace(_hdma);
                Mmu.AddAddressSpace(new GbcRam());
                Mmu.AddAddressSpace(new UndocumentedGbcRegisters());
            }
            else
            {
                Mmu.AddAddressSpace(new Ram(0xd000, 0x1000));
            }

            Mmu.AddAddressSpace(new Ram(0xff80, 0x7f));
            Mmu.AddAddressSpace(new ShadowAddressSpace(Mmu, 0xe000, 0xc000, 0x1e00));

            Cpu = new Cpu(Mmu, interruptManager, _gpu, display, SpeedMode);

            interruptManager.DisableInterrupts(false);

            if (!options.UseBootstrap)
            {
                InitiliseRegisters();
            }
        }
Esempio n. 10
0
        public void Save()
        {
            var interruptsDir = @"Settings/" + Me.Name + "/Kefka/Interrupts.json";
            var data          = JsonConvert.SerializeObject(GuiInterruptsList, Formatting.Indented);

            File.WriteAllText(interruptsDir, data);
            InterruptManager.ResetInterrupts();
        }
Esempio n. 11
0
        public PSE_SDController(Machine machine) : base(machine)
        {
            IRQ        = new GPIO();
            WakeupIRQ  = new GPIO();
            irqManager = new InterruptManager <Interrupts>(this);

            RegistersCollection = new DoubleWordRegisterCollection(this);
            InitializeRegisters();
        }
Esempio n. 12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="InterruptHandler"/> class.
        /// </summary>
        /// <param name="interruptManager">The interrupt manager.</param>
        /// <param name="irq">The irq.</param>
        /// <param name="hardwareDevice">The hardware device.</param>
        public InterruptHandler(InterruptManager interruptManager, byte irq, IHardwareDevice hardwareDevice)
        {
            if (hardwareDevice == null)
                HAL.Abort("hardwareDevice == null");

            this.interruptManager = interruptManager;
            this.irq = irq;
            this.hardwareDevice = hardwareDevice;
        }
Esempio n. 13
0
 public NRF52840_Radio(Machine machine) : base(machine)
 {
     IRQ = new GPIO();
     interruptManager = new InterruptManager <Events>(this, IRQ, "RadioIrq");
     shorts           = new Shorts();
     events           = new IFlagRegisterField[(int)Events.PHYEnd + 1];
     rxBuffer         = new ConcurrentQueue <byte[]>();
     DefineRegisters();
     Reset();
 }
Esempio n. 14
0
        private bool ReadAndClearInterrupt <T>(InterruptManager <T> irqManager, T irq) where T : struct, IConvertible
        {
            var result = irqManager.IsSet(irq);

            if (result)
            {
                irqManager.SetInterrupt(irq, false);
            }
            return(result);
        }
        public EFR32_Timer(Machine machine, long frequency, TimerWidth width) : base(machine)
        {
            IRQ              = new GPIO();
            this.width       = width;
            interruptManager = new InterruptManager <Interrupt>(this);

            innerTimer = new LimitTimer(machine.ClockSource, frequency, this, "timer", limit: (1UL << (int)width) - 1, direction: Direction.Ascending, eventEnabled: true, autoUpdate: true);
            innerTimer.LimitReached += LimitReached;
            DefineRegisters();
        }
Esempio n. 16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="InterruptHandler"/> class.
        /// </summary>
        /// <param name="interruptManager">The interrupt manager.</param>
        /// <param name="irq">The irq.</param>
        /// <param name="hardwareDevice">The hardware device.</param>
        public InterruptHandler(InterruptManager interruptManager, byte irq, IHardwareDevice hardwareDevice)
        {
            if (hardwareDevice == null)
            {
                HAL.Abort("hardwareDevice == null");
            }

            this.interruptManager = interruptManager;
            this.irq            = irq;
            this.hardwareDevice = hardwareDevice;
        }
Esempio n. 17
0
 public Video(InterruptManager iM, IRenderable newScreen)
 {
     screen = newScreen;
     interruptManager = iM;
     lyCounter = new LYCounter();
     lyCounter.LineChanged += new LYCounter.OnLineChangedEventHandler(OnLYLineChange);
     lyCounter.OnMode3 += new LYCounter.OnMode3EventHandler(Mode3Handler);
     ResetLCD();
     InitializeVideoMemory();
     InitializePalettes();
     InitializeLCD();
     InMode3 = false;
 }
Esempio n. 18
0
        public static void Stop()
        {
            if (!Core.OverlayManager.IsActive)
            {
                return;
            }

            Core.OverlayManager.RemoveUIComponent(KefkaOverlayComponent);
            InterruptManager.ResetInterrupts();
            TankBusterManager.ResetTankBusters();
            FormManager.SaveFormInstances();
            KefkaEnemyOverlayIsVisible = false;
        }
Esempio n. 19
0
 public void LoadFile(byte[] loadFile)
 {
     interruptManager = new InterruptManager();
     timer            = new GBTimer(interruptManager);
     serial           = new Serial();
     audio            = new GBAudio();
     wram             = new WRAM();
     hram             = new HRAM();
     video            = new Video(interruptManager, screen);
     cart             = CartLoader.LoadCart(loadFile);
     input            = new GBInput(interruptManager, inputHandler);
     mmu = new MMU(interruptManager, cart, input, audio, timer, serial, video, wram, hram);
     cpu = new CPU(interruptManager, mmu.Read, mmu.Write, mmu.UpdateTime);
 }
Esempio n. 20
0
        public PSE_USB(Machine machine, ControllerMode mode = ControllerMode.Host) : base(machine)
        {
            this.mode = mode;

            addressToDeviceCache = new TwoWayDictionary <byte, IUSBDevice>();

            fifoFromDeviceToHost         = new Queue <byte> [NumberOfEndpoints];
            fifoFromHostToDevice         = new Queue <byte> [NumberOfEndpoints];
            receiveDeviceAddress         = new IValueRegisterField[NumberOfEndpoints];
            transmitDeviceAddress        = new IValueRegisterField[NumberOfEndpoints];
            requestInTransaction         = new IFlagRegisterField[NumberOfEndpoints];
            transmitTargetEndpointNumber = new IValueRegisterField[NumberOfEndpoints];
            receiveTargetEndpointNumber  = new IValueRegisterField[NumberOfEndpoints];

            for (var i = 0; i < NumberOfEndpoints; i++)
            {
                fifoFromDeviceToHost[i] = new Queue <byte>();
                fifoFromHostToDevice[i] = new Queue <byte>();
            }

            MainIRQ = new GPIO();
            DmaIRQ  = new GPIO();

            byteRegisters       = new ByteRegisterCollection(this);
            wordRegisters       = new WordRegisterCollection(this);
            doubleWordRegisters = new DoubleWordRegisterCollection(this);

            var gate = new GPIOGate(MainIRQ);

            usbInterruptsManager = new InterruptManager <UsbInterrupt>(this, gate.GetGPIO(), "main");
            txInterruptsManager  = new InterruptManager <TxInterrupt>(this, gate.GetGPIO(), "main");
            rxInterruptsManager  = new InterruptManager <RxInterrupt>(this, gate.GetGPIO(), "main");

            DefineCommonRegisters();
            DefineIndexedRegisters();
            DefineFifoRegisters();
            DefineControlAndStatusRegisters();
            DefineNonIndexedEndpointControlAndStatusRegisters();
            DefineMultipointControlAndStatusRegisters();

            ResetInterrupts();
        }
Esempio n. 21
0
        public void OnInitialize(int version)
        {
            Logger.KefkaLog($"Initializing Version: GitHub {System.Windows.Forms.Application.ProductVersion}");

            TreeRoot.OnStart += OnBotStart;
            TreeRoot.OnStop  += OnBotStop;

            if (version == 2)
            {
                IsChineseVersion = true;
            }

            HookBehaviors();

            InterruptManager.ResetInterrupts();
            IgnoreTargetManager.ResetIgnoreTargets();
            TankBusterManager.ResetTankBusters();
            OpenerManager.ResetOpeners();
            CombatHelper.ResetLastUsed();
        }
        public EFR32_USART(Machine machine, uint clockFrequency = 19000000) : base(machine)
        {
            TransmitIRQ = new GPIO();
            ReceiveIRQ  = new GPIO();

            interruptsManager = new InterruptManager <Interrupt>(this);

            var registersMap = new Dictionary <long, DoubleWordRegister>
            {
                { (long)Registers.Control, new DoubleWordRegister(this)
                  .WithEnumField(0, 1, out operationModeField, name: "SYNC")
                  .WithEnumField(5, 2, out oversamplingField, name: "OVS") },
                { (long)Registers.FrameFormat, new DoubleWordRegister(this, 0x1005)
                  .WithEnumField(8, 2, out parityBitModeField, name: "PARITY")
                  .WithEnumField(12, 2, out stopBitsModeField, name: "STOPBITS") },
                { (long)Registers.Command, new DoubleWordRegister(this)
                  .WithFlag(11, FieldMode.Set, writeCallback: (_, newValue) => { if (newValue)
                                                                                 {
                                                                                     ClearBuffer();
                                                                                 }
                            }, name: "CLEARRX") },
                { (long)Registers.Status, new DoubleWordRegister(this, 0x2040)
                  .WithFlag(5, out transferCompleteFlag, FieldMode.Read, name: "TXC")
                  .WithFlag(7, out receiveDataValidFlag, FieldMode.Read, name: "RXDATAV") },
                { (long)Registers.ClockControl, new DoubleWordRegister(this)
                  .WithValueField(3, 20, out fractionalClockDividerField, name: "DIV") },
                { (long)Registers.RxBufferData, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Read, name: "RXDATA", valueProviderCallback: (_) => ReadBuffer()) },
                { (long)Registers.TxBufferData, new DoubleWordRegister(this)
                  .WithValueField(0, 8, FieldMode.Write, writeCallback: (_, v) => HandleTxBufferData((byte)v)) },
            };

            registersMap.Add((long)Registers.InterruptFlag, interruptsManager.GetInterruptFlagRegister <DoubleWordRegister>());
            registersMap.Add((long)Registers.InterruptEnable, interruptsManager.GetInterruptEnableRegister <DoubleWordRegister>());
            registersMap.Add((long)Registers.InterruptFlagSet, interruptsManager.GetInterruptSetRegister <DoubleWordRegister>());
            registersMap.Add((long)Registers.InterruptFlagClear, interruptsManager.GetInterruptClearRegister <DoubleWordRegister>());

            registers = new DoubleWordRegisterCollection(this, registersMap);

            uartClockFrequency = clockFrequency;
        }
Esempio n. 23
0
        protected BasicCombatClassBia10(AmeisenBotInterfaces bot)
        {
            Bot = bot;

            SpellAbortFunctions = new List <Func <bool> >();
            ResurrectionTargets = new Dictionary <string, DateTime>();

            CooldownManager   = new CooldownManager(Bot.Character.SpellBook.Spells);
            InterruptManager  = new InterruptManager();
            MyAuraManager     = new AuraManager(Bot);
            TargetAuraManager = new AuraManager(Bot);
            GroupAuraManager  = new GroupAuraManager(Bot);

            EventCheckFacing = new TimegatedEvent(TimeSpan.FromMilliseconds(500));

            Configureables = new Dictionary <string, dynamic>
            {
                { "HealthItemThreshold", 30.0 },
                { "ManaItemThreshold", 30.0 }
            };
        }
Esempio n. 24
0
        public void OnInitialize(int version)
        {
            //Logger.KefkaLog($"Initializing Version: {File.ReadAllText(VersionPath)}");
            Logger.KefkaLog($"Initializing Version: GitHub 1.0.0");

            TreeRoot.OnStart += OnBotStart;
            TreeRoot.OnStop  += OnBotStop;

            if (version == 2)
            {
                IsChineseVersion = true;
            }

            HookBehaviors();

            var _class = RoutineManager.CurrentClass;

            InterruptManager.ResetInterrupts();
            IgnoreTargetManager.ResetIgnoreTargets();
            TankBusterManager.ResetTankBusters();
            OpenerManager.ResetOpeners();
            CombatHelper.ResetLastUsed();
        }
Esempio n. 25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ResourceManager"/> class.
 /// </summary>
 public ResourceManager()
 {
     ioPortResources = new IOPortResources();
     memoryResources = new MemoryResources();
     interruptManager = new InterruptManager();
 }
Esempio n. 26
0
        /// <summary>
        /// Initializes the Device Driver System.
        /// </summary>
        public static void Initialize()
        {
            // Create Device Manager
            deviceManager = new DeviceManager();

            // Create Interrupt Manager
            interruptManager = new InterruptManager();

            // Create the Device Driver Manager
            deviceDriverRegistry = new DeviceDriverRegistry(PlatformArchitecture.X86);

            // Create the PCI Controller Manager
            pciControllerManager = new PCIControllerManager(deviceManager);

            // Setup hardware abstraction interface
            var hardware = new Mosa.CoolWorld.x86.HAL.Hardware();

            // Set device driver system to the hardware HAL
            Mosa.HardwareSystem.HAL.SetHardwareAbstraction(hardware);

            // Set the interrupt handler
            Mosa.HardwareSystem.HAL.SetInterruptHandler(InterruptManager.ProcessInterrupt);

            partitionManager = new PartitionManager(deviceManager);
        }
Esempio n. 27
0
 public SerialPort(InterruptManager interruptManager, SerialEndpoint serialEndpoint, SpeedMode speedMode)
 {
     _interruptManager = interruptManager;
     _serialEndpoint   = serialEndpoint;
     _speedMode        = speedMode;
 }
Esempio n. 28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InterruptHandler"/> class.
 /// </summary>
 /// <param name="interruptManager">The interrupt manager.</param>
 /// <param name="irq">The irq.</param>
 /// <param name="hardwareDevice">The hardware device.</param>
 public InterruptHandler(InterruptManager interruptManager, byte irq, IHardwareDevice hardwareDevice)
 {
     this.interruptManager = interruptManager;
     this.irq            = irq;
     this.hardwareDevice = hardwareDevice;
 }
Esempio n. 29
0
 private static async Task <bool> FeralCombatRotation()
 {
     if (await Snapshots.CheckAndApplyBloodtalons())
     {
         return(true);
     }
     if (await Abilities.Cast <MoonfireHeightIssueAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <DashAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <StampedingRoarAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <ProwlAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <CatFormAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.SurvivalInstinctsAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <CenarionWardAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <HeartOfTheWildAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <SavageRoarAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.WildChargeAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <ProwlOpenerAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <DisplacerBeastAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.FaerieFireAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await InterruptManager.CheckMyTarget())
     {
         return(true);
     }
     if (await ItemManager.UseTrinket1())
     {
         return(true);
     }
     if (await ItemManager.UseTrinket2())
     {
         return(true);
     }
     if (await Abilities.Cast <ForceOfNatureAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <WarStompAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <IncapacitatingRoarAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <MassEntanglementAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.IncarnationAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <BerserkingAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <TigersFuryAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.BerserkAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <Abilities.Feral.ThrashAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <RipAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <FerociousBiteAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <RakeAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <SwipeAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <MoonfireAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <WrathAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <ShredAbility>(MyCurrentTarget))
     {
         return(true);
     }
     return(await Abilities.Cast <ShredAtFiveComboPointsAbility>(MyCurrentTarget));
 }
Esempio n. 30
0
 private static async Task <bool> GuardianCombatRotation()
 {
     if (await Units.TauntTarget(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <FaerieFireAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <DashAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <StampedingRoarAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <BearFormAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <WildChargeAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <CenarionWardAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <FrenziedRegenerationAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <BarkskinAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <SurvivalInstinctsAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <BristlingFurAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <SavageDefenseAbility>(Me))
     {
         return(true);
     }
     if (await InterruptManager.CheckMyTarget())
     {
         return(true);
     }
     if (await ItemManager.UseTrinket1())
     {
         return(true);
     }
     if (await ItemManager.UseTrinket2())
     {
         return(true);
     }
     if (await Abilities.Cast <IncapacitatingRoarAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <MassEntanglementAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <IncarnationAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <BerserkAbility>(Me))
     {
         return(true);
     }
     if (await Abilities.Cast <PulverizeAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <MangleAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <ThrashAbility>(MyCurrentTarget))
     {
         return(true);
     }
     if (await Abilities.Cast <MaulAbility>(MyCurrentTarget))
     {
         return(true);
     }
     return(await Abilities.Cast <LacerateAbility>(MyCurrentTarget));
 }
Esempio n. 31
0
        public EFR32xg13FlashController(Machine machine, MappedMemory flash)
        {
            this.flash = flash;
            if (flash.Size < PageNumber * PageSize)
            {
                throw new ConstructionException($"Provided flash size is too small, expected 0x{PageNumber * PageSize:X} bytes, got 0x{flash.Size:X} bytes");
            }
            interruptsManager = new InterruptManager <Interrupt>(this);

            var registersMap = new Dictionary <long, DoubleWordRegister>
            {
                { (long)Registers.Control, new DoubleWordRegister(this, 0x1)
                  .WithTaggedFlag("ADDRFAULTEN", 0)
                  .WithTaggedFlag("CLKDISFAULTEN", 1)
                  .WithTaggedFlag("PWRUPONDEMAND", 2)
                  .WithTaggedFlag("IFCREADCLEAR", 3)
                  .WithTaggedFlag("TIMEOUTFAULTEN", 4)
                  .WithReservedBits(5, 3)
                  .WithIgnoredBits(8, 1)   // this is written by emlib as an errata
                  .WithReservedBits(9, 23) },
                { (long)Registers.ReadControl, new DoubleWordRegister(this, 0x1000100)
                  .WithReservedBits(0, 3)
                  .WithTaggedFlag("IFCDIS", 3)
                  .WithTaggedFlag("AIDIS", 4)
                  .WithTaggedFlag("ICCDIS", 5)
                  .WithReservedBits(6, 2)
                  .WithTaggedFlag("PREFETCH", 8)
                  .WithTaggedFlag("USEHPROT", 9)
                  .WithReservedBits(10, 14)
                  .WithTag("MODE", 24, 2)
                  .WithReservedBits(26, 2)
                  .WithTaggedFlag("SCBTP", 28)
                  .WithReservedBits(29, 3) },
                { (long)Registers.WriteControl, new DoubleWordRegister(this)
                  .WithFlag(0, out isWriteEnabled, name: "WREN")
                  .WithTaggedFlag("IRQERASEABORT", 1)
                  .WithReservedBits(2, 30) },
                { (long)Registers.WriteCommand, new DoubleWordRegister(this)
                  .WithFlag(0, FieldMode.Toggle, changeCallback: (_, __) => UpdateWriteAddress(), name: "LADDRIM")
                  .WithFlag(1, FieldMode.Toggle, changeCallback: (_, __) => ErasePage(), name: "ERASEPAGE")
                  .WithTaggedFlag("WRITEEND", 2)
                  .WithFlag(3, FieldMode.Toggle, changeCallback: (_, __) => WriteWordToFlash(), name: "WRITEONCE")
                  .WithTaggedFlag("WRITETRIG", 4)
                  .WithTaggedFlag("ERASEABORT", 5)
                  .WithReservedBits(6, 2)
                  .WithTaggedFlag("ERASEMAIN0", 8)
                  .WithReservedBits(9, 3)
                  .WithTaggedFlag("CLEARWDATA", 12)
                  .WithReservedBits(13, 19) },
                { (long)Registers.AddressBuffer, new DoubleWordRegister(this)
                  .WithValueField(0, 32, out writeAddress, name: "ADDRB") },
                { (long)Registers.WriteData, new DoubleWordRegister(this)
                  .WithValueField(0, 32, out writeData, writeCallback: (_, __) => writeDataReady.Value = false, name: "WDATA") },
                { (long)Registers.Status, new DoubleWordRegister(this, 0x8)
                  .WithFlag(0, FieldMode.Read, valueProviderCallback: _ => false, name: "BUSY")
                  .WithTaggedFlag("LOCKED", 1)
                  .WithFlag(2, out invalidAddress, FieldMode.Read, name: "INVADDR")
                  // we assume a single-word buffer
                  .WithFlag(3, out writeDataReady, FieldMode.Read, name: "WDATAREADY")
                  .WithTaggedFlag("WORDTIMEOUT", 4)
                  .WithTaggedFlag("ERASEABORT", 5)
                  .WithTaggedFlag("PCRUNNING", 6)
                  .WithReservedBits(7, 17)
                  .WithTag("WDATAVALID", 24, 4)
                  .WithTag("CLEARWDATA", 28, 4) },
                { (long)Registers.InterruptFlag, interruptsManager.GetMaskedInterruptFlagRegister <DoubleWordRegister>() },
                { (long)Registers.InterruptFlagSet, interruptsManager.GetInterruptSetRegister <DoubleWordRegister>() },
                { (long)Registers.InterruptFlagClear, interruptsManager.GetInterruptClearRegister <DoubleWordRegister>() },
                { (long)Registers.InterruptEnable, interruptsManager.GetInterruptEnableRegister <DoubleWordRegister>() },
                { (long)Registers.ConfigurationLock, new DoubleWordRegister(this)
                  .WithValueField(0, 16,
                                  writeCallback: (_, value) => { isLocked = value != UnlockPattern; },
                                  valueProviderCallback: _ => isLocked ? 1u : 0u,
                                  name: "LOCKKEY")
                  .WithReservedBits(16, 16) },
                { (long)Registers.Command, new DoubleWordRegister(this)
                  .WithTaggedFlag("PWRUP", 0)
                  .WithReservedBits(1, 31) },
            };

            registers = new DoubleWordRegisterCollection(this, registersMap);

            //calling Reset to fill the memory with 0xFFs
            Reset();
        }
Esempio n. 32
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ResourceManager"/> class.
 /// </summary>
 public ResourceManager()
 {
     ioPortResources  = new IOPortResources();
     memoryResources  = new MemoryResources();
     interruptManager = new InterruptManager();
 }
Esempio n. 33
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InterruptHandler"/> class.
 /// </summary>
 /// <param name="interruptManager">The interrupt manager.</param>
 /// <param name="irq">The irq.</param>
 /// <param name="hardwareDevice">The hardware device.</param>
 public InterruptHandler(InterruptManager interruptManager, byte irq, IHardwareDevice hardwareDevice)
 {
     this.interruptManager = interruptManager;
     this.irq = irq;
     this.hardwareDevice = hardwareDevice;
 }
Esempio n. 34
0
        public K6xF_Ethernet(Machine machine) : base(machine)
        {
            rxIRQ   = new GPIO();
            txIRQ   = new GPIO();
            ptpIRQ  = new GPIO();
            miscIRQ = new GPIO();

            innerLock = new object();

            interruptManager = new InterruptManager <Interrupts>(this);

            var registerMap = new Dictionary <long, DoubleWordRegister>
            {
                { (long)Registers.InterruptEvent, interruptManager.GetRegister <DoubleWordRegister>(
                      valueProviderCallback: (interrupt, oldValue) =>
                    {
                        return(interruptManager.IsSet(interrupt));
                    },
                      writeCallback: (interrupt, oldValue, newValue) =>
                    {
                        if (newValue)
                        {
                            interruptManager.ClearInterrupt(interrupt);
                        }
                    }) },
                { (long)Registers.InterruptMask, interruptManager.GetRegister <DoubleWordRegister>(
                      valueProviderCallback: (interrupt, oldValue) =>
                    {
                        return(interruptManager.IsEnabled(interrupt));
                    },
                      writeCallback: (interrupt, oldValue, newValue) =>
                    {
                        if (newValue)
                        {
                            interruptManager.EnableInterrupt(interrupt);
                        }
                        else
                        {
                            interruptManager.DisableInterrupt(interrupt);
                            interruptManager.ClearInterrupt(interrupt);
                        }
                    }) },
                { (long)Registers.ReceiveDescriptorActive, new DoubleWordRegister(this)
                  .WithReservedBits(25, 7)
                  .WithFlag(24, out receiverEnabled, name: "RDAR")
                  .WithReservedBits(0, 24) },
                { (long)Registers.TransmitDescriptorActive, new DoubleWordRegister(this)
                  .WithReservedBits(25, 7)
                  .WithFlag(24, FieldMode.Read | FieldMode.WriteOneToClear, name: "TDAR",
                            writeCallback: (_, value) =>
                    {
                        if (value)
                        {
                            isTransmissionStarted = true;
                            this.Log(LogLevel.Debug, "Sending Frames");
                            SendFrames();
                        }
                    })
                  .WithReservedBits(0, 24) },
                { (long)Registers.EthernetControl, new DoubleWordRegister(this)
                  .WithReservedBits(17, 15)
                  .WithReservedBits(12, 5)
                  .WithReservedBits(11, 1)
                  .WithReservedBits(10, 1)
                  .WithReservedBits(9, 1)
                  .WithTaggedFlag("DBSWP", 8)
                  .WithTaggedFlag("STOPEN", 7)
                  .WithTaggedFlag("DBGEN", 6)
                  .WithReservedBits(5, 1)
                  .WithFlag(4, out extendedMode, name: "EN1588")
                  .WithTaggedFlag("SLEEP", 3)
                  .WithTaggedFlag("MAGICEN", 2)
                  .WithTaggedFlag("ETHEREN", 1)
                  .WithFlag(0, FieldMode.Write,
                            writeCallback: (_, b) =>
                    {
                        if (b)
                        {
                            Reset();
                        }
                    }, name: "RESET") },
                { (long)Registers.ReceiveControl, new DoubleWordRegister(this)
                  .WithTaggedFlag("GRS", 31)
                  .WithTaggedFlag("NLC", 30)
                  .WithValueField(16, 14, name: "MAX_FL")
                  .WithTaggedFlag("CFEN", 15)
                  .WithTaggedFlag("CRCFWD", 14)
                  .WithTaggedFlag("PAUFWD", 13)
                  .WithTaggedFlag("PADEN", 12)
                  .WithReservedBits(10, 2)
                  .WithTaggedFlag("RMII_10T", 9)
                  .WithTaggedFlag("RMII_MODE", 8)
                  .WithReservedBits(7, 1)
                  .WithReservedBits(6, 1)
                  .WithTaggedFlag("FCE", 5)
                  .WithTaggedFlag("BC_REJ", 4)
                  .WithTaggedFlag("PROM", 3)
                  .WithTaggedFlag("MII_MODE", 2)
                  .WithTaggedFlag("DRT", 1)
                  .WithTaggedFlag("LOOP", 0) },
                { (long)Registers.TransmitControl, new DoubleWordRegister(this)
                  .WithReservedBits(11, 21)
                  .WithReservedBits(10, 1)
                  .WithFlag(9, out forwardCRCFromApplication, name: "CRCFWD")
                  .WithTaggedFlag("ADDINS", 8)
                  .WithValueField(5, 3, name: "ADDSEL")
                  .WithTaggedFlag("RFC_PAUSE", 4)
                  .WithTaggedFlag("TFC_PAUSE", 3)
                  .WithTaggedFlag("FDEN", 2)
                  .WithReservedBits(1, 1)
                  .WithTaggedFlag("GTS", 0) },
                { (long)Registers.PhysicalAddressLower, new DoubleWordRegister(this)
                  .WithValueField(0, 32, out lowerMAC, writeCallback: (_, value) =>
                    {
                        UpdateMac();
                    }, name: "PADDR1") },
                { (long)Registers.PhysicalAddressUpper, new DoubleWordRegister(this)
                  .WithValueField(16, 16, out upperMAC, writeCallback: (_, value) =>
                    {
                        UpdateMac();
                    }, name: "PADDR2")
                  .WithValueField(0, 16, name: "TYPE") },
                { (long)Registers.TransmitFIFOWatermark, new DoubleWordRegister(this)
                  .WithReservedBits(9, 22)
                  .WithTaggedFlag("STRFWD", 8)
                  .WithReservedBits(6, 2)
                  .WithValueField(0, 6, name: "TFWR") },
                { (long)Registers.ReceiveDescriptorRingStart, new DoubleWordRegister(this)
                  .WithValueField(2, 30, name: "R_DES_START",
                                  writeCallback: (oldValue, value) =>
                    {
                        if (receiverEnabled.Value)
                        {
                            this.Log(LogLevel.Warning, "Changing value of receive buffer queue base address while reception is enabled is illegal");
                            return;
                        }
                        rxDescriptorsQueue = new DmaBufferDescriptorsQueue <DmaRxBufferDescriptor>(machine.SystemBus, value << 2, (sb, addr) => new DmaRxBufferDescriptor(sb, addr, extendedMode.Value));
                    })
                  .WithReservedBits(1, 1)
                  .WithReservedBits(0, 1) },
                { (long)Registers.TransmitBufferDescriptorRingStart, new DoubleWordRegister(this)
                  .WithValueField(2, 30, name: "X_DES_START",
                                  writeCallback: (oldValue, value) =>
                    {
                        if (isTransmissionStarted)
                        {
                            this.Log(LogLevel.Warning, "Changing value of transmit buffer descriptor ring start address while transmission is started is illegal");
                            return;
                        }
                        txDescriptorsQueue = new DmaBufferDescriptorsQueue <DmaTxBufferDescriptor>(machine.SystemBus, value << 2, (sb, addr) => new DmaTxBufferDescriptor(sb, addr, extendedMode.Value));
                    })
                  .WithReservedBits(1, 1)
                  .WithReservedBits(0, 1) }
            };

            registers = new DoubleWordRegisterCollection(this, registerMap);
        }