Skip to content

Commit

Permalink
Merge pull request #4247 from lioncash/wad
Browse files Browse the repository at this point in the history
WiiWad: Minor changes
  • Loading branch information
degasus committed Sep 27, 2016
2 parents f701724 + 61b977c commit 3de4dc2
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 29 deletions.
55 changes: 29 additions & 26 deletions Source/Core/DiscIO/WiiWad.cpp
Expand Up @@ -16,23 +16,9 @@

namespace DiscIO
{
WiiWAD::WiiWAD(const std::string& name)
{
std::unique_ptr<IBlobReader> reader(CreateBlobReader(name));
if (reader == nullptr || File::IsDirectory(name))
{
m_valid = false;
return;
}

m_valid = ParseWAD(*reader);
}

WiiWAD::~WiiWAD()
namespace
{
}

std::vector<u8> WiiWAD::CreateWADEntry(IBlobReader& reader, u32 size, u64 offset)
std::vector<u8> CreateWADEntry(IBlobReader& reader, u32 size, u64 offset)
{
if (size == 0)
return {};
Expand All @@ -48,6 +34,32 @@ std::vector<u8> WiiWAD::CreateWADEntry(IBlobReader& reader, u32 size, u64 offset
return buffer;
}

bool IsWiiWAD(const CBlobBigEndianReader& reader)
{
u32 header_size = 0;
u32 header_type = 0;
reader.ReadSwapped(0x0, &header_size);
reader.ReadSwapped(0x4, &header_type);
return header_size == 0x20 && (header_type == 0x49730000 || header_type == 0x69620000);
}
} // Anonymous namespace

WiiWAD::WiiWAD(const std::string& name)
{
std::unique_ptr<IBlobReader> reader(CreateBlobReader(name));
if (reader == nullptr || File::IsDirectory(name))
{
m_valid = false;
return;
}

m_valid = ParseWAD(*reader);
}

WiiWAD::~WiiWAD()
{
}

bool WiiWAD::ParseWAD(IBlobReader& reader)
{
CBlobBigEndianReader big_endian_reader(reader);
Expand Down Expand Up @@ -88,13 +100,4 @@ bool WiiWAD::ParseWAD(IBlobReader& reader)
return true;
}

bool WiiWAD::IsWiiWAD(const CBlobBigEndianReader& reader)
{
u32 header_size = 0;
u32 header_type = 0;
reader.ReadSwapped(0x0, &header_size);
reader.ReadSwapped(0x4, &header_type);
return header_size == 0x20 && (header_type == 0x49730000 || header_type == 0x69620000);
}

} // namespace end
} // namespace DiscIO
4 changes: 1 addition & 3 deletions Source/Core/DiscIO/WiiWad.h
Expand Up @@ -17,7 +17,7 @@ class CBlobBigEndianReader;
class WiiWAD
{
public:
WiiWAD(const std::string& name);
explicit WiiWAD(const std::string& name);
~WiiWAD();

bool IsValid() const { return m_valid; }
Expand All @@ -28,8 +28,6 @@ class WiiWAD
const std::vector<u8>& GetFooter() const { return m_footer; }
private:
bool ParseWAD(IBlobReader& reader);
static std::vector<u8> CreateWADEntry(IBlobReader& reader, u32 size, u64 offset);
static bool IsWiiWAD(const CBlobBigEndianReader& reader);

bool m_valid;

Expand Down

0 comments on commit 3de4dc2

Please sign in to comment.