multiclient: add saveram backup feature, similar to savestate backup feature, and config\menu items. defaults to ON.

at the moment, there's no way in the ui to choose to load a backup saveram.  not sure if this is desirable....
This commit is contained in:
goyuken 2012-09-29 15:32:44 +00:00
parent 0a0f4e86d8
commit 7e34e7f88b
4 changed files with 57 additions and 20 deletions

View File

@ -178,6 +178,7 @@ namespace BizHawk.MultiClient
public bool InputConfigAutoTab = true; public bool InputConfigAutoTab = true;
public bool ShowLogWindow = false; public bool ShowLogWindow = false;
public bool BackupSavestates = true; public bool BackupSavestates = true;
public bool BackupSaveram = true;
public bool AutoSavestates = false; public bool AutoSavestates = false;
public bool SaveScreenshotWithStates = true; public bool SaveScreenshotWithStates = true;
public int AutofireOn = 1; public int AutofireOn = 1;

View File

@ -288,6 +288,7 @@
this.cmiScreenshotClipboard = new System.Windows.Forms.ToolStripMenuItem(); this.cmiScreenshotClipboard = new System.Windows.Forms.ToolStripMenuItem();
this.cmiCloseRom = new System.Windows.Forms.ToolStripMenuItem(); this.cmiCloseRom = new System.Windows.Forms.ToolStripMenuItem();
this.cmiShowMenu = new System.Windows.Forms.ToolStripMenuItem(); this.cmiShowMenu = new System.Windows.Forms.ToolStripMenuItem();
this.backupSaveramToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
this.StatusSlot0.SuspendLayout(); this.StatusSlot0.SuspendLayout();
this.contextMenuStrip1.SuspendLayout(); this.contextMenuStrip1.SuspendLayout();
@ -313,7 +314,7 @@
this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow;
this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(470, 38); this.menuStrip1.Size = new System.Drawing.Size(470, 40);
this.menuStrip1.TabIndex = 0; this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.Text = "menuStrip1";
this.menuStrip1.MenuActivate += new System.EventHandler(this.menuStrip1_MenuActivate); this.menuStrip1.MenuActivate += new System.EventHandler(this.menuStrip1_MenuActivate);
@ -995,7 +996,7 @@
// //
this.pauseToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Pause; this.pauseToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Pause;
this.pauseToolStripMenuItem.Name = "pauseToolStripMenuItem"; this.pauseToolStripMenuItem.Name = "pauseToolStripMenuItem";
this.pauseToolStripMenuItem.Size = new System.Drawing.Size(135, 22); this.pauseToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.pauseToolStripMenuItem.Text = "&Pause"; this.pauseToolStripMenuItem.Text = "&Pause";
this.pauseToolStripMenuItem.Click += new System.EventHandler(this.pauseToolStripMenuItem_Click); this.pauseToolStripMenuItem.Click += new System.EventHandler(this.pauseToolStripMenuItem_Click);
// //
@ -1003,26 +1004,26 @@
// //
this.rebootCoreToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.reboot; this.rebootCoreToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.reboot;
this.rebootCoreToolStripMenuItem.Name = "rebootCoreToolStripMenuItem"; this.rebootCoreToolStripMenuItem.Name = "rebootCoreToolStripMenuItem";
this.rebootCoreToolStripMenuItem.Size = new System.Drawing.Size(135, 22); this.rebootCoreToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.rebootCoreToolStripMenuItem.Text = "&Reboot Core"; this.rebootCoreToolStripMenuItem.Text = "&Reboot Core";
this.rebootCoreToolStripMenuItem.Click += new System.EventHandler(this.powerToolStripMenuItem_Click); this.rebootCoreToolStripMenuItem.Click += new System.EventHandler(this.powerToolStripMenuItem_Click);
// //
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(132, 6); this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
// //
// resetToolStripMenuItem // resetToolStripMenuItem
// //
this.resetToolStripMenuItem.Name = "resetToolStripMenuItem"; this.resetToolStripMenuItem.Name = "resetToolStripMenuItem";
this.resetToolStripMenuItem.Size = new System.Drawing.Size(135, 22); this.resetToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.resetToolStripMenuItem.Text = "&Soft Reset"; this.resetToolStripMenuItem.Text = "&Soft Reset";
this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click); this.resetToolStripMenuItem.Click += new System.EventHandler(this.resetToolStripMenuItem_Click);
// //
// hardResetToolStripMenuItem // hardResetToolStripMenuItem
// //
this.hardResetToolStripMenuItem.Name = "hardResetToolStripMenuItem"; this.hardResetToolStripMenuItem.Name = "hardResetToolStripMenuItem";
this.hardResetToolStripMenuItem.Size = new System.Drawing.Size(135, 22); this.hardResetToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.hardResetToolStripMenuItem.Text = "&Hard Reset"; this.hardResetToolStripMenuItem.Text = "&Hard Reset";
this.hardResetToolStripMenuItem.Click += new System.EventHandler(this.hardResetToolStripMenuItem_Click); this.hardResetToolStripMenuItem.Click += new System.EventHandler(this.hardResetToolStripMenuItem_Click);
// //
@ -1239,7 +1240,7 @@
// //
this.controllersToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.GameController; this.controllersToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.GameController;
this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem"; this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem";
this.controllersToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.controllersToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.controllersToolStripMenuItem.Text = "&Controllers..."; this.controllersToolStripMenuItem.Text = "&Controllers...";
this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click); this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click);
// //
@ -1247,7 +1248,7 @@
// //
this.hotkeysToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.HotKeys; this.hotkeysToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.HotKeys;
this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem"; this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem";
this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.hotkeysToolStripMenuItem.Text = "&Hotkeys..."; this.hotkeysToolStripMenuItem.Text = "&Hotkeys...";
this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click); this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click);
// //
@ -1255,7 +1256,7 @@
// //
this.messagesToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.MessageConfig; this.messagesToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.MessageConfig;
this.messagesToolStripMenuItem.Name = "messagesToolStripMenuItem"; this.messagesToolStripMenuItem.Name = "messagesToolStripMenuItem";
this.messagesToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.messagesToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.messagesToolStripMenuItem.Text = "&Messages..."; this.messagesToolStripMenuItem.Text = "&Messages...";
this.messagesToolStripMenuItem.Click += new System.EventHandler(this.messagesToolStripMenuItem_Click); this.messagesToolStripMenuItem.Click += new System.EventHandler(this.messagesToolStripMenuItem_Click);
// //
@ -1263,7 +1264,7 @@
// //
this.pathsToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.CopyFolderHS; this.pathsToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.CopyFolderHS;
this.pathsToolStripMenuItem.Name = "pathsToolStripMenuItem"; this.pathsToolStripMenuItem.Name = "pathsToolStripMenuItem";
this.pathsToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.pathsToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.pathsToolStripMenuItem.Text = "Paths..."; this.pathsToolStripMenuItem.Text = "Paths...";
this.pathsToolStripMenuItem.Click += new System.EventHandler(this.pathsToolStripMenuItem_Click); this.pathsToolStripMenuItem.Click += new System.EventHandler(this.pathsToolStripMenuItem_Click);
// //
@ -1271,7 +1272,7 @@
// //
this.soundToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.AudioHS; this.soundToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.AudioHS;
this.soundToolStripMenuItem.Name = "soundToolStripMenuItem"; this.soundToolStripMenuItem.Name = "soundToolStripMenuItem";
this.soundToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.soundToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.soundToolStripMenuItem.Text = "&Sound..."; this.soundToolStripMenuItem.Text = "&Sound...";
this.soundToolStripMenuItem.Click += new System.EventHandler(this.soundToolStripMenuItem_Click); this.soundToolStripMenuItem.Click += new System.EventHandler(this.soundToolStripMenuItem_Click);
// //
@ -1279,14 +1280,14 @@
// //
this.autofireToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Lightning; this.autofireToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Lightning;
this.autofireToolStripMenuItem.Name = "autofireToolStripMenuItem"; this.autofireToolStripMenuItem.Name = "autofireToolStripMenuItem";
this.autofireToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.autofireToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.autofireToolStripMenuItem.Text = "&Autofire..."; this.autofireToolStripMenuItem.Text = "&Autofire...";
this.autofireToolStripMenuItem.Click += new System.EventHandler(this.autofireToolStripMenuItem_Click); this.autofireToolStripMenuItem.Click += new System.EventHandler(this.autofireToolStripMenuItem_Click);
// //
// toolStripSeparator9 // toolStripSeparator9
// //
this.toolStripSeparator9.Name = "toolStripSeparator9"; this.toolStripSeparator9.Name = "toolStripSeparator9";
this.toolStripSeparator9.Size = new System.Drawing.Size(135, 6); this.toolStripSeparator9.Size = new System.Drawing.Size(149, 6);
// //
// enableToolStripMenuItem // enableToolStripMenuItem
// //
@ -1296,9 +1297,10 @@
this.backupSavestatesToolStripMenuItem, this.backupSavestatesToolStripMenuItem,
this.autoSavestatesToolStripMenuItem, this.autoSavestatesToolStripMenuItem,
this.saveScreenshotWithSavestatesToolStripMenuItem, this.saveScreenshotWithSavestatesToolStripMenuItem,
this.frameAdvanceSkipLagFramesToolStripMenuItem}); this.frameAdvanceSkipLagFramesToolStripMenuItem,
this.backupSaveramToolStripMenuItem});
this.enableToolStripMenuItem.Name = "enableToolStripMenuItem"; this.enableToolStripMenuItem.Name = "enableToolStripMenuItem";
this.enableToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.enableToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.enableToolStripMenuItem.Text = "&Enable"; this.enableToolStripMenuItem.Text = "&Enable";
this.enableToolStripMenuItem.DropDownOpened += new System.EventHandler(this.enableToolStripMenuItem_DropDownOpened); this.enableToolStripMenuItem.DropDownOpened += new System.EventHandler(this.enableToolStripMenuItem_DropDownOpened);
// //
@ -1361,7 +1363,7 @@
this.toolStripSeparator23, this.toolStripSeparator23,
this.logWindowAsConsoleToolStripMenuItem}); this.logWindowAsConsoleToolStripMenuItem});
this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem"; this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem";
this.gUIToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.gUIToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.gUIToolStripMenuItem.Text = "GUI"; this.gUIToolStripMenuItem.Text = "GUI";
this.gUIToolStripMenuItem.DropDownOpened += new System.EventHandler(this.gUIToolStripMenuItem_DropDownOpened); this.gUIToolStripMenuItem.DropDownOpened += new System.EventHandler(this.gUIToolStripMenuItem_DropDownOpened);
// //
@ -1476,7 +1478,7 @@
this.miSpeed150, this.miSpeed150,
this.miSpeed200}); this.miSpeed200});
this.frameSkipToolStripMenuItem.Name = "frameSkipToolStripMenuItem"; this.frameSkipToolStripMenuItem.Name = "frameSkipToolStripMenuItem";
this.frameSkipToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.frameSkipToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.frameSkipToolStripMenuItem.Text = "Speed/Skip"; this.frameSkipToolStripMenuItem.Text = "Speed/Skip";
this.frameSkipToolStripMenuItem.DropDownOpened += new System.EventHandler(this.frameSkipToolStripMenuItem_DropDownOpened); this.frameSkipToolStripMenuItem.DropDownOpened += new System.EventHandler(this.frameSkipToolStripMenuItem_DropDownOpened);
// //
@ -1619,13 +1621,13 @@
// toolStripSeparator10 // toolStripSeparator10
// //
this.toolStripSeparator10.Name = "toolStripSeparator10"; this.toolStripSeparator10.Name = "toolStripSeparator10";
this.toolStripSeparator10.Size = new System.Drawing.Size(135, 6); this.toolStripSeparator10.Size = new System.Drawing.Size(149, 6);
// //
// saveConfigToolStripMenuItem // saveConfigToolStripMenuItem
// //
this.saveConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Save; this.saveConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Save;
this.saveConfigToolStripMenuItem.Name = "saveConfigToolStripMenuItem"; this.saveConfigToolStripMenuItem.Name = "saveConfigToolStripMenuItem";
this.saveConfigToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.saveConfigToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.saveConfigToolStripMenuItem.Text = "Save Config"; this.saveConfigToolStripMenuItem.Text = "Save Config";
this.saveConfigToolStripMenuItem.Click += new System.EventHandler(this.saveConfigToolStripMenuItem_Click); this.saveConfigToolStripMenuItem.Click += new System.EventHandler(this.saveConfigToolStripMenuItem_Click);
// //
@ -1633,7 +1635,7 @@
// //
this.loadConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.LoadConfig; this.loadConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.LoadConfig;
this.loadConfigToolStripMenuItem.Name = "loadConfigToolStripMenuItem"; this.loadConfigToolStripMenuItem.Name = "loadConfigToolStripMenuItem";
this.loadConfigToolStripMenuItem.Size = new System.Drawing.Size(138, 22); this.loadConfigToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.loadConfigToolStripMenuItem.Text = "Load Config"; this.loadConfigToolStripMenuItem.Text = "Load Config";
// //
// toolsToolStripMenuItem // toolsToolStripMenuItem
@ -2479,6 +2481,13 @@
this.cmiShowMenu.Text = "Show Menu"; this.cmiShowMenu.Text = "Show Menu";
this.cmiShowMenu.Click += new System.EventHandler(this.showMenuToolStripMenuItem_Click); this.cmiShowMenu.Click += new System.EventHandler(this.showMenuToolStripMenuItem_Click);
// //
// backupSaveramToolStripMenuItem
//
this.backupSaveramToolStripMenuItem.Name = "backupSaveramToolStripMenuItem";
this.backupSaveramToolStripMenuItem.Size = new System.Drawing.Size(236, 22);
this.backupSaveramToolStripMenuItem.Text = "Backup Saveram";
this.backupSaveramToolStripMenuItem.Click += new System.EventHandler(this.backupSaveramToolStripMenuItem_Click);
//
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F);
@ -2778,6 +2787,7 @@
private System.Windows.Forms.ToolStripMenuItem captureOSDToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem captureOSDToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem loadGBInSGBToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem loadGBInSGBToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem loadGBInSGBToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem loadGBInSGBToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem backupSaveramToolStripMenuItem;
} }
} }

View File

@ -1298,6 +1298,7 @@ namespace BizHawk.MultiClient
autoSavestatesToolStripMenuItem.Checked = Global.Config.AutoSavestates; autoSavestatesToolStripMenuItem.Checked = Global.Config.AutoSavestates;
saveScreenshotWithSavestatesToolStripMenuItem.Checked = Global.Config.SaveScreenshotWithStates; saveScreenshotWithSavestatesToolStripMenuItem.Checked = Global.Config.SaveScreenshotWithStates;
frameAdvanceSkipLagFramesToolStripMenuItem.Checked = Global.Config.SkipLagFrame; frameAdvanceSkipLagFramesToolStripMenuItem.Checked = Global.Config.SkipLagFrame;
backupSaveramToolStripMenuItem.Checked = Global.Config.BackupSaveram;
} }
private void frameAdvanceSkipLagFramesToolStripMenuItem_Click(object sender, EventArgs e) private void frameAdvanceSkipLagFramesToolStripMenuItem_Click(object sender, EventArgs e)

View File

@ -1677,6 +1677,17 @@ namespace BizHawk.MultiClient
if (f.Directory.Exists == false) if (f.Directory.Exists == false)
f.Directory.Create(); f.Directory.Create();
//Make backup first
if (Global.Config.BackupSaveram && f.Exists == true)
{
string backup = path + ".bak";
var backupFile = new FileInfo(backup);
if (backupFile.Exists == true)
backupFile.Delete();
f.CopyTo(backup);
}
var writer = new BinaryWriter(new FileStream(path, FileMode.Create, FileAccess.Write)); var writer = new BinaryWriter(new FileStream(path, FileMode.Create, FileAccess.Write));
var saveram = Global.Emulator.ReadSaveRam(); var saveram = Global.Emulator.ReadSaveRam();
@ -3679,5 +3690,19 @@ namespace BizHawk.MultiClient
{ {
Global.RenderPanel.Resized = true; Global.RenderPanel.Resized = true;
} }
private void backupSaveramToolStripMenuItem_Click(object sender, EventArgs e)
{
Global.Config.BackupSaveram ^= true;
if (Global.Config.BackupSaveram)
{
Global.OSD.AddMessage("Backup saveram enabled");
}
else
{
Global.OSD.AddMessage("Backup saveram disabled");
}
}
} }
} }