mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
Merge pull request #2225 from JosJuice/remove-volumehandler
Get rid of VolumeHandler
This commit is contained in:
@ -14,7 +14,6 @@
|
||||
#include "Core/Core.h"
|
||||
#include "Core/Host.h"
|
||||
#include "Core/PatchEngine.h"
|
||||
#include "Core/VolumeHandler.h"
|
||||
#include "Core/Boot/Boot.h"
|
||||
#include "Core/Boot/Boot_DOL.h"
|
||||
#include "Core/Debugger/Debugger_SymbolMap.h"
|
||||
@ -35,9 +34,11 @@
|
||||
|
||||
void CBoot::Load_FST(bool _bIsWii)
|
||||
{
|
||||
if (!VolumeHandler::IsValid())
|
||||
if (!DVDInterface::VolumeIsValid())
|
||||
return;
|
||||
|
||||
const DiscIO::IVolume& volume = DVDInterface::GetVolume();
|
||||
|
||||
// copy first 20 bytes of disc to start of Mem 1
|
||||
DVDInterface::DVDRead(/*offset*/0, /*address*/0, /*length*/0x20, false);
|
||||
|
||||
@ -48,9 +49,9 @@ void CBoot::Load_FST(bool _bIsWii)
|
||||
if (_bIsWii)
|
||||
shift = 2;
|
||||
|
||||
u32 fstOffset = VolumeHandler::Read32(0x0424, _bIsWii) << shift;
|
||||
u32 fstSize = VolumeHandler::Read32(0x0428, _bIsWii) << shift;
|
||||
u32 maxFstSize = VolumeHandler::Read32(0x042c, _bIsWii) << shift;
|
||||
u32 fstOffset = volume.Read32(0x0424, _bIsWii) << shift;
|
||||
u32 fstSize = volume.Read32(0x0428, _bIsWii) << shift;
|
||||
u32 maxFstSize = volume.Read32(0x042c, _bIsWii) << shift;
|
||||
|
||||
u32 arenaHigh = ROUND_DOWN(0x817FFFFF - maxFstSize, 0x20);
|
||||
Memory::Write_U32(arenaHigh, 0x00000034);
|
||||
@ -229,33 +230,30 @@ bool CBoot::BootUp()
|
||||
// GCM and Wii
|
||||
case SCoreStartupParameter::BOOT_ISO:
|
||||
{
|
||||
std::unique_ptr<DiscIO::IVolume> pVolume(DiscIO::CreateVolumeFromFilename(_StartupPara.m_strFilename));
|
||||
if (pVolume == nullptr)
|
||||
DVDInterface::SetVolumeName(_StartupPara.m_strFilename);
|
||||
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
|
||||
if (!DVDInterface::VolumeIsValid())
|
||||
break;
|
||||
|
||||
if (pVolume->IsWiiDisc() != _StartupPara.bWii)
|
||||
const DiscIO::IVolume& pVolume = DVDInterface::GetVolume();
|
||||
|
||||
if (pVolume.IsWiiDisc() != _StartupPara.bWii)
|
||||
{
|
||||
PanicAlertT("Warning - starting ISO in wrong console mode!");
|
||||
}
|
||||
|
||||
// setup the map from ISOFile ID
|
||||
VolumeHandler::SetVolumeName(_StartupPara.m_strFilename);
|
||||
|
||||
std::string unique_id = VolumeHandler::GetVolume()->GetUniqueID();
|
||||
std::string unique_id = DVDInterface::GetVolume().GetUniqueID();
|
||||
if (unique_id.size() >= 4)
|
||||
VideoInterface::SetRegionReg(unique_id.at(3));
|
||||
|
||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||
|
||||
u32 tmd_size;
|
||||
std::unique_ptr<u8[]> tmd_buf = pVolume->GetTMD(&tmd_size);
|
||||
std::unique_ptr<u8[]> tmd_buf = pVolume.GetTMD(&tmd_size);
|
||||
if (tmd_size)
|
||||
{
|
||||
WII_IPC_HLE_Interface::ES_DIVerify(tmd_buf.get(), tmd_size);
|
||||
}
|
||||
|
||||
|
||||
_StartupPara.bWii = VolumeHandler::IsWiiDisc();
|
||||
_StartupPara.bWii = pVolume.IsWiiDisc();
|
||||
|
||||
// HLE BS2 or not
|
||||
if (_StartupPara.bHLE_BS2)
|
||||
@ -311,20 +309,20 @@ bool CBoot::BootUp()
|
||||
{
|
||||
BS2Success = EmulatedBS2(dolWii);
|
||||
}
|
||||
else if (!VolumeHandler::IsWiiDisc() && !_StartupPara.m_strDefaultISO.empty())
|
||||
else if ((!DVDInterface::VolumeIsValid() || !DVDInterface::GetVolume().IsWiiDisc()) && !_StartupPara.m_strDefaultISO.empty())
|
||||
{
|
||||
VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
DVDInterface::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
BS2Success = EmulatedBS2(dolWii);
|
||||
}
|
||||
|
||||
if (!_StartupPara.m_strDVDRoot.empty())
|
||||
{
|
||||
NOTICE_LOG(BOOT, "Setting DVDRoot %s", _StartupPara.m_strDVDRoot.c_str());
|
||||
VolumeHandler::SetVolumeDirectory(_StartupPara.m_strDVDRoot, dolWii, _StartupPara.m_strApploader, _StartupPara.m_strFilename);
|
||||
DVDInterface::SetVolumeDirectory(_StartupPara.m_strDVDRoot, dolWii, _StartupPara.m_strApploader, _StartupPara.m_strFilename);
|
||||
BS2Success = EmulatedBS2(dolWii);
|
||||
}
|
||||
|
||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
|
||||
|
||||
if (!BS2Success)
|
||||
{
|
||||
@ -364,19 +362,19 @@ bool CBoot::BootUp()
|
||||
if (!_StartupPara.m_strDVDRoot.empty())
|
||||
{
|
||||
NOTICE_LOG(BOOT, "Setting DVDRoot %s", _StartupPara.m_strDVDRoot.c_str());
|
||||
VolumeHandler::SetVolumeDirectory(_StartupPara.m_strDVDRoot, _StartupPara.bWii);
|
||||
DVDInterface::SetVolumeDirectory(_StartupPara.m_strDVDRoot, _StartupPara.bWii);
|
||||
}
|
||||
else if (!_StartupPara.m_strDefaultISO.empty())
|
||||
{
|
||||
NOTICE_LOG(BOOT, "Loading default ISO %s", _StartupPara.m_strDefaultISO.c_str());
|
||||
VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
DVDInterface::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
}
|
||||
else
|
||||
{
|
||||
VolumeHandler::SetVolumeDirectory(_StartupPara.m_strFilename, _StartupPara.bWii);
|
||||
DVDInterface::SetVolumeDirectory(_StartupPara.m_strFilename, _StartupPara.bWii);
|
||||
}
|
||||
|
||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
|
||||
|
||||
// Poor man's bootup
|
||||
if(_StartupPara.bWii)
|
||||
@ -402,18 +400,18 @@ bool CBoot::BootUp()
|
||||
|
||||
// load default image or create virtual drive from directory
|
||||
if (!_StartupPara.m_strDVDRoot.empty())
|
||||
VolumeHandler::SetVolumeDirectory(_StartupPara.m_strDVDRoot, true);
|
||||
DVDInterface::SetVolumeDirectory(_StartupPara.m_strDVDRoot, true);
|
||||
else if (!_StartupPara.m_strDefaultISO.empty())
|
||||
VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
DVDInterface::SetVolumeName(_StartupPara.m_strDefaultISO);
|
||||
|
||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
|
||||
break;
|
||||
|
||||
|
||||
// Bootstrap 2 (AKA: Initial Program Loader, "BIOS")
|
||||
case SCoreStartupParameter::BOOT_BS2:
|
||||
{
|
||||
DVDInterface::SetDiscInside(VolumeHandler::IsValid());
|
||||
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
|
||||
if (Load_BS2(_StartupPara.m_strBootROM))
|
||||
{
|
||||
if (LoadMapFromFilename())
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "Core/Core.h"
|
||||
#include "Core/MemTools.h"
|
||||
#include "Core/PatchEngine.h"
|
||||
#include "Core/VolumeHandler.h"
|
||||
#include "Core/Boot/Boot.h"
|
||||
#include "Core/HLE/HLE.h"
|
||||
#include "Core/HW/CPU.h"
|
||||
@ -84,9 +83,10 @@ bool CBoot::EmulatedBS2_GC(bool skipAppLoader)
|
||||
|
||||
// Load Apploader to Memory - The apploader is hardcoded to begin at 0x2440 on the disc,
|
||||
// but the size can differ between discs. Compare with YAGCD chap 13.
|
||||
const DiscIO::IVolume& volume = DVDInterface::GetVolume();
|
||||
u32 iAppLoaderOffset = 0x2440;
|
||||
u32 iAppLoaderEntry = VolumeHandler::Read32(iAppLoaderOffset + 0x10, false);
|
||||
u32 iAppLoaderSize = VolumeHandler::Read32(iAppLoaderOffset + 0x14, false) + VolumeHandler::Read32(iAppLoaderOffset + 0x18, false);
|
||||
u32 iAppLoaderEntry = volume.Read32(iAppLoaderOffset + 0x10, false);
|
||||
u32 iAppLoaderSize = volume.Read32(iAppLoaderOffset + 0x14, false) + volume.Read32(iAppLoaderOffset + 0x18, false);
|
||||
if ((iAppLoaderEntry == (u32)-1) || (iAppLoaderSize == (u32)-1) || skipAppLoader)
|
||||
{
|
||||
INFO_LOG(BOOT, "GC BS2: Not running apploader!");
|
||||
@ -308,8 +308,8 @@ bool CBoot::EmulatedBS2_Wii()
|
||||
|
||||
// setup Wii memory
|
||||
DiscIO::IVolume::ECountry country_code = DiscIO::IVolume::COUNTRY_UNKNOWN;
|
||||
if (VolumeHandler::IsValid())
|
||||
country_code = VolumeHandler::GetVolume()->GetCountry();
|
||||
if (DVDInterface::VolumeIsValid())
|
||||
country_code = DVDInterface::GetVolume().GetCountry();
|
||||
if (SetupWiiMemory(country_code) == false)
|
||||
return false;
|
||||
|
||||
@ -321,7 +321,7 @@ bool CBoot::EmulatedBS2_Wii()
|
||||
|
||||
// Execute the apploader
|
||||
bool apploaderRan = false;
|
||||
if (VolumeHandler::IsValid() && VolumeHandler::IsWiiDisc())
|
||||
if (DVDInterface::VolumeIsValid() && DVDInterface::GetVolume().IsWiiDisc())
|
||||
{
|
||||
// Set up MSR and the BAT SPR registers.
|
||||
UReg_MSR& m_MSR = ((UReg_MSR&)PowerPC::ppcState.msr);
|
||||
@ -353,8 +353,9 @@ bool CBoot::EmulatedBS2_Wii()
|
||||
u32 iAppLoaderOffset = 0x2440; // 0x1c40;
|
||||
|
||||
// Load Apploader to Memory
|
||||
u32 iAppLoaderEntry = VolumeHandler::Read32(iAppLoaderOffset + 0x10, true);
|
||||
u32 iAppLoaderSize = VolumeHandler::Read32(iAppLoaderOffset + 0x14, true);
|
||||
const DiscIO::IVolume& volume = DVDInterface::GetVolume();
|
||||
u32 iAppLoaderEntry = volume.Read32(iAppLoaderOffset + 0x10, true);
|
||||
u32 iAppLoaderSize = volume.Read32(iAppLoaderOffset + 0x14, true);
|
||||
if ((iAppLoaderEntry == (u32)-1) || (iAppLoaderSize == (u32)-1))
|
||||
{
|
||||
ERROR_LOG(BOOT, "Invalid apploader. Probably your image is corrupted.");
|
||||
|
Reference in New Issue
Block a user