Lioncash
9ff743bc0a
ips_layer: Remove unnecessary explicit std::pair constructor in std::array
...
Makes the layout of the array consistent, by making all elements match,
instead of special-casing the first one.
2018-10-09 14:10:22 -04:00
Lioncash
f7d2889fb4
ips_layer: Add missing includes
...
Adds missing includes to prevent potential compilation issues in the
future. Also moves the definition of a struct into the cpp file, so that
some includes don't need to be introduced within the header.
2018-10-09 14:10:13 -04:00
Lioncash
93ac8d0fea
ips_layer: std::move data within PatchIPS() and Apply()
...
We don't need to make a copy of the read data, so we can std::move it
into the make_shared call here.
2018-10-09 14:06:44 -04:00
Lioncash
567e818440
ips_layer: Silence truncation and conversion warnings
...
Makes type conversions explicit to avoid compiler warnings.
2018-10-09 13:18:23 -04:00
David Marcec
f5631e78d1
Added bitfield instead of manually checking if the bit is set
2018-10-09 12:11:14 +11:00
David Marcec
af3ba94b2a
Actual kill execution when the bit isn't set, not the other way around
2018-10-09 11:14:48 +11:00
David Marcec
c50f66a8eb
svcBreak, Signalling to the debugger should not kill execution
...
When loading NROs, svcBreak is called to signal to the debugger that a new "module" is loaded. As no debugger is technically attached we shouldn't be killing the programs execution.
2018-10-09 11:10:30 +11:00
bunnei
561d79e034
Merge pull request #1423 from DarkLordZach/romfs-file-exts
...
fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
2018-10-08 12:31:27 -04:00
bunnei
6b48ba5271
Merge pull request #1424 from DarkLordZach/ips-witch
...
ips_layer: Add support for IPSwitch executable patches
2018-10-08 12:30:33 -04:00
bunnei
fd891ee9c0
Merge pull request #1456 from ogniK5377/aoc-u-fixups
...
Fixed assertion due to CountAddOnContent & Casting warnings
2018-10-08 01:21:05 -04:00
bunnei
3f1f82a8c4
Merge pull request #1457 from ogniK5377/unmap-buffer
...
Unmapping an unmapped buffer should succeed
2018-10-08 01:20:18 -04:00
David Marcec
c5c184246d
Unmapping an unmapped buffer should succeed
...
Hardware tests show that trying to unmap an unmapped buffer already should always succeed. Hardware test was tested up to 32 iterations of attempting to unmap
2018-10-08 13:26:48 +11:00
Zach Hilman
f945e9767c
nso/nro: Use default allocation size for arg_data
2018-10-07 14:32:33 -04:00
Zach Hilman
081f5c1dbf
cmd: Support passing game arguments from command line
...
Uses -p (--program) and following string as args.
2018-10-07 14:32:32 -04:00
Zach Hilman
95dff555a4
settings: Add program_args string setting
2018-10-07 14:32:05 -04:00
Zach Hilman
e09505ff61
nso/nro: Add NSO arguments structure to data section
...
Only added if arguments string is non-empty and a pass is requested by loader.
2018-10-07 14:30:15 -04:00
Zach Hilman
3ec054643e
partition_data_manager: Rename system files for hekate
...
x
2018-10-07 13:16:23 -04:00
Zach Hilman
29dc6f4519
crypto: Add PartitionDataManager
...
Keeps track of system files for key derivation
2018-10-07 13:15:11 -04:00
Zach Hilman
4aad010f7a
key_manager: Add support for loading keys from partition data
2018-10-07 13:15:11 -04:00
Zach Hilman
d041d6231c
key_manager: Add ETicket key derivation
...
Derives titlekeys
2018-10-07 13:15:11 -04:00
Zach Hilman
a57aac5772
key_manager: Add base key derivation
...
Derives master keys, game encryption keys, and package1/2 keys
2018-10-07 13:15:11 -04:00
Zach Hilman
d7398283e3
key_manager: Add BIS key getter
2018-10-07 13:15:11 -04:00
Zach Hilman
d6a0d5d432
key_manager: Add support for more keys
...
TSEC, SBK, BIS, and other Sources for proper derivation
2018-10-07 13:15:11 -04:00
Zach Hilman
c79d2ca6cf
key_manager: Add keyblob support
2018-10-07 13:15:11 -04:00
Zach Hilman
e4602748d6
key_manager: Add support for crypto revisions past 04
2018-10-07 13:15:11 -04:00
Zach Hilman
9e34303fb9
key_manager: Add support for comments in keyfiles
2018-10-07 13:15:11 -04:00
Zach Hilman
1fa6ee4723
vfs: Move forward declarations to separate file
2018-10-07 13:15:11 -04:00
Zach Hilman
ce05df0a6d
key_manager: Add support for console-specific keyfile
2018-10-07 13:15:11 -04:00
Zach Hilman
721632fe66
key_manager: Rename KEK to Kek
2018-10-07 13:15:11 -04:00
David Marcec
fa3f3cd07f
Fixed assertion due to CountAddOnContent
...
Word count should be 3 since we're pushing a result code and a u32.
Also fixed up compiler warnings due to casting
2018-10-08 00:25:46 +11:00
bunnei
6e4d2e672d
Merge pull request #1396 from DarkLordZach/packed-updates
...
loader: Add support for packed updates
2018-10-06 23:58:24 -04:00
bunnei
450c0a5adf
Merge pull request #1448 from ogniK5377/frontend-access
...
Ported #4296 from citra
2018-10-06 22:25:29 -04:00
David Marcec
612ce89eca
Added forward define for ServerPort
2018-10-06 17:47:33 +10:00
David Marcec
f84b9ed4e8
Ported #4296 from citra
...
This will allow us to easily remove the use of "NFC" in "System"
2018-10-06 16:49:01 +10:00
bunnei
b8b90ce6e6
Merge pull request #1332 from FearlessTobi/port-web-backend
...
Port web_service from Citra
2018-10-06 02:43:09 -04:00
Lioncash
6ddf8f34db
kernel/mutex: Amend behavior of TransferMutexOwnership()
...
This was the result of a typo accidentally introduced in
e51d715700
. This restores the previous
correct behavior.
The behavior with the reference was incorrect and would cause some games
to fail to boot.
2018-10-06 01:13:02 -04:00
balika011
1a5d6de0d4
thread: Make the scheduler pointer a regular pointer
...
Conceptually, it doesn't make sense for a thread to be able to persist
the lifetime of a scheduler. A scheduler should be taking care of the
threads; the threads should not be taking care of the scheduler.
If the threads outlive the scheduler (or we simply don't actually
terminate/shutdown the threads), then it should be considered a bug
that we need to fix.
Attributing this to balika011, as they opened #1317 to attempt to fix
this in a similar way, but my refactoring of the kernel code caused
quite a few conflicts.
2018-10-05 14:53:01 -04:00
bunnei
e51d715700
Merge pull request #1439 from lioncash/thread
...
kernel/thread: Make all instance variables private
2018-10-05 13:41:54 -04:00
Zach Hilman
38c2ac95af
romfs_factory: Extract packed update setter to new function
2018-10-05 08:53:51 -04:00
Zach Hilman
5acaeb04c4
patch_manager: Add support for NSP packed updates
...
Reads as Update (NSP) in add-ons
2018-10-05 08:48:44 -04:00
Zach Hilman
d79d4fd764
patch_manager: Add support for packed updates
...
Will prefer any installed update over the packed version.
2018-10-05 08:47:24 -04:00
Zach Hilman
5045748829
loader: Add getter for packed update
...
Reads the update included with the game if it has one and adds the new ErrorNoPackedUpdate status.
2018-10-05 08:46:31 -04:00
Zach Hilman
e948fbf5d0
loader: Add ReadRomFSIVFCOffset to NSP, XCI, and NAX loaders
...
Fixes errors with certain updates
2018-10-05 08:46:31 -04:00
Zach Hilman
d0e6b93695
patch_manager: Avoid romfs_ext requirement for patching
2018-10-04 14:09:11 -04:00
Zach Hilman
c1e069c066
fsmitm_romfsbuild: Extract stubs and IPS to romfs_ext dir
2018-10-04 12:29:20 -04:00
Zach Hilman
bc4bec8a60
fsmitm_romfsbuild: Add support for stubbing and IPS patches in LFS
2018-10-04 12:29:14 -04:00
Zach Hilman
110d578470
ips_layer: Fix inaccuracies with comments and flags
...
Specifically bugs/crashes that arise when putting them in positions that are legal but not typical, such as midline, between patch data, or between patch records.
2018-10-04 12:23:27 -04:00
Zach Hilman
70bd2bb1d3
ips_layer: Deduplicate resource usage
2018-10-04 11:34:36 -04:00
Zach Hilman
9669cdb710
ips_layer: Add support for escape sequences and midline comments
...
More accurately follows IPSwitch specification.
2018-10-04 11:34:30 -04:00
Zach Hilman
8886f2e55e
patch_manager: Add support for IPSwitch format patches
2018-10-04 11:34:06 -04:00
Zach Hilman
306739c2c4
ips_layer: Add IPSwitchCompiler to process IPSwitch format
2018-10-04 11:32:10 -04:00
bunnei
f85f2b3728
Merge pull request #1415 from DarkLordZach/ips
...
file_sys: Add support for loading IPS patches
2018-10-04 09:42:37 -04:00
Lioncash
baed7e1fba
kernel/thread: Make all instance variables private
...
Many of the member variables of the thread class aren't even used
outside of the class itself, so there's no need to make those variables
public. This change follows in the steps of the previous changes that
made other kernel types' members private.
The main motivation behind this is that the Thread class will likely
change in the future as emulation becomes more accurate, and letting
random bits of the emulator access data members of the Thread class
directly makes it a pain to shuffle around and/or modify internals.
Having all data members public like this also makes it difficult to
reason about certain bits of behavior without first verifying what parts
of the core actually use them.
Everything being public also generally follows the tendency for changes
to be introduced in completely different translation units that would
otherwise be better introduced as an addition to the Thread class'
public interface.
2018-10-04 00:14:15 -04:00
bunnei
cf3a6dd4a1
Merge pull request #1434 from DarkLordZach/dlc-edge-case
...
aoc_u: Fix edge case with DLC that causes breaks
2018-10-03 21:39:23 -04:00
bunnei
39f08e551d
Merge pull request #1433 from lioncash/fs
...
services/fsp_srv: Amend service function table
2018-10-03 19:13:57 -04:00
bunnei
15b2e2ec13
Merge pull request #1436 from lioncash/view
...
submission_package: Cleanup and bug fixes
2018-10-03 19:05:19 -04:00
bunnei
e7e347a828
Merge pull request #1432 from lioncash/lbl
...
service/lbl: Update service function table
2018-10-03 18:45:15 -04:00
bunnei
8679934693
Merge pull request #1435 from lioncash/xci
...
card_image: Ensure program_nca_status is always initialized
2018-10-03 18:44:28 -04:00
Lioncash
024eec02a5
submission_package: Avoid dangling std::string_view within SetTicketKeys()
...
GetName() returns a std::string by value, not by reference, so after the
std::string_view is constructed, it's not well defined to actually
execute any member functions of std::string_view that attempt to access
the data, as the std::string has already been destroyed. Instead, we can
just use a std::string and erase the last four characters.
2018-10-03 02:13:51 -04:00
Lioncash
dade709f63
submission_package: Correct location of null check within SetTicketKeys()
...
If a ticket file was ever a null pointer, we'd cause a null pointer
dereference, as we were calling GetExtension() on the pointer instance.
2018-10-03 02:06:30 -04:00
Lioncash
02841052aa
submission_package: Use std::string's rfind() when looking for the extension in InitializeExeFSAndRomFS()
...
When searching for a file extension, it's generally preferable to begin
the search at the end of the string rather than the beginning, as the
whole string isn't going to be walked just to check for something at the
end of it.
2018-10-03 01:51:01 -04:00
Lioncash
37ee05f7c0
submission_package: Ensure the 'extracted' member variable is always initialized
...
If an error occurs when constructing the PartitionFilesystem instance,
the constructor would be exited early, which wouldn't initialize the
extracted data member, making it possible for other code to perform an
uninitialized read by calling the public IsExtractedType() member
function. This prevents that.
2018-10-03 01:47:34 -04:00
Lioncash
ccf0a9cb38
submission_package: Move ExeFS and RomFS initialization to its own function
...
Like the other two bits of factored out code, this can also be put
within its own function. We can also modify the code so that it accepts
a const reference to a std::vector of files, this way, we can
deduplicate the file retrieval.
Now the constructor for NSP isn't a combination of multiple behaviors in
one spot. It's nice and separate.
2018-10-03 01:46:07 -04:00
Lioncash
fd312abedd
submission_package: Move NCA reading code to its own function
...
This too, is completely separate behavior from what is in the
constructor, so we can move this to its own isolated function to keep
everything self-contained.
2018-10-03 01:35:41 -04:00
Lioncash
4f18d35888
submission_package: Move ticket key setting to its own function
...
This behavior is entirely independent of the surrounding code, so it can
be put in its own function to keep the behavior separate.
2018-10-03 01:20:57 -04:00
Lioncash
0d83f8f255
submission_package: Invert conditionals within NSP's constructor to reduce nesting
...
We can use early continues here to reduce the amount of nesting.
2018-10-03 01:11:16 -04:00
Lioncash
cf463a9b67
card_image: Ensure program_nca_status is always initialized
...
If any of the error paths before the NCA retrieval are taken, it'll
result in program_nca_status being left in an inconsistent state. So we
initialize it by default with a value indicating an error.
2018-10-02 23:16:05 -04:00
Zach Hilman
9aaf1c0df8
aoc_u: Fix edge case with DLC that causes breaks
...
In some games (Splatoon 2 and Splatoon 2 Splatfest World Premiere, notably), pass offset=0 and count=2047 into the ListAddOnContent method which should return all DLCs for the current title. The (presumably) intended behavior is to successfully return a empty array but because of a < v. <= in an if statement, a failure error code was returned causing these games to svcBreak. This fixes that if statement.
2018-10-02 21:56:32 -04:00
Lioncash
cba78dc70a
services/fsp_srv: Amend service function table
...
Adds new functions that have been given names to the table. Information
is based off what is provided on Switchbrew.
2018-10-02 21:34:33 -04:00
Lioncash
d80dd2b812
service/lbl: Update service function table
...
Amends the lbl service table to include new names of functions that were
added to Switchbrew.
2018-10-02 21:15:59 -04:00
Zach Hilman
215b65fe75
nso: Optimize loading of IPS patches
...
Avoid resource-heavy classes and remove quasi-duplicated code.
2018-10-02 17:03:38 -04:00
fearlessTobi
ac06105dfe
Review comments -part 4
2018-10-02 15:30:49 +02:00
fearlessTobi
120d8f3bf7
Address more review comments
2018-10-02 15:30:48 +02:00
fearlessTobi
b4ace6ec6f
Address a bunch of review comments
2018-10-02 15:30:48 +02:00
fearlessTobi
4d139943f2
Port web_service from Citra
2018-10-02 15:30:48 +02:00
Zach Hilman
6d441828e6
deconstructed_rom_directory: Force NSO loader to patch NSOs
2018-10-01 16:02:50 -04:00
Zach Hilman
003b44822a
nso: Add framework to support patching of uncompressed NSOs
2018-10-01 16:02:50 -04:00
Zach Hilman
42fb4e82d3
patch_manager: Add PatchNSO function
...
While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
2018-10-01 16:02:50 -04:00
Zach Hilman
4c2a94fa94
patch_manager: Use strings for patch type instead of enum
2018-10-01 16:02:50 -04:00
Zach Hilman
21b2411c44
file_sys: Implement function to apply IPS patches
2018-10-01 16:01:46 -04:00
Zach Hilman
3c9e70fefa
nso: Replace NSOHeader padding bytes with build ID
2018-10-01 16:01:46 -04:00
Zach Hilman
f72046099a
aoc_u: Extract AccumulateAOCTitleIDs to separate function
2018-09-30 21:07:22 -04:00
Zach Hilman
7d86a008e2
aoc_u: Implement GetAddOnContentBaseId
...
Command #5
2018-09-30 21:01:35 -04:00
Zach Hilman
62225ae050
aoc_u: Implement Count, List and Prepare AddOnContent
...
Commands #2 , #3 , and #7
2018-09-30 21:01:35 -04:00
Zach Hilman
aa0c82e405
romfs_factory: Read from all locations with StorageId None
...
Previous behavior was to assert. Seems to mirror expected game behavior.
2018-09-30 21:01:35 -04:00
Zach Hilman
32fc31fb13
patch_manager: Add DLC recognition to PatchManager
2018-09-30 21:01:35 -04:00
bunnei
8f2ad3a66d
Merge pull request #1338 from raven02/service_vi
...
Implement ISystemDisplayService::GetDisplayMode
2018-09-30 15:39:54 -04:00
Lioncash
541c550753
kernel/svc: Implement svcGetThreadContext()
...
Now that we have all of the rearranging and proper structure sizes in
place, it's fairly trivial to implement svcGetThreadContext(). In the
64-bit case we can more or less just write out the context as is, minus
some minor value sanitizing. In the 32-bit case we'll need to clear out
the registers that wouldn't normally be accessible from a 32-bit
AArch32 exectuable (or process).
2018-09-30 05:29:40 -04:00
Lioncash
dccfe193a9
kernel/process: Add a data member to determine if a process is 64-bit or not.
...
This will be necessary for the implementation of svcGetThreadContext(),
as the kernel checks whether or not the process that owns the thread
that has it context being retrieved is a 64-bit or 32-bit process.
If the process is 32-bit, then the upper 15 general-purpose registers
and upper 16 vector registers are cleared to zero (as AArch32 only has
15 GPRs and 16 128-bit vector registers. not 31 general-purpose
registers and 32 128-bit vector registers like AArch64).
2018-09-30 05:29:40 -04:00
Lioncash
cf9d6c6f52
kernel/process: Make data member variables private
...
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.
2018-09-30 02:30:01 -04:00
Lioncash
16145e2f21
arm_interface: Add missing fpsr/tpidr members to the ThreadContext struct
...
Internally within the kernel, it also includes a member variable for the
floating-point status register, and TPIDR, so we should do the same here to match
it.
While we're at it, also fix up the size of the struct and add a static
assertion to ensure it always stays the correct size.
2018-09-30 02:29:57 -04:00
raven02
4092907687
Implement ISystemDisplayService::GetDisplayMode
2018-09-30 10:04:03 +08:00
Lioncash
a63e6f9dfd
loader: Make the Load() function take a process as a regular reference, not a SharedPtr
...
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.
2018-09-29 16:00:03 -04:00
bunnei
97c0ac3545
Merge pull request #1412 from lioncash/move
...
kernel/object: Remove unnecessary std::move from DynamicObjectCast()
2018-09-29 11:58:58 -04:00
bunnei
f7b69d61f2
Merge pull request #1395 from lioncash/vm
...
process/vm_manager: Initial modifications to load NPDM metadata
2018-09-29 10:54:39 -04:00
Lioncash
f4c24d0832
kernel/object: Remove unnecessary std::move from DynamicObjectCast()
...
boost::static_pointer_cast for boost::intrusive_ptr (what SharedPtr is),
takes its parameter by const reference. Given that, it means that this
std::move doesn't actually do anything other than obscure what the
function's actual behavior is, so we can remove this. To clarify, this
would only do something if the parameter was either taking its argument
by value, by non-const ref, or by rvalue-reference.
2018-09-28 02:17:57 -04:00
bunnei
fc2419e441
Merge pull request #1394 from lioncash/stream
...
stream: Preserve enum class type in GetState()
2018-09-27 17:05:03 -04:00
Mat M
29ff84ea99
Merge pull request #1389 from PhiBabin/valgrind
...
FPCR register was uninitialized at start up
2018-09-27 15:23:03 -04:00
Lioncash
861580f6d2
fsmitm_romfsbuild: std::move std::vector instances in Build()
...
Avoids making copies of large std::vector instances where it's trivially
avoidable to do so.
2018-09-26 17:35:44 -04:00
Lioncash
7ecdaaf189
fsmitm_romfsbuild: Replace manual value aligning with Common::AlignUp()
...
Theres no need to do explicit bitwise arithmetic here, when we have a
function that does this with a more descriptive name.
2018-09-26 17:35:21 -04:00
bunnei
c0445006af
Merge pull request #1399 from lioncash/sched
...
kernel/scheduler: Take ARM_Interface instances by reference
2018-09-26 16:17:18 -04:00
bunnei
efcb83fb41
Merge pull request #1400 from lioncash/header
...
service: Add missing headers inclusions where applicable
2018-09-26 16:11:19 -04:00
Lioncash
11104b4883
patch_manager: Invert conditionals within ApplyLayeredFS()
...
Avoids the need to nest code quite a bit by early-exiting in error
cases.
2018-09-25 20:09:23 -04:00
Lioncash
e3b2ef9170
vfs_vector: Amend initializer list order in VectorVfsFile's constructor initializer list
...
Orders the initializer list members to be in the same order that they
would be initialized in. Avoids compiler warnings.
2018-09-25 20:06:21 -04:00
Lioncash
4654f89618
fsmitm_romfsbuild: Avoid type truncation warnings
...
Cast where explicitly necessary and in other cases we can simply modify
the algorithm to accomodate larger data.
2018-09-25 20:06:21 -04:00
Lioncash
91b56c4928
fsmitm_romfsbuild: Remove unnecessary constructors and initializers for RomFSBuildFileContext and RomFSBuildDirectoryContext
...
There's no need to duplicate in-class initializers with a constructor
initializer list. std::strings also initialize to empty by default.
2018-09-25 20:06:21 -04:00
Lioncash
1f92cbc059
fsmitm_romfsbuild: Remove unnecessary loops in Build()
...
The std::vector instances are already initially allocated with all
entries having these values, there's no need to loop through and fill
them with it again when they aren't modified.
2018-09-25 20:06:21 -04:00
Lioncash
fa9e0f9c8b
fsmitm_romfsbuild: Make auto variable into a std::size_t variable within Build()
...
auto x = 0;
auto-deduces x to be an int. This is undesirable when working with
unsigned values. It also causes sign conversion warnings. Instead, we
can make it a proper unsigned value with the correct width that the
following expressions operate on.
2018-09-25 20:06:21 -04:00
Lioncash
57616f9758
vfs/etc: Append std:: to size_t usages
...
Given we just recently had a patch backport this from citra, let's try
and keep the convention uniform.
2018-09-25 20:06:21 -04:00
Lioncash
28bef31ea8
vfs_concat/vfs_layered: Remove friend declarations from ConcatenatedVfsFile
...
Given these are only added to the class to allow those functions to
access the private constructor, it's a better approach to just make them
static functions in the interface, to make the dependency explicit.
2018-09-25 20:06:01 -04:00
Lioncash
14e2df5610
vfs_static: Remove template byte parameter from StaticVfsFile
...
This converts it into a regular constructor parameter. There's no need
to make this a template parameter on the class when it functions
perfectly well as a constructor argument.
This also reduces the amount of code bloat produced by the compiler, as
it doesn't need to generate the same code for multiple different
instantiations of the same class type, but with a different fill value.
2018-09-25 17:40:53 -04:00
Lioncash
e42bb5e003
service: Add missing headers inclusions where applicable
...
Gets rid of a few indirect inclusions.
2018-09-25 17:14:38 -04:00
bunnei
7b81e1e525
Merge pull request #1365 from DarkLordZach/lfs
...
file_sys: Add support for LayeredFS mods
2018-09-25 16:59:44 -04:00
Lioncash
598e4d2f6c
core_cpu: Make arm_interface instances a std::unique_ptr
...
This is only exposed by reference, so we can just make it a unique
pointer to get rid of the need to also use reference counting for the
pointer.
2018-09-25 16:04:56 -04:00
Lioncash
a58eefa7e4
kernel/scheduler: Take ARM_Interface instance by reference in the constructor
...
It doesn't make sense to allow a scheduler to be constructed around a
null pointer.
2018-09-25 16:00:17 -04:00
bunnei
b67c1fdf38
Merge pull request #1393 from tech4me/svc
...
svc: Updated svc names
2018-09-25 10:47:12 -04:00
Lioncash
83377113bf
memory: Dehardcode the use of fixed memory range constants
...
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.
2018-09-24 22:16:03 -04:00
Lioncash
6c6f95d071
svc: Report correct memory-related values within some of the cases in svcGetInfo()
...
Previously, these were reporting hardcoded values, but given the regions
can change depending on the requested address spaces, these need to
report the values that the memory manager contains.
2018-09-24 22:16:03 -04:00
Lioncash
7fd598636e
memory: Dehardcode the use of a 36-bit address space
...
Given games can also request a 32-bit or 39-bit address space, we
shouldn't be hardcoding the address space range as 36-bit.
2018-09-24 22:15:53 -04:00
Lioncash
75603b005b
process/vm_manager: Amend API to allow reading parameters from NPDM metadata
...
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.
2018-09-24 17:24:50 -04:00
David
367c52ff0d
Implemented fatal:u properly ( #1347 )
...
* Implemented fatal:u properly
fatal:u now is properly implemented with all the ipc cmds. Error reports/Crash reports are also now implemented for fatal:u. Crash reports save to yuzu/logs/crash_reports/
The register dump is currently known as sysmodules send all zeros. If there are any non zero values for the "registers" or the unknown values, let me know!
* Fatal:U fixups
* Made fatal:u execution break more clear
* Fatal fixups
2018-09-23 22:34:11 -04:00
David
2513e086ab
Stubbed IRS ( #1349 )
...
* Stubbed IRS
Currently we have no ideal way of implementing IRS. For the time being we should have the functions stubbed until we come up with a way to emulate IRS properly.
* Added IRS to logging backend
* Forward declared shared memory for irs
2018-09-23 22:33:29 -04:00
bunnei
f2c1fd08f9
Merge pull request #1354 from ogniK5377/ssl-version
...
Corrected SSL::SetInterfaceVersion
2018-09-23 22:32:14 -04:00
Zach Hilman
b3c2ec362b
fsmitm: Cleanup and modernize fsmitm port
2018-09-23 21:50:20 -04:00
Lioncash
2f6a611311
stream: Preserve enum class type in GetState()
...
Preserves the meaning/type-safetiness of the stream state instead of
making it an opaque u32. This makes it usable for other things outside
of the service HLE context.
2018-09-23 20:03:38 -04:00
tech4me
d42424ace0
svc: Updated svc names
2018-09-23 17:03:38 -07:00
David Marcec
c461188f51
Added audren:u#GetAudioRendererState
2018-09-23 22:32:01 +10:00
Philippe Babin
fb6bc2c495
FPCR register was uninitialized at start up
2018-09-22 21:17:43 -04:00
Zach Hilman
ba0873d33c
qt: Add UI elements for LayeredFS and related tools
2018-09-21 19:53:33 -04:00
Zach Hilman
050547b801
romfs: Implement CreateRomFS
2018-09-21 19:53:33 -04:00
Zach Hilman
6eada3c57d
file_sys: Port Atmosphere-NX fs_mitm implementation
2018-09-21 19:53:33 -04:00
Zach Hilman
940a711caf
filesystem: Add LayeredFS VFS directory getter
2018-09-21 19:53:33 -04:00
Zach Hilman
50a470eab8
bis_factory: Add mod directory VFS getter
2018-09-21 19:53:33 -04:00
Zach Hilman
16188acb50
patch_manager: Add LayeredFS mods support
2018-09-21 19:53:33 -04:00
Zach Hilman
44fdac334c
vfs_concat: Rewrite and fix ConcatenatedVfsFile
2018-09-21 19:53:33 -04:00
Zach Hilman
3e5c3d0f16
vfs_layered: Add LayeredVfsDirectory
...
Reads multiple dirs through as if a waterfall.
2018-09-21 19:53:05 -04:00
Zach Hilman
b52343a428
vfs_vector: Add VectorVfsFile
...
Maps a vector into the VFS interface.
2018-09-21 19:53:05 -04:00
Zach Hilman
c65d4d119f
vfs_static: Add StaticVfsFile
...
Always returns the template argument byte for all reads. Doesn't support writes.
2018-09-21 19:53:05 -04:00
Zach Hilman
f68e324672
vfs: Add and rewite VfsRawCopy functions
2018-09-21 19:53:05 -04:00
Zach Hilman
d6cbb3a3e0
vfs: Add GetEntries method
...
Maps name string to directory or file.
2018-09-21 19:53:05 -04:00
Lioncash
48b2eda492
svc: Move most process termination code to its own function within Process
...
Reduces the use of Process class members externally and keeps most code
related to tearing down a process with the rest of the process code.
2018-09-21 06:07:41 -04:00
Lioncash
acfc801d14
thread/process: Move TLS slot marking/freeing to the process class
...
Allows making several members of the process class private, it also
avoids going through Core::CurrentProcess() just to retrieve the owning
process.
2018-09-21 03:50:12 -04:00
David
1db1e013e0
Added support for uncompressed NSOs ( #1374 )
...
* Added support for uncompressed NSOs
* Moved compressed section check to NsoHeader
2018-09-21 00:39:30 -04:00
bunnei
0285ddfbd4
Merge pull request #1372 from lioncash/thread
...
kernel/thread: Use owner_process when setting the page table in SetupMainThread()
2018-09-20 23:35:29 -04:00
bunnei
072053ab95
Merge pull request #1371 from lioncash/fwd-arm
...
arm_interface: Replace kernel vm_manager include with a forward declaration
2018-09-20 23:35:06 -04:00
bunnei
c1c59617ad
Merge pull request #1364 from lioncash/content
...
file-sys: Default heavy-weight class destructors in the cpp file
2018-09-20 23:31:31 -04:00
bunnei
b0b57c21e6
Merge pull request #1368 from ogniK5377/nifm-fix
...
Added IRequest::Submit
2018-09-20 23:30:11 -04:00
David Marcec
b918925bd5
Revert GetRequestState
...
Even though setting this value to 3 is more correct. We break more games than we fix due to missing implementations. We should keep this as 0 for the time being
2018-09-21 12:15:49 +10:00
Lioncash
05aa4aa01a
kernel/thread: Use owner_process when setting the page table in SetupMainThread()
...
The owning process of a thread is required to exist before the thread,
so we can enforce this API-wise by using a reference. We can also avoid
the reliance on the system instance by using that parameter to access
the page table that needs to be set.
2018-09-20 21:10:00 -04:00
Lioncash
9b8fc2b689
arm_interface: Replace kernel vm_manager include with a forward declaration
...
Avoids an unnecessary inclusion and also uncovers three places where
indirect inclusions were relied upon, which allows us to also resolve
those.
2018-09-20 19:35:36 -04:00
Mat M
f237265187
Merge pull request #1370 from Hedges/GDBClean
...
Correct endianness of BRK
2018-09-20 17:25:56 -04:00
Mat M
1e35d8fa8f
Merge pull request #1362 from MerryMage/dynarmic
...
externals: Update dynarmic to 171d116
2018-09-20 17:22:42 -04:00
Jarek Syrylak
74f966404d
Correct endianness of BKPT
2018-09-20 22:03:57 +01:00
MerryMage
ef31487624
arm_dynarmic: Halt when BRK encountered
2018-09-20 19:12:42 +01:00
David Marcec
3f49725a51
Fixed submit
2018-09-21 00:51:13 +10:00
David Marcec
cfc9fe4460
Added IRequest::Submit
...
This fixes updated versions of SMO. Currently unable to test as I don't have an updated version
2018-09-21 00:47:30 +10:00
bunnei
8fe9572271
Merge pull request #1358 from DarkLordZach/temp-storage
...
savedata_factory: Add TemporaryStorage SaveDataType
2018-09-20 10:13:38 -04:00
bunnei
0931a711de
Merge pull request #1363 from lioncash/control
...
control_metadata: Move language name array definition to the cpp file
2018-09-20 10:13:23 -04:00
bunnei
b02a1e38fa
Merge pull request #1361 from lioncash/nax
...
xts_archive/nax: Minor interface changes
2018-09-20 10:13:10 -04:00
David Marcec
583137709f
Removed unneeded event clear
2018-09-20 15:16:08 +10:00
David Marcec
335e9d18ae
Implemented NTC & IEnsureNetworkClockAvailabilityService
...
Needed because of the recent nim fixes
2018-09-20 15:14:07 +10:00
Lioncash
05ef9dfc10
file-sys: Default heavy-weight class destructors in the cpp file
...
Several classes have a lot of non-trivial members within them, or don't
but likely should have the destructor defaulted in the cpp file for
future-proofing/being more friendly to forward declarations.
Leaving the destructor unspecified allows the compiler to inline the
destruction code all over the place, which is generally undesirable from
a code bloat perspective.
2018-09-19 19:34:08 -04:00
Lioncash
3146502a12
control_metadata: Remove unnecessary else within GetLanguageEntry()
...
There's no need to indent the code here, given the if case contains a
return statement at the end of it.
2018-09-19 19:02:06 -04:00
Lioncash
05d49962b6
control_metadata: Move language name array definition to the cpp file
...
This was used in two different translation units
(deconstructed_rom_directory and patch_manager). This means we'd be
pointlessly duplicating the whole array twice due to it being defined
within the header.
2018-09-19 18:57:26 -04:00
MerryMage
3b4a158230
arm_dynarmic: Support BKPT instruction
2018-09-19 21:00:38 +01:00
Lioncash
2e5f0e5024
xts_archive: Remove unused variables from CalculateHMAC256()
...
These variables aren't used, which still has an impact, as std::vector
cannot be optimized away by the compiler (it's constructor and
destructor are both non-trivial), so this was just wasting memory.
2018-09-19 14:23:13 -04:00
Lioncash
2752183883
xts_archive: Make AsNCA() return a std::unique_ptr instead of a std::shared_ptr
...
std::shared_ptr isn't strictly necessary here and is only ever used in
contexts where the object doesn't depend on being shared. This also
makes the interface more flexible, as it's possible to create a
std::shared_ptr from a std::unique_ptr (std::shared_ptr has a
constructor that accepts a std::unique_ptr), but not the other way
around.
2018-09-19 14:22:37 -04:00
Lioncash
45195a51a7
nax: Avoid re-parsing NAX data with GetFileType()
...
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.
2018-09-19 14:22:37 -04:00
Lioncash
c8c4105659
nax: Avoid unnecessary calls to AsNCA() in IdentifyType()
...
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.
2018-09-19 14:22:37 -04:00
Lioncash
f272261c21
xts_archive: Ensure NAX's type member is always initialized
...
Ensures that the member always has a deterministic value.
2018-09-19 14:22:37 -04:00
Lioncash
92a98a8b19
xts_archive: Amend initializer order of NAX's constructor
...
Orders the initializer list in the same order the members would be
initialized. Avoids compiler warnings.
2018-09-19 14:22:30 -04:00
David
0432af5ad1
Reworked incorrect nifm stubs ( #1355 )
...
* Reworked incorrect nifm stubs
Need confirmation on `CreateTemporaryNetworkProfile`, unsure which game uses it but according to reversing. It should return a uuid which we currently don't do.
Any 0 client id is considered an invalid client id.
GetRequestState 0 is considered invalid.
* Fixups for nifm
2018-09-19 11:59:01 -04:00
bunnei
8dff92c5f6
Merge pull request #1359 from ogniK5377/nes
...
Fixed GetAccountId stub, Added error code for OpenDirectory and added ActivateNpadWithRevision
2018-09-19 10:01:36 -04:00
David Marcec
cbc7ad8f6d
Fixed GetAccountId stub, Added error code for OpenDirectory and added ActivateNpadWithRevision
...
With these, `Nintendo Entertainment System - Nintendo Switch Online` loads
2018-09-19 23:25:00 +10:00
Zach Hilman
dfaea55be5
savedata_factory: Add TemporaryStorage SaveDataType
...
Seems to be used by NSO NES Emulator
2018-09-19 09:06:22 -04:00
David Marcec
d06f4cfc63
Corrected SSL::SetInterfaceVersion
...
Should be a single u32
2018-09-19 16:46:11 +10:00
David Marcec
08819ec70a
Removed MakeBuilder as it's not needed anymore
2018-09-19 15:13:56 +10:00
David Marcec
6a0612f2bf
Removed the use of rp.MakeBuilder
...
Due to keeping the code style consistent in the yuzu codebase. `rb = rp.MakeBuilder(...)` was replaced with `rb{ctx, ...}`
2018-09-19 15:09:59 +10:00
bunnei
b33ce787b7
Merge pull request #1348 from ogniK5377/GetImageSize
...
Implemented IProfile::GetImageSize
2018-09-18 22:15:18 -04:00
bunnei
c9942fe46e
Merge pull request #1351 from ogniK5377/GetDefaultDisplayResolution
...
Implemented GetDefaultDisplayResolution
2018-09-18 22:13:28 -04:00
bunnei
bf957d5345
Merge pull request #1341 from lioncash/dependency
...
core/core_cpu: Replace exclusive monitor include with forward declaration
2018-09-18 22:13:05 -04:00
bunnei
c768535463
Merge pull request #1346 from lioncash/svc
...
svc_wrap: Convert the PARAM macro into a function
2018-09-18 22:12:47 -04:00
bunnei
e9abbcae85
Merge pull request #1350 from ogniK5377/Six-Axis-Stub
...
Stubbed ActivateConsoleSixAxisSensor & StartConsoleSixAxisSensor
2018-09-18 22:12:12 -04:00
Philippe Babin
9155c8daeb
Invalid default value of username in yuzu_cmd ( #1334 )
...
* Fix bug where default username value for yuzu_cmd create an userprofile with uninitialize data as username
* Fix format
* Apply code review changes
* Remove nullptr check
2018-09-18 19:58:28 -04:00
bunnei
733c47623b
Merge pull request #1343 from lioncash/mutex
...
kernel/svc: Handle invalid address cases within svcArbitrateLock() and svcArbitrateUnlock()
2018-09-18 14:25:00 -04:00
bunnei
c2cf784376
Merge pull request #1344 from lioncash/arm
...
arm_interface: Remove ARM11-isms from the CPU interface
2018-09-18 14:24:20 -04:00
David Marcec
de9604d63e
Added ActivateGesture
2018-09-19 01:13:58 +10:00
David Marcec
1a2d33eeb4
Implemented GetDefaultDisplayResolution
2018-09-19 01:10:16 +10:00
David Marcec
a8b1c7763b
Added StopSixAxisSensor
2018-09-19 00:56:02 +10:00
David Marcec
717889e93c
Stubbed ActivateConsoleSixAxisSensor & StartConsoleSixAxisSensor
2018-09-19 00:52:20 +10:00
David Marcec
528e5cee67
Implemented GetImageSize
2018-09-19 00:16:52 +10:00
Lioncash
f85ab0a123
svc_wrap: Convert the PARAM macro into a function
...
This can just be a regular function, getting rid of the need to also
explicitly undef the define at the end of the file. Given FuncReturn()
was already converted into a function, it's #undef can also be removed.
2018-09-18 04:27:38 -04:00
Lioncash
ead2a4eeb4
arm_dynarmic: Correct ExclusiveWrite128()'s operation
...
Previously the second half of the value being written would overwrite
the first half. Thankfully this wasn't a bug that was being encountered,
as the function is currently unused.
2018-09-18 03:56:32 -04:00
Lioncash
b51e7e0288
arm_interface: Remove ARM11-isms from the CPU interface
...
This modifies the CPU interface to more accurately match an
AArch64-supporting CPU as opposed to an ARM11 one. Two of the methods
don't even make sense to keep around for this interface, as Adv Simd is
used, rather than the VFP in the primary execution state. This is
essentially a modernization change that should have occurred from the
get-go.
2018-09-18 03:20:04 -04:00
Lioncash
71b48cb00f
kernel/mutex: Replace ResultCode construction for invalid addresses with the named variant
...
We already have a ResultCode constant for the case of an invalid
address, so we can just use it instead of re-rolling that ResultCode
type.
2018-09-17 23:27:53 -04:00
Lioncash
b6867602ca
kernel/svc: Handle error cases for svcArbitrateLock() and svcArbitrateUnlock()
...
The kernel does the equivalent of the following check before proceeding:
if (address + 0x8000000000 < 0x7FFFE00000) {
return ERR_INVALID_MEMORY_STATE;
}
which is essentially what our IsKernelVirtualAddress() function does. So
we should also be checking for this.
The kernel also checks if the given input addresses are 4-byte aligned,
however our Mutex::TryAcquire() and Mutex::Release() functions already
handle this, so we don't need to add code for this case.
2018-09-17 23:27:53 -04:00
Lioncash
4a84986bc3
core/core_cpu: Replace exclusive monitor include with forward declaration
...
We don't need to include this as a dependency within the header. A
regular forward declaration will suffice here.
2018-09-17 18:16:55 -04:00
bunnei
2c9c0d70a3
Merge pull request #1312 from lioncash/fwd
...
service/vi: Replace includes with forward declarations where applicable
2018-09-17 12:32:28 -04:00
bunnei
2bfb9fd0e6
Merge pull request #1313 from lioncash/error
...
kernel/errors: Amend error code for ERR_NOT_FOUND
2018-09-17 12:28:40 -04:00
bunnei
fc46183e03
Merge pull request #1318 from lioncash/errors-sm
...
services/sm: Amend error code constants
2018-09-17 12:27:01 -04:00
bunnei
e6367ab955
Merge pull request #1315 from lioncash/size
...
kernel/svc: Handle a few error cases within memory-related functions
2018-09-17 10:11:26 -04:00
bunnei
e561afdcd5
Merge pull request #1328 from FearlessTobi/port-4192
...
Port #4192 from Citra: "svc: change unknown to thread in CreateThread"
2018-09-17 09:56:48 -04:00
Valentin Vanelslande
54ddb37b3c
Port # #4192 from Citra: "svc: change unknown to thread in CreateThread"
2018-09-15 15:28:35 +02:00
fearlessTobi
63c2e32e20
Port #4182 from Citra: "Prefix all size_t with std::"
2018-09-15 15:21:06 +02:00
Lioncash
da64da367b
services/sm: Amend error code constants
...
Courtesy of @ogniK5377.
This also moves them into the cpp file and limits the visibility to
where they're directly used. It also gets rid of unused or duplicate
error codes.
2018-09-14 01:44:02 -04:00
Lioncash
4f8756edd0
kernel/svc: Sanitize creation of shared memory via svcCreateSharedMemory()
...
The kernel caps the size limit of shared memory to 8589930496 bytes (or
(1GB - 512 bytes) * 8), so approximately 8GB, where every GB has a 512
byte sector taken off of it.
It also ensures the shared memory is created with either read or
read/write permissions for both permission types passed in, allowing the
remote permissions to also be set as "don't care".
2018-09-13 23:07:27 -04:00
Lioncash
accd1f17e4
kernel/svc: Sanitize addresses, permissions, and sizes within svcMapSharedMemory() and svcUnmapSharedMemory()
...
Part of the checking done by the kernel is to check if the given
address and size are 4KB aligned, as well as checking if the size isn't
zero. It also only allows mapping shared memory as readable or
read/write, but nothing else, and so we shouldn't allow mapping as
anything else either.
2018-09-13 23:07:23 -04:00
Lioncash
496c67fd73
kernel/svc: Sanitize addresses and sizes within svcMapMemory() and svcUnmapMemory()
...
The kernel checks if the addresses and given size is 4KB aligned before
continuing onwards to map the memory.
2018-09-13 21:34:54 -04:00
Lioncash
7bd2faad9a
kernel/svc: Sanitize heap sizes within svcSetHeapSize()
...
The kernel checks if the given size is a multiple of 2MB and <= to 4GB
before going ahead and attempting to allocate that much memory.
2018-09-13 21:34:48 -04:00
bunnei
df5a44a40b
Merge pull request #1310 from lioncash/kernel-ns
...
kernel/thread: Include thread-related enums within the kernel namespace
2018-09-13 19:50:47 -04:00
bunnei
fb65076b0f
Merge pull request #1309 from lioncash/nested
...
service: Use nested namespace specifiers where applicable
2018-09-13 19:50:11 -04:00
bunnei
3ef134a092
Merge pull request #1307 from lioncash/pl
...
services/pl_u: Add missing Korean font to the fallback case for shared fonts
2018-09-13 19:49:39 -04:00
Lioncash
50a5d09d32
kernel/errors: Amend error code for ERR_NOT_FOUND
...
This is the value returned by the kernel for svcConnectToNamedPort() if
the named port cannot be found.
2018-09-13 17:12:01 -04:00
Lioncash
0258b444ef
service/vi: Replace includes with forward declarations where applicable
2018-09-13 16:55:47 -04:00
Lioncash
2ea45fe75b
kernel/thread: Include thread-related enums within the kernel namespace
...
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.
2018-09-13 16:05:57 -04:00
Lioncash
a0e51d8b98
service: Use nested namespace specifiers where applicable
...
There were a few places where nested namespace specifiers weren't being
used where they could be within the service code. This amends that to
make the namespacing a tiny bit more compact.
2018-09-13 15:52:55 -04:00
Valentin Vanelslande
2ec9fbc2d4
ipc: minor fix
2018-09-13 11:59:23 -05:00
Lioncash
ce97d8ef6c
services/pl_u: Add missing Korean font to the fallback case for shared fonts
...
Previously this wasn't using the Korean font at all.
2018-09-12 19:23:51 -04:00
bunnei
926dd41587
Merge pull request #1163 from FearlessTobi/add-audio-stretching
...
audio_core: Add audio stretching support
2018-09-12 18:23:54 -04:00
bunnei
d9e21eebe8
Merge pull request #1297 from lioncash/pl
...
pl_u: Eliminate mutable file-scope state
2018-09-12 16:03:53 -04:00
bunnei
79217f9870
Merge pull request #1303 from lioncash/error
...
kernel/errors: Amend invalid thread priority and invalid processor ID error codes
2018-09-12 12:14:51 -04:00
Lioncash
fbe462099b
svc: Return ERR_INVALID_PROCESSOR_ID in CreateThread() if an invalid processor ID is given
...
This is what the kernel does for an out-of-range processor ID.
2018-09-12 05:20:02 -04:00
Lioncash
3c5c292592
kernel/errors: Correct error codes for invalid thread priority and invalid processor ID
2018-09-12 05:19:57 -04:00
Lioncash
9b3bc0b282
svc: Do nothing if svcOutputDebugString() is given a length of zero
...
While unlikely, it does avoid constructing a std::string and
unnecessarily calling into the memory code if a game or executable
decides to be really silly about their logging.
2018-09-12 04:51:44 -04:00
Lioncash
04d723baf9
svc: Correct parameter type for OutputDebugString()
...
This should be a u64 to represent size.
2018-09-12 04:49:11 -04:00
bunnei
475222a496
Merge pull request #1296 from lioncash/prepo
...
service/prepo: Move class into the cpp file
2018-09-11 23:15:07 -04:00
Lioncash
c243bc09d4
service/audio: Replace includes with forward declarations where applicable
...
A few headers were including other headers when a forward declaration
can be used instead, allowing the include to be moved to the cpp file.
2018-09-11 21:54:33 -04:00
Lioncash
c061e27155
pl_u: Eliminate mutable file-scope state
...
Converts the PL_U internals to use the PImpl idiom and makes the state
part of the Impl struct, eliminating mutable global/file state.
2018-09-11 21:24:19 -04:00
Lioncash
325c259fc5
service/prepo: Move class into the cpp file
...
This doesn't need to be exposed within the header and be kept in the
translation unit, eliminating the need to include anything within the
header.
2018-09-11 20:49:01 -04:00
bunnei
1470b85af9
Merge pull request #1291 from lioncash/default
...
hle/service: Default constructors and destructors in the cpp file where applicable
2018-09-11 11:42:05 -04:00
Lioncash
46ba1bc40f
externals: Place font data within cpp files
...
This places the font data within cpp files, which mitigates the
possibility of the font data being duplicated within the binary if it's
referred to in more than one translation unit in the future. It also
stores the data within a std::array, which is more flexible when it
comes to operating with the standard library.
Furthermore, it makes the data arrays const. This is what we want, as it
allows the compiler to store the data within the read-only segment. As
it is, having several large sections of mutable data like this just
leaves spots in memory that we can accidentally write to (via accidental
overruns, what have you) and actually have it work. This ensures the
font data remains the same no matter what.
2018-09-11 04:25:33 -04:00
Lioncash
6ac955a0b4
hle/service: Default constructors and destructors in the cpp file where applicable
...
When a destructor isn't defaulted into a cpp file, it can cause the use
of forward declarations to seemingly fail to compile for non-obvious
reasons. It also allows inlining of the construction/destruction logic
all over the place where a constructor or destructor is invoked, which
can lead to code bloat. This isn't so much a worry here, given the
services won't be created and destroyed frequently.
The cause of the above mentioned non-obvious errors can be demonstrated
as follows:
------- Demonstrative example, if you know how the described error happens, skip forwards -------
Assume we have the following in the header, which we'll call "thing.h":
\#include <memory>
// Forward declaration. For example purposes, assume the definition
// of Object is in some header named "object.h"
class Object;
class Thing {
public:
// assume no constructors or destructors are specified here,
// or the constructors/destructors are defined as:
//
// Thing() = default;
// ~Thing() = default;
//
// ... Some interface member functions would be defined here
private:
std::shared_ptr<Object> obj;
};
If this header is included in a cpp file, (which we'll call "main.cpp"),
this will result in a compilation error, because even though no
destructor is specified, the destructor will still need to be generated by
the compiler because std::shared_ptr's destructor is *not* trivial (in
other words, it does something other than nothing), as std::shared_ptr's
destructor needs to do two things:
1. Decrement the shared reference count of the object being pointed to,
and if the reference count decrements to zero,
2. Free the Object instance's memory (aka deallocate the memory it's
pointing to).
And so the compiler generates the code for the destructor doing this inside main.cpp.
Now, keep in mind, the Object forward declaration is not a complete type. All it
does is tell the compiler "a type named Object exists" and allows us to
use the name in certain situations to avoid a header dependency. So the
compiler needs to generate destruction code for Object, but the compiler
doesn't know *how* to destruct it. A forward declaration doesn't tell
the compiler anything about Object's constructor or destructor. So, the
compiler will issue an error in this case because it's undefined
behavior to try and deallocate (or construct) an incomplete type and
std::shared_ptr and std::unique_ptr make sure this isn't the case
internally.
Now, if we had defaulted the destructor in "thing.cpp", where we also
include "object.h", this would never be an issue, as the destructor
would only have its code generated in one place, and it would be in a
place where the full class definition of Object would be visible to the
compiler.
---------------------- End example ----------------------------
Given these service classes are more than certainly going to change in
the future, this defaults the constructors and destructors into the
relevant cpp files to make the construction and destruction of all of
the services consistent and unlikely to run into cases where forward
declarations are indirectly causing compilation errors. It also has the
plus of avoiding the need to rebuild several services if destruction
logic changes, since it would only be necessary to recompile the single
cpp file.
2018-09-10 23:55:31 -04:00
Tobias
3bac3051fc
Use open-source shared fonts if no dumped file is available ( #1269 )
...
* Add open-source shared fonts
* Address review comments
2018-09-10 21:31:01 -04:00
Markus Wick
0cfb0bacb2
video_core: Move command buffer loop.
...
This moves the hot loop into video_core. This refactoring shall reduce the CPU overhead of calling ProcessCommandList.
2018-09-10 22:06:13 +02:00
bunnei
50c191439d
Merge pull request #1276 from FearlessTobi/fix-stupid-stub
...
hid: Implement ReloadInputDevices
2018-09-09 22:31:04 -04:00
Lioncash
136040ee15
service: Remove unused g_kernel_named_ports variable
...
With the named port functionality all migrated over to the kernel,
there's no need to keep this around anymore.
2018-09-09 22:10:54 -04:00
fearlessTobi
500e81429a
hid: Implement ReloadInputDevices
2018-09-09 00:57:41 +02:00
fearlessTobi
a6efff8b02
Add audio stretching support
2018-09-08 18:26:23 +01:00
Lioncash
3f17fe7133
core: Migrate current_process pointer to the kernel
...
Given we now have the kernel as a class, it doesn't make sense to keep
the current process pointer within the System class, as processes are
related to the kernel.
This also gets rid of a subtle case where memory wouldn't be freed on
core shutdown, as the current_process pointer would never be reset,
causing the pointed to contents to continue to live.
2018-09-06 20:52:58 -04:00
bunnei
a164b413fa
Merge pull request #1250 from lioncash/file-sys
...
file_sys/{nca_patch, patch_manager}: Amend unnecessary/missing includes.
2018-09-06 19:20:09 -04:00
Lioncash
56ab608044
core/core: Remove unnecessary sm/controller include
...
The only reason this include was necessary, was because the constructor
wasn't defaulted in the cpp file and the compiler would inline it
wherever it was used. However, given Controller is forward declared, all
those inlined constructors would see an incomplete type, causing a
compilation failure. So, we just place the constructor in the cpp file,
where it can see the complete type definition, allowing us to remove
this include.
2018-09-06 14:38:39 -04:00
Lioncash
54724fe918
file_sys/nca_patch: Amend constructor initializer list order
...
Orders the elements in the initializer list in the order they're
specified in the class. This prevents compiler warnings about
initialization order.
2018-09-06 14:00:11 -04:00
Lioncash
b155b3ef81
file_sys/nca_patch: Remove unnecessary includes
...
romfs.h doesn't need to be included in the header, the only real
dependency here is common's swap.h that needs to be included.
2018-09-06 13:58:53 -04:00
Lioncash
a859a35ec8
file_sys/patch_manager: Add missing includes
...
These includes were previously being satisfied indirectly.
2018-09-06 13:53:23 -04:00
bunnei
94f193af65
Merge pull request #1242 from lioncash/file-sys
...
file_sys/submission_package: Replace includes with forward declarations where applicable
2018-09-05 18:53:32 -04:00
Lioncash
6bd6beee20
file_sys/submission_package: Correct constructor initialization list order
...
Orders the elements in the sequence to match the order in which they'll
actually be initialized in.
2018-09-05 13:44:42 -04:00
Lioncash
c0b7ed8b58
file_sys/submission_package: Replace includes with forward declarations where applicable
2018-09-05 12:08:04 -04:00
Zach Hilman
c913136eb2
bktr: Fix bucket overlap error
2018-09-04 17:01:54 -04:00
Zach Hilman
7d5d781b20
drd: Parse title ID from program metadata
2018-09-04 16:25:30 -04:00
Zach Hilman
23a16c1720
patch_manager: Centralize Control-type NCA parsing
2018-09-04 16:25:10 -04:00
Zach Hilman
92e26df00f
nsp: Fix error masking issue with XCI files
...
Now display correct error instead of catch-all MissingProgramNCA
2018-09-04 16:24:24 -04:00
Zach Hilman
c91b60a421
game_list: Fix version display on non-NAND titles
2018-09-04 16:24:02 -04:00
Zach Hilman
cbd517d8cc
bktr: Add logging on successful patch
2018-09-04 16:24:02 -04:00
Zach Hilman
a6e75cd45b
bktr: Implement IVFC offset shifting
...
Fixes base game read errors
2018-09-04 16:24:02 -04:00
Zach Hilman
9664ce255d
bktr: Fix missing includes and optimize style
2018-09-04 16:24:02 -04:00
Zach Hilman
f5e03b9173
loader: Add BKTR-specific error messages and codes
2018-09-04 16:23:44 -04:00
Zach Hilman
08fcb4694f
loader: Ignore patches on NRO and DRD
2018-09-04 16:23:15 -04:00
Zach Hilman
97bf83bc56
patch_manager: Add usages of patches to ExeFS
2018-09-04 16:23:15 -04:00
Zach Hilman
8e900a301a
file_sys: Add class to manage game patches
...
Right now only includes Updates, but should eventually contain all of the other patches we need.
2018-09-04 16:22:25 -04:00
Zach Hilman
54e7ddb93a
file_sys: Add BKTR patching mechanism
2018-09-04 16:22:25 -04:00
Zach Hilman
1efe5a76b1
content_archive: Add BKTR header parsing to NCA
2018-09-04 16:22:25 -04:00
Zach Hilman
9951f6d054
registration: Add RegisteredCacheUnion
...
Aggregates multiple caches into one interface
2018-09-04 16:21:40 -04:00
Zach Hilman
d2caf4af7d
game_list: Use RegisteredCacheUnion for installed
...
Reduces code
2018-09-04 16:21:40 -04:00
Zach Hilman
99fbcb3bf2
aes_util: Fix error involving reads of less than 0x10
...
Issues with block size are fixed by making all reads minimum length of 0x10
2018-09-04 16:21:40 -04:00
Zach Hilman
87be4bc283
main: Only show DRD deprecation warning once
2018-09-04 14:44:48 -04:00
Zach Hilman
e973cceadd
control_metadata: Use alternate language names if AmericanEnglish isn't available
2018-09-04 14:30:03 -04:00
Zach Hilman
23d2c50479
card_image: Add program title ID getter
2018-09-04 14:29:19 -04:00
Zach Hilman
e4e55d064e
nsp: Comply with style and performance guidelines
2018-09-04 14:29:19 -04:00
Zach Hilman
58473309a0
qt: Add UI support for NSP files
2018-09-04 14:28:41 -04:00
Zach Hilman
f7eaea424d
registration: Add support for installing NSP files
2018-09-04 14:28:41 -04:00
Zach Hilman
d7518cf6e0
loader: Add AppLoader for NSP files
2018-09-04 14:27:33 -04:00
Zach Hilman
5c8aff984e
card_image: Parse XCI secure partition with NSP
...
Eliminated duplicate code and adds support for Rev1+ carts
2018-09-04 14:27:33 -04:00
Zach Hilman
93703431e2
file_sys: Add Nintendo Submission Package (NSP)
2018-09-04 14:25:54 -04:00
Zach Hilman
a040929c90
drd: Load title ID from program metadata
...
Previously only loaded from control metadata
2018-09-04 14:25:54 -04:00
Zach Hilman
b555311438
loader: Add NSP file type and NSP-specific errors
2018-09-04 14:25:54 -04:00
Zach Hilman
d770c60205
key_manager: Avoid autogeneration if key exists
2018-09-04 14:25:54 -04:00
bunnei
9a07e9f805
Merge pull request #1237 from degasus/optimizations
...
Optimizations
2018-09-04 12:16:06 -04:00
bunnei
ed37b68fb5
Merge pull request #1223 from DarkLordZach/custom-nand-sd-dirs
...
file_sys: Allow for custom NAND/SD directories
2018-09-04 11:54:22 -04:00
bunnei
8ec1e16867
Merge pull request #1235 from lioncash/forward-decl
...
file_sys: Replace includes with forward declarations where applicable
2018-09-04 11:51:54 -04:00
bunnei
5a29b358aa
Merge pull request #1236 from degasus/microprofile
...
Update microprofile scopes.
2018-09-04 11:50:58 -04:00
bunnei
c156ee8eb8
Merge pull request #1230 from lioncash/ssl
...
ssl: Move SSL class to cpp file
2018-09-04 11:49:22 -04:00
Markus Wick
dce624e3f1
core: Use a raw pointer in GetGPUDebugContext.
...
This helper is called very often. The memory ownership shall not be transfered, so just return the raw pointer.
2018-09-04 14:10:05 +02:00
Markus Wick
10bc725944
Update microprofile scopes.
...
Blame the subsystems which deserve the blame :)
The updated list is not complete, just the ones I've spotted on random sampling the stack trace.
2018-09-04 11:04:26 +02:00
Lioncash
a813c10e1c
file_sys: Replace includes with forward declarations where applicable
...
Cuts down on include dependencies, resulting in less files that need to
be rebuilt when certain things are changed.
2018-09-03 22:52:24 -04:00
bunnei
1c5636e690
Merge pull request #1231 from lioncash/global
...
service: Migrate global named port map to the KernelCore class
2018-09-03 21:21:12 -04:00
Zach Hilman
b2268f1f8d
settings: Save and load NAND/SD dirs from config
2018-09-03 19:23:33 -04:00
Lioncash
a405373144
vfs_real: Forward declare IOFile
...
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.
2018-09-02 12:38:14 -04:00
Lioncash
1242c1ec0a
service: Migrate global named port map to the KernelCore class
...
Now that we have a class representing the kernel in some capacity, we
now have a place to put the named port map, so we move it over and get
rid of another piece of global state within the core.
2018-09-02 12:35:30 -04:00
Lioncash
41cd766438
ssl: Move SSL class to cpp file
...
This isn't required to be visible to anything outside of the main source
file, and will eliminate needing to rebuild anything else including the
header if the SSL class needs to be changed in the future.
2018-09-02 11:45:26 -04:00
bunnei
325f3e0693
Merge pull request #1213 from DarkLordZach/octopath-fs
...
filesystem/maxwell_3d: Various changes to boot Project Octopath Traveller
2018-09-02 10:49:18 -04:00
Lioncash
fda8f1da20
filesystem: Move dir retrieval after path checking in DeleteFile()
...
We don't need to do the lookup if the path is considered empty
currently.
2018-09-02 09:20:17 -04:00
Zach Hilman
19d0951ae6
filesystem: Implement OpenReadOnlySaveDataFilesystem
2018-08-31 23:19:49 -04:00
Zach Hilman
7939ea18e8
filesystem: Add OpenFileSystemWithPatch
2018-08-31 23:19:23 -04:00
Lioncash
4a587b81b2
core/core: Replace includes with forward declarations where applicable
...
The follow-up to e2457418da
, 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.
2018-08-31 16:30:14 -04:00
bunnei
d647d9550c
gl_renderer: Cache textures, framebuffers, and shaders based on CPU address.
2018-08-31 13:07:27 -04:00
Lioncash
e2457418da
core: Make the main System class use the PImpl idiom
...
core.h is kind of a massive header in terms what it includes within
itself. It includes VFS utilities, kernel headers, file_sys header,
ARM-related headers, etc. This means that changing anything in the
headers included by core.h essentially requires you to rebuild almost
all of core.
Instead, we can modify the System class to use the PImpl idiom, which
allows us to move all of those headers to the cpp file and forward
declare the bulk of the types that would otherwise be included, reducing
compile times. This change specifically only performs the PImpl portion.
2018-08-31 07:16:57 -04:00
Lioncash
0cbcd6ec9a
kernel: Eliminate kernel global state
...
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.
2018-08-28 22:31:51 -04:00
bunnei
4d7e1662c8
Merge pull request #1193 from lioncash/priv
...
gpu: Make memory_manager private
2018-08-28 12:28:57 -04:00
Lioncash
45fb74d262
gpu: Make memory_manager private
...
Makes the class interface consistent and provides accessors for
obtaining a reference to the memory manager instance.
Given we also return references, this makes our more flimsy uses of
const apparent, given const doesn't propagate through pointers in the
way one would typically expect. This makes our mutable state more
apparent in some places.
2018-08-28 11:11:50 -04:00
Lioncash
f1bc62bb4c
hle/result: Make ResultVal's move constructor as noexcept
...
Many containers within the standard library provide different behaviors
based on whether or not a move constructor/assignment operator can be
guaranteed not to throw or not.
Notably, implementations will generally use std::move_if_noexcept (or an
internal implementation of it) to provide strong exception guarantees.
If a move constructor potentially throws (in other words, is not
noexcept), then certain behaviors will create copies, rather than moving
the values.
For example, consider std::vector. When a std::vector calls resize(),
there are two ways the elements can be relocated to the new block of
memory (if a reallocation happens), by copy, or by moving the existing
elements into the new block of memory. If a type does not have a
guarantee that it will not throw in the move constructor, a copy will
happen. However, if it can be guaranteed that the move constructor won't
throw, then the elements will be moved.
This just allows ResultVal to be moved instead of copied all the time if
ever used in conjunction with containers for whatever reason.
2018-08-28 09:39:50 -04:00
bunnei
a409d49bbd
Merge pull request #1177 from lioncash/err
...
kernel/error: Amend several error codes
2018-08-27 18:37:48 -04:00
bunnei
90fd03015a
Merge pull request #1188 from lioncash/unused
...
vfs_real: Remove unused variable in CreateDirectoryRelative()
2018-08-27 18:24:23 -04:00
bunnei
62edc01525
Merge pull request #1175 from lioncash/ns
...
core: Namespace all code in the arm subdirectory under the Core namespace
2018-08-27 18:17:12 -04:00
bunnei
5d2043598e
Merge pull request #1187 from lioncash/shadow
...
registered_cache: Get rid of variable shadowing in ProcessFiles()
2018-08-27 18:15:49 -04:00
Lioncash
c6024379a4
vfs_real: Remove unused variable in CreateDirectoryRelative()
2018-08-27 15:58:23 -04:00
Lioncash
d3934d7da7
registered_cache: Get rid of variable shadowing in ProcessFiles()
...
Prevents compiler warnings.
2018-08-27 15:55:56 -04:00
bunnei
af59d4bff0
Merge pull request #1176 from lioncash/info
...
svc: Return process title ID if queried in GetInfo()
2018-08-27 15:44:52 -04:00
bunnei
f96ded9815
Merge pull request #1174 from lioncash/debug
...
debug_utils: Minor individual interface changes
2018-08-27 15:44:29 -04:00
bunnei
8c66a5a9a5
Merge pull request #1162 from ogniK5377/ttf-plu
...
PL:U Added SharedFonts loading via TTF
2018-08-27 15:43:10 -04:00
bunnei
34a447d24e
Merge pull request #1168 from lioncash/header
...
hid: Move core include to cpp file
2018-08-27 15:42:52 -04:00
bunnei
8d86747514
Merge pull request #1171 from lioncash/true
...
core: Remove always true conditionals in Load()
2018-08-27 15:41:58 -04:00
tech4me
d26a46feed
set: Fixed GetAvailableLanguageCodes() to follow the max_entries
...
Rightnow, in games use GetAvailableLanguageCodes(), there is a WriteBuffer() with size larger than the buffer_size. (Core Critical core\hle\kernel\hle_ipc.cpp:WriteBuffer:296: size (0000000000000088) is greater than buffer_size (0000000000000078))
0x88 = 17(languages) * 8
0x78 = 15(languages) * 8
GetAvailableLanguageCodes() can only support 15 languages.
After firmware 4.0.0 there are 17 supported language instead of 15, to enable this GetAvailableLanguageCodes2() need to be used.
So GetAvailableLanguageCodes() will be caped at 15 languages.
Reference:
http://switchbrew.org/index.php/Settings_services
2018-08-26 00:11:13 -07:00
Lioncash
f708207ae6
kernel/error: Amend error code for ERR_MAX_CONNECTIONS_REACHED
...
We can make this error code an alias of the resource limit exceeded
error code, allowing us to get rid of the lingering 3DS error code of
the same type.
2018-08-25 09:40:42 -04:00
Lioncash
bfb0c87b7b
kernel/error: Amend error code for ERR_PORT_NAME_TOO_LONG
...
We can treat this as an alias of TooLarge for documentation purposes.
This also lets us get rid of another lingering 3DS-related error code.
2018-08-25 09:40:29 -04:00
Lioncash
81ca46dd17
kernel/error: Add error code for the handle table being full
...
This replaces the lingering 3DS constant with the proper one, and
utilizes it within HandleTable's Create() member function.
2018-08-25 09:40:21 -04:00
Lioncash
b8be5524bc
kernel/error: Add error code for invalid memory permissions
2018-08-25 09:40:12 -04:00
Lioncash
2fd45093f2
kernel/error: Correct kernel error code for invalid combination
2018-08-25 09:40:00 -04:00
Sebastian Valle
f170159fde
Merge pull request #1166 from lioncash/typo
...
filesystem: Fix typo in log message
2018-08-25 07:19:46 -05:00
Lioncash
e81354ae38
svc: Return process title ID if queried in GetInfo()
...
We already have the variable itself set up to perform this task, so we
can just return its value from the currently executing process instead
of always stubbing it to zero.
2018-08-25 05:02:28 -04:00
Mat M
6426b0f551
Merge pull request #1094 from DarkLordZach/nax0
...
file_sys: Add support for NAX archives
2018-08-24 23:47:46 -04:00
Zach Hilman
6314a799aa
file_sys/crypto: Fix missing/unnecessary includes
2018-08-24 22:15:32 -04:00
Lioncash
43e0d865fa
core: Namespace all code in the arm subdirectory under the Core namespace
...
Gets all of these types and interfaces out of the global namespace.
2018-08-24 21:50:39 -04:00
Lioncash
c65713832c
debug_utils: Remove unused includes
...
Quite a bit of these aren't necessary directly within the debug_utils
header and can be removed or included where actually necessary.
2018-08-24 20:49:14 -04:00
Zach Hilman
f09da5d1c9
Merge pull request #1065 from DarkLordZach/window-title
...
qt: Add filename and title id to window title while running
2018-08-24 14:34:03 -04:00
Lioncash
8492ec1669
core: Remove always true conditionals in Load()
...
These conditions are always true, since the outer conditional already
checks for these conditions.
2018-08-24 02:48:30 -04:00
Lioncash
ec59e4a6c5
hid: Move core include to cpp file
...
This isn't required to be in the header. Instead, directly include what
this header needs and move it to the cpp file where it belongs.
2018-08-23 23:20:35 -04:00
Lioncash
f6f5c2e4d8
filesystem: Fix typo in log message
2018-08-23 22:12:31 -04:00
Zach Hilman
d1a6dd61d1
xci: Ignore NCA files with updates in secure
2018-08-23 18:53:37 -04:00
Zach Hilman
4f18c17df7
content_archive: Add update title detection
...
This is needed because the title IDs of update NCAs will not use the update title ID. The only sure way to tell is to look for a partition with BKTR crypto.
2018-08-23 18:53:13 -04:00
David
5049ca5d8c
Added GetBootMode ( #1107 )
...
* Added GetBootMode
Used by homebrew
* Added enum for GetBootMode
2018-08-23 18:31:45 -04:00
Zach Hilman
67fa51ea2f
qt: Add filename and title id to window title while running
2018-08-23 14:12:56 -04:00
David Marcec
78b109d195
Addressed plu TTF changes
2018-08-24 02:18:04 +10:00
Zach Hilman
ccfd176382
key_manager: Eliminate indexed for loop
2018-08-23 11:53:30 -04:00
Zach Hilman
119ab308b5
key_manager: Create keys dir if it dosen't exist
...
On call to WriteKeyToFile, so that the autogenerated file can be written.
2018-08-23 11:53:30 -04:00
Zach Hilman
a7e8d10969
file_sys: Cut down on includes and copies
2018-08-23 11:53:30 -04:00
Zach Hilman
42dc856ce1
crypto: Eliminate magic constants
2018-08-23 11:53:30 -04:00
Zach Hilman
61a5b56abd
key_manager: Add support for autogenerated keys
...
Stored in a separate file than manual keys.
2018-08-23 11:53:30 -04:00
Zach Hilman
f26fc64cb4
key_manager: Add support for KEK and SD seed derivation
2018-08-23 11:53:30 -04:00
Zach Hilman
cde665c565
key_manager: Switch to boost flat_map for keys
...
Should make key gets marginally faster.
2018-08-23 11:53:30 -04:00
Zach Hilman
ab44192ab0
file_sys: Implement NAX containers
2018-08-23 11:53:30 -04:00
Zach Hilman
8b52d6682a
registration: Add GetEntryUnparsed methods
...
Returns the file before calling parser on it.
2018-08-23 11:53:30 -04:00
Zach Hilman
13524578b6
sdmc_factory: Add SDMC RegisteredCache getter
2018-08-23 11:53:30 -04:00
Zach Hilman
bf33f80fae
vfs: Add GetOrCreateDirectoryRelative method
2018-08-23 11:52:44 -04:00
Zach Hilman
ef3768f323
filesystem: Add CreateFactories methods to fs
...
Allows frontend to create registration caches for use before a game has booted.
2018-08-23 11:52:44 -04:00
Zach Hilman
410062031b
filesystem: Add logging to registration getters
2018-08-23 11:52:44 -04:00
Zach Hilman
b247e0cab0
loader: Add new NAX-specific errors and messages
2018-08-23 11:52:44 -04:00
Zach Hilman
2164702cf7
nax: Add AppLoader_NAX and update loader to support it
2018-08-23 11:52:44 -04:00
Zach Hilman
c4845df3d4
xts_encryption_layer: Implement XTSEncryptionLayer
2018-08-23 11:52:44 -04:00
Zach Hilman
10e5356e9a
aes_util: Make XTSTranscode stricter about sizes
...
XTS with Nintendo Tweak will fail mysteriously if the sector size is not 0x4000. Upgrade the critical log to an assert to prevent undefined behavior.
2018-08-23 11:52:44 -04:00
Zach Hilman
6dd369ab88
ctr_encryption_layer: Fix bug when transcoding small data
...
Fixes a bug where data lengths of less than size 0x10 will fail or have misleading return values.
2018-08-23 11:52:44 -04:00
Zach Hilman
a9dc5a3c10
xci: Fix error masking issue
...
Prevents NCA-related errors from being masked into MissingProgramNCA or MissingKeyFile
2018-08-23 11:52:44 -04:00
David Marcec
eccc77a8c8
Added SharedFonts loading via TTF
...
By having the following TTF files in your yuzu sysdata directory. You can load sharedfonts via TTF files.
FontStandard.ttf
FontChineseSimplified.ttf
FontExtendedChineseSimplified.ttf
FontChineseTraditional.ttf
FontKorean.ttf
FontNintendoExtended.ttf
FontNintendoExtended2.ttf
2018-08-23 14:42:06 +10:00
bunnei
b38d67d940
Merge pull request #1136 from tech4me/master
...
qt/main: Port part of citra(#3411 ), open savedata works
2018-08-22 01:30:08 -04:00
bunnei
cea627b0fc
Merge pull request #840 from FearlessTobi/port-3353
...
Port #3353 from Citra: "citra-qt: Add customizable speed limit target "
2018-08-22 01:19:50 -04:00
David Marcec
15cc34b93e
Added missing include for pl:u
...
Should fix any compile errors
2018-08-22 12:39:52 +10:00
David
99fc32428a
PL:U Added BFTTF loading(Loading from System NAND dumps) ( #1088 )
...
* Added bfttf loading
We can now load system bfttf fonts from system archives AND shared memory dumps. This allows people who have installed their system nand dumps to yuzu to automatically get shared font support. We also now don't hard code the offsets or the sizes of the shared fonts and it's all calculated for us now.
* Addressed plu fixups
* Style changes for plu
* Fixed logic error for plu and added more error checks.
2018-08-21 21:31:49 -04:00
bunnei
ac68c8a605
Merge pull request #1145 from lioncash/fwd-decl
...
vfs: Replace mode.h include with forward declarations where applicable
2018-08-21 18:00:28 -04:00
Lioncash
29ac15d1b8
vfs: Replace mode.h include with forward declarations where applicable
...
Avoids the need to rebuild these source files if the mode header
changes.
2018-08-21 15:06:42 -04:00
Lioncash
8dd9cb98ce
am: Utilize std::array within PopLaunchParameter()
...
Gets rid of the potential for C array-to-pointer decay, and also makes
pointer arithmetic to get the end of the copy range unnecessary. We can
just use std::array's begin() and end() member functions.
2018-08-21 11:03:14 -04:00
bunnei
c95c4442e9
Merge pull request #1143 from lioncash/inc
...
sdmc_factory: Remove unnecessary core include
2018-08-21 10:22:29 -04:00
MerryMage
3f4fb4b037
perf_stats: Change MAX_LAG_TIME_US to an appropriate value
...
25us is far too small, and would result in std::this_thread::sleep_for
being called with this as a maximum value. This means that a guest
application that produces frames instantly would only be limited to
40 kHz.
25ms is a more appropriate value, as it allows for a 60 Hz refresh
rate while providing enough slack in the negative region.
2018-08-21 14:50:50 +01:00
Lioncash
bfb28c5b3f
sdmc_factory: Remove unnecessary core include
...
This doesn't require the central core header to be included, it just
needs the vfs headers.
2018-08-21 07:54:29 -04:00
tech4me
cc71832b19
qt/main: Port part of citra( #3411 ), open savedata works
2018-08-21 02:04:33 -07:00
bunnei
79243b6fa0
Merge pull request #1129 from lioncash/header
...
romfs_factory, service/filesystem: Use forward declarations where applicable
2018-08-21 01:18:04 -04:00
Lioncash
477eee3993
service/filesystem: Use forward declarations where applicable
...
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
2018-08-20 23:28:46 -04:00
bunnei
c4ce7e456a
Merge pull request #1126 from lioncash/telem
...
telemetry_session: Don't allocate std::string instances for program lifetime in GetTelemetryId() and RegenerateTelemetryId()
2018-08-20 22:15:56 -04:00
bunnei
19b05c3f55
Merge pull request #1122 from lioncash/acc
...
acc/profile_manager: General cleanup
2018-08-20 20:54:34 -04:00
Lioncash
96463d0a55
romfs_factory: Remove unnecessary includes and use forward declarations where applicable
...
Avoids the need to rebuild whatever includes the romfs factory header if
the loader header ever changes. We also don't need to include the main
core header. We can instead include the headers we specifically need.
2018-08-20 20:27:00 -04:00
bunnei
dd70ddad7e
Merge pull request #1095 from DarkLordZach/sysarchives
...
filesystem: Add support for loading of system archives
2018-08-20 20:17:57 -04:00
Lioncash
b5fb246a99
telemetry_session: Don't allocate std::string instances for program lifetime in GetTelemetryId() and RegenerateTelemetryId()
...
Given these functions aren't intended to be used frequently, there's no
need to keep the std::string instances allocated for the whole lifetime
of the program. It's just a waste of memory.
2018-08-20 20:06:25 -04:00
Lioncash
609cb04f3f
acc: Replace profile_manager include with a forward declaration
...
This is only used in a shared_ptr, so we can forward declare it.
2018-08-20 19:48:57 -04:00
Lioncash
eb88fedc5d
acc: Simplify WriteBuffer call within LoadImage()
...
We have an overload of WriteBuffer that accepts containers that satisfy
the ContiguousContainer concept, which std::array does, so we only need
to pass in the array itself.
2018-08-20 19:48:57 -04:00
Lioncash
f5b132676f
acc: Correct IProfile's constructor initializer list order
...
Arranges them in the order the members would be initialized
2018-08-20 19:48:57 -04:00
Lioncash
0fcdf37917
acc: Remove unused DEFAULT_USER_ID
...
This is no longer used, so it can be removed.
2018-08-20 19:48:57 -04:00
Lioncash
350f6e0aa4
profile_manager: Use INVALID_UUID in the initializer of last_opened_user
...
Makes it a little bit more self-documenting.
2018-08-20 19:48:57 -04:00
Lioncash
9d8f19d7bf
profile_manager: Remove unnecessary memcpy in GetProfileBaseAndData()
...
Given the source and destination types are the same std::array type, we
can simply use regular assignment to perform the same behavior.
2018-08-20 19:48:57 -04:00
Lioncash
38cd4e9c61
profile_manager: Use type aliases for username data, profile data, and user arrays
...
Avoids the need to repeatedly specify the whole array type in multiple
places.
2018-08-20 19:48:57 -04:00
Lioncash
f9a26d468c
profile_manager: Take ProfileInfo by const reference where applicable
...
ProfileInfo is quite a large struct in terms of data, and we don't need
to perform a copy in these instances, so we can just pass constant
references instead.
2018-08-20 19:48:57 -04:00
Lioncash
1277556c69
profile_manager: Make array parameter to CreateNewUser a const reference
...
This doesn't modify the passed in array, so this can be a const
reference.
2018-08-20 19:48:57 -04:00
Lioncash
dfdf4a46fe
profile_manager: Remove unnecessary static
...
This can just be constexpr like the others
2018-08-20 19:48:57 -04:00
Lioncash
69dd37d874
profile_manager: Simplify UUID's two param constructor, operator==, and operator bool
...
We can use the constructor initializer list and just compare the
contained u128's together instead of comparing each element
individually. Ditto for comparing against an invalid UUID.
2018-08-20 19:48:57 -04:00
Lioncash
f13a66b963
profile_manager: Move UUID generation function to the cpp file
...
This avoids needing to dump the contents of <random> into other files
that include the profile manager header.
2018-08-20 19:48:53 -04:00
bunnei
b1d238bbb8
Merge pull request #1064 from lioncash/telemetry
...
common/telemetry: Migrate core-independent info gathering to common
2018-08-20 19:43:17 -04:00
fearlessTobi
ba8ff096fd
Port #3353 from Citra
2018-08-21 01:14:06 +02:00
Zach Hilman
e8cb6f5c9b
registration: Add Data_Unknown5 NCAContentType
2018-08-20 17:34:18 -04:00
Lioncash
9e9a4bb3a7
profile_manager: Remove unnecessary std::move in AddToProfiles() and CreateNewUser()
...
Moving a const reference isn't possible, so this just results in a copy
(and given ProfileInfo is composed of trivial types and aggregates, a
move wouldn't really do anything).
2018-08-20 17:18:31 -04:00
bunnei
185b35bfcd
Merge pull request #1117 from ogniK5377/CheckFreeCommunicationPermission
...
Added CheckFreeCommunicationPermission
2018-08-20 11:00:26 -04:00
bunnei
943771e703
Merge pull request #1017 from ogniK5377/better-account
...
New account backend to allow for future extended support
2018-08-20 10:59:15 -04:00
David Marcec
8a88110060
Added CheckFreeCommunicationPermission
...
This fixes save files not loading in splatoon 2
2018-08-20 18:14:49 +10:00
Zach Hilman
27da7bc9da
filesystem: Add support for loading of system archives
2018-08-18 21:28:23 -04:00
greggameplayer
2003771789
Implement SetIdleTimeDetectionExtension & GetIdleTimeDetectionExtension ( #1059 )
...
* Used by Mario Tennis Aces
2018-08-17 00:23:08 -04:00
bunnei
f246fd778d
Merge pull request #1090 from lioncash/ctor-assign
...
core: Delete System copy/move constructors and assignment operators
2018-08-17 00:19:55 -04:00
bunnei
224be09d66
Merge pull request #1093 from greggameplayer/GetDefaultDisplayResolutionChangeEvent
...
Implement GetDefaultDisplayResolutionChangeEvent
2018-08-17 00:18:35 -04:00
bunnei
0d9b3e425e
Merge pull request #1087 from MerryMage/dynarmic
...
dynarmic: Update to 550d662
2018-08-16 18:07:11 -04:00
greggameplayer
cef35e7c9c
correct coding style
2018-08-16 23:46:06 +02:00
greggameplayer
928e78dced
Implement GetDefaultDisplayResolutionChangeEvent
...
Require by Toki Tori and Toki Tori 2+
2018-08-16 23:25:54 +02:00
bunnei
3fd78f4d24
Merge pull request #1085 from lioncash/namespace
...
common: Namespace hex_util.h/.cpp
2018-08-16 11:54:42 -04:00
Lioncash
a0ce6de913
core: Delete System copy/move constructors and assignment operators
...
Prevents potentially making copies or doing silly things by accident
with the System instance, particularly given our current core is
designed (unfortunately) around one instantiable instance.
This will prevent the accidental case of:
auto instance = System::Instance();
being compiled without warning when it's supposed to be:
auto& instance = System::Instance();
2018-08-16 10:21:14 -04:00
MerryMage
94329038b6
dynarmic: Update to 550d662
...
550d662 load_store_exclusive: Define s == t state to be Constraint_NONE
0b69381 A64/translate: Allow for unpredictable behaviour to be defined
6d236d4 system: Implement MRS CNTFRQ_EL0
6cbb6fb A32/testenv: Add missing headers
6729328 externals: Update xbyak to v5.67
1812bd2 Squashed 'externals/xbyak/' changes from 2794cde7..671fc805
9a95802 externals: Document subtrees
714a840 A64: Implement SQ{ADD, SUB}, and UQ{ADD, SUB}'s vector variants
8cab459 A64: Implement UQADD/UQSUB's scalar variants
18a8151 ir: Add opcodes for unsigned saturating add and subtract
a5660ee x64/reg_alloc: Use type alias for array returned by GetArgumentInfo()
29489b5 ir/value: Use type alias CoprocessorInfo for std::array<u8, 8>
e23ba26 status_register_access: Add support for bits 0 and 1 of mask to MSR
55190bd fuzz_with_unicorn: Split utility functions into fuzz_util
23b049d A32/translate/load_store: Correct detection of writeback
7ec9f15 A32/translate: Add TranslateSingleInstruction
efeecb4 A32/ir_emitter: Bug fix: IREmitter::ExceptionRaised using incorrect opcode
08d1d19 A32/decoders: Split instruction list into include file
2d929cc tests: Refactor unicorn_emu to allow for A32 unicorn
f672368 microinstruction: Improve assert messages
7ebff50 emit_x64_vector: EmitVectorNarrow16: AVX512 implementation
edce230 emit_x64_vector: EmitVectorNarrow32: prefer pblendw to loading constant
2018-08-16 10:12:20 +01:00
bunnei
24a759de4a
Merge pull request #1075 from lioncash/include
...
loader/{nca, xci}: Remove unnecessary includes and unused member variables
2018-08-16 00:04:25 -04:00
Lioncash
b39cd70cd4
common: Namespace hex_util.h/.cpp
...
It's in the common code, so it should be under the Common namespace like
everything else.
2018-08-15 23:24:00 -04:00
bunnei
c594ec3417
Merge pull request #1005 from DarkLordZach/registered-fmt
...
file_sys: Add support for registration format
2018-08-15 23:11:58 -04:00
bunnei
c00b374e78
Merge pull request #1078 from lioncash/message
...
lm: Handle threads and modules within the logger
2018-08-15 18:53:47 -04:00
bunnei
69236e5aff
Merge pull request #1079 from lioncash/fmt
...
loader: Make ResultStatus directly compatible with fmt
2018-08-15 18:25:57 -04:00
bunnei
1dd27aff47
Merge pull request #1051 from B3n30/UnscheduleEventThreadsafe
...
Core::CoreTiming: add UnscheduleEventThreadsafe
2018-08-15 18:25:30 -04:00
bunnei
cee6a7ab55
Merge pull request #1080 from lioncash/ret
...
sm/controller: Correct return value of QueryPointerBufferSize
2018-08-15 18:25:05 -04:00
Lioncash
aac5792a2b
kernel/server_session: Add IsSession() member function
...
Allows querying the inverse of IsDomain() to make things more readable.
This will likely also be usable in the event of implementing
ConvertDomainToSession().
2018-08-15 06:50:50 -04:00
Lioncash
5752454629
sm/controller: Correct return value of QueryPointerBufferSize
...
This should be returning a u16 according to Switch Brew.
2018-08-15 06:16:10 -04:00
Lioncash
87d8a9c986
loader: Make ResultStatus directly compatible with fmt
...
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.
2018-08-15 05:52:37 -04:00
Lioncash
0769aa594e
loader/nca: Remove unnecessary includes and member variables
2018-08-15 01:41:40 -04:00
Lioncash
c8e3f98c27
loader/xci: Remove unnecessary includes and 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
2018-08-15 01:41:35 -04:00
Lioncash
b74df62959
lm: Use LOG_DEBUG for printing out trace logs
...
Using LOG_TRACE here isn't a good idea because LOG_TRACE is only enabled
when yuzu is compiled in debug mode. Debug mode is also quite slow, and
so we're potentially throwing away logging messages that can provide
value when trying to boot games.
2018-08-15 01:07:41 -04:00
Lioncash
e0b0f4eece
lm: Handle threads and modules within the logger
...
The thread field serves to indicate which thread a log is related to and
provides the length of the thread's name, so we can print that out,
ditto for modules.
Now we can know what threads are potentially spawning off logging
messages (for example Lydie & Suelle bounces between MainThread and
LoadingThread when initializing the game).
2018-08-15 01:05:50 -04:00
bunnei
301baaa942
Merge pull request #1067 from lioncash/init
...
emu_window: Ensure WindowConfig members are always initialized
2018-08-14 22:43:32 -04:00
bunnei
3db1b8e0cd
Merge pull request #1073 from lioncash/3ds
...
loader: Remove address mapping remnants from citra
2018-08-14 22:43:04 -04:00
bunnei
8f9c49f7ee
Merge pull request #1072 from lioncash/svc
...
kernel/svc: Log svcBreak parameters
2018-08-14 22:42:44 -04:00
bunnei
409d2e07c2
Merge pull request #1056 from lioncash/mm
...
mm_u: Move interface class into the cpp file
2018-08-14 21:47:07 -04:00
Lioncash
96c0b81a51
loader: Remove address mapping remnants from citra
...
These mappings are leftovers from citra and don't apply to the Switch.
2018-08-14 21:37:03 -04:00
Lioncash
25d71454d1
kernel/svc: Log svcBreak parameters
...
Given if we hit here all is lost, we should probably be logging the
break reason code and associated information to distinguish between the
causes.
2018-08-14 20:54:05 -04:00
Lioncash
2e715ef70d
emu_window: Ensure WindowConfig members are always initialized
...
Previously we weren't always initializing all members of the struct.
Prevents potentially wonky behavior from occurring.
2018-08-14 19:36:43 -04:00
Lioncash
60f476cd8f
common/telemetry: Migrate core-independent info gathering to common
...
Previously core itself was the library containing the code to gather
common information (build info, CPU info, and OS info), however all of
this isn't core-dependent and can be moved to the common code and use
the common interfaces. We can then just call those functions from the
core instead.
This will allow replacing our CPU detection with Xbyak's which has
better detection facilities than ours. It also keeps more
architecture-dependent code in common instead of core.
2018-08-14 18:57:46 -04:00
bunnei
d1520410a3
Merge pull request #1055 from lioncash/init
...
audout_u: Correct IAudioOut initializer list order
2018-08-14 08:03:33 -04:00
Mat M
309564abe3
Merge pull request #1046 from ogniK5377/missing-channels
...
Added missing channel devices
2018-08-13 19:36:26 -04:00
Lioncash
b6c47b578f
mm_u: Forward all old variants of functions to the new ones
...
Ensures both variants go through the same interface, and while we're at
it, add Finalize to provide the inverse of Initialize for consistency.
2018-08-13 18:59:10 -04:00
Lioncash
9d09d92c56
mm_u: Move implementation class into the cpp file
...
Now if changes are ever made to the behavior of the class, it doesn't
involve rebuilding everything that includes the mm_u header.
2018-08-13 18:59:07 -04:00
Lioncash
57d007e545
audout_u: Correct IAudioOut initializer list order
...
Orders elements in the precise order they'll be initialized.
2018-08-13 18:23:59 -04:00
MerryMage
fcc5155601
arm_dynarmic: Remove IsExecuting check from PrepareReschedule
...
No longer required. HaltExecution is a no-op if it is not currently executing.
2018-08-13 13:59:01 +01:00
B3n30
eab35c8235
Core::CoreTiming: add UnscheduleEventThreadsafe
2018-08-13 13:56:41 +02:00
bunnei
e67630b51e
Merge pull request #1032 from lioncash/sanitize
...
vfs: Use sanitized paths within MoveFile() and MoveDirectory()
2018-08-13 01:43:35 -04:00
bunnei
bd14653417
Merge pull request #1031 from lioncash/verbosity
...
card_image: Simplify return statement of GetSubdirectories()
2018-08-13 01:42:07 -04:00
Lioncash
3476f5b4d3
kernel/object: Tighten object against data races
...
Despite being covered by a global mutex, we should still ensure that the
class handles its reference counts properly. This avoids potential
shenanigans when it comes to data races.
Given this is the root object that drives quite a bit of the kernel
object hierarchy, ensuring we always have the correct behavior (and no
races) is a good thing.
2018-08-13 00:16:40 -04:00
David Marcec
76fad8410d
Registered missing channel devices
2018-08-13 14:03:50 +10:00
David Marcec
92492ee23b
Added missing channel devices
2018-08-13 14:00:27 +10:00
bunnei
fecffeb0dd
Merge pull request #1043 from Subv/timing
...
Use an approximated amortized amount of ticks when advancing timing.
2018-08-12 22:31:55 -04:00
bunnei
9608f51cde
Merge pull request #1036 from lioncash/thread
...
scheduler: Make HaveReadyThreads() a const member function
2018-08-12 22:13:14 -04:00
bunnei
e4ed5bc836
Merge pull request #1042 from Subv/races
...
Fixed a bunch of race conditions when running in multicore mode.
2018-08-12 22:05:48 -04:00
bunnei
de5d431eec
Merge pull request #1041 from Subv/duplicated_mutex
...
Kernel/Mutex: Don't duplicate threads in the mutex waiter list.
2018-08-12 22:02:03 -04:00
Subv
d923766042
CPU/Timing: Use an approximated amortized amount of ticks when advancing timing.
...
We divide the number of ticks to add by the number of cores (4) to obtain a more or less rough estimate of the actual number of ticks added. This assumes that all 4 cores are doing similar work. Previously we were adding ~4 times the number of ticks, thus making the games think that time was going way too fast.
This lets us bypass certain hangs in some games like Breath of the Wild.
We should modify our CoreTiming to support multiple cores (both running in a single thread, and in multiple host threads).
2018-08-12 20:41:28 -05:00
Subv
a9877c8f65
Kernel/SVC: Don't reschedule the current core when creating a new thread.
...
The current core may have nothing to do with the core where the new thread was scheduled to run. In case it's the same core, then the following PrepareReshedule call will take care of that.
2018-08-12 20:38:37 -05:00
Subv
2e7802ad7d
Core/HLE: Make the 'reschedule_pending' flag atomic.
...
Another thread may write to this variable while the core in question is in the middle of checking for a reschedule request.
2018-08-12 18:41:12 -05:00
Subv
3a338d9286
CPU/HLE: Lock the HLE mutex before performing a reschedule.
...
Another thread might be in the middle of an SVC, thus altering the state of the schedulers.
2018-08-12 18:41:11 -05:00
Subv
84b542c386
Kernel/Threads: Lock the HLE mutex when executing the wakeup callback.
...
Another thread might be in the middle of a reschedule, thus altering the state of the schedulers.
2018-08-12 18:41:11 -05:00
Subv
0135b328ed
Kernel/Thread: Always use the threadsafe option when scheduling wakeups.
...
WakeAfterDelay might be called from any host thread, so err on the side of caution and use the thread-safe CoreTiming::ScheduleEventThreadsafe.
Note that CoreTiming is still far from thread-safe, there may be more things we have to work on for it to be up to par with what we want.
2018-08-12 18:40:56 -05:00
Subv
5224cc49c4
Kernel/Mutex: Don't duplicate threads in the mutex waiter list.
...
Exit from AddMutexWaiter early if the thread is already waiting for a mutex owned by the owner thread.
This accounts for the possibility of a thread that is waiting on a condition variable being awakened twice in a row.
Also added more validation asserts.
This should fix one of the random crashes in Breath Of The Wild.
2018-08-12 16:35:27 -05:00
Lioncash
b82b093108
vfs: Make VfsFilesystem constructor explicit
...
Makes it consistent with the other VFS interfaces and prevents implicit
construction.
2018-08-12 16:55:40 -04:00
Lioncash
cf0a7cd1c1
vfs: Make type hierarchy objects classes instead of structs
...
struct should be used when the data type is very simple or otherwise has
no invariants associated with it. Given these are used to form a
hierarchy, class should be used instead.
2018-08-12 16:55:40 -04:00
bunnei
424e90f0f5
Merge pull request #1025 from ogniK5377/bad-cast
...
Fixed invalid cast in loader
2018-08-12 16:22:35 -04:00
Zach Hilman
35e4a47be0
registration: Various style and documentation improvements
...
Fix logic in RealVfsFilesystem Create methods
Remove magic numbers
Fix regex errors
2018-08-12 15:55:44 -04:00
bunnei
4cafc24a4e
Merge pull request #1035 from ogniK5377/audio-dev-revision-info
...
GetAudioDeviceServiceWithRevisionInfo (Used by Bloodstained: Curse of the Moon)
2018-08-12 14:56:11 -04:00
bunnei
68c44ca0ee
Merge pull request #1028 from ogniK5377/aoa
...
Added GetAudioRendererSampleRate, GetAudioRendererSampleCount & GetAudioRendererMixBufferCount
2018-08-12 13:33:08 -04:00
Lioncash
e850ff63bc
scheduler: Make HaveReadyThreads() a const member function
...
This function doesn't modify instance state, so the const qualifier can
be added to it.
2018-08-12 12:55:58 -04:00
David Marcec
66f4f86a82
GetAudioDeviceServiceWithRevisionInfo
...
As we're not handling any anything about the revision data for GetAudioDeviceServiceWithRevisionInfo, it's currently marked as stubbed. However for games this shouldn't affect the result. Proper revision info would be more for homebrew.
2018-08-12 22:47:39 +10:00
Lioncash
63a70c253e
hid: disable clang-format around tables
...
Prevents clang-format from butchering them.
2018-08-12 05:57:33 -04:00
Lioncash
9e74d6238e
hid: Stub DisconnectNpad()
...
This is required by ARMS.
2018-08-12 05:56:28 -04:00
Lioncash
75bba25009
vfs: Use sanitized paths within MoveFile() and MoveDirectory()
...
Previously these were being unused (or partially unused). While we're at
it, use better naming to make it visibly obvious which variant of the
path is being used.
2018-08-12 04:05:01 -04:00
Lioncash
7b6519741b
card_image: Use type aliases to shorten definitions
...
We have the aliases, so we may as well use 'em.
2018-08-12 03:57:16 -04:00
Lioncash
d6a1a43854
card_image: Simplify return statement of GetSubdirectories()
...
We don't need to write out the construction long-form, we can just let
the language itself work it out off the return type.
2018-08-12 03:53:20 -04:00
David Marcec
094f6003e0
Pushed the requested sample rate instead of our fixed sample rate
2018-08-12 14:58:36 +10:00
David Marcec
98b940052c
made ResultStatus a u16
2018-08-12 14:56:22 +10:00
David Marcec
e5ee0afe6f
Added GetAudioRendererSampleRate, GetAudioRendererSampleCount & GetAudioRendererMixBufferCount
...
GetAudioRendererSampleRate is set as a "STUB" as a game could check if the sample rate it sent and the sample rate it wants don't match. Just a thought of something which could happen so keeping it as stub for the mean time
2018-08-12 14:46:12 +10:00
David Marcec
ecfbe7d9c8
Stub UpdateUserPresence
...
Needed for Retro City Rampage to go in game
2018-08-12 14:00:44 +10:00
David Marcec
a1fb8a331f
Fixed invalid cast in loader
...
GetMessageForResultStatus takes a u16, not a size_t.
2018-08-12 13:31:15 +10:00
Zach Hilman
6b76b77400
registration: Add support for force overwrite of installed
2018-08-11 23:01:42 -04:00
Zach Hilman
8f06a0f898
vfs_real: Add CreateFullPath to Create* operations
2018-08-11 22:50:48 -04:00
Zach Hilman
dda8ef11c7
control_metadata: Remove unnecessary reference to base file
2018-08-11 22:50:48 -04:00
Zach Hilman
149bda980a
romfs: Remove cyclic shared_ptr leak in romfs code
2018-08-11 22:50:48 -04:00
Zach Hilman
893447b6b0
registration: Update documentation and style
2018-08-11 22:50:48 -04:00
Zach Hilman
22bdddd6f0
nca_metadata: Remove unnecessary reference to base file
2018-08-11 22:50:48 -04:00
Zach Hilman
62e859c6c7
bis_factory: Create NAND dirs if they don't exist
2018-08-11 22:50:48 -04:00
Zach Hilman
3b3c919e20
registration: Take RawCopy function as parameter
...
Instead of defaulting to VfsRawCopy
2018-08-11 22:50:48 -04:00
Zach Hilman
e5504a060d
registered_cache: Fix missing reading from yuzu_meta
2018-08-11 22:50:48 -04:00
Zach Hilman
167bfddafa
file_sys: Comply to style guidelines
2018-08-11 22:50:48 -04:00
Zach Hilman
bfb945c243
qt: Add 'Install to NAND' option to menu
...
Prompts for title type on NCA files.
2018-08-11 22:50:48 -04:00
Zach Hilman
a91983b11c
file_sys: Add RegisteredCache
...
Manages NAND NCA get and install.
2018-08-11 22:50:48 -04:00
Zach Hilman
9aab787122
file_sys: Add support for parsing NCA metadata (CNMT)
2018-08-11 22:50:48 -04:00
Zach Hilman
ab8acce645
card_image: Add accessor for all NCAs in XCI
2018-08-11 22:50:48 -04:00
Zach Hilman
9b0e3556ed
vfs_real: Add CreateFullPath to CreateFile
...
Fixes bugs with calling CreateFile when the immediate directory does not exist.
2018-08-11 22:50:48 -04:00
Zach Hilman
c0257cf52f
filesystem: Add Open and Register functions for BISFactory
2018-08-11 22:50:48 -04:00
Zach Hilman
70a510bd8f
bis_factory: Add partial implementation of BISFactory
...
Creates and stores RegisteredCaches for user and system NAND, as creation of a RegisteredCache is expensive.
2018-08-11 22:50:48 -04:00
Zach Hilman
95bb1067c1
loader: Join 0* files in directory if filename is 00
...
i.e. Load the concatenated 00+01 if 01 exists as well. Needed for split NAND NCAs.
2018-08-11 22:50:48 -04:00
Zach Hilman
5b4119fa7f
loader: Recognize filename '00' as NCA
...
Needed to avoid mismatch filetype warnings on split NAND NCAs
2018-08-11 22:50:08 -04:00
Zach Hilman
42114e1df4
vfs: Add ConcatenatedVfsFile
2018-08-11 22:50:08 -04:00
Zach Hilman
a27ec24c0f
crypto: Remove hex utilities from key_manager
...
Move to hex_util.h in common
2018-08-11 22:50:08 -04:00
bunnei
a921d22545
Merge pull request #1022 from bunnei/fix-splat
...
Several Friend service fixes
2018-08-11 22:42:45 -04:00
bunnei
249341d08f
friend: Stub DeclareCloseOnlinePlaySession.
...
- Used by Splatoon 2.
2018-08-11 21:34:14 -04:00
bunnei
261a4f0311
friend: Fix CreateFriendService to return an IFriendService interface.
2018-08-11 21:29:58 -04:00
bunnei
ca4bf671ce
server_session: Provide more useful information and don't crash on bad IPC request.
2018-08-11 21:15:24 -04:00
Lioncash
0a93b45b6a
core: Namespace EmuWindow
...
Gets the class out of the global namespace.
2018-08-11 20:20:21 -04:00
bunnei
bc286c169f
Merge pull request #970 from DarkLordZach/loader-errors
...
loader: Add more descriptive errors
2018-08-11 19:25:30 -04:00
David Marcec
10f494eefe
Better UUID randomness
2018-08-12 02:31:43 +10:00
David Marcec
448290bee4
Removed un-needed count from ListOpenUsers and ListAllUsers
2018-08-12 02:11:04 +10:00
David Marcec
2592e41301
Added better explanations in the profile manager
2018-08-12 01:51:31 +10:00
David Marcec
0b6f8ba51e
Code cleanup for profile manager
2018-08-12 01:34:22 +10:00
David Marcec
d0b2950434
Removed const from ProfileBase Invalidate
2018-08-12 00:41:17 +10:00
David Marcec
42431d2aa6
fixed invalid uuid bool operator
2018-08-11 21:29:10 +10:00
David Marcec
b8e70faa2d
Added GetOpenUserCount
2018-08-11 20:45:06 +10:00
David Marcec
662218e997
Removed all for loops from the profile manager
2018-08-11 20:15:59 +10:00
David Marcec
c3013c7c9c
Added missing ListAllUsers count
2018-08-11 20:06:06 +10:00
David Marcec
acff922762
If statement style change
2018-08-11 18:46:42 +10:00
David Marcec
dfea525cbe
Second round of account changes
2018-08-11 18:26:13 +10:00
David Marcec
82fa0bcea7
First round of account changes
2018-08-11 16:47:33 +10:00
David Marcec
6aa8ee6943
Refactored profile manager sharing
2018-08-11 13:17:06 +10:00
David Marcec
b76ddb7647
Merge remote-tracking branch 'origin/master' into better-account
2018-08-11 10:35:47 +10:00
David Marcec
2a3b335b15
Added IsUserRegistrationRequestPermitted
2018-08-11 10:33:11 +10:00
Lioncash
20c2928c2b
video_core; Get rid of global g_toggle_framelimit_enabled variable
...
Instead, we make a struct for renderer settings and allow the renderer
to update all of these settings, getting rid of the need for
global-scoped variables.
This also uncovered a few indirect inclusions for certain headers, which
this commit also fixes.
2018-08-10 19:00:09 -04:00
Zach Hilman
ec3bef7b4c
loader: Add more descriptive errors
...
Full list of new errors and descriptions in core/loader/loader.h
2018-08-09 21:06:59 -04:00
bunnei
5191c20b71
Merge pull request #997 from lioncash/const-func
...
core: Make function reference parameters const where applicable
2018-08-09 19:30:51 -04:00
bunnei
69cd213fac
Merge pull request #990 from lioncash/entry
...
fsp_srv: Emplace entries first when building index instead of emplacing last
2018-08-09 19:29:36 -04:00
bunnei
96ef22d3d0
Merge pull request #897 from DarkLordZach/vfs-accuracy-2
...
vfs: Add VfsFilesystem and fix RealVfs* implementations
2018-08-09 19:22:06 -04:00
Lioncash
b46a5c42ff
buffer_queue: Make reference parameter of SetPreallocatedBuffer const
...
This is simply copied by value, so there's no need to make it a
modifiable reference.
While we're at it, make the names of the parameters match its
definition.
2018-08-09 03:08:14 -04:00
Lioncash
ff5024ee2a
hle_ipc: Make WriteToOutgoingCommandBuffer()'s reference parameter const
...
This function doesn't modify anything within the reference Thread
instance.
2018-08-09 02:51:38 -04:00
David Marcec
4e1471ef21
Don't add user if the uuid already exists
2018-08-09 13:30:58 +10:00
Zach Hilman
668458525e
vfs: Fix documentation
2018-08-08 21:45:04 -04:00
bunnei
2f4f4f147f
Merge pull request #986 from mailwl/acc-loadimage
...
Service/Account: stub LoadImage function
2018-08-08 21:21:06 -04:00
Zach Hilman
94cf327e77
vfs: Fix typo in VfsFilesystem docs
2018-08-08 21:18:45 -04:00
Zach Hilman
2b6128fe0b
file_util: Use enum instead of bool for specifing path behavior
2018-08-08 21:18:45 -04:00
Zach Hilman
dad2ae1ee0
loader: Remove unused IdentifyFile overload
2018-08-08 21:18:45 -04:00
Zach Hilman
656e97df16
vfs: Use RealVfsFilesystem for fs-operations in RealVfsDirectory
2018-08-08 21:18:45 -04:00
Zach Hilman
52a2e42cb9
file_sys: Add missing include in savedata_factory
2018-08-08 21:18:45 -04:00
Zach Hilman
4b471f0554
core: Port core to VfsFilesystem for file access
2018-08-08 21:18:45 -04:00
Zach Hilman
aaa8fdea52
vfs: Add unreachable assert to file permissions converter
2018-08-08 21:18:45 -04:00
Zach Hilman
2de2ec25d6
vfs: Add RealVfsFilesystem implementation
2018-08-08 21:18:45 -04:00
Zach Hilman
3bf488ce52
vfs: Add VfsFilesystem interface and default implementation
2018-08-08 21:18:45 -04:00
Zach Hilman
b36dee364e
filesystem: Remove unnecessary if conditions
2018-08-08 21:18:45 -04:00
bunnei
9f48454ea9
Merge pull request #978 from bunnei/fixioctl
...
nvhost_gpu: Don't over copy IoctlSubmitGpfifo.
2018-08-08 19:16:14 -04:00
Lioncash
7353cfc781
fsp_srv: Use std::string_view's copy() function instead of strncpy()
...
Given elements inserted into a vector are zeroed out, we can just copy
MAX_LEN - 1 elements and the data will already be properly null
terminated.
2018-08-08 18:51:52 -04:00
Lioncash
4afb05d0cc
fsp_srv: Emplace entries first when building index instead of emplacing last
...
The current way were doing it would require copying a 768 character
buffer (part of the Entry struct) to the new element in the vector.
Given it's a plain array, std::move won't eliminate that.
Instead, we can emplace an instance directly into the destination buffer
and then fill it out, avoiding the need to perform any unnecessary
copies.
Given this is done in a loop, we can request the destination to allocate
all of the necessary memory ahead of time, avoiding the need to
potentially keep reallocating over and over on every few insertions into
the vector.
2018-08-08 18:51:41 -04:00
bunnei
756e1e6f9b
Merge pull request #975 from bunnei/am-stub
...
am: Stub SetScreenShotImageOrientation.
2018-08-08 16:46:45 -04:00
bunnei
fd9da4232b
Merge pull request #850 from DarkLordZach/icon-meta
...
Add Icons and Metadata Support
2018-08-08 12:27:19 -04:00
bunnei
448264e719
Merge pull request #958 from lioncash/nv-global
...
nvdrv: Get rid of global std::weak_ptr
2018-08-08 11:58:45 -04:00
David Marcec
e9978fd4f5
Open first user added
2018-08-09 01:37:55 +10:00
David Marcec
75169c7570
Inital pass of account backend implementation
...
This commit verified working on puyo
2018-08-09 01:09:12 +10:00
David Marcec
03d7faf583
GetProfileBase and GetProfileBaseAndData added
2018-08-08 23:41:12 +10:00
David Marcec
6f691e71bf
began initial implementation of "ProfileManager"
2018-08-08 22:26:42 +10:00
mailwl
c0d44d3b2a
Service/Account: stub LoadImage function
2018-08-08 14:42:54 +03:00
David Marcec
5f8d253ce0
Switched uuids from u128 to new UUID struct
2018-08-08 21:09:45 +10:00
bunnei
6a5d032809
Merge pull request #965 from lioncash/unused-files
...
hle: Remove unused romfs.cpp/.h
2018-08-08 03:00:38 -04:00
bunnei
4941e3d412
Merge pull request #974 from lioncash/acc
...
acc: Add missing function table entries for GetUserCount
2018-08-08 02:56:00 -04:00
mailwl
3c498189b6
hid: fix IsSixAxisSensorAtRest() response
2018-08-08 09:36:23 +03:00
bunnei
0f834e2284
nvhost_gpu: Don't over copy IoctlSubmitGpfifo.
2018-08-08 01:49:47 -04:00
bunnei
b7fb9f2071
am: Stub SetScreenShotImageOrientation.
...
- Used by Super Mario Odyssey.
2018-08-08 00:41:35 -04:00
Lioncash
934a2b9604
acc: Add missing function table entries for GetUserCount
...
Given this is stubbed within the common module in
5ac7b84, it should be added to the other relevant tables as well.
2018-08-07 22:50:45 -04:00
bunnei
2bc296801a
acc: Stub GetUserCount. ( #973 )
...
- Used by Pokken Tournament DX.
2018-08-07 22:39:12 -04:00
Lioncash
d378d98e26
nvdrv: Get rid of global std::weak_ptr
...
Rather than use global state, we can simply pass the instance into the
NVFlinger instance directly.
2018-08-07 21:53:05 -04:00
Lioncash
cd1a96f389
hle: Remove unused romfs.cpp/.h
...
These files are no longer used, so we can get rid of them.
2018-08-07 19:34:12 -04:00
bunnei
b9829a05be
Merge pull request #920 from DarkLordZach/titlekey
...
content_archive: Add support for titlekey cryptography
2018-08-07 17:01:25 -04:00
bunnei
7ed8565978
Merge pull request #957 from lioncash/event
...
nvflinger: Correct typo in name of composition event
2018-08-07 15:56:51 -04:00
bunnei
6576bc8927
Merge pull request #954 from lioncash/hid
...
services/hid: Add ActivateNpadWithRevision() to the hid function info array
2018-08-07 15:56:34 -04:00
bunnei
2d57cbaec1
Merge pull request #960 from lioncash/apm
...
service/apm: Add the apm:sys service
2018-08-07 14:57:12 -04:00
bunnei
573a66c23d
Merge pull request #955 from lioncash/view
...
nvflinger: Use std::string_view in OpenDisplay()
2018-08-07 14:26:51 -04:00
bunnei
97c6f984dc
Merge pull request #953 from lioncash/time
...
service/time: Amend command IDs of ToPosixTime() and ToPosixTimeWithMyRule()
2018-08-07 14:25:52 -04:00
bunnei
b09c4f45c7
Merge pull request #956 from lioncash/nv
...
nvdrv: Get rid of indirect inclusions
2018-08-07 14:23:32 -04:00
bunnei
c392650e21
Merge pull request #952 from lioncash/usb
...
service: Add usb services
2018-08-07 11:27:49 -04:00
bunnei
8f73f41824
Merge pull request #949 from lioncash/priv
...
client_port: Make all data members private
2018-08-07 11:20:26 -04:00
Zach Hilman
3e81c09094
loader: Fix scope error in DeconstructedRomDirectory
2018-08-07 10:37:38 -04:00
Lioncash
12ab5a0547
service/apm: Add the apm:sys service
...
Adds the basic skeleton of the apm:sys service based off the information
on Switch Brew.
2018-08-07 10:05:26 -04:00
Lioncash
d3f64785d1
nvflinger: Correct typo in name of composition event
2018-08-07 09:03:52 -04:00
Lioncash
300ab211e8
nvdrv: Make Ioctl()'s definition match its prototype
...
The only reason this wasn't a compilation error is because we use
little-endian systems.
2018-08-07 08:57:11 -04:00
Lioncash
fa8017295b
nvdrv: Get rid of indirect inclusions
2018-08-07 08:54:50 -04:00
Lioncash
e40b0cf437
nvflinger: Get rid of indirect inclusions
2018-08-07 08:32:05 -04:00
Lioncash
7e49881b7f
nvflinger: Use std::string_view in OpenDisplay()
...
We don't need to use a std::string here, given all that's done is
comparing the character sequence against another. This allows passing
regular const char* without needing to heap allocate.
2018-08-07 08:32:06 -04:00
Lioncash
890e543304
services/hid: Add ActivateNpadWithRevision() to the hid function info array
...
Updated based off the information on Switch Brew.
2018-08-07 03:23:20 -04:00
Lioncash
20c976ff2a
service/time: Amend command IDs of ToPosixTime() and ToPosixTimeWithMyRule()
...
Updates the ID of these based off the information on Switch Brew.
2018-08-07 03:18:07 -04:00
Lioncash
45bc449ff9
service: Add usb services
...
Adds basic skeleton for the usb services based off the information provided by Switch Brew.
2018-08-07 03:14:03 -04:00
Zach Hilman
91cfe70301
loader: Add icon and title support to XCI
2018-08-06 23:13:42 -04:00
Zach Hilman
5927cf0e17
Use const where applicable
2018-08-06 23:06:33 -04:00
Zach Hilman
9e88f03e75
Avoid parsing RomFS to directory in NCA
2018-08-06 23:06:33 -04:00
Lioncash
da2f00ab7d
client_port: Make all data members private
...
These members don't need to be entirely exposed, we can instead expose
an API to operate on them without directly needing to mutate them
We can also guard against overflow/API misuse this way as well, given
active_sessions is an unsigned value.
2018-08-06 23:05:17 -04:00
bunnei
826b1394e8
Merge pull request #931 from DarkLordZach/nca-as-drd
...
loader: Make AppLoader_NCA rely on directory loading code
2018-08-06 22:02:41 -04:00
Hedges
e2b74f6354
GDBStub works with both Unicorn and Dynarmic now ( #941 )
...
* GDBStub works with both Unicorn and Dynarmic now
* Tidy up
2018-08-06 22:01:24 -04:00
bunnei
f179e87864
Merge pull request #940 from lioncash/private
...
kernel/event: Make data members private
2018-08-06 21:31:25 -04:00
bunnei
83ef37ca37
Merge pull request #934 from lioncash/chrono
...
core_timing: Make GetGlobalTimeUs() return std::chrono::microseconds
2018-08-06 18:03:05 -04:00
Lioncash
2feb1a8ba6
kernel/event: Make data members private
...
Instead we can simply provide accessors to the required data instead of
giving external read/write access to the variables directly.
2018-08-06 12:53:02 -04:00
bunnei
1ac45342dd
Merge pull request #933 from lioncash/memory
...
memory: Correct prototype of ZeroBlock
2018-08-06 12:34:57 -04:00
mailwl
2ea0f0fd16
Service/Audio: audout_a.cpp: remove pragma once
2018-08-06 12:29:27 +03:00
bunnei
0b80bbeb95
Merge pull request #932 from lioncash/func
...
core_timing: Use transparent functors where applicable
2018-08-05 23:37:53 -04:00
bunnei
f1b93d63d1
Merge pull request #929 from lioncash/addr
...
gdbstub: Minor changes
2018-08-05 23:36:26 -04:00
bunnei
03b7ebbc08
Merge pull request #930 from lioncash/thread
...
address_arbiter: Return by value from GetThreadsWaitingOnAddress()
2018-08-05 23:35:59 -04:00
bunnei
bb21c2198a
Merge pull request #925 from bunnei/audren
...
Implement audren audio output
2018-08-05 23:35:22 -04:00
Lioncash
6c56754322
perf_stats: Correct literal used for MAX_LAG_TIME_US
...
ms is shorthand for milliseconds, not microseconds, and given there's no
comment indicating that this was intentional, it probably wasn't.
2018-08-05 22:12:58 -04:00
Lioncash
a0c3a46aa9
core_timing: Make GetGlobalTimeUs() return std::chrono::microseconds
...
Enforces the time unit being returned and also allows using the standard
time utilities to manipulate it.
2018-08-05 22:07:30 -04:00
Lioncash
2a7a2b739b
memory: Make prototype parameter names match their definitions
...
Keeps the code consistent.
2018-08-05 21:39:09 -04:00
Lioncash
4aa31b0618
memory: Correct prototype of ZeroBlock
...
Previously, the prototype wasn't matching the definition, which has a
Processor parameter before the destination address.
2018-08-05 21:39:06 -04:00
Lioncash
2fc5c783ed
memory: Remove unnecessary const qualifiers in prototypes
...
These aren't necessary, as value-wise const only matters in the
definition.
2018-08-05 21:38:22 -04:00
Lioncash
6edd828101
core_timing: Convert typedef into a type alias
...
Makes the alias a little more readable from left-to-right.
2018-08-05 21:27:14 -04:00
Lioncash
d9815b523b
core_timing: Use transparent functors where applicable
...
Gets rid of the need to hardcode the type in multiple places. This will
now be deduced automatically, based off the elements in the container
being provided to the algorithm.
2018-08-05 21:19:24 -04:00
Zach Hilman
7f9430f7ae
loader: Make AppLoader_NCA rely on directory loading code
...
Eliminates duplicate code shared between their Load methods, after all the only difference is how the romfs is handled.
2018-08-05 18:28:15 -04:00
Lioncash
00f7e584ce
gdbstub: Use type alias for breakpoint maps
...
Rather than having to type out the full std::map type signature, we can
just use a straightforward alias. While we're at it, rename
GetBreakpointList to GetBreakpointMap, which makes the name more
accurate. We can also get rid of unnecessary u64 static_casts, since
VAddr is an alias for a u64.
2018-08-05 16:41:22 -04:00
Lioncash
89c076b4b1
gdbstub: Move all file-static variables into the GDBStub namespace
...
Keeps everything under the same namespace. While we're at it, enclose
them all within an inner anonymous namespace.
2018-08-05 16:41:18 -04:00
bunnei
c0af42d6eb
Merge pull request #912 from lioncash/global-var
...
video_core: Eliminate the g_renderer global variable
2018-08-05 16:37:39 -04:00
Lioncash
7a77d0a71e
address_arbiter: Return by value from GetThreadsWaitingOnAddress()
...
In all cases the vector being supplied is empty, so we can just return
by value in these instances.
2018-08-05 16:29:17 -04:00
Lioncash
ca96f8db4e
gdbstub: Replace PAddr alias with VAddr
...
In all cases, a virtual address is being passed in, not a physical one.
2018-08-05 15:56:01 -04:00
bunnei
b46df98e93
audio_core: Implement audren_u audio playback.
2018-08-04 21:54:30 -04:00
bunnei
a0a605df06
Merge pull request #924 from lioncash/arp
...
service: Add arp services
2018-08-04 21:20:26 -04:00
bunnei
cd96c04339
Merge pull request #921 from lioncash/view
...
core/crypto: Minor changes
2018-08-04 21:17:10 -04:00
bunnei
1dee8ceda1
audio_core: Use s16 where possible for audio samples.
2018-08-04 18:22:58 -04:00
bunnei
f1cb3903ac
audio_core: Port codec code from Citra for ADPCM decoding.
2018-08-04 18:22:58 -04:00
Lioncash
de72956181
service: Add arp services
...
Adds the basic skeleton of the arp services based off the information
provided by Switch Brew.
2018-08-04 18:01:12 -04:00
Lioncash
df51207ed2
service: Remove redundant #pragma once directives
...
These don't do anything within .cpp files (we don't include cpp files,
so...)
2018-08-04 17:39:08 -04:00
Lioncash
0d04ee97dc
aes_util: Add static assertion to Transcode() and XTSTranscode() to ensure well-defined behavior
...
These functions should only be given trivially-copyable types.
2018-08-04 17:30:52 -04:00
Lioncash
64c8212ae1
aes_util: Make CalculateNintendoTweak() an internally linked function
...
This function doesn't directly depend on class state, so it can be
hidden entirely from the interface in the cpp file.
2018-08-04 17:30:48 -04:00
Lioncash
b25468b498
aes_util: Make Transcode() a const member function
...
This doesn't modify member state, so it can be made const.
2018-08-04 16:49:42 -04:00
Lioncash
8da651ac4d
core/crypto: Remove unnecessary includes
2018-08-04 16:44:07 -04:00
Lioncash
c1f76abfaf
key_manager: Use regular std::string instead of std::string_view
...
The benefit of std::string_view comes from the idea of avoiding copies
(essentially acting as a non-owning view), however if we're just going
to copy into a local variable immediately, there's not much benefit
gained here.
2018-08-04 16:37:30 -04:00
Zach Hilman
2cc962e171
content_archive: Add support for titlekey cryptography
2018-08-04 14:57:21 -04:00
bunnei
9f846d3aa4
audio_core: Streams need unique names for CoreTiming.
2018-08-04 14:34:12 -04:00
bunnei
2b06301dbf
Merge pull request #849 from DarkLordZach/xci
...
XCI and Encrypted NCA Support
2018-08-04 14:33:11 -04:00
Lioncash
2665457f4a
renderer_base: Make Rasterizer() return the rasterizer by reference
...
All calling code assumes that the rasterizer will be in a valid state,
which is a totally fine assumption. The only way the rasterizer wouldn't
be is if initialization is done incorrectly or fails, which is checked
against in System::Init().
2018-08-04 02:36:58 -04:00
Lioncash
6030c5ce41
video_core: Eliminate the g_renderer global variable
...
We move the initialization of the renderer to the core class, while
keeping the creation of it and any other specifics in video_core. This
way we can ensure that the renderer is initialized and doesn't give
unfettered access to the renderer. This also makes dependencies on types
more explicit.
For example, the GPU class doesn't need to depend on the
existence of a renderer, it only needs to care about whether or not it
has a rasterizer, but since it was accessing the global variable, it was
also making the renderer a part of its dependency chain. By adjusting
the interface, we can get rid of this dependency.
2018-08-04 02:36:57 -04:00
bunnei
b0129489ea
Merge pull request #913 from lioncash/unused-func
...
memory: Remove unused GetSpecialHandlers() function
2018-08-04 02:17:44 -04:00
bunnei
206f2e3436
Merge pull request #914 from lioncash/codeset
...
kernel/process: Use accessors instead of class members for referencing segment array
2018-08-04 02:17:25 -04:00
Lioncash
e93fa7f2cc
kernel/thread: Fix potential crashes introduced in 26de4bb521
...
This amends cases where crashes can occur that were missed due to the
odd way the previous code was set up (using 3DS memory regions that
don't exist).
2018-08-03 23:49:10 -04:00
Lioncash
e649db8c6b
kernel/process: Use std::array where applicable
2018-08-03 14:46:30 -04:00
Lioncash
2beda7c2b3
kernel/process: Use accessors instead of class members for referencing segment array
...
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.
2018-08-03 14:45:45 -04:00
Lioncash
59b04c0df6
memory: Remove unused GetSpecialHandlers() function
...
This is just unused code, so we may as well get rid of it.
2018-08-03 14:20:50 -04:00
bunnei
40e63ede6d
Merge pull request #908 from lioncash/memory
...
core/memory: Get rid of 3DS leftovers
2018-08-03 14:07:49 -04:00
Lioncash
26de4bb521
core/memory: Get rid of 3DS leftovers
...
Removes leftover code from citra that isn't needed.
2018-08-03 11:22:47 -04:00
David
c1d54f4aea
Added ability to change username & language code in the settings ui. Added IProfile::Get and SET::GetLanguageCode for libnx tests ( #851 )
2018-08-03 11:02:55 -04:00
bunnei
40e78b9a89
Merge pull request #898 from lioncash/mig
...
service: Add migration services
2018-08-03 11:00:27 -04:00
bunnei
00ba704a7f
Merge pull request #892 from lioncash/global
...
video_core: Make global EmuWindow instance part of the base renderer …
2018-08-03 00:31:32 -04:00
bunnei
4c3c608d59
Merge pull request #894 from lioncash/object
...
kernel: Move object class to its own source files
2018-08-03 00:28:43 -04:00
bunnei
4b84d5bcec
Merge pull request #904 from lioncash/static
...
kernel/thread: Minor changes
2018-08-03 00:19:29 -04:00
bunnei
61ed68f3d0
Merge pull request #905 from lioncash/vma
...
kernel/vm_manager: Minor changes
2018-08-02 23:18:03 -04:00
bunnei
291ccf7257
Merge pull request #903 from lioncash/copy
...
vfs_vector: Minor changes
2018-08-02 23:01:19 -04:00
bunnei
4de18e054b
Merge pull request #899 from lioncash/unused
...
hw: Remove unused files
2018-08-02 14:58:01 -04:00
bunnei
e79e967151
Merge pull request #891 from lioncash/ns
...
service/ns: Add missing ns services
2018-08-02 14:57:24 -04:00
Lioncash
d94a173877
kernel/vm_manager: Convert loop into std::any_of()
2018-08-02 12:46:15 -04:00
Lioncash
c4e0c3d76c
kernel/vm_manager: Use const where applicable
...
Makes our immutable state explicit.
2018-08-02 12:21:46 -04:00
Lioncash
ce5ad45278
kernel/vm_manager: Use the VAddr type alias in CarveVMA()
...
These two variables correspond to address ranges.
2018-08-02 12:15:50 -04:00
Lioncash
6058c84b79
kernel/thread: Make GetFreeThreadLocalSlot()'s loop indices size_t
...
Avoids using a u32 to compare against a range of size_t, which can be a
source of warnings. While we're at it, compress a std::tie into a
structured binding.
2018-08-02 12:01:25 -04:00
Lioncash
fac0e42b2f
kernel/thread: Make GetFreeThreadLocalSlot() reference parameter a const reference
...
This function only reads the data being referenced, it doesn't modify
it, so we can turn the reference into a const reference.
2018-08-02 11:56:11 -04:00
Lioncash
9a50a4f2cc
kernel/thread: Make GetFreeThreadLocalSlot() internally linked
...
This function isn't used outside of this translation unit, so we can
make it internally linked.
2018-08-02 11:54:23 -04:00
Lioncash
42a4c6b79e
vfs_vector: Remove unused variable in FindAndRemoveVectorElement()
...
This wasn't being used for anything, so it can be removed.
2018-08-02 11:40:24 -04:00
Lioncash
cec9e9b811
vfs_vector: Avoid unnecessary copies where applicable
...
The lambda elements should be taken by const reference here, and we can
move the virtual directory passed to ReplaceFileWithSubdirectory()
2018-08-02 11:37:39 -04:00
Lioncash
c6db1c390b
hw: Remove unused files
...
None of these files are used in any meaningful way. They're just
leftovers from citra. Also has the benefit of getting rid of an unused
global variable.
2018-08-02 10:23:10 -04:00
Lioncash
7469e26e5e
service: Add migration services
...
Adds the basic skeleton for the mig:usr service based off information
provided by Switch Brew.
2018-08-02 10:09:45 -04:00
Lioncash
bf45092c61
kernel: Move object class to its own source files
...
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.
2018-08-01 23:34:42 -04:00
Lioncash
5233040ab4
service: Add psc services
...
Adds the basic skeleton for the psc services based off the information
provided by Switch Brew.
2018-08-01 23:31:27 -04:00
Lioncash
0f2ac928f2
video_core: Make global EmuWindow instance part of the base renderer class
...
Makes the global a member of the RendererBase class. We also change this
to be a reference. Passing any form of null pointer to these functions
is incorrect entirely, especially given the code itself assumes that the
pointer would always be in a valid state.
This also makes it easier to follow the lifecycle of instances being
used, as we explicitly interact the renderer with the rasterizer, rather
than it just operating on a global pointer.
2018-08-01 21:40:30 -04:00
bunnei
746d7d4d28
Merge pull request #888 from lioncash/caps
...
service: Add capture services
2018-08-01 21:34:28 -04:00
bunnei
9bb8720289
Merge pull request #890 from lioncash/logger
...
lm: Amend name of ILogger
2018-08-01 21:33:11 -04:00
bunnei
16b2fd9fc8
Merge pull request #889 from lioncash/fsp
...
service/filesystem: Add fsp:ldr and fsp:pr services
2018-08-01 21:32:54 -04:00
Lioncash
48acb764a4
service/ns: Add missing ns services
...
Implements the basic skeleton of ns:am2, ns:ec, ns:rid, ns:rt, ns:su,
ns:vm, and ns:web based off the information provided by Switch Brew and
SwIPC.
2018-08-01 18:02:18 -04:00
Lioncash
f77cfab516
lm: Amend name of ILogger
...
Previously this was being registered with the name "Logger". While we're
at it, also change the name of the class to match it.
2018-08-01 17:08:44 -04:00
Lioncash
208a457909
service/filesystem: Add fsp:ldr and fsp:pr services
...
Adds the basic skeleton for the remaining fsp services based off
information provided by Switch Brew.
2018-08-01 17:01:29 -04:00
Lioncash
e39294c267
service: Add capture services
...
Adds the basic skeleton for the capture services based off information
provided by Switch Brew.
2018-08-01 16:45:51 -04:00
Lioncash
d109279543
service: Add bpc and pcv services
...
Adds the basic skeleton for the remaining pcv-related services based off
information on Switch Brew.
2018-08-01 16:13:04 -04:00
bunnei
703663d761
Merge pull request #882 from lioncash/unused
...
kernel/thread: Remove unimplemented function prototype
2018-07-31 22:25:49 -07:00
Zach Hilman
13cdf1f159
Add missing parameter to files.push_back()
2018-08-01 00:16:54 -04:00
Zach Hilman
0497bb5528
Fix merge conflicts with opus and update docs
2018-08-01 00:16:54 -04:00
Zach Hilman
187d8e215f
Use more descriptive error codes and messages
2018-08-01 00:16:54 -04:00
Zach Hilman
9d59b96ef9
Use static const instead of const static
2018-08-01 00:16:54 -04:00
Zach Hilman
a9c921a41d
Use ErrorEncrypted where applicable and fix no keys crash
2018-08-01 00:16:54 -04:00
Zach Hilman
03149d3e4a
Add missing includes and use const where applicable
2018-08-01 00:16:54 -04:00
Zach Hilman
150527ec19
Allow key loading from %YUZU_DIR%/keys in addition to ~/.switch
2018-08-01 00:16:54 -04:00
Zach Hilman
239a3113e4
Make XCI comply to review and style guidelines
2018-08-01 00:16:54 -04:00
Zach Hilman
22342487e8
Extract mbedtls to cpp file
2018-08-01 00:16:54 -04:00
Zach Hilman
83c3ae8be8
Add missing string.h include
2018-08-01 00:16:54 -04:00
Zach Hilman
c54a10cb4f
Update mbedtls and fix compile error
2018-08-01 00:16:54 -04:00
Zach Hilman
df5b75694f
Remove files that are not used
2018-08-01 00:16:54 -04:00
bunnei
d2ad279a32
Merge pull request #871 from bunnei/audio-config
...
audio_core: Add configuration settings.
2018-07-31 21:04:26 -07:00
Lioncash
49e198b20d
kernel/thread: Remove unimplemented function prototype
...
Given there's no implementation, we may as well remove the code
entirely.
2018-07-31 23:21:38 -04:00
bunnei
ff2c1b0a94
Merge pull request #877 from lioncash/remove
...
kernel: Remove unused object_address_table.cpp/.h
2018-07-31 20:11:39 -07:00
bunnei
98af269415
Merge pull request #880 from lioncash/audio
...
service/audio: Add missing services
2018-07-31 20:11:04 -07:00
bunnei
ca84b530a3
audio_core: Add configuration settings.
2018-07-31 22:38:42 -04:00
bunnei
f5efac3442
Merge pull request #876 from lioncash/include
...
kernel: Remove unnecessary includes
2018-07-31 19:16:05 -07:00
Lioncash
bba63b33a1
service/audio: Add missing services
...
Adds the missing audctl service, as well as the :a and :d services for
audin, audout, audrec, and audren.
2018-07-31 21:58:30 -04:00
bunnei
da07faebfe
Merge pull request #879 from lioncash/audio
...
audout_u: Remove std::move in OpenAudioOutImpl()
2018-07-31 16:49:56 -07:00
bunnei
3575c076cb
Merge pull request #869 from Subv/ubsan
...
Corrected a few error cases detected by asan/ubsan
2018-07-31 09:24:13 -07:00
bunnei
fd020ad52a
Merge pull request #875 from lioncash/fgm
...
service: Add fgm services
2018-07-31 09:23:17 -07:00
bunnei
3a2581cc7d
Merge pull request #874 from lioncash/am
...
service/am: Add missing am services
2018-07-31 09:22:56 -07:00
Lioncash
369f6e58aa
kernel: Remove unused object_address_table.cpp/.h
...
These source files were entirely unused throughout the rest of the
codebase. This also has the benefit of getting rid of a global variable
as well.
2018-07-31 11:03:08 -04:00
Lioncash
1ced7bbea5
audout_u: Remove std::move in OpenAudioOutImpl()
...
Previously the code was using the values from params further below after
it was std::moved. Thankfully, given AudoutParams is a trivially
copyable struct, the values would have simply been copied in this
instance and not invalidated to garbage values.
2018-07-31 10:24:38 -04:00
Lioncash
a2304fad16
kernel: Remove unnecessary includes
...
Removes unnecessary direct dependencies in some headers and also gets
rid of indirect dependencies that were being relied on to be included.
2018-07-31 10:15:17 -04:00
bunnei
b79362b9da
Merge pull request #870 from lioncash/init
...
arm_dynarmic: Correct initializer list order
2018-07-31 07:12:54 -07:00
Lioncash
7da8f15461
service/am: Add missing am services
...
Adds the basic skeleton for missing am services idle:sys, omm, and spsm
based off the information provided by Switch Brew.
2018-07-31 08:02:20 -04:00
Lioncash
268eeeb406
service: Add fgm services
...
Adds the basic skeleton for the fgm services based off the information
provided by Switch Brew.
2018-07-31 08:01:19 -04:00
Lioncash
f08c0520a4
arm_dynarmic: Make SetTlsAddress() prototype and definition consistent
...
Makes the definition use the same type aliases as in its prototype.
2018-07-31 07:58:26 -04:00
Lioncash
9d6aa7bff7
arm_dynarmic: Remove unnecessary qualifying of ThreadContext
...
Given the ARM_Dynarmic class inherits from ARM_Interface, we don't need
to qualify here.
2018-07-31 07:56:59 -04:00
Lioncash
444a01afa6
arm_dynarmic: Correct initializer list order
...
Amends the initializer list to be in the same order that each variable
would be initialized in. We also do this to ensure we don't use a bogus
uninitialized instance of the exclusive monitor within MakeJit()
We can also remove the jit member from the initializer list as this is
initialized by PageTableChanged()
2018-07-31 07:54:58 -04:00
Lioncash
e373027a73
service: Add the pcie service
...
Adds the basic skeleton of the pcie service based off information on
Switch Brew.
2018-07-31 06:40:21 -04:00
Subv
e119e17d18
nvhost_gpu: Added checks to ensure we don't read past the end of the entries when handling a GPU command list.
2018-07-30 20:09:13 -05:00
Subv
2482aca7c3
nvhost_ctrl_gpu: Only read the input parameters if they are actually there.
...
Passing nullptr to memcpy is undefined behavior.
2018-07-30 20:08:36 -05:00
bunnei
eaf66b4c9f
audio_core: Move to audout_u impl.
...
- This is necessary so streams are created on the same thread.
2018-07-30 18:44:16 -04:00
David
a483e5e28d
Implemented various hwopus functions ( #853 )
2018-07-30 15:42:20 -07:00
bunnei
45d1438530
Merge pull request #858 from lioncash/cast
...
partition_filesystem: Remove dynamic_cast in PrintDebugInfo()
2018-07-30 10:09:36 -07:00
bunnei
c5fa3560a6
Merge pull request #857 from lioncash/wlan
...
service: Add wlan services
2018-07-30 10:06:52 -07:00
bunnei
2c4bb11015
Merge pull request #856 from lioncash/btm
...
service: Add btm services
2018-07-30 10:06:34 -07:00
Hexagon12
fd797e2424
Add some HID commands ( #843 )
...
* Added some HID commands
* Addressed comments
2018-07-30 10:06:21 -07:00
Lioncash
57c4d7aa00
partition_filesystem: Remove dynamic_cast in PrintDebugInfo()
...
We shouldn't be upcasting our file instances. Given a
PartitionFilesystem is currently designed to accept any arbitrary
VfsFile instances, casting to a more specific type than that is just bad
design, and shows an interface design issue.
2018-07-29 06:16:59 -04:00
Lioncash
6ea416091e
service: Add wlan services
...
Adds the basic skeleton for the wlan services based off the information
on Switch Brew.
2018-07-28 21:54:55 -04:00
Lioncash
7ce6858086
service/btm: Add basic implementation of GetCoreImpl()
...
Based off information on SwIPC and Switch Brew.
2018-07-28 21:09:07 -04:00
Lioncash
ca7655be3a
service: Add btm services
...
Adds the skeleton for the btm services based off the information on
Switch Brew.
2018-07-28 21:09:07 -04:00
bunnei
458fdda700
Merge pull request #847 from lioncash/ncm
...
service: Add ncm services
2018-07-28 10:46:09 -07:00
bunnei
d00dcdb1be
Merge pull request #846 from lioncash/mii
...
service: Add mii services
2018-07-28 10:45:31 -07:00
bunnei
e1d66ea794
Merge pull request #842 from bunnei/audio-core
...
Initial implementation of Audio Core
2018-07-27 20:25:32 -07:00
bunnei
f1c519f2cb
audout: Implement IAudioOut interface with AudioCore.
2018-07-27 22:55:39 -04:00
bunnei
2a742229ee
core: Add AudioCore to global state.
2018-07-27 22:33:37 -04:00
bunnei
ab756fd068
audio_core: Add initial code for keeping track of audout state.
2018-07-27 22:33:31 -04:00
Zach Hilman
906d785c73
RomFS Extraction
2018-07-27 18:14:03 -04:00
Lioncash
7931cc0ceb
service: Add ncm services
...
Adds the basic skeleton for the ncm services based off information on
Switch Brew.
2018-07-27 17:38:30 -04:00
bunnei
0191a1e526
Merge pull request #845 from lioncash/nfc
...
service: Add nfc services
2018-07-27 14:29:27 -07:00
bunnei
833ebbb626
Merge pull request #844 from lioncash/lbl
...
service: Add the lbl service
2018-07-27 13:06:11 -07:00
bunnei
d2749ef0ed
Merge pull request #841 from lioncash/btdrv
...
service: Add the btdrv service
2018-07-27 13:05:36 -07:00
Lioncash
f46bfdd77d
service: Add mii services
...
Adds the skeleton for the mii services based off information provided by
Switch Brew
2018-07-27 16:01:29 -04:00
Lioncash
50dadc33e3
service/nfc: Implement Create[x]Interface functions
...
These simply return the respective interface.
2018-07-27 15:12:08 -04:00
Lioncash
04d144aa40
service: Add nfc services
...
Adds the skeleton of the nfc service based off the information provided
on Switch Brew.
2018-07-27 14:50:24 -04:00
Lioncash
ea8dd8b650
service/lbl: Implement EnableVrMode, DisableVrMode and GetVrMode
...
Implements these functions according to the information available on
Switch Brew.
2018-07-27 14:20:42 -04:00
Lioncash
c2c543e8f7
service: Add the lbl service
...
Adds the skeleton of the lbl service based off the information provided
by Switch Brew.
2018-07-27 14:20:07 -04:00
bunnei
dc4e5f9159
Merge pull request #837 from lioncash/priv
...
kernel/timer: Make data members private where applicable
2018-07-27 07:18:50 -07:00
Lioncash
f49248437e
service: Add the btdrv service
...
Adds the skeleton for the btdrv service based off the information provided by Switch Brew
2018-07-26 18:06:17 -04:00
Lioncash
1121622dc1
service/hid: Add the hidbus, hid:dbg, hid:sys, and hid:tmp services
2018-07-26 15:05:42 -04:00
Lioncash
7550c2c866
service/hid: Add the xcd:sys service
2018-07-26 15:05:42 -04:00
Lioncash
82cb5f030d
service/hid: Add irs services
2018-07-26 15:05:24 -04:00
bunnei
8440b814bc
Merge pull request #834 from lioncash/grc
...
service: Add the grc:c service
2018-07-26 12:03:30 -07:00
bunnei
41d7b020a8
Merge pull request #832 from lioncash/nim
...
service: Add the nim services
2018-07-26 12:02:29 -07:00
bunnei
e4191b624c
Merge pull request #831 from lioncash/ldn
...
service: Add ldn services
2018-07-26 11:52:42 -07:00
bunnei
40eb243f86
Merge pull request #830 from lioncash/socket
...
service/sockets: Add missing socket services
2018-07-26 11:51:11 -07:00
Lioncash
b28af1f6c9
service: Add the grc:c service
...
Adds the basic skeleton for the grc:c service based off the information
provided by Switch Brew.
2018-07-26 09:53:58 -04:00
Lioncash
0cd843151f
kernel/timer: Make data members private where applicable
...
Instead, we can just expose functions that return the queryable state
instead of letting anything modify it.
2018-07-26 09:51:44 -04:00
Lioncash
f916611e32
service: Add the nim services
...
Adds the skeleton for the nim services based off information from Switch
Brew.
2018-07-26 02:47:06 -04:00
Lioncash
8781beaf0d
service: Add ldn services
...
Adds ldn services based off information provided by Switch Brew.
2018-07-26 01:48:06 -04:00
bunnei
57cd80c410
Merge pull request #827 from lioncash/log
...
service/lm: Minor changes
2018-07-25 22:30:43 -07:00
Lioncash
3f5dfc4d96
service/sockets: Add ethc:c and ethc:i services
2018-07-26 01:07:21 -04:00
Lioncash
165e7645e1
service/sockets: Add missing bsdcfg socket service
2018-07-26 01:00:15 -04:00
Sebastian Valle
1958d07d7d
Merge pull request #828 from lioncash/ldr
...
service: Add ldr services
2018-07-25 23:44:13 -05:00
Sebastian Valle
8ac52c6b56
Merge pull request #826 from lioncash/erpt
...
service: Add erpt and eupld services
2018-07-25 23:43:47 -05:00
Sebastian Valle
0e05f98be2
Merge pull request #823 from lioncash/nifm
...
service/nifm: Deduplicate interface code
2018-07-25 23:43:03 -05:00
Lioncash
3fb124961e
service: Add ldr services
...
Adds the skeleton for the ldr-related services based off the information
provided on Switch Brew.
2018-07-25 23:11:03 -04:00
Lioncash
91d86df920
lm: Move LM's class declaration into the cpp file
...
This isn't used directly outside of this translation unit, so we can
hide it from external use.
2018-07-25 22:40:16 -04:00
Lioncash
6f4d3d8163
lm: Amend names of Initialize() in Logger and Initialize() in LM
...
Amends these to match the information on Switch Brew.
2018-07-25 22:39:39 -04:00
Lioncash
8650be1020
lm: Add missing function entry to Logger's function table
2018-07-25 22:26:32 -04:00
Lioncash
7458e71f24
service: Add eupld services
...
Adds the skeleton for the eupld services based off information on Switch
Brew.
2018-07-25 22:13:43 -04:00
Lioncash
821f2c03cb
service: Add the erpt services
...
Adds the basic skeleton of the erpt service based off information on
Switch Brew.
2018-07-25 22:13:39 -04:00
bunnei
b0adb9a3d9
Merge pull request #824 from lioncash/nvdrv
...
service/nvdrv: Minor changes
2018-07-25 19:02:08 -07:00
bunnei
851089b482
Merge pull request #822 from lioncash/pm
...
service: Add pm services
2018-07-25 19:01:28 -07:00
Lioncash
f9951352f6
service/nvdrv: Take std::string in Open() by const reference
...
Avoids copies from being made, since the string is only ever used for
lookup, the data is never transfered anywhere.
Ideally, we'd use a std::string_view here, but devices is a
std::unordered_map, not a std::map, so we can't use heterogenous lookup
here.
2018-07-25 17:37:43 -04:00
Lioncash
a2cd07d094
service/nvdrv: Use std::move where applicable
...
Avoids unnecessary reference count increments and decrements.
In one case, we don't need to make a shared_ptr copy at all,
just to call a member function.
2018-07-25 17:31:08 -04:00
Lioncash
85ed42a1d2
service/nifm: Deduplicate interface code
...
Rather than having the same code for each nifm service variant, we can
centralize it on one class and get rid of a bit of extra code.
2018-07-25 17:18:41 -04:00
Lioncash
c664f8a257
service: Add pm services
...
Adds the skeleton for the process management services based off
information on Switch Brew.
2018-07-25 16:57:16 -04:00
Lioncash
4175712976
service: Add the es service
...
Adds the skeleton for the ETicket service based off the information on
Switch Brew
2018-07-25 15:36:55 -04:00
Mat M
1e4935c3a0
Merge pull request #801 from lioncash/time
...
time: Add the time:a service
2018-07-25 15:08:33 -04:00
Mat M
d3fd0351a7
Merge pull request #804 from lioncash/log
...
svc: Log parameters in SetMemoryAttribute()
2018-07-25 14:43:24 -04:00
Lioncash
3c1cb3b11e
time: Add the time:a service
...
Given we already have time:s and time:u, we should also have time:a
2018-07-25 14:42:04 -04:00
bunnei
657bd113e3
Merge pull request #803 from MerryMage/core_timing_util
...
core_timing: Split off utility functions into core_timing_util
2018-07-25 11:09:31 -07:00
bunnei
5c42cadbc9
Merge pull request #800 from lioncash/set
...
set_sys: Implement SetColorSetId()
2018-07-25 10:25:29 -07:00
bunnei
340771ccd7
Merge pull request #806 from lioncash/friend
...
friend: Deduplicate interfaces
2018-07-24 17:42:16 -07:00
bunnei
ea0bc8c002
Merge pull request #805 from lioncash/sign
...
svc: Resolve sign comparison warnings in WaitSynchronization()
2018-07-24 12:50:03 -07:00
Lioncash
4cf2185e81
deconstructed_rom_directory: Remove unused FindRomFS() function
2018-07-24 10:54:07 -04:00
Lioncash
07c2d057bd
friend: Add friend:m, friend:s, and friend:v services
...
Given we already have friend:a and friend:u, we should add the remaining
services as well.
2018-07-24 10:26:01 -04:00
Lioncash
9539a1eadd
friend/interface: Add missing CreateDaemonSuspendSessionService() to the function handler table
2018-07-24 10:24:16 -04:00
Lioncash
77daef44b0
friend: Deduplicate interfaces
2018-07-24 10:21:51 -04:00
Lioncash
c73410bf2c
svc: Resolve sign comparison warnings in WaitSynchronization()
...
The loop's induction variable was signed, but we were comparing against
an unsigned variable.
2018-07-24 09:55:17 -04:00
Lioncash
8e8e906432
svc: Log parameters in SetMemoryAttribute()
...
Provides slightly more context than only logging out the address value.
2018-07-24 09:46:46 -04:00
bunnei
316c994f55
Merge pull request #798 from lioncash/const
...
arm_dynarmic: Make MakeJit() a const member function
2018-07-24 04:48:06 -07:00
bunnei
23e85b6b9f
Merge pull request #797 from lioncash/explicit
...
core: Make converting constructors explicit where applicable
2018-07-24 04:47:26 -07:00
bunnei
1cbf7ac6ea
Merge pull request #795 from lioncash/decl
...
apm/interface: Remove redundant declaration of InstallInterfaces()
2018-07-24 04:46:41 -07:00
bunnei
d092ea0870
Merge pull request #794 from lioncash/ref
...
mutex: Pass SharedPtr to GetHighestPriorityMutexWaitingThread() by reference
2018-07-24 04:45:34 -07:00
Lioncash
a61124a9e7
time: Simplify interface creation
...
We can use one instance of the interface instead of duplicating code.
2018-07-24 06:21:27 -04:00
MerryMage
44646e2ea0
core_timing: Split off utility functions into core_timing_util
2018-07-24 11:03:24 +01:00
MerryMage
b8459d2778
CMakeLists: Sort filenames
2018-07-24 11:02:53 +01:00
Lioncash
63c605c04a
set_sys: Implement SetColorSetId()
2018-07-24 00:48:16 -04:00
Lioncash
76f191ce36
ipc_helper: Add helper member function for popping enum values to RequestParser
2018-07-24 00:47:51 -04:00
bunnei
2f029577c7
Merge pull request #793 from lioncash/priv
...
ipc_helpers: Make member variables of ResponseBuilder private
2018-07-23 21:23:27 -07:00
bunnei
bc5b65a1b0
Merge pull request #785 from lioncash/fs
...
partition_filesystem: Use std::move where applicable
2018-07-23 20:36:59 -07:00
Lioncash
7d124ec82b
arm_dynarmic: Make MakeJit() a const member function
...
This functions doesn't modify instance state, so it can be a made a
const member function.
2018-07-23 23:19:37 -04:00
Lioncash
1d755abce4
core: Make converting constructors explicit where applicable
...
Avoids unwanted implicit conversions. Thankfully, given the large amount
of cleanup in past PRs, only this tiny amount is left over to cover.
2018-07-23 23:13:22 -04:00
Lioncash
8b83adfed6
apm/interface: Remove redundant declaration of InstallInterfaces()
...
This is already declared in apm/apm.h
2018-07-23 23:01:04 -04:00
Lioncash
42b5158c96
mutex: Pass SharedPtr to GetHighestPriorityMutexWaitingThread() by reference
...
The pointed to thread's members are simply observed in this case, so we
don't need to copy it here.
2018-07-23 22:54:35 -04:00
Zach Hilman
59cb258409
VFS Regression and Accuracy Fixes ( #776 )
...
* Regression and Mode Fixes
* Review Fixes
* string_view correction
* Add operator& for FileSys::Mode
* Return std::string from SanitizePath
* Farming Simulator Fix
* Use != With mode operator&
2018-07-23 19:40:35 -07:00
Lioncash
22fd3f0026
hle_ipc: Make constructors explicit where applicable
2018-07-23 22:40:24 -04:00
Lioncash
2a1daf8f83
ipc_helpers: Make member variables of ResponseBuilder private
...
These aren't used externally at all, so they can be made private.
2018-07-23 22:29:07 -04:00
bunnei
25635907a2
Merge pull request #786 from lioncash/exclusive
...
exclusive_monitor: Use consistent type alias for u64
2018-07-23 19:11:05 -07:00
bunnei
84cc5dd35d
Merge pull request #784 from lioncash/loader
...
loader: Minor cleanup
2018-07-23 19:08:12 -07:00
bunnei
1ce5e04be8
Merge pull request #783 from lioncash/linker
...
linker: Remove unused parameter from WriteRelocations()
2018-07-23 19:07:22 -07:00
bunnei
10dd03dec5
Merge pull request #782 from lioncash/file
...
loader/nro: Minor changes
2018-07-23 19:06:30 -07:00
bunnei
52ec1840f5
Merge pull request #780 from lioncash/move
...
vi: Minor changes
2018-07-23 18:29:11 -07:00
bunnei
e0b6771e25
Merge pull request #779 from lioncash/shared
...
hle: Remove unused config_mem and shared_page source files
2018-07-23 18:28:45 -07:00
Lioncash
e12c84d5c5
exclusive_monitor: Use consistent type alias for u64
...
Uses the same type aliases we use for virtual addresses, and converts
one lingering usage of std::array<uint64_t, 2> to u128 for consistency.
2018-07-23 20:54:57 -04:00
Lioncash
db48ebb9c9
partition_filesystem: Use std::move where applicable
...
Avoids copying a std::string instance and avoids unnecessary atomic
reference count incrementing and decrementing.
2018-07-23 20:27:11 -04:00
Lioncash
a147fa5825
loader: Remove unnecessary constructor call in IdentifyFile()
...
RealVfsFile inherits from VfsFile, the instance from std::make_shared is
already compatible with the function argument type, making the copy
constructor call unnecessary.
2018-07-23 17:44:58 -04:00
Lioncash
184c516182
linker: Remove unused parameter from WriteRelocations()
...
is_jump_relocation is never used within the function, so we can just
remove it.
2018-07-23 17:40:12 -04:00
Lioncash
1b4d0ac20e
nro: Replace inclusion with a forward declaration
...
It's sufficient to use a forward declaration instead of a direct
inclusion here.
2018-07-23 17:29:02 -04:00
Lioncash
2b497e5830
nro: Make bracing consistent
...
Makes the code more uniform, and also braces cases where the body of an
unbraced conditional travels more than one line.
2018-07-23 17:24:29 -04:00
Lioncash
ac8133b9ee
nro: Make constructor explicit
...
Makes it consistent with the other Apploader constructors, and prevents
implicit conversions.
2018-07-23 17:20:33 -04:00
Lioncash
1c16700372
nro: Remove unused forward declaration
...
This isn't used anywhere in the header.
2018-07-23 17:19:42 -04:00
bunnei
07e5319d55
Merge pull request #695 from DarkLordZach/nro-asset
...
NRO Assets and NACP File Format
2018-07-23 14:14:11 -07:00
Lioncash
1432912ae8
vi: Add std::is_trivially_copyable checks to Read and Write functions
...
It's undefined behavior to memcpy an object that isn't considered
trivially copyable, so put a compile-time check in to make sure this
doesn't occur.
2018-07-23 14:53:54 -04:00
Lioncash
344a0c91f2
vi: std::move std::vector in constructors where applicable
...
Allows avoiding unnecessary copies of the vector depending on the
calling code.
While we're at it, remove a redundant no-parameter base constructor call
2018-07-23 14:49:54 -04:00
Lioncash
cbe841c9c9
hle: Remove config_mem.h/.cpp
...
This is just an unused hold-over from citra, so we can get rid of this
to trim off an exposed global, among other things.
2018-07-23 12:57:34 -04:00
Lioncash
1f3889a290
hle: Remove shared_page.h/.cpp
...
This is a holdover from citra that's essentially unused.
2018-07-23 12:53:07 -04:00
Lioncash
e85308cd90
set: Add missing log call in GetAvailableLanguageCodeCount()
...
Forgot to include this in 22f448b632
2018-07-23 12:37:42 -04:00
Zach Hilman
e8f641a52d
NRO Assets and NACP file format
...
Cleanup
Review fixes
2018-07-23 12:34:26 -04:00
bunnei
a85366a40c
Merge pull request #777 from lioncash/lang
...
set: Amend return value of GetAvailableLanguageCodes()
2018-07-23 09:34:08 -07:00
Lioncash
22f448b632
set: Implement GetAvailableLanguageCodeCount()
...
This just returns the size of the language code buffer.
2018-07-23 00:29:40 -04:00
Lioncash
37aeecd29f
set: Correct return code size of value in GetAvailableLanguageCodes()
...
The return code should be 32-bit in size.
2018-07-23 00:29:22 -04:00
bunnei
a4b2af7382
Merge pull request #774 from Subv/atomic_signal
...
Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real kernel.
2018-07-22 12:26:03 -07:00
bunnei
5ee4c49c30
Merge pull request #768 from lioncash/string-view
...
file_util, vfs: Use std::string_view where applicable
2018-07-22 11:32:28 -07:00
Subv
7841447cf0
Kernel/SVC: Perform atomic accesses in SignalProcessWideKey as per the real kernel.
2018-07-22 12:27:24 -05:00
MerryMage
0b1c2e5505
Implement exclusive monitor
2018-07-22 15:55:17 +01:00
Lioncash
0081252d31
vfs: Correct file_p variable usage within InterpretAsDirectory()
...
ReplaceFileWithSubdirectory() takes a VirtualFile and a VirtualDir, but
it was being passed a string as one of its arguments. The only reason
this never caused issues is because this template isn't instantiated
anywhere yet.
This corrects an issue before it occurs.
2018-07-22 03:22:28 -04:00
Lioncash
398444e676
file_util, vfs: Use std::string_view where applicable
...
Avoids unnecessary construction of std::string instances where
applicable.
2018-07-22 03:22:21 -04:00
Lioncash
0ba7fe4ab1
file_util: Use a u64 to represent number of entries
...
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.
2018-07-21 22:42:08 -04:00
bunnei
9533875eeb
Merge pull request #760 from lioncash/path
...
file_util: Use an enum class for GetUserPath()
2018-07-21 18:30:04 -07:00
Subv
5c49e56d41
GPU: Implement the NVGPU_IOCTL_CHANNEL_KICKOFF_PB ioctl2 command.
...
This behaves quite similarly to the SubmitGPFIFO command. Referenced from Ryujinx.
Many thanks to @gdkchan for investigating this!
2018-07-21 15:50:02 -05:00
Lioncash
d66b43dadf
file_util: Use an enum class for GetUserPath()
...
Instead of using an unsigned int as a parameter and expecting a user to
always pass in the correct values, we can just convert the enum into an
enum class and use that type as the parameter type instead, which makes
the interface more type safe.
We also get rid of the bookkeeping "NUM_" element in the enum by just
using an unordered map. This function is generally low-frequency in
terms of calls (and I'd hope so, considering otherwise would mean we're
slamming the disk with IO all the time) so I'd consider this acceptable
in this case.
2018-07-21 16:21:19 -04:00
bunnei
0f20fa5a1e
Merge pull request #754 from lioncash/part
...
partition_filesystem, vfs_real: Minor changes
2018-07-21 11:38:52 -07:00
bunnei
de7cb91995
Merge pull request #750 from lioncash/ctx
...
arm_interface: Remove unused tls_address member of ThreadContext
2018-07-21 11:38:16 -07:00
bunnei
89cc8c1617
Merge pull request #755 from lioncash/ctor
...
file_sys/errors: Remove redundant object constructor calls
2018-07-21 10:53:53 -07:00
bunnei
fe2498a650
Merge pull request #751 from Subv/tpidr_el0
...
CPU: Save and restore the TPIDR_EL0 system register on every context switch
2018-07-21 10:48:30 -07:00
bunnei
3d938b8c60
Merge pull request #753 from lioncash/const
...
vfs: Minor changes
2018-07-21 10:44:08 -07:00
bunnei
d85cfc94e2
Merge pull request #752 from Subv/vfs_load
...
Loader: Only print the module names and addresses if they actually exist.
2018-07-20 22:57:18 -07:00
Lioncash
459e158340
file_sys/errors: Remove redundant object constructor calls
...
Given we're already constructing the error code, we don't need to call
the constructor inside of it.
2018-07-20 22:37:54 -04:00
Lioncash
b46c0ed1fa
vfs_real: Remove redundant copying of std::vector instances in GetFiles() and GetSubdirectories()
...
We already return by value, so we don't explicitly need to make the
copy.
2018-07-20 22:30:22 -04:00
Lioncash
ec71915ede
partition_filesystem, vfs_real: Add missing standard includes
2018-07-20 22:28:35 -04:00
Lioncash
d36e327ba6
partition_filesystem, vfs_real: Use std::move in ReplaceFileWithSubdirectory() where applicable
...
Avoids unnecessary atomic increment and decrement operations.
2018-07-20 22:23:58 -04:00
Lioncash
2b91386e15
partition_filesystem, vfs_real: Use std::distance() instead of subtraction
...
This is a little bit more self-documenting on what is being done here.
2018-07-20 22:19:17 -04:00
Lioncash
3e0727df1b
vfs_offset: Simplify TrimToFit()
...
We can simply use std::clamp() here, instead of using an equivalent
with std::max() and std::min().
2018-07-20 22:04:37 -04:00
Lioncash
894b0de0f2
vfs: Make WriteBytes() overload taking a std::vector pass the std::vector by const reference
...
Given the data is intended to be directly written, there's no need to
take the std::vector by value and copy the data.
2018-07-20 21:51:30 -04:00
Lioncash
dd09439fee
vfs: Use variable template variants of std::is_trivially_copyable
...
Provides the same behavior, but with less writing
2018-07-20 21:47:19 -04:00
Lioncash
05231d8b08
vfs: Amend constness on pointers in WriteBytes() and WriteArrays() member functions to be const qualified
...
These functions don't modify the data being pointed to, so these can be
pointers to const data
2018-07-20 21:40:15 -04:00
Subv
966874e357
Loader: Only print the module names and addresses if they actually exist.
2018-07-20 19:59:15 -05:00
Subv
d84eb9dac6
CPU: Save and restore the TPIDR_EL0 system register on every context switch.
...
Note that there's currently a dynarmic bug preventing this register from being written.
2018-07-20 19:57:45 -05:00
Lioncash
ae09adfcb3
arm_interface: Remove unused tls_address member of ThreadContext
...
Currently, the TLS address is set within the scheduler, making this
member unused.
2018-07-20 18:57:40 -04:00
bunnei
2b7d862366
Merge pull request #742 from bunnei/misc-apm
...
apm: Improve stub for GetPerformanceConfiguration.
2018-07-20 15:01:19 -07:00
bunnei
dffd154d6d
apm: Improve stub for GetPerformanceConfiguration.
2018-07-20 15:20:01 -04:00
Lioncash
0a0b3c4b9f
ipc_helpers: Add PushEnum() member function to ResponseBuilder
...
Allows pushing strongly-typed enum members without the need to always
cast them at the call sites.
Note that we *only* allow strongly-typed enums in this case. The reason
for this is that strongly typed enums have a guaranteed defined size, so
the size of the data being pushed is always deterministic. With regular
enums this can be a little more error-prone, so we disallow them.
This function simply uses the underlying type of the enum to determine
the size of the data. For example, if an enum is defined as:
enum class SomeEnum : u16 {
SomeEntry
};
if PushEnum(SomeEnum::SomeEntry); is called, then it will push a
u16-size amount of data.
2018-07-20 15:00:58 -04:00
bunnei
c1c9ab31e8
Merge pull request #740 from Subv/acc_crash
...
HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.
2018-07-20 09:47:47 -07:00
bunnei
ffbd51e207
Merge pull request #737 from lioncash/move
...
filesys/loader: std::move VirtualFile instances in constructors where applicable
2018-07-20 09:21:15 -07:00
bunnei
701c7cb85c
Merge pull request #736 from lioncash/null
...
audout_u/audren_u: Ensure null terminators are written out in ListAudioOutsImpl(), ListAudioDeviceName(), and GetActiveAudioDeviceName()
2018-07-20 09:17:07 -07:00
bunnei
741cae1e1d
Merge pull request #734 from lioncash/thread
...
thread: Convert ThreadStatus into an enum class
2018-07-20 09:15:52 -07:00
bunnei
a1805ceb0b
Merge pull request #733 from lioncash/dirs
...
partition_filesystem: Return pfs_dirs member variable within GetSubdirectories()
2018-07-20 09:15:16 -07:00
bunnei
86d1649b32
Merge pull request #732 from lioncash/unused
...
nso: Minor changes
2018-07-20 09:14:10 -07:00
Subv
9c7321fe6d
HLE/ACC: Stub IManagerForApplication::GetAccountId to return an error.
...
And make IManagerForApplication::CheckAvailability always return false.
Returning a bogus id from GetAccountId causes games to crash on boot.
We should investigate this with a hwtest and either stub it properly or implement it.
2018-07-20 11:02:25 -05:00
Lioncash
8874d0e657
loader/{nca, nro}: std::move VirtualFile in the constructors where applicable
...
This avoids unnecessary atomic reference count increments and decrements
2018-07-20 00:10:24 -04:00
Lioncash
0e9d58e82a
vfs_offset: std::move file and name parameters of OffsetVfsFile
...
Avoids potentially unnecessary atomic reference count incrementing and
decrementing, as well as string copying.
2018-07-20 00:04:54 -04:00
Lioncash
40c9c5a55c
audren_u: Use a std::array instead of std::string for holding the audio interface/device name
...
std::string doesn't include the null-terminator in its data() + size()
range. This ensures that the null-terminator will also be written to the buffer
2018-07-19 23:15:27 -04:00
Lioncash
c20cea118b
audout_u: Use a std::array instead of std::string for holding the audio interface name
...
Uses a type that doesn't potentially dynamically allocate, and ensures
that the name of the interface is properly null-terminated when writing
it to the buffer.
2018-07-19 23:15:00 -04:00
Lioncash
dbfe82773d
thread: Convert ThreadStatus into an enum class
...
Makes the thread status strongly typed, so implicit conversions can't
happen. It also makes it easier to catch mistakes at compile time.
2018-07-19 22:08:56 -04:00
Lioncash
bbd6429ecb
partition_filesystem: Return pfs_dirs member variable within GetSubdirectories()
...
This should be returned here, otherwise pfs_dirs is effectively only
ever added to, but never read.
2018-07-19 21:08:50 -04:00
Lioncash
364b950515
nso: Silence implicit sign conversion warnings
2018-07-19 20:51:15 -04:00
Lioncash
a25c5b982a
nso: Remove unused function ReadSegment()
2018-07-19 20:49:27 -04:00
Lioncash
1bdb67440b
pl_u: Simplify WriteBuffer() calls in GetSharedFontInOrderOfPriority()
...
With the new overload, we can simply pass the container directly.
2018-07-19 19:50:30 -04:00
bunnei
d3cfaf95c8
Merge pull request #726 from lioncash/overload
...
hle_ipc: Introduce generic WriteBuffer overload for multiple container types
2018-07-19 16:18:38 -07:00
bunnei
0b13ce1435
Merge pull request #725 from lioncash/bytes
...
pl_u: Specify correct size for buffers in GetSharedFontInOrderOfPriority()
2018-07-19 16:16:30 -07:00
bunnei
af08034c71
Merge pull request #728 from Subv/acc_profile
...
HLE/ACC: Change the default user id and small improvements to the way we handle profiles
2018-07-19 16:15:01 -07:00
bunnei
2aeb3355e4
Merge pull request #727 from Subv/acc_users
...
HLE/ACC: Write a single whole user id in ListAllUsers and ListOpenUsers.
2018-07-19 16:13:45 -07:00
bunnei
c6352ffc58
Merge pull request #724 from lioncash/printf
...
pl_u: Remove printf specifier in log call in a log call in GetSharedFontInOrderOfPriority()
2018-07-19 16:13:07 -07:00
bunnei
ec468c990d
Merge pull request #723 from lioncash/gdb
...
gdbstub: Get rid of a few signed/unsigned comparisons
2018-07-19 16:12:40 -07:00
bunnei
f43d8ea523
Merge pull request #722 from lioncash/signed
...
hid: Resolve a signed/unsigned comparison warning
2018-07-19 16:12:15 -07:00