mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	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