private void table_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) { var row = e.RowIndex + ViewOffset; if (row >= Project.Data.GetRomSize()) { return; } switch (e.ColumnIndex) { case 0: e.Value = Project.Data.Labels.GetLabelName(Project.Data.ConvertPCtoSnes(row)); break; case 1: e.Value = Util.NumberToBaseString(Project.Data.ConvertPCtoSnes(row), Util.NumberBase.Hexadecimal, 6); break; case 2: e.Value = (char)Project.Data.GetRomByte(row); break; case 3: e.Value = Util.NumberToBaseString(Project.Data.GetRomByte(row) ?? 0x0, displayBase); break; case 4: e.Value = RomUtil.PointToString(Project.Data.GetSnesApi().GetInOutPoint(row)); break; case 5: var len = Project.Data.GetSnesApi().GetInstructionLength(row); e.Value = row + len <= Project.Data.GetRomSize() ? Project.Data.GetSnesApi().GetInstruction(row) : ""; break; case 6: var ia = Project.Data.GetSnesApi().GetIntermediateAddressOrPointer(row); e.Value = ia >= 0 ? Util.NumberToBaseString(ia, Util.NumberBase.Hexadecimal, 6) : ""; break; case 7: e.Value = Util.GetEnumDescription(Project.Data.GetSnesApi().GetFlag(row)); break; case 8: e.Value = Util.NumberToBaseString(Project.Data.GetSnesApi().GetDataBank(row), Util.NumberBase.Hexadecimal, 2); break; case 9: e.Value = Util.NumberToBaseString(Project.Data.GetSnesApi().GetDirectPage(row), Util.NumberBase.Hexadecimal, 4); break; case 10: e.Value = RomUtil.BoolToSize(Project.Data.GetSnesApi().GetMFlag(row)); break; case 11: e.Value = RomUtil.BoolToSize(Project.Data.GetSnesApi().GetXFlag(row)); break; case 12: e.Value = Project.Data.GetCommentText(Project.Data.ConvertPCtoSnes(row)); break; } }
private void table_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) { int row = e.RowIndex + ViewOffset, snes = Project.Data.ConvertPCtoSnes(row); if (row >= Project.Data.GetRomSize()) { return; } bool editing = table.IsCurrentCellInEditMode && e.ColumnIndex == SelectedColumn, samerow = row == SelectedOffset; int ia = Project.Data.GetIntermediateAddressOrPointer(row, true); switch (ColumnName(e.ColumnIndex)) { case "label": var label = Project.Data.GetLabelName(snes); if (label == "" && (Project.Data.GetInOutPoint(row) & Data.InOutPoint.InPoint) == Data.InOutPoint.InPoint) { label = Project.Data.GetLabelName(snes, true); } e.Value = label; break; case "pc": e.Value = Util.NumberToBaseString(Project.Data.ConvertPCtoSnes(row), Util.NumberBase.Hexadecimal, 6); break; case "base": int baddr = editing ? Project.Data.GetBaseAddr(row) : Project.Data.CalculateBaseAddr(row); e.Value = baddr > 0 ? Util.NumberToBaseString(baddr, Util.NumberBase.Hexadecimal, 6) : ""; break; case "char": e.Value = (char)Project.Data.GetRomByte(row); break; case "hex": e.Value = Util.NumberToBaseString(Project.Data.GetRomByte(row), displayBase); break; case "points": e.Value = RomUtil.PointToString(Project.Data.GetInOutPoint(row)); break; case "instruction": var len = Project.Data.GetInstructionLength(row); e.Value = row + len <= Project.Data.GetRomSize() ? Project.Data.GetInstruction(row, true).Truncate(200) : ""; break; case "ia": if (Project.Data.GetIndirectAddr(row) > 0 && (ia < 0 || (editing && samerow) || samerow)) { ia = Project.Data.GetIndirectAddr(row); } e.Value = ia >= 0 ? Util.NumberToBaseString(ia, Util.NumberBase.Hexadecimal, 6) : ""; break; case "flag": e.Value = Util.GetEnumDescription(Project.Data.GetFlag(row)); break; case "db": e.Value = Util.NumberToBaseString(Project.Data.GetDataBank(row), Util.NumberBase.Hexadecimal, 2); break; case "dp": e.Value = Util.NumberToBaseString(Project.Data.GetDirectPage(row), Util.NumberBase.Hexadecimal, 4); break; case "m": e.Value = RomUtil.BoolToSize(Project.Data.GetMFlag(row)); break; case "x": e.Value = RomUtil.BoolToSize(Project.Data.GetXFlag(row)); break; case "constant": e.Value = Project.Data.GetFlag(row) != Data.FlagType.Operand ? Util.GetEnumDescription(Project.Data.GetConstantType(row)).Truncate(1) : "-"; break; case "comment": e.Value = Project.Data.GetComment(Project.Data.ConvertPCtoSnes(row)); if (e.Value == "" && ia >= 0 && Project.Data.GetComment(ia) != "" && ((!editing && !samerow) || !samerow)) { e.Value = Project.Data.GetComment(ia); } break; } }