/[RomCheater]/trunk/RomCheater/Docking/MemorySearch/SearchPatcher.cs
ViewVC logotype

Contents of /trunk/RomCheater/Docking/MemorySearch/SearchPatcher.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 243 - (show annotations) (download)
Sun Jun 3 13:21:51 2012 UTC (8 years, 5 months ago) by william
File size: 6176 byte(s)

1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using RomCheater.Docking.MemorySearch;
9 using System.Diagnostics;
10 using RomCheater.Logging;
11 using Sojaner.MemoryScanner.MemoryProviers;
12 using RomCheater.PluginFramework.Interfaces;
13
14
15 namespace RomCheater.Docking.MemorySearch
16 {
17 public partial class SearchPatcher : Form,
18 IAcceptsPlugin<IConfigPlugin>,
19 IAcceptsProcess<Process>,
20 IAcceptsProcessAndConfig
21 {
22 #region IAcceptsProcess<Process> Members
23 public Process AcceptedProcess { get; set; }
24 #endregion
25 #region IAcceptsPlugin<IConfigPlugin> Members
26 public IConfigPlugin AcceptedPlugin { get; set; }
27 #endregion
28 //PCSX2MemoryProvider provider;
29 SearchDataTypes DataType;
30 bool Unsigned = false;
31 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address)
32 {
33 InitializeComponent();
34 this.AcceptedPlugin = pconfig.AcceptedPlugin;
35 this.AcceptedProcess = pconfig.AcceptedProcess;
36 txtAddress.Text = string.Format("0x{0:x8}", Address);
37 }
38 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, byte Value)
39 : this(pconfig, Address)
40 {
41 Unsigned = true;
42 DataType = SearchDataTypes._8bits;
43 txtValue.CreateTypeSize<byte>();
44 txtValue.Text = string.Format("0x{0:x2}", Value);
45 }
46 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, sbyte Value)
47 : this(pconfig, Address)
48 {
49 DataType = SearchDataTypes._8bits;
50 txtValue.CreateTypeSize<sbyte>();
51 txtValue.Text = string.Format("0x{0:x2}", Value);
52 }
53 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, ushort Value)
54 : this(pconfig, Address)
55 {
56 Unsigned = true;
57 DataType = SearchDataTypes._16bits;
58 txtValue.CreateTypeSize<ushort>();
59 txtValue.Text = string.Format("0x{0:x4}", Value);
60 }
61 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, short Value)
62 : this(pconfig, Address)
63 {
64 DataType = SearchDataTypes._16bits;
65 txtValue.CreateTypeSize<short>();
66 txtValue.Text = string.Format("0x{0:x4}", Value);
67 }
68 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, uint Value)
69 : this(pconfig, Address)
70 {
71 Unsigned = true;
72 DataType = SearchDataTypes._32bits;
73 txtValue.CreateTypeSize<uint>();
74 txtValue.Text = string.Format("0x{0:x8}", Value);
75 }
76 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, int Value)
77 : this(pconfig, Address)
78 {
79 DataType = SearchDataTypes._32bits;
80 txtValue.CreateTypeSize<int>();
81 txtValue.Text = string.Format("0x{0:x8}", Value);
82 }
83 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, ulong Value)
84 : this(pconfig, Address)
85 {
86 Unsigned = true;
87 DataType = SearchDataTypes._64bits;
88 txtValue.CreateTypeSize<ulong>();
89 txtValue.Text = string.Format("0x{0:x16}", Value);
90 }
91 public SearchPatcher(IAcceptsProcessAndConfig pconfig, uint Address, long Value)
92 : this(pconfig, Address)
93 {
94 DataType = SearchDataTypes._64bits;
95 txtValue.CreateTypeSize<long>();
96 txtValue.Text = string.Format("0x{0:x16}", Value);
97 }
98 private void SearchPatcher_Load(object sender, EventArgs e)
99 {
100 txtAddress.ReadOnly = true;
101 txtValue.ReadOnly = false;
102 }
103 private void btnCancel_Click(object sender, EventArgs e)
104 {
105 this.Close();
106 }
107 private void btnOK_Click(object sender, EventArgs e)
108 {
109 uint Address = txtAddress.ToUInt32();
110
111 GenericMemoryProvider provider = new GenericMemoryProvider((IAcceptsProcessAndConfig)this);
112 switch (DataType)
113 {
114 case SearchDataTypes._8bits:
115 if (Unsigned) { provider.PatchMemory(Address, txtValue.ToByte()); }
116 else { provider.PatchMemory(Address, txtValue.ToSByte()); }
117 break;
118 case SearchDataTypes._16bits:
119 if (Unsigned) { provider.PatchMemory(Address, txtValue.ToUInt16()); }
120 else { provider.PatchMemory(Address, txtValue.ToInt16()); }
121 break;
122 case SearchDataTypes._32bits:
123 if (Unsigned) { provider.PatchMemory(Address, txtValue.ToUInt32()); }
124 else { provider.PatchMemory(Address, txtValue.ToInt32()); }
125 break;
126 case SearchDataTypes._64bits:
127 if (Unsigned) { provider.PatchMemory(Address, txtValue.ToUInt64()); }
128 else { provider.PatchMemory(Address, txtValue.ToInt64()); }
129 break;
130 }
131 this.Close();
132 }
133
134 private void CopyToClipboard(string data)
135 {
136 Clipboard.SetData(DataFormats.Text, data);
137 }
138
139 private void btnCopyAddressToClipboard_Click(object sender, EventArgs e)
140 {
141 this.CopyToClipboard(txtAddress.Text);
142 }
143
144 private void btnCopyvaluetoClipboard_Click(object sender, EventArgs e)
145 {
146 this.CopyToClipboard(txtValue.Text);
147 }
148
149 private void SearchPatcher_KeyDown(object sender, KeyEventArgs e)
150 {
151 if (e.KeyCode == Keys.Enter) btnOK.PerformClick();
152 }
153 }
154 }

  ViewVC Help
Powered by ViewVC 1.1.22