Beispiel #1
0
        internal BaseOp[] Decode(byte[] gameBytes)
        {
            var list = new List <BaseOp>();

            for (int i = 0; i < gameBytes.Length; i++)
            {
                var pos = Memory.GameStartAddress + i;
                var msb = gameBytes[i];
                var lsb = gameBytes[++i];
                CurrentOp = Convert.ToUInt16((msb << 8) | lsb);

                var generalOp = (byte)((msb & 0xF0) >> 4);

                BaseOp op = null;
                if (generalFunctions.ContainsKey(generalOp))
                {
                    op = generalFunctions[generalOp].Invoke();
                }
                else
                {
                    op = new OpUnknown(CurrentOp);
                }

                op.Pos = pos;
                list.Add(op);
            }

            return(list.ToArray());
        }
Beispiel #2
0
        internal BaseOp DecodeOp(byte msb, byte lsb)
        {
            CurrentOp = Convert.ToUInt16((msb << 8) | lsb);

            var generalOp = (byte)((msb & 0xF0) >> 4);

            BaseOp op = null;

            if (generalFunctions.ContainsKey(generalOp))
            {
                op = generalFunctions[generalOp].Invoke();
            }
            else
            {
                op = new OpUnknown(CurrentOp);
            }

            return(op);
        }