BizHawk/BizHawk.Emulation.DiscSystem/DiscUtils.cs

43 lines
986 B
C#

using System;
namespace BizHawk.Emulation.DiscSystem
{
public static class DiscUtils
{
static byte IntToBCD(int n)
{
int ones;
int tens = Math.DivRem(n, 10, out ones);
return (byte)((tens << 4) | ones);
}
/// <summary>
/// converts the given int to a BCD value
/// </summary>
public static int BCD_Byte(this int val)
{
byte ret = (byte)(val % 10);
ret += (byte)(16 * (val / 10));
return ret;
}
/// <summary>
/// converts an LBA to AMSF absolute minute:second:frame format.
/// </summary>
public static void Convert_LBA_To_AMSF(int lba, out byte m, out byte s, out byte f)
{
lba += 150; //dont do this anymore
m = (byte)(lba / 75 / 60);
s = (byte)((lba - (m * 75 * 60)) / 75);
f = (byte)(lba - (m * 75 * 60) - (s * 75));
}
// converts MSF to LBA offset
public static int Convert_AMSF_To_LBA(byte m, byte s, byte f)
{
return f + (s * 75) + (m * 75 * 60) - 150;
}
}
}