diff --git a/BizHawk.Client.Common/tools/Cheat.cs b/BizHawk.Client.Common/tools/Cheat.cs
index 5f42673c7f..8ef405f03a 100644
--- a/BizHawk.Client.Common/tools/Cheat.cs
+++ b/BizHawk.Client.Common/tools/Cheat.cs
@@ -62,7 +62,7 @@ namespace BizHawk.Client.Common
get { return !IsSeparator && _enabled; }
}
- public int? Address
+ public long? Address
{
get { return _watch.Address; }
}
@@ -237,7 +237,7 @@ namespace BizHawk.Client.Common
}
}
- public bool Contains(int addr)
+ public bool Contains(long addr)
{
switch (_watch.Size)
{
@@ -254,7 +254,7 @@ namespace BizHawk.Client.Common
}
}
- public byte? GetByteVal(int addr)
+ public byte? GetByteVal(long addr)
{
if (!Contains(addr))
{
@@ -366,7 +366,7 @@ namespace BizHawk.Client.Common
public override int GetHashCode()
{
- return this.Domain.GetHashCode() + this.Address ?? 0;
+ return this.Domain.GetHashCode() + (int)(this.Address ?? 0);
}
public static bool operator ==(Cheat a, Cheat b)
diff --git a/BizHawk.Client.Common/tools/CheatList.cs b/BizHawk.Client.Common/tools/CheatList.cs
index 1d2e1ca92f..74f28a0c2b 100644
--- a/BizHawk.Client.Common/tools/CheatList.cs
+++ b/BizHawk.Client.Common/tools/CheatList.cs
@@ -64,7 +64,7 @@ namespace BizHawk.Client.Common
get { return _cheatList[index]; }
}
- public Cheat this[MemoryDomain domain, int address]
+ public Cheat this[MemoryDomain domain, long address]
{
get
{
@@ -194,7 +194,7 @@ namespace BizHawk.Client.Common
return _cheatList.Any(c => c == cheat);
}
- public bool Contains(MemoryDomain domain, int address)
+ public bool Contains(MemoryDomain domain, long address)
{
return _cheatList.Any(c => c.Domain == domain && c.Address == address);
}
@@ -249,7 +249,7 @@ namespace BizHawk.Client.Common
Changes = true;
}
- public bool IsActive(MemoryDomain domain, int address)
+ public bool IsActive(MemoryDomain domain, long address)
{
return _cheatList.Any(cheat =>
!cheat.IsSeparator &&
@@ -263,7 +263,7 @@ namespace BizHawk.Client.Common
/// But if the cheat is multi-byte, this will return just the cheat value for that specific byte
///
/// Returns null if address is not a part of a cheat, else returns the value of that specific byte only
- public byte? GetByteValue(MemoryDomain domain, int addr)
+ public byte? GetByteValue(MemoryDomain domain, long addr)
{
var activeCheat = _cheatList.FirstOrDefault(cheat => cheat.Contains(addr));
if (activeCheat == (Cheat)null)
@@ -281,7 +281,7 @@ namespace BizHawk.Client.Common
/// The starting address for which you will get the number of bytes
/// The number of bytes of the cheat to return
/// The value, or null if it can't resolve the address with a given cheat
- public int? GetCheatValue(MemoryDomain domain, int addr, Watch.WatchSize size)
+ public int? GetCheatValue(MemoryDomain domain, long addr, Watch.WatchSize size)
{
var activeCheat = _cheatList.FirstOrDefault(cheat => cheat.Contains(addr));
if (activeCheat == (Cheat)null)
diff --git a/BizHawk.Client.Common/tools/RamSearchEngine.cs b/BizHawk.Client.Common/tools/RamSearchEngine.cs
index 8eab9150b7..4e6332ca3e 100644
--- a/BizHawk.Client.Common/tools/RamSearchEngine.cs
+++ b/BizHawk.Client.Common/tools/RamSearchEngine.cs
@@ -48,7 +48,7 @@ namespace BizHawk.Client.Common
#region API
- public IEnumerable OutOfRangeAddress
+ public IEnumerable OutOfRangeAddress
{
get
{
@@ -198,7 +198,7 @@ namespace BizHawk.Client.Common
return before - _watchList.Count;
}
- public bool Preview(int address)
+ public bool Preview(long address)
{
IEnumerable listOfOne;
@@ -356,11 +356,11 @@ namespace BizHawk.Client.Common
_history.AddState(_watchList);
}
- var removeList = indices.Select(i => _watchList[i]);
+ var removeList = indices.Select(i => _watchList[i]); // This will fail after int.MaxValue but Ram Search fails on domains that large anyway
_watchList = _watchList.Except(removeList).ToList();
}
- public void AddRange(List addresses, bool append)
+ public void AddRange(List addresses, bool append)
{
if (!append)
{
@@ -874,7 +874,7 @@ namespace BizHawk.Client.Common
}
}
- private long GetValue(int addr)
+ private long GetValue(long addr)
{
//do not return sign extended variables from here.
switch (_settings.Size)
@@ -912,7 +912,7 @@ namespace BizHawk.Client.Common
public interface IMiniWatch
{
- int Address { get; }
+ long Address { get; }
long Previous { get; } //do not store sign extended variables in here.
void SetPreviousToCurrent(MemoryDomain domain, bool bigendian);
}
@@ -927,10 +927,10 @@ namespace BizHawk.Client.Common
private sealed class MiniByteWatch : IMiniWatch
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private byte _previous;
- public MiniByteWatch(MemoryDomain domain, int addr)
+ public MiniByteWatch(MemoryDomain domain, long addr)
{
Address = addr;
_previous = domain.PeekByte(Address % domain.Size);
@@ -949,10 +949,10 @@ namespace BizHawk.Client.Common
private sealed class MiniWordWatch : IMiniWatch
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private ushort _previous;
- public MiniWordWatch(MemoryDomain domain, int addr, bool bigEndian)
+ public MiniWordWatch(MemoryDomain domain, long addr, bool bigEndian)
{
Address = addr;
_previous = domain.PeekWord(Address % domain.Size, bigEndian);
@@ -971,10 +971,10 @@ namespace BizHawk.Client.Common
public sealed class MiniDWordWatch : IMiniWatch
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private uint _previous;
- public MiniDWordWatch(MemoryDomain domain, int addr, bool bigEndian)
+ public MiniDWordWatch(MemoryDomain domain, long addr, bool bigEndian)
{
Address = addr;
_previous = domain.PeekDWord(Address % domain.Size, bigEndian);
@@ -993,13 +993,13 @@ namespace BizHawk.Client.Common
private sealed class MiniByteWatchDetailed : IMiniWatch, IMiniWatchDetails
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private byte _previous;
private byte _prevFrame;
private int _changecount;
- public MiniByteWatchDetailed(MemoryDomain domain, int addr)
+ public MiniByteWatchDetailed(MemoryDomain domain, long addr)
{
Address = addr;
SetPreviousToCurrent(domain, false);
@@ -1054,13 +1054,13 @@ namespace BizHawk.Client.Common
private sealed class MiniWordWatchDetailed : IMiniWatch, IMiniWatchDetails
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private ushort _previous;
private ushort _prevFrame;
private int _changecount;
- public MiniWordWatchDetailed(MemoryDomain domain, int addr, bool bigEndian)
+ public MiniWordWatchDetailed(MemoryDomain domain, long addr, bool bigEndian)
{
Address = addr;
SetPreviousToCurrent(domain, bigEndian);
@@ -1114,13 +1114,13 @@ namespace BizHawk.Client.Common
public sealed class MiniDWordWatchDetailed : IMiniWatch, IMiniWatchDetails
{
- public int Address { get; private set; }
+ public long Address { get; private set; }
private uint _previous;
private uint _prevFrame;
private int _changecount;
- public MiniDWordWatchDetailed(MemoryDomain domain, int addr, bool bigEndian)
+ public MiniDWordWatchDetailed(MemoryDomain domain, long addr, bool bigEndian)
{
Address = addr;
SetPreviousToCurrent(domain, bigEndian);
diff --git a/BizHawk.Client.Common/tools/Watch.cs b/BizHawk.Client.Common/tools/Watch.cs
index c4aec68686..76e2b03eb7 100644
--- a/BizHawk.Client.Common/tools/Watch.cs
+++ b/BizHawk.Client.Common/tools/Watch.cs
@@ -42,7 +42,7 @@ namespace BizHawk.Client.Common
}
}
- protected int _address;
+ protected long _address;
protected MemoryDomain _domain;
protected DisplayType _type;
protected bool _bigEndian;
@@ -68,7 +68,7 @@ namespace BizHawk.Client.Common
public string DomainName { get { return _domain != null ? _domain.Name : string.Empty; } }
- public virtual int? Address { get { return _address; } }
+ public virtual long? Address { get { return _address; } }
public virtual string AddressString { get { return _address.ToString(AddressFormatStr); } }
@@ -213,7 +213,7 @@ namespace BizHawk.Client.Common
protected uint GetDWord()
{
- if (Global.CheatList.IsActive(_domain, _address))
+ if (Global.CheatList.IsActive(_domain, (int)_address))
{
return (uint)Global.CheatList.GetCheatValue(_domain, _address, WatchSize.DWord).Value;
}
@@ -263,7 +263,7 @@ namespace BizHawk.Client.Common
public string Notes { get { return _notes; } set { _notes = value; } }
- public static Watch GenerateWatch(MemoryDomain domain, int address, WatchSize size, DisplayType type, string notes, bool bigEndian)
+ public static Watch GenerateWatch(MemoryDomain domain, long address, WatchSize size, DisplayType type, string notes, bool bigEndian)
{
switch (size)
{
@@ -279,7 +279,7 @@ namespace BizHawk.Client.Common
}
}
- public static Watch GenerateWatch(MemoryDomain domain, int address, WatchSize size, DisplayType type, bool bigendian, long prev, int changecount)
+ public static Watch GenerateWatch(MemoryDomain domain, long address, WatchSize size, DisplayType type, bool bigendian, long prev, int changecount)
{
switch (size)
{
@@ -341,7 +341,7 @@ namespace BizHawk.Client.Common
public override int GetHashCode()
{
- return this.Domain.GetHashCode() + this.Address ?? 0;
+ return this.Domain.GetHashCode() + (int)(this.Address ?? 0);
}
public static bool operator ==(Watch a, Watch b)
@@ -384,7 +384,7 @@ namespace BizHawk.Client.Common
get { return new SeparatorWatch(); }
}
- public override int? Address
+ public override long? Address
{
get { return null; }
}
@@ -464,7 +464,7 @@ namespace BizHawk.Client.Common
private byte _previous;
private byte _value;
- public ByteWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ public ByteWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string notes)
{
_address = address;
_domain = domain;
@@ -481,14 +481,14 @@ namespace BizHawk.Client.Common
}
}
- public ByteWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, byte prev, int changeCount, string notes = null)
+ public ByteWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, byte prev, int changeCount, string notes = null)
: this(domain, address, type, bigEndian, notes)
{
_previous = prev;
_changecount = changeCount;
}
- public override int? Address
+ public override long? Address
{
get { return _address; }
}
@@ -692,7 +692,7 @@ namespace BizHawk.Client.Common
private ushort _previous;
private ushort _value;
- public WordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ public WordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string notes)
{
_domain = domain;
_address = address;
@@ -711,7 +711,7 @@ namespace BizHawk.Client.Common
}
}
- public WordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, ushort prev, int changeCount, string notes = null)
+ public WordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, ushort prev, int changeCount, string notes = null)
: this(domain, address, type, bigEndian, notes)
{
_previous = prev;
@@ -911,7 +911,7 @@ namespace BizHawk.Client.Common
private uint _value;
private uint _previous;
- public DWordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, string notes)
+ public DWordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string notes)
{
_domain = domain;
_address = address;
@@ -930,7 +930,7 @@ namespace BizHawk.Client.Common
}
}
- public DWordWatch(MemoryDomain domain, int address, DisplayType type, bool bigEndian, uint prev, int changeCount, string notes = null)
+ public DWordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, uint prev, int changeCount, string notes = null)
: this(domain, address, type, bigEndian, notes)
{
_previous = prev;
diff --git a/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs b/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
index ee99874e68..68ddd61a11 100644
--- a/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
+++ b/BizHawk.Client.EmuHawk/tools/Cheats/Cheats.cs
@@ -713,11 +713,11 @@ namespace BizHawk.Client.EmuHawk
if (selected.Select(x => x.Domain).Distinct().Count() > 1)
{
- ToolHelpers.ViewInHexEditor(selected[0].Domain, new List { (long)(selected.First().Address ?? 0) }, selected.First().Size); // int to long TODO: cheat address should be long
+ ToolHelpers.ViewInHexEditor(selected[0].Domain, new List { selected.First().Address ?? 0 }, selected.First().Size);
}
else
{
- ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ?? 0).Cast(), selected.First().Size); // int to long TODO: cheat address should be long
+ ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ?? 0), selected.First().Size);
}
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
index d86c9a9ba5..c5a061dac4 100644
--- a/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
+++ b/BizHawk.Client.EmuHawk/tools/HexEditor/HexEditor.cs
@@ -52,7 +52,7 @@ namespace BizHawk.Client.EmuHawk
"NULL", 1024, MemoryDomain.Endian.Little, addr => 0, delegate(long a, byte v) { v = 0; });
private int _row;
- private int _addr;
+ private long _addr;
private string _findStr = string.Empty;
private bool _mouseIsDown;
private byte[] _rom;
@@ -152,7 +152,7 @@ namespace BizHawk.Client.EmuHawk
}
BigEndian = _domain.EndianType == MemoryDomain.Endian.Big;
- _maxRow = (int)(_domain.Size / 2); // int to long TODO: this probably is bad
+ _maxRow = _domain.Size / 2;
ResetScrollBar();
SetDataSize(DataSize);
@@ -548,16 +548,16 @@ namespace BizHawk.Client.EmuHawk
private byte MakeByte(long address)
{
- return Global.CheatList.IsActive(_domain, (int)address) // int to long todo
- ? Global.CheatList.GetByteValue(_domain, (int)address).Value
+ return Global.CheatList.IsActive(_domain, address)
+ ? Global.CheatList.GetByteValue(_domain, address).Value
: _domain.PeekByte(address);
}
private int MakeValue(long address)
{
- if (Global.CheatList.IsActive(_domain, (int)address)) // int to long TODO: cheats should use long
+ if (Global.CheatList.IsActive(_domain, address))
{
- return Global.CheatList.GetCheatValue(_domain, (int)address, (Watch.WatchSize)DataSize ).Value;
+ return Global.CheatList.GetCheatValue(_domain, address, (Watch.WatchSize)DataSize ).Value;
}
switch (DataSize)
@@ -721,17 +721,17 @@ namespace BizHawk.Client.EmuHawk
{
default:
case 1:
- return new ByteWatch(_domain, (int)address, Watch.DisplayType.Hex, BigEndian, string.Empty); // int to long TODO: watches should use long for address
+ return new ByteWatch(_domain, address, Watch.DisplayType.Hex, BigEndian, string.Empty);
case 2:
- return new WordWatch(_domain, (int)address, Watch.DisplayType.Hex, BigEndian, string.Empty);
+ return new WordWatch(_domain, address, Watch.DisplayType.Hex, BigEndian, string.Empty);
case 4:
- return new DWordWatch(_domain, (int)address, Watch.DisplayType.Hex, BigEndian, string.Empty);
+ return new DWordWatch(_domain, address, Watch.DisplayType.Hex, BigEndian, string.Empty);
}
}
private bool IsFrozen(long address)
{
- return Global.CheatList.IsActive(_domain, (int)address); // int to long TODO: cheat should accept long
+ return Global.CheatList.IsActive(_domain, address);
}
private void UnFreezeAddress(long address)
@@ -740,7 +740,7 @@ namespace BizHawk.Client.EmuHawk
{
// TODO: can't unfreeze address 0??
Global.CheatList.RemoveRange(
- Global.CheatList.Where(x => x.Contains((int)address)).ToList());
+ Global.CheatList.Where(x => x.Contains(address)).ToList());
}
MemoryViewerBox.Refresh();
@@ -753,7 +753,7 @@ namespace BizHawk.Client.EmuHawk
{
var watch = Watch.GenerateWatch(
_domain,
- (int)address,
+ address,
WatchSize,
Watch.DisplayType.Hex,
string.Empty,
@@ -772,7 +772,7 @@ namespace BizHawk.Client.EmuHawk
{
var watch = Watch.GenerateWatch(
_domain,
- (int)address, // int to long TODO: address sould be long here
+ address,
WatchSize,
Watch.DisplayType.Hex,
string.Empty,
@@ -1662,7 +1662,7 @@ namespace BizHawk.Client.EmuHawk
break;
case Keys.End:
- newHighlighted = (int)(_domain.Size - DataSize); // int to long TODO: newHighlighted must be long
+ newHighlighted = _domain.Size - DataSize;
if (e.Modifiers == Keys.Shift)
{
for (var i = _addressHighlighted; i < newHighlighted; i += DataSize)
@@ -1970,7 +1970,7 @@ namespace BizHawk.Client.EmuHawk
var textrect = new Rectangle(textpoint, new Size(fontWidth * DataSize, fontHeight));
- if (Global.CheatList.IsActive(_domain, (int)_addressHighlighted)) // int to long TODO
+ if (Global.CheatList.IsActive(_domain, _addressHighlighted))
{
e.Graphics.FillRectangle(new SolidBrush(Global.Config.HexHighlightFreezeColor), rect);
e.Graphics.FillRectangle(new SolidBrush(Global.Config.HexHighlightFreezeColor), textrect);
diff --git a/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
index 10e0d26417..5d06689731 100644
--- a/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
+++ b/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
@@ -1420,7 +1420,7 @@ namespace BizHawk.Client.EmuHawk
{
if (SelectedWatches.Any())
{
- ToolHelpers.ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address ?? 0).Cast(), SelectedSize); // int to long TODO: address should be long
+ ToolHelpers.ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address ?? 0), SelectedSize);
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs b/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
index 03df321889..2361a187ce 100644
--- a/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
+++ b/BizHawk.Client.EmuHawk/tools/Watch/RamWatch.cs
@@ -1040,11 +1040,11 @@ namespace BizHawk.Client.EmuHawk
if (selected.Select(x => x.Domain).Distinct().Count() > 1)
{
- ToolHelpers.ViewInHexEditor(selected[0].Domain, new List { (long)(selected.First().Address ?? 0) }, selected.First().Size); // int to long todo: address should be long
+ ToolHelpers.ViewInHexEditor(selected[0].Domain, new List { selected.First().Address ?? 0 }, selected.First().Size);
}
else
{
- ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ?? 0).Cast(), selected.First().Size); // int to long todo: address should be long
+ ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ?? 0), selected.First().Size);
}
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs b/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs
index f937668fa6..fcb94c8779 100644
--- a/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs
+++ b/BizHawk.Client.EmuHawk/tools/Watch/WatchEditor.cs
@@ -84,7 +84,7 @@ namespace BizHawk.Client.EmuHawk
else
{
NotesBox.Text = _watchList[0].Notes;
- AddressBox.SetFromRawInt(_watchList[0].Address ?? 0);
+ AddressBox.SetFromRawInt((int)(_watchList[0].Address ?? 0)); // int to long todo
}
SetBigEndianCheckBox();
diff --git a/BizHawk.Common/Extensions/NumberExtensions.cs b/BizHawk.Common/Extensions/NumberExtensions.cs
index 496e34c3e5..17d049adeb 100644
--- a/BizHawk.Common/Extensions/NumberExtensions.cs
+++ b/BizHawk.Common/Extensions/NumberExtensions.cs
@@ -24,6 +24,11 @@ namespace BizHawk.Common.NumberExtensions
return string.Format("{0:X" + numdigits + "}", n);
}
+ public static string ToHexString(this long n, int numdigits)
+ {
+ return string.Format("{0:X" + numdigits + "}", n);
+ }
+
public static string ToHexString(this ulong n, int numdigits)
{
return string.Format("{0:X" + numdigits + "}", n);