diff --git a/src/main/java/gamecubeloader/GameCubeLoader.java b/src/main/java/gamecubeloader/GameCubeLoader.java
index fd594f5..2089b34 100644
--- a/src/main/java/gamecubeloader/GameCubeLoader.java
+++ b/src/main/java/gamecubeloader/GameCubeLoader.java
@@ -82,6 +82,10 @@ public class GameCubeLoader extends BinaryLoader {
 	public Collection<LoadSpec> findSupportedLoadSpecs(ByteProvider provider) throws IOException {
 		List<LoadSpec> loadSpecs = new ArrayList<>();
 
+		// Ghidra hands out a single Loader instance for every probe, so a type
+		// detected for an earlier file would otherwise stick to the next one.
+		binaryType = BinaryType.UNKNOWN;
+
 		Yaz0 yaz0 = new Yaz0();
 		if (yaz0.IsValid(provider)) {
 			provider = yaz0.Decompress(provider);
@@ -135,7 +139,10 @@ public class GameCubeLoader extends BinaryLoader {
 			}
 		}
 
-		if (binaryType != null) {
+		// binaryType is never null: it is initialised to UNKNOWN, so the old
+		// null check claimed every file Ghidra ever opened with a preferred
+		// load spec, then threw LoadException from loadProgramInto().
+		if (binaryType != BinaryType.UNKNOWN) {
 			loadSpecs.add(new LoadSpec(this, 0, new LanguageCompilerSpecPair("PowerPC:BE:32:Gekko_Broadway", "default"), true));
 		}
 
