public void TestGetKnownFormulaeIds()
        {
            var bitmask = new byte[] { 0x00, 0x00, 0x05, 0x00, 0x05, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00 };

            var formulae = FormulaeBitmask.FromBytes(bitmask).FormulaeIds;

            Assert.AreEqual(9, formulae.Count());

            Assert.IsTrue(formulae.Contains(0x06));
            Assert.IsTrue(formulae.Contains(0x08));
            Assert.IsTrue(formulae.Contains(0x0c));
            Assert.IsTrue(formulae.Contains(0x0e));
            Assert.IsTrue(formulae.Contains(0x11));
            Assert.IsTrue(formulae.Contains(0x13));
            Assert.IsTrue(formulae.Contains(0x14));
            Assert.IsTrue(formulae.Contains(0x38));
            Assert.IsTrue(formulae.Contains(0x3a));
        }
Example #2
0
        public static IEnumerable <FormulaeBitmask> ReadKnownFormulae()
        {
            if (_baseAddress == 0)
            {
                throw new InvalidOperationException("Connect to Darkland process first!");
            }

            var formulae = new List <FormulaeBitmask>(NumberofCharacters);

            using (var accessor = new MemoryAccessor("dosbox"))
            {
                for (var i = 0; i < NumberofCharacters; i++)
                {
                    var bytes = new byte[FormulaeBitmask.FormulaeBitmaskSize];
                    if (accessor.ReadMemory(
                            _baseAddress + KnownFormulaeOffset + i * FormulaeBitmask.FormulaeBitmaskSize, bytes))
                    {
                        formulae.Add(FormulaeBitmask.FromBytes(bytes));
                    }
                }
            }

            return(formulae);
        }