From 8daab8246361f39a43eb2f1176445cfe0e704bb6 Mon Sep 17 00:00:00 2001 From: beirich Date: Thu, 13 Mar 2014 04:15:05 +0000 Subject: [PATCH] SMS: Add Export/Japan, NTSC/PAL, Enable BIOS options to SMS menu. Not yet hooked up to core. --- BizHawk.Client.EmuHawk/MainForm.Designer.cs | 66 +++++++++++++++++++ BizHawk.Client.EmuHawk/MainForm.Events.cs | 48 +++++++++++++- .../Consoles/Sega/SMS/SMS.cs | 16 +++-- 3 files changed, 124 insertions(+), 6 deletions(-) diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs index 543ffa7802..dc7329e061 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs @@ -230,6 +230,13 @@ this.PCEArcadeCardRewindEnableMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.PCEGraphicsSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SMSSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.SMSexportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SMSjapanToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SMStoolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.SMS_NTSCToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SMS_PALToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SMStoolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.SMSenableBIOSToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SMSEnableFMChipMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SMSOverclockMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.SMSForceStereoMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -2062,6 +2069,13 @@ // SMSSubMenu // this.SMSSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.SMSexportToolStripMenuItem, + this.SMSjapanToolStripMenuItem, + this.SMStoolStripMenuItem1, + this.SMS_NTSCToolStripMenuItem, + this.SMS_PALToolStripMenuItem, + this.SMStoolStripMenuItem2, + this.SMSenableBIOSToolStripMenuItem, this.SMSEnableFMChipMenuItem, this.SMSOverclockMenuItem, this.SMSForceStereoMenuItem, @@ -2078,6 +2092,51 @@ this.SMSSubMenu.Text = "&SMS"; this.SMSSubMenu.DropDownOpened += new System.EventHandler(this.SMSSubMenu_DropDownOpened); // + // SMSexportToolStripMenuItem + // + this.SMSexportToolStripMenuItem.Name = "SMSexportToolStripMenuItem"; + this.SMSexportToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + this.SMSexportToolStripMenuItem.Text = "Export"; + this.SMSexportToolStripMenuItem.Click += new System.EventHandler(this.SMS_Export_Click); + // + // SMSjapanToolStripMenuItem + // + this.SMSjapanToolStripMenuItem.Name = "SMSjapanToolStripMenuItem"; + this.SMSjapanToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + this.SMSjapanToolStripMenuItem.Text = "Japan"; + this.SMSjapanToolStripMenuItem.Click += new System.EventHandler(this.SMS_Japan_Click); + // + // SMStoolStripMenuItem1 + // + this.SMStoolStripMenuItem1.Name = "SMStoolStripMenuItem1"; + this.SMStoolStripMenuItem1.Size = new System.Drawing.Size(238, 6); + // + // SMS_NTSCToolStripMenuItem + // + this.SMS_NTSCToolStripMenuItem.Name = "SMS_NTSCToolStripMenuItem"; + this.SMS_NTSCToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + this.SMS_NTSCToolStripMenuItem.Text = "NTSC"; + this.SMS_NTSCToolStripMenuItem.Click += new System.EventHandler(this.SMS_NTSC_Click); + // + // SMS_PALToolStripMenuItem + // + this.SMS_PALToolStripMenuItem.Name = "SMS_PALToolStripMenuItem"; + this.SMS_PALToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + this.SMS_PALToolStripMenuItem.Text = "PAL"; + this.SMS_PALToolStripMenuItem.Click += new System.EventHandler(this.SMS_PAL_Click); + // + // SMStoolStripMenuItem2 + // + this.SMStoolStripMenuItem2.Name = "SMStoolStripMenuItem2"; + this.SMStoolStripMenuItem2.Size = new System.Drawing.Size(238, 6); + // + // SMSenableBIOSToolStripMenuItem + // + this.SMSenableBIOSToolStripMenuItem.Name = "SMSenableBIOSToolStripMenuItem"; + this.SMSenableBIOSToolStripMenuItem.Size = new System.Drawing.Size(241, 22); + this.SMSenableBIOSToolStripMenuItem.Text = "Enable BIOS"; + this.SMSenableBIOSToolStripMenuItem.Click += new System.EventHandler(this.SMS_BIOS_Click); + // // SMSEnableFMChipMenuItem // this.SMSEnableFMChipMenuItem.Name = "SMSEnableFMChipMenuItem"; @@ -3378,6 +3437,13 @@ private System.Windows.Forms.ToolStripMenuItem codeDataLoggerToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem vDPViewerToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem SMSFix3DGameDisplayToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator SMStoolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem SMSexportToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem SMSjapanToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator SMStoolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem SMS_NTSCToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem SMS_PALToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem SMSenableBIOSToolStripMenuItem; } } diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index e285962489..67f0fb8c7e 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -1290,6 +1290,11 @@ namespace BizHawk.Client.EmuHawk { var s = (SMS.SMSSettings)Global.Emulator.GetSettings(); var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + SMSexportToolStripMenuItem.Checked = ss.ExportRegion; + SMSjapanToolStripMenuItem.Checked = !ss.ExportRegion; + SMS_NTSCToolStripMenuItem.Checked = !ss.UsePAL; + SMS_PALToolStripMenuItem.Checked = ss.UsePAL; + SMSenableBIOSToolStripMenuItem.Checked = ss.UseBIOS; SMSEnableFMChipMenuItem.Checked = ss.EnableFM; SMSOverclockMenuItem.Checked = ss.AllowOverlock; SMSForceStereoMenuItem.Checked = s.ForceStereoSeparation; @@ -1298,10 +1303,16 @@ namespace BizHawk.Client.EmuHawk ShowClippedRegionsMenuItem.Checked = s.ShowClippedRegions; HighlightActiveDisplayRegionMenuItem.Checked = s.HighlightActiveDisplayRegion; + SMSFix3DGameDisplayToolStripMenuItem.Visible = + SMSenableBIOSToolStripMenuItem.Visible = + Global.Game.System == "SMS"; + SMSEnableFMChipMenuItem.Visible = SMSOverclockMenuItem.Visible = SMSForceStereoMenuItem.Visible = - SMSFix3DGameDisplayToolStripMenuItem.Visible = + SMS_NTSCToolStripMenuItem.Visible = + SMS_PALToolStripMenuItem.Visible = + SMStoolStripMenuItem2.Visible = Global.Game.System != "GG"; ShowClippedRegionsMenuItem.Visible = @@ -1310,6 +1321,41 @@ namespace BizHawk.Client.EmuHawk Global.Game.System == "GG"; } + private void SMS_Export_Click(object sender, EventArgs e) + { + var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + ss.ExportRegion = true; + PutCoreSyncSettings(ss); + } + + private void SMS_Japan_Click(object sender, EventArgs e) + { + var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + ss.ExportRegion = false; + PutCoreSyncSettings(ss); + } + + private void SMS_NTSC_Click(object sender, EventArgs e) + { + var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + ss.UsePAL = false; + PutCoreSyncSettings(ss); + } + + private void SMS_PAL_Click(object sender, EventArgs e) + { + var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + ss.UsePAL = true; + PutCoreSyncSettings(ss); + } + + private void SMS_BIOS_Click(object sender, EventArgs e) + { + var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); + ss.UseBIOS ^= true; + PutCoreSyncSettings(ss); + } + private void SMSEnableFMChipMenuItem_Click(object sender, EventArgs e) { var ss = (SMS.SMSSyncSettings)Global.Emulator.GetSyncSettings(); diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs index 0edecc6ef0..7d7521c6e6 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs @@ -14,10 +14,7 @@ using BizHawk.Emulation.Cores.Components.Z80; + HCounter + Try to clean up the organization of the source code. + Lightgun/Paddle/etc if I get really bored - - + SG-1000 TMS does not fire sprite collision bit - + SG-1000 TMS sprite doubling most likely does not work! - + Maybe try to unify the Coleco TMS with SG-1000? Or at least pull in other TMS fixes. + + Mode 1 not implemented in VDP TMS modes. (I dont have a test case in SG1000 or Coleco) **********************************************************/ @@ -542,6 +539,7 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem public class SMSSettings { + // Game settings public bool ForceStereoSeparation = false; public bool SpriteLimit = false; public bool Fix3D = true; @@ -566,6 +564,9 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem { public bool EnableFM = true; public bool AllowOverlock = false; + public bool UseBIOS = false; + public bool ExportRegion = true; + public bool UsePAL = false; public SMSSyncSettings Clone() { @@ -573,7 +574,12 @@ namespace BizHawk.Emulation.Cores.Sega.MasterSystem } public static bool RebootNeeded(SMSSyncSettings x, SMSSyncSettings y) { - return x.EnableFM != y.EnableFM || x.AllowOverlock != y.AllowOverlock; + return + x.EnableFM != y.EnableFM || + x.AllowOverlock != y.AllowOverlock || + x.UseBIOS != y.UseBIOS || + x.ExportRegion != y.ExportRegion || + x.UsePAL != y.UsePAL; } } }