summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorsl1nk3.s <sl1nk3.s@gmail.com>2009-05-02 18:06:42 +0000
committersl1nk3.s <sl1nk3.s@gmail.com>2009-05-02 18:06:42 +0000
commit168362288c601af0277e4e0f57d5965516efb99e (patch)
treede401b9e9ac6464994f15c2dbdc9ac2fef7cfc8e /Source/Core
parente89af68f4de955ab557165f532e707e1ef923d25 (diff)
Added Open Wii save folder menu item to GameListCtrl, fixed a few remaining path and casting problems
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3135 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp6
-rw-r--r--Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp19
-rw-r--r--Source/Core/DolphinWX/Src/GameListCtrl.cpp12
-rw-r--r--Source/Core/DolphinWX/Src/GameListCtrl.h1
-rw-r--r--Source/Core/DolphinWX/Src/Globals.h1
-rw-r--r--Source/Core/DolphinWX/Src/ISOFile.cpp26
-rw-r--r--Source/Core/DolphinWX/Src/ISOFile.h1
7 files changed, 55 insertions, 11 deletions
diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
index 5290e1991e..1802962a3a 100644
--- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
+++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp
@@ -73,7 +73,7 @@ CWII_IPC_HLE_Device_es::CWII_IPC_HLE_Device_es(u32 _DeviceID, const std::string&
// blindly grab the titleID from the disc - it's unencrypted at:
// offset 0x0F8001DC and 0x0F80044C
VolumeHandler::RAWReadToPtr((u8*)&m_TitleID, (u64)0x0F8001DC, 8);
- m_TitleID = Common::swap64(m_TitleID);
+ m_TitleID = Common::swap64(m_TitleID);
}
else
{
@@ -92,7 +92,7 @@ CWII_IPC_HLE_Device_es::CWII_IPC_HLE_Device_es(u32 _DeviceID, const std::string&
//FindValidTitleIDs();
- INFO_LOG(WII_IPC_ES, "Set default title to %08x/%08x", m_TitleID>>32, m_TitleID);
+ INFO_LOG(WII_IPC_ES, "Set default title to %08x/%08x", (u32)(m_TitleID>>32), (u32)m_TitleID);
}
CWII_IPC_HLE_Device_es::~CWII_IPC_HLE_Device_es()
@@ -574,7 +574,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress)
}
Memory::Write_U32(0, _CommandAddress + 0x4);
- INFO_LOG(WII_IPC_ES, "IOCTL_ES_GETTMDVIEWS: title: %08x/%08x (buffer size: %i)", TitleID >> 32, TitleID, MaxCount);
+ INFO_LOG(WII_IPC_ES, "IOCTL_ES_GETTMDVIEWS: title: %08x/%08x (buffer size: %i)", (u32)(TitleID >> 32), (u32)TitleID, MaxCount);
return true;
}
break;
diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp
index 062022f156..bd74d27159 100644
--- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp
+++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp
@@ -57,16 +57,19 @@ bool CWII_IPC_HLE_Device_fs::Open(u32 _CommandAddress, u32 _Mode)
// create home directory
if (VolumeHandler::IsValid())
{
- u32 TitleID = VolumeHandler::Read32(0);
- _dbg_assert_(WII_IPC_FILEIO, TitleID != 0);
- if (TitleID == 0) TitleID = 0xF00DBEEF;
+ char Path[260+1];
+ u32 TitleID, GameID;
+ VolumeHandler::RAWReadToPtr((u8*)&TitleID, 0x0F8001DC, 4);
+
+ TitleID = Common::swap32(TitleID);
+ GameID = VolumeHandler::Read32(0);
- char* pTitleID = (char*)&TitleID;
+ _dbg_assert_(WII_IPC_FILEIO, GameID != 0);
+ if (GameID == 0) GameID = 0xF00DBEEF;
+ if (TitleID == 0) TitleID = 0x00010000;
+
+ sprintf(Path, FULL_WII_USER_DIR "title/%08x/%08x/data/nocopy/", TitleID, GameID);
- char Path[260+1];
- sprintf(Path, FULL_WII_USER_DIR "title/00010000/%02x%02x%02x%02x/data/nocopy/",
- (u8)pTitleID[3], (u8)pTitleID[2], (u8)pTitleID[1], (u8)pTitleID[0]);
-
File::CreateFullPath(Path);
}
diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp
index 9daa85280f..4acc0b6e19 100644
--- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp
+++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp
@@ -88,6 +88,7 @@ EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, CGameListCtrl::OnColBeginDrag)
EVT_LIST_COL_CLICK(LIST_CTRL, CGameListCtrl::OnColumnClick)
EVT_MENU(IDM_PROPERTIES, CGameListCtrl::OnProperties)
EVT_MENU(IDM_OPENCONTAININGFOLDER, CGameListCtrl::OnOpenContainingFolder)
+EVT_MENU(IDM_OPENSAVEFOLDER, CGameListCtrl::OnOpenSaveFolder)
EVT_MENU(IDM_SETDEFAULTGCM, CGameListCtrl::OnSetDefaultGCM)
EVT_MENU(IDM_COMPRESSGCM, CGameListCtrl::OnCompressGCM)
EVT_MENU(IDM_MULTICOMPRESSGCM, CGameListCtrl::OnMultiCompressGCM)
@@ -620,6 +621,8 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
wxMenu popupMenu;
popupMenu.Append(IDM_PROPERTIES, _("&Properties"));
popupMenu.AppendSeparator();
+ if (selected_iso->IsWii())
+ popupMenu.Append(IDM_OPENSAVEFOLDER, _("Open Wii &save folder"));
popupMenu.Append(IDM_OPENCONTAININGFOLDER, _("Open &containing folder"));
popupMenu.AppendCheckItem(IDM_SETDEFAULTGCM, _("Set as &default ISO"));
@@ -687,6 +690,15 @@ void CGameListCtrl::OnOpenContainingFolder(wxCommandEvent& WXUNUSED (event))
WxUtils::Explore(path.c_str());
}
+void CGameListCtrl::OnOpenSaveFolder(wxCommandEvent& WXUNUSED (event))
+{
+ const GameListItem *iso = GetSelectedISO();
+ if (!iso)
+ return;
+ if (iso->GetWiiFSPath() != "NULL")
+ WxUtils::Explore(iso->GetWiiFSPath().c_str());
+}
+
// =======================================================
// Save this file as the default file
diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.h b/Source/Core/DolphinWX/Src/GameListCtrl.h
index f7ebb491e8..9b5d52e7c8 100644
--- a/Source/Core/DolphinWX/Src/GameListCtrl.h
+++ b/Source/Core/DolphinWX/Src/GameListCtrl.h
@@ -79,6 +79,7 @@ private:
void OnSize(wxSizeEvent& event);
void OnProperties(wxCommandEvent& event);
void OnOpenContainingFolder(wxCommandEvent& event);
+ void OnOpenSaveFolder(wxCommandEvent& event);
void OnSetDefaultGCM(wxCommandEvent& event);
void OnDeleteGCM(wxCommandEvent& event);
void OnCompressGCM(wxCommandEvent& event);
diff --git a/Source/Core/DolphinWX/Src/Globals.h b/Source/Core/DolphinWX/Src/Globals.h
index 2e359524ac..89a8c67a5f 100644
--- a/Source/Core/DolphinWX/Src/Globals.h
+++ b/Source/Core/DolphinWX/Src/Globals.h
@@ -98,6 +98,7 @@ enum
IDM_TOGGLE_CONSOLE,
IDM_NOTIFYMAPLOADED,
IDM_OPENCONTAININGFOLDER,
+ IDM_OPENSAVEFOLDER,
IDM_SETDEFAULTGCM,
IDM_DELETEGCM,
IDM_COMPRESSGCM,
diff --git a/Source/Core/DolphinWX/Src/ISOFile.cpp b/Source/Core/DolphinWX/Src/ISOFile.cpp
index e928d46903..773b323a26 100644
--- a/Source/Core/DolphinWX/Src/ISOFile.cpp
+++ b/Source/Core/DolphinWX/Src/ISOFile.cpp
@@ -206,3 +206,29 @@ const std::string& GameListItem::GetName(int index) const
return m_Name[0];
}
+const std::string GameListItem::GetWiiFSPath() const
+{
+ DiscIO::IVolume *Iso = DiscIO::CreateVolumeFromFilename(m_FileName);
+
+ if (Iso != NULL)
+ {
+ if (DiscIO::IsVolumeWiiDisc(Iso))
+ {
+ char Path[250];
+ u64 Title;
+
+ Iso->RAWRead((u64)0x0F8001DC, 8, (u8*)&Title);
+ Title = Common::swap64(Title);
+
+ sprintf(Path, FULL_WII_USER_DIR "title/%08x/%08x/data/", (u32)(Title>>32), (u32)Title);
+
+ if (!File::Exists(Path))
+ File::CreateFullPath(Path);
+
+ return std::string(wxGetCwd().mb_str()) + std::string(Path).substr(strlen(ROOT_DIR));
+ }
+ }
+
+ return "NULL";
+}
+
diff --git a/Source/Core/DolphinWX/Src/ISOFile.h b/Source/Core/DolphinWX/Src/ISOFile.h
index 3819c42181..9b701011db 100644
--- a/Source/Core/DolphinWX/Src/ISOFile.h
+++ b/Source/Core/DolphinWX/Src/ISOFile.h
@@ -33,6 +33,7 @@ public:
const std::string& GetCompany() const {return m_Company;}
const std::string& GetDescription(int index) const;
const std::string& GetUniqueID() const {return m_UniqueID;}
+ const std::string GetWiiFSPath() const;
DiscIO::IVolume::ECountry GetCountry() const {return m_Country;}
const std::string& GetIssues() const {return m_Issues;}
bool IsCompressed() const {return m_BlobCompressed;}