mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-07 23:41:26 +12:00
commit
fe0e34cbe1
5 changed files with 130 additions and 4 deletions
|
@ -10,8 +10,12 @@ GameViewer::GameViewer(wxWindow* parent) : wxListView(parent)
|
||||||
|
|
||||||
m_path = "/dev_hdd0/game/";
|
m_path = "/dev_hdd0/game/";
|
||||||
|
|
||||||
|
m_popup = new wxMenu();
|
||||||
|
m_popup->Append(0, _T("Remove Game"));
|
||||||
|
|
||||||
Bind(wxEVT_LIST_ITEM_ACTIVATED, &GameViewer::DClick, this);
|
Bind(wxEVT_LIST_ITEM_ACTIVATED, &GameViewer::DClick, this);
|
||||||
Bind(wxEVT_LIST_COL_CLICK, &GameViewer::OnColClick, this);
|
Bind(wxEVT_LIST_COL_CLICK, &GameViewer::OnColClick, this);
|
||||||
|
Bind(wxEVT_LIST_ITEM_RIGHT_CLICK, &GameViewer::RightClick, this);
|
||||||
|
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
@ -84,6 +88,7 @@ void GameViewer::LoadGames()
|
||||||
m_games.push_back(info->name);
|
m_games.push_back(info->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dir.Close();
|
||||||
|
|
||||||
//ConLog.Write("path: %s", m_path.wx_str());
|
//ConLog.Write("path: %s", m_path.wx_str());
|
||||||
//ConLog.Write("folders count: %d", m_games.GetCount());
|
//ConLog.Write("folders count: %d", m_games.GetCount());
|
||||||
|
@ -163,3 +168,71 @@ void GameViewer::DClick(wxListEvent& event)
|
||||||
}
|
}
|
||||||
Emu.Run();
|
Emu.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GameViewer::RightClick(wxListEvent& event)
|
||||||
|
{
|
||||||
|
m_popup->Destroy(m_popup->FindItemByPosition(0));
|
||||||
|
|
||||||
|
wxMenuItem *pMenuItemA = m_popup->Append(event.GetIndex(), _T("Remove Game"));
|
||||||
|
Bind(wxEVT_MENU, &GameViewer::RemoveGame, this, event.GetIndex());
|
||||||
|
PopupMenu(m_popup, event.GetPoint());
|
||||||
|
}
|
||||||
|
|
||||||
|
class WxDirDeleteTraverser : public wxDirTraverser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual wxDirTraverseResult OnFile(const wxString& filename)
|
||||||
|
{
|
||||||
|
if (!wxRemoveFile(filename)){
|
||||||
|
ConLog.Error("Couldn't delete File: %s", fmt::ToUTF8(filename).c_str());
|
||||||
|
}
|
||||||
|
return wxDIR_CONTINUE;
|
||||||
|
}
|
||||||
|
virtual wxDirTraverseResult OnDir(const wxString& dirname)
|
||||||
|
{
|
||||||
|
wxDir dir(dirname);
|
||||||
|
dir.Traverse(*this);
|
||||||
|
if (!wxRmDir(dirname)){
|
||||||
|
//this get triggered a few times while clearing folders
|
||||||
|
//but if this gets reimplented we should probably warn
|
||||||
|
//if directories can't be removed
|
||||||
|
}
|
||||||
|
return wxDIR_CONTINUE;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void GameViewer::RemoveGame(wxCommandEvent& event)
|
||||||
|
{
|
||||||
|
wxString GameName = this->GetItemText(event.GetId(), 5);
|
||||||
|
|
||||||
|
Emu.GetVFS().Init(m_path);
|
||||||
|
vfsDir dir(m_path);
|
||||||
|
if (!dir.IsOpened()) return;
|
||||||
|
|
||||||
|
std::string sPath = dir.GetPath();
|
||||||
|
std::string sGameFolder = GameName.mb_str().data();
|
||||||
|
|
||||||
|
Emu.GetVFS().UnMountAll();
|
||||||
|
|
||||||
|
sPath.erase(0, 1);
|
||||||
|
|
||||||
|
RemoveFolder(sPath + sGameFolder);
|
||||||
|
|
||||||
|
Refresh();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GameViewer::RemoveFolder(std::string localPath)
|
||||||
|
{
|
||||||
|
//TODO: replace wxWidgetsSpecific filesystem stuff
|
||||||
|
if (wxDirExists(fmt::FromUTF8(localPath))){
|
||||||
|
WxDirDeleteTraverser deleter;
|
||||||
|
wxDir dir(localPath);
|
||||||
|
dir.Traverse(deleter);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -242,7 +242,7 @@ class GameViewer : public wxListView
|
||||||
std::vector<std::string> m_games;
|
std::vector<std::string> m_games;
|
||||||
std::vector<GameInfo> m_game_data;
|
std::vector<GameInfo> m_game_data;
|
||||||
ColumnsArr m_columns;
|
ColumnsArr m_columns;
|
||||||
|
wxMenu* m_popup;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ListSortInfo SortInfo;
|
ListSortInfo SortInfo;
|
||||||
|
@ -260,7 +260,10 @@ public:
|
||||||
void LoadSettings();
|
void LoadSettings();
|
||||||
|
|
||||||
void Refresh();
|
void Refresh();
|
||||||
|
void RemoveGame(wxCommandEvent& event);
|
||||||
|
bool RemoveFolder(std::string localPath);
|
||||||
private:
|
private:
|
||||||
virtual void DClick(wxListEvent& event);
|
virtual void DClick(wxListEvent& event);
|
||||||
void OnColClick(wxListEvent& event);
|
virtual void OnColClick(wxListEvent& event);
|
||||||
|
virtual void RightClick(wxListEvent& event);
|
||||||
};
|
};
|
||||||
|
|
|
@ -39,6 +39,7 @@ enum IDs
|
||||||
id_tools_fnid_generator,
|
id_tools_fnid_generator,
|
||||||
id_help_about,
|
id_help_about,
|
||||||
id_update_dbg,
|
id_update_dbg,
|
||||||
|
id_boot_game_and_run,
|
||||||
};
|
};
|
||||||
|
|
||||||
wxString GetPaneName()
|
wxString GetPaneName()
|
||||||
|
@ -65,6 +66,7 @@ MainFrame::MainFrame()
|
||||||
wxMenu* menu_boot = new wxMenu();
|
wxMenu* menu_boot = new wxMenu();
|
||||||
menubar->Append(menu_boot, "Boot");
|
menubar->Append(menu_boot, "Boot");
|
||||||
menu_boot->Append(id_boot_game, "Boot game");
|
menu_boot->Append(id_boot_game, "Boot game");
|
||||||
|
menu_boot->Append(id_boot_game_and_run, "Boot game and start");
|
||||||
menu_boot->Append(id_install_pkg, "Install PKG");
|
menu_boot->Append(id_install_pkg, "Install PKG");
|
||||||
menu_boot->AppendSeparator();
|
menu_boot->AppendSeparator();
|
||||||
menu_boot->Append(id_boot_elf, "Boot (S)ELF");
|
menu_boot->Append(id_boot_elf, "Boot (S)ELF");
|
||||||
|
@ -109,6 +111,7 @@ MainFrame::MainFrame()
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
Bind(wxEVT_MENU, &MainFrame::BootGame, this, id_boot_game);
|
Bind(wxEVT_MENU, &MainFrame::BootGame, this, id_boot_game);
|
||||||
|
Bind(wxEVT_MENU, &MainFrame::BootGameAndRun, this, id_boot_game_and_run);
|
||||||
Bind(wxEVT_MENU, &MainFrame::InstallPkg, this, id_install_pkg);
|
Bind(wxEVT_MENU, &MainFrame::InstallPkg, this, id_install_pkg);
|
||||||
Bind(wxEVT_MENU, &MainFrame::BootElf, this, id_boot_elf);
|
Bind(wxEVT_MENU, &MainFrame::BootElf, this, id_boot_elf);
|
||||||
|
|
||||||
|
@ -184,6 +187,11 @@ void MainFrame::BootGame(wxCommandEvent& WXUNUSED(event))
|
||||||
if(Emu.BootGame(ctrl.GetPath().ToStdString()))
|
if(Emu.BootGame(ctrl.GetPath().ToStdString()))
|
||||||
{
|
{
|
||||||
ConLog.Success("Game: boot done.");
|
ConLog.Success("Game: boot done.");
|
||||||
|
|
||||||
|
if (Ini.HLEAlwaysStart.GetValue() && Emu.IsReady())
|
||||||
|
{
|
||||||
|
Emu.Run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -191,6 +199,40 @@ void MainFrame::BootGame(wxCommandEvent& WXUNUSED(event))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainFrame::BootGameAndRun(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
bool stopped = false;
|
||||||
|
|
||||||
|
if (Emu.IsRunning())
|
||||||
|
{
|
||||||
|
Emu.Pause();
|
||||||
|
stopped = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxDirDialog ctrl(this, L"Select game folder", wxEmptyString);
|
||||||
|
|
||||||
|
if (ctrl.ShowModal() == wxID_CANCEL)
|
||||||
|
{
|
||||||
|
if (stopped) Emu.Resume();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Emu.Stop();
|
||||||
|
|
||||||
|
if (Emu.BootGame(ctrl.GetPath().ToStdString()))
|
||||||
|
{
|
||||||
|
ConLog.Success("Game: boot done.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ConLog.Error("PS3 executable not found in selected folder (%s)", ctrl.GetPath().wx_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Emu.IsReady())
|
||||||
|
{
|
||||||
|
Emu.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
|
void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
bool stopped = false;
|
bool stopped = false;
|
||||||
|
@ -379,8 +421,9 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
|
||||||
wxCheckBox* chbox_hle_logging = new wxCheckBox(p_hle, wxID_ANY, "Log all SysCalls");
|
wxCheckBox* chbox_hle_logging = new wxCheckBox(p_hle, wxID_ANY, "Log all SysCalls");
|
||||||
wxCheckBox* chbox_hle_hook_stfunc = new wxCheckBox(p_hle, wxID_ANY, "Hook static functions");
|
wxCheckBox* chbox_hle_hook_stfunc = new wxCheckBox(p_hle, wxID_ANY, "Hook static functions");
|
||||||
wxCheckBox* chbox_hle_savetty = new wxCheckBox(p_hle, wxID_ANY, "Save TTY output to file");
|
wxCheckBox* chbox_hle_savetty = new wxCheckBox(p_hle, wxID_ANY, "Save TTY output to file");
|
||||||
wxCheckBox* chbox_hle_exitonstop = new wxCheckBox(p_hle, wxID_ANY, "Exit RPCS3 when process finishes");
|
wxCheckBox* chbox_hle_exitonstop = new wxCheckBox(p_hle, wxID_ANY, "Exit RPCS3 when process finishes");
|
||||||
wxCheckBox* chbox_hle_hide_debug_console = new wxCheckBox(p_hle, wxID_ANY, "Hide Debug Console");
|
wxCheckBox* chbox_hle_hide_debug_console = new wxCheckBox(p_hle, wxID_ANY, "Hide Debug Console");
|
||||||
|
wxCheckBox* chbox_hle_always_start = new wxCheckBox(p_hle, wxID_ANY, "Always start after boot");
|
||||||
|
|
||||||
//cbox_cpu_decoder->Append("DisAsm");
|
//cbox_cpu_decoder->Append("DisAsm");
|
||||||
cbox_cpu_decoder->Append("Interpreter & DisAsm");
|
cbox_cpu_decoder->Append("Interpreter & DisAsm");
|
||||||
|
@ -459,6 +502,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
|
||||||
chbox_hle_savetty ->SetValue(Ini.HLESaveTTY.GetValue());
|
chbox_hle_savetty ->SetValue(Ini.HLESaveTTY.GetValue());
|
||||||
chbox_hle_exitonstop ->SetValue(Ini.HLEExitOnStop.GetValue());
|
chbox_hle_exitonstop ->SetValue(Ini.HLEExitOnStop.GetValue());
|
||||||
chbox_hle_hide_debug_console->SetValue(Ini.HLEHideDebugConsole.GetValue());
|
chbox_hle_hide_debug_console->SetValue(Ini.HLEHideDebugConsole.GetValue());
|
||||||
|
chbox_hle_always_start ->SetValue(Ini.HLEAlwaysStart.GetValue());
|
||||||
|
|
||||||
cbox_cpu_decoder ->SetSelection(Ini.CPUDecoderMode.GetValue() ? Ini.CPUDecoderMode.GetValue() - 1 : 0);
|
cbox_cpu_decoder ->SetSelection(Ini.CPUDecoderMode.GetValue() ? Ini.CPUDecoderMode.GetValue() - 1 : 0);
|
||||||
cbox_spu_decoder ->SetSelection(Ini.SPUDecoderMode.GetValue() ? Ini.SPUDecoderMode.GetValue() - 1 : 0);
|
cbox_spu_decoder ->SetSelection(Ini.SPUDecoderMode.GetValue() ? Ini.SPUDecoderMode.GetValue() - 1 : 0);
|
||||||
|
@ -529,6 +573,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
|
||||||
s_subpanel_hle->Add(chbox_hle_savetty, wxSizerFlags().Border(wxALL, 5).Expand());
|
s_subpanel_hle->Add(chbox_hle_savetty, wxSizerFlags().Border(wxALL, 5).Expand());
|
||||||
s_subpanel_hle->Add(chbox_hle_exitonstop, wxSizerFlags().Border(wxALL, 5).Expand());
|
s_subpanel_hle->Add(chbox_hle_exitonstop, wxSizerFlags().Border(wxALL, 5).Expand());
|
||||||
s_subpanel_hle->Add(chbox_hle_hide_debug_console, wxSizerFlags().Border(wxALL, 5).Expand());
|
s_subpanel_hle->Add(chbox_hle_hide_debug_console, wxSizerFlags().Border(wxALL, 5).Expand());
|
||||||
|
s_subpanel_hle->Add(chbox_hle_always_start, wxSizerFlags().Border(wxALL, 5).Expand());
|
||||||
|
|
||||||
// System
|
// System
|
||||||
s_subpanel_system->Add(s_round_sys_lang, wxSizerFlags().Border(wxALL, 5).Expand());
|
s_subpanel_system->Add(s_round_sys_lang, wxSizerFlags().Border(wxALL, 5).Expand());
|
||||||
|
@ -575,6 +620,7 @@ void MainFrame::Config(wxCommandEvent& WXUNUSED(event))
|
||||||
Ini.HLELogLvl.SetValue(cbox_hle_loglvl->GetSelection());
|
Ini.HLELogLvl.SetValue(cbox_hle_loglvl->GetSelection());
|
||||||
Ini.SysLanguage.SetValue(cbox_sys_lang->GetSelection());
|
Ini.SysLanguage.SetValue(cbox_sys_lang->GetSelection());
|
||||||
Ini.HLEHideDebugConsole.SetValue(chbox_hle_hide_debug_console->GetValue());
|
Ini.HLEHideDebugConsole.SetValue(chbox_hle_hide_debug_console->GetValue());
|
||||||
|
Ini.HLEAlwaysStart.SetValue(chbox_hle_always_start->GetValue());
|
||||||
|
|
||||||
Ini.Save();
|
Ini.Save();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ private:
|
||||||
void OnQuit(wxCloseEvent& event);
|
void OnQuit(wxCloseEvent& event);
|
||||||
|
|
||||||
void BootGame(wxCommandEvent& event);
|
void BootGame(wxCommandEvent& event);
|
||||||
|
void BootGameAndRun(wxCommandEvent& event);
|
||||||
void InstallPkg(wxCommandEvent& event);
|
void InstallPkg(wxCommandEvent& event);
|
||||||
void BootElf(wxCommandEvent& event);
|
void BootElf(wxCommandEvent& event);
|
||||||
void Pause(wxCommandEvent& event);
|
void Pause(wxCommandEvent& event);
|
||||||
|
|
|
@ -120,6 +120,7 @@ public:
|
||||||
IniEntry<u8> SysLanguage;
|
IniEntry<u8> SysLanguage;
|
||||||
IniEntry<bool> SkipPamf;
|
IniEntry<bool> SkipPamf;
|
||||||
IniEntry<bool> HLEHideDebugConsole;
|
IniEntry<bool> HLEHideDebugConsole;
|
||||||
|
IniEntry<bool> HLEAlwaysStart;
|
||||||
|
|
||||||
IniEntry<int> PadHandlerLStickLeft;
|
IniEntry<int> PadHandlerLStickLeft;
|
||||||
IniEntry<int> PadHandlerLStickDown;
|
IniEntry<int> PadHandlerLStickDown;
|
||||||
|
@ -219,6 +220,7 @@ public:
|
||||||
{
|
{
|
||||||
CPUDecoderMode.Load(2);
|
CPUDecoderMode.Load(2);
|
||||||
CPUIgnoreRWErrors.Load(true);
|
CPUIgnoreRWErrors.Load(true);
|
||||||
|
HLEAlwaysStart.Load(false);
|
||||||
SPUDecoderMode.Load(1);
|
SPUDecoderMode.Load(1);
|
||||||
GSRenderMode.Load(1);
|
GSRenderMode.Load(1);
|
||||||
GSResolution.Load(4);
|
GSResolution.Load(4);
|
||||||
|
@ -272,6 +274,7 @@ public:
|
||||||
{
|
{
|
||||||
CPUDecoderMode.Save();
|
CPUDecoderMode.Save();
|
||||||
CPUIgnoreRWErrors.Save();
|
CPUIgnoreRWErrors.Save();
|
||||||
|
HLEAlwaysStart.Save();
|
||||||
SPUDecoderMode.Save();
|
SPUDecoderMode.Save();
|
||||||
GSRenderMode.Save();
|
GSRenderMode.Save();
|
||||||
GSResolution.Save();
|
GSResolution.Save();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue