Commit graph

3858 commits

Author SHA1 Message Date
Léo Lam 1377be9902 file_sys: Move IPS patching code into separate source file
In anticipation of a new BPS patcher.
2019-12-22 10:46:47 +01:00
James Rowe b559d1a495 Add missing vsync telemetry field
Was removed as part of #4940 but readded again.
2019-12-16 19:30:28 -07:00
James Rowe 439d550850
Merge pull request #4940 from jroweboy/presentation-thread
Split Presentation thread from Render thread
2019-12-15 20:25:34 -07:00
James Rowe 36c5058d66 Reintroduce a vsync option for people with really bad drivers 2019-12-15 15:42:05 -07:00
Cameron Cawley 9a45d32a5f common/cpu_detect: Remove Common::CPUVendor
It's only used by telemetry, where the information it provides can be gained from the brand string.
2019-12-09 22:39:56 +00:00
zhupengfei 17ba846a3f
applets/swkbd: Remove text memory clearing
The text shared memory wasn't supposed to be cleared according to my comparison with the LLE swkbd. This can cause issues in certain games such as Harvest Moon.

A null terminator is added to the text copied to mark the end of the string.
2019-12-01 23:01:07 +08:00
vvanelslande e1e136d72f service/mic: actually use the specified device 2019-11-11 17:15:10 -05:00
vvanelslande 1f708e8bad settings, configure_input: fix rename input profile 2019-11-09 16:55:03 -05:00
James Rowe 586b8e8b46 Change from QOpenGLWidget to QWindow
While QOpenGLWidget sounds like a good idea, it has issues which are
harder to debug due to how Qt manages the context behind the scenes. We
could probably work around any of these issues over time, but its
probably easier to do it ourselves with a QWindow directly.

Plus using QWindow + createWindowContainer is the easiest to use
configuration for Qt + Vulkan so this is probably much better in the
long run.
2019-11-09 13:12:30 -07:00
James Rowe 9c32c0b98b Change from render to texture to render to renderbuffer 2019-11-09 13:12:29 -07:00
James Rowe 52d7676831 recreate mailbox to use a queue instead 2019-11-09 13:12:29 -07:00
James Rowe 6fff8e3921 Remove screen change detection since it breaks make changing screen. (Still need to test windows) 2019-11-09 13:12:29 -07:00
James Rowe 8d17aa40fd Remove vsync setting 2019-11-09 13:12:26 -07:00
James Rowe c2e7903825 Split graphics out of EmuWindow in preparation of shared contexts 2019-11-09 13:10:17 -07:00
James Rowe db7a627a2e Add scope acquire context to simplify MakeCurrent and DoneCurrent calls 2019-11-09 13:10:17 -07:00
Khangaroo df99d98240 specify size of buffer and use openglstate in getteximageoes 2019-11-09 12:58:17 -07:00
Khangaroo 5450d4980d crash hotfix (no clang-format because on phone)
hotfix 2: check if the texture is custom before dumping

hotfix 4: fix custom texture conflict detection
2019-11-09 12:56:28 -07:00
Khangaroo ae4aaf2fc1 nested folder support + refuse to load incompatibly sized textures + general cleanups 2019-11-09 12:56:27 -07:00
Khangaroo 8a98310a16 address more comments, fix dumping textures that already got dumped 2019-11-09 12:56:27 -07:00
Khangaroo c2a32e942b address more comments 2019-11-09 12:56:27 -07:00
Khangaroo f09489475a fix texture dumping on opengl es, create load folder if none exists if custom textures is enabled 2019-11-09 12:56:27 -07:00
Khangaroo 8b881ac1fc fix preload textures being enabled when it shouldn't
address more comments
2019-11-09 12:56:25 -07:00
Khangaroo 391e552927 qimageinterface fixes, remove old lodepng, address more comments 2019-11-09 12:56:24 -07:00
Khangaroo b81c15941e add image interface, remove lodepng from video_core/core, address more comments, fix comments
remove unnecessary conversion
2019-11-09 12:56:21 -07:00
Khangaroo 5940361b81 new-line that clang-format didn't fix
address some comments
2019-11-09 12:56:17 -07:00
Khangaroo 59b475a4b9 implement custom texture preload 2019-11-09 12:56:17 -07:00
Khangaroo 6d90c42a79 fix crashes, add custom texture cache, load textures from load directory 2019-11-09 12:54:40 -07:00
khang06 e0d63bd21b add texture dumping as a config entry 2019-11-09 12:53:12 -07:00
FearlessTobi 0a3f75c25f Backport changes from yuzu-emu/yuzu#2806 2019-09-22 17:40:04 +02:00
James Rowe 223bfc9a2a
Merge pull request #4847 from zhaowenlan1779/ipc-debugger
core, citra_qt: IPC Recorder
2019-09-21 00:04:07 -06:00
Weiyi Wang 176b8b4a0b
Merge pull request #4917 from vitor-k/long-title
Allow displaying the long_title of the game
2019-09-20 12:59:04 -04:00
James Rowe c1d3b5e61c
Merge pull request #4934 from vitor-k/boost_remnant
Remove boost headers not currently used
2019-09-18 10:57:37 -06:00
James Rowe 4b05078def
Merge pull request #4922 from Steveice10/master
Filter non-executable files out of the game list.
2019-09-16 23:51:44 -06:00
vitor-k 147a7f0dec Remove boost headers not currently used 2019-09-15 15:18:38 -03:00
vitor-k bb12af1da7 Remove unused boost header 2019-09-15 14:00:55 -03:00
Pengfei Zhu 360e6cb513
Merge pull request #4900 from leoetlino/exheader-fix
ncch_container: Fix NCCH decryption heuristic when replacing exheader
2019-09-14 10:33:06 -05:00
James Rowe 7bfd829c77
Merge pull request #4893 from wwylele/nfc-state
NFC: extract frontend-facing tag state
2019-09-13 08:59:51 -06:00
vitor-k f9cded05fd Allow displaying of the full title in the interface, as well as use the full title in the search filter 2019-09-09 23:36:21 -03:00
James Rowe d6f2bc8c04
Merge pull request #4896 from zhaowenlan1779/game-list-fix-3
citra_qt: Misc game list updates/fixes
2019-09-09 20:04:04 -06:00
Steveice10 5cf684c951 Filter non-executable files out of the game list. 2019-09-08 14:19:11 -07:00
Weiyi Wang 24ec11f928
Merge pull request #4915 from FearlessTobi/port-2818
Port citra-emu/citra#2818: "externals: update fmt to 6.0.0"
2019-09-08 08:42:02 -04:00
Pengfei Zhu 4bc22aa350
Merge pull request #4918 from vitor-k/warnings
Silence warnings from unused code and mismatched declaration
2019-09-06 22:08:06 +08:00
Ethan 56091241ff externals: update fmt to 6.0.0 2019-09-05 02:39:13 +02:00
Weiyi Wang 42d3d563b9
Merge pull request #4897 from zhaowenlan1779/warning-core-timing
core_timing: Silence sign comparison warnings
2019-09-03 16:06:27 -04:00
vitor-k 6e3652d15b Struct vs class declaration and unused variable 2019-09-02 22:45:38 -03:00
Valentin Vanelslande 2959b002cd applet_manager: remove the "we are going to disable loading LLE applets before further fixes are done" comments
LLE Applets are enabled again in #4500, but @wwylele didn't remove these comments.
2019-08-29 20:41:16 -05:00
Léo Lam 7318913f5a ncch_container: Fix NCCH decryption heuristic when replacing exheader
Fixes a regression from #4862, which caused the NCCH title ID checking
heuristic to be skipped whenever the exheader is replaced.

I was thinking the heuristic wouldn't be needed in that case, but it
turns out that many users still have pathological NCCHs that indicate
they are encrypted but are actually decrypted...

Now the original exheader is always read and used for the heuristic
to determine whether the NCCH is actually encrypted; only then do we
load a replacement exheader (if it exists) to avoid affecting the
heuristic.
2019-08-22 17:52:30 +08:00
zhupengfei ebc43239f0
core_timing: Silence sign comparison warnings
This is causing a lot of warnings all over the place.
2019-08-20 22:25:18 +08:00
zhupengfei 531bf857f5
Remove old region free logic 2019-08-20 21:03:41 +08:00
zhupengfei ce3459192e
fixup! CMake: separate options for FFmpeg decoder/dumper 2019-08-20 14:58:43 +08:00
zhupengfei f8b3950829
CMake: separate options for FFmpeg decoder/dumper
Separate options are now provided for FFmpeg AAC audio decoder and FFmpeg video dumper. This allows users to configure Citra with greater freedom.

Also, previously for Linux builds, AAC decoder is accidentally enabled along with the dumper, which could potentially cause patent issues (?). This commit fixes it by only enabling video dumper.
2019-08-20 14:45:39 +08:00
zhupengfei f40232adc9
service/sm: Add service name retrival based on client port ID
This is for displaying the service names. This function is only used in the frontend, because Recorder which is in the Kernel cannot and should not have access to SM in the System.
2019-08-20 03:07:30 +08:00
zhupengfei efd69e1315
kernel, service: Add HLE request/reply recording
Pretty much the same as LLE requests, the 'translate' part is chosen. A function is added to the context class to record requests that involves unimplemented HLE functions.
2019-08-20 03:07:29 +08:00
zhupengfei a27dfc269a
kernel: Add LLE request/reply recording
The 'translate' function is a great place to put this in IMO as it is possible to get both untranslated and translated cmdbufs. However a kernel reference has to be passed here, but it is not too hard fortunately.
2019-08-20 03:07:29 +08:00
zhupengfei cb0bd6530c
kernel/svc: Add request registering
All necessary objects are available here, making this a great place for the registering part.
2019-08-20 03:07:27 +08:00
zhupengfei b093d39a27
kernel: Add IPC Recorder to KernelSystem
Refer to the previous commit message for reasons why this is in kernel.
2019-08-20 03:07:26 +08:00
zhupengfei a3057c968b
kernel: Add IPC Recorder class
This class resides in Kernel mainly because that, it's hard for kernel objects to get references to the System (and therefore to the Recorder), while much easier for KernelSystem. If this is to be moved to System the code will likely get much more complex with System (or Recorder) references passed everywhere.
2019-08-20 03:07:25 +08:00
zhupengfei 71e0c40310
service: Add service function name lookup based on header code
This is for displaying the function name for HLE requests. Probably it is possible to do the same for LLE ones but it would require having the HLE handlers available even when not using them, which doesn't seem to make sense and is more of a hack than a proper solution in my opinion.
2019-08-20 03:07:25 +08:00
Weiyi Wang b4d45b57c7
Merge pull request #4879 from tywald/accurate-gs-on
Remove 'Accurate Geometry Shader' setting
2019-08-18 15:52:45 -04:00
Weiyi Wang 8b8111b425 NFC: extract frontend-facing tag state
Added a new state amiibo_in_range. This state is akin to the real world
physical relationship between a 3DS machine and an amiibo, which is
independent from the service state (or even the machine is powered on or
not). The service state nfc_tag_state is then synchronized with this
physical state on every potential point when the state changes. This
solves the issue where user might load an amiibo before NFC service
initializes, or remove an amiibo after NFC service shutdown, which
previously causes inconsistent state change.

Also removed std::atomic on nfc_tag_state, because
1. It is already protected by g_hle_lock
2. It wasn't properly used in the code anyway. For example, there are
many double loading on this variable, which effectively make it
non-atomic.
2019-08-17 21:56:12 -04:00
James Rowe 0cffab04b5 Fixup! Prevent issue deleting PerfStats 2019-08-16 21:54:33 -06:00
James Rowe 00eeaf0e9c
Merge pull request #4882 from jroweboy/frametime-logging
Frametime logging for tracking performance over time
2019-08-16 19:33:53 -06:00
James Rowe 135b054f74
Update telemetry_session.cpp
Change Session -> Performance
2019-08-15 19:36:02 -06:00
James Rowe 331a9fc12b Change over to std::shared_ptr 2019-08-14 21:30:49 -06:00
James Rowe 61ebeca765 NS: Lowercase NS:S to ns:s like it should be 2019-08-14 21:23:06 -06:00
James Rowe 6c8faaf2c2 HLE: Remove BaseInterface and add ns.cpp back 2019-08-14 21:23:06 -06:00
James Rowe f2167d76a8 Service: Add BaseInterface and NSInterface 2019-08-14 21:23:03 -06:00
James Rowe b62ca12e88 HLE: Move NS:S into APT and remove NS 2019-08-14 21:21:33 -06:00
James Rowe a77cd00cbe Add current date/time to file path 2019-08-14 21:17:32 -06:00
James Rowe 23e969dfdc Address review comments 2019-08-14 21:17:32 -06:00
James Rowe 45be693f8c Add telemetry field for mean frametime
Previously, telemetry results couldn't give a good estimate for
performance over time, because it didn't include any fields related to
performance. With this, devs should be able to query metabase for mean
frametime to check for performance regressions after a change is made.
2019-08-14 21:17:31 -06:00
James Rowe 62e6c147ae Add perf stat logging through ini setting
For better tracking of performance regressions on incoming changes, this
change adds a way to dump frametime to file by changing an ini config
option. This is intentionally hidden as its only useful to a small
number of individuals, and not really applicable to the general
userbase.
2019-08-14 21:17:27 -06:00
James Rowe 84b40f2da6
Merge pull request #4862 from leoetlino/exheader-override-fix
ncch_container: Assume override exheaders are decrypted
2019-08-14 09:31:54 -06:00
zhupengfei 399a660faa
core/dumping: Add FFmpeg implementation
Sorry for the large diff, the implementation is quite long, and I can't really find a good way to split it into commits.
2019-08-14 09:27:04 +08:00
zhupengfei f2880b08d1
core: Add VideoDumper to System 2019-08-13 19:28:02 +08:00
zhupengfei 3f64aaabbd
core: Add video dumper interface
The VideoFrame is rotated while copying, to put the pixels in their correct positions (OpenGL seems to return the image in reverted order by default)
2019-08-13 19:28:02 +08:00
tywald aad8261534 Remove 'Accurate Geometry Shader' setting, default behavior is as it was turned on. 2019-08-12 02:55:14 +02:00
B3n30 848bfaf8cb Dispaly all valid game regions 2019-08-11 13:52:08 +02:00
B3n30 aabc2144bf Merge branch 'patch-1' of https://github.com/Jhynjhiruu/citra into Jhynjhiruu-patch-1 2019-08-11 13:21:16 +02:00
xperia64 8131bd32e3 renderer_opengl: Add support for custom shaders (#4578)
* Add Anaglyph 3D

Change 3D slider in-game

Change shaders while game is running

Move shader loading into function

Disable 3D slider setting when stereoscopy is off

The rest of the shaders

Address review issues

Documentation and minor fixups

Forgot clang-format

Fix shader release on SDL2-software rendering

Remove unnecessary state changes

Respect 3D factor setting regardless of stereoscopic rendering

Improve shader resolution passing

Minor setting-related improvements

Add option to toggle texture filtering

Rebase fixes

* One final clang-format

* Fix OpenGL problems
2019-08-09 20:00:47 +02:00
Léo Lam a2cde6e075 ncch_container: Assume override exheaders are decrypted
Require and assume that override exheaders are decrypted for
consistency with Luma's loader behaviour and to ensure consistent
behaviour regardless of whether the NCCH is marked as encrypted or not.
Currently, exheader overriding with an encrypted NCCH would cause
the title ID checking heuristic to mistakenly disable encryption,
which would then make exefs loading fail.
2019-08-07 18:41:37 +08:00
James Rowe aef06df388
Merge pull request #4817 from leoetlino/ips-patch-later
ncch_container: Apply IPS patch after allocating .bss
2019-07-23 20:58:35 -06:00
Jack Harper b065ac6995 Fixing some compiler warnings 2019-07-23 23:10:17 +01:00
Jhynjhiruu e201d44aa9
It's supposed to be OR, not AND! 2019-07-21 11:31:07 +01:00
Jhynjhiruu 834a487388
Fix build issue
Co-Authored-By: Ben <bene_thomas@web.de>
2019-07-21 10:51:59 +01:00
Jhynjhiruu 3f49d9920c
Fix whitespace 2019-07-21 10:39:20 +01:00
Jhynjhiruu 17ba67c8c9
Remove magic number 2019-07-21 10:37:29 +01:00
Jhynjhiruu fb16700fe5
Update smdh.cpp 2019-07-21 00:36:04 +01:00
Weiyi Wang 909d04ddea Remove unused stuff
Some unused variables are still kept in services, as they are parameters passed from the command buffer and might be used in the future
2019-07-16 20:27:03 -04:00
Pengfei Zhu fb8adcc08c
Merge pull request #4839 from wwylele/ipc-sign
ipc_helpers: silent signed comparison warning
2019-07-15 12:03:31 +08:00
Pengfei Zhu c6705d6958
Merge pull request #4838 from wwylele/kernel-reorder
kernel: silence -Wreorder
2019-07-15 12:03:00 +08:00
Weiyi Wang fd3cfd0ae0 ipc_helpers: silent signed comparison warning
index is only used as positive index in arrays. The warning is in DEBUG_ASSERT_MSG(index == TotalSize() ...)
2019-07-14 14:52:17 -04:00
Weiyi Wang 6ee908dc84 kernel: silence -Wreorder 2019-07-14 14:44:17 -04:00
Weiyi Wang 24d2d6aa23 interpreter: silent sign warnings 2019-07-14 14:36:56 -04:00
Weiyi Wang 508fa94e5d
Merge pull request #4799 from bamsbamx/pr-separate-cpu-mem
kernel: handle all page table changes internally when switching processes
2019-07-13 22:25:51 -04:00
Tobias a546efad31
Port yuzu-emu/yuzu#2529: "yuzu/bootmanager: Minor interface tid… (#4794)
* yuzu/bootmanager: Remove unnecessary pointer casts

We can just invoke these functions by qualifying the object name before
the function.

* yuzu/bootmanager: unsigned -> u32

Same thing (for platforms we support), less reading.

* yuzu/bootmanager: Default EmuThread's destructor in the cpp file

This class contains non-trivial members, so we should default the
destructor's definition within the cpp file.

* yuzu/bootmanager: Treat the resolution factor as a u32

Treating it as a u16 can result in a sign-conversion warning when
performing arithmetic with it, as u16 promotes to an int when aritmetic
is performed on it, not unsigned int.

This also makes the interface more uniform, as the layout interface now
operates on u32 across the board.

* yuzu/bootmanager: Log out screenshot destination path

We can make this message more meaningful by indicating the location the
screenshot has been saved to. We can also log out whenever a screenshot
could not be saved (e.g. due to filesystem permissions or some other
reason).

* Fix compilation
2019-07-11 18:46:44 +02:00
Léo Lam 43d1ee6fb7 ncch_container: Apply IPS patch after allocating .bss
This allows an IPS patch to edit .bss. This is useful for game patches
that need to add code, as putting things in .bss allows adding new code
*without* editing .code and thus without having to relocate everything.
2019-07-10 12:57:30 +02:00
Léo Lam bc30412484 ncch_container: Add support for exheader replacement
This adds support for custom exheaders, which brings feature parity
with Luma3DS's code patching functionality and allows for injecting
new game code.
2019-07-06 18:01:54 +02:00
Weiyi Wang cae913d3d5
Merge pull request #4760 from wwylele/csnd
Foundation for CSND
2019-06-30 23:24:27 -04:00
Léo Lam 70fe0d22de ncch_container: Fix code.bin replacement
Currently, having a replacement code.bin causes Citra to crash as it is
trying to load icon data from code.bin because of a typo. This commit
fixes that typo.
2019-06-30 11:48:28 +02:00