Compare commits

...

2 Commits

Author SHA1 Message Date
lizzie cbb74b3e70 fix
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2026-05-19 04:28:22 +00:00
lizzie 7da774f766 [hle] make HBLoader work
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2026-05-19 04:16:52 +00:00
4 changed files with 26 additions and 5 deletions
+8
View File
@@ -9,3 +9,11 @@ At the moment of writing, we do not support CFW such as Atmosphere, due to:
We do however, maintain HLE compatibility with the former mentioned CFW, applications that require Atmosphere to run will run fine in the emulator without any adjustments. We do however, maintain HLE compatibility with the former mentioned CFW, applications that require Atmosphere to run will run fine in the emulator without any adjustments.
If they don't run - then that's a bug! If they don't run - then that's a bug!
## Atmosphere
Fusee Galee, the bootloader and other low-level mechanisms are not emulated at the moment.
Having OFW is recommended, but may not be required (untested).
Extract the contents of Atmosphere into `sdmc`. Then to launch simply use `-hlaunch` instead (orthogonal to `-qlaunch`).
+3
View File
@@ -10,6 +10,9 @@ There are two main applications, an SDL-based app (`eden-cli`) and a Qt based ap
- `-u <number>`: Select the index of the user to load as. - `-u <number>`: Select the index of the user to load as.
- `-input-profile <name>`: Specifies input profile name to use (for player #0 only). - `-input-profile <name>`: Specifies input profile name to use (for player #0 only).
- `-qlaunch`: Launch QLaunch. - `-qlaunch`: Launch QLaunch.
- `-hlaunch`: Launch homebrew launcher `nx-hbloader`.
- Requires a copy of Atmosphere to be extracted onto `sdmc`.
- This is a shorthand for `<eden folder>/sdmc/atmosphere/hbl.nsp`.
- `-setup`: Launch setup applet. - `-setup`: Launch setup applet.
## eden-cli ## eden-cli
+5 -1
View File
@@ -1,3 +1,6 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
@@ -268,7 +271,8 @@ Result KCapabilities::SetHandleTableCapability(const u32 cap) {
Result KCapabilities::SetDebugFlagsCapability(const u32 cap) { Result KCapabilities::SetDebugFlagsCapability(const u32 cap) {
// Validate. // Validate.
const DebugFlags pack{cap}; const DebugFlags pack{cap};
R_UNLESS(pack.reserved == 0, ResultReservedUsed); // TODO: Enabling this breaks compatibility with HBloader and such
//R_UNLESS(pack.reserved == 0, ResultReservedUsed);
DebugFlags debug_capabilities{m_debug_capabilities}; DebugFlags debug_capabilities{m_debug_capabilities};
debug_capabilities.allow_debug.Assign(pack.allow_debug); debug_capabilities.allow_debug.Assign(pack.allow_debug);
+10 -4
View File
@@ -3,6 +3,7 @@
// Qt on macOS doesn't define VMA shit // Qt on macOS doesn't define VMA shit
#include <boost/algorithm/string/split.hpp> #include <boost/algorithm/string/split.hpp>
#include "common/fs/path_util.h"
#include "common/settings.h" #include "common/settings.h"
#include "common/settings_enums.h" #include "common/settings_enums.h"
#include "frontend_common/settings_generator.h" #include "frontend_common/settings_generator.h"
@@ -635,6 +636,7 @@ MainWindow::MainWindow(bool has_broken_vulkan)
QString game_path; QString game_path;
bool should_launch_qlaunch = false; bool should_launch_qlaunch = false;
bool should_launch_hlaunch = false;
bool should_launch_setup = false; bool should_launch_setup = false;
bool has_gamepath = false; bool has_gamepath = false;
bool is_fullscreen = false; bool is_fullscreen = false;
@@ -676,6 +678,8 @@ MainWindow::MainWindow(bool has_broken_vulkan)
players[0].profile_name = args[++i].toStdString(); players[0].profile_name = args[++i].toStdString();
} else if (args[i] == QStringLiteral("-qlaunch")) { } else if (args[i] == QStringLiteral("-qlaunch")) {
should_launch_qlaunch = true; should_launch_qlaunch = true;
} else if (args[i] == QStringLiteral("-hlaunch")) {
should_launch_hlaunch = true;
} else if (args[i] == QStringLiteral("-setup")) { } else if (args[i] == QStringLiteral("-setup")) {
should_launch_setup = true; should_launch_setup = true;
} else { } else {
@@ -694,10 +698,12 @@ MainWindow::MainWindow(bool has_broken_vulkan)
} else { } else {
if (!game_path.isEmpty()) { if (!game_path.isEmpty()) {
BootGame(game_path, ApplicationAppletParameters()); BootGame(game_path, ApplicationAppletParameters());
} else { } else if (should_launch_qlaunch) {
if (should_launch_qlaunch) { LaunchFirmwareApplet(u64(Service::AM::AppletProgramId::QLaunch), std::nullopt);
LaunchFirmwareApplet(u64(Service::AM::AppletProgramId::QLaunch), std::nullopt); } else if (should_launch_hlaunch) {
} std::filesystem::path const sd_dir = Common::FS::GetEdenPathString(Common::FS::EdenPath::SDMCDir);
auto const hbl_path = (sd_dir / "atmosphere" / "hbl.nsp").string();
BootGame(QString::fromStdString(hbl_path), ApplicationAppletParameters());
} }
} }
} }