fuck this shit

This commit is contained in:
2026-06-11 14:37:02 +02:00
parent 2b59e5f461
commit bad1691ee2
13 changed files with 414 additions and 317 deletions
+56 -51
View File
@@ -11,43 +11,71 @@
#include <Options.hpp>
#include <Scheduler.hpp>
void KaizenGui::populateRomsList(const std::string &romsPath) {
centralWidget->setCurrentWidget(romPathNotSet);
if (!romsPath.empty()) {
int i = 0;
centralWidget->setCurrentWidget(romsList);
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
if (!file.is_regular_file())
continue;
auto filename = file.path().lexically_normal().string();
bool isPlain = std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
[&](const std::string &ext) { return file.path().extension() == ext; });
bool isArchive =
std::ranges::any_of(std::array{".zip", ".7z", ".rar", ".tar"},
[&](const std::string &ext) { return file.path().extension() == ext; });
if (!isArchive && !isPlain)
continue;
auto rom = n64::Mem::LoadROM(isArchive, filename);
auto regions = n64::GameDB::match(rom);
romsListPaths.push_back(filename);
romsList->insertRow(i);
romsList->setItem(i, 0, new QTableWidgetItem(core.mem->rom.gameNameDB.c_str()));
romsList->setItem(i, 1, new QTableWidgetItem(regions.c_str()));
romsList->setItem(i, 2, new QTableWidgetItem("Never"));
romsList->setItem(i, 3, new QTableWidgetItem("0h 0m 0s"));
i++;
}
}
currentHomeWidget = centralWidget->currentWidget();
}
KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::UserScope) {
SDL_InitSubSystem(SDL_INIT_GAMEPAD);
hide();
auto romsNotFoundLabel = new QLabel(R"(Kaizen could not find any ROMs. Set the path in "Settings -> General")");
romsList->verticalHeader()->hide();
romsList->setSizePolicy({QSizePolicy::Maximum, QSizePolicy::Maximum});
romsList->setSelectionMode(QAbstractItemView::SingleSelection);
romsList->setSelectionBehavior(QAbstractItemView::SelectRows);
romsList->setEditTriggers(QAbstractItemView::NoEditTriggers);
romsList->setSortingEnabled(true);
romsList->setColumnCount(3);
romsList->setColumnCount(4);
romsList->setHorizontalHeaderItem(0, romName);
romsList->setHorizontalHeaderItem(1, romLastPlayed);
romsList->setHorizontalHeaderItem(2, romTimePlayed);
romsList->setHorizontalHeaderItem(1, romRegions);
romsList->setHorizontalHeaderItem(2, romLastPlayed);
romsList->setHorizontalHeaderItem(3, romTimePlayed);
auto romsPath = Options::GetRomsPath();
if (!romsPath.empty()) {
int i = 0;
centralWidget->addWidget(romsList);
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
if (file.is_regular_file() &&
std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
[&](const std::string &ext) { return file.path().extension() == ext; })) {
romsList->insertRow(i);
romsList->setItem(i, 0, new QTableWidgetItem(file.path().stem().string().c_str()));
romsList->setItem(i, 1, new QTableWidgetItem("Never"));
romsList->setItem(i, 2, new QTableWidgetItem("0h 0m 0s"));
i++;
}
}
} else {
centralWidget->addWidget(romsNotFoundLabel);
}
vulkanWidget = new RenderWidget();
vulkanWidget->hide();
centralWidget->addWidget(vulkanWidget);
centralWidget->addWidget(romsList);
centralWidget->addWidget(romPathNotSet);
populateRomsList(Options::GetRomsPath());
connect(romsList, &QTableWidget::cellDoubleClicked, this, [&](int row, int) {
auto fileToLoad = fs::path(romsPath) / romsList->item(row, 0)->text().toStdString();
auto fileToLoad = fs::path(Options::GetRomsPath()) / romsListPaths[row];
std::println("{}", fileToLoad.string());
LoadROM(fileToLoad.string());
});
@@ -57,11 +85,6 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
restoreGeometry(settings.value("geometry").toByteArray());
restoreState(settings.value("windowState").toByteArray());
vulkanWidget = new RenderWidget();
vulkanWidget->hide();
centralWidget->addWidget(vulkanWidget);
cpuTypeLabel = new QLabel("Interpreter");
if (Options::GetCpuType() == n64::CachedInterpreter)
cpuTypeLabel->setText("Cached Interpreter");
@@ -108,7 +131,7 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
auto open = fileMenu->addAction("Open");
open->setShortcut(QKeyCombination(Qt::CTRL, Qt::Key_O));
connect(open, &QAction::triggered, this, [&] {
auto originPath = romsPath.empty() ? QDir::currentPath() : romsPath.c_str();
auto originPath = Options::GetRomsPath().empty() ? QDir::currentPath() : Options::GetRomsPath().c_str();
auto fileToLoad =
QFileDialog::getOpenFileName(this, "Select a Nintendo 64 ROM", originPath, "N64 ROM (*.z64 *.n64 *.v64)")
.toStdString();
@@ -123,26 +146,8 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
auto settingsMenu = emulationMenu->addAction("Settings");
settingsWindow = new SettingsWindow();
connect(settingsMenu, &QAction::triggered, settingsWindow, &SettingsWindow::show);
connect(settingsWindow->general, &GeneralSettings::romFolderSelected, this, [&] {
romsPath = Options::GetRomsPath();
if (!romsPath.empty()) {
int i = 0;
centralWidget->addWidget(romsList);
for (const auto &file : fs::recursive_directory_iterator{romsPath}) {
if (file.is_regular_file() &&
std::ranges::any_of(std::array{".n64", ".z64", ".v64"},
[&](const std::string &ext) { return file.path().extension() == ext; })) {
romsList->insertRow(i);
romsList->setItem(i, 0, new QTableWidgetItem(file.path().stem().string().c_str()));
romsList->setItem(i, 1, new QTableWidgetItem("Never"));
romsList->setItem(i, 2, new QTableWidgetItem("0h 0m 0s"));
i++;
}
}
} else {
centralWidget->addWidget(romsNotFoundLabel);
}
});
connect(settingsWindow->general, &GeneralSettings::romFolderSelected, this,
[&] { populateRomsList(Options::GetRomsPath()); });
connect(settingsWindow->cpu, &CPUSettings::cpuTypeChanged, this, [&] {
core.cpuType = Options::GetCpuType();
@@ -185,7 +190,7 @@ KaizenGui::KaizenGui() noexcept : QMainWindow(nullptr), settings(QSettings::User
emulationMenu->addAction(stop);
connect(stop, &QAction::triggered, this, [&] {
Scheduler::GetInstance().EnqueueRelative(0, STOP);
centralWidget->setCurrentWidget(romsList);
centralWidget->setCurrentWidget(currentHomeWidget);
});
auto helpMenu = menuBar()->addMenu("Help");