summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/VolumeDirectory.cpp
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2015-01-21 13:45:28 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2015-01-21 13:45:28 -0600
commitf9fc9d47c0ac7692afcdc06582803776e109e0c0 (patch)
tree7fa71a5b089ded8d87938ad1e03deb5ecf9fd80d /Source/Core/DiscIO/VolumeDirectory.cpp
parent4c9fd63562a7514e16fb21f4bdd6a039fde1cb4c (diff)
parentace060748b572063b33acee13c19000783a6cdde (diff)
Merge pull request #1895 from JosJuice/isvolumewiidisc
Don't read from disk when checking volume type
Diffstat (limited to 'Source/Core/DiscIO/VolumeDirectory.cpp')
-rw-r--r--Source/Core/DiscIO/VolumeDirectory.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/Source/Core/DiscIO/VolumeDirectory.cpp b/Source/Core/DiscIO/VolumeDirectory.cpp
index 1e7213ee36..6157507816 100644
--- a/Source/Core/DiscIO/VolumeDirectory.cpp
+++ b/Source/Core/DiscIO/VolumeDirectory.cpp
@@ -67,12 +67,7 @@ bool CVolumeDirectory::IsValidDirectory(const std::string& _rDirectory)
bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt) const
{
- // VolumeHandler::IsWii is used here to check whether a Wii disc is used.
- // That function calls this function to check a magic word in the disc header,
- // so it is important that VolumeHandler::IsWii is not called when the header
- // is being read with decrypt=false, as it would result in a stack overflow.
-
- if (!decrypt && (_Offset + _Length >= 0x400) && VolumeHandler::IsWii())
+ if (!decrypt && (_Offset + _Length >= 0x400) && m_is_wii)
{
// Fully supporting this would require re-encrypting every file that's read.
// Only supporting the areas that IOS allows software to read could be more feasible.
@@ -82,7 +77,7 @@ bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt
return false;
}
- if (decrypt && !VolumeHandler::IsWii())
+ if (decrypt && !m_is_wii)
PanicAlertT("Tried to decrypt data from a non-Wii volume");
// header
@@ -214,6 +209,11 @@ std::string CVolumeDirectory::GetApploaderDate() const
return "VOID";
}
+bool CVolumeDirectory::IsWiiDisc() const
+{
+ return m_is_wii;
+}
+
u64 CVolumeDirectory::GetSize() const
{
return 0;
@@ -257,6 +257,7 @@ void CVolumeDirectory::SetDiskTypeWii()
m_diskHeader[0x1b] = 0xa3;
memset(&m_diskHeader[0x1c], 0, 4);
+ m_is_wii = true;
m_addressShift = 2;
}
@@ -268,6 +269,7 @@ void CVolumeDirectory::SetDiskTypeGC()
m_diskHeader[0x1e] = 0x9f;
m_diskHeader[0x1f] = 0x3d;
+ m_is_wii = false;
m_addressShift = 0;
}