Commit Graph

8567 Commits

Author SHA1 Message Date
1185d62792 BOSS service serialization 2020-02-13 17:38:22 +08:00
5265c79056 APT service serialization 2020-02-13 17:38:21 +08:00
3e752002c4 Replace g_kernel with Core::Global etc. 2020-02-13 17:38:21 +08:00
e707685c2a Serialize AM services 2020-02-13 17:38:20 +08:00
89e4e49a63 Finished AC and ACT service serialization 2020-02-13 17:38:20 +08:00
3fd5c431f1 Service serialization framework; done AC 2020-02-13 17:38:20 +08:00
ac0337d8df Started IPC services serialization 2020-02-13 17:38:19 +08:00
7a5bde0b44 Serialize service manager, server prt 2020-02-13 17:38:19 +08:00
4f95575d41 Serialize some more kernel objects 2020-02-13 17:38:18 +08:00
8c81500dee Serialize kernel/hle/memory 2020-02-13 17:38:18 +08:00
050c3bdee5 Serialize primitive_assembly 2020-02-13 17:38:18 +08:00
c284192a87 Serialize geometry_pipeline 2020-02-13 17:38:17 +08:00
acc89b2251 Fixed an include 2020-02-13 17:38:17 +08:00
dc0d1ebc95 Added a TODO 2020-02-13 17:38:17 +08:00
f557d26b40 Added CPU, mutex, process, thread, timer 2020-02-13 17:38:16 +08:00
06891d9454 Added client/server objects 2020-02-13 17:38:16 +08:00
5035e68dad Added derived kernel objects 2020-02-13 17:38:15 +08:00
f79c9668a3 Added shader state; WIP kernel objects 2020-02-13 17:38:10 +08:00
45788b9c82 Added shader state serialization 2020-02-13 17:34:16 +08:00
6f00976ab5 video_core serialization 2020-02-13 17:34:16 +08:00
ee2cae2093 Added core serialization 2020-02-13 17:34:13 +08:00
dc04774ece Added POD serialization 2020-02-13 17:27:51 +08:00
6940c99ed6 Added boost serialization 2020-02-13 17:27:50 +08:00
f106e76132 Port yuzu commit: "yuzu/CMakeLists: Disable implicit QString co… (#5074)
* yuzu/CMakeLists: Disable implicit QString conversions

Now that all of our code is compilable with implicit QString
conversions, we can enforce it at compile-time by disabling them.

Co-Authored-By: Mat M. <lioncash@users.noreply.github.com>

* citra_qt: Remove lots of implicit QString conversions

Co-authored-by: Mat M. <mathew1800@gmail.com>
2020-02-11 13:12:09 +01:00
4273b967b5 core/file_sys: Do not apply the same mods to DLCs
Now you can apply separate mods to DLCs and mods for the original title won't be applied.
2020-02-11 14:03:07 +08:00
4c2c27046d Fix compilation 2020-02-10 12:10:42 +01:00
b53b4bfb17 Merge pull request #5062 from FearlessTobi/port-3173
Port yuzu-emu/yuzu#3173: "common: SPSCQueue: Notify after incrementing queue size."
2020-02-10 12:10:45 +08:00
b81c9bd738 fix clang format 2020-02-10 07:41:31 +08:00
7362fe48ac input_common/udp: Add missing override specifiers
Prevents trivial warnings and ensures interfaces are properly
maintained between the base class.
2020-02-09 23:00:02 +01:00
575ab92a76 input_common/udp: std::move SocketCallback instances where applicable
std::function is allowed to heap allocate if the size of the captures
associated with each lambda exceed a certain threshold. This prevents
potentially unnecessary reallocations from occurring.
2020-02-09 23:00:02 +01:00
fcdc191107 input_common/udp: std::move shared_ptr within Client constructor
Gets rid of a trivially avoidable atomic reference count increment and
decrement.
2020-02-09 23:00:02 +01:00
8a0f8c3a4f udp/client: Replace deprecated from_string() call with make_address_v4()
Future-proofs code if boost is ever updated.
2020-02-09 23:00:02 +01:00
7d45fdc1df input_common/udp: Silence -Wreorder warning for Socket
Amends the constructor initializer list to specify the order of its
elements in the same order that initialization would occur.
2020-02-09 23:00:01 +01:00
d7a58fe24d input_common/udp: Remove unnecessary inclusions 2020-02-09 23:00:01 +01:00
b39a611a3d input_common/udp: Add missing header guard 2020-02-09 23:00:01 +01:00
d9ae4c332d layered_fs: Do not open all replacement files on load
Instead open them when we want to read them. This is because the standard library has a limit on the number of opened files.
2020-02-09 21:48:42 +08:00
b87bc5d351 citra_qt: Add 'Dump RomFS' menu action
A progress dialog will be displayed. However no progress is reported and the user also cannot cancel it.
2020-02-09 21:01:56 +08:00
13e2d534e9 core: Add dump RomFS support
This is added to LayeredFS, then the NCCH container and then the loader interface.
2020-02-09 20:59:31 +08:00
03cde53cb6 Merge pull request #5077 from FearlessTobi/port-3339
Port yuzu-emu/yuzu#3339: "GUI: fix minor issues with dark themes + rename and reorder themes"
2020-02-08 12:49:15 -07:00
17e9522921 Merge pull request #5069 from vitor-k/min-window2
Update minimum window size based on current layout
2020-02-08 12:46:20 -07:00
db18f6c79a Address review
simplify code
2020-02-07 23:53:00 +08:00
2ec99b83aa core: Reset archive_manager on shutdown.
This holds the archives which include the SelfNCCH archive which holds the RomFS files. If we don't reset it the LayeredFS class can't get destructed and mods files won't be released.
2020-02-07 23:45:02 +08:00
6e0afbaa19 Fix build
Explicitly use `std::min<std::size_t>`

Added virtual destructor
2020-02-07 16:26:33 +08:00
eed9de2336 core/file_sys: Allow exheader replacement to be read from mods path
The previous method (filename.exheader) can still be used.
2020-02-07 15:55:35 +08:00
53d0c618a0 core/file_sys: Read mods for the original title for updates
Updates can override RomFS and ExeFS, therefore we should apply the mods to them as well.
2020-02-07 15:20:20 +08:00
7c652a0479 citra_qt: Add 'Open Mods Location' 2020-02-07 15:20:20 +08:00
91e5a39a08 core/file_sys: Allow exefs mods to be read from mods path
The original path (file_name.exefsdir) is still supported, but alternatively users can choose to put exefs patches in the same place as LayeredFS files (`load/mods/<Title ID>/exefs`).
2020-02-07 15:20:19 +08:00
8a570bf00c core: Use LayeredFS while reading RomFS
Only enabled for NCCHs that do not have an override romfs.

LayeredFS files should be put in the `load` directory in User Directory. The directory structure is similar to yuzu's but currently does not allow named mods yet. Replacement files should be put in `load/mods/<Title ID>/romfs` while patches/stubs should be put in `load/mods/<Title ID>/romfs_ext`.
2020-02-07 15:20:18 +08:00
890405bb7c core/file_sys: LayeredFS implementation
This implementation is different from Luma3DS's which directly hooks the SDK functions. Instead, we read the RomFS's metadata and figure out the directory and file structure. Then, relocations (i.e. replacements/deletions/patches) are applied. Afterwards, we rebuild the metadata, and assign 'fake' data offsets to the files. When we want to read file data from this rebuilt RomFS, we use binary search to find the last data offset smaller or equal to the given offset and read from that file  (either from the original RomFS, or from replacement files, or from buffered data with patches applied) and any later files when length is not enough.

The code that rebuilds the metadata is pretty complex and uses quite a few variables to keep track of necessary information like metadata offsets. According to my tests, it is able to build RomFS-es identical to the original (but without trailing garbage data) when no relocations are applied.
2020-02-07 15:19:57 +08:00
83e0cc45f4 core/file_sys: Make RomFSReader an abstract interface
The original RomFSReader is renamed to DirectRomFSReader that directly reads the RomFS.
2020-02-07 15:19:53 +08:00