private void buttonScan_Click(object sender, EventArgs e) { textLog.Text = ""; int found = 0, offset = 0; while (found < 500 && offset < Data.GetRomSize()) { FlagType flag = Data.GetSnesApi().GetFlag(offset), check = flag == FlagType.Opcode ? FlagType.Operand : flag; var step = flag == FlagType.Opcode ? Data.GetSnesApi().GetInstructionLength(offset) : RomUtil.GetByteLengthForFlag(flag); if (flag == FlagType.Operand) { found++; textLog.Text += $"{Util.NumberToBaseString(Data.ConvertPCtoSnes(offset), Util.NumberBase.Hexadecimal, 6, true)} (0x{Util.NumberToBaseString(offset, Util.NumberBase.Hexadecimal, 0)}): Operand without Opcode\r\n"; } else if (step > 1) { for (var i = 1; i < step; i++) { if (Data.GetSnesApi().GetFlag(offset + i) == check) { continue; } found++; textLog.Text += $"{Util.NumberToBaseString(Data.ConvertPCtoSnes(offset + i), Util.NumberBase.Hexadecimal, 6, true)} (0x{Util.NumberToBaseString(offset + i, Util.NumberBase.Hexadecimal, 0)}): {Util.GetEnumDescription(Data.GetSnesApi().GetFlag(offset + i))} is not {Util.GetEnumDescription(check)}\r\n"; } } offset += step; } if (found == 0) { textLog.Text = "No misaligned flags found!"; } }