From 1c33b92bf136fddfbf11217990ae23690e5cfef3 Mon Sep 17 00:00:00 2001 From: adelikat Date: Mon, 25 Mar 2013 01:59:34 +0000 Subject: [PATCH] NES - separate first/last scanline settings for NTSC vs PAL (default of 8,231 NTSC and 0,239 for PAL) --- .../Consoles/Nintendo/NES/Core.cs | 6 +- .../Consoles/Nintendo/NES/NES.cs | 68 +++++++-- BizHawk.Emulation/Interfaces/IEmulator.cs | 2 +- BizHawk.MultiClient/Config.cs | 6 +- BizHawk.MultiClient/LuaImplementation.cs | 48 ++++-- BizHawk.MultiClient/MainForm.cs | 6 +- .../NEStools/NESGraphicsConfig.Designer.cs | 142 +++++++++++++----- .../NEStools/NESGraphicsConfig.cs | 36 +++-- 8 files changed, 241 insertions(+), 73 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs index c1aa25b8e8..c13cbb2938 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs @@ -46,7 +46,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo int[,] palette = new int[64,3]; int[] palette_compiled = new int[64*8]; IPortDevice[] ports; - + + private DisplayType _display_type = DisplayType.NTSC; + //Sound config public void SetSquare1(bool enabled) { apu.EnableSquare1 = enabled; } public void SetSquare2(bool enabled) { apu.EnableSquare2 = enabled; } @@ -184,6 +186,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo CoreComm.VsyncDen = 1; cpuclockrate = 1662607; cpu_sequence = cpu_sequence_PAL; + _display_type = DisplayType.PAL; break; case "NES-NTSC": case "Famicom": @@ -209,6 +212,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo CoreComm.VsyncDen = 1; cpuclockrate = 1773448; cpu_sequence = cpu_sequence_NTSC; + _display_type = DisplayType.DENDY; break; case null: Console.WriteLine("Unknown NES system! Defaulting to NTSC."); diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs index 409325957e..f6ec83cecf 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs @@ -150,12 +150,14 @@ namespace BizHawk.Emulation.Consoles.Nintendo public CoreComm CoreComm { get; private set; } - public DisplayType DisplayType { get { return BizHawk.DisplayType.NTSC; } } + public DisplayType DisplayType { get { return _display_type; } } class MyVideoProvider : IVideoProvider { - public int top = 8; - public int bottom = 231; + public int ntsc_top = 8; + public int ntsc_bottom = 231; + public int pal_top = 0; + public int pal_bottom = 239; public int left = 0; public int right = 255; @@ -173,6 +175,19 @@ namespace BizHawk.Emulation.Consoles.Nintendo public void FillFrameBuffer() { + int the_top; + int the_bottom; + if (emu.DisplayType == DisplayType.NTSC) + { + the_top = ntsc_top; + the_bottom = ntsc_bottom; + } + else + { + the_top = pal_top; + the_bottom = pal_bottom; + } + int backdrop = 0; if (emu.CoreComm != null) backdrop = emu.CoreComm.NES_BackdropColor; @@ -182,25 +197,60 @@ namespace BizHawk.Emulation.Consoles.Nintendo int width = BufferWidth; for (int x = left; x <= right; x++) { - for (int y = top; y <= bottom; y++) + for (int y = the_top; y <= the_bottom; y++) { short pixel = emu.ppu.xbuf[(y << 8) + x]; if ((pixel & 0x8000) != 0 && useBackdrop) { - pixels[((y - top) * width) + (x - left)] = backdrop; + pixels[((y - the_top) * width) + (x - left)] = backdrop; } - else pixels[((y - top) * width) + (x - left)] = emu.palette_compiled[pixel & 0x7FFF]; + else pixels[((y - the_top) * width) + (x - left)] = emu.palette_compiled[pixel & 0x7FFF]; } } } public int VirtualWidth { get { return BufferWidth; } } public int BufferWidth { get { return right - left + 1; } } - public int BufferHeight { get { return bottom - top + 1; } } public int BackgroundColor { get { return 0; } } + public int BufferHeight + { + get + { + if (emu.DisplayType == DisplayType.NTSC) + { + return ntsc_bottom - ntsc_top + 1; + } + else + { + return pal_bottom - pal_top + 1; + } + } + } + } - public int FirstDrawLine { get { return videoProvider.top; } set { videoProvider.top = value; CoreComm.ScreenLogicalOffsetY = videoProvider.top; } } - public int LastDrawLine { get { return videoProvider.bottom; } set { videoProvider.bottom = value; } } + public int NTSC_FirstDrawLine + { + get { return videoProvider.ntsc_top; } + set { videoProvider.ntsc_top = value; CoreComm.ScreenLogicalOffsetY = videoProvider.ntsc_top; } + } + + public int NTSC_LastDrawLine + { + get { return videoProvider.ntsc_bottom; } + set { videoProvider.ntsc_bottom = value; } + } + + public int PAL_FirstDrawLine + { + get { return videoProvider.pal_top; } + set { videoProvider.pal_top = value; CoreComm.ScreenLogicalOffsetY = videoProvider.pal_top; } + } + + public int PAL_LastDrawLine + { + get { return videoProvider.pal_bottom; } + set { videoProvider.pal_bottom = value; } + } public void SetClipLeftAndRight(bool clip) { diff --git a/BizHawk.Emulation/Interfaces/IEmulator.cs b/BizHawk.Emulation/Interfaces/IEmulator.cs index 8137d6f3c5..a51b42305e 100644 --- a/BizHawk.Emulation/Interfaces/IEmulator.cs +++ b/BizHawk.Emulation/Interfaces/IEmulator.cs @@ -112,5 +112,5 @@ namespace BizHawk public enum Endian { Big, Little, Unknown } - public enum DisplayType { NTSC, PAL } + public enum DisplayType { NTSC, PAL, DENDY } } diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index a8da038d25..c36cd43eed 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -461,8 +461,10 @@ namespace BizHawk.MultiClient public bool NESDispSprites = true; public int NESBackgroundColor = 0; public string NESPaletteFile = ""; - public int NESTopLine = 8; - public int NESBottomLine = 231; + public int NTSC_NESTopLine = 8; + public int NTSC_NESBottomLine = 231; + public int PAL_NESTopLine = 8; + public int PAL_NESBottomLine = 231; // gb gpu view settings public bool AutoLoadGBGPUView = false; diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index b4b52c0b19..957d0e104b 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -2737,7 +2737,7 @@ namespace BizHawk.MultiClient //NES library //---------------------------------------------------- - public void nes_setscanlines(object top, object bottom) + public void nes_setscanlines(object top, object bottom, bool pal = false) { int first = LuaInt(top); @@ -2760,24 +2760,54 @@ namespace BizHawk.MultiClient last = 128; } - Global.Config.NESTopLine = first; - Global.Config.NESBottomLine = last; + if (pal) + { + Global.Config.PAL_NESTopLine = first; + Global.Config.PAL_NESBottomLine = last; + } + else + { + Global.Config.NTSC_NESTopLine = first; + Global.Config.NTSC_NESBottomLine = last; + } if (Global.Emulator is NES) { - (Global.Emulator as NES).FirstDrawLine = first; - (Global.Emulator as NES).LastDrawLine = last; + if (pal) + { + (Global.Emulator as NES).PAL_FirstDrawLine = first; + (Global.Emulator as NES).PAL_LastDrawLine = last; + } + else + { + (Global.Emulator as NES).NTSC_FirstDrawLine = first; + (Global.Emulator as NES).NTSC_LastDrawLine = last; + } } } - public int nes_gettopscanline() + public int nes_gettopscanline(bool pal = false) { - return Global.Config.NESTopLine; + if (pal) + { + return Global.Config.PAL_NESTopLine; + } + else + { + return Global.Config.NTSC_NESTopLine; + } } - public int nes_getbottomscanline() + public int nes_getbottomscanline(bool pal = false) { - return Global.Config.NESBottomLine; + if (pal) + { + return Global.Config.PAL_NESBottomLine; + } + else + { + return Global.Config.NTSC_NESBottomLine; + } } public bool nes_getclipleftandright() diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 19a1a08cc1..1577f9b61d 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -2005,8 +2005,10 @@ namespace BizHawk.MultiClient NES nes = new NES(nextComm, game, rom.FileData, bios); nes.SoundOn = Global.Config.SoundEnabled; - nes.FirstDrawLine = Global.Config.NESTopLine; - nes.LastDrawLine = Global.Config.NESBottomLine; + nes.NTSC_FirstDrawLine = Global.Config.NTSC_NESTopLine; + nes.NTSC_LastDrawLine = Global.Config.NTSC_NESBottomLine; + nes.PAL_FirstDrawLine = Global.Config.PAL_NESTopLine; + nes.NTSC_LastDrawLine = Global.Config.PAL_NESBottomLine; nes.SetClipLeftAndRight(Global.Config.NESClipLeftAndRight); nextEmulator = nes; if (Global.Config.NESAutoLoadPalette && Global.Config.NESPaletteFile.Length > 0 && diff --git a/BizHawk.MultiClient/NEStools/NESGraphicsConfig.Designer.cs b/BizHawk.MultiClient/NEStools/NESGraphicsConfig.Designer.cs index 611e1ed813..4d2c40fcff 100644 --- a/BizHawk.MultiClient/NEStools/NESGraphicsConfig.Designer.cs +++ b/BizHawk.MultiClient/NEStools/NESGraphicsConfig.Designer.cs @@ -41,8 +41,8 @@ this.btnAreaStandard = new System.Windows.Forms.Button(); this.label4 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); - this.LastLineNumeric = new System.Windows.Forms.NumericUpDown(); - this.FirstLineNumeric = new System.Windows.Forms.NumericUpDown(); + this.NTSC_LastLineNumeric = new System.Windows.Forms.NumericUpDown(); + this.NTSC_FirstLineNumeric = new System.Windows.Forms.NumericUpDown(); this.ClipLeftAndRightCheckBox = new System.Windows.Forms.CheckBox(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.checkUseBackdropColor = new System.Windows.Forms.CheckBox(); @@ -55,18 +55,24 @@ this.DispSprites = new System.Windows.Forms.CheckBox(); this.BGColorDialog = new System.Windows.Forms.ColorDialog(); this.RestoreDefaultsButton = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.PAL_LastLineNumeric = new System.Windows.Forms.NumericUpDown(); + this.PAL_FirstLineNumeric = new System.Windows.Forms.NumericUpDown(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.LastLineNumeric)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.FirstLineNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NTSC_LastLineNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NTSC_FirstLineNumeric)).BeginInit(); this.groupBox3.SuspendLayout(); this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PAL_LastLineNumeric)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.PAL_FirstLineNumeric)).BeginInit(); this.SuspendLayout(); // // OK // this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.OK.Location = new System.Drawing.Point(213, 372); + this.OK.Location = new System.Drawing.Point(213, 385); this.OK.Name = "OK"; this.OK.Size = new System.Drawing.Size(75, 23); this.OK.TabIndex = 70; @@ -78,7 +84,7 @@ // this.Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.Cancel.Location = new System.Drawing.Point(294, 372); + this.Cancel.Location = new System.Drawing.Point(294, 385); this.Cancel.Name = "Cancel"; this.Cancel.Size = new System.Drawing.Size(75, 23); this.Cancel.TabIndex = 75; @@ -88,7 +94,7 @@ // AllowMoreSprites // this.AllowMoreSprites.AutoSize = true; - this.AllowMoreSprites.Location = new System.Drawing.Point(143, 17); + this.AllowMoreSprites.Location = new System.Drawing.Point(134, 96); this.AllowMoreSprites.Name = "AllowMoreSprites"; this.AllowMoreSprites.Size = new System.Drawing.Size(203, 17); this.AllowMoreSprites.TabIndex = 23; @@ -155,24 +161,28 @@ // this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.label6); + this.groupBox2.Controls.Add(this.PAL_LastLineNumeric); + this.groupBox2.Controls.Add(this.PAL_FirstLineNumeric); + this.groupBox2.Controls.Add(this.label5); this.groupBox2.Controls.Add(this.btnAreaFull); this.groupBox2.Controls.Add(this.btnAreaStandard); this.groupBox2.Controls.Add(this.label4); this.groupBox2.Controls.Add(this.label3); - this.groupBox2.Controls.Add(this.LastLineNumeric); - this.groupBox2.Controls.Add(this.FirstLineNumeric); + this.groupBox2.Controls.Add(this.NTSC_LastLineNumeric); + this.groupBox2.Controls.Add(this.NTSC_FirstLineNumeric); this.groupBox2.Controls.Add(this.ClipLeftAndRightCheckBox); this.groupBox2.Controls.Add(this.AllowMoreSprites); this.groupBox2.Location = new System.Drawing.Point(12, 113); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(352, 134); + this.groupBox2.Size = new System.Drawing.Size(352, 150); this.groupBox2.TabIndex = 4; this.groupBox2.TabStop = false; this.groupBox2.Text = "Drawing Area"; // // btnAreaFull // - this.btnAreaFull.Location = new System.Drawing.Point(12, 99); + this.btnAreaFull.Location = new System.Drawing.Point(7, 115); this.btnAreaFull.Name = "btnAreaFull"; this.btnAreaFull.Size = new System.Drawing.Size(94, 23); this.btnAreaFull.TabIndex = 40; @@ -182,7 +192,7 @@ // // btnAreaStandard // - this.btnAreaStandard.Location = new System.Drawing.Point(12, 71); + this.btnAreaStandard.Location = new System.Drawing.Point(8, 92); this.btnAreaStandard.Name = "btnAreaStandard"; this.btnAreaStandard.Size = new System.Drawing.Size(94, 23); this.btnAreaStandard.TabIndex = 35; @@ -193,7 +203,7 @@ // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(4, 47); + this.label4.Location = new System.Drawing.Point(4, 69); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(49, 13); this.label4.TabIndex = 24; @@ -202,50 +212,50 @@ // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(5, 21); + this.label3.Location = new System.Drawing.Point(5, 43); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(48, 13); this.label3.TabIndex = 23; this.label3.Text = "First line:"; // - // LastLineNumeric + // NTSC_LastLineNumeric // - this.LastLineNumeric.Location = new System.Drawing.Point(59, 45); - this.LastLineNumeric.Maximum = new decimal(new int[] { + this.NTSC_LastLineNumeric.Location = new System.Drawing.Point(59, 67); + this.NTSC_LastLineNumeric.Maximum = new decimal(new int[] { 239, 0, 0, 0}); - this.LastLineNumeric.Minimum = new decimal(new int[] { + this.NTSC_LastLineNumeric.Minimum = new decimal(new int[] { 128, 0, 0, 0}); - this.LastLineNumeric.Name = "LastLineNumeric"; - this.LastLineNumeric.Size = new System.Drawing.Size(47, 20); - this.LastLineNumeric.TabIndex = 28; - this.LastLineNumeric.Value = new decimal(new int[] { + this.NTSC_LastLineNumeric.Name = "NTSC_LastLineNumeric"; + this.NTSC_LastLineNumeric.Size = new System.Drawing.Size(47, 20); + this.NTSC_LastLineNumeric.TabIndex = 28; + this.NTSC_LastLineNumeric.Value = new decimal(new int[] { 128, 0, 0, 0}); // - // FirstLineNumeric + // NTSC_FirstLineNumeric // - this.FirstLineNumeric.Location = new System.Drawing.Point(59, 19); - this.FirstLineNumeric.Maximum = new decimal(new int[] { + this.NTSC_FirstLineNumeric.Location = new System.Drawing.Point(59, 41); + this.NTSC_FirstLineNumeric.Maximum = new decimal(new int[] { 127, 0, 0, 0}); - this.FirstLineNumeric.Name = "FirstLineNumeric"; - this.FirstLineNumeric.Size = new System.Drawing.Size(47, 20); - this.FirstLineNumeric.TabIndex = 21; + this.NTSC_FirstLineNumeric.Name = "NTSC_FirstLineNumeric"; + this.NTSC_FirstLineNumeric.Size = new System.Drawing.Size(47, 20); + this.NTSC_FirstLineNumeric.TabIndex = 21; // // ClipLeftAndRightCheckBox // this.ClipLeftAndRightCheckBox.AutoSize = true; - this.ClipLeftAndRightCheckBox.Location = new System.Drawing.Point(143, 47); + this.ClipLeftAndRightCheckBox.Location = new System.Drawing.Point(134, 119); this.ClipLeftAndRightCheckBox.Name = "ClipLeftAndRightCheckBox"; this.ClipLeftAndRightCheckBox.Size = new System.Drawing.Size(186, 17); this.ClipLeftAndRightCheckBox.TabIndex = 30; @@ -263,7 +273,7 @@ this.groupBox3.Controls.Add(this.groupBox4); this.groupBox3.Controls.Add(this.DispBackground); this.groupBox3.Controls.Add(this.DispSprites); - this.groupBox3.Location = new System.Drawing.Point(12, 253); + this.groupBox3.Location = new System.Drawing.Point(12, 266); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(352, 113); this.groupBox3.TabIndex = 5; @@ -354,7 +364,7 @@ // RestoreDefaultsButton // this.RestoreDefaultsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.RestoreDefaultsButton.Location = new System.Drawing.Point(12, 372); + this.RestoreDefaultsButton.Location = new System.Drawing.Point(12, 385); this.RestoreDefaultsButton.Name = "RestoreDefaultsButton"; this.RestoreDefaultsButton.Size = new System.Drawing.Size(102, 23); this.RestoreDefaultsButton.TabIndex = 65; @@ -362,13 +372,65 @@ this.RestoreDefaultsButton.UseVisualStyleBackColor = true; this.RestoreDefaultsButton.Click += new System.EventHandler(this.RestoreDefaultsButton_Click); // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(62, 22); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(36, 13); + this.label5.TabIndex = 41; + this.label5.Text = "NTSC"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(131, 22); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(27, 13); + this.label6.TabIndex = 44; + this.label6.Text = "PAL"; + // + // PAL_LastLineNumeric + // + this.PAL_LastLineNumeric.Location = new System.Drawing.Point(124, 67); + this.PAL_LastLineNumeric.Maximum = new decimal(new int[] { + 239, + 0, + 0, + 0}); + this.PAL_LastLineNumeric.Minimum = new decimal(new int[] { + 128, + 0, + 0, + 0}); + this.PAL_LastLineNumeric.Name = "PAL_LastLineNumeric"; + this.PAL_LastLineNumeric.Size = new System.Drawing.Size(47, 20); + this.PAL_LastLineNumeric.TabIndex = 43; + this.PAL_LastLineNumeric.Value = new decimal(new int[] { + 128, + 0, + 0, + 0}); + // + // PAL_FirstLineNumeric + // + this.PAL_FirstLineNumeric.Location = new System.Drawing.Point(124, 41); + this.PAL_FirstLineNumeric.Maximum = new decimal(new int[] { + 127, + 0, + 0, + 0}); + this.PAL_FirstLineNumeric.Name = "PAL_FirstLineNumeric"; + this.PAL_FirstLineNumeric.Size = new System.Drawing.Size(47, 20); + this.PAL_FirstLineNumeric.TabIndex = 42; + // // NESGraphicsConfig // this.AcceptButton = this.OK; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.Cancel; - this.ClientSize = new System.Drawing.Size(373, 396); + this.ClientSize = new System.Drawing.Size(373, 409); this.Controls.Add(this.RestoreDefaultsButton); this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox2); @@ -376,7 +438,7 @@ this.Controls.Add(this.Cancel); this.Controls.Add(this.OK); this.MaximizeBox = false; - this.MaximumSize = new System.Drawing.Size(389, 434); + this.MaximumSize = new System.Drawing.Size(389, 494); this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(389, 434); this.Name = "NESGraphicsConfig"; @@ -388,11 +450,13 @@ this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.LastLineNumeric)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.FirstLineNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NTSC_LastLineNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NTSC_FirstLineNumeric)).EndInit(); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.groupBox4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.PAL_LastLineNumeric)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.PAL_FirstLineNumeric)).EndInit(); this.ResumeLayout(false); } @@ -419,12 +483,16 @@ private System.Windows.Forms.Button ChangeBGColor; private System.Windows.Forms.ColorDialog BGColorDialog; private System.Windows.Forms.CheckBox checkUseBackdropColor; - private System.Windows.Forms.NumericUpDown FirstLineNumeric; - private System.Windows.Forms.NumericUpDown LastLineNumeric; + private System.Windows.Forms.NumericUpDown NTSC_FirstLineNumeric; + private System.Windows.Forms.NumericUpDown NTSC_LastLineNumeric; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label3; private System.Windows.Forms.Button btnAreaFull; private System.Windows.Forms.Button btnAreaStandard; private System.Windows.Forms.Button RestoreDefaultsButton; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.NumericUpDown PAL_LastLineNumeric; + private System.Windows.Forms.NumericUpDown PAL_FirstLineNumeric; + private System.Windows.Forms.Label label5; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/NEStools/NESGraphicsConfig.cs b/BizHawk.MultiClient/NEStools/NESGraphicsConfig.cs index ada03fba6f..4bcde44dac 100644 --- a/BizHawk.MultiClient/NEStools/NESGraphicsConfig.cs +++ b/BizHawk.MultiClient/NEStools/NESGraphicsConfig.cs @@ -35,8 +35,10 @@ namespace BizHawk.MultiClient private void LoadStuff() { - FirstLineNumeric.Value = Global.Config.NESTopLine; - LastLineNumeric.Value = Global.Config.NESBottomLine; + NTSC_FirstLineNumeric.Value = Global.Config.NTSC_NESTopLine; + NTSC_LastLineNumeric.Value = Global.Config.NTSC_NESBottomLine; + PAL_FirstLineNumeric.Value = Global.Config.PAL_NESTopLine; + PAL_LastLineNumeric.Value = Global.Config.PAL_NESBottomLine; AllowMoreSprites.Checked = Global.Config.NESAllowMoreThanEightSprites; ClipLeftAndRightCheckBox.Checked = Global.Config.NESClipLeftAndRight; AutoLoadPalette.Checked = Global.Config.NESAutoLoadPalette; @@ -86,10 +88,18 @@ namespace BizHawk.MultiClient Global.OSD.AddMessage("Standard Palette set"); } - Global.Config.NESTopLine = (int)FirstLineNumeric.Value; - Global.Config.NESBottomLine = (int)LastLineNumeric.Value; - nes.FirstDrawLine = (int)FirstLineNumeric.Value; - nes.LastDrawLine = (int)LastLineNumeric.Value; + Global.Config.NTSC_NESTopLine = (int)NTSC_FirstLineNumeric.Value; + nes.NTSC_FirstDrawLine = (int)NTSC_FirstLineNumeric.Value; + + Global.Config.NTSC_NESBottomLine = (int)NTSC_LastLineNumeric.Value; + nes.NTSC_LastDrawLine = (int)NTSC_LastLineNumeric.Value; + + Global.Config.PAL_NESTopLine = (int)PAL_FirstLineNumeric.Value; + nes.PAL_FirstDrawLine = (int)PAL_FirstLineNumeric.Value; + + Global.Config.PAL_NESBottomLine = (int)PAL_LastLineNumeric.Value; + nes.PAL_LastDrawLine = (int)PAL_LastLineNumeric.Value; + Global.Config.NESAllowMoreThanEightSprites = AllowMoreSprites.Checked; Global.Config.NESClipLeftAndRight = ClipLeftAndRightCheckBox.Checked; nes.SetClipLeftAndRight(ClipLeftAndRightCheckBox.Checked); @@ -125,14 +135,14 @@ namespace BizHawk.MultiClient private void btnAreaStandard_Click(object sender, EventArgs e) { - FirstLineNumeric.Value = 8; - LastLineNumeric.Value = 231; + NTSC_FirstLineNumeric.Value = 8; + NTSC_LastLineNumeric.Value = 231; } private void btnAreaFull_Click(object sender, EventArgs e) { - FirstLineNumeric.Value = 0; - LastLineNumeric.Value = 239; + NTSC_FirstLineNumeric.Value = 0; + NTSC_LastLineNumeric.Value = 239; } private void BackgroundColorPanel_DoubleClick(object sender, EventArgs e) @@ -142,8 +152,10 @@ namespace BizHawk.MultiClient private void RestoreDefaultsButton_Click(object sender, EventArgs e) { - FirstLineNumeric.Value = 8; - LastLineNumeric.Value = 231; + NTSC_FirstLineNumeric.Value = 8; + NTSC_LastLineNumeric.Value = 231; + PAL_FirstLineNumeric.Value = 0; + PAL_LastLineNumeric.Value = 239; AllowMoreSprites.Checked = false; ClipLeftAndRightCheckBox.Checked = false; AutoLoadPalette.Checked = true;