- if (fileInfo.suffix().compare("zip", Qt::CaseInsensitive) == 0)
- {
- uint8 * buffer = NULL;
- uint32 size = GetFileFromZIP(fileInfo.canonicalFilePath().toAscii(), FT_SOFTWARE, buffer);
+ fileSize = GetFileFromZIP(fileInfo.filePath().toAscii(), FT_SOFTWARE, buffer);
+
+ if (fileSize == 0)
+ return;
+ }
+ else
+ {
+ QFile file(fileInfo.filePath());
+
+ if (!file.open(QIODevice::ReadOnly))
+ return;
+
+ fileSize = fileInfo.size();
+
+ if (fileSize == 0)
+ return;
+
+ buffer = new uint8[fileSize];
+ file.read((char *)buffer, fileSize);
+ file.close();
+ }
+
+ // Try to divine the file type by size & header
+ int fileType = ParseFileType(buffer[0], buffer[1], fileSize);
+
+ // Check for Alpine ROM w/Universal Header
+ bool foundUniversalHeader = HasUniversalHeader(buffer, fileSize);
+ uint32 crc;