-Added options to disable palette reads & oamaddr bug
-Better PAL emulation post scanline 260 -Fixed out of bounds memory access in oamaddr bug emulation
This commit is contained in:
parent
1dd6a47de7
commit
c2115defd9
22 changed files with 522 additions and 170 deletions
|
@ -9,7 +9,7 @@ uint8_t EmulationSettings::_versionRevision = 1;
|
|||
|
||||
Language EmulationSettings::_displayLanguage = Language::English;
|
||||
|
||||
uint32_t EmulationSettings::_flags = 0;
|
||||
uint64_t EmulationSettings::_flags = 0;
|
||||
|
||||
uint32_t EmulationSettings::_audioLatency = 20000;
|
||||
double EmulationSettings::_channelVolume[11] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "MessageManager.h"
|
||||
#include "GameClient.h"
|
||||
|
||||
enum EmulationFlags
|
||||
enum EmulationFlags : int64_t
|
||||
{
|
||||
Paused = 0x01,
|
||||
ShowFPS = 0x02,
|
||||
|
@ -40,10 +40,12 @@ enum EmulationFlags
|
|||
ForceSpritesFirstColumn = 0x2000000,
|
||||
DisablePpu2004Reads = 0x4000000,
|
||||
DisableNoiseModeFlag = 0x8000000,
|
||||
DisablePaletteRead = 0x10000000,
|
||||
DisableOamAddrBug = 0x20000000,
|
||||
|
||||
Turbo = 0x20000000,
|
||||
InBackground = 0x40000000,
|
||||
NsfPlayerEnabled = 0x80000000,
|
||||
Turbo = 0x2000000000,
|
||||
InBackground = 0x4000000000,
|
||||
NsfPlayerEnabled = 0x8000000000,
|
||||
};
|
||||
|
||||
enum class AudioChannel
|
||||
|
@ -307,7 +309,7 @@ private:
|
|||
|
||||
static uint32_t _ppuPaletteArgb[11][64];
|
||||
static uint32_t _defaultPpuPalette[64];
|
||||
static uint32_t _flags;
|
||||
static uint64_t _flags;
|
||||
|
||||
static Language _displayLanguage;
|
||||
|
||||
|
@ -392,7 +394,7 @@ public:
|
|||
_flags &= ~flags;
|
||||
}
|
||||
|
||||
static bool CheckFlag(uint32_t flag)
|
||||
static bool CheckFlag(EmulationFlags flag)
|
||||
{
|
||||
return (_flags & flag) == flag;
|
||||
}
|
||||
|
|
160
Core/PPU.cpp
160
Core/PPU.cpp
|
@ -236,7 +236,7 @@ uint8_t PPU::ReadRAM(uint16_t addr)
|
|||
returnValue = _memoryReadBuffer;
|
||||
_memoryReadBuffer = _memoryManager->ReadVRAM(_state.VideoRamAddr, MemoryOperationType::Read);
|
||||
|
||||
if((_state.VideoRamAddr & 0x3FFF) >= 0x3F00) {
|
||||
if((_state.VideoRamAddr & 0x3FFF) >= 0x3F00 && !EmulationSettings::CheckFlag(EmulationFlags::DisablePaletteRead)) {
|
||||
returnValue = ReadPaletteRAM(_state.VideoRamAddr) | (_openBus & 0xC0);
|
||||
openBusMask = 0xC0;
|
||||
} else {
|
||||
|
@ -738,12 +738,6 @@ void PPU::ProcessPrerenderScanline()
|
|||
{
|
||||
ProcessPreVBlankScanline();
|
||||
|
||||
if(IsRenderingEnabled() && _cycle == 0 && _state.SpriteRamAddr >= 0x08) {
|
||||
//This should only be done if rendering is enabled (otherwise oam_stress test fails immediately)
|
||||
//"If OAMADDR is not less than eight when rendering starts, the eight bytes starting at OAMADDR & 0xF8 are copied to the first eight bytes of OAM"
|
||||
memcpy(_spriteRAM, _spriteRAM + (_state.SpriteRamAddr & 0xF8), 8);
|
||||
}
|
||||
|
||||
if(_cycle == 0) {
|
||||
_statusFlags.SpriteOverflow = false;
|
||||
_statusFlags.Sprite0Hit = false;
|
||||
|
@ -786,9 +780,7 @@ void PPU::ProcessVisibleScanline()
|
|||
DrawPixel();
|
||||
ShiftTileRegisters();
|
||||
|
||||
if(IsRenderingEnabled()) {
|
||||
CopyOAMData();
|
||||
}
|
||||
CopyOAMData();
|
||||
} else if(_cycle >= 321 && _cycle <= 336) {
|
||||
LoadTileInfo();
|
||||
} else if(_cycle == 337 || _cycle == 339) {
|
||||
|
@ -802,88 +794,96 @@ void PPU::ProcessVisibleScanline()
|
|||
|
||||
void PPU::CopyOAMData()
|
||||
{
|
||||
if(_cycle < 65) {
|
||||
//Clear secondary OAM at between cycle 1 and 64
|
||||
_oamCopybuffer = 0xFF;
|
||||
_secondarySpriteRAM[(_cycle - 1) >> 1] = 0xFF;
|
||||
} else {
|
||||
if(_cycle == 65) {
|
||||
_sprite0Added = false;
|
||||
_spriteInRange = false;
|
||||
_secondaryOAMAddr = 0;
|
||||
_overflowSpriteAddr = 0;
|
||||
if(_nesModel == NesModel::NTSC && IsRenderingEnabled() || _nesModel == NesModel::PAL && (_scanline < 240 || _scanline > 260)) {
|
||||
if(_cycle < 65) {
|
||||
if(_cycle < 9 && _state.SpriteRamAddr >= 0x08 && _scanline == -1 && !EmulationSettings::CheckFlag(EmulationFlags::DisableOamAddrBug)) {
|
||||
//This should only be done if rendering is enabled (otherwise oam_stress test fails immediately)
|
||||
//"If OAMADDR is not less than eight when rendering starts, the eight bytes starting at OAMADDR & 0xF8 are copied to the first eight bytes of OAM"
|
||||
_spriteRAM[_cycle - 1] = _spriteRAM[((_state.SpriteRamAddr & 0xF8) + _cycle - 1) & 0xFF];
|
||||
}
|
||||
|
||||
_oamCopyDone = false;
|
||||
_spriteAddrH = (_state.SpriteRamAddr >> 2) & 0x3F;
|
||||
_spriteAddrL = _state.SpriteRamAddr & 0x03;
|
||||
} else if(_cycle == 256) {
|
||||
_sprite0Visible = _sprite0Added;
|
||||
_spriteCount = (_secondaryOAMAddr >> 2);
|
||||
}
|
||||
|
||||
if(_cycle & 0x01) {
|
||||
//Read a byte from the primary OAM on odd cycles
|
||||
_oamCopybuffer = _spriteRAM[(_spriteAddrH << 2) + _spriteAddrL];
|
||||
//Clear secondary OAM at between cycle 1 and 64
|
||||
_oamCopybuffer = 0xFF;
|
||||
_secondarySpriteRAM[(_cycle - 1) >> 1] = 0xFF;
|
||||
} else {
|
||||
if(_oamCopyDone) {
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
if(_cycle == 65) {
|
||||
_sprite0Added = false;
|
||||
_spriteInRange = false;
|
||||
_secondaryOAMAddr = 0;
|
||||
_overflowSpriteAddr = 0;
|
||||
|
||||
_oamCopyDone = false;
|
||||
_spriteAddrH = (_state.SpriteRamAddr >> 2) & 0x3F;
|
||||
_spriteAddrL = _state.SpriteRamAddr & 0x03;
|
||||
} else if(_cycle == 256) {
|
||||
_sprite0Visible = _sprite0Added;
|
||||
_spriteCount = (_secondaryOAMAddr >> 2);
|
||||
}
|
||||
|
||||
if(_cycle & 0x01) {
|
||||
//Read a byte from the primary OAM on odd cycles
|
||||
_oamCopybuffer = _spriteRAM[(_spriteAddrH << 2) + _spriteAddrL];
|
||||
} else {
|
||||
if(!_spriteInRange && _scanline >= _oamCopybuffer && _scanline < _oamCopybuffer + (_flags.LargeSprites ? 16 : 8)) {
|
||||
_spriteInRange = true;
|
||||
}
|
||||
if(_oamCopyDone) {
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
} else {
|
||||
if(!_spriteInRange && _scanline >= _oamCopybuffer && _scanline < _oamCopybuffer + (_flags.LargeSprites ? 16 : 8)) {
|
||||
_spriteInRange = true;
|
||||
}
|
||||
|
||||
if(_secondaryOAMAddr < 0x20) {
|
||||
//Copy 1 byte to secondary OAM
|
||||
_secondarySpriteRAM[_secondaryOAMAddr] = _oamCopybuffer;
|
||||
if(_secondaryOAMAddr < 0x20) {
|
||||
//Copy 1 byte to secondary OAM
|
||||
_secondarySpriteRAM[_secondaryOAMAddr] = _oamCopybuffer;
|
||||
|
||||
if(_spriteInRange) {
|
||||
_spriteAddrL++;
|
||||
_secondaryOAMAddr++;
|
||||
if(_spriteInRange) {
|
||||
_spriteAddrL++;
|
||||
_secondaryOAMAddr++;
|
||||
|
||||
if(_spriteAddrH == 0) {
|
||||
_sprite0Added = true;
|
||||
}
|
||||
if(_spriteAddrH == 0) {
|
||||
_sprite0Added = true;
|
||||
}
|
||||
|
||||
if(_spriteAddrL == 4) {
|
||||
//Done copying all 4 bytes
|
||||
_spriteInRange = false;
|
||||
_spriteAddrL = 0;
|
||||
if(_spriteAddrL == 4) {
|
||||
//Done copying all 4 bytes
|
||||
_spriteInRange = false;
|
||||
_spriteAddrL = 0;
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
if(_spriteAddrH == 0) {
|
||||
_oamCopyDone = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//Nothing to copy, skip to next sprite
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
if(_spriteAddrH == 0) {
|
||||
_oamCopyDone = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//Nothing to copy, skip to next sprite
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
if(_spriteAddrH == 0) {
|
||||
_oamCopyDone = true;
|
||||
//8 sprites have been found, check next sprite for overflow + emulate PPU bug
|
||||
if(_overflowSpriteAddr == 0) {
|
||||
//Used to remove sprite limit
|
||||
_overflowSpriteAddr = _spriteAddrH * 4;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//8 sprites have been found, check next sprite for overflow + emulate PPU bug
|
||||
if(_overflowSpriteAddr == 0) {
|
||||
//Used to remove sprite limit
|
||||
_overflowSpriteAddr = _spriteAddrH * 4;
|
||||
}
|
||||
|
||||
if(_spriteInRange) {
|
||||
//Sprite is visible, consider this to be an overflow
|
||||
_statusFlags.SpriteOverflow = true;
|
||||
_spriteAddrL = (_spriteAddrL + 1) & 0x03;
|
||||
if(_spriteAddrL == 4) {
|
||||
_spriteInRange = false;
|
||||
if(_spriteInRange) {
|
||||
//Sprite is visible, consider this to be an overflow
|
||||
_statusFlags.SpriteOverflow = true;
|
||||
_spriteAddrL = (_spriteAddrL + 1) & 0x03;
|
||||
if(_spriteAddrL == 4) {
|
||||
_spriteInRange = false;
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
_oamCopyDone = true;
|
||||
_spriteAddrL = 0;
|
||||
}
|
||||
} else {
|
||||
//Sprite isn't on this scanline, trigger sprite evaluation bug - increment both H & L at the same time
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
_oamCopyDone = true;
|
||||
_spriteAddrL = 0;
|
||||
}
|
||||
} else {
|
||||
//Sprite isn't on this scanline, trigger sprite evaluation bug - increment both H & L at the same time
|
||||
_spriteAddrH = (_spriteAddrH + 1) & 0x3F;
|
||||
_spriteAddrL = (_spriteAddrL + 1) & 0x03;
|
||||
_spriteAddrL = (_spriteAddrL + 1) & 0x03;
|
||||
|
||||
if(_spriteAddrH == 0) {
|
||||
_oamCopyDone = true;
|
||||
if(_spriteAddrH == 0) {
|
||||
_oamCopyDone = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -949,6 +949,16 @@ void PPU::Exec()
|
|||
ProcessPrerenderScanline();
|
||||
} else if(_scanline == _nmiScanline) {
|
||||
BeginVBlank();
|
||||
} else if(_nesModel == NesModel::PAL && _scanline > _nmiScanline + 20) {
|
||||
//"On a PAL machine, because of its extended vertical blank, the PPU begins refreshing OAM roughly 21 scanlines after NMI[2], to prevent it
|
||||
//from decaying during the longer hiatus of rendering. Additionally, it will continue to refresh during the visible portion of the screen
|
||||
//even if rendering is disabled. Because of this, OAM DMA must be done near the beginning of vertical blank on PAL, and everywhere else
|
||||
//it is liable to conflict with the refresh. Since the refresh can't be disabled like on the NTSC hardware, OAM decay does not occur at all on the PAL NES."
|
||||
if(_cycle > 0 && _cycle <= 256) {
|
||||
CopyOAMData();
|
||||
} else if(_cycle >= 257 && _cycle < 320) {
|
||||
_state.SpriteRamAddr = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//Used by NSF player to speed things up
|
||||
|
|
|
@ -17,6 +17,8 @@ namespace Mesen.GUI.Config
|
|||
public bool AllowInvalidInput = false;
|
||||
public bool RemoveSpriteLimit = false;
|
||||
public bool DisablePpu2004Reads = false;
|
||||
public bool DisablePaletteRead = false;
|
||||
public bool DisableOamAddrBug = false;
|
||||
|
||||
public bool UseAlternativeMmc3Irq = false;
|
||||
|
||||
|
@ -49,6 +51,8 @@ namespace Mesen.GUI.Config
|
|||
InteropEmu.SetFlag(EmulationFlags.RemoveSpriteLimit, emulationInfo.RemoveSpriteLimit);
|
||||
InteropEmu.SetFlag(EmulationFlags.ShowLagCounter, emulationInfo.ShowLagCounter);
|
||||
InteropEmu.SetFlag(EmulationFlags.DisablePpu2004Reads, emulationInfo.DisablePpu2004Reads);
|
||||
InteropEmu.SetFlag(EmulationFlags.DisablePaletteRead, emulationInfo.DisablePaletteRead);
|
||||
InteropEmu.SetFlag(EmulationFlags.DisableOamAddrBug, emulationInfo.DisableOamAddrBug);
|
||||
|
||||
InteropEmu.SetOverclockRate(emulationInfo.OverclockRate, emulationInfo.OverclockAdjustApu);
|
||||
InteropEmu.SetPpuNmiConfig(emulationInfo.PpuExtraScanlinesBeforeNmi, emulationInfo.PpuExtraScanlinesAfterNmi);
|
||||
|
|
93
GUI.NET/Controls/ctrlRiskyOption.Designer.cs
generated
Normal file
93
GUI.NET/Controls/ctrlRiskyOption.Designer.cs
generated
Normal file
|
@ -0,0 +1,93 @@
|
|||
namespace Mesen.GUI.Controls
|
||||
{
|
||||
partial class ctrlRiskyOption
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if(disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.chkOption = new System.Windows.Forms.CheckBox();
|
||||
this.lblNotRecommended = new System.Windows.Forms.Label();
|
||||
this.flowLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// flowLayoutPanel1
|
||||
//
|
||||
this.flowLayoutPanel1.AutoSize = true;
|
||||
this.flowLayoutPanel1.Controls.Add(this.chkOption);
|
||||
this.flowLayoutPanel1.Controls.Add(this.lblNotRecommended);
|
||||
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
|
||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
||||
this.flowLayoutPanel1.Size = new System.Drawing.Size(197, 23);
|
||||
this.flowLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// chkOption
|
||||
//
|
||||
this.chkOption.AutoSize = true;
|
||||
this.chkOption.Location = new System.Drawing.Point(3, 3);
|
||||
this.chkOption.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3);
|
||||
this.chkOption.Name = "chkOption";
|
||||
this.chkOption.Size = new System.Drawing.Size(86, 17);
|
||||
this.chkOption.TabIndex = 0;
|
||||
this.chkOption.Text = "Option name";
|
||||
this.chkOption.UseVisualStyleBackColor = true;
|
||||
this.chkOption.CheckedChanged += new System.EventHandler(this.chkOption_CheckedChanged);
|
||||
//
|
||||
// lblNotRecommended
|
||||
//
|
||||
this.lblNotRecommended.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblNotRecommended.AutoSize = true;
|
||||
this.lblNotRecommended.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblNotRecommended.Location = new System.Drawing.Point(89, 5);
|
||||
this.lblNotRecommended.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.lblNotRecommended.Name = "lblNotRecommended";
|
||||
this.lblNotRecommended.Size = new System.Drawing.Size(98, 13);
|
||||
this.lblNotRecommended.TabIndex = 1;
|
||||
this.lblNotRecommended.Text = "(not recommended)";
|
||||
//
|
||||
// ctrlRiskyOption
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoSize = true;
|
||||
this.Controls.Add(this.flowLayoutPanel1);
|
||||
this.Name = "ctrlRiskyOption";
|
||||
this.Size = new System.Drawing.Size(197, 23);
|
||||
this.flowLayoutPanel1.ResumeLayout(false);
|
||||
this.flowLayoutPanel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
||||
private System.Windows.Forms.CheckBox chkOption;
|
||||
private System.Windows.Forms.Label lblNotRecommended;
|
||||
}
|
||||
}
|
47
GUI.NET/Controls/ctrlRiskyOption.cs
Normal file
47
GUI.NET/Controls/ctrlRiskyOption.cs
Normal file
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Mesen.GUI.Forms;
|
||||
using System.IO;
|
||||
|
||||
namespace Mesen.GUI.Controls
|
||||
{
|
||||
public partial class ctrlRiskyOption : UserControl
|
||||
{
|
||||
public ctrlRiskyOption()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.lblNotRecommended.Text = ResourceHelper.GetMessage("RiskyOptionHint");
|
||||
this.lblNotRecommended.ForeColor = SystemColors.ControlDark;
|
||||
}
|
||||
|
||||
private void chkOption_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
this.lblNotRecommended.ForeColor = this.chkOption.Checked ? Color.Red : SystemColors.ControlDark;
|
||||
}
|
||||
|
||||
[Bindable(true)]
|
||||
[Browsable(true)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
||||
[EditorBrowsable(EditorBrowsableState.Always)]
|
||||
public override string Text
|
||||
{
|
||||
get { return chkOption.Text; }
|
||||
set { chkOption.Text = value; }
|
||||
}
|
||||
|
||||
public bool Checked
|
||||
{
|
||||
get { return chkOption.Checked; }
|
||||
set { chkOption.Checked = value; }
|
||||
}
|
||||
|
||||
protected override Padding DefaultMargin { get { return new Padding(0); } }
|
||||
}
|
||||
}
|
120
GUI.NET/Controls/ctrlRiskyOption.resx
Normal file
120
GUI.NET/Controls/ctrlRiskyOption.resx
Normal file
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -21,6 +21,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0} roms found</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(not recommended)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen could not find any games to load.</Message>
|
||||
|
||||
<Message ID="CheatsFound">{0} games and {1} cheats in database</Message>
|
||||
|
|
|
@ -289,6 +289,8 @@
|
|||
<Control ID="lblRamPowerOnState">Estado inicial de la memoria durante el inicio:</Control>
|
||||
<Control ID="chkRemoveSpriteLimit">Eliminar el límite de sprites (Reduce el parpadeo en algunos juegos)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">Disable PPU $2004 reads</Control>
|
||||
<Control ID="chkDisableOamAddrBug">Disable PPU OAMADDR bug emulation</Control>
|
||||
<Control ID="chkDisablePaletteRead">Disable PPU palette reads</Control>
|
||||
|
||||
<Control ID="tpgOverclocking">Overclocking</Control>
|
||||
<Control ID="grpOverclocking">Overclocking de CPU</Control>
|
||||
|
@ -518,6 +520,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0} roms encontradas</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(not recommended)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen no puede encontrar ningún juego para cargar.</Message>
|
||||
|
||||
<Message ID="NsfNextTrack">Pista siguiente (Espera para jugar más rápido)</Message>
|
||||
|
|
|
@ -289,6 +289,9 @@
|
|||
<Control ID="chkAllowInvalidInput">Permettre les entrées invalides (Bas+Haut ou Gauche+Droite en même temps)</Control>
|
||||
<Control ID="chkRemoveSpriteLimit">Éliminer la limite de sprites (Réduit le clignotement dans certains jeux)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">Empêcher la lecture du registre $2004 du PPU</Control>
|
||||
<Control ID="chkDisableOamAddrBug">Désactiver l'émulation du bug de OAMADDR du PPU</Control>
|
||||
<Control ID="chkDisablePaletteRead">Empêcher la lecture de la palette du PPU</Control>
|
||||
|
||||
<Control ID="lblRamPowerOnState">État initial de la mémoire au démarrage : </Control>
|
||||
|
||||
<Control ID="tpgOverclocking">Overclocking</Control>
|
||||
|
@ -527,6 +530,8 @@
|
|||
<Message ID="PlayerNumber">Joueur {0}</Message>
|
||||
|
||||
<Message ID="RomsFound">{0} roms trouvés</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(déconseillé)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen n'a pas trouvé de jeu sur votre disque.</Message>
|
||||
|
||||
|
|
|
@ -289,6 +289,9 @@
|
|||
<Control ID="chkAllowInvalidInput">コントローラでは不可能インプットを可能にする (同時に上と下や右と左)</Control>
|
||||
<Control ID="chkRemoveSpriteLimit">スプライトの制限を解除 (点滅を軽減する)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">PPUの$2004を読み込み不可能にする</Control>
|
||||
<Control ID="chkDisableOamAddrBug">PPUのOAMADDRバグを無効にする</Control>
|
||||
<Control ID="chkDisablePaletteRead">PPUのパレットラムを読み込み不可能にする</Control>
|
||||
|
||||
<Control ID="lblRamPowerOnState">起動時のメモリの状態 : </Control>
|
||||
|
||||
<Control ID="tpgOverclocking">オーバークロック</Control>
|
||||
|
@ -510,6 +513,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0}個</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(推奨されません)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesenはゲームファイルを見つかりませんでした。</Message>
|
||||
|
||||
<Message ID="CheatsFound">ゲーム{0}個とチートコード{1}個を見つけました</Message>
|
||||
|
|
|
@ -289,6 +289,8 @@
|
|||
<Control ID="lblRamPowerOnState">Estado inicial da memória durante o início:</Control>
|
||||
<Control ID="chkRemoveSpriteLimit">Eliminar o limite de sprites (Reduz os "flashes" em alguns jogos)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">Disable PPU $2004 reads</Control>
|
||||
<Control ID="chkDisableOamAddrBug">Disable PPU OAMADDR bug emulation</Control>
|
||||
<Control ID="chkDisablePaletteRead">Disable PPU palette reads</Control>
|
||||
|
||||
<Control ID="tpgOverclocking">Overclocking</Control>
|
||||
<Control ID="grpOverclocking">Overclocking de CPU</Control>
|
||||
|
@ -518,6 +520,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0} roms encontradas</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(not recommended)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen não encontrou nenhum jogo para carregar.</Message>
|
||||
|
||||
<Message ID="NsfNextTrack">Track seguinte (Esperar para jogar mais rápido)</Message>
|
||||
|
|
|
@ -287,10 +287,12 @@
|
|||
<Control ID="tpgAdvanced">Расширенные</Control>
|
||||
<Control ID="chkUseAlternativeMmc3Irq">Использовать альтернативный IRQ MMC3</Control>
|
||||
<Control ID="chkAllowInvalidInput">Разрешить недопустимые комбинации (Вниз+Вверх и Влево+Вправо)</Control>
|
||||
<Control ID="lblRamPowerOnState">Содержимое ОЗУ при включении : </Control>
|
||||
<Control ID="chkRemoveSpriteLimit">Отключить лимит спрайтов (уменьшает мерцание)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">Disable PPU $2004 reads</Control>
|
||||
<Control ID="lblRamPowerOnState">Содержимое ОЗУ при включении : </Control>
|
||||
|
||||
<Control ID="chkDisableOamAddrBug">Disable PPU OAMADDR bug emulation</Control>
|
||||
<Control ID="chkDisablePaletteRead">Disable PPU palette reads</Control>
|
||||
|
||||
<Control ID="tpgOverclocking">Разгон</Control>
|
||||
<Control ID="grpOverclocking">Разгон CPU</Control>
|
||||
<Control ID="lblOverclockWarning">ВНИМАНИЕ: Разгон может вызвать ошибки в некоторых играх!</Control>
|
||||
|
@ -519,6 +521,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0} Найденные ROM файлы</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(not recommended)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen could not find any games to load.</Message>
|
||||
|
||||
<Message ID="CheatsFound">игр {0}, читов {1}</Message>
|
||||
|
|
|
@ -287,9 +287,11 @@
|
|||
<Control ID="tpgAdvanced">Розширені</Control>
|
||||
<Control ID="chkUseAlternativeMmc3Irq">Використовувати альтернативний IRQ MMC3</Control>
|
||||
<Control ID="chkAllowInvalidInput">Дозволити неприпустимі комбінації (Вниз+Вгору і Ліворуч+Вправо)</Control>
|
||||
<Control ID="lblRamPowerOnState">Вміст ОЗУ при включенні : </Control>
|
||||
<Control ID="chkRemoveSpriteLimit">Відключити ліміт спрайтів (зменшує мерехтіння)</Control>
|
||||
<Control ID="chkDisablePpu2004Reads">Disable PPU $2004 reads</Control>
|
||||
<Control ID="lblRamPowerOnState">Вміст ОЗУ при включенні : </Control>
|
||||
<Control ID="chkDisableOamAddrBug">Disable PPU OAMADDR bug emulation</Control>
|
||||
<Control ID="chkDisablePaletteRead">Disable PPU palette reads</Control>
|
||||
|
||||
<Control ID="tpgOverclocking">Розгін</Control>
|
||||
<Control ID="grpOverclocking">Розгін CPU</Control>
|
||||
|
@ -518,6 +520,8 @@
|
|||
|
||||
<Message ID="RomsFound">{0} Знайдені ROM файли</Message>
|
||||
|
||||
<Message ID="RiskyOptionHint">(not recommended)</Message>
|
||||
|
||||
<Message ID="RandomGameNoGameFound">Mesen could not find any games to load.</Message>
|
||||
|
||||
<Message ID="CheatsFound">iгр {0}, читiв {1}</Message>
|
||||
|
|
39
GUI.NET/Forms/Config/frmAudioConfig.Designer.cs
generated
39
GUI.NET/Forms/Config/frmAudioConfig.Designer.cs
generated
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Forms.Config
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Forms.Config
|
||||
{
|
||||
partial class frmAudioConfig
|
||||
{
|
||||
|
@ -98,9 +100,9 @@
|
|||
this.lblCrossFeedRatio = new System.Windows.Forms.Label();
|
||||
this.tpgAdvanced = new System.Windows.Forms.TabPage();
|
||||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkDisableNoiseModeFlag = new System.Windows.Forms.CheckBox();
|
||||
this.chkDisableNoiseModeFlag = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.chkSilenceTriangleHighFreq = new System.Windows.Forms.CheckBox();
|
||||
this.chkSwapDutyCycles = new System.Windows.Forms.CheckBox();
|
||||
this.chkSwapDutyCycles = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.chkReduceDmcPopping = new System.Windows.Forms.CheckBox();
|
||||
this.baseConfigPanel.SuspendLayout();
|
||||
this.grpVolume.SuspendLayout();
|
||||
|
@ -1094,9 +1096,9 @@
|
|||
this.tableLayoutPanel3.ColumnCount = 1;
|
||||
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkDisableNoiseModeFlag, 0, 3);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkSilenceTriangleHighFreq, 0, 1);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkSwapDutyCycles, 0, 0);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkReduceDmcPopping, 0, 2);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkSilenceTriangleHighFreq, 0, 0);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkSwapDutyCycles, 0, 2);
|
||||
this.tableLayoutPanel3.Controls.Add(this.chkReduceDmcPopping, 0, 1);
|
||||
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 3);
|
||||
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||
|
@ -1112,42 +1114,37 @@
|
|||
// chkDisableNoiseModeFlag
|
||||
//
|
||||
this.chkDisableNoiseModeFlag.AutoSize = true;
|
||||
this.chkDisableNoiseModeFlag.CheckAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.chkDisableNoiseModeFlag.Location = new System.Drawing.Point(3, 72);
|
||||
this.chkDisableNoiseModeFlag.Checked = false;
|
||||
this.chkDisableNoiseModeFlag.Location = new System.Drawing.Point(0, 69);
|
||||
this.chkDisableNoiseModeFlag.Name = "chkDisableNoiseModeFlag";
|
||||
this.chkDisableNoiseModeFlag.Size = new System.Drawing.Size(179, 17);
|
||||
this.chkDisableNoiseModeFlag.Size = new System.Drawing.Size(277, 23);
|
||||
this.chkDisableNoiseModeFlag.TabIndex = 3;
|
||||
this.chkDisableNoiseModeFlag.Text = "Disable noise channel mode flag";
|
||||
this.chkDisableNoiseModeFlag.TextAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.chkDisableNoiseModeFlag.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkSilenceTriangleHighFreq
|
||||
//
|
||||
this.chkSilenceTriangleHighFreq.AutoSize = true;
|
||||
this.chkSilenceTriangleHighFreq.CheckAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.chkSilenceTriangleHighFreq.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkSilenceTriangleHighFreq.Location = new System.Drawing.Point(3, 3);
|
||||
this.chkSilenceTriangleHighFreq.Name = "chkSilenceTriangleHighFreq";
|
||||
this.chkSilenceTriangleHighFreq.Size = new System.Drawing.Size(337, 17);
|
||||
this.chkSilenceTriangleHighFreq.TabIndex = 1;
|
||||
this.chkSilenceTriangleHighFreq.Text = "Mute ultrasonic frequencies on triangle channel (reduces popping)";
|
||||
this.chkSilenceTriangleHighFreq.TextAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.chkSilenceTriangleHighFreq.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkSwapDutyCycles
|
||||
//
|
||||
this.chkSwapDutyCycles.AutoSize = true;
|
||||
this.chkSwapDutyCycles.Location = new System.Drawing.Point(3, 3);
|
||||
this.chkSwapDutyCycles.Checked = false;
|
||||
this.chkSwapDutyCycles.Location = new System.Drawing.Point(0, 46);
|
||||
this.chkSwapDutyCycles.Name = "chkSwapDutyCycles";
|
||||
this.chkSwapDutyCycles.Size = new System.Drawing.Size(282, 17);
|
||||
this.chkSwapDutyCycles.Size = new System.Drawing.Size(380, 23);
|
||||
this.chkSwapDutyCycles.TabIndex = 0;
|
||||
this.chkSwapDutyCycles.Text = "Swap square channels duty cycles (Mimics old clones)";
|
||||
this.chkSwapDutyCycles.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkReduceDmcPopping
|
||||
//
|
||||
this.chkReduceDmcPopping.AutoSize = true;
|
||||
this.chkReduceDmcPopping.CheckAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.chkReduceDmcPopping.Location = new System.Drawing.Point(3, 49);
|
||||
this.chkReduceDmcPopping.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkReduceDmcPopping.Name = "chkReduceDmcPopping";
|
||||
this.chkReduceDmcPopping.Size = new System.Drawing.Size(243, 17);
|
||||
this.chkReduceDmcPopping.TabIndex = 2;
|
||||
|
@ -1244,7 +1241,7 @@
|
|||
private System.Windows.Forms.CheckBox chkReduceSoundInBackground;
|
||||
private System.Windows.Forms.TabPage tpgAdvanced;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
|
||||
private System.Windows.Forms.CheckBox chkSwapDutyCycles;
|
||||
private ctrlRiskyOption chkSwapDutyCycles;
|
||||
private System.Windows.Forms.TabPage tpgEffects;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
|
||||
private System.Windows.Forms.GroupBox grpStereo;
|
||||
|
@ -1286,6 +1283,6 @@
|
|||
private System.Windows.Forms.NumericUpDown nudCrossFeedRatio;
|
||||
private System.Windows.Forms.Label lblCrossFeedRatio;
|
||||
private Controls.ctrlHorizontalTrackbar trkTrianglePan;
|
||||
private System.Windows.Forms.CheckBox chkDisableNoiseModeFlag;
|
||||
private ctrlRiskyOption chkDisableNoiseModeFlag;
|
||||
}
|
||||
}
|
121
GUI.NET/Forms/Config/frmEmulationConfig.Designer.cs
generated
121
GUI.NET/Forms/Config/frmEmulationConfig.Designer.cs
generated
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Forms.Config
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Forms.Config
|
||||
{
|
||||
partial class frmEmulationConfig
|
||||
{
|
||||
|
@ -42,11 +44,14 @@
|
|||
this.tpgAdvanced = new System.Windows.Forms.TabPage();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkUseAlternativeMmc3Irq = new System.Windows.Forms.CheckBox();
|
||||
this.chkAllowInvalidInput = new System.Windows.Forms.CheckBox();
|
||||
this.chkAllowInvalidInput = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.chkRemoveSpriteLimit = new System.Windows.Forms.CheckBox();
|
||||
this.flowLayoutPanel8 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.lblRamPowerOnState = new System.Windows.Forms.Label();
|
||||
this.cboRamPowerOnState = new System.Windows.Forms.ComboBox();
|
||||
this.chkDisableOamAddrBug = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.chkDisablePaletteRead = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.chkDisablePpu2004Reads = new Mesen.GUI.Controls.ctrlRiskyOption();
|
||||
this.tpgOverclocking = new System.Windows.Forms.TabPage();
|
||||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel();
|
||||
|
@ -76,7 +81,6 @@
|
|||
this.chkShowLagCounter = new System.Windows.Forms.CheckBox();
|
||||
this.btnResetLagCounter = new System.Windows.Forms.Button();
|
||||
this.tmrUpdateClockRate = new System.Windows.Forms.Timer(this.components);
|
||||
this.chkDisablePpu2004Reads = new System.Windows.Forms.CheckBox();
|
||||
this.tabMain.SuspendLayout();
|
||||
this.tpgGeneral.SuspendLayout();
|
||||
this.tableLayoutPanel4.SuspendLayout();
|
||||
|
@ -106,7 +110,7 @@
|
|||
// baseConfigPanel
|
||||
//
|
||||
this.baseConfigPanel.Location = new System.Drawing.Point(0, 299);
|
||||
this.baseConfigPanel.Size = new System.Drawing.Size(487, 29);
|
||||
this.baseConfigPanel.Size = new System.Drawing.Size(533, 29);
|
||||
//
|
||||
// tabMain
|
||||
//
|
||||
|
@ -117,7 +121,7 @@
|
|||
this.tabMain.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabMain.Name = "tabMain";
|
||||
this.tabMain.SelectedIndex = 0;
|
||||
this.tabMain.Size = new System.Drawing.Size(487, 299);
|
||||
this.tabMain.Size = new System.Drawing.Size(533, 299);
|
||||
this.tabMain.TabIndex = 2;
|
||||
//
|
||||
// tpgGeneral
|
||||
|
@ -126,7 +130,7 @@
|
|||
this.tpgGeneral.Location = new System.Drawing.Point(4, 22);
|
||||
this.tpgGeneral.Name = "tpgGeneral";
|
||||
this.tpgGeneral.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tpgGeneral.Size = new System.Drawing.Size(479, 273);
|
||||
this.tpgGeneral.Size = new System.Drawing.Size(525, 273);
|
||||
this.tpgGeneral.TabIndex = 0;
|
||||
this.tpgGeneral.Text = "General";
|
||||
this.tpgGeneral.UseVisualStyleBackColor = true;
|
||||
|
@ -147,7 +151,7 @@
|
|||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel4.Size = new System.Drawing.Size(473, 267);
|
||||
this.tableLayoutPanel4.Size = new System.Drawing.Size(519, 267);
|
||||
this.tableLayoutPanel4.TabIndex = 0;
|
||||
//
|
||||
// flowLayoutPanel9
|
||||
|
@ -159,7 +163,7 @@
|
|||
this.flowLayoutPanel9.Location = new System.Drawing.Point(111, 26);
|
||||
this.flowLayoutPanel9.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel9.Name = "flowLayoutPanel9";
|
||||
this.flowLayoutPanel9.Size = new System.Drawing.Size(362, 26);
|
||||
this.flowLayoutPanel9.Size = new System.Drawing.Size(408, 26);
|
||||
this.flowLayoutPanel9.TabIndex = 14;
|
||||
//
|
||||
// nudTurboSpeed
|
||||
|
@ -203,7 +207,7 @@
|
|||
this.flowLayoutPanel6.Location = new System.Drawing.Point(111, 0);
|
||||
this.flowLayoutPanel6.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel6.Name = "flowLayoutPanel6";
|
||||
this.flowLayoutPanel6.Size = new System.Drawing.Size(362, 26);
|
||||
this.flowLayoutPanel6.Size = new System.Drawing.Size(408, 26);
|
||||
this.flowLayoutPanel6.TabIndex = 11;
|
||||
//
|
||||
// nudEmulationSpeed
|
||||
|
@ -244,7 +248,7 @@
|
|||
this.tpgAdvanced.Location = new System.Drawing.Point(4, 22);
|
||||
this.tpgAdvanced.Name = "tpgAdvanced";
|
||||
this.tpgAdvanced.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tpgAdvanced.Size = new System.Drawing.Size(479, 273);
|
||||
this.tpgAdvanced.Size = new System.Drawing.Size(525, 273);
|
||||
this.tpgAdvanced.TabIndex = 1;
|
||||
this.tpgAdvanced.Text = "Advanced";
|
||||
this.tpgAdvanced.UseVisualStyleBackColor = true;
|
||||
|
@ -253,28 +257,32 @@
|
|||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 1;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkUseAlternativeMmc3Irq, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkAllowInvalidInput, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkUseAlternativeMmc3Irq, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkAllowInvalidInput, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkRemoveSpriteLimit, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel8, 0, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel8, 0, 6);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkDisableOamAddrBug, 0, 5);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkDisablePaletteRead, 0, 4);
|
||||
this.tableLayoutPanel1.Controls.Add(this.chkDisablePpu2004Reads, 0, 3);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 6;
|
||||
this.tableLayoutPanel1.RowCount = 8;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(473, 267);
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(519, 267);
|
||||
this.tableLayoutPanel1.TabIndex = 0;
|
||||
//
|
||||
// chkUseAlternativeMmc3Irq
|
||||
//
|
||||
this.chkUseAlternativeMmc3Irq.AutoSize = true;
|
||||
this.chkUseAlternativeMmc3Irq.Location = new System.Drawing.Point(3, 49);
|
||||
this.chkUseAlternativeMmc3Irq.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkUseAlternativeMmc3Irq.Name = "chkUseAlternativeMmc3Irq";
|
||||
this.chkUseAlternativeMmc3Irq.Size = new System.Drawing.Size(197, 17);
|
||||
this.chkUseAlternativeMmc3Irq.TabIndex = 0;
|
||||
|
@ -284,12 +292,13 @@
|
|||
// chkAllowInvalidInput
|
||||
//
|
||||
this.chkAllowInvalidInput.AutoSize = true;
|
||||
this.chkAllowInvalidInput.Location = new System.Drawing.Point(3, 26);
|
||||
this.chkAllowInvalidInput.Checked = false;
|
||||
this.chkAllowInvalidInput.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.chkAllowInvalidInput.Location = new System.Drawing.Point(0, 46);
|
||||
this.chkAllowInvalidInput.Name = "chkAllowInvalidInput";
|
||||
this.chkAllowInvalidInput.Size = new System.Drawing.Size(341, 17);
|
||||
this.chkAllowInvalidInput.Size = new System.Drawing.Size(519, 23);
|
||||
this.chkAllowInvalidInput.TabIndex = 1;
|
||||
this.chkAllowInvalidInput.Text = "Allow invalid input (e.g Down + Up or Left + Right at the same time)";
|
||||
this.chkAllowInvalidInput.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkRemoveSpriteLimit
|
||||
//
|
||||
|
@ -306,10 +315,10 @@
|
|||
this.flowLayoutPanel8.Controls.Add(this.lblRamPowerOnState);
|
||||
this.flowLayoutPanel8.Controls.Add(this.cboRamPowerOnState);
|
||||
this.flowLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.flowLayoutPanel8.Location = new System.Drawing.Point(0, 92);
|
||||
this.flowLayoutPanel8.Location = new System.Drawing.Point(0, 138);
|
||||
this.flowLayoutPanel8.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel8.Name = "flowLayoutPanel8";
|
||||
this.flowLayoutPanel8.Size = new System.Drawing.Size(473, 27);
|
||||
this.flowLayoutPanel8.Size = new System.Drawing.Size(519, 27);
|
||||
this.flowLayoutPanel8.TabIndex = 3;
|
||||
//
|
||||
// lblRamPowerOnState
|
||||
|
@ -331,13 +340,43 @@
|
|||
this.cboRamPowerOnState.Size = new System.Drawing.Size(176, 21);
|
||||
this.cboRamPowerOnState.TabIndex = 1;
|
||||
//
|
||||
// chkDisableOamAddrBug
|
||||
//
|
||||
this.chkDisableOamAddrBug.AutoSize = true;
|
||||
this.chkDisableOamAddrBug.Checked = false;
|
||||
this.chkDisableOamAddrBug.Location = new System.Drawing.Point(0, 115);
|
||||
this.chkDisableOamAddrBug.Name = "chkDisableOamAddrBug";
|
||||
this.chkDisableOamAddrBug.Size = new System.Drawing.Size(311, 23);
|
||||
this.chkDisableOamAddrBug.TabIndex = 5;
|
||||
this.chkDisableOamAddrBug.Text = "Disable PPU OAMADDR bug emulation";
|
||||
//
|
||||
// chkDisablePaletteRead
|
||||
//
|
||||
this.chkDisablePaletteRead.AutoSize = true;
|
||||
this.chkDisablePaletteRead.Checked = false;
|
||||
this.chkDisablePaletteRead.Location = new System.Drawing.Point(0, 92);
|
||||
this.chkDisablePaletteRead.Name = "chkDisablePaletteRead";
|
||||
this.chkDisablePaletteRead.Size = new System.Drawing.Size(248, 23);
|
||||
this.chkDisablePaletteRead.TabIndex = 6;
|
||||
this.chkDisablePaletteRead.Text = "Disable PPU palette reads";
|
||||
//
|
||||
// chkDisablePpu2004Reads
|
||||
//
|
||||
this.chkDisablePpu2004Reads.AutoSize = true;
|
||||
this.chkDisablePpu2004Reads.Checked = false;
|
||||
this.chkDisablePpu2004Reads.Location = new System.Drawing.Point(0, 69);
|
||||
this.chkDisablePpu2004Reads.Name = "chkDisablePpu2004Reads";
|
||||
this.chkDisablePpu2004Reads.Size = new System.Drawing.Size(246, 23);
|
||||
this.chkDisablePpu2004Reads.TabIndex = 4;
|
||||
this.chkDisablePpu2004Reads.Text = "Disable PPU $2004 reads";
|
||||
//
|
||||
// tpgOverclocking
|
||||
//
|
||||
this.tpgOverclocking.Controls.Add(this.tableLayoutPanel3);
|
||||
this.tpgOverclocking.Location = new System.Drawing.Point(4, 22);
|
||||
this.tpgOverclocking.Name = "tpgOverclocking";
|
||||
this.tpgOverclocking.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tpgOverclocking.Size = new System.Drawing.Size(479, 273);
|
||||
this.tpgOverclocking.Size = new System.Drawing.Size(525, 273);
|
||||
this.tpgOverclocking.TabIndex = 2;
|
||||
this.tpgOverclocking.Text = "Overclocking";
|
||||
this.tpgOverclocking.UseVisualStyleBackColor = true;
|
||||
|
@ -366,7 +405,7 @@
|
|||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel3.Size = new System.Drawing.Size(473, 267);
|
||||
this.tableLayoutPanel3.Size = new System.Drawing.Size(519, 267);
|
||||
this.tableLayoutPanel3.TabIndex = 0;
|
||||
//
|
||||
// flowLayoutPanel4
|
||||
|
@ -377,7 +416,7 @@
|
|||
this.flowLayoutPanel4.Location = new System.Drawing.Point(0, 189);
|
||||
this.flowLayoutPanel4.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel4.Name = "flowLayoutPanel4";
|
||||
this.flowLayoutPanel4.Size = new System.Drawing.Size(473, 20);
|
||||
this.flowLayoutPanel4.Size = new System.Drawing.Size(519, 20);
|
||||
this.flowLayoutPanel4.TabIndex = 11;
|
||||
//
|
||||
// lblEffectiveClockRateDendy
|
||||
|
@ -428,7 +467,7 @@
|
|||
this.flowLayoutPanel3.Location = new System.Drawing.Point(0, 172);
|
||||
this.flowLayoutPanel3.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
|
||||
this.flowLayoutPanel3.Size = new System.Drawing.Size(473, 17);
|
||||
this.flowLayoutPanel3.Size = new System.Drawing.Size(519, 17);
|
||||
this.flowLayoutPanel3.TabIndex = 9;
|
||||
//
|
||||
// lblEffectiveClockRatePal
|
||||
|
@ -456,7 +495,7 @@
|
|||
this.grpOverclocking.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.grpOverclocking.Location = new System.Drawing.Point(3, 26);
|
||||
this.grpOverclocking.Name = "grpOverclocking";
|
||||
this.grpOverclocking.Size = new System.Drawing.Size(467, 45);
|
||||
this.grpOverclocking.Size = new System.Drawing.Size(513, 45);
|
||||
this.grpOverclocking.TabIndex = 6;
|
||||
this.grpOverclocking.TabStop = false;
|
||||
this.grpOverclocking.Text = "Overclocking";
|
||||
|
@ -475,7 +514,7 @@
|
|||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel2.Size = new System.Drawing.Size(461, 26);
|
||||
this.tableLayoutPanel2.Size = new System.Drawing.Size(507, 26);
|
||||
this.tableLayoutPanel2.TabIndex = 0;
|
||||
//
|
||||
// flowLayoutPanel5
|
||||
|
@ -487,7 +526,7 @@
|
|||
this.flowLayoutPanel5.Location = new System.Drawing.Point(0, 0);
|
||||
this.flowLayoutPanel5.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel5.Name = "flowLayoutPanel5";
|
||||
this.flowLayoutPanel5.Size = new System.Drawing.Size(461, 25);
|
||||
this.flowLayoutPanel5.Size = new System.Drawing.Size(507, 25);
|
||||
this.flowLayoutPanel5.TabIndex = 1;
|
||||
//
|
||||
// lblClockRate
|
||||
|
@ -542,7 +581,7 @@
|
|||
this.grpPpuTiming.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.grpPpuTiming.Location = new System.Drawing.Point(3, 77);
|
||||
this.grpPpuTiming.Name = "grpPpuTiming";
|
||||
this.grpPpuTiming.Size = new System.Drawing.Size(467, 75);
|
||||
this.grpPpuTiming.Size = new System.Drawing.Size(513, 75);
|
||||
this.grpPpuTiming.TabIndex = 7;
|
||||
this.grpPpuTiming.TabStop = false;
|
||||
this.grpPpuTiming.Text = "PPU Vertical Blank Configuration";
|
||||
|
@ -563,7 +602,7 @@
|
|||
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
|
||||
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||
this.tableLayoutPanel5.Size = new System.Drawing.Size(461, 56);
|
||||
this.tableLayoutPanel5.Size = new System.Drawing.Size(507, 56);
|
||||
this.tableLayoutPanel5.TabIndex = 0;
|
||||
//
|
||||
// nudExtraScanlinesAfterNmi
|
||||
|
@ -632,7 +671,7 @@
|
|||
this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 155);
|
||||
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
|
||||
this.flowLayoutPanel2.Size = new System.Drawing.Size(473, 17);
|
||||
this.flowLayoutPanel2.Size = new System.Drawing.Size(519, 17);
|
||||
this.flowLayoutPanel2.TabIndex = 8;
|
||||
//
|
||||
// lblEffectiveClockRate
|
||||
|
@ -662,7 +701,7 @@
|
|||
this.flowLayoutPanel7.Location = new System.Drawing.Point(0, 232);
|
||||
this.flowLayoutPanel7.Margin = new System.Windows.Forms.Padding(0);
|
||||
this.flowLayoutPanel7.Name = "flowLayoutPanel7";
|
||||
this.flowLayoutPanel7.Size = new System.Drawing.Size(473, 35);
|
||||
this.flowLayoutPanel7.Size = new System.Drawing.Size(519, 35);
|
||||
this.flowLayoutPanel7.TabIndex = 12;
|
||||
//
|
||||
// chkShowLagCounter
|
||||
|
@ -692,21 +731,11 @@
|
|||
this.tmrUpdateClockRate.Enabled = true;
|
||||
this.tmrUpdateClockRate.Tick += new System.EventHandler(this.tmrUpdateClockRate_Tick);
|
||||
//
|
||||
// chkDisablePpu2004Reads
|
||||
//
|
||||
this.chkDisablePpu2004Reads.AutoSize = true;
|
||||
this.chkDisablePpu2004Reads.Location = new System.Drawing.Point(3, 72);
|
||||
this.chkDisablePpu2004Reads.Name = "chkDisablePpu2004Reads";
|
||||
this.chkDisablePpu2004Reads.Size = new System.Drawing.Size(148, 17);
|
||||
this.chkDisablePpu2004Reads.TabIndex = 4;
|
||||
this.chkDisablePpu2004Reads.Text = "Disable PPU $2004 reads";
|
||||
this.chkDisablePpu2004Reads.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// frmEmulationConfig
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(487, 328);
|
||||
this.ClientSize = new System.Drawing.Size(533, 328);
|
||||
this.Controls.Add(this.tabMain);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
|
@ -763,7 +792,7 @@
|
|||
private System.Windows.Forms.TabPage tpgAdvanced;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.CheckBox chkUseAlternativeMmc3Irq;
|
||||
private System.Windows.Forms.CheckBox chkAllowInvalidInput;
|
||||
private ctrlRiskyOption chkAllowInvalidInput;
|
||||
private System.Windows.Forms.CheckBox chkRemoveSpriteLimit;
|
||||
private System.Windows.Forms.TabPage tpgOverclocking;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
|
||||
|
@ -806,6 +835,8 @@
|
|||
private System.Windows.Forms.NumericUpDown nudTurboSpeed;
|
||||
private System.Windows.Forms.Label lblTurboSpeed;
|
||||
private System.Windows.Forms.Label lblTurboSpeedHint;
|
||||
private System.Windows.Forms.CheckBox chkDisablePpu2004Reads;
|
||||
private ctrlRiskyOption chkDisablePpu2004Reads;
|
||||
private ctrlRiskyOption chkDisableOamAddrBug;
|
||||
private ctrlRiskyOption chkDisablePaletteRead;
|
||||
}
|
||||
}
|
|
@ -28,6 +28,8 @@ namespace Mesen.GUI.Forms.Config
|
|||
AddBinding("AllowInvalidInput", chkAllowInvalidInput);
|
||||
AddBinding("RemoveSpriteLimit", chkRemoveSpriteLimit);
|
||||
AddBinding("DisablePpu2004Reads", chkDisablePpu2004Reads);
|
||||
AddBinding("DisablePaletteRead", chkDisablePaletteRead);
|
||||
AddBinding("DisableOamAddrBug", chkDisableOamAddrBug);
|
||||
|
||||
AddBinding("OverclockRate", nudOverclockRate);
|
||||
AddBinding("OverclockAdjustApu", chkOverclockAdjustApu);
|
||||
|
|
9
GUI.NET/Forms/Config/frmPreferences.Designer.cs
generated
9
GUI.NET/Forms/Config/frmPreferences.Designer.cs
generated
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Forms.Config
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Forms.Config
|
||||
{
|
||||
partial class frmPreferences
|
||||
{
|
||||
|
@ -89,7 +91,7 @@
|
|||
this.chkUnfFormat = new System.Windows.Forms.CheckBox();
|
||||
this.tpgAdvanced = new System.Windows.Forms.TabPage();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkDisableGameDatabase = new System.Windows.Forms.CheckBox();
|
||||
this.chkDisableGameDatabase = new ctrlRiskyOption();
|
||||
this.chkFdsAutoLoadDisk = new System.Windows.Forms.CheckBox();
|
||||
this.chkFdsFastForwardOnLoad = new System.Windows.Forms.CheckBox();
|
||||
this.tmrSyncDateTime = new System.Windows.Forms.Timer(this.components);
|
||||
|
@ -886,7 +888,6 @@
|
|||
this.chkDisableGameDatabase.Size = new System.Drawing.Size(170, 17);
|
||||
this.chkDisableGameDatabase.TabIndex = 6;
|
||||
this.chkDisableGameDatabase.Text = "Disable built-in game database";
|
||||
this.chkDisableGameDatabase.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkFdsAutoLoadDisk
|
||||
//
|
||||
|
@ -1037,7 +1038,7 @@
|
|||
private System.Windows.Forms.TabPage tpgNsf;
|
||||
private System.Windows.Forms.CheckBox chkFdsFastForwardOnLoad;
|
||||
private System.Windows.Forms.CheckBox chkFdsAutoLoadDisk;
|
||||
private System.Windows.Forms.CheckBox chkDisableGameDatabase;
|
||||
private ctrlRiskyOption chkDisableGameDatabase;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;
|
||||
private System.Windows.Forms.CheckBox chkNsfMoveToNextTrackAfterTime;
|
||||
|
|
24
GUI.NET/Forms/Config/frmVideoConfig.Designer.cs
generated
24
GUI.NET/Forms/Config/frmVideoConfig.Designer.cs
generated
|
@ -1,4 +1,6 @@
|
|||
namespace Mesen.GUI.Forms.Config
|
||||
using Mesen.GUI.Controls;
|
||||
|
||||
namespace Mesen.GUI.Forms.Config
|
||||
{
|
||||
partial class frmVideoConfig
|
||||
{
|
||||
|
@ -96,10 +98,10 @@
|
|||
this.btnLoadPalFile = new System.Windows.Forms.Button();
|
||||
this.tpgAdvanced = new System.Windows.Forms.TabPage();
|
||||
this.tableLayoutPanel9 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.chkDisableBackground = new System.Windows.Forms.CheckBox();
|
||||
this.chkDisableSprites = new System.Windows.Forms.CheckBox();
|
||||
this.chkForceBackgroundFirstColumn = new System.Windows.Forms.CheckBox();
|
||||
this.chkForceSpritesFirstColumn = new System.Windows.Forms.CheckBox();
|
||||
this.chkDisableBackground = new ctrlRiskyOption();
|
||||
this.chkDisableSprites = new ctrlRiskyOption();
|
||||
this.chkForceBackgroundFirstColumn = new ctrlRiskyOption();
|
||||
this.chkForceSpritesFirstColumn = new ctrlRiskyOption();
|
||||
this.contextPicturePresets = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.mnuPresetComposite = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuPresetSVideo = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -1091,7 +1093,6 @@
|
|||
this.chkDisableBackground.Size = new System.Drawing.Size(121, 17);
|
||||
this.chkDisableBackground.TabIndex = 0;
|
||||
this.chkDisableBackground.Text = "Disable background";
|
||||
this.chkDisableBackground.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkDisableSprites
|
||||
//
|
||||
|
@ -1101,7 +1102,6 @@
|
|||
this.chkDisableSprites.Size = new System.Drawing.Size(94, 17);
|
||||
this.chkDisableSprites.TabIndex = 1;
|
||||
this.chkDisableSprites.Text = "Disable sprites";
|
||||
this.chkDisableSprites.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkForceBackgroundFirstColumn
|
||||
//
|
||||
|
@ -1111,7 +1111,6 @@
|
|||
this.chkForceBackgroundFirstColumn.Size = new System.Drawing.Size(215, 17);
|
||||
this.chkForceBackgroundFirstColumn.TabIndex = 2;
|
||||
this.chkForceBackgroundFirstColumn.Text = "Force background display in first column";
|
||||
this.chkForceBackgroundFirstColumn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chkForceSpritesFirstColumn
|
||||
//
|
||||
|
@ -1121,7 +1120,6 @@
|
|||
this.chkForceSpritesFirstColumn.Size = new System.Drawing.Size(183, 17);
|
||||
this.chkForceSpritesFirstColumn.TabIndex = 3;
|
||||
this.chkForceSpritesFirstColumn.Text = "Force sprite display in first column";
|
||||
this.chkForceSpritesFirstColumn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// contextPicturePresets
|
||||
//
|
||||
|
@ -1428,10 +1426,10 @@
|
|||
private System.Windows.Forms.ComboBox cboFilter;
|
||||
private System.Windows.Forms.TabPage tpgAdvanced;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel9;
|
||||
private System.Windows.Forms.CheckBox chkDisableBackground;
|
||||
private System.Windows.Forms.CheckBox chkDisableSprites;
|
||||
private System.Windows.Forms.CheckBox chkForceBackgroundFirstColumn;
|
||||
private System.Windows.Forms.CheckBox chkForceSpritesFirstColumn;
|
||||
private ctrlRiskyOption chkDisableBackground;
|
||||
private ctrlRiskyOption chkDisableSprites;
|
||||
private ctrlRiskyOption chkForceBackgroundFirstColumn;
|
||||
private ctrlRiskyOption chkForceSpritesFirstColumn;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuPaletteNostalgia;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuPaletteNesClassic;
|
||||
private System.Windows.Forms.TableLayoutPanel tlpNtscFilter2;
|
||||
|
|
|
@ -73,6 +73,8 @@ namespace Mesen.GUI.Forms
|
|||
}
|
||||
} else if(kvp.Value is CheckBox) {
|
||||
((CheckBox)kvp.Value).Checked = Convert.ToBoolean(value);
|
||||
} else if(kvp.Value is ctrlRiskyOption) {
|
||||
((ctrlRiskyOption)kvp.Value).Checked = Convert.ToBoolean(value);
|
||||
} else if(kvp.Value is RadioButton) {
|
||||
((RadioButton)kvp.Value).Checked = (bool)value;
|
||||
} else if(kvp.Value is Panel) {
|
||||
|
@ -160,6 +162,12 @@ namespace Mesen.GUI.Forms
|
|||
} else if(field.FieldType == typeof(byte)) {
|
||||
field.SetValue(Entity, ((CheckBox)kvp.Value).Checked ? (byte)1 : (byte)0);
|
||||
}
|
||||
} else if(kvp.Value is ctrlRiskyOption) {
|
||||
if(field.FieldType == typeof(bool)) {
|
||||
field.SetValue(Entity, ((ctrlRiskyOption)kvp.Value).Checked);
|
||||
} else if(field.FieldType == typeof(byte)) {
|
||||
field.SetValue(Entity, ((ctrlRiskyOption)kvp.Value).Checked ? (byte)1 : (byte)0);
|
||||
}
|
||||
} else if(kvp.Value is RadioButton) {
|
||||
field.SetValue(Entity, ((RadioButton)kvp.Value).Checked);
|
||||
} else if(kvp.Value is Panel) {
|
||||
|
|
|
@ -243,6 +243,12 @@
|
|||
<Compile Include="Controls\ctrlNsfPlayer.Designer.cs">
|
||||
<DependentUpon>ctrlNsfPlayer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ctrlRiskyOption.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ctrlRiskyOption.Designer.cs">
|
||||
<DependentUpon>ctrlRiskyOption.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ctrlSplitContainer.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
|
@ -626,6 +632,9 @@
|
|||
<EmbeddedResource Include="Controls\ctrlNsfPlayer.resx">
|
||||
<DependentUpon>ctrlNsfPlayer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Controls\ctrlRiskyOption.resx">
|
||||
<DependentUpon>ctrlRiskyOption.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Controls\ctrlTrackbar.resx">
|
||||
<DependentUpon>ctrlTrackbar.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
|
@ -805,7 +805,7 @@ namespace Mesen.GUI
|
|||
}
|
||||
|
||||
[Flags]
|
||||
public enum EmulationFlags
|
||||
public enum EmulationFlags : UInt64
|
||||
{
|
||||
Paused = 0x01,
|
||||
ShowFPS = 0x02,
|
||||
|
@ -841,8 +841,10 @@ namespace Mesen.GUI
|
|||
ForceSpritesFirstColumn = 0x2000000,
|
||||
DisablePpu2004Reads = 0x4000000,
|
||||
DisableNoiseModeFlag = 0x8000000,
|
||||
DisablePaletteRead = 0x10000000,
|
||||
DisableOamAddrBug = 0x20000000,
|
||||
|
||||
InBackground = 0x40000000,
|
||||
InBackground = 0x4000000000,
|
||||
}
|
||||
|
||||
[Flags]
|
||||
|
|
Loading…
Add table
Reference in a new issue