Commit Graph

3585 Commits

Author SHA1 Message Date
072a9796f5 Restore memory perms on svcUnmapMemory/UnloadNro
Prior to PR, Yuzu did not restore memory to RW-
on unmap of mirrored memory or unloading of NRO.

(In fact, in the NRO case, the memory was unmapped
instead of reprotected to --- on Load, so it was
actually lost entirely...)

This PR addresses that, and restores memory to RW-
as it should.

This fixes a crash in Super Smash Bros when creating
a World of Light save for the first time, and possibly
other games/circumstances.
2019-07-11 01:38:28 -07:00
93eaea109d Merge pull request #2700 from ogniK5377/GetFriendList
IFriendService::GetFriendList
2019-07-10 16:29:48 -04:00
463af08bed Merge pull request #2611 from DarkLordZach/pm-info-cmd
pm: Implement various pm commands for finding process and title IDs
2019-07-10 16:28:29 -04:00
d707a12b9a Merge pull request #2650 from DarkLordZach/mii-iface-ver
mii: Implement IDatabaseService SetInterfaceVersion
2019-07-10 16:26:23 -04:00
0330f5d6f8 IFriendService::GetFriendList
We don't have any friends implemented in Yuzu yet so it doesn't make sense to return any friends. For now we'll be returning 0 friends however the information provided will allow a proper implementation of this cmd when needed.
2019-07-09 18:20:58 +10:00
6c3cceafdc Merge pull request #2657 from ogniK5377/npad-assignments
hid:StartLrAssignmentMode, hid:StopLrAssignmentMode, hid:SwapNpadAssignment
2019-07-08 09:35:19 -04:00
5234e08a0d addressed issues 2019-07-08 14:51:40 +10:00
7b28f954c9 Merge pull request #2651 from DarkLordZach/apm-boost-mode-1
apm: Initial implementation of performance config and boost mode
2019-07-07 21:40:30 -04:00
8f5aae3074 Merge pull request #2642 from DarkLordZach/fsp-log-2
fsp-srv: Implement Access Logging Functionality
2019-07-07 21:39:40 -04:00
a4ef86a021 mii: Implement IDatabaseService SetInterfaceVersion
Appears to set a member variable used to affect the API that games access, and the method used to store data.
2019-07-06 21:39:12 -04:00
fb9124b6cd Merge pull request #2677 from lioncash/assert
kernel/vm_manager: Handle stack/TLS IO region placement a little better
2019-07-06 21:25:27 -04:00
36259c01c2 clang-format fixes 2019-07-06 13:52:05 -07:00
7fb7d3c218 am: Implement GetAccumulatedSuspendedTickValue 2019-07-06 12:13:34 -07:00
2a9e388290 kernel/vm_manager: Rename 'new map' to 'stack'
Provides a more accurate name for the memory region and also
disambiguates between the map and new map regions of memory, making it
easier to understand.
2019-07-06 02:24:30 -04:00
313cc36fec kernel/vm_manager: Handle stack/TLS IO region placement better
Handles the placement of the stack a little nicer compared to the
previous code, which was off in a few ways. e.g.

The stack (new map) region, shouldn't be the width of the entire address
space if the size of the region calculation ends up being zero. It
should be placed at the same location as the TLS IO region and also have
the same size.

In the event the TLS IO region contains a size of zero, we should also
be doing the same thing. This fixes our memory layout a little bit and
also resolves some cases where assertions can trigger due to the memory
layout being incorrect.
2019-07-05 21:57:31 -04:00
54a02d14fd Merge pull request #2555 from lioncash/tls
kernel/process: Decouple TLS handling from threads
2019-07-04 15:32:32 -04:00
3c7eed16dc Merge pull request #2658 from ogniK5377/QueryAudioDeviceOutputEvent
IAudioDevice::QueryAudioDeviceOutputEvent
2019-07-04 01:42:22 -04:00
70b595a63b Merge pull request #2638 from DarkLordZach/quest-flag
set: Implement GetQuestFlag with config option
2019-07-04 01:40:41 -04:00
e23110bd9f kernel/process: Default initialize all member variables
Ensures a Process instance is always created with a deterministic
initial state.
2019-07-03 20:31:40 -04:00
abdce723eb kernel/process: Decouple TLS handling from threads
Extracts out all of the thread local storage management from thread
instances themselves and makes the owning process handle the management
of the memory. This brings the memory management slightly more in line
with how the kernel handles these allocations.

Furthermore, this also makes the TLS page management a little more
readable compared to the lingering implementation that was carried over
from Citra.
2019-07-03 20:31:40 -04:00
55481df50f kernel/vm_manager: Add overload of FindFreeRegion() that operates on a boundary
This will be necessary for making our TLS slot management slightly more
straightforward. This can also be utilized for other purposes in the
future.

We can implement the existing simpler overload in terms of this one
anyways, we just pass the beginning and end of the ASLR region as the
boundaries.
2019-07-03 20:29:49 -04:00
beb3d77a79 Merge pull request #2613 from ogniK5377/InitalizeApplicationInfo
Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
2019-07-03 20:23:56 -04:00
e86af37ecb Merge pull request #2608 from ogniK5377/Time_GetSharedMemoryNativeHandle
Implement Time::GetSharedMemoryNativeHandle
2019-07-03 20:22:23 -04:00
58032e0085 Merge pull request #2604 from ogniK5377/INotificationService
Implemented INotificationService
2019-07-02 23:32:57 -04:00
b50557d1f0 file_sys: Rename other ContentRecordType members 2019-07-02 00:57:23 +01:00
965608e6d1 IAudioDevice::QueryAudioDeviceOutputEvent
The event should only be signaled when an output audio device gets changed. Example, Speaker to USB headset. We don't identify different devices internally yet so there's no need to signal the event yet.
2019-07-01 18:05:44 +10:00
472210bf72 hid:StartLrAssignmentMode, hid:StopLrAssignmentMode, hid:SwapNpadAssignment
StartLrAssignmentMode and StopLrAssignmentMode don't require any implementation as it's just used for showing the screen of changing the controller orientation if the user wishes to do so.  Ever since #1634 this has not been needed as users can specify the controller orientation from the config and swap at any time. We store a private member just in case this gets used for anything extra in the future
2019-07-01 15:12:57 +10:00
d992909636 Merge pull request #2583 from FernandoS27/core-timing-safe
Core_Timing: Make core_timing threadsafe by default.
2019-06-30 12:54:00 -04:00
7e5d7773cc am: Implement SetCpuBoostMode in terms of APM 2019-06-28 22:46:51 -04:00
e52306ca60 apm: Implement SetCpuBoostMode 2019-06-28 22:46:00 -04:00
1c6e6305ea apm: Add getters for performance config and mode 2019-06-28 22:45:31 -04:00
9175b00e7d apm: Add apm:am service
8.0.0+ identical version of apm
2019-06-28 22:44:30 -04:00
65eb9cbb28 apm: Add Controller class to manage speed data and application 2019-06-28 22:43:51 -04:00
d40f38967e fsp-srv: Implement GetAccessLogVersionInfo
Returns some misc. data about logging to help the game determine if it should log.
2019-06-28 21:05:42 -04:00
db2fdd0352 fsp-srv: Implement OutputAccessLogToSdCard
Allows games to log data to the SD.
2019-06-28 21:02:34 -04:00
f477c5dfdd set: Implement GetQuestFlag
Simply returns a true/false value indicating if the system is a kiosk system. This has been mapped to a config option for the purposes of yuzu.
2019-06-28 18:38:47 -04:00
dfe4b3f723 Attemp clang format fix?
Seems to be an issue with clang format
2019-06-28 22:08:50 +10:00
c2146c4eef Addressed issues 2019-06-28 15:29:38 +10:00
fd6549be73 Addressed issues 2019-06-28 15:19:51 +10:00
0b03e8a98f Implemented InitializeApplicationInfo & InitializeApplicationInfoRestricted
InitializeApplicationInfoRestricted will need further implementation as it's checking for other user requirements about the game. As we're emulating, we're assuming the user owns the game so we skip these checks currently, implementation will need to be added further on
2019-06-27 16:44:42 +10:00
bce4bfffb6 pm: Implement pm:shell and pm:dmnt GetApplicationPid
Returns the process ID of the current application or 0 if no app is running.
2019-06-26 19:07:34 -04:00
354c254cde pm: Implement pm:dmnt GetTitlePid
Takes a title ID and searches for a matching process, returning error if it doesn't exist, otherwise the process ID.
2019-06-26 19:06:51 -04:00
49af3bcdcb pm: Implement pm:info GetTitleId
Searches the process list for a process with the specified ID, returning the title ID if it exists.
2019-06-26 19:05:04 -04:00
5829ba1ccc Merge pull request #2548 from DarkLordZach/applet-shopn
applets: Implement backend and default frontend for Parental Controls and EShop (ShopN) applets
2019-06-26 15:55:24 -04:00
f67039c067 Addressed issues 2019-06-26 16:52:34 +10:00
d10fc2d727 glue: Correct missing bytes in ApplicationLaunchParameter 2019-06-25 22:25:10 -04:00
19dc36ce06 Implement Time::GetSharedMemoryNativeHandle
This PR attempts to implement the shared memory provided by GetSharedMemoryNativeHandle. There is still more work to be done however that requires a rehaul of the current time module to handle clock contexts. This PR is mainly to get the basic functionality of the SharedMemory working and allow the use of addition to it whilst things get improved on.

Things to note:
Memory Barriers are used in the SharedMemory and a better solution would need to be done to implement this. Currently in this PR I’m faking the memory barriers as everything is sync and single threaded. They work by incrementing the counter and just populate the two data slots. On data reading, it will read the last added data.

Specific values in the shared memory would need to be updated periodically. This isn't included in this PR since we don't actively do this yet. In a later PR when time is refactored this should be done.

Finally, as we don't handle clock contexts. When time is refactored, we will need to update the shared memory for specific contexts. This PR does this already however since the contexts are all identical and not separated. We're just updating the same values for each context which in this case is empty.

Tiime:SetStandardUserSystemClockAutomaticCorrectionEnabled, Time:IsStandardUserSystemClockAutomaticCorrectionEnabled are also partially implemented in this PR. The reason the implementation is partial is because once again, a lack of clock contexts. This will be improved on in a future PR.

This PR closes issue #2556
2019-06-26 00:45:53 +10:00
192f1f7ebe SizedNotificationInfo should be 0x10 bytes, user_uuid is incorrect, this should be the users account id 2019-06-25 15:19:37 +10:00
5d005b87a3 fixed spelling errors and fixed issue with Pop not returning the SizedNotificationInfo 2019-06-25 11:23:23 +10:00
3c4238657d applets: Pass current process title ID to applets
Avoids using system accessor to get current process in applet code.
2019-06-24 20:07:10 -04:00