Надеюсь, я раскодировал правильно - в предположении "данные инвертированы, адрес инвертирован, пословное чтение".
Код раскодирования на C#:
Код:
static void Main(string[] args)
{
byte[] ds1 = File.ReadAllBytes("DS1.rr1");
byte[] ds2 = File.ReadAllBytes("DS2.rr1");
byte[] ds3 = File.ReadAllBytes("DS3.rr1");
byte[] ds4 = File.ReadAllBytes("DS4.rr1");
FileStream fs = new FileStream("oufile.bin", FileMode.Create);
for (int addr = 0; addr < 8192; addr += 2)
{
int value1 = ds4[(~addr) & 0x1ffe + 0];
int value2 = ds4[(~addr) & 0x1ffe + 1];
fs.WriteByte((byte)(~value1));
fs.WriteByte((byte)(~value2));
}
for (int addr = 0; addr < 8192; addr += 2)
{
int value1 = ds3[(~addr) & 0x1ffe + 0];
int value2 = ds3[(~addr) & 0x1ffe + 1];
fs.WriteByte((byte)(~value1));
fs.WriteByte((byte)(~value2));
}
for (int addr = 0; addr < 8192; addr += 2)
{
int value1 = ds2[(~addr) & 0x1ffe + 0];
int value2 = ds2[(~addr) & 0x1ffe + 1];
fs.WriteByte((byte)(~value1));
fs.WriteByte((byte)(~value2));
}
for (int addr = 0; addr < 8192; addr += 2)
{
int value1 = ds1[(~addr) & 0x1ffe + 0];
int value2 = ds1[(~addr) & 0x1ffe + 1];
fs.WriteByte((byte)(~value1));
fs.WriteByte((byte)(~value2));
}
fs.Flush();
}