don't fool with sysconf if you're booting a gc game, and add back ability to double click on initial gamelistitem in order to add a GCMPath.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1922 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Shawn Hoffman 2009-01-19 01:30:54 +00:00
parent 4930a6d6cb
commit 5708e14a0e
2 changed files with 61 additions and 45 deletions

View File

@ -141,54 +141,57 @@ bool BootCore(const std::string& _rFilename)
ini.Get("Core", "OptimizeQuantizers", &StartUp.bOptimizeQuantizers, StartUp.bOptimizeQuantizers); ini.Get("Core", "OptimizeQuantizers", &StartUp.bOptimizeQuantizers, StartUp.bOptimizeQuantizers);
ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack); ini.Get("Core", "TLBHack", &StartUp.iTLBHack, StartUp.iTLBHack);
// ------------------------------------------------ if (StartUp.bWii)
// Update SYSCONF with game specific settings
// ----------------
bool bEnableProgressiveScan, bEnableWideScreen;
//bRefreshList = false;
FILE* pStream; // file handle
u8 m_SYSCONF[0x4000]; // SYSCONF file
u16 IPL_PGS = 0x17CC; // pregressive scan
u16 IPL_AR = 0x04D9; // widescreen
std::string FullSYSCONFPath = FULL_WII_USER_DIR "shared2/sys/SYSCONF";
// Load Wii SYSCONF
pStream = NULL;
pStream = fopen(FullSYSCONFPath.c_str(), "rb");
if (pStream != NULL)
{ {
fread(m_SYSCONF, 1, 0x4000, pStream); // ------------------------------------------------
fclose(pStream); // Update SYSCONF with game specific settings
// ----------------
bool bEnableProgressiveScan, bEnableWideScreen;
//bRefreshList = false;
FILE* pStream; // file handle
u8 m_SYSCONF[0x4000]; // SYSCONF file
u16 IPL_PGS = 0x17CC; // pregressive scan
u16 IPL_AR = 0x04D9; // widescreen
std::string FullSYSCONFPath = FULL_WII_USER_DIR "shared2/sys/SYSCONF";
//wxMessageBox(wxString::Format(": %02x", m_SYSCONF[IPL_AR])); // Load Wii SYSCONF
ini.Get("Core", "EnableProgressiveScan", &bEnableProgressiveScan, m_SYSCONF[IPL_PGS] != 0);
ini.Get("Core", "EnableWideScreen", &bEnableWideScreen, m_SYSCONF[IPL_AR] != 0);
m_SYSCONF[IPL_PGS] = bEnableProgressiveScan;
m_SYSCONF[IPL_AR] = bEnableWideScreen;
//wxMessageBox(wxString::Format(": %02x", m_SYSCONF[IPL_AR]));
// Enable custom Wii SYSCONF settings by saving the file to shared2
pStream = NULL; pStream = NULL;
pStream = fopen(FullSYSCONFPath.c_str(), "wb"); pStream = fopen(FullSYSCONFPath.c_str(), "rb");
if (pStream != NULL) if (pStream != NULL)
{ {
fwrite(m_SYSCONF, 1, 0x4000, pStream); fread(m_SYSCONF, 1, 0x4000, pStream);
fclose(pStream); fclose(pStream);
//wxMessageBox(wxString::Format(": %02x", m_SYSCONF[IPL_AR]));
ini.Get("Core", "EnableProgressiveScan", &bEnableProgressiveScan, m_SYSCONF[IPL_PGS] != 0);
ini.Get("Core", "EnableWideScreen", &bEnableWideScreen, m_SYSCONF[IPL_AR] != 0);
m_SYSCONF[IPL_PGS] = bEnableProgressiveScan;
m_SYSCONF[IPL_AR] = bEnableWideScreen;
//wxMessageBox(wxString::Format(": %02x", m_SYSCONF[IPL_AR]));
// Enable custom Wii SYSCONF settings by saving the file to shared2
pStream = NULL;
pStream = fopen(FullSYSCONFPath.c_str(), "wb");
if (pStream != NULL)
{
fwrite(m_SYSCONF, 1, 0x4000, pStream);
fclose(pStream);
}
else
{
PanicAlert("Could not write to %s", FullSYSCONFPath.c_str());
}
} }
else else
{ {
PanicAlert("Could not write to %s", FullSYSCONFPath.c_str()); PanicAlert("Could not read %s", FullSYSCONFPath.c_str());
} }
// ---------
} }
else
{
PanicAlert("Could not read %s", FullSYSCONFPath.c_str());
}
// ---------
} }
// ============== // ==============

View File

@ -106,7 +106,7 @@ void CGameListCtrl::BrowseForDirectory()
wxGetHomeDir(&dirHome); wxGetHomeDir(&dirHome);
// browse // browse
wxDirDialog dialog(this, _("Browse directory"), dirHome, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); wxDirDialog dialog(this, _("Browse for a directory to add"), dirHome, wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST);
if (dialog.ShowModal() == wxID_OK) if (dialog.ShowModal() == wxID_OK)
{ {
@ -549,15 +549,28 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
const GameListItem * CGameListCtrl::GetSelectedISO() const GameListItem * CGameListCtrl::GetSelectedISO()
{ {
long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (m_ISOFiles.size() == 0)
if (item == -1) {
// There are no detected games, so add a GCMPath
BrowseForDirectory();
return 0; return 0;
}
else else
{ {
if (GetSelectedItemCount() > 1) long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
SetItemState(item, 0, wxLIST_STATE_SELECTED); if (item == -1) // -1 means the selection is bogus, not a gamelistitem
return 0;
else
{
// Here is a little workaround for multiselections:
// when > 1 item is selected, return info on the first one
// and deselect it so the next time GetSelectedISO() is called,
// the next item's info is returned
if (GetSelectedItemCount() > 1)
SetItemState(item, 0, wxLIST_STATE_SELECTED);
return &m_ISOFiles[GetItemData(item)]; return &m_ISOFiles[GetItemData(item)];
}
} }
} }