Commit Graph

3691 Commits

Author SHA1 Message Date
fearlessTobi
48239be22c mii_selector: Use BitField where possible 2018-11-27 14:57:51 +01:00
Weiyi Wang
2678c1a945
Merge pull request #4462 from FearlessTobi/fix-my-shit
ir_user: Remove ArrayToString() calls
2018-11-26 14:43:07 -05:00
fearlessTobi
5121fadb4f ir:/movie: Replace for-loops with fmt::join 2018-11-26 20:04:18 +01:00
shutterbug2000
a7bbe60c18 Put AddPostDataAscii in the function list 2018-11-25 15:47:37 -06:00
shutterbug2000
4c198591d5 Add HTTP_C::AddPostDataAscii 2018-11-25 15:29:04 -06:00
Lioncash
067f09b41d
kernel/shared_memory: std::move the string parameter in SetName()
This avoids a potential reallocation.
2018-11-24 10:07:11 -05:00
fearlessTobi
fe99e5a51e mii_selector: map raw data to the MiiResult struct 2018-11-24 14:35:06 +01:00
Weiyi Wang
210e558bea
Merge pull request #4456 from FearlessTobi/port-1767
Port yuzu-emu/yuzu#1734 and yuzu-emu/yuzu#1767: Minor changes to "kernel"
2018-11-24 00:04:42 -05:00
bunnei
dc16ba009e
Merge pull request #4444 from FearlessTobi/port-1684
Port yuzu-emu/yuzu#1684: "common/string_util: Minor cleanup"
2018-11-23 23:13:39 -05:00
Lioncash
86c36cb176 kernel/shared_memory: Make Map() and Unmap() take the target process by reference rather than as a pointer
Both member functions assume the passed in target process will not be
null. Instead of making this assumption implicit, we can change the
functions to be references and enforce this at the type-system level.
2018-11-23 17:00:12 +01:00
Lioncash
0f544af89a kernel/shared_memory: Add a const qualified member function overload for GetPointer()
Given this doesn't mutate instance state, we can provide a
const-qualified variant as well.
2018-11-23 16:38:18 +01:00
Lioncash
1cb9bea504 kernel/shared_memory: Make data members private
Rather than allow unfettered access to the class internals, we hide all
members by default and create and API that other code can operate
against.
2018-11-23 16:20:18 +01:00
Lioncash
662c3ff684 kernel/handle_table: Move private static functions into the cpp file
These don't depend on class state, and are effectively implementation
details, so they can go into the cpp file .
2018-11-23 15:58:12 +01:00
Lioncash
83f6e9ea72 kernel/handle_table: Default destructor in the cpp file
We don't need to potentially inline the teardown logic of all of the
handle instances.
2018-11-23 15:58:07 +01:00
BreadFish64
f4472a10e6 core: undef PAGE_SIZE and PAGE_MASK
these are defined a system header which causes complications when building for android
2018-11-20 14:24:19 -05:00
fearlessTobi
fc51a6fd08 Fix functions which used Common::ArrayToString 2018-11-20 15:05:54 +01:00
Weiyi Wang
a854b23d9b RPC: add missing include 2018-11-19 11:16:55 -05:00
Weiyi Wang
679dfd7cdf Memory: remove CopyBlock with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
185a83f06d Memory: remove ZeroBlock with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
4e99641a3b Memory: remove WriteBlock with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
8871f5a4ac Memory: remove ReadBlock with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
524364d95a ldr_ro: pass process reference to memory operation
Note that not all memory operation is fixed. Specifically, u8/u16/u32 Read/Write is still using the current page tabel
2018-11-19 11:16:55 -05:00
Weiyi Wang
d4ba87d90a Memory: remove GetMMIOHandler with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
7308b8d294 Memory: remove IsValidVirtualAddress with current process 2018-11-19 11:16:55 -05:00
Weiyi Wang
36cf104a02 Memory: replace GetPointerFromVMA with GetPointerForRasterizerCache
All usage of GetPointerFromVMA is to recover the pointer that is nulled by changing page type to RasterizerCachedMemory. Our rasterizer cache only works on linear heap and vram, so we can recover the pointer directly by address computation, instead of going through VMA table. Also removed a sanity check pointer!=nullptr in RasterizerMarkRegionCached(RasterizerCachedMemory=>Memory), as now the pointer is never null. The sanity check was added in f2a5a77 (#2797), which was originally necessary during VMA unmapping process, because the function is invloked by VMA after unmapping the page, which in turn invokes back to query the memory, forming a circular dependency. Now the dependency is resolved so the check is not necessary
2018-11-19 11:16:55 -05:00
Weiyi Wang
2b768da531
Merge pull request #4433 from wwylele/vmmanager-simple
VMManager: remove shared_ptr<vector> backing type
2018-11-19 11:13:22 -05:00
Weiyi Wang
a7d6bc4e84
Merge pull request #4441 from FearlessTobi/port-1688
Port yuzu-emu/yuzu#1688: "service: Mark MakeFunctionString with the [[maybe_unused]] attribute."
2018-11-19 11:10:51 -05:00
Weiyi Wang
803f783f07
Merge pull request #4427 from wwylele/query-memory-merge
SVC: QueryMemory merges similar VMA
2018-11-19 11:10:15 -05:00
Weiyi Wang
471b4cf44f
Merge pull request #4436 from wwylele/p2ptr-boundary
Memory: GetPhysicalPointer should accept right open bound address
2018-11-19 11:05:42 -05:00
Weiyi Wang
1bc253f1be
Merge pull request #4353 from zaksabeast/ips-patches
Add IPS patching
2018-11-18 13:39:41 -05:00
Sebastian Valle
b1fa9c0a7c
Merge pull request #4434 from wwylele/shared-memory-state
Kernel/SharedMemory: set and reset source memory state
2018-11-18 12:23:21 -05:00
B3N30
2f3142e192 Fix 16bit comparison operations 2018-11-18 14:37:11 +01:00
Lioncash
39fcc3a589 service: Mark MakeFunctionString with the [[maybe_unused]] attribute.
When yuzu is compiled in release mode this function is unused, however,
when compiled in debug mode, it's used within a LOG_TRACE statement.
This prevents erroneous compilation warnings about an unused function
(that isn't actually totally unused).
2018-11-17 16:41:10 +01:00
bunnei
7f727177bf
Merge pull request #4431 from wwylele/no-v2p
Memory: remove VirtualToPhysicalAddress
2018-11-16 23:28:33 -08:00
Ben
b90ff739a0 Add CheatEngine and support for Gateway cheats (#4406)
* Add CheatEngine; Add support for Gateway cheats; Add Cheat UI

* fix a potential crash on some systems

* fix substr with negative length

* Add Joker to the NonOp comp handling

* Fixup JokerOp

* minor fixup in patchop; add todo for nested loops

* Add comment for PadState member variable in HID

* fix: stol to stoul in parsing cheat file

* fix misplaced parsing of values; fix patchop code

* add missing break

* Make read_func and write_func a template parameter
2018-11-16 18:01:10 -07:00
Weiyi Wang
95bbe2302b Kernel/IPC: fix mapped buffer target address 2018-11-16 19:47:16 -05:00
Weiyi Wang
365eeb889f Memory: GetPhysicalPointer should accept right open bound address
Also removed IO region check in GetPhysicalPointer as it doesn't make sense to get a pointer to MMIO
2018-11-16 10:27:30 -05:00
Weiyi Wang
d90094e8a7 Service: release shared memory object when finalize
Since last commit SharedMemory only reset source memory set on dtor, service should always release the ref as soon as possible to make the reset happen
2018-11-16 00:24:13 -05:00
Weiyi Wang
cfa9a322c7 Kernel/SharedMemory: set and reset source memory state 2018-11-16 00:24:08 -05:00
Weiyi Wang
b6ab4e466b VMManager: remove all backing block related functions
The shared_ptr<vector> type backing memory is unused now, and is not expected to be used in the future
2018-11-16 00:16:13 -05:00
Weiyi Wang
7f9873d7ec VMManager: change MapMemoryBlockToBase to use raw backing memory
And let ServerSession.MappedBufferContext hold the mapped memory
2018-11-16 00:16:13 -05:00
Weiyi Wang
0b8d2ecabe IPC: store mapped buffer info in session context
So that it doesn't have to scan over the request buffer again on reply. This also allow us to store additional info like memory mapping
2018-11-16 00:16:13 -05:00
Weiyi Wang
560df843b1
Merge pull request #4405 from wwylele/svc-global
SVC: new wrapper template & pass system reference across the SVC barrier
2018-11-16 00:07:50 -05:00
Weiyi Wang
a51d7430d7
Merge pull request #4408 from wwylele/ro-map
ldr_ro: properly map CRS/CRO buffer
2018-11-16 00:07:33 -05:00
Zak Kurka
1ded48f5a3 Merge branch 'master' of github.com:citra-emu/citra into ips-patches 2018-11-15 07:11:18 -06:00
Zak Kurka
896577044d Remove ApplyIPS from the class and header 2018-11-15 07:11:06 -06:00
Weiyi Wang
9e8d149ca7 Memory: remove unused VirtualToPhysical 2018-11-13 11:56:05 -05:00
Weiyi Wang
1388a44c41 GSP: uses a dedicate VirtualToPhysical converter 2018-11-13 11:24:46 -05:00
Weiyi Wang
12daaeedf1 Memory: Use the fixed PAddr directly in RasterizerFlushVirtualRegion 2018-11-13 11:24:46 -05:00
Weiyi Wang
248106d972 Skyeye: unstub cp15 virtual to physical address 2018-11-13 11:24:46 -05:00
Weiyi Wang
b1f55c9cab
Merge pull request #4429 from wwylele/io-size
Memory: IO area is at most 4MB
2018-11-13 11:09:14 -05:00
Weiyi Wang
fe47243690
Merge pull request #4413 from wwylele/memory-global
Fix shared font addres; Remove global PhysicalToVirtualAddress
2018-11-13 00:14:24 -05:00
Weiyi Wang
194118011a Memory: IO area is at most 4MB 2018-11-12 15:12:12 -05:00
Weiyi Wang
c57ee36222 SVC: hide details in pimpl 2018-11-12 13:59:34 -05:00
Weiyi Wang
aec8b1e375 SVC: use context and generic templates 2018-11-12 13:59:34 -05:00
Weiyi Wang
28513c5177 ResultCode: use default copy assignment
Our definition of the copy assignment is equivalent to the default one, but prevents the type being trivially copyable
2018-11-12 13:59:34 -05:00
Weiyi Wang
d373a6430d SVC: move function_wrappers.h into kernel
It is only used by kernel/SVC
2018-11-12 13:59:34 -05:00
Weiyi Wang
29ade3e610 Process: check source/target overlap for Map/Unmap 2018-11-11 12:39:05 -05:00
Weiyi Wang
3db8915356 ldr_ro: properly map CRS/CRO buffer 2018-11-11 12:39:05 -05:00
Weiyi Wang
617b388354 Kernel/Process: implement prvileged Map/Unmap
This is used by svcControlProcessMemory and maps memory as Locked/AliasCode pair.

Also fixed a bug where map didn't apply specified permissions to the alias memory
2018-11-11 12:39:05 -05:00
Ben
f43524fff1
Merge pull request #4415 from wwylele/tls-state
Kernel: correct MemoryState for TLS
2018-11-11 17:53:18 +01:00
Weiyi Wang
5179915fb4 filesys/ncch: prevent buffer overflow on calculating SHA256 2018-11-10 22:58:32 -05:00
Weiyi Wang
d0edb81182 Memory: convert PAddr for N3DS FCRAM extension 2018-11-09 10:40:04 -05:00
Weiyi Wang
98ddea4ddd Kernel: correct MemoryState for TLS 2018-11-09 00:14:13 -05:00
Weiyi Wang
5325388e24 SVC: QueryMemory merges similar VMA 2018-11-08 20:42:21 -05:00
Weiyi Wang
2654a679b3 Memory: replace PhysicalToVirtualAddress with a more dedicated function
There is no external use of PhysicalToVirtualAddress any more, so it there is no need to have a generic function that handles all physical regions. Also, the previous APT change makes it possible that linear heap has some regions mapped to old and new VAddr regions at the same time, so we need to check both region and mark cached for the mapped one. RasterizerMarkRegionCached would skip the unmapped one in its loop
2018-11-08 00:19:57 -05:00
Weiyi Wang
8c65433ab5 Kernel, APT: SharedFont/SharedMemoryOnSharedDevice should always use old linear heap VAddr 2018-11-08 00:19:19 -05:00
Valentin Vanelslande
0f4a6e39c9
ldr_ro: change std::tie to structured binding 2018-11-07 13:38:52 -05:00
Weiyi Wang
1444d60109
Merge pull request #4400 from wwylele/core-timing-global
CoreTiming: wrap into class
2018-11-06 20:04:56 -05:00
Weiyi Wang
2067946f59
Kernel: reimplement memory management on physical FCRAM (#4392)
* Kernel: reimplement memory management on physical FCRAM

* Kernel/Process: Unmap does not care the source memory permission

What game usually does is after mapping the memory, they reprotect the source memory as no permission to avoid modification there

* Kernel/SharedMemory: zero initialize new-allocated memory

* Process/Thread: zero new TLS entry

* Kernel: fix a bug where code segments memory usage are accumulated twice

It is added to both misc and heap (done inside HeapAlloc), which results a doubled number reported by svcGetProcessInfo. While we are on it, we just merge the three number misc, heap and linear heap usage together, as there is no where they are distinguished.

Question: is TLS page also added to this number?

* Kernel/SharedMemory: add more object info on mapping error

* Process: lower log level; SharedMemory: store phys offset

* VMManager: add helper function to retrieve backing block list for a range
2018-11-06 15:00:47 -05:00
Weiyi Wang
9458e4d8ec CoreTiming: wrap into class 2018-11-04 10:26:38 -05:00
Weiyi Wang
2d9dfe5bce Kernel: thread manager still has to be destructed first 2018-11-04 09:29:28 -05:00
Weiyi Wang
57e1f47a52 Kernel: destruct thread/timer managers after processes (#4399)
Processes can keep some Thread/Timer object alive while the manager is already destructed, resulting use-after-free in Thread::Stop and Timer::dtor. To resolve this, the manager objects should be destructed after all related object destructed.
Fixes a bug where quiting citra causes crash while the game is using a Timer.
2018-11-04 10:24:37 +01:00
Weiyi Wang
fc84091d88 Service, Kernel: move named port list to kernel 2018-11-01 12:56:40 -04:00
Weiyi Wang
ece96807c4 Kernel: move memory_regions into Kernel instance 2018-11-01 12:56:40 -04:00
Weiyi Wang
263290d48c HLE: move SharedPage into Kernel
similar to config_mem, kernel is responsible for setting up this
2018-11-01 12:56:40 -04:00
Weiyi Wang
773ec47629 Kernel: make config_mem and MapSharedPages members of KernelSystem 2018-11-01 12:56:40 -04:00
Weiyi Wang
95790218f2 HLE: move config_mem to kernel
ConfigMem is initialized in kernel and only used by kernel. It is also likely how it works on real 3DS
2018-11-01 11:21:34 -04:00
Weiyi Wang
a753b9c6cc
Merge pull request #4228 from NarcolepticK/lle-mapped-buffer
LLE Mapped Buffer: Add unmapping of write buffer, zero-size, and multiple page handling
2018-10-30 19:18:11 -04:00
Weiyi Wang
445538c2cf
Merge pull request #4371 from wwylele/kernel-global-3
Kernel: eliminate global state for threads and timers
2018-10-30 00:36:10 -04:00
Weiyi Wang
2183d0d6be core: use internal kernel pointer directly 2018-10-30 00:35:37 -04:00
Weiyi Wang
bd4beb6558
Merge pull request #4386 from wwylele/codeset-class
Kernel/CodeSet: change struct to class
2018-10-30 00:30:50 -04:00
NarcolepticK
c97146226a LLE Mapped Buffer: Addressed comments. 2018-10-29 18:35:34 -04:00
Weiyi Wang
f63098ccdf Kernel/CodeSet: change struct to class
Fix a warning where class definition and forward declaration mismatch. CodeSet is a kernel object and have ctor/dtor/private members like others, so in convention it should be a class
2018-10-28 10:35:40 -04:00
Weiyi Wang
67888f92e5
Merge pull request #4348 from B3n30/native_firm_keys
Load keys from save mode native firm
2018-10-28 10:24:29 -04:00
fearlessTobi
6e6c437a52 applets: stub mii selector to always return a standard mii
To obtain the data, the LLEd mii selector of system version 11.8.0 was used.
In AppletManager::GlanceParameter, the following code was added to write the returned buffer data to a file:

    if (parameter.buffer.size() == 132) {
        std::u16string name(10, '\0');
        std::memcpy(name.data(), parameter.buffer.data() + 0x26, 10 * sizeof(u16));
        name = std::u16string(name.data());
        FileUtil::IOFile file{fmt::format("{}.mii", Common::UTF16ToUTF8(name)), "wb"};
        file.WriteBytes(parameter.buffer.data(), parameter.buffer.size());
    }

Then "xxd -i" was used on the file to convert it to a hex array.
2018-10-27 12:23:24 +02:00
fearlessTobi
b7117bf050 compatdb: Use a seperate endpoint for testcase submission 2018-10-27 12:20:03 +02:00
Weiyi Wang
5b7d21c3cd FileSys/DelayGenerator: add missing #include and virtual dtor (#4363)
* FileSys/DelayGenerator: add missing #include and virtual dtor

Added the needed include so that it won't cause error if another file includes this without including the depended files

Deleting a virtual class via base type without virtual dtor is UB, which happens inFileBackend.

* FileSys/DelayGenerator: move function definition into cpp file/n/nTo avoid generating vtable in all units that includes the header file

* filesys/delay_generator: rearrange #include
2018-10-27 12:46:03 +08:00
Weiyi Wang
59cb0ec570
Merge pull request #4359 from FearlessTobi/port-webstuff
web_service: Port yuzu-emu/yuzu#1465 and Port yuzu-emu/yuzu#1473 (Many self-contained changes)
2018-10-26 22:34:51 -04:00
Weiyi Wang
e5b93741d3 kernel/timer: add TimerManager for timer system states 2018-10-26 16:07:45 -04:00
Weiyi Wang
20ae37ba4f kernel/Thread: move thread list into the manager 2018-10-26 16:07:45 -04:00
Weiyi Wang
7fc61920cc kernel/Thread: move thread wake up table and callback handle into the manager 2018-10-26 16:07:45 -04:00
Weiyi Wang
0478bc3dee Kernel/Thread: move thread queue, current thread, and scheduling related function into the manager
As we touched it, remove IPC::GetCommandBuffer
2018-10-26 16:07:11 -04:00
Weiyi Wang
876729ab52 kernel/thread: move next_thread_id into manager 2018-10-26 16:07:11 -04:00
Weiyi Wang
34f1fe088c kernel/thread: add ThreadManager 2018-10-26 16:07:11 -04:00
Weiyi Wang
f3ee5feb02
Merge pull request #4358 from wwylele/kernel-global-2
kernel: Eliminate global state in process and handle_table
2018-10-26 15:51:36 -04:00
Weiyi Wang
8ad6cbfde2 kernel/thread: change owner_process parameter to reference
To enforce a valid process object
2018-10-26 09:37:46 -04:00
Weiyi Wang
fa0e82b812
SeedDB: replace seek(tell, set) with seek(cur) (#4344) 2018-10-25 21:39:26 -04:00
Weiyi Wang
e5c5d1ecce Kernel: change owner_process in Thread/SharedMemory to raw pointer
Otherwise circular ownership would form in Process->handle_table->thread->owner_process
2018-10-25 19:54:06 -04:00
Tobias
dec3fb2dcf nfc: Add Amiibo support (REOPENED) (#4337)
* Initial implementation

* Various fixes and new features

* Address some review comments

* Fixes

* Address more comments

* Use g_hle_lock

* Add more state checking, remove unneeded include

* Minor changes
2018-10-24 21:01:38 -04:00
Weiyi Wang
8d32843d68 thread/kernel: remove unused callback_id
we use the thread id for the same purpose now
2018-10-23 10:06:32 -04:00
Lioncash
6fb6737642 core/CMakeLists: Make all web_service-related libraries private
Now that all external dependencies are hidden, we can remove
json-headers from the publically linked libraries, as the use of this
library is now completely hidden from external users of the web_service
library. We can also make the web_services library private as well,
considering it's not a requirement. If a library needs to link in
web_service, it should be done explicitly -- not via indirect linking.
2018-10-23 15:43:40 +02:00
Lioncash
7142d3cf78 telemetry_session: Remove doxygen comment for a non-existent parameter
There's no "func" parameter, so this can just be removed.
2018-10-23 15:30:07 +02:00
Lioncash
61627c2042 telemetry_session: Add missing includes
Prevents potential compilation issues in the future by including missing
headers for certain functions and types.
2018-10-23 15:28:50 +02:00
Lioncash
d5bb2a21aa telemetry_session: Remove unimplemented FinalizeAsyncJob prototype
This isn't implemented anywhere, so it can just be removed.
2018-10-23 15:27:05 +02:00
Weiyi Wang
eb285c33fd kernel: make handle table per-process 2018-10-22 21:32:34 -04:00
Weiyi Wang
fda2a5cf54 kernel/thread: use std::unordered_map for callback record 2018-10-22 21:32:34 -04:00
Weiyi Wang
5b45a3e1b5 Kernel/Timer: use unordered_map for callback recording 2018-10-22 21:32:34 -04:00
Weiyi Wang
8fb3d8ff38 kernel/process: move current process to kernel instance
Two functional change:
QueryProcessMemory uses the process passed from handle instead current_process
Thread::Stop() uses TLS from owner_process instead of current_process
2018-10-22 21:32:34 -04:00
Weiyi Wang
d9342622b0 kennel/process: move process list to kernel instance 2018-10-22 21:32:34 -04:00
Weiyi Wang
4238754d8c kernel/process: move next_process_id to kernel instance 2018-10-22 09:30:48 -04:00
Lioncash
930abb4b5e svc: Correct vma_map boundary check within QueryProcessMemory
This should be using the process instance retrieved within the function,
and not g_current_process, otherwise this is potentially comparing
iterators from unrelated vma_map instances (which is undefined
behavior).
2018-10-21 22:00:12 -04:00
Weiyi Wang
6f1759c5bd
Merge pull request #4341 from wwylele/kernel-global
Kernel: make a kernel instance and remove object ID counter from global state
2018-10-21 18:53:36 -04:00
Zak Kurka
92f8b71137 Make ApplyIPS static and private 2018-10-21 10:42:23 -05:00
Zak Kurka
05c1816504 Stay in bounds 2018-10-21 07:48:54 -05:00
Zak Kurka
1c62bc06cf Add rle record support 2018-10-21 07:48:29 -05:00
Zak Kurka
d8284dfacc Log invalid IPS attempt 2018-10-21 07:47:27 -05:00
Zak Kurka
d0b54e9939 Check for EOF 2018-10-20 23:25:16 -05:00
Zak Kurka
2778801dc5 Updated based on review 2018-10-20 19:45:16 -05:00
Zak Kurka
2a5b56bb1d Be more intentional with check 2018-10-20 18:17:54 -05:00
Zak Kurka
261dc33507 Merge branch 'master' of github.com:citra-emu/citra into ips-patches 2018-10-20 18:11:38 -05:00
Zak Kurka
bf50bb06f1 Minor style changes and use memcpy 2018-10-20 18:10:32 -05:00
Weiyi Wang
11729eafe1
Merge pull request #4315 from FearlessTobi/port-1332
WebService: Backport review comments from yuzu-emu/yuzu#1332
2018-10-20 18:05:06 -04:00
Zak Kurka
2496ecbaf6 Added IPS patching 2018-10-20 13:09:05 -05:00
Weiyi Wang
65ec8de31e web_service: hide dependencies to private 2018-10-20 10:47:17 -04:00
fearlessTobi
9901b289b6 Review comments -part 4 2018-10-20 10:35:55 -04:00
fearlessTobi
b0aed19823 Address a bunch of review comments 2018-10-20 10:35:55 -04:00
Weiyi Wang
18caa787d2
Merge pull request #4197 from B3n30/spsc_queue_wait
threadsafe_queue: Add PopWait and use it where possible
2018-10-19 19:36:37 -04:00
Weiyi Wang
751ebe55e9 Kernel: pass ref down to Object and wrap ID counter into kernel state 2018-10-18 21:41:36 -04:00
Weiyi Wang
87426b29ff kernel: pass ref to shared memory 2018-10-18 21:41:36 -04:00
Weiyi Wang
2a411bb501 Kernel: wrap resource limit state into kernel state; pass ref to resource limit 2018-10-18 21:41:36 -04:00
Weiyi Wang
13c26b4371 Kernel: pass ref to session pair 2018-10-18 21:41:36 -04:00
Weiyi Wang
1213a298df Kernel: pass ref to port 2018-10-18 21:41:36 -04:00
Weiyi Wang
c141657d83 Kernel: pass ref to timer 2018-10-18 21:41:36 -04:00
Weiyi Wang
247249d5d3 Kernel: pass ref to sempahore 2018-10-18 21:41:36 -04:00
Weiyi Wang
181646679c ServiceManager: pass down core reference 2018-10-18 21:41:36 -04:00
Weiyi Wang
d940293d32 Kernel: pass ref to thread 2018-10-18 21:41:36 -04:00
Weiyi Wang
9565091fc2 kernel: pass ref in Process 2018-10-18 21:41:36 -04:00
Weiyi Wang
213b259cf1 kernel: pass ref in CodeSet 2018-10-18 21:41:36 -04:00
Weiyi Wang
7449ba85a6 Kernel: pass ref in Mutex 2018-10-18 21:41:36 -04:00
Weiyi Wang
eec11a94cb Kernel: pass Kernel ref in Event 2018-10-18 21:41:36 -04:00
Weiyi Wang
734be98966 Kernel: pass Kernel reference into AddressArbiter 2018-10-18 21:41:00 -04:00
Weiyi Wang
f446fd1fe5 Kernel: add KernelSystem class 2018-10-18 21:41:00 -04:00
Weiyi Wang
1de63f9b16
Merge pull request #4328 from B3n30/remove_current_module
remove GetCurrentModule() functions in HLE Services
2018-10-18 21:39:24 -04:00
Weiyi Wang
ad232efbf0 apply fixes 2018-10-17 18:35:16 +02:00
B3n30
be3bd18c42 Load keys from new3DS native firm 2018-10-17 17:44:54 +02:00
B3n30
15c9db0883 Load keys from the o3DS save mode native firm 2018-10-17 17:44:52 +02:00
B3n30
1849e8b09c HW::AES: add generator_constant 2018-10-17 16:07:11 +02:00
Ben
f48157c6ea
Load AES keys stored in boot9.bin (#4335)
* Load AES keys stored in boot9.bin
2018-10-17 10:13:55 +02:00
Ben
b01b94d843 FileSys::Ticket::Load: Return error if signature type does not match (#4339)
* FileSys::Ticket::Load: Return error if signature type does not match

* fixup! FileSys::Ticket::Load: Return error if signature type does not match
2018-10-15 11:26:35 -04:00
Pengfei Zhu
0df32275a7
Merge pull request #4282 from zhaowenlan1779/frame-advance
core, citra_qt: add frame advancing to framelimiter
2018-10-15 21:25:41 +08:00
B3n30
eb3af0f16a Add GetModule() helper functions, for HID, CAM, and CFG 2018-10-12 11:50:50 +02:00
B3n30
1b1de23a98 Fixup: Remove unneeded GetUsername 2018-10-11 20:05:45 +02:00
B3n30
9d53136f20 remove GetCurrentModule() functions in HLE Services 2018-10-11 19:23:14 +02:00
Weiyi Wang
0962ab8da9
Merge pull request #4305 from wwylele/fs-global
FS/archive: wrap states into ArchiveManager class
2018-10-11 13:04:02 -04:00
Weiyi Wang
9adc407112
Merge pull request #4304 from B3n30/std_optional
Replace boost::optional with std::optional where possible
2018-10-11 12:40:00 -04:00
B3n30
e267377111 More fixes 2018-10-09 10:26:44 +02:00
B3n30
ad8b9c0429 Adressed review comments 2018-10-08 23:28:54 +02:00
Sebastian Valle
f405134913
Merge pull request #4306 from Subv/apt_jump
Services/APT: Better implementation of PrepareToDoApplicationJump and DoApplicationJump.
2018-10-08 15:44:38 -05:00
Ben
d99b1f581f NWM_UDS: Signal bind_node_event in Unbind (#4321) 2018-10-08 15:44:14 -05:00
Weiyi Wang
756a3d404a
Merge pull request #4283 from valentinvanelslande/seed-db
Implement SeedDB & Seed Crypto
2018-10-08 14:18:42 -04:00
Weiyi Wang
0b7b9a51d6
Merge pull request #4299 from B3n30/uds
NWM_UDS: Fix some issues, cleanups, better PacketHandling
2018-10-07 13:56:59 -04:00
Subv
8ec2a9817c Services/APT: Better implementation of PrepareToDoApplicationJump and DoApplicationJump.
The real console can't launch an Application directly from within another Application so it has to go through the Home Menu. We do not have such limitation and can directly launch the requested title.
2018-10-06 17:08:24 -05:00
Valentin Vanelslande
7b6c5cd988
fix reply header 2018-10-06 16:59:57 -05:00
Weiyi Wang
389d3d630e fs/archive: wrap states into archive manager 2018-10-06 01:23:03 -04:00
Weiyi Wang
7678327bf2 fs/archive: move file and directory classes to their own files 2018-10-06 01:23:03 -04:00
Valentin Vanelslande
dcd6e7f99f movie: fix some checks
Fixes invalid movie error
2018-10-05 17:20:14 -05:00
Weiyi Wang
b163502744
Core: pass down Core::System reference to all services (#4272)
* Core: pass down Core::System reference to all services

This has to be done at once due to unified interface used by HLE/LLE switcher

* apt: eliminate Core::System::GetInstance

* gpu_gsp: eliminate Core::System::GetInstance in service

* hid: eliminate Core::System::GetInstance

* nwm: eliminate Core::System::GetInstance

* err_f: eliminate Core::System::GetInstance
2018-10-05 10:59:43 -04:00
B3n30
2306af3600 Handle cases when std::optional does not contain a value 2018-10-05 16:51:33 +02:00
Pengfei Zhu
2a90426cb8
Merge pull request #4267 from zhaowenlan1779/movie
movie: Add clock init time to CTM header
2018-10-05 08:20:33 -05:00
B3n30
d37a2270d6 Replace boost::optional with std::optional where possible 2018-10-05 13:51:09 +02:00
B3n30
7efe60ed23 Use SPSCQueue::PopWait in Scripting 2018-10-05 11:25:23 +02:00
Pengfei Zhu
87e16c80ac
Merge pull request #4229 from zhaowenlan1779/open-folder
citra_qt, core: game list "Open XXX Location" improvements
2018-10-05 00:46:43 -05:00
Weiyi Wang
eb494c574d
Merge pull request #4244 from wwylele/swap-enum
common/swap: add swap template for enum
2018-10-04 14:51:49 -04:00
B3n30
458346d1e8 Adressed feedback 2018-10-04 12:34:51 +02:00
B3n30
38f136048e Cleanup NWM_UDS::SendTo 2018-10-04 00:00:49 +02:00
Weiyi Wang
ea53b0f795
Merge pull request #4298 from Subv/am_titles
Services/AM: Implemented BeginImportProgramTemporarily, EndImportProgramWithoutCommit and CommitImportPrograms.
2018-10-03 17:41:40 -04:00
B3n30
7e7f17c78d Add filter to PacketHandling; Fix some issues with Disconnect 2018-10-03 23:07:31 +02:00
Weiyi Wang
cfa52e2b7b
Merge pull request #4296 from B3n30/service_getter
Give frontend access to the hle service interfaces
2018-10-03 15:58:27 -04:00
Subv
0f6f7cfd95 Services/AM: Implemented BeginImportProgramTemporarily, EndImportProgramWithoutCommit and CommitImportPrograms.
These functions are pretty much identical to BeginImportProgram and EndImportProgram.

We don't need to do anything special in EndImportProgramWithoutCommit and CommitImportPrograms because we don't need to implement the two-phase title installation that the 3DS uses to prevent corruption of the title.db.
2018-10-03 14:48:39 -05:00
B3n30
544eb25c99 fixup! Give frontend access to the hle service interfaces 2018-10-03 20:08:01 +02:00
B3n30
d3694a930e Give frontend access to the hle service interfaces 2018-10-03 19:44:23 +02:00
Sebastian Valle
3790ccc7b2
Merge pull request #4287 from Subv/am_subfile
Services/AM: Support using FS subfiles with the CIA-related service functions.
2018-10-03 10:13:46 -05:00
Subv
5165b63512 Services/AM: Support using FS subfiles with the CIA-related service functions.
FS subfiles are created with File::OpenSubFile, they have a start offset that must be added to all read/write operations.

The implementation in this commit is done using a new FileBackend that wraps the FS::File along with the start offset.
2018-10-03 09:57:05 -05:00
bunnei
2d116607fe
Merge pull request #4288 from Subv/am_system_mutex
Services/AM: Implement the GetSystemUpdaterMutex function.
2018-10-02 11:14:04 -04:00
Valentin Vanelslande
b067b5aa5a Implement SeedDB & Seed Crypto 2018-10-02 10:12:40 -05:00
Subv
7aa97198a3 Services/AM: Implement the GetSystemUpdaterMutex function.
This function just returns a Mutex.
2018-10-02 09:07:00 -05:00
NarcolepticK
32aecd42a2 LLE Mapped Buffer: Corrected behavior 2018-10-01 21:07:25 -04:00
zhupengfei
8cf1132b2e
ncch_container: choose the first id as extdata id when extended save data access is used 2018-10-02 08:15:10 +08:00
zhupengfei
cb775eb1ba
core, citra_qt: add frame advancing to framelimiter
Frame advancing is a commonly used TAS feature which basically means running the game frame by frame. TASers use this feature to press exact buttons at the exact frames. This commit added frame advancing to the framelimiter and two actions to the Movie menu. The default hotkey is `\` for advancing frames, and `Ctrl+A` for toggling frame advancing. The `Advance Frame` hotkey would automatically enable frame advancing if not already enabled.
2018-10-02 07:28:58 +08:00
Weiyi Wang
fceec34945
Merge pull request #4278 from wwylele/cfg-ptm-direct-fs
cfg, ptm: access FS via backend directly
2018-10-01 18:32:43 -04:00
Weiyi Wang
0e77cd385a
Merge pull request #4277 from wwylele/cecd-direct-fs
cecd: access FS via backend directly
2018-10-01 18:26:51 -04:00
Weiyi Wang
fb720c00b7
Merge pull request #4273 from wwylele/apt-direct-fs
APT: access FS via backend directly
2018-10-01 14:24:06 -04:00
Weiyi Wang
5fb3137bdc
Merge pull request #4181 from wwylele/cia-crypto
Add encrypted CIA support
2018-10-01 14:23:35 -04:00
NarcolepticK
51d53a6281 LLE Mapped Buffer: addressed comments 2018-09-30 23:23:21 -04:00
NarcolepticK
19291ba465 LLE Mapped Buffer: Add unmapping, zero-size, and multiple page handling 2018-09-30 22:34:13 -04:00
bunnei
9f972b9f5c
Merge pull request #4276 from MerryMage/jit_breakpoints
arm_dynarmic: Pass breakpoints to gdbstub
2018-09-30 21:42:00 -04:00
bunnei
27203c0d47
Merge pull request #4274 from wwylele/http-direct-fs
http_c: access FS via backend directly
2018-09-30 21:37:07 -04:00
zhupengfei
bbf391abb9
citra_qt, core: game list "Open XXX Location" improvements 2018-10-01 08:42:22 +08:00
MerryMage
b4d9d9661a arm_dynarmic: Pass breakpoints to gdbstub
Allow gdbstub to handle execution breakpoints
2018-09-30 19:40:49 +01:00
zhupengfei
9d142f981d
movie: fix default value in StartPlayback 2018-09-30 14:26:38 +08:00
Weiyi Wang
4a30a502a0
Merge pull request #4211 from wwylele/web-cleanup
web_service: stop using std::future + callback style async
2018-09-29 23:02:27 -04:00
Weiyi Wang
edc6e419b0
Merge pull request #4232 from wwylele/multi-region
loader, cfg: choose region based on language if multiple regions available
2018-09-29 23:01:36 -04:00
Weiyi Wang
f5a3ec18c2
Merge pull request #4072 from B3n30/httpc3
Service::HTTP_C: Implement Client Cert opening and closing
2018-09-29 22:53:49 -04:00
Lioncash
d64094a0d2 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-29 23:14:10 +02:00
Weiyi Wang
bcb5d438a9 cfg: access FS via backend directly 2018-09-28 17:32:05 -04:00
Weiyi Wang
2757eff122 ptm: access FS via backend directly 2018-09-28 17:21:45 -04:00
Weiyi Wang
b03332d09b fs: remove ArchiveFactory_ExtSaveData::Initialize
This is unnecessary as any open archive would create the full path for themselves
2018-09-28 17:08:39 -04:00
Weiyi Wang
bb252ecab3 cecd: access FS via backend directly 2018-09-28 17:03:24 -04:00
Weiyi Wang
0bc98cdca4 http_c: access FS via backend directly 2018-09-28 14:25:19 -04:00
Weiyi Wang
94b273ac20 APT: access FS via backend directly 2018-09-28 14:08:30 -04:00
zhupengfei
ae5c658997
movie: Add clock init time to CTM header
This adds a clock init time field to the CTM header. The clock settings would be overridden when playing a movie. And when recording a movie, if the clock is set to System Time, it would be set to fixed init time at the current moment as well. In this way this keeps consistency with the RNG even if the user does just no setting.
2018-09-27 22:18:10 +08:00
Weiyi Wang
7c97e8df62
Merge pull request #4256 from wwylele/country-list
archive_ncch: add open source country list archive
2018-09-27 10:09:37 -04:00
Weiyi Wang
892ca2a94a
Merge pull request #4209 from zhaowenlan1779/play-coin
service/ptm, citra_qt: Add Play Coins setting
2018-09-27 10:09:02 -04:00
Weiyi Wang
08bfba5d8e
Merge pull request #4005 from NarcolepticK/stub-cecd
service/cecd: Implement some functions
2018-09-27 10:08:14 -04:00
Weiyi Wang
f05740a5fd
Merge pull request #4224 from FearlessTobi/port-1310
Port #734 and #1310 from yuzu: Changes to Thread-related enums
2018-09-25 23:07:43 -04:00
EverOddish
15d44f0450 Review changes for enable/disable scripting 2018-09-23 20:13:28 -04:00
EverOddish
fce7afb8dc Added CMake option to enable/disable scripting support 2018-09-23 19:16:18 -04:00
Weiyi Wang
9668852c0d Service/AM: handle encrypted CIA 2018-09-23 13:05:55 -04:00
Weiyi Wang
df77491938 FileSys/cia: add ticket parsing 2018-09-23 13:05:55 -04:00
Weiyi Wang
b70e2bce58 HW/AES: add common key loading and selecting 2018-09-23 13:00:07 -04:00
Pengfei Zhu
6b538a49ac
Merge pull request #4246 from FearlessTobi/port-1346
Port yuzu-emu/yuzu#1346: "svc_wrap: Convert the PARAM macro into a function"
2018-09-23 13:10:11 +08:00
Weiyi Wang
20e42592ff
Merge pull request #4249 from FearlessTobi/port-760
Port yuzu-emu/yuzu#760: "file_util: Use an enum class for GetUserPath()"
2018-09-22 23:42:59 -04:00
Weiyi Wang
1123580738 archive_ncch: add open source country list archive 2018-09-22 16:11:57 -04:00
Lioncash
d2cd4a464d 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-22 21:20:22 +02:00
Lioncash
b3221c3180 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-09-22 21:18:56 +02:00
Lioncash
46da908a00 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-22 16:14:10 +02:00
Weiyi Wang
41d53cee1f nwm/uds_data: specify endianness for enum 2018-09-22 00:28:44 -04:00
Weiyi Wang
e0336403ee nwm/uds_connection: specify endiannes for enum 2018-09-22 00:28:44 -04:00
Weiyi Wang
16b36b6025 service/cro: specify endianness for enum 2018-09-22 00:28:44 -04:00
Weiyi Wang
18e94897c4 hle/swkbd: specify endianness for enum and other members 2018-09-22 00:28:44 -04:00
Weiyi Wang
39feb0610b filesys/archive_selfncch: specify endiannes for enum 2018-09-22 00:28:44 -04:00
Weiyi Wang
9564b4b292 filesys/archive_ncch: specify endianness for enum
NCCHArchivePath::media_type is unchanged because its underlying type is unclear
2018-09-22 00:28:44 -04:00
Weiyi Wang
d1a576eb14
Merge pull request #4113 from namkazt/soc_recv_from
fix soc service - RecvFrom - SendTo
2018-09-21 12:33:23 -04:00
Weiyi Wang
e9ed1c98da
Merge pull request #4114 from namkazt/soc_recv_from_other
Implement soc - RecvFromOther
2018-09-21 12:33:12 -04:00
fearlessTobi
3ee9f669c1 Address review comments 2018-09-21 16:39:10 +02:00
James Rowe
687e3e74ca
Merge pull request #3959 from zhaowenlan1779/semi-reset
service/apt: Implement soft reset & CloseApplication
2018-09-19 21:02:59 -06:00
Weiyi Wang
697bc1a9c7 loader, cfg: choose region based on language if multiple regions available 2018-09-18 10:26:31 -04:00
Lioncash
5ddd382a9b kernel/svc: Do nothing if svcOutputDebugString's length is <= 0
While likely very uncommon, this sanitizes the input and does nothing in
the event of the length being equal to or less than zero, avoiding
constructing a std::string when there's no need to. It also avoids an
out-of-memory scenario, as a negative value would wrap around to its
equivalent unsigned representation in std::string's constructor.

e.g. If someone was silly and a length of -1 was specified, this would
make a string with a length of 0xFFFFFFFFFFFFFFFF on a 64-bit platform,
which will obviously eventually fail due to the allocation being way too
large.
2018-09-17 19:52:53 -04:00
Lioncash
ca3d9d659e 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-15 17:16:20 +02:00
Lioncash
5dfa7b74b5 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-09-15 17:02:44 +02:00
zhupengfei
458f8d103b
service/ptm: Add Get/SetPlayCoins functions 2018-09-14 22:28:38 +08:00
Weiyi Wang
77c1f647cb web_service: stop using std::future + callback style async 2018-09-13 16:14:34 -04:00
Valentin Vanelslande
dce26367a2
ipc: fix typo 2018-09-13 11:51:08 -05:00
Weiyi Wang
0a4d338ffa
Merge pull request #4138 from FearlessTobi/change-web-links
web_service: Unify links for web service endpoints
2018-09-12 16:31:59 -04:00
fearlessTobi
b82bf1ccdb Change variable name to web_api_url 2018-09-12 19:07:06 +02:00
EverOddish
04dd91be82 Initial support for scripting (#4016)
* Add ZeroMQ external submodule

* ZeroMQ libzmq building on macOS

* Added RPC namespace, settings and logging

* Added request queue handling and new classes

* Add C++ interface to ZeroMQ

* Added start of ZeroMQ RPC Server implementation.

* Request construction and callback request handling

* Read and write memory implementation

* Add ID to request format and send reply

* Add RPC setting to macOS UI

* Fixed initialization order bug and added exception handling

* Working read-write through Python

* Update CMakeLists for libzmq to resolve target name conflict on Windows

* Platform-specific CMake definitions for Windows/non-Windows

* Add comments

* Revert "Add RPC setting to macOS UI"

* Always run RPC server instead of configurable

* Add Python scripting example. Updated .gitignore

* Rename member variables to remove trailing underscore

* Finally got libzmq external project building on macOS

* Add missing dependency during libzmq build

* Adding more missing dependencies [skip ci]

* Only build what is required from libzmq

* Extra length checks on client input

* Call InvalidateCacheRange after memory write

* Revert MinGW change. Fix clang-format. Improve error handling in request/reply. Allow any length of data read/write in Python.

* Re-organized RPC static global state into a proper class. [skip ci]

* Make sure libzmq always builds in Release mode

* Renamed Request to Packet since Request and Reply are the same thing

* Moved request fulfillment out of Packet and into RPCServer

* Change request thread from sleep to condition variable

* Remove non-blocking polling from ZMQ server code. Receive now blocks and terminates properly without sleeping. This change significantly improves script speed.

* Move scripting files to dist/ instead of src/

* C++ code review changes for jroweboy [skip ci]

* Python code review changes for jroweboy [skip ci]

* Add docstrings and tests to citra.py [skip ci]

* Add host OS check for libzmq build

* Revert "Add host OS check for libzmq build"

* Fixed a hang when emulation is stopped and restarted due to improper destruction order of ZMQ objects [skip ci]

* Add scripting directory to archive packaging [skip ci]

* Specify C/CXX compiler variables on MinGW build

* Only specify compiler on Linux mingw

* Use gcc and g++ on Windows mingw

* Specify generator for mingw

* Don't specify toolchain on windows mingw

* Changed citra.py to support Python 3 instead of Python 2

* Fix bug where RPC wouldn't restart after Stop/Start emulation

* Added copyright to headers and reorganized includes and forward declarations
2018-09-11 22:00:12 +02:00
NarcolepticK
0d15b99bfc service/cecd: Corrected cecd:s function table 2018-09-11 14:39:48 -04:00
NarcolepticK
105bcc95c0 service/cecd: Add hmac handling 2018-09-10 19:53:23 -04:00
NarcolepticK
192a0f3b92 service/cecd: Update handling of /outbox/boxinfo and /outbox/obindex 2018-09-10 04:21:24 -04:00