summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/Volume.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DiscIO/Volume.cpp')
-rw-r--r--Source/Core/DiscIO/Volume.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/Source/Core/DiscIO/Volume.cpp b/Source/Core/DiscIO/Volume.cpp
index 874db7279a..8ceee22f61 100644
--- a/Source/Core/DiscIO/Volume.cpp
+++ b/Source/Core/DiscIO/Volume.cpp
@@ -7,6 +7,7 @@
#include <algorithm>
#include <map>
#include <memory>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -93,26 +94,25 @@ std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename)
return nullptr;
// Check for Wii
- u32 wii_magic = 0;
- reader->ReadSwapped(0x18, &wii_magic);
- u32 wii_container_magic = 0;
- reader->ReadSwapped(0x60, &wii_container_magic);
- if (wii_magic == 0x5D1C9EA3 && wii_container_magic != 0)
+ const std::optional<u32> wii_magic = reader->ReadSwapped<u32>(0x18);
+ if (wii_magic == u32(0x5D1C9EA3))
+ {
+ const std::optional<u32> wii_container_magic = reader->ReadSwapped<u32>(0x60);
+ if (wii_container_magic == u32(0))
+ return std::make_unique<CVolumeWiiCrypted>(std::move(reader));
+
return std::make_unique<CVolumeGC>(std::move(reader));
- if (wii_magic == 0x5D1C9EA3 && wii_container_magic == 0)
- return std::make_unique<CVolumeWiiCrypted>(std::move(reader));
+ }
// Check for WAD
// 0x206962 for boot2 wads
- u32 wad_magic = 0;
- reader->ReadSwapped(0x02, &wad_magic);
- if (wad_magic == 0x00204973 || wad_magic == 0x00206962)
+ const std::optional<u32> wad_magic = reader->ReadSwapped<u32>(0x02);
+ if (wad_magic == u32(0x00204973) || wad_magic == u32(0x00206962))
return std::make_unique<CVolumeWAD>(std::move(reader));
// Check for GC
- u32 gc_magic = 0;
- reader->ReadSwapped(0x1C, &gc_magic);
- if (gc_magic == 0xC2339F3D)
+ const std::optional<u32> gc_magic = reader->ReadSwapped<u32>(0x1C);
+ if (gc_magic == u32(0xC2339F3D))
return std::make_unique<CVolumeGC>(std::move(reader));
// No known magic words found