speed up some text conversion routines so that Yabause saving of text savestates is about 19x as fast as before

This commit is contained in:
goyuken 2013-06-05 18:42:54 +00:00
parent f42f002669
commit f1e2c275f4
2 changed files with 13 additions and 1 deletions

View File

@ -333,7 +333,7 @@ namespace BizHawk.Emulation.Consoles.Sega.Saturn
public void SaveStateText(TextWriter writer)
{
var temp = SaveStateBinary();
temp.SaveAsHex(writer);
temp.SaveAsHexFast(writer);
// write extra copy of stuff we don't use
writer.WriteLine("Frame {0}", Frame);
}

View File

@ -260,6 +260,18 @@ namespace BizHawk
writer.WriteLine();
}
static readonly char[] HexConv = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
public static void SaveAsHexFast(this byte[] buffer, TextWriter writer)
{
for (int i = 0; i < buffer.Length; i++)
{
writer.Write(HexConv[buffer[i] >> 4]);
writer.Write(HexConv[buffer[i] & 15]);
}
writer.WriteLine();
}
public static void SaveAsHex(this byte[] buffer, TextWriter writer, int length)
{
for (int i = 0; i < length; i++)