add PSX disc hashing tool

This commit is contained in:
zeromus 2015-07-12 20:08:30 -05:00
parent ae22972e25
commit 7bec7b806b
9 changed files with 346 additions and 47 deletions

View File

@ -419,6 +419,12 @@
<Compile Include="config\PSX\PSXControllerConfig.Designer.cs">
<DependentUpon>PSXControllerConfig.cs</DependentUpon>
</Compile>
<Compile Include="config\PSX\PSXHashDiscs.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="config\PSX\PSXHashDiscs.Designer.cs">
<DependentUpon>PSXHashDiscs.cs</DependentUpon>
</Compile>
<Compile Include="config\PSX\PSXOptions.cs">
<SubType>Form</SubType>
</Compile>
@ -1240,6 +1246,9 @@
<EmbeddedResource Include="config\PSX\PSXControllerConfig.resx">
<DependentUpon>PSXControllerConfig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="config\PSX\PSXHashDiscs.resx">
<DependentUpon>PSXHashDiscs.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="config\PSX\PSXOptions.resx">
<DependentUpon>PSXOptions.cs</DependentUpon>
</EmbeddedResource>

View File

@ -318,6 +318,7 @@
this.AppleSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.AppleDisksSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator31 = new System.Windows.Forms.ToolStripSeparator();
this.settingsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.HelpSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.OnlineHelpMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ForumsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -395,7 +396,7 @@
this.ClearSRAMContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ShowMenuContextMenuSeparator = new System.Windows.Forms.ToolStripSeparator();
this.ShowMenuContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.settingsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.PSXHashDiscsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MainformMenu.SuspendLayout();
this.MainStatusBar.SuspendLayout();
this.MainFormContextMenu.SuspendLayout();
@ -2494,7 +2495,8 @@
this.PSXSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.PSXControllerSettingsMenuItem,
this.PSXOptionsMenuItem,
this.PSXDiscControlsMenuItem});
this.PSXDiscControlsMenuItem,
this.PSXHashDiscsToolStripMenuItem});
this.PSXSubMenu.Name = "PSXSubMenu";
this.PSXSubMenu.Size = new System.Drawing.Size(37, 17);
this.PSXSubMenu.Text = "PSX";
@ -2811,7 +2813,7 @@
this.AppleDisksSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripSeparator31});
this.AppleDisksSubMenu.Name = "AppleDisksSubMenu";
this.AppleDisksSubMenu.Size = new System.Drawing.Size(152, 22);
this.AppleDisksSubMenu.Size = new System.Drawing.Size(125, 22);
this.AppleDisksSubMenu.Text = "Disks";
this.AppleDisksSubMenu.DropDownOpened += new System.EventHandler(this.AppleDisksSubMenu_DropDownOpened);
//
@ -2820,6 +2822,13 @@
this.toolStripSeparator31.Name = "toolStripSeparator31";
this.toolStripSeparator31.Size = new System.Drawing.Size(57, 6);
//
// settingsToolStripMenuItem1
//
this.settingsToolStripMenuItem1.Name = "settingsToolStripMenuItem1";
this.settingsToolStripMenuItem1.Size = new System.Drawing.Size(125, 22);
this.settingsToolStripMenuItem1.Text = "&Settings...";
this.settingsToolStripMenuItem1.Click += new System.EventHandler(this.settingsToolStripMenuItem1_Click_1);
//
// HelpSubMenu
//
this.HelpSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -3135,7 +3144,7 @@
this.ShowMenuContextMenuSeparator,
this.ShowMenuContextMenuItem});
this.MainFormContextMenu.Name = "contextMenuStrip1";
this.MainFormContextMenu.Size = new System.Drawing.Size(217, 468);
this.MainFormContextMenu.Size = new System.Drawing.Size(202, 468);
this.MainFormContextMenu.Closing += new System.Windows.Forms.ToolStripDropDownClosingEventHandler(this.MainFormContextMenu_Closing);
this.MainFormContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.MainFormContextMenu_Opening);
//
@ -3143,7 +3152,7 @@
//
this.OpenRomContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.OpenFile;
this.OpenRomContextMenuItem.Name = "OpenRomContextMenuItem";
this.OpenRomContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.OpenRomContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.OpenRomContextMenuItem.Text = "Open Rom";
this.OpenRomContextMenuItem.Click += new System.EventHandler(this.OpenRomMenuItem_Click);
//
@ -3151,7 +3160,7 @@
//
this.LoadLastRomContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Recent;
this.LoadLastRomContextMenuItem.Name = "LoadLastRomContextMenuItem";
this.LoadLastRomContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.LoadLastRomContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.LoadLastRomContextMenuItem.Text = "Load Last ROM";
this.LoadLastRomContextMenuItem.Click += new System.EventHandler(this.LoadLastRomContextMenuItem_Click);
//
@ -3159,20 +3168,20 @@
//
this.StopAVContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop;
this.StopAVContextMenuItem.Name = "StopAVContextMenuItem";
this.StopAVContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.StopAVContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.StopAVContextMenuItem.Text = "Stop AVI/WAV";
this.StopAVContextMenuItem.Click += new System.EventHandler(this.StopAVMenuItem_Click);
//
// ContextSeparator_AfterROM
//
this.ContextSeparator_AfterROM.Name = "ContextSeparator_AfterROM";
this.ContextSeparator_AfterROM.Size = new System.Drawing.Size(213, 6);
this.ContextSeparator_AfterROM.Size = new System.Drawing.Size(198, 6);
//
// RecordMovieContextMenuItem
//
this.RecordMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.RecordHS;
this.RecordMovieContextMenuItem.Name = "RecordMovieContextMenuItem";
this.RecordMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.RecordMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.RecordMovieContextMenuItem.Text = "Record Movie";
this.RecordMovieContextMenuItem.Click += new System.EventHandler(this.RecordMovieMenuItem_Click);
//
@ -3180,7 +3189,7 @@
//
this.PlayMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Play;
this.PlayMovieContextMenuItem.Name = "PlayMovieContextMenuItem";
this.PlayMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.PlayMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.PlayMovieContextMenuItem.Text = "Play Movie";
this.PlayMovieContextMenuItem.Click += new System.EventHandler(this.PlayMovieMenuItem_Click);
//
@ -3188,7 +3197,7 @@
//
this.RestartMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.restart;
this.RestartMovieContextMenuItem.Name = "RestartMovieContextMenuItem";
this.RestartMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.RestartMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.RestartMovieContextMenuItem.Text = "Restart Movie";
this.RestartMovieContextMenuItem.Click += new System.EventHandler(this.PlayFromBeginningMenuItem_Click);
//
@ -3196,7 +3205,7 @@
//
this.StopMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop;
this.StopMovieContextMenuItem.Name = "StopMovieContextMenuItem";
this.StopMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.StopMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.StopMovieContextMenuItem.Text = "Stop Movie";
this.StopMovieContextMenuItem.Click += new System.EventHandler(this.StopMovieMenuItem_Click);
//
@ -3204,14 +3213,14 @@
//
this.LoadLastMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Recent;
this.LoadLastMovieContextMenuItem.Name = "LoadLastMovieContextMenuItem";
this.LoadLastMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.LoadLastMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.LoadLastMovieContextMenuItem.Text = "Load Last Movie";
this.LoadLastMovieContextMenuItem.Click += new System.EventHandler(this.LoadLastMovieContextMenuItem_Click);
//
// BackupMovieContextMenuItem
//
this.BackupMovieContextMenuItem.Name = "BackupMovieContextMenuItem";
this.BackupMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.BackupMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.BackupMovieContextMenuItem.Text = "Backup Movie";
this.BackupMovieContextMenuItem.Click += new System.EventHandler(this.BackupMovieContextMenuItem_Click);
//
@ -3219,28 +3228,28 @@
//
this.StopNoSaveContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Stop;
this.StopNoSaveContextMenuItem.Name = "StopNoSaveContextMenuItem";
this.StopNoSaveContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.StopNoSaveContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.StopNoSaveContextMenuItem.Text = "Stop Movie without Saving";
this.StopNoSaveContextMenuItem.Click += new System.EventHandler(this.StopMovieWithoutSavingMenuItem_Click);
//
// ViewSubtitlesContextMenuItem
//
this.ViewSubtitlesContextMenuItem.Name = "ViewSubtitlesContextMenuItem";
this.ViewSubtitlesContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ViewSubtitlesContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ViewSubtitlesContextMenuItem.Text = "View Subtitles";
this.ViewSubtitlesContextMenuItem.Click += new System.EventHandler(this.ViewSubtitlesContextMenuItem_Click);
//
// AddSubtitleContextMenuItem
//
this.AddSubtitleContextMenuItem.Name = "AddSubtitleContextMenuItem";
this.AddSubtitleContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.AddSubtitleContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.AddSubtitleContextMenuItem.Text = "Add Subtitle";
this.AddSubtitleContextMenuItem.Click += new System.EventHandler(this.AddSubtitleContextMenuItem_Click);
//
// ViewCommentsContextMenuItem
//
this.ViewCommentsContextMenuItem.Name = "ViewCommentsContextMenuItem";
this.ViewCommentsContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ViewCommentsContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ViewCommentsContextMenuItem.Text = "View Comments";
this.ViewCommentsContextMenuItem.Click += new System.EventHandler(this.ViewCommentsContextMenuItem_Click);
//
@ -3248,27 +3257,27 @@
//
this.SaveMovieContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.SaveAs;
this.SaveMovieContextMenuItem.Name = "SaveMovieContextMenuItem";
this.SaveMovieContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.SaveMovieContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.SaveMovieContextMenuItem.Text = "Save Movie";
this.SaveMovieContextMenuItem.Click += new System.EventHandler(this.SaveMovieMenuItem_Click);
//
// ContextSeparator_AfterMovie
//
this.ContextSeparator_AfterMovie.Name = "ContextSeparator_AfterMovie";
this.ContextSeparator_AfterMovie.Size = new System.Drawing.Size(213, 6);
this.ContextSeparator_AfterMovie.Size = new System.Drawing.Size(198, 6);
//
// UndoSavestateContextMenuItem
//
this.UndoSavestateContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.undo;
this.UndoSavestateContextMenuItem.Name = "UndoSavestateContextMenuItem";
this.UndoSavestateContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.UndoSavestateContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.UndoSavestateContextMenuItem.Text = "Undo Savestate";
this.UndoSavestateContextMenuItem.Click += new System.EventHandler(this.UndoSavestateContextMenuItem_Click);
//
// ContextSeparator_AfterUndo
//
this.ContextSeparator_AfterUndo.Name = "ContextSeparator_AfterUndo";
this.ContextSeparator_AfterUndo.Size = new System.Drawing.Size(213, 6);
this.ContextSeparator_AfterUndo.Size = new System.Drawing.Size(198, 6);
//
// ConfigContextMenuItem
//
@ -3291,7 +3300,7 @@
this.toolStripMenuItem66,
this.toolStripMenuItem67});
this.ConfigContextMenuItem.Name = "ConfigContextMenuItem";
this.ConfigContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ConfigContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ConfigContextMenuItem.Text = "Config";
//
// toolStripMenuItem6
@ -3459,7 +3468,7 @@
//
this.ScreenshotContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.camera;
this.ScreenshotContextMenuItem.Name = "ScreenshotContextMenuItem";
this.ScreenshotContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ScreenshotContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ScreenshotContextMenuItem.Text = "Screenshot";
this.ScreenshotContextMenuItem.Click += new System.EventHandler(this.ScreenshotMenuItem_Click);
//
@ -3467,35 +3476,35 @@
//
this.CloseRomContextMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Close;
this.CloseRomContextMenuItem.Name = "CloseRomContextMenuItem";
this.CloseRomContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.CloseRomContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.CloseRomContextMenuItem.Text = "Close ROM";
this.CloseRomContextMenuItem.Click += new System.EventHandler(this.CloseRomMenuItem_Click);
//
// ClearSRAMContextMenuItem
//
this.ClearSRAMContextMenuItem.Name = "ClearSRAMContextMenuItem";
this.ClearSRAMContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ClearSRAMContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ClearSRAMContextMenuItem.Text = "Close and Clear SRAM";
this.ClearSRAMContextMenuItem.Click += new System.EventHandler(this.ClearSRAMContextMenuItem_Click);
//
// ShowMenuContextMenuSeparator
//
this.ShowMenuContextMenuSeparator.Name = "ShowMenuContextMenuSeparator";
this.ShowMenuContextMenuSeparator.Size = new System.Drawing.Size(213, 6);
this.ShowMenuContextMenuSeparator.Size = new System.Drawing.Size(198, 6);
//
// ShowMenuContextMenuItem
//
this.ShowMenuContextMenuItem.Name = "ShowMenuContextMenuItem";
this.ShowMenuContextMenuItem.Size = new System.Drawing.Size(216, 22);
this.ShowMenuContextMenuItem.Size = new System.Drawing.Size(201, 22);
this.ShowMenuContextMenuItem.Text = "Show Menu";
this.ShowMenuContextMenuItem.Click += new System.EventHandler(this.ShowMenuContextMenuItem_Click);
//
// settingsToolStripMenuItem1
// PSXHashDiscsToolStripMenuItem
//
this.settingsToolStripMenuItem1.Name = "settingsToolStripMenuItem1";
this.settingsToolStripMenuItem1.Size = new System.Drawing.Size(152, 22);
this.settingsToolStripMenuItem1.Text = "&Settings...";
this.settingsToolStripMenuItem1.Click += new System.EventHandler(this.settingsToolStripMenuItem1_Click_1);
this.PSXHashDiscsToolStripMenuItem.Name = "PSXHashDiscsToolStripMenuItem";
this.PSXHashDiscsToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.PSXHashDiscsToolStripMenuItem.Text = "&Hash Discs";
this.PSXHashDiscsToolStripMenuItem.Click += new System.EventHandler(this.PSXHashDiscsToolStripMenuItem_Click);
//
// MainForm
//
@ -3903,6 +3912,7 @@
private System.Windows.Forms.ToolStripMenuItem gBAWithMGBAToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem AutoHawkMenuItem;
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem PSXHashDiscsToolStripMenuItem;
}
}

View File

@ -3793,5 +3793,10 @@ namespace BizHawk.Client.EmuHawk
{
GenericCoreConfig.DoDialog(this, "Apple II Settings");
}
private void PSXHashDiscsToolStripMenuItem_Click(object sender, EventArgs e)
{
new PSXHashDiscs().ShowDialog();
}
}
}

View File

@ -0,0 +1,116 @@
namespace BizHawk.Client.EmuHawk
{
partial class PSXHashDiscs
{
/// <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.btnClose = new System.Windows.Forms.Button();
this.btnHash = new System.Windows.Forms.Button();
this.txtHashes = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btnClose
//
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnClose.Location = new System.Drawing.Point(347, 239);
this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(75, 23);
this.btnClose.TabIndex = 0;
this.btnClose.Text = "Close";
this.btnClose.UseVisualStyleBackColor = true;
//
// btnHash
//
this.btnHash.Location = new System.Drawing.Point(27, 239);
this.btnHash.Name = "btnHash";
this.btnHash.Size = new System.Drawing.Size(75, 23);
this.btnHash.TabIndex = 1;
this.btnHash.Text = "Hash";
this.btnHash.UseVisualStyleBackColor = true;
this.btnHash.Click += new System.EventHandler(this.btnHash_Click);
//
// txtHashes
//
this.txtHashes.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.txtHashes.Location = new System.Drawing.Point(27, 51);
this.txtHashes.Multiline = true;
this.txtHashes.Name = "txtHashes";
this.txtHashes.ReadOnly = true;
this.txtHashes.Size = new System.Drawing.Size(395, 146);
this.txtHashes.TabIndex = 2;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(24, 211);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(200, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Sorry, this is gonna freeze while it hashes";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(96, 9);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(223, 26);
this.label2.TabIndex = 4;
this.label2.Text = "This tool hashes your discs in a standard way.\r\nCheck against redump.org \"Total\" " +
"CRC-32";
//
// PSXHashDiscs
//
this.AcceptButton = this.btnClose;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnClose;
this.ClientSize = new System.Drawing.Size(446, 276);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.txtHashes);
this.Controls.Add(this.btnHash);
this.Controls.Add(this.btnClose);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "PSXHashDiscs";
this.Text = "PSX Disc Hasher";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button btnClose;
private System.Windows.Forms.Button btnHash;
private System.Windows.Forms.TextBox txtHashes;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
}
}

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BizHawk.Client.Common;
using BizHawk.Emulation.DiscSystem;
using BizHawk.Emulation.Cores.Sony.PSX;
namespace BizHawk.Client.EmuHawk
{
public partial class PSXHashDiscs : Form
{
public PSXHashDiscs()
{
InitializeComponent();
}
private void btnHash_Click(object sender, EventArgs e)
{
txtHashes.Text = "";
btnHash.Enabled = false;
try
{
var psx = ((Octoshock)Global.Emulator);
foreach (var disc in psx.Discs)
{
DiscHasher hasher = new DiscHasher(disc);
uint hash = hasher.Calculate_PSX_RedumpHash();
txtHashes.Text += string.Format("{0:X8} {1}\r\n", hash, disc.Name);
}
}
finally
{
btnHash.Enabled = true;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?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>
</root>

View File

@ -191,29 +191,16 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
{
cbActivity(this);
//lets you check subcode generation by logging it and checking against the CCD subcode
bool subcodeLog = false;
bool readLog = false;
if (subcodeLog) Console.Write("{0}|", lba);
else if (readLog) Console.WriteLine("Read Sector: " + lba);
//todo - cache reader
DiscSystem.DiscSectorReader dsr = new DiscSystem.DiscSectorReader(Disc);
dsr.ReadLBA_2448(lba, SectorBuffer, 0);
Marshal.Copy(SectorBuffer, 0, new IntPtr(dst), 2448);
//if (subcodeLog)
//{
// for (int i = 0; i < 24; i++)
// Console.Write("{0:X2}", *((byte*)dst + 2352 + i));
// Console.WriteLine();
//}
return OctoshockDll.SHOCK_OK;
}
}
public List<DiscSystem.Disc> Discs;
List<DiscInterface> discInterfaces = new List<DiscInterface>();
DiscInterface currentDiscInterface;
@ -238,6 +225,8 @@ namespace BizHawk.Emulation.Cores.Sony.PSX
_Settings = (Settings)settings ?? new Settings();
_SyncSettings = (SyncSettings)syncSettings ?? new SyncSettings();
Discs = discs;
Attach();
HackyDiscButtons.AddRange(discNames);

View File

@ -42,6 +42,11 @@ namespace BizHawk.Emulation.DiscSystem
/// </summary>
public DiscStructure.Session Session1 { get { return Structure.Sessions[1]; } }
/// <summary>
/// The name of a disc. Loosely based on the filename. Just for informational purposes.
/// </summary>
public string Name;
/// <summary>
/// The DiscTOCRaw corresponding to the RawTOCEntries.
/// TODO - there's one of these for every session, so... having one here doesnt make sense

View File

@ -63,6 +63,8 @@ namespace BizHawk.Emulation.DiscSystem
if (OUT_Disc != null)
{
OUT_Disc.Name = Path.GetFileName(IN_FromPath);
//generate toc and structure:
//1. TOCRaw from RawTOCEntries
var tocSynth = new Synthesize_DiscTOC_From_RawTOCEntries_Job() { Entries = OUT_Disc.RawTOCEntries };