diff --git a/retroarch.c b/retroarch.c
index 2939a8b49a..11270a1859 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -1786,17 +1786,17 @@ static void retroarch_parse_input_and_config(int argc, char *argv[])
 #endif
    }
 
-   if (path_is_empty(RARCH_PATH_SUBSYSTEM) && optind < argc)
+   if (optind < argc)
    {
+      bool subsystem_path_is_empty = path_is_empty(RARCH_PATH_SUBSYSTEM);
+
       /* We requested explicit ROM, so use PLAIN core type. */
       retroarch_set_current_core_type(CORE_TYPE_PLAIN, false);
-      path_set(RARCH_PATH_NAMES, (const char*)argv[optind]);
-   }
-   else if (!path_is_empty(RARCH_PATH_SUBSYSTEM) && optind < argc)
-   {
-      /* We requested explicit ROM, so use PLAIN core type. */
-      retroarch_set_current_core_type(CORE_TYPE_PLAIN, false);
-      path_set_special(argv + optind, argc - optind);
+
+      if (subsystem_path_is_empty)
+         path_set(RARCH_PATH_NAMES, (const char*)argv[optind]);
+      else
+         path_set_special(argv + optind, argc - optind);
    }
 
    /* Copy SRM/state dirs used, so they can be reused on reentrancy. */