43 lines
986 B
C#
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;
|
|
}
|
|
|
|
}
|
|
|
|
} |