Skip to content

Commit aa41cb9

Browse files
committed
Clean up some of the psxt001z code (fixes #6)
1 parent 11f1fec commit aa41cb9

File tree

3 files changed

+36
-29
lines changed

3 files changed

+36
-29
lines changed

BurnOutSharp/BurnOutSharp.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>BurnOutSharp</id>
5-
<version>1.03.9.0</version>
5+
<version>1.03.9.1</version>
66
<title>BurnOutSharp</title>
77
<authors>Matt Nadareski, Gernot Knippen</authors>
88
<owners>Matt Nadareski, Gernot Knippen</owners>

BurnOutSharp/External/psxt001z/LibCrypt.cs

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,47 +12,54 @@ public class LibCrypt
1212
{
1313
public static bool CheckSubfile(string subFilePath)
1414
{
15-
// opening .sub
16-
FileStream subfile;
17-
try
18-
{
19-
subfile = File.OpenRead(subFilePath);
20-
}
21-
catch
15+
// Check the file exists first
16+
if (!File.Exists(subFilePath))
2217
{
23-
Console.WriteLine($"Error opening {subFilePath}");
18+
Console.WriteLine($"{subFilePath} could not be found");
2419
return false;
2520
}
2621

27-
// checking extension
22+
// Check the extension is a subfile
2823
string ext = Path.GetExtension(subFilePath).TrimStart('.').ToLowerInvariant();
2924
if (ext != "sub")
3025
{
3126
Console.WriteLine($"{ext}: unknown file extension");
3227
return false;
3328
}
34-
35-
// filesize
36-
long size = subfile.Length;
37-
if (size % 96 != 0)
29+
30+
// Open and check the subfile for LibCrypt
31+
try
3832
{
39-
Console.WriteLine($"{subFilePath}: wrong size");
33+
using (FileStream subfile = File.OpenRead(subFilePath))
34+
{
35+
return CheckSubfile(subfile);
36+
}
37+
}
38+
catch
39+
{
40+
Console.WriteLine($"Error processing {subFilePath}");
4041
return false;
4142
}
42-
43-
return CheckSubfile(subfile);
4443
}
4544

4645
public static bool CheckSubfile(Stream subfile)
4746
{
48-
// Variables
47+
// Check the length is valid for subfiles
48+
long size = subfile.Length;
49+
if (size % 96 != 0)
50+
{
51+
Console.WriteLine($"Wrong size");
52+
return false;
53+
}
54+
55+
// Persistent values
4956
byte[] buffer = new byte[16];
5057
byte[] sub = new byte[16];
5158
int tpos = 0;
52-
uint sector, psectors = 0;
53-
long size = subfile.Length;
59+
int modifiedSectors = 0;
5460

55-
for (sector = 150; sector < ((size / 96) + 150); sector++)
61+
// Check each sector for modifications
62+
for (uint sector = 150; sector < ((size / 96) + 150); sector++)
5663
{
5764
subfile.Seek(12, SeekOrigin.Current);
5865
if (subfile.Read(buffer, 0, 12) == 0)
@@ -99,12 +106,12 @@ public static bool CheckSubfile(Stream subfile)
99106
sub[11] = crcBytes[1];
100107

101108
// TODO: This *was* a memcmp, but that's harder to do. Fix this for C# later
102-
if (buffer[10] != sub[10] && buffer[11] != sub[11] && (buffer[3] != sub[3] || buffer[7] != sub[7] || buffer[4] != sub[4] || buffer[8] != sub[8] || buffer[5] != sub[5] || buffer[9] != sub[9]))
109+
if (buffer[10] != sub[10] && buffer[11] != sub[11] && (buffer[3] != sub[3] || buffer[4] != sub[4] || buffer[5] != sub[5] || buffer[7] != sub[7] || buffer[8] != sub[8] || buffer[9] != sub[9]))
103110
{
104-
if (buffer[10] != sub[10] || buffer[11] != sub[11] || buffer[3] != sub[3] || buffer[7] != sub[7] || buffer[4] != sub[4] || buffer[8] != sub[8] || buffer[5] != sub[5] || buffer[9] != sub[9])
111+
if (buffer[3] != sub[3] || buffer[4] != sub[4] || buffer[5] != sub[5] || buffer[7] != sub[7] || buffer[8] != sub[8] || buffer[9] != sub[9] || buffer[10] != sub[10] || buffer[11] != sub[11])
105112
{
106113
Console.Write($"MSF: {sub[7]:x}:{sub[8]:x}:{sub[9]:x} Q-Data: {buffer[0]:x}{buffer[1]:x}{buffer[2]:x} {buffer[3]:x}:{buffer[4]:x}:{buffer[5]:x} {buffer[6]:x} {buffer[7]:x}:{buffer[8]:x}:{buffer[9]:x} {buffer[10]:x}{buffer[11]:x} xor {crc ^ ((buffer[10] << 8) + buffer[11]):x} % {CRC16.Calculate(buffer, 0, 10) ^ ((buffer[10] << 8) + buffer[11]):x}");
107-
//Console.Write("\nMSF: %02x:%02x:%02x Q-Data: %02x%02x%02x %02x:%02x:%02x %02x %02x:%02x:%02x %02x%02x", sub[7], sub[8], sub[9], sub[0], sub[1], sub[2], sub[3], sub[4], sub[5], sub[6], sub[7], sub[8], sub[9], sub[10], sub[11]);
114+
//Console.Write($"\nMSF: {sub[7]:x}:{sub[8]:x}:{sub[9]:x} Q-Data: {sub[0]:x}{sub[1]:x}{sub[2]:x} {sub[3]:x}:{sub[4]:x}:{sub[5]:x} {sub[6]:x} {sub[7]:x}:{sub[8]:x}:{sub[9]:x} {sub[10]:x}{sub[11]:x}");
108115
if (buffer[3] != sub[3] && buffer[7] != sub[7] && buffer[4] == sub[4] && buffer[8] == sub[8] && buffer[5] == sub[5] && buffer[9] == sub[9])
109116
Console.Write($" P1 xor {buffer[3] ^ sub[3]:x} {buffer[7] ^ sub[7]:x}");
110117
else if (buffer[3] == sub[3] && buffer[7] == sub[7] && buffer[4] != sub[4] && buffer[8] != sub[8] && buffer[5] == sub[5] && buffer[9] == sub[9])
@@ -115,12 +122,12 @@ public static bool CheckSubfile(Stream subfile)
115122
Console.Write(" ?");
116123

117124
Console.Write("\n");
118-
psectors++;
125+
modifiedSectors++;
119126
}
120127
}
121128
}
122129

123-
Console.WriteLine($"Number of modified sectors: {psectors}");
130+
Console.WriteLine($"Number of modified sectors: {modifiedSectors}");
124131
return true;
125132
}
126133

BurnOutSharp/Properties/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
[assembly: AssemblyConfiguration("")]
1111
[assembly: AssemblyCompany("Matt Nadareski, Gernot Knippen")]
1212
[assembly: AssemblyProduct("BurnOutSharp")]
13-
[assembly: AssemblyCopyright("Copyright (c)2005-2010 Gernot Knippen, Copyright (c)2018 Matt Nadareski")]
13+
[assembly: AssemblyCopyright("Copyright (c)2005-2010 Gernot Knippen, Copyright (c)2018-2020 Matt Nadareski")]
1414
[assembly: AssemblyTrademark("")]
1515
[assembly: AssemblyCulture("")]
1616

@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.03.9.0")]
36-
[assembly: AssemblyFileVersion("1.03.9.0")]
35+
[assembly: AssemblyVersion("1.03.9.1")]
36+
[assembly: AssemblyFileVersion("1.03.9.1")]

0 commit comments

Comments
 (0)