Add the option to filter gamelist

add a drive command that I have only seen with gcos multigame discs that allows them to boot, otherwise they will hang
add a default path for browse in memcard manager
fixed display of format time in MCMdebug.cpp

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3098 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
LPFaint99 2009-04-28 02:30:50 +00:00
parent daf17ed27f
commit f852ea41c4
11 changed files with 153 additions and 22 deletions

View File

@ -171,7 +171,7 @@ void CMemcardManagerDebug::updateHDRtab(int card)
memoryCard[card]->hdr.serial[10],memoryCard[card]->hdr.serial[11]);
wx_fmtTime.Printf(wxT("%08X, %08X"),
memoryCard[card]->hdr.fmtTime.high,memoryCard[card]->hdr.fmtTime.low);
Common::swap32(memoryCard[card]->hdr.fmtTime.high),Common::swap32(memoryCard[card]->hdr.fmtTime.low));
wx_SRAMBIAS.Printf(wxT("%02X, %02X, %02X, %02X"),
memoryCard[card]->hdr.SramBias[0],memoryCard[card]->hdr.SramBias[1],

View File

@ -83,6 +83,14 @@ void SConfig::SaveSettings()
ini.Set("Interface", "ShowLogWindow", m_InterfaceLogWindow);
ini.Set("Interface", "ShowConsole", m_InterfaceConsole);
// Game List Control
ini.Set("GameList", "ListDrives", m_ListDrives);
ini.Set("GameList", "ListWii", m_ListWii);
ini.Set("GameList", "ListGC", m_ListGC);
ini.Set("GameList", "ListJap", m_ListJap);
ini.Set("GameList", "ListPal", m_ListPal);
ini.Set("GameList", "ListUsa", m_ListUsa);
// Core
ini.Set("Core", "HLEBios", m_LocalCoreStartupParameter.bHLEBios);
ini.Set("Core", "UseDynarec", m_LocalCoreStartupParameter.bUseJIT);
@ -188,6 +196,14 @@ void SConfig::LoadSettings()
ini.Get("Interface", "ShowLogWindow", &m_InterfaceLogWindow, false);
ini.Get("Interface", "ShowConsole", &m_InterfaceConsole, false);
// Game List Control
ini.Get("GameList", "ListDrives", &m_ListDrives, false);
ini.Get("GameList", "ListWii", &m_ListWii, true);
ini.Get("GameList", "ListGC", &m_ListGC, true);
ini.Get("GameList", "ListJap", &m_ListJap, true);
ini.Get("GameList", "ListPal", &m_ListPal, true);
ini.Get("GameList", "ListUsa", &m_ListUsa, true);
// Core
ini.Get("Core", "HLEBios", &m_LocalCoreStartupParameter.bHLEBios, true);
ini.Get("Core", "UseDynarec", &m_LocalCoreStartupParameter.bUseJIT, true);
@ -231,3 +247,4 @@ void SConfig::LoadSettings()
ini.Get("Core", "WiiMote1Plugin", &m_LocalCoreStartupParameter.m_strWiimotePlugin[0], m_DefaultWiiMotePlugin.c_str());
}
}

View File

@ -67,6 +67,12 @@ struct SConfig
bool m_InterfaceStatusbar;
bool m_InterfaceLogWindow;
bool m_InterfaceConsole;
bool m_ListDrives;
bool m_ListWii;
bool m_ListGC;
bool m_ListPal;
bool m_ListUsa;
bool m_ListJap;
// save settings
void SaveSettings();
@ -91,3 +97,4 @@ struct SConfig
};
#endif // endif config manager

View File

@ -539,6 +539,9 @@ void ExecuteCommand(UDIDMAControlRegister& _DMAControlReg)
// REQUEST ERROR (Immediate)
// Command/Subcommand/Padding <- E0000000
//=========================================================================================================
case 0xD9:
INFO_LOG(DVDINTERFACE, "DVD: command 0xD9, called by gcos multigame discs\n Report if you are running anything else");
break;
case 0xE0:
ERROR_LOG(DVDINTERFACE, "Requesting error");
dvdMem.Immediate = g_ErrorCode;

View File

@ -275,6 +275,13 @@ EVT_MENU(IDM_TOGGLE_STATUSBAR, CFrame::OnToggleStatusbar)
EVT_MENU(IDM_TOGGLE_LOGWINDOW, CFrame::OnToggleLogWindow)
EVT_MENU(IDM_TOGGLE_CONSOLE, CFrame::OnToggleConsole)
EVT_MENU(IDM_LISTDRIVES, CFrame::GameListChanged)
EVT_MENU(IDM_LISTWII, CFrame::GameListChanged)
EVT_MENU(IDM_LISTGC, CFrame::GameListChanged)
EVT_MENU(IDM_LISTJAP, CFrame::GameListChanged)
EVT_MENU(IDM_LISTPAL, CFrame::GameListChanged)
EVT_MENU(IDM_LISTUSA, CFrame::GameListChanged)
EVT_MENU_RANGE(IDM_LOADSLOT1, IDM_LOADSLOT10, CFrame::OnLoadState)
EVT_MENU_RANGE(IDM_SAVESLOT1, IDM_SAVESLOT10, CFrame::OnSaveState)
EVT_MENU_RANGE(IDM_DRIVE1, IDM_DRIVE24, CFrame::OnBootDrive)
@ -673,4 +680,4 @@ void CFrame::Update()
}
}
#endif
//////////////////////////////////////////

View File

@ -218,7 +218,8 @@ class CFrame : public wxFrame
void OnShow_CheatsWindow(wxCommandEvent& event);
void OnShow_InfoWindow(wxCommandEvent& event);
void OnLoadWiiMenu(wxCommandEvent& event);
void OnLoadWiiMenu(wxCommandEvent& event);
void GameListChanged(wxCommandEvent& event);
void OnGameListCtrl_ItemActivated(wxListEvent& event);
@ -248,3 +249,4 @@ class CFrame : public wxFrame
////////////////////////////////
#endif // __FRAME_H_

View File

@ -155,27 +155,45 @@ void CFrame::CreateMenu()
// Tools menu
wxMenu* toolsMenu = new wxMenu;
toolsMenu->AppendCheckItem(IDM_TOGGLE_TOOLBAR, _T("Show &Toolbar"));
toolsMenu->Check(IDM_TOGGLE_TOOLBAR, SConfig::GetInstance().m_InterfaceToolbar);
toolsMenu->AppendCheckItem(IDM_TOGGLE_STATUSBAR, _T("Show &Statusbar"));
toolsMenu->Check(IDM_TOGGLE_STATUSBAR, SConfig::GetInstance().m_InterfaceStatusbar);
toolsMenu->AppendCheckItem(IDM_TOGGLE_LOGWINDOW, _T("Show &Logwindow"));
toolsMenu->Check(IDM_TOGGLE_LOGWINDOW, m_bLogWindow);
toolsMenu->AppendCheckItem(IDM_TOGGLE_CONSOLE, _T("Show &Console"));
toolsMenu->Check(IDM_TOGGLE_CONSOLE, SConfig::GetInstance().m_InterfaceConsole);
toolsMenu->AppendSeparator();
toolsMenu->Append(IDM_MEMCARD, _T("&Memcard Manager"));
toolsMenu->Append(IDM_CHEATS, _T("Action &Replay Manager"));
toolsMenu->Append(IDM_INFO, _T("System Information"));
// toolsMenu->Append(IDM_SDCARD, _T("Mount &SDCard")); // Disable for now
if (DiscIO::CNANDContentManager::Access().GetNANDLoader(FULL_WII_MENU_DIR).IsValid())
{
toolsMenu->Append(IDM_LOAD_WII_MENU, _T("Load Wii Menu"));
}
if (DiscIO::CNANDContentManager::Access().GetNANDLoader(FULL_WII_MENU_DIR).IsValid())
{
toolsMenu->Append(IDM_LOAD_WII_MENU, _T("Load Wii Menu"));
}
menuBar->Append(toolsMenu, _T("&Tools"));
wxMenu* viewMenu = new wxMenu;
viewMenu->AppendCheckItem(IDM_TOGGLE_TOOLBAR, _T("Show &Toolbar"));
viewMenu->Check(IDM_TOGGLE_TOOLBAR, SConfig::GetInstance().m_InterfaceToolbar);
viewMenu->AppendCheckItem(IDM_TOGGLE_STATUSBAR, _T("Show &Statusbar"));
viewMenu->Check(IDM_TOGGLE_STATUSBAR, SConfig::GetInstance().m_InterfaceStatusbar);
viewMenu->AppendCheckItem(IDM_TOGGLE_LOGWINDOW, _T("Show &Logwindow"));
viewMenu->Check(IDM_TOGGLE_LOGWINDOW, m_bLogWindow);
viewMenu->AppendCheckItem(IDM_TOGGLE_CONSOLE, _T("Show &Console"));
viewMenu->Check(IDM_TOGGLE_CONSOLE, SConfig::GetInstance().m_InterfaceConsole);
viewMenu->AppendSeparator();
viewMenu->AppendCheckItem(IDM_LISTWII, _T("Show Wii"));
viewMenu->Check(IDM_LISTWII, SConfig::GetInstance().m_ListWii);
viewMenu->AppendCheckItem(IDM_LISTGC, _T("Show GameCube"));
viewMenu->Check(IDM_LISTGC, SConfig::GetInstance().m_ListGC);
viewMenu->AppendCheckItem(IDM_LISTJAP, _T("Show JAP"));
viewMenu->Check(IDM_LISTJAP, SConfig::GetInstance().m_ListJap);
viewMenu->AppendCheckItem(IDM_LISTPAL, _T("Show PAL"));
viewMenu->Check(IDM_LISTPAL, SConfig::GetInstance().m_ListPal);
viewMenu->AppendCheckItem(IDM_LISTUSA, _T("Show USA"));
viewMenu->Check(IDM_LISTUSA, SConfig::GetInstance().m_ListUsa);
#ifdef _WIN32 //TODO test drive loading on linux, I cannot load from drive on my linux system Dolphin just crashes
viewMenu->AppendCheckItem(IDM_LISTDRIVES, _T("Show Drives"));
viewMenu->Check(IDM_LISTDRIVES, SConfig::GetInstance().m_ListDrives);
#endif
menuBar->Append(viewMenu, _T("&View"));
// Help menu
wxMenu* helpMenu = new wxMenu;
/*helpMenu->Append(wxID_HELP, _T("&Help"));
@ -881,4 +899,33 @@ void CFrame::UpdateGUI()
FitInside();
}
void CFrame::GameListChanged(wxCommandEvent& event)
{
switch (event.GetId())
{
case IDM_LISTWII:
SConfig::GetInstance().m_ListWii = event.IsChecked();
break;
case IDM_LISTGC:
SConfig::GetInstance().m_ListGC = event.IsChecked();
break;
case IDM_LISTJAP:
SConfig::GetInstance().m_ListJap = event.IsChecked();
break;
case IDM_LISTPAL:
SConfig::GetInstance().m_ListPal = event.IsChecked();
break;
case IDM_LISTUSA:
SConfig::GetInstance().m_ListUsa = event.IsChecked();
break;
case IDM_LISTDRIVES:
SConfig::GetInstance().m_ListDrives = event.IsChecked();
break;
}
if (m_GameListCtrl)
{
m_GameListCtrl->Update();
}
}

View File

@ -31,6 +31,7 @@
#include "ISOProperties.h"
#include "IniFile.h"
#include "FileUtil.h"
#include "CDUtils.h"
#if USE_XPM_BITMAPS
#include "../resources/Flag_Europe.xpm"
@ -293,7 +294,7 @@ void CGameListCtrl::InsertItemInReportView(long _Index)
SetItem(_Index, COLUMN_TITLE, wxString::From8BitData(rISOFile.GetName(0).c_str()), -1);
SetItem(_Index, COLUMN_NOTES, wxString::From8BitData(rISOFile.GetDescription(0).c_str()), -1);
break;
default:
default:
m_gameList.append(std::string(wxString::From8BitData(rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()).mb_str()) + " (E)\n");
SetItem(_Index, COLUMN_TITLE,
wxString::From8BitData(rISOFile.GetName((int)SConfig::GetInstance().m_InterfaceLanguage).c_str()), -1);
@ -462,10 +463,45 @@ void CGameListCtrl::ScanForISOs()
GameListItem ISOFile(rFilenames[i]);
if (ISOFile.IsValid())
{
m_ISOFiles.push_back(ISOFile);
bool list = true;
if (!SConfig::GetInstance().m_ListWii && ISOFile.IsWii())
list = false;
if (!SConfig::GetInstance().m_ListGC && !ISOFile.IsWii())
list = false;
switch(ISOFile.GetCountry())
{
case DiscIO::IVolume::COUNTRY_JAP:
if (!SConfig::GetInstance().m_ListJap)
list = false;
break;
case DiscIO::IVolume::COUNTRY_USA:
if (!SConfig::GetInstance().m_ListUsa)
list = false;
break;
default:
if (!SConfig::GetInstance().m_ListPal)
list = false;
break;
}
if (list) m_ISOFiles.push_back(ISOFile);
}
}
}
if (SConfig::GetInstance().m_ListDrives)
{
char **drives = cdio_get_devices();
GameListItem * Drive[24];
for (int i = 0; drives[i] != NULL && i < 24; i++)
{
Drive[i] = new GameListItem(drives[i]);
if (Drive[i]->IsValid()) m_ISOFiles.push_back(*Drive[i]);
}
}
std::sort(m_ISOFiles.begin(), m_ISOFiles.end());
}

View File

@ -63,7 +63,14 @@ enum
IDM_INFO,
IDM_CHANGEDISC,
IDM_PROPERTIES,
IDM_LOAD_WII_MENU,
IDM_LOAD_WII_MENU,
IDM_LISTWII,
IDM_LISTGC,
IDM_LISTJAP,
IDM_LISTPAL,
IDM_LISTUSA,
IDM_LISTDRIVES,
IDM_HELPABOUT, // Help menu
IDM_HELPWEBSITE,
@ -154,3 +161,4 @@ enum
#endif // HAVE_WX
#endif // _GLOBALS_H

View File

@ -32,7 +32,7 @@
#include "ChunkFile.h"
#include "../resources/no_banner.cpp"
#define CACHE_REVISION 0x107
#define CACHE_REVISION 0x108
#define DVD_BANNER_WIDTH 96
#define DVD_BANNER_HEIGHT 32
@ -168,6 +168,7 @@ void GameListItem::DoState(PointerWrap &p)
p.Do(m_Country);
p.Do(m_BlobCompressed);
p.DoBuffer(&m_pImage, m_ImageSize);
p.Do(m_IsWii);
}
std::string GameListItem::CreateCacheFilename()
@ -175,6 +176,7 @@ std::string GameListItem::CreateCacheFilename()
std::string Filename;
SplitPath(m_FileName, NULL, &Filename, NULL);
if (Filename.empty()) return Filename; // Disc Drive
// We add gcz to the cache file if the file is compressed to avoid it reading
// the uncompressed file's cache if it has the same name, but not the same ext.
if (DiscIO::IsCompressedBlob(m_FileName.c_str()))
@ -203,3 +205,4 @@ const std::string& GameListItem::GetName(int index) const
}
return m_Name[0];
}

View File

@ -245,7 +245,7 @@ void CMemcardManager::CreateGUIControls()
sPages[slot]->Add(0, 0, 1, wxEXPAND|wxALL, 0);
sPages[slot]->Add(m_NextPage[slot], 0, wxEXPAND|wxALL, 1);
m_MemcardPath[slot] = new wxFilePickerCtrl(this, ID_MEMCARDPATH_A + slot, wxEmptyString, wxT("Choose a memory card:"),
m_MemcardPath[slot] = new wxFilePickerCtrl(this, ID_MEMCARDPATH_A + slot, wxT(FULL_GC_USER_DIR), wxT("Choose a memory card:"),
wxT("Gamecube Memory Cards (*.raw,*.gcp)|*.raw;*.gcp"), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN);
m_MemcardList[slot] = new CMemcardListCtrl(this, ID_MEMCARDLIST_A + slot, wxDefaultPosition, wxSize(350,400),
@ -919,3 +919,4 @@ void CMemcardManager::CMemcardListCtrl::OnRightClick(wxMouseEvent& event)
}
PopupMenu(&popupMenu);
}