diff options
| author | itsnotmailmail <itsnotmailmail@gmail.com> | 2009-06-15 22:27:46 +0000 |
|---|---|---|
| committer | itsnotmailmail <itsnotmailmail@gmail.com> | 2009-06-15 22:27:46 +0000 |
| commit | d6c40f65ffc9a365c668592b6f4ec4ba01954a9f (patch) | |
| tree | aeb68cc70189ac10b67d35b4fcea3bd065db493d /Source/Core/DiscIO/Src/NANDContentLoader.cpp | |
| parent | ac572e9d0340fa21d2105335cc6528ef579ca84f (diff) | |
Emulate ES's GetStoredTmd and GetStoredTmdSize commands (patch from issue 1016)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3460 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DiscIO/Src/NANDContentLoader.cpp')
| -rw-r--r-- | Source/Core/DiscIO/Src/NANDContentLoader.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/Core/DiscIO/Src/NANDContentLoader.cpp b/Source/Core/DiscIO/Src/NANDContentLoader.cpp index eef2586b7b..34640c5534 100644 --- a/Source/Core/DiscIO/Src/NANDContentLoader.cpp +++ b/Source/Core/DiscIO/Src/NANDContentLoader.cpp @@ -128,6 +128,7 @@ public: size_t GetContentSize() const { return m_Content.size(); } const SNANDContent* GetContentByIndex(int _Index) const; const u8* GetTicket() const { return m_TicketView; } + const u8* GetTmdHeader() const { return m_TmdHeader; } const std::vector<SNANDContent>& GetContent() const { return m_Content; } @@ -144,9 +145,11 @@ private: u16 m_numEntries; u16 m_TileVersion; u8 m_TicketView[TICKET_VIEW_SIZE]; + u8 m_TmdHeader[TMD_HEADER_SIZE]; std::vector<SNANDContent> m_Content; + bool CreateFromDirectory(const std::string& _rPath); bool CreateFromWAD(const std::string& _rName); @@ -231,6 +234,7 @@ bool CNANDContentLoader::CreateFromDirectory(const std::string& _rPath) fclose(pTMDFile); memcpy(m_TicketView, pTMD + 0x180, TICKET_VIEW_SIZE); + memcpy(m_TmdHeader, pTMD, TMD_HEADER_SIZE); ////// m_TileVersion = Common::swap16(pTMD + 0x01dc); @@ -326,17 +330,21 @@ bool CNANDContentLoader::ParseTMD(u8* pDataApp, u32 pDataAppSize, u8* pTicket, u u8 IV[16]; GetKeyFromTicket(pTicket, DecryptTitleKey); + + memcpy(m_TicketView, pTMD + 0x180, TICKET_VIEW_SIZE); + memcpy(m_TmdHeader, pTMD, TMD_HEADER_SIZE); - u32 numEntries = Common::swap16(pTMD + 0x01de); + m_TileVersion = Common::swap16(pTMD + 0x01dc); + m_numEntries = Common::swap16(pTMD + 0x01de); m_BootIndex = Common::swap16(pTMD + 0x01e0); m_TitleID = Common::swap64(pTMD + 0x018c); m_IosVersion = Common::swap16(pTMD + 0x018a); u8* p = pDataApp; - m_Content.resize(numEntries); + m_Content.resize(m_numEntries); - for (u32 i=0; i<numEntries; i++) + for (u32 i=0; i<m_numEntries; i++) { SNANDContent& rContent = m_Content[i]; |
