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()); }
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); }