mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
Boot: Consider DOL/ELF files as possible volumes
The old approach to detecting DOL/ELF files doesn't fit with the new way of implementing extracted discs. The game list is already doing it in a way that's similar to the approach that this commit uses.
This commit is contained in:
parent
2098ee1b15
commit
878869488d
@ -63,35 +63,34 @@ std::unique_ptr<BootParameters> BootParameters::GenerateFromFile(const std::stri
|
||||
std::transform(extension.begin(), extension.end(), extension.begin(), ::tolower);
|
||||
|
||||
static const std::unordered_set<std::string> disc_image_extensions = {
|
||||
{".gcm", ".iso", ".tgc", ".wbfs", ".ciso", ".gcz"}};
|
||||
{".gcm", ".iso", ".tgc", ".wbfs", ".ciso", ".gcz", ".dol", ".elf"}};
|
||||
if (disc_image_extensions.find(extension) != disc_image_extensions.end() || is_drive)
|
||||
{
|
||||
auto volume = DiscIO::CreateVolumeFromFilename(path);
|
||||
if (!volume)
|
||||
std::unique_ptr<DiscIO::Volume> volume = DiscIO::CreateVolumeFromFilename(path);
|
||||
if (volume)
|
||||
return std::make_unique<BootParameters>(Disc{path, std::move(volume)});
|
||||
|
||||
if (extension == ".elf")
|
||||
return std::make_unique<BootParameters>(Executable{path, std::make_unique<ElfReader>(path)});
|
||||
|
||||
if (extension == ".dol")
|
||||
return std::make_unique<BootParameters>(Executable{path, std::make_unique<DolReader>(path)});
|
||||
|
||||
if (is_drive)
|
||||
{
|
||||
if (is_drive)
|
||||
{
|
||||
PanicAlertT("Could not read \"%s\". "
|
||||
"There is no disc in the drive or it is not a GameCube/Wii backup. "
|
||||
"Please note that Dolphin cannot play games directly from the original "
|
||||
"GameCube and Wii discs.",
|
||||
path.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
PanicAlertT("\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO.", path.c_str());
|
||||
}
|
||||
return {};
|
||||
PanicAlertT("Could not read \"%s\". "
|
||||
"There is no disc in the drive or it is not a GameCube/Wii backup. "
|
||||
"Please note that Dolphin cannot play games directly from the original "
|
||||
"GameCube and Wii discs.",
|
||||
path.c_str());
|
||||
}
|
||||
return std::make_unique<BootParameters>(Disc{path, std::move(volume)});
|
||||
else
|
||||
{
|
||||
PanicAlertT("\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO.", path.c_str());
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
if (extension == ".elf")
|
||||
return std::make_unique<BootParameters>(Executable{path, std::make_unique<ElfReader>(path)});
|
||||
|
||||
if (extension == ".dol")
|
||||
return std::make_unique<BootParameters>(Executable{path, std::make_unique<DolReader>(path)});
|
||||
|
||||
if (extension == ".dff")
|
||||
return std::make_unique<BootParameters>(DFF{path});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user