Merge pull request #2343 from bunnei/core-cleanup
Core: Top-level consolidate & misc cleanup
This commit is contained in:
commit
aa47af7fb6
45 changed files with 439 additions and 595 deletions
|
@ -14,8 +14,6 @@
|
|||
#include "common/scm_rev.h"
|
||||
#include "common/string_util.h"
|
||||
#include "core/core.h"
|
||||
#include "core/settings.h"
|
||||
#include "core/system.h"
|
||||
#include "video_core/debug_utils/debug_utils.h"
|
||||
#include "video_core/video_core.h"
|
||||
|
||||
|
@ -38,7 +36,7 @@ void EmuThread::run() {
|
|||
if (!was_active)
|
||||
emit DebugModeLeft();
|
||||
|
||||
Core::RunLoop();
|
||||
Core::System::GetInstance().RunLoop();
|
||||
|
||||
was_active = running || exec_step;
|
||||
if (!was_active && !stop_run)
|
||||
|
@ -48,7 +46,7 @@ void EmuThread::run() {
|
|||
emit DebugModeLeft();
|
||||
|
||||
exec_step = false;
|
||||
Core::SingleStep();
|
||||
Core::System::GetInstance().SingleStep();
|
||||
emit DebugModeEntered();
|
||||
yieldCurrentThread();
|
||||
|
||||
|
@ -60,7 +58,7 @@ void EmuThread::run() {
|
|||
}
|
||||
|
||||
// Shutdown the core emulation
|
||||
System::Shutdown();
|
||||
Core::System::GetInstance().Shutdown();
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
MicroProfileOnThreadExit();
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
#include "citra_qt/configure_general.h"
|
||||
#include "citra_qt/ui_settings.h"
|
||||
#include "core/core.h"
|
||||
#include "core/settings.h"
|
||||
#include "core/system.h"
|
||||
#include "ui_configure_general.h"
|
||||
|
||||
ConfigureGeneral::ConfigureGeneral(QWidget* parent)
|
||||
|
@ -14,7 +14,7 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)
|
|||
ui->setupUi(this);
|
||||
this->setConfiguration();
|
||||
|
||||
ui->toggle_cpu_jit->setEnabled(!System::IsPoweredOn());
|
||||
ui->toggle_cpu_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn());
|
||||
}
|
||||
|
||||
ConfigureGeneral::~ConfigureGeneral() {}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
// Refer to the license.txt file included.
|
||||
|
||||
#include "citra_qt/configure_graphics.h"
|
||||
#include "core/core.h"
|
||||
#include "core/settings.h"
|
||||
#include "core/system.h"
|
||||
#include "ui_configure_graphics.h"
|
||||
|
||||
ConfigureGraphics::ConfigureGraphics(QWidget* parent)
|
||||
|
@ -13,7 +13,7 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
|
|||
ui->setupUi(this);
|
||||
this->setConfiguration();
|
||||
|
||||
ui->toggle_vsync->setEnabled(!System::IsPoweredOn());
|
||||
ui->toggle_vsync->setEnabled(!Core::System::GetInstance().IsPoweredOn());
|
||||
}
|
||||
|
||||
ConfigureGraphics::~ConfigureGraphics() {}
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "citra_qt/ui_settings.h"
|
||||
#include "core/hle/service/cfg/cfg.h"
|
||||
#include "core/hle/service/fs/archive.h"
|
||||
#include "core/system.h"
|
||||
#include "ui_configure_system.h"
|
||||
|
||||
static const std::array<int, 12> days_in_month = {{
|
||||
|
@ -24,7 +23,7 @@ ConfigureSystem::ConfigureSystem(QWidget* parent) : QWidget(parent), ui(new Ui::
|
|||
ConfigureSystem::~ConfigureSystem() {}
|
||||
|
||||
void ConfigureSystem::setConfiguration() {
|
||||
enabled = !System::IsPoweredOn();
|
||||
enabled = !Core::System::GetInstance().IsPoweredOn();
|
||||
|
||||
if (!enabled) {
|
||||
ReadSystemSettings();
|
||||
|
|
|
@ -25,7 +25,7 @@ CallstackWidget::CallstackWidget(QWidget* parent) : QDockWidget(parent) {
|
|||
|
||||
void CallstackWidget::OnDebugModeEntered() {
|
||||
// Stack pointer
|
||||
const u32 sp = Core::g_app_core->GetReg(13);
|
||||
const u32 sp = Core::CPU().GetReg(13);
|
||||
|
||||
Clear();
|
||||
|
||||
|
|
|
@ -185,13 +185,13 @@ DisassemblerWidget::DisassemblerWidget(QWidget* parent, EmuThread* emu_thread)
|
|||
}
|
||||
|
||||
void DisassemblerWidget::Init() {
|
||||
model->ParseFromAddress(Core::g_app_core->GetPC());
|
||||
model->ParseFromAddress(Core::CPU().GetPC());
|
||||
|
||||
disasm_ui.treeView->resizeColumnToContents(0);
|
||||
disasm_ui.treeView->resizeColumnToContents(1);
|
||||
disasm_ui.treeView->resizeColumnToContents(2);
|
||||
|
||||
QModelIndex model_index = model->IndexFromAbsoluteAddress(Core::g_app_core->GetPC());
|
||||
QModelIndex model_index = model->IndexFromAbsoluteAddress(Core::CPU().GetPC());
|
||||
disasm_ui.treeView->scrollTo(model_index);
|
||||
disasm_ui.treeView->selectionModel()->setCurrentIndex(
|
||||
model_index, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows);
|
||||
|
@ -214,8 +214,8 @@ void DisassemblerWidget::OnPause() {
|
|||
emu_thread->SetRunning(false);
|
||||
|
||||
// TODO: By now, the CPU might not have actually stopped...
|
||||
if (Core::g_app_core) {
|
||||
model->SetNextInstruction(Core::g_app_core->GetPC());
|
||||
if (Core::System::GetInstance().IsPoweredOn()) {
|
||||
model->SetNextInstruction(Core::CPU().GetPC());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -224,7 +224,7 @@ void DisassemblerWidget::OnToggleStartStop() {
|
|||
}
|
||||
|
||||
void DisassemblerWidget::OnDebugModeEntered() {
|
||||
u32 next_instr = Core::g_app_core->GetPC();
|
||||
u32 next_instr = Core::CPU().GetPC();
|
||||
|
||||
if (model->GetBreakPoints().IsAddressBreakPoint(next_instr))
|
||||
emu_thread->SetRunning(false);
|
||||
|
|
|
@ -58,16 +58,16 @@ RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent) {
|
|||
}
|
||||
|
||||
void RegistersWidget::OnDebugModeEntered() {
|
||||
if (!Core::g_app_core)
|
||||
if (!Core::System::GetInstance().IsPoweredOn())
|
||||
return;
|
||||
|
||||
for (int i = 0; i < core_registers->childCount(); ++i)
|
||||
core_registers->child(i)->setText(
|
||||
1, QString("0x%1").arg(Core::g_app_core->GetReg(i), 8, 16, QLatin1Char('0')));
|
||||
1, QString("0x%1").arg(Core::CPU().GetReg(i), 8, 16, QLatin1Char('0')));
|
||||
|
||||
for (int i = 0; i < vfp_registers->childCount(); ++i)
|
||||
vfp_registers->child(i)->setText(
|
||||
1, QString("0x%1").arg(Core::g_app_core->GetVFPReg(i), 8, 16, QLatin1Char('0')));
|
||||
1, QString("0x%1").arg(Core::CPU().GetVFPReg(i), 8, 16, QLatin1Char('0')));
|
||||
|
||||
UpdateCPSRValues();
|
||||
UpdateVFPSystemRegisterValues();
|
||||
|
@ -127,7 +127,7 @@ void RegistersWidget::CreateCPSRChildren() {
|
|||
}
|
||||
|
||||
void RegistersWidget::UpdateCPSRValues() {
|
||||
const u32 cpsr_val = Core::g_app_core->GetCPSR();
|
||||
const u32 cpsr_val = Core::CPU().GetCPSR();
|
||||
|
||||
cpsr->setText(1, QString("0x%1").arg(cpsr_val, 8, 16, QLatin1Char('0')));
|
||||
cpsr->child(0)->setText(
|
||||
|
@ -191,10 +191,10 @@ void RegistersWidget::CreateVFPSystemRegisterChildren() {
|
|||
}
|
||||
|
||||
void RegistersWidget::UpdateVFPSystemRegisterValues() {
|
||||
const u32 fpscr_val = Core::g_app_core->GetVFPSystemReg(VFP_FPSCR);
|
||||
const u32 fpexc_val = Core::g_app_core->GetVFPSystemReg(VFP_FPEXC);
|
||||
const u32 fpinst_val = Core::g_app_core->GetVFPSystemReg(VFP_FPINST);
|
||||
const u32 fpinst2_val = Core::g_app_core->GetVFPSystemReg(VFP_FPINST2);
|
||||
const u32 fpscr_val = Core::CPU().GetVFPSystemReg(VFP_FPSCR);
|
||||
const u32 fpexc_val = Core::CPU().GetVFPSystemReg(VFP_FPEXC);
|
||||
const u32 fpinst_val = Core::CPU().GetVFPSystemReg(VFP_FPINST);
|
||||
const u32 fpinst2_val = Core::CPU().GetVFPSystemReg(VFP_FPINST2);
|
||||
|
||||
QTreeWidgetItem* const fpscr = vfp_system_registers->child(0);
|
||||
fpscr->setText(1, QString("0x%1").arg(fpscr_val, 8, 16, QLatin1Char('0')));
|
||||
|
|
|
@ -391,7 +391,7 @@ WaitTreeWidget::WaitTreeWidget(QWidget* parent) : QDockWidget(tr("Wait Tree"), p
|
|||
}
|
||||
|
||||
void WaitTreeWidget::OnDebugModeEntered() {
|
||||
if (!Core::g_app_core)
|
||||
if (!Core::System::GetInstance().IsPoweredOn())
|
||||
return;
|
||||
model->InitItems();
|
||||
view->setModel(model);
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include "core/gdbstub/gdbstub.h"
|
||||
#include "core/loader/loader.h"
|
||||
#include "core/settings.h"
|
||||
#include "core/system.h"
|
||||
#include "qhexedit.h"
|
||||
#include "video_core/video_core.h"
|
||||
|
||||
|
@ -274,7 +273,7 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
|
|||
}
|
||||
}
|
||||
|
||||
bool GMainWindow::InitializeSystem(u32 system_mode) {
|
||||
bool GMainWindow::LoadROM(const std::string& filename) {
|
||||
// Shutdown previous session if the emu thread is still active...
|
||||
if (emu_thread != nullptr)
|
||||
ShutdownGame();
|
||||
|
@ -290,54 +289,25 @@ bool GMainWindow::InitializeSystem(u32 system_mode) {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Initialize the core emulation
|
||||
System::Result system_result = System::Init(render_window, system_mode);
|
||||
if (System::Result::Success != system_result) {
|
||||
switch (system_result) {
|
||||
case System::Result::ErrorInitVideoCore:
|
||||
QMessageBox::critical(this, tr("Error while starting Citra!"),
|
||||
tr("Failed to initialize the video core!\n\n"
|
||||
"Please ensure that your GPU supports OpenGL 3.3 and that you "
|
||||
"have the latest graphics driver."));
|
||||
break;
|
||||
Core::System& system{Core::System::GetInstance()};
|
||||
|
||||
default:
|
||||
QMessageBox::critical(this, tr("Error while starting Citra!"),
|
||||
tr("Unknown error (please check the log)!"));
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GMainWindow::LoadROM(const std::string& filename) {
|
||||
std::unique_ptr<Loader::AppLoader> app_loader = Loader::GetLoader(filename);
|
||||
if (!app_loader) {
|
||||
LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filename.c_str());
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("The ROM format is not supported."));
|
||||
return false;
|
||||
}
|
||||
|
||||
boost::optional<u32> system_mode = app_loader->LoadKernelSystemMode();
|
||||
if (!system_mode) {
|
||||
LOG_CRITICAL(Frontend, "Failed to load ROM!");
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("Could not determine the system mode."));
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!InitializeSystem(system_mode.get()))
|
||||
return false;
|
||||
|
||||
Loader::ResultStatus result = app_loader->Load();
|
||||
if (Loader::ResultStatus::Success != result) {
|
||||
System::Shutdown();
|
||||
LOG_CRITICAL(Frontend, "Failed to load ROM!");
|
||||
const Core::System::ResultStatus result{system.Load(render_window, filename)};
|
||||
|
||||
if (result != Core::System::ResultStatus::Success) {
|
||||
switch (result) {
|
||||
case Loader::ResultStatus::ErrorEncrypted: {
|
||||
case Core::System::ResultStatus::ErrorGetLoader:
|
||||
LOG_CRITICAL(Frontend, "Failed to obtain loader for %s!", filename.c_str());
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("The ROM format is not supported."));
|
||||
break;
|
||||
|
||||
case Core::System::ResultStatus::ErrorSystemMode:
|
||||
LOG_CRITICAL(Frontend, "Failed to load ROM!");
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("Could not determine the system mode."));
|
||||
break;
|
||||
|
||||
case Core::System::ResultStatus::ErrorLoader_ErrorEncrypted: {
|
||||
// Build the MessageBox ourselves to have clickable link
|
||||
QMessageBox popup_error;
|
||||
popup_error.setTextFormat(Qt::RichText);
|
||||
|
@ -352,11 +322,10 @@ bool GMainWindow::LoadROM(const std::string& filename) {
|
|||
popup_error.exec();
|
||||
break;
|
||||
}
|
||||
case Loader::ResultStatus::ErrorInvalidFormat:
|
||||
case Core::System::ResultStatus::ErrorLoader_ErrorInvalidFormat:
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"),
|
||||
tr("The ROM format is not supported."));
|
||||
break;
|
||||
case Loader::ResultStatus::Error:
|
||||
|
||||
default:
|
||||
QMessageBox::critical(this, tr("Error while loading ROM!"), tr("Unknown error!"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue