mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-03 02:54:11 +00:00
DiskIO: Clean up GetTMD() API.
This commit is contained in:
parent
b1df4e5986
commit
4bb48d09dd
@ -225,14 +225,12 @@ bool CBoot::BootUp()
|
|||||||
|
|
||||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||||
|
|
||||||
u32 _TMDsz = 0x208;
|
u32 tmd_size;
|
||||||
u8* _pTMD = new u8[_TMDsz];
|
std::unique_ptr<u8[]> tmd_buf = pVolume->GetTMD(&tmd_size);
|
||||||
pVolume->GetTMD(_pTMD, &_TMDsz);
|
if (tmd_size)
|
||||||
if (_TMDsz)
|
|
||||||
{
|
{
|
||||||
WII_IPC_HLE_Interface::ES_DIVerify(_pTMD, _TMDsz);
|
WII_IPC_HLE_Interface::ES_DIVerify(tmd_buf.get(), tmd_size);
|
||||||
}
|
}
|
||||||
delete []_pTMD;
|
|
||||||
|
|
||||||
|
|
||||||
_StartupPara.bWii = VolumeHandler::IsWii();
|
_StartupPara.bWii = VolumeHandler::IsWii();
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
#include <cinttypes>
|
#include <cinttypes>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include "Common/CommonTypes.h"
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Logging/LogManager.h"
|
#include "Common/Logging/LogManager.h"
|
||||||
@ -113,11 +114,10 @@ bool CWII_IPC_HLE_Device_di::IOCtlV(u32 _CommandAddress)
|
|||||||
INFO_LOG(WII_IPC_DVD, "DVDLowOpenPartition: partition_offset 0x%016" PRIx64, partition_offset);
|
INFO_LOG(WII_IPC_DVD, "DVDLowOpenPartition: partition_offset 0x%016" PRIx64, partition_offset);
|
||||||
|
|
||||||
// Read TMD to the buffer
|
// Read TMD to the buffer
|
||||||
u8 pTMD[0x800];
|
u32 tmd_size;
|
||||||
u32 tmdSz;
|
std::unique_ptr<u8[]> tmd_buf = VolumeHandler::GetVolume()->GetTMD(&tmd_size);
|
||||||
VolumeHandler::GetVolume()->GetTMD(pTMD, &tmdSz);
|
Memory::CopyToEmu(CommandBuffer.PayloadBuffer[0].m_Address, tmd_buf.get(), tmd_size);
|
||||||
Memory::CopyToEmu(CommandBuffer.PayloadBuffer[0].m_Address, pTMD, tmdSz);
|
WII_IPC_HLE_Interface::ES_DIVerify(tmd_buf.get(), tmd_size);
|
||||||
WII_IPC_HLE_Interface::ES_DIVerify(pTMD, tmdSz);
|
|
||||||
|
|
||||||
ReturnValue = 1;
|
ReturnValue = 1;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -20,7 +21,11 @@ public:
|
|||||||
virtual bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0;
|
virtual bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0;
|
||||||
virtual bool RAWRead(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0;
|
virtual bool RAWRead(u64 _Offset, u64 _Length, u8* _pBuffer) const = 0;
|
||||||
virtual bool GetTitleID(u8*) const { return false; }
|
virtual bool GetTitleID(u8*) const { return false; }
|
||||||
virtual void GetTMD(u8*, u32 *_sz) const { *_sz=0; }
|
virtual std::unique_ptr<u8[]> GetTMD(u32 *_sz) const
|
||||||
|
{
|
||||||
|
*_sz = 0;
|
||||||
|
return std::unique_ptr<u8[]>();
|
||||||
|
}
|
||||||
virtual std::string GetUniqueID() const = 0;
|
virtual std::string GetUniqueID() const = 0;
|
||||||
virtual std::string GetRevisionSpecificUniqueID() const { return ""; }
|
virtual std::string GetRevisionSpecificUniqueID() const { return ""; }
|
||||||
virtual std::string GetMakerID() const = 0;
|
virtual std::string GetMakerID() const = 0;
|
||||||
|
@ -108,7 +108,7 @@ bool CVolumeWiiCrypted::GetTitleID(u8* _pBuffer) const
|
|||||||
// TitleID offset in tik is 0x1DC
|
// TitleID offset in tik is 0x1DC
|
||||||
return RAWRead(m_VolumeOffset + 0x1DC, 8, _pBuffer);
|
return RAWRead(m_VolumeOffset + 0x1DC, 8, _pBuffer);
|
||||||
}
|
}
|
||||||
void CVolumeWiiCrypted::GetTMD(u8* _pBuffer, u32 * _sz) const
|
std::unique_ptr<u8[]> CVolumeWiiCrypted::GetTMD(u32 *_sz) const
|
||||||
{
|
{
|
||||||
*_sz = 0;
|
*_sz = 0;
|
||||||
u32 tmdSz,
|
u32 tmdSz,
|
||||||
@ -118,8 +118,10 @@ void CVolumeWiiCrypted::GetTMD(u8* _pBuffer, u32 * _sz) const
|
|||||||
RAWRead(m_VolumeOffset + 0x2a8, sizeof(u32), (u8*)&tmdAddr);
|
RAWRead(m_VolumeOffset + 0x2a8, sizeof(u32), (u8*)&tmdAddr);
|
||||||
tmdSz = Common::swap32(tmdSz);
|
tmdSz = Common::swap32(tmdSz);
|
||||||
tmdAddr = Common::swap32(tmdAddr) << 2;
|
tmdAddr = Common::swap32(tmdAddr) << 2;
|
||||||
RAWRead(m_VolumeOffset + tmdAddr, tmdSz, _pBuffer);
|
std::unique_ptr<u8[]> buf{new u8[tmdSz]};
|
||||||
|
RAWRead(m_VolumeOffset + tmdAddr, tmdSz, buf.get());
|
||||||
*_sz = tmdSz;
|
*_sz = tmdSz;
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CVolumeWiiCrypted::GetUniqueID() const
|
std::string CVolumeWiiCrypted::GetUniqueID() const
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const override;
|
bool Read(u64 _Offset, u64 _Length, u8* _pBuffer) const override;
|
||||||
bool RAWRead(u64 _Offset, u64 _Length, u8* _pBuffer) const override;
|
bool RAWRead(u64 _Offset, u64 _Length, u8* _pBuffer) const override;
|
||||||
bool GetTitleID(u8* _pBuffer) const override;
|
bool GetTitleID(u8* _pBuffer) const override;
|
||||||
void GetTMD(u8* _pBuffer, u32* _sz) const override;
|
virtual std::unique_ptr<u8[]> GetTMD(u32 *_sz) const override;
|
||||||
std::string GetUniqueID() const override;
|
std::string GetUniqueID() const override;
|
||||||
std::string GetMakerID() const override;
|
std::string GetMakerID() const override;
|
||||||
std::vector<std::string> GetNames() const override;
|
std::vector<std::string> GetNames() const override;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user