@@ -112,7 +112,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
112112 {
113113 return null ;
114114 }
115-
115+
116116 var msuDetails = _msuDetailsService . GetMsuDetails ( msuPath , out var yamlHash , out var yamlError ) ;
117117 if ( ! string . IsNullOrEmpty ( yamlError ) )
118118 {
@@ -121,6 +121,17 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
121121
122122 var baseName = Path . GetFileName ( msuPath ) . Replace ( ".msu" , "" , StringComparison . OrdinalIgnoreCase ) ;
123123 var pcmFiles = Directory . EnumerateFiles ( directory , $ "{ baseName } -*.pcm", SearchOption . AllDirectories ) . ToList ( ) ;
124+ var msuDetailMismatch = false ;
125+
126+ if ( msuDetails ? . Tracks != null && pcmFiles . Count > 0 )
127+ {
128+ var msuDetailSongCount = msuDetails . Tracks . Values . Sum ( x => 1 + ( x . Alts ? . Count ?? 0 ) ) * 0.75 ;
129+ if ( pcmFiles . Count < msuDetailSongCount )
130+ {
131+ yamlHash = "" ;
132+ msuDetailMismatch = true ;
133+ }
134+ }
124135
125136 // Load the MSU from cache if possible
126137 if ( ! ignoreCache )
@@ -130,10 +141,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
130141 {
131142 var cacheSettings = _msuUserOptions . GetMsuSettings ( msuPath ) ;
132143 cacheMsu . Settings = cacheSettings ;
133- if ( cacheMsu . MsuType != null || cacheMsu . Settings . IsUserUnknownMsu )
134- {
135- return cacheMsu ;
136- }
144+ return cacheMsu ;
137145 }
138146 }
139147
@@ -153,7 +161,7 @@ public IReadOnlyCollection<Msu> LookupMsus(string? defaultDirectory, Dictionary<
153161 Msu msu ;
154162
155163 // If it's an unknown MSU type, simply load the details as is
156- if ( msuType == null )
164+ if ( msuType == null || msuDetailMismatch )
157165 {
158166 msu = LoadUnknownMsu ( msuPath , directory , baseName , pcmFiles ) ;
159167 }
0 commit comments