mirror of
https://github.com/pound-emu/pound.git
synced 2025-12-12 10:37:00 +00:00
Revert "feat(gui): Enhance CPU panel with state management and GUI improvements"
This commit is contained in:
parent
5b432dbb0c
commit
f69c918186
9 changed files with 307 additions and 345 deletions
116
core/main.cpp
116
core/main.cpp
|
|
@ -14,106 +14,76 @@
|
|||
#include "gui/panels/CPUPanel.h"
|
||||
#include "gui/panels/PerformancePanel.h"
|
||||
|
||||
std::shared_ptr<Pound::GUI::ConsolePanel> console_panel;
|
||||
std::shared_ptr<Pound::GUI::CPUPanel> cpu_panel;
|
||||
std::shared_ptr<Pound::GUI::PerformancePanel> performance_panel;
|
||||
// CPU test function
|
||||
void cpuTest()
|
||||
{
|
||||
void cpuTest() {
|
||||
CPU cpu;
|
||||
cpu.pc = 0;
|
||||
|
||||
// Simple ARMv8 program in memory (MOVZ X0, #5; ADD X0, X0, #3; RET)
|
||||
// These are placeholders; real encoding will be parsed later
|
||||
cpu.write_byte(0, 0x05); // MOVZ placeholder
|
||||
cpu.write_byte(4, 0x03); // ADD placeholder
|
||||
cpu.write_byte(8, 0xFF); // RET placeholder
|
||||
|
||||
LOG_INFO(ARM, "{}", cpu.read_byte(0));
|
||||
|
||||
JIT jit;
|
||||
jit.translate_and_run(cpu);
|
||||
|
||||
cpu.print_debug_information();
|
||||
|
||||
LOG_INFO(ARM, "X0 = {}", cpu.x(0));
|
||||
|
||||
if (cpu_panel)
|
||||
cpu_panel->UpdateState(cpu);
|
||||
}
|
||||
|
||||
void initGUI(Pound::GUI::GUIManager *gui_manager)
|
||||
{
|
||||
gui_manager->AddPanel(console_panel);
|
||||
gui_manager->AddPanel(cpu_panel);
|
||||
gui_manager->AddPanel(performance_panel);
|
||||
|
||||
Pound::GUI::TabBar *file_menu = gui_manager->AddTabs("File");
|
||||
Pound::GUI::TabBar *emulation_menu = gui_manager->AddTabs("Emulation");
|
||||
Pound::GUI::TabBar *view_menu = gui_manager->AddTabs("View");
|
||||
Pound::GUI::TabBar *help_menu = gui_manager->AddTabs("Help");
|
||||
|
||||
gui_manager->AddSubTab(file_menu, "Open ROM...", []() {});
|
||||
gui_manager->AddSubTab(file_menu, "Exit", []()
|
||||
{
|
||||
LOG_INFO(Render, "Exiting Pound Emulator");
|
||||
std::exit(0); });
|
||||
|
||||
gui_manager->AddSubTab(emulation_menu, "Run CPU Test", []()
|
||||
{ cpuTest(); });
|
||||
gui_manager->AddSubTab(emulation_menu, "Pause", []()
|
||||
{ LOG_INFO(Render, "Pausing emulation (not implemented yet)"); });
|
||||
gui_manager->AddSubTab(emulation_menu, "Resume", []()
|
||||
{ LOG_INFO(Render, "Resuming emulation (not implemented yet)"); });
|
||||
|
||||
gui_manager->AddSubTab(view_menu, "Console", console_panel->IsVisible(),
|
||||
[console_panel](bool is_checked)
|
||||
{
|
||||
console_panel->SetVisible(is_checked);
|
||||
});
|
||||
|
||||
gui_manager->AddSubTab(view_menu, "CPU State", cpu_panel->IsVisible(),
|
||||
[cpu_panel](bool is_checked)
|
||||
{
|
||||
cpu_panel->SetVisible(is_checked);
|
||||
});
|
||||
|
||||
gui_manager->AddSubTab(view_menu, "Performance", performance_panel->IsVisible(),
|
||||
[performance_panel](bool is_checked)
|
||||
{
|
||||
performance_panel->SetVisible(is_checked);
|
||||
});
|
||||
|
||||
gui_manager->AddSubTab(help_menu, "About", []()
|
||||
{ LOG_INFO(Render, "Pound Emulator is a pre-alpha project. Visit our GitHub for more information."); });
|
||||
|
||||
|
||||
cpu_panel->SetCPUTestCallback(cpuTest);
|
||||
console_panel->AddLog("[INFO] Pound Emulator started");
|
||||
console_panel->AddLog("[INFO] Version: Pre-Alpha");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int main() {
|
||||
Base::Log::Initialize();
|
||||
Base::Log::Start();
|
||||
|
||||
const auto config_dir = Base::FS::GetUserPath(Base::FS::PathType::BinaryDir);
|
||||
Config::Load(config_dir / "config.toml");
|
||||
|
||||
// Create GUI manager
|
||||
auto gui_manager = std::make_unique<Pound::GUI::GUIManager>();
|
||||
if (!gui_manager->Initialize("Pound Emulator", Config::windowWidth(), Config::windowHeight()))
|
||||
{
|
||||
|
||||
// Initialize GUI
|
||||
if (!gui_manager->Initialize("Pound Emulator", Config::windowWidth(), Config::windowHeight())) {
|
||||
LOG_ERROR(Render, "Failed to initialize GUI");
|
||||
return -1;
|
||||
}
|
||||
|
||||
console_panel = std::make_shared<Pound::GUI::ConsolePanel>();
|
||||
cpu_panel = std::make_shared<Pound::GUI::CPUPanel>();
|
||||
performance_panel = std::make_shared<Pound::GUI::PerformancePanel>();
|
||||
|
||||
initGUI(gui_manager.get());
|
||||
|
||||
while (gui_manager->IsRunning())
|
||||
{
|
||||
// Create and add panels
|
||||
auto console_panel = std::make_shared<Pound::GUI::ConsolePanel>();
|
||||
auto cpu_panel = std::make_shared<Pound::GUI::CPUPanel>();
|
||||
auto performance_panel = std::make_shared<Pound::GUI::PerformancePanel>();
|
||||
|
||||
gui_manager->AddPanel(console_panel);
|
||||
gui_manager->AddPanel(cpu_panel);
|
||||
gui_manager->AddPanel(performance_panel);
|
||||
|
||||
// Set up callbacks
|
||||
auto cpu_test_callback = [console_panel]() {
|
||||
console_panel->AddLog("[INFO] Running CPU test...");
|
||||
cpuTest();
|
||||
console_panel->AddLog("[INFO] CPU test completed. Check terminal for details.");
|
||||
};
|
||||
|
||||
gui_manager->SetCPUTestCallback(cpu_test_callback);
|
||||
cpu_panel->SetCPUTestCallback(cpu_test_callback);
|
||||
|
||||
// Add initial console message
|
||||
console_panel->AddLog("[INFO] Pound Emulator started");
|
||||
console_panel->AddLog("[INFO] Version: Pre-Alpha");
|
||||
|
||||
// Main loop
|
||||
while (gui_manager->IsRunning()) {
|
||||
gui_manager->RunFrame();
|
||||
|
||||
// Small delay to prevent excessive CPU usage
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(5));
|
||||
}
|
||||
gui_manager->Shutdown();
|
||||
|
||||
// Cleanup
|
||||
gui_manager->Shutdown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue