Exemple #1
0
        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;
            }
        }