diff --git a/src/main/java/com/dostalgia/GameService.java b/src/main/java/com/dostalgia/GameService.java index 8ab3ca4..4e71286 100644 --- a/src/main/java/com/dostalgia/GameService.java +++ b/src/main/java/com/dostalgia/GameService.java @@ -236,9 +236,14 @@ public class GameService { sb.append("[sblaster]\nsbtype=sb16\nirq=7\ndma=1\nhdma=5\n\n"); sb.append("[dos]\nxms=true\nems=true\numb=true\n\n"); sb.append("[autoexec]\n@echo off\nmount c .\n"); - // Mount CD images as D:, E:, … so games can find their CD + // Mount CD images as D:, E:, … so games can find their CD. + // Deduplicate by parent directory — prefer .bin over .cue. + Set seenDirs = new java.util.HashSet<>(); char driveLetter = 'D'; for (String img : cdImages) { + int slashIdx = img.lastIndexOf('/'); + String parentDir = slashIdx >= 0 ? img.substring(0, slashIdx) : ""; + if (!seenDirs.add(parentDir)) continue; String imgLower = img.toLowerCase(); String flags = imgLower.endsWith(".bin") ? " -t cdrom -fs iso" : " -t cdrom"; sb.append("imgmount ").append(driveLetter).append(" \"").append(img).append("\"").append(flags).append("\n"); diff --git a/src/main/java/com/dostalgia/UploadResource.java b/src/main/java/com/dostalgia/UploadResource.java index 7cef397..c6e12c2 100644 --- a/src/main/java/com/dostalgia/UploadResource.java +++ b/src/main/java/com/dostalgia/UploadResource.java @@ -584,9 +584,16 @@ public class UploadResource { sb.append("[autoexec]\n"); sb.append("@echo off\n"); sb.append("mount c .\n"); - // Mount CD images as D:, E:, … so games can find their CD + // Mount CD images as D:, E:, … so games can find their CD. + // Deduplicate by parent directory — prefer .bin over .cue since + // .bin files sort first alphabetically and avoid .cue FILE path + // case-mismatch issues. + Set seenDirs = new java.util.HashSet<>(); char driveLetter = 'D'; for (String img : cdImages) { + int slashIdx = img.lastIndexOf('/'); + String parentDir = slashIdx >= 0 ? img.substring(0, slashIdx) : ""; + if (!seenDirs.add(parentDir)) continue; // already mounted from this dir String imgLower = img.toLowerCase(); String flags = imgLower.endsWith(".bin") ? " -t cdrom -fs iso" : " -t cdrom"; sb.append("imgmount ").append(driveLetter).append(" \"").append(img).append("\"").append(flags).append("\n");