Commit Graph

427 Commits

Author SHA1 Message Date
emiyl
8f674933d2
Create Cemu .app bundle for macOS (#364) 2022-10-23 16:58:28 +02:00
Exzap
028b3f7992
Make controller button code thread-safe (#405)
* Refactor spinlock to meet Lockable requirements
* Input: Refactor button code and make it thread-safe
2022-10-23 15:47:42 +02:00
Tillsunset
1bcc064593
Add check for "." in FSC path (#402) 2022-10-23 13:06:20 +02:00
MythicalPlayz
c217b3ee32
GameList: Use title name based on console language (#388) 2022-10-21 00:17:11 +02:00
goeiecool9999
dd1cb1cccf
Update title manager when clearing MLC path in settings (#319) 2022-10-20 13:18:44 +02:00
goeiecool9999
9df1325d14
Linux: Resolve backtrace symbols directly from .symtab instead of .dynsym (#385) 2022-10-20 13:12:16 +02:00
MythicalPlayz
271a4e4719
Fixed Discord Rich Presence not working on games that are on MLC (#383) 2022-10-18 17:08:09 +02:00
Exzap
665a34e518
Linux: Always use libpng from system (#381)
* Always use system libpng on Linux
* Remove dependency on boost-crc in DSU (reuse existing implementation)
2022-10-17 13:25:49 +02:00
MythicalPlayz
753040f73a
Added Boot Image for Gamepad (#372) 2022-10-17 11:26:32 +02:00
goeiecool9999
e88d20cbfb
Fix crashes when wxWidgets tries to free stack allocated dialogs (#377) 2022-10-16 09:02:33 +02:00
Tillsunset
f0938e1a23
Fix CRC errors on MacOS(/Linux?) (#375)
Fixes graphic packs (like FPS++) not working even when enabled.
2022-10-15 13:38:06 +02:00
Tillsunset
df0e2f7881
Fix Cannot set locale to "" (#366)
* Add en resource and change language selection for macos user that don't have US as their system region
* default to English if the system language is unavailable
2022-10-15 07:20:20 +02:00
Exzap
ada8bbb3b4
Linux/MacOS: Greatly improve performance (#370)
std::unordered_set is implemented as a flat hashtable on libstdc++ which makes clearing expensive due to invoking memset on the entire table. To get the best performance across all platforms this replaces the unordered_set with a custom high-performance sparse bitset
2022-10-14 13:45:40 +02:00
Exzap
a19ed46b2a
Windows: Fix file and folder dialog freeze (#369)
Initializing the COM library immediately seems to be more robust than doing it on demand
2022-10-14 12:49:41 +02:00
Exzap
d251ce07e0 XAudio2: Don't quit on failed CoInitializeEx()
It returns an error code when already initialized
2022-10-13 12:18:34 +02:00
Exzap
f65dbe8437 Fix encoding error in input profile filenames
- Controller profile filenames now encode unicode characters correctly
- Removed dependency on boost::filesystem. There is still an indirect dependency on it from another boost module it seems
- Refactored some code to use FileStream instead of ifstream/ofstream
2022-10-12 14:27:01 +02:00
SSimco
8b3f36ad50
Use correct preprocessor check for Linux (#360) 2022-10-12 13:10:57 +02:00
SSimco
d6ba61cf64
Add support for non portable mode (#356) 2022-10-12 08:03:26 +02:00
Exzap
2b9edced81
Minor tweaks and code clean up (#357) 2022-10-11 09:17:34 +02:00
MythicalPlayz
b07e9efba4
Add support for choosing network service (incl Pretendo+Custom) (#302) 2022-10-11 04:04:47 +02:00
Exzap
52cc7c5996
Follow imgui recommendation and streamline build dependencies (#355) 2022-10-11 01:43:15 +02:00
goeiecool9999
431c5a101f
Linux: Print demangled symbols on backtrace (#312) 2022-10-10 02:35:04 +02:00
Tillsunset
0c9fb3143f
memory optimization, using posix_memalign (#350) 2022-10-09 10:43:45 +02:00
Tillsunset
638e9e1f87
Workaround for the h264 video crash on macOS (#348) 2022-10-09 08:45:26 +02:00
Tillsunset
b724a657e6
MoltenVk: Add missing texture decoders (#332) 2022-10-08 15:07:54 +02:00
bslhq
551f821109
Auto resize last column (#265) 2022-10-07 14:30:06 +02:00
emiyl
00968acc1d
dedicated decoder for R4G4 and R4G4B4A4 to R8G8B8A8 (#331) 2022-10-07 02:39:06 +02:00
Tillsunset
fb5ecca157
Vulkan: Use correct texture clear in LatteDraw_handleSpecialState8_clearAsDepth (#321) 2022-10-02 19:18:35 +02:00
Tillsunset
11f6e2b7ee
Vulkan: Implement texture decoder for R5G6B5_UNORM to R8G8B8A8_UNORM (#320) 2022-10-02 01:48:13 +02:00
emiyl
9541c8ae85
MoltenVk: Workaround for unsupported format R5_G6_B5_UNORM (#318) 2022-09-30 18:07:00 +02:00
Exzap
cceb4f6d0e
Vulkan: Always disable blending for integer formats (#317)
Should fix a warning in the Vulkan validation layer and avoid a sigtrap in MoltenVk
2022-09-30 15:59:16 +02:00
emiyl
ecfbbd4e26
MoltenVK: Workaround for unsupported formats (#315) 2022-09-30 15:28:56 +02:00
Narr the Reg
3767257220
nfp: Fix corruption, correct structs and use write counters (#310) 2022-09-29 13:00:46 +02:00
Tillsunset
3fb4b5e26c
MacOS+Linux: Use CLOCK_MONOTONIC_RAW over CLOCK_MONOTONIC (#313)
On MacOS this fixes the framerate being too high due to discontinuities in the timer that drives the emulated vsync. It also fixes behavior of the GetTickCount() wrapper.
2022-09-29 11:36:27 +02:00
goeiecool9999
6ecc4be0da
Posix/Linux: Add setting to disable coredumps 2022-09-27 13:58:50 +02:00
SSimco
25dae98ce0
Fix crash on GTK when a gfx pack preset value is changed (#300) 2022-09-26 07:53:10 +02:00
Exzap
9caf57c2c5
Vulkan: Fix incorrect encoding for substituted R4G4 format (#288)
Fixed incorrect channel order when VK_FORMAT_R4G4_UNORM_PACK8 is substituted with VK_FORMAT_R4G4B4A4_UNORM_PACK16
2022-09-24 11:44:44 +02:00
Exzap
3bceb39966
Remove PUBLIC_RELEASE flag and tie asserts to debug config (#287)
Removes the -DPUBLIC_RELEASE flag. Cemu's debug asserts are now only enabled if the build configuration is Debug. Similarly, on Windows the console is only shown for Debug builds.
2022-09-24 08:43:27 +02:00
Tillsunset
7864d76eca
fixed the string encoding issue on macOS (#277) 2022-09-20 14:50:34 +02:00
Crementif
510d80038d
[coreinit] Add OSIsDebuggerPresent 2022-09-19 21:41:01 +02:00
SSimco
9f02733a0d
Use unordered_map for keydown to allow codes above 255 (#248)
- Adds internal support for 32bit key codes, required for proper keyboard input on Linux
- Use gdk_keyval_name to get key name on Linux
2022-09-19 03:07:26 +02:00
Exzap
5e968eff4f
Fix 1x1 symbols in debugger window + Load icons from headers on all platforms
- Fixed an issue where the toolbar icons for the debugger were resized to 1x1
- On Windows we now load the PNG UI icons from the header-embedded pngs (`resource/embedded`) instead of via `cemu.rc` to match behavior of other platforms
2022-09-18 15:53:10 +02:00
Tillsunset
867c0c5ca2
Fix some issues with building on macOS (#268)
* fixed building on macos, needs OBJC and OBJXX to be enabled
* changed to weak ordering due to string comparison not being strong ordering
* Use raw PNG bytes from "resource/embedded/resources.h" in all windows too
2022-09-18 14:39:00 +02:00
Exzap
12b6830546
GX2: Add crash workaround for FFL uninitialized texture (#264)
When a game tries to generate Miis without the FFL files being dumped (<mlc>/sys/title/0005001b/10056000/content/) it will cause it to create and use a texture with invalid parameters.
This workaround catches and replaces bad texture parameters to avoid crashing further down the line.

Resolves crashes in Sonic Lost World, Super Mario 3D World and probably a few others.

We had this workaround in pre-2.0 Cemu already but it was dropped during refactoring.
2022-09-17 16:32:46 +02:00
Tillsunset
41dcd48048
Fix a small regression when building in Macos (#262) 2022-09-17 13:52:12 +02:00
Herman Semenov
03f5967408
Fix incorrect streamout buffer index in GS + refactor various code (#258) 2022-09-17 03:45:18 +02:00
Maximilian Downey Twiss
4a3d02db55
Properly list files in CMakeLists instead of using GLOB (#249) 2022-09-17 03:24:57 +02:00
Exzap
910cdf4d5c
Refactor wxGameList color code and match previous style on light theme (#261)
Refactored to pre-calculate the game list row colors at the beginning of the function. If the background color is almost white as it is on Windows, we'll use the previous bluish secondary color instead of grey-scale lightness adjustment.
2022-09-17 02:39:52 +02:00
Shoegzer
6ef36152c2
Use system color definitions for wxGameList (#241)
Previously it would use hard-coded bright colors which clashed with dark themes on Linux
2022-09-17 01:06:36 +02:00
Exzap
63206eb9a8
coreinit: Return error code instead of success in Acquire failure (#260)
Spotted by @Fs00
It's currently not known if any games are affected by this
2022-09-16 14:25:38 +02:00
Francesco Saltori
664d7ee902
Clean up more Cemuhook leftovers (#253) 2022-09-16 13:34:41 +02:00
Exzap
61a3b07697
Merge pull request #238 from Fs00/more-translations
More l10n improvements and add workflow to generate POT file
2022-09-14 22:49:14 +02:00
capitalists
b5963afbb5
Fix DSUController socket option error on Linux (#234) 2022-09-11 04:20:40 +02:00
SSimco
9a60979242
Linux: Avoid out-of-bounds raw keycode array access (#226) 2022-09-11 02:00:02 +02:00
capitalists
d4879da95c
Implement analog triggers for DSUController (#239) 2022-09-11 01:32:17 +02:00
Fs00
694b9ec495 Avoid including newlines in localizable string 2022-09-10 18:47:32 +02:00
Fs00
08db65bd5a Remove some dead code 2022-09-10 18:47:32 +02:00
Fs00
13aa0a4fd0 Make controller button names translatable and deduplicate code 2022-09-10 18:47:27 +02:00
Fs00
4c6f22ba39 Simplify a few window names 2022-09-10 13:55:37 +02:00
Exzap
680beaaf21 Rename path _utf8Wrapper to _utf8ToPath for better clarity 2022-09-09 23:49:38 +02:00
Exzap
168ecf8825 FSC: Use utf8 path strings instead of wchar
Also introduced helper function _utf8ToPath() to convert a utf8-encoded string to fs::path
2022-09-09 23:49:38 +02:00
Exzap
1ce629126a FSC: Refactor FileTree and remove redundant path parser class 2022-09-09 23:49:38 +02:00
Exzap
b8462cec8b FSC: Refactor to use FSCPath instead of legacy code 2022-09-09 23:49:38 +02:00
Exzap
0e0602e8d9 FSC: Use utf8 for mounting and internal target path 2022-09-09 23:49:38 +02:00
SSimco
cf598e38c1
Linux: Find case-insensitive file/folder path if not found (#196) 2022-09-09 20:16:46 +02:00
goeiecool9999
045a059742
fix for when file open is successful but the path isn't a file (#220)
FSC and indirectly coreinit relies on FileStream open failing for directories
2022-09-09 16:10:12 +02:00
Exzap
1e851fe7e2
Latte: Fix infinite loop in special state clearAsDepth() (#209)
This broke while refactoring code for the 2.0 release. Resolves Tokyo Mirage Session and Pokken freezing on boot. Probably also affects some other games

Also updated .gitignore
2022-09-08 17:33:31 +02:00
Timothy Redaelli
f032088902
Use _Exit instead of exit under Linux (#204)
The best ExitProcess alternative for Linux is _Exit since it doesn't
call exit handlers.
2022-09-08 17:05:31 +02:00
Tom Lally
6cdb6eed17
Cleanup udiv128 (#206) 2022-09-08 02:12:53 +02:00
bitscher
4eaa600b57
Fix various compiler warnings given by Clang (#170) 2022-09-07 20:04:32 +02:00
bslhq
4d1be950e3
Fix various issues related to title names (#192)
Fixed various issues related to title names:
1. If console language is set to non-English, the title names in Title Manager may be empty.
2. Game list do not show custom names if list style set to icon or small icon.
3. Custom title names for some languages (like JP or CN) appear confusing if re-edited.
4. Unexpected overrides of variable values in ParsedMetaXml.h
2022-09-07 19:58:56 +02:00
Jun Bo Bi
b752d2eddd
fix clang-cl (#202) 2022-09-07 18:22:40 +02:00
Timothy Redaelli
0a1985e481
Set timer milliseconds for "Controller settings" (#194)
This is needed to avoid having the Controller settings window black on Linux
2022-09-07 16:54:48 +02:00
goeiecool9999
e20bfd00ec
Separate filestream.h into OS specific implementation files (#190) 2022-09-07 02:42:25 +02:00
Tom Lally
f8b5024c09
Improved macro clarity. (#188) 2022-09-07 02:27:52 +02:00
Exzap
e5d7d5d173
Use utf8 aware string conversion for wxLaunchDefaultBrowser() (#185) 2022-09-05 18:42:24 +02:00
Exzap
5a69505d13
Fix double %% on shader compilation screen
It was a relic from previously using sprintf where % has to be escaped with %%
2022-09-05 15:53:50 +02:00
Exzap
391334d64e
Use ANSI encoding for cemu.rc (#184)
Clang has issues with utf16 and MSVC does not like utf8. So ANSI it is.
2022-09-05 15:36:06 +02:00
bitscher
917b80941e
Fix broken icon layout when loading Cemu on Gnome (#171)
The icon view was all broken from having entries inserted with non
loaded icons, resulting in a layout that had the wrong size and no
obvious way to trigger a resizing without incurring a costly window
redraw.

Solution: When the icon is not yet loaded insert a transparent
placeholder icon.
2022-09-05 14:51:24 +02:00
SSimco
0ed4fdcd78
Update fmt version to 9.1.0 (#177) 2022-09-05 14:48:44 +02:00
bitscher
f2ec0b4083
Fix the reloading of game cache from settings.xml (#169)
std::is_same_v<decltype(0LL), int64_t> does not evaluate the same on
Linux Clang and MSVC. MSVC returns true but Clang and GCC both returns
false resulting in failing to read the game id from the XML file and
therefore rebuilding the cache.

Solution: Don't rely on the type of 0LL and 0ULL literals but explicitly
provide the type of the field we are trying to read.
2022-09-05 14:42:15 +02:00
Jun Bo Bi
a54a3ec74e
Fix build using clang-cl on windows and improve driver detection (#129) 2022-09-04 23:15:40 +02:00
Exzap
4ed18a65c3
Name output binary Cemu_<CONFIG> and always place it in bin/ (#179) 2022-09-04 22:23:24 +02:00
bslhq
1373c76eb9
fix H264_IsBotW() return false while BotW's TitleRegion is JP (#174) 2022-09-04 18:19:27 +02:00
bitscher
f8297eeb44
Fix game list ordering & Favorite checkbox (#163) 2022-09-04 01:32:32 +02:00
Exzap
33167196d9
Wait for gfx pack init before loading shaders (#168)
2.0 introduced a race condition where the shader cache loading screen could load shaders before the graphic packs finished activating, potentially bypassing custom shaders.
Also removed legacy GraphicPack interface (GraphicPack.cpp/.h) since it was only kept around for Cemuhook and removed u8string variant of cemuLog_force since it's no longer used
2022-09-04 01:27:44 +02:00
Exzap
8dd1688ca7
coreinit: Make OSReport and OSConsoleWrite thread-safe 2022-09-03 23:53:45 +02:00
Francesco Saltori
d22901be1c
Miscellaneous translatable strings improvements and fixes (#159)
* Make PPC threads/texture cache info window columns untranslatable
* Make several window titles translatable
* Make About window text translatable
* Fix <profile name> placeholder not being recognized as translatable
* Miscellaneous improvements to GUI strings
* Add a few missing entries to gitignore
* Adjust Italian translation of Linux files
2022-09-03 22:55:58 +02:00
bitscher
1a1de370e4
Portable way of opening URLs and directories (#156)
Replaced every instance of ShellExecute with wxLaunchDefaultBrowser
2022-09-03 22:32:31 +02:00
Andrea Pappacoda
8c617a39b7
style: use std::enable_if & co instead of boost:: (#153) 2022-09-02 21:06:05 +02:00
Exzap
ef1ce59931
Update graphic pack url query request (#154)
Fixed bad request url and changed URL to separate post 2.0 releases.
Also updated .gitignore
2022-09-02 20:54:22 +02:00
Exzap
4ed38a28b9
Merge pull request #112 from Tachi107/build-minor-fixes
build: minor refactoring and fixes
2022-09-02 19:22:19 +02:00
Tom Lally
f5972dfbb0
Per-function target attribute on clang and GCC. (#152) 2022-09-02 19:10:41 +02:00
Tom Lally
68fa5b32a1
Linux cursor show and hide. (#149) 2022-09-02 15:16:35 +02:00
Andrea Pappacoda
719ee90b27
build: minor refactoring and fixes
- Fix target_precompile_headers() usage; the CemuCommon target exposes
  the src/Common/precompiled.h precompiled header as part of its public
  interface with
  target_precompile_headers(CemuCommon PUBLIC precompiled.h), so all the
  other targets wanting to use the precompiled header have to link to
  the CemuCommon target with
  target_precompile_headers(TargetName PRIVATE CemuCommon).
- Set the project version to 2.0
- Set RUNTIME_OUTPUT_DIRECTORY instead of only their _DEBUG and _RELEASE
  variants, fixing the compilation when neither build types are defined
- Use a consistent indentation style (tabs, like in the .cpp files)
- Use "modern" variants of some functions, e.g. add_definitions ->
  add_compile_definitions
2022-09-02 13:05:15 +02:00
bitscher
b1e92f1779
Fix more UI asserts (#146) 2022-09-02 11:01:17 +02:00
Crementif
86e1a2227c
nn_act: Fix account endianness (#141)
Also adds some code for enabling multi-user support inside apps maybe, but it's probably hardcoded in more places since Cemu currently only shows the active account.
2022-09-02 09:46:19 +02:00
bitscher
a3b1af4e3d
Add SIGINT handler on posix systems (#145) 2022-09-02 09:32:33 +02:00
Exzap
b1844a8753
Fix online for NA console logins (#147)
This is just a quick fix. In the future we can look into avoiding hardcoded firmware version numbers. On the console it gets read from some system file
2022-09-02 09:14:55 +02:00
Tom Lally
d3a7b3b5a6
Misc. Linux improvements and bug fixes. (#121)
Co-authored-by: Tom Lally <tomlally@protonmail.com>
2022-09-01 20:46:20 +02:00
bitscher
b8d4cf5b29
Fix asserts in TitleManager and DownloadManager (#134) 2022-09-01 18:24:07 +02:00
Exzap
d8da8a54a6
Infrastructure for shipping and auto-updating experimental releases (#131) 2022-08-31 12:04:09 +02:00
Exzap
e147c1b4a6
cmake workaround for CemuAsm failing to link on msbuild 2022-08-31 10:41:24 +02:00
Marcin Chojnacki
527ee3aea5
Initial implementation of macOS Vulkan renderer over MoltenVK (#124) 2022-08-30 19:02:56 +02:00
Marcin Chojnacki
15b71c57dd
Correct wxMenu ID to resolve macOS crash (#125) 2022-08-30 17:55:34 +02:00
niko1point0
584938d8f3
Renable Nvidia Multithreaded Pipeline compile after driver 515 (#91) 2022-08-30 15:58:43 +02:00
Krystian Booker
60074c440d
Bug #620 Fixed crash when no audio devices are present (#118) 2022-08-30 14:10:05 +02:00
bitscher
2d42c885da
Fix various compiler warnings and update OpenSSL hash functions (#119)
* Update OpenSSL hash functions to OpenSSL 3.0
* Fix invalid sscanf format in DownloadManager
* Fix unset return value warning
* Fix erroneous check on otpMem in iosu_crypto
2022-08-30 09:27:25 +02:00
Tom Lally
c065d22dda
Removed THREAD_LOCAL macro. (#101) 2022-08-30 06:10:33 +02:00
Andrea Pappacoda
f51a51df3b
build: improve the Linux aspect of things (#75)
Improved, fixed and streamlined cmake files. Optionally use system libraries instead of vcpkg (-DENABLE_VCPKG=OFF)
2022-08-29 07:19:48 +02:00
Crementif
0f24b0663e
Initialize glslang struct using consteval
Doesn't seem like there's a way to bypass the need for default values in their API, and since their versions doesn't seem to be reliable enough to know whether maxDualSourceDrawBuffersEXT exists. This way it's default initialized to 0 which is fine for Cemu.
2022-08-28 19:23:24 +02:00
Tom Lally
454b587e36
Fix compilation on GCC and other Linux fixes (#80) 2022-08-28 15:29:15 +02:00
IntriguingTiles
07ce5b0aa6
nn_act: Fix errors in Mii name (#95)
nn_act: Don't swap the Mii name again
Account: Zero out miiName before copying in data
2022-08-28 11:32:10 +02:00
ArtemisX64
01c58555f3
Fixes Path Issues (#70)
* Fix bad path
2022-08-27 09:57:30 +02:00
Arne Morten Kvarving
8459cd928c
fix some printf format specifiers (#76)
use the definition in cinttypes for portability
2022-08-27 09:33:01 +02:00
gurrgur
5cba1a1185
gui: keep shown graphic pack when clicking on preset dropdown (#77) 2022-08-27 05:33:30 +02:00
Crementif
ca78b92718
Remove cemuhook and fix exports (#73) 2022-08-26 19:41:42 +02:00
tastymeatball
e524a6c16d
Add Rudimentray Proxy Support (#68)
* Add Rudimentray Proxy Support to NAPI
2022-08-26 17:04:46 +02:00
ArtemisX64
1cb2d4e5ee
Proper fix for static asserts (#64)
Replace std::uniform_int_distribution with boost::random::uniform_int_distribution
2022-08-26 14:28:50 +02:00
Andrea Pappacoda
19a0a3a359
perf: optimize GenerateRandomString() (#66)
The previous implementation used an std::stringstream to concatenate
the generated random string.

The new one uses a simple preallocated std::string, as the size of the
output is already known - it is the length parameter.

It also uses std::generate_n() instead of an explicit loop, making the
code more concise and potentially faster, as no calls to
std::string::operator+= are needed.

Calling GenerateRandomString(1'000'000) with the std::stringstream-based
implementation allocated 16 times, for a total of 3'173'516 bytes.
The new one cuts this down to 4 allocs, for a total of 1'076'864 bytes.
2022-08-26 12:53:42 +02:00
Alexey Varfolomeev
ebcff2e319
fix unix path on IOSU/PDM (#60)
With PR #52 this path was missed
2022-08-26 06:21:07 +02:00
Marcin Chojnacki
974edaa649
Initial macOS port bringup (#52) 2022-08-26 04:03:26 +02:00
Exzap
a2abffd37b coreinit: Manual endian-swap is not required for MEMPTR 2022-08-25 16:59:54 +02:00
Marco Rubin
1d3f62a09c
Fix ImGui::Text() format strings (#41)
* Fix format string
2022-08-25 12:15:02 +02:00
ArtemisX64
3d6d9341f6
Update precompiled.h 2022-08-25 16:46:34 +09:00
ArtemisX64
8b7738f0ab Replace Vulkan-SDK with Vulkan Headers 2022-08-25 13:31:32 +09:00
Exzap
d60742f52b Add all the files 2022-08-22 22:21:23 +02:00