diff --git a/source/fatfs/diskio.c b/source/fatfs/diskio.c index 44ead3f..7e59431 100644 --- a/source/fatfs/diskio.c +++ b/source/fatfs/diskio.c @@ -143,9 +143,9 @@ DSTATUS disk_initialize ( if (!nand_type_emu) return STA_NOINIT|STA_NODISK; } else if (pdrv < 10) { UINT mount_state = GetMountState(); - nand_type_img = (mount_state == IMG_NAND) ? CheckNandType(NAND_IMGNAND) : 0; + nand_type_img = (mount_state & IMG_NAND) ? CheckNandType(NAND_IMGNAND) : 0; if (!nand_type_img) { - if ((pdrv == 7) && (mount_state != IMG_FAT)) return STA_NOINIT|STA_NODISK; + if ((pdrv == 7) && !(mount_state & IMG_FAT)) return STA_NOINIT|STA_NODISK; else if (pdrv == 8) return STA_NOINIT|STA_NODISK; else if (pdrv == 9) InitRamDrive(); } diff --git a/source/fs/fsdrive.c b/source/fs/fsdrive.c index b8c2d7e..3deb5e3 100644 --- a/source/fs/fsdrive.c +++ b/source/fs/fsdrive.c @@ -21,14 +21,14 @@ int DriveType(const char* path) { } else if ((pdrv >= 0) && (pdrv < NORM_FS)) { if (pdrv == 0) { type = DRV_FAT | DRV_SDCARD | DRV_STDFAT; - } else if ((pdrv == 9) && (GetMountState() != IMG_NAND)) { + } else if ((pdrv == 9) && !(GetMountState() & IMG_NAND)) { type = DRV_FAT | DRV_RAMDRIVE | DRV_STDFAT; } else if ((pdrv >= 1) && (pdrv <= 3)) { type = DRV_FAT | DRV_SYSNAND | DRV_STDFAT; } else if ((pdrv >= 4) && (pdrv <= 6)) { type = DRV_FAT | DRV_EMUNAND | DRV_STDFAT; } else if ((pdrv >= 7) && (pdrv <= 9) && - ((GetMountState() == IMG_FAT) || (GetMountState() == IMG_NAND))) { + (GetMountState() & (IMG_FAT|IMG_NAND))) { type = DRV_FAT | DRV_IMAGE | DRV_STDFAT; } } else if (CheckVirtualDrive(path)) { @@ -71,18 +71,18 @@ bool GetRootDirContentsWorker(DirStruct* contents) { if (!DriveType(drvnum[pdrv])) continue; // drive not available memset(entry->path, 0x00, 64); snprintf(entry->path + 0, 4, drvnum[pdrv]); - if ((pdrv == 7) && (GetMountState() == IMG_FAT)) // FAT image handling + if ((pdrv == 7) && (GetMountState() & IMG_FAT)) // FAT image handling snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], "FAT IMAGE"); - else if ((pdrv == 9) && (GetMountState() != IMG_NAND)) // RAM drive handling + else if ((pdrv == 9) && !(GetMountState() & IMG_NAND)) // RAM drive handling snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], "RAMDRIVE"); else if (pdrv == 10) // Game drive special handling snprintf(entry->path + 4, 32, "[%s] %s %s", drvnum[pdrv], - (GetMountState() == GAME_CIA ) ? "CIA" : - (GetMountState() == GAME_NCSD ) ? "NCSD" : - (GetMountState() == GAME_NCCH ) ? "NCCH" : - (GetMountState() == GAME_EXEFS) ? "EXEFS" : - (GetMountState() == GAME_ROMFS) ? "ROMFS" : - (GetMountState() == SYS_FIRM) ? "FIRM" : "UNK", drvname[pdrv]); + (GetMountState() & GAME_CIA ) ? "CIA" : + (GetMountState() & GAME_NCSD ) ? "NCSD" : + (GetMountState() & GAME_NCCH ) ? "NCCH" : + (GetMountState() & GAME_EXEFS) ? "EXEFS" : + (GetMountState() & GAME_ROMFS) ? "ROMFS" : + (GetMountState() & SYS_FIRM) ? "FIRM" : "UNK", drvname[pdrv]); else snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], drvname[pdrv]); entry->name = entry->path + 4; entry->size = GetTotalSpace(entry->path); diff --git a/source/fs/fsinit.c b/source/fs/fsinit.c index b40fae4..eda4f0e 100644 --- a/source/fs/fsinit.c +++ b/source/fs/fsinit.c @@ -22,7 +22,7 @@ bool InitExtFS() { snprintf(fsname, 7, "%lu:", i); if (fs_mounted[i]) continue; fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK); - if (!fs_mounted[i] && (i == NORM_FS - 1) && (GetMountState() != IMG_NAND)) { + if (!fs_mounted[i] && (i == NORM_FS - 1) && !(GetMountState() & IMG_NAND)) { f_mkfs(fsname, FM_ANY, 0, MAIN_BUFFER, MAIN_BUFFER_SIZE); // format ramdrive if required f_mount(NULL, fsname, 1); fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK); @@ -35,7 +35,7 @@ bool InitExtFS() { bool InitImgFS(const char* path) { // deinit image filesystem - for (u32 i = (GetMountState() == IMG_NAND) ? NORM_FS - 1 : NORM_FS - IMGN_FS; i >= NORM_FS - IMGN_FS; i--) { + for (u32 i = (GetMountState() & IMG_NAND) ? NORM_FS - 1 : NORM_FS - IMGN_FS; i >= NORM_FS - IMGN_FS; i--) { char fsname[8]; snprintf(fsname, 7, "%lu:", i); if (!fs_mounted[i]) continue; diff --git a/source/game/gameutil.c b/source/game/gameutil.c index c359fae..6c4b064 100644 --- a/source/game/gameutil.c +++ b/source/game/gameutil.c @@ -505,15 +505,15 @@ u32 VerifyFirmFile(const char* path) { u32 VerifyGameFile(const char* path) { u32 filetype = IdentifyFileType(path); - if (filetype == GAME_CIA) + if (filetype & GAME_CIA) return VerifyCiaFile(path); - else if (filetype == GAME_NCSD) + else if (filetype & GAME_NCSD) return VerifyNcsdFile(path); - else if (filetype == GAME_NCCH) + else if (filetype & GAME_NCCH) return VerifyNcchFile(path, 0, 0); - else if (filetype == GAME_TMD) + else if (filetype & GAME_TMD) return VerifyTmdFile(path); - else if (filetype == SYS_FIRM) + else if (filetype & SYS_FIRM) return VerifyFirmFile(path); else return 1; } @@ -599,13 +599,13 @@ u32 CheckEncryptedFirmFile(const char* path) { u32 CheckEncryptedGameFile(const char* path) { u32 filetype = IdentifyFileType(path); - if (filetype == GAME_CIA) + if (filetype & GAME_CIA) return CheckEncryptedCiaFile(path); - else if (filetype == GAME_NCSD) + else if (filetype & GAME_NCSD) return CheckEncryptedNcsdFile(path); - else if (filetype == GAME_NCCH) + else if (filetype & GAME_NCCH) return CheckEncryptedNcchFile(path, 0); - else if (filetype == SYS_FIRM) + else if (filetype & SYS_FIRM) return CheckEncryptedFirmFile(path); else return 1; } diff --git a/source/godmode.c b/source/godmode.c index 6d80e7f..343a56a 100644 --- a/source/godmode.c +++ b/source/godmode.c @@ -616,17 +616,17 @@ u32 FileHandlerMenu(char* current_path, u32* cursor, u32* scroll, DirStruct* cur (int) ++n_opt : -1; int searchdrv = (DriveType(current_path) & DRV_SEARCH) ? ++n_opt : -1; if (special > 0) optionstr[special-1] = - (filetype == IMG_NAND ) ? "NAND image options..." : - (filetype == IMG_FAT ) ? "Mount as FAT image" : - (filetype == GAME_CIA ) ? "CIA image options..." : - (filetype == GAME_NCSD ) ? "NCSD image options..." : - (filetype == GAME_NCCH ) ? "NCCH image options..." : - (filetype == GAME_EXEFS) ? "Mount as EXEFS image" : - (filetype == GAME_ROMFS) ? "Mount as ROMFS image" : - (filetype == GAME_TMD) ? "TMD file options..." : - (filetype == SYS_FIRM) ? "FIRM image options..." : - (filetype == BIN_NCCHNFO) ? "NCCHinfo options..." : - (filetype == BIN_LAUNCH) ? "Launch as arm9 payload" : "???"; + (filetype & IMG_NAND ) ? "NAND image options..." : + (filetype & IMG_FAT ) ? "Mount as FAT image" : + (filetype & GAME_CIA ) ? "CIA image options..." : + (filetype & GAME_NCSD ) ? "NCSD image options..." : + (filetype & GAME_NCCH ) ? "NCCH image options..." : + (filetype & GAME_EXEFS) ? "Mount as EXEFS image" : + (filetype & GAME_ROMFS) ? "Mount as ROMFS image" : + (filetype & GAME_TMD) ? "TMD file options..." : + (filetype & SYS_FIRM) ? "FIRM image options..." : + (filetype & BIN_NCCHNFO) ? "NCCHinfo options..." : + (filetype & BIN_LAUNCH) ? "Launch as arm9 payload" : "???"; optionstr[hexviewer-1] = "Show in Hexeditor"; optionstr[calcsha-1] = "Calculate SHA-256"; if (copystd > 0) optionstr[copystd-1] = "Copy to " OUTPUT_PATH; diff --git a/source/nand/nand.c b/source/nand/nand.c index ff3e3db..d03b36f 100644 --- a/source/nand/nand.c +++ b/source/nand/nand.c @@ -397,7 +397,7 @@ u64 GetNandSizeSectors(u32 nand_src) u32 emunand_min_sectors = (emunand_base_sector % 0x2000 == 0) ? sysnand_sectors : NAND_MIN_SECTORS; return (emunand_min_sectors > emunand_max_sectors) ? 0 : emunand_min_sectors; } else if (nand_src == NAND_IMGNAND) { // for images - u32 img_sectors = (GetMountState() == IMG_NAND) ? GetMountSize() / 0x200 : 0; + u32 img_sectors = (GetMountState() & IMG_NAND) ? GetMountSize() / 0x200 : 0; return (img_sectors >= sysnand_sectors) ? sysnand_sectors : (img_sectors >= NAND_MIN_SECTORS) ? NAND_MIN_SECTORS : 0; } else if (nand_src == NAND_SYSNAND) { // for SysNAND return sysnand_sectors; diff --git a/source/virtual/vgame.c b/source/virtual/vgame.c index 6748087..8c91a38 100644 --- a/source/virtual/vgame.c +++ b/source/virtual/vgame.c @@ -455,12 +455,12 @@ u32 InitVGameDrive(void) { // prerequisite: game file mounted as image offset_lv3fd = (u64) -1; base_vdir = - (type == SYS_FIRM ) ? VFLAG_FIRM : - (type == GAME_CIA ) ? VFLAG_CIA : - (type == GAME_NCSD ) ? VFLAG_NCSD : - (type == GAME_NCCH ) ? VFLAG_NCCH : - (type == GAME_EXEFS) ? VFLAG_EXEFS : - (type == GAME_ROMFS) ? VFLAG_ROMFS : 0; + (type & SYS_FIRM ) ? VFLAG_FIRM : + (type & GAME_CIA ) ? VFLAG_CIA : + (type & GAME_NCSD ) ? VFLAG_NCSD : + (type & GAME_NCCH ) ? VFLAG_NCCH : + (type & GAME_EXEFS) ? VFLAG_EXEFS : + (type & GAME_ROMFS) ? VFLAG_ROMFS : 0; if (!base_vdir) return 0; vgame_type = type;