@@ -96,10 +96,8 @@ public override void Install(InstallActionArgs args)
96
96
ExtractNestedArchives ( installDir ) ;
97
97
}
98
98
99
- // Add just the ROM files to the list
100
- string [ ] actualRomFiles = Directory . GetFiles ( installDir , "*" , SearchOption . AllDirectories )
101
- . Where ( file => ! file . EndsWith ( ".m3u" , StringComparison . OrdinalIgnoreCase ) )
102
- . ToArray ( ) ;
99
+ List < string > supportedFileTypes = GetEmulatorSupportedFileTypes ( info ) ;
100
+ string [ ] actualRomFiles = GetRomFiles ( installDir , supportedFileTypes ) ;
103
101
104
102
foreach ( var romFile in actualRomFiles ) {
105
103
roms . Add ( new GameRom ( Game . Name , romFile ) ) ;
@@ -129,6 +127,42 @@ public override void Install(InstallActionArgs args)
129
127
} ) ;
130
128
}
131
129
130
+ private static string [ ] GetRomFiles ( string installDir , List < string > supportedFileTypes )
131
+ {
132
+ if ( supportedFileTypes == null || supportedFileTypes . Count == 0 )
133
+ {
134
+ return Directory . GetFiles ( installDir , "*" , SearchOption . AllDirectories )
135
+ . Where ( file => ! file . EndsWith ( ".m3u" , StringComparison . OrdinalIgnoreCase ) )
136
+ . ToArray ( ) ;
137
+ }
138
+ else
139
+ {
140
+ return supportedFileTypes . SelectMany (
141
+ fileType => Directory . GetFiles ( installDir , "*." + fileType , SearchOption . AllDirectories )
142
+ ) . ToArray ( ) ;
143
+ }
144
+ }
145
+
146
+ private static List < string > GetEmulatorSupportedFileTypes ( RomMGameInfo info )
147
+ {
148
+ if ( info . Mapping . EmulatorProfile is CustomEmulatorProfile )
149
+ {
150
+ var customProfile = info . Mapping . EmulatorProfile as CustomEmulatorProfile ;
151
+ return customProfile . ImageExtensions ;
152
+ }
153
+ else if ( info . Mapping . EmulatorProfile is BuiltInEmulatorProfile )
154
+ {
155
+ var builtInProfile = ( info . Mapping . EmulatorProfile as BuiltInEmulatorProfile ) ;
156
+ return API . Instance . Emulation . Emulators
157
+ . FirstOrDefault ( e => e . Id == info . Mapping . Emulator . BuiltInConfigId ) ?
158
+ . Profiles
159
+ . FirstOrDefault ( p => p . Name == builtInProfile . Name ) ?
160
+ . ImageExtensions ;
161
+ }
162
+
163
+ return null ;
164
+ }
165
+
132
166
private static bool IsFileCompressed ( string filePath )
133
167
{
134
168
try
0 commit comments