Merge pull request #1895 from JosJuice/isvolumewiidisc

Don't read from disk when checking volume type
This commit is contained in:
Ryan Houdek 2015-01-21 13:45:28 -06:00
commit f9fc9d47c0
19 changed files with 61 additions and 56 deletions

View File

@ -214,8 +214,7 @@ bool CBoot::BootUp()
if (pVolume == nullptr) if (pVolume == nullptr)
break; break;
bool isoWii = DiscIO::IsVolumeWiiDisc(pVolume); if (pVolume->IsWiiDisc() != _StartupPara.bWii)
if (isoWii != _StartupPara.bWii)
{ {
PanicAlertT("Warning - starting ISO in wrong console mode!"); PanicAlertT("Warning - starting ISO in wrong console mode!");
} }
@ -237,7 +236,7 @@ bool CBoot::BootUp()
} }
_StartupPara.bWii = VolumeHandler::IsWii(); _StartupPara.bWii = VolumeHandler::IsWiiDisc();
// HLE BS2 or not // HLE BS2 or not
if (_StartupPara.bHLE_BS2) if (_StartupPara.bHLE_BS2)
@ -295,7 +294,7 @@ bool CBoot::BootUp()
{ {
BS2Success = EmulatedBS2(dolWii); BS2Success = EmulatedBS2(dolWii);
} }
else if (!VolumeHandler::IsWii() && !_StartupPara.m_strDefaultISO.empty()) else if (!VolumeHandler::IsWiiDisc() && !_StartupPara.m_strDefaultISO.empty())
{ {
VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO); VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO);
BS2Success = EmulatedBS2(dolWii); BS2Success = EmulatedBS2(dolWii);
@ -345,7 +344,7 @@ bool CBoot::BootUp()
{ {
BS2Success = EmulatedBS2(elfWii); BS2Success = EmulatedBS2(elfWii);
} }
else if (!VolumeHandler::IsWii() && !_StartupPara.m_strDefaultISO.empty()) else if (!VolumeHandler::IsWiiDisc() && !_StartupPara.m_strDefaultISO.empty())
{ {
VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO); VolumeHandler::SetVolumeName(_StartupPara.m_strDefaultISO);
BS2Success = EmulatedBS2(elfWii); BS2Success = EmulatedBS2(elfWii);

View File

@ -21,8 +21,6 @@
#include "Core/HW/Memmap.h" #include "Core/HW/Memmap.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"
#include "DiscIO/VolumeCreator.h"
void CBoot::RunFunction(u32 _iAddr) void CBoot::RunFunction(u32 _iAddr)
{ {
PC = _iAddr; PC = _iAddr;
@ -320,7 +318,7 @@ bool CBoot::EmulatedBS2_Wii()
// Execute the apploader // Execute the apploader
bool apploaderRan = false; bool apploaderRan = false;
if (VolumeHandler::IsValid() && VolumeHandler::IsWii()) if (VolumeHandler::IsValid() && VolumeHandler::IsWiiDisc())
{ {
// Set up MSR and the BAT SPR registers. // Set up MSR and the BAT SPR registers.
UReg_MSR& m_MSR = ((UReg_MSR&)PowerPC::ppcState.msr); UReg_MSR& m_MSR = ((UReg_MSR&)PowerPC::ppcState.msr);

View File

@ -153,7 +153,7 @@ bool SCoreStartupParameter::AutoSetup(EBootBS2 _BootBS2)
m_strRevisionSpecificUniqueID = pVolume->GetRevisionSpecificUniqueID(); m_strRevisionSpecificUniqueID = pVolume->GetRevisionSpecificUniqueID();
// Check if we have a Wii disc // Check if we have a Wii disc
bWii = DiscIO::IsVolumeWiiDisc(pVolume.get()); bWii = pVolume.get()->IsWiiDisc();
switch (pVolume->GetCountry()) switch (pVolume->GetCountry())
{ {
case DiscIO::IVolume::COUNTRY_USA: case DiscIO::IVolume::COUNTRY_USA:

View File

@ -1328,7 +1328,7 @@ s64 CalculateRawDiscReadTime(u64 offset, s64 length)
// Note that the speed at a track (in bytes per second) is the same as // Note that the speed at a track (in bytes per second) is the same as
// the radius of that track because of the length unit used. // the radius of that track because of the length unit used.
double speed; double speed;
if (VolumeHandler::IsWii()) if (VolumeHandler::IsWiiDisc())
{ {
speed = std::sqrt(((average_offset - WII_DISC_LOCATION_1_OFFSET) / speed = std::sqrt(((average_offset - WII_DISC_LOCATION_1_OFFSET) /
WII_BYTES_PER_AREA_UNIT + WII_DISC_AREA_UP_TO_LOCATION_1) / PI); WII_BYTES_PER_AREA_UNIT + WII_DISC_AREA_UP_TO_LOCATION_1) / PI);

View File

@ -77,10 +77,10 @@ bool IsValid()
return (g_pVolume != nullptr); return (g_pVolume != nullptr);
} }
bool IsWii() bool IsWiiDisc()
{ {
if (g_pVolume) if (g_pVolume)
return IsVolumeWiiDisc(g_pVolume); return g_pVolume->IsWiiDisc();
return false; return false;
} }

View File

@ -25,7 +25,7 @@ u32 Read32(u64 _Offset, bool decrypt);
bool ReadToPtr(u8* ptr, u64 _dwOffset, u64 _dwLength, bool decrypt); bool ReadToPtr(u8* ptr, u64 _dwOffset, u64 _dwLength, bool decrypt);
bool IsValid(); bool IsValid();
bool IsWii(); bool IsWiiDisc();
DiscIO::IVolume *GetVolume(); DiscIO::IVolume *GetVolume();

View File

@ -8,7 +8,6 @@
#include "DiscIO/BannerLoaderGC.h" #include "DiscIO/BannerLoaderGC.h"
#include "DiscIO/BannerLoaderWii.h" #include "DiscIO/BannerLoaderWii.h"
#include "DiscIO/Filesystem.h" #include "DiscIO/Filesystem.h"
#include "DiscIO/VolumeCreator.h"
namespace DiscIO namespace DiscIO
{ {
@ -18,7 +17,7 @@ class IVolume;
IBannerLoader* CreateBannerLoader(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume *pVolume) IBannerLoader* CreateBannerLoader(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume *pVolume)
{ {
if (IsVolumeWiiDisc(pVolume) || IsVolumeWadFile(pVolume)) if (pVolume->IsWiiDisc() || pVolume->IsWadFile())
return new CBannerLoaderWii(pVolume); return new CBannerLoaderWii(pVolume);
if (_rFileSystem.IsValid()) if (_rFileSystem.IsValid())
return new CBannerLoaderGC(_rFileSystem, pVolume); return new CBannerLoaderGC(_rFileSystem, pVolume);

View File

@ -79,7 +79,7 @@ void ReadFileSystem(const std::string& filename)
if (!OpenISO) if (!OpenISO)
return; return;
if (!DiscIO::IsVolumeWadFile(OpenISO)) if (!OpenISO->IsWadFile())
{ {
pFileSystem = DiscIO::CreateFileSystem(OpenISO); pFileSystem = DiscIO::CreateFileSystem(OpenISO);

View File

@ -36,9 +36,11 @@ public:
virtual std::vector<std::string> GetNames() const = 0; virtual std::vector<std::string> GetNames() const = 0;
virtual u32 GetFSTSize() const = 0; virtual u32 GetFSTSize() const = 0;
virtual std::string GetApploaderDate() const = 0; virtual std::string GetApploaderDate() const = 0;
virtual bool IsDiscTwo() const { return false; }
virtual bool IsWiiDisc() const { return false; }
virtual bool IsWadFile() const { return false; }
virtual bool SupportsIntegrityCheck() const { return false; } virtual bool SupportsIntegrityCheck() const { return false; }
virtual bool CheckIntegrity() const { return false; } virtual bool CheckIntegrity() const { return false; }
virtual bool IsDiscTwo() const { return false; }
virtual bool ChangePartition(u64 offset) { return false; } virtual bool ChangePartition(u64 offset) { return false; }

View File

@ -120,15 +120,6 @@ IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii,
return nullptr; return nullptr;
} }
bool IsVolumeWiiDisc(const IVolume *_rVolume)
{
u32 MagicWord = 0;
_rVolume->Read(0x18, 4, (u8*)&MagicWord, false);
return (Common::swap32(MagicWord) == 0x5D1C9EA3);
//GameCube 0xc2339f3d
}
bool IsVolumeWadFile(const IVolume *_rVolume) bool IsVolumeWadFile(const IVolume *_rVolume)
{ {
u32 MagicWord = 0; u32 MagicWord = 0;

View File

@ -67,12 +67,7 @@ bool CVolumeDirectory::IsValidDirectory(const std::string& _rDirectory)
bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt) const bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt) const
{ {
// VolumeHandler::IsWii is used here to check whether a Wii disc is used. if (!decrypt && (_Offset + _Length >= 0x400) && m_is_wii)
// That function calls this function to check a magic word in the disc header,
// so it is important that VolumeHandler::IsWii is not called when the header
// is being read with decrypt=false, as it would result in a stack overflow.
if (!decrypt && (_Offset + _Length >= 0x400) && VolumeHandler::IsWii())
{ {
// Fully supporting this would require re-encrypting every file that's read. // Fully supporting this would require re-encrypting every file that's read.
// Only supporting the areas that IOS allows software to read could be more feasible. // Only supporting the areas that IOS allows software to read could be more feasible.
@ -82,7 +77,7 @@ bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer, bool decrypt
return false; return false;
} }
if (decrypt && !VolumeHandler::IsWii()) if (decrypt && !m_is_wii)
PanicAlertT("Tried to decrypt data from a non-Wii volume"); PanicAlertT("Tried to decrypt data from a non-Wii volume");
// header // header
@ -214,6 +209,11 @@ std::string CVolumeDirectory::GetApploaderDate() const
return "VOID"; return "VOID";
} }
bool CVolumeDirectory::IsWiiDisc() const
{
return m_is_wii;
}
u64 CVolumeDirectory::GetSize() const u64 CVolumeDirectory::GetSize() const
{ {
return 0; return 0;
@ -257,6 +257,7 @@ void CVolumeDirectory::SetDiskTypeWii()
m_diskHeader[0x1b] = 0xa3; m_diskHeader[0x1b] = 0xa3;
memset(&m_diskHeader[0x1c], 0, 4); memset(&m_diskHeader[0x1c], 0, 4);
m_is_wii = true;
m_addressShift = 2; m_addressShift = 2;
} }
@ -268,6 +269,7 @@ void CVolumeDirectory::SetDiskTypeGC()
m_diskHeader[0x1e] = 0x9f; m_diskHeader[0x1e] = 0x9f;
m_diskHeader[0x1f] = 0x3d; m_diskHeader[0x1f] = 0x3d;
m_is_wii = false;
m_addressShift = 0; m_addressShift = 0;
} }

View File

@ -45,6 +45,7 @@ public:
u32 GetFSTSize() const override; u32 GetFSTSize() const override;
std::string GetApploaderDate() const override; std::string GetApploaderDate() const override;
bool IsWiiDisc() const override;
ECountry GetCountry() const override; ECountry GetCountry() const override;
@ -85,6 +86,8 @@ private:
u32 m_totalNameSize; u32 m_totalNameSize;
bool m_is_wii;
// GameCube has no shift, Wii has 2 bit shift // GameCube has no shift, Wii has 2 bit shift
u32 m_addressShift; u32 m_addressShift;

View File

@ -103,6 +103,11 @@ bool CVolumeWAD::GetTitleID(u8* _pBuffer) const
return true; return true;
} }
bool CVolumeWAD::IsWadFile() const
{
return true;
}
std::vector<std::string> CVolumeWAD::GetNames() const std::vector<std::string> CVolumeWAD::GetNames() const
{ {
std::vector<std::string> names; std::vector<std::string> names;

View File

@ -32,6 +32,7 @@ public:
std::vector<std::string> GetNames() const override; std::vector<std::string> GetNames() const override;
u32 GetFSTSize() const override { return 0; } u32 GetFSTSize() const override { return 0; }
std::string GetApploaderDate() const override { return "0"; } std::string GetApploaderDate() const override { return "0"; }
bool IsWadFile() const override;
ECountry GetCountry() const override; ECountry GetCountry() const override;
u64 GetSize() const override; u64 GetSize() const override;
u64 GetRawSize() const override; u64 GetRawSize() const override;

View File

@ -227,6 +227,11 @@ std::string CVolumeWiiCrypted::GetApploaderDate() const
return date; return date;
} }
bool CVolumeWiiCrypted::IsWiiDisc() const
{
return true;
}
u64 CVolumeWiiCrypted::GetSize() const u64 CVolumeWiiCrypted::GetSize() const
{ {
if (m_pReader) if (m_pReader)

View File

@ -32,6 +32,7 @@ public:
std::vector<std::string> GetNames() const override; std::vector<std::string> GetNames() const override;
u32 GetFSTSize() const override; u32 GetFSTSize() const override;
std::string GetApploaderDate() const override; std::string GetApploaderDate() const override;
bool IsWiiDisc() const override;
ECountry GetCountry() const override; ECountry GetCountry() const override;
u64 GetSize() const override; u64 GetSize() const override;
u64 GetRawSize() const override; u64 GetRawSize() const override;

View File

@ -61,8 +61,8 @@ GameFile::GameFile(const QString& fileName)
if (volume != nullptr) if (volume != nullptr)
{ {
if (!DiscIO::IsVolumeWadFile(volume)) if (!volume->IsWadFile())
m_platform = DiscIO::IsVolumeWiiDisc(volume) ? WII_DISC : GAMECUBE_DISC; m_platform = volume->IsWiiDisc() ? WII_DISC : GAMECUBE_DISC;
else else
m_platform = WII_WAD; m_platform = WII_WAD;
@ -305,7 +305,7 @@ const QString GameFile::GetWiiFSPath() const
if (volume == nullptr) if (volume == nullptr)
return ret; return ret;
if (DiscIO::IsVolumeWiiDisc(volume) || DiscIO::IsVolumeWadFile(volume)) if (volume->IsWiiDisc() || volume->IsWadFile())
{ {
std::string path; std::string path;
u64 title; u64 title;

View File

@ -62,14 +62,14 @@ GameListItem::GameListItem(const std::string& _rFileName)
if (pVolume != nullptr) if (pVolume != nullptr)
{ {
if (!DiscIO::IsVolumeWadFile(pVolume)) if (!pVolume->IsWadFile())
m_Platform = DiscIO::IsVolumeWiiDisc(pVolume) ? WII_DISC : GAMECUBE_DISC; m_Platform = pVolume->IsWiiDisc() ? WII_DISC : GAMECUBE_DISC;
else else
m_Platform = WII_WAD; m_Platform = WII_WAD;
m_volume_names = pVolume->GetNames(); m_volume_names = pVolume->GetNames();
m_Country = pVolume->GetCountry(); m_Country = pVolume->GetCountry();
m_FileSize = pVolume->GetRawSize(); m_FileSize = pVolume->GetRawSize();
m_VolumeSize = pVolume->GetSize(); m_VolumeSize = pVolume->GetSize();
@ -281,7 +281,7 @@ const std::string GameListItem::GetWiiFSPath() const
if (iso == nullptr) if (iso == nullptr)
return ret; return ret;
if (DiscIO::IsVolumeWiiDisc(iso) || DiscIO::IsVolumeWadFile(iso)) if (iso->IsWiiDisc() || iso->IsWadFile())
{ {
u64 title = 0; u64 title = 0;

View File

@ -128,9 +128,8 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
{ {
// Load ISO data // Load ISO data
OpenISO = DiscIO::CreateVolumeFromFilename(fileName); OpenISO = DiscIO::CreateVolumeFromFilename(fileName);
bool IsWad = DiscIO::IsVolumeWadFile(OpenISO); bool IsWad = OpenISO->IsWadFile();
bool IsWiiDisc = DiscIO::IsVolumeWiiDisc(OpenISO); if (OpenISO->IsWiiDisc())
if (IsWiiDisc)
{ {
for (int group = 0; group < 4; group++) for (int group = 0; group < 4; group++)
{ {
@ -264,7 +263,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
break; break;
} }
if (IsWiiDisc) // Only one language with Wii banners if (OpenISO->IsWiiDisc()) // Only one language with Wii banners
{ {
m_Lang->SetSelection(0); m_Lang->SetSelection(0);
m_Lang->Disable(); m_Lang->Disable();
@ -291,9 +290,9 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
// Filesystem browser/dumper // Filesystem browser/dumper
// TODO : Should we add a way to browse the wad file ? // TODO : Should we add a way to browse the wad file ?
if (!DiscIO::IsVolumeWadFile(OpenISO)) if (!OpenISO->IsWadFile())
{ {
if (DiscIO::IsVolumeWiiDisc(OpenISO)) if (OpenISO->IsWiiDisc())
{ {
for (u32 i = 0; i < WiiDisc.size(); i++) for (u32 i = 0; i < WiiDisc.size(); i++)
{ {
@ -316,7 +315,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
CISOProperties::~CISOProperties() CISOProperties::~CISOProperties()
{ {
if (!IsVolumeWiiDisc(OpenISO) && !IsVolumeWadFile(OpenISO) && pFileSystem) if (!OpenISO->IsWiiDisc() && !OpenISO->IsWadFile() && pFileSystem)
delete pFileSystem; delete pFileSystem;
// two vector's items are no longer valid after deleting filesystem // two vector's items are no longer valid after deleting filesystem
WiiDisc.clear(); WiiDisc.clear();
@ -480,7 +479,7 @@ void CISOProperties::CreateGUIControls(bool IsWad)
sbCoreOverrides->Add(sGPUDeterminism, 0, wxEXPAND|wxALL, 5); sbCoreOverrides->Add(sGPUDeterminism, 0, wxEXPAND|wxALL, 5);
wxStaticBoxSizer * const sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console")); wxStaticBoxSizer * const sbWiiOverrides = new wxStaticBoxSizer(wxVERTICAL, m_GameConfig, _("Wii Console"));
if (!DiscIO::IsVolumeWiiDisc(OpenISO) && !DiscIO::IsVolumeWadFile(OpenISO)) if (!OpenISO->IsWiiDisc() && !OpenISO->IsWadFile())
{ {
sbWiiOverrides->ShowItems(false); sbWiiOverrides->ShowItems(false);
EnableWideScreen->Hide(); EnableWideScreen->Hide();
@ -741,7 +740,7 @@ void CISOProperties::OnRightClickOnTree(wxTreeEvent& event)
popupMenu.Append(IDM_EXTRACTALL, _("Extract All Files...")); popupMenu.Append(IDM_EXTRACTALL, _("Extract All Files..."));
if (!DiscIO::IsVolumeWiiDisc(OpenISO) || if (!OpenISO->IsWiiDisc() ||
(m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0 && (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0 &&
m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection())) m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection()))
{ {
@ -784,7 +783,7 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event))
m_Treectrl->SelectItem(m_Treectrl->GetItemParent(m_Treectrl->GetSelection())); m_Treectrl->SelectItem(m_Treectrl->GetItemParent(m_Treectrl->GetSelection()));
} }
if (DiscIO::IsVolumeWiiDisc(OpenISO)) if (OpenISO->IsWiiDisc())
{ {
int partitionNum = wxAtoi(File.Mid(File.find_first_of("/") - 1, 1)); int partitionNum = wxAtoi(File.Mid(File.find_first_of("/") - 1, 1));
File.erase(0, File.find_first_of("/") + 1); // Remove "Partition x/" File.erase(0, File.find_first_of("/") + 1); // Remove "Partition x/"
@ -798,7 +797,7 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event))
void CISOProperties::ExportDir(const std::string& _rFullPath, const std::string& _rExportFolder, const int partitionNum) void CISOProperties::ExportDir(const std::string& _rFullPath, const std::string& _rExportFolder, const int partitionNum)
{ {
DiscIO::IFileSystem* const fs = DiscIO::IsVolumeWiiDisc(OpenISO) ? WiiDisc[partitionNum].FileSystem : pFileSystem; DiscIO::IFileSystem* const fs = OpenISO->IsWiiDisc() ? WiiDisc[partitionNum].FileSystem : pFileSystem;
std::vector<const DiscIO::SFileInfo*> fst; std::vector<const DiscIO::SFileInfo*> fst;
fs->GetFileList(fst); fs->GetFileList(fst);
@ -813,7 +812,7 @@ void CISOProperties::ExportDir(const std::string& _rFullPath, const std::string&
size = (u32)fst.size(); size = (u32)fst.size();
fs->ExportApploader(_rExportFolder); fs->ExportApploader(_rExportFolder);
if (!DiscIO::IsVolumeWiiDisc(OpenISO)) if (!OpenISO->IsWiiDisc())
fs->ExportDOL(_rExportFolder); fs->ExportDOL(_rExportFolder);
} }
else else
@ -898,7 +897,7 @@ void CISOProperties::OnExtractDir(wxCommandEvent& event)
if (event.GetId() == IDM_EXTRACTALL) if (event.GetId() == IDM_EXTRACTALL)
{ {
if (DiscIO::IsVolumeWiiDisc(OpenISO)) if (OpenISO->IsWiiDisc())
for (u32 i = 0; i < WiiDisc.size(); i++) for (u32 i = 0; i < WiiDisc.size(); i++)
ExportDir("", WxStrToStr(Path), i); ExportDir("", WxStrToStr(Path), i);
else else
@ -917,7 +916,7 @@ void CISOProperties::OnExtractDir(wxCommandEvent& event)
Directory += DIR_SEP_CHR; Directory += DIR_SEP_CHR;
if (DiscIO::IsVolumeWiiDisc(OpenISO)) if (OpenISO->IsWiiDisc())
{ {
int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("/") - 1, 1)); int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("/") - 1, 1));
Directory.erase(0, Directory.find_first_of("/") + 1); // Remove "Partition x/" Directory.erase(0, Directory.find_first_of("/") + 1); // Remove "Partition x/"
@ -937,7 +936,7 @@ void CISOProperties::OnExtractDataFromHeader(wxCommandEvent& event)
if (Path.empty()) if (Path.empty())
return; return;
if (DiscIO::IsVolumeWiiDisc(OpenISO)) if (OpenISO->IsWiiDisc())
{ {
wxString Directory = m_Treectrl->GetItemText(m_Treectrl->GetSelection()); wxString Directory = m_Treectrl->GetItemText(m_Treectrl->GetSelection());
unsigned int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("0123456789"), 2)); unsigned int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("0123456789"), 2));
@ -994,7 +993,7 @@ void CISOProperties::CheckPartitionIntegrity(wxCommandEvent& event)
{ {
// Normally we can't enter this function if we aren't analyzing a Wii disc // Normally we can't enter this function if we aren't analyzing a Wii disc
// anyway, but let's still check to be sure. // anyway, but let's still check to be sure.
if (!DiscIO::IsVolumeWiiDisc(OpenISO)) if (!OpenISO->IsWiiDisc())
return; return;
wxString PartitionName = m_Treectrl->GetItemText(m_Treectrl->GetSelection()); wxString PartitionName = m_Treectrl->GetItemText(m_Treectrl->GetSelection());