complete speed/skip/non60-throttle functionality and controllable vsync. maybe a bit rough, but i'll continue to support it.
This commit is contained in:
parent
1d2d5ff39e
commit
bc74d6c575
|
@ -441,6 +441,12 @@ namespace BizHawk.Emulation.Consoles.Calculator
|
||||||
|
|
||||||
public string SystemId { get { return "TI83"; } }
|
public string SystemId { get { return "TI83"; } }
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -846,5 +846,11 @@ namespace BizHawk.Emulation.Consoles.Gameboy
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -159,5 +159,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
||||||
public string SystemId { get { return "NES"; } }
|
public string SystemId { get { return "NES"; } }
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -281,5 +281,16 @@ namespace BizHawk.Emulation.Consoles.TurboGrafx
|
||||||
private IList<MemoryDomain> memoryDomains;
|
private IList<MemoryDomain> memoryDomains;
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
switch (query)
|
||||||
|
{
|
||||||
|
case EmulatorQuery.VsyncRate:
|
||||||
|
return 60.0;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,5 +187,11 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
public IList<MemoryDomain> MemoryDomains { get { throw new NotImplementedException(); } }
|
||||||
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
public MemoryDomain MainMemory { get { throw new NotImplementedException(); } }
|
||||||
|
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -354,5 +354,11 @@ namespace BizHawk.Emulation.Consoles.Sega
|
||||||
|
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -46,6 +46,9 @@ namespace BizHawk
|
||||||
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
public IList<MemoryDomain> MemoryDomains { get { return memoryDomains; } }
|
||||||
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
public MemoryDomain MainMemory { get { return memoryDomains[0]; } }
|
||||||
|
|
||||||
|
public object Query(EmulatorQuery query)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,9 @@ namespace BizHawk
|
||||||
void LoadStateBinary(BinaryReader reader);
|
void LoadStateBinary(BinaryReader reader);
|
||||||
byte[] SaveStateBinary();
|
byte[] SaveStateBinary();
|
||||||
|
|
||||||
|
//arbitrary extensible query mechanism
|
||||||
|
object Query(EmulatorQuery query);
|
||||||
|
|
||||||
// ----- Client Debugging API stuff -----
|
// ----- Client Debugging API stuff -----
|
||||||
IList<MemoryDomain> MemoryDomains { get; }
|
IList<MemoryDomain> MemoryDomains { get; }
|
||||||
MemoryDomain MainMemory { get; }
|
MemoryDomain MainMemory { get; }
|
||||||
|
@ -63,4 +66,9 @@ namespace BizHawk
|
||||||
public enum Endian { Big, Little, Unknown }
|
public enum Endian { Big, Little, Unknown }
|
||||||
|
|
||||||
public enum DisplayType { NTSC, PAL }
|
public enum DisplayType { NTSC, PAL }
|
||||||
|
|
||||||
|
public enum EmulatorQuery
|
||||||
|
{
|
||||||
|
VsyncRate
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,11 +32,16 @@
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
|
||||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
this.label4 = new System.Windows.Forms.Label();
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
this.HR = new BizHawk.Core.HorizontalLine();
|
this.HR = new BizHawk.Core.HorizontalLine();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.mom1 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.mom2 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.mom1)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.mom2)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
|
@ -44,7 +49,7 @@
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 72F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 72F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label1.Location = new System.Drawing.Point(0, 9);
|
this.label1.Location = new System.Drawing.Point(0, -3);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(490, 108);
|
this.label1.Size = new System.Drawing.Size(490, 108);
|
||||||
this.label1.TabIndex = 1;
|
this.label1.TabIndex = 1;
|
||||||
|
@ -60,16 +65,6 @@
|
||||||
this.label2.TabIndex = 2;
|
this.label2.TabIndex = 2;
|
||||||
this.label2.Text = "EMULATES\r\nYOUR\r\nMOM";
|
this.label2.Text = "EMULATES\r\nYOUR\r\nMOM";
|
||||||
//
|
//
|
||||||
// pictureBox1
|
|
||||||
//
|
|
||||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
|
||||||
this.pictureBox1.Location = new System.Drawing.Point(155, 108);
|
|
||||||
this.pictureBox1.Name = "pictureBox1";
|
|
||||||
this.pictureBox1.Size = new System.Drawing.Size(171, 216);
|
|
||||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
|
||||||
this.pictureBox1.TabIndex = 0;
|
|
||||||
this.pictureBox1.TabStop = false;
|
|
||||||
//
|
|
||||||
// timer1
|
// timer1
|
||||||
//
|
//
|
||||||
this.timer1.Enabled = true;
|
this.timer1.Enabled = true;
|
||||||
|
@ -105,11 +100,53 @@
|
||||||
this.HR.TabIndex = 4;
|
this.HR.TabIndex = 4;
|
||||||
this.HR.Text = "COPYRITE 2001";
|
this.HR.Text = "COPYRITE 2001";
|
||||||
//
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
this.label5.AutoSize = true;
|
||||||
|
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label5.Location = new System.Drawing.Point(222, 369);
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
this.label5.Size = new System.Drawing.Size(104, 55);
|
||||||
|
this.label5.TabIndex = 8;
|
||||||
|
this.label5.Text = "--->";
|
||||||
|
//
|
||||||
|
// mom1
|
||||||
|
//
|
||||||
|
this.mom1.Image = ((System.Drawing.Image)(resources.GetObject("mom1.Image")));
|
||||||
|
this.mom1.Location = new System.Drawing.Point(372, 274);
|
||||||
|
this.mom1.Name = "mom1";
|
||||||
|
this.mom1.Size = new System.Drawing.Size(115, 150);
|
||||||
|
this.mom1.TabIndex = 7;
|
||||||
|
this.mom1.TabStop = false;
|
||||||
|
this.mom1.Visible = false;
|
||||||
|
//
|
||||||
|
// mom2
|
||||||
|
//
|
||||||
|
this.mom2.Image = ((System.Drawing.Image)(resources.GetObject("mom2.Image")));
|
||||||
|
this.mom2.Location = new System.Drawing.Point(372, 274);
|
||||||
|
this.mom2.Name = "mom2";
|
||||||
|
this.mom2.Size = new System.Drawing.Size(115, 150);
|
||||||
|
this.mom2.TabIndex = 6;
|
||||||
|
this.mom2.TabStop = false;
|
||||||
|
//
|
||||||
|
// pictureBox1
|
||||||
|
//
|
||||||
|
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||||
|
this.pictureBox1.Location = new System.Drawing.Point(155, 108);
|
||||||
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
|
this.pictureBox1.Size = new System.Drawing.Size(171, 216);
|
||||||
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||||
|
this.pictureBox1.TabIndex = 0;
|
||||||
|
this.pictureBox1.TabStop = false;
|
||||||
|
//
|
||||||
// AboutBox
|
// AboutBox
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(519, 497);
|
this.ClientSize = new System.Drawing.Size(519, 497);
|
||||||
|
this.Controls.Add(this.label5);
|
||||||
|
this.Controls.Add(this.mom1);
|
||||||
|
this.Controls.Add(this.mom2);
|
||||||
this.Controls.Add(this.label4);
|
this.Controls.Add(this.label4);
|
||||||
this.Controls.Add(this.HR);
|
this.Controls.Add(this.HR);
|
||||||
this.Controls.Add(this.label3);
|
this.Controls.Add(this.label3);
|
||||||
|
@ -118,6 +155,8 @@
|
||||||
this.Controls.Add(this.pictureBox1);
|
this.Controls.Add(this.pictureBox1);
|
||||||
this.Name = "AboutBox";
|
this.Name = "AboutBox";
|
||||||
this.Text = "AboutBox";
|
this.Text = "AboutBox";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.mom1)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.mom2)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
@ -133,5 +172,8 @@
|
||||||
private System.Windows.Forms.Label label3;
|
private System.Windows.Forms.Label label3;
|
||||||
private BizHawk.Core.HorizontalLine HR;
|
private BizHawk.Core.HorizontalLine HR;
|
||||||
private System.Windows.Forms.Label label4;
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.PictureBox mom2;
|
||||||
|
private System.Windows.Forms.PictureBox mom1;
|
||||||
|
private System.Windows.Forms.Label label5;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@ using System.ComponentModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Media;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
@ -11,17 +12,72 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
public partial class AboutBox : Form
|
public partial class AboutBox : Form
|
||||||
{
|
{
|
||||||
|
SoundPlayer sfx;
|
||||||
|
Random r = new Random();
|
||||||
|
int ctr = 0;
|
||||||
|
Point loc;
|
||||||
|
|
||||||
public AboutBox()
|
public AboutBox()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
label1.ForeColor = Color.LightGreen;
|
loc = label1.Location;
|
||||||
|
|
||||||
|
label1.Text = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var rm = new System.Resources.ResourceManager("BizHawk.MultiClient.Properties.Resources", GetType().Assembly);
|
||||||
|
sfx = new SoundPlayer(rm.GetStream("nothawk"));
|
||||||
|
sfx.Play();
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnClosed(EventArgs e)
|
||||||
|
{
|
||||||
|
if(sfx != null)
|
||||||
|
sfx.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
int smack = 0;
|
||||||
private void timer1_Tick(object sender, EventArgs e)
|
private void timer1_Tick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (label1.ForeColor == Color.LightGreen)
|
ctr++;
|
||||||
label1.ForeColor = Color.Pink;
|
if (ctr == 3)
|
||||||
else label1.ForeColor = Color.LightGreen;
|
label1.Text = "BIZ";
|
||||||
|
else if (ctr == 10)
|
||||||
|
label1.Text = "BIZ HAWK";
|
||||||
|
else if (ctr == 20)
|
||||||
|
{
|
||||||
|
label1.ForeColor = Color.LightGreen;
|
||||||
|
label1.Text = "BIZHAWK";
|
||||||
|
}
|
||||||
|
else if (ctr > 20)
|
||||||
|
{
|
||||||
|
if (label1.ForeColor == Color.LightGreen)
|
||||||
|
label1.ForeColor = Color.Pink;
|
||||||
|
else label1.ForeColor = Color.LightGreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctr/5 % 2 ==0)
|
||||||
|
{
|
||||||
|
mom1.Visible = true;
|
||||||
|
mom2.Visible = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mom1.Visible = false;
|
||||||
|
mom2.Visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctr > 30)
|
||||||
|
{
|
||||||
|
if(ctr/7%7<4)
|
||||||
|
label1.Location = new Point(loc.X + r.Next(3) - 1, loc.Y + r.Next(3) - 1);
|
||||||
|
else
|
||||||
|
label1.Location = new Point(loc.X + r.Next(5) - 3, loc.Y + r.Next(5) - 3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3,7 +3,7 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProductVersion>9.0.21022</ProductVersion>
|
<ProductVersion>9.0.30729</ProductVersion>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
<ProjectGuid>{DD448B37-BA3F-4544-9754-5406E8094723}</ProjectGuid>
|
<ProjectGuid>{DD448B37-BA3F-4544-9754-5406E8094723}</ProjectGuid>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
@ -107,6 +107,10 @@
|
||||||
<Compile Include="MainForm.Designer.cs">
|
<Compile Include="MainForm.Designer.cs">
|
||||||
<DependentUpon>MainForm.cs</DependentUpon>
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="MainForm.MenuItems.cs">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="MruStack.cs" />
|
<Compile Include="MruStack.cs" />
|
||||||
<Compile Include="NameStateForm.cs">
|
<Compile Include="NameStateForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
|
|
|
@ -28,6 +28,14 @@
|
||||||
public int MainWndx = -1; //Negative numbers will be ignored
|
public int MainWndx = -1; //Negative numbers will be ignored
|
||||||
public int MainWndy = -1;
|
public int MainWndy = -1;
|
||||||
|
|
||||||
|
// Run-Control settings
|
||||||
|
public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress?
|
||||||
|
public int FrameSkip = 0;
|
||||||
|
public int SpeedPercent = 100;
|
||||||
|
public bool LimitFramerate = true;
|
||||||
|
public bool AutoMinimizeSkipping = true;
|
||||||
|
public bool DisplayVSync = false;
|
||||||
|
|
||||||
// Display options
|
// Display options
|
||||||
public bool DisplayFPS = false;
|
public bool DisplayFPS = false;
|
||||||
public bool DisplayFrameCounter = false;
|
public bool DisplayFrameCounter = false;
|
||||||
|
|
|
@ -123,6 +123,27 @@
|
||||||
this.pauseWhenMenuActivatedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.pauseWhenMenuActivatedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.startPausedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.startPausedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.frameSkipToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miLimitFramerate = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miDisplayVsync = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.miAutoMinimizeSkipping = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip0 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip2 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip3 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip4 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip5 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip6 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip7 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip8 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miFrameskip9 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.miSpeed50 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miSpeed75 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miSpeed100 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miSpeed150 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.miSpeed200 = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.rAMWatchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.rAMWatchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.rAMSearchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.rAMSearchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
@ -834,7 +855,8 @@
|
||||||
this.hotkeysToolStripMenuItem,
|
this.hotkeysToolStripMenuItem,
|
||||||
this.toolStripSeparator9,
|
this.toolStripSeparator9,
|
||||||
this.soundToolStripMenuItem,
|
this.soundToolStripMenuItem,
|
||||||
this.gUIToolStripMenuItem});
|
this.gUIToolStripMenuItem,
|
||||||
|
this.frameSkipToolStripMenuItem});
|
||||||
this.configToolStripMenuItem.Name = "configToolStripMenuItem";
|
this.configToolStripMenuItem.Name = "configToolStripMenuItem";
|
||||||
this.configToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
|
this.configToolStripMenuItem.Size = new System.Drawing.Size(50, 20);
|
||||||
this.configToolStripMenuItem.Text = "&Config";
|
this.configToolStripMenuItem.Text = "&Config";
|
||||||
|
@ -842,26 +864,26 @@
|
||||||
// controllersToolStripMenuItem
|
// controllersToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem";
|
this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem";
|
||||||
this.controllersToolStripMenuItem.Size = new System.Drawing.Size(137, 22);
|
this.controllersToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.controllersToolStripMenuItem.Text = "&Controllers";
|
this.controllersToolStripMenuItem.Text = "&Controllers";
|
||||||
this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click);
|
this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// hotkeysToolStripMenuItem
|
// hotkeysToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem";
|
this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem";
|
||||||
this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(137, 22);
|
this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.hotkeysToolStripMenuItem.Text = "&Hotkeys";
|
this.hotkeysToolStripMenuItem.Text = "&Hotkeys";
|
||||||
this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click);
|
this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// toolStripSeparator9
|
// toolStripSeparator9
|
||||||
//
|
//
|
||||||
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
this.toolStripSeparator9.Name = "toolStripSeparator9";
|
||||||
this.toolStripSeparator9.Size = new System.Drawing.Size(134, 6);
|
this.toolStripSeparator9.Size = new System.Drawing.Size(149, 6);
|
||||||
//
|
//
|
||||||
// soundToolStripMenuItem
|
// soundToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.soundToolStripMenuItem.Name = "soundToolStripMenuItem";
|
this.soundToolStripMenuItem.Name = "soundToolStripMenuItem";
|
||||||
this.soundToolStripMenuItem.Size = new System.Drawing.Size(137, 22);
|
this.soundToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.soundToolStripMenuItem.Text = "&Sound";
|
this.soundToolStripMenuItem.Text = "&Sound";
|
||||||
this.soundToolStripMenuItem.Click += new System.EventHandler(this.soundToolStripMenuItem_Click);
|
this.soundToolStripMenuItem.Click += new System.EventHandler(this.soundToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
@ -872,7 +894,7 @@
|
||||||
this.saveWindowPositionToolStripMenuItem,
|
this.saveWindowPositionToolStripMenuItem,
|
||||||
this.startPausedToolStripMenuItem});
|
this.startPausedToolStripMenuItem});
|
||||||
this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem";
|
this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem";
|
||||||
this.gUIToolStripMenuItem.Size = new System.Drawing.Size(137, 22);
|
this.gUIToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.gUIToolStripMenuItem.Text = "GUI";
|
this.gUIToolStripMenuItem.Text = "GUI";
|
||||||
this.gUIToolStripMenuItem.DropDownOpened += new System.EventHandler(this.gUIToolStripMenuItem_DropDownOpened);
|
this.gUIToolStripMenuItem.DropDownOpened += new System.EventHandler(this.gUIToolStripMenuItem_DropDownOpened);
|
||||||
//
|
//
|
||||||
|
@ -897,6 +919,170 @@
|
||||||
this.startPausedToolStripMenuItem.Text = "Start paused";
|
this.startPausedToolStripMenuItem.Text = "Start paused";
|
||||||
this.startPausedToolStripMenuItem.Click += new System.EventHandler(this.startPausedToolStripMenuItem_Click);
|
this.startPausedToolStripMenuItem.Click += new System.EventHandler(this.startPausedToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
// frameSkipToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.frameSkipToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.miLimitFramerate,
|
||||||
|
this.miDisplayVsync,
|
||||||
|
this.toolStripMenuItem3,
|
||||||
|
this.miAutoMinimizeSkipping,
|
||||||
|
this.miFrameskip0,
|
||||||
|
this.miFrameskip1,
|
||||||
|
this.miFrameskip2,
|
||||||
|
this.miFrameskip3,
|
||||||
|
this.miFrameskip4,
|
||||||
|
this.miFrameskip5,
|
||||||
|
this.miFrameskip6,
|
||||||
|
this.miFrameskip7,
|
||||||
|
this.miFrameskip8,
|
||||||
|
this.miFrameskip9,
|
||||||
|
this.toolStripMenuItem5,
|
||||||
|
this.miSpeed50,
|
||||||
|
this.miSpeed75,
|
||||||
|
this.miSpeed100,
|
||||||
|
this.miSpeed150,
|
||||||
|
this.miSpeed200});
|
||||||
|
this.frameSkipToolStripMenuItem.Name = "frameSkipToolStripMenuItem";
|
||||||
|
this.frameSkipToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
|
this.frameSkipToolStripMenuItem.Text = "Speed/Skip";
|
||||||
|
this.frameSkipToolStripMenuItem.DropDownOpened += new System.EventHandler(this.frameSkipToolStripMenuItem_DropDownOpened);
|
||||||
|
//
|
||||||
|
// miLimitFramerate
|
||||||
|
//
|
||||||
|
this.miLimitFramerate.Name = "miLimitFramerate";
|
||||||
|
this.miLimitFramerate.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miLimitFramerate.Text = "Limit Framerate";
|
||||||
|
this.miLimitFramerate.Click += new System.EventHandler(this.miLimitFramerate_Click);
|
||||||
|
//
|
||||||
|
// miDisplayVsync
|
||||||
|
//
|
||||||
|
this.miDisplayVsync.Name = "miDisplayVsync";
|
||||||
|
this.miDisplayVsync.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miDisplayVsync.Text = "Display VSync";
|
||||||
|
this.miDisplayVsync.Click += new System.EventHandler(this.miDisplayVsync_Click);
|
||||||
|
//
|
||||||
|
// toolStripMenuItem3
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
|
||||||
|
this.toolStripMenuItem3.Size = new System.Drawing.Size(189, 6);
|
||||||
|
//
|
||||||
|
// miAutoMinimizeSkipping
|
||||||
|
//
|
||||||
|
this.miAutoMinimizeSkipping.Name = "miAutoMinimizeSkipping";
|
||||||
|
this.miAutoMinimizeSkipping.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miAutoMinimizeSkipping.Text = "Auto-minimize skipping";
|
||||||
|
this.miAutoMinimizeSkipping.Click += new System.EventHandler(this.miAutoMinimizeSkipping_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip0
|
||||||
|
//
|
||||||
|
this.miFrameskip0.Name = "miFrameskip0";
|
||||||
|
this.miFrameskip0.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip0.Text = "0 (never skip)";
|
||||||
|
this.miFrameskip0.Click += new System.EventHandler(this.miFrameskip0_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip1
|
||||||
|
//
|
||||||
|
this.miFrameskip1.Name = "miFrameskip1";
|
||||||
|
this.miFrameskip1.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip1.Text = "1";
|
||||||
|
this.miFrameskip1.Click += new System.EventHandler(this.miFrameskip1_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip2
|
||||||
|
//
|
||||||
|
this.miFrameskip2.Name = "miFrameskip2";
|
||||||
|
this.miFrameskip2.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip2.Text = "2";
|
||||||
|
this.miFrameskip2.Click += new System.EventHandler(this.miFrameskip2_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip3
|
||||||
|
//
|
||||||
|
this.miFrameskip3.Name = "miFrameskip3";
|
||||||
|
this.miFrameskip3.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip3.Text = "3";
|
||||||
|
this.miFrameskip3.Click += new System.EventHandler(this.miFrameskip3_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip4
|
||||||
|
//
|
||||||
|
this.miFrameskip4.Name = "miFrameskip4";
|
||||||
|
this.miFrameskip4.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip4.Text = "4";
|
||||||
|
this.miFrameskip4.Click += new System.EventHandler(this.miFrameskip4_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip5
|
||||||
|
//
|
||||||
|
this.miFrameskip5.Name = "miFrameskip5";
|
||||||
|
this.miFrameskip5.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip5.Text = "5";
|
||||||
|
this.miFrameskip5.Click += new System.EventHandler(this.miFrameskip5_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip6
|
||||||
|
//
|
||||||
|
this.miFrameskip6.Name = "miFrameskip6";
|
||||||
|
this.miFrameskip6.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip6.Text = "6";
|
||||||
|
this.miFrameskip6.Click += new System.EventHandler(this.miFrameskip6_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip7
|
||||||
|
//
|
||||||
|
this.miFrameskip7.Name = "miFrameskip7";
|
||||||
|
this.miFrameskip7.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip7.Text = "7";
|
||||||
|
this.miFrameskip7.Click += new System.EventHandler(this.miFrameskip7_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip8
|
||||||
|
//
|
||||||
|
this.miFrameskip8.Name = "miFrameskip8";
|
||||||
|
this.miFrameskip8.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip8.Text = "8";
|
||||||
|
this.miFrameskip8.Click += new System.EventHandler(this.miFrameskip8_Click);
|
||||||
|
//
|
||||||
|
// miFrameskip9
|
||||||
|
//
|
||||||
|
this.miFrameskip9.Name = "miFrameskip9";
|
||||||
|
this.miFrameskip9.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miFrameskip9.Text = "9";
|
||||||
|
this.miFrameskip9.Click += new System.EventHandler(this.miFrameskip9_Click);
|
||||||
|
//
|
||||||
|
// toolStripMenuItem5
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem5.Name = "toolStripMenuItem5";
|
||||||
|
this.toolStripMenuItem5.Size = new System.Drawing.Size(189, 6);
|
||||||
|
//
|
||||||
|
// miSpeed50
|
||||||
|
//
|
||||||
|
this.miSpeed50.Name = "miSpeed50";
|
||||||
|
this.miSpeed50.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miSpeed50.Text = "Speed 50%";
|
||||||
|
this.miSpeed50.Click += new System.EventHandler(this.miSpeed50_Click);
|
||||||
|
//
|
||||||
|
// miSpeed75
|
||||||
|
//
|
||||||
|
this.miSpeed75.Name = "miSpeed75";
|
||||||
|
this.miSpeed75.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miSpeed75.Text = "Speed 75%";
|
||||||
|
this.miSpeed75.Click += new System.EventHandler(this.miSpeed75_Click);
|
||||||
|
//
|
||||||
|
// miSpeed100
|
||||||
|
//
|
||||||
|
this.miSpeed100.Name = "miSpeed100";
|
||||||
|
this.miSpeed100.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miSpeed100.Text = "Speed 100%";
|
||||||
|
this.miSpeed100.Click += new System.EventHandler(this.miSpeed100_Click);
|
||||||
|
//
|
||||||
|
// miSpeed150
|
||||||
|
//
|
||||||
|
this.miSpeed150.Name = "miSpeed150";
|
||||||
|
this.miSpeed150.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miSpeed150.Text = "Speed 150%";
|
||||||
|
this.miSpeed150.Click += new System.EventHandler(this.miSpeed150_Click);
|
||||||
|
//
|
||||||
|
// miSpeed200
|
||||||
|
//
|
||||||
|
this.miSpeed200.Name = "miSpeed200";
|
||||||
|
this.miSpeed200.Size = new System.Drawing.Size(192, 22);
|
||||||
|
this.miSpeed200.Text = "Speed 200%";
|
||||||
|
this.miSpeed200.Click += new System.EventHandler(this.miSpeed200_Click);
|
||||||
|
//
|
||||||
// toolsToolStripMenuItem
|
// toolsToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
@ -965,14 +1151,14 @@
|
||||||
//
|
//
|
||||||
this.helpToolStripMenuItem1.Enabled = false;
|
this.helpToolStripMenuItem1.Enabled = false;
|
||||||
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
|
this.helpToolStripMenuItem1.Name = "helpToolStripMenuItem1";
|
||||||
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
|
this.helpToolStripMenuItem1.Size = new System.Drawing.Size(114, 22);
|
||||||
this.helpToolStripMenuItem1.Text = "&Help";
|
this.helpToolStripMenuItem1.Text = "&Help";
|
||||||
this.helpToolStripMenuItem1.Click += new System.EventHandler(this.helpToolStripMenuItem1_Click);
|
this.helpToolStripMenuItem1.Click += new System.EventHandler(this.helpToolStripMenuItem1_Click);
|
||||||
//
|
//
|
||||||
// aboutToolStripMenuItem
|
// aboutToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
|
||||||
this.aboutToolStripMenuItem.Text = "&About";
|
this.aboutToolStripMenuItem.Text = "&About";
|
||||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
@ -1102,6 +1288,27 @@
|
||||||
private System.Windows.Forms.ToolStripMenuItem rAMPokeToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem rAMPokeToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem saveWindowPositionToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripMenuItem startPausedToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem startPausedToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem frameSkipToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miDisplayVsync;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miAutoMinimizeSkipping;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip0;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip2;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip3;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip4;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip5;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip6;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip7;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip8;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miFrameskip9;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miSpeed50;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miSpeed75;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miSpeed100;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miSpeed150;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miSpeed200;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem miLimitFramerate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,382 @@
|
||||||
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using BizHawk.Core;
|
||||||
|
using BizHawk.Emulation.Consoles.Sega;
|
||||||
|
using BizHawk.Emulation.Consoles.TurboGrafx;
|
||||||
|
using BizHawk.Emulation.Consoles.Calculator;
|
||||||
|
using BizHawk.Emulation.Consoles.Gameboy;
|
||||||
|
using BizHawk.Emulation.Consoles.Nintendo;
|
||||||
|
|
||||||
|
namespace BizHawk.MultiClient
|
||||||
|
{
|
||||||
|
partial class MainForm
|
||||||
|
{
|
||||||
|
private void rAMPokeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RamPoke r = new RamPoke();
|
||||||
|
r.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.SaveWindowPosition ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void startPausedToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.StartPaused ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void luaConsoleToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var window = new BizHawk.MultiClient.tools.LuaWindow();
|
||||||
|
window.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void miLimitFramerate_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.LimitFramerate ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void miDisplayVsync_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.DisplayVSync ^= true;
|
||||||
|
Global.RenderPanel.Resized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void miAutoMinimizeSkipping_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.AutoMinimizeSkipping ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void miFrameskip0_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 0; }
|
||||||
|
private void miFrameskip1_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 1; }
|
||||||
|
private void miFrameskip2_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 2; }
|
||||||
|
private void miFrameskip3_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 3; }
|
||||||
|
private void miFrameskip4_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 4; }
|
||||||
|
private void miFrameskip5_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 5; }
|
||||||
|
private void miFrameskip6_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 6; }
|
||||||
|
private void miFrameskip7_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 7; }
|
||||||
|
private void miFrameskip8_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 8; }
|
||||||
|
private void miFrameskip9_Click(object sender, EventArgs e) { Global.Config.FrameSkip = 9; }
|
||||||
|
|
||||||
|
private void miSpeed50_Click(object sender, EventArgs e) { SetSpeedPercent(50); }
|
||||||
|
private void miSpeed75_Click(object sender, EventArgs e) { SetSpeedPercent(75); }
|
||||||
|
private void miSpeed100_Click(object sender, EventArgs e) { SetSpeedPercent(100); }
|
||||||
|
private void miSpeed150_Click(object sender, EventArgs e) { SetSpeedPercent(150); }
|
||||||
|
private void miSpeed200_Click(object sender, EventArgs e) { SetSpeedPercent(200); }
|
||||||
|
|
||||||
|
private void pauseWhenMenuActivatedToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.PauseWhenMenuActivated ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void soundToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SoundConfig s = new SoundConfig();
|
||||||
|
s.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void zoomMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (sender == x1MenuItem) Global.Config.TargetZoomFactor = 1;
|
||||||
|
if (sender == x2MenuItem) Global.Config.TargetZoomFactor = 2;
|
||||||
|
if (sender == x3MenuItem) Global.Config.TargetZoomFactor = 3;
|
||||||
|
if (sender == x4MenuItem) Global.Config.TargetZoomFactor = 4;
|
||||||
|
if (sender == x5MenuItem) Global.Config.TargetZoomFactor = 5;
|
||||||
|
if (sender == mzMenuItem) Global.Config.TargetZoomFactor = 10;
|
||||||
|
|
||||||
|
x1MenuItem.Checked = Global.Config.TargetZoomFactor == 1;
|
||||||
|
x2MenuItem.Checked = Global.Config.TargetZoomFactor == 2;
|
||||||
|
x3MenuItem.Checked = Global.Config.TargetZoomFactor == 3;
|
||||||
|
x4MenuItem.Checked = Global.Config.TargetZoomFactor == 4;
|
||||||
|
x5MenuItem.Checked = Global.Config.TargetZoomFactor == 5;
|
||||||
|
mzMenuItem.Checked = Global.Config.TargetZoomFactor == 10;
|
||||||
|
|
||||||
|
FrameBufferResized();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enableFMChipToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.SmsEnableFM ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void overclockWhenKnownSafeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.SmsAllowOverlock ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void forceStereoSeparationToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.SmsForceStereoSeparation ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void recordMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
RecordMovie r = new RecordMovie();
|
||||||
|
r.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void playMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
PlayMovie p = new PlayMovie();
|
||||||
|
p.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stopMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void playFromBeginningToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void RAMWatchToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadRamWatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rAMSearchToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadRamSearch();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void autoloadMostRecentToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateAutoLoadRecentRom();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.RecentRoms.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void selectSlot1ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 1;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot2ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 2;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot3ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 3;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot4ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 4;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot5ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 5;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot6ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 6;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot7ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 7;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot8ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 8;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot9ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 9;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void selectSlot10ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveSlot = 0;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void previousSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (SaveSlot == 0) SaveSlot = 9; //Wrap to end of slot list
|
||||||
|
else if (SaveSlot > 9) SaveSlot = 9; //Meh, just in case
|
||||||
|
else SaveSlot--;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void nextSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (SaveSlot >= 9) SaveSlot = 1; //Wrap to beginning of slot list
|
||||||
|
else SaveSlot++;
|
||||||
|
SaveSlotSelectedMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveToCurrentSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveState("QuickSave" + SaveSlot.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadCurrentSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadState("QuickSave" + SaveSlot.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeROMToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CloseGame();
|
||||||
|
Global.Emulator = new NullEmulator();
|
||||||
|
Text = "BizHawk";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveStateToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Sound.StopSound();
|
||||||
|
|
||||||
|
var frm = new NameStateForm();
|
||||||
|
frm.ShowDialog(this);
|
||||||
|
|
||||||
|
if (frm.OK)
|
||||||
|
SaveState(frm.Result);
|
||||||
|
|
||||||
|
Global.Sound.StartSound();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void powerToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
LoadRom(CurrentlyOpenRom);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Reset"))
|
||||||
|
Global.Emulator.Controller.ForceButton("Reset");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (EmulatorPaused == true)
|
||||||
|
UnpauseEmulator();
|
||||||
|
else
|
||||||
|
PauseEmulator();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
new AboutBox().ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void controllersToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
InputConfig i = new InputConfig();
|
||||||
|
i.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void hotkeysToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
BizHawk.MultiClient.tools.HotkeyWindow h = new BizHawk.MultiClient.tools.HotkeyWindow();
|
||||||
|
h.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayFPSToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.DisplayFPS ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayFrameCounterToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.DisplayFrameCounter ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayInputToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.DisplayInput ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void displayLagCounterToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Global.Config.DisplayLagCounter ^= true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void screenshotF12ToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
TakeScreenshot();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void savestate1toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave1"); }
|
||||||
|
private void savestate2toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave2"); }
|
||||||
|
private void savestate3toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave3"); }
|
||||||
|
private void savestate4toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave4"); }
|
||||||
|
private void savestate5toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave5"); }
|
||||||
|
private void savestate6toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave6"); }
|
||||||
|
private void savestate7toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave7"); }
|
||||||
|
private void savestate8toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave8"); }
|
||||||
|
private void savestate9toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave9"); }
|
||||||
|
private void savestate0toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave0"); }
|
||||||
|
|
||||||
|
private void loadstate1toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave1"); }
|
||||||
|
private void loadstate2toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave2"); }
|
||||||
|
private void loadstate3toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave3"); }
|
||||||
|
private void loadstate4toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave4"); }
|
||||||
|
private void loadstate5toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave5"); }
|
||||||
|
private void loadstate6toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave6"); }
|
||||||
|
private void loadstate7toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave7"); }
|
||||||
|
private void loadstate8toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave8"); }
|
||||||
|
private void loadstate9toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave9"); }
|
||||||
|
private void loadstate0toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave0"); }
|
||||||
|
|
||||||
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (RamWatch1.AskSave())
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openROMToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var ofd = new OpenFileDialog();
|
||||||
|
ofd.InitialDirectory = Global.Config.LastRomPath;
|
||||||
|
ofd.Filter = "Rom Files|*.SMS;*.GG;*.SG;*.PCE;*.SGX;*.GB;*.BIN;*.SMD;*.ZIP;*.7z|Master System|*.SMS;*.GG;*.SG;*.ZIP;*.7z|PC Engine|*.PCE;*.SGX;*.ZIP;*.7z|Gameboy|*.GB;*.ZIP;*.7z|Archive Files|*.zip;*.7z|All Files|*.*";
|
||||||
|
ofd.RestoreDirectory = true;
|
||||||
|
|
||||||
|
Global.Sound.StopSound();
|
||||||
|
var result = ofd.ShowDialog();
|
||||||
|
Global.Sound.StartSound();
|
||||||
|
if (result != DialogResult.OK)
|
||||||
|
return;
|
||||||
|
var file = new FileInfo(ofd.FileName);
|
||||||
|
Global.Config.LastRomPath = file.DirectoryName;
|
||||||
|
LoadRom(file.FullName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,22 +19,17 @@ namespace BizHawk.MultiClient
|
||||||
private Control renderTarget;
|
private Control renderTarget;
|
||||||
private RetainedViewportPanel retainedPanel;
|
private RetainedViewportPanel retainedPanel;
|
||||||
private string CurrentlyOpenRom;
|
private string CurrentlyOpenRom;
|
||||||
private int SaveSlot = 0; //Saveslot sytem
|
|
||||||
|
//the currently selected savestate slot
|
||||||
|
private int SaveSlot = 0;
|
||||||
|
|
||||||
//runloop control
|
//runloop control
|
||||||
struct MainLoopData
|
bool exit;
|
||||||
{
|
bool runloop_frameProgress;
|
||||||
public int lastskiprate;
|
DateTime FrameAdvanceTimestamp = DateTime.MinValue;
|
||||||
public int framestoskip;
|
|
||||||
public int FrameAdvanceDelay;
|
|
||||||
public bool runloop_frameProgress;
|
|
||||||
public bool skipnextframe;
|
|
||||||
public bool exit;
|
|
||||||
}
|
|
||||||
MainLoopData mainLoopData = new MainLoopData();
|
|
||||||
public bool EmulatorPaused;
|
public bool EmulatorPaused;
|
||||||
|
bool runloop_frameadvance;
|
||||||
Throttle throttle;
|
Throttle throttle = new Throttle();
|
||||||
|
|
||||||
//For handling automatic pausing when entering the menu
|
//For handling automatic pausing when entering the menu
|
||||||
private bool wasPaused = false;
|
private bool wasPaused = false;
|
||||||
|
@ -139,15 +134,17 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
if (Global.Config.StartPaused)
|
if (Global.Config.StartPaused)
|
||||||
PauseEmulator();
|
PauseEmulator();
|
||||||
|
}
|
||||||
|
|
||||||
//TODO - pick the actual correct throttle rate based on the platform and configuration
|
void SetSpeedPercent(int value)
|
||||||
//(and later we will need to modify it at runtime)
|
{
|
||||||
throttle = new Throttle(30);
|
Global.Config.SpeedPercent = value;
|
||||||
|
throttle.SetSpeedPercent(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnClosed(EventArgs e)
|
protected override void OnClosed(EventArgs e)
|
||||||
{
|
{
|
||||||
mainLoopData.exit = true;
|
exit = true;
|
||||||
base.OnClosed(e);
|
base.OnClosed(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,13 +156,15 @@ namespace BizHawk.MultiClient
|
||||||
|
|
||||||
CheckHotkeys();
|
CheckHotkeys();
|
||||||
|
|
||||||
StepRunLoop_Core();
|
|
||||||
//StepRunLoop_Throttle(true, -1);
|
|
||||||
|
|
||||||
|
StepRunLoop_Core();
|
||||||
|
if(!IsNullEmulator())
|
||||||
|
StepRunLoop_Throttle();
|
||||||
|
|
||||||
Render();
|
Render();
|
||||||
|
|
||||||
CheckMessages();
|
CheckMessages();
|
||||||
if (mainLoopData.exit)
|
if (exit)
|
||||||
break;
|
break;
|
||||||
Thread.Sleep(0);
|
Thread.Sleep(0);
|
||||||
}
|
}
|
||||||
|
@ -431,6 +430,17 @@ namespace BizHawk.MultiClient
|
||||||
new BizHawk.Emulation.Consoles.Gameboy.Debugger(Global.Emulator as Gameboy).Show();
|
new BizHawk.Emulation.Consoles.Gameboy.Debugger(Global.Emulator as Gameboy).Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//setup the throttle based on platform's specifications
|
||||||
|
//(one day later for some systems we will need to modify it at runtime as the display mode changes)
|
||||||
|
{
|
||||||
|
object o = Global.Emulator.Query(EmulatorQuery.VsyncRate);
|
||||||
|
if (o is double)
|
||||||
|
throttle.SetCoreFps((double)o);
|
||||||
|
else throttle.SetCoreFps(60);
|
||||||
|
SetSpeedPercent(Global.Config.SpeedPercent);
|
||||||
|
}
|
||||||
|
|
||||||
CurrentlyOpenRom = path;
|
CurrentlyOpenRom = path;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -506,13 +516,6 @@ namespace BizHawk.MultiClient
|
||||||
LoadRom(CurrentlyOpenRom);
|
LoadRom(CurrentlyOpenRom);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO - fast forward is handled by disabling the throttle
|
|
||||||
if (Global.ClientControls["Fast Forward"])
|
|
||||||
{
|
|
||||||
Global.Emulator.FrameAdvance(false);
|
|
||||||
Global.Emulator.FrameAdvance(false);
|
|
||||||
Global.Emulator.FrameAdvance(false);
|
|
||||||
}
|
|
||||||
if (Global.ClientControls["Screenshot"])
|
if (Global.ClientControls["Screenshot"])
|
||||||
{
|
{
|
||||||
Global.ClientControls.UnpressButton("Screenshot");
|
Global.ClientControls.UnpressButton("Screenshot");
|
||||||
|
@ -554,52 +557,57 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StepRunLoop_Throttle()
|
||||||
|
{
|
||||||
|
throttle.signal_fastForward = Global.ClientControls["Fast Forward"];
|
||||||
|
throttle.signal_frameAdvance = runloop_frameadvance;
|
||||||
|
throttle.signal_continuousframeAdvancing = runloop_frameProgress;
|
||||||
|
|
||||||
|
throttle.Step(true, -1);
|
||||||
|
}
|
||||||
|
|
||||||
void StepRunLoop_Core()
|
void StepRunLoop_Core()
|
||||||
{
|
{
|
||||||
//TODO - this method can't depend on that value of 60. it may run too quickly.
|
|
||||||
//this method needs to be refactored anyway since I'm not sure that it is where all this belongs
|
|
||||||
|
|
||||||
bool runFrame = false;
|
bool runFrame = false;
|
||||||
|
runloop_frameadvance = false;
|
||||||
|
DateTime now = DateTime.Now;
|
||||||
|
|
||||||
|
double frameAdvanceTimestampDelta = (now - FrameAdvanceTimestamp).TotalMilliseconds;
|
||||||
|
bool frameProgressTimeElapsed = Global.Config.FrameProgressDelayMs < frameAdvanceTimestampDelta;
|
||||||
|
|
||||||
//handle unpress of frame advance: do we need to deactivate FrameProgress?
|
if (Global.ClientControls["Frame Advance"])
|
||||||
if (!Global.ClientControls.IsPressed("Frame Advance"))
|
|
||||||
{
|
{
|
||||||
if (mainLoopData.runloop_frameProgress)
|
//handle the initial trigger of a frame advance
|
||||||
{
|
if (FrameAdvanceTimestamp == DateTime.MinValue)
|
||||||
mainLoopData.runloop_frameProgress = false;
|
|
||||||
PauseEmulator();
|
|
||||||
}
|
|
||||||
mainLoopData.FrameAdvanceDelay = 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
//handle normal frame advance: either countdown, or the initial trigger (which necessitates a pause)
|
|
||||||
if (Global.ClientControls["Frame Advance"] && mainLoopData.FrameAdvanceDelay > 0)
|
|
||||||
{
|
|
||||||
if (mainLoopData.FrameAdvanceDelay == 60)
|
|
||||||
{
|
{
|
||||||
if (!EmulatorPaused) PauseEmulator();
|
if (!EmulatorPaused) PauseEmulator();
|
||||||
runFrame = true;
|
runFrame = true;
|
||||||
mainLoopData.FrameAdvanceDelay--;
|
runloop_frameadvance = true;
|
||||||
|
FrameAdvanceTimestamp = now;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (mainLoopData.FrameAdvanceDelay > 0)
|
//handle the timed transition from countdown to FrameProgress
|
||||||
mainLoopData.FrameAdvanceDelay--;
|
if (frameProgressTimeElapsed)
|
||||||
if (mainLoopData.FrameAdvanceDelay < 0)
|
{
|
||||||
mainLoopData.FrameAdvanceDelay = 0;
|
runFrame = true;
|
||||||
|
runloop_frameProgress = true;
|
||||||
|
UnpauseEmulator();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
//frame advance: handle the timed transition from countdown to FrameProgress
|
|
||||||
if (Global.ClientControls["Frame Advance"] && mainLoopData.FrameAdvanceDelay == 0)
|
|
||||||
{
|
{
|
||||||
runFrame = true;
|
//handle release of frame advance: do we need to deactivate FrameProgress?
|
||||||
mainLoopData.runloop_frameProgress = true;
|
if (runloop_frameProgress)
|
||||||
UnpauseEmulator();
|
{
|
||||||
|
runloop_frameProgress = false;
|
||||||
|
PauseEmulator();
|
||||||
|
}
|
||||||
|
FrameAdvanceTimestamp = DateTime.MinValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!EmulatorPaused)
|
if (!EmulatorPaused)
|
||||||
{
|
{
|
||||||
runFrame = true;
|
runFrame = true;
|
||||||
|
@ -614,13 +622,13 @@ namespace BizHawk.MultiClient
|
||||||
if (runFrame)
|
if (runFrame)
|
||||||
{
|
{
|
||||||
CaptureRewindState();
|
CaptureRewindState();
|
||||||
DoFrameAdvance();
|
Global.Emulator.FrameAdvance(!throttle.skipnextframe);
|
||||||
Global.Sound.UpdateSound(Global.Emulator.SoundProvider);
|
Global.Sound.UpdateSound(Global.Emulator.SoundProvider);
|
||||||
|
RamWatch1.UpdateValues();
|
||||||
|
RamSearch1.UpdateValues();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool wasMaximized = false;
|
|
||||||
|
|
||||||
private void TakeScreenshot()
|
private void TakeScreenshot()
|
||||||
{
|
{
|
||||||
var video = Global.Emulator.VideoProvider;
|
var video = Global.Emulator.VideoProvider;
|
||||||
|
@ -665,227 +673,12 @@ namespace BizHawk.MultiClient
|
||||||
Global.RenderPanel.AddMessage("Loaded state: " + name);
|
Global.RenderPanel.AddMessage("Loaded state: " + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (RamWatch1.AskSave())
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void openROMToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
var ofd = new OpenFileDialog();
|
|
||||||
ofd.InitialDirectory = Global.Config.LastRomPath;
|
|
||||||
ofd.Filter = "Rom Files|*.SMS;*.GG;*.SG;*.PCE;*.SGX;*.GB;*.BIN;*.SMD;*.ZIP;*.7z|Master System|*.SMS;*.GG;*.SG;*.ZIP;*.7z|PC Engine|*.PCE;*.SGX;*.ZIP;*.7z|Gameboy|*.GB;*.ZIP;*.7z|Archive Files|*.zip;*.7z|All Files|*.*";
|
|
||||||
ofd.RestoreDirectory = true;
|
|
||||||
|
|
||||||
Global.Sound.StopSound();
|
|
||||||
var result = ofd.ShowDialog();
|
|
||||||
Global.Sound.StartSound();
|
|
||||||
if (result != DialogResult.OK)
|
|
||||||
return;
|
|
||||||
var file = new FileInfo(ofd.FileName);
|
|
||||||
Global.Config.LastRomPath = file.DirectoryName;
|
|
||||||
LoadRom(file.FullName);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void savestate1toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave1"); }
|
|
||||||
private void savestate2toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave2"); }
|
|
||||||
private void savestate3toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave3"); }
|
|
||||||
private void savestate4toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave4"); }
|
|
||||||
private void savestate5toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave5"); }
|
|
||||||
private void savestate6toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave6"); }
|
|
||||||
private void savestate7toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave7"); }
|
|
||||||
private void savestate8toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave8"); }
|
|
||||||
private void savestate9toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave9"); }
|
|
||||||
private void savestate0toolStripMenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave0"); }
|
|
||||||
|
|
||||||
private void loadstate1toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave1"); }
|
|
||||||
private void loadstate2toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave2"); }
|
|
||||||
private void loadstate3toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave3"); }
|
|
||||||
private void loadstate4toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave4"); }
|
|
||||||
private void loadstate5toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave5"); }
|
|
||||||
private void loadstate6toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave6"); }
|
|
||||||
private void loadstate7toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave7"); }
|
|
||||||
private void loadstate8toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave8"); }
|
|
||||||
private void loadstate9toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave9"); }
|
|
||||||
private void loadstate0toolStripMenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave0"); }
|
|
||||||
|
|
||||||
private void saveStateToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Sound.StopSound();
|
|
||||||
|
|
||||||
var frm = new NameStateForm();
|
|
||||||
frm.ShowDialog(this);
|
|
||||||
|
|
||||||
if (frm.OK)
|
|
||||||
SaveState(frm.Result);
|
|
||||||
|
|
||||||
Global.Sound.StartSound();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void powerToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
LoadRom(CurrentlyOpenRom);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void resetToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (Global.Emulator.ControllerDefinition.BoolButtons.Contains("Reset"))
|
|
||||||
Global.Emulator.Controller.ForceButton("Reset");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (EmulatorPaused == true)
|
|
||||||
UnpauseEmulator();
|
|
||||||
else
|
|
||||||
PauseEmulator();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void helpToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
new AboutBox().ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void controllersToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
InputConfig i = new InputConfig();
|
|
||||||
i.ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void hotkeysToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
BizHawk.MultiClient.tools.HotkeyWindow h = new BizHawk.MultiClient.tools.HotkeyWindow();
|
|
||||||
h.ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void displayFPSToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.DisplayFPS ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void displayFrameCounterToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.DisplayFrameCounter ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void displayInputToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.DisplayInput ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void displayLagCounterToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.DisplayLagCounter ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void screenshotF12ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
TakeScreenshot();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveSlotSelectedMessage()
|
private void SaveSlotSelectedMessage()
|
||||||
{
|
{
|
||||||
Global.RenderPanel.AddMessage("Slot " + SaveSlot + " selected.");
|
Global.RenderPanel.AddMessage("Slot " + SaveSlot + " selected.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectSlot1ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 1;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot2ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 2;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot3ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 3;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot4ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 4;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot5ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 5;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot6ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 6;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot7ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 7;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot8ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 8;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot9ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 9;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectSlot10ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveSlot = 0;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void previousSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SaveSlot == 0) SaveSlot = 9; //Wrap to end of slot list
|
|
||||||
else if (SaveSlot > 9) SaveSlot = 9; //Meh, just in case
|
|
||||||
else SaveSlot--;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void nextSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (SaveSlot >= 9) SaveSlot = 1; //Wrap to beginning of slot list
|
|
||||||
else SaveSlot++;
|
|
||||||
SaveSlotSelectedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void saveToCurrentSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SaveState("QuickSave" + SaveSlot.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadCurrentSlotToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
LoadState("QuickSave" + SaveSlot.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void closeROMToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
CloseGame();
|
|
||||||
Global.Emulator = new NullEmulator();
|
|
||||||
Text = "BizHawk";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void emulationToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
private void emulationToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
powerToolStripMenuItem.Enabled = !IsNullEmulator();
|
powerToolStripMenuItem.Enabled = !IsNullEmulator();
|
||||||
|
@ -898,10 +691,7 @@ namespace BizHawk.MultiClient
|
||||||
if (didMenuPause) pauseToolStripMenuItem.Checked = wasPaused;
|
if (didMenuPause) pauseToolStripMenuItem.Checked = wasPaused;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.RecentRoms.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void UpdateAutoLoadRecentRom()
|
private void UpdateAutoLoadRecentRom()
|
||||||
{
|
{
|
||||||
|
@ -917,11 +707,6 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void autoloadMostRecentToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UpdateAutoLoadRecentRom();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fileToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
private void fileToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (IsNullEmulator())
|
if (IsNullEmulator())
|
||||||
|
@ -1101,16 +886,6 @@ namespace BizHawk.MultiClient
|
||||||
RamSearch1.Focus();
|
RamSearch1.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RAMWatchToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
LoadRamWatch();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void rAMSearchToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
LoadRamSearch();
|
|
||||||
}
|
|
||||||
|
|
||||||
private int lastWidth = -1;
|
private int lastWidth = -1;
|
||||||
private int lastHeight = -1;
|
private int lastHeight = -1;
|
||||||
|
|
||||||
|
@ -1186,62 +961,7 @@ namespace BizHawk.MultiClient
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void zoomMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (sender == x1MenuItem) Global.Config.TargetZoomFactor = 1;
|
|
||||||
if (sender == x2MenuItem) Global.Config.TargetZoomFactor = 2;
|
|
||||||
if (sender == x3MenuItem) Global.Config.TargetZoomFactor = 3;
|
|
||||||
if (sender == x4MenuItem) Global.Config.TargetZoomFactor = 4;
|
|
||||||
if (sender == x5MenuItem) Global.Config.TargetZoomFactor = 5;
|
|
||||||
if (sender == mzMenuItem) Global.Config.TargetZoomFactor = 10;
|
|
||||||
|
|
||||||
x1MenuItem.Checked = Global.Config.TargetZoomFactor == 1;
|
|
||||||
x2MenuItem.Checked = Global.Config.TargetZoomFactor == 2;
|
|
||||||
x3MenuItem.Checked = Global.Config.TargetZoomFactor == 3;
|
|
||||||
x4MenuItem.Checked = Global.Config.TargetZoomFactor == 4;
|
|
||||||
x5MenuItem.Checked = Global.Config.TargetZoomFactor == 5;
|
|
||||||
mzMenuItem.Checked = Global.Config.TargetZoomFactor == 10;
|
|
||||||
|
|
||||||
FrameBufferResized();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enableFMChipToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.SmsEnableFM ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void overclockWhenKnownSafeToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.SmsAllowOverlock ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void forceStereoSeparationToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.SmsForceStereoSeparation ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void recordMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
RecordMovie r = new RecordMovie();
|
|
||||||
r.ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void playMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
PlayMovie p = new PlayMovie();
|
|
||||||
p.ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void stopMovieToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void playFromBeginningToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void viewToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
private void viewToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
displayFPSToolStripMenuItem.Checked = Global.Config.DisplayFPS;
|
displayFPSToolStripMenuItem.Checked = Global.Config.DisplayFPS;
|
||||||
|
@ -1293,42 +1013,35 @@ namespace BizHawk.MultiClient
|
||||||
startPausedToolStripMenuItem.Checked = Global.Config.StartPaused;
|
startPausedToolStripMenuItem.Checked = Global.Config.StartPaused;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void pauseWhenMenuActivatedToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.PauseWhenMenuActivated ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void soundToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SoundConfig s = new SoundConfig();
|
|
||||||
s.ShowDialog();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MainForm_Load(object sender, EventArgs e)
|
private void MainForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rAMPokeToolStripMenuItem_Click(object sender, EventArgs e)
|
private void frameSkipToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
RamPoke r = new RamPoke();
|
miDisplayVsync.Checked = Global.Config.LimitFramerate;
|
||||||
r.Show();
|
miAutoMinimizeSkipping.Checked = Global.Config.AutoMinimizeSkipping;
|
||||||
|
miLimitFramerate.Checked = Global.Config.LimitFramerate;
|
||||||
|
miDisplayVsync.Checked = Global.Config.DisplayVSync;
|
||||||
|
miFrameskip0.Checked = Global.Config.FrameSkip == 0;
|
||||||
|
miFrameskip1.Checked = Global.Config.FrameSkip == 1;
|
||||||
|
miFrameskip2.Checked = Global.Config.FrameSkip == 2;
|
||||||
|
miFrameskip3.Checked = Global.Config.FrameSkip == 3;
|
||||||
|
miFrameskip4.Checked = Global.Config.FrameSkip == 4;
|
||||||
|
miFrameskip5.Checked = Global.Config.FrameSkip == 5;
|
||||||
|
miFrameskip6.Checked = Global.Config.FrameSkip == 6;
|
||||||
|
miFrameskip7.Checked = Global.Config.FrameSkip == 7;
|
||||||
|
miFrameskip8.Checked = Global.Config.FrameSkip == 8;
|
||||||
|
miFrameskip9.Checked = Global.Config.FrameSkip == 9;
|
||||||
|
miSpeed100.Checked = Global.Config.SpeedPercent == 100;
|
||||||
|
miSpeed150.Checked = Global.Config.SpeedPercent == 150;
|
||||||
|
miSpeed200.Checked = Global.Config.SpeedPercent == 200;
|
||||||
|
miSpeed75.Checked = Global.Config.SpeedPercent == 75;
|
||||||
|
miSpeed50.Checked = Global.Config.SpeedPercent == 50;
|
||||||
|
miAutoMinimizeSkipping.Enabled = !miFrameskip0.Checked;
|
||||||
|
if (!miAutoMinimizeSkipping.Enabled) miAutoMinimizeSkipping.Checked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.SaveWindowPosition ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startPausedToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Global.Config.StartPaused ^= true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void luaConsoleToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
BizHawk.MultiClient.tools.LuaWindow l = new BizHawk.MultiClient.tools.LuaWindow();
|
|
||||||
l.Show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -120,6 +120,9 @@
|
||||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>30</value>
|
||||||
|
</metadata>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// This code was generated by a tool.
|
||||||
// Runtime Version:2.0.50727.3053
|
// Runtime Version:2.0.50727.3615
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
|
@ -116,6 +116,12 @@ namespace BizHawk.MultiClient.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static System.IO.UnmanagedMemoryStream nothawk {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetStream("nothawk", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static System.Drawing.Bitmap PCEngineController {
|
internal static System.Drawing.Bitmap PCEngineController {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("PCEngineController", resourceCulture);
|
object obj = ResourceManager.GetObject("PCEngineController", resourceCulture);
|
||||||
|
|
|
@ -160,4 +160,432 @@
|
||||||
<data name="undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="undo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\images\undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\images\undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="nothawk" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>
|
||||||
|
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
|
||||||
|
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
|
||||||
|
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
|
||||||
|
AQEBCQIAAAAAAAAAAAAAAHhiAAB4YgAAAAEAAQoPAgAAAHhiAAACUklGRnBiAABXQVZFZm10IBAAAAAB
|
||||||
|
AAEAIlYAACJWAAABAAgAZGF0YYBhAAB/f39/gICAgH9/f39/gICAgH9/f4CAgIB/f39/gICAf39/gIB/
|
||||||
|
f39/f39/f3+AgH9/f3+AgIB/f39/gICAf39/gICAgIB/f39/f3+AgICAf39/gICAgH9/f4CAgIB/f39/
|
||||||
|
gICAgH9/gICAgH9/f3+AgIB/f39/f4CAgIB/f3+AgIB/f39/gICAf3+AgIB/f39/gICAf39/gICAf39/
|
||||||
|
f4CAgH9/f3+AgH9/f4CAgH9/f3+AgIB/f3+AgICAf3+AgH9/f3+AgICAgICAgH9/f39/f3+AgICAf39/
|
||||||
|
gICAgH9/f3+AgH9/f3+AgICAf3+AgICAf39/gICAgICAf39/gICAgH9/f4CAgH9/f4CAgH9/f3+AgIB/
|
||||||
|
f3+AgICAf39/f39/f3+AgIB/gICAgH9/f4CAgH9/f4CAgIB/f3+AgIB/f3+AgIB/f3+AgICAf39/gICA
|
||||||
|
gH9/f3+AgIB/f39/f4CAgICAgICAgICAf39/f39/f3+AgICAf39/gICAgH9/f4CAgH9/f4CAgH9/f4CA
|
||||||
|
gICAf39/f3+AgIB/f3+AgICAf39/gICAf39/f4CAgH9/f4CAgH9/f4CAgIB/f3+AgICAf39/gICAgH9/
|
||||||
|
f4CAgH9/f3+AgIB/f39/f4CAgH9/f3+AgIB/f3+AgICAf39/f4CAgICAgIB/f3+AgIB/f39/gIB/f3+A
|
||||||
|
gIB/f3+AgIB/f39/gICAf3+AgICAf39/f4CAf3+AgICAgICAgIB/f3+AgH9/f3+AgICAgH9/f39/gIB/
|
||||||
|
f39/gICAgH9/gICAgH9/gICAf35+f39/f39/gIGBgYCBgYGBgIB/fXp4eH2Bg4OCg4WHh4R/e3p7fH19
|
||||||
|
fXx+gYSEgoB/f4GBgYB/f3+Af39+fXx8fn+BgYGBgoODgoB+fX1+fn9/fn6AgYGBgH+AgIGAgICAgICA
|
||||||
|
gH99fX5/gICAf4CAgYKBgH9/f39/f35+f3+AgICAgICAgIGBgH9/f39+f3+Af39/gICAf4CAgICAgH9/
|
||||||
|
f39/gICAgICAgH9/f39/f39/f3+AgH+AgYGAgIGCgH57eHp/g4KAfn+DhYaFgH18fn9/fXl4fYOFhIKB
|
||||||
|
gYKEhYWFgHNobHqDhIF+gYyVlYt/eHR1en58dnR6hIuKgnx9gIKEhIB+gYODg4F7dXV5fH+Afn+Fh4aF
|
||||||
|
gn9+gYF/gH16fH9+e3p4eYCFhoaGhIWIhYB9enZ3fH18fn5/goaFg4GAgIODgH9+fHt/fnx7fH1/goOE
|
||||||
|
hIOCgoJ/fXx6e31+f39/gYKBgoKAfoCAf4CBfn1/gH9/fn1+gIGBgYCBgoGAf399fH1/f4CBgYGCgoKC
|
||||||
|
g4F+fHp6e3x9f4CBgoODg4OEg4SGhn9vX2FyhZCTkIuIiYeDfnt4dXl8dnF1foiQjYWDh4yRiW5TVGmB
|
||||||
|
joyCg5Kgo5eBbWRlb3p9dXJ+kZmTh314eoCBgoaCeXR0dHmChYiLiYKBgoSJin5mVl93iYyDfIOYp6SR
|
||||||
|
emxpb3h7dGhpf5abkIJ8gYuOhnt0dHmAg31zbnF/jJGPiIOFiYiEeWddZneDiIWCiJSalYd3cG90e315
|
||||||
|
dHiEjY2FfXp9goaEgH+Ag4aFgHl1dXl8fHp8gomMiYSBgYWGgn15eHyCgnZlYW6BjpCMjJKbnpN9a2Nj
|
||||||
|
aXB0c3aDk5yaj4WAgYJ+d3Z3eXx/e3V1eH2EiouMi4mHhH15d3h7fn54amBqfouPjo+YpaaWfWlfXmBl
|
||||||
|
cHqEkpmUioSDiIyHfHFucnh6eXl8hJCZm45pSFFxhIeDhJm1u6WDaF1bXWFrc3uOoJ6LenqNnZiDbWdv
|
||||||
|
eHhzcHWGnKGFXFNrh5GIfICasq2RcF1ZYGt0c253lKypkXl2hI+Kd2psdHh5fH2DlZ+LZlZnf4uJgHyN
|
||||||
|
pKmWe2heYWx4eXF1jKetm4J0dnx6bmVqe4mPjYN7gZCbl4ZwX1tqe3xzb3uTqqyZgnZ3fHx0aWVrfI6V
|
||||||
|
joF8go2QhHRudoGGgXdydoGMjYeCgoWIiYeAcFhSZn2HiIiNn66qlXtqY2JnbG9vdYebo5qLgH5+fnZv
|
||||||
|
c3x+fHl4fIeTlY2DgIWOjXRNOlB0jpaRkqO2uaN/YlJRXGxyb3WIm6GYh3+FjY+Gd21sbnR5eHZ+j6Gq
|
||||||
|
l2Q/UHaKiX9/l7W8o31gVVdfbnl2epKknoZydo6emIJrZnF4d3Z5gZOcfFFQbIeVkYiTr72rg19OS1Rk
|
||||||
|
cGttjK23pYZ3h52dhmVUXGlvdICRmYhnYniJjYqDiaKypodmVVNXYHN7dIGnvbCQcml4iYl4aWpzd3h7
|
||||||
|
g5Gio3tQUnGKkIJzfqCypodqW1ljdYJ7dYeir6SGaWJrdXZ1fY2Rhn19f4iYoJJzU0pfeH94cHmavMKr
|
||||||
|
h2pkbHBsY1tlh6aploF4fYR+cnB7i5OKd21xgJSdlIFvX15udnBrdJCwv7KVeW5uaWBaXGd/nbCrk3xz
|
||||||
|
dHV2d3qAhoN5dX2JkZSPiIaDb04/UGqAlaSuvL+ri3BdTEVQZ3mCjpuemIyEhoyLgXZxdHNtbHWEmKme
|
||||||
|
aTxKdZGViH6Vv8unc1BFS15vb2h4nrSwlXVzkquhelRMXW55g5CYhmBXdIuOiYSNr8WxiGJOS1FWXWd0
|
||||||
|
kLG+qol7jaOihl9HUGRxfIyTeFNeiKGhloyYuMCca0w+PkpZaXN7msLUwJJ1gZeTc0s4SGN5k6iVYlB1
|
||||||
|
n6mYgoGgwrmGVkE+R1lrdnqJq8nKp3lqe4uDaVFQZHN+jZqioYNfYHR9gYOBkq2wmnpfU1FVaIGFhZ21
|
||||||
|
sZd2YWJzhId9d3d1d4ORnqaTXzxPdImHeXeWws2re1hJT2N3eW1ylLO4nXJVYYKVkoJ0c3p+f4OLlZJy
|
||||||
|
UFRtgoyGfYytu6iEZVdWYHB6d3qPo6maeF1edY2Xj4F6eXp8fXyCk5+UcEhDX3Z+hI+jvsq3kGpQRkxa
|
||||||
|
anR5iqKpmYJ4gZGWi3xzcGtlZ3KEnKyZYUBXfpGUiIKdwL6ZbE1CSl9wdXmMoaeeiHqKpaiPaEtLX3F/
|
||||||
|
kZ+KWkxylJaLhI+30rmCVUNCR05cboCctryrjHyOpqB9VUBMZHKAlpRlSnCfrKGPiKLFuoRRQT43PVd9
|
||||||
|
m6y1tK6di4yWi2xJOkpsiJyWZjpWmsC7m3+TxMiUVjMvPVJia22Es9bXtId2iZqHWTExUXKImqaMW1uM
|
||||||
|
raSNfoy1wphdPTtIV2NweIGjydO4iWt5k45sQzJMcIOXr6d4WGyPmYl2d5e+u4ldT05RXGt3fYupw8Kg
|
||||||
|
cFtvh4dyXl1rdXuJmKSvnmhJWnB9hn55lLO1mnRbUlVqhIh7hJylmn5hW3KRopmBbWdsfpKdl3tSRWaI
|
||||||
|
joJ1fabPyZhlTEtZa3Nwbn+iuq6IYllykpyNenBzeXd0eYieqpdmQUlrg4V/haLEw6B4XlFSY3NzbHWP
|
||||||
|
o6GJc3qUpJ6Fa2Nrbmxyf5KjlGBCWXuOlZOYtMizhl5JQUZUZ3J9mLGxoYyAjKCdf15MUWFsdIKarZxs
|
||||||
|
V2uAiY+QlKy4nnRYSj8/V4SlppaMkJeZm5eJdmNUVmd5jJd1QEuIrqych4+70KptRjw5PE9tgYycr7q0
|
||||||
|
oZaXlIFdOjlYdIiVfUxRi7W6poqLtsqkZzwvMD1ZeoyMlKi7vKyblZF9WTk1UXWJelFKea/IxaqSosCy
|
||||||
|
e0QnJDlUZ294lcHf0qWEhZKSeUwqMlRxh5mYd2GBqrGdh4Sfu6p1RDZAUWBnanaey9a+lXJ4l5p7UTdA
|
||||||
|
XnSDlaOTbmeInI9/f46tvqBrT05SVFxrd4KbusOwinB5kZFzVE1ecHV5h5uqnnRcaXuGj4yHlqWbg2lU
|
||||||
|
TlZnfIaGlK61n39rbHeBgnlvbGxwgpaio45kT2WAiIF1eZm4t5ZtU1Jebnx+eYSjtKWAXVVsjJeKeHF4
|
||||||
|
hIeAfoeYn4pfQkxofoiJj6jDvpt0XFNWXWlydH2Top6MfH2Pm5N8aWlvcXF0fZKnm2c/T3iQlZGSp722
|
||||||
|
kWZMQ0dZbniAlayqloR7hZqeh2ZWXWtwcXiIorGSWk1mfo6VjZGstZhwVktLVnKTno58e4iWmZSSjoV0
|
||||||
|
Y19pd4SRg1ZHcJWakoiPtNC7hltKREFMZHqDjp2nqJ+VlpmQd1hKVmp4hI12UFyOq6aWipW1vJhlSEFG
|
||||||
|
VGVzfYKPo7OyoZWVkoFgQj9WcYeWhllUiLOwmIKGrMasckU6RVdiZmh3mru/rZKFk6adckY5SVxoc4eg
|
||||||
|
nn94j5mRioWInKSLaFVSVVtmdH+SrLmyl3Nsh5uRdFNKX3F1eoWZsKx+WF5zgIeEgpSrqZFzWUpPYXOA
|
||||||
|
ipyvr5h5aniLjX1pYWl1enl6hJmxsolSQ1x5hH54irDBrIJfUVNecoKDhpaloopuZHKFjId8dXZ3dHmE
|
||||||
|
jpejoXxKQGF7fnyAkbPErIVqXFlga3J0fJCkpI90anmMkINzcnt9d3Z6gYuZoZp/WEZYcHuBhZGrvLGU
|
||||||
|
dmFZXmhvcneDkpiPf3qGlpiLe3BtbXF1eYCNnKCFV0ZgfoqKiJKtvaqDZVdSVWFve4iWnp6RgH6NlY15
|
||||||
|
ZFxod3l3eoOTpKyheEdBYXmBhYaSrbmlg2dYVmJ7j49+bWl2iZOaoJySgW5na25yfYqPgGFWbIGGiZCd
|
||||||
|
tL+qgmBTUVJZa3yHjpCPj46RnqWagmhaXGRnbHmOnY5uZnqKkZKMkKOplXVaTEtWa4GOkZOVlY+Hi5SU
|
||||||
|
inReW2VsdoeVkHVhb4aMh4SJnraykXBcUU1SYnJ/kaWroYx6gJOYhm9fYW5ycXWBkqaieVNadIaNi4iX
|
||||||
|
ra2TcVZJTmBzgIqcqKGOe296j5eJc2Jjcn59en6NoKWIXEladYeMjJSnsKKGaldQV2h4gIiapJuIeXeC
|
||||||
|
jYp8bWlvd3t+gIOLlp6djmtJSWN3gIWKlq23poVsY15eaHZ6fImWlo+EeXqEioeCfHNwc3l+gYaOlJOJ
|
||||||
|
cFZXaHR+ipSgra2cgmtdVVZidH2Fl6aklYV4dXt/enNycnJ3gYiOkZGNi4yMflo9RmaClZyYobGwmHtj
|
||||||
|
U1BccYCDg4qUm5WDeXyFi4Z3a2hrdoOKiYmNlZqSc0tBW3yNk5GSoq+jhGlcWF9xgoWDiY6Oi4WBhYiC
|
||||||
|
d25tc3yBhYaFh4uPkY98Vz9Sc4iUl5Ocr6+UdF1RWXaPj3tmZXmQlZCPk5WPgXFqbHB3f4GEjYxuUldu
|
||||||
|
gpWkqKuuooVpWU5IVXaQk4qFhYyVlpWTi31wZ2RmaG9+j5qdjm5daXuDiYyRoauZc1tdaG91e36AiZCO
|
||||||
|
hoGDjpaRgGtjbHh6eXyIlpFwWWR4hY+TlaKsoodrV01NXHaKj5KXl4+Hho2Sjn9tYmNmaXOBjZypnHRa
|
||||||
|
YnJ+hISIm6ykiW1bVlljdYaTn6GYh3RvgJCOgG9kZ3R9f4CGj5umoX9SQVZve4KJlai1rJBzYVpbZnV9
|
||||||
|
gIiUmZOFenyFiIB2c3NxcnqCh4yQkI6MiYV0U0NWcYWUmJair6qUe2RUVGN0fHp7iZqgloR6foiKgHBo
|
||||||
|
aHF9hoiEhIqRlpOAXUZUdouOiIeWq66YeGJYWmh6gX5/jJyhlH1tbXmHiHxxbXB7iY+Lh4mKhX5+hohz
|
||||||
|
UUpkgZGUjo6eq6WOdGBYXWx8fnZ6jp+fjXh0gIuKfW5pbXeCiomDg4iNj46GcFBJY36KjY2SpbGmjHBe
|
||||||
|
WF1qeX57f4uXmo+DgYaIgXNrbnN2fIGCgYOIjI6Rk4hmS1NwhYuIiJapqZV8Z1tdb4eTiXdsdIePioeK
|
||||||
|
j46Edm9ucHV6foGIlpyJYExdeo+Yl5GYoJiAaFlTXXeTnZF/d4KOi4KChIR/dWxscXiCjZCOkZiPbEtM
|
||||||
|
Y3yQmJWYoJyLeXFtbHJ8gHlwb3uJi4mPlpWOgHJwc3N0eoKJjX5hV2l+i5OYnaepl3xoXFddaXZ+g4iQ
|
||||||
|
lZGJh4yRjoBvZmlucnd7g5Ghn4BcWGyAiomFjp+jlH5tYFthcICLkpOPioF4fIqQiHptanN8fn6ChoyU
|
||||||
|
mI1wUU5lfIiPkZajqp2DbFxVWmx+hYSLmJ+bjHt0eXx5dXNvbXSCjpKRj42HgHx+g3xfSFV2jZWTj5em
|
||||||
|
qZqBaVpVX3R/eXaClqSfinp8homAcmdjaXiGiYeGi5GUkY2GcVNKYHmCg4WPoq2kkHxuZWVteH14eIWT
|
||||||
|
lIl6dHyKkIyCd29scnyCg4OGiISBgYaMj4NjTVt1hImIhZOqsaCGbFpZZ3V5c3KDm6SYgXN4iZOMe25m
|
||||||
|
aHSAgoCBipOUjomJhW5RTGJ5hoyOlKKpoY97a19danl6c3aGlZiOgX+HkpKHeGpiZHB6fYCHkJSSioKA
|
||||||
|
houJgG1TSl96homKlKm5sZR2Y1xcZG91dnuFkZeRiIyVkoRzZmVqcXZ8gYaLkZWam4xmRktnfYeJh5Oq
|
||||||
|
saCGb2BbZnqEfXJzgZGVjYeKjIqAcmxvdHuAgHx8g46Wlo1yVFNvho+NhoufpZB0ZmVue4J/eHV9i5WR
|
||||||
|
gXh+iIuBcGlzgIaEgX+FkZmTc0pFZoaSk46RoaqZfGdgZW51eXh2f4+ZlYd/ho+NfWhhbHl9fn6BiJKa
|
||||||
|
nJBvT09rgoiEgYyjrJ6Fb2JgaHV+f36Fj5CJf36HkY5+bmhrdX6Bfn6EjpSVj4JrV1pufoWGh5CfpZmD
|
||||||
|
cGRiaHV/gH2DkpuUgnV0fYeJgnhybm91f4aJjJCQh3x2eX+Fh4FwXVttgIiHhY+ntquPcmBbX2Vqa218
|
||||||
|
laimk4ODjZKHdWVfYmhvdn6Jl6Kil4d8en6Ae29dT1l0h4yMjpistqiKcGJeYGRoaWt5kKCil4eDjJaT
|
||||||
|
hHRnYGBjaG57jZ2jnpSNiYV/d3Bsa2lgW2h9jJWdoqiroo54Z1pWWmFpcHyPoKehl5CKhHpvam1vbm1v
|
||||||
|
dYGOmJuXkIiDfnhzb21xeH19dW52iJOVko+QlZOGdWdfXmRveH6FkZ6moZGBeHVybm1wdXp+goSFiI2O
|
||||||
|
ioR+e3p6eHh4eXt+gYSJj4x6ZWV3hoqIhYmVmpB9bmViaHWCh4eJjpKOg36EiYd+cmxtcHN5f4OHio2O
|
||||||
|
ioSDg4B7dnN1eoCAdGNkfJGYlo+OmJ+UfmldXGJud3p8hpWgn5KHhYmIfGpeX2hxeH2CipWdnJKGfnx7
|
||||||
|
dnFub3FsaHKEkJSVlJifmol3a2RiZGtzeX+Ik5qXkIyMi4R3amZpbG90e4OKkJOSj4uIg312b2tudHqA
|
||||||
|
fXNxgZOZlo6IjJKMfGxiYmhxeX5/hJGhpJeGfHt9eW5mZ295gIKChYySk4+GfHl7e3h1cHB3gIeMjIFy
|
||||||
|
c4KLiYN+gIyTjH1xbW9zd3p7e4GQnJyPgHp6fHhua3N9goKBgYWMkY+If3l4d3Vxb3J7hYmIhoaKjYyH
|
||||||
|
gHt5eHFkY3GAiY2NkJiclId7cWtqbXFzdX2JlJaPh4OChIF5dXh4dXR0d3+HjZCQi4aAe3h1cXB1en6B
|
||||||
|
hIaIjI2Lh4J+fHx0Z2JsfYeKioyUmpeLfnVvbG1wcnJ2gZCXk4mEhYaEfHRzdnp9fHt6fIGHiomIh4eF
|
||||||
|
f3hycXN4fX+AgoWJioiGg4GBfnl1dXd8gH95d3+Jj4yGgoWJiIB2cG90eXt9fYCHkJKMhH9+f314c3N3
|
||||||
|
fYGDg4KDhYeGgn18foCAfHd4fICCgoKDhYWDgH16en2Af319foCCgoGBgoSEg4B/fXl0dHl/goSGh4qL
|
||||||
|
h4N+eXZ2eHp8fX+Dh4iFgoCBgYB9ent9f4CAgH9/f4B/f3+BgoOEgn59f39+fHx8foCCg4KBgoOBf359
|
||||||
|
fH5/f39/gIGCgH9+fn5/f4CAgICBgYGAgIB/fXx7ent9gYWHh4eHhoN/e3d2d3l7fH+EiIqJhoJ/fn19
|
||||||
|
e3p6fH+AgH+AgYKCgoCAf4CAf359fX5/f39+f3+BgoODgoKCgH57e3t9fn+AgoOEhISDgX99fHt6eXt+
|
||||||
|
gIKDg4OEhYOBf318fHx7e3t8foGDhIWFhYWFg4F+e3l4eHl6fH+ChYiIh4WDgX99enh5e31/f35/goSF
|
||||||
|
hIKBgH9+fXx8fH5/f39/gIKDgoGAf39/f39+fn5+gICAgIGBgYGAf4CAgICAf35/f4CAgICAgIB/f39/
|
||||||
|
f4B/f35/gICBgYGBgIB/fn5+fn5+f4CAgIGCgoCAf35+fn5/f4CAgYGBgYGAgH99fHx9f4CBgoKCgoGA
|
||||||
|
gH99fHx8fX5/gYKDg4KBgIB/fn19fX1+f4CBgYGBgYCAf35+f4CAf3+Af39/fn1+f4CBg4SDgoF/fn18
|
||||||
|
fH1+foCBgoKCgoKCgH9+fn5+fX1/gICAgIB/gIGBgYB/f4CAgH9+fn5/f3+Af4CAgYGAgICAgH9/f3+A
|
||||||
|
gIB/f35+fn5/gIGBgYKBgYB/fn5+fn59fX6AgYKCgoGBgYB/fn59fn+AgICAf39/gICBgYGBgH9+fn19
|
||||||
|
fn+AgIGBgYGAgH9/f39/f3+AgICAgICAgIB/f39+f39/gIGBgYGAf35+fn5+f4CAgICBgYCAf39+f3+A
|
||||||
|
gICAgICAf39/gICAgH9/f4CAgIB/f39/gICAgIB/fn5/f39/gICAgICAgYGBgH9+fXx8fX5/gYKDg4KC
|
||||||
|
gYB/fn59fH1+fn+BgoKCgoKBf35+fX19fn5/gIGBgYGAgICAgIB/f39/f35+fn+AgYGCgYGBgYB/fXx8
|
||||||
|
fX5/gICBgoKCgYGAf35+fX19fX6AgYGCgoKBgH9+fn5/f3+AgIB/f39/f4CBgYGAf39/f39/f4CAgIB/
|
||||||
|
f39/f3+AgICBgYB/f4CAf39/f39/fn5/gIGBgoGBgH9/f35+fn5/gICAgIGBgICAf39/gICAgH9/f4CA
|
||||||
|
gIB/fn5/f4CAgYGAgICAgICAf39+fn5+f4CBgoGAf35+f3+AgYGBgH9/f39/f39/f39/gIGCgYGAgH9/
|
||||||
|
f39/fn19fX6AgYKDgoKBgH9/fn5+fXx8fX+AgYKDg4KBgIB/f359fX19fn+AgoODgoF/f39+fn5+fn5+
|
||||||
|
f4CBgYGBgIB/f3+AgIB/fn1+f4CBgYGBgYGBgIB/f359fHx9f4GDhISDgoB/fn18fHx8fX6AgoOEg4OB
|
||||||
|
f35+fn19fX1+fn+BgoODg4GAf35+fn5+fn9/f3+AgYGBgYCAf39/f39/fn5+fn9/gIGBgIB/gICBgYB/
|
||||||
|
fn5+fn5/gICBgYCAgICAgICAf35+f39/f39/gICAgYGBgIB/fn5+fn+AgICAgICAgYGBgYB/fn1+f3+A
|
||||||
|
gICAgYGAgIB/f35+fn9/gIGBgIB/f3+AgICAf39/f39/f39/f4CAgICBgYCAf35+fn9/gICAgICAgH9/
|
||||||
|
f39/f39/gICAgIB/f39/gICAgYCAf39/f39/f39/f3+AgICAgIB/f35/f39/gICBgYGAgH9/f39+fn9/
|
||||||
|
gICBgYGBgYB/fn5+fn5/f4CBgYGBgH9+fn9/f39/f4CAgYGAgICAgH9/f35+f3+AgICBgYGAf39/gICA
|
||||||
|
f35+fn9/f39/gICAgYGBgYGBf359fX1+f3+AgICBgYGBgYCAf39+fn5/f39/fn+AgICBgYGBgH9/f39/
|
||||||
|
f39/f39/gICBgYGAf35+f4CAgICAf39/f4B/f39/f3+AgIGBgYB/fn5/f39/f3+AgICAgIGAgIB/f39/
|
||||||
|
gIB/f35+f3+AgICAgICAgICAgIB/fn19fn+AgYGCgYGBgH9/f35+fn5/f4CAgYGBgH9/f4CAf39/f3+A
|
||||||
|
f3+AgICAgICAgICAf39+fn5+f3+AgICAgICAgYCAf39+fn5/gICAgICAf39/f4CAgICAgIB/f39/f39/
|
||||||
|
f3+AgICBgYCAgH9/f39/f39/f39/gICAgIB/f3+AgICAf39/f39/f4CAgICAgH9/f3+AgICAgICAf39/
|
||||||
|
f39/gICAgIB/f39/f4CAgYCAf39/f4CAgICAgIB/f39/f3+AgICAgICAgH9/f35/f3+AgICAgICAgICA
|
||||||
|
f35+fn5/gICAgIGBgYGAf39/fn5+f3+AgIGBgICAgICAf39/f35+f3+AgICAgIB/f3+AgICAf39/gICA
|
||||||
|
gIB/f39+fn5/gICAgICAgYGBgH9/fn19fX5+f4CBgYGCgYGAgH9+fn5+fn+AgICAgIGBgYGAgH9+fn5/
|
||||||
|
f4CAgICAgH9/gICAf39/f39/f4CAgICAgIB/f39/f35+f4CAgYGAgICAgH9/f39/f39/f4CAgYGBgICA
|
||||||
|
gIB/fn5+fn9/gICAgICAgICAgH9/f35+fn5/gIGBgYGAf39/f39/f4CAgICAgH9/f39/f3+AgICAgH9/
|
||||||
|
gICAgICAgH9/f39/f39/f39/gICBgYCAgICAf39/f39/f3+AgICAgYGAgICAf39+fn5/f3+AgIGBgICA
|
||||||
|
gICAf39/f39/f3+AgIGBgIB/f39/f3+AgH9/gICAgIB/f39/f39/gICAgICAgICAgH9/f39/f3+AgICA
|
||||||
|
gICAgH9/gICAf39/gIB/f39/f39/gICAgIB/f39/f39/f39/f4CAgIGAgH9/f39/f39/gICAgICAgIB/
|
||||||
|
f35+fn9/gICAgICAgIB/f39/f39/f3+AgICAf39/f3+AgICAgIB/f3+AgH9/f39/gICAgH9/f4CAgICB
|
||||||
|
gIB/fn5/f4B/f39/f4CAgICAf39/f39/gICAgIB/f39/gICAf39/gICBgYCAgH9/f39/f39/f4CAgICB
|
||||||
|
gYCAf39/f39/f39/f39/gIGBgYGAgICAf39/f35+fn5/gICBgYGBgYCAgH9/fn19fX5/gIGCgoKBgYGA
|
||||||
|
f35+fX19fn+AgYKCgYGAgICAf39+fn5+f3+AgYGBgICAgICAgH9/f39/f3+AgICAgICAgICAgH9/f39/
|
||||||
|
gICAgIB/f39/f3+AgIB/f3+AgICAgIB/f39+fn9/f4CAgICAgYGAgH9/fn5/f39/f3+AgIGBgYCAgH9/
|
||||||
|
fn5+f3+AgICAgICAgICAgH9/f39/f3+AgICAgICAgICAgH9/f39/f39/f39/gICAgICAf39/f39/f39/
|
||||||
|
f4CAgIGBgIB/f35+fn9/gICAgICAgH9/f39/f39/f3+AgH9/gICAf39/f4CAgICAgH9/f39/f39/f4CA
|
||||||
|
gICAgIB/f39/f4CAgIB/f39/f39/f3+AgICAgIB/f39/f39/f4CAgICAgICAgH9/f39+fn9/gICAgICA
|
||||||
|
gICAgICAgH9+fn5/f39/f4CBgYGBgYCAf35+fn5/f39/f4CBgYGBgYCAf39+fn5+f39/gICBgYGBgIB/
|
||||||
|
f35+f39/f3+AgICAgICAf39/f39/gICAgICAgH9/f4CAgH9/f4CAgIB/f39/gICAgIB/f39/f39/f4CA
|
||||||
|
gICAgICAf39/f39/f4CAgICAf39/f39/gICAgICAgICAgH9/f39/f39/f4CAgICAgICAgIB/fn5+f39/
|
||||||
|
f3+AgIGBgYCAgH9/fn5+fn5/f4CAgIGBgYCAgH9/fn5+f39/gICAgICAgICAgICAgICAf39/f39/f3+A
|
||||||
|
gIGBgYCAf39/fn5+f3+AgICAgICAgH9/f39/f39/f4CAgICAf39/f4CAgICAgICAgH9/f39/gICAgIB/
|
||||||
|
f39/gICAgH9/f39/f3+AgICAgICAgICAgIB/f39/f3+AgICAgICAgH9/fn5+fn9/gICAgICAgICAgH9/
|
||||||
|
f35+f3+AgICAgICAf39/f39/f39/gICAgICAf39/f39/f4CAgICAgIB/f39/f3+AgICAgIB/f39/gICA
|
||||||
|
gICAgICAf39/f39/gICAgICAgH9/f39/f39/f39/gICAgICAgH9/f39/gICAf4CAgICAgICAgH9/f39/
|
||||||
|
f3+AgICAgICAgIB/f39/fn9/f3+AgICBgYGAgIB/f39+fn5+f3+AgIGAgICAgIB/f39/f39/f3+AgICA
|
||||||
|
gICAgICAgICAgH9/fn5+fn+AgICBgYGAgIB/f39/f39/f39/f4CAgICAgICAgH9/f39/f39/f3+AgICA
|
||||||
|
gICAgH9/gICAgICAgIB/f39/f39/gICAgICAgICAf39/fn5+f39/gICAgYGAgH9/f35+f39/gICAgICA
|
||||||
|
gH9/f39/f39/gICAgICAgICAf39/f39/f39/f3+AgICAgICAgH9/f39/f39/f4CAgIGBgIB/f39/f39/
|
||||||
|
f3+AgICAgIB/f39/f39/f4CAgH9/gICAgICAgICAgICAf39/f3+AgICAgICAgIB/f39/f39/f4CAgICA
|
||||||
|
gIB/f39/f4CAgIB/f39/f39/f3+AgICAgICAgICAf39/f39/f3+AgICAgICAgIB/f39/f39/f39/f39/
|
||||||
|
gICAgICAgH9/f39/f39/f39/f3+AgICAgICAf39/f39/f39/f3+AgICAgICAgICAf4CAgH9/f3+AgIB/
|
||||||
|
f39/f3+AgICAf4B/gIB/f39/f39/f3+AgICAgICAgICAgH9/f39/f3+AgICAgICAgH9/f39/f39/f4CA
|
||||||
|
gICAgICAgICAf39/f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgIB/f39/f3+AgICAgICAf39/
|
||||||
|
f39/f3+AgICAgICAgH9/f39/f39/gICAgICAgIB/f3+AgIB/f39/f39/f39/gICAgICAgIB/f39/f39/
|
||||||
|
f3+AgICAgICAgIB/f39/f39/f39/gICAgICAgIB/f39/f39/f39/f3+AgICAgH9/f39/f39/f3+AgICA
|
||||||
|
gH9/f39/gICAgICAf39/gICAgH9/f39/f4CAgICAgICAf39/f39/f4CAgICAgIB/f3+AgICAgICAgICA
|
||||||
|
gH9/f39/f3+AgICAgICAgH9/f39/f3+AgICAf39/f4CAgICAf39/f39/gICAgH9/f3+AgICAgICAgICA
|
||||||
|
f39/f39/gIB/f39/gICAgICAgIB/f39/f39/f4CAgICAgICAgICAf39/f39/f3+AgICAgICAgIB/f39/
|
||||||
|
f39/f39/gICAgICAgICAf39/f39/f39/gICAgICAgICAgICAf39/f39/f3+AgICAgICAgICAgICAf39/
|
||||||
|
fn9/gICAgICAgICAf39/f39/f39/gICAgICAgICAgIB/f39/f39/f3+AgICAgICAgH9/f39/f39/f4CA
|
||||||
|
gICAgH+Af39/f39/gICAgICAgIB/f3+AgICAgIB/f39/f39/gICAgICAgICAf39/f39/f39/gICAgICA
|
||||||
|
gIB/f39/f39/f4CAgICAgICAf39/f39/gICAgICAgH9/f39/f39/f4CAgICAgH9/f39/f39/gICAgICA
|
||||||
|
gICAf39/f39/f4CAf39/gICAgICAgH9/f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgICAgIB/
|
||||||
|
f39/f39/f3+AgICAgICAgH9/f39/f39/f3+AgICAgICAgH9/f39/f39/f4CAgICAgICAf39/f39/f3+A
|
||||||
|
gIB/f39/f4CAgICAgIB/f39/f39/f4CAgICAgH9/f4CAgICAgH9/f39/f4CAgICAgICAgH9/f39/f39/
|
||||||
|
gICAgICAf39/f39/f4CAgICAgICAgH9/f39/f3+AgICAgICAgIB/f39/f39/f3+AgICAgICAgH9/f39/
|
||||||
|
gICAgICAgH9/f3+AgICAgICAgH9/f39/f39/gICAgICAgICAgH9/f39/f39/gICAgICAgICAgICAf39/
|
||||||
|
f39/f39/gICAgICAgH9/f39/f39/f39/f39/f39/f4CAgICAgICAf39/f39/f3+AgICAgICAgIB/f39/
|
||||||
|
f3+AgICAgH9/f39/f3+AgICAgICAgH9/f39/f39/f3+AgICAgICAf39/f39/f39/gICAgICAgH9/f39/
|
||||||
|
f3+AgICAgICAgICAf39/gICAgICAf39/f39/f3+AgIB/f39/f39/f39/gICAgICAgH9/f39/f3+AgICA
|
||||||
|
gICAgIB/f39/f39/f4CAgICAgICAgH9/f39/f3+AgICAgICAgICAgIB/f39/f39/f39/gICAgICAgIB/
|
||||||
|
f39/f39/f39/gICAgICAgH9/f39/f39/gICAf4B/f39/f4CAgICAgH9/f39/f39/f3+AgICAgICAf39/
|
||||||
|
f39/f39/f3+AgICAgICAf3+AgICAf39/f39/f4CAgICAgICAgIB/f39/f39/f4CAgICAgICAgH9/f39/
|
||||||
|
f39/f3+AgICAgICAgIB/f39/f39/f39/f39/f4CAgICAgICAgIB/f39/f39/f4CAgICAgICAf39/f39/
|
||||||
|
f3+AgICAgICAgIB/f39/f4CAgICAgH9/f39/f4CAgICAgICAf39/f39/f3+AgICAgICAgH9/f39/f39/
|
||||||
|
f4CAgICAgICAf39/f39/f39/gICAgICAgH9/f39/f39/gICAgICAgIB/f39/f39/f39/gICAgICAgH9/
|
||||||
|
f39/f39/gICAgICAgIB/f39/f3+AgIB/f39/gICAgICAgICAgH9/f39/f39/gICAgICAgIB/f39/f39/
|
||||||
|
f4CAgICAgIB/f39/f39/f39/f4CAgICAgICAgH9/f39/f3+AgICAgH9/f4CAgH9/f39/f4CAgICAf39/
|
||||||
|
f4CAgICAgH9/f39/f39/f39/gICAgICAf39/f39/f4CAgH9/gICAgH9/f39/gICAgIB/f39/f39/gICA
|
||||||
|
f3+AgICAgICAf39/f39/f39/f4CAgICAgIB/f39/f39/f39/gICAgICAgIB/f3+AgH9/f39/f4CAgICA
|
||||||
|
gH9/f39/f4CAgIB/f4B/f39/f39/f4CAgICAgICAf39/f39/f3+AgICAgICAgIB/f39/f39/f4CAgICA
|
||||||
|
f4CAgIB/f39/f39/f4CAgICAgICAgICAf39/f39/f4CAgICAgICAgIB/f39/f39/f4CAgICAgICAgH9/
|
||||||
|
f39/f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAf39/f39/f39/gICAgICAf39/f39/gICAgICA
|
||||||
|
gH9/gICAgIB/f39/gICAf39/gICAgICAgIB/f4CAgH9/f39/f4CAgICAgH9/f39/f39/f3+AgIB/f39/
|
||||||
|
f3+AgICAgICAf39/f3+AgICAf4CAgICAgH9/f39/f39/f39/gICAgIB/f39/f4CAgICAgH9/f39/f4CA
|
||||||
|
gICAgICAgIB/f39/gICAgICAgICAgIB/f39/f4CAgICAgH9/f39/f39/f4CAgICAgIB/f39/f39/f3+A
|
||||||
|
f39/gICAgIB/f39/f4CAgICAgICAgH9/f39/f4CAgICAgH+AgICAgICAgIB/f39/f39/f39/gICAgICA
|
||||||
|
f39/f39/f3+AgICAgIB/f39/f39/f3+AgICAgICAgH9/f39/f39/f4CAgICAgICAgIB/f39/gICAgIB/
|
||||||
|
f3+AgIB/f39/f39/f39/f4CAgIB/f39/f3+Af39/f3+AgICAgICAgICAgH9/f3+AgH+AgICAgH9/f39/
|
||||||
|
gICAgICAgICAgH9/f39/f39/f39/f4CAgICAf39/f4B/f39/f39/f3+AgICAgICAgICAgH9/f39/f3+A
|
||||||
|
gICAgICAgICAgIB/f39/f39/f4CAgICAgIB/f39/f39/f4CAgH+AgICAgIB/f4CAf39/gH+Af39/f3+A
|
||||||
|
gICAf3+AgICAgH9/f39/f39/f39/gICAgICAgICAf39/f39/f39/f4CAgICAgIB/f39/f3+AgH9/f4CA
|
||||||
|
gIB/f39/gICAgICAf39/f39/f39/f4CAgICAf4CAgICAf4CAgH9/f39/f4CAgICAgICAgICAgH9/f39/
|
||||||
|
f39/gICAgICAgH9/f39/f39/gIB/f3+AgICAf3+AgICAgICAgH9/f39/f4CAgICAgH9/f3+AgIB/f4CA
|
||||||
|
gICAgH9/f4B/f39/f39/f3+AgICAgICAgH9/f39/f39/gICAgICAgH9/f39/gIB/gICAgIB/f4CAgH9/
|
||||||
|
f3+AgICAgH9/f39/f39/gH9/f3+AgICAgICAgICAf39/f39/gICAgIB/f39/f39/f39/gICAgICAgH9/
|
||||||
|
f39/f4CAgICAgIB/f39/f39/gICAgICAgH9/f39/f39/f4CAgICAgICAgH9/f39/f4CAgICAgICAgIB/
|
||||||
|
f39/gICAgICAgH9/f39/gICAgICAf39/f39/f39/f4B/f39/f39/f39/f39/f39/f4CAgH9/f39/f39/
|
||||||
|
f39/gICAgICAgICAf39/f3+AgICAgICAgICAgICAgIB/f4CAgICAf39/f39/gICAgICAgICAgH+AgH9/
|
||||||
|
f39/f4CAgICAgICAgICAf39/f39/f39/f4CAgICAgICAf39/f39/f39/f3+AgICAgICAgICAgIB/f39/
|
||||||
|
f3+AgICAgICAgIB/f3+Af39/f39/f4CAf39/gICAgICAgH9/f39/f39/f3+AgICAgICAgH9/f3+AgH9/
|
||||||
|
f39/f4CAgICAf3+AgICAgH9/f39/f39/f3+AgICAgIB/f39/f4CAgICAf39/gICAgIB/f39/f39/f39/
|
||||||
|
f39/f4CAgICAf39/f39/f39/f4CAgICAgH9/gICAgIB/f3+AgICAf39/f4B/f3+AgICAgICAgIB/f39/
|
||||||
|
f39/gICAgIB/f39/f39/f39/f4CAgICAgIB/f39/f39/f4CAgICAgH+AgICAgICAgH9/f39/gICAf3+A
|
||||||
|
gICAf39/f3+AgICAf39/f4CAgICAf39/f4CAf39/f4CAgICAf3+AgICAgICAgH9/gICAgICAgIB/f39/
|
||||||
|
f4CAgH9/gICAgIB/f39/f4CAgIB/f4CAgICAgH9/gICAgIB/f39/f39/gICAgICAf39/f39/f39/gICA
|
||||||
|
gICAgH9/f39/f39/f3+AgICAgIB/f39/f3+AgH9/gICAgIB/f3+AgICAgH9/f39/f39/f39/gICAgICA
|
||||||
|
gH9/f39/f4CAgICAgICAgH9/f39/gICAf3+Af4CAgICAgIB/f4CAgICAgH9/f39/f39/f3+AgICAgIB/
|
||||||
|
f39/f39/f39/f3+AgH+AgICAgICAf39/f39/gICAgICAgICAgICAf39/f4CAf39/f39/gICAgICAgH9/
|
||||||
|
gIB/f39/f39/f39/gICAgICAgICAf39/f39/gICAgICAf39/gIB/f39/f3+AgICAgICAgH+Af39/f3+A
|
||||||
|
gICAgICAgIB/f39/f4CAf39/f4CAgH9/f39/f4CAgIB/f39/gICAgH9/f39/f4CAgICAgIB/f4CAgIB/
|
||||||
|
f39/f4CAgICAgICAgICAgH9/f39/gICAf39/gICAgICAf39/f39/f39/f39/f4B/f39/f39/f3+AgICA
|
||||||
|
gH9/f4CAgICAgICAgICAgIB/f39/f4CAgICAf39/f3+Af39/f3+AgICAgH+Af4CAgH9/f39/f39/gICA
|
||||||
|
gICAf4CAgIB/f39/f4CAgH9/f4CAgICAgH9/f3+Af39/f39/gICAgICAgH+AgICAf4CAf4CAf39/f39/
|
||||||
|
gICAgICAgIB/f39/f39/f39/gICAgH9/f4CAgICAf39/f39/gICAgICAgICAgH9/f39/f39/gICAgICA
|
||||||
|
f39/f39/f39/f4CAgICAgICAgICAgH9/f39/f3+AgICAgIB/f39/f4CAf39/f3+AgICAgH9/f4B/f3+A
|
||||||
|
gICAgICAgH9/f39/f3+AgH9/gICAgICAf39/f39/f3+AgICAgICAgICAf39/f4CAgH+AgICAf39/f3+A
|
||||||
|
gH9/f4CAgICAf4CAgH9/f39/gICAgICAgICAf39/f39/f39/f4CAgICAgICAgH9/f39/f4CAgICAgH9/
|
||||||
|
f4CAgICAf39/gIB/f39/gICAgICAgICAgH9/f4CAf39/f3+AgICAgICAgIB/f39/f39/f3+AgICAgICA
|
||||||
|
gICAf39/gICAf39/f4CAgIB/gICAf39/f39/f39/gICAgICAgH+AgH9/f39/gICAgH9/f4CAgIB/f4CA
|
||||||
|
f39/f3+Af39/f4CAgICAgICAgIB/f3+AgICAf39/f39/gICAgICAf4B/f4B/f39/f4CAgH9/f3+AgIB/
|
||||||
|
f39/f39/f4CAgIB/f3+AgICAf3+AgIB/f39/f39/f39/f4CAgICAgICAgH9/f39/gIB/f4CAgIB/f3+A
|
||||||
|
gICAf3+AgICAf39/f4CAgH9/f4CAf39/gICAgH9/f3+Af39/f3+AgICAf39/f4CAf39/f3+AgICAgICA
|
||||||
|
f39/f3+Af39/gICAgH9/f4B/f39/f3+AgIB/f3+AgICAgH9/gICAf39/f3+AgICAgICAgH9/f3+Af39/
|
||||||
|
f39/gICAf39/gIB/f3+AgIB/f39/f4CAgH9/gICAgIB/f4CAgH9/f39/f39/f39/gICAgICAgICAgH9/
|
||||||
|
f39/f39/f4CAgICAgICAgICAf39/f39/f3+AgICAgIB/gICAgH9/f39/f3+AgICAgICAgH9/f39/f39/
|
||||||
|
gICAgH9/gICAgH9/f39/gH9/f39/f3+AgICAgICAf4CAf39/gH9/f4B/gICAgICAgICAgH9/f39/f39/
|
||||||
|
gICAgIB/f39/gICAgH9/f39/f39/f3+AgICAgICAgIB/f39/f3+Af39/gICAf3+AgICAf39/gIB/f39/
|
||||||
|
f4CAgICAgIB/f39/f39/gICAgICAgICAf39/f39/f39/f3+AgICAgICAf39/f3+Af3+AgICAgICAgIB/
|
||||||
|
f39/f4CAgH9/f3+AgICAf39/f3+AgIB/f4B/f3+AgH9/gIB/gICAf39/gICAgH9/f4CAgH9/f3+AgIB/
|
||||||
|
f39/gICAf4B/f3+AgICAgICAf3+AgICAf39/gICAgIB/gICAf39/f39/gICAgH+AgICAf39/f3+Af3+A
|
||||||
|
f39/gIB/gICAf3+Af39/f39/f4B/gICAgICAgH+AgH9/f39/gH9/gICAgICAgICAf39/f39/f3+AgICA
|
||||||
|
gICAgICAf39/f39/f39/gICAgICAgH+AgH9/f39/f4B/f4CAgIB/gICAgIB/f39/f3+AgH9/gICAgIB/
|
||||||
|
f3+Af39/f3+AgICAf4CAgICAgH9/gICAf39/f4CAgH9/gIB/f39/f3+AgH9/f3+AgH9/f3+AgICAgICA
|
||||||
|
gICAf39/gICAf39/f4CAf39/gICAgIB/f3+Af39/f39/gICAgICAgIB/f39/f4CAf39/gICAgH+AgH+A
|
||||||
|
gH9/f39/gH9/gICAgICAf39/f39/f3+AgICAgICAgICAgH9/f4CAf39/f4CAgH9/f3+AgICAf3+AgIB/
|
||||||
|
f39/gICAgH+AgICAf39/gIB/f39/f4CAgIB/f39/f3+Af4CAgH9/f3+AgIB/f4CAgICAgH9/gH9/f39/
|
||||||
|
gICAf3+AgIB/f39/f4CAgIB/f4CAgICAgH+AgH9/f39/gICAf39/f4CAgH9/f4CAgH9/gIB/gIB/f4CA
|
||||||
|
gICAf39/gICAgH9/gIB/f4B/f39/f3+AgICAgH9/f4CAgIB/f39/gICAgH9/f39/f4CAgICAgH+AgH9/
|
||||||
|
f39/f3+AgIB/f4CAf4CAgH9/f39/f3+AgH9/f4CAgICAgH+Af3+AgH9/f39/f4CAgH9/gH+AgICAf39/
|
||||||
|
f39/gICAgICAgIB/f4CAf4CAf3+AgH+AgICAgICAf3+AgH9/f4CAgICAf39/gH+AgH9/f39/f3+AgICA
|
||||||
|
gIB/f4B/f4CAf39/f4CAgH9/f4CAgH+AgH9/f39/f4CAgICAgICAgICAf4CAf3+AgH+AgIB/gH9/gICA
|
||||||
|
gH9/f4CAf3+Af3+Af39/f4CAgH9/f39/gICAgH9/f4CAf3+AgH9/gICAgICAgICAf4CAgICAgH9/f4CA
|
||||||
|
f4CAgICAgH9/f39/f3+Af3+AgICAgIB/f4B/f39/f39/f3+AgICAgICAgIB/gICAf39/f4CAgIB/f39/
|
||||||
|
f3+AgH9/gICAgICAf39/f39/f4CAgH+AgH9/gH9/f4B/gICAgICAgICAf4CAf3+Af39/gICAgIB/f39/
|
||||||
|
f3+AgIB/gICAgICAgICAf39/f4CAf39/f39/gICAf3+AgICAgH9/f39/gICAgH9/gICAgH+AgIB/f39/
|
||||||
|
f4CAgIB/f4CAgIB/f3+AgICAf39/gICAgH9/gICAf39/gICAgICAgICAgICAgH+AgH9/f39/f4CAgICA
|
||||||
|
gICAf4CAgH9/f35+f39/f4CAgYGBgYGAf39/gH99eXh6f4OEg4ODhYaFgn98enp7fH5+fX6AgoODgoB/
|
||||||
|
f4CAgIB/f35/gIB+fXx9foCBgYCBgYKCgoF/fn1+f39/fn5/gIGBgYB/f4CAgYGAgH9/gIB/fn5+fn+A
|
||||||
|
gICAgIGBgYGAf35+f39/f39/f4CAgIB/f3+AgICAf3+Af39/f39/f39/gICAgICAgICAgH9/f4CAf39/
|
||||||
|
f3+AgICBgYGBgH59fX19fn9/gICBgYGCgYGCg4ODgHZsbnmDiIqGhIWHhYOCgX59gIB9d3JzeX+Cg4OD
|
||||||
|
hIWGh4WDgH59f4KCeGdhbXyHi4iFi5SXkomAdW5udHh7eHV6hImKiYR/foCChIWEf3x+gYB8dXByeH6E
|
||||||
|
h4aEhYeIh4WBfXp7e3p5d3d6foGEhYWFhoaGhYJ+e3p8fHt7ent9gIKDg4KCg4SEg4F/fX19fHt7e3x+
|
||||||
|
gIKCg4SEg4OCgH99fX19fX1+f39+fYCCg4KAf4CBgYGBgX99foCBgoJ/dmtrdoKJi4qMkZOOhXtybG11
|
||||||
|
foKCfnp8gYOEhoeGhIKBf3x6eXx/gYOGhnxnW2Z6houMj5qkopSEdmhfX2ZvdXuCjpeYk4uDfX6AgYB6
|
||||||
|
cGdpdIGKjYqIiIqMkI98XEpYcoOMioaPn6Wdj35rYGNvfIN+eHqAgoaJiYmJiYmHgnlxcHZ/hYeDd2Zg
|
||||||
|
cYSLh4KHmKajkYBzaGRpcHR1c3mJlJKKhIKFiomHhH51b3J5gYiGdmRic4eRj4SDkqCej39wZWRrc3V0
|
||||||
|
cnqNmpmSjIaDgoB7d3JucHmCg3x2eIOQmJeOgnt6fntuYWBpeYuUk5COjY6Oh3hraG95gIKAf4GFiIqF
|
||||||
|
fHZ1e4SKh4B7enyChoR/f4KFiIZ5ZFpkdYOLjo+Wn6GXh3ZnX2Focnp9gY2XmJCEenh+g4SAd25sc3+K
|
||||||
|
jYmHiIyRkoRgQUdjfY+UkputsaORfmVSUmBwfH98gYmNjpCQkIyFgoJ7bmZncH2JkJSIaFRng4yKhIWa
|
||||||
|
sKyTfm1cV2BtdHR3hJackoWCi5eViHtyamZqcnuIlY5vVGB9jZGKhJWxt5+Cb11TWGFmaWx5lamklI6T
|
||||||
|
nJuMempfW2FvgYdyU1d+nqeilZOhq6CKclVCR1xveXl6i6SwqJaDeX2IjYZzXVRdc4ualnhcZIafopB3
|
||||||
|
dI2gm4dwWlFfdoWIgHuGnKach3RoanWAhoJ6dXZ+ho2QkpCEbFtic3p6fYOQnqKYinxvaWtwdHd9h5KW
|
||||||
|
kIZ+d3FsbXmJkYyDfHyBiY6Oi4V+c2FQVmdyfIydsLu0nIV1Z11bXWFreIeUlouCho6RkIuEf3pxaWhw
|
||||||
|
fY2akW1OVXWMkouGl7O5o4ZsVUhQZXR3dHuSp6aYioWMkIh8cGZeYGx/k6CVb09Ye5KWjoaUsruif2VR
|
||||||
|
SFBfanB3hp2sp5aMkpyZh3FgVldjdImOa0NViau1qpeasLCVeV9AMkFZbXl7g524vrCdkpCMfWlYTUxc
|
||||||
|
d4h/Y1t2mK+0qaGnq5qBalA5N0VZbHyHmK+7uaydk4yAbV1TT1JjfY19XmGDorOxoZqlp5J6Z0w4PFFm
|
||||||
|
d4ONnbCzpZaPjo2GdGRbUU9jg5yegl5fhKKnmoWEmqeZgGdMPkxoeoOGiZaqrpyHfHt/gH52aFxdboad
|
||||||
|
pY5gTmyNmZmLf46lp5J2WkdHW3eOlIuLnKabhG5haYCTlYdwX2BxjKWtnXdORmiJinhse6XGv5p3YVVa
|
||||||
|
bXh0a2yBm6GRfXqIl5iPg3ZoY2t8j5iBUzxahZqgmZKftbacfF5FP1BmdHh3gJmsqZqRkpaQgW9fVFZk
|
||||||
|
epSadkhPgKSto5GYsLKXfWRFNT9VaXmFkaS1s6CSlJiOemZXTVJpg4ltSlR/pLq6qKWyrZB4YkEqMEdh
|
||||||
|
doKPqMHIuqOVkIVxXU9GSV96g21Za4+tv7qqqrChf2VUPzA2S2Bziqa+ycOwnZOJe2dTQ0JTbYWHa1Zt
|
||||||
|
mLXAuKinq5x8Y0suJz9ccIOSn7PCv6+dkIZ5aVhIQEdggqKqiWNnjKivoIiHmZ6PdlpAO0pedYiNkKS9
|
||||||
|
vaaRhoF9c2JTTVFigJ2igVhdiKu1po+OnqCKcFY9NEZkfI6Yn623rJSAeXh7enRpWExYfKS5qHNKXYqi
|
||||||
|
oYx3fZinmX5gRkJYdIaOjo+ao56NgH18e3t3bWRjcISbqI9aRWaJmqKXi5SjoI53WUBBV3KIkYqKmqSd
|
||||||
|
k4+Mhn5zZl1aYnaSpJNgQ12KoqaclaKxqIxyVzswP1t2ipilsbKll5WXj3phUEpQZIKRf1lRd6C5vaic
|
||||||
|
qK2TdmVKKiI4W4Gfqauxtq+lpJqAYkg9Rlt2hnNLToCuxsewpLG4m3NUMRcePGOFmZ+sv8S7sKSPdWBR
|
||||||
|
S1BaWT80X5S0x87Hycu1imNCIxYkPFx/k52zzM7Cu6uJaFJHSlhgTjA4bJ+9y8jEyce0k2k7FgwjSGN2
|
||||||
|
jKS/0tPGtZ+EaVRIR09TRDVOgae8xsbIy76deFk+LS47Slxtfpq6ztLMvqKCZ1RHP0JSZ3d0ZnGTsby0
|
||||||
|
paezqottUzsxOUtdbX6TsczRv6aWinpoVklDSFx7jHtkcZSuu7Wkoqeae2VXQDI8VGp/j5qqvcO4ppaG
|
||||||
|
c2FTS0hPZICQgmtyj6i1sKCbn5d/aFVAOUdcbH6Pm6u8u6qZj4R5bVtMR1BjfZqmkWtlhKCpoY+MmJuK
|
||||||
|
cVpIQEthdYWQnK65rpSCg4mFdGBRTVZsiqapfk1UhaeqnIqSqquPc11DND5Xc4udqK2toI2JlZiHbFVK
|
||||||
|
TV11kp19TFGHscCyko6mqo1wWTokMFV7mqmlo6ionZeZj3pjTUdTaoWLaEJVjLTHwaehr6uLaE0vHSpS
|
||||||
|
e5afnqe2urGkloNvXlFKT2R6bU1TgKa9x7ituLeVa1M6IiM9Y4WXmaO4wbuzp49zX1BMU2BnWD9NgKm/
|
||||||
|
x7yyvcWpe1UxFx89WHOKkp++0cWzqph8Y1BGS1lgTzpRhq3Ax8K8vbicd1c6Jio/Vmh5hpy7z829q5iE
|
||||||
|
cl9LPTtMaIKHcGN/qL69raOoq5dzUjwwMkJYcYeatMrLtZyPjYd4YUo8PFJ0kZZ4X3afucKwlZWgk3Zh
|
||||||
|
SjQySWZ7iZGet8W6opCGgn1sUkRETWKCpLOdcWKAnqCUg3+Uo5Z6YU1BSWF3hY6Yq7itkH2AjIl1YldT
|
||||||
|
V2Z7kKmuh1pki5iShnqHo6eNdmNMRFdwgYyPkaCrn4h8gISAeG1gWmFygpWoqodZV3aGiIeAiaiym39q
|
||||||
|
VUlTaXyGipGdoZN+e4uVi3ptY2FncHqJnqqVZk1heoaMiIynuquKbVZIS1dlfJSgoJmKfYKVopiDblxW
|
||||||
|
YnJ9jp6FVExzlJ6Yio+vwqmBY0c0PVhvg5OZm56ZkJKeoI93YVVTXGx/kJFxUmeQp6qbkJ2tpottUToz
|
||||||
|
QWOIm5uUlJ6hnJyeknthUFBaaHuMhGJVeJ6vsJ2Pn7KhfGRQOjZJZX6Ql5qlrqidnJyPdlpGR1tygHZa
|
||||||
|
U3egu8Ovm6Com3xiSzc0RV51hpKitLesoZ2Zj35jTEJGVm6HmIhmaJCts6qWj5ygiW5aRDdFX29+k6Gs
|
||||||
|
t7CYh4uSindeSkhTZXqTpZpyX3ydpJqGgJKimX5pVkVFW3iJioqdtbKXfXmHj4BqX1xeaHR9jJ+rpIRi
|
||||||
|
W2l6g4GAkqqslX1sW1BXaHuIkJeblIh+f4yRiHxvamxubnKBk5+fiWVXan2ChIOLoq+fhHFgU1dlcXyJ
|
||||||
|
lqKqoIp4cm9vdHx/fHJvdoGNkpWZnZd/W0hUZGd0h5WmtK+biXlnX2FnbniDjY6Hf32Bio6Jh4aAd3Jx
|
||||||
|
cXaCjJKWjGtRW3F9goSKoLKsloJxYVpeZ3J9hY2VkoeBg4uNhHt4d3R0dXZ6g42XoZx4S0JZbXyMlKC3
|
||||||
|
vaiOe2NNR1Nqf4mMjIiCgo2eppuHd21paWloboGTmY1vV2B5ipOWm6qzpYdtWklAS2iIm56WjIWEi5uj
|
||||||
|
loFvY2FnaWlvg5qjlHFea32Fi46VpaybfWZZUlVic4SPkY6Lh4mUoaWXfmdbWmBqdoaRg2NhgpyhmIyS
|
||||||
|
paeRdlxFQVt4gIOHiJCdm42KlJiQf2pZVVxqeoiXm4Nla4aPioiKmKuqjG1dUU1ZbHuKlZialod+iZma
|
||||||
|
i3ZjXWBpdH6KkIFna4iVj4mGkqaokntpVElVZ3F8iZakqpyEe4eNhHlwa2dnbXR8h5ajo4xmU2N6hIKC
|
||||||
|
jqOrnId1ZFhZY297iZWaloyAfImVj35ya2docHh+hI6XnJ2MZU5ccXuCiZGepZ6NfWxbV19tfomOl6Kh
|
||||||
|
koN5c25rbnd7dHN7hY+ampCJiYqJe1k8Ql53i5ebqbi1o453X1FSXWt3fIGNlJWSi4eHh4eGf29laHB6
|
||||||
|
goSDho+YlYBiV2V3hYyLjJedlId+cWBbZneGjIuNlZaPhXtycHZ+gHtvaXKDkZaSjIqIgoGJjHhROUxy
|
||||||
|
ipOSkqC0uKaMbVNKWWx1dXN6jJmYk4+OioeFfXFpanBydnyBhpCdo5NtT1Rqe4eLi5emppeFcVxRWm6D
|
||||||
|
kZKNiYR/gImRjoN1a2txeH2Ag4WIiouQl45oQkZlfpCZk5ioqpaDdF9QXXyPi3ttcIGNjZCWlYyDenFt
|
||||||
|
cHV5f4SGiIBqW2Z6jJmbmaKolHJhYGJqd39/fHp/ipCPjY+Pi4F1bG1xcnF3g5KdmXpXV3CCjZKPlqOf
|
||||||
|
hnBoZGZzf315fIKKjoiBh5KVjoJyZmVvd3uCiYuDcm15goaJi5CanpF7bGVgXWR2iZSVk46GgYKKj4h6
|
||||||
|
bmhqcnZ1eomVmZmXhWdXYW95gIOMnaOYjIN2ZV9mcn6Jj4+Kgn19hoyHfnh3dnZ5fH2BiY2MjY+EaVJW
|
||||||
|
anuIkJKbpKOVhHVkWFppeICEipGTj4uKiod+dXFwbm1xeIOOko+LiIWHjo12UkVbeYmMiY+fqaSWhHBe
|
||||||
|
WWJ0gH97gY+VkIaBgYKDg352bWxxeYOJiYiJiYiLkIx2VkldeIaJhYmcrKqbh3JfWmVzenl3fo6Yk4Z+
|
||||||
|
foOKjYl9bmVmb3uEiIqLjIuHhomKhXhfUF1zf4OGiZiqr6OSfGVbYGhqam14jJuclpGQjomFfnFjXWBo
|
||||||
|
c4CKkZmblI6NjYqEclNATWl+iImOoLO1ppJ6Z15ham9raHB+jJOUlJmbk4d9dGtkZWpxeH+Fi5CQjpKW
|
||||||
|
lo1yUUdZbnuFiZCir6iXhnNiXmh0e3t5eoCIjY2RlJGIfXRua2xvdHyChYiOk5aalXlVUWZ2fX58h5qi
|
||||||
|
mo+GeG1ygYeAc2hpeIGBhZGVj4iDfnl5e3t6eXZ0d4CJkZWLcF5sgoqHf3yJmZmJfHNscX+FgHl1eYOG
|
||||||
|
gX+GjIqEfnt7fn9+eXd4e4CHj49/aWJxgIiKiIqUmpKBdGxmZm9+iouHh4qIgn6EiYV7cG1xeHx+g4qM
|
||||||
|
iYeHh4iJgWxXWGx/ioqFjZ6lnIx8bWRmb3d5eX6GjIuJiIuMhn12c3NzdHd9g4aHiYuIgoOIin9pWFxw
|
||||||
|
f4SGiJOjqJuKfG5kY2txcnJ3hZKVkYyKjY+LgXlwaGVna3J8hI2Xm5eRjYiBenVxbmtjXWR2hpCZnqKm
|
||||||
|
opaFdWVbWmBmbnaAjZmbmJWSjoqGfnNqZGNla3R9hpCVlpORj4uCe3ZzcXFzc21mbH6MlJaVmJ6ckYR2
|
||||||
|
Z15eY2pyeoCLmZ6ZkImEg4F9d3BrbnN3en6EiIyNiYSChISCf3p2d3l7f4OBdmpugIyNiYWLmJqPgnZr
|
||||||
|
ZmhscHN3f4+dnZSMhoF9eXR0dnZzcnZ8goiMjo2JhIOBe3V1d3h6fH1+goqQjn9wbnmDhoJ8fomPjIV9
|
||||||
|
dnFzen5+fH6Fjo+Hf3x8fX6AgH98eHZ4fYCDhoqMh4B6eXl4eX2Af319f4GEh4eGhYN/dm1tdn2BhYeL
|
||||||
|
kZONhH53cnFzdnh6fYSMjYiEhIWFhIB7eHd1cnN5gYaJioqJhoKAfXp5eHd3eXp9gIWKjIqIhYJ/eXBr
|
||||||
|
bnh/hIeIio+QjIZ+d3NzdXh6fH6ChIWFh4eHhoSAfHh1dXd5foKEg4SEg4KBgH9+fn59fXx9foCEhoWD
|
||||||
|
gXt0dHyBgYGAhIuNiYN+e3l5eHd5fH6Bh4iFgoKCgoGAf39/fXl2eHyBg4SGhYSEgoB9ent9fX18e3t9
|
||||||
|
gYOFhoeGhIJ/fHp6enl3d3qAhoiIhoiKiYV/enZ2eHh3eX6Bg4eKiYaDgoB+fHp5eXl7fX6BhIWEhYSD
|
||||||
|
gX9+fXp4eXx+fn6Ag4SFhYODg4KAfnx7e3t6d3h+hIaHhoaHiIWAfXp3dnh5ent+goeLiYWEg4B9enh5
|
||||||
|
e35+fn5/gYKDg4SEhIKAfXp5eXp8fn+AgoSFhYSEg4F/f318eXl6fH1+f4CDhoeFhIOBf358e3p7e3x9
|
||||||
|
fn+Bg4SDg4OEhYOAfXt6e3x8e32AgoODg4KCgoKCgH59fHx9fn18fYCCgoOCgoKDgn99fHt7fH1+gIGD
|
||||||
|
g4KBgICAgYB/f3+Af35+fX5/gIGCgoB9fn+BgoKBgIKDgX17ent9f4CAgYOEhIKBgH59fX18fH1+gIGC
|
||||||
|
goKCgoGAgICAf359fH19fX5/gIKDg4OCgoGBgX9+fXx7fH19fn+BgoOFhYSCgX99fHx8fH19f4CAgIGC
|
||||||
|
g4ODg4KAfn18fHt8fX+BgoKCgoKBgYB/f359fn59fX5/gIGBgYGBgYGAf39/f39/fn5+f3+AgICAgYGB
|
||||||
|
gYB/fn1+fn5+f4GBgoKBgH9/fn5/f3+AgICAgYGBgICAgH9/fnx9foCBgYGBgYGAf35+f39+fn9/fn6A
|
||||||
|
gYKDgoKBgH9/fX18fX1+f4CCg4SEg4KAf318enp8fX+BgoKCgoKBgH9+fX19fn5/gICAgICBgH9/gICA
|
||||||
|
gIB/fn9/f39/gIGBgICAf39/fn5/f3+AgIGBgICAgH9+fn5+f4CAgYGBgYGAf39/f39/f4CAgIB/f39/
|
||||||
|
gICAf39/f39/f4CBgYGAgIB/fX1+f39/gIGBgYGBgYGAgIB/fX19fX5/gICBgoOCgYB/fn5/f359fX6A
|
||||||
|
gICAgYKDgoGAf35+fn5+fn1+f4CBgYKCg4KBgH99fHx8fX1+gIGDg4OCgoB/fn18fH1+f4CAgICBgYGB
|
||||||
|
gYCAgIGAf319fX19fn5/gIGDhISDgoF/fn18e3t8fX5/gYKDhISEg4GAf359e3t7fH1/gIKCgoODgoGA
|
||||||
|
f35+fn59fHx9fn+AgYODg4ODgYB+fXx7fH19fX+AgoODg4OCgYB/fn18fHx9fn+AgYKDgoKDg4KAfn18
|
||||||
|
fHx8fX+AgYKCg4KCgYB/f39+fn5+fn9/gICAgYGBgICAgICAf39+fn5+fn5/gIGBgYKCgoF/fn19fX5+
|
||||||
|
fn9/gIGBgoKCgYCAgH9+fX19fn5/f4CBgoKDgoKBgH9+fXx8fH1+gIGCg4OEg4KAfn19fX19fn9/gIGB
|
||||||
|
gYGBgYGBgIB/fn59fn1+fn+AgIGBgYGBgYB/fn5+fX1+fn+AgoKBgYCAf39+fn5/gICAgICAgYGAgH9/
|
||||||
|
fn5+fn9/gICAgICAgICAgICAgH9/fn19fX5/gIGBgoKBgYGAgH9+fX19fn5/gIGBgYKCgYB/f39/f39+
|
||||||
|
fn5/gICAgICAgICAgICAgICAgH9+fn5+f3+AgIGBgYCAgH9/fn5+f39/f39/gIGBgICAgICAgH9/fn5/
|
||||||
|
f39/gIGBgYGAf39/f3+AgICAgH9/f35/f4CAgYGBgH9/fn9/f39/f4CAgIB/f4CAgH9/gICAgICAgH9+
|
||||||
|
fn5+fn5/gYKCgoKCgYB/fn18fH19fn6AgoODgoKBgYB/fn59fn59fX5/f4GCgoKCgoGBgH9+fX19fn5+
|
||||||
|
f3+AgYKBgYGAgH9/f39/f39/gH9/f39/f4CAgH+AgIB/f3+AgIB/f4CAf39/f39/f3+AgIGBgYGBgH5+
|
||||||
|
fX1+fn5/gIGCgoGAgH9+fn5+fn9/gICAgICAgICAgH9/f39/f4CAgICAgICAf39/f3+AgICBgICAf35+
|
||||||
|
fn9/f3+AgIGBgYGAgH9/f35+fn5+f3+AgYGBgoGBgH9/fn19fX1+f4CBgoKCgoGAf359fX1+fn9/gIGB
|
||||||
|
gYGBgYCAf35+fn5+fn9/gICAgYGBgYGAgIB/fn5+fn5/f4CAgYGBgYGAgH9+fn5+fn9/gICAgIGBgYCA
|
||||||
|
f39/f39/gICAgICAf39/f39/gICAgICAf39/f39/gICAgICAgH9/fn5+f4CAgIGBgYGAgH9+fn5+f3+A
|
||||||
|
gICAgICAgH9/f4CAf39/gICAf39/f4CAgICAgICAgICAgH9/fn5+fn5/f4CAgYGBgYGBgIB/f359fX1+
|
||||||
|
fn+AgYKCgoKBgYB/fn5+fn5+f4CAgIGBgYGBgYB/f39+fn5+f39/f4CAgIGBgIB/f39/f39/f4CAgICA
|
||||||
|
gICAgH9/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgH9/f35/f3+AgICAgICAgIB/f39+fn5+f3+A
|
||||||
|
gIGBgoKBgH9+fn19fX5+f4CBgoKCgoGAf35+fX5+fn+AgIGBgYGAgIB/f39/f35/f3+AgICAgICAgIB/
|
||||||
|
f39+fn5/f3+AgICBgYCAgIB/f35+fn9/f4CAgICBgYGAgH9/f35+fn5/f4CAgYGBgYGAf39+fn5+f3+A
|
||||||
|
gICAgICAgH9/f39/f39/f3+AgICAgICAf39/f39/gICAgICAgICAgICAf39/f39/gICAgIB/f39/f39/
|
||||||
|
gICAgICAgH9/f35+fn9/gICAgICAgYGBgIB/f39+fn5+f3+AgYGBgYGBgH9+fn5+fn9/f4CAgYGAgH9/
|
||||||
|
f39/f3+AgICAgICAf39/f39/gICAgICAf39/f39/f4CAgICAgH9/f39/f39/gICAgICAgIB/f39/f39/
|
||||||
|
f39/gICAgIB/f3+AgH9/f39/f3+AgICAgIB/f39/f39/f4CAgICAgICAgH9/f39/f39/gICAgIGAgIB/
|
||||||
|
f4CAf39/f39/f3+AgICAgYGAgICAf39+fn5+fn9/gICBgYGBgIB/f39/f35+f39/gICAgICAgICAgH9/
|
||||||
|
f39+fn5/gICAgICBgYCAf39+fn9/f4CAgIGAgICAf39/f39/f39/f39/f4CAgYGBgIB/f39+fn5+f4CA
|
||||||
|
gYGBgICAf39/f39/f3+AgICAgICAgICAgICAgIB/f35+fn9/gICAgYGBgYCAf35+fn5/f3+AgIGBgYCA
|
||||||
|
gH9/f39/f39/f39/f4CAgICBgYGAf39/fn5+f39/f4CAgICAgYCAgH9/f39/f39/f3+AgICAgYCAgICA
|
||||||
|
f39/fn5+f39/f4CAgYGBgYCAgH9/f39/f39/f4CAgIGBgYCAgH9/fn5+fn9/gICBgYGBgICAf35+fn5/
|
||||||
|
f4CAgICBgYCAgH9/f39/f39/f39/f3+AgICAgICAgICAf39/f39/f39/gICAgYGBgICAgH9+fn5+f39/
|
||||||
|
gICAgYGBgICAf39/fn5+f3+AgICAgICAgICAf39/f39/f39/f4CAgICAgICAf39/f39/f39/f4CAgYCA
|
||||||
|
gICAf39/f39/f3+AgICAgICAgICAgIB/f39/f39/f39/f4CAgICAgICAf39/f39/f3+AgICAgICAf39/
|
||||||
|
f39/gICAgICAgH9/f39/f39/gICAgICAgIB/f39/f39/f4CAgICAgICAgH9/f39/f39/gICAgICAgICA
|
||||||
|
gH9/f39/f35/f4CAgIGBgYGAgH9/fn5+fn9/gICBgYGBgYCAf39+fn5+f3+AgICAgICAgIB/f39/f39/
|
||||||
|
f4CAgIB/gICAgICAf4CAgH9/f3+AgH9/f39/f39/f4CAgICAgICAgIB/f35+f39/f3+AgYGBgICAgICA
|
||||||
|
f39/f39/fn9/gIGBgYGBgIB/f35+f39/gICAgICAgH9/f39/f3+AgICAgICAgH9/f39/f3+AgICAgICA
|
||||||
|
gH9/gIB/gICAf39/f39/f39/f3+AgICAgICAf39/f39/f3+AgICAgICAgICAgH9/f39/f39/gICAgICA
|
||||||
|
gH9/f39/f39/f4CAgICAgICAgICAf39/f39/f4CAgICAgICAgIB/f39/f39/f39/gIB/gICAgICAf3+A
|
||||||
|
gICAgIB/f39/f39/f4CAgICAgIB/f39/fn5+f3+AgICBgYCAgH9/f35+f39/f4CAgYGBgICAgH9/f39+
|
||||||
|
f39/f4CAgIGBgICAgH9/f39+fn5/f3+AgIGBgYGAgH9/f35+fn9/f4CAgICAgICAgIB/f39/f39/f39/
|
||||||
|
f4CAgICAgICAgIB/f39/f39/f39/f39/gICAgICAgH9/f39/f39/f4CAgICAgICAgH9/f39/gICAgICA
|
||||||
|
gIB/f39/f4CAgICAgIB/f39/f39/f39/gICAgICAgH9/f4CAgH9/f3+AgIB/f3+AgIGAf39/f39/f39/
|
||||||
|
f4CAgICAf39/f39/f39/f4CAgICAgICAgH9/f39/f3+AgICAgICAgIB/gICAgH9/f39/f39/gICAgICA
|
||||||
|
gH9/f4CAgICAf39/f39/f3+AgICAgICAgIB/f39/f39/f39/f4CAgH9/gICAgICAf39/f39/f39/gICA
|
||||||
|
gICAgICAgH9/f39/f4CAgICAgIB/f39/f3+AgICAgICAf39/f39/f4CAf4CAgICAgICAf39/f39/f4CA
|
||||||
|
gICAgICAf39/f39/f39/f3+AgICAgICAgICAf39/f39/f39/f39/gICAgYGBgYCAf39+fn5+fn9/gIGB
|
||||||
|
gYGBgYCAgH9/fn5+fn5/f4CAgYGBgYGAgH9/f35+fn5/f3+AgIGBgYCAgH9/f39/f39/f39/f4CAgICA
|
||||||
|
gICAgIB/f39/f39/gICAgICAgICAf39/f39/f3+AgICAgICAgICAgH9/f39/f39/f39/gICAgICAgICA
|
||||||
|
f39/f39/f3+AgICAgICAgH9/f39/f3+AgICAf39/f4CAgICAgIB/f39/f39/f4CAgICAgICAgIB/f39/
|
||||||
|
f39/gICAgICAgIB/f39/f39/gICAgICAgICAf39/f39/f39/f4CAgH9/gICAgH9/f4CAf39/f3+AgICA
|
||||||
|
gICAgIB/f39/f39/f4CAgICAgICAf39/f39/f3+AgICAgICAgICAgH9/f39/f39/f4CAgICAgICAgICA
|
||||||
|
f39/f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgIB/f4CAgH9/f39/f39/gICAgICAgH9/f39/
|
||||||
|
f39/f39/gICAgICAgICAf39/f3+AgICAgICAgICAgH9/f39/f39/f4CAgICAgICAf39/f39/f39/f4CA
|
||||||
|
gICAgICAgIB/f39/f39/f3+AgICBgYGBgIB/f35+fn5/f4CAgIGBgYGAgICAf39/fn5+f39/gICAgYGB
|
||||||
|
gICAf39/f39/f39/gICAgICAgICAgH9/f39/f39/f4CAgICAgICAgH9/f39/f39/f4CAgICAgICAf39/
|
||||||
|
f39/f39/f4CAgICAgICAgH9/f39/f39/f3+AgICAgICAgH9/f39/f39/f39/gICAgICAgIB/f39/f3+A
|
||||||
|
gICAgICAgIB/f39/f39/gICAgICAgIB/f39/f39/gICAgICAgH9/f39/f39/f39/gICAgICAgIB/f39/
|
||||||
|
f39/f4CAgICAgICAgH9/f4CAgICAgIB/f39/f4CAgICAgICAgICAf39/f39/f3+AgICAgICAgH9/f39/
|
||||||
|
f39/gICAgICAgICAgICAf39/f39/f39/gICAgICAgICAgIB/f39/f39/f4CAgICAgICAf39/f39/f3+A
|
||||||
|
gIB/f4CAgH9/f39/f39/f39/gICAgICAf39/f39/f39/gICAgICAgH9/f39/f39/gICAgICAgH9/f39/
|
||||||
|
f39/gICAgICAgICAf39/f39/f39/gICAgICAgICAgICAf39/f39/f39/gICAgICAgICAgIB/f39/f39/
|
||||||
|
f3+AgICAgICAgH9/f39/f39/f3+AgH9/f4CAgICAgH9/f39/f39/gICAgICAgH9/f39/f4CAgICAgICA
|
||||||
|
f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgICAgIB/f39/f39/gICAgICAgH9/f39/f3+AgIB/
|
||||||
|
f39/f39/f3+AgICAgICAgH9/f39/f3+AgICAgICAgICAf39/f39/f39/gICAgICAgICAf39/f39/f39/
|
||||||
|
f3+AgICAgICAgH9/f39/f39/f39/gICAgICAgICAf39/f39/f3+AgICAgICAgICAgH9/f39/f39/gICA
|
||||||
|
gICAgH9/f39/f39/gICAgICAgICAgIB/f39/f39/f4CAgICAgICAf39/f39/f39/f4CAgICAgICAgH9/
|
||||||
|
f3+AgICAgH9/f39/f3+AgICAgICAgIB/f39/f3+AgICAgICAgIB/f39/gICAgH9/gIB/f39/gICAgICA
|
||||||
|
gICAgICAgIB/f39/f39/gICAgICAf39/f39/f4CAgH9/f39/f3+AgICAgICAgIB/f39/f39/gICAgICA
|
||||||
|
gICAf39/f39/f39/gICAgICAgICAgIB/f39/f39/f4CAgICAgICAf39/f39/f39/gICAgICAgICAf39/
|
||||||
|
f39/f39/gICAgICAgICAf39/f39/f3+AgICAgICAgICAf39/f39/f39/f3+AgICAgICAgIB/f39/f39/
|
||||||
|
gIB/f4CAgICAgICAgICAgH9/f39/gICAgH9/gICAgH+AgICAgICAf39/f39/f3+AgICAgICAf39/f39/
|
||||||
|
f39/f4CAgICAgICAgH9/f39/f3+AgICAgIB/f39/f4CAgICAgH9/f4B/f39/f3+AgICAgICAf3+AgICA
|
||||||
|
gICAf39/f39/gICAgICAgIB/f39/f39/f4CAgICAgICAf39/f39/f4CAgICAgICAgH9/f39/f39/gICA
|
||||||
|
gICAgICAgICAgICAf39/f39/f4CAgICAgIB/f39/f39/f3+AgICAgICAgH9/f3+AgICAgICAgH9/f39/
|
||||||
|
f39/f39/f3+AgICAgICAgICAf39/f39/f3+AgICAgICAgICAgIB/f39/f39/f4CAgICAgIB/f39/f39/
|
||||||
|
f39/f4CAgICAgIB/f39/f4B/f39/f39/f39/f3+AgICAgICAgICAf39/f39/gICAgICAgICAgH9/f39/
|
||||||
|
f39/f39/gICAgICAgIB/f39/f39/f3+AgICAgICAgH9/f39/f39/f4CAgICAgICAgIB/f39/f39/f39/
|
||||||
|
gICAgICAgICAf39/f39/f39/gICAgICAgICAgICAf39/f39/f39/f4CAgICAgICAgH9/f39/f39/f3+A
|
||||||
|
gICAgICAgICAgIB/f39/f39/f3+AgIBMSVNUxAAAAElORk9JQ1JECwAAADE5OTQtMDItMDUAAElTQkpu
|
||||||
|
AAAAUEFSVElBTDpiaXJkLCBjcm93LCBjb21tb24gY3JvdywgY2FsbHM7IFRoZSBIb2xseXdvb2QgU291
|
||||||
|
bmQgTGlicmFyeSwgQzE5OTQsIE5ldyBFZGVuIE11bHRpbWVkaWEsIDE4MDA3MzUtRURFTgBJU0ZULgAA
|
||||||
|
AFNvdW5kIEZvcmdlIDIuMDtTb25pYyBGb3VuZHJ5IFNvdW5kIEZvcmdlIDUuMAAL
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -181,14 +181,14 @@ namespace BizHawk.MultiClient
|
||||||
public void CreateDevice()
|
public void CreateDevice()
|
||||||
{
|
{
|
||||||
DestroyDevice();
|
DestroyDevice();
|
||||||
Device = new Device(d3d, 0, DeviceType.Hardware, backingControl.Handle, CreateFlags.HardwareVertexProcessing,
|
var pp = new PresentParameters
|
||||||
new PresentParameters
|
|
||||||
{
|
{
|
||||||
BackBufferWidth = Math.Max(1, backingControl.ClientSize.Width),
|
BackBufferWidth = Math.Max(1, backingControl.ClientSize.Width),
|
||||||
BackBufferHeight = Math.Max(1, backingControl.ClientSize.Height),
|
BackBufferHeight = Math.Max(1, backingControl.ClientSize.Height),
|
||||||
DeviceWindowHandle = backingControl.Handle,
|
DeviceWindowHandle = backingControl.Handle,
|
||||||
PresentationInterval = PresentInterval.One
|
PresentationInterval = Global.Config.DisplayVSync?PresentInterval.One:PresentInterval.Immediate
|
||||||
});
|
};
|
||||||
|
Device = new Device(d3d, 0, DeviceType.Hardware, backingControl.Handle, CreateFlags.HardwareVertexProcessing, pp);
|
||||||
Sprite = new Sprite(Device);
|
Sprite = new Sprite(Device);
|
||||||
Texture = new ImageTexture(Device);
|
Texture = new ImageTexture(Device);
|
||||||
MessageFont = new Font(Device, 16, 0, FontWeight.Bold, 1, false, CharacterSet.Default, Precision.Default, FontQuality.Default, PitchAndFamily.Default | PitchAndFamily.DontCare, "Arial");
|
MessageFont = new Font(Device, 16, 0, FontWeight.Bold, 1, false, CharacterSet.Default, Precision.Default, FontQuality.Default, PitchAndFamily.Default | PitchAndFamily.DontCare, "Arial");
|
||||||
|
|
|
@ -9,6 +9,97 @@ namespace BizHawk.MultiClient
|
||||||
{
|
{
|
||||||
class Throttle
|
class Throttle
|
||||||
{
|
{
|
||||||
|
int lastskiprate;
|
||||||
|
int framestoskip;
|
||||||
|
int framesskipped;
|
||||||
|
public bool skipnextframe;
|
||||||
|
|
||||||
|
public bool signal_frameAdvance;
|
||||||
|
public bool signal_fastForward;
|
||||||
|
public bool signal_continuousframeAdvancing; //continuousframeAdvancing
|
||||||
|
|
||||||
|
public int cfg_frameskiprate { get { return Global.Config.FrameSkip; } }
|
||||||
|
public bool cfg_frameLimit { get { return Global.Config.LimitFramerate; } }
|
||||||
|
public bool cfg_autoframeskipenab { get { return Global.Config.AutoMinimizeSkipping; } }
|
||||||
|
|
||||||
|
public void Step(bool allowSleep, int forceFrameSkip)
|
||||||
|
{
|
||||||
|
int skipRate = (forceFrameSkip < 0) ? cfg_frameskiprate : forceFrameSkip;
|
||||||
|
int ffSkipRate = (forceFrameSkip < 0) ? 9 : forceFrameSkip;
|
||||||
|
|
||||||
|
if (lastskiprate != skipRate)
|
||||||
|
{
|
||||||
|
lastskiprate = skipRate;
|
||||||
|
framestoskip = 0; // otherwise switches to lower frameskip rates will lag behind
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!skipnextframe || forceFrameSkip == 0 || signal_frameAdvance || (signal_continuousframeAdvancing && !signal_fastForward))
|
||||||
|
{
|
||||||
|
framesskipped = 0;
|
||||||
|
|
||||||
|
if (framestoskip > 0)
|
||||||
|
skipnextframe = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
framestoskip--;
|
||||||
|
|
||||||
|
if (framestoskip < 1)
|
||||||
|
skipnextframe = false;
|
||||||
|
else
|
||||||
|
skipnextframe = true;
|
||||||
|
|
||||||
|
framesskipped++;
|
||||||
|
|
||||||
|
//NDS_SkipNextFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (signal_fastForward)
|
||||||
|
{
|
||||||
|
if (framesskipped < ffSkipRate)
|
||||||
|
{
|
||||||
|
skipnextframe = true;
|
||||||
|
framestoskip = 1;
|
||||||
|
}
|
||||||
|
if (framestoskip < 1)
|
||||||
|
framestoskip += ffSkipRate;
|
||||||
|
}
|
||||||
|
else if ((/*autoframeskipenab && frameskiprate ||*/ cfg_frameLimit) && allowSleep)
|
||||||
|
{
|
||||||
|
SpeedThrottle();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cfg_autoframeskipenab && cfg_frameskiprate!=0)
|
||||||
|
{
|
||||||
|
if (!signal_frameAdvance && !signal_continuousframeAdvancing)
|
||||||
|
{
|
||||||
|
AutoFrameSkip_NextFrame();
|
||||||
|
if (framestoskip < 1)
|
||||||
|
framestoskip += AutoFrameSkip_GetSkipAmount(0, skipRate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (framestoskip < 1)
|
||||||
|
framestoskip += skipRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (signal_frameAdvance && allowSleep)
|
||||||
|
{
|
||||||
|
//this logic has been replaced by some logic in steprunloop_core.
|
||||||
|
//really, it should be moved back here somehow later.
|
||||||
|
|
||||||
|
//frameAdvance = false;
|
||||||
|
//emu_halt();
|
||||||
|
//SPU_Pause(1);
|
||||||
|
}
|
||||||
|
//if (execute && emu_paused && !frameAdvance)
|
||||||
|
//{
|
||||||
|
// // safety net against running out of control in case this ever happens.
|
||||||
|
// Unpause(); Pause();
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
static ulong GetCurTime()
|
static ulong GetCurTime()
|
||||||
{
|
{
|
||||||
if (tmethod == 1)
|
if (tmethod == 1)
|
||||||
|
@ -46,11 +137,23 @@ namespace BizHawk.MultiClient
|
||||||
tfreq = afsfreq << 16;
|
tfreq = afsfreq << 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Throttle(float desired_fps)
|
public Throttle()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetCoreFps(double desired_fps)
|
||||||
{
|
{
|
||||||
core_desiredfps = (ulong)(65536 * desired_fps);
|
core_desiredfps = (ulong)(65536 * desired_fps);
|
||||||
desiredfps = core_desiredfps;
|
SetSpeedPercent(pct);
|
||||||
desiredspf = 65536.0f / core_desiredfps;
|
}
|
||||||
|
|
||||||
|
int pct = 100;
|
||||||
|
public void SetSpeedPercent(int percent)
|
||||||
|
{
|
||||||
|
pct = percent;
|
||||||
|
float fraction = percent / 100.0f;
|
||||||
|
desiredfps = (ulong)(core_desiredfps * fraction);
|
||||||
|
desiredspf = 65536.0f / desiredfps;
|
||||||
AutoFrameSkip_IgnorePreviousDelay();
|
AutoFrameSkip_IgnorePreviousDelay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,5 +280,37 @@ namespace BizHawk.MultiClient
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SpeedThrottle()
|
||||||
|
{
|
||||||
|
AutoFrameSkip_BeforeThrottle();
|
||||||
|
|
||||||
|
waiter:
|
||||||
|
if (signal_fastForward)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ulong ttime = GetCurTime();
|
||||||
|
|
||||||
|
if ((ttime - ltime) < (tfreq / desiredfps))
|
||||||
|
{
|
||||||
|
ulong sleepy;
|
||||||
|
sleepy = (tfreq / desiredfps) - (ttime - ltime);
|
||||||
|
sleepy *= 1000;
|
||||||
|
if (tfreq >= 65536)
|
||||||
|
sleepy /= afsfreq;
|
||||||
|
else
|
||||||
|
sleepy = 0;
|
||||||
|
if (sleepy >= 10)
|
||||||
|
Thread.Sleep((int)(sleepy / 2)); // reduce it further beacuse Sleep usually sleeps for more than the amount we tell it to
|
||||||
|
else if (sleepy > 0) // spin for <1 millisecond waits
|
||||||
|
Thread.Sleep(0);
|
||||||
|
//SwitchToThread(); // limit to other threads on the same CPU core for other short waits
|
||||||
|
goto waiter;
|
||||||
|
}
|
||||||
|
if ((ttime - ltime) >= (tfreq * 4 / desiredfps))
|
||||||
|
ltime = ttime;
|
||||||
|
else
|
||||||
|
ltime += tfreq / desiredfps;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue