Overclocking: Added settings to add extra scanlines in vblank before and after NMI + Moved a lot of emulation-related settings to a new "Emulation" menu item

This commit is contained in:
Souryo 2016-06-21 18:58:22 -04:00
parent b4e412a7d5
commit 57f24af64f
35 changed files with 1185 additions and 404 deletions

View file

@ -64,10 +64,10 @@ class APU : public Snapshotable, public IMemoryHandler
__forceinline static void ExecStatic()
{
if(EmulationSettings::GetOverclockRate() == 100 || !EmulationSettings::GetOverclockAdjustApu()) {
if(EmulationSettings::GetOverclockRate(true) == 100) {
Instance->Exec();
} else {
Instance->_cyclesNeeded += 1.0 / ((double)EmulationSettings::GetOverclockRate() / 100.0);
Instance->_cyclesNeeded += 1.0 / ((double)EmulationSettings::GetOverclockRate(true) / 100.0);
while(Instance->_cyclesNeeded >= 1.0) {
Instance->Exec();
Instance->_cyclesNeeded--;

View file

@ -19,10 +19,10 @@ protected:
public:
void Clock()
{
if(EmulationSettings::GetOverclockRate() == 100 || !EmulationSettings::GetOverclockAdjustApu()) {
if(EmulationSettings::GetOverclockRate(true) == 100) {
ClockAudio();
} else {
_clocksNeeded += 1.0 / ((double)EmulationSettings::GetOverclockRate() / 100);
_clocksNeeded += 1.0 / ((double)EmulationSettings::GetOverclockRate(true) / 100);
while(_clocksNeeded >= 1.0) {
ClockAudio();
_clocksNeeded--;

View file

@ -209,31 +209,29 @@ void CPU::StartDmcTransfer()
}
}
uint32_t CPU::GetClockRate(NesModel model, bool includeOverclock)
uint32_t CPU::GetClockRate(NesModel model)
{
uint32_t baseClock;
switch(model) {
default:
case NesModel::NTSC: baseClock = CPU::ClockRateNtsc; break;
case NesModel::PAL: baseClock = CPU::ClockRatePal; break;
case NesModel::Dendy: baseClock = CPU::ClockRateDendy; break;
}
if(includeOverclock) {
return baseClock * EmulationSettings::GetOverclockRate() / 100;
} else {
return baseClock;
case NesModel::NTSC: return CPU::ClockRateNtsc; break;
case NesModel::PAL: return CPU::ClockRatePal; break;
case NesModel::Dendy: return CPU::ClockRateDendy; break;
}
}
void CPU::StreamState(bool saving)
{
uint32_t overclockRate = EmulationSettings::GetOverclockRate();
uint32_t overclockRate = EmulationSettings::GetOverclockRateSetting();
bool overclockAdjustApu = EmulationSettings::GetOverclockAdjustApu();
uint32_t extraScanlinesBeforeNmi = EmulationSettings::GetPpuExtraScanlinesBeforeNmi();
uint32_t extraScanlinesAfterNmi = EmulationSettings::GetPpuExtraScanlinesAfterNmi();
Stream(_state.PC, _state.SP, _state.PS, _state.A, _state.X, _state.Y, _cycleCount, _state.NMIFlag,
_state.IRQFlag, _dmcCounter, _dmcDmaRunning, _spriteDmaCounter, _spriteDmaTransfer, overclockRate, overclockAdjustApu);
_state.IRQFlag, _dmcCounter, _dmcDmaRunning, _spriteDmaCounter, _spriteDmaTransfer,
overclockRate, overclockAdjustApu, extraScanlinesBeforeNmi, extraScanlinesBeforeNmi);
if(!saving) {
EmulationSettings::SetOverclockRate(overclockRate, overclockAdjustApu);
EmulationSettings::SetPpuNmiConfig(extraScanlinesBeforeNmi, extraScanlinesAfterNmi);
}
}

View file

@ -878,7 +878,7 @@ public:
static void ClearIRQSource(IRQSource source) { CPU::Instance->_state.IRQFlag &= ~(int)source; }
static void RunDMATransfer(uint8_t* spriteRAM, uint8_t offsetValue);
static void StartDmcTransfer();
static uint32_t GetClockRate(NesModel model, bool includeOverclock = true);
static uint32_t GetClockRate(NesModel model);
//Used by debugger for "Set Next Statement"

View file

@ -14,7 +14,10 @@ DeltaModulationChannel::DeltaModulationChannel(AudioChannel channel, SoundMixer
void DeltaModulationChannel::Reset(bool softReset)
{
BaseApuChannel::Reset(softReset);
EmulationSettings::DisableOverclocking(false);
_enableOverclockCounter = 0;
_sampleAddr = 0;
_sampleLength = 0;
_outputLevel = 0;
@ -102,13 +105,21 @@ void DeltaModulationChannel::Clock()
}
}
if(_enableOverclockCounter > 0) {
_enableOverclockCounter -= _period;
if(_enableOverclockCounter <= 0) {
//Reenable overclocking if no sample was written for over a full frame
EmulationSettings::DisableOverclocking(false);
}
}
AddOutput(_outputLevel);
}
void DeltaModulationChannel::StreamState(bool saving)
{
BaseApuChannel::StreamState(saving);
Stream(_sampleAddr, _sampleLength, _outputLevel, _irqEnabled, _loopFlag, _currentAddr, _bytesRemaining, _readBuffer, _bufferEmpty, _shiftRegister, _bitsRemaining, _silenceFlag, _needToRun);
Stream(_sampleAddr, _sampleLength, _outputLevel, _irqEnabled, _loopFlag, _currentAddr, _bytesRemaining, _readBuffer, _bufferEmpty, _shiftRegister, _bitsRemaining, _silenceFlag, _needToRun, _enableOverclockCounter);
}
bool DeltaModulationChannel::IrqPending(uint32_t cyclesToRun)
@ -154,6 +165,11 @@ void DeltaModulationChannel::WriteRAM(uint16_t addr, uint8_t value)
//4011 applies new output right away, not on the timer's reload. This fixes bad DMC sound when playing through 4011.
AddOutput(_outputLevel);
if(value > 0) {
_enableOverclockCounter = 30000;
EmulationSettings::DisableOverclocking(true);
}
break;
case 2: //4012

View file

@ -30,6 +30,8 @@ private:
bool _silenceFlag = true;
bool _needToRun = false;
int32_t _enableOverclockCounter;
void InitSample();
void FillReadBuffer();

View file

@ -26,7 +26,13 @@ PpuModel EmulationSettings::_ppuModel = PpuModel::Ppu2C03;
uint32_t EmulationSettings::_emulationSpeed = 100;
uint32_t EmulationSettings::_overclockRate = 100;
uint32_t EmulationSettings::_extraScanlinesBeforeNmi = 0;
uint32_t EmulationSettings::_extraScanlinesAfterNmi = 0;
uint32_t EmulationSettings::_ppuScanlineCount = 262;
double EmulationSettings::_effectiveOverclockRate = 100;
double EmulationSettings::_effectiveOverclockRateSound = 100;
bool EmulationSettings::_overclockAdjustApu = true;
bool EmulationSettings::_disableOverclocking = false;
OverscanDimensions EmulationSettings::_overscan;
VideoFilterType EmulationSettings::_videoFilterType = VideoFilterType::None;

View file

@ -245,6 +245,12 @@ private:
static uint32_t _emulationSpeed;
static uint32_t _overclockRate;
static bool _overclockAdjustApu;
static bool _disableOverclocking;
static uint32_t _extraScanlinesBeforeNmi;
static uint32_t _extraScanlinesAfterNmi;
static uint32_t _ppuScanlineCount;
static double _effectiveOverclockRate;
static double _effectiveOverclockRateSound;
static OverscanDimensions _overscan;
static VideoFilterType _videoFilterType;
@ -404,11 +410,45 @@ public:
return _emulationSpeed;
}
static uint32_t GetOverclockRate()
static void UpdateEffectiveOverclockRate()
{
if(_disableOverclocking) {
_effectiveOverclockRateSound = 100;
_effectiveOverclockRate = 100;
} else {
_effectiveOverclockRateSound = _overclockRate * (double)(1 + (double)(_extraScanlinesBeforeNmi + _extraScanlinesAfterNmi) / _ppuScanlineCount);
_effectiveOverclockRate = _overclockRate;
}
}
static void SetPpuScanlineCount(uint32_t scanlineCount)
{
_ppuScanlineCount = scanlineCount;
UpdateEffectiveOverclockRate();
}
static void DisableOverclocking(bool disabled)
{
_disableOverclocking = disabled;
UpdateEffectiveOverclockRate();
}
static uint32_t GetOverclockRateSetting()
{
return _overclockRate;
}
static double GetOverclockRate(bool forApu = false, bool forSoundMixer = false)
{
if(forApu && _overclockAdjustApu || forSoundMixer) {
return _effectiveOverclockRateSound;
} else if(!forApu) {
return _effectiveOverclockRate;
} else {
return 100;
}
}
static bool GetOverclockAdjustApu()
{
return _overclockAdjustApu;
@ -419,9 +459,36 @@ public:
if(_overclockRate != overclockRate || _overclockAdjustApu != adjustApu) {
_overclockRate = overclockRate;
_overclockAdjustApu = adjustApu;
UpdateEffectiveOverclockRate();
MessageManager::SendNotification(ConsoleNotificationType::ConfigChanged);
MessageManager::DisplayMessage("ClockRate", std::to_string(EmulationSettings::GetOverclockRate()) + "%");
MessageManager::DisplayMessage("ClockRate", std::to_string((uint32_t)EmulationSettings::GetOverclockRate()) + "%");
}
}
static uint32_t GetPpuExtraScanlinesBeforeNmi()
{
return _disableOverclocking ? 0 : _extraScanlinesBeforeNmi;
}
static uint32_t GetPpuExtraScanlinesAfterNmi()
{
return _disableOverclocking ? 0 : _extraScanlinesAfterNmi;
}
static void SetPpuNmiConfig(uint32_t extraScanlinesBeforeNmi, uint32_t extraScanlinesAfterNmi)
{
if(_extraScanlinesBeforeNmi != extraScanlinesBeforeNmi || _extraScanlinesAfterNmi != extraScanlinesAfterNmi) {
if(extraScanlinesBeforeNmi > 0 || extraScanlinesAfterNmi > 0) {
MessageManager::DisplayMessage("PPU", "ScanlineTimingWarning");
}
_extraScanlinesBeforeNmi = extraScanlinesBeforeNmi;
_extraScanlinesAfterNmi = extraScanlinesAfterNmi;
UpdateEffectiveOverclockRate();
}
}

View file

@ -70,7 +70,7 @@ protected:
_square2.Run();
if(_audioCounter <= 0) {
//~240hz envelope/length counter
_audioCounter = CPU::GetClockRate(EmulationSettings::GetNesModel(), false) / 240;
_audioCounter = CPU::GetClockRate(EmulationSettings::GetNesModel()) / 240;
_square1.TickLengthCounter();
_square1.TickEnvelope();
_square2.TickLengthCounter();

View file

@ -26,7 +26,7 @@ std::unordered_map<string, string> MessageManager::_enResources = {
{ "ConnectedAsSpectator", u8"Connected as spectator." },
{ "ConnectionLost", u8"Connection to server lost." },
{ "CouldNotConnect", u8"Could not connect to the server." },
{ "CouldNotIniitalizeAudioSystem", u8"Could not initialize audio system" },
{ "CouldNotIniitalizeAudioSystem", u8"Could not initialize audio system" },
{ "CouldNotFindRom", u8"Could not find matching game ROM." },
{ "CouldNotLoadFile", u8"Could not load file: %1" },
{ "EmulationMaximumSpeed", u8"Maximum speed" },
@ -49,6 +49,7 @@ std::unordered_map<string, string> MessageManager::_enResources = {
{ "SaveStateLoaded", u8"State #%1 loaded." },
{ "SaveStateNewerVersion", u8"Cannot load save states created by a more recent version of Mesen. Please download the latest version." },
{ "SaveStateSaved", u8"State #%1 saved." },
{ "ScanlineTimingWarning", u8"PPU timing has been changed." },
{ "ServerStarted", u8"Server started (Port: %1)" },
{ "ServerStopped", u8"Server stopped" },
{ "SoundRecorderStarted", u8"Recording to: %1" },
@ -107,6 +108,7 @@ std::unordered_map<string, string> MessageManager::_frResources = {
{ "SaveStateLoaded", u8"Sauvegarde #%1 chargée." },
{ "SaveStateNewerVersion", u8"Impossible de charger une sauvegarde qui a été créée avec une version plus récente de Mesen. Veuillez mettre à jour Mesen." },
{ "SaveStateSaved", u8"Sauvegarde #%1 sauvegardée." },
{ "ScanlineTimingWarning", u8"Le timing du PPU a été modifié." },
{ "ServerStarted", u8"Le serveur a été démarré (Port : %1)" },
{ "ServerStopped", u8"Le serveur a été arrêté" },
{ "SoundRecorderStarted", u8"En cours d'enregistrement : %1" },
@ -167,6 +169,7 @@ std::unordered_map<string, string> MessageManager::_jaResources = {
{ "SaveStateSaved", u8"クイックセーブ%1をセーブしました。" },
{ "ServerStarted", u8"サーバは起動しました (ポート: %1)" },
{ "ServerStopped", u8"サーバは停止しました。" },
{ "ScanlineTimingWarning", u8"PPUのタイミングは変更されました。" },
{ "SoundRecorderStarted", u8"%1に録音しています。" },
{ "SoundRecorderStopped", u8"録音を終了しました: %1" },
{ "TestFileSavedTo", u8"Test file saved to: %1" },

View file

@ -213,6 +213,8 @@ struct MovieHeader
uint32_t ExpansionDevice;
uint32_t OverclockRate;
bool OverclockAdjustApu;
uint32_t ExtraScanlinesBeforeNmi;
uint32_t ExtraScanlinesAfterNmi;
uint32_t CheatCount;
uint32_t FilenameLength;
};
@ -250,6 +252,8 @@ bool Movie::Save()
_file.write((char*)&header.ExpansionDevice, sizeof(header.ExpansionDevice));
_file.write((char*)&header.OverclockRate, sizeof(header.OverclockRate));
_file.write((char*)&header.OverclockAdjustApu, sizeof(header.OverclockAdjustApu));
_file.write((char*)&header.ExtraScanlinesBeforeNmi, sizeof(header.ExtraScanlinesBeforeNmi));
_file.write((char*)&header.ExtraScanlinesAfterNmi, sizeof(header.ExtraScanlinesAfterNmi));
_file.write((char*)&header.CheatCount, sizeof(header.CheatCount));
_file.write((char*)&header.FilenameLength, sizeof(header.FilenameLength));
@ -324,6 +328,12 @@ bool Movie::Load(std::stringstream &file, bool autoLoadRom)
file.read((char*)&header.OverclockRate, sizeof(header.OverclockRate));
file.read((char*)&header.OverclockAdjustApu, sizeof(header.OverclockAdjustApu));
EmulationSettings::SetOverclockRate(header.OverclockRate, header.OverclockAdjustApu);
if(header.MovieFormatVersion >= 4) {
file.read((char*)&header.ExtraScanlinesBeforeNmi, sizeof(header.ExtraScanlinesBeforeNmi));
file.read((char*)&header.ExtraScanlinesAfterNmi, sizeof(header.ExtraScanlinesAfterNmi));
EmulationSettings::SetPpuNmiConfig(header.ExtraScanlinesBeforeNmi, header.ExtraScanlinesAfterNmi);
}
}
file.read((char*)&header.CheatCount, sizeof(header.CheatCount));
file.read((char*)&header.FilenameLength, sizeof(header.FilenameLength));

View file

@ -14,7 +14,7 @@ class Movie
{
private:
static shared_ptr<Movie> _instance;
const uint32_t MovieFormatVersion = 3;
const uint32_t MovieFormatVersion = 4;
bool _recording = false;
bool _playing = false;
uint8_t _counter[4];

View file

@ -59,11 +59,27 @@ void PPU::Reset()
void PPU::SetNesModel(NesModel model)
{
_nesModel = model;
switch(model) {
case NesModel::NTSC: _vblankEnd = 260; break;
switch(_nesModel) {
case NesModel::NTSC:
_nmiScanline = 241;
_vblankEnd = 260;
EmulationSettings::SetPpuScanlineCount(262);
break;
case NesModel::PAL:
case NesModel::Dendy: _vblankEnd = 310; break;
_nmiScanline = 241;
_vblankEnd = 310;
EmulationSettings::SetPpuScanlineCount(312);
break;
case NesModel::Dendy:
_nmiScanline = 291;
_vblankEnd = 310;
EmulationSettings::SetPpuScanlineCount(312);
break;
}
_nmiScanline += EmulationSettings::GetPpuExtraScanlinesBeforeNmi();
_vblankEnd += EmulationSettings::GetPpuExtraScanlinesAfterNmi() + EmulationSettings::GetPpuExtraScanlinesBeforeNmi();
}
PPUDebugState PPU::GetState()
@ -829,10 +845,7 @@ void PPU::BeginVBlank()
{
if(_cycle == 0) {
SendFrame();
if(_nesModel == NesModel::NTSC || _nesModel == NesModel::PAL) {
TriggerNmi();
}
TriggerNmi();
}
}
@ -868,10 +881,8 @@ void PPU::Exec()
ProcessVisibleScanline();
} else if(_scanline == -1) {
ProcessPrerenderScanline();
} else if(_scanline == 241) {
} else if(_scanline == _nmiScanline) {
BeginVBlank();
} else if(_scanline == 291 && _cycle == 0 && _nesModel == NesModel::Dendy) {
TriggerNmi();
} else if(_scanline == _vblankEnd) {
EndVBlank();
}
@ -883,7 +894,8 @@ void PPU::Exec()
void PPU::ExecStatic()
{
if(EmulationSettings::GetOverclockRate() == 100) {
double overclockRate = EmulationSettings::GetOverclockRate();
if(overclockRate == 100) {
PPU::Instance->Exec();
PPU::Instance->Exec();
PPU::Instance->Exec();
@ -894,9 +906,9 @@ void PPU::ExecStatic()
} else {
if(PPU::Instance->_nesModel == NesModel::PAL) {
//PAL PPU runs 3.2 clocks for every CPU clock, so we need to run an extra clock every 5 CPU clocks
Instance->_cyclesNeeded += 3.2 / ((double)EmulationSettings::GetOverclockRate() / 100.0);
Instance->_cyclesNeeded += 3.2 / (overclockRate / 100.0);
} else {
Instance->_cyclesNeeded += 3.0 / ((double)EmulationSettings::GetOverclockRate() / 100.0);
Instance->_cyclesNeeded += 3.0 / (overclockRate / 100.0);
}
while(Instance->_cyclesNeeded >= 1.0) {

View file

@ -111,6 +111,7 @@ class PPU : public IMemoryHandler, public Snapshotable
NesModel _nesModel;
uint16_t _vblankEnd;
uint16_t _nmiScanline;
PPUControlFlags _flags;
PPUStatusFlags _statusFlags;

View file

@ -129,7 +129,11 @@ void SoundMixer::SetNesModel(NesModel model)
void SoundMixer::UpdateRates(bool forceUpdate)
{
uint32_t newRate = CPU::GetClockRate(_model, !EmulationSettings::GetOverclockAdjustApu());
uint32_t newRate = CPU::GetClockRate(_model);
if(!EmulationSettings::GetOverclockAdjustApu()) {
newRate *= (double)EmulationSettings::GetOverclockRate(false, true) / 100;
}
if(_clockRate != newRate || forceUpdate) {
_clockRate = newRate;
blip_set_rates(_blipBuf, _clockRate, _sampleRate);

View file

@ -17,6 +17,7 @@ namespace Mesen.GUI.Config
public AudioInfo AudioInfo;
public VideoInfo VideoInfo;
public InputInfo InputInfo;
public EmulationInfo EmulationInfo;
public List<string> RecentFiles;
public List<VsConfigInfo> VsConfig;
public List<CheatInfo> Cheats;
@ -35,6 +36,7 @@ namespace Mesen.GUI.Config
AudioInfo = new AudioInfo();
VideoInfo = new VideoInfo();
PreferenceInfo = new PreferenceInfo();
EmulationInfo = new EmulationInfo();
RecentFiles = new List<string>();
InputInfo = new InputInfo();
Cheats = new List<CheatInfo>();
@ -48,6 +50,7 @@ namespace Mesen.GUI.Config
VideoInfo.ApplyConfig();
AudioInfo.ApplyConfig();
PreferenceInfo.ApplyConfig();
EmulationInfo.ApplyConfig();
InteropEmu.SetNesModel(Region);
}

View file

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Mesen.GUI.Forms;
using Microsoft.Win32;
namespace Mesen.GUI.Config
{
public class EmulationInfo
{
public bool AllowInvalidInput = false;
public bool RemoveSpriteLimit = false;
public bool UseAlternativeMmc3Irq = false;
public UInt32 OverclockRate = 100;
public bool OverclockAdjustApu = true;
public UInt32 PpuExtraScanlinesBeforeNmi = 0;
public UInt32 PpuExtraScanlinesAfterNmi = 0;
public UInt32 EmulationSpeed = 100;
public EmulationInfo()
{
}
static public void ApplyConfig()
{
EmulationInfo emulationInfo = ConfigManager.Config.EmulationInfo;
InteropEmu.SetEmulationSpeed(emulationInfo.EmulationSpeed);
InteropEmu.SetFlag(EmulationFlags.Mmc3IrqAltBehavior, emulationInfo.UseAlternativeMmc3Irq);
InteropEmu.SetFlag(EmulationFlags.AllowInvalidInput, emulationInfo.AllowInvalidInput);
InteropEmu.SetFlag(EmulationFlags.RemoveSpriteLimit, emulationInfo.RemoveSpriteLimit);
InteropEmu.SetOverclockRate(emulationInfo.OverclockRate, emulationInfo.OverclockAdjustApu);
InteropEmu.SetPpuNmiConfig(emulationInfo.PpuExtraScanlinesBeforeNmi, emulationInfo.PpuExtraScanlinesAfterNmi);
}
}
}

View file

@ -39,9 +39,6 @@ namespace Mesen.GUI.Config
public bool CloudSaveIntegration = false;
public DateTime CloudLastSync = DateTime.MinValue;
public UInt32 OverclockRate = 100;
public bool OverclockAdjustApu = true;
public bool DisableGameDatabase = false;
public PreferenceInfo()
@ -81,8 +78,6 @@ namespace Mesen.GUI.Config
InteropEmu.SetFlag(EmulationFlags.AllowBackgroundInput, preferenceInfo.AllowBackgroundInput);
InteropEmu.SetFlag(EmulationFlags.PauseWhenInBackground, preferenceInfo.PauseWhenInBackground);
InteropEmu.SetFlag(EmulationFlags.DisableGameDatabase, preferenceInfo.DisableGameDatabase);
InteropEmu.SetOverclockRate(preferenceInfo.OverclockRate, preferenceInfo.OverclockAdjustApu);
}
}
}

View file

@ -11,7 +11,6 @@ namespace Mesen.GUI.Config
{
public class VideoInfo
{
public UInt32 EmulationSpeed = 100;
public bool ShowFPS = false;
public UInt32 OverscanLeft = 0;
public UInt32 OverscanRight = 0;
@ -49,8 +48,6 @@ namespace Mesen.GUI.Config
{
VideoInfo videoInfo = ConfigManager.Config.VideoInfo;
InteropEmu.SetEmulationSpeed(videoInfo.EmulationSpeed);
InteropEmu.SetFlag(EmulationFlags.ShowFPS, videoInfo.ShowFPS);
InteropEmu.SetFlag(EmulationFlags.VerticalSync, videoInfo.VerticalSync);
InteropEmu.SetFlag(EmulationFlags.UseHdPacks, videoInfo.UseHdPacks);

View file

@ -48,6 +48,7 @@
<Control ID="mnuRegionPal">PAL</Control>
<Control ID="mnuRegionDendy">Dendy</Control>
<Control ID="mnuVideoConfig">Vidéo</Control>
<Control ID="mnuEmulationConfig">Émulation</Control>
<Control ID="mnuPreferences">Préférences</Control>
<Control ID="mnuTools">Outils</Control>
<Control ID="mnuNetPlay">Jeu en ligne</Control>
@ -162,8 +163,6 @@
<Control ID="lblVideoFilter">Filtre :</Control>
<Control ID="chkVerticalSync">Activer la synchronisation verticale</Control>
<Control ID="lblDisplayRatio">Format d'image :</Control>
<Control ID="lblEmuSpeedHint">(0 = Vitesse maximale)</Control>
<Control ID="lblEmulationSpeed">Vitesse d'émulation :</Control>
<Control ID="chkBilinearInterpolation">Utiliser l'interpolation bilinéaire</Control>
<Control ID="chkShowFps">Afficher le FPS</Control>
<Control ID="chkUseHdPacks">Utiliser les packs haute-définition de HDNes</Control>
@ -203,6 +202,33 @@
<Control ID="btnOK">OK</Control>
<Control ID="btnCancel">Annuler</Control>
</Form>
<Form ID="frmEmulationConfig" Title="Paramètres de l'émulation">
<Control ID="tpgGeneral">Général</Control>
<Control ID="lblEmuSpeedHint">% (0 = Vitesse maximale)</Control>
<Control ID="lblEmulationSpeed">Vitesse d'émulation :</Control>
<Control ID="tpgAdvanced">Avancé</Control>
<Control ID="chkUseAlternativeMmc3Irq">Utiliser la version alternative du comportement des IRQs du MMC3</Control>
<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="tpgOverclocking">Overclocking</Control>
<Control ID="grpOverclocking">Overclocking du CPU</Control>
<Control ID="lblOverclockWarning">ATTENTION: L'overclocking affecte la stabilité de l'émulation et peut faire planter certains jeux!</Control>
<Control ID="lblClockRate">Multiplicateur de la fréquence d'horloge : </Control>
<Control ID="lblClockRatePercent">% (Recommandé: 100%)</Control>
<Control ID="grpPpuTiming">Timing du PPU</Control>
<Control ID="lblExtraScanlinesBeforeNmi">Nombre de lignes additionnelles avant le NMI : </Control>
<Control ID="lblExtraScanlinesAfterNmi">Nombre de lignes additionnelles après le NMI : </Control>
<Control ID="lblEffectiveClockRate">Fréquence d'horloge (NTSC) : </Control>
<Control ID="lblEffectiveClockRatePal">Fréquence d'horloge (PAL) : </Control>
<Control ID="chkOverclockAdjustApu">Ne pas overclocker l'APU (Empêche le changement de tonalité causé par l'overclocking)</Control>
<Control ID="btnOK">OK</Control>
<Control ID="btnCancel">Annuler</Control>
</Form>
<Form ID="frmPreferences" Title="Préférences">
<Control ID="tpgGeneral">Général</Control>
<Control ID="lblDisplayLanguage">Langue d'affichage :</Control>
@ -221,9 +247,6 @@
<Control ID="chkMmoFormat">.MMO (Films Mesen)</Control>
<Control ID="chkMstFormat">.MST (Savestate Mesen)</Control>
<Control ID="tpgAdvanced">Avancé</Control>
<Control ID="chkUseAlternativeMmc3Irq">Utiliser la version alternative du comportement des IRQs du MMC3</Control>
<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="chkFdsAutoLoadDisk">Insérer le côté A du disque 1 lors du chargement d'un jeu de FDS</Control>
<Control ID="chkFdsFastForwardOnLoad">Augmenter la vitesse d'émulation pendant le chargement des jeux FDS</Control>
@ -235,12 +258,6 @@
<Control ID="lblLastSync">Dernière synchronisation : </Control>
<Control ID="btnResync">Resynchroniser</Control>
<Control ID="grpOverclocking">Overclocking</Control>
<Control ID="lblOverclockWarning">ATTENTION: L'overclocking affecte la stabilité de l'émulation et peut faire planter certains jeux!</Control>
<Control ID="lblClockRate">Fréquence d'horloge : </Control>
<Control ID="lblClockRatePercent">% (Recommandé: 100%)</Control>
<Control ID="chkOverclockAdjustApu">Ne pas overclocker l'APU (Empêche le changement de tonalité causé par l'overclocking)</Control>
<Control ID="chkDisableGameDatabase">Désactiver la base de données des jeux</Control>
<Control ID="btnOK">OK</Control>

View file

@ -48,6 +48,7 @@
<Control ID="mnuRegionPal">PAL</Control>
<Control ID="mnuRegionDendy">Dendy</Control>
<Control ID="mnuVideoConfig">映像</Control>
<Control ID="mnuEmulationConfig">エミュレーション</Control>
<Control ID="mnuPreferences">設定</Control>
<Control ID="mnuTools">ツール</Control>
<Control ID="mnuNetPlay">ネットプレイ</Control>
@ -163,8 +164,6 @@
<Control ID="chkBilinearInterpolation">バイリニア補間を有効にする</Control>
<Control ID="chkVerticalSync">垂直同期を有効にする</Control>
<Control ID="lblDisplayRatio">画面アスペクト:</Control>
<Control ID="lblEmuSpeedHint">(0 = 最高速度)</Control>
<Control ID="lblEmulationSpeed">エミュレーションの速度:</Control>
<Control ID="chkShowFps">フレームレート表示</Control>
<Control ID="chkUseHdPacks">HDNesのHDパックを使う</Control>
<Control ID="tpgOverscan">オーバースキャン</Control>
@ -203,6 +202,32 @@
<Control ID="btnOK">OK</Control>
<Control ID="btnCancel">キャンセル</Control>
</Form>
<Form ID="frmEmulationConfig" Title="エミュレーション設定">
<Control ID="tpgGeneral">全般</Control>
<Control ID="lblEmuSpeedHint">% (0 = 最高速度)</Control>
<Control ID="lblEmulationSpeed">エミュレーションの速度:</Control>
<Control ID="tpgAdvanced">詳細設定</Control>
<Control ID="chkUseAlternativeMmc3Irq">MMC3AのIRQ仕様を使う</Control>
<Control ID="chkAllowInvalidInput">コントローラでは不可能インプットを可能にする (同時に上と下や右と左)</Control>
<Control ID="chkRemoveSpriteLimit">スプライトの制限を解除 (点滅を軽減する)</Control>
<Control ID="tpgOverclocking">オーバークロック</Control>
<Control ID="grpOverclocking">オーバークロック</Control>
<Control ID="lblOverclockWarning">警告: オーバークロックをすることでエミュレーションの精度は下がる。 ゲームがバグる可能性は高い。</Control>
<Control ID="lblClockRate">クロックレートの倍率: </Control>
<Control ID="lblClockRatePercent">% (デフォルト: 100%)</Control>
<Control ID="chkOverclockAdjustApu">APUのオーバークロックを無効にする (オーバークロックによる音声のピッチ変化を中和)</Control>
<Control ID="grpPpuTiming">PPUタイミング</Control>
<Control ID="lblExtraScanlinesBeforeNmi">NMIの前の追加走査線数: </Control>
<Control ID="lblExtraScanlinesAfterNmi">NMIの後の追加走査線数: </Control>
<Control ID="lblEffectiveClockRate">クロックレート (NTSC) : </Control>
<Control ID="lblEffectiveClockRatePal">クロックレート (PAL) : </Control>
<Control ID="btnOK">OK</Control>
<Control ID="btnCancel">キャンセル</Control>
</Form>
<Form ID="frmPreferences" Title="設定">
<Control ID="tpgGeneral">全般</Control>
<Control ID="lblDisplayLanguage">言語:</Control>
@ -221,9 +246,6 @@
<Control ID="chkMmoFormat">.MMO (Mesenの動画)</Control>
<Control ID="chkMstFormat">.MST (Mesenのクイックセーブ)</Control>
<Control ID="tpgAdvanced">詳細設定</Control>
<Control ID="chkUseAlternativeMmc3Irq">MMC3AのIRQ仕様を使う</Control>
<Control ID="chkAllowInvalidInput">コントローラでは不可能インプットを可能にする (同時に上と下や右と左)</Control>
<Control ID="chkRemoveSpriteLimit">スプライトの制限を解除 (点滅を軽減する)</Control>
<Control ID="chkFdsAutoLoadDisk">ファミコンディスクシステムのゲームをロードする時に自動的にディスクのA面を入れる</Control>
<Control ID="chkFdsFastForwardOnLoad">ファミコンディスクシステムのゲームをディスクからロードする時に自動的に最高速度にする</Control>
@ -235,12 +257,6 @@
<Control ID="btnResync">同期</Control>
<Control ID="lblLastSync">最終同期: </Control>
<Control ID="grpOverclocking">オーバークロック</Control>
<Control ID="lblOverclockWarning">警告: オーバークロックをすることでエミュレーションの精度は下がる。 ゲームがバグる可能性は高い。</Control>
<Control ID="lblClockRate">クロックレート: </Control>
<Control ID="lblClockRatePercent">% (デフォルト: 100%)</Control>
<Control ID="chkOverclockAdjustApu">APUのオーバークロックを無効にする (オーバークロックによる音声のピッチ変化を中和)</Control>
<Control ID="chkDisableGameDatabase">ゲームデータベースを無効にする</Control>
<Control ID="btnOK">OK</Control>

View file

@ -0,0 +1,612 @@
namespace Mesen.GUI.Forms.Config
{
partial class frmEmulationConfig
{
/// <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 Windows Form 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.components = new System.ComponentModel.Container();
this.tabMain = new System.Windows.Forms.TabControl();
this.tpgGeneral = new System.Windows.Forms.TabPage();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel6 = new System.Windows.Forms.FlowLayoutPanel();
this.nudEmulationSpeed = new System.Windows.Forms.NumericUpDown();
this.lblEmuSpeedHint = new System.Windows.Forms.Label();
this.lblEmulationSpeed = new System.Windows.Forms.Label();
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.chkRemoveSpriteLimit = new System.Windows.Forms.CheckBox();
this.tpgOverclocking = new System.Windows.Forms.TabPage();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.lblOverclockWarning = new System.Windows.Forms.Label();
this.chkOverclockAdjustApu = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel();
this.lblEffectiveClockRatePal = new System.Windows.Forms.Label();
this.lblEffectiveClockRateValuePal = new System.Windows.Forms.Label();
this.grpOverclocking = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel();
this.lblClockRate = new System.Windows.Forms.Label();
this.nudOverclockRate = new System.Windows.Forms.NumericUpDown();
this.lblClockRatePercent = new System.Windows.Forms.Label();
this.grpPpuTiming = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
this.nudExtraScanlinesAfterNmi = new System.Windows.Forms.NumericUpDown();
this.nudExtraScanlinesBeforeNmi = new System.Windows.Forms.NumericUpDown();
this.lblExtraScanlinesBeforeNmi = new System.Windows.Forms.Label();
this.lblExtraScanlinesAfterNmi = new System.Windows.Forms.Label();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.lblEffectiveClockRate = new System.Windows.Forms.Label();
this.lblEffectiveClockRateValue = new System.Windows.Forms.Label();
this.tmrUpdateClockRate = new System.Windows.Forms.Timer(this.components);
this.tabMain.SuspendLayout();
this.tpgGeneral.SuspendLayout();
this.tableLayoutPanel4.SuspendLayout();
this.flowLayoutPanel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudEmulationSpeed)).BeginInit();
this.tpgAdvanced.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.tpgOverclocking.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.flowLayoutPanel3.SuspendLayout();
this.grpOverclocking.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.flowLayoutPanel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudOverclockRate)).BeginInit();
this.grpPpuTiming.SuspendLayout();
this.tableLayoutPanel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudExtraScanlinesAfterNmi)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudExtraScanlinesBeforeNmi)).BeginInit();
this.flowLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// baseConfigPanel
//
this.baseConfigPanel.Location = new System.Drawing.Point(0, 264);
this.baseConfigPanel.Size = new System.Drawing.Size(487, 29);
//
// tabMain
//
this.tabMain.Controls.Add(this.tpgGeneral);
this.tabMain.Controls.Add(this.tpgAdvanced);
this.tabMain.Controls.Add(this.tpgOverclocking);
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
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, 264);
this.tabMain.TabIndex = 2;
//
// tpgGeneral
//
this.tpgGeneral.Controls.Add(this.tableLayoutPanel4);
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, 238);
this.tpgGeneral.TabIndex = 0;
this.tpgGeneral.Text = "General";
this.tpgGeneral.UseVisualStyleBackColor = true;
//
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 2;
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel4.Controls.Add(this.flowLayoutPanel6, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.lblEmulationSpeed, 0, 0);
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 2;
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, 232);
this.tableLayoutPanel4.TabIndex = 0;
//
// flowLayoutPanel6
//
this.flowLayoutPanel6.AutoSize = true;
this.flowLayoutPanel6.Controls.Add(this.nudEmulationSpeed);
this.flowLayoutPanel6.Controls.Add(this.lblEmuSpeedHint);
this.flowLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel6.Location = new System.Drawing.Point(96, 0);
this.flowLayoutPanel6.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel6.Name = "flowLayoutPanel6";
this.flowLayoutPanel6.Size = new System.Drawing.Size(377, 26);
this.flowLayoutPanel6.TabIndex = 11;
//
// nudEmulationSpeed
//
this.nudEmulationSpeed.Location = new System.Drawing.Point(3, 3);
this.nudEmulationSpeed.Maximum = new decimal(new int[] {
500,
0,
0,
0});
this.nudEmulationSpeed.Name = "nudEmulationSpeed";
this.nudEmulationSpeed.Size = new System.Drawing.Size(48, 20);
this.nudEmulationSpeed.TabIndex = 1;
//
// lblEmuSpeedHint
//
this.lblEmuSpeedHint.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblEmuSpeedHint.AutoSize = true;
this.lblEmuSpeedHint.Location = new System.Drawing.Point(57, 6);
this.lblEmuSpeedHint.Name = "lblEmuSpeedHint";
this.lblEmuSpeedHint.Size = new System.Drawing.Size(121, 13);
this.lblEmuSpeedHint.TabIndex = 2;
this.lblEmuSpeedHint.Text = "% (0 = Maximum speed)";
//
// lblEmulationSpeed
//
this.lblEmulationSpeed.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblEmulationSpeed.AutoSize = true;
this.lblEmulationSpeed.Location = new System.Drawing.Point(3, 6);
this.lblEmulationSpeed.Name = "lblEmulationSpeed";
this.lblEmulationSpeed.Size = new System.Drawing.Size(90, 13);
this.lblEmulationSpeed.TabIndex = 12;
this.lblEmulationSpeed.Text = "Emulation Speed:";
//
// tpgAdvanced
//
this.tpgAdvanced.Controls.Add(this.tableLayoutPanel1);
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, 238);
this.tpgAdvanced.TabIndex = 1;
this.tpgAdvanced.Text = "Advanced";
this.tpgAdvanced.UseVisualStyleBackColor = true;
//
// tableLayoutPanel1
//
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, 0);
this.tableLayoutPanel1.Controls.Add(this.chkAllowInvalidInput, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.chkRemoveSpriteLimit, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 4;
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.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(473, 232);
this.tableLayoutPanel1.TabIndex = 0;
//
// chkUseAlternativeMmc3Irq
//
this.chkUseAlternativeMmc3Irq.AutoSize = true;
this.chkUseAlternativeMmc3Irq.Location = new System.Drawing.Point(3, 3);
this.chkUseAlternativeMmc3Irq.Name = "chkUseAlternativeMmc3Irq";
this.chkUseAlternativeMmc3Irq.Size = new System.Drawing.Size(197, 17);
this.chkUseAlternativeMmc3Irq.TabIndex = 0;
this.chkUseAlternativeMmc3Irq.Text = "Use alternative MMC3 IRQ behavior";
this.chkUseAlternativeMmc3Irq.UseVisualStyleBackColor = true;
//
// chkAllowInvalidInput
//
this.chkAllowInvalidInput.AutoSize = true;
this.chkAllowInvalidInput.Location = new System.Drawing.Point(3, 26);
this.chkAllowInvalidInput.Name = "chkAllowInvalidInput";
this.chkAllowInvalidInput.Size = new System.Drawing.Size(341, 17);
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
//
this.chkRemoveSpriteLimit.AutoSize = true;
this.chkRemoveSpriteLimit.Location = new System.Drawing.Point(3, 49);
this.chkRemoveSpriteLimit.Name = "chkRemoveSpriteLimit";
this.chkRemoveSpriteLimit.Size = new System.Drawing.Size(205, 17);
this.chkRemoveSpriteLimit.TabIndex = 2;
this.chkRemoveSpriteLimit.Text = "Remove sprite limit (Reduces flashing)";
this.chkRemoveSpriteLimit.UseVisualStyleBackColor = true;
//
// 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, 238);
this.tpgOverclocking.TabIndex = 2;
this.tpgOverclocking.Text = "Overclocking";
this.tpgOverclocking.UseVisualStyleBackColor = true;
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 1;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Controls.Add(this.lblOverclockWarning, 0, 0);
this.tableLayoutPanel3.Controls.Add(this.chkOverclockAdjustApu, 0, 5);
this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel3, 0, 4);
this.tableLayoutPanel3.Controls.Add(this.grpOverclocking, 0, 1);
this.tableLayoutPanel3.Controls.Add(this.grpPpuTiming, 0, 2);
this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel2, 0, 3);
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 7;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle());
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, 232);
this.tableLayoutPanel3.TabIndex = 0;
//
// lblOverclockWarning
//
this.lblOverclockWarning.AutoSize = true;
this.lblOverclockWarning.ForeColor = System.Drawing.Color.Red;
this.lblOverclockWarning.Location = new System.Drawing.Point(3, 5);
this.lblOverclockWarning.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
this.lblOverclockWarning.Name = "lblOverclockWarning";
this.lblOverclockWarning.Size = new System.Drawing.Size(384, 13);
this.lblOverclockWarning.TabIndex = 2;
this.lblOverclockWarning.Text = "WARNING: Overclocking will cause stability issues and may crash some games!";
//
// chkOverclockAdjustApu
//
this.chkOverclockAdjustApu.AutoSize = true;
this.chkOverclockAdjustApu.Location = new System.Drawing.Point(3, 204);
this.chkOverclockAdjustApu.Name = "chkOverclockAdjustApu";
this.chkOverclockAdjustApu.Size = new System.Drawing.Size(401, 17);
this.chkOverclockAdjustApu.TabIndex = 10;
this.chkOverclockAdjustApu.Text = "Do not overclock APU (prevents sound pitch changes caused by overclocking)";
this.chkOverclockAdjustApu.UseVisualStyleBackColor = true;
//
// flowLayoutPanel3
//
this.flowLayoutPanel3.Controls.Add(this.lblEffectiveClockRatePal);
this.flowLayoutPanel3.Controls.Add(this.lblEffectiveClockRateValuePal);
this.flowLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel3.Location = new System.Drawing.Point(3, 181);
this.flowLayoutPanel3.Name = "flowLayoutPanel3";
this.flowLayoutPanel3.Size = new System.Drawing.Size(467, 17);
this.flowLayoutPanel3.TabIndex = 9;
//
// lblEffectiveClockRatePal
//
this.lblEffectiveClockRatePal.AutoSize = true;
this.lblEffectiveClockRatePal.Location = new System.Drawing.Point(3, 0);
this.lblEffectiveClockRatePal.Name = "lblEffectiveClockRatePal";
this.lblEffectiveClockRatePal.Size = new System.Drawing.Size(137, 13);
this.lblEffectiveClockRatePal.TabIndex = 0;
this.lblEffectiveClockRatePal.Text = "Effective Clock Rate (PAL):";
//
// lblEffectiveClockRateValuePal
//
this.lblEffectiveClockRateValuePal.AutoSize = true;
this.lblEffectiveClockRateValuePal.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEffectiveClockRateValuePal.Location = new System.Drawing.Point(146, 0);
this.lblEffectiveClockRateValuePal.Name = "lblEffectiveClockRateValuePal";
this.lblEffectiveClockRateValuePal.Size = new System.Drawing.Size(37, 13);
this.lblEffectiveClockRateValuePal.TabIndex = 1;
this.lblEffectiveClockRateValuePal.Text = "100%";
//
// grpOverclocking
//
this.grpOverclocking.Controls.Add(this.tableLayoutPanel2);
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.TabIndex = 6;
this.grpOverclocking.TabStop = false;
this.grpOverclocking.Text = "Overclocking";
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel5, 0, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 2;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
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.TabIndex = 0;
//
// flowLayoutPanel5
//
this.flowLayoutPanel5.Controls.Add(this.lblClockRate);
this.flowLayoutPanel5.Controls.Add(this.nudOverclockRate);
this.flowLayoutPanel5.Controls.Add(this.lblClockRatePercent);
this.flowLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
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.TabIndex = 1;
//
// lblClockRate
//
this.lblClockRate.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblClockRate.AutoSize = true;
this.lblClockRate.Location = new System.Drawing.Point(3, 6);
this.lblClockRate.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.lblClockRate.Name = "lblClockRate";
this.lblClockRate.Size = new System.Drawing.Size(107, 13);
this.lblClockRate.TabIndex = 1;
this.lblClockRate.Text = "Clock Rate Multiplier:";
//
// nudOverclockRate
//
this.nudOverclockRate.Location = new System.Drawing.Point(110, 3);
this.nudOverclockRate.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.nudOverclockRate.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.nudOverclockRate.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nudOverclockRate.Name = "nudOverclockRate";
this.nudOverclockRate.Size = new System.Drawing.Size(46, 20);
this.nudOverclockRate.TabIndex = 1;
this.nudOverclockRate.Value = new decimal(new int[] {
100,
0,
0,
0});
this.nudOverclockRate.Validated += new System.EventHandler(this.OverclockConfig_Validated);
//
// lblClockRatePercent
//
this.lblClockRatePercent.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblClockRatePercent.AutoSize = true;
this.lblClockRatePercent.Location = new System.Drawing.Point(156, 6);
this.lblClockRatePercent.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
this.lblClockRatePercent.Name = "lblClockRatePercent";
this.lblClockRatePercent.Size = new System.Drawing.Size(90, 13);
this.lblClockRatePercent.TabIndex = 1;
this.lblClockRatePercent.Text = "% (Default: 100%)";
//
// grpPpuTiming
//
this.grpPpuTiming.Controls.Add(this.tableLayoutPanel5);
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.TabIndex = 7;
this.grpPpuTiming.TabStop = false;
this.grpPpuTiming.Text = "PPU Vertical Blank Configuration";
//
// tableLayoutPanel5
//
this.tableLayoutPanel5.ColumnCount = 2;
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel5.Controls.Add(this.nudExtraScanlinesAfterNmi, 1, 1);
this.tableLayoutPanel5.Controls.Add(this.nudExtraScanlinesBeforeNmi, 1, 0);
this.tableLayoutPanel5.Controls.Add(this.lblExtraScanlinesBeforeNmi, 0, 0);
this.tableLayoutPanel5.Controls.Add(this.lblExtraScanlinesAfterNmi, 0, 1);
this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 16);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
this.tableLayoutPanel5.RowCount = 3;
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.TabIndex = 0;
//
// nudExtraScanlinesAfterNmi
//
this.nudExtraScanlinesAfterNmi.Location = new System.Drawing.Point(171, 29);
this.nudExtraScanlinesAfterNmi.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.nudExtraScanlinesAfterNmi.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.nudExtraScanlinesAfterNmi.Name = "nudExtraScanlinesAfterNmi";
this.nudExtraScanlinesAfterNmi.Size = new System.Drawing.Size(46, 20);
this.nudExtraScanlinesAfterNmi.TabIndex = 3;
this.nudExtraScanlinesAfterNmi.Value = new decimal(new int[] {
100,
0,
0,
0});
this.nudExtraScanlinesAfterNmi.Validated += new System.EventHandler(this.OverclockConfig_Validated);
//
// nudExtraScanlinesBeforeNmi
//
this.nudExtraScanlinesBeforeNmi.Location = new System.Drawing.Point(171, 3);
this.nudExtraScanlinesBeforeNmi.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.nudExtraScanlinesBeforeNmi.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.nudExtraScanlinesBeforeNmi.Name = "nudExtraScanlinesBeforeNmi";
this.nudExtraScanlinesBeforeNmi.Size = new System.Drawing.Size(46, 20);
this.nudExtraScanlinesBeforeNmi.TabIndex = 2;
this.nudExtraScanlinesBeforeNmi.Value = new decimal(new int[] {
100,
0,
0,
0});
this.nudExtraScanlinesBeforeNmi.Validated += new System.EventHandler(this.OverclockConfig_Validated);
//
// lblExtraScanlinesBeforeNmi
//
this.lblExtraScanlinesBeforeNmi.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblExtraScanlinesBeforeNmi.AutoSize = true;
this.lblExtraScanlinesBeforeNmi.Location = new System.Drawing.Point(3, 6);
this.lblExtraScanlinesBeforeNmi.Name = "lblExtraScanlinesBeforeNmi";
this.lblExtraScanlinesBeforeNmi.Size = new System.Drawing.Size(165, 13);
this.lblExtraScanlinesBeforeNmi.TabIndex = 0;
this.lblExtraScanlinesBeforeNmi.Text = "Additionnal scanlines before NMI:";
//
// lblExtraScanlinesAfterNmi
//
this.lblExtraScanlinesAfterNmi.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblExtraScanlinesAfterNmi.AutoSize = true;
this.lblExtraScanlinesAfterNmi.Location = new System.Drawing.Point(3, 32);
this.lblExtraScanlinesAfterNmi.Name = "lblExtraScanlinesAfterNmi";
this.lblExtraScanlinesAfterNmi.Size = new System.Drawing.Size(156, 13);
this.lblExtraScanlinesAfterNmi.TabIndex = 1;
this.lblExtraScanlinesAfterNmi.Text = "Additionnal scanlines after NMI:";
//
// flowLayoutPanel2
//
this.flowLayoutPanel2.Controls.Add(this.lblEffectiveClockRate);
this.flowLayoutPanel2.Controls.Add(this.lblEffectiveClockRateValue);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel2.Location = new System.Drawing.Point(3, 158);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Size = new System.Drawing.Size(467, 17);
this.flowLayoutPanel2.TabIndex = 8;
//
// lblEffectiveClockRate
//
this.lblEffectiveClockRate.AutoSize = true;
this.lblEffectiveClockRate.Location = new System.Drawing.Point(3, 0);
this.lblEffectiveClockRate.Name = "lblEffectiveClockRate";
this.lblEffectiveClockRate.Size = new System.Drawing.Size(146, 13);
this.lblEffectiveClockRate.TabIndex = 0;
this.lblEffectiveClockRate.Text = "Effective Clock Rate (NTSC):";
//
// lblEffectiveClockRateValue
//
this.lblEffectiveClockRateValue.AutoSize = true;
this.lblEffectiveClockRateValue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblEffectiveClockRateValue.Location = new System.Drawing.Point(155, 0);
this.lblEffectiveClockRateValue.Name = "lblEffectiveClockRateValue";
this.lblEffectiveClockRateValue.Size = new System.Drawing.Size(37, 13);
this.lblEffectiveClockRateValue.TabIndex = 1;
this.lblEffectiveClockRateValue.Text = "100%";
//
// tmrUpdateClockRate
//
this.tmrUpdateClockRate.Enabled = true;
this.tmrUpdateClockRate.Tick += new System.EventHandler(this.tmrUpdateClockRate_Tick);
//
// frmEmulationConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(487, 293);
this.Controls.Add(this.tabMain);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(503, 322);
this.Name = "frmEmulationConfig";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Emulation Settings";
this.Controls.SetChildIndex(this.baseConfigPanel, 0);
this.Controls.SetChildIndex(this.tabMain, 0);
this.tabMain.ResumeLayout(false);
this.tpgGeneral.ResumeLayout(false);
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
this.flowLayoutPanel6.ResumeLayout(false);
this.flowLayoutPanel6.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudEmulationSpeed)).EndInit();
this.tpgAdvanced.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.tpgOverclocking.ResumeLayout(false);
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.flowLayoutPanel3.ResumeLayout(false);
this.flowLayoutPanel3.PerformLayout();
this.grpOverclocking.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel5.ResumeLayout(false);
this.flowLayoutPanel5.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudOverclockRate)).EndInit();
this.grpPpuTiming.ResumeLayout(false);
this.tableLayoutPanel5.ResumeLayout(false);
this.tableLayoutPanel5.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudExtraScanlinesAfterNmi)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nudExtraScanlinesBeforeNmi)).EndInit();
this.flowLayoutPanel2.ResumeLayout(false);
this.flowLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TabControl tabMain;
private System.Windows.Forms.TabPage tpgGeneral;
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 System.Windows.Forms.CheckBox chkRemoveSpriteLimit;
private System.Windows.Forms.TabPage tpgOverclocking;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.GroupBox grpOverclocking;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label lblOverclockWarning;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;
private System.Windows.Forms.Label lblClockRate;
private System.Windows.Forms.NumericUpDown nudOverclockRate;
private System.Windows.Forms.Label lblClockRatePercent;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel6;
private System.Windows.Forms.NumericUpDown nudEmulationSpeed;
private System.Windows.Forms.Label lblEmuSpeedHint;
private System.Windows.Forms.Label lblEmulationSpeed;
private System.Windows.Forms.GroupBox grpPpuTiming;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
private System.Windows.Forms.NumericUpDown nudExtraScanlinesAfterNmi;
private System.Windows.Forms.NumericUpDown nudExtraScanlinesBeforeNmi;
private System.Windows.Forms.Label lblExtraScanlinesBeforeNmi;
private System.Windows.Forms.Label lblExtraScanlinesAfterNmi;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
private System.Windows.Forms.Label lblEffectiveClockRate;
private System.Windows.Forms.Label lblEffectiveClockRateValue;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3;
private System.Windows.Forms.Label lblEffectiveClockRatePal;
private System.Windows.Forms.Label lblEffectiveClockRateValuePal;
private System.Windows.Forms.Timer tmrUpdateClockRate;
private System.Windows.Forms.CheckBox chkOverclockAdjustApu;
}
}

View file

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Mesen.GUI.Config;
using Mesen.GUI.GoogleDriveIntegration;
namespace Mesen.GUI.Forms.Config
{
public partial class frmEmulationConfig : BaseConfigForm
{
public frmEmulationConfig()
{
InitializeComponent();
Entity = ConfigManager.Config.EmulationInfo;
AddBinding("EmulationSpeed", nudEmulationSpeed);
AddBinding("UseAlternativeMmc3Irq", chkUseAlternativeMmc3Irq);
AddBinding("AllowInvalidInput", chkAllowInvalidInput);
AddBinding("RemoveSpriteLimit", chkRemoveSpriteLimit);
AddBinding("OverclockRate", nudOverclockRate);
AddBinding("OverclockAdjustApu", chkOverclockAdjustApu);
AddBinding("PpuExtraScanlinesBeforeNmi", nudExtraScanlinesBeforeNmi);
AddBinding("PpuExtraScanlinesAfterNmi", nudExtraScanlinesAfterNmi);
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
EmulationInfo.ApplyConfig();
}
private void tmrUpdateClockRate_Tick(object sender, EventArgs e)
{
decimal clockRateMultiplierNtsc = (nudOverclockRate.Value * (1 + (nudExtraScanlinesAfterNmi.Value + nudExtraScanlinesBeforeNmi.Value) / 262));
decimal clockRateMultiplierPal = (nudOverclockRate.Value * (1 + (nudExtraScanlinesAfterNmi.Value + nudExtraScanlinesBeforeNmi.Value) / 312));
lblEffectiveClockRateValue.Text = (1789773 * clockRateMultiplierNtsc / 100000000).ToString("#.####") + " mhz (" + ((int)clockRateMultiplierNtsc).ToString() + "%)";
lblEffectiveClockRateValuePal.Text = (1662607 * clockRateMultiplierPal / 100000000).ToString("#.####") + " mhz (" + ((int)clockRateMultiplierPal).ToString() + "%)";
}
private void OverclockConfig_Validated(object sender, EventArgs e)
{
if(string.IsNullOrWhiteSpace(nudExtraScanlinesAfterNmi.Text)) {
nudExtraScanlinesAfterNmi.Value = 0;
}
if(string.IsNullOrWhiteSpace(nudExtraScanlinesBeforeNmi.Text)) {
nudExtraScanlinesBeforeNmi.Value = 0;
}
if(string.IsNullOrWhiteSpace(nudOverclockRate.Text)) {
nudOverclockRate.Value = 0;
}
}
}
}

View file

@ -0,0 +1,126 @@
<?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>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="tmrUpdateClockRate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
</metadata>
</root>

View file

@ -67,21 +67,10 @@
this.chkMstFormat = new System.Windows.Forms.CheckBox();
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.chkRemoveSpriteLimit = new System.Windows.Forms.CheckBox();
this.chkDisableGameDatabase = new System.Windows.Forms.CheckBox();
this.chkFdsAutoLoadDisk = new System.Windows.Forms.CheckBox();
this.chkFdsFastForwardOnLoad = new System.Windows.Forms.CheckBox();
this.grpOverclocking = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.lblOverclockWarning = new System.Windows.Forms.Label();
this.chkOverclockAdjustApu = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel();
this.lblClockRate = new System.Windows.Forms.Label();
this.nudOverclockRate = new System.Windows.Forms.NumericUpDown();
this.lblClockRatePercent = new System.Windows.Forms.Label();
this.tmrSyncDateTime = new System.Windows.Forms.Timer(this.components);
this.chkDisableGameDatabase = new System.Windows.Forms.CheckBox();
this.tlpMain.SuspendLayout();
this.flowLayoutPanel2.SuspendLayout();
this.tabMain.SuspendLayout();
@ -98,10 +87,6 @@
this.tlpFileFormat.SuspendLayout();
this.tpgAdvanced.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.grpOverclocking.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.flowLayoutPanel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudOverclockRate)).BeginInit();
this.SuspendLayout();
//
// baseConfigPanel
@ -293,7 +278,7 @@
this.tpgCloudSave.Location = new System.Drawing.Point(4, 22);
this.tpgCloudSave.Name = "tpgCloudSave";
this.tpgCloudSave.Padding = new System.Windows.Forms.Padding(3);
this.tpgCloudSave.Size = new System.Drawing.Size(479, 229);
this.tpgCloudSave.Size = new System.Drawing.Size(479, 256);
this.tpgCloudSave.TabIndex = 3;
this.tpgCloudSave.Text = "Cloud Saves";
this.tpgCloudSave.UseVisualStyleBackColor = true;
@ -310,7 +295,7 @@
this.tlpCloudSaves.RowCount = 2;
this.tlpCloudSaves.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpCloudSaves.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpCloudSaves.Size = new System.Drawing.Size(473, 223);
this.tlpCloudSaves.Size = new System.Drawing.Size(473, 250);
this.tlpCloudSaves.TabIndex = 0;
//
// tlpCloudSaveDesc
@ -365,7 +350,7 @@
this.tlpCloudSaveEnabled.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpCloudSaveEnabled.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpCloudSaveEnabled.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tlpCloudSaveEnabled.Size = new System.Drawing.Size(473, 123);
this.tlpCloudSaveEnabled.Size = new System.Drawing.Size(473, 150);
this.tlpCloudSaveEnabled.TabIndex = 1;
//
// btnDisableIntegration
@ -461,7 +446,7 @@
this.tpgFileAssociations.Location = new System.Drawing.Point(4, 22);
this.tpgFileAssociations.Name = "tpgFileAssociations";
this.tpgFileAssociations.Padding = new System.Windows.Forms.Padding(3);
this.tpgFileAssociations.Size = new System.Drawing.Size(479, 229);
this.tpgFileAssociations.Size = new System.Drawing.Size(479, 256);
this.tpgFileAssociations.TabIndex = 2;
this.tpgFileAssociations.Text = "File Associations";
this.tpgFileAssociations.UseVisualStyleBackColor = true;
@ -472,7 +457,7 @@
this.grpFileAssociations.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpFileAssociations.Location = new System.Drawing.Point(3, 3);
this.grpFileAssociations.Name = "grpFileAssociations";
this.grpFileAssociations.Size = new System.Drawing.Size(473, 223);
this.grpFileAssociations.Size = new System.Drawing.Size(473, 250);
this.grpFileAssociations.TabIndex = 12;
this.grpFileAssociations.TabStop = false;
this.grpFileAssociations.Text = "File Associations";
@ -494,7 +479,7 @@
this.tlpFileFormat.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpFileFormat.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tlpFileFormat.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tlpFileFormat.Size = new System.Drawing.Size(467, 204);
this.tlpFileFormat.Size = new System.Drawing.Size(467, 231);
this.tlpFileFormat.TabIndex = 0;
//
// chkNesFormat
@ -554,190 +539,22 @@
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.chkDisableGameDatabase, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.chkUseAlternativeMmc3Irq, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.chkAllowInvalidInput, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.chkRemoveSpriteLimit, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.chkFdsAutoLoadDisk, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.chkFdsFastForwardOnLoad, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.grpOverclocking, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.chkFdsAutoLoadDisk, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.chkFdsFastForwardOnLoad, 0, 2);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 7;
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.RowCount = 4;
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.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(473, 250);
this.tableLayoutPanel1.TabIndex = 0;
//
// chkUseAlternativeMmc3Irq
//
this.chkUseAlternativeMmc3Irq.AutoSize = true;
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;
this.chkUseAlternativeMmc3Irq.Text = "Use alternative MMC3 IRQ behavior";
this.chkUseAlternativeMmc3Irq.UseVisualStyleBackColor = true;
//
// chkAllowInvalidInput
//
this.chkAllowInvalidInput.AutoSize = true;
this.chkAllowInvalidInput.Location = new System.Drawing.Point(3, 49);
this.chkAllowInvalidInput.Name = "chkAllowInvalidInput";
this.chkAllowInvalidInput.Size = new System.Drawing.Size(341, 17);
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
//
this.chkRemoveSpriteLimit.AutoSize = true;
this.chkRemoveSpriteLimit.Location = new System.Drawing.Point(3, 72);
this.chkRemoveSpriteLimit.Name = "chkRemoveSpriteLimit";
this.chkRemoveSpriteLimit.Size = new System.Drawing.Size(205, 17);
this.chkRemoveSpriteLimit.TabIndex = 2;
this.chkRemoveSpriteLimit.Text = "Remove sprite limit (Reduces flashing)";
this.chkRemoveSpriteLimit.UseVisualStyleBackColor = true;
//
// chkFdsAutoLoadDisk
//
this.chkFdsAutoLoadDisk.AutoSize = true;
this.chkFdsAutoLoadDisk.Location = new System.Drawing.Point(3, 95);
this.chkFdsAutoLoadDisk.Name = "chkFdsAutoLoadDisk";
this.chkFdsAutoLoadDisk.Size = new System.Drawing.Size(303, 17);
this.chkFdsAutoLoadDisk.TabIndex = 3;
this.chkFdsAutoLoadDisk.Text = "Automatically insert disk 1 side A when starting FDS games";
this.chkFdsAutoLoadDisk.UseVisualStyleBackColor = true;
//
// chkFdsFastForwardOnLoad
//
this.chkFdsFastForwardOnLoad.AutoSize = true;
this.chkFdsFastForwardOnLoad.Location = new System.Drawing.Point(3, 118);
this.chkFdsFastForwardOnLoad.Name = "chkFdsFastForwardOnLoad";
this.chkFdsFastForwardOnLoad.Size = new System.Drawing.Size(342, 17);
this.chkFdsFastForwardOnLoad.TabIndex = 4;
this.chkFdsFastForwardOnLoad.Text = "Automatically fast forward FDS games when disk or BIOS is loading";
this.chkFdsFastForwardOnLoad.UseVisualStyleBackColor = true;
//
// grpOverclocking
//
this.grpOverclocking.Controls.Add(this.tableLayoutPanel2);
this.grpOverclocking.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpOverclocking.Location = new System.Drawing.Point(3, 141);
this.grpOverclocking.Name = "grpOverclocking";
this.grpOverclocking.Size = new System.Drawing.Size(467, 106);
this.grpOverclocking.TabIndex = 5;
this.grpOverclocking.TabStop = false;
this.grpOverclocking.Text = "Overclocking";
//
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 1;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Controls.Add(this.lblOverclockWarning, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.chkOverclockAdjustApu, 0, 2);
this.tableLayoutPanel2.Controls.Add(this.flowLayoutPanel5, 0, 1);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 4;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(461, 87);
this.tableLayoutPanel2.TabIndex = 0;
//
// lblOverclockWarning
//
this.lblOverclockWarning.AutoSize = true;
this.lblOverclockWarning.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblOverclockWarning.ForeColor = System.Drawing.Color.Red;
this.lblOverclockWarning.Location = new System.Drawing.Point(3, 5);
this.lblOverclockWarning.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
this.lblOverclockWarning.Name = "lblOverclockWarning";
this.lblOverclockWarning.Size = new System.Drawing.Size(455, 13);
this.lblOverclockWarning.TabIndex = 2;
this.lblOverclockWarning.Text = "WARNING: Overclocking will cause stability issues and may crash some games!";
//
// chkOverclockAdjustApu
//
this.chkOverclockAdjustApu.AutoSize = true;
this.chkOverclockAdjustApu.Location = new System.Drawing.Point(3, 51);
this.chkOverclockAdjustApu.Name = "chkOverclockAdjustApu";
this.chkOverclockAdjustApu.Size = new System.Drawing.Size(401, 17);
this.chkOverclockAdjustApu.TabIndex = 1;
this.chkOverclockAdjustApu.Text = "Do not overclock APU (prevents sound pitch changes caused by overclocking)";
this.chkOverclockAdjustApu.UseVisualStyleBackColor = true;
//
// flowLayoutPanel5
//
this.flowLayoutPanel5.Controls.Add(this.lblClockRate);
this.flowLayoutPanel5.Controls.Add(this.nudOverclockRate);
this.flowLayoutPanel5.Controls.Add(this.lblClockRatePercent);
this.flowLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel5.Location = new System.Drawing.Point(0, 23);
this.flowLayoutPanel5.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel5.Name = "flowLayoutPanel5";
this.flowLayoutPanel5.Size = new System.Drawing.Size(461, 25);
this.flowLayoutPanel5.TabIndex = 1;
//
// lblClockRate
//
this.lblClockRate.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblClockRate.AutoSize = true;
this.lblClockRate.Location = new System.Drawing.Point(3, 6);
this.lblClockRate.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.lblClockRate.Name = "lblClockRate";
this.lblClockRate.Size = new System.Drawing.Size(63, 13);
this.lblClockRate.TabIndex = 1;
this.lblClockRate.Text = "Clock Rate:";
//
// nudOverclockRate
//
this.nudOverclockRate.Location = new System.Drawing.Point(66, 3);
this.nudOverclockRate.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.nudOverclockRate.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.nudOverclockRate.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nudOverclockRate.Name = "nudOverclockRate";
this.nudOverclockRate.Size = new System.Drawing.Size(46, 20);
this.nudOverclockRate.TabIndex = 1;
this.nudOverclockRate.Value = new decimal(new int[] {
100,
0,
0,
0});
//
// lblClockRatePercent
//
this.lblClockRatePercent.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblClockRatePercent.AutoSize = true;
this.lblClockRatePercent.Location = new System.Drawing.Point(112, 6);
this.lblClockRatePercent.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
this.lblClockRatePercent.Name = "lblClockRatePercent";
this.lblClockRatePercent.Size = new System.Drawing.Size(15, 13);
this.lblClockRatePercent.TabIndex = 1;
this.lblClockRatePercent.Text = "%";
//
// tmrSyncDateTime
//
this.tmrSyncDateTime.Enabled = true;
this.tmrSyncDateTime.Tick += new System.EventHandler(this.tmrSyncDateTime_Tick);
//
// chkDisableGameDatabase
//
this.chkDisableGameDatabase.AutoSize = true;
@ -748,6 +565,31 @@
this.chkDisableGameDatabase.Text = "Disable built-in game database";
this.chkDisableGameDatabase.UseVisualStyleBackColor = true;
//
// chkFdsAutoLoadDisk
//
this.chkFdsAutoLoadDisk.AutoSize = true;
this.chkFdsAutoLoadDisk.Location = new System.Drawing.Point(3, 26);
this.chkFdsAutoLoadDisk.Name = "chkFdsAutoLoadDisk";
this.chkFdsAutoLoadDisk.Size = new System.Drawing.Size(303, 17);
this.chkFdsAutoLoadDisk.TabIndex = 3;
this.chkFdsAutoLoadDisk.Text = "Automatically insert disk 1 side A when starting FDS games";
this.chkFdsAutoLoadDisk.UseVisualStyleBackColor = true;
//
// chkFdsFastForwardOnLoad
//
this.chkFdsFastForwardOnLoad.AutoSize = true;
this.chkFdsFastForwardOnLoad.Location = new System.Drawing.Point(3, 49);
this.chkFdsFastForwardOnLoad.Name = "chkFdsFastForwardOnLoad";
this.chkFdsFastForwardOnLoad.Size = new System.Drawing.Size(342, 17);
this.chkFdsFastForwardOnLoad.TabIndex = 4;
this.chkFdsFastForwardOnLoad.Text = "Automatically fast forward FDS games when disk or BIOS is loading";
this.chkFdsFastForwardOnLoad.UseVisualStyleBackColor = true;
//
// tmrSyncDateTime
//
this.tmrSyncDateTime.Enabled = true;
this.tmrSyncDateTime.Tick += new System.EventHandler(this.tmrSyncDateTime_Tick);
//
// frmPreferences
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -786,12 +628,6 @@
this.tpgAdvanced.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.grpOverclocking.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.flowLayoutPanel5.ResumeLayout(false);
this.flowLayoutPanel5.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudOverclockRate)).EndInit();
this.ResumeLayout(false);
}
@ -815,9 +651,6 @@
private System.Windows.Forms.CheckBox chkMstFormat;
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 System.Windows.Forms.CheckBox chkRemoveSpriteLimit;
private System.Windows.Forms.CheckBox chkFdsAutoLoadDisk;
private System.Windows.Forms.CheckBox chkFdsFastForwardOnLoad;
private System.Windows.Forms.CheckBox chkAllowBackgroundInput;
@ -842,14 +675,6 @@
private System.Windows.Forms.Label lblLastSyncDateTime;
private System.Windows.Forms.Timer tmrSyncDateTime;
private System.Windows.Forms.Button btnResync;
private System.Windows.Forms.GroupBox grpOverclocking;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Label lblOverclockWarning;
private System.Windows.Forms.CheckBox chkOverclockAdjustApu;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5;
private System.Windows.Forms.Label lblClockRate;
private System.Windows.Forms.NumericUpDown nudOverclockRate;
private System.Windows.Forms.Label lblClockRatePercent;
private System.Windows.Forms.CheckBox chkDisableGameDatabase;
}
}

View file

@ -30,10 +30,6 @@ namespace Mesen.GUI.Forms.Config
AddBinding("AssociateMmoFiles", chkMmoFormat);
AddBinding("AssociateMstFiles", chkMstFormat);
AddBinding("UseAlternativeMmc3Irq", chkUseAlternativeMmc3Irq);
AddBinding("AllowInvalidInput", chkAllowInvalidInput);
AddBinding("RemoveSpriteLimit", chkRemoveSpriteLimit);
AddBinding("FdsAutoLoadDisk", chkFdsAutoLoadDisk);
AddBinding("FdsFastForwardOnLoad", chkFdsFastForwardOnLoad);
@ -42,9 +38,6 @@ namespace Mesen.GUI.Forms.Config
AddBinding("PauseOnMovieEnd", chkPauseOnMovieEnd);
AddBinding("OverclockRate", nudOverclockRate);
AddBinding("OverclockAdjustApu", chkOverclockAdjustApu);
AddBinding("DisableGameDatabase", chkDisableGameDatabase);
UpdateCloudDisplay();

View file

@ -34,10 +34,6 @@
this.chkVerticalSync = new System.Windows.Forms.CheckBox();
this.cboAspectRatio = new System.Windows.Forms.ComboBox();
this.lblDisplayRatio = new System.Windows.Forms.Label();
this.flowLayoutPanel6 = new System.Windows.Forms.FlowLayoutPanel();
this.nudEmulationSpeed = new System.Windows.Forms.NumericUpDown();
this.lblEmuSpeedHint = new System.Windows.Forms.Label();
this.lblEmulationSpeed = new System.Windows.Forms.Label();
this.chkShowFps = new System.Windows.Forms.CheckBox();
this.flowLayoutPanel7 = new System.Windows.Forms.FlowLayoutPanel();
this.chkUseHdPacks = new System.Windows.Forms.CheckBox();
@ -107,8 +103,6 @@
this.mnuPaletteYuv = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPaletteNestopiaRgb = new System.Windows.Forms.ToolStripMenuItem();
this.tlpMain.SuspendLayout();
this.flowLayoutPanel6.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudEmulationSpeed)).BeginInit();
this.flowLayoutPanel7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picHdNesTooltip)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudScale)).BeginInit();
@ -157,8 +151,6 @@
this.tlpMain.Controls.Add(this.chkVerticalSync, 0, 3);
this.tlpMain.Controls.Add(this.cboAspectRatio, 1, 1);
this.tlpMain.Controls.Add(this.lblDisplayRatio, 0, 1);
this.tlpMain.Controls.Add(this.flowLayoutPanel6, 1, 5);
this.tlpMain.Controls.Add(this.lblEmulationSpeed, 0, 5);
this.tlpMain.Controls.Add(this.chkShowFps, 0, 4);
this.tlpMain.Controls.Add(this.flowLayoutPanel7, 0, 2);
this.tlpMain.Controls.Add(this.nudScale, 1, 0);
@ -166,8 +158,7 @@
this.tlpMain.Location = new System.Drawing.Point(3, 3);
this.tlpMain.Margin = new System.Windows.Forms.Padding(0);
this.tlpMain.Name = "tlpMain";
this.tlpMain.RowCount = 7;
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpMain.RowCount = 6;
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
@ -210,7 +201,7 @@
"PAL (18:13)",
"Standard (4:3)",
"Widescreen (16:9)"});
this.cboAspectRatio.Location = new System.Drawing.Point(99, 29);
this.cboAspectRatio.Location = new System.Drawing.Point(80, 29);
this.cboAspectRatio.Name = "cboAspectRatio";
this.cboAspectRatio.Size = new System.Drawing.Size(121, 21);
this.cboAspectRatio.TabIndex = 16;
@ -225,50 +216,6 @@
this.lblDisplayRatio.TabIndex = 17;
this.lblDisplayRatio.Text = "Aspect Ratio:";
//
// flowLayoutPanel6
//
this.flowLayoutPanel6.AutoSize = true;
this.flowLayoutPanel6.Controls.Add(this.nudEmulationSpeed);
this.flowLayoutPanel6.Controls.Add(this.lblEmuSpeedHint);
this.flowLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel6.Location = new System.Drawing.Point(96, 122);
this.flowLayoutPanel6.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel6.Name = "flowLayoutPanel6";
this.flowLayoutPanel6.Size = new System.Drawing.Size(425, 26);
this.flowLayoutPanel6.TabIndex = 10;
//
// nudEmulationSpeed
//
this.nudEmulationSpeed.Location = new System.Drawing.Point(3, 3);
this.nudEmulationSpeed.Maximum = new decimal(new int[] {
500,
0,
0,
0});
this.nudEmulationSpeed.Name = "nudEmulationSpeed";
this.nudEmulationSpeed.Size = new System.Drawing.Size(48, 20);
this.nudEmulationSpeed.TabIndex = 1;
//
// lblEmuSpeedHint
//
this.lblEmuSpeedHint.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblEmuSpeedHint.AutoSize = true;
this.lblEmuSpeedHint.Location = new System.Drawing.Point(57, 6);
this.lblEmuSpeedHint.Name = "lblEmuSpeedHint";
this.lblEmuSpeedHint.Size = new System.Drawing.Size(107, 13);
this.lblEmuSpeedHint.TabIndex = 2;
this.lblEmuSpeedHint.Text = "(0 = Maximum speed)";
//
// lblEmulationSpeed
//
this.lblEmulationSpeed.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblEmulationSpeed.AutoSize = true;
this.lblEmulationSpeed.Location = new System.Drawing.Point(3, 128);
this.lblEmulationSpeed.Name = "lblEmulationSpeed";
this.lblEmulationSpeed.Size = new System.Drawing.Size(90, 13);
this.lblEmulationSpeed.TabIndex = 0;
this.lblEmulationSpeed.Text = "Emulation Speed:";
//
// chkShowFps
//
this.chkShowFps.Anchor = System.Windows.Forms.AnchorStyles.Left;
@ -316,7 +263,7 @@
// nudScale
//
this.nudScale.DecimalPlaces = 2;
this.nudScale.Location = new System.Drawing.Point(99, 3);
this.nudScale.Location = new System.Drawing.Point(80, 3);
this.nudScale.Maximum = new decimal(new int[] {
10,
0,
@ -1023,14 +970,14 @@
// mnuPresetComposite
//
this.mnuPresetComposite.Name = "mnuPresetComposite";
this.mnuPresetComposite.Size = new System.Drawing.Size(152, 22);
this.mnuPresetComposite.Size = new System.Drawing.Size(147, 22);
this.mnuPresetComposite.Text = "Composite";
this.mnuPresetComposite.Click += new System.EventHandler(this.mnuPresetComposite_Click);
//
// mnuPresetSVideo
//
this.mnuPresetSVideo.Name = "mnuPresetSVideo";
this.mnuPresetSVideo.Size = new System.Drawing.Size(152, 22);
this.mnuPresetSVideo.Size = new System.Drawing.Size(147, 22);
this.mnuPresetSVideo.Text = "S-Video";
this.mnuPresetSVideo.Click += new System.EventHandler(this.mnuPresetSVideo_Click);
//
@ -1044,7 +991,7 @@
// mnuPresetMonochrome
//
this.mnuPresetMonochrome.Name = "mnuPresetMonochrome";
this.mnuPresetMonochrome.Size = new System.Drawing.Size(152, 22);
this.mnuPresetMonochrome.Size = new System.Drawing.Size(147, 22);
this.mnuPresetMonochrome.Text = "Monochrome";
this.mnuPresetMonochrome.Click += new System.EventHandler(this.mnuPresetMonochrome_Click);
//
@ -1109,9 +1056,6 @@
this.Controls.SetChildIndex(this.tabMain, 0);
this.tlpMain.ResumeLayout(false);
this.tlpMain.PerformLayout();
this.flowLayoutPanel6.ResumeLayout(false);
this.flowLayoutPanel6.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudEmulationSpeed)).EndInit();
this.flowLayoutPanel7.ResumeLayout(false);
this.flowLayoutPanel7.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.picHdNesTooltip)).EndInit();
@ -1162,10 +1106,6 @@
private System.Windows.Forms.TableLayoutPanel tlpMain;
private System.Windows.Forms.CheckBox chkShowFps;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel6;
private System.Windows.Forms.Label lblEmulationSpeed;
private System.Windows.Forms.NumericUpDown nudEmulationSpeed;
private System.Windows.Forms.Label lblEmuSpeedHint;
private System.Windows.Forms.Label lblVideoScale;
private System.Windows.Forms.CheckBox chkVerticalSync;
private System.Windows.Forms.ComboBox cboAspectRatio;

View file

@ -23,7 +23,6 @@ namespace Mesen.GUI.Forms.Config
Entity = ConfigManager.Config.VideoInfo;
AddBinding("EmulationSpeed", nudEmulationSpeed);
AddBinding("ShowFPS", chkShowFps);
AddBinding("UseBilinearInterpolation", chkBilinearInterpolation);
AddBinding("VerticalSync", chkVerticalSync);

View file

@ -132,7 +132,7 @@
<data name="btnSelectPalette.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAcAAAAGCAYAAAAPDoR2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADr4AAA6+AepCscAAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUA
YQUAAAAJcEhZcwAADr0AAA69AUf7kK0AAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUA
AAArSURBVBhXY/j//z9OjFUQhkEARGLHUBUYEmBxJCNQJFAkwRwkif///zMAAD5AXaOzoq98AAAAAElF
TkSuQmCC
</value>

View file

@ -103,15 +103,16 @@ namespace Mesen.GUI.Forms
this.mnuSuperEagleFilter = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem19 = new System.Windows.Forms.ToolStripSeparator();
this.mnuBilinearInterpolation = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator();
this.mnuAudioConfig = new System.Windows.Forms.ToolStripMenuItem();
this.mnuInput = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRegion = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRegionAuto = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRegionNtsc = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRegionPal = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRegionDendy = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripSeparator();
this.mnuAudioConfig = new System.Windows.Forms.ToolStripMenuItem();
this.mnuInput = new System.Windows.Forms.ToolStripMenuItem();
this.mnuVideoConfig = new System.Windows.Forms.ToolStripMenuItem();
this.mnuEmulationConfig = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripSeparator();
this.mnuPreferences = new System.Windows.Forms.ToolStripMenuItem();
this.mnuTools = new System.Windows.Forms.ToolStripMenuItem();
@ -149,13 +150,13 @@ namespace Mesen.GUI.Forms
this.mnuTestStopRecording = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRunAllTests = new System.Windows.Forms.ToolStripMenuItem();
this.mnuDebugger = new System.Windows.Forms.ToolStripMenuItem();
this.mnuLogWindow = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.mnuTakeScreenshot = new System.Windows.Forms.ToolStripMenuItem();
this.mnuHelp = new System.Windows.Forms.ToolStripMenuItem();
this.mnuCheckForUpdates = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator();
this.mnuAbout = new System.Windows.Forms.ToolStripMenuItem();
this.mnuLogWindow = new System.Windows.Forms.ToolStripMenuItem();
this.panelRenderer.SuspendLayout();
this.menuStrip.SuspendLayout();
this.SuspendLayout();
@ -385,11 +386,12 @@ namespace Mesen.GUI.Forms
this.mnuEmulationSpeed,
this.mnuVideoScale,
this.mnuVideoFilter,
this.mnuRegion,
this.toolStripMenuItem10,
this.mnuAudioConfig,
this.mnuInput,
this.mnuRegion,
this.mnuVideoConfig,
this.mnuEmulationConfig,
this.toolStripMenuItem11,
this.mnuPreferences});
this.mnuOptions.Name = "mnuOptions";
@ -766,27 +768,6 @@ namespace Mesen.GUI.Forms
this.mnuBilinearInterpolation.Text = "Use Bilinear Interpolation";
this.mnuBilinearInterpolation.Click += new System.EventHandler(this.mnuBilinearInterpolation_Click);
//
// toolStripMenuItem10
//
this.toolStripMenuItem10.Name = "toolStripMenuItem10";
this.toolStripMenuItem10.Size = new System.Drawing.Size(149, 6);
//
// mnuAudioConfig
//
this.mnuAudioConfig.Image = global::Mesen.GUI.Properties.Resources.Audio;
this.mnuAudioConfig.Name = "mnuAudioConfig";
this.mnuAudioConfig.Size = new System.Drawing.Size(152, 22);
this.mnuAudioConfig.Text = "Audio";
this.mnuAudioConfig.Click += new System.EventHandler(this.mnuAudioConfig_Click);
//
// mnuInput
//
this.mnuInput.Image = global::Mesen.GUI.Properties.Resources.Controller;
this.mnuInput.Name = "mnuInput";
this.mnuInput.Size = new System.Drawing.Size(152, 22);
this.mnuInput.Text = "Input";
this.mnuInput.Click += new System.EventHandler(this.mnuInput_Click);
//
// mnuRegion
//
this.mnuRegion.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -827,6 +808,27 @@ namespace Mesen.GUI.Forms
this.mnuRegionDendy.Text = "Dendy";
this.mnuRegionDendy.Click += new System.EventHandler(this.mnuRegion_Click);
//
// toolStripMenuItem10
//
this.toolStripMenuItem10.Name = "toolStripMenuItem10";
this.toolStripMenuItem10.Size = new System.Drawing.Size(149, 6);
//
// mnuAudioConfig
//
this.mnuAudioConfig.Image = global::Mesen.GUI.Properties.Resources.Audio;
this.mnuAudioConfig.Name = "mnuAudioConfig";
this.mnuAudioConfig.Size = new System.Drawing.Size(152, 22);
this.mnuAudioConfig.Text = "Audio";
this.mnuAudioConfig.Click += new System.EventHandler(this.mnuAudioConfig_Click);
//
// mnuInput
//
this.mnuInput.Image = global::Mesen.GUI.Properties.Resources.Controller;
this.mnuInput.Name = "mnuInput";
this.mnuInput.Size = new System.Drawing.Size(152, 22);
this.mnuInput.Text = "Input";
this.mnuInput.Click += new System.EventHandler(this.mnuInput_Click);
//
// mnuVideoConfig
//
this.mnuVideoConfig.Image = global::Mesen.GUI.Properties.Resources.Video;
@ -835,6 +837,14 @@ namespace Mesen.GUI.Forms
this.mnuVideoConfig.Text = "Video";
this.mnuVideoConfig.Click += new System.EventHandler(this.mnuVideoConfig_Click);
//
// mnuEmulationConfig
//
this.mnuEmulationConfig.Image = global::Mesen.GUI.Properties.Resources.DipSwitches;
this.mnuEmulationConfig.Name = "mnuEmulationConfig";
this.mnuEmulationConfig.Size = new System.Drawing.Size(152, 22);
this.mnuEmulationConfig.Text = "Emulation";
this.mnuEmulationConfig.Click += new System.EventHandler(this.mnuEmulationConfig_Click);
//
// toolStripMenuItem11
//
this.toolStripMenuItem11.Name = "toolStripMenuItem11";
@ -1135,6 +1145,13 @@ namespace Mesen.GUI.Forms
this.mnuDebugger.Text = "Debugger";
this.mnuDebugger.Click += new System.EventHandler(this.mnuDebugger_Click);
//
// mnuLogWindow
//
this.mnuLogWindow.Name = "mnuLogWindow";
this.mnuLogWindow.Size = new System.Drawing.Size(185, 22);
this.mnuLogWindow.Text = "Log Window";
this.mnuLogWindow.Click += new System.EventHandler(this.mnuLogWindow_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
@ -1180,13 +1197,6 @@ namespace Mesen.GUI.Forms
this.mnuAbout.Text = "About";
this.mnuAbout.Click += new System.EventHandler(this.mnuAbout_Click);
//
// mnuLogWindow
//
this.mnuLogWindow.Name = "mnuLogWindow";
this.mnuLogWindow.Size = new System.Drawing.Size(185, 22);
this.mnuLogWindow.Text = "Log Window";
this.mnuLogWindow.Click += new System.EventHandler(this.mnuLogWindow_Click);
//
// frmMain
//
this.AllowDrop = true;
@ -1338,6 +1348,7 @@ namespace Mesen.GUI.Forms
private System.Windows.Forms.ToolStripMenuItem mnuScale5x;
private System.Windows.Forms.ToolStripMenuItem mnuScale6x;
private System.Windows.Forms.ToolStripMenuItem mnuLogWindow;
private System.Windows.Forms.ToolStripMenuItem mnuEmulationConfig;
}
}

View file

@ -164,7 +164,7 @@ namespace Mesen.GUI.Forms
private void UpdateEmulationSpeedMenu()
{
foreach(ToolStripMenuItem item in new ToolStripMenuItem[] { mnuEmuSpeedDouble, mnuEmuSpeedHalf, mnuEmuSpeedNormal, mnuEmuSpeedQuarter, mnuEmuSpeedTriple, mnuEmuSpeedMaximumSpeed }) {
item.Checked = ((int)item.Tag == ConfigManager.Config.VideoInfo.EmulationSpeed);
item.Checked = ((int)item.Tag == ConfigManager.Config.EmulationInfo.EmulationSpeed);
}
}
@ -175,19 +175,19 @@ namespace Mesen.GUI.Forms
} else {
InteropEmu.DisplayMessage("EmulationSpeed", "EmulationSpeedPercent", emulationSpeed.ToString());
}
ConfigManager.Config.VideoInfo.EmulationSpeed = emulationSpeed;
ConfigManager.Config.EmulationInfo.EmulationSpeed = emulationSpeed;
ConfigManager.ApplyChanges();
UpdateEmulationSpeedMenu();
VideoInfo.ApplyConfig();
EmulationInfo.ApplyConfig();
}
private void mnuIncreaseSpeed_Click(object sender, EventArgs e)
{
if(ConfigManager.Config.VideoInfo.EmulationSpeed > 0) {
if(ConfigManager.Config.VideoInfo.EmulationSpeed < 100) {
SetEmulationSpeed(ConfigManager.Config.VideoInfo.EmulationSpeed + 25);
} else if(ConfigManager.Config.VideoInfo.EmulationSpeed < 450) {
SetEmulationSpeed(ConfigManager.Config.VideoInfo.EmulationSpeed + 50);
if(ConfigManager.Config.EmulationInfo.EmulationSpeed > 0) {
if(ConfigManager.Config.EmulationInfo.EmulationSpeed < 100) {
SetEmulationSpeed(ConfigManager.Config.EmulationInfo.EmulationSpeed + 25);
} else if(ConfigManager.Config.EmulationInfo.EmulationSpeed < 450) {
SetEmulationSpeed(ConfigManager.Config.EmulationInfo.EmulationSpeed + 50);
} else {
SetEmulationSpeed(0);
}
@ -196,20 +196,20 @@ namespace Mesen.GUI.Forms
private void mnuDecreaseSpeed_Click(object sender, EventArgs e)
{
if(ConfigManager.Config.VideoInfo.EmulationSpeed == 0) {
if(ConfigManager.Config.EmulationInfo.EmulationSpeed == 0) {
SetEmulationSpeed(450);
} else if(ConfigManager.Config.VideoInfo.EmulationSpeed <= 100) {
if(ConfigManager.Config.VideoInfo.EmulationSpeed > 25) {
SetEmulationSpeed(ConfigManager.Config.VideoInfo.EmulationSpeed - 25);
} else if(ConfigManager.Config.EmulationInfo.EmulationSpeed <= 100) {
if(ConfigManager.Config.EmulationInfo.EmulationSpeed > 25) {
SetEmulationSpeed(ConfigManager.Config.EmulationInfo.EmulationSpeed - 25);
}
} else {
SetEmulationSpeed(ConfigManager.Config.VideoInfo.EmulationSpeed - 50);
SetEmulationSpeed(ConfigManager.Config.EmulationInfo.EmulationSpeed - 50);
}
}
private void mnuEmuSpeedMaximumSpeed_Click(object sender, EventArgs e)
{
if(ConfigManager.Config.VideoInfo.EmulationSpeed == 0) {
if(ConfigManager.Config.EmulationInfo.EmulationSpeed == 0) {
SetEmulationSpeed(100);
} else {
SetEmulationSpeed(0);
@ -243,7 +243,6 @@ namespace Mesen.GUI.Forms
mnuShowFPS.Checked = ConfigManager.Config.VideoInfo.ShowFPS;
mnuBilinearInterpolation.Checked = ConfigManager.Config.VideoInfo.UseBilinearInterpolation;
UpdateEmulationSpeedMenu();
UpdateScaleMenu(ConfigManager.Config.VideoInfo.VideoScale);
UpdateFilterMenu(ConfigManager.Config.VideoInfo.VideoFilter);
@ -1347,5 +1346,11 @@ namespace Mesen.GUI.Forms
_logWindow.Focus();
}
}
private void mnuEmulationConfig_Click(object sender, EventArgs e)
{
new frmEmulationConfig().ShowDialog(sender);
UpdateEmulationSpeedMenu();
}
}
}

View file

@ -208,6 +208,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Config\DebugInfo.cs" />
<Compile Include="Config\EmulationInfo.cs" />
<Compile Include="Config\PreferenceInfo.cs" />
<Compile Include="Config\VideoInfo.cs" />
<Compile Include="Config\CheatInfo.cs" />
@ -409,6 +410,12 @@
<Compile Include="Forms\Config\frmAudioConfig.Designer.cs">
<DependentUpon>frmAudioConfig.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Config\frmEmulationConfig.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\Config\frmEmulationConfig.Designer.cs">
<DependentUpon>frmEmulationConfig.cs</DependentUpon>
</Compile>
<Compile Include="Forms\Config\frmPreferences.cs">
<SubType>Form</SubType>
</Compile>
@ -579,6 +586,9 @@
<EmbeddedResource Include="Forms\Config\frmControllerConfig.resx">
<DependentUpon>frmControllerConfig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Config\frmEmulationConfig.resx">
<DependentUpon>frmEmulationConfig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Config\frmGetKey.resx">
<DependentUpon>frmGetKey.cs</DependentUpon>
</EmbeddedResource>

View file

@ -123,6 +123,7 @@ namespace Mesen.GUI
[DllImport(DLLPath)] public static extern void SetNesModel(NesModel model);
[DllImport(DLLPath)] public static extern void SetEmulationSpeed(UInt32 emulationSpeed);
[DllImport(DLLPath)] public static extern void SetOverclockRate(UInt32 overclockRate, [MarshalAs(UnmanagedType.I1)]bool adjustApu);
[DllImport(DLLPath)] public static extern void SetPpuNmiConfig(UInt32 extraScanlinesBeforeNmi, UInt32 extraScanlineAfterNmi);
[DllImport(DLLPath)] public static extern void SetOverscanDimensions(UInt32 left, UInt32 right, UInt32 top, UInt32 bottom);
[DllImport(DLLPath)] public static extern void SetVideoScale(double scale);
[DllImport(DLLPath)] public static extern void SetVideoAspectRatio(VideoAspectRatio aspectRatio);

View file

@ -305,6 +305,7 @@ namespace InteropEmu {
DllExport void __stdcall SetOverscanDimensions(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom) { EmulationSettings::SetOverscanDimensions(left, right, top, bottom); }
DllExport void __stdcall SetEmulationSpeed(uint32_t emulationSpeed) { EmulationSettings::SetEmulationSpeed(emulationSpeed); }
DllExport void __stdcall SetOverclockRate(uint32_t overclockRate, bool adjustApu) { EmulationSettings::SetOverclockRate(overclockRate, adjustApu); }
DllExport void __stdcall SetPpuNmiConfig(uint32_t extraScanlinesBeforeNmi, uint32_t extraScanlinesAfterNmi) { EmulationSettings::SetPpuNmiConfig(extraScanlinesBeforeNmi, extraScanlinesAfterNmi); }
DllExport void __stdcall SetVideoScale(double scale) { EmulationSettings::SetVideoScale(scale); }
DllExport void __stdcall SetVideoAspectRatio(VideoAspectRatio aspectRatio) { EmulationSettings::SetVideoAspectRatio(aspectRatio); }
DllExport void __stdcall SetVideoFilter(VideoFilterType filter) { EmulationSettings::SetVideoFilterType(filter); }