mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Changed filetype var handling to bitwise
... cause files can have more than one filetype
This commit is contained in:
parent
0abc6e88ff
commit
3b6932d9ab
@ -143,9 +143,9 @@ DSTATUS disk_initialize (
|
|||||||
if (!nand_type_emu) return STA_NOINIT|STA_NODISK;
|
if (!nand_type_emu) return STA_NOINIT|STA_NODISK;
|
||||||
} else if (pdrv < 10) {
|
} else if (pdrv < 10) {
|
||||||
UINT mount_state = GetMountState();
|
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 (!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 == 8) return STA_NOINIT|STA_NODISK;
|
||||||
else if (pdrv == 9) InitRamDrive();
|
else if (pdrv == 9) InitRamDrive();
|
||||||
}
|
}
|
||||||
|
@ -21,14 +21,14 @@ int DriveType(const char* path) {
|
|||||||
} else if ((pdrv >= 0) && (pdrv < NORM_FS)) {
|
} else if ((pdrv >= 0) && (pdrv < NORM_FS)) {
|
||||||
if (pdrv == 0) {
|
if (pdrv == 0) {
|
||||||
type = DRV_FAT | DRV_SDCARD | DRV_STDFAT;
|
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;
|
type = DRV_FAT | DRV_RAMDRIVE | DRV_STDFAT;
|
||||||
} else if ((pdrv >= 1) && (pdrv <= 3)) {
|
} else if ((pdrv >= 1) && (pdrv <= 3)) {
|
||||||
type = DRV_FAT | DRV_SYSNAND | DRV_STDFAT;
|
type = DRV_FAT | DRV_SYSNAND | DRV_STDFAT;
|
||||||
} else if ((pdrv >= 4) && (pdrv <= 6)) {
|
} else if ((pdrv >= 4) && (pdrv <= 6)) {
|
||||||
type = DRV_FAT | DRV_EMUNAND | DRV_STDFAT;
|
type = DRV_FAT | DRV_EMUNAND | DRV_STDFAT;
|
||||||
} else if ((pdrv >= 7) && (pdrv <= 9) &&
|
} else if ((pdrv >= 7) && (pdrv <= 9) &&
|
||||||
((GetMountState() == IMG_FAT) || (GetMountState() == IMG_NAND))) {
|
(GetMountState() & (IMG_FAT|IMG_NAND))) {
|
||||||
type = DRV_FAT | DRV_IMAGE | DRV_STDFAT;
|
type = DRV_FAT | DRV_IMAGE | DRV_STDFAT;
|
||||||
}
|
}
|
||||||
} else if (CheckVirtualDrive(path)) {
|
} else if (CheckVirtualDrive(path)) {
|
||||||
@ -71,18 +71,18 @@ bool GetRootDirContentsWorker(DirStruct* contents) {
|
|||||||
if (!DriveType(drvnum[pdrv])) continue; // drive not available
|
if (!DriveType(drvnum[pdrv])) continue; // drive not available
|
||||||
memset(entry->path, 0x00, 64);
|
memset(entry->path, 0x00, 64);
|
||||||
snprintf(entry->path + 0, 4, drvnum[pdrv]);
|
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");
|
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");
|
snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], "RAMDRIVE");
|
||||||
else if (pdrv == 10) // Game drive special handling
|
else if (pdrv == 10) // Game drive special handling
|
||||||
snprintf(entry->path + 4, 32, "[%s] %s %s", drvnum[pdrv],
|
snprintf(entry->path + 4, 32, "[%s] %s %s", drvnum[pdrv],
|
||||||
(GetMountState() == GAME_CIA ) ? "CIA" :
|
(GetMountState() & GAME_CIA ) ? "CIA" :
|
||||||
(GetMountState() == GAME_NCSD ) ? "NCSD" :
|
(GetMountState() & GAME_NCSD ) ? "NCSD" :
|
||||||
(GetMountState() == GAME_NCCH ) ? "NCCH" :
|
(GetMountState() & GAME_NCCH ) ? "NCCH" :
|
||||||
(GetMountState() == GAME_EXEFS) ? "EXEFS" :
|
(GetMountState() & GAME_EXEFS) ? "EXEFS" :
|
||||||
(GetMountState() == GAME_ROMFS) ? "ROMFS" :
|
(GetMountState() & GAME_ROMFS) ? "ROMFS" :
|
||||||
(GetMountState() == SYS_FIRM) ? "FIRM" : "UNK", drvname[pdrv]);
|
(GetMountState() & SYS_FIRM) ? "FIRM" : "UNK", drvname[pdrv]);
|
||||||
else snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], drvname[pdrv]);
|
else snprintf(entry->path + 4, 32, "[%s] %s", drvnum[pdrv], drvname[pdrv]);
|
||||||
entry->name = entry->path + 4;
|
entry->name = entry->path + 4;
|
||||||
entry->size = GetTotalSpace(entry->path);
|
entry->size = GetTotalSpace(entry->path);
|
||||||
|
@ -22,7 +22,7 @@ bool InitExtFS() {
|
|||||||
snprintf(fsname, 7, "%lu:", i);
|
snprintf(fsname, 7, "%lu:", i);
|
||||||
if (fs_mounted[i]) continue;
|
if (fs_mounted[i]) continue;
|
||||||
fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK);
|
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_mkfs(fsname, FM_ANY, 0, MAIN_BUFFER, MAIN_BUFFER_SIZE); // format ramdrive if required
|
||||||
f_mount(NULL, fsname, 1);
|
f_mount(NULL, fsname, 1);
|
||||||
fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK);
|
fs_mounted[i] = (f_mount(fs + i, fsname, 1) == FR_OK);
|
||||||
@ -35,7 +35,7 @@ bool InitExtFS() {
|
|||||||
|
|
||||||
bool InitImgFS(const char* path) {
|
bool InitImgFS(const char* path) {
|
||||||
// deinit image filesystem
|
// 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];
|
char fsname[8];
|
||||||
snprintf(fsname, 7, "%lu:", i);
|
snprintf(fsname, 7, "%lu:", i);
|
||||||
if (!fs_mounted[i]) continue;
|
if (!fs_mounted[i]) continue;
|
||||||
|
@ -505,15 +505,15 @@ u32 VerifyFirmFile(const char* path) {
|
|||||||
|
|
||||||
u32 VerifyGameFile(const char* path) {
|
u32 VerifyGameFile(const char* path) {
|
||||||
u32 filetype = IdentifyFileType(path);
|
u32 filetype = IdentifyFileType(path);
|
||||||
if (filetype == GAME_CIA)
|
if (filetype & GAME_CIA)
|
||||||
return VerifyCiaFile(path);
|
return VerifyCiaFile(path);
|
||||||
else if (filetype == GAME_NCSD)
|
else if (filetype & GAME_NCSD)
|
||||||
return VerifyNcsdFile(path);
|
return VerifyNcsdFile(path);
|
||||||
else if (filetype == GAME_NCCH)
|
else if (filetype & GAME_NCCH)
|
||||||
return VerifyNcchFile(path, 0, 0);
|
return VerifyNcchFile(path, 0, 0);
|
||||||
else if (filetype == GAME_TMD)
|
else if (filetype & GAME_TMD)
|
||||||
return VerifyTmdFile(path);
|
return VerifyTmdFile(path);
|
||||||
else if (filetype == SYS_FIRM)
|
else if (filetype & SYS_FIRM)
|
||||||
return VerifyFirmFile(path);
|
return VerifyFirmFile(path);
|
||||||
else return 1;
|
else return 1;
|
||||||
}
|
}
|
||||||
@ -599,13 +599,13 @@ u32 CheckEncryptedFirmFile(const char* path) {
|
|||||||
|
|
||||||
u32 CheckEncryptedGameFile(const char* path) {
|
u32 CheckEncryptedGameFile(const char* path) {
|
||||||
u32 filetype = IdentifyFileType(path);
|
u32 filetype = IdentifyFileType(path);
|
||||||
if (filetype == GAME_CIA)
|
if (filetype & GAME_CIA)
|
||||||
return CheckEncryptedCiaFile(path);
|
return CheckEncryptedCiaFile(path);
|
||||||
else if (filetype == GAME_NCSD)
|
else if (filetype & GAME_NCSD)
|
||||||
return CheckEncryptedNcsdFile(path);
|
return CheckEncryptedNcsdFile(path);
|
||||||
else if (filetype == GAME_NCCH)
|
else if (filetype & GAME_NCCH)
|
||||||
return CheckEncryptedNcchFile(path, 0);
|
return CheckEncryptedNcchFile(path, 0);
|
||||||
else if (filetype == SYS_FIRM)
|
else if (filetype & SYS_FIRM)
|
||||||
return CheckEncryptedFirmFile(path);
|
return CheckEncryptedFirmFile(path);
|
||||||
else return 1;
|
else return 1;
|
||||||
}
|
}
|
||||||
|
@ -616,17 +616,17 @@ u32 FileHandlerMenu(char* current_path, u32* cursor, u32* scroll, DirStruct* cur
|
|||||||
(int) ++n_opt : -1;
|
(int) ++n_opt : -1;
|
||||||
int searchdrv = (DriveType(current_path) & DRV_SEARCH) ? ++n_opt : -1;
|
int searchdrv = (DriveType(current_path) & DRV_SEARCH) ? ++n_opt : -1;
|
||||||
if (special > 0) optionstr[special-1] =
|
if (special > 0) optionstr[special-1] =
|
||||||
(filetype == IMG_NAND ) ? "NAND image options..." :
|
(filetype & IMG_NAND ) ? "NAND image options..." :
|
||||||
(filetype == IMG_FAT ) ? "Mount as FAT image" :
|
(filetype & IMG_FAT ) ? "Mount as FAT image" :
|
||||||
(filetype == GAME_CIA ) ? "CIA image options..." :
|
(filetype & GAME_CIA ) ? "CIA image options..." :
|
||||||
(filetype == GAME_NCSD ) ? "NCSD image options..." :
|
(filetype & GAME_NCSD ) ? "NCSD image options..." :
|
||||||
(filetype == GAME_NCCH ) ? "NCCH image options..." :
|
(filetype & GAME_NCCH ) ? "NCCH image options..." :
|
||||||
(filetype == GAME_EXEFS) ? "Mount as EXEFS image" :
|
(filetype & GAME_EXEFS) ? "Mount as EXEFS image" :
|
||||||
(filetype == GAME_ROMFS) ? "Mount as ROMFS image" :
|
(filetype & GAME_ROMFS) ? "Mount as ROMFS image" :
|
||||||
(filetype == GAME_TMD) ? "TMD file options..." :
|
(filetype & GAME_TMD) ? "TMD file options..." :
|
||||||
(filetype == SYS_FIRM) ? "FIRM image options..." :
|
(filetype & SYS_FIRM) ? "FIRM image options..." :
|
||||||
(filetype == BIN_NCCHNFO) ? "NCCHinfo options..." :
|
(filetype & BIN_NCCHNFO) ? "NCCHinfo options..." :
|
||||||
(filetype == BIN_LAUNCH) ? "Launch as arm9 payload" : "???";
|
(filetype & BIN_LAUNCH) ? "Launch as arm9 payload" : "???";
|
||||||
optionstr[hexviewer-1] = "Show in Hexeditor";
|
optionstr[hexviewer-1] = "Show in Hexeditor";
|
||||||
optionstr[calcsha-1] = "Calculate SHA-256";
|
optionstr[calcsha-1] = "Calculate SHA-256";
|
||||||
if (copystd > 0) optionstr[copystd-1] = "Copy to " OUTPUT_PATH;
|
if (copystd > 0) optionstr[copystd-1] = "Copy to " OUTPUT_PATH;
|
||||||
|
@ -397,7 +397,7 @@ u64 GetNandSizeSectors(u32 nand_src)
|
|||||||
u32 emunand_min_sectors = (emunand_base_sector % 0x2000 == 0) ? sysnand_sectors : NAND_MIN_SECTORS;
|
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;
|
return (emunand_min_sectors > emunand_max_sectors) ? 0 : emunand_min_sectors;
|
||||||
} else if (nand_src == NAND_IMGNAND) { // for images
|
} 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;
|
return (img_sectors >= sysnand_sectors) ? sysnand_sectors : (img_sectors >= NAND_MIN_SECTORS) ? NAND_MIN_SECTORS : 0;
|
||||||
} else if (nand_src == NAND_SYSNAND) { // for SysNAND
|
} else if (nand_src == NAND_SYSNAND) { // for SysNAND
|
||||||
return sysnand_sectors;
|
return sysnand_sectors;
|
||||||
|
@ -455,12 +455,12 @@ u32 InitVGameDrive(void) { // prerequisite: game file mounted as image
|
|||||||
offset_lv3fd = (u64) -1;
|
offset_lv3fd = (u64) -1;
|
||||||
|
|
||||||
base_vdir =
|
base_vdir =
|
||||||
(type == SYS_FIRM ) ? VFLAG_FIRM :
|
(type & SYS_FIRM ) ? VFLAG_FIRM :
|
||||||
(type == GAME_CIA ) ? VFLAG_CIA :
|
(type & GAME_CIA ) ? VFLAG_CIA :
|
||||||
(type == GAME_NCSD ) ? VFLAG_NCSD :
|
(type & GAME_NCSD ) ? VFLAG_NCSD :
|
||||||
(type == GAME_NCCH ) ? VFLAG_NCCH :
|
(type & GAME_NCCH ) ? VFLAG_NCCH :
|
||||||
(type == GAME_EXEFS) ? VFLAG_EXEFS :
|
(type & GAME_EXEFS) ? VFLAG_EXEFS :
|
||||||
(type == GAME_ROMFS) ? VFLAG_ROMFS : 0;
|
(type & GAME_ROMFS) ? VFLAG_ROMFS : 0;
|
||||||
if (!base_vdir) return 0;
|
if (!base_vdir) return 0;
|
||||||
|
|
||||||
vgame_type = type;
|
vgame_type = type;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user