ReinUsesLisp
b4451c5e81
core: Silence unhandled enum in switch warnings
2021-01-08 23:21:07 -03:00
german
385a4555d5
Stub IsCpuOverclockEnabled
2021-01-08 09:44:56 -06:00
ameerj
06cef3355e
fix for nvdec disabled, cleanup host1x
2021-01-07 14:33:45 -05:00
ameerj
2c27127d04
nvdec syncpt incorporation
...
laying the groundwork for async gpu, although this does not fully implement async nvdec operations
2021-01-07 14:33:45 -05:00
ReinUsesLisp
4f13e270c8
core: Silence warnings when compiling without asserts
2021-01-05 04:18:16 -03:00
ameerj
6b354ccaee
buffer_queue: Protect queue_sequence list access with a mutex
...
fixes a data race as this is an unprotected variable manipulated by multiple threads
2021-01-04 01:36:41 -05:00
bunnei
beaa25d777
hle: service: nvflinger: buffer_queue: Do not reset id/layer_id on Connect.
...
- This behavior is a mistake, fixes Katana Zero.
2021-01-02 15:42:16 -08:00
Morph
a745d87971
general: Fix various spelling errors
2021-01-02 10:23:41 -05:00
bunnei
25d607f5f6
Merge pull request #5208 from bunnei/service-threads
...
Service threads
2020-12-30 22:06:05 -08:00
ReinUsesLisp
157fc2d785
service/pcie: Fix invalid initialization argument
2020-12-30 02:58:38 -03:00
bunnei
7d77a3f88f
hle: service: Acquire and release a lock on requests.
...
- This makes it such that we can safely access service members from CoreTiming thread.
2020-12-28 21:33:34 -08:00
bunnei
994a9fec4e
hle: service: vi: Refactor to grab buffer only once.
2020-12-28 21:33:34 -08:00
bunnei
6433b1dfd6
service: nvflinger: Improve synchronization for BufferQueue.
...
- Use proper mechanisms for blocking on DequeueBuffer.
- Ensure service thread terminates on emulation Shutdown.
2020-12-28 21:33:34 -08:00
bunnei
bea51d948d
hle: service: Ensure system is powered on before writing IPC result.
2020-12-28 16:33:48 -08:00
bunnei
87d6588cb5
hle: service: bsd: Update to work with service threads, removing SleepClientThread.
2020-12-28 16:33:48 -08:00
bunnei
0c81b83ca9
hle: service: nvdrv: Revert #4981 to remove usage of SleepClientThread.
...
- Note, this always processes the ioctl right away, which fixes BotW 1.0.0 issues.
2020-12-28 16:33:48 -08:00
bunnei
19a8f03ad5
hle: service: nvflinger: Refactor locking and interfaces.
2020-12-28 16:33:47 -08:00
bunnei
b377da042b
hle: service: vi: Remove usage of SleepClientThread.
2020-12-28 16:33:47 -08:00
bunnei
29ccc7673f
Merge pull request #5042 from Morph1984/project-aether
...
Project Aether: Reimplementation of the Web Browser Applet
2020-12-21 23:47:10 -08:00
bunnei
1279c7ce7a
Merge pull request #5131 from bunnei/scheduler-rewrite
...
Rewrite Kernel scheduler based on Atmosphere
2020-12-20 20:57:54 -08:00
Morph
82fa9f8d56
applets/web: Implement the online web browser applet
2020-12-18 10:33:28 -05:00
Morph
8b95bf041d
main, applets/web: Re-add progress dialog for RomFS extraction
2020-12-18 10:33:28 -05:00
Morph
d46ca5a015
pl_u, applets/web: Decrypt shared fonts to TTF files
2020-12-18 10:33:28 -05:00
Morph
46183294b2
ns_vm: Stub NeedsUpdateVulnerability
...
This is used to force system updates on launching the web browser. We do not care about system updates so this can be set to false.
2020-12-18 10:33:28 -05:00
Morph
54ea3c47c8
controllers/npad: Make press_state atomic
2020-12-18 10:33:28 -05:00
Morph
d6d1a8e02c
applets/web: Implement the default web browser applet frontend
2020-12-18 10:33:28 -05:00
Morph
89df483567
applets/web: Implement the offline browser applet backend
2020-12-18 10:33:27 -05:00
Morph
a5750f437d
applets/web: Initial implementation of the web browser applet
2020-12-18 10:33:27 -05:00
Morph
ccb439efb0
applets: Remove the previous web browser applet implementation
2020-12-18 10:33:27 -05:00
ameerj
873ad1272e
buffer_queue: better use of std::array
2020-12-18 00:12:14 -05:00
ameerj
8cb683f3b9
Overwrite slots instead of queuing them, add disconnect signal
...
Fix for Katana Zero and Yoshi's Crafted World
2020-12-17 14:22:46 -05:00
bunnei
f3db273753
Merge pull request #5190 from Morph1984/validate_device_handle
...
controllers/npad: Validate device handles before use
2020-12-15 16:40:11 -08:00
bunnei
2e1b998d5e
Merge pull request #5119 from Morph1984/fs-opendatastoragewithprogramindex
...
fsp_srv: Implement OpenDataStorageWithProgramIndex
2020-12-15 11:07:03 -08:00
bunnei
df6427d30b
Merge pull request #5168 from Morph1984/aoc-PurchaseEventManager
...
aoc_u: Stub IPurchaseEventManager and its service commands
2020-12-14 16:08:38 -08:00
Morph
1c773c0869
controllers/npad: Validate device handles before use
...
Some games such as NEKOPARA Vol. 3 send invalid device handles when calling InitializeVibrationDevice. Introduce a check to validate the device handle before use.
2020-12-12 07:05:38 -05:00
bunnei
2d47a5fd41
Merge pull request #5123 from Morph1984/nim-IsLargeResourceAvailable
...
nim: Stub IsLargeResourceAvailable
2020-12-10 11:34:18 -08:00
Rodrigo Locatti
e94dd7e2c4
Merge pull request #5142 from comex/xx-poll-events
...
network, sockets: Replace `POLL_IN`, `POLL_OUT`, etc. constants with an `enum class PollEvents`
2020-12-09 03:52:20 -03:00
bunnei
6f41763061
Merge pull request #5166 from lioncash/log-cast
...
core: Remove unnecessary enum casts in log calls
2020-12-08 21:58:13 -08:00
bunnei
05a703e15d
Merge pull request #5135 from Morph1984/applets-shadow
...
applets: Resolve variable shadowing
2020-12-08 17:43:59 -08:00
Morph
deff708cbe
IPurchaseEventManager: Implement GetPurchasedEventReadableHandle
...
- Used by Pokémon Café Mix
- Used by DOOM: Eternal
2020-12-08 13:39:19 -05:00
Morph
a9cfe06aaf
IPurchaseEventManager: Stub Set(Default)DeliveryTarget
...
- Used by Pokémon Café Mix
- Used by DOOM: Eternal
2020-12-08 13:39:13 -05:00
Morph
009bdb3558
aoc_u: Stub Create(Permanent)EcPurchasedEventManager
...
- Used by Pokémon Café Mix
- Used by DOOM: Eternal
2020-12-08 13:39:07 -05:00
Morph
e15039372e
fsp_srv: Implement OpenDataStorageWithProgramIndex
...
- Used by RollerCoaster Tycoon 3: Complete Edition
2020-12-08 08:19:05 -05:00
Morph
0eb6c6cd83
file_sys: Consolidate common Title ID operations
2020-12-08 08:19:05 -05:00
Lioncash
6b7320add4
core: Remove unnecessary enum casts in log calls
...
Follows the video core PR. fmt doesn't require casts for enum classes
anymore, so we can remove quite a few casts.
2020-12-07 23:02:23 -05:00
Lioncash
215cfbb757
controller: Use std::move within ConvertToFrontendParameters()
...
Avoids unnecessary copies.
2020-12-07 22:04:16 -05:00
Lioncash
97dd67ad1c
controller: Avoid unnecessary copies in ConfigurationComplete()
...
Avoids unnecessary 1072 byte copies when querying info about
controllers.
2020-12-07 22:02:58 -05:00
bunnei
a58d57a60d
Merge pull request #5148 from comex/xx-unused-fields
...
core: Mark unused fields as [[maybe_unused]]
2020-12-06 22:33:00 -08:00
bunnei
24cabf5e2f
Merge pull request #5154 from comex/xx-ipc
...
hle: Type check ResponseBuilder::Push arguments, and fix use in vi.cpp
2020-12-06 22:32:04 -08:00
LC
8a00a0ade6
Merge pull request #5147 from comex/xx-purevirt
...
nvdrv: Remove useless re-declaration of pure virtual methods that were already declared in the superclass
2020-12-07 00:08:46 -05:00
comex
0791082b43
network, sockets: Replace POLL_IN
, POLL_OUT
, etc. constants with an enum class PollEvents
...
Actually, two enum classes, since for some reason there are two separate
yet identical `PollFD` types used in the codebase. I get that one is
ABI-compatible with the Switch while the other is an abstract type used
for the host, but why not use `WSAPOLLFD` directly for the latter?
Anyway, why make this change? Because on Apple platforms, `POLL_IN`,
`POLL_OUT`, etc. (with an underscore) are defined as macros in
<sys/signal.h>. (This is inherited from FreeBSD.) So defining
a variable with the same name causes a compile error.
I could just rename the variables, but while I was at it I thought I
might as well switch to an enum for stronger typing.
Also, change the type used for values copied directly to/from the
`events` and `revents` fields of the host *native*
`pollfd`/`WSASPOLLFD`, from `u32` to `short`, as `short` is the correct
canonical type on both Unix and Windows.
2020-12-06 19:14:42 -05:00
comex
3373149fdc
hle: Type check ResponseBuilder::Push arguments, and fix use in vi.cpp
...
- Add a type check so that calling Push with an invalid type produces a
compile error rather than a linker error.
- vi.cpp was calling Push with a variable of type `std::size_t`.
There's no explicit overload for `size_t`, but there is one for `u64`,
which on most platforms is the same type as `size_t`. On macOS,
however, it isn't: both types are 64 bits, but `size_t` is `unsigned
long` and `u64` is `unsigned long long`. Regardless, it makes more
sense to explicitly use `u64` here instead of `size_t`.
2020-12-06 18:59:22 -05:00
comex
feac654ba0
core: Mark unused fields as [[maybe_unused]]
2020-12-06 18:36:10 -05:00
comex
5cb1a343d1
boxcat: Avoid unnecessary object copy
2020-12-06 18:31:13 -05:00
comex
716ae72aac
nvdrv: Remove useless re-declaration of pure virtual methods that were already declared in the superclass
2020-12-06 18:24:33 -05:00
bunnei
9e29e36a78
hle: kernel: Rewrite scheduler implementation based on Mesopshere.
2020-12-06 00:03:24 -08:00
Morph
f6d4a289d5
applets: Resolve variable shadowing
2020-12-05 08:37:13 -05:00
Morph
c2f83c04cb
nim: Stub IsLargeResourceAvailable
...
- Used by Immortals Fenyx Rising
2020-12-04 09:53:21 -05:00
bunnei
63fd1bb503
core: arm: Implement InvalidateCacheRange for CPU cache invalidation.
2020-11-29 01:31:52 -08:00
bunnei
6750b4d3af
Merge pull request #4998 from Morph1984/bioshock-patch
...
hid: Check if applet_resource exists in InitializeVibrationDevice
2020-11-28 23:20:23 -08:00
german
4eb7327559
Add missing types to NpadCommunicationMode
2020-11-28 21:56:02 -06:00
bunnei
312a8bd4b4
Merge pull request #5021 from german77/StubCommunicationMode
...
HID: Stub set and get NpadCommunicationMode
2020-11-28 15:22:46 -08:00
Lioncash
073e07ae2d
savedata_factory: Eliminate usage of the global system instance
...
Now there's only two meaningful instances left in core.
2020-11-27 09:45:08 -05:00
german
3898d8f0d7
Stub set and get NpadCommunicationMode
2020-11-26 21:35:11 -06:00
Lioncash
1a954b2a59
service: Eliminate usages of the global system instance
...
Completely removes all usages of the global system instance within the
services code by passing in the using system instance to the services.
2020-11-26 20:03:11 -05:00
bunnei
322349e8cc
Merge pull request #4975 from comex/invalid-syncpoint-id
...
nvdrv, video_core: Don't index out of bounds when given invalid syncpoint ID
2020-11-26 01:27:24 -08:00
bunnei
ebcee03b0c
Merge pull request #4981 from ogniK5377/ioctl-ctrl
...
nvservices: Reintroducee IoctlCtrl
2020-11-25 21:48:57 -08:00
Morph
6f70e1b1ff
hid: Check if applet_resource exists in InitializeVibrationDevice
2020-11-25 13:33:30 -05:00
bunnei
4fb5ca80c0
service: am: Implement ExecuteProgram and required stubs.
...
- This is used by Super Mario 3D All-Stars.
2020-11-24 15:17:43 -08:00
bunnei
7791cc8c2e
hle: services: Fix a crash with improper NVFlinger lifetime management. ( #4977 )
...
* hle: services: Fix a crash with improper NVFlinger lifetime management.
- This crash would happen when attempting to shutdown yuzu early on in boot.
2020-11-24 14:31:58 -08:00
comex
e8b2fd21d8
nvdrv, video_core: Don't index out of bounds when given invalid syncpoint ID
...
- Use .at() instead of raw indexing when dealing with untrusted indices.
- For the special case of WaitFence with syncpoint id UINT32_MAX,
instead of crashing, log an error and ignore. This is what I get when
running Super Mario Maker 2.
2020-11-24 12:59:41 -05:00
Chloe Marcec
ab25d1fe9a
nvservices: Reintroducee IoctlCtrl
...
Fixes regression caused by #4907 which caused games like Breath of the Wild 1.0.0 not to boot.
2020-11-24 16:40:23 +11:00
bunnei
3a85bc1e77
Merge pull request #4944 from lioncash/system-rem
...
patch_manager: Remove usages of the global system instance
2020-11-21 22:12:34 -08:00
bunnei
afd0e2ee87
Merge pull request #4907 from ogniK5377/nvdrv-cleanup
...
core: Make nvservices more standardized
2020-11-20 22:15:44 -08:00
bunnei
3794c91145
olsc: Move member initialization to after member functions.
2020-11-20 10:50:50 -08:00
bunnei
6e37676482
hle: service: Stub OLSC Initialize and SetSaveDataBackupSettingEnabled functions.
...
- Used by Animal Cross: New Horizons v1.6.0 update, minimal stub gets this update working.
2020-11-19 12:36:09 -08:00
Lioncash
6f8a06bac5
patch_manager: Remove usages of the global system instance
...
With this, only 19 usages of the global system instance remain within
the core library.
We're almost there.
2020-11-18 09:36:48 -05:00
Morph
ad50209383
hid: Reimplement Begin/EndPermitVibrationSession
...
Upon further investigation, these commands allow temporary vibrations even when the "Controller Vibration" system setting is disabled. As a result, vibrations are allowed when either the system setting or this flag is set to true. Therefore, we can only block vibrations when both flags are set to false.
2020-11-15 23:33:21 -05:00
Morph
d8ad2f3484
controllers/npad: Load input devices on init
2020-11-15 23:33:21 -05:00
Morph
97b2220a82
general: Fix compiler warnings on linux and miscellaneous changes
2020-11-15 23:33:21 -05:00
Morph
30e0d1c973
controllers/npad: Remove the old vibration filter
...
Previously we used a vibration filter that filters out amplitudes close to each other. It turns out there are cases where this results into vibrations that are too inaccurate. Remove this and move the 100Hz vibration filter (Only allowing a maximum of 100 vibrations per second) from sdl_impl to npad when enable_accurate_vibrations is set to false.
2020-11-15 23:33:21 -05:00
Morph
978ca65f59
hid: Implement InitializeVibrationDevice and IsVibrationDeviceMounted
2020-11-15 23:33:20 -05:00
Morph
e9e1876e82
input_common: Add VibrationDevice and VibrationDeviceFactory
...
A vibration device is an input device that returns an unsigned byte as status.
It represents whether the vibration device supports vibration or not.
If the status returns 1, it supports vibration. Otherwise, it does not support vibration.
2020-11-15 23:33:20 -05:00
Morph
38110dd485
configure_input: Add per-player vibration
...
Allows for enabling and modifying vibration and vibration strength per player.
Also adds a toggle for enabling/disabling accurate vibrations.
Co-authored-by: Its-Rei <kupfel@gmail.com>
2020-11-15 23:33:20 -05:00
Morph
d6a41cfc21
settings: Remove global vibration strength modifier
...
This will be replaced in favor of per-player vibration strength modifiers.
2020-11-15 23:33:20 -05:00
Morph
92fa5257c7
hid: Mark Begin/EndPermitVibrationSession as stubs
...
The implementation of these commands seem incomplete and causes rumble in Super Mario Party to stop working since only EndPermitVibrationSession is called. Thus, these are better off being marked as a stub until this can be investigated more thoroughly.
2020-11-15 23:33:20 -05:00
Morph
373408ae8c
controllers/npad: Send an empty vibration on destruction/deactivation
...
This stops all controllers from continuously vibrating when emulation is stopped.
2020-11-15 23:33:20 -05:00
Morph
70f16f1722
hid: Stub IsVibrationDeviceMounted
...
- Used in Super Mario Odyssey
2020-11-15 23:33:20 -05:00
Morph
9b501af8e3
controllers/npad: Add heuristics to reduce rumble state changes
...
Sending too many state changes in a short period of time can cause massive performance issues.
As a result, we have to use several heuristics to reduce the number of state changes to minimize/eliminate this performance impact while maintaining the quality of these vibrations as much as possible.
2020-11-15 23:33:20 -05:00
Morph
652d6766d5
configure_input: Hook up the vibration percentage spinbox
...
This allows setting the vibration strength percentage anywhere from 1% to 100%.
Also hooks up the remaining motion button and checkbox in the Controller Applet.
2020-11-15 23:33:20 -05:00
Morph
e02ef3c3be
controllers/npad: Stop games from vibrating incorrect controllers
...
Fixes vibration in 1-2 Switch and potentially other games where they would vibrate both players' joycons at the same time.
2020-11-15 23:33:20 -05:00
Morph
07b81f57ba
hid: Fix controller rumble based on new research
...
This fixes the issue where rumble is only sent to the first controller.
Now, individual controllers can receive their own rumble commands.
2020-11-15 23:33:20 -05:00
Morph
31de52513e
hid: Pop a struct of parameters instead of popping individual parameters
...
Some parameters need to be doubleword aligned due to the presence of the applet_resource_user_id.
Previously, this value was invalid in many commands where it was not doubleword aligned when popped.
2020-11-15 23:33:20 -05:00
Morph
e3c2749986
hid: Reorder all HID commands
...
Reorders all HID commands in command id order.
2020-11-15 23:33:20 -05:00
Morph
b92bf51ae1
hid: Implement GetVibrationDeviceInfo
...
The first u32 describes the vibration device type which is a Linear Resonant Actuator used in Nintendo Switch controller hardware.
The second u32 describes the vibration device position, in this case distinguishing between left and right vibration actuators.
Pro Controllers have 2 LRAs each that can vibrate independently of each other, which means they have 2 distinct vibration device handles to distinguish between the two actuators.
Similarly for joycons, the left joycon can be distinguished from the right joycon through the vibration device handle since each joycon has 1 LRA.
2020-11-15 23:33:20 -05:00
Morph
16e2e1c45f
hid: Stub InitializeVibrationDevice
2020-11-15 23:33:20 -05:00
Morph
428ce8ec29
controllers/npad: Rename NPadType to NpadStyleSet
...
This more accurately represents the underlying type and avoids confusion with NpadType
2020-11-15 23:33:20 -05:00
Morph
0a966e2cac
controllers/npad: Add DeviceHandle struct
...
A DeviceHandle describes a vibration device or six-axis sensor based on the npad type, npad id, and device index/position
2020-11-15 23:33:20 -05:00
Morph
8f2959f680
settings: Preparation for per-game input settings
2020-11-15 23:33:20 -05:00
Morph
c0c4ed0d3b
controllers/npad: Connect a controller on init if none are connected
2020-11-15 23:33:19 -05:00