| Age | Commit message (Collapse) | Author |
|
system_archive: Add open-source reimplementation of MiiModel data
|
|
|
|
This implements svcMapPhysicalMemory/svcUnmapPhysicalMemory for Yuzu,
which can be used to map memory at a desired address by games since
3.0.0.
It also properly parses SystemResourceSize from NPDM, and makes
information available via svcGetInfo.
This is needed for games like Super Smash Bros. and Diablo 3 -- this
PR's implementation does not run into the "ASCII reads" issue mentioned
in the comments of #2626, which was caused by the following bugs in
Yuzu's memory management that this PR also addresses:
* Yuzu's memory coalescing does not properly merge blocks. This results
in a polluted address space/svcQueryMemory results that would be
impossible to replicate on hardware, which can lead to game code making
the wrong assumptions about memory layout.
* This implements better merging for AllocatedMemoryBlocks.
* Yuzu's implementation of svcMirrorMemory unprotected the entire
virtual memory range containing the range being mirrored. This could
lead to games attempting to map data at that unprotected
range/attempting to access that range after yuzu improperly unmapped
it.
* This PR fixes it by simply calling ReprotectRange instead of
Reprotect.
|
|
|
|
This can happen when installing NSPs too, not just XCIs.
|
|
DeltaFragments are not useful to us and are often not included in patch NSPs.
|
|
DeltaFragments are only used to download and apply partial patches on a real console, and are not useful to us at all. Most patch NSPs do not include them, and when they do, it's a waste of space to install them.
|
|
Avoids potential confusion, since patches and DeltaFragments are not the same thing. Actual full patches are listed under the Program type.
|
|
|
|
Used to determine StorageId source for application data.
|
|
|
|
loader, file_sys: Add support for parsing and loading KIP (Kernel Internal Process) files
|
|
log clutter in debug logs when theres really no need
|
|
|
|
Partial impl of GetAccumulatedSuspendedTickChangedEvent
IPC-100 was changed to InitializeApplicationInfoOld instead of InitializeApplicationInfo. IPC-150 makes an indentical call to IPC-100 however does extra processing. They should not have the same name as it's quite confusing to debug.
|
|
common/hex_util: Combine HexVectorToString() and HexArrayToString()
|
|
file_sys/ips_layer: Remove unnecessary reserve() call
|
|
file_sys/card_image: Minor cleanup
|
|
Given 'replace' is assigned to on the following line, this isn't
necessary, given the underlying data is going to be overwritten
entirely.
|
|
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.
|
|
We already support Rev 1+.
|
|
Names a few more entries in relevant structures. Information based off
SwitchBrew and my own RE.
|
|
Makes for nicer reading.
|
|
Makes for more consistent reading.
|
|
Same thing, significantly less noisy.
|
|
Same thing, less duplication. We can also std::move raw into the
PartitionFilesystem constructor.
|
|
We can just use the size of the array to dehardcode it.
|
|
Same thing, less code.
|
|
|
|
|
|
Needed for KIP loading as KIPs do not have an NPDM but do have the essential parts of the data within.
|
|
|
|
|
|
file_sys: Provide generic interface for accessing game data
|
|
file_sys/fsmitm_romfsbuild: Utilize a string_view in romfs_calc_path_hash
|
|
file_sys/nca_metadata: Remove unnecessary comparison operators for TitleType
|
|
service/fsp_srv: Update SaveDataInfo and SaveDataDescriptor structs
|
|
BitField has been trivially copyable since
e99a14862841841d74be8d0ea9426c2d23546b5e, so we can eliminate these
TODO comments and use ReadObject() directly instead of memcpying the
data.
|
|
enum class elements from the same enum can already be compared against
one another without the need for explicitly defined comparison
operators.
|
|
The given string instance doesn't need to be copied entirely, we can
just use a view instead.
|
|
Passing around a 64 byte data struct by value is kind of wasteful,
instead pass a reference to the struct.
|
|
I realized that I updated the documentation on SwitchBrew a while ago,
but never actually updated the structs within yuzu.
|
|
Quite a bit of these were out of sync with Switchbrew (and in some cases
entirely wrong). While we're at it, also expand the section of named
members. A segment within the control metadata is used to specify
maximum values for the user, device, and cache storage max sizes and
journal sizes.
These appear to be generally used by the am service (e.g. in
CreateCacheStorage, etc).
|
|
|
|
|
|
|
|
These don't need to be visible outside of the translation unit, so they
can be enclosed within an anonymous namespace.
|
|
set_sys: Implement GetFirmwareVersion(2) for libnx hosversion
|
|
loader/nso: Minor refactoring
|
|
|