| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
Adds support for loading games with multiple programs embedded within such as the Dragon Quest 1+2+3 Collection
|
|
|
|
|
|
|
|
|
|
|
| |
Creates a new BasicSettings class in common/settings, and forces setting
a default and label for each setting that uses it in common/settings.
Moves defaults and labels from both frontends into common settings.
Creates a helper function in each frontend to facillitate reading the
settings now with the new default and label properties.
Settings::Setting is also now a subclass of Settings::BasicSetting. Also
adds documentation for both Setting and BasicSetting.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* common: fs: fs_types: Create filesystem types
Contains various filesystem types used by the Common::FS library
* common: fs: fs_util: Add std::string to std::u8string conversion utility
* common: fs: path_util: Add utlity functions for paths
Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library
* common: fs: file: Rewrite the IOFile implementation
* common: fs: Reimplement Common::FS library using std::filesystem
* common: fs: fs_paths: Add fs_paths to replace common_paths
* common: fs: path_util: Add the rest of the path functions
* common: Remove the previous Common::FS implementation
* general: Remove unused fs includes
* string_util: Remove unused function and include
* nvidia_flags: Migrate to the new Common::FS library
* settings: Migrate to the new Common::FS library
* logging: backend: Migrate to the new Common::FS library
* core: Migrate to the new Common::FS library
* perf_stats: Migrate to the new Common::FS library
* reporter: Migrate to the new Common::FS library
* telemetry_session: Migrate to the new Common::FS library
* key_manager: Migrate to the new Common::FS library
* bis_factory: Migrate to the new Common::FS library
* registered_cache: Migrate to the new Common::FS library
* xts_archive: Migrate to the new Common::FS library
* service: acc: Migrate to the new Common::FS library
* applets/profile: Migrate to the new Common::FS library
* applets/web: Migrate to the new Common::FS library
* service: filesystem: Migrate to the new Common::FS library
* loader: Migrate to the new Common::FS library
* gl_shader_disk_cache: Migrate to the new Common::FS library
* nsight_aftermath_tracker: Migrate to the new Common::FS library
* vulkan_library: Migrate to the new Common::FS library
* configure_debug: Migrate to the new Common::FS library
* game_list_worker: Migrate to the new Common::FS library
* config: Migrate to the new Common::FS library
* configure_filesystem: Migrate to the new Common::FS library
* configure_per_game_addons: Migrate to the new Common::FS library
* configure_profile_manager: Migrate to the new Common::FS library
* configure_ui: Migrate to the new Common::FS library
* input_profiles: Migrate to the new Common::FS library
* yuzu_cmd: config: Migrate to the new Common::FS library
* yuzu_cmd: Migrate to the new Common::FS library
* vfs_real: Migrate to the new Common::FS library
* vfs: Migrate to the new Common::FS library
* vfs_libzip: Migrate to the new Common::FS library
* service: bcat: Migrate to the new Common::FS library
* yuzu: main: Migrate to the new Common::FS library
* vfs_real: Delete the contents of an existing file in CreateFile
Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now.
* input_profiles: Don't iterate the input profile dir if it does not exist
Silences an error produced in the log if the directory does not exist.
* game_list_worker: Skip parsing file if the returned VfsFile is nullptr
Prevents crashes in GetLoader when the virtual file is nullptr
* common: fs: Validate paths for path length
* service: filesystem: Open the mod load directory as read only
|
|
|
|
|
|
| |
Now that we have most of core free of shadowing, we can enable the
warning as an error to catch anything that may be remaining and also
eliminate this class of logic bug entirely.
|
| |
|
|
|
|
|
|
|
|
|
| |
Resolves shadowing warnings that aren't in a particularly large
subsection of core. Brings us closer to turning -Wshadow into an error.
All that remains now is for cases in the kernel (left untouched for now
since a big change by bunnei is pending), and a few left over in the
service code (will be tackled next).
|
|
|
|
|
| |
Eliminates variable shadowing cases across all the loaders to bring us
closer to enabling variable shadowing as an error in core.
|
|
|
|
| |
Sets a default size of 0x1FE00000 bytes (510 MiB) for the system_resource_size when a NPDM is not present.
|
|
|
|
| |
- Removes a dependency on core and input_common from common.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
During the transition to make the error dialog translatable, I
accidentally got rid of the conversion to ResultStatus, which prevented
operator<< from being invoked during formatting.
This adds a function to directly retrieve the result status string
instead so that it displays again.
|
|
|
|
|
| |
Makes use of the VirtualDir and VirtualFile aliases across the board
instead of having a few isolated places that don't use it.
|
|
|
|
|
|
| |
Removes all remaining usages of the global system instance. After this,
migration can begin to migrate to being constructed and managed entirely
by the various frontends.
|
| |
|
|
|
|
|
|
|
| |
With this, only 19 usages of the global system instance remain within
the core library.
We're almost there.
|
| |
|
|
|
|
|
|
|
| |
Recent changes to the build system that made more warnings be flagged as
errors caused building via clang to break.
Fixes #4795
|
|
|
|
|
|
|
|
|
| |
Makes our error coverage a little more consistent across the board by
applying it to Linux side of things as well. This also makes it more
consistent with the warning settings in other libraries in the project.
This also updates httplib to 0.7.9, as there are several warning
cleanups made that allow us to enable several warnings as errors.
|
|
|
|
|
|
|
|
| |
Allows some implementations to avoid completely zeroing out the internal
buffer of the optional, and instead only set the validity byte within
the structure.
This also makes it consistent how we return empty optionals.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Now all that remains is:
18 instances in file_sys code
14 instances in GDB stub code (this can be tossed wholesale)
4 instances in HLE code
2 instances in settings code.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Migrates a remaining common file over to the Common namespace, making it
consistent with the rest of common files.
This also allows for high-traffic FS related code to alias the
filesystem function namespace as
namespace FS = Common::FS;
for more concise typing.
|
|
|
|
|
|
|
|
| |
This makes it more inline with its currently unavailable standardized
analogue std::derived_from.
While we're at it, we can also make the template match the requirements
of the standardized variant as well.
|
| |
|
|
|
|
| |
Relies on #4465 for concept.h Common::IsBaseOf
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Given the std::vector was const, an automatic move out of the function
could not occur.
We can allow automatic return value optimizations to occur by making the
buffer non-const.
|
| |
|
| |
|
|
|
|
| |
- helpful to disambiguate Kernel::Memory namespace.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Certain newer unity games (Terraria, Pokemon Mystery Dungeon) require
that the argument region be populated. Failure to do so results in
an integer underflow in argument count, and eventually an unmapped
read at 0x800000000. Providing this default fixes this.
Note that the behavior of official software is as yet unverified,
arguments-wise.
|
|
|
|
|
| |
It is currently a std::vector, however we might want to replace it with a more fancy allocator.
So we can't use the C++ iterators any more.
|
| |
|
|
|
| |
As opposed to converting to string and then back to hex array
|
| |
|
|\
| |
| | |
nsp: Fix various errors with loading and processing of extracted NSPs
|
| |
| |
| |
| | |
Avoids all extracted NSPs being marked as error file type because they don't have program NCAs.
|
| |
| |
| |
| | |
Avoids 0 being used as title ID for all extracted NSPs.
|
| |
| |
| |
| |
| |
| | |
With this, the "Developer" field in the Properties for homebrew is now populated.
Signed-off-by: Nick Renieris <velocityra@gmail.com>
|
| |
| |
| |
| |
| |
| | |
This commit ensures that all backing memory allocated for the Guest CPU
is aligned to 256 bytes. This due to how gpu memory works and the heavy
constraints it has in the alignment of physical memory.
|
| | |
|
|\ \
| | |
| | | |
loader, file_sys: Add support for parsing and loading KIP (Kernel Internal Process) files
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
core: Add detailed local reporting feature for development
|
| | | |
| | | |
| | | | |
Also cleanup of general stuff
|
| | | |
| | | |
| | | |
| | | | |
Needed for backtrace decomposition
|
| |_|/
|/| |
| | |
| | |
| | |
| | | |
These can be generified together by using a concept type to designate
them. This also has the benefit of not making copies of potentially very
large arrays.
|
|\ \ \
| |_|/
|/| | |
core/telemetry_session: Remove usages of the global system accessor
|
| |/
| |
| |
| | |
This is a hold-over from Citra and doesn't apply to yuzu.
|
|/
|
|
|
| |
This was previously performing a size_t == int comparison. Silences a
-Wsign-compare warning.
|
|
|
|
| |
Unintentionally introduced in 552d5071fa171165e4054392d8bb6bf2ecc924e2
|
|
|
|
|
|
|
|
|
| |
This gives us significantly more control over where in the
initialization process we start execution of the main process.
Previously we were running the main process before the CPU or GPU
threads were initialized (not good). This amends execution to start
after all of our threads are properly set up.
|
|\
| |
| | |
file_sys: Provide generic interface for accessing game data
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Applies the override specifier where applicable. In the case of
destructors that are defaulted in their definition, they can
simply be removed.
This also removes the unnecessary inclusions being done in audin_u and
audrec_u, given their close proximity.
|
|\ \
| | |
| | | |
Better LZ4 compression utilization for the disk based shader cache and the yuzu build system
|
| | | |
|
| |/ |
|
|\ \
| |/
|/| |
kernel/codeset: Make CodeSet's memory data member a regular std::vector
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The use of a shared_ptr is an implementation detail of the VMManager
itself when mapping memory. Because of that, we shouldn't require all
users of the CodeSet to have to allocate the shared_ptr ahead of time.
It's intended that CodeSet simply pass in the required direct data, and
that the memory manager takes care of it from that point on.
This means we just do the shared pointer allocation in a single place,
when loading modules, as opposed to in each loader.
|
|\ \
| | |
| | | |
loader/nso: Minor refactoring
|
| | |
| | |
| | |
| | |
| | | |
Makes it impossible to indirectly violate the ODR in some other
translation unit due to these existing.
|
| | |
| | |
| | |
| | |
| | | |
Now that the NSO header has the proper size, we can just use sizeof on
it instead of having magic constants.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This source file was utilizing its own version of the NSO header.
Instead of keeping this around, we can have the patch manager also use
the version of the header that we have defined in loader/nso.h
|
| |/
| |
| |
| |
| |
| |
| |
| | |
The total struct itself is 0x100 (256) bytes in size, so we should be
providing that amount of data.
Without the data, this can result in omitted data from the final loaded
NSO file.
|
|/
|
|
|
| |
Instead, pass in the core timing instance and make the dependency
explicit in the interface.
|
|\
| |
| | |
file_sys: Implement parser and interpreter for game memory cheats
|
| | |
|
| |
| |
| |
| | |
For rom directories (and by extension, XCI/NSP/NAX/NCA) this is for the NSO with name 'main', for regular NSOs, this is the NSO.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Given this is utilized by the loaders, this allows avoiding inclusion of
the kernel process definitions where avoidable.
This also keeps the loading format for all executable data separate from
the kernel objects.
|
| |
| |
| |
| | |
Given the class is now currently unused, it can be removed.
|
|/
|
|
|
|
| |
Neither the NRO or NSO loaders actually make use of the functions or
members provided by the Linker interface, so we can just remove the
inheritance altogether.
|
| |
|
| |
|
| |
|
|\
| |
| | |
kernel: Handle kernel capability descriptors
|
| |
| |
| |
| |
| | |
While we're at it, we can also toss out the leftover capability parsing
from Citra.
|
|/ |
|
|\
| |
| | |
patch_manager: Add support for disabling patches
|
| | |
|
| |
| |
| |
| |
| |
| | |
No implementations actually modify instance state (and it would be
questionable to do that in the first place given the name), so we can
make this a const member function.
|
| |
| |
| |
| |
| | |
Similar to the NRO changes, we can also pass the process explicitly as a
parameter from Load instead of indirecting through the System class.
|
| |
| |
| |
| |
| | |
This simply acts as a forwarding function for the Load() function, so
this doesn't need to be directly exposed.
|
|/
|
|
|
|
| |
Load() is already given the process instance as a parameter, so instead
of coupling the class to the System class, we can just forward that
parameter to LoadNro()
|
|\
| |
| | |
ldr_ro: Complete LDR:RO implementation
|
| |
| |
| |
| | |
Credits to Subv
|
|\ \
| |/
|/| |
patch_manager: Add support for dumping uncompressed NSOs
|
| |
| |
| |
| | |
When enabled in settings, PatchNSO will dump the unmodified NSO that it was passed to a file named <build id>.nso in the dump root for the current title ID.
|
|\ \
| | |
| | | |
[ns|fsp_srv]: Implement various functions to boot Checkpoint
|
| |/
| |
| |
| | |
Allows NRO homebrew to use the RomFS in the ASET section.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* get rid of boost::optional
* Remove optional references
* Use std::reference_wrapper for optional references
* Fix clang format
* Fix clang format part 2
* Adressed feedback
* Fix clang format and MacOS build
|
|
|
|
| |
Prevents nullptr bug when trying to dump the RomFS of an NSP resulting from secondary_loader not being initialized.
|
| |
|
|
|
|
|
|
| |
The only reason the getter existed was to check whether or not the
program NCA was null. Instead, we can just provide a function to query
for the existence of it, instead of exposing it entirely.
|
|
|
|
|
| |
If a malformed NSO is attempted to be loaded, we shouldn't continue
onwards. We should be reporting an error and bailing out.
|
| |
|
|
|
|
|
|
| |
This function doesn't need to care about ownership semantics, so we can
just pass it a reference to the file itself, rather than a
std::shared_ptr alias.
|
|
|
|
|
|
|
|
| |
These only exist to ferry data into a Process instance and end up going
out of scope quite early. Because of this, we can just make it a plain
struct for holding things and just std::move it into the relevant
function. There's no need to make this inherit from the kernel's Object
type.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Neither of these functions require the use of shared ownership of the
returned pointer. This makes it more difficult to create reference
cycles with, and makes the interface more generic, as std::shared_ptr
instances can be created from a std::unique_ptr, but the vice-versa
isn't possible. This also alters relevant functions to take NCA
arguments by const reference rather than a const reference to a
std::shared_ptr. These functions don't alter the ownership of the memory
used by the NCA instance, so we can make the interface more generic by
not assuming anything about the type of smart pointer the NCA is
contained within and make it the caller's responsibility to ensure the
supplied NCA is valid.
|
| |
|
|
|
|
| |
Uses -p (--program) and following string as args.
|
|
|
|
| |
Only added if arguments string is non-empty and a pass is requested by loader.
|
| |
|
|
|
|
| |
Reads the update included with the game if it has one and adds the new ErrorNoPackedUpdate status.
|
|
|
|
| |
Fixes errors with certain updates
|
|
|
|
| |
Avoid resource-heavy classes and remove quasi-duplicated code.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Makes the public interface consistent in terms of how accesses are done
on a process object. It also makes it slightly nicer to reason about the
logic of the process class, as we don't want to expose everything to
external code.
|
|
|
|
|
|
|
|
| |
A process should never require being reference counted in this
situation. If the handle to a process is freed before this function is
called, it's definitely a bug with our lifetime management, so we can
put the requirement in place for the API that the process must be a
valid instance.
|
|
|
|
|
|
|
|
| |
The locations of these can actually vary depending on the address space
layout, so we shouldn't be using these when determining where to map
memory or be using them as offsets for calculations. This keeps all the
memory ranges flexible and malleable based off of the virtual memory
manager instance state.
|
|
|
|
|
|
|
|
|
| |
Rather than hard-code the address range to be 36-bit, we can derive the
parameters from supplied NPDM metadata if the supplied exectuable
supports it. This is the bare minimum necessary for this to be possible.
The following commits will rework the memory code further to adjust to
this.
|
|
|
|
|
|
| |
* Added support for uncompressed NSOs
* Moved compressed section check to NsoHeader
|
|
|
|
|
|
|
|
|
| |
An instance of the NAX apploader already has an existing NAX instance in
memory. Calling directly into IdentifyType() directly would re-parse the
whole file again into yet another NAX instance, only to toss it away
again.
This gets rid of unnecessary/redundant file parsing and allocations.
|
|
|
|
|
|
|
|
|
| |
AsNCA() allocates an NCA instance every time it's called. In the current
manner it's used, it's quite inefficient as it's making a redundant
allocation.
We can just amend the order of the conditionals to make it easier to
just call it once.
|
| |
|
|
|
|
|
|
| |
Previously, these were sitting outside of the Kernel namespace, which
doesn't really make sense, given they're related to the Thread class
which is within the Kernel namespace.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Fixes base game read errors
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Eliminated duplicate code and adds support for Rev1+ carts
|
|
|
|
| |
Previously only loaded from control metadata
|
| |
|
|
|
|
|
|
| |
Eliminates the need to rebuild some source files if the file_util header
ever changes. This also uncovered some indirect inclusions, which have
also been fixed.
|
|
|
|
|
|
|
|
|
|
|
| |
The follow-up to e2457418dae19b889b2ad85255bb95d4cd0e4bff, which
replaces most of the includes in the core header with forward declarations.
This makes it so that if any of the headers the core header was
previously including change, then no one will need to rebuild the bulk
of the core, due to core.h being quite a prevalent inclusion.
This should make turnaround for changes much faster for developers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As means to pave the way for getting rid of global state within core,
This eliminates kernel global state by removing all globals. Instead
this introduces a KernelCore class which acts as a kernel instance. This
instance lives in the System class, which keeps its lifetime contained
to the lifetime of the System class.
This also forces the kernel types to actually interact with the main
kernel instance itself instead of having transient kernel state placed
all over several translation units, keeping everything together. It also
has a nice consequence of making dependencies much more explicit.
This also makes our initialization a tad bit more correct. Previously we
were creating a kernel process before the actual kernel was initialized,
which doesn't really make much sense.
The KernelCore class itself follows the PImpl idiom, which allows
keeping all the implementation details sealed away from everything else,
which forces the use of the exposed API and allows us to avoid any
unnecessary inclusions within the main kernel header.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Prevents NCA-related errors from being masked into MissingProgramNCA or MissingKeyFile
|
|
|
|
|
|
|
|
| |
Avoids the need to rebuild multiple source files if the filesystem code
headers change.
This also gets rid of a few instances of indirect inclusions being
relied upon
|
|\
| |
| | |
loader/{nca, xci}: Remove unnecessary includes and unused member variables
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Many of these aren't necessary and will cause this file to be required
to be recompiled whenever any changes to those files are made, which
lengthens compile times for no reason.
This also removes an unused metadata variable from AppLoader_XCI
|
|\ \
| | |
| | | |
file_sys: Add support for registration format
|
| | |
| | |
| | |
| | | |
Needed to avoid mismatch filetype warnings on split NAND NCAs
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We can make the enum class type compatible with fmt by providing an
overload of operator<<.
While we're at it, perform proper bounds checking. If something exceeds
the array, it should be a hard fail, because it's, without a doubt, a
programmer error in this case.
|
| |/
|/|
| |
| | |
These mappings are leftovers from citra and don't apply to the Switch.
|
| | |
|
|/
|
|
| |
GetMessageForResultStatus takes a u16, not a size_t.
|
|
|
| |
Full list of new errors and descriptions in core/loader/loader.h
|
| |
|
|\
| |
| | |
Add Icons and Metadata Support
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
| |
Eliminates duplicate code shared between their Load methods, after all the only difference is how the romfs is handled.
|
|\
| |
| | |
XCI and Encrypted NCA Support
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Using member variables for referencing the segments array increases the
size of the class in memory for little benefit. The same behavior can be
achieved through the use of accessors that just return the relevant
segment.
|
|/
|
|
|
|
| |
General moving to keep kernel object types separate from the direct
kernel code. Also essentially a preliminary cleanup before eliminating
global kernel state in the kernel code.
|
| |
|
|
|
|
|
| |
Avoids unwanted implicit conversions. Thankfully, given the large amount
of cleanup in past PRs, only this tiny amount is left over to cover.
|
|\
| |
| | |
loader: Minor cleanup
|
| |
| |
| |
| |
| |
| | |
RealVfsFile inherits from VfsFile, the instance from std::make_shared is
already compatible with the function argument type, making the copy
constructor call unnecessary.
|
|\ \
| | |
| | | |
linker: Remove unused parameter from WriteRelocations()
|
| |/
| |
| |
| |
| | |
is_jump_relocation is never used within the function, so we can just
remove it.
|
| |
| |
| |
| |
| | |
It's sufficient to use a forward declaration instead of a direct
inclusion here.
|
| |
| |
| |
| |
| | |
Makes the code more uniform, and also braces cases where the body of an
unbraced conditional travels more than one line.
|
| |
| |
| |
| |
| | |
Makes it consistent with the other Apploader constructors, and prevents
implicit conversions.
|
|/
|
|
| |
This isn't used anywhere in the header.
|
|
|
|
|
|
| |
Cleanup
Review fixes
|
|
|
|
|
| |
Avoids unnecessary construction of std::string instances where
applicable.
|
|
|
|
|
| |
This avoids a truncating cast on size. I doubt we'd ever traverse a
directory this large, however we also shouldn't truncate sizes away.
|
|\
| |
| | |
Loader: Only print the module names and addresses if they actually exist.
|
| | |
|
|\ \
| | |
| | | |
filesys/loader: std::move VirtualFile instances in constructors where applicable
|
| |/
| |
| |
| | |
This avoids unnecessary atomic reference count increments and decrements
|
| | |
|
|/ |
|
|\
| |
| | |
loader: Amend Doxygen comments
|
| |
| |
| |
| | |
These weren't adjusted when VFS was introduced
|
|\ \
| | |
| | | |
loader/nso: Check if read succeeded in IdentifyFile() before checking magic value
|
| |/
| |
| |
| |
| |
| | |
We should always assume the filesystem is volatile and check each IO
operation. While we're at it reorganize checks so that early-out errors
are near one another.
|
| | |
|
| |
| |
| |
| | |
We can just initialize these vectors directly via their constructor.
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
* Virtual Filesystem
* Fix delete bug and documentate
* Review fixes + other stuff
* Fix puyo regression
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* More improvements to GDBStub
- Debugging of threads should work correctly with source and assembly level stepping and modifying registers and memory, meaning threads and callstacks are fully clickable in VS.
- List of modules is available to the client, with assumption that .nro and .nso are backed up by an .elf with symbols, while deconstructed ROMs keep N names.
- Initial support for floating point registers.
* Tidy up as requested in PR feedback
* Tidy up as requested in PR feedback
|
|
|
|
| |
This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add VfsFile and VfsDirectory classes
* Finish abstract Vfs classes
* Implement RealVfsFile (computer fs backend)
* Finish RealVfsFile and RealVfsDirectory
* Finished OffsetVfsFile
* More changes
* Fix import paths
* Major refactor
* Remove double const
* Use experimental/filesystem or filesystem depending on compiler
* Port partition_filesystem
* More changes
* More Overhaul
* FSP_SRV fixes
* Fixes and testing
* Try to get filesystem to compile
* Filesystem on linux
* Remove std::filesystem and document/test
* Compile fixes
* Missing include
* Bug fixes
* Fixes
* Rename v_file and v_dir
* clang-format fix
* Rename NGLOG_* to LOG_*
* Most review changes
* Fix TODO
* Guess 'main' to be Directory by filename
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Start to add NCA support in loader
* More nca stuff
* More changes to nca.cpp
* Now identifies decrypted NCA cont.
* Game list fixes and more structs and stuff
* More updates to Nca class
* Now reads ExeFs (i think)
* ACTUALLY LOADS EXEFS!
* RomFS loads and games execute
* Cleanup and Finalize
* plumbing, cleanup and testing
* fix some things that i didnt think of before
* Preliminary Review Changes
* Review changes for bunnei and subv
|
|
|
|
|
|
| |
This makes the formatting expectations more obvious (e.g. any zero padding specified
is padding that's entirely dedicated to the value being printed, not any pretty-printing
that also gets tacked on).
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
* core, main.h: Abort on 32Bit ROMs
* main.cpp: Fix Grammar
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
There may be many CodeSets per Process, so it's wasteful and overcomplicated to store the program id in each of them.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Fix NRO entry point
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Clang format as a build target
|
| |/ |
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
|\
| |
| | |
nso: Modify .bss size calculation logic
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
# Conflicts:
# src/core/CMakeLists.txt
# src/core/arm/dynarmic/arm_dynarmic.cpp
# src/core/arm/dyncom/arm_dyncom.cpp
# src/core/hle/kernel/process.cpp
# src/core/hle/kernel/thread.cpp
# src/core/hle/kernel/thread.h
# src/core/hle/kernel/vm_manager.cpp
# src/core/loader/3dsx.cpp
# src/core/loader/elf.cpp
# src/core/loader/ncch.cpp
# src/core/memory.cpp
# src/core/memory.h
# src/core/memory_setup.h
|
| | |
|
| |
| |
| |
| | |
The loaders will now just create a Kernel::Process, construct it and return it to the caller, which is responsible for setting it as the current process and configuring the global page table.
|
| |
| |
| |
| |
| |
| |
| |
| | |
The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session.
When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc).
3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time.
|
| |\
| | |
| | | |
Switchable Page Tables
|
| | |
| | |
| | |
| | | |
Don't expose Memory::current_page_table as a global.
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* loader/ncch: split NCCH parsing into its own file
* loader/ncch: add support for loading update NCCHs from the SD card
* loader/ncch: fix formatting
* file_sys/ncch_container: Return a value for OpenFile
* loader/ncch: cleanup, always instantiate overlay_ncch to base_ncch
* file_sys/ncch_container: better encryption checks, allow non-app NCCHs to load properly and for the existence of NCCH structures to be checked
* file_sys/ncch_container: pass filepath as a const reference
|
| |
| |
| |
| | |
The loader is in charge of setting the newly created process's page table as the main one during the loading process.
|
| |
| |
| |
| |
| | |
* Network: Set and send the game information over enet
Added Callbacks for RoomMember and GetMemberList to Room in preparation for web_services.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
- Deleted GetStatus() because it wasn't used anywhere outside of Core::System.
- Fixed design flaw where the message bar status could be set despite the game being stopped.
|
| |
|
|
|
|
|
|
|
|
| |
- Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review).
- Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore.
- Made dialog messages more clear.
- Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic.
- Cleaned up some other stuff.
|
| |
|
| |
|
|
|
|
|
| |
This was now mostly unused except by thread creation, which used a
symbol of the entrypoint, if available, to name the thread.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Corrects a few issues with regards to Doxygen documentation, for example:
- Incorrect parameter referencing.
- Missing @param tags.
- Typos in @param tags.
and a few minor other issues.
|
| |
|
|
|
|
| |
As per devkitPro/3dstools@47bea18
|
| |
|
|\
| |
| | |
Config: auto-select region and language
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
| |
3dsx and elf files default to system mode 2 (96MB allocated to the application).
This allows Home Menu to boot without modifications.
Closes #1849
|
|
|
|
|
|
|
| |
3dsx and elf files default to system mode 2 (96MB allocated to the application).
This allows Home Menu to boot without modifications.
Closes #1849
|
| |
|
| |
|
|
|
|
|
|
|
| |
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
|
| |
|
| |
|
|
|
|
| |
Also rewrite Qt wrappers to use those.
|
| |
|
| |
|
|
|
|
|
| |
This allows frontends to keep a single loader and use it multiple times
e.g. for code loading and SMDH parsing.
|
|\
| |
| | |
Kernel/Threading: Warn when a thread can be scheduled in the Syscore (Core 1)
|
| |
| |
| |
| | |
We do not currently implement any cores other than the AppCore (Core 0).
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
|\
| |
| | |
Common: Remove Common::make_unique, use std::make_unique
|
| | |
|
|/ |
|
|\
| |
| | |
Output errors in GUI
|
| |
| |
| |
| | |
Add error popup when citra initialization failed
|
| | |
|
|/
|
|
|
| |
This is useful for all sorts of things, but mainly to identify save
folders more easily.
|
| |
|
|\
| |
| | |
Loader: Implement NCCH encryption check
|
| | |
|
| | |
|
|/
|
|
| |
The LOG_* function itself already appends one.
|
|\
| |
| | |
Initial implementation of a game list
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
Make `Loader::LoadFile` return an `ErrorNotImplemented` if you call
it on a CIA file.
|
|
|
|
|
| |
Make `GetFileTypeString` return ‘CIA’ for CIA (CTR Importable
Archive) files.
|
| |
|
|
|
|
| |
and fix various warnings
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The code now properly configures the process image to match the loaded
binary segments (code, rodata, data) instead of just blindly allocating
a large chunk of dummy memory.
|
| |
|
| |
|
|\
| |
| | |
Cleanup includes, mostly in common
|
| | |
|
| | |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
| |
Implemented svcs GetResourceLimit, GetResourceLimitCurrentValues and GetResourceLimitLimitValues.
Note that the resource limits do not currently keep track of used objects, since we have no way to distinguish between an object created by the application, and an object created by some HLE module once we're inside Kernel::T::Create.
|
|
|
|
|
|
|
| |
memory.cpp/h contains definitions related to acessing memory and
configuring the address space
mem_map.cpp/h contains higher-level definitions related to configuring
the address space accoording to the kernel and allocating memory.
|
|\
| |
| | |
Small memory map definitions cleanup
|
| | |
|
|/ |
|
|
|
|
|
| |
It is of very limited practical utility currently, and will soon be
impossible to support due to more accurate memory map emulation.
|
| |
|
| |
|
| |
|
|
|
|
| |
This has been obsoleted by the field in Process.
|
| |
|
| |
|
|
|
|
| |
along with more info being logged.
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Silence a few warnings.
|
| | |
|
|/ |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
License change
|
| | |
|
|\ \
| | |
| | | |
Clean up some warnings
|
| |/ |
|
|/ |
|
|
|
|
|
|
|
|
|
|
| |
The savedata for each game is stored in /savedata/<ProgramID> for NCCH files. ELF files and 3DSX files use the folder 0 because they have no ID information
Got rid of the code duplication in File and Directory
Files that deal with the host machine's file system now live in DiskFile, similarly for directories and DiskDirectory and archives with DiskArchive.
FS_U: Use the correct error code when a file wasn't found
|
|
|
|
|
|
|
| |
- Refactor FS::Archive internals to make Archive creation and lifetime
management clearer.
- Remove the "Archive as a File" hack.
- Implement 64-bit Archive handles.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
These functions are not referred to by their linkage name outside of the translation unit, so they can be marked as static.
|
| |
|
|\
| |
| | |
loader.cpp: improved file extension checking, made Upper/LowerStr useful, moved string_util into Common namespace
|
| | |
|
| |
| |
| |
| | |
Instead of forcibly taking the last 4 characters, it now finds the last extension separator (the period) and takes a substr of its location.
|
|/ |
|
|
|
|
| |
In C++ you can simply just declare it as is.
|
| |
|
|
|
|
|
|
| |
- Useful for debugging homebrew
Qt: Updated GUI to support loading .bin files.
|
| |
|
| |
|
| |
|
|
|
|
| |
- Required "file" handle to be made local and explicitly opened/closed as needed
|
|
|
|
|
|
|
|
|
|
| |
Archive: Fixed brace ugliness for neobrain :)
FS: Commented out unused local variables to prevent warnings.
...But keeping them here for future use.
archive_romfs: Removed unused #include.
|
|
|
|
| |
NCCH: Removed extra qualification ‘Loader::AppLoader_NCCH::’.
|
|
|
|
| |
NCCH: Updated LoadExec to use Memory::WriteBlock function to load binary code.
|
| |
|
| |
|
| |
|
|
|
|
| |
Loader: Added ErrorNotUsed ReturnStatus type to specify when something is not used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Various cleanups/refactorings to Loader, ELF, and NCCH modules.
- Added AppLoader interface to ELF and NCCH.
- Updated Qt/GLFW frontends to check AppLoader ResultStatus.
NCCH: Removed extra qualification typos.
Loader: Removed unnecessary #include's.
NCCH: Improved readability of memcmp statements.
NCCH: Added missing space.
Elf: Removed unnecessary usage of unique_ptr.
Loader: Removed unnecessary usage of unique_ptr.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
NCCH: Fixed typo in printing NCCH filename.
|
|
|