mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
afcda22da9
Direct access to the WAD bytes is required to read contents with proper padding data (since they can sometimes end up being outside of the data app section). Allowing the whole buffer to be accessed directly would be error prone, so this commit adds GetContent() to WiiWAD for getting raw content data by index.
48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
// Copyright 2009 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "Common/CommonTypes.h"
|
|
#include "Core/IOS/ES/Formats.h"
|
|
|
|
namespace DiscIO
|
|
{
|
|
class IBlobReader;
|
|
class CBlobBigEndianReader;
|
|
|
|
class WiiWAD
|
|
{
|
|
public:
|
|
explicit WiiWAD(const std::string& name);
|
|
~WiiWAD();
|
|
|
|
bool IsValid() const { return m_valid; }
|
|
const std::vector<u8>& GetCertificateChain() const { return m_certificate_chain; }
|
|
const IOS::ES::TicketReader& GetTicket() const { return m_ticket; }
|
|
const IOS::ES::TMDReader& GetTMD() const { return m_tmd; }
|
|
const std::vector<u8>& GetDataApp() const { return m_data_app; }
|
|
const std::vector<u8>& GetFooter() const { return m_footer; }
|
|
std::vector<u8> GetContent(u16 index) const;
|
|
|
|
private:
|
|
bool ParseWAD();
|
|
|
|
bool m_valid;
|
|
|
|
std::unique_ptr<IBlobReader> m_reader;
|
|
|
|
u64 m_data_app_offset = 0;
|
|
std::vector<u8> m_certificate_chain;
|
|
IOS::ES::TicketReader m_ticket;
|
|
IOS::ES::TMDReader m_tmd;
|
|
std::vector<u8> m_data_app;
|
|
std::vector<u8> m_footer;
|
|
};
|
|
}
|