Merge branch 'master' into clean_docs
|
@ -1 +1,3 @@
|
|||
SHA1:67F8513958C04E936B135740ED4EC6E6FA1763D5 Clean Sweep VEC
|
||||
SHA1:38E38B5C60466146D4648F8929B5CE3A08DCBE0D Scramble VEC
|
||||
|
||||
|
|
|
@ -13,28 +13,28 @@ namespace BizHawk.Client.ApiHawk
|
|||
public MemEventsApi () : base()
|
||||
{ }
|
||||
|
||||
public void AddReadCallback(Action cb, uint address, string domain)
|
||||
public void AddReadCallback(MemoryCallbackDelegate cb, uint? address, string domain)
|
||||
{
|
||||
if (DebuggableCore.MemoryCallbacksAvailable())
|
||||
{
|
||||
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Read, "Plugin Hook", cb, address, null));
|
||||
}
|
||||
}
|
||||
public void AddWriteCallback(Action cb, uint address, string domain)
|
||||
public void AddWriteCallback(MemoryCallbackDelegate cb, uint? address, string domain)
|
||||
{
|
||||
if (DebuggableCore.MemoryCallbacksAvailable())
|
||||
{
|
||||
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Write, "Plugin Hook", cb, address, null));
|
||||
}
|
||||
}
|
||||
public void AddExecCallback(Action cb, uint address, string domain)
|
||||
public void AddExecCallback(MemoryCallbackDelegate cb, uint? address, string domain)
|
||||
{
|
||||
if (DebuggableCore.MemoryCallbacksAvailable() && DebuggableCore.MemoryCallbacks.ExecuteCallbacksAvailable)
|
||||
{
|
||||
DebuggableCore.MemoryCallbacks.Add(new MemoryCallback(domain, MemoryCallbackType.Execute, "Plugin Hook", cb, address, null));
|
||||
}
|
||||
}
|
||||
public void RemoveMemoryCallback(Action cb)
|
||||
public void RemoveMemoryCallback(MemoryCallbackDelegate cb)
|
||||
{
|
||||
if (DebuggableCore.MemoryCallbacksAvailable())
|
||||
{
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
using System;
|
||||
|
||||
namespace BizHawk.Client.ApiHawk
|
||||
{
|
||||
public interface IMemEvents : IExternalApi
|
||||
{
|
||||
void AddReadCallback(Action cb, uint address, string domain);
|
||||
void AddWriteCallback(Action cb, uint address, string domain);
|
||||
void AddExecCallback(Action cb, uint address, string domain);
|
||||
void RemoveMemoryCallback(Action cb);
|
||||
}
|
||||
}
|
||||
using System;
|
||||
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Client.ApiHawk
|
||||
{
|
||||
public interface IMemEvents : IExternalApi
|
||||
{
|
||||
void AddReadCallback(MemoryCallbackDelegate cb, uint? address, string domain);
|
||||
void AddWriteCallback(MemoryCallbackDelegate cb, uint? address, string domain);
|
||||
void AddExecCallback(MemoryCallbackDelegate cb, uint? address, string domain);
|
||||
void RemoveMemoryCallback(MemoryCallbackDelegate cb);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,8 +60,8 @@ namespace BizHawk.Client.Common
|
|||
public static BinaryStateLump BranchInputLog { get; private set; }
|
||||
[Name("Branches\\FrameBuffer", "bmp")]
|
||||
public static BinaryStateLump BranchFrameBuffer { get; private set; }
|
||||
[Name("Branches\\LagLog", "bin")]
|
||||
public static BinaryStateLump BranchLagLog { get; private set; }
|
||||
[Name("Branches\\CoreFrameBuffer", "bmp")]
|
||||
public static BinaryStateLump BranchCoreFrameBuffer { get; private set; }
|
||||
[Name("Branches\\Header", "json")]
|
||||
public static BinaryStateLump BranchHeader { get; private set; }
|
||||
[Name("Branches\\Markers", "txt")]
|
||||
|
|
|
@ -231,7 +231,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
|
||||
DebuggableCore.MemoryCallbacks.Add(
|
||||
new MemoryCallback(domain, MemoryCallbackType.Execute, "Lua Hook", nlf.Callback, address, null));
|
||||
new MemoryCallback(domain, MemoryCallbackType.Execute, "Lua Hook", nlf.MemCallback, address, null));
|
||||
return nlf.Guid.ToString();
|
||||
}
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
|
||||
DebuggableCore.MemoryCallbacks.Add(
|
||||
new MemoryCallback(domain, MemoryCallbackType.Read, "Lua Hook", nlf.Callback, address, null));
|
||||
new MemoryCallback(domain, MemoryCallbackType.Read, "Lua Hook", nlf.MemCallback, address, null));
|
||||
return nlf.Guid.ToString();
|
||||
}
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
|
||||
DebuggableCore.MemoryCallbacks.Add(
|
||||
new MemoryCallback(domain, MemoryCallbackType.Write, "Lua Hook", nlf.Callback, address, null));
|
||||
new MemoryCallback(domain, MemoryCallbackType.Write, "Lua Hook", nlf.MemCallback, address, null));
|
||||
return nlf.Guid.ToString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace BizHawk.Client.Common
|
|||
|
||||
if (Global.Emulator.MemoryCallbacksAvailable())
|
||||
{
|
||||
Global.Emulator.AsDebuggable().MemoryCallbacks.Remove(function.Callback);
|
||||
Global.Emulator.AsDebuggable().MemoryCallbacks.Remove(function.MemCallback);
|
||||
}
|
||||
|
||||
return base.Remove(function);
|
||||
|
@ -40,7 +40,7 @@ namespace BizHawk.Client.Common
|
|||
if (Global.Emulator.MemoryCallbacksAvailable())
|
||||
{
|
||||
var memoryCallbacks = Global.Emulator.AsDebuggable().MemoryCallbacks;
|
||||
memoryCallbacks.RemoveAll(this.Select(w => w.Callback));
|
||||
memoryCallbacks.RemoveAll(this.Select(w => w.MemCallback));
|
||||
}
|
||||
|
||||
Clear();
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
using System;
|
||||
using NLua;
|
||||
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public class NamedLuaFunction
|
||||
|
@ -26,6 +28,11 @@ namespace BizHawk.Client.Common
|
|||
logCallback($"error running function attached by the event {Event}\nError message: {ex.Message}");
|
||||
}
|
||||
};
|
||||
|
||||
MemCallback = delegate
|
||||
{
|
||||
Callback();
|
||||
};
|
||||
}
|
||||
|
||||
public Guid Guid { get; private set; }
|
||||
|
@ -38,6 +45,8 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public Action Callback { get; }
|
||||
|
||||
public MemoryCallbackDelegate MemCallback { get; }
|
||||
|
||||
public void Call(string name = null)
|
||||
{
|
||||
LuaSandbox.Sandbox(Lua, () =>
|
||||
|
|
|
@ -12,8 +12,8 @@ namespace BizHawk.Client.Common
|
|||
public int Frame { get; set; }
|
||||
public byte[] CoreData { get; set; }
|
||||
public IStringLog InputLog { get; set; }
|
||||
public BitmapBuffer CoreFrameBuffer { get; set; }
|
||||
public BitmapBuffer OSDFrameBuffer { get; set; }
|
||||
public TasLagLog LagLog { get; set; }
|
||||
public TasMovieChangeLog ChangeLog { get; set; }
|
||||
public DateTime TimeStamp { get; set; }
|
||||
public TasMovieMarkerList Markers { get; set; }
|
||||
|
@ -50,7 +50,7 @@ namespace BizHawk.Client.Common
|
|||
var ncore = new IndexedStateLump(BinaryStateLump.BranchCoreData);
|
||||
var ninput = new IndexedStateLump(BinaryStateLump.BranchInputLog);
|
||||
var nframebuffer = new IndexedStateLump(BinaryStateLump.BranchFrameBuffer);
|
||||
var nlaglog = new IndexedStateLump(BinaryStateLump.BranchLagLog);
|
||||
var ncoreframebuffer = new IndexedStateLump(BinaryStateLump.BranchCoreFrameBuffer);
|
||||
var nmarkers = new IndexedStateLump(BinaryStateLump.BranchMarkers);
|
||||
var nusertext = new IndexedStateLump(BinaryStateLump.BranchUserText);
|
||||
foreach (var b in this)
|
||||
|
@ -86,9 +86,10 @@ namespace BizHawk.Client.Common
|
|||
QuickBmpFile.Save(vp, s, b.OSDFrameBuffer.Width, b.OSDFrameBuffer.Height);
|
||||
});
|
||||
|
||||
bs.PutLump(nlaglog, delegate(BinaryWriter bw)
|
||||
bs.PutLump(ncoreframebuffer, delegate(Stream s)
|
||||
{
|
||||
b.LagLog.Save(bw);
|
||||
var vp = new BitmapBufferVideoProvider(b.CoreFrameBuffer);
|
||||
QuickBmpFile.Save(vp, s, b.CoreFrameBuffer.Width, b.CoreFrameBuffer.Height);
|
||||
});
|
||||
|
||||
bs.PutLump(nmarkers, delegate(TextWriter tw)
|
||||
|
@ -105,7 +106,7 @@ namespace BizHawk.Client.Common
|
|||
ncore.Increment();
|
||||
ninput.Increment();
|
||||
nframebuffer.Increment();
|
||||
nlaglog.Increment();
|
||||
ncoreframebuffer.Increment();
|
||||
nmarkers.Increment();
|
||||
nusertext.Increment();
|
||||
}
|
||||
|
@ -117,7 +118,7 @@ namespace BizHawk.Client.Common
|
|||
var ncore = new IndexedStateLump(BinaryStateLump.BranchCoreData);
|
||||
var ninput = new IndexedStateLump(BinaryStateLump.BranchInputLog);
|
||||
var nframebuffer = new IndexedStateLump(BinaryStateLump.BranchFrameBuffer);
|
||||
var nlaglog = new IndexedStateLump(BinaryStateLump.BranchLagLog);
|
||||
var ncoreframebuffer = new IndexedStateLump(BinaryStateLump.BranchCoreFrameBuffer);
|
||||
var nmarkers = new IndexedStateLump(BinaryStateLump.BranchMarkers);
|
||||
var nusertext = new IndexedStateLump(BinaryStateLump.BranchUserText);
|
||||
|
||||
|
@ -180,10 +181,11 @@ namespace BizHawk.Client.Common
|
|||
b.OSDFrameBuffer = new BitmapBuffer(vp.BufferWidth, vp.BufferHeight, vp.VideoBuffer);
|
||||
});
|
||||
|
||||
bl.GetLump(nlaglog, true, delegate(BinaryReader br)
|
||||
bl.GetLump(ncoreframebuffer, false, delegate(Stream s, long length)
|
||||
{
|
||||
b.LagLog = new TasLagLog();
|
||||
b.LagLog.Load(br);
|
||||
var vp = new QuickBmpFile.LoadedBMP();
|
||||
QuickBmpFile.Load(vp, s);
|
||||
b.CoreFrameBuffer = new BitmapBuffer(vp.BufferWidth, vp.BufferHeight, vp.VideoBuffer);
|
||||
});
|
||||
|
||||
b.Markers = new TasMovieMarkerList(movie);
|
||||
|
@ -217,7 +219,7 @@ namespace BizHawk.Client.Common
|
|||
ncore.Increment();
|
||||
ninput.Increment();
|
||||
nframebuffer.Increment();
|
||||
nlaglog.Increment();
|
||||
ncoreframebuffer.Increment();
|
||||
nmarkers.Increment();
|
||||
nusertext.Increment();
|
||||
}
|
||||
|
|
|
@ -146,8 +146,6 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_lagLog.Clear();
|
||||
_wasLag.Clear();
|
||||
////if (br.BaseStream.Length > 0)
|
||||
////{ BaseStream.Length does not return the expected value.
|
||||
int formatVersion = br.ReadByte();
|
||||
if (formatVersion == 0)
|
||||
{
|
||||
|
@ -175,7 +173,6 @@ namespace BizHawk.Client.Common
|
|||
_wasLag.Add(br.ReadBoolean());
|
||||
}
|
||||
}
|
||||
////}
|
||||
}
|
||||
|
||||
public bool? History(int frame)
|
||||
|
@ -193,19 +190,6 @@ namespace BizHawk.Client.Common
|
|||
return null;
|
||||
}
|
||||
|
||||
public int LastValidFrame
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_lagLog.Count == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _lagLog.Count - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public TasLagLog Clone()
|
||||
{
|
||||
return new TasLagLog
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace BizHawk.Client.Common
|
|||
public TasLagLog TasLagLog => _lagLog;
|
||||
public IStringLog InputLog => Log;
|
||||
public int BranchCount => Branches.Count;
|
||||
public int LastValidFrame => _lagLog.LastValidFrame;
|
||||
public int LastStatedFrame => _stateManager.LastStatedFrame;
|
||||
public override string PreferredExtension => Extension;
|
||||
public TasStateManager TasStateManager => _stateManager;
|
||||
|
||||
|
@ -225,7 +225,9 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public void GreenzoneCurrentFrame()
|
||||
{
|
||||
if (Global.Emulator.Frame > LastValidFrame)
|
||||
// todo: this isn't working quite right when autorestore is off and we're editing while seeking
|
||||
// but accounting for that requires access to Mainform.IsSeeking
|
||||
if (Global.Emulator.Frame > LastEditedFrame)
|
||||
{
|
||||
// emulated a new frame, current editing segment may change now. taseditor logic
|
||||
LastPositionStable = false;
|
||||
|
|
|
@ -163,24 +163,16 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void AboutBox_Load(object sender, EventArgs e)
|
||||
{
|
||||
#if DEBUG
|
||||
Text = $"BizHawk Developer Build (DEBUG MODE) GIT {SubWCRev.GIT_BRANCH}#{SubWCRev.GIT_SHORTHASH}";
|
||||
Text = $"BizHawk Developer Build (DEBUG MODE) GIT {SubWCRev.GIT_BRANCH}#{SubWCRev.GIT_SHORTHASH}";
|
||||
#else
|
||||
Text = $"BizHawk Developer Build (RELEASE MODE) GIT {SubWCRev.GIT_BRANCH}#{SubWCRev.GIT_SHORTHASH}";
|
||||
#endif
|
||||
if (DateTime.Now.Month == 12)
|
||||
if (DateTime.Now.Month == 12)
|
||||
{
|
||||
if (DateTime.Now.Day > 17 && DateTime.Now.Day <= 25)
|
||||
{
|
||||
pictureBox1.Image = Properties.Resources.alt_about_image;
|
||||
}
|
||||
|
||||
if (DateTime.Now.Month == 2)
|
||||
{
|
||||
if (DateTime.Now.Day >= 7 && DateTime.Now.Day <= 14)
|
||||
{
|
||||
pictureBox1.Image = Properties.Resources.HawkInLove;
|
||||
pictureBox1.Location = new Point(pictureBox1.Location.X - 40, pictureBox1.Location.Y);
|
||||
pictureBox1.Width = pictureBox1.Width + 80;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
Decoder decoder = Encoding.UTF8.GetDecoder();
|
||||
readonly Decoder decoder = Encoding.UTF8.GetDecoder();
|
||||
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
IPAddress ipAdd;
|
||||
IPEndPoint remoteEP;
|
||||
|
@ -175,19 +175,14 @@ namespace BizHawk.Client.EmuHawk
|
|||
public int Retries { get; set; } = 10;
|
||||
public bool success = false; //indicates whether the last command was executed succesfully
|
||||
|
||||
public void Initialize(IVideoProvider _currentVideoProvider)
|
||||
public void Initialize()
|
||||
{
|
||||
currentVideoProvider = _currentVideoProvider;
|
||||
SetIp(ip, port);
|
||||
if (currentVideoProvider == null) currentVideoProvider = Global.Emulator.AsVideoProviderOrDefault();
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
public void Connect()
|
||||
{
|
||||
if (!initialized)
|
||||
{
|
||||
Initialize(currentVideoProvider);
|
||||
}
|
||||
remoteEP = new IPEndPoint(ipAdd, port);
|
||||
soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
soc.Connect(remoteEP);
|
||||
|
@ -200,7 +195,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
ip = ip_;
|
||||
port = port_;
|
||||
ipAdd = System.Net.IPAddress.Parse(ip);
|
||||
remoteEP = new IPEndPoint(ipAdd, port);
|
||||
Connect();
|
||||
}
|
||||
|
||||
public string GetInfo()
|
||||
|
@ -248,9 +243,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
public string SendScreenshot(int waitingTime)
|
||||
{
|
||||
if (!connected)
|
||||
if (!initialized)
|
||||
{
|
||||
Connect();
|
||||
Initialize();
|
||||
}
|
||||
ScreenShot screenShot = new ScreenShot();
|
||||
using (BitmapBuffer bb = screenShot.MakeScreenShotImage())
|
||||
|
|
|
@ -1911,7 +1911,13 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void SetPauseStatusbarIcon()
|
||||
{
|
||||
if (IsTurboSeeking)
|
||||
if (EmulatorPaused)
|
||||
{
|
||||
PauseStatusButton.Image = Properties.Resources.Pause;
|
||||
PauseStatusButton.Visible = true;
|
||||
PauseStatusButton.ToolTipText = "Emulator Paused";
|
||||
}
|
||||
else if (IsTurboSeeking)
|
||||
{
|
||||
PauseStatusButton.Image = Properties.Resources.Lightning;
|
||||
PauseStatusButton.Visible = true;
|
||||
|
@ -1923,12 +1929,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
PauseStatusButton.Visible = true;
|
||||
PauseStatusButton.ToolTipText = $"Emulator is playing to frame {PauseOnFrame.Value} click to stop seek";
|
||||
}
|
||||
else if (EmulatorPaused)
|
||||
{
|
||||
PauseStatusButton.Image = Properties.Resources.Pause;
|
||||
PauseStatusButton.Visible = true;
|
||||
PauseStatusButton.ToolTipText = "Emulator Paused";
|
||||
}
|
||||
else
|
||||
{
|
||||
PauseStatusButton.Image = Properties.Resources.Blank;
|
||||
|
@ -2023,7 +2023,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
private BitmapBuffer MakeScreenshotImage()
|
||||
public BitmapBuffer MakeScreenshotImage()
|
||||
{
|
||||
return GlobalWin.DisplayManager.RenderVideoProvider(_currentVideoProvider);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ namespace BizHawk.Client.EmuHawk.Properties {
|
|||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
@ -690,16 +690,6 @@ namespace BizHawk.Client.EmuHawk.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap HawkInLove {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("HawkInLove", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
|
|
@ -1455,9 +1455,6 @@
|
|||
<data name="ts_h_piano_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\images\tastudio\ts_h_piano_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="HawkInLove" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\images\HawkInLove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ts_h_piano_00_blue" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\images\tastudio\ts_h_piano_00_blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
|
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 206 B |
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 425 KiB After Width: | Height: | Size: 174 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 1002 B After Width: | Height: | Size: 929 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 830 B |
Before Width: | Height: | Size: 735 B After Width: | Height: | Size: 728 B |
Before Width: | Height: | Size: 686 B After Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 339 B |
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 154 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 815 B |
Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 384 B |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 958 B |
Before Width: | Height: | Size: 897 B After Width: | Height: | Size: 844 B |
Before Width: | Height: | Size: 588 B After Width: | Height: | Size: 578 B |
Before Width: | Height: | Size: 154 B After Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 567 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 609 B |
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 579 B |
Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 942 B |
Before Width: | Height: | Size: 761 B After Width: | Height: | Size: 744 B |
Before Width: | Height: | Size: 836 B After Width: | Height: | Size: 806 B |
Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 664 B |
Before Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 919 B After Width: | Height: | Size: 868 B |
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 751 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 512 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 832 B |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 955 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 586 B After Width: | Height: | Size: 583 B |
Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 823 B |
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 529 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 886 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 382 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 389 B |
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 592 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 907 B |
Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 500 B After Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 775 B |
Before Width: | Height: | Size: 623 B After Width: | Height: | Size: 612 B |
Before Width: | Height: | Size: 663 B After Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 723 B After Width: | Height: | Size: 710 B |
Before Width: | Height: | Size: 642 B After Width: | Height: | Size: 629 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 862 B |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1000 B |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 441 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 438 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 848 B |
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 711 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 849 B |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 710 B |
Before Width: | Height: | Size: 487 B After Width: | Height: | Size: 397 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 982 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 339 B |
Before Width: | Height: | Size: 889 B After Width: | Height: | Size: 872 B |
Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 647 B |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 514 B |
Before Width: | Height: | Size: 560 B After Width: | Height: | Size: 535 B |