diff --git a/menu.cpp b/menu.cpp index 22022ab..cc6f9d9 100644 --- a/menu.cpp +++ b/menu.cpp @@ -314,6 +314,7 @@ static int changeDir(char *dir) static void SelectFile(const char* path, const char* pFileExt, unsigned char Options, unsigned char MenuSelect, unsigned char MenuCancel) { printf("pFileExt = %s\n", pFileExt); + const char *suffix = NULL; strncpy(selPath, path, sizeof(selPath) - 1); selPath[sizeof(selPath) - 1] = 0; @@ -333,13 +334,17 @@ static void SelectFile(const char* path, const char* pFileExt, unsigned char Opt if(pFileExt == 0) pFileExt = "TXT"; } - else if (strncasecmp(HomeDir, selPath, strlen(HomeDir)) || !strcasecmp(HomeDir, selPath)) + else { - Options &= ~SCANO_NOENTER; - strcpy(selPath, HomeDir); + if (is_pce() && !strncasecmp(pFileExt, "CUE", 3)) suffix = "CD"; + if (strncasecmp(HomeDir(suffix), selPath, strlen(HomeDir(suffix))) || !strcasecmp(HomeDir(suffix), selPath)) + { + Options &= ~SCANO_NOENTER; + strcpy(selPath, HomeDir(suffix)); + } } - if (!strcasecmp(HomeDir, selPath)) FileCreatePath(selPath); + if (!strcasecmp(HomeDir(suffix), selPath)) FileCreatePath(selPath); ScanDirectory(selPath, SCANF_INIT, pFileExt, Options); if (!flist_nDirEntries()) @@ -1638,7 +1643,7 @@ void HandleUI(void) if (p[idx] >= '0' && p[idx] <= '9') ioctl_index = p[idx] - '0'; substrcpy(ext, p, 1); - if (is_gba() && FileExists(user_io_make_filepath(HomeDir, "goomba.rom"))) strcat(ext, "GB GBC"); + if (is_gba() && FileExists(user_io_make_filepath(HomeDir(), "goomba.rom"))) strcat(ext, "GB GBC"); while (strlen(ext) % 3) strcat(ext, " "); fs_Options = SCANO_DIR | (is_neogeo() ? SCANO_NEOGEO | SCANO_NOENTER : 0); diff --git a/support/archie/archie.cpp b/support/archie/archie.cpp index 610bb48..3d4ecc2 100644 --- a/support/archie/archie.cpp +++ b/support/archie/archie.cpp @@ -196,7 +196,7 @@ void archie_init(void) // set config defaults config.system_ctrl = 0; - snprintf(config.rom_img, 1024, user_io_make_filepath(HomeDir, "RISCOS.ROM")); + snprintf(config.rom_img, 1024, user_io_make_filepath(HomeDir(), "RISCOS.ROM")); // try to load config from card int size = FileLoadConfig(CONFIG_FILENAME, 0, 0); @@ -224,7 +224,7 @@ void archie_init(void) // upload ext file //user_io_file_tx("Archie/RISCOS.EXT", 2); - user_io_file_tx(user_io_make_filepath(HomeDir, "CMOS.DAT"), 3); + user_io_file_tx(user_io_make_filepath(HomeDir(), "CMOS.DAT"), 3); user_io_8bit_set_status(0, UIO_STATUS_RESET); diff --git a/support/minimig/minimig_boot.cpp b/support/minimig/minimig_boot.cpp index 6be467a..9b2254f 100644 --- a/support/minimig/minimig_boot.cpp +++ b/support/minimig/minimig_boot.cpp @@ -167,7 +167,7 @@ static void BootUploadLogo() int i = 0; int adr; - if (FileOpen(&file, user_io_make_filepath(HomeDir, LOGO_FILE)) || FileOpen(&file, LOGO_FILE)) { + if (FileOpen(&file, user_io_make_filepath(HomeDir(), LOGO_FILE)) || FileOpen(&file, LOGO_FILE)) { FileReadSec(&file, buffer); mem_upload_init(SCREEN_BPL1 + LOGO_OFFSET); adr = SCREEN_BPL1 + LOGO_OFFSET; @@ -226,7 +226,7 @@ static void BootUploadBall() int i = 0; int adr; - if (FileOpen(&file, user_io_make_filepath(HomeDir, BALL_FILE)) || FileOpen(&file, BALL_FILE)) + if (FileOpen(&file, user_io_make_filepath(HomeDir(), BALL_FILE)) || FileOpen(&file, BALL_FILE)) { FileReadSec(&file, buffer); mem_upload_init(BALL_ADDRESS); @@ -256,7 +256,7 @@ static void BootUploadCopper() int i = 0; int adr; - if (FileOpen(&file, user_io_make_filepath(HomeDir, COPPER_FILE)) || FileOpen(&file, COPPER_FILE)) + if (FileOpen(&file, user_io_make_filepath(HomeDir(), COPPER_FILE)) || FileOpen(&file, COPPER_FILE)) { FileReadSec(&file, buffer); mem_upload_init(COPPER_ADDRESS); diff --git a/support/minimig/minimig_config.cpp b/support/minimig/minimig_config.cpp index 13029aa..c11e32d 100644 --- a/support/minimig/minimig_config.cpp +++ b/support/minimig/minimig_config.cpp @@ -97,7 +97,7 @@ static char UploadKickstart(char *name) int keysize = 0; BootPrint("Checking for Amiga Forever key file:"); - if (FileOpen(&file, user_io_make_filepath(HomeDir, "ROM.KEY")) || FileOpen(&file, "ROM.KEY")) { + if (FileOpen(&file, user_io_make_filepath(HomeDir(), "ROM.KEY")) || FileOpen(&file, "ROM.KEY")) { keysize = file.size; if (file.size> 6) == 1 || (index >> 6) == 2) { fileTYPE fg = {}; - if (!FileOpen(&fg, user_io_make_filepath(HomeDir, "goomba.rom"))) + if (!FileOpen(&fg, user_io_make_filepath(HomeDir(), "goomba.rom"))) { dosend = 0; Info("Cannot open goomba.rom!"); diff --git a/user_io.h b/user_io.h index 455def2..b0c2934 100644 --- a/user_io.h +++ b/user_io.h @@ -201,7 +201,7 @@ uint32_t user_io_get_file_crc(); int user_io_file_mount(const char *name, unsigned char index = 0, char pre = 0); char *user_io_make_filepath(const char *path, const char *filename); char *user_io_get_core_name(); -char *user_io_get_core_path(); +char *user_io_get_core_path(const char *suffix = NULL); const char *user_io_get_core_name_ex(); void user_io_name_override(const char* name); char has_menu(); @@ -270,7 +270,7 @@ char is_gba(); char is_c64(); char is_st(); -#define HomeDir (is_menu() ? "Scripts" : user_io_get_core_path()) +#define HomeDir(x) (is_menu() ? "Scripts" : user_io_get_core_path(x)) #define CoreName (is_menu() ? "Scripts" : user_io_get_core_name()) #endif // USER_IO_H