Пример #1
0
        private void SaveButton_Click(object sender, EventArgs e)
        {
            SaveManager sm = new SaveManager();

            sm.Init();
            // Get a list of all saved addresses
            foreach (DataGridViewRow row in ValuesGrid.Rows)
            {
                if (row.Cells[1].Value is GateSharkCode)
                {
                    // @TODO This will be different.
                }
                else if (row.Cells[1].Value is GateShark)
                {
                    sm.gscodes.Add((GateShark)row.Cells[1].Value);
                }
                else
                {
                    sm.codes.Add(new SaveCode(DataTypeExactTool.GetValue(row.Cells[3].Value.ToString()), row.Cells[1].Value.ToString()));
                }
            }

            // Set the values
            String[] parts_ = Processes.Text.Split('|');
            if (parts_.Length < 2)
            {
                return;
            }
            String game = Config.ConfigFileDirectory + Path.DirectorySeparatorChar + parts_[1] + @".xml";

            sm.titleId = parts_[1];
            SaveManager.SaveToXml(game, sm);
            MessageBox.Show(@"Saved selected addresses to '" + game + "'");
        }
Пример #2
0
 private void MainForm_Load(object sender, EventArgs e)
 {
     ComboSearchType.Items.AddRange(SearchTypeInitialTool.GetValues());
     ComboDataType.Items.AddRange(DataTypeExactTool.GetValues());
     ValuesGridTypeColumn.Items.AddRange(DataTypeExactTool.GetValues());
     this.ComboSearchType.SelectedIndex = 0;
     this.ComboDataType.SelectedIndex   = 2;
 }
Пример #3
0
        internal void SetMemory(int RowIndex)
        {
            string        TextAddress = (string)ValuesGrid[1, RowIndex].Value;
            string        valString   = (string)ValuesGrid[3, RowIndex].Value;
            DataTypeExact type        = DataTypeExactTool.GetValue((string)ValuesGrid[4, RowIndex].Value);

            SetMemory(TextAddress, valString, type, RowIndex);
        }
Пример #4
0
        private void RefreshMemory(int RowIndex)
        {
            ThreadEventDispatcher.CurrentSelectedProcess = Processes.Text.Split('|')[0];
            MemoryDispatch MemoryDispatch = new MemoryDispatch();

            MemoryDispatch.Row         = RowIndex;
            MemoryDispatch.TextAddress = (string)ValuesGrid[1, RowIndex].Value;
            MemoryDispatch.Type        = DataTypeExactTool.GetValue((string)ValuesGrid[4, RowIndex].Value);
            ThreadEventDispatcher.RefreshValueAddresses.Enqueue(MemoryDispatch);
        }
Пример #5
0
 private void MemoryViewer_Load(object sender, EventArgs e)
 {
     hexProvider = new HexboxProvider(rangeBothDirections * 2);
     hexProvider.OnByteChanged       += HexProvider_OnByteChanged;
     hexEditBox.ByteProvider          = hexProvider;
     hexEditBox.LineInfoOffset        = startingAddress;
     hexEditBox.GroupSeparatorVisible = false;
     comboSelType.Items.AddRange(DataTypeExactTool.GetValues());
     comboSelType.SelectedIndex = 0;
 }
Пример #6
0
 private void RefreshDataGrid()
 {
     wantedAddresses.Rows.Clear();
     ResultingCodes.ForEach((sc) =>
     {
         int RowIndex = wantedAddresses.Rows.Add();
         wantedAddresses[0, RowIndex].Value = sc.address;
         wantedAddresses[1, RowIndex].Value = sc.title;
         wantedAddresses[2, RowIndex].Value = DataTypeExactTool.GetKey(sc.type);
     });
     wantedAddresses.Refresh();
 }
Пример #7
0
        private void SetMemory(int RowIndex)
        {
            string TextAddress = (string)ValuesGrid[1, RowIndex].Value;

            MemoryDispatch MemoryDispatch = new MemoryDispatch();

            MemoryDispatch.Row         = RowIndex;
            MemoryDispatch.TextAddress = TextAddress;
            MemoryDispatch.Type        = DataTypeExactTool.GetValue((string)ValuesGrid[3, RowIndex].Value);
            MemoryDispatch.Value       = GetByteArrayForDataType(MemoryDispatch.Type, (string)ValuesGrid[2, RowIndex].Value);

            ThreadEventDispatcher.WriteAddress.Enqueue(MemoryDispatch);
        }
Пример #8
0
        private void LoadButton_Click(object sender, EventArgs e)
        {
            String[] parts_ = Processes.Text.Split('|');
            if (parts_.Length < 2)
            {
                return;
            }

            SaveManager sm = SaveManager.LoadFromJson(parts_[1]);

            if (sm.TitleId != parts_[1])
            {
                MessageBox.Show(@"Filename/TitleID Mismatch.");
            }
            else
            {
                if (sm.LastUsedStartAddress != 0 && sm.LastUsedRangeSize != 0)
                {
                    MemoryRange.SelectedIndex = MemoryRange.Items.Count - 1; //last index should always be Custom
                    MemoryStart.Text          = sm.LastUsedStartAddress.ToString("x2").PadLeft(8, '0');
                    MemorySize.Text           = sm.LastUsedRangeSize.ToString("x2").PadLeft(8, '0');
                }
                foreach (SaveCode code in sm.Codes)
                {
                    int rIdx = GetIndexOfAddress(code.address);
                    if (rIdx == -1)
                    {
                        rIdx = ValuesGrid.Rows.Add();
                    }

                    ValuesGrid[0, rIdx].Value = null;
                    ValuesGrid[4, rIdx].Value = DataTypeExactTool.GetKey(code.type);

                    ValuesGrid[2, rIdx].Value = code.title;
                    ValuesGrid[1, rIdx].Value = code.address;
                    RefreshMemory(rIdx);
                }
                // Read the memory
            }
            foreach (GateShark code in sm.GateSharkCodes)
            {
                if (GetIndexOfAddress(code.ToString()) == -1)
                {
                    int RowIndex = ValuesGrid.Rows.Add();
                    ValuesGrid[0, RowIndex].Value = null;
                    ValuesGrid[3, RowIndex].Value = DataTypeExact.Raw;
                    ValuesGrid[1, RowIndex].Value = code;
                }
            }
        }
Пример #9
0
        private void SearchButton_Click(object sender, EventArgs e)
        {
            MemoryStart.Text = MemoryStart.Text.PadLeft(8, '0');
            MemorySize.Text  = MemorySize.Text.PadLeft(8, '0');
            uint StartAddress = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(MemoryStart.Text).Reverse().ToArray(), 0);
            uint EndAddress   = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(TextEndAddress.Text).Reverse().ToArray(), 0);

            if (!MemoryRange.Text.Equals("All") && (!IsValidMemoryAddress(StartAddress) || !IsValidMemoryAddress(EndAddress)))
            {
                NTRConnection.SetCurrentOperationText = "Invalid start address or size!";
                return;
            }
            SearchButton.Enabled = ControlEnabledSearchButton = ControlEnabledDataType = ControlEnabledMemoryRange = false;
            ThreadEventDispatcher.CurrentSelectedDataType   = DataTypeExactTool.GetValue(ComboDataType.SelectedItem.ToString());
            ThreadEventDispatcher.CurrentSelectedSearchType = SearchTypeBaseTool.GetValue(ComboSearchType.SelectedItem.ToString());
            ThreadEventDispatcher.CurrentMemoryRange        = this.MemoryRange.Text;
            ThreadEventDispatcher.DispatchSearch            = true;
        }
Пример #10
0
        private void ComboSearchType_SelectedValueChanged(object sender, EventArgs e)
        {
            string CurrentDataType = ComboDataType.SelectedItem == null ? null : ComboDataType.SelectedItem.ToString();

            switch (SearchTypeBaseTool.GetValue(ComboSearchType.SelectedItem.ToString()))
            {
            case SearchTypeBase.Exact:
                ComboDataType.Items.Clear();
                ComboDataType.Items.AddRange(DataTypeExactTool.GetValues());
                SearchValue.Width    = 286;
                SearchValue2.Visible = LabelDash.Visible = false;
                break;

            case SearchTypeBase.Range:
                ComboDataType.Items.Clear();
                ComboDataType.Items.AddRange(DataTypeNumericTool.GetValues());
                SearchValue.Width    = 136;
                SearchValue2.Visible = LabelDash.Visible = true;
                break;

            case SearchTypeBase.IncreasedBy:
            case SearchTypeBase.DecreasedBy:
            case SearchTypeBase.Increased:
            case SearchTypeBase.Decreased:
            case SearchTypeBase.Unknown:
                ComboDataType.Items.Clear();
                ComboDataType.Items.AddRange(DataTypeNumericTool.GetValues());
                SearchValue.Width    = 286;
                SearchValue2.Visible = LabelDash.Visible = false;
                break;
            }
            if (CurrentDataType != null && ComboDataType.Items.Contains(CurrentDataType))
            {
                ComboDataType.SelectedIndex = ComboDataType.Items.IndexOf(CurrentDataType);
                ComboDataType.SelectedItem  = ComboDataType.SelectedValue = CurrentDataType;
            }
            else
            {
                ComboDataType.SelectedIndex = 0;
                ComboDataType.SelectedItem  = ComboDataType.SelectedValue = ComboDataType.Items[0];
            }
        }
Пример #11
0
        private void ComboDataType_SelectedValueChanged(object sender, EventArgs e)
        {
            string CurrentSearchType = ComboSearchType.SelectedItem == null ? null : ComboSearchType.SelectedItem.ToString();

            if (LastSearchCriteria == null)
            {
                ComboSearchType.Items.Clear();
                ComboSearchType.Items.AddRange(SearchTypeInitialTool.GetValues());
            }
            else
            {
                switch (DataTypeExactTool.GetValue(ComboDataType.SelectedItem.ToString()))
                {
                case DataTypeExact.Bytes1:
                case DataTypeExact.Bytes2:
                case DataTypeExact.Bytes4:
                case DataTypeExact.Bytes8:
                case DataTypeExact.Float:
                case DataTypeExact.Double:
                    ComboSearchType.Items.Clear();
                    ComboSearchType.Items.AddRange(SearchTypeNumericTool.GetValues());
                    break;

                case DataTypeExact.Raw:
                case DataTypeExact.Text:
                    ComboSearchType.Items.Clear();
                    ComboSearchType.Items.AddRange(SearchTypeTextTool.GetValues());
                    break;
                }
            }
            if (CurrentSearchType != null && ComboSearchType.Items.Contains(CurrentSearchType))
            {
                ComboSearchType.SelectedIndex = ComboSearchType.Items.IndexOf(CurrentSearchType);
                ComboSearchType.SelectedItem  = ComboSearchType.SelectedValue = CurrentSearchType;
            }
            else
            {
                ComboSearchType.SelectedIndex = 0;
                ComboSearchType.SelectedItem  = ComboSearchType.SelectedValue = ComboSearchType.Items[0];
            }
        }
Пример #12
0
        private void SaveButton_Click(object sender, EventArgs e)
        {
            SaveManager sm = new SaveManager();

            try
            {
                sm.LastUsedStartAddress = uint.Parse(MemoryStart.Text, NumberStyles.HexNumber);
                sm.LastUsedRangeSize    = uint.Parse(MemorySize.Text, NumberStyles.HexNumber);
            }
            catch
            {
                sm.LastUsedStartAddress = sm.LastUsedRangeSize = 0;
            }

            // Get a list of all saved addresses
            foreach (DataGridViewRow row in ValuesGrid.Rows)
            {
                if (row.Cells[1].Value is GateSharkCode)
                {
                    // @TODO This will be different.
                }
                else if (row.Cells[1].Value is GateShark)
                {
                    sm.GateSharkCodes.Add((GateShark)row.Cells[1].Value);
                }
                else
                {
                    sm.Codes.Add(new SaveCode(DataTypeExactTool.GetValue(row.Cells[4].Value.ToString()), row.Cells[1].Value.ToString(), (row.Cells[2].Value != null ? row.Cells[2].Value.ToString() : "")));
                }
            }

            // Set the values
            String[] parts_ = Processes.Text.Split('|');
            if (parts_.Length < 2)
            {
                return;
            }
            sm.TitleId = parts_[1];
            sm.SaveToJson();
            MessageBox.Show(@"Saved selected addresses to '" + sm.Filename + "'");
        }
Пример #13
0
        private void LoadButton_Click(object sender, EventArgs e)
        {
            String[] parts_ = Processes.Text.Split('|');
            if (parts_.Length < 2)
            {
                return;
            }
            String      game = Config.ConfigFileDirectory + Path.DirectorySeparatorChar + parts_[1] + @".xml";
            SaveManager sm   = SaveManager.LoadFromXml(game);

            if (sm.titleId != parts_[1])
            {
                MessageBox.Show(@"Filename/TitleID Mismatch.");
            }
            else
            {
                foreach (SaveCode code in sm.codes)
                {
                    if (!IsInValues(code.address))
                    {
                        int RowIndex = ValuesGrid.Rows.Add();
                        ValuesGrid[0, RowIndex].Value = null;
                        ValuesGrid[3, RowIndex].Value = DataTypeExactTool.GetKey(code.type);
                        ValuesGrid[1, RowIndex].Value = code.address;

                        // Read the memory
                        RefreshMemory(RowIndex);
                    }
                }
                foreach (GateShark code in sm.gscodes)
                {
                    if (!IsInValues(code.ToString()))
                    {
                        int RowIndex = ValuesGrid.Rows.Add();
                        ValuesGrid[0, RowIndex].Value = null;
                        ValuesGrid[3, RowIndex].Value = DataTypeExact.Raw;
                        ValuesGrid[1, RowIndex].Value = code;
                    }
                }
            }
        }
Пример #14
0
        private void btnAddSelected_Click(object sender, EventArgs e)
        {
            DataTypeExact addrType = DataTypeExactTool.GetValue(comboSelType.Text);

            if (addrType == DataTypeExact.INVALID)
            {
                return;
            }
            String addrStr            = selectedAddress.ToString("x2").PadLeft(8, '0');
            int    existingAddressIdx = ResultingCodes.FindIndex(c => c.address == addrStr);

            if (existingAddressIdx != -1)
            {
                ResultingCodes[existingAddressIdx] = new SaveCode(addrType, addrStr, txtSelTitle.Text);
            }
            else
            {
                ResultingCodes.Add(new SaveCode(DataTypeExactTool.GetValue(comboSelType.Text), addrStr, txtSelTitle.Text));
            }
            RefreshDataGrid();
        }
Пример #15
0
        private void ValuesGridContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            switch (e.ClickedItem.Name)
            {
            case "ValuesGridCopyResolvedAddress":
                foreach (DataGridViewCell Cell in ValuesGrid.SelectedCells)
                {
                    Clipboard.SetText(Cell.OwningRow.Cells[1].ToolTipText);
                    break;
                }
                break;

            case "ValuesGridPointerSearch":
                foreach (DataGridViewCell Cell in ValuesGrid.SelectedCells)
                {
                    PointerSearchRow = Cell.OwningRow.Index;
                    ThreadEventDispatcher.CurrentSelectedProcess = Processes.Text.Split('|')[0];
                    ThreadEventDispatcher.DispatchPointerSearch  = (string)Cell.OwningRow.Cells[1].Value;
                    break;
                }
                break;

            case "ValuesGridDeleteItem":
                foreach (DataGridViewCell Cell in ValuesGrid.SelectedCells)
                {
                    ValuesGrid.Rows.Remove(Cell.OwningRow);
                }
                break;

            case "ValuesGridAddItem":
                ValuesGrid.Rows.Add();
                break;

            case "ValuesGridConvertCode":
                foreach (DataGridViewCell Cell in ValuesGrid.SelectedCells)
                {
                    Cell.OwningRow.Cells[1].Value = ConvertCode((string)Cell.OwningRow.Cells[1].Value);
                }
                break;

            case "ValuesGridRefreshItem":
                foreach (DataGridViewCell Cell in ValuesGrid.SelectedCells)
                {
                    RefreshMemory(Cell.RowIndex);
                }
                break;

            case "ValuesGridShowMemoryView":
                if (ValuesGrid.SelectedCells.Count > 0)
                {
                    MemoryViewer viewer = new MemoryViewer(ThreadEventDispatcher, ValuesGrid.SelectedCells[0].OwningRow.Cells[1].Value.ToString());
                    viewer.OnLiveMemoryEdit += (uint addr, byte val) => SetMemory(addr.ToString("x2").PadLeft(8, '0'), val.ToString(), DataTypeExact.Bytes1, -1);

                    viewer.ShowDialog();
                    viewer.ResultingCodes.ForEach(newCode =>
                    {
                        int RowIndex = ValuesGrid.Rows.Add();
                        ValuesGrid[0, RowIndex].Value = null;
                        ValuesGrid[4, RowIndex].Value = DataTypeExactTool.GetKey(newCode.type);
                        ValuesGrid[1, RowIndex].Value = newCode.address;
                        ValuesGrid[2, RowIndex].Value = newCode.title;
                        RefreshMemory(RowIndex);
                    });

                    /*uint s =  0x09070950+2;
                     * uint en = 0x090709e2;
                     * for(uint i = s; i < en; i = i + 4)
                     * {
                     *  SaveCode newCode = new SaveCode(DataTypeExact.Bytes2, i.ToString("x2").PadLeft(8,'0'), "");
                     *  int RowIndex = ValuesGrid.Rows.Add();
                     *  ValuesGrid[0, RowIndex].Value = null;
                     *  ValuesGrid[4, RowIndex].Value = DataTypeExactTool.GetKey(newCode.type);
                     *  ValuesGrid[1, RowIndex].Value = newCode.address;
                     *  ValuesGrid[2, RowIndex].Value = newCode.title;
                     * }
                     * ;*/
                }
                break;
            }
        }