mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-08-29 18:08:08 +00:00
54cd5fb8eb
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- - Dynamic shader cache reloading capability for qlaunch - Multi-process improvements (thanks to @frank1734), instead of just using the main application we now respect caller process (also did it for HID devices while I was at it) - Layer stack masks & shared buffer screenshot for video core, added different masks (screenshot, recording, etc.) this was discovered as an issue due to how in qlaunch the transition was not right between applications. May not be perfect but also fixes screenshots while using qlaunch - Reworked overlay display management (input and visibility) - instead of random numbers as I've previously did, I decided to add an AppletZIndex enum for better readability. Also split capability of input by touch and gamepad. - etc. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4238 Reviewed-by: Samuel <lizzie@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include "common/common_types.h"
|
|
#include "core/loader/loader.h"
|
|
|
|
namespace Core {
|
|
class System;
|
|
}
|
|
|
|
namespace FileSys {
|
|
class NACP;
|
|
class NCA;
|
|
}
|
|
|
|
namespace Loader {
|
|
|
|
class AppLoader_DeconstructedRomDirectory;
|
|
|
|
/// Loads an NCA file
|
|
class AppLoader_NCA final : public AppLoader {
|
|
public:
|
|
explicit AppLoader_NCA(FileSys::VirtualFile file_, u64 update_only_program_id = 0);
|
|
~AppLoader_NCA() override;
|
|
|
|
/**
|
|
* Identifies whether or not the given file is an NCA file.
|
|
*
|
|
* @param nca_file The file to identify.
|
|
*
|
|
* @return FileType::NCA, or FileType::Error if the file is not an NCA file.
|
|
*/
|
|
static FileType IdentifyType(const FileSys::VirtualFile& nca_file);
|
|
|
|
FileType GetFileType() const override {
|
|
return IdentifyType(file);
|
|
}
|
|
|
|
LoadResult Load(Kernel::KProcess& process, Core::System& system) override;
|
|
|
|
ResultStatus VerifyIntegrity(std::function<bool(size_t, size_t)> progress_callback) override;
|
|
|
|
ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override;
|
|
ResultStatus ReadProgramId(u64& out_program_id) override;
|
|
ResultStatus ReadControlData(FileSys::NACP& out_control) override;
|
|
ResultStatus ReadTitle(std::string& out_title) override;
|
|
|
|
ResultStatus ReadBanner(std::vector<u8>& buffer) override;
|
|
ResultStatus ReadLogo(std::vector<u8>& buffer) override;
|
|
|
|
ResultStatus ReadNSOModules(Modules& modules) override;
|
|
|
|
u64 GetProgramId() const;
|
|
|
|
private:
|
|
std::unique_ptr<FileSys::NCA> nca;
|
|
u64 update_only_program_id{};
|
|
std::unique_ptr<FileSys::NACP> nacp;
|
|
std::unique_ptr<AppLoader_DeconstructedRomDirectory> directory_loader;
|
|
};
|
|
|
|
} // namespace Loader
|