bool PRGArchive::isPRGFile(const char *filename) { assert(filename != NULL); if (!checkFileSuffix(filename, ".PRG") && !checkFileSuffix(filename, ".prg")) return false; if (!checkFileSize(filename, 2, -1)) return false; return true; }
bool TAPFile::isTAPFile(const char *filename) { assert (filename != NULL); if (!checkFileSuffix(filename, ".TAP") && !checkFileSuffix(filename, ".tap") && !checkFileSuffix(filename, ".T64") && !checkFileSuffix(filename, ".t64")) return false; if (!checkFileSize(filename, 0x15, -1)) return false; if (!checkFileHeader(filename, magicBytes)) return false; return true; }
bool Cartridge::isCRTFile(const char *filename) { int magic_bytes[] = { 'C','6','4',' ','C','A','R','T','R','I','D','G','E',' ',' ',' ',EOF }; assert(filename != NULL); if (!checkFileSuffix(filename, ".CRT") && !checkFileSuffix(filename, ".crt")) return false; if (!checkFileSize(filename, 0x40, -1)) return false; if (!checkFileHeader(filename, magic_bytes)) return false; return true; }
bool T64File::isT64File(const char *path) { assert(path != NULL); if (!checkFileSuffix(path, ".T64") && !checkFileSuffix(path, ".t64")) return false; if (TAPFile::isTAPFile(path)) // Note: TAP files have a very similar header return false; if (!checkFileSize(path, 0x40, -1)) return false; if (!checkFileHeader(path, magicBytes)) return false; return true; }
bool G64Archive::isG64File(const char *filename) { /* "GCR-1541" + Version number (0x00) */ int magic_bytes[] = { 0x47, 0x43, 0x52, 0x2D, 0x31, 0x35, 0x34, 0x31, 0x00, EOF }; assert(filename != NULL); if (!checkFileSuffix(filename, ".G64") && !checkFileSuffix(filename, ".g64")) return false; if (!checkFileSize(filename, 0x02AC, -1)) return false; if (!checkFileHeader(filename, magic_bytes)) return false; return true; }
bool T64Archive::isT64File(const char *filename) { /* "Anmerkung: Der String muß nicht wortwörtlich so vorhanden sein. Man sollte nach den Substrings "C64" und "tape" suchen. Vorsicht: TAP Images verwenden den String: C64-TAPE-RAW der ebenfalls die Substrings "C64" und "TAPE" enthält." [Power64 doc] TODO: Make sure that the archive is not a TAP file. */ int magic_bytes[] = { 0x43, 0x36, 0x34, EOF }; assert(filename != NULL); if (!checkFileSuffix(filename, ".T64") && !checkFileSuffix(filename, ".t64")) return false; if (!checkFileSize(filename, 0x40, -1)) return false; if (!checkFileHeader(filename, magic_bytes)) return false; return true; }