Feng Chen
c7ad195fd3
Out of bound blit ( #6531 )
...
* Fix out of bound blit error
* Fix code read
* Fix ci error
Co-authored-by: Feng Chen <chen.feng@gloritysolutions.com>
2021-07-08 11:06:09 -07:00
Kelebek1
7905eb0254
Replace NaN mix volume samples with silence.
...
Fixes Xenoblade Chronicles 2 blowing out the audio.
2021-07-08 17:42:15 +01:00
Morph
92a3daf029
Merge pull request #6564 from Kelebek1/Audio
...
Support more PCM formats
2021-07-08 12:14:58 -04:00
Morph
91a4a924b1
Merge pull request #6569 from Kelebek1/Vol
...
audio_core: Preserve front channel volume after 6 to 2 downmix
2021-07-08 12:09:21 -04:00
Kelebek1
7636fefb71
audio_core: Preserve front channel volume after 6 to 2 downmix
...
Many games report 6 channel output while only providing data for 2. We only output 2-channel audio regardless, and in the downmixing, front left/right only provide 36% of their volume. This is done assuming all of the other channels also contain valid data, but in many games they don't. This PR alters the downmixing to preserve front left/right, so volume is not lost.
This improves volume in Link's Awakening, New Super Mario Bros U, Disgaea 6, Super Kirby Clash.
2021-07-08 17:07:23 +01:00
bunnei
8542f2f3fc
Merge pull request #6567 from Kelebek1/Audio2
...
[audren] Report 2 channels active rather than 1
2021-07-07 14:52:08 -07:00
lat9nq
2f0e1f5d02
util_shaders: Fix BindImageTexture
...
According to
https://gitlab.freedesktop.org/mesa/mesa/-/issues/3820#note_753371 we
need to set these to true for use with 3D textures.
Fixes BOTW teleporting on RadeonSI and iris.
2021-07-07 14:09:55 -04:00
bunnei
2eb018c80f
Merge pull request #6562 from Morph1984/flush-behavior
...
common: fs: More misc. changes
2021-07-07 00:40:31 -07:00
bunnei
eb3cb3af35
Merge pull request #6497 from FernandoS27/scotty-doesnt-know
...
GPU Memory Manager - Correct handling of non continuous backing memory.
2021-07-06 17:26:21 -07:00
Kelebek1
b9f915e07a
Report 2 channels active. Fixes Tales of Vesperia's mono channel audio.
2021-07-06 18:52:49 +01:00
Kelebek1
dbcc093d88
Support more PCM formats. Fixes Ys IX audio.
2021-07-06 18:43:23 +01:00
Morph
ebb82b0b83
CMakeLists: Treat -Wsign-compare as an error on GCC/Clang
...
Treats (un)signed comparison mismatches as errors to be consistent with MSVC
2021-07-06 12:50:09 -04:00
Morph
a59ae5e702
common: logging: backend: Close the file after exceeding the write limit
...
There's no point in keeping the file open after the write limit is exceeded. This allows the file to be committed to the disk shortly after it is closed and avoids redundantly checking whether or not the write limit is exceeded.
2021-07-06 05:59:47 -04:00
Morph
14ab50defb
common: fs: file: Revert Flush to its previous behavior and add Commit
...
It became apparent that logging can continuously spam errors that trigger file flushing.
Since committing the files to disk is an expensive operation, this causes unnecessarily high disk usage.
As such, we will revert Flush() to the previous behavior and add a Commit() member function in the event that this behavior is needed.
2021-07-06 05:59:47 -04:00
Morph
d299d5531f
common: fs: file: Flush the file in GetSize
...
This ensures that GetSize always retrieves the correct file size after a write operation.
2021-07-06 05:59:47 -04:00
bunnei
bf50345d4c
Merge pull request #6537 from Morph1984/warnings
...
general: Enforce multiple warnings in MSVC
2021-07-05 17:09:23 -07:00
bunnei
3d03a6ae02
Merge pull request #6556 from Morph1984/default-mii
...
service: mii: Retrieve the correct default miis.
2021-07-05 13:51:00 -07:00
Ameer J
c770fa9823
Merge pull request #6540 from Kelebek1/nvdec
...
Slightly refactor NVDEC and codecs for readability and safety
2021-07-05 16:06:09 -04:00
Morph
942c0d6cdd
Merge pull request #6561 from german77/analog_fix
...
input_common: Add missing modifier callback to analog from button
2021-07-05 12:47:42 -04:00
german77
c19ec2edd9
input_common: Add missing modifier callback to analog from button
2021-07-05 11:39:42 -05:00
german77
b188d7792a
profiler: Fix deprecated functions
2021-07-05 10:15:35 -05:00
Mai M
669cef2da3
Merge pull request #6552 from Morph1984/c4189-msvc
...
CMakeLists: Enforce C4189 on MSVC
2021-07-04 22:16:28 -04:00
Fernando Sahmkow
c6a9e91784
Texture Cache: Fix collision with multiple overlaps of the same sparse texture.
2021-07-04 22:32:36 +02:00
Fernando Sahmkow
a8a0927d42
Texture Cache: Fix GCC & Clang.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
8f9f142956
Texture Cache: Address feedback.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
fd98fcf7f0
Texture Cache: Improve accuracy of sparse texture detection.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
38165fb7e3
Texture Cache: Initial Implementation of Sparse Textures.
2021-07-04 22:32:03 +02:00
Morph
5dfa313d2c
service: mii: Retrieve the correct default miis.
...
We were including the first 2 default miis which are not meant to be shown in games. With this change, we properly retrieve the 6 default miis shown in games, with 3 of each gender.
2021-07-04 05:38:34 -04:00
Fernando Sahmkow
0aab55d26a
TextureCacheOGL: Implement Image Copies for 1D and 1D Array.
2021-07-03 14:40:29 +02:00
Fernando Sahmkow
ebaa7e391c
TextureCache: Fix 1D to 2D overlapps.
2021-07-03 14:01:54 +02:00
Morph
3a3f4983b6
CMakeLists: Enforce C4189
...
This supplements C4101 by detecting initialized but unreferenced local variables
2021-07-03 05:51:31 -04:00
bunnei
2fc0a760f0
Merge pull request #6498 from Kelebek1/Audio
...
[audio_core] Decouple audio update and processing, and process at variable rate
2021-07-03 00:24:33 -07:00
lat9nq
38f658d21e
config: Read UISettings as basic settings
...
I must have been asleep or something. These need to be read with the new
ReadBasicSetting function.
2021-07-02 01:06:30 -04:00
lat9nq
cf1cd3321d
settings: Set resolution_factor default to 1
...
Fixes Disgaea 6 Demo issues.
2021-07-01 12:06:12 -04:00
Kelebek1
208a04dcff
Slightly refactor NVDEC and codecs for readability and safety
2021-07-01 06:22:05 +01:00
Kelebek1
b455043e45
Fix XC2/VOEZ crashing, add audio looping and a few misc fixes
2021-07-01 06:01:01 +01:00
Ameer J
bab400daaf
Merge pull request #6459 from lat9nq/ubuntu-fixes
...
cmake: Improve Linux dependency checking for externals
2021-06-30 21:47:57 -04:00
lat9nq
299c5594e6
yuzu_cmd: config: Pass a reference in
...
Also adds documentation for the ReadSetting function.
Address review comments.
Co-authored-by: Mai M. <mathew1800@gmail.com>
2021-06-30 20:16:01 -04:00
Morph
39be4c3026
Merge pull request #6471 from lat9nq/dump-as-mod
...
yuzu qt, core: Support LayeredFS mods from SDMC directory
2021-06-29 00:10:31 -04:00
lat9nq
0e5c74bc9e
core, input_common: Miscellaneous fixes
...
bcat: Fix settings access
telemetry_session: Fix settings accesses
So this is what I get for testing with the web service disabled.
touch_from_button: Fix settings access for clang
2021-06-28 20:56:17 -04:00
lat9nq
7a8de138df
yuzu qt: Make most UISettings a BasicSetting
...
For simple primitive settings, moves their defaults and labels to
definition time.
Also fixes typo and clang-format
yuzu qt: config: Fix rng_seed
2021-06-28 19:13:53 -04:00
lat9nq
b91b76df4f
general: Make most settings a BasicSetting
...
Creates a new BasicSettings class in common/settings, and forces setting
a default and label for each setting that uses it in common/settings.
Moves defaults and labels from both frontends into common settings.
Creates a helper function in each frontend to facillitate reading the
settings now with the new default and label properties.
Settings::Setting is also now a subclass of Settings::BasicSetting. Also
adds documentation for both Setting and BasicSetting.
2021-06-28 17:32:17 -04:00
Morph
ec68cba440
Merge pull request #6502 from ameerj/vendor-title
...
main: Add GPU Vendor name to running title bar
2021-06-28 14:51:49 -04:00
Morph
248a146ab7
CMakeLists: Disable all warnings for external headers
...
This lets us avoid needing to wrap external headers with #pragma warning directives for warnings we treat as errors and avoids generating warnings for external code.
Thanks to MerryMage for pointing this out.
2021-06-28 14:24:28 -04:00
Morph
22d7b89c15
video_core: Remove #pragma warning directives for external headers
2021-06-28 14:21:40 -04:00
Morph
954259312e
input_common: Remove #pragma warning directives for external headers
2021-06-28 14:20:25 -04:00
Morph
0eae00e263
CMakeLists: Enforce C4018, C4267, C4305, C4389
2021-06-28 14:20:25 -04:00
Morph
e828c5a559
core: Enforce C4242
2021-06-28 14:20:25 -04:00
Morph
58550cfcdc
input_common: Enforce C4242
2021-06-28 14:20:25 -04:00
Morph
a47704f4dd
video_core: Enforce C4242
2021-06-28 14:20:25 -04:00
Morph
511ee03a21
patch_manager: Do not apply LayeredFS mods when dumping
...
We should not apply any mods when dumping a game's RomFS.
2021-06-28 10:14:36 -04:00
Morph
6ac978426c
filesystem: Open a read-only directory for SDMC mods
...
This prevents mod files from being locked due to the read-only share flag in Windows.
2021-06-28 10:08:08 -04:00
lat9nq
844e0114b0
core: Simplify SDMC mod loading
...
If someone else wants to support other mod formats in the SDMC
directory, that can be added later. For now, just allow RomFS modding
here and force people to do other types of mods the old way.
Addresses review comments.
Co-authored-by: LC <mathew1800@gmail.com>
2021-06-28 10:08:08 -04:00
lat9nq
1664c74a6c
core: Support LayeredFS mod from SDMC directory
...
Enables loading a mod directly from `[yuzu data
directory]/sdmc/atmosphere/contents/[title_id]`. For use with some
homebrew mod managers.
2021-06-28 10:08:07 -04:00
lat9nq
bfecd395d4
yuzu qt: Add option to dump to SDMC directory
...
Enables dumping the RomFS to SDMC directory, specifically '[yuzu data
directory]/sdmc/atmosphere/contents/[title_id]/romfs'.
2021-06-28 10:08:07 -04:00
Morph
d3d6613d33
video_core: Silence signed/unsigned mismatch warnings
2021-06-28 09:21:42 -04:00
ameerj
4cee25281f
main: Display the instruction set of the running title in the window name
...
Displays whether the currently running title uses 64-bit instructions or only 32-bit instructions.
2021-06-28 00:37:24 -04:00
Kelebek1
0857d6a3db
Decouple audio processing and run at variable rate
...
Currently, processing of audio samples is called from AudioRenderer's Update method, using a fixed 4 buffers to process the given samples. Games call Update at variable rates, depending on framerate and/or sample count, which causes inconsistency in audio processing. From what I've seen, 60 FPS games update every ~0.004s, but 30 FPS/160 sample games update somewhere between 0.02 and 0.04, 5-10x slower. Not enough samples get fed to the backend, leading to a lot of audio skipping.
This PR seeks to address this by de-coupling the audio consumption and the audio update. Update remains the same without calling for buffer queuing, and the consume now schedules itself to run based on the sample rate and count.
2021-06-27 15:58:07 +01:00
Morph
4df04ad48a
Merge pull request #6529 from ReinUsesLisp/reaper-fixups
...
buffer_cache,texture_cache: Misc fixups from the memory reaper
2021-06-27 09:33:58 -04:00
bunnei
432fab7c4f
Merge pull request #6526 from bunnei/doom-update
...
services: Misc. minor changes for latest SDK update.
2021-06-26 01:21:55 -07:00
bunnei
36d581ec73
hle: service: hwopus: OpenHardwareOpusDecoderEx: Remove unused buffer size.
2021-06-26 00:38:08 -07:00
lat9nq
35b17fa5e0
configuration: Defer to common/settings for per-game settings defaults
...
Avoids double-setting defaults, and avoids potential accidents when
inconsistently setting the default on new settings.
2021-06-26 02:45:14 -04:00
lat9nq
20e51402b0
common: Force defaults for Settings::Setting's
...
Requires a default value when creating each per-game setting.
2021-06-26 02:43:38 -04:00
ReinUsesLisp
9476309d53
buffer_cache: Only flush downloaded size
...
Fixes a regression unintentionally introduced by the garbage collector.
This makes regular memory downloads only flush the requested sizes.
This negatively affected Koei Tecmo games.
2021-06-26 03:29:34 -03:00
ReinUsesLisp
03abe8bf85
video_core: Enforce C4244
...
Enforce implicit integer casts to a smaller type as errors.
2021-06-26 03:29:34 -03:00
ReinUsesLisp
05bd50a1cf
codec,vic: Disable warnings in ffmpeg headers
2021-06-26 03:29:31 -03:00
ReinUsesLisp
3ab5bf6454
vk_buffer_cache: Silence implicit cast warnings
2021-06-26 02:17:36 -03:00
ReinUsesLisp
b4894faeae
buffer_cache/texture_cache: Make GC functions private
2021-06-26 02:17:36 -03:00
ReinUsesLisp
e79d02bf38
buffer_cache: Silence implicit cast warning
2021-06-26 02:17:36 -03:00
ReinUsesLisp
99b859db55
vulkan_device: Make device memory match the rest of the file
...
Match the style in the file.
2021-06-25 02:38:58 -03:00
bunnei
c805c0b395
Merge pull request #6496 from ameerj/astc-fixes
...
astc: Various robustness enhancements for the gpu decoder
2021-06-24 21:47:05 -07:00
bunnei
b9c2732121
Merge pull request #6519 from Wunkolo/mem-size-literal
...
common: Replace common_sizes into user-literals
2021-06-24 19:09:12 -07:00
bunnei
982be246ab
hle: hle_helpers: Skip data payload offset checks on TIPC requests.
...
- TIPC does not use this.
2021-06-24 18:39:43 -07:00
bunnei
3565e32f4d
hle: service: hwopus: Implement GetWorkBufferSizeEx and OpenHardwareOpusDecoderEx.
...
- This is used by the latest update of Doom Eternal.
2021-06-24 18:25:37 -07:00
bunnei
d1ba4a2db2
hle: service: aoc: Stub GetAddOnContentListChangedEventWithProcessId.
...
- This is used by the latest update of Doom Eternal.
2021-06-24 18:22:53 -07:00
bunnei
50d0cc2716
audio_core: common: Bump audio revision to 9.
...
- This is used in fw 12.x.x games.
2021-06-24 18:22:10 -07:00
Wunkolo
4569f39c7c
common: Replace common_sizes into user-literals
...
Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc
user-literals within literals.h.
To keep the global namespace clean, users will have to use:
```
using namespace Common::Literals;
```
to access these literals.
2021-06-24 09:27:40 -07:00
bunnei
4dc2f5a341
Merge pull request #6522 from Morph1984/pragma
...
general: Add missing #pragma once directives
2021-06-24 08:53:27 -07:00
Morph
eed0d1f33b
general: Add missing #pragma once directives
2021-06-24 07:20:57 -04:00
Chloe
f216a9432b
Add missing includes ( #6521 )
...
* Add missing includes
* Add array
2021-06-24 03:24:17 -04:00
bunnei
1b09d6628b
Merge pull request #6517 from lioncash/fmtlib
...
externals: Update fmt to 8.0.0
2021-06-23 15:31:04 -07:00
bunnei
809e5fd523
Merge pull request #6504 from Kelebek1/samples-played
...
[audout] Implement GetAudioOutPlayedSampleCount
2021-06-23 11:31:12 -07:00
Lioncash
d0b1f2bd05
General: Resolve fmt specifiers to adhere to 8.0.0 API where applicable
...
Also removes some deprecated API usages.
2021-06-23 13:48:21 -04:00
bunnei
d8d9bb0dfb
Merge pull request #6518 from lioncash/func
...
maxwell3d: Add missing return in default SizeInBytes() case
2021-06-23 09:43:00 -07:00
Lioncash
be6844c1ed
maxwell3d: Add missing return in default SizeInBytes() case
...
We were returning '1' in ComponentCount()'s default case but were
neglecting to do the same with SizeInBytes().
2021-06-23 11:50:40 -04:00
Mai M
17fff10e06
Merge pull request #6465 from FernandoS27/sex-on-the-beach
...
GPU: Implement a garbage collector for GPU Caches (project Reaper+)
2021-06-23 08:03:01 -04:00
Mai M
20f474b09a
Merge pull request #6508 from ReinUsesLisp/bootmanager-stop-token
...
bootmanager: Use std::stop_source for stopping emulation
2021-06-23 02:35:42 -04:00
Morph
c1a9fa9db7
Merge pull request #6514 from OZtistic/master
...
Simple resizing of Per-Game configuration window and removal of useless Help question mark button in the title bar
2021-06-22 23:19:13 -04:00
Mai M
d6b51e5e21
Merge pull request #6512 from ReinUsesLisp/wait-detached-stasks
...
common/detached_tasks: Wait for tasks before shutting down
2021-06-22 22:20:14 -04:00
Mai M
95b4c78b07
Merge pull request #6509 from ReinUsesLisp/mouse-datarace
...
input_common/mouse_input: Fix data race
2021-06-22 22:19:34 -04:00
Mai M
4ec7d79174
Merge pull request #6510 from ReinUsesLisp/npad-data-race
...
npad: Fix data race when updating devices
2021-06-22 22:17:57 -04:00
OZtistic
36aacf62ad
Simple resizing of the Per-Game configuration window and removal of useless Help question mark button in the title bar
2021-06-23 12:02:10 +10:00
bunnei
0308a2679e
Merge pull request #6493 from Morph1984/fs-nodiscard
...
common: fs: Miscellaneous changes
2021-06-22 17:21:59 -07:00
bunnei
255f8d22d7
Merge pull request #6472 from Morph1984/spl
...
service: spl: Implement general SPL service
2021-06-22 15:43:10 -07:00
bunnei
791d3d1bea
Merge pull request #6483 from Morph1984/get-tz-file
...
service: time: Use GetFileRelative to get files within subdirectories
2021-06-22 14:25:41 -07:00
Fernando Sahmkow
f9b940a442
Reaper: Set minimum cleaning limit on OGL.
2021-06-22 22:07:17 +02:00
Morph
2fa207058b
common: fs: Add a description of a regular file in IsFile
...
This provides a more concrete example of what a regular file is and isn't.
2021-06-22 15:07:51 -04:00
Morph
0394893354
vfs_real: Fix Mode to FileAccessMode conversion
...
These enforce requiring the file to exist prior to opening.
2021-06-22 15:07:51 -04:00
Morph
76b2313b25
common: fs: Amend IsFile check in FileOpen / (Write/Append)StringToFile
...
This check was preventing files with the Write or Append file access modes from being created, as per the documented behavior in FileAccessMode.
This amends the check to test for the existence of a filesystem object prior to checking whether it is a regular file.
Thanks to liushuyu for pointing out that removing the check altogether would not guard against attempting to open non-regular files such as directories, symlinks, FIFO (pipes), sockets, block devices, or character devices.
The documentation has also been updated for these functions to clarify that a file refers to a regular file.
2021-06-22 15:06:58 -04:00
Morph
cf0b9d1de2
common: fs: file: Remove [[nodiscard]] attribute from Flush
...
Similarly, Flush() is typically called to attempt to flush a file into the disk. In the one case where this is used, we do not care whether the flush has succeeded or not, making [[nodiscard]] unnecessary.
2021-06-22 13:36:24 -04:00
Morph
81b1b71993
common: fs: Remove [[nodiscard]] attribute on Remove* functions
...
There are a lot of scenarios where we don't particularly care whether or not the removal operation and just simply attempt a removal.
As such, removing the [[nodiscard]] attribute is best for these functions.
2021-06-22 13:36:24 -04:00
bunnei
faf57c183f
Merge pull request #6506 from ReinUsesLisp/master-semaphore-jthread
...
vk_master_semaphore: Use jthread for debug thread
2021-06-22 08:44:25 -07:00
Mai M
698add8541
Merge pull request #6511 from ReinUsesLisp/core-is-powered-data-race
...
core: Make is_powered_on atomic
2021-06-22 04:28:38 -04:00
Rodrigo Locatti
c9c8537643
core: Make is_powered_on atomic
...
Fixes potential data races when shutting down.
2021-06-22 04:33:07 -03:00
Rodrigo Locatti
1ca9a13e50
common/detached_tasks: Wait for tasks before shutting down
...
If this is not waited on, the synchronization primitives are destroyed
whe main exits and the detached task ends up signalling garbage and not
properly finishing.
2021-06-22 04:27:44 -03:00
Rodrigo Locatti
15cc561d12
npad: Fix data race when updating devices
...
Add a lock to avoid data races.
This reduces the number of -fsanitize=thread errors significantly.
2021-06-22 03:16:21 -03:00
Rodrigo Locatti
0a39163a90
input_common/mouse_input: Fix data race
...
Fix data race using std::jthread and std::stop_token.
2021-06-22 02:31:39 -03:00
bunnei
2a7a65c944
Merge pull request #6481 from Morph1984/missing-peak-set
...
kernel: Fix missing peak set in KResourceLimit::SetLimitValue
2021-06-21 22:16:48 -07:00
Kelebek1
ba3af04da1
Implement audout GetAudioOutPlayedSampleCount
...
Used in Ninja Gaiden games.
2021-06-22 04:39:17 +01:00
ReinUsesLisp
4009ae1da2
bootmanager: Use std::stop_source for stopping emulation
...
Use its std::stop_token to abort shader cache loading.
Using std::stop_token instead of std::atomic_bool allows the usage of
other utilities like std::stop_callback.
2021-06-22 00:04:57 -03:00
ReinUsesLisp
cf116a28a6
vk_master_semaphore: Use jthread for debug thread
2021-06-21 19:56:07 -03:00
bunnei
0485b8e84b
Merge pull request #6499 from FernandoS27/we-were-on-a-break
...
Update dynarmic and add new unsafe CPU option.
2021-06-21 14:56:08 -07:00
bunnei
2a3d3d3895
Merge pull request #6475 from ameerj/unlimit-fps
...
nvflinger: Add experimental toggle to disable buffer swap interval limits
2021-06-21 11:58:12 -07:00
Mai M
83ac715e76
Merge pull request #6486 from CaptV0rt3x/httplib
...
externals: httplib: replace custom httplib header with upstream as submodule
2021-06-21 11:56:33 -04:00
lat9nq
a01459df3d
gl_device: Expand on Mesa driver names
...
Makes this list a bit more capable at identifying Mesa drivers. Tries to
deal with two of the overloaded vendor strings in a more generic
fashion.
2021-06-20 23:04:07 -04:00
ameerj
fb16cbb17e
video_core: Add GPU vendor name to window title bar
2021-06-20 23:04:07 -04:00
Fernando Sahmkow
2298508465
Update dynarmic and add new unsafe CPU option.
2021-06-20 20:40:02 +02:00
Fernando Sahmkow
569a1962c0
Reaper: Guarantee correct deletion.
2021-06-20 19:11:41 +02:00
Fernando Sahmkow
865dd615ca
Reaper: Upgrade label from unsafe to experimental as no regressions are known now.
2021-06-20 12:35:19 +02:00
ameerj
851c76233d
util_shaders: Specify ASTC decoder memory barrier bits
2021-06-19 11:16:25 -04:00
ameerj
ace20ba4a4
astc_decoder.comp: Remove unnecessary LUT SSBOs
...
We can move them to instead be compile time constants within the shader.
2021-06-19 10:56:13 -04:00
ameerj
31b125ef57
astc: Various robustness enhancements for the gpu decoder
...
These changes should help in reducing crashes/drivers panics that may
occur due to synchronization issues between the shader completion and
later access of the decoded texture.
2021-06-19 09:00:33 -04:00
lat9nq
9a06b85b24
host_memory: Correct MEM_RESERVE_PLACEHOLDER
...
Microsoft defines `MEM_RESERVE_PLACEHOLDER` as `0x00040000`, but our
manually imported version of it drops the last zero.
2021-06-19 04:38:33 -04:00
Vortex
e704da9192
externals: httplib: replace custom httplib header with upstream as submodule.
...
This also includes a minor change to web_service.cpp - to fix compatibility with upstream changes.
2021-06-19 02:18:58 +05:30
Morph
fd5ef1970c
service: time: Use GetFileRelative to get files within subdirectories
...
The timezone info file can be within subdirectories (such as Asia/Tokyo), use GetFileRelative instead of GetFile to get files within subdirectories.
2021-06-18 11:25:26 -04:00
Morph
1a5eceeb9c
kernel: Fix missing peak set in KResourceLimit::SetLimitValue
2021-06-18 07:27:48 -04:00
ameerj
0b172d12c0
vulkan_debug_callback: Skip logging known false-positive validation errors
...
Avoids overwhelming the log with validation errors that are not applicable
2021-06-17 22:16:32 -04:00
Fernando Sahmkow
719a6dd5a1
Reaper: Correct size calculation on Vulkan.
2021-06-17 08:48:41 +02:00
ameerj
36250a4730
config: Add frame limiter toggle hotkey
2021-06-17 01:41:57 -04:00
ameerj
3522fc019c
nvflinger: Add toggle to disable buffer swap interval limits
...
Enabling this setting will allow some titles to present more frames to
the screen as they become available in the nvflinger buffer queue.
2021-06-17 01:41:56 -04:00
bunnei
abb0124b84
Merge pull request #6418 from clementgallet/sdl-audio-backend
...
Audio: SDL2 audio backend
2021-06-16 21:38:20 -07:00
Ameer J
c5b517aa5f
Merge pull request #6469 from ReinUsesLisp/blit-view-compat
...
texture_cache/util: Avoid relaxed image views on different bytes per block
2021-06-16 21:08:07 -04:00
Fernando Sahmkow
ca6f47c686
Reaper: Change memory restrictions on TC depending on host memory on VK.
2021-06-17 00:29:48 +02:00
Fernando Sahmkow
0dd98842bf
Reaper: Address Feedback.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
954ad2a61e
Reaper: Setup settings and final tuning.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
d8ad6aa187
Reaper: Tune it up to be an smart GC.
2021-06-16 21:35:02 +02:00
ReinUsesLisp
a11bc4a382
Initial Reaper Setup
...
WIP
2021-06-16 21:35:02 +02:00
ReinUsesLisp
5b1efe522e
vulkan_memory_allocator: Release allocations with no commits
2021-06-16 21:35:01 +02:00
bunnei
973bf306ed
Merge pull request #6464 from ameerj/disable-astc
...
textures: Add a toggle for GPU Accelerated ASTC decoder
2021-06-16 11:29:10 -07:00
Morph
92942fe01b
Merge pull request #6460 from Morph1984/fs-access-log-fix
...
fsp_srv: Fix filesystem access logging
2021-06-16 14:03:01 -04:00
Morph
4a4e304319
spl: Mark the other functions as unimplemented
2021-06-16 01:46:45 -04:00
Morph
8ba83c4c2a
spl: Implement spl::GetConfig
2021-06-16 01:46:45 -04:00
Morph
e4318a1914
hle: api_version: Add HLE API version constants
2021-06-16 01:46:45 -04:00
Morph
ded36b8688
spl: Add the general SPL interface
2021-06-16 01:46:45 -04:00
Morph
faf11fe46d
spl: Add SPL types
2021-06-16 01:46:45 -04:00
Morph
95f203b7c7
spl: Add SPL result codes
2021-06-16 01:07:58 -04:00
Morph
74790e4f33
common: fs: file: Remove redundant call to WriteStringToFile
...
The Append open mode will create a new file if said file does not exist at a given path, making this call redundant.
2021-06-16 00:06:02 -04:00
Morph
0f48292de1
fsp_srv: Fix filesystem access logging
...
This introduces a new setting Enable FS Access Log which saves the filesystem access log to sdmc:/FsAccessLog.txt
If this setting is not enabled, this will indicate to FS to not call OutputAccessLogToSdCard.
Fixes softlocks during loading in Xenoblade Chronicles 2 when certain DLC is enabled.
2021-06-16 00:06:02 -04:00
bunnei
78651b5476
Merge pull request #6462 from Morph1984/proper-flush
...
common: fs: file: Flush the file to the disk when Flush() is called
2021-06-15 19:03:19 -07:00
ameerj
5fc8393125
astc_decoder: Fix LDR CEM1 endpoint calculation
...
Per the spec, L1 is clamped to the value 0xff if it is greater than 0xff. An oversight caused us to take the maximum of L1 and 0xff, rather than the minimum.
Huge thanks to wwylele for finding this.
Co-Authored-By: Weiyi Wang <wwylele@gmail.com>
2021-06-15 20:19:01 -04:00
ameerj
f9bfeaa2bc
yuzu_cmd/config: Add Accelerate ASTC and missing NVDEC emulation settings
2021-06-15 20:19:00 -04:00
ameerj
b2955479e5
configure_graphics: Add Accelerate ASTC decoding setting
2021-06-15 20:19:00 -04:00
ameerj
c4ff7ecf51
textures: Reintroduce CPU ASTC decoder
...
Users may want to fall back to the CPU ASTC texture decoder due to hangs
and crashes that may be caused by keeping the GPU under compute heavy
loads for extended periods of time. This is especially the case in games
such as Astral Chain which make extensive use of ASTC textures.
2021-06-15 20:19:00 -04:00
ameerj
422a15ee75
lm: Demote guest logs to LOG_DEBUG
...
Guest logs are not very useful, as they are intended for use by the game developers during development. As such, they provide little meaning to be logged by yuzu and tend to overwhelm the log output at times.
2021-06-14 22:23:27 -04:00
ReinUsesLisp
3d89398b84
texture_cache/util: Avoid relaxed image views on different bytes per pixel
...
Avoids API usage errors on UE4 titles leading to crashes.
2021-06-14 21:03:57 -03:00
bunnei
c8f86edee6
Merge pull request #6456 from Morph1984/very-important-changes
...
configure_cpu_debug: Clarify settings behavior
2021-06-14 15:05:44 -07:00
Fernando Sahmkow
8d4dfc98ec
Merge pull request #6448 from Morph1984/recursive-dir-iterator
...
common: fs: Use the normal directory iterator in *Recursively functions
2021-06-14 15:47:04 +02:00
Morph
a4454329c1
general: Remove extraneous includes
2021-06-13 11:32:43 -04:00
Morph
391e823c79
common: logging: Restructure backend code
2021-06-13 11:05:58 -04:00
Morph
8150c65c07
common: logging: backend: Wrap IOFile in a unique_ptr
...
Allows us to forward declare Common::FS::IOFile.
2021-06-13 11:05:58 -04:00
Morph
a98b6c8f07
common: fs: file: Flush the file to the disk when Flush() is called
...
std::fflush does not guarantee that file buffers are flushed to the disk.
Use _commit on Windows and fsync on all other OSes to ensure that the file is flushed to the disk.
2021-06-13 07:47:57 -04:00
Morph
56afd4ab4b
Merge pull request #6452 from german77/sixaxis_firmware_stub
...
hid: Stub IsFirmwareUpdateAvailableForSixAxisSensor
2021-06-13 05:28:32 -04:00
lat9nq
932c0184a7
cmake: Fix find_program usage for 3.15
...
yuzu requires CMake 3.15 yet find_program was using REQUIRED, which is
only available on 3.18 and later. Instead, we check for
"<VAR>-NOTFOUND".
In addition, check for additional requirements before building libusb or
FFmpeg with autotools. Otherwise, CMake configuration will pass yet
compilation will fail.
2021-06-13 01:15:54 -04:00
Morph
c11b4c45e1
configure_cpu_debug: Clarify settings behavior
...
This makes it clear that the disabled settings only take effect when CPU Accuracy is set to Debug Mode.
2021-06-13 00:27:33 -04:00
Morph
c978f3144c
common: fs: Use the normal directory iterator in *Recursively functions
...
MSVC's implementation of recursive_directory_iterator throws an exception on an error despite a std::error_code being passed into its constructor. This is most likely a bug in MSVC's implementation since directory_iterator does not throw an exception on an error.
We can replace the usage of recursive_directory_iterator for now until MSVC fixes their implementation of it.
2021-06-12 01:39:07 -04:00
bunnei
58180f9fa8
Merge pull request #6451 from Morph1984/check-disk-space-dump
...
yuzu: main: Ensure enough space is available for RomFS dumping
2021-06-11 13:23:23 -07:00
german77
827483409b
hid: Stub IsFirmwareUpdateAvailableForSixAxisSensor
2021-06-11 14:44:46 -05:00
Mai M
9951322e5a
Merge pull request #6422 from FernandoS27/i-am-the-senate
...
Implement/Port Fastmem from Citra to Yuzu
2021-06-11 14:26:54 -04:00
Morph
fa2aac1bf5
yuzu: main: Ensure enough space is available for RomFS dumping
...
This warns the user if there isn't enough free space to dump the entire RomFS to disk. It requires at least the size of the extracted RomFS + 1 GiB as a buffer of free space.
2021-06-11 14:04:11 -04:00
bunnei
0c0c1a039e
Merge pull request #6443 from Morph1984/k-light-condition-variable
...
kernel: KLightConditionVariable: Update implementation to 12.x
2021-06-11 11:03:55 -07:00
Markus Wick
7f85abb281
common/host_memory: Implement a fallback if fastmem fails.
...
This falls back to the old approach of using a virtual buffer.
Windows is untested, but this build should fix support for Windows < 10 v1803. However without fastmem support at all.
2021-06-11 17:27:17 +02:00
ReinUsesLisp
f332d4a9b5
common/host_shader: Load Windows 10 functions dynamically
...
Workaround old headers and libraries shipped on MinGW.
2021-06-11 17:27:17 +02:00
Fernando Sahmkow
588ab44470
GPUTHread: Remove async reads from Normal Accuracy.
2021-06-11 17:27:17 +02:00
ReinUsesLisp
7b0d8bd1fb
rasterizer: Update pages in batches
2021-06-11 17:27:17 +02:00
ReinUsesLisp
ee67460ff0
host_memory: Support staged VirtualProtect calls
2021-06-11 17:27:17 +02:00
FernandoS27
5ba28325b2
General: Add settings for fastmem and disabling adress space check.
2021-06-11 17:27:17 +02:00
Markus Wick
c4609c92ee
common/host_memory: Optimize for huge tables.
...
In theory, if we have 2 MB continously mapped, this should save one layer of TLB.
Let's make it at least more likely by aligning the memory.
2021-06-11 17:27:06 +02:00
Markus Wick
621f3f5f47
core: Make use of fastmem
2021-06-11 17:27:06 +02:00
ReinUsesLisp
740edacc8d
tests: Add tests for host memory
2021-06-11 17:27:06 +02:00
Markus Wick
5105318bbc
common/host_memory: Add Linux implementation
2021-06-11 17:27:06 +02:00
ReinUsesLisp
a7837a3791
common/host_memory: Add interface and Windows implementation
2021-06-11 17:27:06 +02:00
bunnei
c1b8e59ea0
Merge pull request #6407 from lat9nq/fix-libusb-2
...
cmake: Use autotools for libusb linking generally on GNU, and cleanup
2021-06-10 23:35:30 -07:00
bunnei
46ec0ee55b
Merge pull request #6445 from degasus/fix_ubsn
...
Fix GCC undefined behavior sanitizer.
2021-06-10 22:17:33 -07:00
Morph
ebd38d66db
kernel: Unconditionally set thread state when appropriate
2021-06-11 00:58:04 -04:00
Morph
aa79ca7a7a
kernel: KLightConditionVariable: Update implementation to 12.x
...
Updates the implementation of KLightConditionVariable to FW 12.x
2021-06-11 00:58:04 -04:00
Markus Wick
6755025310
Fix GCC undefined behavior sanitizer.
...
* Wrong alignment in u64 LOG_DEBUG -> memcpy.
* Huge shift exponent in stride calculation for linear buffer, unused result -> skipped.
* Large shift in buffer cache if word = 0, skip checking for set bits.
Non of those were critical, so this should not change any behavior.
At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0.
2021-06-10 21:07:27 +02:00
bunnei
781c85b951
hle: service: sm: Remove redundant session reservation, etc.
...
- We were double-reserving, causing us to run out of sessions in Pokemon Sword & Shield.
2021-06-10 11:34:41 -07:00
bunnei
fa8a0065ca
hle: service: Increase arbitrary max sessions limit.
...
- Pokemon Sword/Shield are still hitting this for some reason, causing an svcBreak.
2021-06-10 00:08:09 -07:00
bunnei
b259e95c09
hle: kernel: KClientPort: Add an assert for session count.
...
- Prevents us from over decrementing num_sessions.
2021-06-09 22:36:42 -07:00
bunnei
ec5674a6ad
hle: service: sm: Fix GetService setup of session & port.
2021-06-09 22:29:18 -07:00
bunnei
2aa6a8d889
hle: service: Use correct size for ServerSessionCountMax.
2021-06-09 22:04:36 -07:00
bunnei
b2971b48ed
hle: kernel: KServerSession: Fix client disconnected.
...
- Prevents a cloned session's handler from being overwritten by another disconnected session.
- Fixes session handler nullptr asserts with Pokemon Sword & Shield.
2021-06-09 21:37:11 -07:00
bunnei
c63ea608aa
kernel: svc: Add missing error check to CancelSynchronization.
...
- Avoids a potential crash if the handle is invalid, and also makes this code accurate to real kernel behavior.
2021-06-09 15:24:46 -07:00
Mai M
5857067a18
Merge pull request #6436 from liushuyu/master
...
src/common/CMakeLists.txt: fix variable escaping
2021-06-09 15:38:56 -04:00
bunnei
2d32fc2318
hle: service: Increase arbitrary max sessions limit.
...
- Pokemon Sword/Shield are still hitting this for some reason, causing an svcBreak.
2021-06-09 11:59:34 -07:00
bunnei
75a4ac12c6
Merge pull request #6413 from Kewlan/limitable_input_dialog_limit
...
limitable_input_dialog: Implement character limiter
2021-06-09 11:55:36 -07:00
liushuyu
eb9deffab6
src/common/CMakeLists.txt: fix variable escaping
2021-06-09 02:20:55 -06:00
Morph
15483c07c6
Merge pull request #6435 from lioncash/nodisc2
...
common/fs/path_util: Remove [[nodiscard]] from function with void return
2021-06-09 02:44:41 -04:00
bunnei
f9c3e2e872
Merge pull request #6434 from lioncash/tcontext
...
configure_ui: Add translation context for file-scope strings
2021-06-08 19:36:44 -07:00
bunnei
3c621d37f0
Merge pull request #6428 from bunnei/service-thread-crash-fix
...
hle: kernel: Remove service thread manager and use weak_ptr.
2021-06-08 16:43:55 -07:00
Lioncash
dd8577e91d
common/fs/path_util: Remove [[nodiscard]] from function with void return
...
We can't make use of the return value here, since we don't a return
value to work with.
2021-06-08 19:36:09 -04:00
Lioncash
b3eb08254b
configure_ui: Add translation context for file-scope strings
...
Allows for these strings to show up in the translation files.
2021-06-08 19:33:23 -04:00
Mai M
f09c9b5fcc
Merge pull request #6426 from lat9nq/context-menu-start
...
yuzu qt: Start games from context menu
2021-06-08 17:09:25 -04:00
bunnei
b8fb9b3f11
hle: kernel: KServerSession: Work-around scenario where session is closed too early.
2021-06-08 13:39:20 -07:00
bunnei
08d798b6fe
hle: kernel: hle_ipc: Ensure SessionRequestHandler is valid.
2021-06-07 21:55:37 -07:00
bunnei
3b5673daca
Merge pull request #6412 from clementgallet/yuzu-cmd-window-gl
...
yuzu-cmd: Fix OpenGL rendering
2021-06-07 21:12:17 -07:00
bunnei
a493ab2678
hle: kernel: Remove service thread manager and use weak_ptr.
...
- We no longer need to queue up service threads to be destroyed.
- Fixes a race condition where a thread could be destroyed too early, which caused a crash in Pokemon Sword/Shield.
2021-06-07 21:10:51 -07:00
lat9nq
5ac018d1df
yuzu qt: Start games from context menu
...
This connects the BootGame function to the context menu. In addition,
there is an option to boot without using the custom configuration.
2021-06-07 20:27:51 -04:00
bunnei
df91c9f5e6
Merge pull request #6410 from lat9nq/avoid-oob
...
decoders: Avoid out-of-bounds access
2021-06-07 10:51:17 -07:00
Clément Gallet
f611506dca
Various suggestions by v1993 and lioncash
2021-06-07 12:51:59 +02:00
bunnei
28eb8c83d4
Merge pull request #6414 from bunnei/fix-service-threads
...
hle: kernel: Refactor to allocate a ServiceThread per service handler.
2021-06-06 22:52:07 -07:00
bunnei
9db569b2d9
hle: kernel: KServerSession: Use ASSERT_MSG where appropriate.
2021-06-06 22:09:25 -07:00
bunnei
ada4242c01
hle: kernel: k_server_session: Return service thread by strong pointer.
2021-06-06 17:54:06 -07:00
bunnei
93f93cb8bc
hle: kernel: k_server_session: Ensure service thread is valid before dereference.
2021-06-06 17:03:36 -07:00
bunnei
afd0e2eb0b
Merge pull request #6400 from ameerj/disable-uniform-simplify
...
buffer_cache: Simplify uniform disabling logic
2021-06-06 15:42:20 -07:00
bunnei
384cbe3829
hle: kernel: hle_ipc: Use default destructor for SessionRequestManager.
2021-06-06 15:41:16 -07:00
bunnei
6119836795
hle: kernel: KAutoObjectWithListContainer: Use boost::instrusive::rbtree.
...
- Fixes some crashes introduced by our common intrusive red/black tree impl.
2021-06-06 15:39:11 -07:00
Clément Gallet
df8a2e3ad8
Add sdl2 audio description in the yuzu-cmd config file
2021-06-06 11:29:02 +02:00
Clément Gallet
c7c99905f4
Add SDL2 audio backend
2021-06-06 11:28:38 +02:00
Kewlan
058196a089
limitable_input_dialog: Implement character limiter
...
When using GetText() you can now choose what set of characters the user can't enter.
2021-06-06 09:07:55 +02:00
Clément Gallet
2e1c58b905
Avoid -Wshadow warning
...
Co-authored-by: Mai M. <mathew1800@gmail.com>
2021-06-05 18:43:10 +02:00
Lioncash
25b73e135f
result: Add [[nodiscard]] specifiers where applicable
...
The result code classes are used quite extensively throughout both the
kernel and service HLE code. We can mark these member functions as
[[nodiscard]] to prevent a few logic bugs from slipping through.
2021-06-05 06:09:07 -04:00
bunnei
fefc76e5da
Merge pull request #6362 from lat9nq/reset-to-defaults
...
yuzu qt: Add settings reset button to general configuration
2021-06-04 21:07:39 -07:00
Mai M
07f6646f7f
Merge pull request #6411 from clementgallet/yuzu-cmd-touch-button
...
yuzu-cmd: Add touch_from_button in config file
2021-06-04 23:21:29 -04:00
bunnei
27ce97fd42
hle: kernel: Refactor to allocate a ServiceThread per service handler.
...
- Previously, we would allocate a thread per session, which adds new threads on CloneCurrentObject.
- This results in race conditions with N sessions queuing requests to the same service interface.
- Fixes Pokken Tournament DX crashes/softlocks, which were regressed by #6347 .
2021-06-04 19:26:48 -07:00
Clément Gallet
9ff8504452
yuzu-cmd: Fix OpenGL rendering
2021-06-04 11:39:04 +02:00
lat9nq
287a0f72a5
decoders: Break instead of continue
...
continue causes a memory leak in A Hat in Time.
2021-06-04 05:12:14 -04:00
lat9nq
1feefabeba
decoders: Avoid out-of-bounds access
...
This is not a real fix, so assert here and continue before crashing.
2021-06-04 05:03:54 -04:00
bunnei
c8b3d92836
Merge pull request #6392 from german77/controller-widget
...
settings: Disable controller preview if controller is not active
2021-06-04 00:40:04 -07:00
bunnei
1d1f616063
Merge pull request #6389 from german77/Analog_button_fix
...
input_common: Analog button, use time based position
2021-06-03 21:06:38 -07:00
Maide
cb5fe12ee1
[game_list] Correct light theme loading ( #6408 )
...
Correct light theme loading
The setLayout call in game list instantiation will call resizing signals with default values in light theme, which was then being erroneously saved. setLayout doesn't seem to call resizing for any other theme, so I'm not sure why that happens.
2021-06-03 19:07:38 -04:00
Clément Gallet
166f5d1612
yuzu-cmd: Add touch_from_button in config file
2021-06-04 00:58:35 +02:00
lat9nq
ddc47e6df8
cmake: General improvements to libusb linking
...
Delegates libusb external communication to externals/CMakeLists.txt
Ensures an interface library `usb` for every pathway
input_common just links to the `usb` library now
externals/libusb/CMakeLists.txt sets variables to override SDL2's libusb
finding
Other minor cleanup
2021-06-03 03:49:35 -04:00
bunnei
e4fed17f59
Merge pull request #6402 from Kelebek1/UI
...
game_list: Stop the columns resizing on NAND install
2021-06-03 00:24:45 -07:00
bunnei
5a6d002bf0
Merge pull request #6404 from lat9nq/revert_views
...
yuzu qt: Revert some usages of string_view
2021-06-02 22:11:35 -07:00
Morph
b840dd9af8
fsp-srv: Replace one last instance of RESULT_SUCCESS
2021-06-02 21:40:14 -04:00
Chloe
c4c256f56a
fspsrv: Implement DisableAutoSaveDataCreation ( #6355 )
...
- Used by Mii Edit
2021-06-02 17:46:29 -07:00
lat9nq
c41451af75
yuzu qt: Revert some usages of string_view
...
Causes a heap-use-after free reported by AddressSanitizer. This makes
use of std::filesystem::path, but due to that we have to use their
string() function which may not work for all characters.
2021-06-02 19:50:20 -04:00
bunnei
4ea171fa5e
Merge pull request #6308 from Morph1984/result
...
general: Replace RESULT_NAME with ResultName
2021-06-02 15:29:09 -07:00
bunnei
d6006e9a3f
Merge pull request #6403 from Kewlan/game-list-for-loop-optimization
...
game_list: Minor for loop optimizations
2021-06-02 15:27:54 -07:00
Kewlan
65d42a428f
game_list: Minor for loop optimizations
...
There's no need to check the first and last rows since they'll always be the Favorites and AddDir rows.
Also change the name of the clear_all variable for consistency.
2021-06-02 16:19:55 +02:00
Kelebek1
04e52ffed0
Stop the columns resizing on NAND install
2021-06-02 06:27:08 +01:00
Morph
a0e4c2e1fc
general: Replace RESULT_UNKNOWN with ResultUnknown
...
Transition to PascalCase for result names.
2021-06-02 00:39:27 -04:00
Morph
12c1766997
general: Replace RESULT_SUCCESS with ResultSuccess
...
Transition to PascalCase for result names.
2021-06-02 00:39:27 -04:00
Morph
377cd301b3
Merge pull request #6395 from lioncash/result-move
...
common_funcs: Move R_ macros to result.h
2021-06-02 00:34:48 -04:00
Morph
dba7bcd489
common: fs: fs_util: Move PathToUTF8String to fs_util
2021-06-02 00:26:26 -04:00
Morph
a1eeb9908d
common: fs: fs_util: Add more string conversion functions
2021-06-02 00:26:26 -04:00
bunnei
91f559a71f
Merge pull request #6361 from lat9nq/per-hb-cfg
...
yuzu qt: Handle per-game configs for title id 0
2021-06-01 17:24:08 -07:00
lat9nq
c17e1bd7a8
yuzu qt: Use lambda and std::function for reset callback
...
Also makes use of std::move, and performs a clang-format cleanup.
This addresses review comments.
Co-authored-by: LC <mathew1800@gmail.com>
2021-06-01 17:22:06 -04:00
lat9nq
4a3d57e469
yuzu: Add settings reset button to general configuration
...
Builds on german77's work to reset all settings back to their defaults.
This include UISettings and Settings values structs, but does not affect
save profiles, input profiles, and game directories.
This works from a button input in configure_general. When activated, it
calls a callback to close the whole configure dialog, then GMainWindow
deletes the old configuration, both on disk and in memory, and
reinitalizes a new one. It also resets a portion of the UI and calls the
telemetry window prompt.
2021-06-01 17:22:04 -04:00