diff --git a/runtime/nx2navi.manifest b/runtime/nx2navi.manifest index 6ca7fc9c..c8eef169 100644 --- a/runtime/nx2navi.manifest +++ b/runtime/nx2navi.manifest @@ -5,7 +5,11 @@ dpiAwareness PerMonitorV2 (dpiAware true/pm on Windows 10 before 1607): window, monitor and cursor sizes are physical pixels and the swapchain matches the screen. A DPI-unaware process gets them divided by the display scale and its image stretched back up by Windows, so 4K at 150% presented a 2560x1440 image, blurred. gfx_window.c follows a - change of the window's DPI (WM_GETDPISCALEDSIZE, WM_DPICHANGED). --> + change of the window's DPI (WM_GETDPISCALEDSIZE, WM_DPICHANGED). + longPathAware lets the wide file functions of platform/win32.c take paths longer than 260 characters (a mod's + files deep in a long game folder) where Windows has long paths switched on (LongPathsEnabled); elsewhere it does + nothing. --> + @@ -19,6 +23,7 @@ UTF-8 true/pm PerMonitorV2, PerMonitor + true diff --git a/runtime/romfs.c b/runtime/romfs.c index 174c59ac..d025be42 100644 --- a/runtime/romfs.c +++ b/runtime/romfs.c @@ -455,7 +455,10 @@ static int mod_walk_cb(const char *leaf, int kind, uint64_t size, void *ctx) { // The files under dir (a mod's RomFS root; rel: the RomFS path of dir, "" at the root) as overlays of mod k. static void mod_walk(int k, int prio, const char *dir, const char *rel) { ModWalk w = {k, prio, dir, rel}; - plat_fs_list(dir, mod_walk_cb, &w); + // a folder that cannot be listed (no permission, a path longer than Windows allows) loses its files: say so + if (plat_fs_list(dir, mod_walk_cb, &w) != PLAT_FS_OK) + rt_log("mods: %s: cannot list %s (error %d); its files are left out", mods_at(k)->name, dir, + plat_fs_os_error()); } // What overlays compete on: the RomFS index, an added file's path; the higher prio first.