Parent Directory
|
Revision Log
|
Patch
--- trunk/RomCheater/Docking/UI/UIMemoryViewer.cs 2012/05/31 08:38:16 202 +++ trunk/RomCheater/Docking/UI/UIMemoryViewer.cs 2012/06/02 10:52:06 216 @@ -43,7 +43,21 @@ txtAddresses.MouseWheel += new MouseEventHandler(txtAddresses_MouseWheel); txtData.MouseWheel += new MouseEventHandler(txtData_MouseWheel); - } + } + + private void GetFirstNonZeroByte() + { + if (!DesignMode) + { + Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader(); + reader.ReadProcess = this.AcceptedProcess; + reader.OpenProcess(); + uint addr = 0; + reader.ReadFirstNonZeroByte(MemoryStart, MemorySize, out addr); + GotoAddress(addr); + } + } + #region IProcessConfig Members private Process _AcceptedProcess; public Process AcceptedProcess @@ -54,6 +68,8 @@ _AcceptedProcess = value; update_timer.Enabled = (value != null); UpdateEnabled = update_timer.Enabled; + if (value != null) + GetFirstNonZeroByte(); } } #endregion @@ -61,8 +77,8 @@ public IConfigPlugin AcceptedPlugin { get; set; } #endregion #region IAcceptsMemoryRange members - private uint MemoryStart { get { return 0; } } - private uint MemorySize { get { return int.MaxValue; } } + public uint MemoryStart { get { return 0; } } + public uint MemorySize { get { return int.MaxValue; } } #endregion public void GotoTop() { this.CURRENT_TOP_ADDR = 0; } public void GotoBottom() { uint size = MemorySize; this.CURRENT_TOP_ADDR = (uint)((size - 1) - max_ram_view); } @@ -104,7 +120,7 @@ uint CURRENT_TOP_ADDR { get { return _CURRENT_TOP_ADDR; } - set { _CURRENT_TOP_ADDR = value; } + set { txthexGoto.Value = _CURRENT_TOP_ADDR = value; } } //uint CURRENT_BOITTOM_ADDR() { return CURRENT_TOP_ADDR + max_ram_view; } private void UpdateMaxRamView() @@ -131,10 +147,10 @@ editor.ShowDialog(); if (editor.BytesEdited) { - DynamicByteProvider _DynamicByteProvider = new DynamicByteProvider(editor.AsBytes); - txtData.ByteProvider = _DynamicByteProvider; - _DynamicByteProvider.Changed += new EventHandler(HexResourceViewerBytes_Changed); - this.WriteCurrentBytes(); + //DynamicByteProvider _DynamicByteProvider = new DynamicByteProvider(editor.AsBytes); + //txtData.ByteProvider = _DynamicByteProvider; + //_DynamicByteProvider.Changed += new EventHandler(HexResourceViewerBytes_Changed); + this.WriteCurrentBytes(this.CURRENT_TOP_ADDR, editor.AsBytes); } this.UpdateEnabled = reenable; } @@ -252,18 +268,18 @@ } catch (Exception ex) { logger.Error.WriteLine("{0}.UpdateMemroyView():{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString()); } } - private void HexResourceViewerBytes_Changed(object sender, System.EventArgs e) - { - this.WriteCurrentBytes(); - } - private void WriteCurrentBytes() + //private void HexResourceViewerBytes_Changed(object sender, System.EventArgs e) + //{ + // this.WriteCurrentBytes(); + //} + private void WriteCurrentBytes(uint start_address, byte[] data) { try { if (AcceptedProcess == null) { return; } if (AcceptedPlugin == null) { return; } // Byte changed - byte[] data = (txtData.ByteProvider as DynamicByteProvider).Bytes.ToArray(); + //byte[] data = (txtData.ByteProvider as DynamicByteProvider).Bytes.ToArray(); Sojaner.MemoryScanner.ProcessMemoryReader reader = new Sojaner.MemoryScanner.ProcessMemoryReader(); @@ -271,11 +287,11 @@ reader.OpenProcess(); int bytesReadSize; - for (int i = 0; i < data.Length; i += sizeof(uint)) + for (int i = 0; i < data.Length; i ++) { - uint addr = (uint)(this.CURRENT_TOP_ADDR + i); - uint data_to_write = BitConverter.ToUInt32(data, i); - reader.WriteProcessMemory((UIntPtr)addr, data, out bytesReadSize); + uint addr = (uint)(start_address + i); + byte data_to_write = data[i]; + reader.WriteProcessMemory((UIntPtr)addr, data_to_write, out bytesReadSize); } } catch (Exception ex) { logger.Error.WriteLine("{0}.WriteCurrentBytes():{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString()); } @@ -292,7 +308,7 @@ //this.Logger.LogDebugMessage(string.Format("RunWorkerCompeleted() -> Memory Size: {0}0x{2:X8}{1}", "{", "}", RamData.Length)); DynamicByteProvider _DynamicByteProvider = new DynamicByteProvider(RamData); txtData.ByteProvider = _DynamicByteProvider; - _DynamicByteProvider.Changed += new EventHandler(HexResourceViewerBytes_Changed); + //_DynamicByteProvider.Changed += new EventHandler(HexResourceViewerBytes_Changed); } catch (ObjectDisposedException) { } // ignore errors aobut disposed objects (usually only happens when the parent closes) catch (Exception ex) { logger.Error.WriteLine("{0}.ResultsUpdateWorkerThread_RunWorkerCompleted():{1}{2}", this.GetType().Name, System.Environment.NewLine, ex.ToString()); } @@ -308,7 +324,7 @@ uint ORIGINAL_ADDR = this.CURRENT_TOP_ADDR; ////if (e.Type == ScrollEventType.EndScroll) return; - uint size = max_ram_view; + //uint size = max_ram_view; bool haveModifier = false; switch (e.Modifiers) @@ -320,7 +336,7 @@ this.CURRENT_TOP_ADDR = 0; //NonHandledKeysAreBeingPressed = false; break; case Keys.End: - this.CURRENT_TOP_ADDR = (uint)((size - 1) - max_ram_view); //NonHandledKeysAreBeingPressed = false; + this.CURRENT_TOP_ADDR = (uint)((MemorySize - 1) - max_ram_view); //NonHandledKeysAreBeingPressed = false; break; default: //NonHandledKeysAreBeingPressed = true; @@ -334,13 +350,27 @@ switch (e.KeyCode) { case Keys.Up: - this.CURRENT_TOP_ADDR -= (uint)small_scroll_change; //NonHandledKeysAreBeingPressed = false; + if (this.CURRENT_TOP_ADDR == 0 && (this.CURRENT_TOP_ADDR - small_scroll_change > this.CURRENT_TOP_ADDR)) + { + this.CURRENT_TOP_ADDR = ORIGINAL_ADDR; + } + else + { + this.CURRENT_TOP_ADDR -= (uint)small_scroll_change; //NonHandledKeysAreBeingPressed = false; + } break; case Keys.Down: this.CURRENT_TOP_ADDR += (uint)small_scroll_change; //NonHandledKeysAreBeingPressed = false; break; case Keys.PageUp: - this.CURRENT_TOP_ADDR -= (uint)(large_scroll_change); //NonHandledKeysAreBeingPressed = false; + if (this.CURRENT_TOP_ADDR == 0 && (this.CURRENT_TOP_ADDR - large_scroll_change > this.CURRENT_TOP_ADDR)) + { + this.CURRENT_TOP_ADDR = ORIGINAL_ADDR; + } + else + { + this.CURRENT_TOP_ADDR -= (uint)(large_scroll_change); //NonHandledKeysAreBeingPressed = false; + } break; case Keys.PageDown: this.CURRENT_TOP_ADDR += (uint)(large_scroll_change); //NonHandledKeysAreBeingPressed = false; @@ -352,8 +382,8 @@ } if (this.CURRENT_TOP_ADDR < MemoryStart) this.CURRENT_TOP_ADDR = MemoryStart; //if (this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view; - if (this.CURRENT_TOP_ADDR + max_ram_view >= MemorySize) this.CURRENT_TOP_ADDR = (size - 1); - + if (this.CURRENT_TOP_ADDR + max_ram_view >= MemorySize) this.CURRENT_TOP_ADDR = (MemorySize - max_ram_view); + //this.UpdateEnabled = reenable; } @@ -410,7 +440,7 @@ this.UpdateMaxRamView(); uint ORIGINAL_ADDR = this.CURRENT_TOP_ADDR; - uint size = MemorySize; + //uint size = MemorySize; if (e.Type == ScrollEventType.EndScroll) return; switch (e.Type) @@ -452,9 +482,10 @@ if (this.CURRENT_TOP_ADDR < 0) this.CURRENT_TOP_ADDR = 0; //if (this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = VTLB_VADDR_SIZE - max_ram_view; //if (this.CURRENT_TOP_ADDR < 0 || this.CURRENT_TOP_ADDR >= VTLB_VADDR_SIZE) this.CURRENT_TOP_ADDR = ORIGINAL_ADDR; - if (this.CURRENT_TOP_ADDR + max_ram_view >= MemorySize) this.CURRENT_TOP_ADDR = (size - 1) - max_ram_view; + if (this.CURRENT_TOP_ADDR + max_ram_view >= MemorySize) this.CURRENT_TOP_ADDR = MemorySize - max_ram_view; //this.UpdateEnabled = reenable; //isScrolling = false; } + } }
ViewVC Help | |
Powered by ViewVC 1.1.22 |