diff options
| author | JosJuice <josjuice@gmail.com> | 2017-05-19 18:33:21 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2017-05-19 18:33:21 +0200 |
| commit | ac5c82b36b4fc2bf99e9f7552ac83febeff8fc5c (patch) | |
| tree | 074dc847a2c34aaf089b4d0103be34b8712dd3c2 /Source/Core/DiscIO | |
| parent | 56b218a7505d11b72dec1d5b36e948f77950331a (diff) | |
DiscIO: Remove VolumeCreator
This file is pretty small now that it doesn't handle Wii
partitions anymore, so let's move its contents to Volume.cpp.
This is also more consistent with how blob creation works.
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | Source/Core/DiscIO/DiscIO.vcxproj | 2 | ||||
| -rw-r--r-- | Source/Core/DiscIO/DiscIO.vcxproj.filters | 6 | ||||
| -rw-r--r-- | Source/Core/DiscIO/DiscScrubber.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Volume.cpp | 51 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Volume.h | 6 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeCreator.cpp | 69 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeCreator.h | 19 | ||||
| -rw-r--r-- | Source/Core/DiscIO/VolumeWiiCrypted.cpp | 1 |
9 files changed, 57 insertions, 99 deletions
diff --git a/Source/Core/DiscIO/CMakeLists.txt b/Source/Core/DiscIO/CMakeLists.txt index cd3fee7f1d..414cd6a542 100644 --- a/Source/Core/DiscIO/CMakeLists.txt +++ b/Source/Core/DiscIO/CMakeLists.txt @@ -13,7 +13,6 @@ set(SRCS NANDImporter.cpp TGCBlob.cpp Volume.cpp - VolumeCreator.cpp VolumeDirectory.cpp VolumeGC.cpp VolumeWad.cpp diff --git a/Source/Core/DiscIO/DiscIO.vcxproj b/Source/Core/DiscIO/DiscIO.vcxproj index 4846c963ef..f11d3c3e1d 100644 --- a/Source/Core/DiscIO/DiscIO.vcxproj +++ b/Source/Core/DiscIO/DiscIO.vcxproj @@ -48,7 +48,6 @@ <ClCompile Include="NANDImporter.cpp" /> <ClCompile Include="TGCBlob.cpp" /> <ClCompile Include="Volume.cpp" /> - <ClCompile Include="VolumeCreator.cpp" /> <ClCompile Include="VolumeDirectory.cpp" /> <ClCompile Include="VolumeGC.cpp" /> <ClCompile Include="VolumeWad.cpp" /> @@ -70,7 +69,6 @@ <ClInclude Include="NANDImporter.h" /> <ClInclude Include="TGCBlob.h" /> <ClInclude Include="Volume.h" /> - <ClInclude Include="VolumeCreator.h" /> <ClInclude Include="VolumeDirectory.h" /> <ClInclude Include="VolumeGC.h" /> <ClInclude Include="VolumeWad.h" /> diff --git a/Source/Core/DiscIO/DiscIO.vcxproj.filters b/Source/Core/DiscIO/DiscIO.vcxproj.filters index ca6ec54fa7..b56078e599 100644 --- a/Source/Core/DiscIO/DiscIO.vcxproj.filters +++ b/Source/Core/DiscIO/DiscIO.vcxproj.filters @@ -54,9 +54,6 @@ <ClCompile Include="WbfsBlob.cpp"> <Filter>Volume\Blob</Filter> </ClCompile> - <ClCompile Include="VolumeCreator.cpp"> - <Filter>Volume</Filter> - </ClCompile> <ClCompile Include="VolumeDirectory.cpp"> <Filter>Volume</Filter> </ClCompile> @@ -119,9 +116,6 @@ <ClInclude Include="Volume.h"> <Filter>Volume</Filter> </ClInclude> - <ClInclude Include="VolumeCreator.h"> - <Filter>Volume</Filter> - </ClInclude> <ClInclude Include="VolumeDirectory.h"> <Filter>Volume</Filter> </ClInclude> diff --git a/Source/Core/DiscIO/DiscScrubber.cpp b/Source/Core/DiscIO/DiscScrubber.cpp index ac3a39f4c6..332ea7c8c4 100644 --- a/Source/Core/DiscIO/DiscScrubber.cpp +++ b/Source/Core/DiscIO/DiscScrubber.cpp @@ -16,7 +16,6 @@ #include "DiscIO/DiscScrubber.h" #include "DiscIO/Filesystem.h" #include "DiscIO/Volume.h" -#include "DiscIO/VolumeCreator.h" namespace DiscIO { diff --git a/Source/Core/DiscIO/Volume.cpp b/Source/Core/DiscIO/Volume.cpp index ade2bd1eab..21fece4484 100644 --- a/Source/Core/DiscIO/Volume.cpp +++ b/Source/Core/DiscIO/Volume.cpp @@ -6,6 +6,7 @@ #include <algorithm> #include <map> +#include <memory> #include <string> #include <utility> #include <vector> @@ -17,7 +18,12 @@ #include "Common/StringUtil.h" #include "Common/Swap.h" +#include "DiscIO/Blob.h" #include "DiscIO/Enums.h" +#include "DiscIO/VolumeDirectory.h" +#include "DiscIO/VolumeGC.h" +#include "DiscIO/VolumeWad.h" +#include "DiscIO/VolumeWiiCrypted.h" namespace DiscIO { @@ -76,4 +82,49 @@ std::map<Language, std::string> IVolume::ReadWiiNames(const std::vector<u8>& dat } return names; } + +std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename) +{ + std::unique_ptr<IBlobReader> reader(CreateBlobReader(filename)); + if (reader == nullptr) + return nullptr; + CBlobBigEndianReader be_reader(*reader); + + // Check for Wii + u32 wii_magic = 0; + be_reader.ReadSwapped(0x18, &wii_magic); + u32 wii_container_magic = 0; + be_reader.ReadSwapped(0x60, &wii_container_magic); + if (wii_magic == 0x5D1C9EA3 && wii_container_magic != 0) + 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; + be_reader.ReadSwapped(0x02, &wad_magic); + if (wad_magic == 0x00204973 || wad_magic == 0x00206962) + return std::make_unique<CVolumeWAD>(std::move(reader)); + + // Check for GC + u32 gc_magic = 0; + be_reader.ReadSwapped(0x1C, &gc_magic); + if (gc_magic == 0xC2339F3D) + return std::make_unique<CVolumeGC>(std::move(reader)); + + // No known magic words found + return nullptr; } + +std::unique_ptr<IVolume> CreateVolumeFromDirectory(const std::string& directory, bool is_wii, + const std::string& apploader, + const std::string& dol) +{ + if (CVolumeDirectory::IsValidDirectory(directory)) + return std::make_unique<CVolumeDirectory>(directory, is_wii, apploader, dol); + + return nullptr; +} + +} // namespace diff --git a/Source/Core/DiscIO/Volume.h b/Source/Core/DiscIO/Volume.h index d03e168709..1d98d69c46 100644 --- a/Source/Core/DiscIO/Volume.h +++ b/Source/Core/DiscIO/Volume.h @@ -7,6 +7,7 @@ #include <cstring> #include <limits> #include <map> +#include <memory> #include <string> #include <vector> @@ -112,4 +113,9 @@ protected: static const size_t NAMES_TOTAL_BYTES = NAME_BYTES_LENGTH * NUMBER_OF_LANGUAGES; }; +std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename); +std::unique_ptr<IVolume> CreateVolumeFromDirectory(const std::string& directory, bool is_wii, + const std::string& apploader = "", + const std::string& dol = ""); + } // namespace diff --git a/Source/Core/DiscIO/VolumeCreator.cpp b/Source/Core/DiscIO/VolumeCreator.cpp deleted file mode 100644 index 63046bce95..0000000000 --- a/Source/Core/DiscIO/VolumeCreator.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#include <cstddef> -#include <cstring> -#include <memory> -#include <string> -#include <utility> -#include <vector> - -#include "Common/CommonTypes.h" -#include "Common/Logging/Log.h" -#include "Common/StringUtil.h" -#include "DiscIO/Blob.h" -#include "DiscIO/Volume.h" -#include "DiscIO/VolumeCreator.h" -#include "DiscIO/VolumeDirectory.h" -#include "DiscIO/VolumeGC.h" -#include "DiscIO/VolumeWad.h" -#include "DiscIO/VolumeWiiCrypted.h" - -namespace DiscIO -{ -std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename) -{ - std::unique_ptr<IBlobReader> reader(CreateBlobReader(filename)); - if (reader == nullptr) - return nullptr; - CBlobBigEndianReader be_reader(*reader); - - // Check for Wii - u32 wii_magic = 0; - be_reader.ReadSwapped(0x18, &wii_magic); - u32 wii_container_magic = 0; - be_reader.ReadSwapped(0x60, &wii_container_magic); - if (wii_magic == 0x5D1C9EA3 && wii_container_magic != 0) - 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; - be_reader.ReadSwapped(0x02, &wad_magic); - if (wad_magic == 0x00204973 || wad_magic == 0x00206962) - return std::make_unique<CVolumeWAD>(std::move(reader)); - - // Check for GC - u32 gc_magic = 0; - be_reader.ReadSwapped(0x1C, &gc_magic); - if (gc_magic == 0xC2339F3D) - return std::make_unique<CVolumeGC>(std::move(reader)); - - // No known magic words found - return nullptr; -} - -std::unique_ptr<IVolume> CreateVolumeFromDirectory(const std::string& directory, bool is_wii, - const std::string& apploader, - const std::string& dol) -{ - if (CVolumeDirectory::IsValidDirectory(directory)) - return std::make_unique<CVolumeDirectory>(directory, is_wii, apploader, dol); - - return nullptr; -} - -} // namespace diff --git a/Source/Core/DiscIO/VolumeCreator.h b/Source/Core/DiscIO/VolumeCreator.h deleted file mode 100644 index 79c08cf1db..0000000000 --- a/Source/Core/DiscIO/VolumeCreator.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -#include <memory> -#include <string> - -namespace DiscIO -{ -class IVolume; - -std::unique_ptr<IVolume> CreateVolumeFromFilename(const std::string& filename); -std::unique_ptr<IVolume> CreateVolumeFromDirectory(const std::string& directory, bool is_wii, - const std::string& apploader = "", - const std::string& dol = ""); - -} // namespace diff --git a/Source/Core/DiscIO/VolumeWiiCrypted.cpp b/Source/Core/DiscIO/VolumeWiiCrypted.cpp index 05d34aa126..1572c8493b 100644 --- a/Source/Core/DiscIO/VolumeWiiCrypted.cpp +++ b/Source/Core/DiscIO/VolumeWiiCrypted.cpp @@ -25,7 +25,6 @@ #include "DiscIO/Enums.h" #include "DiscIO/Filesystem.h" #include "DiscIO/Volume.h" -#include "DiscIO/VolumeCreator.h" namespace DiscIO { |
