Merge refactoring branch & Krofna's pull req. #46

This commit is contained in:
Alexandro Sánchez Bach 2014-02-23 02:39:46 +01:00
commit 696e00a570
32 changed files with 492 additions and 894 deletions

View file

@ -5,7 +5,6 @@
#include "RSXDebugger.h"
#include "git-version.h"
#include "Emu/System.h"
#include "Ini.h"
#include "Emu/GS/sysutil_video.h"
#include "Gui/VHDDManager.h"
@ -13,7 +12,7 @@
#include "Gui/AboutDialog.h"
#include <wx/dynlib.h>
#include "unpkg/unpkg.c"
#include "Loader/PKG.h"
BEGIN_EVENT_TABLE(MainFrame, FrameBase)
EVT_CLOSE(MainFrame::OnQuit)
@ -81,45 +80,50 @@ MainFrame::MainFrame()
wxMenuBar& menubar(*new wxMenuBar());
wxMenu& menu_boot(*new wxMenu());
wxMenu& menu_sys(*new wxMenu());
wxMenu& menu_conf(*new wxMenu());
wxMenu& menu_tools(*new wxMenu());
wxMenu& menu_help(*new wxMenu());
menubar.Append(&menu_boot, "Boot");
menubar.Append(&menu_sys, "System");
menubar.Append(&menu_conf, "Config");
menubar.Append(&menu_tools, "Tools");
menubar.Append(&menu_help, "Help");
menu_boot.Append(id_boot_game, "Boot game");
menu_boot.Append(id_install_pkg, "Install PKG");
menu_boot.AppendSeparator();
menu_boot.Append(id_boot_elf, "Boot (S)ELF");
wxMenu& menu_sys(*new wxMenu());
menubar.Append(&menu_sys, "System");
menu_sys.Append(id_sys_pause, "Pause")->Enable(false);
menu_sys.Append(id_sys_stop, "Stop\tCtrl + S")->Enable(false);
menu_sys.AppendSeparator();
menu_sys.Append(id_sys_send_open_menu, "Send open system menu cmd")->Enable(false);
menu_sys.Append(id_sys_send_exit, "Send exit cmd")->Enable(false);
wxMenu& menu_conf(*new wxMenu());
menubar.Append(&menu_conf, "Config");
menu_conf.Append(id_config_emu, "Settings");
menu_conf.Append(id_config_pad, "PAD Settings");
menu_conf.AppendSeparator();
menu_conf.Append(id_config_vfs_manager, "Virtual File System Manager");
menu_conf.Append(id_config_vhdd_manager, "Virtual HDD Manager");
wxMenu& menu_tools(*new wxMenu());
menubar.Append(&menu_tools, "Tools");
menu_tools.Append(id_tools_compiler, "ELF Compiler");
menu_tools.Append(id_tools_memory_viewer, "Memory Viewer");
menu_tools.Append(id_tools_rsx_debugger, "RSX Debugger");
wxMenu& menu_help(*new wxMenu());
menubar.Append(&menu_help, "Help");
menu_help.Append(id_help_about, "About...");
SetMenuBar(&menubar);
// Panels
m_game_viewer = new GameViewer(this);
m_debugger_frame = new DebuggerPanel(this);
ConLogFrame = new LogFrame(this);
AddPane(m_game_viewer, "Game List", wxAUI_DOCK_BOTTOM);
AddPane(ConLogFrame, "Log", wxAUI_DOCK_BOTTOM);
AddPane(m_debugger_frame, "Debugger", wxAUI_DOCK_RIGHT);
// Events
Connect( id_boot_game, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::BootGame) );
Connect( id_install_pkg, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::InstallPkg) );
Connect( id_boot_elf, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::BootElf) );
@ -221,43 +225,21 @@ void MainFrame::InstallPkg(wxCommandEvent& WXUNUSED(event))
return;
}
ConLog.Write("PKG: extracting...");
Emu.Stop();
wxString fileName = ctrl.GetPath();
if (!pkg_unpack(static_cast<const char*>(fileName)))
ConLog.Error("Could not unpack PKG!");
else ConLog.Success("PKG: extract done.");
if (!wxRemoveFile(ctrl.GetPath()+".dec"))
ConLog.Warning("Could not delete the decoded DEC file");
pkg_header *header;
pkg_info(static_cast<const char*>(fileName), &header);
wxString titleID_full (header->title_id);
wxString titleID = titleID_full.SubString(7, 15);
wxString mainDir = wxGetCwd();
wxString gamePath = "\\dev_hdd0\\game\\";
wxString pkgDir = mainDir + gamePath + titleID;
// Save the title ID.
Emu.SetTitleID(titleID);
//Refresh game list
m_game_viewer->Refresh();
if(Emu.BootGame(pkgDir.ToStdString()))
// Open and install PKG file
std::string filePath = ctrl.GetPath();
wxFile pkg_f(filePath, wxFile::read); // TODO: Use VFS to install PKG files
if (pkg_f.IsOpened())
{
ConLog.Success("Game: boot done.");
}
else
{
ConLog.Error("Ps3 executable not found in folder (%s)", pkgDir.wx_str());
PKGLoader pkg(pkg_f);
pkg.Install("/dev_hdd0/game/");
pkg.Close();
}
// Refresh game list
m_game_viewer->Refresh();
}
void MainFrame::BootElf(wxCommandEvent& WXUNUSED(event))