FileSystemGCWii: Replace m_Wii with m_offset_shift

I replaced m_OffsetShift with m_Wii in bb93336 to support
the decrypt parameter for read functions. Doing that is no
longer necessary, so m_offset_shift is now used like before.
This commit is contained in:
JosJuice 2015-06-13 20:50:03 +02:00
parent 19b8f1c10a
commit 639ce6c484
2 changed files with 8 additions and 15 deletions

View File

@ -21,7 +21,7 @@
namespace DiscIO
{
CFileSystemGCWii::CFileSystemGCWii(const IVolume* _rVolume, const Partition& partition)
: IFileSystem(_rVolume, partition), m_Initialized(false), m_Valid(false), m_Wii(false)
: IFileSystem(_rVolume, partition), m_Initialized(false), m_Valid(false), m_offset_shift(0)
{
m_Valid = DetectFileSystem();
}
@ -156,7 +156,7 @@ u64 CFileSystemGCWii::GetBootDOLOffset() const
{
u32 offset = 0;
m_rVolume->ReadSwapped(0x420, &offset, m_partition);
return static_cast<u64>(offset) << GetOffsetShift();
return static_cast<u64>(offset) << m_offset_shift;
}
u32 CFileSystemGCWii::GetBootDOLSize(u64 dol_offset) const
@ -253,12 +253,12 @@ bool CFileSystemGCWii::DetectFileSystem()
u32 magic_bytes;
if (m_rVolume->ReadSwapped(0x18, &magic_bytes, m_partition) && magic_bytes == 0x5D1C9EA3)
{
m_Wii = true;
m_offset_shift = 2; // Wii file system
return true;
}
else if (m_rVolume->ReadSwapped(0x1c, &magic_bytes, m_partition) && magic_bytes == 0xC2339F3D)
{
m_Wii = false;
m_offset_shift = 0; // GameCube file system
return true;
}
@ -268,13 +268,12 @@ bool CFileSystemGCWii::DetectFileSystem()
void CFileSystemGCWii::InitFileSystem()
{
m_Initialized = true;
u32 const shift = GetOffsetShift();
// read the whole FST
u32 fst_offset_unshifted;
if (!m_rVolume->ReadSwapped(0x424, &fst_offset_unshifted, m_partition))
return;
u64 FSTOffset = static_cast<u64>(fst_offset_unshifted) << shift;
u64 FSTOffset = static_cast<u64>(fst_offset_unshifted) << m_offset_shift;
// read all fileinfos
u32 name_offset, offset, size;
@ -282,7 +281,7 @@ void CFileSystemGCWii::InitFileSystem()
!m_rVolume->ReadSwapped(FSTOffset + 0x4, &offset, m_partition) ||
!m_rVolume->ReadSwapped(FSTOffset + 0x8, &size, m_partition))
return;
SFileInfo root = {name_offset, static_cast<u64>(offset) << shift, size};
SFileInfo root = {name_offset, static_cast<u64>(offset) << m_offset_shift, size};
if (!root.IsDirectory())
return;
@ -313,7 +312,7 @@ void CFileSystemGCWii::InitFileSystem()
m_rVolume->ReadSwapped(read_offset + 0x4, &offset, m_partition);
size = 0;
m_rVolume->ReadSwapped(read_offset + 0x8, &size, m_partition);
m_FileInfoVector.emplace_back(name_offset, static_cast<u64>(offset) << shift, size);
m_FileInfoVector.emplace_back(name_offset, static_cast<u64>(offset) << m_offset_shift, size);
NameTableOffset += 0xC;
}
@ -351,9 +350,4 @@ size_t CFileSystemGCWii::BuildFilenames(const size_t _FirstIndex, const size_t _
return CurrentIndex;
}
u32 CFileSystemGCWii::GetOffsetShift() const
{
return m_Wii ? 2 : 0;
}
} // namespace

View File

@ -37,7 +37,7 @@ public:
private:
bool m_Initialized;
bool m_Valid;
bool m_Wii;
u32 m_offset_shift;
std::vector<SFileInfo> m_FileInfoVector;
std::string GetStringFromOffset(u64 _Offset) const;
@ -46,7 +46,6 @@ private:
void InitFileSystem();
size_t BuildFilenames(const size_t _FirstIndex, const size_t _LastIndex,
const std::string& _szDirectory, u64 _NameTableOffset);
u32 GetOffsetShift() const;
};
} // namespace