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 + "'"); }
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; }
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); }
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); }
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; }
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(); }
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); }
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; } } }
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; }
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]; } }
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]; } }
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 + "'"); }
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; } } } }
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(); }
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; } }