Video: Option to select screen resolution in exclusive fullscreen mode

This commit is contained in:
Sour 2019-12-26 23:31:08 -05:00
parent a4dd6b1c1a
commit 7834eb285b
15 changed files with 156 additions and 52 deletions

View file

@ -55,6 +55,7 @@ namespace Mesen.GUI.Config
public bool FullscreenForceIntegerScale = false;
public bool UseExclusiveFullscreen = false;
public string FullscreenResolution = "";
public VideoRefreshRates ExclusiveFullscreenRefreshRate = VideoRefreshRates._60;
public bool UseCustomVsPalette = false;

View file

@ -243,6 +243,7 @@
<Control ID="chkShowFps">Mostra els FPS</Control>
<Control ID="chkUseHdPacks">Fes servir els paquets d'alta resolució d'HDNes</Control>
<Control ID="chkUseExclusiveFullscreen">Fes servir el mode de pantalla completa exclusiva</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate:</Control>
<Control ID="tpgOverscan">Sobreescaneig</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -796,6 +797,7 @@
<Message ID="CheatsImported">S'han importat {0} trucs per al joc {1}.</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="DefaultResolution">Default</Message>
<Message ID="RomsFound">S'han trobat {0} roms</Message>

View file

@ -243,6 +243,7 @@
<Control ID="chkShowFps">Show FPS</Control>
<Control ID="chkUseHdPacks">Use HDNes HD packs</Control>
<Control ID="chkUseExclusiveFullscreen">Use exclusive fullscreen mode</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -824,6 +825,7 @@
<Message ID="ExpansionDevice">Expansion Device</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="DefaultResolution">Default</Message>
<Message ID="RomsFound">{0} roms found</Message>

View file

@ -242,6 +242,7 @@
<Control ID="chkShowFps">Mostrar FPS</Control>
<Control ID="chkUseHdPacks">Utilizar los paquetes de alta resolución de HDNes</Control>
<Control ID="chkUseExclusiveFullscreen">Usar modo exclusivo de pantalla completa</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Frecuencia de actualización solicitada:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -813,6 +814,7 @@
<Message ID="CheatsImported">{0} trucos se importaron para el juego {1}.</Message>
<Message ID="PressToExitFullscreen">Pulsar {0} para salir de pantalla completa</Message>
<Message ID="DefaultResolution">Por defecto</Message>
<Message ID="RomsFound">{0} roms encontradas</Message>

View file

@ -243,6 +243,7 @@
<Control ID="chkShowFps">Afficher le FPS</Control>
<Control ID="chkUseHdPacks">Utiliser les packs haute-définition de HDNes</Control>
<Control ID="chkUseExclusiveFullscreen">Utiliser le mode plein écran exclusif</Control>
<Control ID="lblFullscreenResolution">Résolution plein écran :</Control>
<Control ID="lblRequestedRefreshRate">Taux de rafraîchissement :</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -823,6 +824,7 @@
<Message ID="PlayerNumber">Joueur {0}</Message>
<Message ID="PressToExitFullscreen">Quitter le mode plein écran: {0}</Message>
<Message ID="DefaultResolution">Défaut</Message>
<Message ID="RomsFound">{0} roms trouvés</Message>

View file

@ -243,6 +243,7 @@
<Control ID="chkShowFps">Mostra FPS</Control>
<Control ID="chkUseHdPacks">Usa HDNes HD pack</Control>
<Control ID="chkUseExclusiveFullscreen">Usa schermo intero esclusivo</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Frequenza di aggiornamento:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Globale</Control>
@ -824,6 +825,7 @@
<Message ID="ExpansionDevice">Dispositivo di Espansione</Message>
<Message ID="PressToExitFullscreen">Premi {0} per uscire dallo schermo intero</Message>
<Message ID="DefaultResolution">Predefinito</Message>
<Message ID="RomsFound">{0} rom trovate</Message>

View file

@ -242,6 +242,7 @@
<Control ID="chkShowFps">フレームレート表示</Control>
<Control ID="chkUseHdPacks">HDNesのHDパックを使う</Control>
<Control ID="chkUseExclusiveFullscreen">排他的なフルスクリーンモードを使う</Control>
<Control ID="lblFullscreenResolution">解像度:</Control>
<Control ID="lblRequestedRefreshRate">リフレッシュレート:</Control>
<Control ID="tpgOverscan">オーバースキャン</Control>
<Control ID="tpgOverscanGlobal">全般</Control>
@ -811,6 +812,7 @@
<Message ID="PlayerNumber">プレーヤー {0}</Message>
<Message ID="PressToExitFullscreen">全画面表示モードを終了: {0}</Message>
<Message ID="DefaultResolution">デフォルト</Message>
<Message ID="RomsFound">{0}個</Message>

View file

@ -243,6 +243,7 @@
<Control ID="chkShowFps">Mostrar FPS</Control>
<Control ID="chkUseHdPacks">Usar os pacotes de alta definição do HDNes</Control>
<Control ID="chkUseExclusiveFullscreen">Usar modo tela inteira exclusivo</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Taxa de atualização solicitada:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -824,6 +825,7 @@
<Message ID="ExpansionDevice">Dispositivo de expansão</Message>
<Message ID="PressToExitFullscreen">Pressione {0} para sair da tela inteira</Message>
<Message ID="DefaultResolution">Padrão</Message>
<Message ID="RomsFound">{0} roms encontradas</Message>

View file

@ -242,6 +242,7 @@
<Control ID="chkShowFps">Показывать FPS</Control>
<Control ID="chkUseHdPacks">Использовать HDNes HD Packs</Control>
<Control ID="chkUseExclusiveFullscreen">Использовать эксклюзивный полноэкранный режим</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Запрошенная частота обновления:</Control>
<Control ID="tpgOverscan">Вылеты развёртки</Control>
<Control ID="tpgOverscanGlobal">Глобальный</Control>
@ -811,6 +812,7 @@
<Message ID="PlayerNumber">Игрок {0}</Message>
<Message ID="PressToExitFullscreen">Press {0} to exit fullscreen</Message>
<Message ID="DefaultResolution">Default</Message>
<Message ID="RomsFound">{0} Найденные ROM файлы</Message>

View file

@ -242,6 +242,7 @@
<Control ID="chkShowFps">Показувати FPS</Control>
<Control ID="chkUseHdPacks">Використовувати HDNes HD packs</Control>
<Control ID="chkUseExclusiveFullscreen">Використовувати ексклюзивний режим повного екрану</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Запитувана частота оновлення:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
@ -811,6 +812,7 @@
<Message ID="PlayerNumber">Гравець {0}</Message>
<Message ID="PressToExitFullscreen">Натисніть {0} щоб вийти з повноекранного режиму</Message>
<Message ID="DefaultResolution">Default</Message>
<Message ID="RomsFound">{0} Знайдені ROM файли</Message>

View file

@ -266,6 +266,7 @@
<Control ID="chkShowFps">显示帧率</Control>
<Control ID="chkUseHdPacks">使用 HDNes 包</Control>
<Control ID="chkUseExclusiveFullscreen">使用独占全屏模式</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">请求的刷新率:</Control>
<Control ID="tpgOverscan">过扫描</Control>
<Control ID="tpgOverscanGlobal">全局</Control>
@ -836,6 +837,8 @@
<Message ID="ExpansionDevice">扩展设备</Message>
<Message ID="PressToExitFullscreen">按 {0} 退出全屏</Message>
<Message ID="DefaultResolution">默认</Message>
<Message ID="RomsFound">已找到 {0} 个 ROM</Message>
<Message ID="RiskyOptionHint">(不推荐)</Message>
<Message ID="ResetSettingsConfirmation">警告:这将重置所有设置,无法撤消!&#xA;&#xA;继续?</Message>

View file

@ -32,6 +32,9 @@ namespace Mesen.GUI.Forms.Config
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmVideoConfig));
this.tlpMain = new System.Windows.Forms.TableLayoutPanel();
this.flpResolution = new System.Windows.Forms.FlowLayoutPanel();
this.lblFullscreenResolution = new System.Windows.Forms.Label();
this.cboFullscreenResolution = new System.Windows.Forms.ComboBox();
this.chkUseExclusiveFullscreen = new System.Windows.Forms.CheckBox();
this.lblVideoScale = new System.Windows.Forms.Label();
this.chkVerticalSync = new System.Windows.Forms.CheckBox();
@ -136,6 +139,8 @@ namespace Mesen.GUI.Forms.Config
this.chkForceSpritesFirstColumn = new Mesen.GUI.Controls.ctrlRiskyOption();
this.lblScreenRotation = new System.Windows.Forms.Label();
this.cboScreenRotation = new System.Windows.Forms.ComboBox();
this.chkRemoveSpriteLimit = new System.Windows.Forms.CheckBox();
this.chkAdaptiveSpriteLimit = new System.Windows.Forms.CheckBox();
this.contextPicturePresets = new System.Windows.Forms.ContextMenuStrip(this.components);
this.mnuPresetComposite = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPresetSVideo = new System.Windows.Forms.ToolStripMenuItem();
@ -153,9 +158,8 @@ namespace Mesen.GUI.Forms.Config
this.mnuPaletteSonyCxa2025As = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPaletteUnsaturated = new System.Windows.Forms.ToolStripMenuItem();
this.mnuPaletteYuv = new System.Windows.Forms.ToolStripMenuItem();
this.chkRemoveSpriteLimit = new System.Windows.Forms.CheckBox();
this.chkAdaptiveSpriteLimit = new System.Windows.Forms.CheckBox();
this.tlpMain.SuspendLayout();
this.flpResolution.SuspendLayout();
this.flowLayoutPanel7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picHdNesTooltip)).BeginInit();
this.flowLayoutPanel6.SuspendLayout();
@ -209,22 +213,24 @@ namespace Mesen.GUI.Forms.Config
this.tlpMain.ColumnCount = 2;
this.tlpMain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tlpMain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpMain.Controls.Add(this.flpResolution, 0, 5);
this.tlpMain.Controls.Add(this.chkUseExclusiveFullscreen, 0, 4);
this.tlpMain.Controls.Add(this.lblVideoScale, 0, 0);
this.tlpMain.Controls.Add(this.chkVerticalSync, 0, 3);
this.tlpMain.Controls.Add(this.lblDisplayRatio, 0, 1);
this.tlpMain.Controls.Add(this.flowLayoutPanel7, 0, 7);
this.tlpMain.Controls.Add(this.flowLayoutPanel7, 0, 8);
this.tlpMain.Controls.Add(this.nudScale, 1, 0);
this.tlpMain.Controls.Add(this.flowLayoutPanel6, 1, 1);
this.tlpMain.Controls.Add(this.chkFullscreenForceIntegerScale, 0, 6);
this.tlpMain.Controls.Add(this.chkShowFps, 0, 8);
this.tlpMain.Controls.Add(this.chkFullscreenForceIntegerScale, 0, 7);
this.tlpMain.Controls.Add(this.chkShowFps, 0, 9);
this.tlpMain.Controls.Add(this.chkIntegerFpsMode, 0, 2);
this.tlpMain.Controls.Add(this.flpRefreshRate, 0, 5);
this.tlpMain.Controls.Add(this.flpRefreshRate, 0, 6);
this.tlpMain.Dock = System.Windows.Forms.DockStyle.Fill;
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 = 10;
this.tlpMain.RowCount = 11;
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());
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
@ -238,6 +244,59 @@ namespace Mesen.GUI.Forms.Config
this.tlpMain.Size = new System.Drawing.Size(521, 396);
this.tlpMain.TabIndex = 1;
//
// flpResolution
//
this.tlpMain.SetColumnSpan(this.flpResolution, 2);
this.flpResolution.Controls.Add(this.lblFullscreenResolution);
this.flpResolution.Controls.Add(this.cboFullscreenResolution);
this.flpResolution.Dock = System.Windows.Forms.DockStyle.Fill;
this.flpResolution.Location = new System.Drawing.Point(30, 116);
this.flpResolution.Margin = new System.Windows.Forms.Padding(30, 0, 0, 0);
this.flpResolution.Name = "flpResolution";
this.flpResolution.Size = new System.Drawing.Size(491, 27);
this.flpResolution.TabIndex = 27;
this.flpResolution.Visible = false;
//
// lblFullscreenResolution
//
this.lblFullscreenResolution.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.lblFullscreenResolution.AutoSize = true;
this.lblFullscreenResolution.Location = new System.Drawing.Point(3, 7);
this.lblFullscreenResolution.Name = "lblFullscreenResolution";
this.lblFullscreenResolution.Size = new System.Drawing.Size(111, 13);
this.lblFullscreenResolution.TabIndex = 17;
this.lblFullscreenResolution.Text = "Fullscreen Resolution:";
//
// cboFullscreenResolution
//
this.cboFullscreenResolution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboFullscreenResolution.FormattingEnabled = true;
this.cboFullscreenResolution.Items.AddRange(new object[] {
"3840x2160",
"2560x1440",
"2160x1200",
"1920x1440",
"1920x1200",
"1920x1080",
"1680x1050",
"1600x1200",
"1600x1024",
"1600x900",
"1366x768",
"1360x768",
"1280x1024",
"1280x960",
"1280x800",
"1280x768",
"1280x720",
"1152x864",
"1024x768",
"800x600"});
this.cboFullscreenResolution.Location = new System.Drawing.Point(120, 3);
this.cboFullscreenResolution.Name = "cboFullscreenResolution";
this.cboFullscreenResolution.Size = new System.Drawing.Size(85, 21);
this.cboFullscreenResolution.TabIndex = 25;
//
// chkUseExclusiveFullscreen
//
this.chkUseExclusiveFullscreen.Anchor = System.Windows.Forms.AnchorStyles.Left;
@ -289,7 +348,7 @@ namespace Mesen.GUI.Forms.Config
this.flowLayoutPanel7.Controls.Add(this.chkUseHdPacks);
this.flowLayoutPanel7.Controls.Add(this.picHdNesTooltip);
this.flowLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel7.Location = new System.Drawing.Point(0, 166);
this.flowLayoutPanel7.Location = new System.Drawing.Point(0, 193);
this.flowLayoutPanel7.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel7.Name = "flowLayoutPanel7";
this.flowLayoutPanel7.Size = new System.Drawing.Size(521, 23);
@ -424,7 +483,7 @@ namespace Mesen.GUI.Forms.Config
this.chkFullscreenForceIntegerScale.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.chkFullscreenForceIntegerScale.AutoSize = true;
this.tlpMain.SetColumnSpan(this.chkFullscreenForceIntegerScale, 2);
this.chkFullscreenForceIntegerScale.Location = new System.Drawing.Point(3, 146);
this.chkFullscreenForceIntegerScale.Location = new System.Drawing.Point(3, 173);
this.chkFullscreenForceIntegerScale.Name = "chkFullscreenForceIntegerScale";
this.chkFullscreenForceIntegerScale.Size = new System.Drawing.Size(289, 17);
this.chkFullscreenForceIntegerScale.TabIndex = 23;
@ -436,7 +495,7 @@ namespace Mesen.GUI.Forms.Config
this.chkShowFps.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.chkShowFps.AutoSize = true;
this.tlpMain.SetColumnSpan(this.chkShowFps, 2);
this.chkShowFps.Location = new System.Drawing.Point(3, 192);
this.chkShowFps.Location = new System.Drawing.Point(3, 219);
this.chkShowFps.Name = "chkShowFps";
this.chkShowFps.Size = new System.Drawing.Size(76, 17);
this.chkShowFps.TabIndex = 9;
@ -461,7 +520,7 @@ namespace Mesen.GUI.Forms.Config
this.flpRefreshRate.Controls.Add(this.lblRequestedRefreshRate);
this.flpRefreshRate.Controls.Add(this.cboRefreshRate);
this.flpRefreshRate.Dock = System.Windows.Forms.DockStyle.Fill;
this.flpRefreshRate.Location = new System.Drawing.Point(30, 116);
this.flpRefreshRate.Location = new System.Drawing.Point(30, 143);
this.flpRefreshRate.Margin = new System.Windows.Forms.Padding(30, 0, 0, 0);
this.flpRefreshRate.Name = "flpRefreshRate";
this.flpRefreshRate.Size = new System.Drawing.Size(491, 27);
@ -482,12 +541,6 @@ namespace Mesen.GUI.Forms.Config
//
this.cboRefreshRate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboRefreshRate.FormattingEnabled = true;
this.cboRefreshRate.Items.AddRange(new object[] {
"Auto",
"NTSC (8:7)",
"PAL (18:13)",
"Standard (4:3)",
"Widescreen (16:9)"});
this.cboRefreshRate.Location = new System.Drawing.Point(137, 3);
this.cboRefreshRate.Name = "cboRefreshRate";
this.cboRefreshRate.Size = new System.Drawing.Size(68, 21);
@ -1855,6 +1908,32 @@ namespace Mesen.GUI.Forms.Config
this.cboScreenRotation.Size = new System.Drawing.Size(77, 21);
this.cboScreenRotation.TabIndex = 5;
//
// chkRemoveSpriteLimit
//
this.chkRemoveSpriteLimit.AutoSize = true;
this.tableLayoutPanel9.SetColumnSpan(this.chkRemoveSpriteLimit, 2);
this.chkRemoveSpriteLimit.Location = new System.Drawing.Point(3, 3);
this.chkRemoveSpriteLimit.Name = "chkRemoveSpriteLimit";
this.chkRemoveSpriteLimit.Size = new System.Drawing.Size(205, 17);
this.chkRemoveSpriteLimit.TabIndex = 6;
this.chkRemoveSpriteLimit.Text = "Remove sprite limit (Reduces flashing)";
this.chkRemoveSpriteLimit.UseVisualStyleBackColor = true;
this.chkRemoveSpriteLimit.CheckedChanged += new System.EventHandler(this.chkRemoveSpriteLimit_CheckedChanged);
//
// chkAdaptiveSpriteLimit
//
this.chkAdaptiveSpriteLimit.AutoSize = true;
this.tableLayoutPanel9.SetColumnSpan(this.chkAdaptiveSpriteLimit, 2);
this.chkAdaptiveSpriteLimit.Enabled = false;
this.chkAdaptiveSpriteLimit.Location = new System.Drawing.Point(18, 26);
this.chkAdaptiveSpriteLimit.Margin = new System.Windows.Forms.Padding(18, 3, 3, 3);
this.chkAdaptiveSpriteLimit.Name = "chkAdaptiveSpriteLimit";
this.chkAdaptiveSpriteLimit.Size = new System.Drawing.Size(442, 17);
this.chkAdaptiveSpriteLimit.TabIndex = 11;
this.chkAdaptiveSpriteLimit.Text = "Automatically re-enable sprite limit as needed to prevent graphical glitches when" +
" possible";
this.chkAdaptiveSpriteLimit.UseVisualStyleBackColor = true;
//
// contextPicturePresets
//
this.contextPicturePresets.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -1978,32 +2057,6 @@ namespace Mesen.GUI.Forms.Config
this.mnuPaletteYuv.Text = "YUV v3 (by FirebrandX)";
this.mnuPaletteYuv.Click += new System.EventHandler(this.mnuPaletteYuv_Click);
//
// chkRemoveSpriteLimit
//
this.chkRemoveSpriteLimit.AutoSize = true;
this.tableLayoutPanel9.SetColumnSpan(this.chkRemoveSpriteLimit, 2);
this.chkRemoveSpriteLimit.Location = new System.Drawing.Point(3, 3);
this.chkRemoveSpriteLimit.Name = "chkRemoveSpriteLimit";
this.chkRemoveSpriteLimit.Size = new System.Drawing.Size(205, 17);
this.chkRemoveSpriteLimit.TabIndex = 6;
this.chkRemoveSpriteLimit.Text = "Remove sprite limit (Reduces flashing)";
this.chkRemoveSpriteLimit.UseVisualStyleBackColor = true;
this.chkRemoveSpriteLimit.CheckedChanged += new System.EventHandler(this.chkRemoveSpriteLimit_CheckedChanged);
//
// chkAdaptiveSpriteLimit
//
this.chkAdaptiveSpriteLimit.AutoSize = true;
this.tableLayoutPanel9.SetColumnSpan(this.chkAdaptiveSpriteLimit, 2);
this.chkAdaptiveSpriteLimit.Enabled = false;
this.chkAdaptiveSpriteLimit.Location = new System.Drawing.Point(18, 26);
this.chkAdaptiveSpriteLimit.Margin = new System.Windows.Forms.Padding(18, 3, 3, 3);
this.chkAdaptiveSpriteLimit.Name = "chkAdaptiveSpriteLimit";
this.chkAdaptiveSpriteLimit.Size = new System.Drawing.Size(442, 17);
this.chkAdaptiveSpriteLimit.TabIndex = 11;
this.chkAdaptiveSpriteLimit.Text = "Automatically re-enable sprite limit as needed to prevent graphical glitches when" +
" possible";
this.chkAdaptiveSpriteLimit.UseVisualStyleBackColor = true;
//
// frmVideoConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -2020,6 +2073,8 @@ namespace Mesen.GUI.Forms.Config
this.Controls.SetChildIndex(this.tabMain, 0);
this.tlpMain.ResumeLayout(false);
this.tlpMain.PerformLayout();
this.flpResolution.ResumeLayout(false);
this.flpResolution.PerformLayout();
this.flowLayoutPanel7.ResumeLayout(false);
this.flowLayoutPanel7.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.picHdNesTooltip)).EndInit();
@ -2210,5 +2265,8 @@ namespace Mesen.GUI.Forms.Config
private System.Windows.Forms.Label lblGameSpecificOverscanLeft;
private System.Windows.Forms.CheckBox chkRemoveSpriteLimit;
private System.Windows.Forms.CheckBox chkAdaptiveSpriteLimit;
}
private System.Windows.Forms.FlowLayoutPanel flpResolution;
private System.Windows.Forms.Label lblFullscreenResolution;
private System.Windows.Forms.ComboBox cboFullscreenResolution;
}
}

View file

@ -88,6 +88,13 @@ namespace Mesen.GUI.Forms.Config
toolTip.SetToolTip(picHdNesTooltip, ResourceHelper.GetMessage("HDNesTooltip"));
cboFullscreenResolution.Items.Insert(0, ResourceHelper.GetMessage("DefaultResolution"));
if(cboFullscreenResolution.Items.Contains(ConfigManager.Config.VideoInfo.FullscreenResolution)) {
cboFullscreenResolution.SelectedItem = ConfigManager.Config.VideoInfo.FullscreenResolution;
} else {
cboFullscreenResolution.SelectedIndex = 0;
}
btnSelectPreset.Image = BaseControl.DownArrow;
btnSelectPalette.Image = BaseControl.DownArrow;
@ -185,6 +192,12 @@ namespace Mesen.GUI.Forms.Config
if(DialogResult == DialogResult.OK) {
UpdatePalette();
if(cboFullscreenResolution.SelectedIndex > 0) {
ConfigManager.Config.VideoInfo.FullscreenResolution = cboFullscreenResolution.SelectedItem.ToString();
} else {
ConfigManager.Config.VideoInfo.FullscreenResolution = "";
}
GameSpecificInfo.SetGameSpecificOverscan(
chkEnableGameSpecificOverscan.Checked,
(UInt32)nudGameSpecificOverscanTop.Value,
@ -477,6 +490,7 @@ namespace Mesen.GUI.Forms.Config
private void chkUseExclusiveFullscreen_CheckedChanged(object sender, EventArgs e)
{
flpRefreshRate.Visible = chkUseExclusiveFullscreen.Checked;
flpResolution.Visible = chkUseExclusiveFullscreen.Checked;
}
private void chkEnableGameSpecificOverscan_CheckedChanged(object sender, EventArgs e)

View file

@ -128,7 +128,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACs
BQAAAk1TRnQBSQFMAwEBAAE4AQABOAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
BQAAAk1TRnQBSQFMAwEBAAFIAQABSAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
ARADAAEBAQABGAYAAQweAAH5AvgB1QHBAbsBqAFyAWEBkAFHATABkAFHATABpgFuAVwB0gG8AbUB+AL2
pQAB1QHAAbkBlgFNATIBqgFaASwBuwFkASsBwAFpASkBwAFpASkBuwFlASwBqwFbAS0BmAFMATAB0wG9
AbWfAAHRAbgBrwGlAVgBMgHAAW0BLgHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHA

View file

@ -507,11 +507,6 @@ namespace Mesen.GUI.Forms
SetScaleBasedOnDimensions(panelRenderer.ClientSize, true);
}
private void SetScaleBasedOnScreenSize()
{
SetScaleBasedOnDimensions(Screen.FromControl(this).Bounds.Size, false);
}
private void StopExclusiveFullscreenMode()
{
if(_frmFullscreenRenderer != null) {
@ -519,13 +514,28 @@ namespace Mesen.GUI.Forms
}
}
private Size GetFullscreenResolution()
{
string resolution = ConfigManager.Config.VideoInfo.FullscreenResolution;
if(!string.IsNullOrWhiteSpace(resolution)) {
string[] resData = resolution.Split('x');
int width;
int height;
if(int.TryParse(resData[0], out width) && int.TryParse(resData[1], out height)) {
return new Size(width, height);
}
}
return Screen.FromControl(this).Bounds.Size;
}
private void StartExclusiveFullscreenMode()
{
Size screenSize = Screen.FromControl(this).Bounds.Size;
Size screenSize = GetFullscreenResolution();
_frmFullscreenRenderer = new frmFullscreenRenderer();
_frmFullscreenRenderer.Shown += (object sender, EventArgs e) => {
ctrlRenderer.Visible = false;
SetScaleBasedOnScreenSize();
SetScaleBasedOnDimensions(screenSize, false);
InteropEmu.SetFullscreenMode(true, _frmFullscreenRenderer.Handle, (UInt32)screenSize.Width, (UInt32)screenSize.Height);
};
_frmFullscreenRenderer.FormClosing += (object sender, FormClosingEventArgs e) => {